import { z } from 'zod'; import type { FactoryRuleContextBase, FactoryRuleItemContext, FactoryRuleRejectionCode, FactoryRuleSource, FactoryTriageType } from '../rules/types.js'; type Immutable = T extends string | number | boolean | bigint | null | undefined ? T : T extends Date ? string : T extends object ? { readonly [K in keyof T]: Immutable; } : T; export type BoardTransitionPolicyContext = Immutable; export type BoardTransitionPolicyResult = undefined | { type: 'allow'; triageType?: FactoryTriageType; accept?: true; } | { type: 'reject'; code: FactoryRuleRejectionCode; reason: string; }; export type BoardTransitionPolicy = (context: BoardTransitionPolicyContext) => BoardTransitionPolicyResult | Promise; export declare function immutablePolicySnapshot(value: T): Immutable; export declare const boardTransitionPolicyResultSchema: z.ZodUnion; triageType: z.ZodOptional>; accept: z.ZodOptional>; }, z.core.$strict>, z.ZodObject<{ type: z.ZodLiteral<"reject">; code: z.ZodEnum<{ forbidden: "forbidden"; invalid_transition: "invalid_transition"; missing_binding: "missing_binding"; stale: "stale"; timeout: "timeout"; rule_error: "rule_error"; causal_depth_exceeded: "causal_depth_exceeded"; repeated_transition: "repeated_transition"; approval_required: "approval_required"; }>; reason: z.ZodString; }, z.core.$strict>], "type">]>; export {}; //# sourceMappingURL=transition-policy.d.ts.map