/**
 * ProgressTracker - Real-time progress tracking with ETA calculation
 *
 * Features:
 * - ASCII progress bar (30 characters)
 * - Linear ETA extrapolation
 * - Elapsed time tracking
 * - Project-level status display (✅ ❌ ⏳)
 * - Configurable update frequency
 *
 * @module core/progress/progress-tracker
 */
import type { Logger } from '../../utils/logger.js';
/**
 * Item status types
 */
export type ItemStatus = 'pending' | 'success' | 'error';
/**
 * Progress tracker options
 */
export interface ProgressTrackerOptions {
    /** Total number of items to process */
    total: number;
    /** Label for the operation (e.g., "Importing projects") */
    label: string;
    /** Show ETA calculation */
    showEta?: boolean;
    /** Update frequency (update every N items, default: 5) */
    updateFrequency?: number;
    /** Logger instance */
    logger?: Logger;
}
/**
 * Item with status
 */
interface TrackedItem {
    name: string;
    status: ItemStatus;
    timestamp: number;
}
/**
 * ProgressTracker - Real-time progress tracking with ASCII progress bar and ETA
 *
 * @example
 * ```typescript
 * const tracker = new ProgressTracker({
 *   total: 127,
 *   label: 'Importing projects',
 *   showEta: true,
 *   updateFrequency: 5
 * });
 *
 * for (const project of projects) {
 *   await importProject(project);
 *   tracker.update(project.key, 'success');
 * }
 *
 * tracker.finish(120, 5, 2);
 * ```
 */
export declare class ProgressTracker {
    private total;
    private label;
    private showEta;
    private updateFrequency;
    private logger;
    private items;
    private startTime;
    private lastUpdateCount;
    constructor(options: ProgressTrackerOptions);
    /**
     * Update progress for a specific item
     *
     * @param itemName Item identifier (e.g., project key)
     * @param status Item status (pending, success, error)
     */
    update(itemName: string, status: ItemStatus): void;
    /**
     * Finish progress tracking and show final summary
     *
     * @param succeeded Count of successful items
     * @param failed Count of failed items
     * @param skipped Count of skipped items
     */
    finish(succeeded: number, failed: number, skipped: number, options?: {
        errorLogFile?: string;
        showErrorDetails?: boolean;
    }): void;
    /**
     * Render progress bar to console
     */
    private render;
    /**
     * Render ASCII progress bar
     *
     * @param percentage Completion percentage (0-100)
     * @returns ASCII progress bar (30 characters)
     *
     * @example
     * renderProgressBar(0)   => "[>                             ]"
     * renderProgressBar(37)  => "[==========>                   ]"
     * renderProgressBar(100) => "[==============================]"
     */
    renderProgressBar(percentage: number): string;
    /**
     * Get elapsed time in human-readable format
     *
     * @returns Elapsed time string (e.g., "2m 34s elapsed", "45s elapsed")
     */
    getElapsedTime(): string;
    /**
     * Get estimated time remaining (ETA) using linear extrapolation
     *
     * Formula: ETA = (total - completed) * (elapsed / completed)
     *
     * @returns ETA string (e.g., ", ~2m remaining", ", ~45s remaining")
     */
    getEta(): string;
    /**
     * Get count of completed items (success + error)
     */
    private getCompletedCount;
    /**
     * Get items by status
     */
    getItemsByStatus(status: ItemStatus): TrackedItem[];
    /**
     * Get current progress statistics
     */
    getStats(): {
        total: number;
        completed: number;
        succeeded: number;
        failed: number;
        pending: number;
        percentage: number;
        elapsedMs: number;
        etaMs: number | null;
    };
}
export {};
//# sourceMappingURL=progress-tracker.d.ts.map