import { AudioSourceConfig, ExtendedAudioSource, AudioSourceState } from '../types/AudioSource';
export interface WebAudioSourceOptions extends AudioSourceConfig {
    /** Smoothing time constant for the analyser (0-1, default: 0.8) */
    smoothingTimeConstant?: number;
}
/**
 * WebAudioSource - Unified Web Audio API implementation
 *
 * Supports multiple input types:
 * - MediaStream (from getUserMedia, getDisplayMedia)
 * - HTMLMediaElement (audio/video elements)
 * - AudioNode (existing Web Audio nodes)
 */
export declare class WebAudioSource implements ExtendedAudioSource {
    private audioContext;
    private analyserNode;
    private sourceNode;
    private audioData;
    private state;
    private options;
    private mediaStream;
    private inputAudioNode;
    constructor(options?: WebAudioSourceOptions);
    /**
     * Initialize from MediaStream (getUserMedia, getDisplayMedia)
     */
    initializeFromMediaStream(stream: MediaStream): Promise<void>;
    /**
     * Initialize from HTMLMediaElement (audio/video elements)
     */
    initializeFromMediaElement(element: HTMLMediaElement): Promise<void>;
    /**
     * Initialize from existing AudioNode
     */
    initializeFromAudioNode(node: AudioNode): Promise<void>;
    /**
     * Get current audio data for visualization (Standard AudioSource interface)
     */
    getAudioData(): Uint8Array | null;
    /**
     * Get time domain data specifically (for debugging/comparison)
     */
    getTimeDomainData(): Uint8Array | null;
    /**
     * Get frequency domain data specifically (for debugging/comparison)
     */
    getFrequencyData(): Uint8Array | null;
    /**
     * Check if the source is currently active (Standard AudioSource interface)
     */
    isActive(): boolean;
    /**
     * Get current state of the audio source (Extended interface)
     */
    getState(): AudioSourceState;
    /**
     * Get configuration used by this audio source (Extended interface)
     */
    getConfig(): AudioSourceConfig;
    /**
     * Destroy the source and clean up all resources (Extended interface)
     */
    destroy(): void;
    /**
     * Set up Web Audio API context and analyser
     */
    private setupWebAudio;
    /**
     * Set up analyser node
     */
    private setupAnalyser;
    /**
     * Connect source node to analyser
     */
    private connectNodes;
    /**
     * Clean up all resources
     */
    private cleanup;
}
//# sourceMappingURL=WebAudioSource.d.ts.map