/// import { EventEmitter } from "events"; export = first; /** * Get the first event in a set of event emitters and event pairs, then clean up after itself. * Invoke `listener` on the first event from the list specified in `eventSpec`. * * @param eventSpec Array of arrays, with each array in the format `[ee, ...event]`. * @param listener Will be called only once, the first time any of the given events are emitted. * If `error` is one of the listened events, then if that fires first, the `listener` will be given the `err` argument. * `listener`'s arguments: * - `err`: the first argument emitted from an error event, if applicable * - `ee`: the event emitter that fired * - `event`: the string event name that fired * - `args`: an array of the arguments that were emitted on the event */ declare function first( eventSpec: Array<[TEmitter, ...string[]]>, listener: first.Listener, ): first.Thunk; declare namespace first { type Listener = ( err: any, ee: TEmitter, event: string[], args: any[], ) => void; interface Thunk { (listener: Listener): void; /** * The group of listeners can be cancelled before being invoked and have all the event listeners removed * from the underlying event emitters. */ cancel(): void; } }