import type AppleIPSProperties from "./AppleIPSProperties.js";
import type GNSSProperties from "./GNSSProperties.js";
import type PathSnappingProperties from "./PathSnappingProperties.js";
import type SmoothingProperties from "./SmoothingProperties.js";
import type { ClonableMixin } from "../../core/Clonable.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { AppleIPSPropertiesProperties } from "./AppleIPSProperties.js";
import type { GNSSPropertiesProperties } from "./GNSSProperties.js";
import type { SmoothingPropertiesProperties } from "./SmoothingProperties.js";
import type { PathSnappingPropertiesProperties } from "./PathSnappingProperties.js";

export interface ConfigurationProperties {
  /** Property indicating whether appleIPS is enabled or not. */
  appleIPS?: AppleIPSPropertiesProperties | null;
  /** Property indicating whether GNSS is enabled or not. */
  gnss?: GNSSPropertiesProperties | null;
  /** Property indicating whether path snapping is enabled or not. */
  pathSnapping?: PathSnappingPropertiesProperties | null;
  /** Property indicating whether smoothing is enabled or not. */
  smoothing?: SmoothingPropertiesProperties | null;
}

/**
 * Defines the IPS Configuration settings for IPS-Aware Maps.
 *
 * @since 4.33
 */
export default class Configuration extends ConfigurationSuperclass {
  constructor(properties?: ConfigurationProperties);
  /** Property indicating whether appleIPS is enabled or not. */
  get appleIPS(): AppleIPSProperties | null | undefined;
  set appleIPS(value: AppleIPSPropertiesProperties | null | undefined);
  /** Property indicating whether GNSS is enabled or not. */
  get gnss(): GNSSProperties | null | undefined;
  set gnss(value: GNSSPropertiesProperties | null | undefined);
  /** Property indicating whether path snapping is enabled or not. */
  get pathSnapping(): PathSnappingProperties | null | undefined;
  set pathSnapping(value: PathSnappingPropertiesProperties | null | undefined);
  /** Property indicating whether smoothing is enabled or not. */
  get smoothing(): SmoothingProperties | null | undefined;
  set smoothing(value: SmoothingPropertiesProperties | null | undefined);
}
declare const ConfigurationSuperclass: typeof JSONSupport & typeof ClonableMixin