/**
 * Utility abstract class for creating multiple event listeners
 *
 * @exports
 * @class EventManager
 * @abstract
 */
export declare abstract class EventManager<EventListener extends Function> {
    /**
     * Array of listeners bound to this manager event
     */
    protected abstract listeners: EventListener[];
    /**
     * Add a listener to this manager listeners
     */
    on(listener: EventListener): () => void;
    /**
     * Remove a listener from this manager listeners
     */
    off(listener: EventListener): void;
    /**
     * Bind event listeners
     */
    protected abstract bind?(): void;
    /**
     * Unbind event listeners
     */
    protected abstract unbind?(): void;
}
/**
 * Utility abstract class for creating multiple events listeners
 *
 * @exports
 * @class EventsManager
 * @abstract
 */
export declare abstract class EventsManager<EventKey extends string, EventListener extends Function> {
    /**
     * Arrays of listeners bound to this manager events
     */
    protected abstract listeners: Record<EventKey, EventListener[]>;
    /**
     * Add a listener to this manager listeners
     */
    on(eventKey: EventKey, listener: EventListener): () => void;
    /**
     * Remove a listener gtom this manager listeners
     */
    off(eventKey: EventKey, listener: EventListener): void;
    /**
     * Bind events listeners
     */
    protected abstract bind?(eventKey: EventKey): void;
    /**
     * Unbind events listeners
     */
    protected abstract unbind?(eventKey: EventKey): void;
}
