import type { LayerDefinitionJson } from "./LayerDefinitionJson";
import type { OperationalLayerJsonBase } from "./OperationalLayerJson";
import type { PopupInfoJson } from "./PopupInfoJson";
/**
 * Feature layers can be created by referencing a sublayer from either a map
 * service or a feature service or by specifying a feature collection object.
 * Use a map service if you just want to retrieve geometries and attributes from
 * the server and symbolize them yourself. Use a feature service if you want to
 * take advantage of symbols from the service's source map document. Also, use a
 * feature service if you plan on doing editing with the feature sublayer.
 * Feature layers honor any feature templates configured in the source map
 * document. Feature collection objects are used to create a feature sublayer
 * based on the supplied definition.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/subtypeLayer/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/subtypeLayer/}.
 */
export interface SubtypeSublayerJson extends OperationalLayerJsonBase {
    /**
     * A sequence of custom parameters appended to the URL of all requests
     * related to supporting ArcGIS sublayer types.
     */
    customParameters?: Record<string, unknown> | null;
    /**
     * Indicates whether to allow a client to ignore popups defined by the
     * service item.
     */
    disablePopup?: boolean | null;
    /**
     * Indicates whether a client should allow feature editing for this layer.
     * Applicable only if the layer has editing capability.
     */
    enableEditing?: boolean | null;
    /**
     * The type of sublayer.
     */
    layerType: "ArcGISFeatureLayer";
    /**
     * A PopupInfo object defining the content of pop-up windows when you click
     * or query a feature.
     */
    popupInfo?: PopupInfoJson | null;
    /**
     * Indicates whether to display labels for this sublayer. If true, labels
     * will appear as defined in the labelingInfo property.
     */
    showLabels?: boolean | null;
    /**
     * The feature subtype code identifying the sublayer. Used with
     * SubtypeGroupLayers.
     */
    subtypeCode?: string | number | null;
    /**
     * A layerDefinition object defining the attribute schema and drawing
     * information for the layer.
     */
    layerDefinition?: LayerDefinitionJson | null;
}
