UNPKG

rubic-sdk

Version:
93 lines 6.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EddySwapControllerFactory = void 0; const wrapped_native_tokens_1 = require("../../../../../../common/tokens/constants/wrapped-native-tokens"); const blockchain_name_1 = require("../../../../../../core/blockchain/models/blockchain-name"); const evm_web3_pure_1 = require("../../../../../../core/blockchain/web3-pure/typed-web3-pure/evm-web3-pure/evm-web3-pure"); const eddy_bridge_contract_addresses_1 = require("../constants/eddy-bridge-contract-addresses"); const edyy_bridge_abi_1 = require("../constants/edyy-bridge-abi"); const eddy_bridge_routing_directions_1 = require("./eddy-bridge-routing-directions"); const find_transit_token_address_1 = require("./find-transit-token-address"); class EddySwapControllerFactory { constructor() { } static createController(from, to, walletAddress, routingDirection) { return { getEvmConfig: () => EddySwapControllerFactory.evmConfigBuilders[routingDirection](from, to, walletAddress) }; } static createAnyChainNativeToZetaNativeConfig(from, _to, walletAddress) { const data = eddy_bridge_contract_addresses_1.EDDY_OMNI_CONTRACT_IN_ZETACHAIN + walletAddress.slice(2) + EddySwapControllerFactory.wrappedZetaAddress.slice(2); return { data, to: eddy_bridge_contract_addresses_1.TSS_ADDRESSES_EDDY_BRIDGE[from.blockchain], value: from.stringWeiAmount }; } static createAnyChainTokenToZetaTokenConfig(from, to, walletAddress) { const msg = eddy_bridge_contract_addresses_1.EDDY_OMNI_CONTRACT_IN_ZETACHAIN + walletAddress.slice(2) + to.address.slice(2); const methodArgs = [walletAddress, from.address, from.stringWeiAmount, msg]; const config = evm_web3_pure_1.EvmWeb3Pure.encodeMethodCall(eddy_bridge_contract_addresses_1.CUSTODY_ADDRESSES[from.blockchain], edyy_bridge_abi_1.CUSTODY_ABI, 'deposit', methodArgs, '0'); return config; } static createAnyChainNativeToZetaTokenConfig(from, to, walletAddress) { const data = eddy_bridge_contract_addresses_1.EDDY_OMNI_CONTRACT_IN_ZETACHAIN + walletAddress.slice(2) + to.address.slice(2); return { data, to: eddy_bridge_contract_addresses_1.TSS_ADDRESSES_EDDY_BRIDGE[from.blockchain], value: from.stringWeiAmount }; } static createAnyChainNativeToAnyChainTokenConfig(from, to, walletAddress) { const slicedDestZrc20TokenAddress = (0, find_transit_token_address_1.findCompatibleZrc20TokenAddress)(to).slice(2); const slicedWalletAddress = walletAddress.slice(2); const data = eddy_bridge_contract_addresses_1.EDDY_OMNI_CONTRACT_IN_ZETACHAIN_FOR_ANY_CHAIN + slicedDestZrc20TokenAddress + slicedWalletAddress; return { data, to: eddy_bridge_contract_addresses_1.TSS_ADDRESSES_EDDY_BRIDGE[from.blockchain], value: from.stringWeiAmount }; } static createAnyChainTokenToAnyChainTokenConfig(from, _to, walletAddress) { const slicedWalletAddress = walletAddress.slice(2); const slicedSrcZrc20Address = (0, find_transit_token_address_1.findCompatibleZrc20TokenAddress)(from).slice(2); const msg = eddy_bridge_contract_addresses_1.EDDY_OMNI_CONTRACT_IN_ZETACHAIN_FOR_ANY_CHAIN + slicedSrcZrc20Address + slicedWalletAddress; const methodArgs = [walletAddress, from.address, from.stringWeiAmount, msg]; const config = evm_web3_pure_1.EvmWeb3Pure.encodeMethodCall(eddy_bridge_contract_addresses_1.CUSTODY_ADDRESSES[from.blockchain], edyy_bridge_abi_1.CUSTODY_ABI, 'deposit', methodArgs, '0'); return config; } static createZetaTokenToAnyChainAllConfig(from, to, _walletAddress) { const srcZrc20TokenAddress = from.address; const destZrc20TokenAddress = (0, find_transit_token_address_1.findCompatibleZrc20TokenAddress)(to); const methodArgs = [ '0x', from.stringWeiAmount, srcZrc20TokenAddress, destZrc20TokenAddress ]; const config = evm_web3_pure_1.EvmWeb3Pure.encodeMethodCall(eddy_bridge_contract_addresses_1.EDDY_OMNI_CONTRACT_IN_ZETACHAIN, edyy_bridge_abi_1.EDDY_BRIDGE_ABI, 'withdrawToNativeChain', methodArgs, '0'); return config; } static createZetaNativeToAnyChainAllConfig(from, to, _walletAddress) { const destZrc20TokenAddress = (0, find_transit_token_address_1.findCompatibleZrc20TokenAddress)(to); const config = evm_web3_pure_1.EvmWeb3Pure.encodeMethodCall(eddy_bridge_contract_addresses_1.EDDY_OMNI_CONTRACT_IN_ZETACHAIN, edyy_bridge_abi_1.EDDY_BRIDGE_ABI, 'transferZetaToConnectedChain', ['0x', EddySwapControllerFactory.wrappedZetaAddress, destZrc20TokenAddress], from.stringWeiAmount); return config; } } exports.EddySwapControllerFactory = EddySwapControllerFactory; EddySwapControllerFactory.wrappedZetaAddress = wrapped_native_tokens_1.wrappedNativeTokensList[blockchain_name_1.BLOCKCHAIN_NAME.ZETACHAIN].address; EddySwapControllerFactory.evmConfigBuilders = { [eddy_bridge_routing_directions_1.ERD.ZETA_NATIVE_TO_ANY_CHAIN_ALL]: EddySwapControllerFactory.createZetaNativeToAnyChainAllConfig, [eddy_bridge_routing_directions_1.ERD.ZETA_TOKEN_TO_ANY_CHAIN_ALL]: EddySwapControllerFactory.createZetaTokenToAnyChainAllConfig, [eddy_bridge_routing_directions_1.ERD.ANY_CHAIN_NATIVE_TO_ZETA_NATIVE]: EddySwapControllerFactory.createAnyChainNativeToZetaNativeConfig, [eddy_bridge_routing_directions_1.ERD.ANY_CHAIN_TOKEN_TO_ZETA_TOKEN]: EddySwapControllerFactory.createAnyChainTokenToZetaTokenConfig, [eddy_bridge_routing_directions_1.ERD.ANY_CHAIN_NATIVE_TO_ZETA_TOKEN]: EddySwapControllerFactory.createAnyChainNativeToZetaTokenConfig, [eddy_bridge_routing_directions_1.ERD.ANY_CHAIN_NATIVE_TO_ANY_CHAIN_TOKEN]: EddySwapControllerFactory.createAnyChainNativeToAnyChainTokenConfig, [eddy_bridge_routing_directions_1.ERD.ANY_CHAIN_TOKEN_TO_ANY_CHAIN_TOKEN]: EddySwapControllerFactory.createAnyChainTokenToAnyChainTokenConfig }; //# sourceMappingURL=eddy-swap-controller-factory.js.map