/**
 * Unified wrapper around YouTube IFrame Player API and Vimeo Player.js so the
 * rest of the app can drive embedded videos with the same play/pause/seek/
 * volume calls used for `<video>` elements. The provider libraries are lazy-
 * loaded on first use so a project with no embeds doesn't pay the network cost.
 *
 * What this enables:
 *   • Auto-pause embeds when the user navigates away from a slide.
 *   • Reset embed `currentTime` to startTime on slide enter (otherwise YouTube
 *     persists position across iframe rebuilds).
 *   • Render OUR own play/pause/scrub controls on top of the iframe (we hide
 *     YouTube's chrome via `controls=0` in the embed URL).
 *
 * What this does NOT enable: server-side export capture. YouTube/Vimeo render
 * frames inside their player; Puppeteer can't screenshot cross-origin iframe
 * content, so exports of slides containing embeds still fall back to the
 * provider-supplied thumbnail (handled in /present's render path).
 */
export declare function loadYouTubeAPI(): Promise<typeof window['YT']>;
export declare function loadVimeoAPI(): Promise<any>;
export interface UnifiedPlayer {
    play(): Promise<void> | void;
    pause(): Promise<void> | void;
    seekTo(seconds: number): Promise<void> | void;
    getCurrentTime(): Promise<number>;
    getDuration(): Promise<number>;
    setVolume(v: number): void;
    setMuted(m: boolean): void;
    setPlaybackRate(r: number): void;
    destroy(): void;
    /** Subscribe to playing-state changes. Call returned fn to unsubscribe. */
    onStateChange(cb: (state: 'playing' | 'paused' | 'ended' | 'buffering' | 'cued' | 'unstarted') => void): () => void;
}
interface CreateOptions {
    provider: 'youtube' | 'vimeo';
    /** The actual <iframe> element. We attach the player to it. */
    iframe: HTMLIFrameElement;
    /** Provider video ID (used for the YouTube ctor; Vimeo binds straight to iframe). */
    videoId?: string;
    startTime?: number;
    muted?: boolean;
}
export declare function createEmbedPlayer(opts: CreateOptions): Promise<UnifiedPlayer>;
declare global {
    interface Window {
        YT: any;
        onYouTubeIframeAPIReady?: () => void;
    }
}
export {};
