import { Length, Skip, Tail } from './array'; import { Cast } from './cast'; type CounterArray = never[]; type Next = [never, ...I]; type Prev = Tail; type ExpandArrayToLength = Length extends length ? counter : ExpandArrayToLength<[never, ...counter], length>; // type _Counter = // Length extends length ? counter : // _Counter>; type _Counter = length extends 0 ? [] : length extends 1 ? [never] : ExpandArrayToLength<[], length>; type Counter = Cast<_Counter, CounterArray>; export type Store = Counter; export type Inc = Length>>; export type Dec = Length>>; export type Add = Length<[...Counter, ...Counter]>; export type Subtract = Length>>;