export declare const TRANSITION_PRESETS: readonly ["cross-dissolve", "wipe-left", "wipe-right", "wipe-up", "wipe-down", "clock-wipe", "iris", "push-left", "push-right", "push-up", "push-down", "flip", "hard-cut"];
export type TransitionPreset = (typeof TRANSITION_PRESETS)[number];
/** The 6 industry families (issue's "六大家族"). Phase 1 covers ①②③ only. */
export type TransitionFamily = "dissolve" | "wipe" | "slide" | "motion" | "stylize" | "cut";
export interface TransitionPresetMeta {
    family: TransitionFamily;
    /**
     * Corresponding ffmpeg xfade name. Reserved for Phase 2+ when stylized
     * presets land — Phase 1 renders entirely via Remotion's <Scene/> (the
     * render-pipeline's "Stage 1: Remotion render" reuses the same component
     * the preview renders, so families ①②③ get WYSIWYG by construction
     * without any ffmpeg splicing).
     */
    ffmpegXfade: string;
    defaultDurationSec: number;
}
export declare const TRANSITION_PRESET_META: Record<TransitionPreset, TransitionPresetMeta>;
export declare function getPresetMeta(preset: TransitionPreset): TransitionPresetMeta;
export declare const TRANSITION_DURATION_MIN_SEC = 0.05;
export declare const TRANSITION_DURATION_MAX_SEC = 5;
/**
 * Clamp a desired transition duration to what the two adjacent clips can
 * physically afford ("handles"). A transition consumes durationSec from BOTH
 * adjacent clips; without this guard the renderer either panics or silently
 * produces a flicker. Returns the clamped duration in seconds, bounded to the
 * schema's [0.05, 5] range.
 *
 * `desiredSec` = the user's intent. `clipBeforeDur`, `clipAfterDur` = the
 * usable content duration of the clips on either side of the cut. The cap is
 * the lesser of the two halved (each clip contributes half the transition),
 * AND never exceeds the schema ceiling (so two very long adjacent clips can't
 * yield a dur > 5 that the write-path zod parse would then reject).
 */
export declare function clampHandleDuration(desiredSec: number, clipBeforeDur: number, clipAfterDur: number): number;
//# sourceMappingURL=transitions.d.ts.map