import type { HardhatEthersProvider as HardhatEthersProviderI } from "../../types.js";
import type { AddressLike, BlockTag, TransactionRequest, Filter, FilterByBlockHash, Listener, ProviderEvent, ethers } from "ethers";
import type { NetworkConfig } from "hardhat/types/config";
import type { EthereumProvider } from "hardhat/types/providers";
import { Network as EthersNetwork } from "ethers";
import { HardhatEthersSigner } from "../signers/signers.js";
export declare class HardhatEthersProvider implements HardhatEthersProviderI {
    #private;
    constructor(hardhatProvider: EthereumProvider, networkName: string, networkConfig: NetworkConfig);
    get provider(): this;
    destroy(): void;
    send(method: string, params?: any[]): Promise<any>;
    getSigner(address?: number | string): Promise<HardhatEthersSigner>;
    getBlockNumber(): Promise<number>;
    getNetwork(): Promise<EthersNetwork>;
    getFeeData(): Promise<ethers.FeeData>;
    getBalance(address: AddressLike, blockTag?: BlockTag | undefined): Promise<bigint>;
    getTransactionCount(address: AddressLike, blockTag?: BlockTag | undefined): Promise<number>;
    getCode(address: AddressLike, blockTag?: BlockTag | undefined): Promise<string>;
    getStorage(address: AddressLike, position: ethers.BigNumberish, blockTag?: BlockTag | undefined): Promise<string>;
    estimateGas(tx: TransactionRequest): Promise<bigint>;
    call(tx: TransactionRequest): Promise<string>;
    broadcastTransaction(signedTx: string): Promise<ethers.TransactionResponse>;
    getBlock(blockHashOrBlockTag: BlockTag, prefetchTxs?: boolean | undefined): Promise<ethers.Block | null>;
    getTransaction(hash: string): Promise<ethers.TransactionResponse | null>;
    getTransactionReceipt(hash: string): Promise<ethers.TransactionReceipt | null>;
    getTransactionResult(_hash: string): Promise<string | null>;
    getLogs(filter: Filter | FilterByBlockHash): Promise<ethers.Log[]>;
    resolveName(_ensName: string): Promise<string | null>;
    lookupAddress(_address: string): Promise<string | null>;
    waitForTransaction(_hash: string, _confirms?: number | undefined, _timeout?: number | undefined): Promise<ethers.TransactionReceipt | null>;
    waitForBlock(_blockTag?: BlockTag | undefined): Promise<ethers.Block>;
    on(ethersEvent: ProviderEvent, listener: Listener): Promise<this>;
    once(ethersEvent: ProviderEvent, listener: Listener): Promise<this>;
    emit(ethersEvent: ProviderEvent, ...args: any[]): Promise<boolean>;
    listenerCount(event?: ProviderEvent | undefined): Promise<number>;
    listeners(ethersEvent?: ProviderEvent | undefined): Promise<Listener[]>;
    off(ethersEvent: ProviderEvent, listener?: Listener | undefined): Promise<this>;
    removeAllListeners(ethersEvent?: ProviderEvent | undefined): Promise<this>;
    addListener(event: ProviderEvent, listener: Listener): Promise<this>;
    removeListener(event: ProviderEvent, listener: Listener): Promise<this>;
    toJSON(): string;
}
//# sourceMappingURL=hardhat-ethers-provider.d.ts.map