import type Accessor from "../../core/Accessor.js";

export interface InputQuantizationParametersProperties extends Partial<Pick<InputQuantizationParameters, "mFalseOrigin" | "mResolution" | "xFalseOrigin" | "xyResolution" | "yFalseOrigin" | "zFalseOrigin" | "zResolution">> {}

/**
 * Custom quantization parameters for input geometry that compresses geometry for transfer to the server.
 * Overrides the default lossless WGS84 quantization.
 *
 * @since 4.25
 * @see [GraphQueryStreaming](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-knowledgeGraph-GraphQueryStreaming.html)
 * @example
 * //sample implementation of an input quantization parameter
 * //query entities within a bounding box
 * const query = "MATCH (n) WHERE esri.graph.ST_Intersects($param_filter_geom, n.geometry) RETURN n"
 *
 * KnowledgeGraphModule.executeQueryStreaming(
 *   knowledgeGraph,
 *   {
 *     openCypherQuery: query,
 *     bindParameters: {
 *       param_filter_geom: new Polygon({
 *         rings: [
 *           [
 *             [-89, -89],
 *             [89, -89],
 *             [89, 89],
 *             [-89, 89],
 *             [-89, -89],
 *           ],
 *         ],
 *       }),
 *     },
 *     inputQuantizationParameters: {
 *       xyResolution: 0.003,
 *       xFalseOrigin: 25,
 *       yFalseOrigin: 25,
 *       zResolution: 1,
 *       zFalseOrigin: 1,
 *       mResolution: 1,
 *       mFalseOrigin: 1,
 *     },
 *    }
 *   }
 * );
 */
export default class InputQuantizationParameters extends Accessor {
  constructor(properties?: InputQuantizationParametersProperties);
  /** Origin of M-Values. */
  accessor mFalseOrigin: number | null | undefined;
  /** Number of significant digits for M-Values. */
  accessor mResolution: number | null | undefined;
  /** False origin of x values of the quantization grid. */
  accessor xFalseOrigin: number | null | undefined;
  /** Number of significant digits for the x and y coordinates. */
  accessor xyResolution: number | null | undefined;
  /** False origin for y-values of the quantization grid. */
  accessor yFalseOrigin: number | null | undefined;
  /** The false origin of the Z-values. */
  accessor zFalseOrigin: number | null | undefined;
  /** Number of significant digits of the Z-Values. */
  accessor zResolution: number | null | undefined;
}