interface EventMap {
    readable: (data: string) => void;
    error: (error: Error) => void;
}
type EventCallback<T extends keyof EventMap> = EventMap[T];
interface IObserver {
    on<T extends keyof EventMap>(event: T, callback: EventCallback<T>): void;
    off<T extends keyof EventMap>(event: T, callback: EventCallback<T>): void;
    once<T extends keyof EventMap>(event: T, callback: EventCallback<T>): void;
    emit<T extends keyof EventMap>(event: T, ...args: Parameters<EventCallback<T>>): void;
}
declare class EventObserver implements IObserver {
    private events;
    constructor();
    on<T extends keyof EventMap>(event: T, callback: EventCallback<T>): void;
    once<T extends keyof EventMap>(event: T, callback: EventCallback<T>): void;
    off<T extends keyof EventMap>(event: T, callback: EventCallback<T>): void;
    emit<T extends keyof EventMap>(event: T, ...args: Parameters<EventCallback<T>>): void;
}
declare class Parser {
    private observer;
    constructor();
    on<T extends keyof EventMap>(event: T, callback: EventCallback<T>): void;
    once<T extends keyof EventMap>(event: T, callback: EventCallback<T>): void;
    parse(data: string): void;
    triggerError(error: Error): void;
}
declare const parser: Parser;
