import { BaseContract, EventFilter, ContractInterface } from '@ethersproject/contracts'; import { Observable } from 'rxjs'; import { NgZone } from '@angular/core'; import type { Signer } from '@ethersproject/abstract-signer'; import type { Event } from '@ethersproject/contracts'; import type { Listener, Provider, BlockTag } from "@ethersproject/providers"; export declare type FilterParam = T | T[] | null; export interface TypedFilter extends EventFilter { } export declare type EventArgs, K extends keyof T['filters']> = Parameters & T['queries'][K]; export interface TypedEvent, K extends keyof T['filters']> extends Event { args: EventArgs; } interface ContractEvents { events: { [name in EventKeys]: Listener; }; filters: { [name in FilterKeys]: (...args: any[]) => TypedFilter; }; queries: { [name in FilterKeys]: any; }; } export declare class NgContract, EventKeys extends Extract = Extract, FilterKeys extends Extract = Extract> extends BaseContract { filters: Events['filters']; queryFilter: (event: TypedFilter, fromBlockOrBlockhash?: BlockTag, toBlock?: BlockTag) => Promise[]>; attach: (addressOrName: string) => this; connect: (providerOrSigner: Provider | Signer) => this; deloyed?: () => Promise; listenerCount: (eventName?: EventFilter | EventKeys) => number; listeners: (eventName?: TypedFilter | K) => Listener[]; off: (eventName: TypedFilter | K, listener: Events['events'][K]) => this; on: (eventName: TypedFilter | K, listener: Events['events'][K]) => this; once: (eventName: TypedFilter | K, listener: Events['events'][K]) => this; removeListener: (eventName: TypedFilter | K, listener: Events['events'][K]) => this; removeAllListeners: (eventName?: EventFilter | EventKeys) => this; private ngZone; private _events; constructor(address: string, abi: ContractInterface, signer?: Provider | Signer, ngZone?: NgZone); /** Transform event name into an EventFilter */ private getEventFilter; private wrapEvent; /** * Listen on the changes of an event, starting with the current state * @param event The event filter */ from(event: TypedFilter | K): Observable[]>; } export {};