import '../../../assert/js/assert.js';
import '../../../globals.js';
import SoundGenerator, { SoundGeneratorOptions } from './SoundGenerator.js';
import WrappedAudioBuffer from '../WrappedAudioBuffer.js';
type SelfOptions = {
    initialPlaybackRate?: number;
};
export type MultiClipOptions = SelfOptions & SoundGeneratorOptions;
declare class MultiClip<T> extends SoundGenerator {
    private readonly activeBufferSources;
    private readonly valueToWrappedAudioBufferMap;
    private readonly localGainNode;
    private playbackRate;
    private audioContextStateChangeListener;
    private timeOfDeferredPlayRequest;
    /**
     * @param valueToWrappedAudioBufferMap - a map of values to Web Audio AudioBuffer objects that is used to associate
     * each item in a set of values with a sound. The object defines a method that can then be used to play the sound
     * associated with the value.
     * @param [providedOptions]
     */
    constructor(valueToWrappedAudioBufferMap: Map<T, WrappedAudioBuffer>, providedOptions?: MultiClipOptions);
    /**
     * play the sound associated with the provided value
     */
    playAssociatedSound(value: T, delay?: number): void;
    /**
     * Change the speed that the sound playback occurs. Note, this does not affect playing sounds, but will only affect
     * subsequent plays of sounds.
     * @param playbackRate - desired playback speed, 1 = normal speed
     */
    setPlaybackRate(playbackRate: number): void;
    /**
     * Stop playing any sounds that are currently in progress.
     */
    stopAll(): void;
}
export default MultiClip;
//# sourceMappingURL=MultiClip.d.ts.map