export interface FrequencyMapping { deepFreq: { min: number; max: number }; // 20-250Hz - Deep Earth Pulse midFreq: { min: number; max: number }; // 250-4000Hz - Heartwood Resonance highFreq: { min: number; max: number }; // 4000-20000Hz - Canopy Shiver } export interface AudioData { frequencies: Uint8Array; deepEnergy: number; // Normalized 0-1 midEnergy: number; // Normalized 0-1 highEnergy: number; // Normalized 0-1 overallAmplitude: number; // Normalized 0-1 peakDetected: boolean; beatDetected: boolean; } export interface PeakDetection { energyHistory: number[]; historyLength: number; lastPeakTime: number; minTimeBetweenPeaks: number; sensitivity: number; } export interface BeatManager { currentWaveRadius: number; waveStrength: number; isWaveActive: boolean; triggerWave: (energy: number) => void; update: (deltaTime: number) => void; getWaveForce: (distance: number) => number; } export interface Track { id: string; title: string; artist: string; url: string; duration?: number; } export interface PlaybackState { isPlaying: boolean; currentTrack: Track | null; currentTime: number; volume: number; tracks: Track[]; } export interface AudioEngine { initialize: () => Promise; loadTrack: (track: Track) => Promise; play: () => Promise; pause: () => void; seekTo: (time: number) => void; setVolume: (volume: number) => void; getAudioData: () => AudioData; getCurrentTime: () => number; getDuration: () => number; getAudioElement: () => HTMLAudioElement | null; isPlaying: () => boolean; cleanup: () => void; setOnTrackEndedCallback: (callback: (() => void) | null) => void; }