import { Logger } from './logger';
export type ProgressStage = 'preparing' | 'submitting' | 'confirming' | 'verifying' | 'completed' | 'failed';
export interface ProgressData {
    stage: ProgressStage;
    message: string;
    progressPercent: number;
    details?: Record<string, any>;
}
export type ProgressCallback = (data: ProgressData) => void;
export interface ProgressReporterOptions {
    module?: string;
    callback?: ProgressCallback;
    logger?: Logger;
    logProgress?: boolean;
    minPercent?: number;
    maxPercent?: number;
}
/**
 * ProgressReporter is a singleton class that reports progress of a task.
 * Can be used in a generalized fashion.
 */
export declare class ProgressReporter {
    private static instance;
    private module;
    private callback?;
    private logger;
    private logProgress;
    private minPercent;
    private maxPercent;
    private lastReportedPercent;
    private lastReportedTime;
    private throttleMs;
    constructor(options?: ProgressReporterOptions);
    static getInstance(options?: ProgressReporterOptions): ProgressReporter;
    setCallback(callback: ProgressCallback): void;
    setModule(module: string): void;
    setLogger(logger: Logger): void;
    setMinPercent(minPercent: number): void;
    setMaxPercent(maxPercent: number): void;
    createSubProgress(options: {
        minPercent: number;
        maxPercent: number;
        logPrefix?: string;
    }): ProgressReporter;
    report(data: ProgressData): void;
    private scalePercent;
    preparing(message: string, percent: number, details?: Record<string, any>): void;
    submitting(message: string, percent: number, details?: Record<string, any>): void;
    confirming(message: string, percent: number, details?: Record<string, any>): void;
    verifying(message: string, percent: number, details?: Record<string, any>): void;
    completed(message: string, details?: Record<string, any>): void;
    failed(message: string, details?: Record<string, any>): void;
}
//# sourceMappingURL=progress-reporter.d.ts.map