/**
 * @module ai-animated-caption
 * @description Animated caption pipeline — word-by-word TikTok/Reels-style captions.
 *
 * Pipeline: Video → FFmpeg audio extract → Whisper word-level transcribe
 *   → Word grouping → Style routing (ASS fast tier / Remotion tier) → Output MP4
 *
 * ## Commands: vibe pipeline animated-caption
 * ## Dependencies: Whisper (OpenAI), FFmpeg, Remotion (optional)
 * @see MODELS.md for AI model configuration
 */
export interface WordTiming {
    word: string;
    start: number;
    end: number;
}
export interface WordGroup {
    words: WordTiming[];
    startTime: number;
    endTime: number;
    text: string;
}
export type AnimatedCaptionStyle = "highlight" | "bounce" | "pop-in" | "neon" | "karaoke-sweep" | "typewriter";
export interface AnimatedCaptionOptions {
    videoPath: string;
    outputPath: string;
    style: AnimatedCaptionStyle;
    highlightColor: string;
    fontSize?: number;
    position: "top" | "center" | "bottom";
    wordsPerGroup?: number;
    maxChars?: number;
    language?: string;
    fast?: boolean;
}
export interface AnimatedCaptionResult {
    success: boolean;
    outputPath?: string;
    wordCount?: number;
    groupCount?: number;
    style?: string;
    tier?: "ass" | "remotion";
    error?: string;
}
/**
 * Group words into display groups for animated captions.
 * Groups by natural sentence boundaries, pauses, and word/char limits.
 */
export declare function groupWords(words: WordTiming[], options?: {
    wordsPerGroup?: number;
    maxChars?: number;
}): WordGroup[];
/**
 * Generate ASS subtitle content for fast-tier animated captions.
 */
export declare function generateASS(groups: WordGroup[], style: "karaoke-sweep" | "typewriter", options: {
    highlightColor: string;
    fontSize: number;
    position: string;
    width: number;
    height: number;
}): string;
export declare function executeAnimatedCaption(options: AnimatedCaptionOptions): Promise<AnimatedCaptionResult>;
