import '../../../globals.js';
/**
 * DiscreteSoundGenerator produces sounds based on the value of a number property.  It monitors the property value and
 * maps it to one of a finite number of bins, and produces a discrete sound when the bin to which the value is mapped
 * changes.
 *
 * @author John Blanco (PhET Interactive Simulations)
 */
import BooleanProperty from '../../../axon/js/BooleanProperty.js';
import NumberProperty from '../../../axon/js/NumberProperty.js';
import Range from '../../../dot/js/Range.js';
import WrappedAudioBuffer from '../WrappedAudioBuffer.js';
import SoundClip, { SoundClipOptions } from './SoundClip.js';
type SelfOptions = {
    sound?: WrappedAudioBuffer;
    numBins?: 7;
    playbackRateRange?: Range;
    alwaysPlayOnChangesProperty?: null | BooleanProperty;
    playSoundAtMin?: boolean;
    playSoundAtMax?: boolean;
    outOfRangeValuesOK?: boolean;
};
export type DiscreteSoundGeneratorOptions = SelfOptions & SoundClipOptions;
declare class DiscreteSoundGenerator extends SoundClip {
    private readonly disposeDiscreteSoundGenerator;
    /**
     * @param valueProperty - the value that is monitored to trigger sounds
     * @param valueRange - the range of values expected and over which sounds will be played
     * @param [providedOptions] - options for this sound generation and its parent class
     */
    constructor(valueProperty: NumberProperty, valueRange: Range, providedOptions?: DiscreteSoundGeneratorOptions);
    /**
     */
    dispose(): void;
}
export default DiscreteSoundGenerator;
//# sourceMappingURL=DiscreteSoundGenerator.d.ts.map