export type ProgressPhase = 'resolve' | 'download' | 'extract' | 'link';
export interface ProgressEvent {
    phase: ProgressPhase;
    current: number;
    total: number;
    /** Package name being processed, surfaced in the right-hand side of the bar. */
    name?: string;
}
export interface ProgressReporter {
    /** Called for each step within a phase. */
    update(event: ProgressEvent): void;
    /** Called once when a phase begins; lets the reporter print a header line. */
    beginPhase(phase: ProgressPhase, total: number): void;
    /** Called once when a phase completes; clears the inline progress bar. */
    endPhase(phase: ProgressPhase): void;
}
/**
 * Make a progress reporter that auto-targets `process.stderr`.
 * - `enabled=false` → silent.
 * - stderr is not a TTY → fall back to one line per phase (begin + end).
 * - stderr is a TTY → live single-line progress bar (\r-updated, 30fps).
 */
export declare function makeProgressReporter(opts?: {
    enabled?: boolean;
    stream?: NodeJS.WriteStream;
}): ProgressReporter;
