import type { PartialRequired } from '../../../Types'; import type { DataStreamAtom } from '../../core/state/data-stream/DataStreamAtom'; import type { MapStateAtom } from '../../core/state/MapStateAtom'; import type { StateAtom } from '../../core/state/Types'; import type { SelectionGroupAtom } from '../selection-group/SelectionGroupAtom'; import type { TimeRange, TrackAtom } from '../track/TrackAtom'; import type { StreamDataStructureContext } from '../Types'; import type { SegmentTimingAtom } from './SegmentTimingAtom'; export type Metadata = Record; export type DataSegmentAtom = StateAtom; export type InitSegmentAtom = StateAtom; export type SelfInitSegmentAtom = StateAtom; export interface ByteRange { start: number; end: number; } interface BaseSegment { url: string; byteRange: ByteRange | undefined; data: DataStreamAtom; metadata: MapStateAtom; track: TrackAtom; selectionGroup: SelectionGroupAtom; } export declare enum SegmentType { Initialization = "initialization", SelfInitializing = "self-initializing", Data = "data" } interface SelfInitializingSegment extends BaseSegment { type: SegmentType.SelfInitializing; segmentTiming: SegmentTimingAtom; } interface DataSegment extends BaseSegment { type: SegmentType.Data; initSegment: InitSegmentAtom; segmentTiming: SegmentTimingAtom; } interface InitSegment extends BaseSegment { type: SegmentType.Initialization; } type Segment = InitSegment | DataSegment | SelfInitializingSegment; export type DataOrSelfInitSegmentAtom = DataSegmentAtom | SelfInitSegmentAtom; export type SegmentAtom = InitSegmentAtom | DataSegmentAtom | SelfInitSegmentAtom; declare const setInitSegment: (data: DataSegment, initSegment: InitSegmentAtom) => boolean; declare const setTrack: (segment: Segment, track: TrackAtom) => boolean; declare const BaseSegmentModifiers: { setSelectionGroup: (segment: Segment, selectionGroup: SelectionGroupAtom) => boolean; }; export declare const createDataSegmentAtom: (context: StreamDataStructureContext, initialData: PartialRequired) => StateAtom boolean; setTrack: (segment: Segment, track: TrackAtom) => boolean; setSelectionGroup: (segment: Segment, selectionGroup: SelectionGroupAtom) => boolean; }>; export declare const createInitSegmentAtom: (context: StreamDataStructureContext, initialData: PartialRequired) => StateAtom boolean; setSelectionGroup: (segment: Segment, selectionGroup: SelectionGroupAtom) => boolean; }>; export declare const createSelfInitSegmentAtom: (context: StreamDataStructureContext, initialData: PartialRequired) => StateAtom boolean; setSelectionGroup: (segment: Segment, selectionGroup: SelectionGroupAtom) => boolean; }>; export declare function getReadableSegmentName(segment: SegmentAtom, pathLength?: number): string; export declare function getTimeRange(segment: DataOrSelfInitSegmentAtom): TimeRange; export declare function getGapToNextSegment(segment: DataOrSelfInitSegmentAtom, nextSegment: DataOrSelfInitSegmentAtom | undefined): { start: number; end: number; } | undefined; export {};