import type { ApiManager } from '../../../../framework-types/api-manager/ApiManager';
import type { ContextHaving } from '../../../../framework-types/execution-context/Types';
import type { ArrayAtom } from '../../core/state/ArrayStateAtom';
import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../../core/Types';
import type { CoreUtils } from '../../core/utils/Types';
import type { VideoElementStateExportNames } from '../../playback/video-element-state/Types';
import type { VideoElementStateAtom } from '../../playback/video-element-state/VideoElementStateAtom';
import type { SourceStateAtom } from '../../source/atoms/SourceStateAtom';
import type { SourceExportNames } from '../../source/Types';
import type { SourcesApiExportNames } from '../../sources-api/Types';
import type { ContextWithState } from '../../Types';
import type { SeekableRangeProviderAtom } from './SeekableRangeProviderAtom';
export type TimeRange = {
    start: number;
    end: number;
};
export type TimeApi = {
    currentTime: number;
    readonly duration: number;
    readonly seekableRange: TimeRange;
    playbackRate: number;
};
export type TimeApiPackageDependencies = {
    [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
    [CoreExportNames.CoreEffects]: CoreEffects;
    [CoreExportNames.Utils]: CoreUtils;
    [VideoElementStateExportNames.VideoElementState]: VideoElementStateAtom;
    [SourceExportNames.SourceState]: SourceStateAtom;
    [SourcesApiExportNames.SourceApiManager]: ApiManager<TimeApi>;
};
export declare const SeekableRangeProviders = "seekable-range-providers";
export type SeekableRangeProviders = {
    [SeekableRangeProviders]: ArrayAtom<SeekableRangeProviderAtom>;
};
export type TimeApiPackageExports = SeekableRangeProviders;
export type TimeApiPackageContext = ContextHaving<TimeApiPackageDependencies, TimeApiPackageExports, ContextWithState>;
