/**
 * Shared utilities for editor UI store slices.
 *
 * These functions handle deep cloning and comparison of record values,
 * which is critical for determining when draft state has changed.
 */
import type { EditorValueRecord } from '@riverbankcms/core';
/**
 * Deep clones a record using JSON serialization.
 * Returns null if input is null.
 */
export declare function cloneRecord<T extends EditorValueRecord | null>(value: T): T;
/**
 * Compares two records for equality after normalization.
 * Handles null values and normalizes undefined/empty values before comparison.
 */
export declare function recordsEqual<T extends EditorValueRecord | null>(a: T, b: T): boolean;
/**
 * Normalizes a value for comparison.
 *
 * - undefined, empty string, and null all become null
 * - Empty objects become null
 * - NaN becomes null
 * - Arrays are recursively normalized
 * - Objects have all values recursively normalized
 */
export declare function normalizeComparable<T extends EditorValueRecord | null>(value: T): T;
export declare function normalizeComparable(value: unknown): unknown;
/**
 * Determines snapshot status by comparing baseline and current values.
 */
export declare function determineSnapshotStatus(baseline: EditorValueRecord | null, current: EditorValueRecord | null): 'baseline' | 'pending';
