// model.ts
export interface Cliente {
  nombre: string;
}

export interface Aula {
  nombre: string;
  clientes: Cliente[];
}

export interface UnidadOrganizativa {
  id: string;
  uuid: string;
  name: string;
  type: string;
  '@id': string;
  clients?: Client[];
  children?: UnidadOrganizativa[];
  parent?: UnidadOrganizativa;
}

export interface OrganizationalUnit {
  "@id": string;
  "@type": string;
  id: number;
  name: string;
  type: string;
  uuid: string;
}

export interface Client {
  mac: any;
  status: any;
  ip: any;
  "@id": string;
  "@type": string;
  id: number;
  name: string;
  ogLive: any;
  pxtTemplate: any;
  type: string;
  serialNumber: string;
  netiface: string;
  organizationalUnit: OrganizationalUnit;
  partitions: any[];
  createdAt: string;
  createdBy: string;
  uuid: string;
  parentName?: string;
}

export interface ClientCollection {
  "@context": string;
  "@id": string;
  "@type": string;
  "hydra:totalItems": number;
  "hydra:member": Client[];
  "hydra:view": {
    "@id": string;
    "@type": string;
  };
}

export interface TreeNode {
  id?: string
  uuid?: string;
  name: string;
  type: string;
  '@id'?: string;
  children?: TreeNode[];
  hasClients?: boolean;
  clients?: Client[];
  ip?: string;
  networkSettings?: Object;
}

export interface FlatNode {
  id?: string;
  name: string;
  type: string;
  level: number;
  expandable: boolean;
  hasClients?: boolean;
  networkSettings?: Object;
  ip?: string;
  '@id'?: string;
}


export interface Command {
  name: string;
  description?: string;
}

export interface Filter {
  name: string;
  uuid: string;
}

