import type LocateSetting from "./LocateSetting.js";
import type LocateSettingsOverrides from "./LocateSettingsOverrides.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 { LocateSettingsOverridesProperties } from "./LocateSettingsOverrides.js";

export interface LocateSettingsProperties extends JSONSupportMixinProperties, ClonableMixinProperties {
  /** Locate settings used by stops and barriers. */
  default?: LocateSettingProperties | null;
  /** Optional per-network feature overrides. */
  overrides?: LocateSettingsOverridesProperties | null;
}

/**
 * `LocateSettings` 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 LocateSettings extends LocateSettingsSuperclass {
  constructor(properties?: LocateSettingsProperties);
  /** Locate settings used by stops and barriers. */
  get default(): LocateSetting | null | undefined;
  set default(value: LocateSettingProperties | null | undefined);
  /** Optional per-network feature overrides. */
  get overrides(): LocateSettingsOverrides | null | undefined;
  set overrides(value: LocateSettingsOverridesProperties | null | undefined);
}
declare const LocateSettingsSuperclass: typeof JSONSupport & typeof ClonableMixin