import type { IScopedLogger } from '../index.js';
export interface PlatformInfo {
    readonly platform: NodeJS.Platform;
    readonly arch: NodeJS.Architecture;
}
export declare function getPlatformInfo(): PlatformInfo;
export declare function buildBinaryPath(dataDir: string, name: string, platform?: string): string;
/** Check if a binary exists in PATH */
export declare function findInPath(name: string): string | null;
export interface DownloadOptions {
    readonly name: string;
    readonly url: string;
    readonly targetDir: string;
    readonly targetName: string;
    readonly logger: IScopedLogger;
    readonly isArchive?: boolean;
    readonly archiveFormat?: 'zip' | 'tar.gz' | 'tar.xz';
    /** Relative path within archive to the binary (e.g., 'ffmpeg-6.1/bin/ffmpeg') */
    readonly archiveInnerPath?: string;
}
/**
 * Download a binary to the target directory.
 * Handles archives (zip, tar.gz, tar.xz) and raw binaries.
 */
export declare function downloadBinary(opts: DownloadOptions): Promise<string>;
/**
 * Ensure a binary is available. Checks:
 * 1. Target path (already downloaded)
 * 2. System PATH
 * 3. Download from URL
 */
export declare function ensureBinary(opts: {
    readonly name: string;
    readonly targetDir: string;
    readonly downloadUrl: string;
    readonly logger: IScopedLogger;
    readonly isArchive?: boolean;
    readonly archiveFormat?: 'zip' | 'tar.gz' | 'tar.xz';
    readonly archiveInnerPath?: string;
}): Promise<string>;
//# sourceMappingURL=binary-downloader.d.ts.map