type EventCallback<T = any> = (data: T) => void;
export interface AcceptEvent {
    requestId: string;
    acceptedText: string;
}
export interface DeclineEvent {
    requestId: string;
    suggestionText: string;
    reason: string;
    hitCount: number;
    allSuggestions: string[];
}
export interface IgnoreEvent {
    requestId: string;
    suggestionText: string;
    allSuggestions: string[];
}
export interface CompletionEvents {
    'completion:accept': AcceptEvent;
    'completion:decline': DeclineEvent;
    'completion:ignore': IgnoreEvent;
    'completion:error': Error;
}
export declare class GhostEventEmitter {
    private events;
    on<K extends keyof CompletionEvents>(event: K, callback: EventCallback<CompletionEvents[K]>): void;
    off<K extends keyof CompletionEvents>(event: K, callback: EventCallback<CompletionEvents[K]>): void;
    emit<K extends keyof CompletionEvents>(event: K, data: CompletionEvents[K]): void;
}
export {};
//# sourceMappingURL=events.d.ts.map