rubic-sdk
Version:
Simplify dApp creation
75 lines • 3.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ArbitrumRbcBridgeProvider = void 0;
const sdk_1 = require("@arbitrum/sdk");
const errors_1 = require("../../../../../common/errors");
const tokens_1 = require("../../../../../common/tokens");
const blockchain_1 = require("../../../../../common/utils/blockchain");
const cross_chain_trade_type_1 = require("../../models/cross-chain-trade-type");
const arbitrum_rbc_bridge_trade_1 = require("./arbitrum-rbc-bridge-trade");
const arbitrum_rbc_bridge_supported_blockchain_1 = require("./constants/arbitrum-rbc-bridge-supported-blockchain");
const cross_chain_provider_1 = require("../common/cross-chain-provider");
class ArbitrumRbcBridgeProvider extends cross_chain_provider_1.CrossChainProvider {
constructor() {
super(...arguments);
this.type = cross_chain_trade_type_1.CROSS_CHAIN_TRADE_TYPE.ARBITRUM;
this.l1TokenAddress = '0x3330BFb7332cA23cd071631837dC289B09C33333';
this.l2TokenAddress = '0x10aaed289a7b1b0155bf4b86c862f297e84465e0';
}
isSupportedBlockchain(blockchain) {
return arbitrum_rbc_bridge_supported_blockchain_1.arbitrumRbcBridgeSupportedBlockchains.some(supportedBlockchain => supportedBlockchain === blockchain);
}
async calculate(fromToken, toToken, options) {
const fromBlockchain = fromToken.blockchain;
const toBlockchain = toToken.blockchain;
if (!this.areSupportedBlockchains(fromBlockchain, toBlockchain)) {
return {
trade: null,
error: new errors_1.NotSupportedTokensError(),
tradeType: this.type
};
}
if (!(((0, blockchain_1.compareAddresses)(fromToken.address, this.l1TokenAddress) &&
(0, blockchain_1.compareAddresses)(toToken.address, this.l2TokenAddress)) ||
((0, blockchain_1.compareAddresses)(fromToken.address, this.l2TokenAddress) &&
(0, blockchain_1.compareAddresses)(toToken.address, this.l1TokenAddress)))) {
return {
trade: null,
error: new errors_1.NotSupportedTokensError(),
tradeType: this.type
};
}
try {
const to = new tokens_1.PriceTokenAmount({
...toToken.asStruct,
tokenAmount: fromToken.tokenAmount
});
const l2network = await (0, sdk_1.getL2Network)(42161);
return {
trade: new arbitrum_rbc_bridge_trade_1.ArbitrumRbcBridgeTrade({
from: fromToken,
to,
gasData: await this.getGasData(fromToken),
l2network
}, options.providerAddress, await this.getRoutePath(fromToken, to)),
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.ArbitrumRbcBridgeProvider = ArbitrumRbcBridgeProvider;
//# sourceMappingURL=arbitrum-rbc-bridge-provider.js.map