export type Handler<T = any> = (val: T) => void;
/**
 * @hidden
 */
export declare class Event<Events extends Record<string, any> = {}> {
    private map;
    /**
     * @hidden
     */
    addEventListener<EventName extends keyof Events>(name: EventName, handler: Handler<Events[EventName]>): void;
    /**
     * @hidden
     */
    dispatchEvent<EventName extends keyof Events>(name: EventName, value?: Events[EventName]): void;
    /**
     * Checks if there is a listener
     * @hidden
     */
    hasEventListener<EventName extends keyof Events>(name: EventName): boolean;
    /**
     * Removes all event listeners
     * @hidden
     */
    removeEventListener(): void;
    /**
     * @hidden
     */
    removeEventListener<EventName extends keyof Events>(name: EventName): void;
    /**
     * @hidden
     */
    removeEventListener<EventName extends keyof Events>(name: EventName, handler: Handler<Events[EventName]>): void;
}
