import type { SublayerLike } from "../support/esri.js";
import type { DefinitionEditorJson } from "./DefinitionEditorJson.js";
import type { FeatureSetJson } from "./FeatureSetJson.js";
import type { FieldJson } from "./FieldJson.js";
import type { LayerDefinitionJson } from "./LayerDefinitionJson.js";
import { type LayerJsonType } from "./LayerJson.js";
import type { PopupInfoJson } from "./PopupInfoJson.js";
/**
 * This object allows overrides on pop-up content and drawing behavior for
 * individual layers of a web service. When used with a feature collection, this
 * object also contains geographic features and their attributes.
 *
 * See {@link https://developers.arcgis.com/web-map-specification/objects/layer/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/layer/}.
 */
export interface SublayerJson {
    /**
     * Default visibility of the layers in the map service.
     */
    defaultVisibility?: boolean | null;
    /**
     * An object that provides interactive filters.
     */
    definitionEditor?: DefinitionEditorJson | null;
    /**
     * Indicates whether to allow a client to ignore the popups defined on the
     * layer. The popupInfo object could be saved in the map or item.
     */
    disablePopup?: boolean | null;
    /**
     * A featureSet object containing the geometry and attributes of the
     * features in the layer. Used with feature collections only.
     */
    featureSet?: FeatureSetJson | null;
    /**
     * Information about each field in a layer.
     *
     * NOTE: This is how it's typed and documented in the web map spec, but is
     * almost certainly total nonsense.
     */
    field?: FieldJson | null;
    /**
     * A number indicating the index position of the layer in the WMS or map
     * service.
     */
    id?: string | number | null;
    /**
     * An array of LayerDefinition objects defining the attribute schema and
     * drawing information for the layer.
     */
    layerDefinition?: LayerDefinitionJson | null;
    /**
     * A URL to a service that should be used for all queries against the layer.
     * Used with hosted tiled map services on ArcGIS Online when there is an
     * associated feature service that allows for queries.
     */
    layerUrl?: string | null;
    /**
     * Represents the maximum scale at which the layer definition will be
     * applied.
     */
    maxScale?: number | null;
    /**
     * Represents the minimum scale at which the layer definition will be
     * applied.
     */
    minScale?: number | null;
    /**
     * (Deprecated, use title instead.) A name for the layer.
     */
    name?: string | null;
    /**
     * Iterates within a feature set. Number objectId value is incremented +1
     * based on last Object ID defined for the feature in a feature set.
     */
    nextObjectId?: number | null;
    /**
     * If working with nested layers, this is the numeric value indicating the
     * layer id of the next layer (parent) directly above the current referenced
     * layer.
     */
    parentLayerId?: number | null;
    /**
     * A popupInfo object defining the pop-up window content for the layer.
     */
    popupInfo?: PopupInfoJson | null;
    /**
     * Indicates whether to allow map authors the ability to control what layers
     * should be shown in a client's legend.
     */
    showLegend?: boolean | null;
    /**
     * If the layer is a parent layer, it will have one or more sub layers
     * included in an array.
     */
    subLayerIds?: number[] | null;
    /**
     * A user-friendly title for the layer that can be used in a table of
     * contents.
     */
    title?: string | null;
    /**
     * Visibility of the sublayer.
     */
    visible?: boolean;
}
/**
 * Creates an ArcGIS JS API Sublayer from the given sublayer JSON.
 *
 * @param json The JSON to convert.
 * @param layerType The type of the parent layer.
 */
export declare function jsonToSublayer(json: SublayerJson, layerType: LayerJsonType): Promise<SublayerLike>;
/**
 * Updates an ArcGIS JS API sublayer from the given sublayer JSON.
 *
 * @param json The JSON to apply.
 * @param sublayer The sublayer to update.
 */
export declare function applyJsonToSublayer(json: SublayerJson, sublayer: SublayerLike): Promise<void>;
/**
 * Serializes an ArcGIS JS API Layer to JSON.
 *
 * @param sublayer The layer to serialize.
 */
export declare function sublayerToJson(sublayer: SublayerLike): SublayerJson;
