/** * Pure sourced-content primitives for consumers that validate or compose * adapter content payloads without depending on the catalog runtime package. */ import { z } from "zod"; export declare const BOARD_BASIS_VALUES: readonly ["room_only", "bed_breakfast", "half_board", "full_board", "all_inclusive"]; export declare const boardBasisSchema: z.ZodEnum<{ room_only: "room_only"; bed_breakfast: "bed_breakfast"; half_board: "half_board"; full_board: "full_board"; all_inclusive: "all_inclusive"; }>; export type BoardBasis = z.infer; export declare const BOARD_BASIS_SHORT_CODES: { readonly room_only: "RO"; readonly bed_breakfast: "BB"; readonly half_board: "HB"; readonly full_board: "FB"; readonly all_inclusive: "AI"; }; export type BoardBasisShortCode = (typeof BOARD_BASIS_SHORT_CODES)[keyof typeof BOARD_BASIS_SHORT_CODES]; export declare const BOARD_BASIS_FROM_SHORT_CODE: { readonly RO: "room_only"; readonly BB: "bed_breakfast"; readonly HB: "half_board"; readonly FB: "full_board"; readonly AI: "all_inclusive"; }; export declare function isStale(row: { fresh_until: Date | null | undefined; }, now?: Date): boolean; export type ContentLocaleMatchKind = "exact" | "language_match" | "fallback_chain" | "any"; export interface ContentLocaleResolution { candidate: T; served_locale: string; match_kind: ContentLocaleMatchKind; } export declare function pickBestCachedLocale(candidates: ReadonlyArray, preferredLocales: ReadonlyArray): ContentLocaleResolution | null; export declare class JsonPointerError extends Error { readonly pointer: string; readonly reason: string; constructor(pointer: string, reason: string); } export declare function parseJsonPointer(pointer: string): string[]; export declare function applyJsonPointerOverlay(target: unknown, pointer: string, value: unknown): unknown; export declare const CONTENT_ROOT_NODE_KIND = "root"; export declare const CONTENT_ROOT_NODE_KEY = "root"; export interface ContentOverlay { field_path: string; value: unknown; node_kind?: string; node_key?: string; id?: string; version?: number; } export interface MergeOverlaysOptions { validate?: (payload: unknown) => { valid: boolean; reason?: string; }; onOverlayError?: (event: { overlay: ContentOverlay; reason: string; }) => void; resolveNodePointer?: (payload: unknown, overlay: ContentOverlay) => string | null; } export declare function mergeOverlaysIntoContent(payload: unknown, overlays: ReadonlyArray, options?: MergeOverlaysOptions): unknown;