import { BlockNumber, EventLog } from "@celo/connect"; import { EventEmitter } from "events"; export interface EventOptions { filter?: object; fromBlock?: BlockNumber; topics?: string[]; } export interface ContractEventLog extends EventLog { returnValues: T; } export interface ContractEventEmitter extends EventEmitter { on(event: "connected", listener: (subscriptionId: string) => void): this; on(event: "data" | "changed", listener: (event: ContractEventLog) => void): this; on(event: "error", listener: (error: Error) => void): this; } export type Callback = (error: Error | null, result?: T) => void; export type ContractEvent = (options?: EventOptions, cb?: Callback>) => ContractEventEmitter;