import type { SelectOption } from "@nodedc/ui-react";

export type ConnectionMode = "bridge" | "quick-connect" | "direct-connect";
export type MountType = "handheld" | "vehicle-mounted" | "uav" | "backpack";
export type GnssMode = "none" | "rtk" | "ppk";

export const DEFAULT_CONNECTION_MODE = "bridge" as const satisfies ConnectionMode;
export const SUPPORTED_MOUNT_TYPE = "handheld" as const satisfies MountType;
export const SUPPORTED_GNSS_MODE = "none" as const satisfies GnssMode;

export const connectionModeOptions: Array<SelectOption<ConnectionMode>> = [
  {
    value: "bridge",
    label: "Общая сеть · Bridge",
    description: "Mission Core передаёт K1 реквизиты существующей общей сети.",
  },
  {
    value: "quick-connect",
    label: "Точка доступа K1 · Quick Connect",
    description: "Лабораторный режим: Mission Core включает AP K1 и подключает только заранее подготовленный хост. Для обычной работы используйте Bridge.",
  },
  {
    value: "direct-connect",
    label: "Хотспот контроллера · Direct Connect",
    description: "Mission Core передаёт K1 реквизиты хотспота управляющего устройства.",
  },
];

export const mountTypeOptions: Array<SelectOption<MountType>> = [
  {
    value: "handheld",
    label: "Ручной",
    description: "Подтверждённый канонический профиль MountType.HANDHELD.",
  },
  {
    value: "vehicle-mounted",
    label: "На наземной платформе",
    description: "Vehicle-Mounted. Недоступно до отдельной приёмки START/STOP.",
    disabled: true,
  },
  {
    value: "uav",
    label: "На БПЛА",
    description: "Drone/UAV. Недоступно до отдельной приёмки START/STOP.",
    disabled: true,
  },
  {
    value: "backpack",
    label: "Ранцевый",
    description: "Backpack. Недоступно до отдельной приёмки START/STOP.",
    disabled: true,
  },
];

export const gnssModeOptions: Array<SelectOption<GnssMode>> = [
  {
    value: "none",
    label: "Без RTK",
    description: "RTK/NTRIP читаются только для обнаружения возможностей и не включаются.",
  },
  {
    value: "rtk",
    label: "Использовать RTK",
    description: "Недоступно до отдельного захвата настройки и физической приёмки.",
    disabled: true,
  },
  {
    value: "ppk",
    label: "Использовать PPK",
    description: "Недоступно до отдельного захвата настройки и физической приёмки.",
    disabled: true,
  },
];
