import type { JsonObject } from "./restricted-yaml.mjs"; export const POLICY_DRAFT_MODEL_SCHEMA: "kxm.model.v2"; export const POLICY_DRAFT_ROLE_SCHEMA: "kxm.role.v2"; export const POLICY_DRAFT_PURPOSES: readonly [ "writer", "planner", "reviewer-arch", "reviewer-cli", "experiment", ]; export const POLICY_DRAFT_PERMISSIONS: readonly ["edit", "read-only"]; export const POLICY_DRAFT_STATUSES: readonly ["admitted", "candidate", "retired"]; export interface PolicyDraftIssue { phase: "parse" | "schema" | "reference" | "semantic"; code: string; file: string; message: string; } export interface PolicyDraftCeiling { readonly provider: string; readonly roles?: readonly string[]; readonly permissions: readonly string[]; readonly models?: readonly string[]; readonly efforts?: readonly string[]; } export interface PolicyDraftOptions { readonly ceilings: Readonly>; readonly nativePiBrakeProviders: readonly string[]; readonly piAllowedProviders: readonly string[]; readonly piNativeVendorProviders?: Readonly>; readonly vendorAliases?: Readonly>; } export type PolicyDraftDocument = JsonObject | string | Uint8Array; export interface PolicyDraftInput { readonly models?: Readonly> | readonly PolicyDraftDocument[]; readonly roles?: Readonly> | readonly PolicyDraftDocument[]; readonly evidence?: Readonly>; } export interface PolicyDraftData { readonly models: Readonly>; readonly roles: Readonly>; } export type PolicyDraftResult = | { readonly ok: true; readonly data: PolicyDraftData } | { readonly ok: false; readonly issues: readonly PolicyDraftIssue[] }; /** Pure draft validation. Not admission, not a trusted loader, and not file I/O. */ export function validatePolicyDraft(input: PolicyDraftInput, options: PolicyDraftOptions): PolicyDraftResult;