import { Kind, $ } from '../kinds/index.js'; export type Tuple = number extends N ? T[] : $acc['length'] extends N ? $acc : Tuple; export type ReadonlyTuple = number extends N ? readonly T[] : $acc['length'] extends N ? $acc : ReadonlyTuple; export type StringToTuple = T extends `${infer A}${infer B}` ? StringToTuple : $acc; export type Range = $acc['length'] extends Max ? $acc : Range; export type Tail = T extends [unknown, ...infer R] ? R : []; export type Drop = $droped['length'] extends N ? T : T extends [infer H, ...infer R] ? Drop : T; export type Zip = T extends [infer TH, ...infer TR] ? U extends [infer UH, ...infer UR] ? Zip : $acc : $acc; export type SplitAt = $acc['length'] extends N ? [$acc, T] : T extends [infer H, ...infer R] ? SplitAt : [$acc, []]; type MapImpl = { [K in keyof T]: $; }; export type Flatten = T extends [infer Head extends unknown[], ...infer Tail] ? Flatten : $acc; export interface Map extends Kind { return: MapImpl; } export {};