/** * JSON-safe serialization utilities for Prompt messages and ConversationMetadata. * * Handles special types (Date, URL, Uint8Array) that require custom encoding * for safe storage and round-trip restoration. */ import type { Prompt } from '@effect/ai'; import type { ConversationMetadata } from '../context'; /** * Serialized message format for SQL storage. */ export interface SerializedMessage { /** * The JSON-encoded message payload with special types preserved. */ payload: string; } /** * Serialize a Prompt message for SQL storage. * Encodes special types (Date, URL, Uint8Array) as typed markers. */ export declare function serializeMessage(message: Prompt.MessageEncoded): SerializedMessage; /** * Deserialize a Prompt message from SQL storage. * Accepts either a JSON string (SQLite TEXT) or parsed object (Postgres JSONB). */ export declare function deserializeMessage(input: string | object): Prompt.MessageEncoded; /** * Best-effort deserialize for Prompt messages. * Returns null if parsing fails. */ export declare function tryDeserializeMessage(input: string | object): Prompt.MessageEncoded | null; /** * Serialized metadata format for SQL storage. * Splits createdAt/updatedAt into top-level columns for querying. */ export interface SerializedMetadata { /** * ISO 8601 string for created timestamp (stored in SQL column). */ createdAt: string; /** * ISO 8601 string for updated timestamp (stored in SQL column). */ updatedAt: string; /** * JSON-encoded remaining metadata with special types preserved. */ metadata: string; } /** * Serialize ConversationMetadata for SQL storage. * Extracts createdAt/updatedAt for column storage, encodes rest as JSON. */ export declare function serializeMetadata(metadata: ConversationMetadata): SerializedMetadata; /** * Deserialize ConversationMetadata from SQL storage. * Accepts JSON string or parsed object for metadata field. */ export declare function deserializeMetadata(createdAt: string | Date, updatedAt: string | Date, metadata: string | object): ConversationMetadata; //# sourceMappingURL=serialization.d.ts.map