import type { TypeError } from '@traversable/registry'; import type * as t from './schema.js'; export type Target = S extends Guard ? T : S extends Predicate ? T : never; export type $ = [keyof S] extends [never] ? unknown : S; export interface Predicate { (value: T): boolean; (value?: T): boolean; } export type InvalidItem = never | TypeError<'A required element cannot follow an optional element.'>; export type Guard = { (u: unknown): u is T; }; export interface Typeguard { (u: unknown): u is this['_type']; readonly _type: T; } export type { TypePredicate_ as TypePredicate }; type TypePredicate_ = never | TypePredicate<[I, O]>; interface TypePredicate { (u: T[0]): u is T[1]; (u: T[1]): boolean; } export type ValidateTuple, V = ValidateOptionals<[...T], LowerBound>> = [V] extends [['ok']] ? T : V; export type ValidateOptionals, Acc extends unknown[] = []> = LowerBound extends S[number] ? S extends [infer H, ...infer T] ? LowerBound extends H ? T[number] extends LowerBound ? ['ok'] : [...Acc, H, ...{ [Ix in keyof T]: T[Ix] extends LowerBound ? T[Ix] : InvalidItem; }] : ValidateOptionals : ['ok'] : ['ok']; //# sourceMappingURL=types.d.ts.map