@biconomy/abstractjs
Version:
SDK for Biconomy integration with support for account abstraction, smart accounts, ERC-4337.
82 lines • 3.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOnChainQuote = void 0;
const batchInstructions_1 = require("../../../account/utils/batchInstructions.js");
const resolveInstructions_1 = require("../../../account/utils/resolveInstructions.js");
const getFusionQuote_1 = require("./getFusionQuote.js");
const getQuote_1 = require("./getQuote.js");
const getOnChainQuote = async (client, parameters) => {
const { account: account_ = client.account, trigger, cleanUps, instructions, batch = true, gasLimit, ...rest } = parameters;
const meeVersions = client.account.deployments.map(({ version, chain }) => ({
chainId: chain.id,
version
}));
const resolvedInstructions = await (0, resolveInstructions_1.resolveInstructions)(instructions);
if (trigger.call) {
const batchedInstructions = await (0, batchInstructions_1.batchInstructions)({
accountAddress: account_.signer.address,
meeVersions,
instructions: resolvedInstructions
});
const quote = await (0, getQuote_1.getQuote)(client, {
path: "quote",
eoa: account_.signer.address,
batch,
instructions: batchedInstructions,
gasLimit: gasLimit || getQuote_1.DEFAULT_GAS_LIMIT,
...(cleanUps ? { cleanUps } : {}),
...rest
}, "onchain");
return {
quote,
trigger
};
}
const owner = account_.signer.address;
const spender = account_.addressOn(trigger.chainId, true);
const recipient = trigger.recipientAddress || spender;
const { triggerGasLimit, triggerAmount, batchedInstructions } = await (0, getFusionQuote_1.prepareInstructions)(client, {
resolvedInstructions,
trigger,
owner,
spender,
recipient,
account: account_,
batch
});
const triggerInfo = {
tokenAddress: trigger.tokenAddress,
chainId: trigger.chainId,
gasLimit: triggerGasLimit,
amount: triggerAmount,
...(trigger.approvalAmount
? { approvalAmount: trigger.approvalAmount }
: {}),
...(trigger.recipientAddress
? { recipientAddress: trigger.recipientAddress }
: {})
};
const quote = await (0, getQuote_1.getQuote)(client, {
path: "quote-permit",
eoa: account_.signer.address,
instructions: batchedInstructions,
batch,
gasLimit: gasLimit || triggerGasLimit,
...(cleanUps ? { cleanUps } : {}),
...rest
}, "onchain", triggerInfo);
let fees = trigger.useMaxAvailableFunds
? 0n
: BigInt(quote.paymentInfo.tokenWeiAmount);
if (rest.sponsorship) {
fees = 0n;
}
triggerInfo.amount += fees;
return {
quote,
trigger: triggerInfo
};
};
exports.getOnChainQuote = getOnChainQuote;
exports.default = exports.getOnChainQuote;
//# sourceMappingURL=getOnChainQuote.js.map