@bluefin-exchange/bluefin7k-aggregator-sdk
Version:
37 lines (36 loc) • 1.5 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.TurbosContract = void 0;
const utils_1 = require("@mysten/sui/utils");
const base_1 = require("../base");
const utils_2 = require("../utils");
const sui_1 = require("../../../utils/sui");
const ONE_MINUTE = 60 * 1000;
class TurbosContract extends base_1.BaseContract {
async swap(tx) {
const a2b = this.swapInfo.swapXtoY;
const { package: PACKAGE_ID, version: VERSION } = this.config.turbos;
const inputAmount = this.getInputCoinValue(tx);
const [tokenOut, tokenIn] = tx.moveCall({
target: `${PACKAGE_ID}::swap_router::swap_${a2b ? "a_b" : "b_a"}_with_return_`,
typeArguments: this.getTypeParams(),
arguments: [
tx.object(this.swapInfo.poolId),
tx.makeMoveVec({
elements: [this.inputCoinObject],
}),
inputAmount,
tx.pure.u64(0),
tx.pure.u128((0, utils_2.getDefaultSqrtPriceLimit)(this.swapInfo.swapXtoY).toString()),
tx.pure.bool(true),
tx.pure.address(this.currentAccount),
tx.pure.u64(Date.now() + ONE_MINUTE * 3),
tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
tx.object(VERSION),
],
});
sui_1.SuiUtils.collectDust(tx, this.swapInfo.assetIn, tokenIn);
return tokenOut;
}
}
exports.TurbosContract = TurbosContract;
;