import { ContractBase } from '../keeper'; import { Instantiable } from '../Instantiable.abstract'; export interface Filter { [key: string]: number | string | string[] | number[]; } export interface EventOptions { methodName?: string; eventName?: string; filterJsonRpc?: Filter; filterSubgraph?: Record; result?: Record; fromBlock?: number | string; toBlock?: number | string; } export interface EventEmitter { subscribe: (callback: () => Promise, arg1: () => Promise) => void; unsubscribe: (arg0: () => Promise) => void; } export interface ContractEventSubscription { unsubscribe: () => void; } export type EventResult = Promise>; export declare abstract class NeverminedEvent extends Instantiable { protected eventEmitter: EventEmitter; protected contract: ContractBase; abstract getEventData(options: EventOptions): EventResult; abstract getPastEvents(options: EventOptions): EventResult; abstract getBlockNumber(...args: any[]): Promise; protected constructor(contract: ContractBase, eventEmitter: EventEmitter); subscribe(callback: (events: EventResult[]) => void, options: EventOptions): ContractEventSubscription; once(callback?: (events: EventResult[]) => void, options?: EventOptions): Promise; }