/**
 * Defines the types of particles available in the system
 */
export enum Particle {
  DUST = 'DUST',
  DUST_COLOR_TRANSITION = 'DUST_COLOR_TRANSITION',
  TINTED_LEAVES = 'TINTED_LEAVES'
  // Other particle types can be added later
}

export enum ParticleType {
  HEAD = 'HEAD',
  TRAIL = 'TRAIL',
  BREAK_PLACE_BLOCK = 'BREAK_PLACE_BLOCK',
  DEATH = 'DEATH',
  KILL = 'KILL',
  CLICK_BLOCK = 'CLICK_BLOCK',
  TELEPORT_ARRIVE = 'TELEPORT',
}

/**
 * Represents a single particle's information
 */
export interface ParticleInfo {
  particle_type: Particle;
  x: number;
  y: number;
  z: number;
  extra?: number;
  color?: string;
  color_gradient_end?: string;
  size?: number;
}

/**
 * Represents the complete particle data structure
 */
export interface ParticleData {
  particle_name: string;
  display_name: string;
  particle_type: string;
  lore: string;
  display_item: string;
  permission: string;
  package_permission: string;
  frame_delay: number;
  repeat: number;
  repeat_delay: number;
  random_offset: number;
  stationary: boolean;
  frames: {
    [frameId: string]: ParticleInfo[];
  };
}
