export declare const HUD_PRESETS: readonly ["rift-raider", "village-keep", "nexus", "simulator", "racing"]; export type HudPresetName = (typeof HUD_PRESETS)[number]; /** * The five presets' ACTUAL token values, mirrored from `game/src/engine/hud/themes/*.ts`. * * This exists because the promoted customization flow — "preset X but with * orange accents" — was unimplementable without it. `read-hud-theme` returns a * preset's NAME, `write-hud-theme` does a full replace rather than a merge, and * the engine source that holds the values is not readable from the hosted agent. * So an agent asked to tweak an active preset had nothing to patch and had to * invent a whole theme "in that preset's spirit", which is how a tweak request * silently became a redesign. * * Each entry is the RAW preset data, which is the same shape as an inline theme * — so it can be spread, edited and written straight back through * `write-hud-theme`. Use `presetTheme(name)` rather than reading this directly: * it strips `evokes`, which is authoring metadata and not a theme token. * * Hand-mirrored and drift-checked by `scripts/check-hud-catalog.ts`, which deep * compares every value against the engine modules. */ export declare const HUD_PRESET_THEMES: Readonly>>>; /** * A preset's tokens as a writable inline theme — the mirror entry minus the * `evokes` label, which describes the style rather than rendering it. * * The intended patch flow: `const base = presetTheme('nexus')`, apply the user's * change, then `write-hud-theme` the result. */ export declare function presetTheme(name: HudPresetName): Record; /** * The one-line mood label per preset, DERIVED from the mirrored preset data * above rather than kept as a second hand-written list. * * It used to be an independent map explicitly excluded from the drift gate, on * the grounds that the engine had no counterpart. It then rotted: three of five * labels described styles that had since been retuned, and this is the field an * agent picks a preset BY. The engine presets carry `evokes` beside their tokens * now, so the description and the style are one edit and one check. */ export declare const HUD_PRESET_INFO: Readonly>; export declare const HUD_FONTS: { readonly 'red-hat-display': { readonly family: "Red Hat Display"; readonly weights: readonly [300, 400, 500, 700]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Default Bitmagic — warm, technical, modern sans"; }; readonly 'chakra-petch': { readonly family: "Chakra Petch"; readonly weights: readonly [300, 400, 500, 600, 700]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Chamfered techno sans — holographic HUD, sci-fi console, cut corners"; }; readonly 'ibm-plex-sans': { readonly family: "IBM Plex Sans"; readonly weights: readonly [300, 400, 500, 600, 700]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Engineered humanist sans — instrument panel, operator console, tabular data"; }; readonly 'archivo-narrow': { readonly family: "Archivo Narrow"; readonly weights: readonly [400, 500, 600, 700]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Narrow gothic that keeps its ink — motorsport telemetry, broadcast overlay"; }; readonly 'bebas-neue': { readonly family: "Bebas Neue"; readonly weights: readonly [400]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Tall, bold display — sports, action, news ticker"; }; readonly 'press-start-2p': { readonly family: "Press Start 2P"; readonly weights: readonly [400]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Retro arcade pixel — 8-bit, NES, chiptune"; }; readonly creepster: { readonly family: "Creepster"; readonly weights: readonly [400]; readonly suitsCase: readonly ["normal"]; readonly evokes: "Horror, halloween, dripping — already display-styled"; }; readonly pacifico: { readonly family: "Pacifico"; readonly weights: readonly [400]; readonly suitsCase: readonly ["normal"]; readonly evokes: "Handwritten cursive — tropical, beachy, casual"; }; readonly 'space-grotesk': { readonly family: "Space Grotesk"; readonly weights: readonly [400, 500, 700]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Geometric sans — sci-fi, technical, modern"; }; readonly 'rubik-mono-one': { readonly family: "Rubik Mono One"; readonly weights: readonly [400]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Heavy, slabby display — bold, blocky, attention-grabbing"; }; readonly vt323: { readonly family: "VT323"; readonly weights: readonly [400]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "CRT terminal monospace — retro computer, hacker, glitch"; }; readonly orbitron: { readonly family: "Orbitron"; readonly weights: readonly [400, 500, 700, 900]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Futuristic geometric — sci-fi, cyber, racing HUD"; }; readonly shrikhand: { readonly family: "Shrikhand"; readonly weights: readonly [400]; readonly suitsCase: readonly ["normal"]; readonly evokes: "Italic display — celebratory, party, energetic"; }; readonly 'baloo-2': { readonly family: "Baloo 2"; readonly weights: readonly [400, 500, 600, 700, 800]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Rounded chunky sans with a real weight range — mobile action-RPG chrome"; }; readonly 'lilita-one': { readonly family: "Lilita One"; readonly weights: readonly [400]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Chunky rounded comic display — cartoon battler, toon town"; }; readonly fredoka: { readonly family: "Fredoka"; readonly weights: readonly [300, 400, 500, 700]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Soft rounded bubble sans — candy, casual mobile, sweet"; }; readonly 'grenze-gotisch': { readonly family: "Grenze Gotisch"; readonly weights: readonly [400, 500, 700, 900]; readonly suitsCase: readonly ["normal"]; readonly evokes: "Readable blackletter — dark fantasy, gothic dungeon"; }; readonly cinzel: { readonly family: "Cinzel"; readonly weights: readonly [400, 500, 700, 900]; readonly suitsCase: readonly ["upper", "normal"]; readonly evokes: "Carved Roman caps — epic fantasy, ancient temple"; }; }; export declare const HUD_DECORATIONS: { readonly 'drip-border': { readonly suitsSlots: readonly ["borderImage", "decorationAfter"]; readonly evokes: "Horror drips on edges"; }; readonly 'pixel-corners': { readonly suitsSlots: readonly ["borderImage"]; readonly evokes: "8-bit pixel corner brackets"; }; readonly scanline: { readonly suitsSlots: readonly ["backdrop"]; readonly evokes: "CRT scanlines tiled across the surface"; }; readonly 'vine-corner': { readonly suitsSlots: readonly ["borderImage", "decorationBefore"]; readonly evokes: "Tropical vines / leaves in corners"; }; readonly 'glow-aura': { readonly suitsSlots: readonly ["backdrop", "decorationBefore", "decorationAfter"]; readonly evokes: "Soft radial glow halo behind the element"; }; readonly 'bracket-frame': { readonly suitsSlots: readonly ["borderImage"]; readonly evokes: "Sci-fi targeting brackets on each corner"; }; readonly 'ribbon-edge': { readonly suitsSlots: readonly ["decorationAfter", "decorationBefore"]; readonly evokes: "Bunting / banner saw-tooth edge"; }; readonly 'circuit-trace': { readonly suitsSlots: readonly ["backdrop"]; readonly evokes: "PCB / circuit board trace pattern"; }; readonly 'candy-gloss': { readonly suitsSlots: readonly ["backdrop", "decorationBefore"]; readonly evokes: "Glossy sugar highlight across the top — candy button shine"; }; readonly 'ornate-corner': { readonly suitsSlots: readonly ["borderImage"]; readonly evokes: "Gothic filigree corner frame — dark fantasy, dungeon"; }; readonly 'royal-frame': { readonly suitsSlots: readonly ["borderImage"]; readonly evokes: "Double gold-trim picture frame with corner studs — epic fantasy"; }; readonly 'hazard-stripes': { readonly suitsSlots: readonly ["backdrop"]; readonly evokes: "Faint diagonal caution stripes — military / sci-fi warning panel"; }; readonly 'pixel-frame': { readonly suitsSlots: readonly ["borderImage"]; readonly evokes: "NES dialog double-ring pixel border"; }; readonly 'grain-texture': { readonly suitsSlots: readonly ["backdrop"]; readonly evokes: "Subtle parchment / leather grain tooth"; }; }; export declare const DEFAULT_THEME_TOKENS: Readonly>; export declare const HUD_DECORATION_SVGS: Readonly>; export declare const HUD_GLOW_KEYS: readonly ["aqua", "pink", "warm", "horror-red", "gold", "cyan", "none"]; export declare const HUD_ELEMENT_CLASSES: readonly ["progressBar", "healthBar", "counter", "iconText", "timer", "toast", "controls", "reticle", "mobileControls"]; export declare const HUD_SHAPE_TOKENS: readonly ["radiusPill", "radiusCard", "glow", "imageRendering", "borderWidth", "bevel", "gloss", "glowColor"]; export declare const HUD_COLOR_TOKENS: readonly ["primary", "danger", "warning", "success", "background", "surface", "text", "textMuted", "outline"]; export declare const HUD_REQUIRED_COLORS: readonly ["primary", "danger", "background", "surface", "text"]; export declare const HUD_DECORATION_SLOTS: readonly ["borderImage", "backdrop", "decorationBefore", "decorationAfter"]; export declare const HUD_ICON_SLOTS: readonly [{ readonly key: "heart"; readonly description: "Health label icon (shown next to \"HP\" on the player health bar). Default: filled heart."; }, { readonly key: "mouse"; readonly description: "Pointer-lock overlay icon (\"Click to play\" screen). Default: outlined mouse."; }, { readonly key: "arrow"; readonly description: "Movement-key arrow used in the controls overlay. ONE SVG — CSS rotates it for down/left/right. Default: thin chevron pointing up."; }]; export declare const HUD_ICON_KEYS: ReadonlyArray<(typeof HUD_ICON_SLOTS)[number]["key"]>; export interface CatalogValidationIssue { path: string; message: string; suggestion?: string; }