import { SchemaDeclaration, SchemaCheckResult, CheckResult, PlainObject } from './types'; interface CheckOptions { /** * Check for nested object */ nestedObject?: boolean; } export declare class Schema { readonly $spec: SchemaDeclaration; private data; private checkedFields; private checkResult; constructor(schema: SchemaDeclaration); private getFieldType; private setFieldCheckResult; private setSchemaOptionsForAllType; /** * Get the check result of the schema * @returns CheckResult */ getCheckResult(path?: string, result?: SchemaCheckResult): CheckResult; /** * Get the error messages of the schema */ getErrorMessages(path?: string, result?: SchemaCheckResult): (string | ErrorMsgType)[]; /** * Get all the keys of the schema */ getKeys(): string[]; /** * Get the schema specification */ getSchemaSpec(): SchemaDeclaration; _checkForField(fieldName: T, data: DataType, options?: CheckOptions): CheckResult; checkForField(fieldName: T, data: DataType, options?: CheckOptions): CheckResult; checkForFieldAsync(fieldName: T, data: DataType, options?: CheckOptions): Promise>; check(data: DataType): SchemaCheckResult; checkAsync(data: DataType): Promise>; } export declare function SchemaModel(o: SchemaDeclaration): Schema; export declare namespace SchemaModel { var combine: (...specs: Schema[]) => Schema; } export {};