import React, { createContext, useContext } from 'react'; export interface EQBand { freq: number; gain: number; q: number; type: BiquadFilterType; label?: string; } // State for individual real-time effects export interface EffectOptions { [key: string]: any; } export interface EffectsState { [effectName: string]: { enabled: boolean; options: EffectOptions; }; } interface AudioContextType { audioRef: React.RefObject; isPlaying: boolean; currentTime: number; duration: number; togglePlay: () => void; seek: (time: number) => void; eqBands: EQBand[]; setEqBands: React.Dispatch>; effectsState: EffectsState; setEffectsState: React.Dispatch>; analyserNode: AnalyserNode | null; isGraphReady: boolean; } export const AudioContext = createContext(null); export const useAudio = () => { const context = useContext(AudioContext); if (!context) { throw new Error('useAudio must be used within an Audio provider'); } return context; };