UNPKG

@jsprismarine/prismarine

Version:

Dedicated Minecraft Bedrock Edition server written in TypeScript

32 lines 1.7 kB
import { Evt } from 'evt'; /** * @private */ export interface EventEmitterish<EventTypes extends [string, any]> { on<T extends EventTypes, K extends T[0]>(id: K, callback: (event: T extends readonly [K, infer U] ? U : never) => void): this; once: EventEmitterish<EventTypes>['on']; removeListener: EventEmitterish<EventTypes>['on']; removeAllListeners(id?: EventTypes[0]): this; /** * Returns a promise that resolve after * each async callbacks have resolved. */ emit<T extends EventTypes, K extends T[0]>(id: K, event: T extends readonly [K, infer U] ? U : never): Promise<void>; } export declare function EventEmitterishMixin<EventTypes extends [string, any], TBase extends new (...args: any[]) => {}>(Base: TBase, getEvt: (parameters: { constructorArgs: ConstructorParameters<TBase>; instance: InstanceType<TBase>; }) => Evt<EventTypes>): { new (...args: any[]): { on<T extends EventTypes, K extends T[0]>(id: K, callback: (event: T extends readonly [K, infer U] ? U : never) => void): any; once<T extends EventTypes, K extends T[0]>(id: K, callback: (event: T extends readonly [K, infer U] ? U : never) => void): any; removeListener<T extends EventTypes, K extends T[0]>(id: K, callback: (event: T extends readonly [K, infer U] ? U : never) => void): any; removeAllListeners(id?: EventTypes[0]): any; /** * Returns a promise that resolve after * each async callbacks have resolved. */ emit<T extends EventTypes, K extends T[0]>(id: K, event: T extends readonly [K, infer U] ? U : never): Promise<void>; }; } & TBase; //# sourceMappingURL=EventEmitterishMixin.d.ts.map