import type { BentoOptions } from '../Bento';
export declare type EntityEventHandler = (...args: Array<any>) => void;
export interface EntityEventSubscription {
    name: string;
    handler: EntityEventHandler;
}
export declare class EntityEvents {
    private readonly name;
    private readonly emitter;
    private readonly subject;
    private subCount;
    private readonly subscriptions;
    private readonly options;
    constructor(name: string, options: BentoOptions);
    /**
     * Emit Event
     * @param name Event name
     * @param args Event args
     */
    emit(name: string, ...args: Array<any>): void;
    /**
     * Emit Event and store as subject
     * @param name Event name
     * @param args Event args
     */
    emitSubject(name: string, ...args: Array<any>): void;
    /**
     * Purges subject data for event
     * @param name Event name
     */
    purgeSubject(name: string): void;
    subscribe(name: string, handler: EntityEventHandler, context?: unknown): number;
    unsubscribe(id?: number): void;
}
