import { Readable } from 'node:stream'; import type { ShareRecord } from './share-types.js'; export interface ZipPlanFile { /** Path within the archive (POSIX, no leading /, may contain subdirs). */ zipPath: string; /** Absolute filesystem path of the source file. */ absolutePath: string; /** Modification time used for the entry header. */ mtimeMs: number; /** File size in bytes. */ size: number; } export interface ZipBuildOptions { files: ZipPlanFile[]; /** Whether to deflate a given entry. Defaults to a sensible heuristic. */ compress?: (f: ZipPlanFile) => boolean; } /** * Build a streaming ZIP archive as a Node Readable. Files that fail to read * are skipped and listed in a synthetic `_xopc_errors.txt` trailer entry. */ export declare function createZipStream(opts: ZipBuildOptions): Readable; export interface PlanDirectoryOpts { /** Sub-path inside the share to start from ('' for whole share). */ rootRelativePath: string; /** Maximum entries returned. */ maxFileCount: number; /** Maximum aggregate file size. */ maxFolderSize: number; /** Whether symlinks are followed (and re-validated against workspace). */ followSymlinks: boolean; /** Walk depth cap. */ maxDepth: number; } export declare function planDirectoryFiles(record: ShareRecord, opts: PlanDirectoryOpts): Promise;