/**
 * Progress Tracker
 *
 * Real-time progress tracking with percentage, ETA estimation, and final summary.
 * Optimized for CLI workflows with throttled updates to prevent console spam.
 *
 * @module cli/helpers/progress-tracker
 */
import { Logger } from '../../utils/logger.js';
/**
 * Progress tracker options
 */
export interface ProgressOptions {
    total: number;
    updateFrequency?: number;
    showEta?: boolean;
    progressBarWidth?: number;
    logger?: Logger;
}
/**
 * Item status for progress tracking
 */
export type ItemStatus = 'success' | 'failure' | 'skip';
/**
 * Progress summary
 */
export interface ProgressSummary {
    total: number;
    completed: number;
    succeeded: number;
    failed: number;
    skipped: number;
    elapsed: number;
}
/**
 * Progress Tracker
 *
 * Tracks batch operation progress with:
 * - Real-time percentage updates
 * - ETA estimation (rolling average of last 10 items)
 * - Throttled console updates (every N items)
 * - Final summary (succeeded/failed/skipped counts)
 *
 * @example
 * ```typescript
 * const tracker = new ProgressTracker({ total: 127, updateFrequency: 5 });
 *
 * for (const project of projects) {
 *   try {
 *     await importProject(project);
 *     tracker.update(project.key, 'success');
 *   } catch (error) {
 *     tracker.update(project.key, 'failure');
 *   }
 * }
 *
 * tracker.finish();
 * // Output: ✅ Imported 125/127 projects (2 failed, 0 skipped) in 28s
 * ```
 */
export declare class ProgressTracker {
    private total;
    private updateFrequency;
    private showEta;
    private progressBarWidth;
    private logger;
    private completed;
    private succeeded;
    private failed;
    private skipped;
    private startTime;
    private lastUpdateTime;
    private itemTimestamps;
    private lastRenderedProgress;
    constructor(options: ProgressOptions);
    /**
     * Update progress with item result
     *
     * @param item - Item identifier (e.g., project key)
     * @param status - Item status (success, failure, skip)
     */
    update(_item: string, status: ItemStatus): void;
    /**
     * Render progress bar to console
     */
    private render;
    /**
     * Generate ASCII progress bar
     *
     * @param percentage - Completion percentage (0-100)
     * @returns ASCII progress bar string
     */
    private getProgressBar;
    /**
     * Calculate ETA using rolling average
     *
     * @returns ETA string (e.g., "~2m remaining") or empty if not enough data
     */
    private getEta;
    /**
     * Finish tracking and show final summary
     */
    finish(): void;
    /**
     * Cancel tracking (for use with cancelation)
     */
    cancel(): void;
    /**
     * Get current progress summary
     *
     * @returns Progress summary object
     */
    getSummary(): ProgressSummary;
    /**
     * Get current percentage (for testing)
     *
     * @returns Completion percentage (0-100)
     */
    getPercentage(): number;
}
//# sourceMappingURL=progress-tracker.d.ts.map