UNPKG

rubic-sdk

Version:
78 lines 4.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EDDY_CALCULATION_TYPES = exports.ERD = void 0; exports.eddyRoutingDirection = eddyRoutingDirection; exports.isDirectBridge = isDirectBridge; exports.getEddyCalculationType = getEddyCalculationType; const errors_1 = require("../../../../../../common/errors"); const blockchain_1 = require("../../../../../../common/utils/blockchain"); const blockchain_name_1 = require("../../../../../../core/blockchain/models/blockchain-name"); const eddy_bridge_contract_addresses_1 = require("../constants/eddy-bridge-contract-addresses"); const find_transit_token_address_1 = require("./find-transit-token-address"); // Eddy Routing Direction exports.ERD = { ANY_CHAIN_NATIVE_TO_ZETA_NATIVE: 'ANY_CHAIN_NATIVE_TO_ZETA_NATIVE', ANY_CHAIN_NATIVE_TO_ZETA_TOKEN: 'ANY_CHAIN_NATIVE_TO_ZETA_TOKEN', ZETA_NATIVE_TO_ANY_CHAIN_ALL: 'ZETA_NATIVE_TO_ANY_CHAIN_ALL', ZETA_TOKEN_TO_ANY_CHAIN_ALL: 'ZETA_TOKEN_TO_ANY_CHAIN_ALL', ANY_CHAIN_NATIVE_TO_ANY_CHAIN_TOKEN: 'ANY_CHAIN_NATIVE_TO_ANY_CHAIN_TOKEN', ANY_CHAIN_TOKEN_TO_ANY_CHAIN_TOKEN: 'ANY_CHAIN_TOKEN_TO_ANY_CHAIN_TOKEN', ANY_CHAIN_TOKEN_TO_ZETA_TOKEN: 'ANY_CHAIN_TOKEN_TO_ZETA_TOKEN' }; exports.EDDY_CALCULATION_TYPES = { DIRECT_BRIDGE: 'DIRECT_BRIDGE', SWAP_FROM_ZETACHAIN: 'SWAP_FROM_ZETACHAIN', SWAP_TO_ZETACHAIN: 'SWAP_TO_ZETACHAIN', SWAP_BETWEEN_OTHER_CHAINS: 'SWAP_BETWEEN_OTHER_CHAINS' }; // eslint-disable-next-line complexity function eddyRoutingDirection(from, to) { if (from.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN) { const isSupportedFromToken = eddy_bridge_contract_addresses_1.ZETA_CHAIN_SUPPORTED_TOKENS.some(zrcToken => (0, blockchain_1.compareAddresses)(zrcToken.address, from.address)); const isSupportedToToken = !!(0, find_transit_token_address_1.findCompatibleZrc20TokenAddress)(to); if (from.isNative && isSupportedToToken) return exports.ERD.ZETA_NATIVE_TO_ANY_CHAIN_ALL; if (isSupportedFromToken && isSupportedToToken) return exports.ERD.ZETA_TOKEN_TO_ANY_CHAIN_ALL; } if (from.blockchain !== blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN && to.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN) { const isSupportedToToken = eddy_bridge_contract_addresses_1.ZETA_CHAIN_SUPPORTED_TOKENS.some(zrcToken => (0, blockchain_1.compareAddresses)(zrcToken.address, to.address)); const isSupportedFromToken = !!(0, find_transit_token_address_1.findCompatibleZrc20TokenAddress)(from); if (from.isNative && to.isNative) return exports.ERD.ANY_CHAIN_NATIVE_TO_ZETA_NATIVE; if (from.isNative && isSupportedToToken) return exports.ERD.ANY_CHAIN_NATIVE_TO_ZETA_TOKEN; if (!from.isNative && isSupportedToToken && isSupportedFromToken && !to.isNative) { return exports.ERD.ANY_CHAIN_TOKEN_TO_ZETA_TOKEN; } } // BSC <-> ETH routes are not supported // if ( // from.blockchain !== BLOCKCHAIN_NAME.ZETACHAIN && // to.blockchain !== BLOCKCHAIN_NAME.ZETACHAIN // ) { // if (from.isNative && !to.isNative) return ERD.ANY_CHAIN_NATIVE_TO_ANY_CHAIN_TOKEN; // if (!from.isNative && !to.isNative) return ERD.ANY_CHAIN_TOKEN_TO_ANY_CHAIN_TOKEN; // } throw new errors_1.NotSupportedTokensError(); } /** * Check if route is Bsc(ETH) <-> Ethereum(ETH), Ethereum(USDT) <-> Zetachain(USDT.ETH) etc. */ function isDirectBridge(from, toToken) { return (0, blockchain_1.compareAddresses)(from.symbol, toToken.symbol); } function getEddyCalculationType(from, toToken) { if (isDirectBridge(from, toToken)) { return exports.EDDY_CALCULATION_TYPES.DIRECT_BRIDGE; } if (from.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN) { return exports.EDDY_CALCULATION_TYPES.SWAP_FROM_ZETACHAIN; } if (toToken.blockchain === blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN) { return exports.EDDY_CALCULATION_TYPES.SWAP_TO_ZETACHAIN; } return exports.EDDY_CALCULATION_TYPES.SWAP_BETWEEN_OTHER_CHAINS; } //# sourceMappingURL=eddy-bridge-routing-directions.js.map