/** * Domain models for Ember background */ import type { HeatIntensity, DensityPreset } from "../constants/ember-constants.js"; /** Glowing coal in the coal bed */ export interface Coal { x: number; y: number; size: number; glowRadius: number; pulsePhase: number; pulseSpeed: number; baseIntensity: number; currentIntensity: number; isFlaring: boolean; flareTimer: number; color: { r: number; g: number; b: number; }; } export type EmberType = "normal" | "spiral" | "micro" | "lazy"; /** Rising ember particle */ export interface Ember { x: number; y: number; size: number; vx: number; vy: number; opacity: number; glowRadius: number; flickerOffset: number; color: { r: number; g: number; b: number; }; emberType: EmberType; angularVelocity?: number; spiralRadius?: number; spiralPhase?: number; isPhoenix?: boolean; } /** Smoke particle - larger, slower, darker, with billowing behavior */ export interface SmokeParticle { x: number; y: number; size: number; baseSize: number; vx: number; vy: number; opacity: number; baseOpacity: number; color: { r: number; g: number; b: number; }; driftOffset: number; driftFrequency: number; spawnY: number; } /** Trail point for spark trails */ export interface SparkTrailPoint { x: number; y: number; opacity: number; } /** Spark particle - small, fast, bright, short-lived */ export interface SparkParticle { x: number; y: number; size: number; vx: number; vy: number; opacity: number; lifetime: number; maxLifetime: number; color: { r: number; g: number; b: number; }; trail: SparkTrailPoint[]; } /** Layer visibility toggles */ export interface EmberLayers { gradient: boolean; coalBed: boolean; smoke: boolean; embers: boolean; sparks: boolean; vignette: boolean; bottomGlow: boolean; sparkTrails: boolean; breathing: boolean; } /** Stats for lab display */ export interface EmberStats { embers: number; smoke: number; sparks: number; coals: number; heatIntensity: HeatIntensity; densityPreset: DensityPreset; } //# sourceMappingURL=ember-models.d.ts.map