UNPKG

rubic-sdk

Version:
62 lines 2.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LayerZeroBridgeProvider = void 0; const errors_1 = require("../../../../../common/errors"); const tokens_1 = require("../../../../../common/tokens"); const cross_chain_trade_type_1 = require("../../models/cross-chain-trade-type"); const cross_chain_provider_1 = require("../common/cross-chain-provider"); const layerzero_bridge_trade_1 = require("./layerzero-bridge-trade"); const layerzero_bridge_supported_blockchains_1 = require("./models/layerzero-bridge-supported-blockchains"); const estimate_fee_1 = require("./utils/estimate-fee"); class LayerZeroBridgeProvider extends cross_chain_provider_1.CrossChainProvider { constructor() { super(...arguments); this.type = cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.LAYERZERO; } isSupportedBlockchain(blockchain) { return layerzero_bridge_supported_blockchains_1.layerZeroBridgeSupportedBlockchains.some(supportedBlockchain => supportedBlockchain === blockchain); } assertSupportedToken(token) { if (!this.isSupportedBlockchain(token.blockchain)) { throw new errors_1.NotSupportedTokensError(); } } async calculate(fromToken, toToken, options) { try { this.assertSupportedToken(fromToken); this.assertSupportedToken(toToken); const useProxy = options?.useProxy?.[this.type] ?? true; const to = new tokens_1.PriceTokenAmount({ ...toToken.asStruct, tokenAmount: fromToken.tokenAmount }); const gas = await (0, estimate_fee_1.estimateSendFeeLZ)(fromToken, to, options.receiverAddress).catch(() => null); return { trade: new layerzero_bridge_trade_1.LayerZeroBridgeTrade({ from: fromToken, to, gasData: await this.getGasData(fromToken, { totalGas: gas ?? '0' }) }, options.providerAddress, await this.getRoutePath(fromToken, to), useProxy), tradeType: this.type }; } catch (err) { const rubicSdkError = cross_chain_provider_1.CrossChainProvider.parseError(err); return { trade: null, error: rubicSdkError, tradeType: this.type }; } } async getFeeInfo(_fromBlockchain, _providerAddress, _percentFeeToken, _useProxy) { return {}; } async getRoutePath(fromToken, toToken) { return [{ type: 'cross-chain', provider: this.type, path: [fromToken, toToken] }]; } } exports.LayerZeroBridgeProvider = LayerZeroBridgeProvider; //# sourceMappingURL=layerzero-bridge-provider.js.map