import type { DomainJson } from "./DomainJson.js";
/**
 * 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/}.
 */
export interface FieldJson {
    /**
     * The field alias (human-readable name).
     */
    alias?: string | null;
    /**
     * A domain object that provides the attribute domain information for the
     * field, if a domain exists.
     */
    domain?: DomainJson | null;
    /**
     * Whether this field is editable.
     */
    editable?: boolean | null;
    /**
     * A Boolean defining whether or not the field is an exact match.
     */
    exactMatch?: boolean | null;
    /**
     * A number defining how many characters are allowed in a string field.
     */
    length?: number | null;
    /**
     * A string defining the field name.
     */
    name: string;
    /**
     * Whether this field can have a null value.
     */
    nullable?: boolean | null;
    /**
     * Type of the Field. See {@link FieldJsonType}.
     */
    type?: FieldJsonType | null;
    /**
     * <not in spec>.
     */
    visible?: boolean | null;
}
/**
 * The type of the Field.
 */
export type FieldJsonType = "esriFieldTypeBigInteger" | "esriFieldTypeBlob" | "esriFieldTypeDate" | "esriFieldTypeDateOnly" | "esriFieldTypeDouble" | "esriFieldTypeGeometry" | "esriFieldTypeGlobalID" | "esriFieldTypeGUID" | "esriFieldTypeInteger" | "esriFieldTypeOID" | "esriFieldTypeRaster" | "esriFieldTypeSingle" | "esriFieldTypeSmallInteger" | "esriFieldTypeString" | "esriFieldTypeTimeOnly" | "esriFieldTypeTimestampOffset" | "esriFieldTypeXML";
