import {ValidationFailure} from './error' export interface Validator { cast(value: unknown): T | ValidationFailure validate(value: unknown): ValidationFailure | undefined phantom(): S } export type GetCastType = V extends Validator ? T : V extends undefined ? undefined : never export type GetSrcType = V extends Validator ? S : V extends undefined ? undefined : never