import { IterationOf } from '../Iteration/IterationOf'; import { Iteration } from '../Iteration/Iteration'; import { Prepend } from '../List/Prepend'; import { Prev } from '../Iteration/Prev'; import { Next } from '../Iteration/Next'; import { Cast } from '../Any/Cast'; import { Way } from '../Iteration/_Internal'; import { List } from '../List/List'; import { Extends } from '../Any/Extends'; import { Pos } from '../Iteration/Pos'; /** * @hidden */ declare type RangeForth = { 0: RangeForth, To, Prepend>>; 1: L; }[Extends]; /** * @hidden */ declare type RangeBack = { 0: RangeBack, To, Prepend>>; 1: L; }[Extends]; /** * @hidden */ declare type __Range = { '->': RangeForth>; '<-': RangeBack>; }[way]; /** * @hidden */ export declare type _Range = __Range, IterationOf, way> extends infer X ? Cast : never; /** * Create a range of * *number**s * @param From to start with * @param To to end with * @param way (?=`'->'`) to reverse it * @returns `string[] | number[] | boolean[]` * @example * ```ts * import {N} from 'ts-toolbelt' * * type test0 = N.Range<'-2', '1'> // ['-2', '-1', '0', '1'] * type test1 = N.Range<'-2', '1', '->'> // ['-2', '-1', '0', '1'] * type test2 = N.Range<'-2', '1', '<-'> // ['1', '0', '-1', '-2'] * ``` */ export declare type Range = From extends unknown ? To extends unknown ? _Range : never : never; export {};