interface DataOption {
  id: string;
  label: string;
}
interface FormProfile {
  id: string;
  avatar: string;
  fullName: string;
  position: string;
  positionLevel: string;
  organization: string;
}

interface RoleData {
  attrOwnership: string;
  attrIsCreate: boolean;
  attrIsList: boolean;
  attrIsGet: boolean;
  attrIsUpdate: boolean;
  attrIsDelete: boolean;
  attrPrivilege: string;
  authSysId: string;
  parentNode: string;
}

interface DataStructureTree {
  labelName: string;
  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;
  orgTreeRankSub: string;
  orgTreeShortName: string;
  responsibility: string;
  totalPosition: number;
  totalPositionCurrentUse: number;
  totalPositionCurrentVacant: number;
  totalPositionNextUse: number;
  totalPositionNextVacant: number;
  totalRootPosition: number;
  totalRootPositionCurrentUse: number;
  totalRootPositionCurrentVacant: number;
  totalRootPositionNextUse: number;
  totalRootPositionNextVacant: number;
  children: DataStructureTree[];
  orgRootCode: string;
  orgRootShortName: string;
  isDeputy?: boolean;
  id?: string;
  orgTreeDnaId?: string; // Added for compatibility with the new structure
}

interface DataStrategy {
  id: string;
  level: number;
  name: string;
  children: DataStrategy[];
}

interface DataActing {
  labelName: string;
  orgCode: string;
  orgLevel: 0;
  orgName: string;
  orgRootName: string;
  orgTreeCode: string;
  orgTreeId: string;
  orgTreeName: string;
  orgTreeShortName: string;
  children: DataActing[];
  posMaster: PosMaster[];
}

interface PosMaster {
  fullNameCurrentHolder: string;
  orgLevel: number;
  orgTreeId: string;
  posmasterId: string;
}

export type {
  DataOption,
  FormProfile,
  RoleData,
  DataStructureTree,
  DataActing,
  DataStrategy,
};
