import type LocateSetting from "./LocateSetting.js";
import type LocateSettingBase from "./LocateSettingBase.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { LocateSettingProperties } from "./LocateSetting.js";
import type { LocateSettingBaseProperties } from "./LocateSettingBase.js";

/** @since 5.0 */
export interface LocateSettingsOverridesProperties {
  /**
   * Locate settings to be used by pointBarriers.
   *
   * @since 5.0
   */
  pointBarriers?: LocateSettingProperties | null;
  /**
   * Locate settings to be used by polygonBarriers.
   *
   * @since 5.0
   */
  polygonBarriers?: LocateSettingBaseProperties | null;
  /**
   * Locate settings to be used by polylineBarriers.
   *
   * @since 5.0
   */
  polylineBarriers?: LocateSettingBaseProperties | null;
  /**
   * Locate settings to be used by stops.
   *
   * @since 5.0
   */
  stops?: LocateSettingProperties | null;
}

/**
 * `LocateSettingsOverrides` is a class that defines how network features are located on the network.
 *
 * @since 5.0
 * @see [RouteParameters.locateSettings](https://developers.arcgis.com/javascript/latest/api-reference/esri-rest-support-RouteParameters.html#locateSettings)
 * @see [locateSettings](https://developers.arcgis.com/rest/services-reference/enterprise/route-sync-services/#locatesettings)
 * @see [Locate analysis inputs](https://pro.arcgis.com/en/pro-app/latest/help/analysis/networks/locating-analysis-inputs.htm)
 */
export default class LocateSettingsOverrides extends LocateSettingsOverridesSuperclass {
  /** @since 5.0 */
  constructor(properties?: LocateSettingsOverridesProperties);
  /**
   * Locate settings to be used by pointBarriers.
   *
   * @since 5.0
   */
  get pointBarriers(): LocateSetting | null | undefined;
  set pointBarriers(value: LocateSettingProperties | null | undefined);
  /**
   * Locate settings to be used by polygonBarriers.
   *
   * @since 5.0
   */
  get polygonBarriers(): LocateSettingBase | null | undefined;
  set polygonBarriers(value: LocateSettingBaseProperties | null | undefined);
  /**
   * Locate settings to be used by polylineBarriers.
   *
   * @since 5.0
   */
  get polylineBarriers(): LocateSettingBase | null | undefined;
  set polylineBarriers(value: LocateSettingBaseProperties | null | undefined);
  /**
   * Locate settings to be used by stops.
   *
   * @since 5.0
   */
  get stops(): LocateSetting | null | undefined;
  set stops(value: LocateSettingProperties | null | undefined);
}
declare const LocateSettingsOverridesSuperclass: typeof JSONSupport & typeof ClonableMixin