/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */
/**
 * A field defines a form field that will be shown to the user when creating or editing a map entity. Presets define which fields are shown to the user for a particular map entity. The field definition defines whether the field should show as a text box, multiple choice, single-select, etc. It defines what tag-value is set when the field is entered.
 */
export interface Field {
    /**
     * Unique value that identifies this element
     */
    id: string;
    /**
     * They key in a tags object that this field applies to. For nested properties, key can be an array e.g. for tags = `{ foo: { bar: 1 } }` the key is `['foo', 'bar']`
     */
    key: string | string[];
    /**
     * Type of field - defines how the field is displayed to the user.
     */
    type: "text" | "localized" | "number" | "select_one" | "select_multiple" | "date" | "datetime";
    /**
     * Default language label for the form field label
     */
    label?: string;
    /**
     * Field is displayed, but it can't be edited
     */
    readonly?: boolean;
    /**
     * For text fields, display as a single-line or multi-line field
     */
    appearance?: "singleline" | "multiline";
    /**
     * Convert field value into snake_case (replace spaces with underscores and convert to lowercase)
     */
    snake_case?: boolean;
    /**
     * List of options the user can select for single- or multi-select fields
     */
    options?: (string | boolean | number | null | {
        /**
         * Label in default language to display to the user for this option
         */
        label?: string;
        /**
         * Value for tag when this option is selected
         */
        value: string | boolean | number | null;
        [k: string]: unknown;
    })[];
    /**
     * If true, this field will appear in the Add Field list for all presets
     */
    universal?: boolean;
    /**
     * Displayed as a placeholder in an empty text or number field before the user begins typing. Use 'helperText' for important information, because the placeholder is not visible after the user has entered data.
     */
    placeholder?: string;
    /**
     * Additional context about the field, e.g. hints about how to answer the question.
     */
    helperText?: string;
    /**
     * Minimum field value (number, date or datetime fields only). For date or datetime fields, is seconds since unix epoch
     */
    min_value?: number;
    /**
     * Maximum field value (number, date or datetime fields only). For date or datetime fields, is seconds since unix epoch
     */
    max_value?: number;
}
