@bluefin-exchange/bluefin7k-aggregator-sdk
Version:
45 lines (44 loc) • 1.75 kB
JavaScript
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;
}
;