UNPKG

@bluefin-exchange/bluefin7k-aggregator-sdk

Version:
45 lines (44 loc) 1.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.estimateGasFee = estimateGasFee; const utils_1 = require("@mysten/sui/utils"); const config_1 = require("../../config"); const aggregator_1 = require("../../types/aggregator"); const number_1 = require("../../utils/number"); const prices_1 = require("../prices"); const buildTx_1 = require("./buildTx"); const types_1 = require("../../libs/protocols/bluefinx/types"); async function estimateGasFee({ quoteResponse, accountAddress, slippage, suiPrice: _suiPrice, extendTx, commission, }) { if (!accountAddress) return 0; // BluefinX is sponsored, no need to estimate gas fee if (!accountAddress || (0, aggregator_1.isBluefinXRouting)(quoteResponse)) return 0; const result = await (0, buildTx_1.buildTx)({ extendTx, quoteResponse, accountAddress, slippage, commission, devInspect: true, }).catch((err) => { console.log("build tx error: ", err); return undefined; }); const { tx } = result || {}; if (!tx || tx instanceof types_1.BluefinXTx) return 0; const suiPrice = _suiPrice || (await (0, prices_1.getSuiPrice)()); const suiDecimals = utils_1.SUI_DECIMALS; const { effects: { gasUsed, status }, } = await config_1.Config.getSuiClient().devInspectTransactionBlock({ sender: accountAddress, transactionBlock: tx, }); if (status.status !== "success") return 0; const fee = BigInt(gasUsed.computationCost) + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate); const feeUsd = Number(suiPrice) * Number((0, number_1.formatBalance)(fee, suiDecimals)); return feeUsd; }