import { InferBad, InferGood, MetaNever, MetaObj, Sure } from './core.js'; export type TupleInferGoods_old = T extends readonly [infer First, ...infer InferRest] ? First extends Sure ? [Good, ...TupleInferGoods] : [] : []; export type TupleInferGoods = T extends readonly [infer First, ...infer InferRest] ? First extends Sure ? Meta extends MetaObj<{ parent: typeof spread_NOT_IMPLEMENTED; }> ? Good extends readonly unknown[] ? [...Good, ...TupleInferGoods] : [ Good, ...TupleInferGoods ] : [Good, ...TupleInferGoods] : [] : []; export type TupleInferBads_old = T extends readonly [infer First, ...infer InferRest] ? First extends Sure ? [Bad | undefined, ...TupleInferBads] : [] : []; export type TupleInferBads = T extends readonly [infer First, ...infer InferRest] ? First extends Sure ? Meta extends MetaObj<{ parent: typeof spread_NOT_IMPLEMENTED; }> ? Bad extends readonly unknown[] ? [...Bad, ...TupleInferBads] : [ Bad | undefined, ...TupleInferBads ] : [Bad | undefined, ...TupleInferBads] : [] : []; /** * @deprecated * * It's possible to add a spread operator. * But it's seems that it would add a lot of complexity and will have to link the library too much. * * A tuple would have to know about both the spread and an array. * * It made sense for `object` and `optional`, since they're linked. * But for tuples it can be more clearly implemented as a separate user-land function. */ export declare function spread_NOT_IMPLEMENTED>(schema: Arr): Sure, InferGood, unknown, MetaObj<{ parent: typeof spread_NOT_IMPLEMENTED; schema: typeof schema; }>>; export declare function tuple, ...Sure[]] | []>(arr: Arr): Sure, TupleInferGoods, unknown, MetaObj<{ type: 'tuple'; schema: Arr; }>>; //# sourceMappingURL=tuple.d.ts.map