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

export interface LocateSettingsOverridesProperties extends JSONSupportMixinProperties, ClonableMixinProperties {
  /** Locate settings to be used by pointBarriers. */
  pointBarriers?: LocateSettingProperties | null;
  /** Locate settings to be used by polygonBarriers. */
  polygonBarriers?: LocateSettingBaseProperties | null;
  /** Locate settings to be used by polylineBarriers. */
  polylineBarriers?: LocateSettingBaseProperties | null;
  /** Locate settings to be used by stops. */
  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 {
  constructor(properties?: LocateSettingsOverridesProperties);
  /** Locate settings to be used by pointBarriers. */
  get pointBarriers(): LocateSetting | null | undefined;
  set pointBarriers(value: LocateSettingProperties | null | undefined);
  /** Locate settings to be used by polygonBarriers. */
  get polygonBarriers(): LocateSettingBase | null | undefined;
  set polygonBarriers(value: LocateSettingBaseProperties | null | undefined);
  /** Locate settings to be used by polylineBarriers. */
  get polylineBarriers(): LocateSettingBase | null | undefined;
  set polylineBarriers(value: LocateSettingBaseProperties | null | undefined);
  /** Locate settings to be used by stops. */
  get stops(): LocateSetting | null | undefined;
  set stops(value: LocateSettingProperties | null | undefined);
}
declare const LocateSettingsOverridesSuperclass: typeof JSONSupport & typeof ClonableMixin