/**
 * This object contains helper methods for generating data-driven univariate visualizations using both continuous
 * color and continuous size based on a single field value or expression from features in a [Layer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html).
 * The [createContinuousRenderer()](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-univariateColorSize.html#createContinuousRenderer) method generates a
 * [Renderer](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-Renderer.html) object that may be applied directly to a supported layer. This
 * renderer contains a continuous color and size ramp with optimal colors based on the view's background
 * and mapped to specific break values based on the statistics of the indicated field or expression.
 *
 * Alternately, you can use the [createVisualVariables()](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-univariateColorSize.html#createVisualVariables) method to
 * generate a [color](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-ColorVariable.html)
 * and a [size visual variable](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-SizeVariable.html)
 * with default stops and colors that are optimally chosen based on the statistics of the indicated field.
 *
 * Since thematic size
 * may be difficult to interpret on its own in 3D extrusions, adding a color ramp representing the same
 * data helps effectively communicate the story of the visualization so it's more easily understood by the audience.
 *
 * > [!WARNING]
 * >
 * > **Known Limitations**
 * >
 * > Currently 3D symbols can only be generated for layers with a `point` geometry type.
 * > [SceneLayers](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-SceneLayer.html) with `mesh` [SceneLayer#geometryType](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-SceneLayer.html#geometryType) or [SceneLayers](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-SceneLayer.html) without the `supportsRenderer` and `supportsLayerQuery` capabilities enabled are not supported unless a predefined [statistics](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-statistics-types.html#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/api-reference/esri-layers-SceneLayer.html#getFieldUsageInfo) method.
 * > You cannot generate renderers and visual variables using SQL expressions for client-side [FeatureLayers](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html)
 * > in a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).
 *
 * @since 4.2
 * @see [Styles and data visualization](https://developers.arcgis.com/javascript/latest/visualization/)
 */
import type FeatureFilter from "../../layers/support/FeatureFilter.js";
import type ClassBreaksRenderer from "../../renderers/ClassBreaksRenderer.js";
import type AuthoringInfo from "../../renderers/support/AuthoringInfo.js";
import type ColorVariable from "../../renderers/visualVariables/ColorVariable.js";
import type SizeVariable from "../../renderers/visualVariables/SizeVariable.js";
import type { MapViewOrSceneView } from "../../views/MapViewOrSceneView.js";
import type { AbortOptions } from "../../core/promiseUtils.js";
import type { VisualVariableLegendOptions } from "../../renderers/types.js";
import type { UnivariateSymbolStyle, UnivariateTheme } from "../../renderers/support/types.js";
import type { SupportedLayer } from "../types.js";
import type { SummaryStatisticsResult } from "../statistics/types.js";
import type { BasemapTheme, ColorScheme, SizeScheme } from "../symbology/types.js";
import type { SymbolUnion } from "../../symbols/types.js";

/**
 * This method generates color and size visual variables, both based on the same given field or expression.
 * These visual variables are generated with default stops that are optimally chosen based on the statistics
 * queried for the indicated field or expression and colors based on the view's background.
 *
 * There are two different ways this method may be called. The most common case is by
 * providing a `layer`, `view`, and `field`. This is the scenario where
 * the statistics of the data aren't well known and the user doesn't know what colors
 * to use. You can optionally use a `valueExpression` instead of a field to visualize
 * features based on a numeric value returned from a script executed at runtime.
 *
 * The other options are provided for convenience for more involved custom visualization authoring
 * applications. For example, if you already generated statistics in another operation, you
 * can pass the object in the `statistics` parameter to avoid making an extra call to the server.
 * You can also provide a `colorScheme` and/or a `sizeScheme` if you don't want one picked for you.
 * In this case the `theme` option would be ignored.
 *
 * The resulting array of visual variables will contain one color visual variable, and one or two size visual variables
 * depending on the value of the `sizeOptions.axis` parameter.
 *
 * @param parameters - Input parameters for generating color and size visual variables based on data
 * returned from a given field or expression.
 * @returns Resolves to an instance of [VisualVariablesResult](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-univariateColorSize.html#VisualVariablesResult).
 * @example
 * const layer = new FeatureLayer({
 *   url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/counties_politics_poverty/FeatureServer/0"
 * });
 *
 * // color/size univariate visualization based on field and normalization field
 * const parameters = {
 *   layer: layer,
 *   view: view,
 *   field: "POP_POVERTY",
 *   normalizationField: "TOTPOP_CY",
 *   theme: "above"
 * };
 *
 * // when the promise resolves, apply the visual variables to the renderer
 * colorAndSizeRendererCreator.createVisualVariables(parameters)
 *   .then(function(response){
 *     const renderer = layer.renderer.clone();
 *     renderer.visualVariables = [ response.color.visualVariable, ...response.size.visualVariables ];
 *     layer.renderer = renderer;
 *   });
 * @example
 * const layer = new FeatureLayer({
 *   url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/counties_politics_poverty/FeatureServer/0"
 * });
 *
 * // visualization based off an Arcade expression
 * const params = {
 *   layer: layer,
 *   view: view,
 *   valueExpression: "($feature.POP_POVERTY / $feature.TOTPOP_CY) * 100",
 *   sqlExpression: "( POP_POVERTY / TOTPOP_CY ) * 100"
 * };
 *
 * // when the promise resolves, apply the visual variables to the renderer
 * colorAndSizeRendererCreator.createVisualVariables(params)
 *   .then(function(response){
 *     const renderer = layer.renderer.clone();
 *     renderer.visualVariables = [ response.color.visualVariable, ...response.size.visualVariables ];
 *     layer.renderer = renderer;
 *   });
 */
