/**
 * ZIP file format structures and constants
 * Based on ZIP specification: https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
 */
export declare const ZIP_CONSTANTS: {
    readonly LOCAL_FILE_HEADER_SIGNATURE: 67324752;
    readonly CENTRAL_DIRECTORY_SIGNATURE: 33639248;
    readonly END_OF_CENTRAL_DIRECTORY_SIGNATURE: 101010256;
    readonly ZIP64_END_OF_CENTRAL_DIRECTORY_SIGNATURE: 101075792;
    readonly ZIP64_END_OF_CENTRAL_DIRECTORY_LOCATOR_SIGNATURE: 117853008;
    readonly DATA_DESCRIPTOR_SIGNATURE: 134695760;
    readonly COMPRESSION_STORE: 0;
    readonly COMPRESSION_DEFLATE: 8;
    readonly FLAG_ENCRYPTED: 1;
    readonly FLAG_DATA_DESCRIPTOR: 8;
    readonly FLAG_UTF8: 2048;
    readonly ZIP64_LIMIT: 4294967295;
    readonly ZIP64_LIMIT_16: 65535;
    readonly ZIP64_EXTRA_FIELD_TYPE: 1;
    readonly VERSION_MADE_BY: 831;
    readonly VERSION_NEEDED_EXTRACT: 20;
    readonly VERSION_NEEDED_EXTRACT_ZIP64: 45;
};
export interface ZipEntry {
    name: string;
    data: ReadableStream<Uint8Array> | NodeJS.ReadableStream;
    size?: number;
    lastModified?: Date;
    comment?: string;
    permissions?: number;
    crc32?: number;
    compressedSize?: number;
    uncompressedSize?: number;
    preCompressed?: boolean;
}
/**
 * Fast-path entry for STORE compression with pre-calculated CRC32
 * Enables immediate streaming without buffering
 */
export interface FastPathStoreEntry extends ZipEntry {
    crc32: number;
    size: number;
    preCompressed?: false;
}
/**
 * Fast-path entry for pre-compressed DEFLATE data
 * Enables immediate streaming of already-compressed data
 */
export interface FastPathDeflateEntry extends ZipEntry {
    crc32: number;
    compressedSize: number;
    uncompressedSize: number;
    preCompressed: true;
}
/**
 * Type guard to check if entry is a fast-path STORE entry
 */
export declare function isFastPathStoreEntry(entry: ZipEntry): entry is FastPathStoreEntry;
/**
 * Type guard to check if entry is a fast-path DEFLATE entry
 */
export declare function isFastPathDeflateEntry(entry: ZipEntry): entry is FastPathDeflateEntry;
/**
 * Check if entry can use fast-path immediate streaming
 */
export declare function canUseFastPath(entry: ZipEntry, compressionMethod: 'store' | 'deflate'): boolean;
export interface LocalFileHeader {
    signature: number;
    versionNeeded: number;
    flags: number;
    compressionMethod: number;
    lastModTime: number;
    lastModDate: number;
    crc32: number;
    compressedSize: number;
    uncompressedSize: number;
    filenameLength: number;
    extraFieldLength: number;
    filename: Uint8Array;
    extraField: Uint8Array;
}
export interface CentralDirectoryHeader {
    signature: number;
    versionMadeBy: number;
    versionNeeded: number;
    flags: number;
    compressionMethod: number;
    lastModTime: number;
    lastModDate: number;
    crc32: number;
    compressedSize: number;
    uncompressedSize: number;
    filenameLength: number;
    extraFieldLength: number;
    commentLength: number;
    diskNumber: number;
    internalAttributes: number;
    externalAttributes: number;
    localHeaderOffset: number;
    filename: Uint8Array;
    extraField: Uint8Array;
    comment: Uint8Array;
}
export interface EndOfCentralDirectory {
    signature: number;
    diskNumber: number;
    centralDirDisk: number;
    centralDirRecords: number;
    totalRecords: number;
    centralDirSize: number;
    centralDirOffset: number;
    commentLength: number;
    comment: Uint8Array;
}
export interface Zip64EndOfCentralDirectory {
    signature: number;
    recordSize: bigint;
    versionMadeBy: number;
    versionNeeded: number;
    diskNumber: number;
    centralDirDisk: number;
    centralDirRecords: bigint;
    totalRecords: bigint;
    centralDirSize: bigint;
    centralDirOffset: bigint;
}
export interface Zip64EndOfCentralDirectoryLocator {
    signature: number;
    zip64EndDisk: number;
    zip64EndOffset: bigint;
    totalDisks: number;
}
export interface DataDescriptor {
    signature?: number;
    crc32: number;
    compressedSize: number;
    uncompressedSize: number;
}
export interface Zip64DataDescriptor {
    signature?: number;
    crc32: number;
    compressedSize: bigint;
    uncompressedSize: bigint;
}
export interface Zip64ExtraField {
    type: number;
    size: number;
    uncompressedSize?: bigint;
    compressedSize?: bigint;
    localHeaderOffset?: bigint;
    diskNumber?: number;
}
/**
 * Converts a Date to DOS date/time format
 */
export declare function dateToDosDateTime(date: Date): {
    date: number;
    time: number;
};
/**
 * Determines if ZIP64 format is needed based on sizes
 */
export declare function needsZip64(uncompressedSize: number | bigint, compressedSize: number | bigint, localHeaderOffset: number | bigint, centralDirSize: number | bigint, entryCount: number): boolean;
/**
 * Creates a ZIP64 extra field
 */
export declare function createZip64ExtraField(uncompressedSize?: bigint, compressedSize?: bigint, localHeaderOffset?: bigint, diskNumber?: number): Uint8Array;
/**
 * Constants for Unix file permissions and types
 */
export declare const UNIX_FILE_TYPES: {
    readonly REGULAR_FILE: 32768;
    readonly DIRECTORY: 16384;
    readonly SYMBOLIC_LINK: 40960;
};
export declare const DEFAULT_PERMISSIONS: {
    readonly FILE: 420;
    readonly DIRECTORY: 493;
    readonly EXECUTABLE: 493;
};
/**
 * Creates external attributes for ZIP entry with Unix permissions
 */
export declare function createExternalAttributes(permissions?: number, isDirectory?: boolean): number;
//# sourceMappingURL=zip-format.d.ts.map