import { type Score } from "../../lib/types"; import { type Bounds, PainterModule } from "../../../common/painter/painter"; import { type Theme } from "../../../common/painter/theme"; import type { CanvasRenderingContext2D } from "canvas"; import { type Chart, type Database } from "gcm-database/chunithm"; import z from "zod/v4"; export interface ImageModulePainterContext { scores: Record, Score[]>; } export declare class ScoreGridModule extends PainterModule { private database; static readonly SCHEMA: z.ZodObject<{ x: z.ZodNumber; y: z.ZodNumber; id: z.ZodOptional; anchor: z.ZodOptional; location: z.ZodDefault>; }, z.core.$strip>>; type: z.ZodLiteral<"score-grid">; horizontalSize: z.ZodNumber; verticalSize: z.ZodNumber; region: z.ZodEnum<{ new: "new"; old: "old"; }>; index: z.ZodNumber; scoreBubble: z.ZodObject<{ width: z.ZodNumber; height: z.ZodNumber; margin: z.ZodNumber; gap: z.ZodNumber; color: z.ZodObject<{ basic: z.ZodString; advanced: z.ZodString; expert: z.ZodString; master: z.ZodString; ultima: z.ZodString; worldsEnd: z.ZodString; }, z.core.$strip>; strictScoreCount: z.ZodDefault; }, z.core.$strip>; sprites: z.ZodObject<{ achievement: z.ZodObject<{ d: z.ZodString; c: z.ZodString; b: z.ZodString; bb: z.ZodString; bbb: z.ZodString; a: z.ZodString; aa: z.ZodString; aaa: z.ZodString; s: z.ZodString; sp: z.ZodString; ss: z.ZodString; ssp: z.ZodString; sss: z.ZodString; sssp: z.ZodString; }, z.core.$strip>; milestone: z.ZodObject<{ aj: z.ZodString; ajc: z.ZodString; fc: z.ZodString; none: z.ZodString; }, z.core.$strip>; }, z.core.$strip>; }, z.core.$strip>; constructor(database: Database); private getBubbleColorByDifficulty; private getAchievementRankImagePath; private getComboLampImagePath; private getJacketSize; /** * Get a color representing freshness. * * @param status From 0 to 1, 0 means most fresh, 1 means most dead. * @returns */ private getStatusColor; private drawScaleIndicator; private drawJacketAndTitle; private drawScore; private drawRank; private drawLamp; private drawChartIndex; private drawLevel; private drawRating; private drawOutline; private wrapCard; getBounds(_ctx: CanvasRenderingContext2D, _theme: Theme, element: z.infer): Promise; getMinimumBounds(ctx: CanvasRenderingContext2D, theme: Theme, element: z.infer): Promise; draw(ctx: CanvasRenderingContext2D, theme: Theme, element: z.infer, painterCtx: ImageModulePainterContext): Promise; }