import type { TextFieldType } from '@material/web/textfield/outlined-text-field.js';
import type { DataProperty } from './DataProperty.js';
export type DataPropertyType = 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'time' | 'binary';
export declare const DataPropertyTypes: DataPropertyType[];
export declare enum DataPropertyList {
    string = "string",
    number = "number",
    boolean = "boolean",
    date = "date",
    datetime = "datetime",
    time = "time",
    file = "binary"
}
/**
 * The data property "attributes".
 */
export type DataPropertyAttribute = 'required' | 'multiple' | 'primary' | 'index' | 'readOnly' | 'writeOnly' | 'deprecated';
export declare const DataPropertyAttributes: DataPropertyAttribute[];
/**
 * The data attribute "attributes".
 */
export type DataAttributeAttribute = 'required' | 'multiple';
export declare const DataAttributeAttributes: DataAttributeAttribute[];
/**
 * Note, OAS supports the `integer` data type and not format.
 * We need to account for that.
 *
 * - `float` - 32-bit floating point numbers
 * - `double` - 64-bit floating point numbers
 * - `int32` - Signed 32 bit number
 * - `int64` - Signed 64 bit number (OAS `long`)
 */
export type NumberFormat = 'float' | 'double' | 'int32' | 'int64';
export declare const NumberFormats: NumberFormat[];
/**
 * - `hex` - Hex-encoded binary data
 * - `base64` - Base64-encoded binary data
 */
export type BinaryFormat = 'hex' | 'base64';
export declare const BinaryFormats: BinaryFormat[];
export type DataPropertyFormat = NumberFormat | BinaryFormat;
export declare function getFormatInfo(format: DataPropertyFormat): {
    label: string;
    help: string;
};
export interface DataPropertyInputConfig {
    /**
     * The input's type
     */
    type: TextFieldType;
    /**
     * The `pattern` to set on the input.
     */
    pattern?: string;
    /**
     * The `min` to set on the input.
     */
    min?: number;
    /**
     * The `max` to set on the input.
     */
    max?: number;
    /**
     * The `step` to set on the input.
     */
    step?: number;
    /**
     * The `supportingText` to set on the Material Text Field.
     */
    help?: string;
}
/**
 * Gathers information about the HTML input's requirements for the given DataProperty.
 *
 * @param model The data property model to gather HTML input's configuration for.
 * @returns Input attributes to set.
 */
export declare function getPropertyInputOptions(model: DataProperty): DataPropertyInputConfig;
//# sourceMappingURL=DataFormat.d.ts.map