export function createVisualVariables(parameters: VisualVariablesParameters): Promise<VisualVariablesResult>;

/**
 * Generates a [Renderer](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-Renderer.html) that may be applied directly to a
 * [Layer](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-Layer.html). The
 * renderer contains continuous color and size visual variables that map symbols with
 * optimal colors and sizes based on the view's background
 * to stop values based on summary statistics from the indicated field or expression.
 *
 * In most cases you will provide a `layer`, `basemap`, `field`, and `theme` to generate this renderer.
 * This is a scenario in which
 * the statistics of the data aren't well known and the user doesn't know what colors and sizes
 * to use in the visualization. You can also use a `valueExpression` instead of a `field` to visualize
 * features based on a value returned from a script executed at runtime.
 *
 * The other options are provided for convenience for more involved custom visualization authoring
 * applications. For example, if you already generated statistics in another operation, you
 * can pass the statistics object to the `statistics` parameter to avoid making an extra call to the server.
 *
 * @param parameters - The function parameters.
 * @returns Resolves to an instance of [RendererResult](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-univariateColorSize.html#RendererResult).
 * @example
 * const layer = new FeatureLayer({
 *   url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/counties_politics_poverty/FeatureServer/0"
 * });
 *
 * // color/size univariate visualization based on field and normalization field
 * const parameters = {
 *   layer: layer,
 *   view: view,
 *   field: "POP_POVERTY",
 *   normalizationField: "TOTPOP_CY"
 * };
 *
 * // when the promise resolves, apply the renderer to the layer
 * colorAndSizeRendererCreator.createContinuousRenderer(parameters)
 *   .then(function(response){
 *     layer.renderer = response.renderer;
 *   });
 * @example
 * const layer = new FeatureLayer({
 *   url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/counties_politics_poverty/FeatureServer/0"
 * });
 *
 * // above-and-below visualization based off Arcade expression
 * const parameters = {
 *   layer: layer,
 *   valueExpression: "(($feature.votes_2016 - $feature.votes_2012) / $feature.votes_2016) * 100",
 *   valueExpressionTitle: "Change in votes from 2012-2016",
 *   view: view,
 *   theme: "above-and-below",
 *   colorOptions: {
 *     isContinuous: false
 *   },
 *   symbolOptions: {
 *     symbolStyle: "arrow"
 *   }
 * };
 *
 * // when the promise resolves, apply the renderer to the layer
 * colorAndSizeRendererCreator.createContinuousRenderer(parameters)
 *   .then(function(response){
 *     layer.renderer = response.renderer;
 *   });
 */
export function createContinuousRenderer(parameters: RendererParameters): Promise<RendererResult>;

