import type PointCloudRenderer from "./PointCloudRenderer.js";
import type { PointCloudRendererProperties } from "./PointCloudRenderer.js";

export interface PointCloudRGBRendererProperties extends PointCloudRendererProperties, Partial<Pick<PointCloudRGBRenderer, "field">> {}

/**
 * PointCloudRGBRenderer defines the color of each point in a [PointCloudLayer](https://developers.arcgis.com/javascript/latest/references/core/layers/PointCloudLayer/)
 * based on the value of a color attribute.
 *
 * @since 4.2
 * @see [Sample - PointCloudLayer with renderer](https://developers.arcgis.com/javascript/latest/sample-code/layers-pointcloud/)
 */
export default class PointCloudRGBRenderer extends PointCloudRenderer {
  constructor(properties?: PointCloudRGBRendererProperties);
  /** The name of the field containing RGB values used to drive the visualization. */
  accessor field: string | null | undefined;
  /** The type of Renderer. */
  get type(): "point-cloud-rgb";
  /**
   * Creates a deep clone of the renderer.
   *
   * @returns A deep clone of the
   * object that invoked this method.
   * @example
   * // Creates a deep clone of the first layer's renderer
   * let renderer = view.map.layers.at(0).renderer.clone();
   */
  clone(): PointCloudRGBRenderer;
}