import { type AutonomyEnvelope } from './autonomy-envelope.js'; export declare const TASK_CONTRACT_SCHEMA_VERSION: 1; export declare const CONTRACT_SOURCES: readonly ['explicit_user', 'project_policy', 'deterministic_inference', 'model_proposal']; type ContractSource = (typeof CONTRACT_SOURCES)[number]; export declare const EVIDENCE_KINDS: readonly ['test', 'typecheck', 'lint', 'build', 'static_analysis', 'security', 'api_compatibility', 'schema', 'performance', 'review']; export type EvidenceKind = (typeof EVIDENCE_KINDS)[number]; export declare const REVIEW_DIMENSIONS: readonly ['correctness', 'requirements_traceability', 'security_permissions', 'api_schema_compatibility', 'testing_evidence', 'performance_resources', 'concurrency_recovery', 'maintainability_architecture']; type ReviewDimension = (typeof REVIEW_DIMENSIONS)[number]; export declare const ROLLBACK_CLASSES: readonly ['isolated_discard', 'git_revert', 'verified_compensation', 'manual_only', 'irreversible']; type RollbackClass = (typeof ROLLBACK_CLASSES)[number]; export declare const CONTRACT_ASSUMPTION_STATUSES: readonly ['unverified', 'verified', 'rejected', 'expired']; export declare const BASELINE_POLICIES: readonly ['required', 'optional', 'read_only']; interface TaskRequirement { readonly id: string; readonly text: string; readonly acceptanceCriteriaIds: readonly string[]; } interface AcceptanceCriterion { readonly id: string; readonly statement: string; readonly evidenceKinds: readonly EvidenceKind[]; } interface RequiredCheck { readonly id: string; readonly kind: EvidenceKind; readonly required: boolean; readonly requirementIds: readonly string[]; } interface ContractAssumption { readonly id: string; readonly statement: string; readonly source: ContractSource; readonly status: (typeof CONTRACT_ASSUMPTION_STATUSES)[number]; } export interface TaskContractV1 { readonly schemaVersion: typeof TASK_CONTRACT_SCHEMA_VERSION; readonly taskId: string; readonly contractVersion: number; readonly projectId: string; readonly sourceRequest: string; readonly policyVersion: string; readonly repository: { readonly rootIdentity: string; readonly baselinePolicy: (typeof BASELINE_POLICIES)[number]; }; readonly requirements: readonly TaskRequirement[]; readonly acceptanceCriteria: readonly AcceptanceCriterion[]; readonly autonomy: AutonomyEnvelope; readonly requiredChecks: readonly RequiredCheck[]; readonly requiredReviewDimensions: readonly ReviewDimension[]; readonly rollbackClass: RollbackClass; readonly assumptions: readonly ContractAssumption[]; readonly sources: { readonly requirements: ContractSource; readonly scope: ContractSource; readonly checks: ContractSource; readonly autonomy: ContractSource; }; } type ContractValidationIssueCode = 'invalid_schema_version' | 'invalid_contract_version' | 'required_value_missing' | 'duplicate_id' | 'unknown_acceptance_criterion' | 'unknown_requirement' | 'path_scope_missing' | 'path_scope_conflict' | 'invalid_budget' | 'auto_replan_exceeds_budget' | 'approval_operation_not_allowed' | 'operation_exceeds_tier'; interface ContractValidationIssue { readonly code: ContractValidationIssueCode; readonly path: string; readonly message: string; } type ContractValidationResult = { readonly valid: true; } | { readonly valid: false; readonly issues: readonly ContractValidationIssue[]; }; export declare function validateTaskContractV1(contract: TaskContractV1): ContractValidationResult; export declare function freezeTaskContractV1(contract: TaskContractV1): TaskContractV1; export {}; //# sourceMappingURL=task-contract.d.ts.map