export type Head = T extends [infer U, ...unknown[]] ? U : never; export type Tail = T extends [unknown, ...infer U] ? U : never; export type Last = T extends [...unknown[], infer U] ? U : never; export type Single = T extends [infer U] ? U : never; export type Rec = T extends object ? T : never; export type KeyOf = T extends object ? keyof T : never; export type KeyOf1> = KeyOf; export type KeyOf2, K2 extends KeyOf1> = KeyOf>; export type KeyOf3, K2 extends KeyOf1, K3 extends KeyOf2> = KeyOf>; export type ValueOf1> = T[K]; export type ValueOf2, K1 extends KeyOf1> = ValueOf1, K1>; export type ValueOf3, K1 extends KeyOf1, K2 extends KeyOf2> = Rec>[K2]; export type ValueOf4, K1 extends KeyOf1, K2 extends KeyOf2, K3 extends KeyOf3> = Rec>[K3]; export type KeyOfValueOf> = KeyOf>; export type ArrayValue = T extends unknown[] ? T[number] : never; //# sourceMappingURL=types.d.ts.map