import { PainterModule } from "../../../common/painter/painter"; import { type Theme } from "../../../common/painter/theme"; import type { CanvasRenderingContext2D } from "canvas"; import { type Database, Difficulty } from "gcm-database/ongeki"; import type { Chart, Regions } from "gcm-database-local/ongeki"; import z from "zod/v4"; import { type Score } from "../../lib/types"; export interface ChartGridModulePainterContext { chartIdentifier: string; scores: Record; region?: Regions; type: "refresh" | "classic"; } export declare class ChartGridModule 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<"chart-grid">; width: z.ZodNumber; height: z.ZodNumber; margin: z.ZodNumber; gap: z.ZodNumber; bubble: z.ZodObject<{ margin: z.ZodNumber; color: z.ZodObject<{ basic: z.ZodString; advanced: z.ZodString; expert: z.ZodString; master: z.ZodString; lunatic: z.ZodString; }, z.core.$strip>; }, z.core.$strip>; color: z.ZodObject<{ card: z.ZodString; }, 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; ss: z.ZodString; sss: z.ZodString; sssp: z.ZodString; }, z.core.$strip>; milestone: z.ZodObject<{ ab: z.ZodString; abp: z.ZodString; fc: z.ZodString; fb: z.ZodString; none: z.ZodString; }, z.core.$strip>; versions: z.ZodObject<{ JPN: z.ZodRecord; }, z.core.$strip>; }, z.core.$strip>; }, z.core.$strip>; constructor(database: Database); private getBubbleColorByDifficulty; private getDifficultyReadableName; private getAchievementRankImagePath; private getComboImagePath; private getBellImagePath; private getTitleSize; private drawDifficultyName; private drawScore; private drawLamp; private drawNoteCount; private drawVersion; private drawInternalLevelTrend; private drawFooter; private drawChartGridCard; draw(ctx: CanvasRenderingContext2D, theme: Theme<{ width: number; height: number; }>, element: z.infer, painterCtx: ChartGridModulePainterContext): Promise; }