import type EsriCSVLayer from "@arcgis/core/layers/CSVLayer";
import type EsriFeatureLayer from "@arcgis/core/layers/FeatureLayer";
import type EsriSceneLayer from "@arcgis/core/layers/SceneLayer";
import type { DrawingInfo } from "./DrawingInfo.js";
import type { PopupInfo } from "./PopupInfo.js";
export declare namespace FeatureReduction {
    /**
     * Applies an ArcGIS Portal JSON representation of a layer definition to a
     * Layer object.
     *
     * @deprecated Use "json/*" modules instead.
     * @param json The featureReduction json to apply.
     * @param layer The layer to apply the json to.
     */
    function applyToEsriApiLayer(json: FeatureReduction, layer: EsriFeatureLayer | EsriCSVLayer | EsriSceneLayer): Promise<void>;
    /**
     * Creates ArcGIS Portal layer definition JSON from a Layer object.
     *
     * @deprecated Use "json/*" modules instead.
     * @param layer The Layer object to convert.
     */
    function fromEsriApiLayer(layer: EsriFeatureLayer | EsriCSVLayer | EsriSceneLayer): FeatureReduction | undefined;
}
/**
 * Feature reductions declutter the screen by hiding features that would
 * otherwise intersect with other features on screen.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type FeatureReduction = FeatureReductionCluster | FeatureReductionSelection;
/**
 * Feature reduction of type cluster declutters the screen by hiding features
 * that would otherwise intersect with other features on screen. The default
 * clusterRadius for the JavaScript API is 60.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface FeatureReductionCluster {
    /**
     * The type of feature reduction.
     */
    type: "cluster";
    /**
     * Size of the largest cluster, in screen units (points).
     */
    clusterMaxSize?: number;
    /**
     * Size of the smallest cluster, in screen units (points).
     */
    clusterMinSize?: number;
    /**
     * Strength of clustering, in screen units (points).
     */
    clusterRadius?: number;
    /**
     * Indicates whether to ignore popups defined by the service item.
     */
    disablePopup?: boolean;
    /**
     * Contains labeling information for the cluster.
     */
    drawingInfo?: DrawingInfo;
    /**
     * Defines the look and feel of popup windows when a user clicks or queries
     * a feature.
     */
    popupInfo?: PopupInfo;
    /**
     * Defines whether labels should be shown in the clusters.
     */
    showLabels?: boolean;
}
/**
 * Feature reduction of type selection declutters the screen by hiding features
 * that would otherwise intersect with other features on screen. The default
 * behavior of this feature reduction type is to select features by depth order,
 * i.e. hide all features that would otherwise be overlapped by at least one
 * other feature which is closer to the viewer.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface FeatureReductionSelection {
    /**
     * The type of feature reduction.
     */
    type: "selection";
}
