import type { PolygonSymbol3D } from "./PolygonSymbol3D.js";
import type { RendererBase } from "./Renderer.js";
import type { SimpleFillSymbol } from "./SimpleFillSymbol.js";
import type { Symbol } from "./Symbol.js";
import type { Symbol3D } from "./Symbol3D.js";
/**
 * The classification method for ClassBreaksRenderer.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type ClassificationMethod = "esriClassifyNaturalBreaks" | "esriClassifyEqualInterval" | "esriClassifyQuantile" | "esriClassifyStandardDeviation" | "esriClassifyGeometricalInterval" | "esriClassifyManual";
/**
 * The normalization type for ClassBreaksRenderer.
 *
 * @deprecated Use "json/*" modules instead.
 */
export type NormalizationType = "esriNormalizeByField" | "esriNormalizeByLog" | "esriNormalizeByPercentOfTotal";
/**
 * A class breaks renderer symbolizes based on the value of some numeric
 * attribute. The classBreakInfo define the values at which the symbology
 * changes.
 *
 * If the Normalization Type property is defined than the class breaks contain a
 * normalized min/max value instead of the actual value. The data value,
 * obtained from the field property, is normalized using one of the following
 * functions before it is compared with the class breaks.
 *
 * 1. Field - Divide the data value using the attribute value of the field
 *    specified by the normalizationField property.
 * 2. Log - Compute the base 10 logarithm of the data value. This can be a useful
 *    approach for some data distributions because it reduced the influence of
 *    very large data values.
 * 3. Percent-of-total - Divide the data value by the sum of all data values then
 *    multiply by 100. Use the normalizationTotal property to determine the
 *    total value.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/classBreaks_renderer/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/classBreaksRenderer/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface ClassBreaksRenderer extends RendererBase {
    /**
     * Supported only for polygon features. It is a SimpleFillSymbol.
     */
    backgroundFillSymbol?: SimpleFillSymbol | PolygonSymbol3D;
    /**
     * Array of objects with value, label, and description.
     */
    classBreakInfos: ClassBreakInfo[];
    /**
     * Determines the classification method that was used to generate class
     * breaks. See {@link ClassificationMethod}.
     */
    classificationMethod: ClassificationMethod;
    /**
     * Default string for the default symbol used to draw unspecified values.
     */
    defaultLabel?: string;
    /**
     * Symbol used when a value cannot be classified.
     */
    defaultSymbol?: Symbol | Symbol3D;
    /**
     * String value specifying the numeric field used in generating the class
     * breaks.
     */
    field: string;
    /**
     * The minimum numeric data value needed to begin class breaks.
     */
    minValue?: number;
    /**
     * Used when normalizationType is NormalizationType.BY_FIELD.
     */
    normalizationField?: string;
    /**
     * Used when normalizationType is NormalizationType.BY_FIELD.
     */
    normalizationTotal?: number;
    /**
     * One of the NormalizationType constants. See {@link NormalizationType}.
     */
    normalizationType?: NormalizationType;
    /**
     * @inheritDoc
     */
    type: "classBreaks";
}
/**
 * The classBreaksInfo object provides information about the class breaks
 * associated with the renderer.
 *
 * See
 * {@link https://developers.arcgis.com/web-map-specification/objects/classBreakInfo/}
 * {@link https://developers.arcgis.com/web-scene-specification/objects/classBreakInfo/}.
 *
 * @deprecated Use "json/*" modules instead.
 */
export interface ClassBreakInfo {
    /**
     * A numeric value used to specify the maximum value for a break.
     */
    classMaxValue: number;
    /**
     * A numeric value used to specify discontinuous class breaks. If this value
     * is null or is missing, the map server will calculate the minimum value
     * based on the preceding class' maximum value.
     */
    classMinValue?: number;
    /**
     * String value used to describe the drawn symbol.
     */
    description?: string;
    /**
     * String value used to label the drawn symbol.
     */
    label?: string;
    /**
     * An object used to display the value.
     */
    symbol: Symbol | Symbol3D;
}