export interface VisualVariablesParamsBase extends AbortOptions {
  /** Options for configuring the color portion of the visualization. */
  colorOptions?: VisualVariablesParamsBaseColorOptions | null;
  /**
   * The name of the field whose data will be queried for statistics and used for
   * the basis of the data-driven visualization.
   *   This property is ignored if a `valueExpression` is used.
   */
  field?: string | null;
  /**
   * When defined, only features included in the filter
   *   are considered in the attribute and spatial statistics calculations when determining the final renderer.
   *   This is useful when a lot of variation exists in the data
   *   that could result in undesired data ranges. A common use case would be to set a filter that only
   *   includes features in the current extent of the view where the data is most likely to be viewed. Currently, only
   *   geometry filters with an `intersects` spatial relationship are supported. All other filter types (including `where`) are ignored.
   *
   * @since 4.31
   */
  filter?: FeatureFilter | null;
  /**
   * Indicates whether the generated renderer is for a binning or clustering visualization.
   *   If `true`, then the input field(s) in this method should refer to [aggregate fields](https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-AggregateField.html) defined in the `featureReduction` property of the layer.
   */
  forBinning?: boolean | null;
  /**
   * The layer for which the visual variable
   * is generated. When a client-side layer type is provided, attribute and spatial statistics are calculated
   * only from features in the view's extent. When a server-side layer type is provided, the statistics
   * are calculated from the entire layer, unless a `valueExpression` is provided.
   */
  layer?: SupportedLayer | null;
  /**
   * Provides options for configuring the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-legend/) representing the renderer
   *   generated from this method. Since version 4.18.
   */
  legendOptions?: VisualVariableLegendOptions | null;
  /**
   * A custom maximum value set by the user. Use this in conjunction with `minValue` to
   * generate statistics between lower and upper bounds. This will be the uppermost stop in the returned visual variables.
   */
  maxValue?: number | null;
  /**
   * A custom minimum value set by the user. Use this in conjunction with `maxValue` to
   * generate statistics between lower and upper bounds. This will be the lowest stop in the returned visual variables.
   */
  minValue?: number | null;
  /**
   * The name of the field to normalize the values of the given
   * `field`. Providing a normalization field helps minimize some visualization errors and standardizes the data
   * so all features are visualized with minimal bias due to area differences or count variation. This option is
   * commonly used when visualizing densities.
   */
  normalizationField?: string | null;
  /**
   * A SQL expression evaluating to a number. When provided, statistics are
   *   queried from the server for the entire layer. Only use this parameter when generating a renderer based on
   *   an equivalent `valueExpression`. This parameter is ignored for client-side layer types.
   */
  sqlExpression?: string | null;
  /**
   * A SQL where clause used to filter features for the statistics query. For example,
   * this is useful in situations where you want to avoid dividing by zero as is the case with creating a predominance
   * visualization.
   */
  sqlWhere?: string | null;
  /**
   * A statistics object generated from the [summaryStatistics](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-statistics-summaryStatistics.html) function.
   * If statistics for the field have already been generated, then pass the object here to avoid making a second statistics
   * query to the server.
   */
  statistics?: SummaryStatisticsResult | null;
  /**
   * Sets the size stops and colors based on
   *   meaningful data values. Since version 4.18.
   * | Value | Description
   * | ----- | -----------
   * | high-to-low | The max data value is assigned the max size and color. The min data value is assigned the min size and color. All other values are interpolated.
   * | above | The max data value is assigned the max size and color. The average data value, or zero, is assigned the min size and color. All other values between the max data value and the average are interpolated. This is useful for mapping an increase in a variable over time, like an increase in population, or unemployment between two dates.
   * | below | The min data value is assigned the max size and color. The average data value, or zero, is assigned the min size and color. All other values between the min data value and the average are interpolated. This is useful for mapping a decline in a variable over time, like a decrease in population, or unemployment between two dates.
   * | above-and-below | The min and max data values are assigned the max size and color. The average data value, or zero, is assigned the min size and color. A diverging color ramp is used. All other values between the min and max data values and the average are interpolated. This is useful for mapping a value's change over time and rates.
   *
   * @default high-to-low
   */
  theme?: UnivariateTheme | null;
  /**
   * An [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression following
   * the specification defined by the [Arcade Visualization Profile](https://developers.arcgis.com/javascript/latest/arcade/#visualization).
   * Expressions may reference field values using the `$feature` profile variable and must return
   * a number. This property overrides the `field` property and therefore is used instead of an input `field` value.
   * The `view` parameter is required if specifying a `valueExpression`. When using a `valueExpression`, client-side
   * statistics are calculated based on the features in the view's extent. To generate statistics for the entire layer,
   * set an equivalent `sqlExpression`.
   */
  valueExpression?: string | null;
  /**
   * Text describing the value returned from the `valueExpression`.
   * This is used by the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-legend/).
   */
  valueExpressionTitle?: string | null;
  /**
   * The view where the input layer is rendered. This method
   *   inspects the view's background (i.e. basemap, web map background, or view container) to determine optimal
   *   colors for the output renderer. This parameter should always be set in practice, but if not provided this method
   *   will assume the generated renderer will display on a light background. This parameter is required when creating
   *   renderers using a `valueExpression` or for renderers intended for display in a SceneView.
   */
  view?: MapViewOrSceneView | null;
}

