import { Plus } from '../number/calc'; import { Decreaser, If_Lte } from '../number/number'; import { Str } from '../string/string'; import { If_Never, Len } from '../utils/utils'; export type Shift = T extends [any, ...infer R] ? R : T; export type Push = [...T, I]; export type Append = Push; export type Pop, item extends any = arr[index], result extends any[] = []> = arr extends [infer first, ...infer rest] ? (first extends item ? (Pop) : (Pop)) : (result); export type Flat = C['length'] extends D ? (T) : (T extends [infer F, ...infer R] ? (If_Never extends true ? ([ F, ...Flat ]) : (F extends any[] ? ([ ...Flat, ...Flat ]) : ([ F, ...Flat ]))) : ([ ])); export type FillTuple, R extends any[] = []> = Len extends N ? (R) : (G extends [infer F extends any[], ...infer Rest] ? (Plus, Len> extends infer L extends string ? (If_Lte extends true ? (FillTuple) : (FillTuple)) : (never)) : (R)); type _Gen2Seq = Str extends keyof R[0] ? (R) : (_Gen2Seq); export {};