import { z } from 'zod'; import type { ResidentAgendaState } from './agenda.js'; export declare const residentProposalSchema: z.ZodObject<{ id: z.ZodString; parentId: z.ZodString; parentRevision: z.ZodNumber; domain: z.ZodEffects; objective: z.ZodString; reason: z.ZodString; evidenceKey: z.ZodString; }, "strip", z.ZodTypeAny, { parentId: string; id: string; reason: string; domain: string; objective: string; evidenceKey: string; parentRevision: number; }, { parentId: string; id: string; reason: string; domain: string; objective: string; evidenceKey: string; parentRevision: number; }>; export declare const residentProposalLimitsSchema: z.ZodObject<{ domains: z.ZodArray, "many">; maxChildrenPerParent: z.ZodNumber; maxDepth: z.ZodNumber; }, "strip", z.ZodTypeAny, { maxDepth: number; domains: string[]; maxChildrenPerParent: number; }, { maxDepth: number; domains: string[]; maxChildrenPerParent: number; }>; /** @experimental An inert subgoal proposal; creating it grants no execution authority. */ export interface ResidentProposal { readonly id: string; readonly parentId: string; readonly parentRevision: number; readonly domain: string; readonly objective: string; readonly reason: string; readonly evidenceKey: string; } /** @experimental Host-approved routing domains and finite subgoal admission bounds. */ export interface ResidentProposalLimits { readonly domains: readonly string[]; readonly maxChildrenPerParent: number; readonly maxDepth: number; } /** Persisted provenance shared with the agenda's schema validation. */ export declare const residentProposalOriginSchema: z.ZodObject<{ proposalId: z.ZodString; parentId: z.ZodString; parentRevision: z.ZodNumber; domain: z.ZodEffects; reason: z.ZodString; evidenceKey: z.ZodString; depth: z.ZodNumber; }, "strip", z.ZodTypeAny, { parentId: string; reason: string; depth: number; domain: string; evidenceKey: string; parentRevision: number; proposalId: string; }, { parentId: string; reason: string; depth: number; domain: string; evidenceKey: string; parentRevision: number; proposalId: string; }>; /** @experimental Host-admitted ancestry and evidence for a resident subgoal. */ export type ResidentProposalOrigin = Readonly>; /** * @experimental Pure validation against one agenda snapshot. The host must * atomically bind this snapshot to admission. Domains are routing metadata; * this does not prove an objective fits its domain or authorize any tools. */ export declare function validateResidentProposal(agenda: ResidentAgendaState, input: ResidentProposal, limits: ResidentProposalLimits): ResidentProposalOrigin; //# sourceMappingURL=proposal.d.ts.map