export interface IncomingRecordContentDto {
  id: string;
  subject: string;
}

export interface FileInfoDto {
  size: number;
  fileName: string;
  contentType: string;
  originalname: string;
}

export interface ReceivingUnitDto {
  id: string;
  unit: UnitDto;
}

export interface UnitDto {
  id: string;
  name: NameDto;
}

export interface NameDto {
  am: string;
  en: string;
}

export interface ContentDto {
  id: string;
  subject: string;
  recordAttachments: any[]; // Could be typed more specifically if structure is known
}
export interface IncomingRecordDto {
  initiator: any;
  metadata: any;
  organizationName: any;
  referenceNumber: string;
  letterNumber: string;
  id: string;
  content: IncomingRecordContentDto[];
}

export interface DeliveredByDto {
  am: string;
  en: string;
}

export interface OrganizationNameDto {
  am: string;
  en: string;
}

export interface MetadataDto {
  deliveredBy: DeliveredByDto;
  organizationName: OrganizationNameDto;
}

export interface ContentDto {
  id: string;
  subject: string;
  receiverEmployees: any[]; // Can replace `any` with proper Employee DTO if available
  receiverPositions: any[]; // Can replace `any` with proper Position DTO if available
}

export interface RecordDto {
  nonSmartOfficeRecordStatus: string;
  createdAt: string;
  updatedAt: string;
  id: string;
  isLocked?: boolean;
  referenceNumber: string;
  letterNumber: string;
  metadata: MetadataDto;
  dispatchedDate: string | null;
  amharicDispatchedDate: string | null;
  amharicCreatedAt: string | null;
  statusKey: string;
  recordTypeKey: string;
  initiator: any | null; // Replace `any` if you have a specific type for initiator
  content: ContentDto[];
}

export interface IncomingRecordWrapperDto {
  createdAt: string;
  updatedAt: string;
  id: string;
  isLocked?: boolean;
  amharicCreatedAt: string | null;
  status: string;
  record: RecordDto;
}



export interface CorrespondenceDto {
  nonSmartOfficeRecordStatus: any;
  letterName: string;
  id: string;
  isLocked?: boolean;
  createdAt: string;
  fileInfo: FileInfoDto;
  referenceNumber: string;
  letterNumber: string;
  dispatchedDate: string; // ISO date string
  amharicDispatchedDate: string;
  amharicCreatedAt: string;
  statusKey: string;
  initiationType: string;
  receivingUnits: ReceivingUnitDto[];
  content: ContentDto[];
  recordBoxes: any[]; // Could be typed more specifically if structure is known
  replies: any[];
  metadata: MetadataDto;
  status?: string;
}

export interface LocalizedField {
  am: string;
  en: string;
}

export interface MetadataDto {
  uploadedBy: LocalizedField;
  deliveredBy: LocalizedField;
  organizationName: LocalizedField;
}
