interface Pagination {
  page: number;
  rowsPerPage: number;
}

interface ItemsMenu {
  label: string;
  icon: string;
  color: string;
  type: string;
}

interface DataOption {
  id: string;
  name: string;
}

interface SystemList {
  attrIsCreate: boolean;
  attrIsDelete: boolean;
  attrIsGet: boolean;
  attrIsList: boolean;
  attrIsUpdate: boolean;
  attrOwnership: string;
  attrPrivilege: string;
  id: string;
  order: 1;
  parentId: string | null;
  selected: boolean;
  sysDescription: string;
  sysName: string;
  children?: SystemList[];
}

interface DataSystem {
  attrIsCreate: boolean;
  attrIsDelete: boolean;
  attrIsGet: boolean;
  attrIsList: boolean;
  attrIsUpdate: boolean;
  attrOwnership: string;
  attrPrivilege: string;
  authRoleId: string;
  authSysId: string;
  createdAt: string;
  createdFullName: string;
  createdUserId: string;
  id: string;
  lastUpdateFullName: string;
  lastUpdateUserId: string;
  lastUpdatedAt: string;
  parentNode: string;
}

interface DataTree {
  ancestorDNA: string;
  createdAt: string;
  createdFullName: string;
  createdUserId: string;
  id: string | null;
  orgTreeId?: string | null;
  lastUpdateFullName: string;
  lastUpdateUserId: string;
  lastUpdatedAt: string;
  orgRevisionId: string;
  orgRootCode: string;
  orgRootFax: string;
  orgRootName: string;
  orgRootOrder: number;
  orgRootPhoneEx: string;
  orgRootPhoneIn: string;
  orgRootRank: string;
  orgRootRankSub: string;
  orgRootShortName: string;
  responsibility: string;
  isDeputy: boolean;
  labelName: string;
  children?: DataTree[];
}

interface DataProfile {
  avatar: string;
  avatarName: string;
  firstName: string;
  id: string;
  lastName: string;
  org: string;
  orgNew?: string;
  orgRootId?: string;
  posLevel: string;
  posNo: string;
  posType: string;
  position: string;
  prefix: string;
  rank: string;
}

export type {
  Pagination,
  ItemsMenu,
  DataOption,
  SystemList,
  DataSystem,
  DataTree,
  DataProfile,
};
