import { BasePlayer } from '../../core/dist/BasePlayer';
import { ControlsVisibilityConfig, Chapter, ChapterSegment } from '../../core/dist/index';
import { ChapterConfig, VideoChapters, VideoSegment } from './chapters/types/ChapterTypes';
import type { FlashNewsTickerConfig } from './react/types/FlashNewsTickerTypes';
import type { ThumbnailPreviewConfig } from './react/types/ThumbnailPreviewTypes';
declare global {
    interface Window {
        Hls: any;
        dashjs: any;
        cast?: any;
        chrome?: any;
        YT?: any;
        __onGCastApiAvailable?: (isAvailable: boolean) => void;
    }
}
export declare class WebPlayer extends BasePlayer {
    protected video: HTMLVideoElement | null;
    private hls;
    private dash;
    private qualities;
    private currentQualityIndex;
    private autoQuality;
    private currentStreamType;
    private useCustomControls;
    private controlsContainer;
    private volumeHideTimeout;
    private hideControlsTimeout;
    private isVolumeSliding;
    private availableQualities;
    private availableSubtitles;
    private currentQuality;
    private currentSubtitle;
    private currentPlaybackRate;
    private isDragging;
    private globalMouseMoveHandler;
    private globalTouchMoveHandler;
    private globalMouseUpHandler;
    private globalTouchEndHandler;
    private settingsConfig;
    private controlsVisibility;
    private watermarkCanvas;
    private playerWrapper;
    private instanceId;
    private static instanceCounter;
    private cachedElements;
    private flashTickerContainer;
    private flashTickerTopElement;
    private flashTickerBottomElement;
    private tickerCurrentItemIndex;
    private tickerCycleTimer;
    private tickerConfig;
    private tickerHeadlineElement;
    private tickerDetailElement;
    private tickerIntroOverlay;
    private tickerProgressBar;
    private tickerProgressFill;
    private tickerIsPaused;
    private tickerPauseStartTime;
    private tickerRemainingTime;
    private previewGateHit;
    private paymentSuccessTime;
    private paymentSuccessful;
    private isPaywallActive;
    private authValidationInterval;
    private overlayRemovalAttempts;
    private maxOverlayRemovalAttempts;
    private lastSecurityCheck;
    private castContext;
    private remotePlayer;
    private remoteController;
    private isCasting;
    private _castTrackIdByKey;
    private selectedSubtitleKey;
    private _kiTo;
    private paywallController;
    private _playPromise;
    private _deferredPause;
    private _lastToggleAt;
    private _TOGGLE_DEBOUNCE_MS;
    private hasTriedButtonFallback;
    private lastUserInteraction;
    private showTimeTooltip;
    private tapStartTime;
    private tapStartX;
    private tapStartY;
    private lastTapTime;
    private lastTapX;
    private tapCount;
    private longPressTimer;
    private isLongPressing;
    private longPressPlaybackRate;
    private tapResetTimer;
    private fastBackwardInterval;
    private handleSingleTap;
    private handleDoubleTap;
    private handleLongPress;
    private handleLongPressEnd;
    private autoplayCapabilities;
    private autoplayRetryPending;
    private autoplayRetryAttempts;
    private maxAutoplayRetries;
    private chapterManager;
    private drmManager;
    private isDRMProtected;
    private hasAppliedStartTime;
    private coreChapterManager;
    private chapterConfig;
    private qualityFilter;
    private premiumQualities;
    private youtubeNativeControls;
    private isAdPlaying;
    private fallbackSourceIndex;
    private fallbackErrors;
    private isLoadingFallback;
    private currentRetryAttempt;
    private lastFailedUrl;
    private isFallbackPosterMode;
    private hlsErrorRetryCount;
    private readonly MAX_HLS_ERROR_RETRIES;
    private lastDuration;
    private isDetectedAsLive;
    private isWaitingForLiveStream;
    private liveRetryTimer;
    private liveRetryAttempts;
    private bandwidthDetector;
    private readonly BANDWIDTH_TIERS;
    private liveStreamOriginalSource;
    private liveMessageRotationTimer;
    private liveMessageIndex;
    private liveBufferingTimeoutTimer;
    private liveCountdownTimer;
    private liveCountdownRemainingSeconds;
    private isShowingLiveCountdown;
    private hasCountdownCompleted;
    private isReloadingAfterCountdown;
    private countdownCallbackFired;
    private thumbnailPreviewConfig;
    private thumbnailEntries;
    private preloadedThumbnails;
    private currentThumbnailUrl;
    private thumbnailPreviewEnabled;
    private subtitleBlobUrls;
    private subtitleOverlay;
    private debugLog;
    private debugError;
    private debugWarn;
    private isLiveStreamNotReady;
    private startLiveStreamWaiting;
    private stopLiveStreamWaiting;
    private scheduleLiveStreamRetry;
    private retryLiveStreamLoad;
    private showLiveWaitingUI;
    private updateLiveWaitingMessage;
    private getLiveWaitingMessages;
    private rotateLoadingMessage;
    private showLiveCountdown;
    private sanitizeHtml;
    private updateLiveCountdownDisplay;
    private tickCountdown;
    private handleCountdownComplete;
    private stopLiveCountdown;
    updateLiveCountdown(config: any): void;
    private getElementId;
    private getElement;
    private cacheElementReferences;
    private deepMergeControlsConfig;
    private setElementVisibility;
    private applyControlsVisibility;
    setControlsEnabled(enabled: boolean): void;
    setControlsVisibility(config: Partial<ControlsVisibilityConfig>): void;
    initializeThumbnailPreview(config: ThumbnailPreviewConfig): void;
    private transformThumbnailData;
    private findThumbnailForTime;
    private preloadThumbnailImages;
    private applyThumbnailStyles;
    private updateThumbnailPreview;
    private hideThumbnailPreview;
    setThumbnailPreview(config: ThumbnailPreviewConfig | null): void;
    initialize(container: HTMLElement | string, config?: any): Promise<void>;
    protected setupPlayer(): Promise<void>;
    private autoplayAttempted;
    private setupVideoEventListeners;
    private getMediaErrorMessage;
    private updateBufferProgress;
    load(source: any): Promise<void>;
    private loadVideoSource;
    private initializeDRM;
    private handleDRMError;
    private tryFallbackSource;
    private showFallbackPoster;
    private detectSourceType;
    private loadHLS;
    private handleHLSError;
    private loadDASH;
    private updateDASHQuality;
    private detectBandwidth;
    private getBandwidthTier;
    private getOptimizedHLSConfig;
    private getOptimizedDASHSettings;
    private setupBandwidthMonitoring;
    private reoptimizePlayback;
    getBandwidthInfo(): {
        estimated: number | null;
        tier: 'high' | 'medium' | 'low' | null;
        method: 'probe' | 'manifest' | 'fallback' | null;
    };
    redetectBandwidth(): Promise<void>;
    private loadNative;
    private loadYouTube;
    private youtubePlayer;
    private youtubePlayerReady;
    private youtubeIframe;
    private createYouTubePlayer;
    private loadYouTubeAPI;
    private waitForYouTubeAPI;
    private onYouTubePlayerReady;
    private onYouTubePlayerStateChange;
    private updateYouTubeUI;
    private onYouTubePlayerError;
    private youtubeTimeTrackingInterval;
    private startYouTubeTimeTracking;
    private updateYouTubeProgressBar;
    protected loadScript(src: string): Promise<void>;
    private loadSubtitles;
    private updateSubtitleOverlay;
    private isAbortPlayError;
    private isAutoplayRestrictionError;
    private detectAutoplayCapabilities;
    private hasUserActivation;
    private attemptIntelligentAutoplay;
    private setupAutoplayRetry;
    private showUnmuteButton;
    private setupClickToUnmute;
    private clickToUnmuteHandler;
    private hideUnmuteButton;
    private updateTimeTooltip;
    private hideTimeTooltip;
    private setupUserInteractionTracking;
    play(): Promise<void>;
    pause(): void;
    requestPause(): void;
    private safeSetCurrentTime;
    seek(time: number): void;
    setVolume(level: number): void;
    mute(): void;
    unmute(): void;
    getCurrentTime(): number;
    getQualities(): any[];
    getCurrentQuality(): any;
    setQuality(index: number): void;
    setPlaybackRate(rate: number): void;
    setFlashNewsTicker(config: FlashNewsTickerConfig): void;
    private createTickerElement;
    private createSimpleTickerElement;
    private createBroadcastTickerElement;
    private getBroadcastThemeColors;
    private createBroadcast1Element;
    private createSeamlessScrollingTrack;
    private createGlobeElement;
    private createLiveBadgeElement;
    private ensureTickerAnimations;
    private calculateTickerDuration;
    private createProfessionalTickerElement;
    private createProfessionalHeader;
    private createDecorativeSeparator;
    private createTwoLineBody;
    private createProgressBar;
    private createIntroOverlay;
    private playIntroAnimation;
    private startItemCycling;
    private stopItemCycling;
    private pauseItemCycling;
    private resumeItemCycling;
    private animateProgress;
    private transitionToNextItem;
    private applyItemTransition;
    private formatHeadlineText;
    private escapeHtml;
    private updateItemContent;
    setAutoQuality(enabled: boolean): void;
    enterFullscreen(): Promise<void>;
    exitFullscreen(): Promise<void>;
    enterPictureInPicture(): Promise<void>;
    exitPictureInPicture(): Promise<void>;
    focusPlayer(): void;
    showFullscreenTip(): void;
    private isBraveBrowser;
    private checkFullscreenPermissions;
    private isPrivateWindow;
    triggerFullscreenButton(): void;
    private performFullscreenButtonClick;
    private requestFullscreenPermissionBrave;
    enterFullscreenWithBraveSupport(): Promise<void>;
    showTemporaryMessage(message: string): void;
    enterFullscreenSynchronously(): void;
    requestFullscreenWithUserGesture(event: Event): Promise<boolean>;
    showFullscreenInstructions(): void;
    attemptFullscreen(): Promise<boolean>;
    protected applySubtitleTrack(track: any): void;
    protected removeSubtitles(): void;
    private injectStyles;
    private getPlayerStyles;
    private createFrameworkBranding;
    private resolveControlVisibility;
    private createNavigationButtons;
    private getNavigationIcon;
    private createCustomControls;
    private setupControlsEventListeners;
    protected setupKeyboardShortcuts(): void;
    protected setupWatermark(): void;
    setPaywallConfig(config: any): void;
    dismissPaywall(options?: {
        resume?: boolean;
    }): void;
    private togglePlayPause;
    private enforceFreePreviewGate;
    setFreeDuration(seconds: number): void;
    resetFreePreviewGate(): void;
    resetPaymentStatus(): void;
    private toggleMuteAction;
    private isMobileDevice;
    private isPipSupported;
    private isIOSDevice;
    private isAndroidDevice;
    private isFullscreenSupported;
    private lockOrientationLandscape;
    private unlockOrientation;
    private handleVolumeChange;
    private seekToPosition;
    private formatTime;
    private formatCountdownTime;
    private resetProgressBar;
    private getYouTubeHeight;
    private updateTimeDisplay;
    private showControls;
    private hideControls;
    private scheduleHideControls;
    private setupAdvancedTapHandling;
    private startFastBackward;
    private stopFastBackward;
    private isFullscreen;
    private setupFullscreenListeners;
    private showShortcutIndicator;
    setSettingsScrollbarStyle(mode: 'default' | 'compact' | 'overlay'): void;
    setSettingsScrollbarConfig(options: {
        widthPx?: number;
        intensity?: number;
    }): void;
    private applyScrollbarPreferencesFromDataset;
    private setupChapterManager;
    private convertToChapters;
    private convertToChapterSegments;
    private mapSegmentAction;
    loadChapters(chapters: VideoChapters): Promise<void>;
    loadChaptersFromUrl(url: string): Promise<void>;
    getCurrentSegment(): VideoSegment | null;
    skipToSegment(segmentId: string): void;
    getSegments(): VideoSegment[];
    updateChapterConfig(newConfig: Partial<ChapterConfig>): void;
    hasChapters(): boolean;
    getChapters(): VideoChapters | null;
    getCoreChapters(): Chapter[];
    getCoreSegments(): ChapterSegment[];
    getCurrentChapterInfo(): Chapter | null;
    seekToChapter(chapterId: string): void;
    getNextChapter(): Chapter | null;
    getPreviousChapter(): Chapter | null;
    setTheme(theme: any): void;
    private _parseRgb;
    private _rgbToString;
    private _lightenRgb;
    private _toRgba;
    private changeVolume;
    private setSpeed;
    private setQualityByLabel;
    private updateQualityBadgeText;
    private updateQualityLabel;
    private togglePiP;
    private setupCastContextSafe;
    private setupCastContext;
    private enableCastRemoteControl;
    private disableCastRemoteControl;
    private _bindRemotePlayerEvents;
    private updateVolumeUIFromRemote;
    private _syncUIFromRemote;
    private _syncCastButtons;
    private updateSettingsMenu;
    private generateAccordionMenu;
    private detectAvailableQualities;
    private applyQualityFilter;
    setQualityFilter(filter: any): void;
    setAdPlaying(isPlaying: boolean): void;
    isAdCurrentlyPlaying(): boolean;
    private isQualityPremium;
    private isPremiumUser;
    private handlePremiumQualityClick;
    private detectAvailableSubtitles;
    private setupSettingsEventListeners;
    private toggleAccordionSection;
    private hideSettingsMenu;
    private updateAccordionAfterSelection;
    private updateSettingsActiveStates;
    private setPlaybackRateFromSettings;
    private setQualityFromSettings;
    private applyHLSQualityFilter;
    private applyDASHQualityFilter;
    private setSubtitle;
    private _updateCastActiveTracks;
    private onCastButtonClick;
    private showAirPlayPicker;
    private stopCasting;
    private initCast;
    private shareVideo;
    private isTextTruncated;
    private showTextTooltip;
    private hideTextTooltip;
    private setupTextTooltips;
    private smartTruncateText;
    private applySmartTextDisplay;
    private updateMetadataUI;
    private showNotification;
    private canPlayVideo;
    private enforcePaywallSecurity;
    private startOverlayMonitoring;
    private handleSecurityViolation;
    private showSecurityViolationMessage;
    private forceCleanupOverlays;
    showEPGButton(): void;
    hideEPGButton(): void;
    setEPGData(epgData: any): void;
    isEPGButtonVisible(): boolean;
    private cleanup;
    destroy(): Promise<void>;
}
//# sourceMappingURL=WebPlayer.d.ts.map