import type { JSONSupport } from "../../core/JSONSupport.js";

export interface FeatureExpressionInfoProperties extends Partial<Pick<FeatureExpressionInfo, "expression" | "title">> {}

/**
 * Defines how to override a feature's Z-value based on its attributes.
 *
 * @since 4.34
 */
export default class FeatureExpressionInfo extends JSONSupport {
  /** @since 4.34 */
  constructor(properties?: FeatureExpressionInfoProperties);
  /**
   * An [Arcade](https://developers.arcgis.com/javascript/latest/arcade/) expression following the specification defined by the [Arcade Feature Z Profile](https://developers.arcgis.com/javascript/latest/arcade/#z-values).
   * Expressions may reference field values using the `$feature` profile variable and must return a number representing the z-value of the feature.
   * When `mode = "on-the-ground"`, this property has no effect. For line and polygon geometries the result of the expression is the same for all vertices of a feature.
   */
  accessor expression: string | null | undefined;
  /** Title of the expression. */
  accessor title: string | null | undefined;
}