import type { GameEngineHost } from './game-logic'; export declare const CEL_DUR: readonly [0, 2.6, 3.8, 4, 5.2]; export declare const CEL_MAX_PARTICLES = 900; export declare const CEL_LIFT_AT = 0.5; export declare const CEL_LIFT_DUR = 1.2; export declare const CEL_PAL: readonly ["rgb(255,60,60)", "rgb(255,180,40)", "rgb(60,220,80)", "rgb(60,200,220)", "rgb(80,100,255)", "rgb(180,80,220)", "rgb(255,100,180)"]; /** Sentinel value for celDotEffect — means "use caught-green palette". */ export declare const CEL_CAUGHT_COL: "__caught__"; export interface CelParticle { x: number; y: number; vx: number; vy: number; age: number; life: number; half: number; color: string; conf: boolean; drag: number; gravity: number; } export interface CelRocket { t0: number; sx: number; sy: number; tx: number; ty: number; dur: number; burst: boolean; } export interface CelPulse { t0: number; x: number; y: number; dur: number; } export interface CelState { t0: number; tier: number; score: number; settled: boolean; particles: CelParticle[]; rockets: CelRocket[]; pulses: CelPulse[]; headline: string; subline: string; scoreCells: Map; scoreColCount: number; liftStarted: boolean; confettiSpawned2: number; confettiVolley1: boolean; confettiVolley2: boolean; burstSpawned: boolean; rainAccum: number; } export declare function tierForScore(score: number): number; export declare function buildScoreCells(score: number, gridCols: number, gridSp: number, w: number, h: number, exclusionBox: { width: number; height: number; } | null): { cells: Map; colCount: number; }; export declare function startCelebration(score: number, t: number, host: GameEngineHost): CelState | null; export declare function stepCelebration(cel: CelState, t: number, dt: number, host: GameEngineHost, caughtColor: string, dotColor: string): void; export declare function adjustCelebrationTimeMarkers(cel: CelState, skip: number): void; export interface CelDotParams { elapsed: number; tier: number; waveRadius: number; waveStrength: number; waveOriginX: number; waveOriginY: number; waveSigmaSq2: number; blastRadius: number; blastStrength: number; blastOriginX: number; blastOriginY: number; blastSigmaSq2: number; sweepX: number; sweepActive: boolean; rainbowQ: number; rainbowActive: boolean; t: number; cel: CelState; } export declare function computeCelFrameParams(cel: CelState, t: number, w: number, h: number): CelDotParams; /** * Per-dot celebration effect — returns boost/color modifiers or null. * Called inside the hot dot loop only when cel !== null. */ export declare function celDotEffect(dotIndex: number, dotX: number, dotY: number, p: CelDotParams, w: number, h: number): { celBoost: number; celCol: string | null; } | null; export declare function computeHeadlineY(h: number, exclusionBox: { width: number; height: number; } | null): number; export declare function headlineAlpha(cel: CelState, t: number): number; export declare function headlineRise(cel: CelState, t: number): number; export declare function cannonLiftOffset(cel: CelState, t: number, h: number): number;