declare type TypeSchemaDataType = "String" | "Number" | "Object" | "Array" | "Boolean" | "Any" | RegExp | String[] | String; export interface ISchemaProperty { type: TypeSchemaDataType; format?: keyof FormatCallback; isRequired?: boolean; defaultValue?: any; } export declare type ISchemaProperties = { [P in keyof T]: ISchemaProperty | { type: "Object"; properties: ISchemaProperties; }; }; export interface ISchemaConfig { properties: ISchemaProperties; formatCallbacks?: FormatCallback; dataType?: ISchemaProperties; } interface ISchemaValidate { (data: any): boolean; (data: any, name: string): boolean; (data: any, schema: ISchemaProperties): boolean; (data: any, schema: ISchemaProperties, name: string): boolean; } declare abstract class ASchema { abstract validate: ISchemaValidate; } export declare class Schema extends ASchema { message: string; private schemaConfig; private formatCallbacks; validate: ISchemaValidate; addSchema(name: string, schema: any): void; removeSchema(name: string): void; private doValidate; private checkArrayTypes; private checkType; } export {};