UNPKG

@bluefin-exchange/bluefin7k-aggregator-sdk

Version:
39 lines (38 loc) 1.85 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BluefinContract = void 0; const base_1 = require("../base"); const utils_1 = require("@mysten/sui/utils"); const utils_2 = require("../utils"); const sui_1 = require("../../../utils/sui"); class BluefinContract extends base_1.BaseContract { async swap(tx) { const [coinX, coinY] = this.swapInfo.pool.allTokens; const swapXtoY = this.swapInfo.swapXtoY; const amountIn = this.getInputCoinValue(tx); const coinInBalance = sui_1.SuiUtils.coinIntoBalance(tx, this.swapInfo.assetIn, this.inputCoinObject); const coinOutBalance = sui_1.SuiUtils.zeroBalance(tx, this.swapInfo.assetOut); const config = this.config.bluefin; const [balanceOutX, balanceOutY] = tx.moveCall({ target: `${config.package}::pool::swap`, typeArguments: [coinX.address, coinY.address], arguments: [ tx.object(utils_1.SUI_CLOCK_OBJECT_ID), tx.object(config.globalConfig), tx.object(this.swapInfo.poolId), swapXtoY ? coinInBalance : coinOutBalance, swapXtoY ? coinOutBalance : coinInBalance, tx.pure.bool(swapXtoY), tx.pure.bool(true), amountIn, tx.pure.u64(0), tx.pure.u128((0, utils_2.getDefaultSqrtPriceLimit)(swapXtoY) + (swapXtoY ? 1n : -1n)), ], }); const coinOutX = sui_1.SuiUtils.coinFromBalance(tx, coinX.address, balanceOutX); const coinOutY = sui_1.SuiUtils.coinFromBalance(tx, coinY.address, balanceOutY); sui_1.SuiUtils.collectDust(tx, this.swapInfo.assetIn, swapXtoY ? coinOutX : coinOutY); return swapXtoY ? coinOutY : coinOutX; } } exports.BluefinContract = BluefinContract;