import type TravelMode from "./TravelMode.js";
import type { JSONSupport } from "../../core/JSONSupport.js";
import type { TravelModeProperties } from "./TravelMode.js";

export interface NetworkServiceDescriptionProperties extends Partial<Pick<NetworkServiceDescription, "currentVersion" | "defaultTravelMode">> {
  /**
   * Available travel modes.
   *
   * @since 5.0
   */
  supportedTravelModes?: TravelModeProperties[] | null;
}

/**
 * The network service description.
 *
 * @since 5.0
 */
export default class NetworkServiceDescription extends JSONSupport {
  constructor(properties?: NetworkServiceDescriptionProperties);
  /**
   * Server version.
   *
   * @since 5.0
   */
  accessor currentVersion: number | null;
  /**
   * Default travel mode.
   *
   * @since 5.0
   */
  accessor defaultTravelMode: TravelMode | null;
  /**
   * Available travel modes.
   *
   * @since 5.0
   */
  get supportedTravelModes(): TravelMode[] | null;
  set supportedTravelModes(value: TravelModeProperties[] | null);
}