import '../../assert/js/assert.js';
import '../../globals.js';
/**
 * AmplitudeModulator instances can be used to create low-frequency amplitude oscillation effects on a loop, oscillator,
 * or other steady sound source.  It is not a sound generator itself, and is instead intended to be used as a component
 * within a sound generator.
 *
 * @author John Blanco (PhET Interactive Simulations)
 */
import EnabledComponent, { EnabledComponentOptions } from '../../axon/js/EnabledComponent.js';
import NumberProperty from '../../axon/js/NumberProperty.js';
import Property from '../../axon/js/Property.js';
import StrictOmit from '../../phet-core/js/types/StrictOmit.js';
type SelfOptions = {
    frequencyProperty?: NumberProperty | null;
    depthProperty?: NumberProperty | null;
    waveformProperty?: Property<OscillatorType> | null;
};
export type AmplitudeModulatorOptions = SelfOptions & StrictOmit<EnabledComponentOptions, 'enabledProperty'>;
declare class AmplitudeModulator extends EnabledComponent {
    readonly frequencyProperty: NumberProperty;
    readonly depthProperty: NumberProperty;
    readonly waveformProperty: Property<OscillatorType>;
    private readonly modulatedGainNode;
    private readonly disposeAmplitudeModulator;
    readonly myEnabledProperty: Property<boolean>;
    constructor(providedOptions?: AmplitudeModulatorOptions);
    /**
     * Clean up memory references to avoid memory leaks.
     */
    dispose(): void;
    /**
     * Get the gain node to which connections should occur.
     */
    getConnectionPoint(): GainNode;
    /**
     * Connect the output of this modulator to a destination.
     */
    connect(destination: AudioNode | AudioParam): void;
}
export default AmplitudeModulator;
//# sourceMappingURL=AmplitudeModulator.d.ts.map