/**
 * Customer Interview AI Processing Types
 *
 * Type definitions for AI-powered video processing features including
 * transcription, summarization, and video clip extraction.
 */
import type { Speaker, VideoClip } from './customer-interview';
export type AIProcessingStatus = 'pending' | 'processing' | 'completed' | 'failed';
export interface AIProcessingState {
    transcript: AIProcessingStatus;
    summary: AIProcessingStatus;
    clips: AIProcessingStatus;
    error?: string;
    startedAt?: string;
    completedAt?: string;
}
export interface TranscriptionUtterance {
    speaker: string;
    text: string;
    start: number;
    end: number;
    confidence: number;
}
export interface TranscriptionResult {
    transcript_raw: string;
    transcript_formatted: string;
    summary_bullets: string[];
    summary_gist: string;
    speakers?: Speaker[];
    confidence_transcript: number;
    confidence_summary: number;
    assemblyai_id: string;
    processing_duration: number;
    warnings?: string[];
}
export interface AssemblyAITranscript {
    id: string;
    status: 'queued' | 'processing' | 'completed' | 'error';
    text?: string;
    utterances?: TranscriptionUtterance[];
    confidence?: number;
    audio_duration?: number;
    error?: string;
}
export interface AssemblyAISummary {
    response: string;
    bullets?: string[];
    gist?: string;
    headline?: string;
    request_id: string;
}
export interface VideoClipsResult {
    clips: VideoClip[];
    twelvelabs_id: string;
    processing_duration: number;
    warnings?: string[];
}
export interface TwelveLabsSearchResult {
    data: Array<{
        video_id: string;
        confidence: string;
        start: number;
        end: number;
        metadata: string;
        score: number;
    }>;
}
export interface VideoProcessingOptions {
    processTranscription?: boolean;
    processSummary?: boolean;
    processClips?: boolean;
    clipQueries?: string[];
    enableSpeakerDiarization?: boolean;
    language?: string;
}
export interface VideoProcessingResult {
    transcription?: TranscriptionResult;
    clips?: VideoClipsResult;
    overallDuration: number;
    errors: string[];
    warnings: string[];
}
export interface AIProcessingRequest {
    processTranscription?: boolean;
    processSummary?: boolean;
    processClips?: boolean;
    clipQueries?: string[];
}
export interface AIProcessingResponse {
    jobId: string;
    status: 'queued' | 'processing';
    estimatedDuration: number;
}
export interface AIStatusResponse {
    transcript: {
        status: AIProcessingStatus;
        progress?: number;
        error?: string;
        completedAt?: string;
    };
    summary: {
        status: AIProcessingStatus;
        progress?: number;
        error?: string;
        completedAt?: string;
    };
    clips: {
        status: AIProcessingStatus;
        progress?: number;
        error?: string;
        completedAt?: string;
    };
    overallProgress: number;
}
export interface AssemblyAIWebhookPayload {
    transcript_id: string;
    status: 'completed' | 'error';
    error?: string;
}
export interface TwelveLabsWebhookPayload {
    video_id: string;
    status: 'ready' | 'failed';
    error?: string;
}
export interface TranscriptViewerProps {
    transcript: string;
    speakers?: Speaker[];
    collapsible?: boolean;
    defaultExpanded?: boolean;
    showTimestamps?: boolean;
    highlightSearch?: string;
    showCard?: boolean;
    className?: string;
}
export interface AIProcessingStatusDisplayProps {
    status: AIStatusResponse;
    onRetry?: () => void;
    className?: string;
}
export interface VideoClipCardProps {
    clip: VideoClip;
    videoUrl: string;
    onPlay?: (startTime: number) => void;
    className?: string;
}
export interface VideoAIConfig {
    assemblyai: {
        apiKey: string;
        baseUrl: string;
        features: {
            speaker_diarization: boolean;
            sentiment_analysis: boolean;
            entity_detection: boolean;
        };
    };
    twelvelabs: {
        apiKey: string;
        baseUrl: string;
        defaultQueries: string[];
    };
    processing: {
        timeoutMs: number;
        webhookEnabled: boolean;
        retryAttempts: number;
    };
}
export type { Speaker, VideoClip } from './customer-interview';
//# sourceMappingURL=customer-interview-ai.types.d.ts.map