interface EventMetadata { type: TType; target: TTarget; sourceTarget: Evented; propagatedFrom?: Evented; layer?: Evented; } /** Flat event object: payload fields live on the event itself (e.g. `event.latlng`). */ export type OrihonEvent, TType extends string = string, TTarget = Evented> = T extends unknown ? Omit & EventMetadata & Record : never; /** Known literal names infer their payload; dynamic/custom names retain unknown fields. */ export type EventFor> = string extends TName ? OrihonEvent, TName, TTarget> : TName extends keyof TEvents ? OrihonEvent : OrihonEvent, TName, TTarget>; export type EventHandler = (event: T) => void; export declare class Evented { #private; on(type: K, handler: EventHandler, this>>): this; once(type: K, handler: EventHandler, this>>): this; off(): this; off(type: K, handler?: EventHandler, this>>): this; listens(type: string, propagate?: boolean): boolean; addEventParent(parent: Evented): this; removeEventParent(parent: Evented): this; emit = Record>(type: string, payload?: T, propagate?: boolean): this; } export {}; //# sourceMappingURL=events.d.ts.map