UNPKG

@bluefin-exchange/bluefin7k-aggregator-sdk

Version:
49 lines (48 loc) 2.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BluefinXContract = void 0; const bcs_1 = require("@mysten/sui/bcs"); const utils_1 = require("@mysten/sui/utils"); const sui_1 = require("../../../utils/sui"); const base_1 = require("../base"); const BcsQuote = bcs_1.bcs.struct("Quote", { vault: bcs_1.bcs.Address, id: bcs_1.bcs.string(), taker: bcs_1.bcs.Address, token_in_amount: bcs_1.bcs.u64(), token_out_amount: bcs_1.bcs.u64(), token_in_type: bcs_1.bcs.string(), token_out_type: bcs_1.bcs.string(), expires_at: bcs_1.bcs.u64(), created_at: bcs_1.bcs.u64(), }); class BluefinXContract extends base_1.BaseContract { async swap(tx) { const extra = this.extra; const quoteBytes = BcsQuote.serialize({ vault: extra.vault, id: extra.quoteId, taker: extra.taker, token_in_amount: this.swapInfo.amount, token_out_amount: this.swapInfo.returnAmount, token_in_type: (0, utils_1.normalizeStructTag)(this.swapInfo.assetIn).slice(2), token_out_type: (0, utils_1.normalizeStructTag)(this.swapInfo.assetOut).slice(2), expires_at: extra.quoteExpiresAtUtcMillis, created_at: extra.createdAtUtcMillis, }).toBytes(); const [out] = tx.moveCall({ arguments: [ tx.object(utils_1.SUI_CLOCK_OBJECT_ID), tx.object(extra.vault), tx.object(this.config.bluefinx.globalConfig), tx.pure.vector("u8", Array.from(quoteBytes)), tx.pure.vector("u8", Array.from((0, utils_1.fromBase64)(extra.signature))), sui_1.SuiUtils.coinIntoBalance(tx, this.swapInfo.assetIn, this.inputCoinObject), ], target: `${this.config.bluefinx.package}::vault::swap`, typeArguments: [this.swapInfo.assetIn, this.swapInfo.assetOut], }); return sui_1.SuiUtils.coinFromBalance(tx, this.swapInfo.assetOut, out); } } exports.BluefinXContract = BluefinXContract;