type PrependNextNum> = A['length'] extends infer T ? ((t: T, ...a: A) => void) extends ((...x: infer X) => void) ? X : never : never;
type EnumerateInternal, N extends number> = {
0: A;
1: EnumerateInternal, N>;
}[N extends A['length'] ? 0 : 1];
export type Enumerate = EnumerateInternal<[], N> extends (infer E)[] ? E : never;
export type Range = Exclude, Enumerate>;
export {};