/**
 * AudioPlayer - Complete audio playback solution with reactive visualizations
 *
 * Uses HTML5 audio for playback + Web Audio API for visualization.
 * No crackling, native streaming support.
 *
 * @example
 * // Simple usage
 * import { HybridSimplePlayer } from '../../_shared';
 * <HybridSimplePlayer src="/audio.mp3" title="Track Title" />
 *
 * @example
 * // Custom setup with context
 * import { HybridAudioProvider, HybridAudioPlayer } from '../../_shared';
 * <HybridAudioProvider src={audioUrl}>
 *   <HybridAudioPlayer showWaveform showControls />
 * </HybridAudioProvider>
 */

// =============================================================================
// COMPONENTS
// =============================================================================

export {
  HybridAudioPlayer,
  HybridSimplePlayer,
  HybridCompactPlayer,
  HybridWaveform,
  AudioReactiveCover,
  // Effect components (for custom implementations)
  GlowEffect,
  OrbsEffect,
  SpotlightEffect,
  MeshEffect,
} from './components';

export type {
  HybridAudioPlayerProps,
  HybridSimplePlayerProps,
  HybridCompactPlayerProps,
  HybridWaveformProps,
  AudioReactiveCoverProps,
  GlowEffectData,
} from './components';

// =============================================================================
// CONTEXT
// =============================================================================

export {
  HybridAudioProvider,
  useHybridAudioContext,
  useHybridAudioState,
  useHybridAudioControls,
  useHybridAudioLevels,
  useHybridWebAudio,
} from './context';

export type {
  HybridAudioContextValue,
  HybridAudioProviderProps,
} from './context';

// =============================================================================
// HOOKS
// =============================================================================

export {
  // Audio bus
  useAudioBus,
  useAudioBusStore,
  // Core hooks
  useHybridAudio,
  useHybridAudioAnalysis,
  // Visualization settings
  useVisualization,
  useAudioVisualization,
  VisualizationProvider,
  VARIANT_INFO,
  INTENSITY_INFO,
  COLOR_SCHEME_INFO,
} from './hooks';

export type {
  UseAudioBusReturn,
  UseHybridAudioOptions,
  HybridAudioState,
  HybridAudioControls,
  HybridWebAudioAPI,
  UseHybridAudioReturn,
  VisualizationSettings,
  VisualizationVariant,
  VisualizationIntensity,
  VisualizationColorScheme,
  UseVisualizationReturn,
  UseAudioVisualizationReturn,
  VisualizationProviderProps,
} from './hooks';

// =============================================================================
// TYPES
// =============================================================================

export type { EqualizerOptions } from './types';

// =============================================================================
// EFFECTS
// =============================================================================

export {
  // Utilities
  getEffectConfig,
  getColors,
  prepareEffectColors,
  calculateGlowLayers,
  calculateOrbs,
  calculateMeshGradients,
  calculateSpotlight,
  // Constants
  INTENSITY_CONFIG,
  COLOR_SCHEMES,
  EFFECT_ANIMATIONS,
} from './effects';

export type {
  EffectVariant,
  EffectIntensity,
  EffectColorScheme,
  AudioLevels,
  EffectConfig,
  EffectColors,
  EffectLayer,
} from './effects';

// =============================================================================
// UTILITIES
// =============================================================================

export { formatTime } from './utils';
