type Depth = 1 | 2 | 3 | 4 | 5 | 6; type NestedArray = D extends 1 ? T[] : D extends 2 ? T[][] : D extends 3 ? T[][][] : D extends 4 ? T[][][][] : D extends 5 ? T[][][][][] : T[][][][][][]; type PrevDepth = D extends 6 ? 5 : D extends 5 ? 4 : D extends 4 ? 3 : D extends 3 ? 2 : D extends 2 ? 1 : never; type LeafAtDepth = D extends 1 ? A extends (infer T)[] ? T : never : A extends (infer T)[] ? LeafAtDepth> : never; type LeafValue = FilterUndefined extends true ? Exclude : T; /** * Returns the result of mapping the array to the given depth and, optionally, * filtering out `undefined` leaf values. * * @param tss * @param f * @param filterUndefined */ declare function mapDeep, U, F extends boolean = false>(depth: D, tss: A, f: (t: LeafAtDepth) => U, filterUndefined?: F): NestedArray, D>; export { mapDeep };