import { HasTag, InferKind, SomeSpec, Spec, SpecSuccess, SpectypesError } from './types.js' import { error } from './error.js' /** * Creates a tuple validator spec. * * @param specs Specs to validate tuple parts */ export const tuple: ( ...specs: Specs & { readonly [Index in keyof Specs]: Specs[Index] extends Spec ? HasTag extends true ? SpectypesError<'optional', 'tuple'> : HasTag extends true ? SpectypesError<'filter', 'tuple'> : HasTag extends true ? SpectypesError<'lazy', 'tuple'> : Specs[Index] : never } ) => Spec< ['tuple'], InferKind, { readonly [Index in keyof Specs]: Specs[Index] extends Spec ? SpecSuccess : never } > = error