/** * The pieces config validation is built from, so config-validate.ts can be the * composition rather than the whole of it. * * Targets are here because they carry the deepest nesting in the config, a * target holding routes holding states, and that one branch outweighed every * other field put together. The primitives sit beside it rather than in a file * of their own: three helpers do not earn a module, and every caller of them is * either here or one import away. */ import { type TargetDef } from "./types.js"; export declare function fail(path: string, msg: string): never; export declare function isRecord(v: unknown): v is Record; /** * An optional array drawn from a fixed vocabulary: `platforms`, `schemes`, and * anything else where the config narrows a set the code already defines. * * Undefined stays undefined, because "not said" is a different answer from "all * of them" and only the caller knows which one it falls back to. */ export declare function enumArray(value: unknown, all: readonly T[], name: string, path: string): T[] | undefined; /** The targets and their routes, held to shape. Trailing slashes normalized off. */ export declare function validateTargets(raw: Record, path: string): TargetDef[];