import { Key } from '../types'; import { ConcatenatedKeysRecursive, FlatKeys, Get } from './recursive.type'; export declare type FlattenMergeKey = (key1: Key, key2: Key) => Key; export declare class FlattenObjectOption { mergeKeys?: FlattenMergeKey; nbLevels?: number; } export declare const keysRecursive: (o: O, option?: FlattenObjectOption) => ConcatenatedKeysRecursive; export declare const getRecursive: >(o: O, key: {} extends O ? Key : Keys) => {} extends O ? any : Keys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? unknown : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]] : O[Key_1 & keyof O][RestKeys & keyof O[Key_1 & keyof O]] : O[Keys & keyof O]; export declare const setRecursive: >(o: O, key: {} extends O ? Key : Keys, value: {} extends O ? any : Keys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? unknown : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]] : O[Key_1 & keyof O][RestKeys & keyof O[Key_1 & keyof O]] : O[Keys & keyof O]) => O; export declare const set: >(o: O, key: {} extends O ? Key : Keys, value: {} extends O ? any : Keys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? unknown : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]] : O[Key_1 & keyof O][RestKeys & keyof O[Key_1 & keyof O]] : O[Keys & keyof O]) => O; export declare const get: >(o: O, key: {} extends O ? Key : Keys) => {} extends O ? any : Keys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? RestKeys extends `${infer Key_1}.${infer RestKeys}` ? unknown : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][Key_1 & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]]] : O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]][RestKeys & keyof O[Key_1 & keyof O][Key_1 & keyof O[Key_1 & keyof O]]] : O[Key_1 & keyof O][RestKeys & keyof O[Key_1 & keyof O]] : O[Keys & keyof O];