import type { RuleSetExport } from '../format/types.js'; export interface BuildResult { export: RuleSetExport; warnings: string[]; secrets: string[]; skillRefs: string[]; } /** RFC-4122 namespace UUID for schema-id derivation. (Plan text carried a non-hex string * `…-bffle55c0de0`; `l` is not a hex digit, so it can't be parsed as a UUID. Corrected to * the valid `…-bff1e55c0de0` — see task-6 report.) */ export declare const SCHEMA_NAMESPACE = "6e1a24d0-0000-4000-8000-bff1e55c0de0"; /** RFC-4122 v5 (SHA-1). ~15 lines, no dependency. */ export declare function uuidv5(name: string, namespace: string): string; /** Resolve `ref` relative to `manifestDir`, rejecting absolute refs and any resolution that * escapes `setDir` (path traversal guard for `$file:`/`code:` refs). This is a lexical check * only — it does not follow symlinks. Callers MUST also call `assertRealpathConfined` once * the target's existence has been confirmed, to catch a symlink inside the rule set dir that * points outside it. */ export declare function resolveConfinedPath(setDir: string, manifestDir: string, manifestPath: string, ref: string): string; /** After confirming `resolved` exists, verify its *realpath* (i.e. with symlinks followed) is * still confined to `setDir`'s realpath. `resolveConfinedPath`'s check is purely lexical, so a * symlink placed inside the rule set dir but pointing outside it would otherwise let `$file:`/ * `code:` refs inline arbitrary host files into compiled output. */ export declare function assertRealpathConfined(setDir: string, manifestPath: string, resolved: string, ref: string): void; export declare function buildRuleSet(setDir: string, opts?: { exportedAt?: string; pathPrefix?: string; }): Promise;