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

/** @since 5.0 */
export interface LocateSettingsProperties {
  /**
   * Locate settings used by stops and barriers.
   *
   * @since 5.0
   */
  default?: LocateSettingProperties | null;
  /**
   * Optional per-network feature overrides.
   *
   * @since 5.0
   */
  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/references/core/rest/support/RouteParameters/#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 {
  /** @since 5.0 */
  constructor(properties?: LocateSettingsProperties);
  /**
   * Locate settings used by stops and barriers.
   *
   * @since 5.0
   */
  get default(): LocateSetting | null | undefined;
  set default(value: LocateSettingProperties | null | undefined);
  /**
   * Optional per-network feature overrides.
   *
   * @since 5.0
   */
  get overrides(): LocateSettingsOverrides | null | undefined;
  set overrides(value: LocateSettingsOverridesProperties | null | undefined);
}
declare const LocateSettingsSuperclass: typeof JSONSupport & typeof ClonableMixin