/** Validated integer quantity or a stable input rejection. */ export type QuantityResult = { ok: true; quantity: number; } | { ok: false; reason: "invalid-quantity"; }; /** Read an untrusted whole-item quantity without coercion, truncation, or clamping. * @capability command-quantity validate bounded whole-item counts at command boundaries */ export declare function readQuantity(value: unknown, options?: { min?: number; max?: number; }): QuantityResult; /** Narrow an untrusted value to a plain object, rejecting arrays and null. */ export declare function isInputRecord(value: unknown): value is Record; /** Read a non-empty string of at most `maxLength` characters, or `null`. */ export declare function readInputString(value: unknown, options?: { maxLength?: number; }): string | null; /** * Read a finite number inside `[min, max]`, or `null`. `NaN` and `±Infinity` are always rejected, so a * coordinate can never drive an unbounded loop; `integer` also rejects fractions instead of flooring them. * @capability command-number validate finite, bounded numbers and integers at command boundaries */ export declare function readInputNumber(value: unknown, options?: { min?: number; max?: number; integer?: boolean; }): number | null; /** Read one of a fixed set of values, or `null`. */ export declare function readInputOneOf(value: unknown, allowed: readonly T[]): T | null; /** Read an `{ x, y, z }` point whose axes are finite and within `maxAbs`, or `null`. */ export declare function readInputPoint3(value: unknown, options?: { maxAbs?: number; }): { x: number; y: number; z: number; } | null; /** Read an `{ x, z }` ground point whose axes are finite and within `maxAbs`, or `null`. */ export declare function readInputPoint2(value: unknown, options?: { maxAbs?: number; }): { x: number; z: number; } | null; /** Read an array of at most `maxItems` entries, each accepted by `readItem`; any rejected entry rejects the whole array. */ export declare function readInputArray(value: unknown, readItem: (item: unknown) => T | null, options?: { maxItems?: number; }): T[] | null;