/**
 * Effect-related types for audio-reactive visualizations
 */

// =============================================================================
// EFFECT TYPES
// =============================================================================

export type EffectVariant = 'glow' | 'orbs' | 'spotlight' | 'mesh';
export type EffectIntensity = 'subtle' | 'medium' | 'strong';
export type EffectColorScheme = 'primary' | 'vibrant' | 'cool' | 'warm';

export interface AudioLevels {
  bass: number;
  mid: number;
  high: number;
  overall: number;
}

export interface EffectConfig {
  opacity: number;
  scale: number;
  blur: string;
}

export interface EffectColors {
  colors: string[];
  hueShift: number;
}

export interface EffectLayer {
  inset: number;
  opacity: number;
  scale: number;
  background: string;
  blur: string;
  animation?: string;
}

export interface Orb {
  x: number;
  y: number;
  size: number;
  color: string;
  opacity: number;
  scale: number;
}

export interface MeshGradient {
  width: string;
  height: string;
  top?: string;
  bottom?: string;
  left?: string;
  right?: string;
  color: string;
  opacity: number;
  scale: number;
  rotation: number;
  blur: string;
  isCenter?: boolean;
}

export interface SpotlightData {
  rotation: number;
  inset: number;
  colors: Array<{ color: string; opacity: number }>;
  pulseInset: number;
  pulseOpacity: number;
  pulseScale: number;
  ringOpacity: number;
  ringScale: number;
}
