/**
 * The formal definition of a data type which is used by an {@link Field}.
 *
 * @public
 */
export default class DataType {
    /**
     * Return a {@link DataType} instance for use with an {@link @Enum}.
     *
     * @public
     * @static
     * @param {Function} enumerationType - A class that extends {@link Enum}
     * @param description - The description
     * @returns {DataType}
     */
    public static forEnum(enumerationType: Function, description: any): DataType;
    /**
     * References a string.
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get STRING(): DataType;
    /**
     * References a number.
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get NUMBER(): DataType;
    /**
     * References a boolean value.
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get BOOLEAN(): DataType;
    /**
     * References an object (serialized as JSON).
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get OBJECT(): DataType;
    /**
     * References an array.
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get ARRAY(): DataType;
    /**
     * References a {@link Decimal} instance.
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get DECIMAL(): DataType;
    /**
     * References a {@link Day} instance.
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get DAY(): DataType;
    /**
     * References a {@link Timestamp} instance.
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get TIMESTAMP(): DataType;
    /**
     * References an object whose internal properties are not important (for
     * serialization and deserialization purposes).
     *
     * @public
     * @static
     * @returns {DataType}
     */
    public static get AD_HOC(): DataType;
    /**
     * @param {string} description
     * @param {Function=} enumerationType
     * @param {Function=} reviver
     * @param {Function=} validator
     * @param {Function=} builder
     */
    constructor(description: string, enumerationType?: Function | undefined, reviver?: Function | undefined, validator?: Function | undefined, builder?: Function | undefined);
    /**
     * A function that converts data into the desired format.
     *
     * @public
     * @param {*} data
     * @returns {*}
     */
    public convert(data: any): any;
    /**
     * Description of the data type.
     *
     * @public
     * @returns {string}
     */
    public get description(): string;
    /**
     * The {@Enum} type, if applicable.
     *
     * @public
     * @returns {Function|null}
     */
    public get enumerationType(): Function | null;
    /**
     * A function which "revives" a value after serialization to JSON.
     *
     * @public
     * @returns {Function}
     */
    public get reviver(): Function;
    /**
     * A function validates data, returning true or false.
     *
     * @public
     * @returns {Function}
     */
    public get validator(): Function;
    /**
     * Returns a string representation.
     *
     * @public
     * @returns {string}
     */
    public toString(): string;
    #private;
}
