import { EnvelopeOptions } from 'tone';
import { ToneAudioNodeOptions, ToneAudioNode } from 'tone/build/esm/core/context/ToneAudioNode';
import { Instrument } from 'tone/build/esm/instrument/Instrument';
import { OmniOscillatorSynthOptions } from 'tone/build/esm/source/oscillator/OscillatorInterface';
import { Source } from 'tone/build/esm/source/Source';
import { UserMedia } from 'tone/build/esm/source/UserMedia';
export type SourceType = Source<any> | UserMedia;
export type InstrumentType = Instrument<any>;
export type EnvelopeParamsType = Partial<Omit<EnvelopeOptions, keyof ToneAudioNodeOptions>>;
export type OscillatorParamsType = Partial<OmniOscillatorSynthOptions>;
export declare class AudioBuilder {
    private _source;
    private _instrument;
    private _audioNode;
    private _oscillatorParams;
    private _envelopeParams;
    setAudioNode(inputNode: ToneAudioNode | undefined): void;
    audioNode(): ToneAudioNode<import("tone/build/esm/core/context/ToneWithContext").ToneWithContextOptions> | undefined;
    setSource(source: SourceType | undefined): void;
    source(): SourceType | undefined;
    setInstrument(instrument: InstrumentType | undefined): void;
    instrument(): InstrumentType | undefined;
    setOscillatorParams(params: OscillatorParamsType | undefined): void;
    oscillatorParams(): OscillatorParamsType | undefined;
    setEnvelopeParams(params: EnvelopeParamsType | undefined): void;
    envelopeParams(): Partial<Omit<EnvelopeOptions, "context">> | undefined;
    clone(): AudioBuilder;
}
