type GetIndexedField = K extends keyof T ? T[K] : K extends `${number}` ? 'length' extends keyof T ? number extends T['length'] ? number extends keyof T ? T[number] : undefined : undefined : undefined : undefined; type FieldWithPossiblyUndefined = GetFieldType, Key> | Extract; type IndexedFieldWithPossiblyUndefined = GetIndexedField, Key> | Extract; type GetFieldType = P extends `${infer Left}.${infer Right}` ? Left extends keyof Exclude ? FieldWithPossiblyUndefined[Left], Right> | Extract : Left extends `${infer FieldKey}[${infer IndexKey}]` ? FieldKey extends keyof T ? FieldWithPossiblyUndefined, Right> : undefined : undefined : P extends keyof T ? T[P] : P extends `${infer FieldKey}[${infer IndexKey}]` ? FieldKey extends keyof T ? IndexedFieldWithPossiblyUndefined : undefined : IndexedFieldWithPossiblyUndefined; export declare function getProp(obj: TObject, path: TKey, defaultValue: TObject[TKey]): TObject[TKey]; export declare function getProp(obj: TObject, path: TPath): Exclude, null | undefined>; export declare function getProp>(obj: TObject, path: TPath, defaultValue: TDefault): Exclude, null | undefined> | TDefault; export declare function flattenReducer(acc: Array, arr: Array | T): Array; export declare function fastJoin(arr: Array, separator: string): string; export {}; //# sourceMappingURL=utils.d.ts.map