export type CanonicalPrimitive = boolean | null | number | string; export type CanonicalValue = CanonicalPrimitive | readonly CanonicalValue[] | { readonly [key: string]: CanonicalValue; }; export declare const CANONICAL_ENCODING_VERSION: 1; export declare const CANONICAL_HASH_FRAME: "agent-intercom-canonical-frame-v1"; /** Strings are encoded exactly as supplied; NFC/NFD normalization is intentionally not performed. */ export declare const CANONICAL_UNICODE_NORMALIZATION: "none"; export declare class ContractValidationError extends Error { readonly path: string; constructor(path: string, message: string); } /** Canonical JSON sorts object keys recursively and rejects undefined and every non-JSON value. */ export declare function canonicalJson(value: unknown): string; /** Injective length-prefixed framing for the domain and canonical payload bytes. */ export declare function canonicalFrame(domain: string, value: unknown): Uint8Array; /** Domain-separated SHA-256 over UTF-8 canonical JSON. */ export declare function canonicalHash(domain: string, value: unknown): string; export type StringEnum = T[number]; declare const MONOTONIC_COUNTER_BRAND: unique symbol; export type MonotonicCounter = number & { readonly [MONOTONIC_COUNTER_BRAND]: Kind; }; export type BossBindingEpoch = MonotonicCounter<"boss_binding_epoch">; export type ParticipantBindingEpoch = MonotonicCounter<"participant_binding_epoch">; export type SubscriberBindingEpoch = MonotonicCounter<"subscriber_binding_epoch">; export type SubscriberBindingGeneration = MonotonicCounter<"subscriber_binding_generation">; export type ControllerGeneration = MonotonicCounter<"controller_generation">; export type BrokerRevision = MonotonicCounter<"broker_revision">; export type WorkerGeneration = MonotonicCounter<"worker_generation">; export type TransitionVersion = MonotonicCounter<"transition_version">; export type BrokerGeneration = MonotonicCounter<"broker_generation">; export type JournalGeneration = MonotonicCounter<"journal_generation">; export type SchedulerGeneration = MonotonicCounter<"scheduler_generation">; export type RecipientTransferGeneration = MonotonicCounter<"recipient_transfer_generation">; export type DeliveryClaimGeneration = MonotonicCounter<"delivery_claim_generation">; export type TriggerGeneration = MonotonicCounter<"trigger_generation">; export type WatchdogGeneration = MonotonicCounter<"watchdog_generation">; export declare function readMonotonicCounter(value: unknown, path: string, _kind: Kind, minimum?: number): MonotonicCounter; export declare const bossBindingEpoch: (value: unknown, path?: string, minimum?: number) => MonotonicCounter<"boss_binding_epoch">; export declare const participantBindingEpoch: (value: unknown, path?: string, minimum?: number) => MonotonicCounter<"participant_binding_epoch">; export declare const subscriberBindingEpoch: (value: unknown, path?: string, minimum?: number) => MonotonicCounter<"subscriber_binding_epoch">; export declare const subscriberBindingGeneration: (value: unknown, path?: string, minimum?: number) => MonotonicCounter<"subscriber_binding_generation">; export declare const controllerGeneration: (value: unknown, path?: string, minimum?: number) => MonotonicCounter<"controller_generation">; export declare const brokerRevision: (value: unknown, path?: string, minimum?: number) => MonotonicCounter<"broker_revision">; export declare const workerGeneration: (value: unknown, path?: string) => MonotonicCounter<"worker_generation">; export declare const transitionVersion: (value: unknown, path?: string) => MonotonicCounter<"transition_version">; export declare const brokerGeneration: (value: unknown, path?: string) => MonotonicCounter<"broker_generation">; export declare const journalGeneration: (value: unknown, path?: string) => MonotonicCounter<"journal_generation">; export declare const schedulerGeneration: (value: unknown, path?: string) => MonotonicCounter<"scheduler_generation">; export declare const recipientTransferGeneration: (value: unknown, path?: string, minimum?: number) => MonotonicCounter<"recipient_transfer_generation">; export declare const deliveryClaimGeneration: (value: unknown, path?: string) => MonotonicCounter<"delivery_claim_generation">; export declare const triggerGeneration: (value: unknown, path?: string, minimum?: number) => MonotonicCounter<"trigger_generation">; export declare const watchdogGeneration: (value: unknown, path?: string) => MonotonicCounter<"watchdog_generation">; export declare function assertRecord(value: unknown, path?: string): asserts value is Record; export declare function assertExactKeys(value: Record, required: readonly string[], optional?: readonly string[], path?: string): void; export declare function readString(value: unknown, path: string): string; export declare function readIdentifier(value: unknown, path: string): string; export declare function readOptionalIdentifier(value: unknown, path: string): string | undefined; export declare function readOptionalString(value: unknown, path: string): string | undefined; export declare function readInteger(value: unknown, path: string, minimum?: number): number; export declare function readOptionalInteger(value: unknown, path: string, minimum?: number): number | undefined; export declare function readBoolean(value: unknown, path: string): boolean; export declare function readOptionalBoolean(value: unknown, path: string): boolean | undefined; export declare function readEnum(value: unknown, allowed: T, path: string): T[number]; export declare function readStringArray(value: unknown, path: string): string[]; export declare function readTimestamp(value: unknown, path: string): string; export declare function readOptionalTimestamp(value: unknown, path: string): string | undefined; export declare function readHexDigest(value: unknown, path: string): string; export type StoreValidationFailureReason = "corrupt" | "unsupported_newer_version" | "unsupported_older_version" | "foreign_version"; export type StoreValidationResult = { ok: true; status: "valid"; value: T; } | { ok: false; status: StoreValidationFailureReason; observedVersion?: unknown; path?: string; message: string; preserveExisting: true; mutationAllowed: false; }; /** Nonthrowing store gate. Failures never synthesize defaults and always require preserving the source. */ export declare function validateVersionedStoreRecord(value: unknown, expectedVersion: string | number, parser: (input: unknown) => T): StoreValidationResult; export {}; //# sourceMappingURL=canonical.d.ts.map