import type { MutableRefObject } from 'react';
export type PlayableMediaTag = {
    play: (reason: string) => void;
    id: string;
};
export type TimelineContextValue = {
    frame: Record<string, number>;
    playing: boolean;
    rootId: string;
    playbackRate: number;
    imperativePlaying: MutableRefObject<boolean>;
    setPlaybackRate: (u: React.SetStateAction<number>) => void;
    audioAndVideoTags: MutableRefObject<PlayableMediaTag[]>;
};
export type SetTimelineContextValue = {
    setFrame: (u: React.SetStateAction<Record<string, number>>) => void;
    setPlaying: (u: React.SetStateAction<boolean>) => void;
};
export declare const TimelineContext: import("react").Context<TimelineContextValue>;
export declare const SetTimelineContext: import("react").Context<SetTimelineContextValue>;
type CurrentTimePerComposition = Record<string, number>;
export declare const persistCurrentFrame: (time: CurrentTimePerComposition) => void;
export declare const getInitialFrameState: () => CurrentTimePerComposition;
export declare const getFrameForComposition: (composition: string) => number;
export declare const useTimelinePosition: () => number;
export declare const useTimelineSetFrame: () => ((u: React.SetStateAction<Record<string, number>>) => void);
type PlayingReturnType = readonly [
    boolean,
    (u: React.SetStateAction<boolean>) => void,
    MutableRefObject<boolean>
];
export declare const usePlayingState: () => PlayingReturnType;
export {};
