/**
 * This class is used for TypeSafe events.
 * @internal
 */
export declare class TypedEventEmitter<TEvents extends Record<string, any>> {
    private emitter;
    /**
     * @internal
     */
    emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArg: TEvents[TEventName]): void;
    /**
     * @internal
     */
    on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void;
    /**
     * @internal
     */
    off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: (...eventArg: TEvents[TEventName]) => void): void;
}
