/**
 * Infrastructure Layer - Web Audio API Implementation
 * Handles the technical details of applying gain to audio nodes
 */
import { GainValue, GainRepository, GainPolicy } from '../../domain/gain/gain-domain';
export interface WebAudioGainOptions {
    smoothingTimeConstant?: number;
    enableSmoothing?: boolean;
    policy?: GainPolicy;
}
export declare class WebAudioGainRepository implements GainRepository {
    private readonly audioContext;
    private gainNode?;
    private currentGain;
    private readonly options;
    private presets;
    constructor(audioContext: AudioContext, options?: WebAudioGainOptions);
    getCurrentGain(): Promise<GainValue>;
    setGain(gain: GainValue): Promise<void>;
    savePreset(name: string, gain: GainValue): Promise<void>;
    loadPreset(name: string): Promise<GainValue | null>;
    /**
     * Get the actual Web Audio API gain node for connection to audio graph
     */
    getGainNode(): GainNode;
    /**
     * Connect this gain repository to an audio processing chain
     */
    connectTo(sourceNode: AudioNode, destinationNode: AudioNode): void;
    /**
     * Clean up resources
     */
    destroy(): void;
    private createGainNode;
}
//# sourceMappingURL=web-audio-gain-repository.d.ts.map