import type { LayerDefinitionJson } from "./LayerDefinitionJson.js";
import type { OperationalLayerJsonBase } from "./OperationalLayerJson.js";
import type { PopupInfoJson } from "./PopupInfoJson.js";
/**
 * The CSV layer type references a CSV or TXT file from a publicly-accessible
 * web server. It then dynamically loads into the map at run time. The CSV layer
 * will maintain a reference to the CSV resource.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/csvLayer/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/csvLayer/}.
 */
export interface CSVLayerJson extends OperationalLayerJsonBase {
    /**
     * A string defining the character used to separate columns in a CSV file.
     * You can set this property using any of the following: ",", " ", ";", "|",
     * "\t". Used with CSV layers only.
     */
    columnDelimiter?: string | null;
    /**
     * Indicates whether to allow a client to ignore popups defined by the
     * service item.
     */
    disablePopup?: boolean | null;
    /**
     * Optional string containing the item ID of the service if it's registered
     * on ArcGIS Online or your organization's portal.
     */
    itemId?: string | null;
    /**
     * A layerDefinition object defining the attribute schema and drawing
     * information for the layer.
     */
    layerDefinition?: LayerDefinitionJson | null;
    /**
     * The type of layer.
     */
    layerType: "CSV";
    /**
     * A LocationInfo object defining how location information will be retrieved
     * from a CSV file. Used with CSV layers only.
     */
    locationInfo?: LocationInfoJson | null;
    /**
     * A PopupInfo object defining the content of pop-up windows when you click
     * or query a feature.
     */
    popupInfo?: PopupInfoJson | null;
    /**
     * Apply perspective scaling to screen-size symbols.
     */
    screenSizePerspective?: boolean | null;
    /**
     * Indicates whether to display labels for this layer. If true, labels will
     * appear as defined in the labelingInfo property.
     */
    showLabels?: boolean | null;
    /**
     * The URL to the CSV file that backs the layer.
     */
    url?: string | null;
}
/**
 * Defines how location information will be retrieved from a CSV file referenced
 * through the web.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/locationInfo/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/locationInfo/}.
 */
export interface LocationInfoJson {
    /**
     * A string defining the field name that holds the latitude (Y) coordinate.
     */
    latitudeFieldName?: string | null;
    /**
     * A string whose value is always "coordinates".
     */
    locationType?: string | null;
    /**
     * A string defining the field name that holds the longitude (X) coordinate.
     */
    longitudeFieldName?: string | null;
}
