import type { RefObject } from 'react'; import React from 'react'; import { type PlayableMediaTag } from './timeline-position-state'; import { type TimelineSeek } from './use-timeline-seek'; export type TimelineContextValue = { frame: Record; isPlaying: () => boolean; isInsideFreeze: boolean; audioAndVideoTags: RefObject; }; export type PlaybackRateContextValue = { playbackRate: number; setPlaybackRate: (u: React.SetStateAction) => void; }; export type PlayingState = Readonly<{ playing: boolean; }>; export type BufferingState = Readonly<{ buffering: boolean; }>; export type SetTimelineContextValue = { seek: TimelineSeek | null; setFrameWithoutSeek: (u: React.SetStateAction>) => void; setPlaying: (u: React.SetStateAction) => void; setBuffering: (buffering: boolean) => void; subscribePlaying: (listener: (state: PlayingState) => void) => () => void; subscribeBuffering: (listener: (state: BufferingState) => void) => () => void; isPlaying: () => boolean; isBuffering: () => boolean; frameRef: RefObject>; audioAndVideoTags: RefObject; }; export declare const SetTimelineContext: React.Context; export declare const TimelineContext: React.Context; export declare const PlaybackRateContext: React.Context; export declare const AbsoluteTimeContext: React.Context; export declare const TimelineContextProvider: React.FC<{ readonly children: React.ReactNode; readonly frameState: Record | null; }>;