import EsriApiField from "@arcgis/core/layers/support/Field";
import type { FieldType as EsriApiFieldType } from "../support/esri.js";
import { Domain } from "./Domain.js";
export declare namespace Field {
    /**
     * Converts an ArcGIS Portal JSON representation of a Field to its Esri
     * JavaScript API representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param fieldJson The field JSON to convert.
     */
    function toEsriApiField(fieldJson: Field): EsriApiField;
    /**
     * Applies an ArcGIS Portal JSON representation of a Field to its Esri
     * JavaScript API representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param fieldJson The field JSON to apply.
     * @param field The field object to apply the JSON to.
     */
    function applyToEsriApiField(fieldJson: Field, field: EsriApiField): void;
    /**
     * Converts a Field object in the Esri JavaScript API to its ArcGIS Portal
     * JSON representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param field The field to convert.
     */
    function fromEsriApiField(field: EsriApiField): Field;
}
/**
 * Contains information about an attribute field. This field could come from a
 * feature collection or a single layer in a map service. Used in
 * layerDefinition.
 *
 * See {@link https://developers.arcgis.com/web-map-specification/objects/field/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/field/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface Field {
    /**
     * The field alias (human-readable name).
     */
    alias?: string;
    /**
     * A domain object that provides the attribute domain information for the
     * field, if a domain exists.
     */
    domain?: Domain;
    /**
     * Whether this field is editable.
     */
    editable?: boolean;
    /**
     * A Boolean defining whether or not the field is an exact match.
     */
    exactMatch?: boolean;
    /**
     * A number defining how many characters are allowed in a string field.
     */
    length?: number;
    /**
     * A string defining the field name.
     */
    name?: string;
    /**
     * Whether this field can have a null value.
     */
    nullable?: boolean;
    /**
     * Type of the Field. See {@link portal/Field!FieldType}.
     */
    type?: FieldType;
}
/**
 * The type of the Field.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type FieldType = "esriFieldTypeSmallInteger" | "esriFieldTypeBigInteger" | "esriFieldTypeInteger" | "esriFieldTypeSingle" | "esriFieldTypeDouble" | "esriFieldTypeString" | "esriFieldTypeDate" | "esriFieldTypeDateOnly" | "esriFieldTypeTimeOnly" | "esriFieldTypeTimestampOffset" | "esriFieldTypeOID" | "esriFieldTypeGeometry" | "esriFieldTypeBlob" | "esriFieldTypeRaster" | "esriFieldTypeGUID" | "esriFieldTypeGlobalID" | "esriFieldTypeXML";
export declare namespace FieldType {
    /**
     * Converts from field type constants used in the Esri JavaScript API to
     * their ArcGIS Portal equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param type The ArcGIS JavaScript API field type constant.
     */
    function fromEsriApiFieldType(type: string): FieldType;
    /**
     * Converts from ArcGIS Portal field type constants to their Esri JavaScript
     * API equivalents.
     *
     * @deprecated Use "json/*" modules instead.
     * @param type The Portal JSON field type constant.
     */
    function toEsriApiFieldType(type: string): EsriApiFieldType;
}
