import { MutableRefObject } from 'react';
import { TFormName } from '../../../../../../localTypes/form';
import { TFormSchemaProperties } from '../../../../../../localTypes/formSchema';
export declare const pathKey: (p: (string | number)[]) => string;
/**
 * Recursively prunes schema properties that are marked as "additional"
 * but are not present in the given values object, or are in blocked paths.
 *
 * @param props - The OpenAPI v2 schema `properties` definition to prune.
 * @param values - The actual data values that correspond to the schema.
 * @returns A new pruned copy of the schema `properties`.
 */
export declare const pruneAdditionalForValues: (props: TFormSchemaProperties, values: Record<string, unknown>, blockedPathsRef: MutableRefObject<Set<string>>) => TFormSchemaProperties;
/**
 * Dynamically materializes (adds) new schema properties from the `values` object
 * whenever those properties correspond to `additionalProperties` in an OpenAPI schema.
 *
 * Essentially, this function:
 * - Detects new fields in `values` that aren’t in `props`, but are allowed by `additionalProperties`.
 * - Expands the schema to include them (so the form/UI can render them).
 * - Tracks which fields should be persisted or expanded further.
 *
 * Summary of what this function does
 * Clones the input schema to prevent side effects.
 * Walks recursively through schema objects and arrays.
 * Removes any schema nodes marked as isAdditionalProperties that are:
 * -- Missing from the corresponding values object, or
 * -- Listed in blockedPathsRef.current.
 * Returns a pruned version of the schema matching only relevant properties.
 *
 * @param props - The base OpenAPI v2 schema `properties` to augment.
 * @param values - The runtime data values to derive new schema fields from.
 * @param blockedPathsRef - A ref set of schema paths that should not be modified.
 * @returns An object containing:
 *   - `props`: the updated schema with materialized additional properties
 *   - `toExpand`: list of field paths that should be expanded (e.g., in a UI)
 *   - `toPersist`: list of field paths that should be persisted (saved)
 */
export declare const materializeAdditionalFromValues: (props: TFormSchemaProperties, values: Record<string, unknown>, blockedPathsRef: MutableRefObject<Set<string>>) => {
    props: TFormSchemaProperties;
    toExpand: TFormName[];
    toPersist: TFormName[];
};
