@bluefin-exchange/bluefin7k-aggregator-sdk
Version:
35 lines (34 loc) • 1.31 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.SuiswapContract = void 0;
const utils_1 = require("@mysten/sui/utils");
const base_1 = require("../base");
const sui_1 = require("../../../utils/sui");
class SuiswapContract extends base_1.BaseContract {
async swap(tx) {
const poolId = this.swapInfo.poolId;
const swapXtoY = this.swapInfo.swapXtoY;
const inputCoin = this.inputCoinObject;
const typeArguments = [this.swapInfo.coinX.type, this.swapInfo.coinY.type];
const callFunc = swapXtoY
? "do_swap_x_to_y_direct"
: "do_swap_y_to_x_direct";
const { package: PACKAGE_ID } = this.config.suiswap;
const inputAmount = this.getInputCoinValue(tx);
const [tokenIn, tokenOut] = tx.moveCall({
target: `${PACKAGE_ID}::pool::${callFunc}`,
typeArguments,
arguments: [
tx.object(poolId),
tx.makeMoveVec({
elements: [inputCoin],
}),
inputAmount,
tx.object(utils_1.SUI_CLOCK_OBJECT_ID),
],
});
sui_1.SuiUtils.collectDust(tx, this.swapInfo.assetIn, tokenIn);
return tokenOut;
}
}
exports.SuiswapContract = SuiswapContract;
;