| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105 | export declare interface AbrComponentAPI extends ComponentAPI {    firstAutoLevel: number;    forcedAutoLevel: number;    nextAutoLevel: number;    readonly bwEstimator?: EwmaBandWidthEstimator;    resetEstimator(abrEwmaDefaultEstimate: number): any;}export declare class AbrController implements AbrComponentAPI {    protected hls: Hls;    private lastLevelLoadSec;    private lastLoadedFragLevel;    private firstSelection;    private _nextAutoLevel;    private nextAutoLevelKey;    private audioTracksByGroup;    private codecTiers;    private timer;    private fragCurrent;    private partCurrent;    private bitrateTestDelay;    bwEstimator: EwmaBandWidthEstimator;    constructor(hls: Hls);    resetEstimator(abrEwmaDefaultEstimate?: number): void;    private initEstimator;    protected registerListeners(): void;    protected unregisterListeners(): void;    destroy(): void;    protected onManifestLoading(event: Events.MANIFEST_LOADING, data: ManifestLoadingData): void;    private onLevelsUpdated;    private onMaxAutoLevelUpdated;    protected onFragLoading(event: Events.FRAG_LOADING, data: FragLoadingData): void;    protected onLevelSwitching(event: Events.LEVEL_SWITCHING, data: LevelSwitchingData): void;    protected onError(event: Events.ERROR, data: ErrorData): void;    private getTimeToLoadFrag;    protected onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;    private _abandonRulesCheck;    protected onFragLoaded(event: Events.FRAG_LOADED, { frag, part }: FragLoadedData): void;    protected onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;    private ignoreFragment;    clearTimer(): void;    get firstAutoLevel(): number;    get forcedAutoLevel(): number;    get nextAutoLevel(): number;    private getAutoLevelKey;    private getNextABRAutoLevel;    private getStarvationDelay;    private getBwEstimate;    private findBestLevel;    set nextAutoLevel(nextLevel: number);}export declare type ABRControllerConfig = {    abrEwmaFastLive: number;    abrEwmaSlowLive: number;    abrEwmaFastVoD: number;    abrEwmaSlowVoD: number;    /**     * Default bandwidth estimate in bits/s prior to collecting fragment bandwidth samples     */    abrEwmaDefaultEstimate: number;    abrEwmaDefaultEstimateMax: number;    abrBandWidthFactor: number;    abrBandWidthUpFactor: number;    abrMaxWithRealBitrate: boolean;    maxStarvationDelay: number;    maxLoadingDelay: number;};export declare class AttrList {    [key: string]: any;    constructor(attrs: string | Record<string, any>);    get clientAttrs(): string[];    decimalInteger(attrName: string): number;    hexadecimalInteger(attrName: string): Uint8Array | null;    hexadecimalIntegerAsNumber(attrName: string): number;    decimalFloatingPoint(attrName: string): number;    optionalFloat(attrName: string, defaultValue: number): number;    enumeratedString(attrName: string): string | undefined;    bool(attrName: string): boolean;    decimalResolution(attrName: string): {        width: number;        height: number;    } | undefined;    static parseAttrList(input: string): Record<string, any>;}export declare type AudioPlaylistType = 'AUDIO';export declare type AudioSelectionOption = {    lang?: string;    assocLang?: string;    characteristics?: string;    channels?: string;    name?: string;    audioCodec?: string;    groupId?: string;    default?: boolean;};export declare class AudioStreamController extends BaseStreamController implements NetworkComponentAPI {    private videoBuffer;    private videoTrackCC;    private waitingVideoCC;    private bufferedTrack;    private switchingTrack;    private trackId;    private waitingData;    private mainDetails;    private flushing;    private bufferFlushed;    private cachedTrackLoadedData;    constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);    protected onHandlerDestroying(): void;    private _registerListeners;    private _unregisterListeners;    onInitPtsFound(event: Events.INIT_PTS_FOUND, { frag, id, initPTS, timescale }: InitPTSFoundData): void;    startLoad(startPosition: number): void;    doTick(): void;    clearWaitingFragment(): void;    protected resetLoadingState(): void;    protected onTickEnd(): void;    private doTickIdle;    protected getMaxBufferLength(mainBufferLength?: number): number;    onMediaDetaching(): void;    onAudioTracksUpdated(event: Events.AUDIO_TRACKS_UPDATED, { audioTracks }: AudioTracksUpdatedData): void;    onAudioTrackSwitching(event: Events.AUDIO_TRACK_SWITCHING, data: AudioTrackSwitchingData): void;    onManifestLoading(): void;    onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;    onAudioTrackLoaded(event: Events.AUDIO_TRACK_LOADED, data: TrackLoadedData): void;    _handleFragmentLoadProgress(data: FragLoadedData): void;    protected _handleFragmentLoadComplete(fragLoadedData: FragLoadedData): void;    onBufferReset(): void;    onBufferCreated(event: Events.BUFFER_CREATED, data: BufferCreatedData): void;    onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;    private onError;    private onBufferFlushing;    private onBufferFlushed;    private _handleTransmuxComplete;    private _bufferInitSegment;    protected loadFragment(frag: Fragment, track: Level, targetBufferTime: number): void;    private flushAudioIfNeeded;    private completeAudioSwitch;}export declare class AudioTrackController extends BasePlaylistController {    private tracks;    private groupIds;    private tracksInGroup;    private trackId;    private currentTrack;    private selectDefaultTrack;    constructor(hls: Hls);    private registerListeners;    private unregisterListeners;    destroy(): void;    protected onManifestLoading(): void;    protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;    protected onAudioTrackLoaded(event: Events.AUDIO_TRACK_LOADED, data: AudioTrackLoadedData): void;    protected onLevelLoading(event: Events.LEVEL_LOADING, data: LevelLoadingData): void;    protected onLevelSwitching(event: Events.LEVEL_SWITCHING, data: LevelSwitchingData): void;    private switchLevel;    protected onError(event: Events.ERROR, data: ErrorData): void;    get allAudioTracks(): MediaPlaylist[];    get audioTracks(): MediaPlaylist[];    get audioTrack(): number;    set audioTrack(newId: number);    setAudioOption(audioOption: MediaPlaylist | AudioSelectionOption | undefined): MediaPlaylist | null;    private setAudioTrack;    private findTrackId;    protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;}export declare interface AudioTrackLoadedData extends TrackLoadedData {}export declare interface AudioTracksUpdatedData {    audioTracks: MediaPlaylist[];}export declare interface AudioTrackSwitchedData extends MediaPlaylist {}export declare interface AudioTrackSwitchingData extends MediaPlaylist {}export declare interface BackBufferData {    bufferEnd: number;}export declare class BasePlaylistController implements NetworkComponentAPI {    protected hls: Hls;    protected timer: number;    protected requestScheduled: number;    protected canLoad: boolean;    protected log: (msg: any) => void;    protected warn: (msg: any) => void;    constructor(hls: Hls, logPrefix: string);    destroy(): void;    protected clearTimer(): void;    startLoad(): void;    stopLoad(): void;    protected switchParams(playlistUri: string, previous: LevelDetails | undefined, current: LevelDetails | undefined): HlsUrlParameters | undefined;    protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;    protected shouldLoadPlaylist(playlist: Level | MediaPlaylist | null | undefined): boolean;    protected shouldReloadPlaylist(playlist: Level | MediaPlaylist | null | undefined): boolean;    protected playlistLoaded(index: number, data: LevelLoadedData | AudioTrackLoadedData | TrackLoadedData, previousDetails?: LevelDetails): void;    private getDeliveryDirectives;    protected checkRetry(errorEvent: ErrorData): boolean;}export declare class BaseSegment {    private _byteRange;    private _url;    readonly baseurl: string;    relurl?: string;    elementaryStreams: ElementaryStreams;    constructor(baseurl: string);    setByteRange(value: string, previous?: BaseSegment): void;    get byteRange(): [number, number] | [];    get byteRangeStartOffset(): number | undefined;    get byteRangeEndOffset(): number | undefined;    get url(): string;    set url(value: string);}export declare class BaseStreamController extends TaskLoop implements NetworkComponentAPI {    protected hls: Hls;    protected fragPrevious: Fragment | null;    protected fragCurrent: Fragment | null;    protected fragmentTracker: FragmentTracker;    protected transmuxer: TransmuxerInterface | null;    protected _state: string;    protected playlistType: PlaylistLevelType;    protected media: HTMLMediaElement | null;    protected mediaBuffer: Bufferable | null;    protected config: HlsConfig;    protected bitrateTest: boolean;    protected lastCurrentTime: number;    protected nextLoadPosition: number;    protected startPosition: number;    protected startTimeOffset: number | null;    protected loadedmetadata: boolean;    protected retryDate: number;    protected levels: Array<Level> | null;    protected fragmentLoader: FragmentLoader;    protected keyLoader: KeyLoader;    protected levelLastLoaded: Level | null;    protected startFragRequested: boolean;    protected decrypter: Decrypter;    protected initPTS: RationalTimestamp[];    protected onvseeking: EventListener | null;    protected onvended: EventListener | null;    private readonly logPrefix;    protected log: (msg: any) => void;    protected warn: (msg: any) => void;    constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader, logPrefix: string, playlistType: PlaylistLevelType);    protected doTick(): void;    protected onTickEnd(): void;    startLoad(startPosition: number): void;    stopLoad(): void;    protected _streamEnded(bufferInfo: BufferInfo, levelDetails: LevelDetails): boolean;    protected getLevelDetails(): LevelDetails | undefined;    protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;    protected onMediaDetaching(): void;    protected onMediaSeeking(): void;    protected onMediaEnded(): void;    protected onManifestLoaded(event: Events.MANIFEST_LOADED, data: ManifestLoadedData): void;    protected onHandlerDestroying(): void;    protected onHandlerDestroyed(): void;    protected loadFragment(frag: Fragment, level: Level, targetBufferTime: number): void;    private _loadFragForPlayback;    protected clearTrackerIfNeeded(frag: Fragment): void;    protected checkLiveUpdate(details: LevelDetails): void;    protected flushMainBuffer(startOffset: number, endOffset: number, type?: SourceBufferName | null): void;    protected _loadInitSegment(frag: Fragment, level: Level): void;    private completeInitSegmentLoad;    protected fragContextChanged(frag: Fragment | null): boolean;    protected fragBufferedComplete(frag: Fragment, part: Part | null): void;    protected seekToStartPos(): void;    protected _handleFragmentLoadComplete(fragLoadedEndData: PartsLoadedData): void;    protected _handleFragmentLoadProgress(frag: PartsLoadedData | FragLoadedData): void;    protected _doFragLoad(frag: Fragment, level: Level, targetBufferTime?: number | null, progressCallback?: FragmentLoadProgressCallback): Promise<PartsLoadedData | FragLoadedData | null>;    private doFragPartsLoad;    private handleFragLoadError;    protected _handleTransmuxerFlush(chunkMeta: ChunkMetadata): void;    protected getCurrentContext(chunkMeta: ChunkMetadata): {        frag: Fragment;        part: Part | null;        level: Level;    } | null;    protected bufferFragmentData(data: RemuxedTrack, frag: Fragment, part: Part | null, chunkMeta: ChunkMetadata, noBacktracking?: boolean): void;    protected flushBufferGap(frag: Fragment): void;    protected getFwdBufferInfo(bufferable: Bufferable | null, type: PlaylistLevelType): BufferInfo | null;    protected getFwdBufferInfoAtPos(bufferable: Bufferable | null, pos: number, type: PlaylistLevelType): BufferInfo | null;    protected getMaxBufferLength(levelBitrate?: number): number;    protected reduceMaxBufferLength(threshold: number): boolean;    protected getAppendedFrag(position: number, playlistType?: PlaylistLevelType): Fragment | null;    protected getNextFragment(pos: number, levelDetails: LevelDetails): Fragment | null;    protected isLoopLoading(frag: Fragment, targetBufferTime: number): boolean;    protected getNextFragmentLoopLoading(frag: Fragment, levelDetails: LevelDetails, bufferInfo: BufferInfo, playlistType: PlaylistLevelType, maxBufLen: number): Fragment | null;    mapToInitFragWhenRequired(frag: Fragment | null): typeof frag;    getNextPart(partList: Part[], frag: Fragment, targetBufferTime: number): number;    private loadedEndOfParts;    protected getInitialLiveFragment(levelDetails: LevelDetails, fragments: Array<Fragment>): Fragment | null;    protected getFragmentAtPosition(bufferEnd: number, end: number, levelDetails: LevelDetails): Fragment | null;    protected synchronizeToLiveEdge(levelDetails: LevelDetails): void;    protected alignPlaylists(details: LevelDetails, previousDetails: LevelDetails | undefined, switchDetails: LevelDetails | undefined): number;    protected waitForCdnTuneIn(details: LevelDetails): boolean | 0;    protected setStartPosition(details: LevelDetails, sliding: number): void;    protected getLoadPosition(): number;    private handleFragLoadAborted;    protected resetFragmentLoading(frag: Fragment): void;    protected onFragmentOrKeyLoadError(filterType: PlaylistLevelType, data: ErrorData): void;    protected reduceLengthAndFlushBuffer(data: ErrorData): boolean;    protected resetFragmentErrors(filterType: PlaylistLevelType): void;    protected afterBufferFlushed(media: Bufferable, bufferType: SourceBufferName, playlistType: PlaylistLevelType): void;    protected resetLoadingState(): void;    protected resetStartWhenNotLoaded(level: Level | null): void;    protected resetWhenMissingContext(chunkMeta: ChunkMetadata): void;    protected removeUnbufferedFrags(start?: number): void;    private updateLevelTiming;    protected resetTransmuxer(): void;    protected recoverWorkerError(data: ErrorData): void;    set state(nextState: string);    get state(): string;}declare type Bufferable = {    buffered: TimeRanges;};export declare interface BufferAppendedData {    type: SourceBufferName;    frag: Fragment;    part: Part | null;    chunkMeta: ChunkMetadata;    parent: PlaylistLevelType;    timeRanges: Partial<Record<SourceBufferName, TimeRanges>>;}export declare interface BufferAppendingData {    type: SourceBufferName;    frag: Fragment;    part: Part | null;    chunkMeta: ChunkMetadata;    parent: PlaylistLevelType;    data: Uint8Array;}export declare interface BufferCodecsData {    video?: Track;    audio?: Track;}export declare class BufferController implements ComponentAPI {    private details;    private _objectUrl;    private operationQueue;    private listeners;    private hls;    bufferCodecEventsExpected: number;    private _bufferCodecEventsTotal;    media: HTMLMediaElement | null;    mediaSource: MediaSource | null;    private lastMpegAudioChunk;    private appendSource;    appendErrors: {        audio: number;        video: number;        audiovideo: number;    };    tracks: TrackSet;    pendingTracks: TrackSet;    sourceBuffer: SourceBuffers;    protected log: (msg: any) => void;    protected warn: (msg: any, obj?: any) => void;    protected error: (msg: any, obj?: any) => void;    constructor(hls: Hls);    hasSourceTypes(): boolean;    destroy(): void;    protected registerListeners(): void;    protected unregisterListeners(): void;    private _initSourceBuffer;    private onManifestLoading;    protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;    protected onMediaAttaching(event: Events.MEDIA_ATTACHING, data: MediaAttachingData): void;    private _onEndStreaming;    private _onStartStreaming;    protected onMediaDetaching(): void;    protected onBufferReset(): void;    private resetBuffer;    protected onBufferCodecs(event: Events.BUFFER_CODECS, data: BufferCodecsData): void;    protected appendChangeType(type: any, mimeType: any): void;    protected onBufferAppending(event: Events.BUFFER_APPENDING, eventData: BufferAppendingData): void;    protected onBufferFlushing(event: Events.BUFFER_FLUSHING, data: BufferFlushingData): void;    protected onFragParsed(event: Events.FRAG_PARSED, data: FragParsedData): void;    private onFragChanged;    protected onBufferEos(event: Events.BUFFER_EOS, data: BufferEOSData): void;    protected onLevelUpdated(event: Events.LEVEL_UPDATED, { details }: LevelUpdatedData): void;    trimBuffers(): void;    flushBackBuffer(currentTime: number, targetDuration: number, targetBackBufferPosition: number): void;    flushFrontBuffer(currentTime: number, targetDuration: number, targetFrontBufferPosition: number): void;    /**     * Update Media Source duration to current level duration or override to Infinity if configuration parameter     * 'liveDurationInfinity` is set to `true`     * More details: https://github.com/video-dev/hls.js/issues/355     */    private updateMediaElementDuration;    updateSeekableRange(levelDetails: any): void;    protected checkPendingTracks(): void;    protected createSourceBuffers(tracks: TrackSet): void;    private _onMediaSourceOpen;    private _onMediaSourceClose;    private _onMediaSourceEnded;    private _onMediaEmptied;    private get mediaSrc();    private _onSBUpdateStart;    private _onSBUpdateEnd;    private _onSBUpdateError;    private removeExecutor;    private appendExecutor;    private blockBuffers;    private getSourceBufferTypes;    private addBufferListener;    private removeBufferListeners;}export declare type BufferControllerConfig = {    appendErrorMaxRetry: number;    backBufferLength: number;    frontBufferFlushThreshold: number;    liveDurationInfinity: boolean;    /**     * @deprecated use backBufferLength     */    liveBackBufferLength: number | null;};export declare interface BufferCreatedData {    tracks: TrackSet;}export declare interface BufferEOSData {    type?: SourceBufferName;}export declare interface BufferFlushedData {    type: SourceBufferName;}export declare interface BufferFlushingData {    startOffset: number;    endOffset: number;    endOffsetSubtitles?: number;    type: SourceBufferName | null;}export declare type BufferInfo = {    len: number;    start: number;    end: number;    nextStart?: number;};export declare class CapLevelController implements ComponentAPI {    private hls;    private autoLevelCapping;    private firstLevel;    private media;    private restrictedLevels;    private timer;    private clientRect;    private streamController?;    constructor(hls: Hls);    setStreamController(streamController: StreamController): void;    destroy(): void;    protected registerListeners(): void;    protected unregisterListener(): void;    protected onFpsDropLevelCapping(event: Events.FPS_DROP_LEVEL_CAPPING, data: FPSDropLevelCappingData): void;    protected onMediaAttaching(event: Events.MEDIA_ATTACHING, data: MediaAttachingData): void;    protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;    private onLevelsUpdated;    protected onBufferCodecs(event: Events.BUFFER_CODECS, data: BufferCodecsData): void;    protected onMediaDetaching(): void;    detectPlayerSize(): void;    getMaxLevel(capLevelIndex: number): number;    startCapping(): void;    stopCapping(): void;    getDimensions(): {        width: number;        height: number;    };    get mediaWidth(): number;    get mediaHeight(): number;    get contentScaleFactor(): number;    private isLevelAllowed;    static getMaxLevelByMediaSize(levels: Array<Level>, width: number, height: number): number;}export declare type CapLevelControllerConfig = {    capLevelToPlayerSize: boolean;};/** * Keep a CEA-608 screen of 32x15 styled characters * @constructor */declare class CaptionScreen {    rows: Row[];    currRow: number;    nrRollUpRows: number | null;    lastOutputScreen: CaptionScreen | null;    logger: CaptionsLogger;    constructor(logger: CaptionsLogger);    reset(): void;    equals(other: CaptionScreen): boolean;    copy(other: CaptionScreen): void;    isEmpty(): boolean;    backSpace(): void;    clearToEndOfRow(): void;    /**     * Insert a character (without styling) in the current row.     */    insertChar(char: number): void;    setPen(styles: Partial<PenStyles>): void;    moveCursor(relPos: number): void;    setCursor(absPos: number): void;    setPAC(pacData: PACData): void;    /**     * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility).     */    setBkgData(bkgData: Partial<PenStyles>): void;    setRollUpRows(nrRows: number | null): void;    rollUp(): void;    /**     * Get all non-empty rows with as unicode text.     */    getDisplayText(asOneRow?: boolean): string;    getTextAndFormat(): Row[];}declare class CaptionsLogger {    time: number | null;    verboseLevel: VerboseLevel;    log(severity: VerboseLevel, msg: string | (() => string)): void;}export declare class ChunkMetadata {    readonly level: number;    readonly sn: number;    readonly part: number;    readonly id: number;    readonly size: number;    readonly partial: boolean;    readonly transmuxing: HlsChunkPerformanceTiming;    readonly buffering: {        [key in SourceBufferName]: HlsChunkPerformanceTiming;    };    constructor(level: number, sn: number, id: number, size?: number, part?: number, partial?: boolean);}/** * Controller to deal with Common Media Client Data (CMCD) * @see https://cdn.cta.tech/cta/media/media/resources/standards/pdfs/cta-5004-final.pdf */export declare class CMCDController implements ComponentAPI {    private hls;    private config;    private media?;    private sid?;    private cid?;    private useHeaders;    private includeKeys?;    private initialized;    private starved;    private buffering;    private audioBuffer?;    private videoBuffer?;    constructor(hls: Hls);    private registerListeners;    private unregisterListeners;    destroy(): void;    private onMediaAttached;    private onMediaDetached;    private onBufferCreated;    private onWaiting;    private onPlaying;    /**     * Create baseline CMCD data     */    private createData;    /**     * Apply CMCD data to a request.     */    private apply;    /**     * Apply CMCD data to a manifest request.     */    private applyPlaylistData;    /**     * Apply CMCD data to a segment request     */    private applyFragmentData;    /**     * The CMCD object type.     */    private getObjectType;    /**     * Get the highest bitrate.     */    private getTopBandwidth;    /**     * Get the buffer length for a media type in milliseconds     */    private getBufferLength;    /**     * Create a playlist loader     */    private createPlaylistLoader;    /**     * Create a playlist loader     */    private createFragmentLoader;}export declare type CMCDControllerConfig = {    sessionId?: string;    contentId?: string;    useHeaders?: boolean;    includeKeys?: string[];};export declare interface ComponentAPI {    destroy(): void;}export declare class ContentSteeringController implements NetworkComponentAPI {    private readonly hls;    private log;    private loader;    private uri;    private pathwayId;    private pathwayPriority;    private timeToLoad;    private reloadTimer;    private updated;    private started;    private enabled;    private levels;    private audioTracks;    private subtitleTracks;    private penalizedPathways;    constructor(hls: Hls);    private registerListeners;    private unregisterListeners;    startLoad(): void;    stopLoad(): void;    clearTimeout(): void;    destroy(): void;    removeLevel(levelToRemove: Level): void;    private onManifestLoading;    private onManifestLoaded;    private onManifestParsed;    private onError;    filterParsedLevels(levels: Level[]): Level[];    private getLevelsForPathway;    private updatePathwayPriority;    private getPathwayForGroupId;    private clonePathways;    private loadSteeringManifest;    private scheduleRefresh;}export declare type ContentSteeringOptions = {    uri: string;    pathwayId: string;};export declare interface CuesInterface {    newCue(track: TextTrack | null, startTime: number, endTime: number, captionScreen: CaptionScreen): VTTCue[];}export declare interface CuesParsedData {    type: 'captions' | 'subtitles';    cues: any;    track: string;}export declare class DateRange {    attr: AttrList;    private _startDate;    private _endDate?;    private _badValueForSameId?;    constructor(dateRangeAttr: AttrList, dateRangeWithSameId?: DateRange);    get id(): string;    get class(): string;    get startDate(): Date;    get endDate(): Date | null;    get duration(): number | null;    get plannedDuration(): number | null;    get endOnNext(): boolean;    get isValid(): boolean;}declare interface DecryptData {    uri: string;    method: string;    keyFormat: string;    keyFormatVersions: number[];    iv: Uint8Array | null;    key: Uint8Array | null;    keyId: Uint8Array | null;    pssh: Uint8Array | null;    encrypted: boolean;    isCommonEncryption: boolean;}declare class Decrypter {    private logEnabled;    private removePKCS7Padding;    private subtle;    private softwareDecrypter;    private key;    private fastAesKey;    private remainderData;    private currentIV;    private currentResult;    private useSoftware;    constructor(config: HlsConfig, { removePKCS7Padding }?: {        removePKCS7Padding?: boolean | undefined;    });    destroy(): void;    isSync(): boolean;    flush(): Uint8Array | null;    reset(): void;    decrypt(data: Uint8Array | ArrayBuffer, key: ArrayBuffer, iv: ArrayBuffer): Promise<ArrayBuffer>;    softwareDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer): ArrayBuffer | null;    webCryptoDecrypt(data: Uint8Array, key: ArrayBuffer, iv: ArrayBuffer): Promise<ArrayBuffer>;    private onWebCryptoError;    private getValidChunk;    private logOnce;}declare type DRMSystemConfiguration = {    licenseUrl: string;    serverCertificateUrl?: string;    generateRequest?: (this: Hls, initDataType: string, initData: ArrayBuffer | null, keyContext: MediaKeySessionContext) => {        initDataType: string;        initData: ArrayBuffer | null;    } | undefined | never;};export declare type DRMSystemOptions = {    audioRobustness?: string;    videoRobustness?: string;    audioEncryptionScheme?: string | null;    videoEncryptionScheme?: string | null;    persistentState?: MediaKeysRequirement;    distinctiveIdentifier?: MediaKeysRequirement;    sessionTypes?: string[];    sessionType?: string;};export declare type DRMSystemsConfiguration = Partial<Record<KeySystems, DRMSystemConfiguration>>;export declare interface ElementaryStreamInfo {    startPTS: number;    endPTS: number;    startDTS: number;    endDTS: number;    partial?: boolean;}export declare type ElementaryStreams = Record<ElementaryStreamTypes, ElementaryStreamInfo | null>;export declare const enum ElementaryStreamTypes {    AUDIO = "audio",    VIDEO = "video",    AUDIOVIDEO = "audiovideo"}/** * Controller to deal with encrypted media extensions (EME) * @see https://developer.mozilla.org/en-US/docs/Web/API/Encrypted_Media_Extensions_API * * @class * @constructor */export declare class EMEController implements ComponentAPI {    static CDMCleanupPromise: Promise<void> | void;    private readonly hls;    private readonly config;    private media;    private keyFormatPromise;    private keySystemAccessPromises;    private _requestLicenseFailureCount;    private mediaKeySessions;    private keyIdToKeySessionPromise;    private setMediaKeysQueue;    private onMediaEncrypted;    private onWaitingForKey;    private debug;    private log;    private warn;    private error;    constructor(hls: Hls);    destroy(): void;    private registerListeners;    private unregisterListeners;    private getLicenseServerUrl;    private getServerCertificateUrl;    private attemptKeySystemAccess;    private requestMediaKeySystemAccess;    private getMediaKeysPromise;    private createMediaKeySessionContext;    private renewKeySession;    private getKeyIdString;    private updateKeySession;    selectKeySystemFormat(frag: Fragment): Promise<KeySystemFormats>;    private getKeyFormatPromise;    loadKey(data: KeyLoadedData): Promise<MediaKeySessionContext>;    private throwIfDestroyed;    private handleError;    private getKeySystemForKeyPromise;    private getKeySystemSelectionPromise;    private _onMediaEncrypted;    private _onWaitingForKey;    private attemptSetMediaKeys;    private generateRequestWithPreferredKeySession;    private onKeyStatusChange;    private fetchServerCertificate;    private setMediaKeysServerCertificate;    private renewLicense;    private unpackPlayReadyKeyMessage;    private setupLicenseXHR;    private requestLicense;    private onMediaAttached;    private onMediaDetached;    private onManifestLoading;    private onManifestLoaded;    private removeSession;}export declare type EMEControllerConfig = {    licenseXhrSetup?: (this: Hls, xhr: XMLHttpRequest, url: string, keyContext: MediaKeySessionContext, licenseChallenge: Uint8Array) => void | Uint8Array | Promise<Uint8Array | void>;    licenseResponseCallback?: (this: Hls, xhr: XMLHttpRequest, url: string, keyContext: MediaKeySessionContext) => ArrayBuffer;    emeEnabled: boolean;    widevineLicenseUrl?: string;    drmSystems: DRMSystemsConfiguration;    drmSystemOptions: DRMSystemOptions;    requestMediaKeySystemAccessFunc: MediaKeyFunc | null;};export declare const enum ErrorActionFlags {    None = 0,    MoveAllAlternatesMatchingHost = 1,    MoveAllAlternatesMatchingHDCP = 2,    SwitchToSDR = 4}export declare class ErrorController implements NetworkComponentAPI {    private readonly hls;    private playlistError;    private penalizedRenditions;    private log;    private warn;    private error;    constructor(hls: Hls);    private registerListeners;    private unregisterListeners;    destroy(): void;    startLoad(startPosition: number): void;    stopLoad(): void;    private getVariantLevelIndex;    private onManifestLoading;    private onLevelUpdated;    private onError;    private keySystemError;    private getPlaylistRetryOrSwitchAction;    private getFragRetryOrSwitchAction;    private getLevelSwitchAction;    onErrorOut(event: Events.ERROR, data: ErrorData): void;    private sendAlternateToPenaltyBox;    private switchLevel;}export declare interface ErrorData {    type: ErrorTypes;    details: ErrorDetails;    error: Error;    fatal: boolean;    errorAction?: IErrorAction;    buffer?: number;    bytes?: number;    chunkMeta?: ChunkMetadata;    context?: PlaylistLoaderContext;    event?: keyof HlsListeners | 'demuxerWorker';    frag?: Fragment;    part?: Part | null;    level?: number | undefined;    levelRetry?: boolean;    loader?: Loader<LoaderContext>;    networkDetails?: any;    stats?: LoaderStats;    mimeType?: string;    reason?: string;    response?: LoaderResponse;    url?: string;    parent?: PlaylistLevelType;    sourceBufferName?: SourceBufferName;    /**     * @deprecated Use ErrorData.error     */    err?: {        message: string;    };}export declare enum ErrorDetails {    KEY_SYSTEM_NO_KEYS = "keySystemNoKeys",    KEY_SYSTEM_NO_ACCESS = "keySystemNoAccess",    KEY_SYSTEM_NO_SESSION = "keySystemNoSession",    KEY_SYSTEM_NO_CONFIGURED_LICENSE = "keySystemNoConfiguredLicense",    KEY_SYSTEM_LICENSE_REQUEST_FAILED = "keySystemLicenseRequestFailed",    KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED = "keySystemServerCertificateRequestFailed",    KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED = "keySystemServerCertificateUpdateFailed",    KEY_SYSTEM_SESSION_UPDATE_FAILED = "keySystemSessionUpdateFailed",    KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED = "keySystemStatusOutputRestricted",    KEY_SYSTEM_STATUS_INTERNAL_ERROR = "keySystemStatusInternalError",    MANIFEST_LOAD_ERROR = "manifestLoadError",    MANIFEST_LOAD_TIMEOUT = "manifestLoadTimeOut",    MANIFEST_PARSING_ERROR = "manifestParsingError",    MANIFEST_INCOMPATIBLE_CODECS_ERROR = "manifestIncompatibleCodecsError",    LEVEL_EMPTY_ERROR = "levelEmptyError",    LEVEL_LOAD_ERROR = "levelLoadError",    LEVEL_LOAD_TIMEOUT = "levelLoadTimeOut",    LEVEL_PARSING_ERROR = "levelParsingError",    LEVEL_SWITCH_ERROR = "levelSwitchError",    AUDIO_TRACK_LOAD_ERROR = "audioTrackLoadError",    AUDIO_TRACK_LOAD_TIMEOUT = "audioTrackLoadTimeOut",    SUBTITLE_LOAD_ERROR = "subtitleTrackLoadError",    SUBTITLE_TRACK_LOAD_TIMEOUT = "subtitleTrackLoadTimeOut",    FRAG_LOAD_ERROR = "fragLoadError",    FRAG_LOAD_TIMEOUT = "fragLoadTimeOut",    FRAG_DECRYPT_ERROR = "fragDecryptError",    FRAG_PARSING_ERROR = "fragParsingError",    FRAG_GAP = "fragGap",    REMUX_ALLOC_ERROR = "remuxAllocError",    KEY_LOAD_ERROR = "keyLoadError",    KEY_LOAD_TIMEOUT = "keyLoadTimeOut",    BUFFER_ADD_CODEC_ERROR = "bufferAddCodecError",    BUFFER_INCOMPATIBLE_CODECS_ERROR = "bufferIncompatibleCodecsError",    BUFFER_APPEND_ERROR = "bufferAppendError",    BUFFER_APPENDING_ERROR = "bufferAppendingError",    BUFFER_STALLED_ERROR = "bufferStalledError",    BUFFER_FULL_ERROR = "bufferFullError",    BUFFER_SEEK_OVER_HOLE = "bufferSeekOverHole",    BUFFER_NUDGE_ON_STALL = "bufferNudgeOnStall",    INTERNAL_EXCEPTION = "internalException",    INTERNAL_ABORTED = "aborted",    UNKNOWN = "unknown"}export declare enum ErrorTypes {    NETWORK_ERROR = "networkError",    MEDIA_ERROR = "mediaError",    KEY_SYSTEM_ERROR = "keySystemError",    MUX_ERROR = "muxError",    OTHER_ERROR = "otherError"}export declare enum Events {    MEDIA_ATTACHING = "hlsMediaAttaching",    MEDIA_ATTACHED = "hlsMediaAttached",    MEDIA_DETACHING = "hlsMediaDetaching",    MEDIA_DETACHED = "hlsMediaDetached",    BUFFER_RESET = "hlsBufferReset",    BUFFER_CODECS = "hlsBufferCodecs",    BUFFER_CREATED = "hlsBufferCreated",    BUFFER_APPENDING = "hlsBufferAppending",    BUFFER_APPENDED = "hlsBufferAppended",    BUFFER_EOS = "hlsBufferEos",    BUFFER_FLUSHING = "hlsBufferFlushing",    BUFFER_FLUSHED = "hlsBufferFlushed",    MANIFEST_LOADING = "hlsManifestLoading",    MANIFEST_LOADED = "hlsManifestLoaded",    MANIFEST_PARSED = "hlsManifestParsed",    LEVEL_SWITCHING = "hlsLevelSwitching",    LEVEL_SWITCHED = "hlsLevelSwitched",    LEVEL_LOADING = "hlsLevelLoading",    LEVEL_LOADED = "hlsLevelLoaded",    LEVEL_UPDATED = "hlsLevelUpdated",    LEVEL_PTS_UPDATED = "hlsLevelPtsUpdated",    LEVELS_UPDATED = "hlsLevelsUpdated",    AUDIO_TRACKS_UPDATED = "hlsAudioTracksUpdated",    AUDIO_TRACK_SWITCHING = "hlsAudioTrackSwitching",    AUDIO_TRACK_SWITCHED = "hlsAudioTrackSwitched",    AUDIO_TRACK_LOADING = "hlsAudioTrackLoading",    AUDIO_TRACK_LOADED = "hlsAudioTrackLoaded",    SUBTITLE_TRACKS_UPDATED = "hlsSubtitleTracksUpdated",    SUBTITLE_TRACKS_CLEARED = "hlsSubtitleTracksCleared",    SUBTITLE_TRACK_SWITCH = "hlsSubtitleTrackSwitch",    SUBTITLE_TRACK_LOADING = "hlsSubtitleTrackLoading",    SUBTITLE_TRACK_LOADED = "hlsSubtitleTrackLoaded",    SUBTITLE_FRAG_PROCESSED = "hlsSubtitleFragProcessed",    CUES_PARSED = "hlsCuesParsed",    NON_NATIVE_TEXT_TRACKS_FOUND = "hlsNonNativeTextTracksFound",    INIT_PTS_FOUND = "hlsInitPtsFound",    FRAG_LOADING = "hlsFragLoading",    FRAG_LOAD_EMERGENCY_ABORTED = "hlsFragLoadEmergencyAborted",    FRAG_LOADED = "hlsFragLoaded",    FRAG_DECRYPTED = "hlsFragDecrypted",    FRAG_PARSING_INIT_SEGMENT = "hlsFragParsingInitSegment",    FRAG_PARSING_USERDATA = "hlsFragParsingUserdata",    FRAG_PARSING_METADATA = "hlsFragParsingMetadata",    FRAG_PARSED = "hlsFragParsed",    FRAG_BUFFERED = "hlsFragBuffered",    FRAG_CHANGED = "hlsFragChanged",    FPS_DROP = "hlsFpsDrop",    FPS_DROP_LEVEL_CAPPING = "hlsFpsDropLevelCapping",    MAX_AUTO_LEVEL_UPDATED = "hlsMaxAutoLevelUpdated",    ERROR = "hlsError",    DESTROYING = "hlsDestroying",    KEY_LOADING = "hlsKeyLoading",    KEY_LOADED = "hlsKeyLoaded",    LIVE_BACK_BUFFER_REACHED = "hlsLiveBackBufferReached",    BACK_BUFFER_REACHED = "hlsBackBufferReached",    STEERING_MANIFEST_LOADED = "hlsSteeringManifestLoaded"}declare class EwmaBandWidthEstimator {    private defaultEstimate_;    private minWeight_;    private minDelayMs_;    private slow_;    private fast_;    private defaultTTFB_;    private ttfb_;    constructor(slow: number, fast: number, defaultEstimate: number, defaultTTFB?: number);    update(slow: number, fast: number): void;    sample(durationMs: number, numBytes: number): void;    sampleTTFB(ttfb: number): void;    canEstimate(): boolean;    getEstimate(): number;    getEstimateTTFB(): number;    destroy(): void;}declare type ExtendedSourceBuffer = SourceBuffer & {    ended?: boolean;    ending?: boolean;    changeType?: (type: string) => void;};export declare class FPSController implements ComponentAPI {    private hls;    private isVideoPlaybackQualityAvailable;    private timer?;    private media;    private lastTime;    private lastDroppedFrames;    private lastDecodedFrames;    private streamController;    constructor(hls: Hls);    setStreamController(streamController: StreamController): void;    protected registerListeners(): void;    protected unregisterListeners(): void;    destroy(): void;    protected onMediaAttaching(event: Events.MEDIA_ATTACHING, data: MediaAttachingData): void;    checkFPS(video: HTMLVideoElement, decodedFrames: number, droppedFrames: number): void;    checkFPSInterval(): void;}export declare type FPSControllerConfig = {    capLevelOnFPSDrop: boolean;    fpsDroppedMonitoringPeriod: number;    fpsDroppedMonitoringThreshold: number;};export declare interface FPSDropData {    currentDropped: number;    currentDecoded: number;    totalDroppedFrames: number;}export declare interface FPSDropLevelCappingData {    droppedLevel: number;    level: number;}export declare interface FragBufferedData {    stats: LoadStats;    frag: Fragment;    part: Part | null;    id: string;}export declare interface FragChangedData {    frag: Fragment;}export declare interface FragDecryptedData {    frag: Fragment;    payload: ArrayBuffer;    stats: {        tstart: number;        tdecrypt: number;    };}export declare interface FragLoadedData {    frag: Fragment;    part: Part | null;    payload: ArrayBuffer;    networkDetails: unknown;}export declare interface FragLoadEmergencyAbortedData {    frag: Fragment;    part: Part | null;    stats: LoaderStats;}declare interface FragLoadFailResult extends ErrorData {    frag: Fragment;    part?: Part;    response?: {        data: any;        code: number;        text: string;        url: string;    };    networkDetails: any;}export declare interface FragLoadingData {    frag: Fragment;    part?: Part;    targetBufferTime: number | null;}/** * Object representing parsed data from an HLS Segment. Found in {@link hls.js#LevelDetails.fragments}. */export declare class Fragment extends BaseSegment {    private _decryptdata;    rawProgramDateTime: string | null;    programDateTime: number | null;    tagList: Array<string[]>;    duration: number;    sn: number | 'initSegment';    levelkeys?: {        [key: string]: LevelKey;    };    readonly type: PlaylistLevelType;    loader: Loader<FragmentLoaderContext> | null;    keyLoader: Loader<KeyLoaderContext> | null;    level: number;    cc: number;    startPTS?: number;    endPTS?: number;    startDTS: number;    endDTS: number;    start: number;    deltaPTS?: number;    maxStartPTS?: number;    minEndPTS?: number;    stats: LoadStats;    data?: Uint8Array;    bitrateTest: boolean;    title: string | null;    initSegment: Fragment | null;    endList?: boolean;    gap?: boolean;    urlId: number;    constructor(type: PlaylistLevelType, baseurl: string);    get decryptdata(): LevelKey | null;    get end(): number;    get endProgramDateTime(): number | null;    get encrypted(): boolean;    setKeyFormat(keyFormat: KeySystemFormats): void;    abortRequests(): void;    setElementaryStreamInfo(type: ElementaryStreamTypes, startPTS: number, endPTS: number, startDTS: number, endDTS: number, partial?: boolean): void;    clearElementaryStreamInfo(): void;}declare class FragmentLoader {    private readonly config;    private loader;    private partLoadTimeout;    constructor(config: HlsConfig);    destroy(): void;    abort(): void;    load(frag: Fragment, onProgress?: FragmentLoadProgressCallback): Promise<FragLoadedData>;    loadPart(frag: Fragment, part: Part, onProgress: FragmentLoadProgressCallback): Promise<FragLoadedData>;    private updateStatsFromPart;    private resetLoader;}/** * @deprecated use fragLoadPolicy.default */export declare type FragmentLoaderConfig = {    fragLoadingTimeOut: number;    fragLoadingMaxRetry: number;    fragLoadingRetryDelay: number;    fragLoadingMaxRetryTimeout: number;};export declare interface FragmentLoaderConstructor {    new (confg: HlsConfig): Loader<FragmentLoaderContext>;}export declare interface FragmentLoaderContext extends LoaderContext {    frag: Fragment;    part: Part | null;    resetIV?: boolean;}declare type FragmentLoadProgressCallback = (result: FragLoadedData | PartsLoadedData) => void;declare const enum FragmentState {    NOT_LOADED = "NOT_LOADED",    APPENDING = "APPENDING",    PARTIAL = "PARTIAL",    OK = "OK"}declare class FragmentTracker implements ComponentAPI {    private activePartLists;    private endListFragments;    private fragments;    private timeRanges;    private bufferPadding;    private hls;    private hasGaps;    constructor(hls: Hls);    private _registerListeners;    private _unregisterListeners;    destroy(): void;    /**     * Return a Fragment or Part with an appended range that matches the position and levelType     * Otherwise, return null     */    getAppendedFrag(position: number, levelType: PlaylistLevelType): Fragment | Part | null;    /**     * Return a buffered Fragment that matches the position and levelType.     * A buffered Fragment is one whose loading, parsing and appending is done (completed or "partial" meaning aborted).     * If not found any Fragment, return null     */    getBufferedFrag(position: number, levelType: PlaylistLevelType): Fragment | null;    /**     * Partial fragments effected by coded frame eviction will be removed     * The browser will unload parts of the buffer to free up memory for new buffer data     * Fragments will need to be reloaded when the buffer is freed up, removing partial fragments will allow them to reload(since there might be parts that are still playable)     */    detectEvictedFragments(elementaryStream: SourceBufferName, timeRange: TimeRanges, playlistType: PlaylistLevelType, appendedPart?: Part | null): void;    /**     * Checks if the fragment passed in is loaded in the buffer properly     * Partially loaded fragments will be registered as a partial fragment     */    detectPartialFragments(data: FragBufferedData): void;    private removeParts;    fragBuffered(frag: Fragment, force?: true): void;    private getBufferedTimes;    /**     * Gets the partial fragment for a certain time     */    getPartialFragment(time: number): Fragment | null;    isEndListAppended(type: PlaylistLevelType): boolean;    getState(fragment: Fragment): FragmentState;    private isTimeBuffered;    private onFragLoaded;    private onBufferAppended;    private onFragBuffered;    private hasFragment;    hasParts(type: PlaylistLevelType): boolean;    removeFragmentsInRange(start: number, end: number, playlistType: PlaylistLevelType, withGapOnly?: boolean, unbufferedOnly?: boolean): void;    removeFragment(fragment: Fragment): void;    removeAllFragments(): void;}export declare interface FragParsedData {    frag: Fragment;    part: Part | null;}export declare interface FragParsingInitSegmentData {}export declare interface FragParsingMetadataData {    id: string;    frag: Fragment;    details: LevelDetails;    samples: MetadataSample[];}export declare interface FragParsingUserdataData {    id: string;    frag: Fragment;    details: LevelDetails;    samples: UserdataSample[];}export declare type HdcpLevel = (typeof HdcpLevels)[number];declare const HdcpLevels: readonly ["NONE", "TYPE-0", "TYPE-1", null];/** * The `Hls` class is the core of the HLS.js library used to instantiate player instances. * @public */declare class Hls implements HlsEventEmitter {    private static defaultConfig;    /**     * The runtime configuration used by the player. At instantiation this is combination of `hls.userConfig` merged over `Hls.DefaultConfig`.     */    readonly config: HlsConfig;    /**     * The configuration object provided on player instantiation.     */    readonly userConfig: Partial<HlsConfig>;    private coreComponents;    private networkControllers;    private started;    private _emitter;    private _autoLevelCapping;    private _maxHdcpLevel;    private abrController;    private bufferController;    private capLevelController;    private latencyController;    private levelController;    private streamController;    private audioTrackController;    private subtitleTrackController;    private emeController;    private cmcdController;    private _media;    private url;    private triggeringException?;    /**     * Get the video-dev/hls.js package version.     */    static get version(): string;    /**     * Check if the required MediaSource Extensions are available.     */    static isMSESupported(): boolean;    /**     * Check if MediaSource Extensions are available and isTypeSupported checks pass for any baseline codecs.     */    static isSupported(): boolean;    /**     * Get the MediaSource global used for MSE playback (ManagedMediaSource, MediaSource, or WebKitMediaSource).     */    static getMediaSource(): typeof MediaSource | undefined;    static get Events(): typeof Events;    static get ErrorTypes(): typeof ErrorTypes;    static get ErrorDetails(): typeof ErrorDetails;    /**     * Get the default configuration applied to new instances.     */    static get DefaultConfig(): HlsConfig;    /**     * Replace the default configuration applied to new instances.     */    static set DefaultConfig(defaultConfig: HlsConfig);    /**     * Creates an instance of an HLS client that can attach to exactly one `HTMLMediaElement`.     * @param userConfig - Configuration options applied over `Hls.DefaultConfig`     */    constructor(userConfig?: Partial<HlsConfig>);    createController(ControllerClass: any, components: any): any;    on<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;    once<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;    removeAllListeners<E extends keyof HlsListeners>(event?: E | undefined): void;    off<E extends keyof HlsListeners, Context = undefined>(event: E, listener?: HlsListeners[E] | undefined, context?: Context, once?: boolean | undefined): void;    listeners<E extends keyof HlsListeners>(event: E): HlsListeners[E][];    emit<E extends keyof HlsListeners>(event: E, name: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;    trigger<E extends keyof HlsListeners>(event: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;    listenerCount<E extends keyof HlsListeners>(event: E): number;    /**     * Dispose of the instance     */    destroy(): void;    /**     * Attaches Hls.js to a media element     */    attachMedia(media: HTMLMediaElement): void;    /**     * Detach Hls.js from the media     */    detachMedia(): void;    /**     * Set the source URL. Can be relative or absolute.     */    loadSource(url: string): void;    /**     * Start loading data from the stream source.     * Depending on default config, client starts loading automatically when a source is set.     *     * @param startPosition - Set the start position to stream from.     * Defaults to -1 (None: starts from earliest point)     */    startLoad(startPosition?: number): void;    /**     * Stop loading of any stream data.     */    stopLoad(): void;    /**     * Resumes stream controller segment loading if previously started.     */    resumeBuffering(): void;    /**     * Stops stream controller segment loading without changing 'started' state like stopLoad().     * This allows for media buffering to be paused without interupting playlist loading.     */    pauseBuffering(): void;    /**     * Swap through possible audio codecs in the stream (for example to switch from stereo to 5.1)     */    swapAudioCodec(): void;    /**     * When the media-element fails, this allows to detach and then re-attach it     * as one call (convenience method).     *     * Automatic recovery of media-errors by this process is configurable.     */    recoverMediaError(): void;    removeLevel(levelIndex: number): void;    /**     * @returns an array of levels (variants) sorted by HDCP-LEVEL, RESOLUTION (height), FRAME-RATE, CODECS, VIDEO-RANGE, and BANDWIDTH     */    get levels(): Level[];    /**     * Index of quality level (variant) currently played     */    get currentLevel(): number;    /**     * Set quality level index immediately. This will flush the current buffer to replace the quality asap. That means playback will interrupt at least shortly to re-buffer and re-sync eventually. Set to -1 for automatic level selection.     */    set currentLevel(newLevel: number);    /**     * Index of next quality level loaded as scheduled by stream controller.     */    get nextLevel(): number;    /**     * Set quality level index for next loaded data.     * This will switch the video quality asap, without interrupting playback.     * May abort current loading of data, and flush parts of buffer (outside currently played fragment region).     * @param newLevel - Pass -1 for automatic level selection     */    set nextLevel(newLevel: number);    /**     * Return the quality level of the currently or last (of none is loaded currently) segment     */    get loadLevel(): number;    /**     * Set quality level index for next loaded data in a conservative way.     * This will switch the quality without flushing, but interrupt current loading.     * Thus the moment when the quality switch will appear in effect will only be after the already existing buffer.     * @param newLevel - Pass -1 for automatic level selection     */    set loadLevel(newLevel: number);    /**     * get next quality level loaded     */    get nextLoadLevel(): number;    /**     * Set quality level of next loaded segment in a fully "non-destructive" way.     * Same as `loadLevel` but will wait for next switch (until current loading is done).     */    set nextLoadLevel(level: number);    /**     * Return "first level": like a default level, if not set,     * falls back to index of first level referenced in manifest     */    get firstLevel(): number;    /**     * Sets "first-level", see getter.     */    set firstLevel(newLevel: number);    /**     * Return the desired start level for the first fragment that will be loaded.     * The default value of -1 indicates automatic start level selection.     * Setting hls.nextAutoLevel without setting a startLevel will result in     * the nextAutoLevel value being used for one fragment load.     */    get startLevel(): number;    /**     * set  start level (level of first fragment that will be played back)     * if not overrided by user, first level appearing in manifest will be used as start level     * if -1 : automatic start level selection, playback will start from level matching download bandwidth     * (determined from download of first segment)     */    set startLevel(newLevel: number);    /**     * Whether level capping is enabled.     * Default value is set via `config.capLevelToPlayerSize`.     */    get capLevelToPlayerSize(): boolean;    /**     * Enables or disables level capping. If disabled after previously enabled, `nextLevelSwitch` will be immediately called.     */    set capLevelToPlayerSize(shouldStartCapping: boolean);    /**     * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)     */    get autoLevelCapping(): number;    /**     * Returns the current bandwidth estimate in bits per second, when available. Otherwise, `NaN` is returned.     */    get bandwidthEstimate(): number;    set bandwidthEstimate(abrEwmaDefaultEstimate: number);    /**     * get time to first byte estimate     * @type {number}     */    get ttfbEstimate(): number;    /**     * Capping/max level value that should be used by automatic level selection algorithm (`ABRController`)     */    set autoLevelCapping(newLevel: number);    get maxHdcpLevel(): HdcpLevel;    set maxHdcpLevel(value: HdcpLevel);    /**     * True when automatic level selection enabled     */    get autoLevelEnabled(): boolean;    /**     * Level set manually (if any)     */    get manualLevel(): number;    /**     * min level selectable in auto mode according to config.minAutoBitrate     */    get minAutoLevel(): number;    /**     * max level selectable in auto mode according to autoLevelCapping     */    get maxAutoLevel(): number;    get firstAutoLevel(): number;    /**     * next automatically selected quality level     */    get nextAutoLevel(): number;    /**     * this setter is used to force next auto level.     * this is useful to force a switch down in auto mode:     * in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example)     * forced value is valid for one fragment. upon successful frag loading at forced level,     * this value will be resetted to -1 by ABR controller.     */    set nextAutoLevel(nextLevel: number);    /**     * get the datetime value relative to media.currentTime for the active level Program Date Time if present     */    get playingDate(): Date | null;    get mainForwardBufferInfo(): BufferInfo | null;    /**     * Find and select the best matching audio track, making a level switch when a Group change is necessary.     * Updates `hls.config.audioPreference`. Returns the selected track, or null when no matching track is found.     */    setAudioOption(audioOption: MediaPlaylist | AudioSelectionOption | undefined): MediaPlaylist | null;    /**     * Find and select the best matching subtitle track, making a level switch when a Group change is necessary.     * Updates `hls.config.subtitlePreference`. Returns the selected track, or null when no matching track is found.     */    setSubtitleOption(subtitleOption: MediaPlaylist | SubtitleSelectionOption | undefined): MediaPlaylist | null;    /**     * Get the complete list of audio tracks across all media groups     */    get allAudioTracks(): Array<MediaPlaylist>;    /**     * Get the list of selectable audio tracks     */    get audioTracks(): Array<MediaPlaylist>;    /**     * index of the selected audio track (index in audio track lists)     */    get audioTrack(): number;    /**     * selects an audio track, based on its index in audio track lists     */    set audioTrack(audioTrackId: number);    /**     * get the complete list of subtitle tracks across all media groups     */    get allSubtitleTracks(): Array<MediaPlaylist>;    /**     * get alternate subtitle tracks list from playlist     */    get subtitleTracks(): Array<MediaPlaylist>;    /**     * index of the selected subtitle track (index in subtitle track lists)     */    get subtitleTrack(): number;    get media(): HTMLMediaElement | null;    /**     * select an subtitle track, based on its index in subtitle track lists     */    set subtitleTrack(subtitleTrackId: number);    /**     * Whether subtitle display is enabled or not     */    get subtitleDisplay(): boolean;    /**     * Enable/disable subtitle display rendering     */    set subtitleDisplay(value: boolean);    /**     * get mode for Low-Latency HLS loading     */    get lowLatencyMode(): boolean;    /**     * Enable/disable Low-Latency HLS part playlist and segment loading, and start live streams at playlist PART-HOLD-BACK rather than HOLD-BACK.     */    set lowLatencyMode(mode: boolean);    /**     * Position (in seconds) of live sync point (ie edge of live position minus safety delay defined by ```hls.config.liveSyncDuration```)     * @returns null prior to loading live Playlist     */    get liveSyncPosition(): number | null;    /**     * Estimated position (in seconds) of live edge (ie edge of live playlist plus time sync playlist advanced)     * @returns 0 before first playlist is loaded     */    get latency(): number;    /**     * maximum distance from the edge before the player seeks forward to ```hls.liveSyncPosition```     * configured using ```liveMaxLatencyDurationCount``` (multiple of target duration) or ```liveMaxLatencyDuration```     * @returns 0 before first playlist is loaded     */    get maxLatency(): number;    /**     * target distance from the edge as calculated by the latency controller     */    get targetLatency(): number | null;    /**     * the rate at which the edge of the current live playlist is advancing or 1 if there is none     */    get drift(): number | null;    /**     * set to true when startLoad is called before MANIFEST_PARSED event     */    get forceStartLoad(): boolean;}export default Hls;export declare interface HlsChunkPerformanceTiming extends HlsPerformanceTiming {    executeStart: number;    executeEnd: number;}export declare type HlsConfig = {    debug: boolean | ILogger;    enableWorker: boolean;    workerPath: null | string;    enableSoftwareAES: boolean;    minAutoBitrate: number;    ignoreDevicePixelRatio: boolean;    preferManagedMediaSource: boolean;    loader: {        new (confg: HlsConfig): Loader<LoaderContext>;    };    fLoader?: FragmentLoaderConstructor;    pLoader?: PlaylistLoaderConstructor;    fetchSetup?: (context: LoaderContext, initParams: any) => Request;    xhrSetup?: (xhr: XMLHttpRequest, url: string) => Promise<void> | void;    audioStreamController?: typeof AudioStreamController;    audioTrackController?: typeof AudioTrackController;    subtitleStreamController?: typeof SubtitleStreamController;    subtitleTrackController?: typeof SubtitleTrackController;    timelineController?: typeof TimelineController;    emeController?: typeof EMEController;    cmcd?: CMCDControllerConfig;    cmcdController?: typeof CMCDController;    contentSteeringController?: typeof ContentSteeringController;    useMediaCapabilities: boolean;    abrController: typeof AbrController;    bufferController: typeof BufferController;    capLevelController: typeof CapLevelController;    errorController: typeof ErrorController;    fpsController: typeof FPSController;    progressive: boolean;    lowLatencyMode: boolean;} & ABRControllerConfig & BufferControllerConfig & CapLevelControllerConfig & EMEControllerConfig & FPSControllerConfig & LevelControllerConfig & MP4RemuxerConfig & StreamControllerConfig & SelectionPreferences & LatencyControllerConfig & MetadataControllerConfig & TimelineControllerConfig & TSDemuxerConfig & HlsLoadPolicies & FragmentLoaderConfig & PlaylistLoaderConfig;export declare interface HlsEventEmitter {    on<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;    once<E extends keyof HlsListeners, Context = undefined>(event: E, listener: HlsListeners[E], context?: Context): void;    removeAllListeners<E extends keyof HlsListeners>(event?: E): void;    off<E extends keyof HlsListeners, Context = undefined>(event: E, listener?: HlsListeners[E], context?: Context, once?: boolean): void;    listeners<E extends keyof HlsListeners>(event: E): HlsListeners[E][];    emit<E extends keyof HlsListeners>(event: E, name: E, eventObject: Parameters<HlsListeners[E]>[1]): boolean;    listenerCount<E extends keyof HlsListeners>(event: E): number;}/** * Defines each Event type and payload by Event name. Used in {@link hls.js#HlsEventEmitter} to strongly type the event listener API. */export declare interface HlsListeners {    [Events.MEDIA_ATTACHING]: (event: Events.MEDIA_ATTACHING, data: MediaAttachingData) => void;    [Events.MEDIA_ATTACHED]: (event: Events.MEDIA_ATTACHED, data: MediaAttachedData) => void;    [Events.MEDIA_DETACHING]: (event: Events.MEDIA_DETACHING) => void;    [Events.MEDIA_DETACHED]: (event: Events.MEDIA_DETACHED) => void;    [Events.BUFFER_RESET]: (event: Events.BUFFER_RESET) => void;    [Events.BUFFER_CODECS]: (event: Events.BUFFER_CODECS, data: BufferCodecsData) => void;    [Events.BUFFER_CREATED]: (event: Events.BUFFER_CREATED, data: BufferCreatedData) => void;    [Events.BUFFER_APPENDING]: (event: Events.BUFFER_APPENDING, data: BufferAppendingData) => void;    [Events.BUFFER_APPENDED]: (event: Events.BUFFER_APPENDED, data: BufferAppendedData) => void;    [Events.BUFFER_EOS]: (event: Events.BUFFER_EOS, data: BufferEOSData) => void;    [Events.BUFFER_FLUSHING]: (event: Events.BUFFER_FLUSHING, data: BufferFlushingData) => void;    [Events.BUFFER_FLUSHED]: (event: Events.BUFFER_FLUSHED, data: BufferFlushedData) => void;    [Events.MANIFEST_LOADING]: (event: Events.MANIFEST_LOADING, data: ManifestLoadingData) => void;    [Events.MANIFEST_LOADED]: (event: Events.MANIFEST_LOADED, data: ManifestLoadedData) => void;    [Events.MANIFEST_PARSED]: (event: Events.MANIFEST_PARSED, data: ManifestParsedData) => void;    [Events.LEVEL_SWITCHING]: (event: Events.LEVEL_SWITCHING, data: LevelSwitchingData) => void;    [Events.LEVEL_SWITCHED]: (event: Events.LEVEL_SWITCHED, data: LevelSwitchedData) => void;    [Events.LEVEL_LOADING]: (event: Events.LEVEL_LOADING, data: LevelLoadingData) => void;    [Events.LEVEL_LOADED]: (event: Events.LEVEL_LOADED, data: LevelLoadedData) => void;    [Events.LEVEL_UPDATED]: (event: Events.LEVEL_UPDATED, data: LevelUpdatedData) => void;    [Events.LEVEL_PTS_UPDATED]: (event: Events.LEVEL_PTS_UPDATED, data: LevelPTSUpdatedData) => void;    [Events.LEVELS_UPDATED]: (event: Events.LEVELS_UPDATED, data: LevelsUpdatedData) => void;    [Events.AUDIO_TRACKS_UPDATED]: (event: Events.AUDIO_TRACKS_UPDATED, data: AudioTracksUpdatedData) => void;    [Events.AUDIO_TRACK_SWITCHING]: (event: Events.AUDIO_TRACK_SWITCHING, data: AudioTrackSwitchingData) => void;    [Events.AUDIO_TRACK_SWITCHED]: (event: Events.AUDIO_TRACK_SWITCHED, data: AudioTrackSwitchedData) => void;    [Events.AUDIO_TRACK_LOADING]: (event: Events.AUDIO_TRACK_LOADING, data: TrackLoadingData) => void;    [Events.AUDIO_TRACK_LOADED]: (event: Events.AUDIO_TRACK_LOADED, data: AudioTrackLoadedData) => void;    [Events.SUBTITLE_TRACKS_UPDATED]: (event: Events.SUBTITLE_TRACKS_UPDATED, data: SubtitleTracksUpdatedData) => void;    [Events.SUBTITLE_TRACKS_CLEARED]: (event: Events.SUBTITLE_TRACKS_CLEARED) => void;    [Events.SUBTITLE_TRACK_SWITCH]: (event: Events.SUBTITLE_TRACK_SWITCH, data: SubtitleTrackSwitchData) => void;    [Events.SUBTITLE_TRACK_LOADING]: (event: Events.SUBTITLE_TRACK_LOADING, data: TrackLoadingData) => void;    [Events.SUBTITLE_TRACK_LOADED]: (event: Events.SUBTITLE_TRACK_LOADED, data: SubtitleTrackLoadedData) => void;    [Events.SUBTITLE_FRAG_PROCESSED]: (event: Events.SUBTITLE_FRAG_PROCESSED, data: SubtitleFragProcessedData) => void;    [Events.CUES_PARSED]: (event: Events.CUES_PARSED, data: CuesParsedData) => void;    [Events.NON_NATIVE_TEXT_TRACKS_FOUND]: (event: Events.NON_NATIVE_TEXT_TRACKS_FOUND, data: NonNativeTextTracksData) => void;    [Events.INIT_PTS_FOUND]: (event: Events.INIT_PTS_FOUND, data: InitPTSFoundData) => void;    [Events.FRAG_LOADING]: (event: Events.FRAG_LOADING, data: FragLoadingData) => void;    [Events.FRAG_LOAD_EMERGENCY_ABORTED]: (event: Events.FRAG_LOAD_EMERGENCY_ABORTED, data: FragLoadEmergencyAbortedData) => void;    [Events.FRAG_LOADED]: (event: Events.FRAG_LOADED, data: FragLoadedData) => void;    [Events.FRAG_DECRYPTED]: (event: Events.FRAG_DECRYPTED, data: FragDecryptedData) => void;    [Events.FRAG_PARSING_INIT_SEGMENT]: (event: Events.FRAG_PARSING_INIT_SEGMENT, data: FragParsingInitSegmentData) => void;    [Events.FRAG_PARSING_USERDATA]: (event: Events.FRAG_PARSING_USERDATA, data: FragParsingUserdataData) => void;    [Events.FRAG_PARSING_METADATA]: (event: Events.FRAG_PARSING_METADATA, data: FragParsingMetadataData) => void;    [Events.FRAG_PARSED]: (event: Events.FRAG_PARSED, data: FragParsedData) => void;    [Events.FRAG_BUFFERED]: (event: Events.FRAG_BUFFERED, data: FragBufferedData) => void;    [Events.FRAG_CHANGED]: (event: Events.FRAG_CHANGED, data: FragChangedData) => void;    [Events.FPS_DROP]: (event: Events.FPS_DROP, data: FPSDropData) => void;    [Events.FPS_DROP_LEVEL_CAPPING]: (event: Events.FPS_DROP_LEVEL_CAPPING, data: FPSDropLevelCappingData) => void;    [Events.MAX_AUTO_LEVEL_UPDATED]: (event: Events.MAX_AUTO_LEVEL_UPDATED, data: MaxAutoLevelUpdatedData) => void;    [Events.ERROR]: (event: Events.ERROR, data: ErrorData) => void;    [Events.DESTROYING]: (event: Events.DESTROYING) => void;    [Events.KEY_LOADING]: (event: Events.KEY_LOADING, data: KeyLoadingData) => void;    [Events.KEY_LOADED]: (event: Events.KEY_LOADED, data: KeyLoadedData) => void;    [Events.LIVE_BACK_BUFFER_REACHED]: (event: Events.LIVE_BACK_BUFFER_REACHED, data: LiveBackBufferData) => void;    [Events.BACK_BUFFER_REACHED]: (event: Events.BACK_BUFFER_REACHED, data: BackBufferData) => void;    [Events.STEERING_MANIFEST_LOADED]: (event: Events.STEERING_MANIFEST_LOADED, data: SteeringManifestLoadedData) => void;}export declare type HlsLoadPolicies = {    fragLoadPolicy: LoadPolicy;    keyLoadPolicy: LoadPolicy;    certLoadPolicy: LoadPolicy;    playlistLoadPolicy: LoadPolicy;    manifestLoadPolicy: LoadPolicy;    steeringManifestLoadPolicy: LoadPolicy;};export declare interface HlsPerformanceTiming {    start: number;    end: number;}export declare interface HlsProgressivePerformanceTiming extends HlsPerformanceTiming {    first: number;}export declare const enum HlsSkip {    No = "",    Yes = "YES",    v2 = "v2"}export declare class HlsUrlParameters {    msn?: number;    part?: number;    skip?: HlsSkip;    constructor(msn?: number, part?: number, skip?: HlsSkip);    addDirectives(uri: string): string | never;}export declare type IErrorAction = {    action: NetworkErrorAction;    flags: ErrorActionFlags;    retryCount?: number;    retryConfig?: RetryConfig;    hdcpLevel?: HdcpLevel;    nextAutoLevel?: number;    resolved?: boolean;};declare interface ILogFunction {    (message?: any, ...optionalParams: any[]): void;}export declare interface ILogger {    trace: ILogFunction;    debug: ILogFunction;    log: ILogFunction;    warn: ILogFunction;    info: ILogFunction;    error: ILogFunction;}export declare interface InitPTSFoundData {    id: string;    frag: Fragment;    initPTS: number;    timescale: number;}declare interface InitSegmentData {    tracks?: TrackSet;    initPTS: number | undefined;    timescale: number | undefined;}export declare interface KeyLoadedData {    frag: Fragment;    keyInfo: KeyLoaderInfo;}declare class KeyLoader implements ComponentAPI {    private readonly config;    keyUriToKeyInfo: {        [keyuri: string]: KeyLoaderInfo;    };    emeController: EMEController | null;    constructor(config: HlsConfig);    abort(type?: PlaylistLevelType): void;    detach(): void;    destroy(): void;    createKeyLoadError(frag: Fragment, details: ErrorDetails | undefined, error: Error, networkDetails?: any, response?: {        url: string;        data: undefined;        code: number;        text: string;    }): LoadError;    loadClear(loadingFrag: Fragment, encryptedFragments: Fragment[]): void | Promise<void>;    load(frag: Fragment): Promise<KeyLoadedData>;    loadInternal(frag: Fragment, keySystemFormat?: KeySystemFormats): Promise<KeyLoadedData>;    loadKeyEME(keyInfo: KeyLoaderInfo, frag: Fragment): Promise<KeyLoadedData>;    loadKeyHTTP(keyInfo: KeyLoaderInfo, frag: Fragment): Promise<KeyLoadedData>;    private resetLoader;}declare interface KeyLoaderContext extends LoaderContext {    keyInfo: KeyLoaderInfo;    frag: Fragment;}declare interface KeyLoaderInfo {    decryptdata: LevelKey;    keyLoadPromise: Promise<KeyLoadedData> | null;    loader: Loader<KeyLoaderContext> | null;    mediaKeySessionContext: MediaKeySessionContext | null;}export declare interface KeyLoadingData {    frag: Fragment;}export declare const enum KeySystemFormats {    CLEARKEY = "org.w3.clearkey",    FAIRPLAY = "com.apple.streamingkeydelivery",    PLAYREADY = "com.microsoft.playready",    WIDEVINE = "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"}/** * @see https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMediaKeySystemAccess */export declare const enum KeySystems {    CLEARKEY = "org.w3.clearkey",    FAIRPLAY = "com.apple.fps",    PLAYREADY = "com.microsoft.playready",    WIDEVINE = "com.widevine.alpha"}export declare type LatencyControllerConfig = {    liveSyncDurationCount: number;    liveMaxLatencyDurationCount: number;    liveSyncDuration?: number;    liveMaxLatencyDuration?: number;    maxLiveSyncPlaybackRate: number;};export declare class Level {    readonly _attrs: LevelAttributes[];    readonly audioCodec: string | undefined;    readonly bitrate: number;    readonly codecSet: string;    readonly url: string[];    readonly frameRate: number;    readonly height: number;    readonly id: number;    readonly name: string;    readonly videoCodec: string | undefined;    readonly width: number;    details?: LevelDetails;    fragmentError: number;    loadError: number;    loaded?: {        bytes: number;        duration: number;    };    realBitrate: number;    supportedPromise?: Promise<MediaDecodingInfo>;    supportedResult?: MediaDecodingInfo;    private _avgBitrate;    private _audioGroups?;    private _subtitleGroups?;    private readonly _urlId;    constructor(data: LevelParsed | MediaPlaylist);    get maxBitrate(): number;    get averageBitrate(): number;    get attrs(): LevelAttributes;    get codecs(): string;    get pathwayId(): string;    get videoRange(): VideoRange;    get score(): number;    get uri(): string;    hasAudioGroup(groupId: string | undefined): boolean;    hasSubtitleGroup(groupId: string | undefined): boolean;    get audioGroups(): (string | undefined)[] | undefined;    get subtitleGroups(): (string | undefined)[] | undefined;    addGroupId(type: string, groupId: string | undefined): void;    get urlId(): number;    set urlId(value: number);    get audioGroupIds(): (string | undefined)[] | undefined;    get textGroupIds(): (string | undefined)[] | undefined;    get audioGroupId(): string | undefined;    get textGroupId(): string | undefined;    addFallback(): void;}export declare interface LevelAttributes extends AttrList {    'ALLOWED-CPC'?: string;    AUDIO?: string;    'AVERAGE-BANDWIDTH'?: string;    BANDWIDTH?: string;    'CLOSED-CAPTIONS'?: string;    CODECS?: string;    'FRAME-RATE'?: string;    'HDCP-LEVEL'?: 'TYPE-0' | 'TYPE-1' | 'NONE';    'PATHWAY-ID'?: string;    RESOLUTION?: string;    SCORE?: string;    'STABLE-VARIANT-ID'?: string;    SUBTITLES?: string;    'SUPPLEMENTAL-CODECS'?: string;    VIDEO?: string;    'VIDEO-RANGE'?: VideoRange;}export declare type LevelControllerConfig = {    startLevel?: number;};/** * Object representing parsed data from an HLS Media Playlist. Found in {@link hls.js#Level.details}. */export declare class LevelDetails {    PTSKnown: boolean;    alignedSliding: boolean;    averagetargetduration?: number;    endCC: number;    endSN: number;    fragments: Fragment[];    fragmentHint?: Fragment;    partList: Part[] | null;    dateRanges: Record<string, DateRange>;    live: boolean;    ageHeader: number;    advancedDateTime?: number;    updated: boolean;    advanced: boolean;    availabilityDelay?: number;    misses: number;    startCC: number;    startSN: number;    startTimeOffset: number | null;    targetduration: number;    totalduration: number;    type: string | null;    url: string;    m3u8: string;    version: number | null;    canBlockReload: boolean;    canSkipUntil: number;    canSkipDateRanges: boolean;    skippedSegments: number;    recentlyRemovedDateranges?: string[];    partHoldBack: number;    holdBack: number;    partTarget: number;    preloadHint?: AttrList;    renditionReports?: AttrList[];    tuneInGoal: number;    deltaUpdateFailed?: boolean;    driftStartTime: number;    driftEndTime: number;    driftStart: number;    driftEnd: number;    encryptedFragments: Fragment[];    playlistParsingError: Error | null;    variableList: VariableMap | null;    hasVariableRefs: boolean;    constructor(baseUrl: string);    reloaded(previous: LevelDetails | undefined): void;    get hasProgramDateTime(): boolean;    get levelTargetDuration(): number;    get drift(): number;    get edge(): number;    get partEnd(): number;    get fragmentEnd(): number;    get age(): number;    get lastPartIndex(): number;    get lastPartSn(): number;}export declare class LevelKey implements DecryptData {    readonly uri: string;    readonly method: string;    readonly keyFormat: string;    readonly keyFormatVersions: number[];    readonly encrypted: boolean;    readonly isCommonEncryption: boolean;    iv: Uint8Array | null;    key: Uint8Array | null;    keyId: Uint8Array | null;    pssh: Uint8Array | null;    static clearKeyUriToKeyIdMap(): void;    constructor(method: string, uri: string, format: string, formatversions?: number[], iv?: Uint8Array | null);    isSupported(): boolean;    getDecryptData(sn: number | 'initSegment'): LevelKey | null;}export declare interface LevelLoadedData {    details: LevelDetails;    id: number;    level: number;    networkDetails: any;    stats: LoaderStats;    deliveryDirectives: HlsUrlParameters | null;}export declare interface LevelLoadingData {    id: number;    level: number;    pathwayId: string | undefined;    url: string;    deliveryDirectives: HlsUrlParameters | null;}export declare interface LevelParsed {    attrs: LevelAttributes;    audioCodec?: string;    bitrate: number;    details?: LevelDetails;    height?: number;    id?: number;    name: string;    textCodec?: string;    unknownCodecs?: string[];    url: string;    videoCodec?: string;    width?: number;}export declare interface LevelPTSUpdatedData {    details: LevelDetails;    level: Level;    drift: number;    type: string;    frag: Fragment;    start: number;    end: number;}export declare interface LevelsUpdatedData {    levels: Array<Level>;}export declare interface LevelSwitchedData {    level: number;}export declare interface LevelSwitchingData {    level: number;    attrs: LevelAttributes;    details: LevelDetails | undefined;    bitrate: number;    averageBitrate: number;    maxBitrate: number;    realBitrate: number;    width: number;    height: number;    codecSet: string;    audioCodec: string | undefined;    videoCodec: string | undefined;    audioGroups: (string | undefined)[] | undefined;    subtitleGroups: (string | undefined)[] | undefined;    loaded: {        bytes: number;        duration: number;    } | undefined;    loadError: number;    fragmentError: number;    name: string | undefined;    id: number;    uri: string;    url: string[];    urlId: 0;    audioGroupIds: (string | undefined)[] | undefined;    textGroupIds: (string | undefined)[] | undefined;}export declare interface LevelUpdatedData {    details: LevelDetails;    level: number;}/** * @deprecated Use BackBufferData */export declare interface LiveBackBufferData extends BackBufferData {}export declare interface Loader<T extends LoaderContext> {    destroy(): void;    abort(): void;    load(context: T, config: LoaderConfiguration, callbacks: LoaderCallbacks<T>): void;    /**     * `getCacheAge()` is called by hls.js to get the duration that a given object     * has been sitting in a cache proxy when playing live.  If implemented,     * this should return a value in seconds.     *     * For HTTP based loaders, this should return the contents of the "age" header.     *     * @returns time object being lodaded     */    getCacheAge?: () => number | null;    getResponseHeader?: (name: string) => string | null;    context: T | null;    stats: LoaderStats;}export declare interface LoaderCallbacks<T extends LoaderContext> {    onSuccess: LoaderOnSuccess<T>;    onError: LoaderOnError<T>;    onTimeout: LoaderOnTimeout<T>;    onAbort?: LoaderOnAbort<T>;    onProgress?: LoaderOnProgress<T>;}export declare type LoaderConfig = {    maxTimeToFirstByteMs: number;    maxLoadTimeMs: number;    timeoutRetry: RetryConfig | null;    errorRetry: RetryConfig | null;};export declare interface LoaderConfiguration {    loadPolicy: LoaderConfig;    /**     * @deprecated use LoaderConfig timeoutRetry and errorRetry maxNumRetry     */    maxRetry: number;    /**     * @deprecated use LoaderConfig maxTimeToFirstByteMs and maxLoadTimeMs     */    timeout: number;    /**     * @deprecated use LoaderConfig timeoutRetry and errorRetry retryDelayMs     */    retryDelay: number;    /**     * @deprecated use LoaderConfig timeoutRetry and errorRetry maxRetryDelayMs     */    maxRetryDelay: number;    highWaterMark?: number;}export declare interface LoaderContext {    url: string;    responseType: string;    headers?: Record<string, string>;    rangeStart?: number;    rangeEnd?: number;    progressData?: boolean;}export declare type LoaderOnAbort<T extends LoaderContext> = (stats: LoaderStats, context: T, networkDetails: any) => void;export declare type LoaderOnError<T extends LoaderContext> = (error: {    code: number;    text: string;}, context: T, networkDetails: any, stats: LoaderStats) => void;export declare type LoaderOnProgress<T extends LoaderContext> = (stats: LoaderStats, context: T, data: string | ArrayBuffer, networkDetails: any) => void;export declare type LoaderOnSuccess<T extends LoaderContext> = (response: LoaderResponse, stats: LoaderStats, context: T, networkDetails: any) => void;export declare type LoaderOnTimeout<T extends LoaderContext> = (stats: LoaderStats, context: T, networkDetails: any) => void;export declare interface LoaderResponse {    url: string;    data?: string | ArrayBuffer | Object;    code?: number;    text?: string;}declare class LoadError extends Error {    readonly data: FragLoadFailResult;    constructor(data: FragLoadFailResult);}export declare interface LoaderStats {    aborted: boolean;    loaded: number;    retry: number;    total: number;    chunkCount: number;    bwEstimate: number;    loading: HlsProgressivePerformanceTiming;    parsing: HlsPerformanceTiming;    buffering: HlsProgressivePerformanceTiming;}export declare type LoadPolicy = {    default: LoaderConfig;};export declare class LoadStats implements LoaderStats {    aborted: boolean;    loaded: number;    retry: number;    total: number;    chunkCount: number;    bwEstimate: number;    loading: HlsProgressivePerformanceTiming;    parsing: HlsPerformanceTiming;    buffering: HlsProgressivePerformanceTiming;}export declare type MainPlaylistType = AudioPlaylistType | 'VIDEO';export declare interface ManifestLoadedData {    audioTracks: MediaPlaylist[];    captions?: MediaPlaylist[];    contentSteering: ContentSteeringOptions | null;    levels: LevelParsed[];    networkDetails: any;    sessionData: Record<string, AttrList> | null;    sessionKeys: LevelKey[] | null;    startTimeOffset: number | null;    stats: LoaderStats;    subtitles?: MediaPlaylist[];    url: string;    variableList: VariableMap | null;}export declare interface ManifestLoadingData {    url: string;}export declare interface ManifestParsedData {    levels: Level[];    audioTracks: MediaPlaylist[];    subtitleTracks: MediaPlaylist[];    sessionData: Record<string, AttrList> | null;    sessionKeys: LevelKey[] | null;    firstLevel: number;    stats: LoaderStats;    audio: boolean;    video: boolean;    altAudio: boolean;}declare interface MaxAutoLevelUpdatedData {    autoLevelCapping: number;    levels: Level[] | null;    maxAutoLevel: number;    minAutoLevel: number;    maxHdcpLevel: HdcpLevel;}export declare interface MediaAttachedData {    media: HTMLMediaElement;    mediaSource?: MediaSource;}export declare interface MediaAttachingData {    media: HTMLMediaElement;}export declare interface MediaAttributes extends AttrList {    'ASSOC-LANGUAGE'?: string;    AUTOSELECT?: 'YES' | 'NO';    CHANNELS?: string;    CHARACTERISTICS?: string;    DEFAULT?: 'YES' | 'NO';    FORCED?: 'YES' | 'NO';    'GROUP-ID': string;    'INSTREAM-ID'?: string;    LANGUAGE?: string;    NAME: string;    'PATHWAY-ID'?: string;    'STABLE-RENDITION-ID'?: string;    TYPE?: 'AUDIO' | 'VIDEO' | 'SUBTITLES' | 'CLOSED-CAPTIONS';    URI?: string;}export declare type MediaDecodingInfo = {    supported: boolean;    configurations: readonly MediaDecodingConfiguration[];    decodingInfoResults: readonly MediaCapabilitiesDecodingInfo[];    error?: Error;};export declare type MediaKeyFunc = (keySystem: KeySystems, supportedConfigurations: MediaKeySystemConfiguration[]) => Promise<MediaKeySystemAccess>;export declare interface MediaKeySessionContext {    keySystem: KeySystems;    mediaKeys: MediaKeys;    decryptdata: LevelKey;    mediaKeysSession: MediaKeySession;    keyStatus: MediaKeyStatus;    licenseXhr?: XMLHttpRequest;    _onmessage?: (this: MediaKeySession, ev: MediaKeyMessageEvent) => any;    _onkeystatuseschange?: (this: MediaKeySession, ev: Event) => any;}export declare interface MediaPlaylist {    attrs: MediaAttributes;    audioCodec?: string;    autoselect: boolean;    bitrate: number;    channels?: string;    characteristics?: string;    details?: LevelDetails;    height?: number;    default: boolean;    forced: boolean;    groupId: string;    id: number;    instreamId?: string;    lang?: string;    assocLang?: string;    name: string;    textCodec?: string;    unknownCodecs?: string[];    type: MediaPlaylistType | 'main';    url: string;    videoCodec?: string;    width?: number;}export declare type MediaPlaylistType = MainPlaylistType | SubtitlePlaylistType;export declare type MetadataControllerConfig = {    enableDateRangeMetadataCues: boolean;    enableEmsgMetadataCues: boolean;    enableID3MetadataCues: boolean;};export declare interface MetadataSample {    pts: number;    dts: number;    duration: number;    len?: number;    data: Uint8Array;    type: MetadataSchema;}export declare const enum MetadataSchema {    audioId3 = "org.id3",    dateRange = "com.apple.quicktime.HLS",    emsg = "https://aomedia.org/emsg/ID3"}export declare type MP4RemuxerConfig = {    stretchShortVideoTrack: boolean;    maxAudioFramesDrift: number;};export declare interface NetworkComponentAPI extends ComponentAPI {    startLoad(startPosition: number): void;    stopLoad(): void;}export declare const enum NetworkErrorAction {    DoNothing = 0,    SendEndCallback = 1,// Reserved for future use    SendAlternateToPenaltyBox = 2,    RemoveAlternatePermanently = 3,// Reserved for future use    InsertDiscontinuity = 4,// Reserved for future use    RetryRequest = 5}export declare interface NonNativeTextTrack {    _id?: string;    label: any;    kind: string;    default: boolean;    closedCaptions?: MediaPlaylist;    subtitleTrack?: MediaPlaylist;}export declare interface NonNativeTextTracksData {    tracks: Array<NonNativeTextTrack>;}declare interface PACData {    row: number;    indent: number | null;    color: string | null;    underline: boolean;    italics: boolean;}/** * Object representing parsed data from an HLS Partial Segment. Found in {@link hls.js#LevelDetails.partList}. */export declare class Part extends BaseSegment {    readonly fragOffset: number;    readonly duration: number;    readonly gap: boolean;    readonly independent: boolean;    readonly relurl: string;    readonly fragment: Fragment;    readonly index: number;    stats: LoadStats;    constructor(partAttrs: AttrList, frag: Fragment, baseurl: string, index: number, previous?: Part);    get start(): number;    get end(): number;    get loaded(): boolean;}declare interface PartsLoadedData {    frag: Fragment;    part: Part | null;    partsLoaded?: FragLoadedData[];}export declare type PathwayClone = {    'BASE-ID': string;    ID: string;    'URI-REPLACEMENT': UriReplacement;};declare class PenState {    foreground: string;    underline: boolean;    italics: boolean;    background: string;    flash: boolean;    reset(): void;    setStyles(styles: Partial<PenStyles>): void;    isDefault(): boolean;    equals(other: PenState): boolean;    copy(newPenState: PenState): void;    toString(): string;}declare type PenStyles = {    foreground: string | null;    underline: boolean;    italics: boolean;    background: string;    flash: boolean;};export declare const enum PlaylistContextType {    MANIFEST = "manifest",    LEVEL = "level",    AUDIO_TRACK = "audioTrack",    SUBTITLE_TRACK = "subtitleTrack"}export declare const enum PlaylistLevelType {    MAIN = "main",    AUDIO = "audio",    SUBTITLE = "subtitle"}/** * @deprecated use manifestLoadPolicy.default and playlistLoadPolicy.default */export declare type PlaylistLoaderConfig = {    manifestLoadingTimeOut: number;    manifestLoadingMaxRetry: number;    manifestLoadingRetryDelay: number;    manifestLoadingMaxRetryTimeout: number;    levelLoadingTimeOut: number;    levelLoadingMaxRetry: number;    levelLoadingRetryDelay: number;    levelLoadingMaxRetryTimeout: number;};export declare interface PlaylistLoaderConstructor {    new (confg: HlsConfig): Loader<PlaylistLoaderContext>;}export declare interface PlaylistLoaderContext extends LoaderContext {    type: PlaylistContextType;    level: number | null;    id: number | null;    groupId?: string;    pathwayId?: string;    levelDetails?: LevelDetails;    deliveryDirectives: HlsUrlParameters | null;}declare type RationalTimestamp = {    baseTime: number;    timescale: number;};declare interface RemuxedMetadata {    samples: MetadataSample[];}declare interface RemuxedTrack {    data1: Uint8Array;    data2?: Uint8Array;    startPTS: number;    endPTS: number;    startDTS: number;    endDTS: number;    type: SourceBufferName;    hasAudio: boolean;    hasVideo: boolean;    independent?: boolean;    firstKeyFrame?: number;    firstKeyFramePTS?: number;    nb: number;    transferredData1?: ArrayBuffer;    transferredData2?: ArrayBuffer;    dropped?: number;}declare interface RemuxedUserdata {    samples: UserdataSample[];}declare interface RemuxerResult {    audio?: RemuxedTrack;    video?: RemuxedTrack;    text?: RemuxedUserdata;    id3?: RemuxedMetadata;    initSegment?: InitSegmentData;    independent?: boolean;}export declare type RetryConfig = {    maxNumRetry: number;    retryDelayMs: number;    maxRetryDelayMs: number;    backoff?: 'exponential' | 'linear';    shouldRetry?: (retryConfig: RetryConfig | null | undefined, retryCount: number, isTimeout: boolean, loaderResponse: LoaderResponse | undefined, retry: boolean) => boolean;};/** * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar. * @constructor */declare class Row {    chars: StyledUnicodeChar[];    pos: number;    currPenState: PenState;    cueStartTime: number | null;    private logger;    constructor(logger: CaptionsLogger);    equals(other: Row): boolean;    copy(other: Row): void;    isEmpty(): boolean;    /**     *  Set the cursor to a valid column.     */    setCursor(absPos: number): void;    /**     * Move the cursor relative to current position.     */    moveCursor(relPos: number): void;    /**     * Backspace, move one step back and clear character.     */    backSpace(): void;    insertChar(byte: number): void;    clearFromPos(startPos: number): void;    clear(): void;    clearToEndOfRow(): void;    getTextString(): string;    setPenStyles(styles: Partial<PenStyles>): void;}export declare type SelectionPreferences = {    videoPreference?: VideoSelectionOption;    audioPreference?: AudioSelectionOption;    subtitlePreference?: SubtitleSelectionOption;};export declare type SourceBufferName = 'video' | 'audio' | 'audiovideo';declare type SourceBuffers = Partial<Record<SourceBufferName, ExtendedSourceBuffer>>;export declare type SteeringManifest = {    VERSION: 1;    TTL: number;    'RELOAD-URI'?: string;    'PATHWAY-PRIORITY': string[];    'PATHWAY-CLONES'?: PathwayClone[];};export declare interface SteeringManifestLoadedData {    steeringManifest: SteeringManifest;    url: string;}declare class StreamController extends BaseStreamController implements NetworkComponentAPI {    private audioCodecSwap;    private gapController;    private level;    private _forceStartLoad;    private altAudio;    private audioOnly;    private fragPlaying;    private onvplaying;    private onvseeked;    private fragLastKbps;    private couldBacktrack;    private backtrackFragment;    private audioCodecSwitch;    private videoBuffer;    constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);    private _registerListeners;    protected _unregisterListeners(): void;    protected onHandlerDestroying(): void;    startLoad(startPosition: number): void;    stopLoad(): void;    protected doTick(): void;    protected onTickEnd(): void;    private doTickIdle;    protected loadFragment(frag: Fragment, level: Level, targetBufferTime: number): void;    private getBufferedFrag;    private followingBufferedFrag;    immediateLevelSwitch(): void;    /**     * try to switch ASAP without breaking video playback:     * in order to ensure smooth but quick level switching,     * we need to find the next flushable buffer range     * we should take into account new segment fetch time     */    nextLevelSwitch(): void;    private abortCurrentFrag;    protected flushMainBuffer(startOffset: number, endOffset: number): void;    protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;    protected onMediaDetaching(): void;    private onMediaPlaying;    private onMediaSeeked;    private onManifestLoading;    private onManifestParsed;    private onLevelLoading;    private onLevelLoaded;    protected _handleFragmentLoadProgress(data: FragLoadedData): void;    private onAudioTrackSwitching;    private onAudioTrackSwitched;    private onBufferCreated;    private onFragBuffered;    private onError;    private checkBuffer;    private onFragLoadEmergencyAborted;    private onBufferFlushed;    private onLevelsUpdated;    swapAudioCodec(): void;    /**     * Seeks to the set startPosition if not equal to the mediaElement's current time.     */    protected seekToStartPos(): void;    private _getAudioCodec;    private _loadBitrateTestFrag;    private _handleTransmuxComplete;    private _bufferInitSegment;    getMainFwdBufferInfo(): BufferInfo | null;    private backtrack;    private checkFragmentChanged;    get nextLevel(): number;    get currentFrag(): Fragment | null;    get currentProgramDateTime(): Date | null;    get currentLevel(): number;    get nextBufferedFrag(): Fragment | null;    get forceStartLoad(): boolean;}export declare type StreamControllerConfig = {    autoStartLoad: boolean;    startPosition: number;    defaultAudioCodec?: string;    initialLiveManifestSize: number;    maxBufferLength: number;    maxBufferSize: number;    maxBufferHole: number;    highBufferWatchdogPeriod: number;    nudgeOffset: number;    nudgeMaxRetry: number;    maxFragLookUpTolerance: number;    maxMaxBufferLength: number;    startFragPrefetch: boolean;    testBandwidth: boolean;};/** * Unicode character with styling and background. * @constructor */declare class StyledUnicodeChar {    uchar: string;    penState: PenState;    reset(): void;    setChar(uchar: string, newPenState: PenState): void;    setPenState(newPenState: PenState): void;    equals(other: StyledUnicodeChar): boolean;    copy(newChar: StyledUnicodeChar): void;    isEmpty(): boolean;}declare interface SubtitleFragProcessed {    success: boolean;    frag: Fragment;}export declare interface SubtitleFragProcessedData {    success: boolean;    frag: Fragment;    error?: Error;}export declare type SubtitlePlaylistType = 'SUBTITLES' | 'CLOSED-CAPTIONS';export declare type SubtitleSelectionOption = {    lang?: string;    assocLang?: string;    characteristics?: string;    name?: string;    groupId?: string;    default?: boolean;    forced?: boolean;};export declare class SubtitleStreamController extends BaseStreamController implements NetworkComponentAPI {    private currentTrackId;    private tracksBuffered;    private mainDetails;    constructor(hls: Hls, fragmentTracker: FragmentTracker, keyLoader: KeyLoader);    protected onHandlerDestroying(): void;    private _registerListeners;    private _unregisterListeners;    startLoad(startPosition: number): void;    onManifestLoading(): void;    onMediaDetaching(): void;    onLevelLoaded(event: Events.LEVEL_LOADED, data: LevelLoadedData): void;    onSubtitleFragProcessed(event: Events.SUBTITLE_FRAG_PROCESSED, data: SubtitleFragProcessed): void;    onBufferFlushing(event: Events.BUFFER_FLUSHING, data: BufferFlushingData): void;    onFragBuffered(event: Events.FRAG_BUFFERED, data: FragBufferedData): void;    onError(event: Events.ERROR, data: ErrorData): void;    onSubtitleTracksUpdated(event: Events.SUBTITLE_TRACKS_UPDATED, { subtitleTracks }: SubtitleTracksUpdatedData): void;    onSubtitleTrackSwitch(event: Events.SUBTITLE_TRACK_SWITCH, data: TrackSwitchedData): void;    onSubtitleTrackLoaded(event: Events.SUBTITLE_TRACK_LOADED, data: TrackLoadedData): void;    _handleFragmentLoadComplete(fragLoadedData: FragLoadedData): void;    doTick(): void;    protected getMaxBufferLength(mainBufferLength?: number): number;    protected loadFragment(frag: Fragment, level: Level, targetBufferTime: number): void;    get mediaBufferTimeRanges(): Bufferable;}export declare class SubtitleTrackController extends BasePlaylistController {    private media;    private tracks;    private groupIds;    private tracksInGroup;    private trackId;    private currentTrack;    private selectDefaultTrack;    private queuedDefaultTrack;    private asyncPollTrackChange;    private useTextTrackPolling;    private subtitlePollingInterval;    private _subtitleDisplay;    constructor(hls: Hls);    destroy(): void;    get subtitleDisplay(): boolean;    set subtitleDisplay(value: boolean);    private registerListeners;    private unregisterListeners;    protected onMediaAttached(event: Events.MEDIA_ATTACHED, data: MediaAttachedData): void;    private pollTrackChange;    protected onMediaDetaching(): void;    protected onManifestLoading(): void;    protected onManifestParsed(event: Events.MANIFEST_PARSED, data: ManifestParsedData): void;    protected onSubtitleTrackLoaded(event: Events.SUBTITLE_TRACK_LOADED, data: TrackLoadedData): void;    protected onLevelLoading(event: Events.LEVEL_LOADING, data: LevelLoadingData): void;    protected onLevelSwitching(event: Events.LEVEL_SWITCHING, data: LevelSwitchingData): void;    private switchLevel;    private findTrackId;    private findTrackForTextTrack;    protected onError(event: Events.ERROR, data: ErrorData): void;    get allSubtitleTracks(): MediaPlaylist[];    /** get alternate subtitle tracks list from playlist **/    get subtitleTracks(): MediaPlaylist[];    /** get/set index of the selected subtitle track (based on index in subtitle track lists) **/    get subtitleTrack(): number;    set subtitleTrack(newId: number);    setSubtitleOption(subtitleOption: MediaPlaylist | SubtitleSelectionOption | undefined): MediaPlaylist | null;    protected loadPlaylist(hlsUrlParameters?: HlsUrlParameters): void;    /**     * Disables the old subtitleTrack and sets current mode on the next subtitleTrack.     * This operates on the DOM textTracks.     * A value of -1 will disable all subtitle tracks.     */    private toggleTrackModes;    /**     * This method is responsible for validating the subtitle index and periodically reloading if live.     * Dispatches the SUBTITLE_TRACK_SWITCH event, which instructs the subtitle-stream-controller to load the selected track.     */    private setSubtitleTrack;    private onTextTracksChanged;}export declare interface SubtitleTrackLoadedData extends TrackLoadedData {}export declare interface SubtitleTracksUpdatedData {    subtitleTracks: MediaPlaylist[];}export declare interface SubtitleTrackSwitchData {    id: number;    name?: string;    groupId?: string;    type?: MediaPlaylistType | 'main';    url?: string;}/** * @ignore * Sub-class specialization of EventHandler base class. * * TaskLoop allows to schedule a task function being called (optionnaly repeatedly) on the main loop, * scheduled asynchroneously, avoiding recursive calls in the same tick. * * The task itself is implemented in `doTick`. It can be requested and called for single execution * using the `tick` method. * * It will be assured that the task execution method (`tick`) only gets called once per main loop "tick", * no matter how often it gets requested for execution. Execution in further ticks will be scheduled accordingly. * * If further execution requests have already been scheduled on the next tick, it can be checked with `hasNextTick`, * and cancelled with `clearNextTick`. * * The task can be scheduled as an interval repeatedly with a period as parameter (see `setInterval`, `clearInterval`). * * Sub-classes need to implement the `doTick` method which will effectively have the task execution routine. * * Further explanations: * * The baseclass has a `tick` method that will schedule the doTick call. It may be called synchroneously * only for a stack-depth of one. On re-entrant calls, sub-sequent calls are scheduled for next main loop ticks. * * When the task execution (`tick` method) is called in re-entrant way this is detected and * we are limiting the task execution per call stack to exactly one, but scheduling/post-poning further * task processing on the next main loop iteration (also known as "next tick" in the Node/JS runtime lingo). */declare class TaskLoop {    private readonly _boundTick;    private _tickTimer;    private _tickInterval;    private _tickCallCount;    constructor();    destroy(): void;    protected onHandlerDestroying(): void;    protected onHandlerDestroyed(): void;    hasInterval(): boolean;    hasNextTick(): boolean;    /**     * @param millis - Interval time (ms)     * @eturns True when interval has been scheduled, false when already scheduled (no effect)     */    setInterval(millis: number): boolean;    /**     * @returns True when interval was cleared, false when none was set (no effect)     */    clearInterval(): boolean;    /**     * @returns True when timeout was cleared, false when none was set (no effect)     */    clearNextTick(): boolean;    /**     * Will call the subclass doTick implementation in this main loop tick     * or in the next one (via setTimeout(,0)) in case it has already been called     * in this tick (in case this is a re-entrant call).     */    tick(): void;    tickImmediate(): void;    /**     * For subclass to implement task logic     * @abstract     */    protected doTick(): void;}export declare class TimelineController implements ComponentAPI {    private hls;    private media;    private config;    private enabled;    private Cues;    private textTracks;    private tracks;    private initPTS;    private unparsedVttFrags;    private captionsTracks;    private nonNativeCaptionsTracks;    private cea608Parser1?;    private cea608Parser2?;    private lastCc;    private lastSn;    private lastPartIndex;    private prevCC;    private vttCCs;    private captionsProperties;    constructor(hls: Hls);    destroy(): void;    private initCea608Parsers;    addCues(trackName: string, startTime: number, endTime: number, screen: CaptionScreen, cueRanges: Array<[number, number]>): void;    private onInitPtsFound;    private getExistingTrack;    createCaptionsTrack(trackName: string): void;    private createNativeTrack;    private createNonNativeTrack;    private createTextTrack;    private onMediaAttaching;    private onMediaDetaching;    private onManifestLoading;    private _cleanTracks;    private onSubtitleTracksUpdated;    private onManifestLoaded;    private closedCaptionsForLevel;    private onFragLoading;    private onFragLoaded;    private _parseIMSC1;    private _parseVTTs;    private _fallbackToIMSC1;    private _appendCues;    private onFragDecrypted;    private onSubtitleTracksCleared;    private onFragParsingUserdata;    onBufferFlushing(event: Events.BUFFER_FLUSHING, { startOffset, endOffset, endOffsetSubtitles, type }: BufferFlushingData): void;    private extractCea608Data;}export declare type TimelineControllerConfig = {    cueHandler: CuesInterface;    enableWebVTT: boolean;    enableIMSC1: boolean;    enableCEA708Captions: boolean;    captionsTextTrack1Label: string;    captionsTextTrack1LanguageCode: string;    captionsTextTrack2Label: string;    captionsTextTrack2LanguageCode: string;    captionsTextTrack3Label: string;    captionsTextTrack3LanguageCode: string;    captionsTextTrack4Label: string;    captionsTextTrack4LanguageCode: string;    renderTextTracksNatively: boolean;};export declare interface Track {    id: 'audio' | 'main';    buffer?: SourceBuffer;    container: string;    codec?: string;    initSegment?: Uint8Array;    levelCodec?: string;    metadata?: any;}export declare interface TrackLoadedData {    details: LevelDetails;    id: number;    groupId: string;    networkDetails: any;    stats: LoaderStats;    deliveryDirectives: HlsUrlParameters | null;}export declare interface TrackLoadingData {    id: number;    groupId: string;    url: string;    deliveryDirectives: HlsUrlParameters | null;}export declare interface TrackSet {    audio?: Track;    video?: Track;    audiovideo?: Track;}declare interface TrackSwitchedData {    id: number;}declare class TransmuxerInterface {    error: Error | null;    private hls;    private id;    private observer;    private frag;    private part;    private useWorker;    private workerContext;    private onwmsg?;    private transmuxer;    private onTransmuxComplete;    private onFlush;    constructor(hls: Hls, id: PlaylistLevelType, onTransmuxComplete: (transmuxResult: TransmuxerResult) => void, onFlush: (chunkMeta: ChunkMetadata) => void);    resetWorker(): void;    destroy(): void;    push(data: ArrayBuffer, initSegmentData: Uint8Array | undefined, audioCodec: string | undefined, videoCodec: string | undefined, frag: Fragment, part: Part | null, duration: number, accurateTimeOffset: boolean, chunkMeta: ChunkMetadata, defaultInitPTS?: RationalTimestamp): void;    flush(chunkMeta: ChunkMetadata): void;    private transmuxerError;    private handleFlushResult;    private onWorkerMessage;    private configureTransmuxer;    private handleTransmuxComplete;}declare interface TransmuxerResult {    remuxResult: RemuxerResult;    chunkMeta: ChunkMetadata;}export declare type TSDemuxerConfig = {    forceKeyFrameOnDiscontinuity: boolean;};export declare type UriReplacement = {    HOST?: string;    PARAMS?: {        [queryParameter: string]: string;    };    'PER-VARIANT-URIS'?: {        [stableVariantId: string]: string;    };    'PER-RENDITION-URIS'?: {        [stableRenditionId: string]: string;    };};export declare interface UserdataSample {    pts: number;    bytes?: Uint8Array;    type?: number;    payloadType?: number;    uuid?: string;    userData?: string;    userDataBytes?: Uint8Array;}export declare type VariableMap = Record<string, string>;declare const enum VerboseLevel {    ERROR = 0,    TEXT = 1,    WARNING = 2,    INFO = 2,    DEBUG = 3,    DATA = 3}declare type VideoRange = (typeof VideoRangeValues)[number];declare const VideoRangeValues: readonly ["SDR", "PQ", "HLG"];export declare type VideoSelectionOption = {    preferHDR?: boolean;    allowedVideoRanges?: Array<VideoRange>;};export { }
 |