import type { ContextHaving, ContextUsing } from '../../../../framework-types/execution-context/Types';
import type { VTTProperties } from '@bitmovin-internal/player-web-lib-vtt/types';
import type { Constants } from '../../core/Constants';
import type { StoreEffectFactory } from '../../core/state/StoreEffectFactory';
import type { StreamTimelineAtom } from '../../core/state/stream-timeline/StreamTimelineMapAtom';
import type { TechnologyExports } from '../../core/technology/Types';
import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../../core/Types';
import type { CoreUtils } from '../../core/utils/Types';
import type { DataExportNames } from '../../data/Types';
import type { SourceStateAtom } from '../../source/atoms/SourceStateAtom';
import type { SourceExportNames } from '../../source/Types';
import type { DataOrSelfInitSegmentAtom } from '../../stream-data-structure/segment/SegmentAtom';
import type { StreamDataStructureSelectionGroups } from '../../stream-data-structure/selection-group/Exports';
import type { SubtitleSelectionGroupAtom } from '../../stream-data-structure/selection-group/SelectionGroupAtom';
import type { ContextWithState } from '../../Types';
import type { createSubtitleCueAtom } from '../subtitle-base/SubtitleCueAtom';
import type { SubtitleCueMapAtom } from '../subtitle-base/SubtitleCueMapAtom';
import type { SubtitleBaseExportNames } from '../subtitle-base/Types';
import type { WebVttParseTask } from './WebVttParseTask';
export declare enum WebVttExportNames {
    WebVttParseTask = "web-vtt-parse-task"
}
export type WebVttParseTask = typeof WebVttParseTask;
export type WebVttDependencies = {
    [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
    [CoreExportNames.Utils]: CoreUtils;
    [CoreExportNames.CoreEffects]: CoreEffects;
    [CoreExportNames.Constants]: Constants;
    [SubtitleBaseExportNames.SubtitleCueMapAtom]: SubtitleCueMapAtom;
    [SubtitleBaseExportNames.CreateSubtitleCueAtom]: typeof createSubtitleCueAtom;
    [SourceExportNames.SourceState]: SourceStateAtom;
    [DataExportNames.StreamTimeline]: StreamTimelineAtom;
} & StreamDataStructureSelectionGroups & TechnologyExports;
export type WebVttExports = {
    [WebVttExportNames.WebVttParseTask]: WebVttParseTask;
};
export type WebVttPackageContext = ContextUsing<[
    StoreEffectFactory<'subtitleSegmentCache', Map<SubtitleSelectionGroupAtom, DataOrSelfInitSegmentAtom[]>>
], ContextHaving<WebVttDependencies, WebVttExports, ContextWithState>>;
export type WebVttSubtitleCueMetadata = {
    i: number;
    vttProperties: VTTProperties;
    offset?: number;
    layout?: string;
    updates: Array<{
        updateTime: number;
        html: string;
    }>;
};
