import type { ConversationBinding, ConversationRef, DeliveryTarget, ExternalPrincipalKey, OwnerRouteAuthority, OwnerRouteBindingSnapshot } from './types.js'; export type DeliveryValidationErrorCode = 'invalid-conversation' | 'invalid-identity' | 'route-mismatch'; export declare class DeliveryValidationError extends Error { readonly code: DeliveryValidationErrorCode; constructor(code: DeliveryValidationErrorCode, message: string); } export declare function canonicalPrincipal(input: ExternalPrincipalKey): ExternalPrincipalKey; /** * Stable Policy identity for one typed external principal. * * Components are encoded independently before joining so a provider-owned `/` * can never move a value across component boundaries. Legacy-safe identifiers * retain their existing representation. */ export declare function externalPrincipalId(input: ExternalPrincipalKey): string; /** Canonical identity for trusted local control-plane operators. */ export declare function canonicalLocalOperatorId(input: unknown): string; /** Canonical identity for a trusted Host background source. */ export declare function canonicalBackgroundSourceId(input: unknown): string; export declare function canonicalConversation(input: ConversationRef): ConversationRef; export declare function canonicalTarget(input: DeliveryTarget): DeliveryTarget; /** Canonicalize a Host-owned route authority without accepting hidden fields. */ export declare function canonicalOwnerRouteAuthority(input: OwnerRouteAuthority): OwnerRouteAuthority; export declare function ownerRouteAuthorityHash(input: OwnerRouteAuthority): string; /** Exact lineage comparison. `status` and `version` are deliberately checked by the caller. */ export declare function bindingMatchesOwnerRoute(binding: Readonly, input: Readonly): boolean; export declare function ownerRouteBindingSnapshot(authorityInput: Readonly, binding: Readonly): OwnerRouteBindingSnapshot; //# sourceMappingURL=canonical.d.ts.map