import { Contract, ContractInterface, ethers } from "ethers"; declare type InterceptorFn = (...args: any) => Promise; export declare class Web3ProviderExtras { event: EventTypes; signer: () => ethers.providers.JsonRpcSigner; provider: () => ethers.providers.Web3Provider; beforeRequest: InterceptorFn; afterRequest: InterceptorFn; transactionState: (state: "started" | "rejected" | "waiting" | "done", ...args: any) => void; skipEvent: boolean; constructor(extras?: Web3ProviderExtras); } export declare const Web3ContractProvider: (addressOrName: string, contractInterface: ContractInterface, extras: Web3ProviderExtras) => ContractFunctions & { contract: Contract; }; export {};