type Events = Record<string, ((...args: any) => void)[]>;
export type IEventBus = {
    on: <T extends keyof Events>(eventName: T, handler: (...args: any) => void) => void;
    emit: <T extends keyof Events>(eventName: T, ...args: any) => void;
    off: <T extends keyof Events>(eventName: T, handler: (...args: any) => void) => void;
};
export declare class EventBus implements IEventBus {
    events: Events;
    constructor();
    on<T extends keyof Events>(eventName: T, handler: (...args: any) => void): void;
    emit<T extends keyof Events>(eventName: T, ...args: any): void;
    off<T extends keyof Events>(eventName: T, handler: (...args: any) => void): void;
}
export declare function useEventBus(vm: any): void;
export {};
