import { Readable } from 'node:stream';
interface PackageOptions {
    skip_node_modules?: boolean;
    skip_symlinks?: boolean;
}
/**
 * Package a directory into a tar+gzip stream. The returned Readable can be
 * piped directly into an HTTP request body, avoiding the Node.js 2GB Buffer
 * cap that the buffered variant runs into for large components.
 *
 * @param onBytes - Optional callback invoked with the byte length of each raw
 *   tar chunk *before* gzip compression. Useful for tracking upload progress
 *   against an uncompressed-size total (e.g. from `getPackagedDirectorySize`).
 */
export declare function streamPackagedDirectory(directory: string, options?: PackageOptions, onBytes?: (n: number) => void): Readable;
/**
 * Walk `directory` and return the total uncompressed size of all files that
 * `streamPackagedDirectory` would include with the same options. Used by the
 * CLI to give the upload progress bar a realistic total. The uncompressed size
 * won't equal the gzipped wire size, but it gives the bar a steady trajectory:
 * the bar moves as bytes are sent and snaps to 100% when the upload finishes.
 */
export declare function getPackagedDirectorySize(directory: string, options?: PackageOptions): Promise<number>;
/**
 * Package a directory into a tar+gzip buffer. Retained for callers that need
 * an in-memory payload (small deploys, tests). For large directories prefer
 * `streamPackagedDirectory` to avoid the Buffer size ceiling.
 */
export declare function packageDirectory(directory: string, options?: PackageOptions): Promise<Buffer>;
export {};
