export declare type SpectypesError = PrettyType<{ readonly [key in `spectypes error: '${X}' can't appear directly inside '${Y}'${Suf}`]: never; }>; export declare type SuccessResult = { readonly tag: 'success'; readonly success: Value; }; export declare type FailureResult = { readonly tag: 'failure'; readonly failure: { readonly value: unknown; readonly errors: ReadonlyArray<{ readonly issue: string; readonly path: ReadonlyArray; }>; }; }; export declare type Result = FailureResult | SuccessResult; export declare type SuccessOf> = R extends SuccessResult ? Success : never; export declare type SpecConfig = { readonly tag: Tag; readonly kind: Kind; }; export declare type Spec = ((value: unknown) => Result) & { readonly config?: SpecConfig; }; export declare type SpecSuccess = SuccessOf>; export declare type SpecTag = Required['config'] extends SpecConfig ? Tag : never; export declare type SpecKind = Required['config'] extends SpecConfig ? Kind : never; export declare type SpecsTags = Specs extends readonly [ infer First, ...infer Rest ] ? First extends Spec ? Rest extends readonly Spec[] ? readonly [...SpecTag, ...SpecsTags] : readonly [] : readonly [] : readonly []; export declare type HasTag = { readonly [Index in keyof SpecTag]: Tags extends SpecTag[Index] ? true : false; }[number]; export declare type PrettyType = Extract<{ [K in keyof V]: V[K]; }, unknown>; export declare type OmitByValue = Omit; export declare type ObjectValue> = PrettyType extends true ? never : SpecSuccess : never; }, never> & OmitByValue<{ readonly [Key in keyof Specs]?: Specs[Key] extends Spec ? HasTag extends true ? SpecSuccess : never : never; }, never | undefined>>; export declare type LiteralBase = string | number | boolean | undefined | null; export declare type InferKind = Specs extends readonly [ infer First, ...infer Rest ] ? First extends Spec ? 'transformer' : Rest extends readonly Spec[] ? InferKind : 'validator' : 'validator'; export declare type SomeSpec = Spec<[''], '', unknown>;