export function isRequired(field: any): any; export function pathParse(path: any): any; export function pathsEqual(a: any, b: any): any; export function generateIndexForType(type: any): any; export function generateIdForType(type: any): string; /** * @template T * @param {T} data * @param {(this: any, key: string, value: any) => any} [replacer] * @return {T} */ export function clone(data: T, replacer?: (this: any, key: string, value: any) => any): T; export function runRecursively(formField: any, fn: any): void; /** * Returns a copy of `target` with the value at `path` removed, pruning any * ancestor that becomes empty. Pure: the input is not mutated and untouched * sibling branches keep their original references (path-cloning). * * Pruning rules: * - An object ancestor is removed when it has no own keys left. * - An array ancestor is removed when every entry is nullish. Arrays are * never compacted; `delete` leaves a sparse hole so sibling indexes stay * stable. * * @template T * @param {T} target * @param {Array} path * @returns {T} */ export function pruneAt(target: T, path: Array): T; export function wrapObjectKeysWithUnderscores(obj: any): {};