import * as _angular_core from '@angular/core';
import { OnInit, OnDestroy, OnChanges, ElementRef, SimpleChanges, ChangeDetectorRef } from '@angular/core';
import * as _ngx_telly_player_core from '@ngx-telly/player/core';
import { CrossOriginAttr, PreloadAttr, TellyMedia, Browser } from '@ngx-telly/player/core';
import { TellyMediaService, TellyEventsService, TellyDurationCapperService, TellyPluginOrchestratorService, TellyFullscreenService } from '@ngx-telly/player/services';
import * as rxjs from 'rxjs';
import { Subject, Observable, BehaviorSubject } from 'rxjs';

declare class PlayerComponent implements OnInit, OnDestroy, OnChanges {
    id: _angular_core.InputSignal<string>;
    src: _angular_core.InputSignal<string | undefined>;
    poster: _angular_core.InputSignal<string | undefined>;
    controlsList: _angular_core.InputSignal<string | undefined>;
    showId: _angular_core.InputSignal<boolean>;
    autoHide: _angular_core.InputSignal<boolean>;
    autoPlay: _angular_core.InputSignal<boolean>;
    autoPip: _angular_core.InputSignal<boolean>;
    disablePip: _angular_core.InputSignal<boolean>;
    controls: _angular_core.InputSignal<boolean>;
    loop: _angular_core.InputSignal<boolean>;
    muted: _angular_core.InputSignal<boolean>;
    disableRemotePlayback: _angular_core.InputSignal<boolean>;
    height: _angular_core.InputSignal<number | undefined>;
    width: _angular_core.InputSignal<number | undefined>;
    capToDuration: _angular_core.InputSignal<number>;
    updateInterval: _angular_core.InputSignal<number>;
    hideDelay: _angular_core.InputSignal<number>;
    startFrom: _angular_core.InputSignal<number>;
    timeOffset: _angular_core.InputSignal<number>;
    crossOrigin: _angular_core.InputSignal<CrossOriginAttr>;
    preload: _angular_core.InputSignal<PreloadAttr | undefined>;
    clickable: _angular_core.InputSignal<boolean>;
    created: _angular_core.OutputEmitterRef<TellyMedia>;
    video: ElementRef<HTMLVideoElement>;
    private hide;
    config: _ngx_telly_player_core.TellyMediaOptions;
    media: TellyMedia;
    element: any;
    mediaService: TellyMediaService;
    events: TellyEventsService;
    capper: TellyDurationCapperService;
    orchestrator: TellyPluginOrchestratorService;
    onClick(): void;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    onContainerClick(): void;
    create(): TellyMedia;
    setTimer(): void;
    setEvents(): void;
    ngOnDestroy(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PlayerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<PlayerComponent, "telly-player", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; "poster": { "alias": "poster"; "required": false; "isSignal": true; }; "controlsList": { "alias": "controlsList"; "required": false; "isSignal": true; }; "showId": { "alias": "showId"; "required": false; "isSignal": true; }; "autoHide": { "alias": "autoHide"; "required": false; "isSignal": true; }; "autoPlay": { "alias": "autoPlay"; "required": false; "isSignal": true; }; "autoPip": { "alias": "autoPip"; "required": false; "isSignal": true; }; "disablePip": { "alias": "disablePip"; "required": false; "isSignal": true; }; "controls": { "alias": "controls"; "required": false; "isSignal": true; }; "loop": { "alias": "loop"; "required": false; "isSignal": true; }; "muted": { "alias": "muted"; "required": false; "isSignal": true; }; "disableRemotePlayback": { "alias": "disableRemotePlayback"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "capToDuration": { "alias": "capToDuration"; "required": false; "isSignal": true; }; "updateInterval": { "alias": "updateInterval"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; "startFrom": { "alias": "startFrom"; "required": false; "isSignal": true; }; "timeOffset": { "alias": "timeOffset"; "required": false; "isSignal": true; }; "crossOrigin": { "alias": "crossOrigin"; "required": false; "isSignal": true; }; "preload": { "alias": "preload"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; }, { "created": "created"; }, never, ["[overlay]", "*"], true, never>;
}

declare class BufferingComponent implements OnInit {
    player: PlayerComponent;
    events: TellyEventsService;
    platform: Browser;
    play: boolean;
    suspend$: Subject<Event>;
    hide: boolean;
    ngOnInit(): void;
    getWatcher(): (ev: Event) => boolean | undefined;
    chromiumWatcher: (ev: Event) => boolean | undefined;
    webkitWatcher: (ev: Event) => boolean | undefined;
    firefoxWatcher: (ev: Event) => boolean | undefined;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BufferingComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<BufferingComponent, "telly-buffering", never, {}, {}, never, never, true, never>;
}

declare class MessageOutletComponent implements OnInit {
    player: PlayerComponent;
    events: TellyEventsService;
    cdr: ChangeDetectorRef;
    show: boolean;
    ngOnInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<MessageOutletComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<MessageOutletComponent, "telly-message-outlet", never, {}, {}, never, never, true, never>;
}

declare class ControlsComponent implements OnInit {
    class: string;
    hide: boolean;
    private events;
    private player;
    private doc;
    onClick(event: MouseEvent): void;
    ngOnInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ControlsComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ControlsComponent, "telly-controls", never, { "class": { "alias": "class"; "required": false; }; }, {}, never, ["*"], true, never>;
}

declare class ForwardComponent {
    icon: _angular_core.InputSignal<string>;
    size: _angular_core.InputSignal<string>;
    player: PlayerComponent;
    playing: boolean;
    handle: boolean;
    title: string;
    onPointerDown(): void;
    onPointerUpOrLeave(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ForwardComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ForwardComponent, "telly-forward", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class FullscreenComponent implements OnInit {
    icon: _angular_core.InputSignal<string>;
    alternativeIcon: _angular_core.InputSignal<string>;
    size: _angular_core.InputSignal<string>;
    player: PlayerComponent;
    events: TellyEventsService;
    cdr: ChangeDetectorRef;
    doc: Document;
    service: TellyFullscreenService;
    title: string;
    constructor();
    ngOnInit(): void;
    onClick(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullscreenComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<FullscreenComponent, "telly-fullscreen", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "alternativeIcon": { "alias": "alternativeIcon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class PlayComponent implements OnInit {
    playIcon: _angular_core.InputSignal<string>;
    pauseIcon: _angular_core.InputSignal<string>;
    size: _angular_core.InputSignal<string>;
    player: PlayerComponent;
    status$: Observable<string>;
    title: string;
    onClick(): void;
    ngOnInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<PlayComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<PlayComponent, "telly-play", never, { "playIcon": { "alias": "playIcon"; "required": false; "isSignal": true; }; "pauseIcon": { "alias": "pauseIcon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class RewindComponent {
    icon: _angular_core.InputSignal<string>;
    size: _angular_core.InputSignal<string>;
    player: PlayerComponent;
    playing: boolean;
    handle: boolean;
    title: string;
    onPointerDown(): void;
    onPointerUpOrLeave(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<RewindComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<RewindComponent, "telly-rewind", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class TimeComponent implements OnInit {
    player: PlayerComponent;
    events: TellyEventsService;
    time$: Observable<string>;
    ngOnInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<TimeComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<TimeComponent, "telly-time", never, {}, {}, never, never, true, never>;
}

declare class ScrubBarComponent {
    player: PlayerComponent;
    ref: ElementRef<any>;
    offset$: BehaviorSubject<number>;
    time$: BehaviorSubject<number>;
    hover$: BehaviorSubject<boolean>;
    handle: boolean;
    onPointerUp(): void;
    onPointerEnter(): void;
    onPointerLeave(): void;
    onPointerDown(e: PointerEvent): void;
    onPointerMove(e: PointerEvent): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrubBarComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrubBarComponent, "telly-scrub-bar", never, {}, {}, never, ["[out]", "[in]"], true, never>;
}

declare class ScrubBarCurrentTimeComponent implements OnInit {
    player: PlayerComponent;
    events: TellyEventsService;
    progress$: Observable<number>;
    ngOnInit(): void;
    getPercentage(): number;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrubBarCurrentTimeComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrubBarCurrentTimeComponent, "telly-scrub-bar-current-time", never, {}, {}, never, never, true, never>;
}

declare class ScrubBarBufferedComponent implements OnInit {
    player: PlayerComponent;
    events: TellyEventsService;
    buffered$: Observable<{
        width: number;
        offset: number;
    }[]>;
    ngOnInit(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrubBarBufferedComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrubBarBufferedComponent, "telly-scrub-bar-buffered", never, {}, {}, never, never, true, never>;
}

declare class ScrubBarTimeComponent {
    outlet?: ElementRef<HTMLDivElement>;
    scrubBar: ScrubBarComponent;
    player: PlayerComponent;
    element: ElementRef<any>;
    left: number;
    offset$: rxjs.Subscription;
    time$: rxjs.Observable<string>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrubBarTimeComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrubBarTimeComponent, "telly-scrub-bar-time", never, {}, {}, never, ["*"], true, never>;
}

declare class SpacerComponent {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpacerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpacerComponent, "telly-spacer", never, {}, {}, never, never, true, never>;
}

declare class VolumeComponent implements OnInit {
    player: PlayerComponent;
    events: TellyEventsService;
    volume: number;
    open: boolean;
    width: string;
    title: string;
    onContextMenu(e: PointerEvent): void;
    onMouseOver(e: PointerEvent): void;
    onPointerLeave(e: PointerEvent): void;
    ngOnInit(): void;
    show(): void;
    hide(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<VolumeComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<VolumeComponent, "telly-volume", never, {}, {}, never, never, true, never>;
}

declare class VolumeButtonComponent {
    iconMute: _angular_core.InputSignal<string>;
    iconLow: _angular_core.InputSignal<string>;
    iconMedium: _angular_core.InputSignal<string>;
    iconHigh: _angular_core.InputSignal<string>;
    size: _angular_core.InputSignal<string>;
    volume: _angular_core.InputSignal<number>;
    player: PlayerComponent;
    lastVolume?: number;
    onClick(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<VolumeButtonComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<VolumeButtonComponent, "telly-volume-button", never, { "iconMute": { "alias": "iconMute"; "required": false; "isSignal": true; }; "iconLow": { "alias": "iconLow"; "required": false; "isSignal": true; }; "iconMedium": { "alias": "iconMedium"; "required": false; "isSignal": true; }; "iconHigh": { "alias": "iconHigh"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "volume": { "alias": "volume"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class VolumeSliderComponent {
    volume: _angular_core.InputSignal<number>;
    ref: ElementRef<any>;
    player: PlayerComponent;
    handle: boolean;
    onPointerDown(e: PointerEvent): void;
    onPointerMove(e: PointerEvent): void;
    onPointerLeave(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<VolumeSliderComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<VolumeSliderComponent, "telly-volume-slider", never, { "volume": { "alias": "volume"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class JumpForwardComponent {
    jump: _angular_core.InputSignal<number>;
    icon5: _angular_core.InputSignal<string>;
    icon10: _angular_core.InputSignal<string>;
    icon15: _angular_core.InputSignal<string>;
    icon30: _angular_core.InputSignal<string>;
    icon45: _angular_core.InputSignal<string>;
    icon60: _angular_core.InputSignal<string>;
    size: _angular_core.InputSignal<string>;
    player: PlayerComponent;
    title: string;
    onClick(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<JumpForwardComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<JumpForwardComponent, "telly-jump-forward", never, { "jump": { "alias": "jump"; "required": false; "isSignal": true; }; "icon5": { "alias": "icon5"; "required": false; "isSignal": true; }; "icon10": { "alias": "icon10"; "required": false; "isSignal": true; }; "icon15": { "alias": "icon15"; "required": false; "isSignal": true; }; "icon30": { "alias": "icon30"; "required": false; "isSignal": true; }; "icon45": { "alias": "icon45"; "required": false; "isSignal": true; }; "icon60": { "alias": "icon60"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class JumpBackComponent {
    jump: _angular_core.InputSignal<number>;
    icon5: _angular_core.InputSignal<string>;
    icon10: _angular_core.InputSignal<string>;
    icon15: _angular_core.InputSignal<string>;
    icon30: _angular_core.InputSignal<string>;
    icon45: _angular_core.InputSignal<string>;
    icon60: _angular_core.InputSignal<string>;
    size: string;
    player: PlayerComponent;
    title: string;
    onClick(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<JumpBackComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<JumpBackComponent, "telly-jump-back", never, { "jump": { "alias": "jump"; "required": false; "isSignal": true; }; "icon5": { "alias": "icon5"; "required": false; "isSignal": true; }; "icon10": { "alias": "icon10"; "required": false; "isSignal": true; }; "icon15": { "alias": "icon15"; "required": false; "isSignal": true; }; "icon30": { "alias": "icon30"; "required": false; "isSignal": true; }; "icon45": { "alias": "icon45"; "required": false; "isSignal": true; }; "icon60": { "alias": "icon60"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

export { BufferingComponent, ControlsComponent, ForwardComponent, FullscreenComponent, JumpBackComponent, JumpForwardComponent, MessageOutletComponent, PlayComponent, PlayerComponent, RewindComponent, ScrubBarBufferedComponent, ScrubBarComponent, ScrubBarCurrentTimeComponent, ScrubBarTimeComponent, SpacerComponent, TimeComponent, VolumeButtonComponent, VolumeComponent, VolumeSliderComponent };
