import { ContractInterface, InterfaceAbi, JsonRpcSigner } from "ethers"; export declare function shallowCopy(object: T): T; type InterceptorFn = (...args: any) => Promise; export declare class Web3ProviderExtras { event: EventTypes; signer: () => JsonRpcSigner; readOnlySigner: () => JsonRpcSigner; 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: InterfaceAbi, extras: Web3ProviderExtras) => ContractFunctions & ContractInterface; export {};