import { EntryValue } from "./i-user-input-provider";
export type ValidationResult = {
    isValid: boolean;
    /** Message for user describing the requirements (*best with syntax starting with "must be..."*)
     *
     * eg: `whyInvalid = "Must be 1-50 alphanumerics starting with a letter"`
      */
    reason?: string;
};
export interface IEntryValidator<T extends EntryValue> {
    isValid: (candidate: T | undefined) => ValidationResult;
}
export interface IStringEntryValidator extends IEntryValidator<string> {
    isValid: (candidate: string | undefined) => ValidationResult;
}
export interface INumberEntryValidator extends IEntryValidator<number> {
    isValid: (candidate: number | undefined) => ValidationResult;
}
export interface IBooleanEntryValidator extends IEntryValidator<boolean> {
    isValid: (candidate: boolean | undefined) => ValidationResult;
}
