viem
Version:
53 lines • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.estimateL1Gas = void 0;
const getChainId_js_1 = require("../../../actions/public/getChainId.js");
const readContract_js_1 = require("../../../actions/public/readContract.js");
const prepareTransactionRequest_js_1 = require("../../../actions/wallet/prepareTransactionRequest.js");
const number_js_1 = require("../../../constants/number.js");
const getChainContractAddress_js_1 = require("../../../utils/chain/getChainContractAddress.js");
const toHex_js_1 = require("../../../utils/encoding/toHex.js");
const assertRequest_js_1 = require("../../../utils/transaction/assertRequest.js");
const serializeTransaction_js_1 = require("../../../utils/transaction/serializeTransaction.js");
const abis_js_1 = require("../abis.js");
const contracts_js_1 = require("../contracts.js");
const stubSignature = {
r: (0, toHex_js_1.numberToHex)(number_js_1.maxInt256),
s: (0, toHex_js_1.numberToHex)(number_js_1.maxInt256),
v: 28n,
};
async function estimateL1Gas(client, args) {
const { chain = client.chain, gasPriceOracleAddress: gasPriceOracleAddress_, } = args;
const gasPriceOracleAddress = (() => {
if (gasPriceOracleAddress_)
return gasPriceOracleAddress_;
if (chain)
return (0, getChainContractAddress_js_1.getChainContractAddress)({
chain,
contract: 'gasPriceOracle',
});
return contracts_js_1.contracts.gasPriceOracle.address;
})();
const [request, chainId] = await Promise.all([
(0, prepareTransactionRequest_js_1.prepareTransactionRequest)(client, args),
(async () => {
if (chain)
return chain.id;
return (0, getChainId_js_1.getChainId)(client);
})(),
]);
(0, assertRequest_js_1.assertRequest)(request);
const transaction = (0, serializeTransaction_js_1.serializeTransaction)({
...request,
chainId,
type: 'eip1559',
}, stubSignature);
return (0, readContract_js_1.readContract)(client, {
abi: abis_js_1.gasPriceOracleAbi,
address: gasPriceOracleAddress,
functionName: 'getL1GasUsed',
args: [transaction],
});
}
exports.estimateL1Gas = estimateL1Gas;
//# sourceMappingURL=estimateL1Gas.js.map