import React, { ReactNode } from 'react';
import type { AIRequiredField } from './ai-enrich';
export interface HighlightVideoCombinedSectionProps {
    /** Target highlight duration in seconds */
    targetDurationSeconds: number;
    /** Handler for duration changes */
    onTargetDurationChange: (seconds: number) => void;
    /** Whether to skip subtitle burning */
    skipSubtitleBurning: boolean;
    /** Handler for subtitle burning toggle */
    onSkipSubtitleBurningChange: (skip: boolean) => void;
    /** Whether config section is disabled */
    configDisabled?: boolean;
    /** Handler to trigger highlight generation */
    onGenerateHighlight: () => void;
    /** Whether generation is currently processing */
    isProcessing: boolean;
    /** Whether the generate button can be clicked */
    canEnrich: boolean;
    /** Required fields to display */
    requiredFields: AIRequiredField[];
    /** Current status of the operation */
    status?: 'loading' | 'success' | 'error' | undefined;
    /** Status message to display */
    statusMessage?: string;
    /** Message shown when button is disabled */
    disabledMessage?: string;
    /** Whether cancel is available */
    showCancel?: boolean;
    /** Handler to cancel processing */
    onCancel?: () => void;
    /** Whether cancellation is in progress */
    isCancelling?: boolean;
    /** Whether result already exists (affects button label) */
    hasResult?: boolean;
    /** Custom title */
    title?: string;
    /** Custom description - if not provided, auto-generated from duration */
    description?: string;
    /** Custom button label */
    buttonLabel?: string;
    /** Custom loading label */
    loadingLabel?: string;
    /** Highlight video URL */
    highlightVideoUrl?: string | null;
    /** Video thumbnail URL */
    highlightVideoThumbnail?: string | null;
    /** Video duration in milliseconds */
    highlightVideoDurationMs?: number | null;
    /** Whether video was AI generated */
    highlightVideoSource?: 'manual' | 'ai_generated' | null;
    /** Handler to upload a new highlight video - receives File, should return uploaded URL */
    onUpload: (file: File) => Promise<string>;
    /** Handler to delete the highlight video */
    onDelete: () => Promise<void>;
    /** Whether upload is in progress */
    isUploading?: boolean;
    /** Custom label for preview section */
    previewLabel?: string;
    /** Custom empty state message */
    emptyMessage?: string;
    /** Upload progress component (optional) */
    uploadProgressComponent?: ReactNode;
    /** Video preview component - receives video data, should render the preview */
    renderVideoPreview: (props: {
        videoUrl: string;
        title: string;
        thumbnailUrl?: string;
        onDelete: () => Promise<void>;
    }) => ReactNode;
    /** Additional class name */
    className?: string;
}
/**
 * HighlightVideoCombinedSection - Unified component combining Config + AI Enrich + Preview
 *
 * This component provides a complete UI for highlight video generation with:
 * 1. HighlightConfigSection for duration and subtitle settings
 * 2. AIEnrichSection for triggering generation and showing status
 * 3. HighlightVideoPreview for viewing/uploading highlight videos
 *
 * Used by both CustomerInterview and ProductRelease modals.
 */
export declare function HighlightVideoCombinedSection({ targetDurationSeconds, onTargetDurationChange, skipSubtitleBurning, onSkipSubtitleBurningChange, configDisabled, onGenerateHighlight, isProcessing, canEnrich, requiredFields, status, statusMessage, disabledMessage, showCancel, onCancel, isCancelling, hasResult, title, description, buttonLabel, loadingLabel, highlightVideoUrl, highlightVideoThumbnail, highlightVideoDurationMs, highlightVideoSource, onUpload, onDelete, isUploading, previewLabel, emptyMessage, uploadProgressComponent, renderVideoPreview, className, }: HighlightVideoCombinedSectionProps): React.JSX.Element;
export default HighlightVideoCombinedSection;
//# sourceMappingURL=highlight-video-combined-section.d.ts.map