/**
 * The only shape a version string may take before it reaches an exec/shim/path
 * boundary. Accepts the literal `latest` or a 1–64 char run of `[A-Za-z0-9._+-]`
 * with no `..` traversal. This is THE validation gate — every resolver funnels
 * exact-version tokens through it.
 */
export declare const VERSION_RE: RegExp;
/** Canonical qualifier set, in help/display order. `pinned` ≡ `default`. */
export declare const AGENT_QUALIFIERS: readonly ["latest", "oldest", "pinned", "default", "all"];
export type AgentQualifier = (typeof AGENT_QUALIFIERS)[number];
/**
 * Record-filter-only qualifiers. `any` means "no version constraint" for
 * historical-record queries (sessions/teams resume) — accepted by the filter
 * path but intentionally kept out of the display vocabulary.
 */
export declare const RECORD_ONLY_QUALIFIERS: readonly ["any"];
/**
 * Ordering for version strings (ascending).
 *   1. numeric segment comparison (semver-ish: `2.1.187` > `2.1.143`)
 *   2. tie → trailing `-N` build suffix, numerically (`2026.2.19-2` > `2026.2.19`)
 *   3. still tied → 0 (legacy behavior: `1.0` == `1.0.0`, non-numeric tails == 0)
 *
 * Deliberately NOT a full semver comparator: OpenClaw's `-N` is a rebuild marker
 * (higher = newer); a semver comparator would invert it. The `-N` tiebreak is the
 * only addition over the historical numeric-only compare, so suffix-free versions
 * (claude/codex semver) are unaffected.
 */
export declare function compareVersions(a: string, b: string): number;
