import { PlainArray, PlainObject, PlainValue } from '../plainTypes';
import { YjsData } from './convertYjsDataToJson';
import * as Y from "yjs";
/**
 * Options for applying JSON data to Y.js data structures.
 */
export interface ApplyJsonToYjsOptions {
    /**
     * The mode to use when applying JSON data to Y.js data structures.
     * - `add`: Creates new Y.js containers for objects/arrays (default, backwards compatible)
     * - `merge`: Recursively merges values, preserving existing container references where possible
     */
    mode?: "add" | "merge";
}
/**
 * Converts a plain value to a Y.js data structure.
 * Objects are converted to Y.Maps, arrays to Y.Arrays, primitives are untouched.
 * Frozen values are a special case and they are kept as immutable plain values.
 */
export declare function convertJsonToYjsData(v: PlainValue): YjsData;
/**
 * Applies a JSON array to a Y.Array, using the convertJsonToYjsData to convert the values.
 *
 * @param dest The destination Y.Array.
 * @param source The source JSON array.
 * @param options Options for applying the JSON data.
 */
export declare const applyJsonArrayToYArray: (dest: Y.Array<any>, source: PlainArray, options?: ApplyJsonToYjsOptions) => void;
/**
 * Applies a JSON object to a Y.Map, using the convertJsonToYjsData to convert the values.
 *
 * @param dest The destination Y.Map.
 * @param source The source JSON object.
 * @param options Options for applying the JSON data.
 */
export declare const applyJsonObjectToYMap: (dest: Y.Map<any>, source: PlainObject, options?: ApplyJsonToYjsOptions) => void;
