import * as React from 'react'; import type { MediaHandle } from '../useMediaElement.js'; import type { MediaTextTrack } from '../mediaStore.js'; /** Container-width class of the controls row (REQ-SURF-135): * full ≥480 px, compact 320–479 px, minimal <320 px. */ export type MediaControlsSize = 'full' | 'compact' | 'minimal'; /** Parts that register their presence with Root so siblings can adapt * (Time aria-hidden next to a Scrubber; Volume→Mute; Rate/PiP → "More"). */ export type RegisteredPart = 'scrubber' | 'mute' | 'rate' | 'pip'; export interface MediaModel { playing: boolean; waiting: boolean; ended: boolean; error: boolean; currentTime: number; duration: number; buffered: [number, number][]; volume: number; muted: boolean; playbackRate: number; textTracks: MediaTextTrack[]; /** captions|subtitles tracks only, in element order. */ captionTracks: MediaTextTrack[]; pictureInPicture: boolean; toggle(): void; seek(seconds: number): void; seekBy(delta: number): void; setVolume(v: number): void; setMuted(m: boolean): void; setRate(r: number): void; requestPictureInPicture(): void; requestFullscreen(target?: Element | null): void; /** Flip the chosen captions|subtitles track between showing and disabled. */ toggleCaptions(): void; /** Show exactly this captions|subtitles track (null = captions off). */ selectCaptions(id: string | null): void; handle?: MediaHandle | undefined; } export interface MediaControlsLayout { size: MediaControlsSize; /** count of mounted parts per kind */ parts: Readonly>; register(part: RegisteredPart): () => void; } export declare const MediaControlsContext: React.Context; export declare const MediaControlsLayoutContext: React.Context; export declare function useMediaModel(part: string): MediaModel; export declare function useMediaLayout(): MediaControlsLayout; declare const useIsoLayoutEffect: typeof React.useEffect; /** Register this part with Root for as long as it is mounted (rendered or not). */ export declare function useRegisterPart(part: RegisteredPart): void; export { useIsoLayoutEffect }; //# sourceMappingURL=mediaContext.d.ts.map