import '../../../assert/js/assert.js';
import '../../../globals.js';
import { TReadOnlyEmitter } from '../../../axon/js/TEmitter.js';
import TReadOnlyProperty from '../../../axon/js/TReadOnlyProperty.js';
import Range from '../../../dot/js/Range.js';
import WrappedAudioBuffer from '../WrappedAudioBuffer.js';
import SoundClip, { SoundClipOptions } from './SoundClip.js';
type SelfOptions = {
    fadeStartDelay?: number;
    fadeTime?: number;
    delayBeforeStop?: number;
    playbackRateRange?: Range;
    normalizationMappingExponent?: number;
    stopOnDisabled?: boolean;
    stepEmitter?: TReadOnlyEmitter<[number]> | null;
};
export type ContinuousPropertySoundClipOptions = SelfOptions & SoundClipOptions;
declare class ContinuousPropertySoundClip extends SoundClip {
    private readonly fadeTime;
    private readonly delayBeforeStop;
    private readonly nonFadedOutputLevel;
    private remainingFadeTime;
    /**
     * @param property
     * @param range - the range of values that the provided property can take on
     * @param sound - returned by the import directive, should be optimized for good continuous looping, which
     *   may require it to be a .wav file, since .mp3 files generally have a bit of silence at the beginning.
     * @param [providedOptions]
     */
    constructor(property: TReadOnlyProperty<number>, range: Range, sound: WrappedAudioBuffer, providedOptions?: ContinuousPropertySoundClipOptions);
    /**
     * Step this sound generator, used for fading out the sound in the absence of change.
     * @param dt - change in time (i.e. delta time) in seconds
     */
    step(dt: number): void;
    /**
     * stop any in-progress sound generation
     */
    reset(): void;
}
export default ContinuousPropertySoundClip;
//# sourceMappingURL=ContinuousPropertySoundClip.d.ts.map