import type { LinkPreviewProgressEvent } from "@steipete/summarize-core/content";
import type { ThemeRenderer } from "../theme.js";
export type TranscriptProgressState = {
    phase: "idle" | "download" | "whisper";
    service: "youtube" | "podcast" | "generic";
    downloadedBytes: number;
    totalBytes: number | null;
    startedAtMs: number | null;
    whisperProviderHint: string;
    mediaKind: "video" | "audio" | "unknown";
    whisperModelId: string | null;
    whisperProcessedSeconds: number | null;
    whisperTotalSeconds: number | null;
    whisperPartIndex: number | null;
    whisperParts: number | null;
};
export declare function createTranscriptProgressState(): TranscriptProgressState;
export declare function applyTranscriptProgressEvent(state: TranscriptProgressState, event: LinkPreviewProgressEvent, nowMs: number): void;
export declare function renderTranscriptSimple(state: TranscriptProgressState, theme?: ThemeRenderer | null): string | null;
export declare function renderTranscriptLine(state: TranscriptProgressState, { nowMs, theme, }: {
    nowMs: number;
    theme?: ThemeRenderer | null;
}): string | null;
export declare function resolveTranscriptOscPayload(state: TranscriptProgressState): {
    label: string;
    percent: number | null;
} | null;
