import * as _angular_core from '@angular/core';
import { OnDestroy, ElementRef } from '@angular/core';
import { ClassValue } from 'clsx';

interface ZMediaPlayerSubtitleTrack {
    label: string;
    src: string;
    srclang: string;
    default?: boolean;
}
interface ZMediaPlayerSource {
    label: string;
    src: string;
}
interface ZMediaPlayerPlaybackSpeed {
    label: string;
    value: number;
}

type ZMediaPlayerSettingsPanel = 'main' | 'quality' | 'speed';
declare class ZMediaPlayerComponent implements OnDestroy {
    private readonly _elementRef;
    readonly class: _angular_core.InputSignal<ClassValue>;
    readonly zSrc: _angular_core.InputSignal<string>;
    readonly zSources: _angular_core.InputSignal<ZMediaPlayerSource[]>;
    readonly zPoster: _angular_core.InputSignal<string>;
    readonly zAutoplay: _angular_core.InputSignal<boolean>;
    readonly zLoop: _angular_core.InputSignal<boolean>;
    readonly zMuted: _angular_core.InputSignal<boolean>;
    readonly zVolume: _angular_core.InputSignal<number>;
    readonly zSubtitles: _angular_core.InputSignal<ZMediaPlayerSubtitleTrack[]>;
    readonly zPlay: _angular_core.OutputEmitterRef<boolean>;
    readonly zTimeUpdate: _angular_core.OutputEmitterRef<number>;
    readonly zVolumeChange: _angular_core.OutputEmitterRef<number>;
    readonly zFullscreenChange: _angular_core.OutputEmitterRef<boolean>;
    readonly zTheaterModeChange: _angular_core.OutputEmitterRef<boolean>;
    readonly zMiniplayerChange: _angular_core.OutputEmitterRef<boolean>;
    readonly zQualityChange: _angular_core.OutputEmitterRef<ZMediaPlayerSource>;
    readonly videoElement: _angular_core.Signal<ElementRef<HTMLVideoElement> | undefined>;
    readonly timelineContainer: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
    protected readonly isPlaying: _angular_core.WritableSignal<boolean>;
    protected readonly currentTime: _angular_core.WritableSignal<number>;
    protected readonly duration: _angular_core.WritableSignal<number>;
    protected readonly volume: _angular_core.WritableSignal<number>;
    protected readonly isMuted: _angular_core.WritableSignal<boolean>;
    protected readonly playbackSpeed: _angular_core.WritableSignal<number>;
    protected readonly activeSourceSrc: _angular_core.WritableSignal<string | null>;
    protected readonly showControls: _angular_core.WritableSignal<boolean>;
    protected readonly isBuffering: _angular_core.WritableSignal<boolean>;
    protected readonly captionsEnabled: _angular_core.WritableSignal<boolean>;
    protected readonly isTheaterMode: _angular_core.WritableSignal<boolean>;
    protected readonly isFullscreen: _angular_core.WritableSignal<boolean>;
    protected readonly isMiniplayer: _angular_core.WritableSignal<boolean>;
    protected readonly showSettings: _angular_core.WritableSignal<boolean>;
    protected readonly settingsPanel: _angular_core.WritableSignal<ZMediaPlayerSettingsPanel>;
    protected readonly isDragging: _angular_core.WritableSignal<boolean>;
    protected readonly bufferedProgress: _angular_core.WritableSignal<number>;
    protected readonly progress: _angular_core.Signal<number>;
    protected readonly playPauseFlash: _angular_core.WritableSignal<"play" | "pause" | null>;
    protected readonly hoverTimeLabel: _angular_core.WritableSignal<string | null>;
    protected readonly hoverX: _angular_core.WritableSignal<number>;
    protected readonly skipOverlayDirection: _angular_core.WritableSignal<"left" | "right" | null>;
    protected readonly skipOverlayValue: _angular_core.WritableSignal<number>;
    protected readonly skipOverlayPulse: _angular_core.WritableSignal<number>;
    protected readonly isPiPSupported: _angular_core.Signal<boolean>;
    protected readonly playbackSpeeds: readonly ZMediaPlayerPlaybackSpeed[];
    private _controlsTimeout;
    private _flashTimeout;
    private _skipOverlayTimeout;
    private _clickTimeout;
    private _accumulatedSkip;
    protected readonly zClasses: _angular_core.Signal<string>;
    protected readonly currentTimeLabel: _angular_core.Signal<string>;
    protected readonly durationLabel: _angular_core.Signal<string>;
    protected readonly effectiveSrc: _angular_core.Signal<string>;
    protected readonly qualitySources: _angular_core.Signal<ZMediaPlayerSource[]>;
    protected readonly activeQualityLabel: _angular_core.Signal<string>;
    constructor();
    ngOnDestroy(): void;
    private _initializeVideoState;
    protected togglePlay(): void;
    private _triggerFlashIcon;
    protected toggleMute(): void;
    protected onVolumeChange(val: number): void;
    protected setPlaybackSpeed(speed: number): void;
    protected openSettingsPanel(panel: ZMediaPlayerSettingsPanel): void;
    protected closeSettingsPanel(): void;
    protected onSettingsHidden(): void;
    protected setQualitySource(source: ZMediaPlayerSource): void;
    protected seekTo(time: number): void;
    protected toggleTheaterMode(): void;
    protected toggleFullscreen(): void;
    protected onFullscreenStateChange(): void;
    protected toggleMiniplayer(): Promise<void>;
    protected onEnterPiP(): void;
    protected onLeavePiP(): void;
    protected onWebkitPresentationModeChanged(): void;
    protected toggleSubtitles(): void;
    protected onPlayStateChange(playing: boolean): void;
    protected onTimeUpdate(): void;
    protected onDurationChange(): void;
    protected onSeeking(seeking: boolean): void;
    protected updateBufferedProgress(): void;
    protected onTimelineDragStart(event: MouseEvent): void;
    protected onTimelineHover(event: MouseEvent): void;
    protected onTimelineHoverEnd(): void;
    private _updateTimeFromCoords;
    protected onMouseMove(): void;
    protected onMouseLeave(): void;
    private _resetControlsTimer;
    protected onVideoClick(event: MouseEvent): void;
    private _handleVideoDoubleClick;
    protected triggerSkip(seconds: number, direction: 'left' | 'right'): void;
    private _triggerSkipOverlay;
    protected onKeyDown(event: KeyboardEvent): void;
    protected toggleSettings(): void;
    private _formatTime;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ZMediaPlayerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<ZMediaPlayerComponent, "z-media-player", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "zSrc": { "alias": "zSrc"; "required": true; "isSignal": true; }; "zSources": { "alias": "zSources"; "required": false; "isSignal": true; }; "zPoster": { "alias": "zPoster"; "required": false; "isSignal": true; }; "zAutoplay": { "alias": "zAutoplay"; "required": false; "isSignal": true; }; "zLoop": { "alias": "zLoop"; "required": false; "isSignal": true; }; "zMuted": { "alias": "zMuted"; "required": false; "isSignal": true; }; "zVolume": { "alias": "zVolume"; "required": false; "isSignal": true; }; "zSubtitles": { "alias": "zSubtitles"; "required": false; "isSignal": true; }; }, { "zPlay": "zPlay"; "zTimeUpdate": "zTimeUpdate"; "zVolumeChange": "zVolumeChange"; "zFullscreenChange": "zFullscreenChange"; "zTheaterModeChange": "zTheaterModeChange"; "zMiniplayerChange": "zMiniplayerChange"; "zQualityChange": "zQualityChange"; }, never, never, true, never>;
}

export { ZMediaPlayerComponent };
export type { ZMediaPlayerPlaybackSpeed, ZMediaPlayerSource, ZMediaPlayerSubtitleTrack };
