import type { PreAuthKey } from "./PreAuthKey";
import type { User } from "./User";

export interface Machine {
  id: string;
  machineKey: string;
  nodeKey: string;
  discoKey: string;
  ipAddresses: string[];
  name: string;

  // User can be null for tag-only nodes in Headscale 0.28+
  user?: User;
  lastSeen: string;
  expiry: string | null;

  preAuthKey?: PreAuthKey;

  createdAt: string;
  registerMethod:
    | "REGISTER_METHOD_UNSPECIFIED"
    | "REGISTER_METHOD_AUTH_KEY"
    | "REGISTER_METHOD_CLI"
    | "REGISTER_METHOD_OIDC";

  tags: string[];
  givenName: string;
  online: boolean;

  // Added in Headscale 0.26+
  approvedRoutes: string[];
  availableRoutes: string[];
  subnetRoutes: string[];
}
