interface DataEmployee {
  age: string;
  child1: null | string;
  child1Id: null | string;
  child1ShortName: null | string;
  child2: null | string;
  child2Id: null | string;
  child2ShortName: null | string;
  child3: null | string;
  child3Id: null | string;
  child3ShortName: null | string;
  child4: null | string;
  child4Id: null | string;
  child4ShortName: null | string;
  citizenId: string;
  createdAt: string;
  dateAppoint: null | string;
  dateRetireLaw: string;
  dateStart: null | string;
  draftOrgEmployeeStatus: string;
  draftOrganizationOrganization: string;
  draftPositionEmployee: string;
  employeeClass: string;
  firstName: string;
  govAge: number;
  id: string;
  lastName: string;
  node: null | string;
  nodeId: null | string;
  nodeName: null | string;
  nodeShortName: null | string;
  posLevel: number;
  posLevelId: string;
  posNo: string;
  posType: string;
  posTypeId: string;
  posTypeShortName: string;
  position: string;
  prefix: string;
  rank: string;
  root: string;
  rootId: string;
  rootShortName: string;
}

interface ResOptionPerson {
  createdAt: string;
  createdFullName: "สาวิตรี ศรีสมัย";
  createdUserId: string;
  id: string;
  lastUpdateFullName: string;
  lastUpdateUserId: string;
  lastUpdatedAt: string;
  name: string;
}

interface PositionNo {
  id: string;
  isPosition: boolean;
  isSit: boolean;
  node: number;
  nodeId: string;
  orgChild1Id: null | string;
  orgChild2Id: null | string;
  orgChild3Id: null | string;
  orgChild4Id: null | string;
  orgRootId: string;
  orgShortname: string;
  posLevelId: string;
  posLevelName: number;
  posMasterNo: number;
  posMasterNoPrefix: null | string;
  posMasterNoSuffix: null | string;
  posTypeId: string;
  posTypeName: string;
  positionIsSelected: boolean;
  positionName: string;
  position: Position[];
}

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 Position {
  id: string;
  posLevelId: string;
  posLevelName: number;
  posTypeId: string;
  posTypeName: string;
  positionIsSelected: boolean;
  positionName: string;
}

export type { DataEmployee, ResOptionPerson, PositionNo, TreeMain, Position };
