import type { TguPlan, TguPlanStatus, TguPlatform } from "./tguTypes";

export type TguPlatformUi = {
  spacecraftId: string;
  name?: string;
  noradId?: string;
  status?: string;
  mission?: string;
  planCount: number;
  hasProblemStatus: boolean;
  platform?: TguPlatform;
};

export type TguPlanUi = TguPlan & {
  startMs: number;
  endMs: number;
  platform?: TguPlatformUi;
};

export type TimelineRange = {
  fromMs: number;
  toMs: number;
};

export type TguActiveTab =
  | "timeline"
  | "map"
  | "complex"
  | "editor"
  | "requests"
  | "slots"
  | "constellation";

export type TimelineRow = {
  spacecraftId: string;
  platform?: TguPlatformUi;
  plans: TguPlanUi[];
};

export type TimelinePlanSegment = {
  plan: TguPlanUi;
  rowIndex: number;
  /** Индекс дорожки внутри строки КА (0 — верхняя); пересекающиеся планы получают разные дорожки. */
  lane: number;
  /** Абсолютная вертикальная координата центра линии плана. */
  centerY: number;
  x: number;
  x2: number;
  width: number;
};

export type TimelineRowLayout = {
  row: TimelineRow;
  rowIndex: number;
  /** Верх строки (абсолютный y). */
  y: number;
  height: number;
  /** Сколько дорожек занято планами (>=1). */
  laneCount: number;
  /** Абсолютный y верхней границы страйпа ЗРВ. */
  zrvBandY: number;
};

export type TimelineStatusStyle = {
  status: TguPlanStatus;
  label: string;
  color: string;
  className: string;
  /** Человеческое пояснение статуса — тултип в легенде. */
  description: string;
};
