import EventEmitter from 'events';
import Packet from './packet';
import ReadableStream = NodeJS.ReadableStream;
export declare class ChecksumError extends Error {
    packet: Packet;
    constructor(packet: Packet);
}
export declare class MagicError extends Error {
    packet: Packet;
    constructor(packet: Packet);
}
/**
 * enforce EventEmitter typing
 */
interface IEmissions {
    end: () => void;
    error: (data: Error) => void;
    packet: (packet: Packet) => void;
}
export default class PacketReader extends EventEmitter {
    private stream;
    static ChecksumError: typeof ChecksumError;
    static MagicError: typeof MagicError;
    private inBody;
    private buffer?;
    private packet?;
    constructor(stream: ReadableStream);
    on: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this;
    off: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this;
    once: <K extends keyof IEmissions>(event: K, listener: IEmissions[K]) => this;
    emit: <K extends keyof IEmissions>(event: K, ...args: Parameters<IEmissions[K]>) => boolean;
    private _tryRead;
    private _appendChunk;
    private _consume;
}
export {};
//# sourceMappingURL=packetreader.d.ts.map