import { InterfaceAbi } from 'ethers/abi'; import * as ethers from 'ethers'; import { Eip1193Provider, AbstractProvider, Signer, Provider, TransactionResponse } from 'ethers/providers'; import { Contract, Overrides } from 'ethers/contract'; /** All supported chain IDs */ declare enum ChainId { MAINNET = 1, ROPSTEN = 3, RINKEBY = 4, GÖRLI = 5, KOVAN = 42, BASE = 8453, POLYGON = 137, POLYGON_TESTNET = 80001, POLYGON_ZKEVM = 1101, FANTOM_TESTNET = 4002, BNB_SMART_CHAIN = 56, BNB_SMART_CHAIN_TESTNET = 97, ARBITRUM = 42161, ARBITRUM_TESTNET = 79377087078960, MOONBEAM_TESTNET = 1287, AVALANCHE = 43114, LINEA = 59144, SCROLL = 534352, CELO = 42220, GNOSIS = 100, MOONBEAM = 1284, HECO = 128, HECO_TESTNET = 256, HARMONY = 1666600000, HARMONY_TESTNET = 1666700000, OKEX = 66, OKEX_TESTNET = 65, CRONOS = 25, CRONOS_TESTNET = 338, AURORA = 1313161554, AURORA_TESTNET = 1313161555, AURORA_BETANET = 1313161556, MOONRIVER = 1285, OPTIMISM = 10, XRPL_EVM = 1440000, XRPL_EVM_TESTNET = 1449000, MANTLE = 5000, KAVA = 2222, METIS = 1088, ZORA = 7777777, MONAD_TESTNET = 10143, APECHAIN = 33139, OPBNB = 204, CORE = 1116, AIOZ = 168, GRAVITY = 1625, LISK = 1135, SONIC_NETWORK = 146, FLUENT_TESTNET = 20994, /** GENERATED by scripts/gen-multicall.ts */ SEPOLIA = 11155111, HOLESKY = 17000, STORY = 1514, STORY_AENEID_TESTNET = 1315, XTERIO_CHAIN = 112358, XTERIO_TESTNET = 1637450, OPTIMISM_KOVAN = 69, OPTIMISM_GÖRLI = 420, OPTIMISM_SEPOLIA = 11155420, ARBITRUM_NOVA = 42170, ARBITRUM_GÖRLI = 421613, ARBITRUM_SEPOLIA = 421614, ARBITRUM_RINKEBY = 421611, STYLUS_TESTNET = 23011913, AMOY = 80002, POLYGON_ZKEVM_TESTNET = 1442, CARDONA_ZKEVM_TESTNET = 2442, CHIADO = 10200, AVALANCHE_FUJI = 43113, FANTOM_OPERA = 250, FANTOM_SONIC = 64240, OPBNB_TESTNET = 5611, PALM = 11297108109, PALM_TESTNET = 11297108099, REYA_CRONOS = 89346162, REYA_NETWORK = 1729, FUSE = 122, FLARE_MAINNET = 14, SONGBIRD_CANARY_NETWORK = 19, COSTON_TESTNET = 16, COSTON2_TESTNET = 114, BOBA = 288, ASTAR = 592, ASTAR_ZKYOTO_TESTNET = 6038361, ASTAR_ZKEVM = 3776, METIS_GOERLI = 599, METIS_SEPOLIA = 59902, OVER_PROTOCOL = 54176, OVER_PROTOCOL_DOLPHIN_TESTNET = 541764, RSK = 30, RSK_TESTNET = 31, EVMOS = 9001, EVMOS_TESTNET = 9000, THUNDERCORE = 108, THUNDERCORE_TESTNET = 18, OASIS = 42262, OASIS_SAPPHIRE = 23294, CELO_ALFAJORES_TESTNET = 44787, GODWOKEN = 71402, GODWOKEN_TESTNET = 71401, KLAYTN = 8217, KLAYTN_TESTNET = 1001, MILKOMEDA = 2001, KCC = 321, VELAS = 106, TELOS = 40, STEP_NETWORK = 1234, CANTO = 7700, CANTO_TESTNET = 7701, IOTEX = 4689, BITGERT = 32520, MANTLE_SEPOLIA_TESTNET = 5003, MANTLE_TESTNET = 5001, SHARDEUM_SPHINX = 8082, BASE_TESTNET = 84531, BASE_TESTNET_2 = 84532, KROMA_TESTNET = 2358, KROMA = 255, DEFICHAIN_EVM_MAINNET = 1130, DEFICHAIN_EVM_TESTNET = 1131, DEFI_ORACLE_META_MAINNET = 138, DFK_CHAIN_TEST = 335, DFK_CHAIN = 53935, NEON_EVM_DEVNET = 245022926, LINEA_SEPOLIA_TESTNET = 59141, LINEA_GOERLI_TESTNET = 59140, HASHBIT = 11119, SYSCOIN = 57, SYSCOIN_ROLLUX_MAINNET = 570, SYSCOIN_TANNEBAUM_TESTNET = 5700, SYSCOIN_TANNEBAUM_ROLLUX = 57000, PULSECHAIN_V4_TESTNET = 943, PULSECHAIN = 369, ZORA_SEPOLIA_TESTNET = 999999999, DARWINIA_CRAB_NETWORK = 44, DARWINIA_NETWORK = 46, CHAIN_VERSE_MAINNET = 5555, SCROLL_ALPHA_TESTNET = 534353, SCROLL_SEPOLIA_TESTNET = 534351, XODEX = 2415, EOS_EVM_TESTNET = 15557, EOS_EVM = 17777, CROSSBELL = 3737, DOGECHAIN = 2000, MEVERSE_CHAIN_TESTNET = 4759, MEVERSE_CHAIN_MAINNET = 7518, SKALE_CALYPSO_TESTNET = 974399131, SKALE_EUROPA_TESTNET = 1444673419, SKALE_NEBULA_TESTNET = 37084624, SKALE_TITAN_TESTNET = 1020352220, SKALE_CALYPSO_HUB = 1564830818, SKALE_EUROPA_LIQUIDITY_HUB = 2046399126, SKALE_NEBULA_GAMING_HUB = 1482601649, SKALE_TITAN_AI_HUB = 1350216234, RONIN_MAINNET = 2020, QITMEER_TESTNET = 8131, QITMEER_QNG_MAINNET = 813, Q_TESTNET = 35443, Q_DEVNET = 35442, Q_MAINNET = 35441, NEON_MAINNET = 245022934, LUKSO_TESTNET = 4201, EDGEWARE_EDGEEVM = 2021, METER_TESTNET = 83, METER = 82, SEPOLIA_PGN_TESTNET = 58008, PGN = 424, SHIMMEREVM = 148, HIGHBURY_EVM = 710, ARTHERA_TESTNET = 10243, ARTHERA_MAINNET = 10242, MANTA_PACIFIC_MAINNET = 169, JOLNIR = 167007, KATLA = 167008, FILECOIN_MAINNET = 314, FILECOIN_CALIBRATION_TESTNET = 314159, FUSION = 32659, FUSION_TESTNET = 46688, XAI_TESTNET = 47279324479, JFIN_CHAIN = 3501, JFIN_CHAIN_TESTNET = 3502, CHILIZ_CHAIN = 88888, CHILIZ_SPICY_TESTNET = 88882, CORE_TESTNET = 1115, CORE_TESTNET2 = 1114, ETHEREUM_CLASSIC = 61, FRAME_TESTNET = 68840142, ETHERLINK_MAINNET = 42793, ETHERLINK_TESTNET = 128123, ZETACHAIN_ATHENS_3_TESTNET = 7001, ZETACHAIN = 7000, X1_TESTNET = 195, LUMITERRA_LAYER3 = 94168, BITTORRENT_CHAIN_MAINNET = 199, CALLISTO_MAINNET = 820, AREON_NETWORK_TESTNET = 462, AREON_NETWORK_MAINNET = 463, ZKFAIR_MAINNET = 42766, MODE_MAINNET = 34443, BLAST_SEPOLIA = 168587773, BLAST = 81457, XAI = 660279, DOS_CHAIN = 7979, DOS_CHAIN_TESTNET = 3939, TRON = 728126428, ZKSYNC_ERA = 324, ZKSYNC_ERA_GOERLI_TESTNET = 280, ZKSYNC_ERA_SEPOLIA_TESTNET = 300, PLAYFI_ALBIREO_TESTNET = 1612127, ABSTRACT_TESTNET = 11124, ABSTRACT_MAINNET = 2741, FRAXTAL_MAINNET = 252, FRAXTAL_HOLESKY_TESTNET = 2522, OMAX_MAINNET = 311, SYNDICATE_FRAME_CHAIN = 5101, DELA_SEPOLIA = 9393, NEOX_TESTNET = 12227330, SANKO_MAINNET = 1996, SANKO_TESTNET = 1992, BERACHAIN_MAINNET = 80094, BERACHAIN_BEPOLIA_TESTNET = 80069, SHIBARIUM = 109, IMMUTABLE_ZKEVM_MAINNET = 13371, IMMUTABLE_ZKEVM_TESTNET = 13473, RSS3_VSL_MAINNET = 12553, RSS3_VSL_SEPOLIA_TESTNET = 2331, MORPH_SEPOLIA_TESTNET = 2710, MORPH_HOLESKY_TESTNET = 2810, MORPH = 2818, JIBCHAIN_L1 = 8899, HAQQ_MAINNET = 11235, ZIRCUIT_SEPOLIA_TESTNET = 48899, RE_AL = 111188, MERLIN_TESTNET = 686868, IOTA_EVM = 8822, PLANQ = 7070, CYBER_TESTNET = 111557560, UNIT_ZERO_MAINNET = 88811, UNIT_ZERO_STAGENET = 88819, UNIT_ZERO_TESTNET = 88817, SEI_EVM_DEVNET = 713715, SEI_EVM_MAINNET = 1329, HEKLA = 167009, TAIKO_MAINNET = 167000, CYBER_MAINNET = 7560, DREYERX_MAINNET = 23451, SAHARA_TESTNET = 313313, BOX_CHAIN = 42299, OX_CHAIN = 6699, CONFLUX_ESPACE = 1030, BEVM_TESTNET = 11503, AURA_MAINNET = 6322, SUPERPOSITION_TESTNET = 98985, X_LAYER_MAINNET = 196, NAHMII_3_MAINNET = 4061, NAHMII_3_TESTNET = 4062, PLUME_TESTNET = 98867, PLUME_MAINNET = 98866, ALGEN_L1 = 8911, BITLAYER_MAINNET = 200901, YOMINET = 5264468217, BOB = 60808, SUPERSEED = 53302, RUPAYA = 499, FLUENCE_TESTNET = 52164803, FLUENCE_STAGE = 123420000220, FLUENCE = 9999999, CAMP_TESTNET_V2 = 325000, ONTOLOGY_TESTNET = 5851, ONTOLOGY_MAINNET = 58, VICTION_TESTNET = 89, VICTION_MAINNET = 88, WORLD_CHAIN = 480, FLOW_MAINNET = 747, FLOW_TESTNET = 545, CONFLUX_CORE_SPACE_MAINNET = 1029, SUPERPOSITION = 55244, STARCHAIN_TESTNET = 1570, STARCHAIN_MAINNET = 1578, WEMIX_3_0_MAINNET = 1111, ALEPH_ZERO_EVM_MAINNET = 41455, EDUCHAIN_TESTNET = 656476, FORM_TESTNET = 132902, PEAQ = 3338, HYPEREVM = 999, POWERLOOM_MAINNET = 7869, HOODI = 560048, MEGAETH_TESTNET = 6342, INK_SEPOLIA = 763373, INK = 57073, BITTENSOR = 964, WHITECHAIN = 1875, TANGLE_TESTNET = 3799, TANGLE_MAINNET = 8545 } declare const getMulticallAddress: (chain: ChainId) => string | undefined; declare const MULTICALL3_ABI: InterfaceAbi; type ProviderLike = /** HTTP/WS/etc. RPC URL */ string /** EIP-1193 (window.ethereum, etc) * any { request(method, params) } style */ | Eip1193Provider /** Any ethers provider (incl. JsonRpcApiProvider, InfuraProvider, AlchemyProvider, WebSocketProvider, IpcSocketProvider, etc) */ | AbstractProvider; interface ConstructorArgs { /** * Either: * * • A JSON-RPC URL string, * * • An Ethers.js Provider instance, or * * • A Web3/EIP-1193 provider (window.ethereum, etc). */ provider: ProviderLike; /** * Chain ID (enum) for looking up the Multicall contract address. * Should correspond to a key in addresses.Multicall. */ chainId?: ChainId; /** * Optional override for the Multicall contract address. */ multicallAddress?: string; /** * If you want to send txs, pass in a Signer here. */ signer?: Signer; } /** * Defines a standard call to be aggregated by Multicall. */ type Call = { /** * The ethers.Contract instance to call. */ contract: Contract; /** * The fragment name (function name) on the target contract. */ functionFragment: string; /** * Arguments for the function call. */ args: any[]; }; /** * Extends Call to allow failure without reverting. */ type Call3 = Call & { /** * Whether individual call failures are allowed. */ allowFailure: boolean; }; /** * Extends Call3 to include sending ETH value with each call. */ type Call3Value = Call3 & { /** * Amount of ETH (in wei) to send with this call. */ value: bigint; }; /** * Mirrors the Result struct from solidity: * struct Result { bool success; bytes returnData; } */ interface MulticallResult { success: boolean; returnData: string; } /** * Multicall wraps the Multicall3 Solidity contract for batching on-chain calls. * * Read-only methods use a low-level `rpcCall` to save the overhead of a full tx. * * State-changing methods go through an ethers `Contract` and require a signer. */ declare class Multicall { readonly provider: Provider; readonly target: string; readonly iface: ethers.Interface; readonly contract?: Contract; /** * Create a new Multicall SDK instance. * * @param args.provider * - `string` → an HTTP(S) or WS(S) RPC URL: * - `"https://..."` or `"http://..."` → wrapped in ethers’ `JsonRpcProvider` * - `"wss://..."` or `"ws://..."` → wrapped in ethers’ `WebSocketProvider` * - any EIP-1193 provider object (e.g. `window.ethereum`) * → wrapped in ethers’ `BrowserProvider` * - any ethers transport provider * (`JsonRpcProvider`, `WebSocketProvider`, `IpcSocketProvider`, etc.) * → used as-is * - any object with a `.call(...)` method → used as a low-level ethers Provider * @param args.chainId * Optional chainId to auto-lookup the on-chain Multicall3 address. * @param args.multicallAddress * An explicit Multicall3 address; overrides chainId lookup. * @param args.signer * If you plan to send state-changing multicall transactions you must provide an ethers `Signer`. * @throws If neither chainId nor multicallAddress yields a contract address. */ constructor({ provider, chainId, multicallAddress, signer, }: ConstructorArgs); /** * Low‐level wrapper around `eth_call`. * @returns Whatever the ABI says this method returns, typed as T. */ private rpcCall; /** * Execute a batch of calls in a single RPC request, reverting the entire batch * if any individual call fails. Mirrors the on-chain signature: * `function aggregate(Call[] calldata calls) returns (uint256 blockNumber, bytes[] returnData)` * * @param calls * An array of Call descriptors: * - `contract`: an ethers Contract (or equivalent) with `.target` & `.interface` * - `functionFragment`: the ABI name or Fragment of the function to call * - `args`: the arguments for that function * * @param overrides * Optional call overrides: * - `from` (optional): address to use as `msg.sender` for the read * - `blockTag` (optional): block number or tag at which to read state * • e.g. `blockTag: 18_000_000n` to query a historical block * • e.g. `blockTag: "latest" | "finalized" | "safe"` for tag-based reads * - Other transaction fields that ethers allows (e.g. `gasLimit`, `gasPrice`, etc.) * * Note: this method is always a read (`eth_call`); it does not submit a transaction * or change on-chain state. Any `value` provided is only used for call simulation. * * @returns * A Promise resolving to an object: * - `blockNumber: bigint` — the block in which the calls were executed * - `returnData: string[]` — an array of raw hex return data, in the same order as `calls` * * @remarks * Since `aggregate` reverts the entire batch if *any* call fails, you must wrap * in a try/catch to handle on-chain reverts and decode each entry in `returnData`. */ aggregate(calls: Call[], overrides?: Overrides): Promise<{ blockNumber: bigint; returnData: string[]; }>; /** * Execute a batch of calls in a single RPC request, optionally reverting * the entire batch if any call fails. Mirrors the on-chain signature: * `function tryAggregate(bool requireSuccess, Call[] calldata calls)` * * @param requireSuccess * If `true`, any single call failure will cause the entire batch to revert. * If `false`, failures are returned per-call in the results array. * * @param calls * An array of Call descriptors: * - `contract`: an ethers Contract (or equivalent) with `.target` & `.interface` * - `functionFragment`: the ABI name/signature of the function to call * - `args`: the arguments for that function * * @param overrides * Optional call overrides: * - `from` (optional): address to use as `msg.sender` for the read * - `blockTag` (optional): block number or tag at which to read state * • e.g. `blockTag: 18_000_000n` to query a historical block * • e.g. `blockTag: "latest" | "finalized" | "safe"` for tag-based reads * - Other transaction fields that ethers allows (e.g. `gasLimit`, `gasPrice`, etc.) * * Note: this method is always a read (`eth_call`); it does not submit a transaction * or change on-chain state. Any `value` provided is only used for call simulation. * * @returns * A Promise resolving to an array of tuples `[success: boolean, data: any]`, * in the same order as `calls`: * - If `success === true`, `data` is already plain JS: * • primitive (`bigint`, `string`, etc) * • tuple → `Array<…>` * • struct → `{ field1, field2, … }` * • struct[] → `Array<{…}>` * - If `success === false`, `data` is a human-readable revert string: * “Revert: ” for known errors, or * “(unrecognized revert: 0x…)" snippet for unknown cases. */ tryAggregate(requireSuccess: boolean, calls: Call[], overrides?: Overrides): Promise>; /** * Execute a batch of read-only calls at the current block, returning block metadata * and per-call success/data tuples. Backwards-compatible with Multicall2. * * Mirrors the on-chain signature: * `function tryBlockAndAggregate(bool requireSuccess, Call[] calldata calls)` * * @param requireSuccess * If `true`, the entire batch will revert if *any* call fails; * if `false`, failures are returned per-call in the results array. * * @param calls * An array of Call descriptors: * - `contract`: an ethers Contract or equivalent with `.target` & `.interface` * - `functionFragment`: the name/signature of the function to call * - `args`: the arguments for that function * * @param overrides * Optional call overrides: * - `from` (optional): address to use as `msg.sender` for the read * - `blockTag` (optional): block number or tag at which to read state * • e.g. `blockTag: 18_000_000n` to query a historical block * • e.g. `blockTag: "latest" | "finalized" | "safe"` for tag-based reads * - Other transaction fields that ethers allows (e.g. `gasLimit`, `gasPrice`, etc.) * * Note: this method is always a read (`eth_call`); it does not submit a transaction * or change on-chain state. Any `value` provided is only used for call simulation. * * @returns * A Promise resolving to an object: * - `blockNumber: bigint` — the block in which the calls were executed * - `blockHash: string` — hash of that block * - `returnData: Array<[success: boolean, data: any]>` — same order as `calls` * • If `success === true`, `data` is plain JS: * – primitive (`bigint`, `string`, etc) * – tuple → `Array<…>` * – struct → `{ field1, field2, … }` * – struct[] → `Array<{…}>` * • If `success === false`, `data` is a human-readable revert: * – `"Revert: "` for standard and custom errors * – `"(unrecognized revert: 0x…)"` snippet for unknown cases */ tryBlockAndAggregate(requireSuccess: boolean, calls: Call[], overrides?: Overrides): Promise<{ blockNumber: bigint; blockHash: string; returnData: Array<[boolean, any]>; }>; /** * Executes a batch of calls in a single RPC, reverting the entire batch on any failure. * Internally this is just `tryBlockAndAggregate(true, calls)`. * * @param calls - Array of Call objects (each with a contract, functionFragment, and args). * * @param overrides * Optional call overrides: * - `from` (optional): address to use as `msg.sender` for the read * - `blockTag` (optional): block number or tag at which to read state * • e.g. `blockTag: 18_000_000n` to query a historical block * • e.g. `blockTag: "latest" | "finalized" | "safe"` for tag-based reads * - Other transaction fields that ethers allows (e.g. `gasLimit`, `gasPrice`, etc.) * * Note: this method is always a read (`eth_call`); it does not submit a transaction * or change on-chain state. Any `value` provided is only used for call simulation. * * @returns A promise resolving to an object: * - `blockNumber: bigint` – the block where these calls were executed * - `blockHash: string` – the hash of that block * - `returnData: Array<[boolean, any]>` – for each call: * • success=true ⇒ `any` is the fully‐decoded, plain-JS result (primitive, array, or object) * • success=false ⇒ `any` is the raw revert data hex (the batch will actually have reverted) */ blockAndAggregate(calls: Call[], overrides?: Overrides): Promise<{ blockNumber: bigint; blockHash: string; returnData: Array<[boolean, any]>; }>; /** * Execute a batch of calls via Multicall3, allowing individual calls to fail. * * Mirrors the on-chain signature: * `function aggregate3(Call3[] calldata calls)` * * @param calls * An array of Call3 descriptors: * - `contract`: an ethers Contract or equivalent with `.target` & `.interface` * - `functionFragment`: the name/signature of the function to call * - `args`: the arguments for that function * - `allowFailure`: whether this call may fail without bubbling up * * @param overrides * Optional call overrides: * - `from` (optional): address to use as `msg.sender` for the read * - `blockTag` (optional): block number or tag at which to read state * • e.g. `blockTag: 18_000_000n` to query a historical block * • e.g. `blockTag: "latest" | "finalized" | "safe"` for tag-based reads * - Other transaction fields that ethers allows (e.g. `gasLimit`, `gasPrice`, etc.) * * Note: this method is always a read (`eth_call`); it does not submit a transaction * or change on-chain state. Any `value` provided is only used for call simulation. * * @returns * A Promise resolving to an array of `[success, data]` tuples, in the same order: * - If `success === true`, `data` is already a plain‐JS value: * • **primitive** (`bigint`, `string`, `boolean`, etc) * • **tuple** → `Array<…>` * • **struct** → `{ field1:…, field2:…, … }` * • **struct[]** → `Array<{…}>` * - If `success === false`, `data` is a human-readable revert string, prefixed with `"Revert: "`: * • Standard `Error(string)` reasons * • Custom Solidity errors (`MyError(arg1,arg2)`) * • Fallback snippet `(unrecognized revert: 0x…)` */ aggregate3(calls: Call3[], overrides?: Overrides): Promise>; /** * Execute a batch of calls (with ETH attached) via Multicall3, allowing individual calls to fail. * * Mirrors the on-chain signature: * `function aggregate3Value(Call3Value[] calldata calls)` * * @param calls * An array of Call3Value descriptors: * - `contract`: an ethers Contract or equivalent with `.target` & `.interface` * - `functionFragment`: the name/signature of the function to call * - `args`: the arguments for that function * - `value`: the amount of native ETH (in wei) to send with that call * - `allowFailure`: whether this call may fail without bubbling up * * @param overrides * Optional call overrides: * * - `from` (optional): address to use as `msg.sender` for the read * - `blockTag` (optional): block number or tag at which to read state * • e.g. `blockTag: 18_000_000n` to query a historical block * • e.g. `blockTag: "latest" | "finalized" | "safe"` for tag-based reads * - Other transaction fields that ethers allows (e.g. `gasLimit`, `gasPrice`, etc.) * * Note: this method is always a read (`eth_call`); it does not submit a transaction * or change on-chain state. Any `value` provided is only used for call simulation. * * @returns * A Promise resolving to an array of `[success, data]` tuples, in the same order: * - If `success === true`, `data` is already a plain‐JS value: * • **primitive** (`bigint`, `string`, `boolean`, etc) * • **tuple** → `Array<…>` * • **struct** → `{ field1:…, field2:…, … }` * • **struct[]** → `Array<{…}>` * - If `success === false`, `data` is a human-readable revert string, prefixed with `"Revert: "`: * • Standard `Error(string)` reasons * • Custom Solidity errors (`MyError(arg1,arg2)`) * • Fallback snippet `(unrecognized revert: 0x…)` */ aggregate3Value(calls: Call3Value[], overrides?: Overrides): Promise>; /** * Batch-execute multiple non-view calls (with optional per-call ETH), * in **one payable on-chain tx** via Multicall3.aggregate3Value. * * @param calls Each Call3Value describes * { contract, functionFragment, args, value, allowFailure } * – the `value` will be added into total `msg.value`. * @param overrides Optional Ethers overrides (gasLimit, gasPrice, etc). * @returns A Promise resolving to the TransactionResponse, which you can `.wait()` on * @throws if no Signer was provided in the constructor. */ sendAggregate3Value(calls: Call3Value[], overrides?: Overrides): Promise; /** * @returns The current block number. */ getBlockNumber(): Promise; /** * @param blockNumber - Block number to fetch hash for. * @returns The block hash as a hex string. */ getBlockHash(blockNumber: bigint): Promise; /** * @returns The hash of the previous block. */ getLastBlockHash(): Promise; /** * @returns The current block timestamp. */ getCurrentBlockTimestamp(): Promise; /** * @returns The current block gas limit. */ getCurrentBlockGasLimit(): Promise; /** * @returns The coinbase (miner) address of the current block. */ getCurrentBlockCoinbase(): Promise; /** * @param address - Address whose ETH balance to fetch. * @returns The ETH balance (in wei) as bigint. */ getEthBalance(address: string): Promise; /** * @returns The base fee of the current block. */ getBasefee(): Promise; /** * @returns The chain ID of the current network. */ getChainId(): Promise; } export { type Call, type Call3, type Call3Value, ChainId, Multicall, MULTICALL3_ABI as Multicall3ABI, type ConstructorArgs as MulticallConstructorArgs, type MulticallResult as MulticallRawResult, getMulticallAddress };