import type { Point } from '@api/map';

import type { RobotBrand, RobotState, RobotType } from './constant';

export interface RobotGroup {
  sid?: string; // 场景id
  id: string; // 机器人组id
  label: string; // 机器人组名称
  robots?: Array<string>; // 机器人列表
}

export interface RobotInfo {
  gid?: string; // 机器人组id
  id: string; // 机器人id
  label: string; // 机器人名称
  brand: RobotBrand; // 机器人品牌
  type: RobotType; // 机器人类型
  ip?: string; // 机器人ip（仅真实机器人）
  battery?: number; // 机器人电量
  isConnected?: boolean; // 机器人连接状态
  state?: RobotState; // 机器人状态
  canOrder?: boolean; // 接单状态
  canStop?: boolean; // 急停状态
  canControl?: boolean; // 控制状态
  targetPoint?: string; // 目标点位（名称）
}

export interface RobotDetail extends RobotInfo {
  isSimulative?: 0 | 1; // 是否仿真机器人
  minBattery?: number; // 最小电量
  maxBattery?: number; // 最大电量
  chargeBattery?: number; // 充电电量
  taskBattery?: number; // 任务电量
  swapBattery?: number; // 交换电量
  length?: number; // 空载长（仅仿真机器人）
  width?: number; // 空载宽（仅仿真机器人）
}

export interface RobotRealtimeInfo extends RobotInfo {
  x: number; // 坐标x
  y: number; // 坐标y
  active?: boolean; // 是否运行
  angle?: number; // 旋转角度
  path?: Array<Point>; // 规划路径
}
