import { MixedType, schemaSpecKey } from './MixedType';
import { PlainObject, SchemaDeclaration, CheckResult, ErrorMessageType } from './types';
import { ObjectTypeLocale } from './locales';
export declare class ObjectType<DataType = any, E = ErrorMessageType> extends MixedType<PlainObject, DataType, E, ObjectTypeLocale> {
    [schemaSpecKey]: SchemaDeclaration<DataType, E>;
    constructor(errorMessage?: E | string);
    check(value?: PlainObject, data?: DataType, fieldName?: string | string[]): CheckResult<string | E, DataType>;
    checkAsync(value?: PlainObject, data?: DataType, fieldName?: string | string[]): Promise<CheckResult<string | E, DataType>>;
    /**
     * @example
     * ObjectType().shape({
     *  name: StringType(),
     *  age: NumberType()
     * })
     */
    shape(fields: SchemaDeclaration<DataType, E>): this;
}
export default function getObjectType<DataType = any, E = string>(errorMessage?: E): ObjectType<DataType, E>;
