rubic-sdk
Version:
Simplify dApp creation
56 lines • 2.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RangoOnChainTrade = void 0;
const errors_1 = require("../../../../../../common/errors");
const tokens_1 = require("../../../../../../common/tokens");
const rango_parser_1 = require("../../../../../common/providers/rango/services/rango-parser");
const rubic_proxy_contract_address_1 = require("../../../../../cross-chain/calculation-manager/providers/common/constants/rubic-proxy-contract-address");
const on_chain_trade_type_1 = require("../../common/models/on-chain-trade-type");
const aggregator_evm_on_chain_trade_abstract_1 = require("../../common/on-chain-aggregator/aggregator-evm-on-chain-trade-abstract");
const rango_on_chain_disabled_providers_1 = require("./models/rango-on-chain-disabled-providers");
const rango_on_chain_api_service_1 = require("./services/rango-on-chain-api-service");
class RangoOnChainTrade extends aggregator_evm_on_chain_trade_abstract_1.AggregatorEvmOnChainTrade {
get toTokenAmountMin() {
return this._toTokenAmountMin;
}
get spenderAddress() {
return this.useProxy
? rubic_proxy_contract_address_1.rubicProxyContractAddress[this.from.blockchain].gateway
: this.providerGateway;
}
get dexContractAddress() {
throw new errors_1.RubicSdkError('Dex address is unknown before swap is started');
}
constructor(tradeStruct, providerAddress, providerGateway) {
super(tradeStruct, providerAddress);
this.type = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.RANGO;
this._toTokenAmountMin = new tokens_1.PriceTokenAmount({
...this.to.asStruct,
weiAmount: tradeStruct.toTokenWeiAmountMin
});
this.providerGateway = providerGateway;
}
async getTransactionConfigAndAmount(options) {
const params = await rango_parser_1.RangoCommonParser.getSwapQueryParams(this.fromWithoutFee, this.to, {
slippageTolerance: this.slippageTolerance,
receiverAddress: options.receiverAddress || this.walletAddress,
swapperGroups: rango_on_chain_disabled_providers_1.RANGO_ON_CHAIN_DISABLED_PROVIDERS,
fromAddress: this.walletAddress
});
const { tx: transaction, route } = await rango_on_chain_api_service_1.RangoOnChainApiService.getSwapTransaction(params, true);
const { txData, txTo, value, gasLimit, gasPrice } = transaction;
const { outputAmount: toAmount } = route;
return {
tx: {
data: txData,
to: txTo,
value: value || '0',
gas: gasLimit ?? undefined,
gasPrice: gasPrice ?? undefined
},
toAmount
};
}
}
exports.RangoOnChainTrade = RangoOnChainTrade;
//# sourceMappingURL=rango-on-chain-trade.js.map