UNPKG

viem

Version:

TypeScript Interface for Ethereum

53 lines 2.34 kB
"use strict"; 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