/**
 * @module scene
 *
 * `vibe scene <sub>` — lower-level namespace for scene authoring,
 * linting, and visual-style browsing. Users and AI agents can
 * hand-author rich per-scene HTML instead of relying on flat YAML steps
 * or opaque MP4s.
 *
 * For the project flow (init / build / render), see the canonical
 * top-level commands (`packages/cli/src/commands/{init,build,render}.ts`).
 * This file owns the lower-level subcommands only:
 *   - add               — author one scene (template + assets)
 *   - lint              — in-process Hyperframes lint + --fix
 *   - repair            — deterministic mechanical repairs
 *   - list-styles       — browse vendored visual identities
 *   - install-skill     — retroactive composition-rules install
 *   - compose-prompts   — emit per-beat plan for a host agent (no LLM call)
 */
import { Command } from "commander";
import { type TtsProviderName } from "./_shared/tts-resolve.js";
import { type ScenePreset, type LottieOverlayInput } from "./_shared/scene-html-emit.js";
export declare const sceneCommand: Command;
export interface SceneAddOptions {
    name: string;
    preset: ScenePreset;
    /** Narration text. If the value is an existing file path, its content is used. */
    narration?: string;
    /**
     * Path to an existing narration audio file (.wav/.mp3). When provided,
     * skips TTS entirely and copies the file into the project's `assets/`.
     * Compatible with `npx hyperframes tts`, `say`, or any other external
     * synthesis tool. The transcript is still generated unless
     * `skipTranscribe` is set.
     */
    narrationFile?: string;
    /** Explicit duration in seconds. Overrides narration-derived duration. */
    duration?: number;
    /** Image generation prompt. */
    visuals?: string;
    headline?: string;
    kicker?: string;
    /** Project directory. Defaults to cwd. */
    projectDir?: string;
    /** Filename of the root composition (relative to projectDir). */
    insertInto?: string;
    /** "gemini" | "openai". */
    imageProvider?: string;
    /** TTS provider preference. Defaults to `"auto"` (ElevenLabs if key set, else Kokoro). */
    tts?: TtsProviderName;
    /** Voice id (ElevenLabs name/id, or Kokoro id like `af_heart`). */
    voice?: string;
    /** When true, skip TTS even if narration is provided. */
    skipAudio?: boolean;
    /** When true, skip image generation even if visuals is provided. */
    skipImage?: boolean;
    /**
     * When true, skip the Whisper word-level transcribe step that would
     * otherwise emit `assets/transcript-<id>.json`.
     */
    skipTranscribe?: boolean;
    /** BCP-47 language hint forwarded to Whisper (e.g. `"en"`, `"ko"`). */
    transcribeLanguage?: string;
    /** Overwrite existing compositions/scene-<id>.html. */
    force?: boolean;
    /** Lottie animation overlay options. */
    lottie?: LottieOverlayInput;
    /** Progress sink (CLI spinner / agent stream). */
    onProgress?: (msg: string) => void;
}
export interface SceneAddResult {
    success: boolean;
    id: string;
    preset: ScenePreset;
    start: number;
    duration: number;
    scenePath: string;
    rootPath: string;
    audioPath?: string;
    imagePath?: string;
    /**
     * Project-relative path to `assets/transcript-<id>.json` when Whisper
     * word-level transcribe ran. `undefined` when skipped or when the audio
     * source produced no narration text to transcribe.
     */
    transcriptPath?: string;
    /** Number of word entries emitted into the transcript JSON. */
    transcriptWordCount?: number;
    lottiePath?: string;
    error?: string;
}
export declare function executeSceneAdd(opts: SceneAddOptions): Promise<SceneAddResult>;
export declare function resolveSceneRepairTarget(rootArg?: string, projectArg?: string): Promise<{
    projectDir: string;
    rootRel: string;
}>;
