export type StartTimerOptions = string | {
    name: string;
    writeStream?: NodeJS.WriteStream;
    /** @default 1 */
    /** @example sample 1 over 10 for 10% progress report */
    sampleOver?: number;
    /** @default false */
    estimateTime?: boolean;
    /** @default 5000 */
    sampleTimeInterval?: number;
};
export type SetProgressOptions = {
    totalTick: number;
    /** @default 0 */
    initialTick?: number;
    /** @default previous value */
    sampleOver?: number;
    /** @default false */
    estimateTime?: boolean;
    /** @default previous value */
    sampleTimeInterval?: number;
};
export type SetProgress = ((totalTick: number, initialTick?: number, sampleOver?: number) => void) & ((options: SetProgressOptions) => void);
export type Timer = ReturnType<typeof startTimer>;
/**
 * @description create timer with progress report and finish-time estimation
 * */
export declare function startTimer(options: StartTimerOptions): {
    end: () => void;
    next(newName: string): void;
    sampleTimeInterval: number;
    progress: (msg: string) => void;
    setProgress: SetProgress;
    setEstimateProgress: (totalTick: number, sampleRate?: number) => void;
    tick: (step?: number) => void;
};
export declare function defaultTimerWriteStream(): NodeJS.WriteStream;
