import EventEmitter from 'events';
import { FileHandle } from 'node:fs/promises';
import { ReadStream, WriteStream } from 'node:fs';
import DuplexPair from 'duplexpair';
import { PcapParser } from './PcapParser';
import { IPcapPacketInfo } from './interfaces/IPcapPacketInfo';
export interface IPcapReaderOptions {
    filename: string;
    watch?: boolean;
    chunkSize?: number;
    onPacket?: (pcapPacketInfo: IPcapPacketInfo) => Promise<void> | void;
    onStart?: () => Promise<void> | void;
    onStop?: () => Promise<void> | void;
    onDone?: () => Promise<void> | void;
    onError?: (err: Error) => void;
}
export declare class PcapReader extends EventEmitter {
    protected readonly filename: string;
    protected readonly watch: boolean;
    protected readonly chunkSize: number;
    protected duplexPair: DuplexPair;
    protected parser: PcapParser;
    protected index: number;
    protected offset: number;
    protected readDone: boolean;
    protected readBufferFileHandle: FileHandle | null;
    protected onPacket?: (pcapPacketInfo: IPcapPacketInfo) => Promise<void> | void;
    protected onStart?: () => Promise<void> | void;
    protected onStop?: () => Promise<void> | void;
    protected onDone?: () => Promise<void> | void;
    protected onError?: (err: Error) => void;
    protected paused: boolean;
    protected get readStream(): ReadStream;
    protected get writeStream(): WriteStream;
    constructor(options: IPcapReaderOptions);
    /**
     * Pause read
     * @protected
     */
    protected pauseRead(): void;
    /**
     * Resume read
     * @protected
     */
    protected resumeRead(): void;
    /**
     * Initialize reader
     * @protected
     */
    protected initReader(): void;
    /**
     * Reset reader
     * @protected
     */
    protected reset(): Promise<void>;
    /**
     * Initialize read packet file handle
     * @protected
     */
    protected initReadPacketFileHandle(): Promise<FileHandle>;
    /**
     * Initialize read buffer file handle
     * @protected
     */
    protected initReadBufferFileHandle(): Promise<FileHandle>;
    /**
     * Read file buffer
     * @protected
     */
    protected readBuffer(): Promise<boolean>;
    /**
     * Read file continually
     * @protected
     */
    protected continualRead(): void;
    /**
     * Read the file straight
     * @protected
     */
    protected straightRead(): void;
    /**
     * Read packet data by record's offset and record's length
     * @param offset
     * @param length
     */
    readPacket(offset: number, length: number): Promise<Buffer>;
    /**
     * Start reading pcap
     */
    start(): Promise<void>;
    /**
     * Stop reading pcap
     */
    stop(): Promise<void>;
    /**
     * Close pcap reader
     */
    close(): Promise<void>;
    on(eventName: 'packet', listener: (pcapPacketInfo: IPcapPacketInfo) => void): this;
    on(eventName: 'done', listener: (...args: any[]) => void): this;
    on(eventName: 'start', listener: (...args: any[]) => void): this;
    on(eventName: 'stop', listener: (...args: any[]) => void): this;
    on(eventName: 'close', listener: (...args: any[]) => void): this;
    on(eventName: 'error', listener: (error: Error) => void): this;
    once(eventName: 'packet', listener: (pcapPacketInfo: IPcapPacketInfo) => void): this;
    once(eventName: 'done', listener: (...args: any[]) => void): this;
    once(eventName: 'start', listener: (...args: any[]) => void): this;
    once(eventName: 'stop', listener: (...args: any[]) => void): this;
    once(eventName: 'close', listener: (...args: any[]) => void): this;
    once(eventName: 'error', listener: (error: Error) => void): this;
}
//# sourceMappingURL=PcapReader.d.ts.map