interface DataList {
  avatar: string;
  bmaOfficer: string;
  deferment: boolean;
  draft: string;
  examNumber: number;
  fullName: string;
  idCard: string;
  name: string;
  orgName: string | null;
  organizationName: string;
  organizationShortName: string | null;
  personalId: string;
  positionCandidate: string;
  positionNumber: string | null;
  positionPath: string | null;
  profilePhoto: string;
  reportingDate: string | null;
  statusId: string;
  statusName: string;
}

interface TreeMain {
  children: TreeMain[]; // ปรับเป็นชนิดข้อมูลที่ถูกต้องตามโครงสร้างของ children ถ้าเป็นไปได้
  orgCode: string;
  orgLevel: number;
  orgName: string;
  orgRevisionId: string;
  orgRootName: string;
  orgTreeCode: string;
  orgTreeFax: string;
  orgTreeId: string;
  orgTreeName: string;
  orgTreeOrder: number;
  orgTreePhoneEx: string;
  orgTreePhoneIn: string;
  orgTreeRank: string;
  orgTreeShortName: string;
  totalPosition: number;
  totalPositionCurrentUse: number;
  totalPositionCurrentVacant: number;
  totalPositionNextUse: number;
  totalPositionNextVacant: number;
  totalRootPosition: number;
  totalRootPositionCurrentUse: number;
  totalRootPositionCurrentVacant: number;
  totalRootPositionNextUse: number;
  totalRootPositionNextVacant: number;
}

interface PositionMaim {
  fullNameCurrentHolder: string | null;
  fullNameNextHolder: string | null;
  id: string;
  isPosition: boolean;
  isSit: boolean;
  orgRootId: string;
  orgShortname: string;
  posMasterNo: number;
  posMasterNoPrefix: string;
  posMasterNoSuffix: string;
  posExecutiveId: string;
  posExecutiveName: string;
  posLevelId: string;
  posLevelName: string;
  posTypeId: string;
  posTypeName: string;
  positionArea: string;
  positionExecutiveField: string;
  positionField: string;
  positionIsSelected: boolean;
  positionName: string;
  positions: Positions[];
}

interface PositionNo {
  fullNameCurrentHolder: string | null;
  fullNameNextHolder: string | null;
  id: string;
  isPosition: boolean;
  isSit: boolean;
  orgRootId: string;
  orgShortname: string;
  posMasterNo: number;
  posMasterNoPrefix: string;
  posMasterNoSuffix: string;
  positions: Positions[];
}

interface Positions {
  id: string;
  posExecutiveId: string;
  posExecutiveName: string;
  posLevelId: string;
  posLevelName: string;
  posTypeId: string;
  posTypeName: string;
  positionArea: string;
  positionExecutiveField: string;
  positionField: string;
  positionIsSelected: boolean;
  positionName: string;
}

export type { DataList, PositionMaim, PositionNo, Positions, TreeMain };
