rubic-sdk
Version:
Simplify dApp creation
42 lines • 2.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenOceanSuiTrade = void 0;
const errors_1 = require("../../../../../../../common/errors");
const updated_rates_error_1 = require("../../../../../../../common/errors/cross-chain/updated-rates-error");
const open_ocean_api_service_1 = require("../services/open-ocean-api-service");
const on_chain_trade_type_1 = require("../../../common/models/on-chain-trade-type");
const aggregator_sui_on_chain_trade_abstract_1 = require("../../../common/on-chain-aggregator/aggregator-sui-on-chain-trade-abstract");
class OpenOceanSuiTrade extends aggregator_sui_on_chain_trade_abstract_1.AggregatorSuiOnChainTrade {
get spenderAddress() {
throw new Error('Not implemented');
}
get dexContractAddress() {
throw new errors_1.RubicSdkError('Dex address is unknown before swap is started');
}
constructor(tradeStruct, providerAddress) {
super(tradeStruct, providerAddress);
this.type = on_chain_trade_type_1.ON_CHAIN_TRADE_TYPE.OPEN_OCEAN;
}
async encodeDirect(options) {
await this.checkFromAddress(options.fromAddress, true);
try {
const transactionData = await this.getTxConfigAndCheckAmount(options.receiverAddress, options.fromAddress, options.skipAmountCheck);
return {
transaction: transactionData.transaction
};
}
catch (err) {
if (err instanceof updated_rates_error_1.UpdatedRatesError || err instanceof errors_1.RubicSdkError) {
throw err;
}
throw new errors_1.RubicSdkError('Can not encode trade');
}
}
async getToAmountAndTxData(receiverAddress, fromAddress) {
const swapQuoteResponse = await open_ocean_api_service_1.OpenOceanApiService.fetchSuiSwapData(this.fromWithoutFee, this.to, receiverAddress || fromAddress || this.walletAddress, this.slippageTolerance, this.walletAddress);
const tx = swapQuoteResponse.data;
return { tx: { transaction: tx.data }, toAmount: tx.outAmount };
}
}
exports.OpenOceanSuiTrade = OpenOceanSuiTrade;
//# sourceMappingURL=open-ocean-sui-trade.js.map