/**
 * <Video> — single source of truth for every public video surface
 * across every Flamingo platform consumer of this lib.
 *
 * One component, three sources, three layouts. Replaces and deletes
 * the previous lib primitives:
 *
 *   - `<VideoPlayer>`  (react-player wrapper, ~900 LOC custom controls)
 *   - `<YouTubeEmbed>` (separate lite-youtube facade)
 *
 * Routing (`kind` discriminant, default `'auto'`):
 *
 *   kind="youtube"  → inline lite-youtube facade (poster + click→iframe)
 *   kind="file"     → <MuxPlayer> (HLS + MP4 + Mux Data + CMCD all in one)
 *   kind="auto"     → strict URL parse:
 *                        bare 11-char id   → youtube
 *                        YouTube hostname  → youtube
 *                        anything else     → file
 *
 * `<MuxPlayer>` handles both `.m3u8` (HLS via hls.js, native on Safari)
 * AND plain `.mp4` (uses the underlying `<video>` element). One component,
 * both paths — no internal "HLS vs MP4" branch needed. Captions are
 * rendered as native `<track>` children when `captionsUrl` is passed.
 *
 * Layouts:
 *   layout="centered" → max-w-3xl centered wrapper. Detail-page surface.
 *   layout="fill"     → absolute inset-0 w-full h-full. Carousel slides.
 *   layout="native"   → intrinsic aspect ratio. Bites grid, blog cards.
 */
import React from 'react';
/**
 * Extract the YouTube video id from any common URL shape OR from a
 * bare 11-char id (carousels and some admin shapes pass that form
 * directly).
 *
 * Uses strict `URL` parsing + an anchored pathname regex — NOT the
 * legacy `.*v=` pattern that CodeQL flagged for polynomial-time
 * backtracking on adversarial input like `youtube.com/watch?`
 * repeated N times. Bare-id fallback uses an anchored character-class
 * regex so it can never ReDoS either.
 *
 * Exported so admin tooling and carousel thumbnail logic can validate
 * a URL without rendering the full `<Video>` component.
 */
export declare function extractYouTubeId(url: string): string | null;
export type VideoLayout = 'centered' | 'fill' | 'native';
interface VideoCommonProps {
    /** Layout wrapper. Detail pages pass `"centered"`. Default `"native"`. */
    layout?: VideoLayout;
    /** Poster / thumbnail. */
    poster?: string | null;
    /** Mute by default — for autoplay carousels. */
    muted?: boolean;
    /** LCP hint — YouTube facade poster gets `fetchpriority="high"`. */
    priority?: boolean;
    /** Tailwind classes applied to the underlying player root. */
    className?: string;
    /** Accessible label (used as YT facade title; ignored for file branch). */
    title?: string;
    /**
     * YouTube-only: hide YT player chrome (controls, info, fullscreen, related
     * videos, keyboard shortcuts). Used for marketing/landing-page embeds that
     * want a minimal look. No-op for file (MP4/HLS) branches.
     */
    minimalControls?: boolean;
}
interface VideoFileProps extends VideoCommonProps {
    kind: 'file';
    url: string;
    /**
     * SRT raw content. Deprecated: pass `captionsUrl` (VTT) instead.
     * Native `<track>` requires a URL; raw SRT can't be rendered without
     * a custom overlay. Setting this without `captionsUrl` is a no-op
     * with a dev warning.
     */
    srtContent?: string | null;
    /** HTTPS URL to a VTT captions file. Rendered as a native `<track>`. */
    captionsUrl?: string | null;
}
interface VideoYouTubeProps extends VideoCommonProps {
    kind: 'youtube';
    /** Either a full YT URL or just the video id. */
    url: string;
}
interface VideoAutoProps extends VideoCommonProps {
    kind?: 'auto';
    url: string;
    srtContent?: string | null;
    captionsUrl?: string | null;
}
export type VideoProps = VideoFileProps | VideoYouTubeProps | VideoAutoProps;
export declare function Video(props: VideoProps): React.ReactElement | null;
export {};
//# sourceMappingURL=video.d.ts.map