import * as stream from 'stream'; import { Transform, TransformCallback } from 'stream'; /** * Options for MD5Stream constructor */ interface MD5StreamOptions { /** * Custom add32 function for compatibility testing */ add32?: (x: number, y: number) => number; } /** * MD5Stream - Node.js Transform stream for computing MD5 hashes * * Usage example: * ```ts * import fs from 'fs'; * import { MD5Stream } from 'pure-md5'; * * const stream = new MD5Stream(); * stream.on('md5', (result) => { * console.log('MD5:', result.digest); * console.log('Bytes:', result.bytesProcessed); * }); * * fs.createReadStream('file.txt').pipe(stream); * ``` */ declare class MD5Stream extends Transform { private state; private add32; private readonly initialMD5State; private readonly bufferCapacity; private buffer; /** * Create new MD5Stream instance * @param options - Stream options */ constructor(options?: MD5StreamOptions); /** * Process data chunk and update MD5 state * @param chunk - Data chunk to process * @param callback - Callback to signal chunk processing complete */ _transform(chunk: Buffer, _encoding: BufferEncoding, callback: TransformCallback): void; /** * Process the current buffer as a complete block */ private _processBufferBlock; /** * Finalize MD5 computation and emit result * @param callback - Callback to signal flush complete */ _flush(callback: TransformCallback): void; /** * Get current MD5 state (for debugging/testing) * @returns Current internal state */ getCurrentState(): { state: number[]; bytesProcessed: number; }; /** * Get bytes processed so far * @returns Number of bytes processed */ getBytesProcessed(): number; /** * Reset the stream state * Note: This resets the internal MD5 state but not the stream's ended state. * For full stream reset, use destroy() and create a new instance. */ reset(): void; /** * Static method to create MD5Stream from existing readable stream * @param source - Source readable stream * @param options - MD5Stream options * @returns Object containing stream and result promise */ static fromStream(source: stream.Readable, options?: MD5StreamOptions): { stream: MD5Stream; result: Promise; }; } /** * Factory function to create MD5Stream instance * @param options - MD5Stream options * @returns New MD5Stream instance */ declare function createMD5Stream(options?: MD5StreamOptions): MD5Stream; /** * Result type for MD5 computation */ interface MD5Result { /** * MD5 hash as hex string */ digest: string; /** * Number of bytes processed */ bytesProcessed: number; } /** * Pipe through MD5 stream helper * @param this - MD5Stream instance * @param source - Source readable stream to process * @returns Promise with MD5 result */ declare function pipeThroughMD5(this: MD5Stream, source: stream.Readable): Promise; /** * Static method to create MD5Stream from existing readable stream * @param source - Source readable stream * @param options - MD5Stream options * @returns Object containing stream and result promise */ declare function fromStream(source: stream.Readable, options?: MD5StreamOptions): { stream: MD5Stream; result: Promise; }; export { type MD5Result, MD5Stream, createMD5Stream, fromStream, pipeThroughMD5 };