rubic-sdk
Version:
Simplify dApp creation
93 lines • 6.25 kB
JavaScript
;
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