import type { ContextHaving, ContextUsing } from '../../../framework-types/execution-context/Types';
import type { BaseContext } from '../../../framework-types/Types';
import type { AdaptationExportNames } from '../adaptation/Types';
import type { CapabilitiesExportNames, PlatformCapabilities } from '../capabilities/Types';
import type { Constants } from '../core/Constants';
import type { EventListenerEffect } from '../core/effects/EventListenerEffectFactory';
import type { MetricsAtom } from '../core/metrics/MetricsAtom';
import type { QueueAtom } from '../core/state/QueueAtom';
import type { StateEffect } from '../core/state/state-effect/StateEffectFactory';
import type { StreamTimelineAtom } from '../core/state/stream-timeline/StreamTimelineMapAtom';
import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../core/Types';
import type { CoreUtils } from '../core/utils/Types';
import type { NetworkTask } from '../network/NetworkTask';
import type { NetworkExportNames } from '../network/Types';
import type SegmentProcessorErrors from '../segment-processing/Errors';
import type { SegmentProcessingComponent, SegmentProcessingExportNames } from '../segment-processing/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 { MediaTrackAtom } from '../stream-data-structure/track/TrackAtom';
import type { StreamDataStructurePackageExports } from '../stream-data-structure/Types';
import type { StreamingState } from '../streaming/Types';
export type SegmentQueue = QueueAtom<DataPackageContext, DataOrSelfInitSegmentAtom>;
export type DataDependencies = {
    [CapabilitiesExportNames.PlatformCapabilities]: PlatformCapabilities;
    [CoreExportNames.Constants]: Constants;
    [SourceExportNames.SourceState]: SourceStateAtom;
    [CoreExportNames.CoreEffects]: CoreEffects;
    [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
    [CoreExportNames.Utils]: CoreUtils;
    [AdaptationExportNames.Metrics]: MetricsAtom;
    [NetworkExportNames.NetworkTask]: typeof NetworkTask;
    [SegmentProcessingExportNames.SegmentProcessorErrors]: typeof SegmentProcessorErrors;
    [SegmentProcessingExportNames.SegmentProcessingComponent]: SegmentProcessingComponent;
    [AdaptationExportNames.Select]: (tracks: readonly MediaTrackAtom[]) => MediaTrackAtom;
} & StreamDataStructurePackageExports & StreamingState;
export declare enum DataExportNames {
    StreamTimeline = "stream-timeline"
}
export interface DataExports {
    [DataExportNames.StreamTimeline]: StreamTimelineAtom;
}
type BaseExecutionContext = ContextHaving<DataDependencies, DataExports, BaseContext>;
export type DataPackageContext = ContextUsing<[StateEffect, EventListenerEffect], BaseExecutionContext>;
export {};
