export type ValidationResult = { ok: true; value: T; } | { ok: false; errors: string[]; }; export type SpecStatusV1 = "draft" | "approved" | "frozen"; export type ExecutionProfileV1 = "restricted" | "normal-project" | "custom"; export type ScenarioActionV1 = "detect-report" | "propose" | "implement-verify" | "plan-only"; export type ArmKindV1 = "baseline" | "skill" | "prompt"; export interface SkillBenchArmV1 { id: string; kind: ArmKindV1; skillId?: string; } export interface SkillBenchScenarioV1 { id: string; name: string; action: ScenarioActionV1; tags: string[]; weight: number; threshold: { min: number; max: number; pass: number; }; } export interface SkillBenchSpecV1 { schemaVersion: 1; id: string; name: string; status: SpecStatusV1; executionProfile: ExecutionProfileV1; budgets: Record; candidateModelIds: string[]; judgeModelIds: string[]; arms: SkillBenchArmV1[]; scenarios: SkillBenchScenarioV1[]; } export interface ApprovalBindingV1 { schemaVersion: 1; specHash: string; } export declare function validateSkillBenchSpecV1(input: unknown): ValidationResult; export declare function validateRunV1(input: unknown): ValidationResult>; export declare function validateEvidenceV1(input: unknown): ValidationResult>; export declare function validateSummaryV1(input: unknown): ValidationResult>; export declare function validateRecommendationV1(input: unknown): ValidationResult>; export declare function canonicalJson(value: unknown): string; export declare function stableHash(value: unknown): string; export declare function specContentHash(spec: unknown): string; export declare function bindApprovalHash(spec: unknown): ApprovalBindingV1; export declare function isApprovalBoundToSpec(binding: { specHash?: string; }, spec: unknown): boolean; export declare function isFreezeInvalidated(freeze: { specHash?: string; frozenPairIds?: string[]; }, spec: unknown, pairIds?: string[]): boolean;