import Level from '../Parser/Level'; import Attr from '../Utils/attr-list'; import Fragment from '../Loaders/Fragment'; export interface LoaderContext { url: string; responseType: XMLHttpRequestResponseType; rangeStart?: number; rangeEnd?: number; progressData?: boolean; } export interface FragLoaderContext extends LoaderContext { frag?: Fragment; type?: string; level?: number; id?: number | null; } export interface level { bitrate: number; width: number; height: number; name: string; url: string; videoCodec: string; } export interface LoaderConfiguration { maxRetry: number; timeout: number; retryDelay: number; maxRetryDelay: number; } export interface LoaderResponse { url: string; data: string | ArrayBuffer; } export interface LoaderStats { trequest: number; tfirst: number; tload: number; tparsed?: number; loaded: number; total: number; tbuffered?: number; } /** * xhr-load stats */ export interface XhrLoaderStats extends LoaderStats { aborted: boolean; retry: number; text?: string; } export interface XhrLoaderResponse extends LoaderResponse { text?: string; } export interface Frag { byteRangeStartOffset: number; byteRangeEndOffset: number; start: number; duration: number; type: string; url: string; sn: number; } declare type LoaderOnSuccess = (response: LoaderResponse, stats: XhrLoaderStats, context: T, networkDetails: any) => void; declare type LoaderOnProgress = (stats: LoaderStats, context: T, data: string | ArrayBuffer, networkDetails: any) => void; export interface ResponseData { response: { code: string | number; text: string; }; } export interface ErrorData { code: string | number; text: string; } declare type LoaderOnError = (error: { code: number; text: string; }, context: T, networkDetails: any) => void; export declare type timeoutData = { stats: XhrLoaderStats; context: LoaderContext; xhr: XMLHttpRequest | null; }; export declare type LoaderOnTimeout = (stats: XhrLoaderStats, context: T, xhr: XMLHttpRequest | null) => void; export interface LoaderCallbacks { onSuccess: LoaderOnSuccess; onError: LoaderOnError; onTimeout: LoaderOnTimeout; onProgress?: LoaderOnProgress; } export interface Loader { destroy(): void; abort(): void; load(context: LoaderContext, config: LoaderConfiguration, callbacks: LoaderCallbacks): void; context: T; } /** * `type` property values for this loaders' context object * @enum * */ export declare enum PlaylistContextType { MANIFEST = "manifest", LEVEL = "level", AUDIO_TRACK = "audioTrack", SUBTITLE_TRACK = "subtitleTrack" } /** * @enum {string} */ export declare enum PlaylistLevelType { MAIN = "main", AUDIO = "audio", SUBTITLE = "subtitle" } export interface SingleLevels { url: string; details: Level; bitrate: number; height: number; audioCodec: string; attrs: Attr; videoCodec: 'string'; } export interface PlaylistLoaderContext extends LoaderContext { loader?: Loader; type: PlaylistContextType; id: number | null; isSidxRequest?: boolean; levelDetails?: Level; } export {};