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