import type { ContextHaving } from '../../../../framework-types/execution-context/Types';
import type { EmptyObject } from '../../../Types';
import { CoreExportNames } from '../../core/Types';
import type { CoreUtils } from '../../core/utils/Types';
import type { DataOrSelfInitSegmentAtom } from '../../stream-data-structure/segment/SegmentAtom';
import type { TimeRange } from '../../stream-data-structure/track/TrackAtom';
import type { ContextWithState } from '../../Types';
type ExtendedContext = ContextHaving<{
    [CoreExportNames.Utils]: CoreUtils;
}, EmptyObject, ContextWithState>;
interface MediaRanges {
    source: {
        [sourceId: string]: DataOrSelfInitSegmentAtom[];
    };
    enclosingRange: TimeRange;
    ranges: TimeRange[];
}
interface DataRanges {
    media: {
        [mediaId: string]: MediaRanges;
    };
}
export type DataRangesAtom = ReturnType<typeof createDataRangesAtom>;
export declare const createDataRangesAtom: (ctx: ExtendedContext) => import("../../core/state/Types").StateAtom<DataRanges, {
    addSegment: (dataRanges: DataRanges, mediaId: string, sourceId: string, segment: DataOrSelfInitSegmentAtom) => boolean;
    removeSegment: (dataRanges: DataRanges, mediaId: string, sourceId: string, segment: DataOrSelfInitSegmentAtom) => boolean;
    clear: (dataRanges: DataRanges) => boolean;
    deleteMediaId: (dataRanges: DataRanges, mediaId: string) => boolean;
    deleteSource: (dataRanges: DataRanges, mediaId: string, sourceId: string) => boolean;
}>;
export {};
