import type { ProgressNotification } from '@modelcontextprotocol/sdk/types.js';
import type { ApifyClient } from '../apify_client.js';
export declare const PROGRESS_NOTIFICATION_INTERVAL_MS = 3000;
/**
 * Leads with the run status so clients can see lifecycle transitions
 * (RUNNING → SUCCEEDED) and never miss a terminal flip behind a stale statusMessage.
 * At terminal status the message is only appended when the actor explicitly marked it
 * terminal — otherwise it's an in-progress message left over from before the flip.
 */
export declare function formatRunStatusMessage(actorName: string, run: {
    status: string;
    statusMessage?: string | null;
    isStatusMessageTerminal?: boolean | null;
}): string;
export declare class ProgressTracker {
    private progressToken?;
    private sendNotification?;
    private currentProgress;
    private intervalId?;
    private stopped;
    private lastEmittedMessage?;
    private taskId?;
    private onStatusMessage?;
    constructor(options: {
        progressToken?: string | number;
        sendNotification?: (notification: ProgressNotification) => Promise<void>;
        taskId?: string;
        onStatusMessage?: (message: string) => Promise<void>;
    });
    updateProgress(message?: string): Promise<void>;
    startActorRunUpdates(runId: string, apifyClient: ApifyClient, actorName: string, initial?: {
        status?: string;
        statusMessage?: string | null;
    }): void;
    stop(): void;
}
export declare function createProgressTracker(progressToken: string | number | undefined, sendNotification: ((notification: ProgressNotification) => Promise<void>) | undefined, taskId?: string, onStatusMessage?: (message: string) => Promise<void>): ProgressTracker | null;
//# sourceMappingURL=progress.d.ts.map