import { Sub } from 'tea-cup-fp'; declare abstract class EventMapEvents { abstract doAddListener(key: K, listener: (ev: Map[K]) => any, options?: boolean | AddEventListenerOptions): void; abstract doRemoveListener(key: K, listener: (ev: Map[K]) => any, options?: boolean | AddEventListenerOptions): void; /** * Subscribe to an event. * @param key the event type to subscribe to. * @param mapper map the event to a message. * @param options options for this listener */ on(key: K, mapper: (e: Map[K]) => Msg, options?: boolean | AddEventListenerOptions): Sub; } /** * Subscribe to document events. */ export declare class DocumentEvents extends EventMapEvents { doAddListener(key: K, listener: (ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; doRemoveListener(key: K, listener: (ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; } /** * Bonus, WindowEvents */ export declare class WindowEvents extends EventMapEvents { doAddListener(key: K, listener: (ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; doRemoveListener(key: K, listener: (ev: WindowEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void; } export {};