export declare type EventCallback = (this: CbThis, eventParam: EvtParam, ...args: unknown[]) => boolean | void; export declare type EventQuery = string | Object; declare type CbThis = unknown extends Ctx ? Impl : Ctx; declare type DefaultEventDefinition = { [eventName: string]: unknown; }; export interface EventProcessor { normalizeQuery?: (query: EventQuery) => EventQuery; filter?: (eventType: keyof EvtDef, query: EventQuery) => boolean; afterTrigger?: (eventType: keyof EvtDef) => void; } export default class Eventful { private _$handlers; protected _$eventProcessor: EventProcessor; constructor(eventProcessors?: EventProcessor); on(event: EvtNm, handler: EventCallback, context?: Ctx): this; on(event: EvtNm, query: EventQuery, handler: EventCallback, context?: Ctx): this; isSilent(eventName: keyof EvtDef): boolean; off(eventType?: keyof EvtDef, handler?: Function): this; trigger(eventType: keyof EvtDef, eventParam?: EvtDef[keyof EvtDef], ...args: any[]): this; triggerWithContext(type: keyof EvtDef): this; } export {};