export interface VisualVariablesParamsBaseColorOptions {
  /**
   * In authoring apps,
   * the user may select a pre-defined color scheme. Pass the scheme object to this property to avoid getting one
   * based on a `theme` and the `basemap`.
   */
  colorScheme?: ColorScheme;
  /**
   * Only applies to the `above-and-below` theme. if `true`, adds a
   *   [ColorVariable](https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-visualVariables-ColorVariable.html) with a diverging color ramp to the renderer. Since version 4.18.
   *
   * @default false
   */
  isContinuous?: boolean;
  /**
   * Provides options for setting a title to a field when an expression is provided
   * instead of a field name. This title will represent the field in the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-legend/).
   */
  legendOptions?: VisualVariableLegendOptions;
  /**
   * Determines which values will be emphasized in the continuous ramp and the map.
   * Possible values are listed below.
   * | Value | Description | Example |
   * | ----- | ----------- | ------- |
   * | high-to-low | High values are emphasized with strong colors. | ![high-to-low](https://developers.arcgis.com/javascript/latest/assets/img/apiref/renderers/sm-high-to-low.png) |
   * | above-and-below | Values centered around a given point (e.g. the average) are visualized with weak colors while other values are emphasized with strong colors. | ![above-and-below](https://developers.arcgis.com/javascript/latest/assets/img/apiref/renderers/sm-above-and-below.png) |
   * | centered-on | Values centered around a given point (e.g. the average) are emphasized with strong colors while other values are visualized with weak colors. | ![centered-on](https://developers.arcgis.com/javascript/latest/assets/img/apiref/renderers/sm-centered-on.png) |
   * | extremes | High and low values are emphasized with strong colors. All others are visualized with weak colors. | ![extremes](https://developers.arcgis.com/javascript/latest/assets/img/apiref/renderers/sm-extremes.png) |
   *
   * @default high-to-low
   */
  theme?: "high-to-low" | "above-and-below" | "centered-on" | "extremes";
}

export interface RendererSizeOptions {
  /**
   * Provides options for setting a title to a field when an expression is provided
   * instead of a field name. This title will represent the field in the [Legend](https://developers.arcgis.com/javascript/latest/references/map-components/arcgis-legend/).
   */
  legendOptions?: VisualVariableLegendOptions;
  /**
   * Indicates whether
   *   symbol sizes should vary based on view scale. When set, a valid [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html)
   *   instance must be provided in the `view` parameter. This option is not supported for 3D
   *   [SceneViews](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html).
   *
   * @default false
   */
  sizeOptimizationEnabled?: boolean;
  /**
   * In authoring apps,
   * the user may select a pre-defined size scheme. Pass the scheme object to this property to avoid getting one
   * based on the view's background.
   */
  sizeScheme?: SizeScheme;
}

export interface VisualVariablesSizeOptions extends RendererSizeOptions {
  /**
   * When set to `all`, a single size variable that scales uniformly in all
   * dimensions is generated. When set to `height`, the result contains two size visual variables:
   * the first one sizes the height according to the field statistics, while the second defines a constant size for
   * width and depth.
   *
   * @default all
   */
  axis?: "all" | "height";
}

export interface VisualVariablesResultBase {
  /** The ID of the basemap used to determine the optimal fill color of the features. */
  basemapId?: string | null;
  /** Indicates whether the average color of the input view's basemap is `light` or `dark`. */
  basemapTheme?: BasemapTheme | null;
  /**
   * Object containing visual variable and scheme information for
   * the color portion of the visualization.
   */
  color?: VisualVariablesResultBaseColor | null;
  /**
   * Indicates whether default values were used in
   * the absence of sufficient data and/or statistics from the layer. Default values are
   * typically used when all features have the same field value or no value at all.
   */
  defaultValuesUsed: boolean;
  /**
   * Object containing visual variable and scheme information for the
   * size portion of the visualization.
   */
  size: VisualVariablesResultBaseSize;
  /** Basic statistics returned from a query to the service for the given field or expression. */
  statistics: SummaryStatisticsResult;
}

export interface VisualVariablesResultBaseColor {
  /** The color scheme used by the visual variable. */
  colorScheme: ColorScheme;
  /**
   * A color visual
   * variable configured based on the statistics of the data and the color scheme.
   */
  visualVariable: ColorVariable;
}

