export declare type THandler = (...args: any[]) => any; export declare type TEmitterHandlers = THandler[]; export declare type TEmitterSignature = symbol | string; export interface IEmitterOptions { strict?: boolean; maxSubscribersCount?: number; } export declare function EventHandler(): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => any; export default class Emitter { private _handlers; private _strict; private _maxSubscribersCount; constructor(params?: IEmitterOptions); subscribe(signature: any, handler: THandler): boolean; unsubscribe(signature: any, handler: THandler): boolean; unsubscribeAll(signature?: any): void; emit(signature: any, ...args: any[]): false | undefined; listeners(signature: any): TEmitterHandlers | undefined; clear(): void; private __getSymbolSignature; private _getStringSignature; }