import type { Client } from "@/lib/ledger-types";

export type SnelStartConnectionStatus =
  | "not_connected"
  | "pending"
  | "connected"
  | "error"
  | "disconnected";

export function snelstartStatusLabel(status: SnelStartConnectionStatus | string | undefined): string {
  switch (status) {
    case "connected":
      return "Connected";
    case "pending":
      return "Connection pending";
    case "error":
      return "Connection error";
    case "disconnected":
      return "Disconnected";
    default:
      return "Not connected";
  }
}

export function snelstartStatusTone(
  status: SnelStartConnectionStatus | string | undefined,
): "neutral" | "green" | "amber" | "danger" {
  switch (status) {
    case "connected":
      return "green";
    case "pending":
      return "amber";
    case "error":
      return "danger";
    case "disconnected":
      return "neutral";
    default:
      return "neutral";
  }
}

export function clientSnelStartStatus(client: Pick<Client, "snelstartStatus" | "snelstart">): string {
  if (client.snelstartStatus) return client.snelstartStatus;
  return client.snelstart ? "connected" : "not_connected";
}

export function isSnelStartConnected(client: Pick<Client, "snelstartStatus" | "snelstart">): boolean {
  return clientSnelStartStatus(client) === "connected" && Boolean(client.snelstart);
}
