// export type LegitTuple = [] | [any] | [any, any] | [any, any, any] | [any, any, any, any] | [any, any, any, any, any] | [any, any, any, any, any, any] | [any, any, any, any, any, any, any] | [any, any, any, any, any, any, any, any] | [any, any, any, any, any, any, any, any, any] | [any, any, any, any, any, any, any, any, any, any]; // export type Tuple = // T5 extends void ? // T4 extends void ? // T3 extends void ? // T2 extends void ? // T1 extends void ? [] : // [T1] : [T1, T2] : [T1, T2, T3] : [T1, T2, T3, T4] : [T1, T2, T3, T4, T5]; // export type Tuple = // T1 extends void ? readonly [] : // T2 extends void ? readonly [T1] : // T3 extends void ? readonly [T1, T2] : // T4 extends void ? readonly [T1, T2, T3] : // T9 extends void ? readonly [T1, T2, T3, T4] : // T9 extends void ? readonly [T1, T2, T3, T4, T5] : // T9 extends void ? readonly [T1, T2, T3, T4, T5, T6] : // T9 extends void ? readonly [T1, T2, T3, T4, T5, T6, T7] : // T9 extends void ? readonly [T1, T2, T3, T4, T5, T6, T7, T8] : // readonly [T1, T2, T3, T4, T5, T6, T7, T8, T9]; // export type TupleX = // T extends LegitTuple & [] ? [] : // T extends LegitTuple & [infer T0] ? [T0] : // T extends LegitTuple & [infer T0, infer T1] ? [T0, T1] : // T extends LegitTuple & [infer T0, infer T1, infer T2] ? [T0, T1, T2] : // T extends LegitTuple & [infer T0, infer T1, infer T2, infer T3, infer T4] ? [T0, T1, T2, T3, T4] : // T extends LegitTuple & [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5] ? [T0, T1, T2, T3, T4, T5] : // T extends LegitTuple & [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5, infer T6] ? [T0, T1, T2, T3, T4, T5, T6] : // T extends LegitTuple & [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7] ? [T0, T1, T2, T3, T4, T5, T6, T7] : // T extends LegitTuple & [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7, infer T8] ? [T0, T1, T2, T3, T4, T5, T6, T7, T8] : // T extends LegitTuple & [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7, infer T8, infer T9] ? [T0, T1, T2, T3, T4, T5, T6, T7, T8, T9] : // T extends LegitTuple ? T : // void; // export type InferTuple = // T extends [] ? Tuple : // T extends [infer T0] ? Tuple : // T extends [infer T0, infer T1] ? Tuple : // T extends [infer T0, infer T1, infer T2] ? Tuple : // T extends [infer T0, infer T1, infer T2, infer T3, infer T4] ? Tuple : // T extends [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5] ? Tuple : // T extends [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5, infer T6] ? Tuple : // T extends [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7] ? Tuple : // T extends [infer T0, infer T1, infer T2, infer T3, infer T4, infer T5, infer T6, infer T7, infer T8] ? Tuple : // T extends any[] ? T : // void; // export function tuple(legitTuple: T): InferTuple; // export function tuple(legitTuple: T): InferTuple; // export function tuple(...items: T): InferTuple; // export function tuple(...items: any[]) { // if (items.length === 1) { // if (Array.isArray(items[0])) { // return tuple(items[0]); // } // } // if (items.length > 10) { // throw new TypeError( // "tuple util function only supports tuple length of up to 9" // ); // } // return items; // }; // export function tuple(...args:Tuple){ export function tuple(...args: TArgs): Readonly {//InferTuple; return args; }