import { Handle } from './util'; export default class Evented = EventObject> { protected __typeMap__?: M; protected listenersMap: Map[]>; private handles; constructor(); emit(event: M[K]): void; emit(event: O): void; on(type: K, listener: EventedCallbackOrArray): Handle; on(type: T, listener: EventedCallbackOrArray): Handle; own(handles: Handle | Handle[]): Handle; destroy(): Promise; private _addListener; } export declare type EventedCallback = EventObject> = { (event: E): boolean | void; }; export interface CustomEventTypes = EventObject> { [index: string]: T; } export declare type EventedCallbackOrArray = EventObject> = EventedCallback | EventedCallback[]; export declare type EventType = string | symbol; export interface EventObject { readonly type: T; }