import { Signer } from 'ethers'; import { BlockTag, Listener, Provider, TransactionRequest, TransactionResponse } from 'ethers/providers'; import { Interface } from 'ethers/utils'; export declare type EventFilter = { address?: string; topics?: string[]; fromBlock?: BlockTag; toBlock?: BlockTag; }; export declare type EthersContractContext = EthersContract & TMethods; interface Contract { readonly address: string; readonly interface: Interface; readonly signer: Signer; readonly provider: Provider; readonly addressPromise: Promise; readonly deployTransaction: TransactionResponse; fallback(overrides?: TransactionRequest): Promise; emit(eventName: EventFilter | string, ...args: any[]): boolean; listenerCount(eventName?: EventFilter | string): number; listeners(eventName: EventFilter | string): Listener[]; } interface EthersContract extends Contract { readonly functions: TMethods; readonly filters: TEventsContext; deployed(): Promise>; _deployed(blockTag?: BlockTag): Promise>; /** * Type any here so if you are using a different version of ethers then * installed it will still compile * @param signerOrProvider should be type of Wallet | Signer | Provider | string */ connect(signerOrProvider: any): EthersContractContext; attach(addressOrName: string): EthersContractContext; on(event: EventFilter | TEventType, listener: Listener): EthersContractContext; once(event: EventFilter | TEventType, listener: Listener): EthersContractContext; addListener(eventName: EventFilter | TEventType, listener: Listener): EthersContractContext; removeAllListeners(eventName: EventFilter | TEventType): EthersContractContext; removeListener(eventName: TEventType, listener: Listener): EthersContractContext; } export {};