stencil-quantum
Version:
Experience the quantum realm of stencil.
18 lines (17 loc) • 1.08 kB
TypeScript
import { ComponentPrototype } from "./utils";
export interface EventEmitter {
emit(event: string, ...args: any[]): EventEmitter;
on(event: string, fn: (...args: any[]) => any): EventEmitter;
once(event: string, fn: (...args: any[]) => any): EventEmitter;
off(event: string, fn: (...args: any[]) => any): EventEmitter;
}
declare type EmitEvents<T> = T extends EventEmitter ? Parameters<T["emit"]>[0] : string;
export interface EventOptions<E extends string | undefined> {
emitter: string;
namespace?: string;
on?: E;
}
export declare function Emit<T extends EventEmitter = any, E extends EmitEvents<T> | undefined = any>(opts: EventOptions<E>): (prototype: ComponentPrototype, propertyName: E extends EmitEvents<T> ? string : E) => void;
declare type ReceiveEvents<T> = T extends EventEmitter ? Parameters<T["on"]>[0] : string;
export declare function Receive<T extends EventEmitter = any, E extends ReceiveEvents<T> | undefined = any>(opts: EventOptions<E>): (prototype: ComponentPrototype, propertyName: E extends ReceiveEvents<T> ? string : E) => void;
export {};