import * as _angular_core from '@angular/core';
import { AfterViewInit, OnDestroy, OnChanges, EventEmitter, SimpleChanges } from '@angular/core';
import { PlayerComponent } from '@ngx-telly/player';
import Hls, { HlsConfig, MediaAttachingData, ManifestParsedData, LevelUpdatedData, AudioTrackSwitchedData, LevelSwitchedData, SubtitleTrackSwitchData, ErrorData } from 'hls.js';

interface ScteTriggerData {
    timestamp: number;
    cueIn?: boolean;
    cueOut?: boolean;
    duration?: number;
    data: string;
    dateTime: string;
}

declare class HlsDirective implements AfterViewInit, OnDestroy, OnChanges {
    tellyHls: _angular_core.InputSignal<string>;
    config: _angular_core.InputSignal<Partial<HlsConfig>>;
    scte: _angular_core.InputSignal<string | undefined>;
    hlsCreated: EventEmitter<Hls>;
    mediaAttached: EventEmitter<[Hls | undefined, MediaAttachingData]>;
    manifestParsed: EventEmitter<[Hls | undefined, ManifestParsedData]>;
    levelUpdated: EventEmitter<[Hls | undefined, LevelUpdatedData]>;
    offsetParsed: EventEmitter<[Hls | undefined, number, number]>;
    audioSwitched: EventEmitter<[Hls | undefined, AudioTrackSwitchedData]>;
    levelSwitched: EventEmitter<[Hls | undefined, LevelSwitchedData]>;
    captionSwitched: EventEmitter<[Hls | undefined, SubtitleTrackSwitchData]>;
    scteParsed: EventEmitter<[Hls | undefined, ScteTriggerData[]]>;
    manifestFailed: EventEmitter<[Hls | undefined, ErrorData]>;
    player: PlayerComponent;
    hls?: Hls;
    offset: number;
    timestamp: number;
    ngAfterViewInit(): void;
    ngOnChanges({ tellyHls }: SimpleChanges): void;
    date(): Date;
    private create;
    private bindEvents;
    private extractDuration;
    private extractDrift;
    private extractOffset;
    private extractScte;
    ngOnDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<HlsDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<HlsDirective, "[tellyHls]", never, { "tellyHls": { "alias": "tellyHls"; "required": true; "isSignal": true; }; "config": { "alias": "config"; "required": false; "isSignal": true; }; "scte": { "alias": "scte"; "required": false; "isSignal": true; }; }, { "hlsCreated": "hlsCreated"; "mediaAttached": "mediaAttached"; "manifestParsed": "manifestParsed"; "levelUpdated": "levelUpdated"; "offsetParsed": "offsetParsed"; "audioSwitched": "audioSwitched"; "levelSwitched": "levelSwitched"; "captionSwitched": "captionSwitched"; "scteParsed": "scteParsed"; "manifestFailed": "manifestFailed"; }, never, never, true, never>;
}

export { HlsDirective };
export type { ScteTriggerData };
