import { Nullable } from '@mlytics/core-ts/core/type/basic'; import { Timer } from '@mlytics/core-ts/core/util/watch'; import { Resource } from '../../../../kernel/core/model/service/resource'; declare class HLSProxy { static clear(uri: string): Promise; } declare class HLSLoaderProxy { protected _resource: Resource; protected _controller: HLSController; fetch(uri: string): Promise; protected _setupResource(uri: string): Promise; protected _setupController(): Promise; protected _fetchController(): Promise; protected _buildController(): Promise; protected _fetchResource(): Promise; abort(): Promise; protected _abortResource(): Promise; } declare class HLSController { protected readonly _options: HLSControllerOptions; protected _info: HLSControllerInfo; constructor(_options: HLSControllerOptions); get info(): HLSControllerInfo; protected _initialize(): void; fetch(resource: Resource): Promise; protected _injectInfo(resource: Resource): Promise; protected _shouldBufferPlay(resource: Resource): boolean; protected _bufferPlay(resource: Resource): Promise; protected _shouldUpdateInfo(resource: Resource): boolean; protected _updateInfo(resource: Resource): Promise; protected get _shouldManageSwarm(): boolean; protected _manageSwarm(): Promise; protected _fetchResource(resource: Resource): Promise; abort(resource: Resource): Promise; protected _abortResource(resource: Resource): Promise; close(): Promise; protected _deleteSource(): Promise; } type HLSControllerOptions = HLSControllerInfoOptions; declare class HLSControllerInfo { protected _episode: HLSArchive; protected _details: Map; constructor(options: HLSControllerInfoOptions); get episode(): HLSArchive; get details(): Map; isManaged(resource: Resource): boolean; isPlaylist(resource: Resource): boolean; isSwarmed(resource: Resource): boolean; isEpisode(resource: Resource): boolean; isManifest(resource: Resource): boolean; isSegment(resource: Resource): boolean; findDetail(name: string): Nullable; } type HLSControllerInfoOptions = { episode: HLSArchive; }; declare class HLSControllerInfoDetail { protected _manifests: Map; protected _lastManifest?: Nullable; protected _lastSegment?: Nullable; protected _playManifest?: Nullable; protected _playSegment?: Nullable; protected _playSegments: Map; protected _playStableTime: Timer; get manifests(): Map; set manifests(values: Map); get lastManifest(): Nullable; set lastManifest(value: Nullable); get lastSegment(): Nullable; set lastSegment(value: Nullable); get playManifest(): Nullable; set playManifest(value: Nullable); get playSegment(): Nullable; set playSegment(value: Nullable); get playSegments(): Map; set playSegments(values: Map); get playStableTime(): Timer; isSwarmed(resource: Resource): boolean; isManifest(resource: Resource): boolean; isSegment(resource: Resource): boolean; } declare class HLSArchive { protected _id: string; protected _uri: string; constructor(options: HLSArchiveOptions); get id(): string; set id(value: string); get uri(): string; set uri(value: string); } type HLSArchiveOptions = { id: string; uri: string; }; declare class HLSManifest extends HLSArchive { protected _segments: Map; constructor(options: HLSManifestOptions); get segments(): Map; set segments(value: Map); isSegment(resource: Resource): boolean; } type HLSManifestOptions = HLSArchiveOptions & { segments: Map; }; declare class HLSSegment extends HLSArchive { protected _duration: number; protected _hasParts: boolean; constructor(options: HLSSegmentOptions); get duration(): number; set duration(value: number); get hasParts(): boolean; set hasParts(value: boolean); } type HLSSegmentOptions = HLSArchiveOptions & { duration: number; hasParts: boolean; }; export { HLSProxy, HLSLoaderProxy };