import { SerialEventMap } from '../types/index.js';
/**
 * Type-safe event emitter base class for serial device events.
 *
 * All event names and listener signatures are derived from the
 * {@link SerialEventMap} generic type, providing full IDE autocomplete
 * and compile-time safety.
 *
 * @typeParam T - The parsed data type, forwarded to `SerialEventMap<T>`.
 */
export declare class SerialEventEmitter<T> {
    private listeners;
    /**
     * Registers a listener for the given event.
     *
     * @param event - The event name (constrained to `SerialEventMap` keys).
     * @param listener - The callback to invoke when the event fires.
     * @returns `this` for method chaining.
     */
    on<K extends keyof SerialEventMap<T>>(event: K, listener: SerialEventMap<T>[K]): this;
    /**
     * Removes a previously registered listener.
     *
     * @param event - The event name.
     * @param listener - The exact listener reference to remove.
     * @returns `this` for method chaining.
     */
    off<K extends keyof SerialEventMap<T>>(event: K, listener: SerialEventMap<T>[K]): this;
    /**
     * Emits an event, invoking all registered listeners synchronously.
     *
     * @param event - The event name.
     * @param args - Arguments passed to each listener (type-inferred from `SerialEventMap`).
     * @returns `true` if any listeners were invoked, `false` otherwise.
     */
    emit<K extends keyof SerialEventMap<T>>(event: K, ...args: Parameters<SerialEventMap<T>[K]>): boolean;
}
