import { EventEmitter } from 'events';
import { type ParserOptions } from './stream-parser';
import Debug from '../debug';
import Message from '../message';
import { TokenHandler } from './handler';
/**
 * Parses the tokens of a message and dispatches them to a `TokenHandler`.
 *
 * Emits `'end'` once all tokens were handled, or `'error'` if parsing or
 * handling a token failed.
 */
export declare class Parser extends EventEmitter {
    debug: Debug;
    options: ParserOptions;
    paused: boolean;
    onResume: (() => void) | undefined;
    constructor(message: Message | Iterable<Buffer>, debug: Debug, handler: TokenHandler, options: ParserOptions);
    run(message: Message | Iterable<Buffer>, handler: TokenHandler): Promise<void>;
    on: (((event: 'end', listener: () => void) => this) & ((event: string | symbol, listener: (...args: any[]) => void) => this));
    pause(): void;
    resume(): void;
}
