/** * Page Visibility Manager * * Handles browser tab visibility changes to prevent audio stuttering * when switching tabs or minimizing browser * * Key features: * - Detects tab visibility changes * - Resumes AudioContext when tab becomes visible * - Prevents browser throttling of audio * - Maintains smooth playback across tab switches */ export interface PageVisibilityOptions { /** Callback when page becomes visible */ onVisible?: () => void; /** Callback when page becomes hidden */ onHidden?: () => void; /** Auto-resume AudioContext on visibility change (default: true) */ autoResumeAudio?: boolean; } export declare class PageVisibilityManager { private audioContext; private options; private visibilityChangeHandler; private isActive; constructor(options?: PageVisibilityOptions); /** * Initialize page visibility monitoring */ initialize(audioContext?: AudioContext): void; /** * Set AudioContext to manage */ setAudioContext(audioContext: AudioContext): void; /** * Handle visibility change */ private handleVisibilityChange; /** * Handle page becoming visible */ private handleVisible; /** * Handle page becoming hidden */ private handleHidden; /** * Check if page is currently visible */ isVisible(): boolean; /** * Check if page visibility API is supported */ isSupported(): boolean; /** * Get current visibility state */ getVisibilityState(): DocumentVisibilityState | null; /** * Clean up listeners */ destroy(): void; } /** * Get or create global visibility manager */ export declare function getPageVisibilityManager(options?: PageVisibilityOptions): PageVisibilityManager; /** * Helper to prevent audio stuttering on tab switch */ export declare function enableSmoothTabSwitching(audioContext: AudioContext): PageVisibilityManager;