type EmitEventFn<TEvents extends {
    [k: string]: any[];
}, K extends keyof TEvents> = (key: K, ...args: TEvents[K]) => void;
/**
 * A simple helper that allows for the delayed registering of a listener, to avoid dependency cycles
 */
export declare class CallbackHook<TEvents extends {
    [k: string]: any[];
}> {
    #private;
    emit<T extends keyof TEvents>(key: T, ...args: TEvents[T]): void;
    listen(fn: EmitEventFn<TEvents, keyof TEvents>): void;
}
export {};
//# sourceMappingURL=callback-hook.d.ts.map