export type ArchiveFormat = "zip" | "tar" | "tar.gz";
export interface ArchivePathCandidate {
    archivePath: string;
    subPath: string;
}
export interface ArchiveNode {
    path: string;
    isDirectory: boolean;
    size: number;
    mtimeMs?: number;
}
export interface ArchiveDirectoryEntry extends ArchiveNode {
    name: string;
}
export interface ExtractedArchiveFile extends ArchiveNode {
    bytes: Uint8Array;
}
interface TarStorage {
    type: "tar";
    file: File;
}
interface ZipStorage {
    type: "zip";
    archivePath: string;
    compressedSize: number;
    compression: number;
    flags: number;
    localHeaderOffset: number;
}
type EntryStorage = TarStorage | ZipStorage;
interface ArchiveIndexEntry extends ArchiveNode {
    storage?: EntryStorage;
}
export declare function formatArchiveEntryLines(entries: readonly ArchiveDirectoryEntry[]): string[];
export declare function sniffArchiveFormat(bytes: Uint8Array): ArchiveFormat | undefined;
export declare function parseArchivePathCandidates(filePath: string): ArchivePathCandidate[];
export declare class ArchiveReader {
    #private;
    readonly format: ArchiveFormat;
    constructor(format: ArchiveFormat, entries: ArchiveIndexEntry[]);
    getNode(subPath?: string): ArchiveNode | undefined;
    listDirectory(subPath?: string): ArchiveDirectoryEntry[];
    readFile(subPath: string): Promise<ExtractedArchiveFile>;
}
export declare function openArchive(filePath: string): Promise<ArchiveReader>;
export declare function listArchiveRoot(bytes: Uint8Array, format: ArchiveFormat, opts?: {
    limit?: number;
}): Promise<string>;
export {};
