viem
Version:
41 lines • 1.42 kB
JavaScript
import { readContract, } from '../../actions/public/readContract.js';
import { getChainContractAddress } from '../../utils/chain/getChainContractAddress.js';
import { gasPriceOracleAbi } from '../abis.js';
import { contracts } from '../contracts.js';
/**
* get the L1 base fee
*
* @param client - Client to use
* @param parameters - {@link GetL1BaseFeeParameters}
* @returns The basefee (in wei). {@link GetL1BaseFeeReturnType}
*
* @example
* import { createPublicClient, http, parseEther } from 'viem'
* import { optimism } from 'viem/chains'
* import { getL1BaseFee } from 'viem/chains/optimism'
*
* const client = createPublicClient({
* chain: optimism,
* transport: http(),
* })
* const l1BaseFee = await getL1BaseFee(client)
*/
export async function getL1BaseFee(client, args) {
const { chain = client.chain, gasPriceOracleAddress: gasPriceOracleAddress_, } = args || {};
const gasPriceOracleAddress = (() => {
if (gasPriceOracleAddress_)
return gasPriceOracleAddress_;
if (chain)
return getChainContractAddress({
chain,
contract: 'gasPriceOracle',
});
return contracts.gasPriceOracle.address;
})();
return readContract(client, {
abi: gasPriceOracleAbi,
address: gasPriceOracleAddress,
functionName: 'l1BaseFee',
});
}
//# sourceMappingURL=getL1BaseFee.js.map