export declare const CAMERA_ZOOM_MIN = 8; export declare const CAMERA_ZOOM_MAX = 19; /** * A phone held upright sees a narrow slice of the world: at the same distance its view is under a third as wide as * a desktop window's. Phones stopped at 17, short of the desktop's 19 (James, 2026-10-01: "need to be able to zoom * out a bit more on mobile"); they now go further than a desktop does. Saved zooms are clamped to the larger of * the two, and each device's camera to its own. */ export declare const CAMERA_ZOOM_MAX_PHONE = 24; /** * Slightly elevated 3/4 view: character and ground ahead, not RTS top-down * (old default 14) and not cramped over-the-shoulder. */ export declare const CAMERA_ZOOM_DEFAULT = 11; /** * Radians from the horizon. ~0.92 is a 3/4 look-down; 1.42 was nearly * straight top-down. */ export declare const CAMERA_PITCH_DEFAULT = 0.92; export declare const CAMERA_PITCH_MIN = 0.35; export declare const CAMERA_PITCH_MAX = 1.48; /** * Bump when the default view changes so old saved bird's-eye zooms migrate. * Saved configs with a lower revision get the new pitch/zoom pair. */ export declare const CAMERA_VIEW_REVISION = 5; export declare const CHAT_WIDTH_MIN = 200; export declare const CHAT_WIDTH_MAX = 640; export declare const CHAT_WIDTH_DEFAULT = 340; export declare const CHAT_HEIGHT_MIN = 64; export declare const CHAT_HEIGHT_MAX = 420; export declare const CHAT_HEIGHT_DEFAULT = 112; /** Compact / phone chat has no resize grip; keep the log short by default. */ export declare const CHAT_HEIGHT_COMPACT_DEFAULT = 72; /** Match MeshHud compact chat and the HUD CSS breakpoint. */ export declare const CHAT_COMPACT_MAX_WIDTH = 720; export declare const CHAT_FONT_SIZE_MIN = 9; export declare const CHAT_FONT_SIZE_MAX = 18; export declare const CHAT_FONT_SIZE_DEFAULT = 12; export declare const HUD_BAR_SIZE_MIN = 32; export declare const HUD_BAR_SIZE_MAX = 64; export declare const HUD_BAR_SIZE_DEFAULT = 38; export declare const QUEST_LOG_POS_UNSET = -1; export declare const PANEL_POS_UNSET = -1; /** 5th panel swatch (see THEME_PANEL_SWATCHES in the client's ui/colors.ts). */ export declare const THEME_PANEL_DEFAULT = "#1f1a17"; export declare const THEME_INK_DEFAULT = "#f4e7c4"; export type ClientConfig = { showNames: boolean; showHealth: boolean; hideRoofs: boolean; hideAvatar: boolean; soundEnabled: boolean; musicEnabled: boolean; minimapZoom: number; cameraZoom: number; cameraViewRevision: number; /** Set once a player has used the compact landscape HUD on this character. */ landscapeLayout: boolean; chat: { width: number; height: number; fontSize: number; }; questLog: { x: number; y: number; }; playerCard: { x: number; y: number; }; theme: { panel: string; ink: string; /** Buttons, highlights, the active tab. */ accent: string; /** Panel edges. */ border: string; /** The page behind the panels (the login and menus; the world covers it in play). */ background: string; /** Which named scheme the colours came from, or 'custom' once a swatch is picked. */ preset: string; }; hudBarSize: number; /** The quest helper (questGuide.ts): the arrow and hints, and which quest it follows (null: the nearest). */ questHelper: boolean; questFocus: string | null; /** Members only: show this character's name in gold to everyone. Off hides the gold, not the membership. */ goldName: boolean; }; export type PartialClientConfig = { showNames?: boolean; showHealth?: boolean; hideRoofs?: boolean; hideAvatar?: boolean; soundEnabled?: boolean; musicEnabled?: boolean; minimapZoom?: number; cameraZoom?: number; cameraViewRevision?: number; landscapeLayout?: boolean; chat?: { width?: number; height?: number; fontSize?: number; }; questLog?: { x?: number; y?: number; }; playerCard?: { x?: number; y?: number; }; theme?: { panel?: string; ink?: string; accent?: string; border?: string; background?: string; preset?: string; }; hudBarSize?: number; questHelper?: boolean; questFocus?: string | null; goldName?: boolean; }; /** * The named colour schemes from the UI style guide (2026-09-19). A is the * default; each gives the whole set so a preset never leaves a stale colour * behind from the one before. */ export type ThemePreset = { id: string; name: string; tagline: string; background: string; panel: string; panel2: string; border: string; ink: string; muted: string; accent: string; }; export declare const THEME_PRESETS: readonly ThemePreset[]; export declare const THEME_PRESET_DEFAULT: ThemePreset; export declare function themePresetById(id: string | null | undefined): ThemePreset | null; export declare function clampHudBarSize(size: number): number; export declare function defaultClientConfig(): ClientConfig; export declare function normalizeClientConfig(raw: unknown): ClientConfig; export declare function mergeClientConfig(current: ClientConfig, patch: PartialClientConfig | null | undefined): ClientConfig; //# sourceMappingURL=clientConfig.d.ts.map