import { AbstractProcess } from "../abstract/AbstractProcess.js";
interface ProgressOptions {
    total: number;
    label?: string;
    showPercentage?: boolean;
    showEta?: boolean;
    updateInterval?: number;
    formatFn?: (progress: ProgressState) => string;
}
interface ProgressState {
    completed: number;
    total: number;
    percentage: number;
    elapsed: number;
    eta: number | null;
    rate: number;
    label: string;
}
export declare class ProgressReporter extends AbstractProcess {
    private total;
    private completed;
    private label;
    private showPercentage;
    private showEta;
    private updateInterval;
    private formatFn?;
    private startTime;
    private lastUpdateTime;
    private lastReportedPercentage;
    private isRunning;
    constructor(options: ProgressOptions);
    start(): void;
    increment(amount?: number): void;
    setCompleted(value: number): void;
    finish(): void;
    cancel(): void;
    getState(): ProgressState;
    getPercentage(): number;
    getElapsed(): number;
    private maybeReport;
    private report;
    private formatProgress;
    private formatDuration;
}
export declare function createFileProgress(fileCount: number, label?: string): ProgressReporter;
export declare function createBuildProgress(stepCount: number, label?: string): ProgressReporter;
export {};
//# sourceMappingURL=ProgressReporter.d.ts.map