@bluefin-exchange/bluefin7k-aggregator-sdk
Version:
39 lines (38 loc) • 1.85 kB
JavaScript
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;
;