@jsprismarine/prismarine
Version:
Dedicated Minecraft Bedrock Edition server written in TypeScript
32 lines • 1.7 kB
TypeScript
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