import { PlayOptions } from './play-sound-options.interface';
import { SoundEvent } from './sound-event.interface';
import { SoundEventsEnum } from './sound-events.enum';
import { SoundGroup } from './sound-group';
import { SoundManagerConfig } from './sound-manager-config';
import { SoundManagerInterface } from './sound-manager.interface';
import { SoundPannerConfig } from './sound-panner-config';
import { SoundResetOptions } from './sound-reset-options.interface';
import { SoundStateInfo } from './sound-state-info.interface';
import { Sound } from './sound.interface';
export declare class SoundManager implements SoundManagerInterface {
    private readonly config;
    private readonly context;
    private sounds;
    private masterGainNode;
    private masterStereoPanner;
    private masterPannerNode;
    private previousGlobalVolume;
    private isMuted;
    private previousGlobalPan;
    private PROGRESS_UPDATE_INTERVAL;
    private eventListeners;
    private readonly activeSources;
    private activeFadeCallbacks;
    private isHandlingError;
    private audioNodeConnector;
    private ticker;
    private lastError;
    private masterSpatialPosition;
    private _spatialAudioSupported;
    private readonly DEFAULT_PRECISION;
    private soundGroups;
    private instanceCounters;
    private unlockHandlers;
    private VERSION;
    constructor(config?: SoundManagerConfig);
    private initialize;
    private debugLog;
    private setupVisibilityHandling;
    private initializeSpatialAudio;
    private setupAudioUnlock;
    private removeUnlockListeners;
    private isMobileLikeEnvironment;
    private setupContextResumeHandlers;
    private setupAudioSource;
    private handleLoopIteration;
    private handleSoundEnded;
    private scheduleFadeOut;
    private cancelScheduledFadeOut;
    private cancelFadeAnimation;
    private getValidatedSound;
    private setValidatedVolume;
    private cleanupSound;
    private cleanup;
    private handleError;
    private cleanupExistingSource;
    private getInstanceCounter;
    private resetCounterForSound;
    private reconnectAudioNodes;
    play(id: string, options?: PlayOptions, skipDispatchEvent?: boolean): Sound | undefined;
    playSprite(id: string, spriteKey: string, options: PlayOptions, skipDispatchEvent?: boolean): void;
    pause(id: string, skipDispatchEvent?: boolean): void;
    resume(id: string, skipDispatchEvent?: boolean): void;
    stop(id: string, skipDispatchEvent?: boolean): void;
    seek(id: string, time: number, skipDispatchEvent?: boolean): void;
    stopAllSounds(): void;
    pauseAllSounds(): void;
    resumeAllSounds(): void;
    fadeIn(id: string, duration: number, startVolume?: number, endVolume?: number, skipDispatchEvent?: boolean): void;
    fadeOut(id: string, duration?: number, startVolume?: number, endVolume?: number, stopAfterFade?: boolean, skipDispatchEvent?: boolean): void;
    private fadeSound;
    fadeGlobalIn(duration?: number, startVolume?: number, endVolume?: number): void;
    fadeGlobalOut(duration?: number, startVolume?: number, endVolume?: number): void;
    getVolume(id: string): number;
    setSoundVolume(id: string, volume: number, skipDispatchEvent?: boolean): void;
    getSoundVolume(id: string): number;
    setGlobalVolume(volume: number): void;
    getGlobalVolume(): number;
    muteAllSounds(): void;
    unmuteAllSounds(): void;
    mute(id: string): void;
    unmute(id: string): void;
    toggleMute(id: string): void;
    toggleGlobalMute(): void;
    setLoop(id: string, loop: boolean, maxLoops?: number): void;
    getLoop(id: string): boolean;
    private shouldUseProxy;
    private isLocalUrl;
    private getProxyUrl;
    private loadWithWebAudio;
    private fetchWithRetry;
    private processAudioResponse;
    private loadWithHtml5Audio;
    loadSounds(soundsToLoad: {
        id: string;
        url: string;
    }[], signal?: AbortSignal): Promise<void>;
    private calculateAudioSize;
    private createSoundNode;
    loadSound(id: string, url: string, signal?: AbortSignal): Promise<void>;
    updateSoundUrl(id: string, newUrl: string): Promise<void>;
    unloadSound(id: string): void;
    removeSound(id: string): void;
    isSoundLoaded(id: string): boolean;
    createSoundGroup(groupName: string, options?: {
        maxInstances?: number;
        playOptions?: PlayOptions;
    }): void;
    addToSoundGroup(groupName: string, soundId: string): void;
    removeFromSoundGroup(groupName: string, soundId: string): void;
    getGroup(groupName: string): SoundGroup | undefined;
    removeSoundGroup(groupName: string): void;
    setSoundSprite(id: string, sprite: {
        [key: string]: [number, number];
    }): void;
    getSpriteConfig(id: string): {
        [key: string]: [number, number];
    } | undefined;
    removeSpriteSound(spriteKey: string): void;
    removeSpriteConfig(id: string): void;
    suspendContext(): Promise<void>;
    resumeContext(): Promise<void>;
    getContext(): AudioContext;
    getMasterOutput(): AudioNode;
    isPlaying(id: string): boolean;
    isPaused(id: string): boolean;
    isStopped(id: string): boolean;
    getSoundState(id: string): SoundStateInfo;
    getCurrentTime(id: string): number;
    getDuration(id: string): number;
    getProgress(id: string): number;
    getProgressPercentage(id: string): number;
    startProgressTracking(id: string): void;
    stopProgressTracking(id: string): void;
    setProgressUpdateInterval(interval: number): void;
    setPan(id: string, value: number, skipDispatchEvent?: boolean): void;
    resetPan(id?: string): void;
    removePan(id: string): void;
    setGlobalPan(value: number): void;
    getGlobalPan(): number;
    resetGlobalPan(): void;
    getPreviousMasterPan(): number;
    cleanupGlobalPan(): void;
    isStereoPanActive(id: string): boolean;
    isSpatialAudioEnabled(): boolean;
    isSpatialAudioSupported(): boolean;
    setSpatialPosition(x: number, y: number, z: number, soundId?: string | null, soundPannerConfig?: SoundPannerConfig, skipDispatchEvent?: boolean): void;
    getSpatialPosition(soundId: string): {
        x: number;
        y: number;
        z: number;
    } | null;
    setMasterSpatialPosition(x: number, y: number, z: number, config?: SoundPannerConfig, skipDispatchEvent?: boolean): void;
    getMasterSpatialPosition(): {
        x: number;
        y: number;
        z: number;
    };
    removeSpatialEffect(id: string): void;
    isSpatialAudioActive(id: string): boolean;
    updatePannerConfigById(soundId: string, newConfig: Partial<SoundPannerConfig>): void;
    resetSpatialPosition(id?: string): void;
    resetMasterSpatialPosition(): void;
    setPlaybackRate(id: string, rate: number, skipDispatchEvent?: boolean): void;
    getPlaybackRate(id: string): number;
    reset(options?: SoundResetOptions): void;
    resetSound(id: string, options?: SoundResetOptions): void;
    getSound(id: string): Sound | undefined;
    getBuffer(id: string): AudioBuffer | undefined;
    getSource(id: string): AudioBufferSourceNode | undefined;
    getGainNode(id: string): GainNode | undefined;
    hasSound(id: string): boolean;
    updateSoundOptions(soundId: string, options: Partial<PlayOptions>): void;
    isReady(): boolean;
    getSoundCount(): number;
    resetAllCounters(): void;
    getSoundIds(): string[];
    setDebugMode(debug: boolean): void;
    getConfig(): Readonly<SoundManagerConfig>;
    getLastError(): Error | null;
    roundValue(value: number, decimals?: number): number;
    destroy(): void;
    addEventListener(type: SoundEventsEnum, callback: (event: SoundEvent) => void, filter?: {
        originalId?: string;
        instanceId?: string;
        instancePattern?: RegExp;
    }): void;
    removeEventListener(type: SoundEventsEnum, callback: (event: SoundEvent) => void, filter?: {
        originalId?: string;
        instancePattern?: RegExp;
    }): void;
    removeEventListenersForInstance(instanceId: string): void;
    dispatchEvent(event: SoundEvent): void;
    hasEventListener(type: SoundEventsEnum): boolean;
    getVersion(): string;
    private showConsoleInfo;
}
