export type SchemaType = "string" | "number" | "boolean" | "float" | "email" | "uuid" | "Date";
export type SchemaOptions = {
    toTitleCase?: boolean;
    toUpperCase?: boolean;
    toLowerCase?: boolean;
    isEmail?: boolean;
    includes?: Array<any>;
    checkPattern?: RegExp;
    isLength?: number;
    minLength?: number;
    maxLength?: number;
    minimunValue?: number;
    maximunValue?: number;
};
export type OptionsForType<T extends SchemaType> = T extends "string" ? {
    toTitleCase?: boolean;
    toUpperCase?: boolean;
    toLowerCase?: boolean;
    isEmail?: boolean;
    includes?: any[];
    checkPattern?: RegExp;
    isLength?: number;
    minLength?: number;
    maxLength?: number;
} : T extends "number" | "float" ? {
    minimunValue?: number;
    maximunValue?: number;
} : {};
export interface Schema {
    [key: string]: {
        required: boolean;
        type: SchemaType;
        value?: any;
        options?: SchemaOptions;
    };
}
export type SchemaValues<T extends Schema> = {
    [k in keyof T]: T[k]["value"];
};
