UNPKG

stencil-quantum

Version:

Experience the quantum realm of stencil.

18 lines (17 loc) 1.08 kB
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 {};