import type { ContextHaving } from '../../../../framework-types/execution-context/Types'; import type { EmptyObject, PartialRequired } from '../../../Types'; import type { Constants, ContainerFormat } from '../../core/Constants'; import type { ArrayAtom } from '../../core/state/ArrayStateAtom'; import type { PrimitiveAtom } from '../../core/state/PrimitiveAtom'; import type { StateAtom } from '../../core/state/Types'; import type { CoreStateAtoms } from '../../core/Types'; import { CoreExportNames } from '../../core/Types'; import type { CoreUtils } from '../../core/utils/Types'; import type { ContextWithState } from '../../Types'; import type { AudioTrackAtom, MediaTrackAtom, SubtitleTrackAtom, TimeRange, TrackAtom, VideoTrackAtom } from '../track/TrackAtom'; type ExtendedContext = ContextHaving<{ [CoreExportNames.CoreStateAtoms]: CoreStateAtoms; [CoreExportNames.Constants]: Constants; [CoreExportNames.Utils]: CoreUtils; }, EmptyObject, ContextWithState>; type BaseSelectionGroup = { tracks: ArrayAtom; sequenceNumber: number; timeRange: TimeRange; mediaId: string; }; type MediaSelectionGroup = Omit & { tracks: ArrayAtom; container: PrimitiveAtom; }; type VideoSelectionGroup = Omit & { tracks: ArrayAtom; }; type LanguageSelectionGroup = { language: string; }; type AudioSelectionGroup = Omit & { tracks: ArrayAtom; }; type SubtitleSelectionGroup = Omit & { tracks: ArrayAtom; }; type UnknownSelectionGroup = BaseSelectionGroup; export type UnknownSelectionGroupAtom = StateAtom; export type AudioSelectionGroupAtom = StateAtom>; export type VideoSelectionGroupAtom = StateAtom>; export type SubtitleSelectionGroupAtom = StateAtom; export type MediaSelectionGroupAtom = Omit & { tracks: ArrayAtom; }; export type SelectionGroupAtom = Omit & { tracks: ArrayAtom; }; type SelectionGroup = AudioSelectionGroup | VideoSelectionGroup | SubtitleSelectionGroup | UnknownSelectionGroup; declare function getVideoSelectionGroupModifiers(): { setSequenceNumber: (selectionGroup: SelectionGroup, sequenceNumber: number) => boolean; }; export declare const createVideoSelectionGroupAtom: (context: ExtendedContext, initialValue: PartialRequired) => VideoSelectionGroupAtom; declare function getAudioSelectionGroupModifiers(): { setLanguage: (selectionGroup: AudioSelectionGroup | SubtitleSelectionGroup, language: string) => boolean; setSequenceNumber: (selectionGroup: SelectionGroup, sequenceNumber: number) => boolean; }; export declare const createAudioSelectionGroupAtom: (context: ExtendedContext, initialValue: PartialRequired) => AudioSelectionGroupAtom; declare const SubtitleSelectionGroupModifiers: { setSequenceNumber: (selectionGroup: SelectionGroup, sequenceNumber: number) => boolean; setLanguage: (selectionGroup: AudioSelectionGroup | SubtitleSelectionGroup, language: string) => boolean; }; export declare const createSubtitleSelectionGroupAtom: (context: ExtendedContext, initialValue: PartialRequired, label: string) => SubtitleSelectionGroupAtom; declare const UnknownSelectionGroupModifiers: { setSequenceNumber: (selectionGroup: SelectionGroup, sequenceNumber: number) => boolean; }; export declare const createUnknownSelectionGroupAtom: (context: ExtendedContext, initialValue: PartialRequired) => UnknownSelectionGroupAtom; export {};