rubic-sdk
Version:
Simplify dApp creation
43 lines • 2.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OdosOnChainTrade = void 0;
const errors_1 = require("../../../../../../common/errors");
const rubic_proxy_contract_address_1 = require("../../../../../cross-chain/calculation-manager/providers/common/constants/rubic-proxy-contract-address");
const aggregator_evm_on_chain_trade_abstract_1 = require("../../common/on-chain-aggregator/aggregator-evm-on-chain-trade-abstract");
const on_chain_trade_type_1 = require("../../common/models/on-chain-trade-type");
const odos_on_chain_api_service_1 = require("./services/odos-on-chain-api-service");
class OdosOnChainTrade extends aggregator_evm_on_chain_trade_abstract_1.AggregatorEvmOnChainTrade {
get dexContractAddress() {
throw new errors_1.RubicSdkError('Dex address is unknown before swap is started');
}
get spenderAddress() {
return this.useProxy
? rubic_proxy_contract_address_1.rubicProxyContractAddress[this.from.blockchain].gateway
: this.providerGateway;
}
constructor(tradeStruct, providerAddress, providerGateway) {
super(tradeStruct, providerAddress);
this.type = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.ODOS;
this.bestRouteRequestBody = tradeStruct.bestRouteRequestBody;
this.providerGateway = providerGateway;
}
async getTransactionConfigAndAmount(options) {
const { pathId } = await odos_on_chain_api_service_1.OdosOnChainApiService.getBestRoute(this.bestRouteRequestBody);
const { transaction, outputTokens } = await odos_on_chain_api_service_1.OdosOnChainApiService.getSwapTx({
userAddr: this.walletAddress,
receiver: options.receiverAddress,
pathId
});
const toAmount = outputTokens[0].amount;
return {
tx: {
data: transaction.data,
to: transaction.to,
value: transaction.value
},
toAmount
};
}
}
exports.OdosOnChainTrade = OdosOnChainTrade;
//# sourceMappingURL=odos-on-chain-trade.js.map