/**
 * Progress indicators for long-running operations
 *
 * Provides simple text-based progress bars and spinners
 * for user feedback during long operations.
 */
/**
 * Progress bar configuration
 */
export interface ProgressOptions {
    /** Total steps/units to complete */
    total: number;
    /** Current progress */
    current?: number;
    /** Progress bar width (in characters) */
    width?: number;
    /** Custom label */
    label?: string;
    /** Show percentage */
    showPercentage?: boolean;
    /** Show ETA */
    showETA?: boolean;
}
/**
 * Progress tracker
 */
export declare class Progress {
    #private;
    constructor(options: ProgressOptions);
    /**
     * Get current progress
     */
    get current(): number;
    /**
     * Get start time
     */
    get startTime(): number;
    /**
     * Get estimated time to completion
     */
    get eta(): string | null;
    /**
     * Update progress
     */
    update(increment?: number): void;
    /**
     * Set current progress
     */
    set(value: number): void;
    /**
     * Increment progress by 1
     */
    tick(): void;
    /**
     * Render progress bar
     */
    private render;
    /**
     * Calculate estimated time to completion
     */
    private calculateETA;
    /**
     * Complete the progress bar
     */
    complete(): void;
}
/**
 * Simple spinner for operations without known progress
 */
export declare class Spinner {
    #private;
    constructor(message: string);
    /**
     * Get spinner message
     */
    get message(): string;
    /**
     * Check if spinner is active
     */
    get isActive(): boolean;
    /**
     * Get frames
     */
    get frames(): string[];
    /**
     * Get current frame index
     */
    get frameIndex(): number;
    /**
     * Get interval ID
     */
    get intervalId(): NodeJS.Timeout | undefined;
    /**
     * Start the spinner
     */
    start(): void;
    /**
     * Update the spinner message
     */
    update(message: string): void;
    /**
     * Stop the spinner with success message
     */
    succeed(message?: string): void;
    /**
     * Stop the spinner with error message
     */
    fail(message?: string): void;
    /**
     * Stop the spinner
     */
    private stop;
}
/**
 * Multi-progress for tracking multiple operations
 *
 * WARNING: This implementation has a known limitation with concurrent updates.
 * Since each Progress bar writes to stdout using \r (carriage return), multiple
 * bars updating concurrently will overwrite each other's visual output.
 *
 * Current Behavior:
 * - Each bar renders independently with \r to update its line
 * - Concurrent updates result in visual corruption/overwrites
 *
 * Suitable Use Cases:
 * - Sequential progress bars (one completes before next starts)
 * - Non-concurrent updates (manual coordination of update timing)
 * - Debug/development scenarios where visual corruption is acceptable
 *
 * Not Suitable For:
 * - Parallel operations with simultaneous progress updates
 * - Production environments requiring clean multi-line progress
 *
 * For proper multi-progress rendering, consider using a dedicated library
 * like 'cli-progress' or 'multi-progress' which handles line coordination.
 */
export declare class MultiProgress {
    #private;
    /**
     * Create or get a progress bar
     */
    create(id: string, options: ProgressOptions): Progress;
    /**
     * Update a progress bar
     */
    update(id: string, increment?: number): void;
    /**
     * Complete a progress bar
     */
    complete(id: string): void;
    /**
     * Remove a progress bar
     */
    remove(id: string): void;
}
/**
 * Format duration in milliseconds to human-readable string
 */
export declare function formatDuration(ms: number): string;
/**
 * Create a progress bar
 */
export declare function createProgress(options: ProgressOptions): Progress;
/**
 * Create a spinner
 */
export declare function createSpinner(message: string): Spinner;
/**
 * Create a multi-progress tracker
 */
export declare function createMultiProgress(): MultiProgress;
//# sourceMappingURL=progress.d.ts.map