/// import { BN } from 'ethereumjs-util'; declare type EthQuery = any; /** * @type EthFeeHistoryResponse * * Response data for `eth_feeHistory`. * @property oldestBlock - The id of the oldest block (in hex format) in the range of blocks * requested. * @property baseFeePerGas - Base fee per gas for each block in the range of blocks requested. * For go-ethereum based chains baseFeePerGas will not returned in case of empty results * * @property gasUsedRatio - A number between 0 and 1 that represents the gas used vs. gas limit for * each block in the range of blocks requested. * @property reward - The priority fee at the percentiles requested for each block in the range of * blocks requested. */ export declare type EthFeeHistoryResponse = { oldestBlock: string; baseFeePerGas?: string[]; gasUsedRatio: number[]; reward?: string[][]; }; /** * @type ExistingFeeHistoryBlock * * Historical data for a particular block that exists on the blockchain. * @property number - The number of the block, as a BN. * @property baseFeePerGas - The base fee per gas for the block in WEI, as a BN. * @property gasUsedRatio - A number between 0 and 1 that represents the ratio between the gas paid * for the block and its set gas limit. * @property priorityFeesByPercentile - The priority fees paid for the transactions in the block * that occurred at particular levels at which those transactions contributed to the overall gas * used for the block, indexed by those percentiles. (See docs for {@link fetchBlockFeeHistory} for more * on how this works.) */ declare type ExistingFeeHistoryBlock = { number: BN; baseFeePerGas: BN; gasUsedRatio: number; priorityFeesByPercentile: Record; }; /** * @type NextFeeHistoryBlock * * Historical data for a theoretical block that could exist in the future. * @property number - The number of the block, as a BN. * @property baseFeePerGas - The estimated base fee per gas for the block in WEI, as a BN. */ declare type NextFeeHistoryBlock = { number: BN; baseFeePerGas: BN; }; /** * @type FeeHistoryBlock * * Historical data for a particular block. * @property number - The number of the block, as a BN. * @property baseFeePerGas - The base fee per gas for the block in WEI, as a BN. * @property gasUsedRatio - A number between 0 and 1 that represents the ratio between the gas paid * for the block and its set gas limit. * @property priorityFeesByPercentile - The priority fees paid for the transactions in the block * that occurred at particular levels at which those transactions contributed to the overall gas * used for the block, indexed by those percentiles. (See docs for {@link fetchBlockFeeHistory} for more * on how this works.) */ export declare type FeeHistoryBlock = ExistingFeeHistoryBlock | NextFeeHistoryBlock; /** * @type ExtractPercentileFrom * * Extracts the percentiles that the type assigned to an array of FeeHistoryBlock has been created * with. This makes use of the `infer` keyword to read the type argument. */ export declare type ExtractPercentileFrom = T extends FeeHistoryBlock[] ? P : never; /** * Uses `eth_feeHistory` (an EIP-1559 feature) to obtain information about gas fees from a range of * blocks that have occurred recently on a network. * * To learn more, see these resources: * * - * - * - * - * - * * @param args - The arguments to this function. * @param args.ethQuery - An EthQuery instance that wraps a provider for the network in question. * @param args.endBlock - The desired end of the requested block range. Can be "latest" if you want * to start from the latest successful block or the number of a known past block. * @param args.numberOfBlocks - How many total blocks to fetch. Note that if this is more than 1024, * multiple calls to `eth_feeHistory` will be made. * @param args.percentiles - A set of numbers between 1 and 100 which will dictate how * `priorityFeesByPercentile` in each returned block will be formed. When Ethereum runs the * `eth_feeHistory` method, for each block it is considering, it will first sort all transactions by * the priority fee. It will then go through each transaction and add the total amount of gas paid * for that transaction to a bucket which maxes out at the total gas used for the whole block. As * the bucket fills, it will cross percentages which correspond to the percentiles specified here, * and the priority fees of the first transactions which cause it to reach those percentages will be * recorded. Hence, `priorityFeesByPercentile` represents the priority fees of transactions at key * gas used contribution levels, where earlier levels have smaller contributions and later levels * have higher contributions. * @param args.includeNextBlock - Whether to include an extra block that represents the next * block after the latest one. Only the `baseFeePerGas` will be filled in for this block (which is * estimated). * @returns The list of blocks and their fee data, sorted from oldest to newest. */ export default function fetchBlockFeeHistory({ ethQuery, numberOfBlocks: totalNumberOfBlocks, endBlock: givenEndBlock, percentiles: givenPercentiles, includeNextBlock, }: { ethQuery: EthQuery; numberOfBlocks: number; endBlock?: 'latest' | BN; percentiles?: readonly Percentile[]; includeNextBlock?: boolean; }): Promise[]>; export {};