/** Events this library wraps; postEvent also accepts any other event string. */ export type SupportedEvent = 'worker.hire' | 'worker.rehire' | 'worker.work-assignment.terminate' | 'worker.work-assignment.base-remuneration.change' | 'worker.legal-name.change' | 'worker.person.custom-field.string.change' | 'worker.leave.absence.request' | 'worker.read' | 'worker.photo.upload' | 'applicant.onboard'; export interface FieldRule { optional?: boolean; readOnly?: boolean; hidden?: boolean; codeValues?: string[]; pattern?: string; minLength?: number; maxLength?: number; } export interface EventMeta { event: string; /** Scoped path ("transform:/a/b" | "eventContext:/a/b") -> constraints. */ rules: Map; raw: unknown; fetchedAt: number; } export interface ValidationIssue { path: string; code: 'required' | 'readOnly' | 'hidden' | 'codeList' | 'pattern' | 'length'; message: string; } /** Per-event routing: path family + which issue codes block a POST. */ export interface EventRoute { postPath: string; metaPath: string; blocking: ReadonlyArray; } export declare function eventRoute(event: string): EventRoute; export declare class EventValidationError extends Error { readonly event: string; readonly issues: ValidationIssue[]; constructor(event: string, issues: ValidationIssue[], options?: { cause?: unknown; }); } export declare function parseEventMeta(event: string, raw: unknown, fetchedAt: number): EventMeta; /** * Leaf values of the envelope, keyed by the same scoped-path model. * @internal — used by the live meta gate. */ export declare function flattenEnvelope(envelope: unknown): Map; export declare function validateEnvelope(envelope: unknown, meta: EventMeta): ValidationIssue[];