import type { CelDotParams, CelState } from './celebration'; import type { RGB } from './engine-colors'; import type { GameEngineHost, GameLogic } from './game-logic'; export interface GameRenderCtx { ctx: CanvasRenderingContext2D; dotPalette: string[]; accentPalette: string[]; caughtPalette: string[]; caughtRgb: RGB; shadowPalette: string[]; } /** Plugin interface for lazily-loaded celebration rendering modules. */ export interface RenderPlugins { CEL_CAUGHT_COL?: string; celDotEffect?(di: number, x: number, y: number, params: CelDotParams, w: number, h: number): { celBoost: number; celCol: string | null; } | null; computeCelFrameParams?(cel: CelState, t: number, w: number, h: number): CelDotParams | null; drawCelebrationOverlay?(rc: GameRenderCtx, cel: CelState, t: number, host: GameEngineHost, fontLoaded: boolean): void; getCelCannonOffset?(cel: CelState | null, cannonAway: boolean, t: number, h: number): number; } export declare function createGameRenderer(rc: GameRenderCtx, game: GameLogic, host: GameEngineHost): { drawGameDots: (t: number) => void; drawCaughtEffects: (t: number) => void; drawCannon: (t: number) => void; drawBullets: () => void; drawCelOverlay: (t: number) => void; setRenderPlugins: (p: RenderPlugins) => void; };