interface DataPositions {
  amount: number;
  amountSpecial: number;
  commandCode: string;
  commandDateAffect: Date;
  commandDateSign: Date;
  commandId: string;
  commandName: string;
  commandNo: string;
  commandYear: number;
  createdAt: string;
  createdFullName: string;
  createdUserId: string;
  dateGovernment: Date;
  id: string;
  isEntry: boolean;
  isGovernment: boolean;
  lastUpdateFullName: string;
  lastUpdateUserId: string;
  lastUpdatedAt: Date;
  mouthSalaryAmount: number;
  order: number;
  orgChild1: string;
  orgChild2: string;
  orgChild3: string;
  orgChild4: string;
  orgRoot: string;
  posNo: string;
  posNoAbb: string;
  positionCee: string;
  positionExecutive: string;
  positionExecutiveField?: string;
  positionArea?: string;
  positionLevel: string;
  positionLine: string;
  positionPathSide: string;
  positionName: string;
  positionSalaryAmount: number;
  positionType: string;
  profileEmployeeId: string;
  profileId: string;
  refId: string;
  remark: string;
  posNumCodeSit: string;
  posNumCodeSitAbb: string;
}

interface DataCommandCode {
  id: string;
  createdAt: Date;
  lastUpdatedAt: Date;
  createdFullName: string;
  lastUpdateFullName: string;
  name: string;
  code: number;
}

interface DataPosType {
  id: string;
  posTypeName: string;
  posTypeRank: number;
  posLevels: DataPosLevel[];
  createdAt: Date;
  lastUpdatedAt: Date;
  lastUpdateFullName: string;
  posTypeShortName?: string;
}

interface DataPosLevel {
  id: string;
  posLevelName: string;
  posLevelRank: number;
  posLevelAuthority: string;
  createdAt: Date;
  lastUpdatedAt: Date;
  lastUpdateFullName: string;
}

interface DataPosPosition {
  createdAt: Date;
  id: string;
  isSpecial: boolean;
  lastUpdateFullName: string;
  lastUpdatedAt: Date;
  posExecutiveId: string;
  posExecutiveName: string;
  posLevelId: string;
  posLevelName: string;
  posTypeId: string;
  posTypeName: string;
  positionArea: string;
  positionExecutiveField: string;
  positionField: string;
  positionIsSelected: boolean;
  positionName: string;
}

interface DataPosExecutive {
  id: string;
  createdAt: Date;
  lastUpdatedAt: Date;
  lastUpdateFullName: string;
  posExecutiveName: string;
  posExecutivePriority: number;
}

interface DataTenure {
  name: string;
  days: number;
  year: number;
  month: number;
  day: number;
}

export type {
  DataPositions,
  DataCommandCode,
  DataPosType,
  DataPosLevel,
  DataPosPosition,
  DataPosExecutive,
  DataTenure,
};
