/**
 * Function for determining suggested [min](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#minScale) and
 * [max](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#maxScale) scale ranges for an input layer.
 *
 * > [!WARNING]
 * >
 * > **Known Limitations**
 * >
 * > Input [SceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) must meet the following conditions:
 * >   - [SceneLayers](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/) without the `supportsRenderer` and `supportsLayerQuery` capabilities enabled, unless a predefined
 * >   [statistics](https://developers.arcgis.com/javascript/latest/references/core/smartMapping/statistics/types/#SummaryStatisticsResult) object is passed to the `statistics` parameter of the
 * >   method in conjunction with the layer. To check a SceneLayer's capabilities, use the [SceneLayer.getFieldUsageInfo()](https://developers.arcgis.com/javascript/latest/references/core/layers/SceneLayer/#getFieldUsageInfo) method.
 *
 * @since 4.12
 */
import type { ScaleRangeResult, ScaleRangeParameters } from "./types.js";

/**
 * Generates a suggested scale range (i.e. [FeatureLayer.minScale](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#minScale)
 * and [FeatureLayer.maxScale](https://developers.arcgis.com/javascript/latest/references/core/layers/FeatureLayer/#maxScale)) to apply to the input `layer`. These
 * values suggest the best scale range for viewing the input layer.
 *
 * @param parameters - The function parameters.
 * @returns Resolves to an object containing the suggested `min` and `max` scale for the layer.
 * @example
 * scaleRange({
 *   layer: featureLayer,
 *   view: view
 * }).then(function(response){
 *   // apply the suggested scale range to the input layer
 *   featureLayer.minScale = response.minScale;
 *   featureLayer.maxScale = response.maxScale;
 *
 *   view.map.add(featureLayer);
 * });
 */
export default function scaleRange(parameters: ScaleRangeParameters): Promise<ScaleRangeResult>;