/**
 * Direct stream entry for immediate streaming without buffering
 * Used for fast-path entries with pre-calculated metadata
 */
import { FastPathStoreEntry, FastPathDeflateEntry } from './zip-format.js';
import { CompressionMethod } from './compression.js';
export declare enum DirectStreamState {
    PENDING = "pending",
    STREAMING = "streaming",
    COMPLETED = "completed",
    ERROR = "error"
}
export interface DirectStreamMetadata {
    crc32: number;
    compressedSize: number;
    uncompressedSize: number;
    localHeaderOffset: number;
    compressionMethod: CompressionMethod;
}
/**
 * DirectStreamEntry bypasses buffering for immediate streaming
 * when all required metadata is pre-calculated
 */
export declare class DirectStreamEntry {
    readonly entry: FastPathStoreEntry | FastPathDeflateEntry;
    readonly index: number;
    private state;
    private streamReader;
    private metadata;
    private error;
    constructor(entry: FastPathStoreEntry | FastPathDeflateEntry, index: number, compressionMethod: CompressionMethod);
    /**
     * Get current state
     */
    getState(): DirectStreamState;
    /**
     * Check if entry is ready for immediate streaming
     */
    isReadyForStreaming(): boolean;
    /**
     * Check if streaming is complete
     */
    isCompleted(): boolean;
    /**
     * Check if there was an error
     */
    hasError(): boolean;
    /**
     * Get error if any
     */
    getError(): Error | null;
    /**
     * Get pre-calculated metadata
     */
    getMetadata(): DirectStreamMetadata;
    /**
     * Set local header offset (called during writing)
     */
    setLocalHeaderOffset(offset: number): void;
    /**
     * Start streaming data directly from the source
     * Returns a readable stream that can be piped directly to output
     */
    startDirectStreaming(): ReadableStream<Uint8Array>;
    /**
     * Mark entry as completed
     */
    markCompleted(): void;
    /**
     * Mark entry as failed
     */
    markError(error: Error): void;
    /**
     * Pump data from input stream to output controller
     */
    private pumpStream;
    /**
     * Convert Node.js stream or ReadableStream to Web ReadableStream
     */
    private convertToWebStream;
    /**
     * Clean up resources
     */
    private cleanup;
}
//# sourceMappingURL=direct-stream-entry.d.ts.map