import { z } from "zod"; export declare const PolicyRuleSchema: z.ZodObject<{ match: z.ZodOptional>; action: z.ZodEnum<{ approve: "approve"; reject: "reject"; propagate: "propagate"; }>; }, z.core.$strip>; export type PolicyRule = z.infer; export declare const PolicySchema: z.ZodRecord>; action: z.ZodEnum<{ approve: "approve"; reject: "reject"; propagate: "propagate"; }>; }, z.core.$strip>>>; export type Policy = z.infer; type PolicyResult = { type: "approve"; } | { type: "reject"; } | { type: "propagate"; }; export declare function checkPolicy(policy: Policy, interrupt: { effect: string; message: string; data: any; origin: string; }): PolicyResult; /** Like `checkPolicy`, but returns null when NO rule matched — callers that * need to distinguish an explicit `propagate` rule from plain fall-through * (e.g. the run-policy chain handler, which must stay silent on effects the * policy never mentions) use this; everyone else keeps `checkPolicy`'s * fall-through-is-propagate contract. */ export declare function checkPolicyExplicit(policy: Policy, interrupt: { effect: string; message: string; data: any; origin: string; }): PolicyResult | null; export declare function validatePolicy(policy: any): { success: boolean; error?: string; }; export {};