export interface Profile {
  id: number | string;
  name: string;
  defaultTree?: boolean | string;
  // Backend's `/astrolabe/profile` list endpoint returns `shared` / `global`
  // (the legacy `sharedTree` / `globalTree` names are kept for back-compat).
  shared?: boolean | string;
  sharedTree?: boolean | string;
  sharedFrom?: string;
  global?: boolean | string;
  globalTree?: boolean | string;
}

export interface NodeDescription {
  label: string;
  classRegex: string;
  children?: NodeDescription[];
  isRemovable?: boolean;
  superNode?: boolean;
  excludes?: string;
}

export interface TreeHost {
  id: string;
  hostname: string;
  [k: string]: unknown;
}

export interface NodeContext {
  path: string[];          // breadcrumb labels, root → leaf
  includes: string[];      // classRegex chain
  excludes: string[];      // sibling excludes
  count: number;           // host count for this node
  label: string;           // leaf label
}