export interface VisualVariablesResultBaseSize {
  /** The size scheme used by the visual variable. */
  sizeScheme?: SizeScheme | null;
  /**
   * The size visual
   * variable(s) configured based on the statistics of the data and the view scale.
   */
  visualVariables: SizeVariable[];
}

export interface VisualVariablesParameters extends VisualVariablesParamsBase {
  /** Options for configuring the size portion of the visualization. */
  sizeOptions?: VisualVariablesSizeOptions;
  /**
   * Indicates if the size units of the symbols will be in meters. This should be `true`
   * when generating visualizations with 3D volumetric symbology. A `view` must be provided if this property is set to `true`.
   */
  worldScale?: boolean;
}

/**
 * The result object of the [createVisualVariables()](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-univariateColorSize.html#createVisualVariables) method. See the table
 * below for details of each property.
 */
export interface VisualVariablesResult extends VisualVariablesResultBase {
  /**
   * Authoring information related to the
   * creation of the visual variables. This includes inforamation related to UI inputs from sliders and selected themes.
   */
  authoringInfo: AuthoringInfo;
}

export type SymbolType = "2d" | "3d-flat" | "3d-volumetric" | "3d-volumetric-uniform";

export interface SymbolOptions {
  /** Allows you to specify custom symbols in the `above-and-below` theme. */
  symbols?: SymbolOptionsSymbols;
  /** Sets above and below symbols based on pre-defined named symbol pairs. */
  symbolStyle?: UnivariateSymbolStyle;
}

export interface SymbolOptionsSymbols {
  /** The symbol to use for the above portion of the `above-and-below` visualization. */
  above: SymbolUnion;
  /** The symbol to use for the below portion of the `above-and-below` visualization. */
  below: SymbolUnion;
}

export interface RendererParameters extends VisualVariablesParamsBase {
  /**
   * Enables the `defaultSymbol` on the renderer and assigns it to features
   * with no value and features that do not fall within the configured data range.
   */
  defaultSymbolEnabled?: boolean;
  /** Options for configuring the size portion of the visualization. */
  sizeOptions?: RendererSizeOptions;
  /** Options for setting symbols for the `above-and-below` theme. Since version 4.18. */
  symbolOptions?: SymbolOptions;
  /**
   * The type of symbol to generate. This depends on the view
   * in which you are working and the desired visualization. Possible values are described below.
   *
   * | Value | Description |
   * | ----- | ----------- |
   * | 2d | Generates a visualization using 2D symbols such as [SimpleMarkerSymbol](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleMarkerSymbol.html), [SimpleLineSymbol](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleLineSymbol.html), or [SimpleFillSymbol](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-SimpleFillSymbol.html). Use this option if generating a visualization for data in a [MapView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html). |
   * | 3d-flat | Generates a visualization using 3D symbols with flat symbol layers such as [IconSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-IconSymbol3DLayer.html), [LineSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-LineSymbol3DLayer.html), or [FillSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-FillSymbol3DLayer.html). Use this option if generating a 2D visualization for data in a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html). |
   * | 3d-volumetric | Generates a visualization using 3D symbols with volumetric symbol layers such as [ObjectSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-ObjectSymbol3DLayer.html), [PathSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-PathSymbol3DLayer.html), or [ExtrudeSymbol3DLayer](https://developers.arcgis.com/javascript/latest/api-reference/esri-symbols-ExtrudeSymbol3DLayer.html). Use this option if generating a 3D visualization for data in a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html) and only the symbol's height should be variable, for example with cylinders. A SceneView instance must be provided to the `view` parameter if this option is used. |
   * | 3d-volumetric-uniform | Generates a visualization using uniformly sized 3D symbols with volumetric symbol layers. Use this option if generating a 3D visualization for data in a [SceneView](https://developers.arcgis.com/javascript/latest/api-reference/esri-views-SceneView.html) and the symbol should be sizes uniformly, for example with spheres. A SceneView instance must be provided to the `view` parameter if this option is used. |
   *
   * @default 2d
   */
  symbolType?: SymbolType;
}

/**
 * The result object of the [createContinuousRenderer()](https://developers.arcgis.com/javascript/latest/api-reference/esri-smartMapping-renderers-univariateColorSize.html#createContinuousRenderer) method. See the table
 * below for details of each property.
 */
export interface RendererResult extends VisualVariablesResultBase {
  /**
   * The renderer object configured to best
   * match the view's background and the spread of the data. Set this on a layer's `renderer` property to
   * update its visualization.
   */
  renderer: ClassBreaksRenderer;
}