import { $, HKT, I, _ } from ".."; import { ElementOf, List } from "../../list"; import { IsNever, Satisfies, Unreachable } from "../../type"; import { Fold } from "."; type Step = [never, never, 1, 2, 3, 4, 5, 6, 7, 8, 9]; type Depth = ElementOf | true; type DEFAULT_DEEP_OPTION_VALUE = 1; type Options = { depth: Depth; }; interface Accumulator extends HKT { [HKT.i]: Satisfies<_, [List, unknown]>; [HKT.o]: I extends [infer Acc extends List, infer X] ? X extends List ? IsNever extends true ? [...Acc, ...X] : D extends true ? [...Acc, ...$, X>] : [...Acc, ...$]; }>, X>] : [...Acc, X] : Unreachable; } /** * flattens a list, flattening nested lists to the specified depth. * * the default depth is 1 (i.e. "shallow flatten"). * set depth to `true` to fully flatten recursive list structures * * @since 0.0.6 */ export interface Flatten extends HKT { [HKT.i]: Satisfies<_, List>; [HKT.o]: O extends { depth: infer D extends Depth; } ? $, []>, I> : never; } export {}; //# sourceMappingURL=flatten.d.ts.map