@bluefin-exchange/bluefin7k-aggregator-sdk
Version:
31 lines (30 loc) • 1.34 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.SponsoredDeepBookV3Contract = void 0;
const base_1 = require("../base");
const utils_1 = require("@mysten/sui/utils");
const sui_1 = require("../../../utils/sui");
class SponsoredDeepBookV3Contract extends base_1.BaseContract {
async swap(tx) {
const [coinX] = this.swapInfo.pool.allTokens;
const swapXtoY = (0, utils_1.normalizeStructTag)(coinX.address) ===
(0, utils_1.normalizeStructTag)(this.swapInfo.assetIn);
const config = this.config.deepbook_v3;
const [base, quote] = tx.moveCall({
target: `${config.sponsor}::sponsored::${swapXtoY ? "swap_exact_base_for_quote" : "swap_exact_quote_for_base"}`,
typeArguments: this.getTypeParams(),
arguments: [
tx.object(config.sponsorFund),
tx.object(this.swapInfo.poolId),
this.inputCoinObject,
tx.pure.u64(0),
tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
],
});
const coinIn = swapXtoY ? base : quote;
const coinOut = swapXtoY ? quote : base;
sui_1.SuiUtils.collectDust(tx, this.swapInfo.assetIn, coinIn);
return coinOut;
}
}
exports.SponsoredDeepBookV3Contract = SponsoredDeepBookV3Contract;
;