import type { ContentMessageItemImage, ContentMessageItemResource, ContentMessageItemText, RecordFrameToolInput, TimelineEventCategory, TimelineRecording } from "$/ai-utils";
interface TimelineCollectorOptions {
    framesDir: string;
    debug?: boolean;
    enableCdnUpload?: boolean;
}
interface CollectedFrame {
    image: ContentMessageItemImage;
    title: string;
    category: TimelineEventCategory;
    eventId: number;
    explicit: boolean;
    timestamp: number;
    fileName: string;
    imageUrl?: string;
    uploadPromise?: Promise<void>;
}
interface ProgressSnapshot {
    eventCount: number;
    frameCount: number;
    lastLabel: string;
    lastFrameFileName?: string;
    lastThinking?: string;
}
export declare class TimelineCollector {
    #private;
    constructor(sessionId: string, options: TimelineCollectorOptions);
    onToolCall(name: string, id: string, input: string): void;
    onToolResult(result: {
        tool_use_id?: string;
        tool_name?: string;
        tool_input?: string;
        content: string | (ContentMessageItemText | ContentMessageItemImage | ContentMessageItemResource)[];
    }): void;
    onRecordFrame(input: RecordFrameToolInput): void;
    onThinking(content: string): void;
    getLastCapturedImage(): ContentMessageItemImage | null;
    getExplicitFrames(): Array<{
        image: ContentMessageItemImage | null;
        title: string;
    }>;
    getExplicitImages(): ContentMessageItemImage[];
    getAllImages(): ContentMessageItemImage[];
    getLegacyMetadataFrames(): Array<{
        hasImage: boolean;
        title: string;
    }>;
    getExplicitFrameDurations(): string[];
    getProgressSnapshot(): ProgressSnapshot;
    getEventCount(): number;
    getFrameCount(): number;
    getLastLabel(): string;
    hasExplicitFrames(): boolean;
    hasAnyFrames(): boolean;
    getHighlightFrames(): CollectedFrame[];
    getHighlightImages(): ContentMessageItemImage[];
    getHighlightMetadataFrames(): Array<{
        hasImage: boolean;
        title: string;
    }>;
    getHighlightFrameDurations(): string[];
    finalize(): Promise<TimelineRecording>;
}
export {};
