import type EsriFeatureLayer from "@arcgis/core/layers/FeatureLayer";
import type EsriStreamLayer from "@arcgis/core/layers/StreamLayer";
import type { LayerWithSublayers as EsriLayerWithSublayers, SublayerLike as EsriSublayerLike } from "../support/esri.js";
import type { DefinitionEditor } from "./DefinitionEditor.js";
import type { FeatureSet } from "./FeatureSet.js";
import type { Field } from "./Field.js";
import { LayerDefinition } from "./LayerDefinition.js";
import { PopupInfo } from "./PopupInfo.js";
import type { LayerType } from "./_LayerBase.js";
export declare namespace Layer {
    /**
     * Converts an ArcGIS Portal JSON representation of a sublayer to its Esri
     * JavaScript API equivalent.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The sublayer JSON to convert.
     * @param layerType The type of layer that the sublayer belongs to.
     */
    function toEsriApiSublayer(json: Layer, layerType: LayerType): Promise<EsriSublayerLike>;
    /**
     * Applies an ArcGIS Portal JSON representation of a sublayer to its Esri
     * JavaScript API equivalent.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The sublayer JSON to apply.
     * @param sublayer The Sublayer object to apply it to.
     */
    function applyToEsriApiSublayer(json: Layer, sublayer: EsriSublayerLike): Promise<void>;
    /**
     * Applies an ArcGIS Portal JSON layer to an Esri JavaScript API
     * FeatureLayer.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The layer JSON to apply.
     * @param layer The FeatureLayer object to apply it to.
     */
    function applyToEsriApiLayer(json: Layer, layer: EsriFeatureLayer | EsriStreamLayer): Promise<void>;
    /**
     * Converts an Esri JavaScript API Sublayer object to its ArcGIS Portal JSON
     * representation.
     *
     * @deprecated Use "json/*" modules instead.
     * @param sublayer The Sublayer object to convert.
     * @param layer The sublayer's parent layer.
     */
    function fromEsriApiSublayer(sublayer: EsriSublayerLike, layer?: EsriLayerWithSublayers | undefined | null): Layer;
}
/**
 * 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/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface Layer {
    /**
     * Default visibility of the layers in the map service.
     */
    defaultVisibility?: boolean;
    /**
     * An object that provides interactive filters.
     */
    definitionEditor?: DefinitionEditor;
    /**
     * A featureSet object containing the geometry and attributes of the
     * features in the layer. Used with feature collections only.
     */
    featureSet?: FeatureSet;
    /**
     * Information about each field in a layer.
     */
    field?: Field;
    /**
     * A number indicating the index position of the layer in the WMS or map
     * service.
     */
    id?: string | number;
    /**
     * An array of LayerDefinition objects defining the attribute schema and
     * drawing information for the layer.
     */
    layerDefinition?: LayerDefinition;
    /**
     * 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;
    /**
     * Represents the maximum scale at which the layer definition will be
     * applied.
     */
    maxScale?: number;
    /**
     * Represents the minimum scale at which the layer definition will be
     * applied.
     */
    minScale?: number;
    /**
     * (Deprecated, use title instead.) A name for the layer.
     */
    name?: string;
    /**
     * 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;
    /**
     * 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;
    /**
     * A popupInfo object defining the pop-up window content for the layer.
     */
    popupInfo?: PopupInfo;
    /**
     * Indicates whether to allow map authors the ability to control what layers
     * should be shown in a client's legend.
     */
    showLegend?: boolean;
    /**
     * If the layer is a parent layer, it will have one or more sub layers
     * included in an array.
     */
    subLayerIds?: number[];
    /**
     * A user-friendly title for the layer that can be used in a table of
     * contents.
     */
    title?: string;
    /**
     * Visibility of the layer.
     */
    visibility?: boolean;
}
