/** Empty/whitespace-only narration is flagged. */ export declare const MIN_NARRATION_CHARS = 1; /** Per-scene narration words above this risk overrunning the slide's on-screen time. */ export declare const DEFAULT_MAX_NARRATION_WORDS = 60; /** Approximate spoken words-per-second used for the timing estimate. */ export declare const WORDS_PER_SECOND = 2.5; export interface NarrationScene { sceneIndex: number; /** Planned narration text for this scene. */ narration: string; } export interface CheckNarrationInput { scenes: NarrationScene[]; /** * Number of slide images available. When provided, a mismatch against the * narration scene count is flagged (the NotebookLM compress/insert failure). */ slideCount?: number; /** Per-scene narration word ceiling. Default DEFAULT_MAX_NARRATION_WORDS. */ maxNarrationWords?: number; /** * Optional per-scene on-screen budget in seconds. When set, a scene whose * estimated spoken duration exceeds its budget is flagged (timing math). */ slideDurationSec?: number; /** Override the spoken words-per-second estimate. Default WORDS_PER_SECOND. */ wordsPerSecond?: number; } export interface NarrationWarning { /** -1 for whole-deck (structural) warnings not tied to a single scene. */ sceneIndex: number; /** * Stable rule id: * 'empty-narration' — scene has no narration text * 'over-length' — narration exceeds the per-scene word ceiling * 'timing-overrun' — estimated spoken time exceeds the slide budget * 'count-mismatch' — narration scene count != slide count */ rule: 'empty-narration' | 'over-length' | 'timing-overrun' | 'count-mismatch'; message: string; } export interface CheckNarrationResult { warnings: NarrationWarning[]; ok: boolean; } /** Count whitespace-delimited word tokens that contain a letter or digit. */ export declare function countNarrationWords(text: string): number; /** * Run the local narration checks. Advisory: returns warnings, never throws for * content. Throws only on invalid input. */ export declare function checkNarration(input: CheckNarrationInput): CheckNarrationResult; //# sourceMappingURL=qa-narration.d.ts.map