/** * Core types for AudioWave audio processing */ /** * Configuration for audio processing */ interface AudioConfig { /** Buffer size for audio processing (samples) */ bufferSize: number; /** Number of initial frames to skip to avoid initialization noise (default: 0) */ skipInitialFrames?: number; /** Input audio bits per sample (8, 16, 24, 32) - default: 32 */ inputBitsPerSample?: 8 | 16 | 24 | 32; /** Input audio channels (1=mono, 2=stereo, etc.) - default: 1 */ inputChannels?: number; } /** * Audio data provider interface - abstraction for any audio data source * Provider only needs to provide data subscription capability, configuration is handled internally by useCustomAudio */ interface AudioDataProvider { /** Subscribe to audio data events - returns unsubscribe function */ onAudioData(callback: (data: Uint8Array) => void): () => void; /** Subscribe to error events (optional) - returns unsubscribe function */ onAudioError?(callback: (error: string) => void): () => void; } /** * Processed audio data packet */ interface AudioDataPacket { /** Time domain audio data in range [0, 255] for visualization */ timeDomainData: Uint8Array; /** Timestamp when data was processed (milliseconds) */ timestamp: number; /** Buffer size used for this packet */ bufferSize: number; } /** * Supported audio data input formats for processing */ type AudioDataInput = Buffer | Float32Array; /** * Audio device information */ interface AudioDeviceInfo { /** Unique device identifier */ id: string; /** Human-readable device name */ name: string; } /** * Default configuration for audio processing */ declare const DEFAULT_AUDIO_CONFIG: AudioConfig; /** * Common buffer sizes for audio processing */ declare const COMMON_BUFFER_SIZES: readonly [256, 512, 1024, 2048, 4096, 8192]; /** * Audio processing constants */ declare const AUDIO_CONSTANTS: { /** Maximum buffer size allowed */ readonly MAX_BUFFER_SIZE: 16384; /** Minimum buffer size allowed */ readonly MIN_BUFFER_SIZE: 64; /** Maximum skip frames allowed */ readonly MAX_SKIP_FRAMES: 100; /** Sample rate normalization factor for 32-bit integers */ readonly INT32_NORMALIZATION_FACTOR: number; /** Conversion factor for [-1, 1] to [0, 255] range */ readonly UINT8_CONVERSION_FACTOR: 127.5; }; /** * Simple audio processor with minimal state for skip frames functionality */ declare class AudioProcessor { private frameCount; private config; constructor(config: AudioConfig); /** * Process raw audio data and convert to visualization format * Handles skip frames logic internally */ process(rawData: AudioDataInput): AudioDataPacket | null; /** * Reset frame counter (call when starting new audio stream) */ reset(): void; /** * Update configuration */ updateConfig(config: AudioConfig): void; } /** * Stateless audio processing function (for cases without skip frames) * * @param rawData - Raw audio data (Buffer or Float32Array) * @param config - Audio processing configuration * @returns Processed audio packet or null if processing fails */ declare function process(rawData: AudioDataInput, config: AudioConfig): AudioDataPacket | null; /** * Convert Buffer directly to wave data (Uint8Array) for AudioWave visualization * One-step conversion: format parsing + channel mixing + resampling + amplitude mapping */ declare function convertBufferToWaveData(buffer: Buffer, bitsPerSample: number, channels: number, targetSize: number): Uint8Array; /** * Validate audio configuration */ declare function validateAudioConfig(config: AudioConfig): boolean; /** * Create audio configuration with defaults */ declare function createAudioConfig(config?: Partial): AudioConfig; /** * Check if buffer size is a power of 2 (recommended for FFT) */ declare function isPowerOfTwo(n: number): boolean; /** * Get the nearest power of 2 buffer size */ declare function getNearestPowerOfTwo(size: number): number; /** * Validate buffer data format for 32-bit samples */ declare function isValidAudioBuffer(buffer: Buffer): boolean; export { AUDIO_CONSTANTS, type AudioConfig, type AudioDataInput, type AudioDataPacket, type AudioDataProvider, type AudioDeviceInfo, AudioProcessor, COMMON_BUFFER_SIZES, DEFAULT_AUDIO_CONFIG, convertBufferToWaveData, createAudioConfig, getNearestPowerOfTwo, isPowerOfTwo, isValidAudioBuffer, process, validateAudioConfig };