import { DataTypeFunction, DataTypeValidateType } from './DataType';
import { ComplexDataType } from './ComplexDataType';
import { AttributesMap, AttributesMapGenerator, AttributeBase, AttributesSetupMap } from '../attribute/Attribute';
export declare type ObjectDataTypeSetupType = {
    name: string;
    description: string;
    attributes: AttributesSetupMap | AttributesMapGenerator;
};
export declare class ObjectDataType extends ComplexDataType {
    name: string;
    description: string;
    attributes: AttributesMap;
    private _attributesMap;
    private _attributes;
    constructor(setup?: ObjectDataTypeSetupType);
    getAttributes(): AttributesMap;
    _processAttribute(rawAttribute: AttributeBase, attributeName: string): AttributeBase;
    _processAttributeMap(): AttributesMap;
    validate: DataTypeValidateType;
    toString(): string;
}
export declare const isObjectDataType: (obj: unknown) => obj is ObjectDataType;
export declare const buildObjectDataType: (obj: {
    attributes: AttributesSetupMap | AttributesMapGenerator;
}) => DataTypeFunction;
