// A type for the global YT object and its Player constructor declare global { interface Window { YT?: { Player: new (frameId: string | HTMLDivElement, options: YT.PlayerOptions) => YT.Player; // Add other YT properties if needed, like enums for player states PlayerState?: { ENDED: number; PLAYING: number; PAUSED: number; BUFFERING: number; CUED: number; }; }; onYouTubeIframeAPIReady?: () => void; } } // Minimal YT.Player and YT.PlayerOptions types (can be expanded) declare namespace YT { interface Player { playVideo: () => void; pauseVideo: () => void; stopVideo: () => void; mute: () => void; unMute: () => void; isMuted: () => boolean; getVolume: () => number; setVolume: (volume: number) => void; getPlayerState: () => number; addEventListener: (event: E, listener: Events[E]) => void; destroy: () => void; // Add more methods as needed getIframe: () => HTMLIFrameElement; getVideoUrl: () => string; loadVideoById: (videoId: string, startSeconds?: number, suggestedQuality?: string) => void; cueVideoById: (videoId: string, startSeconds?: number, suggestedQuality?: string) => void; } interface PlayerOptions { height?: string; width?: string; videoId?: string; playerVars?: PlayerVars; events?: Events; } interface PlayerVars { autoplay?: 0 | 1; controls?: 0 | 1 | 2; enablejsapi?: 0 | 1; origin?: string; rel?: 0 | 1; showinfo?: 0 | 1; // Add more playerVars as needed [key: string]: any; // Allow other player vars } interface Events { onReady?: (event: { target: Player }) => void; onStateChange?: (event: { data: number; target: Player }) => void; onError?: (event: { data: number; target: Player }) => void; // Add more events as needed } } // Add this export to make the file a module export {};