export declare const WORKFLOW_HANDOFF_SCHEMA_VERSION: "1";
export interface PatchScopeLimits {
    readonly maxFileCount: number;
    readonly maxPatchBytes: number;
    readonly maxNewFiles: number;
    readonly elapsedMsMax: number;
}
export declare const DEFAULT_PATCH_SCOPE_LIMITS: PatchScopeLimits;
export type ExpectedCheck = "verify" | "lint" | "typecheck" | "tests" | "manual";
export declare const EXPECTED_CHECKS: readonly ExpectedCheck[];
export interface PatchScope {
    readonly schemaVersion: typeof WORKFLOW_HANDOFF_SCHEMA_VERSION;
    readonly editablePaths: readonly string[];
    readonly readOnlyPaths: readonly string[];
    readonly evidenceAtomIds: readonly string[];
    readonly limits: PatchScopeLimits;
    readonly expectedChecks: readonly ExpectedCheck[];
    readonly unknowns: readonly string[];
}
export type WorkflowKind = "unit-test-generation" | "bug-investigation" | "verification";
export declare const WORKFLOW_KINDS: readonly WorkflowKind[];
export interface WorkflowHandoffRequest {
    readonly schemaVersion: typeof WORKFLOW_HANDOFF_SCHEMA_VERSION;
    readonly contextPackStableId: string;
    readonly workflowKind: WorkflowKind;
    readonly patchScope: PatchScope;
    readonly requestedAtMs: number;
    readonly userApprovalToken: string;
}
export interface UserApprovalTokenInput {
    readonly contextPackStableId: string;
    readonly workflowKind: WorkflowKind;
    readonly editablePaths: readonly string[];
    readonly readOnlyPaths: readonly string[];
    readonly evidenceAtomIds: readonly string[];
    readonly limits: PatchScopeLimits;
    readonly expectedChecks: readonly ExpectedCheck[];
    readonly unknowns: readonly string[];
}
export type PatchScopeViolationKind = "outside-editable-set" | "exceeds-max-file-count" | "exceeds-max-patch-bytes" | "exceeds-max-new-files" | "no-expected-checks" | "invalid-patch-scope" | "invalid-patch-entry";
export interface PatchScopeViolation {
    readonly kind: PatchScopeViolationKind;
    readonly path: string | undefined;
    readonly observed: number | undefined;
    readonly limit: number | undefined;
    readonly message: string;
}
export type PatchScopeCheck = {
    readonly ok: true;
} | {
    readonly ok: false;
    readonly violations: readonly PatchScopeViolation[];
};
export interface ProposedPatchEntry {
    readonly path: string;
    readonly newFile: boolean;
    readonly patchBytes: number;
}
export type ValidationResult = {
    readonly ok: true;
} | {
    readonly ok: false;
    readonly reasons: readonly string[];
};
export declare function isApprovalTokenShape(token: string): boolean;
export declare function validatePatchScope(scope: unknown): ValidationResult;
export declare function validateWorkflowHandoffRequest(request: unknown): ValidationResult;
export declare function checkPatchAgainstScope(scope: PatchScope, proposed: readonly ProposedPatchEntry[]): PatchScopeCheck;
//# sourceMappingURL=workflow-handoff.d.ts.map