import type { EmptyObject } from '../../../../../framework-types/BaseTypes';
import type { ContextHaving, ContextUsing } from '../../../../../framework-types/execution-context/Types';
import type { StoreEffectFactory } from '../../../core/state/StoreEffectFactory';
import type { CoreEffects, CoreExportNames, CoreStateAtoms } from '../../../core/Types';
import type { CoreUtils } from '../../../core/utils/Types';
import type { TargetPlaybackState, TargetPlaybackStateAtom } from '../../../playback/play-pause/TargetPlaybackStateAtom';
import type { PlayPauseExportNames } from '../../../playback/play-pause/Types';
import type { TargetVolumeStateAtom } from '../../../playback/volume/TargetVolumeStateAtom';
import type { TargetVolumeState } from '../../../playback/volume/Types';
import type { SourceStateAtom } from '../../../source/atoms/SourceStateAtom';
import type { SourceExportNames } from '../../../source/Types';
import type { ContextWithState } from '../../../Types';
import type { MediaInfo } from '../../MediaInfoAtoms';
import type { MediaStateAtom } from '../../MediaStateAtom';
import type { SeekRestrictionAtom } from '../../SeekRestrictionAtom';
import type { MediaState, MediaStateExportNames, MediaStateTransitionType } from '../../Types';
import type { StaleTransitionTracker } from './StaleTransitionTracker';
export type VideoElementControllerPackageDependencies = {
    [SourceExportNames.SourceState]: SourceStateAtom;
    [MediaStateExportNames.MediaStateAtom]: MediaStateAtom;
    [MediaStateExportNames.MediaInfo]: MediaInfo;
    [MediaStateExportNames.SeekRestriction]: SeekRestrictionAtom;
    [MediaStateExportNames.MediaStateTransitionType]: typeof MediaStateTransitionType;
    [MediaStateExportNames.MediaState]: typeof MediaState;
    [PlayPauseExportNames.TargetPlaybackState]: typeof TargetPlaybackState;
    [PlayPauseExportNames.TargetPlaybackStateAtom]: TargetPlaybackStateAtom;
    [TargetVolumeState]: TargetVolumeStateAtom;
    [CoreExportNames.CoreEffects]: CoreEffects;
    [CoreExportNames.CoreStateAtoms]: CoreStateAtoms;
    [CoreExportNames.Utils]: CoreUtils;
};
export type VideoElementControllerPackageApi = EmptyObject;
export type VideoElementControllerPackageContext = ContextUsing<[
    StoreEffectFactory<'staleTransitions', StaleTransitionTracker>
], ContextHaving<VideoElementControllerPackageDependencies, EmptyObject, ContextWithState>>;
