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

/** @since 5.0 */
export interface VerifyCircuitsParametersProperties extends Partial<Pick<VerifyCircuitsParameters, "circuitNames" | "forceVerify" | "synthesizeGeometries">> {
  /**
   * The spatial reference of the returned geometry. If not specified, the geometry is returned in the spatial reference of the feature service.
   *
   * @since 5.1
   * @autocast
   */
  outSpatialReference?: SpatialReferenceProperties | null;
}

/** @since 5.0 */
export default class VerifyCircuitsParameters extends JSONSupport {
  constructor(properties?: VerifyCircuitsParametersProperties);
  /** @since 5.0 */
  accessor circuitNames: string[];
  /**
   * @default false
   * @since 5.0
   */
  accessor forceVerify: boolean;
  /**
   * The spatial reference of the returned geometry. If not specified, the geometry is returned in the spatial reference of the feature service.
   *
   * @since 5.1
   * @autocast
   */
  get outSpatialReference(): SpatialReference | null | undefined;
  set outSpatialReference(value: SpatialReferenceProperties | null | undefined);
  /**
   * @default false
   * @since 5.0
   */
  accessor synthesizeGeometries: boolean;
}