import { NonObject, Levels } from '../types'; export declare type PrimitiveRecursive = Depth extends 0 ? NonObject : { [K in keyof O]: O[K] extends object ? PrimitiveRecursive : O[K]; }[keyof O]; export declare type KeysRecursive = Depth extends 0 ? keyof O : keyof O | { [K in keyof O]: O[K] extends object ? KeysRecursive : never; }[keyof O]; declare type Concatanable = string | number | bigint; declare type ExtractConcatanable = Extract; declare type Concat = B extends '' ? A : `${ExtractConcatanable}.${ExtractConcatanable}`; export declare type FlatKeys = { [K in keyof O]: Depth extends 0 ? '' : O[K] extends object ? K | Concat> : K; }[keyof O]; export declare type ConcatenatedKeysRecursive = FlatKeys extends string ? FlatKeys[] : string[]; export declare type Get = Depth extends 0 ? unknown : Keys extends `${infer Key}.${infer RestKeys}` ? Get : O[Keys & keyof O]; export {};