import { MFrameworkAdapterKey } from './adapters';
export interface MFrameworkEventMap {
    'app:ready': {
        context: unknown;
    };
    'app:error': {
        error: unknown;
    };
    'adapter:registered': {
        key: MFrameworkAdapterKey;
    };
}
export type MFrameworkEventKey = keyof MFrameworkEventMap;
export type MFrameworkEventHandler<K extends MFrameworkEventKey> = (payload: MFrameworkEventMap[K]) => void | Promise<void>;
export interface MFrameworkEventBus {
    on<K extends MFrameworkEventKey>(event: K, handler: MFrameworkEventHandler<K>): void;
    off<K extends MFrameworkEventKey>(event: K, handler: MFrameworkEventHandler<K>): void;
    emit<K extends MFrameworkEventKey>(event: K, payload: MFrameworkEventMap[K]): Promise<void>;
}
export declare function createEventBus(): MFrameworkEventBus;
