import { Control } from '@babylonjs/gui';
import { EventMap } from './eventMap';
export type Event<K extends keyof EventMap> = {
    key: K;
    observableName: EventMap[K]['observableName'];
    eventData: EventMap[K]['defaultInit'];
};
declare function fireEventFn<K extends keyof EventMap>(control: Control, event: Event<K>): void;
type CreateEventFn = (k: keyof EventMap, c: Control, i: EventMap[keyof EventMap]['defaultInit']) => Event<keyof EventMap>;
type CreateEventObject = {
    [K in keyof EventMap]: (c: Control, i?: EventMap[K]['defaultInit']) => Event<K>;
};
type fireEventFn = (c: Control, e: Event<keyof EventMap>) => void;
type fireEventObject = {
    [K in keyof EventMap]: (c: Control, i?: EventMap[K]['defaultInit']) => void;
};
export declare const createEvent: CreateEventFn & CreateEventObject;
export declare const fireEvent: fireEventFn & fireEventObject;
export {};
