// src/client/shared/api/repositories/index.ts
// Central export point for all repositories

export { authRepository } from './AuthRepository';
export { blacklistRepository } from './BlacklistRepository';
export { contractorsRepository } from './ContractorsRepository';
export { employeeRepository } from './EmployeeRepository';
export { inventoryRepository } from './InventoryRepository';
export { noteRepository } from './NoteRepository';
export { operationsRepository } from './OperationsRepository';
export { paymasterRepository } from './PaymasterRepository';
export { roomsRepository } from './RoomsRepository';
export { scheduleRepository } from './ScheduleRepository';
export { taskRepository } from './TaskRepository';
export { localITRepository, localSecurityRepository, otherEquipmentRepository } from './EquipmentRepository';
export { accessRepository } from './AccessRepository';
export { systemRepository } from './SystemRepository';

// Export Events Contract
export { EVENTS, type EventPayloads, type EventHandler } from '@shared/contracts/events';

// Export Employee types
export type {
  EmployeeResponse,
  CreateEmployeeRequest,
  UpdateEmployeeRequest,
  FireEmployeeRequest,
  RehireEmployeeRequest,
  CheckUsernameRequest,
  CheckUsernameResponse,
  SuccessResponse,
} from './EmployeeRepository';

// Export Inventory types
export type {
  InventoryResponse,
  CreateInventoryRequest,
  UpdateInventoryRequest,
  SuccessResponse as InventorySuccessResponse,
  InventoryCategory,
} from './InventoryRepository';

// Export Paymaster types
export type {
  PaymasterRow,
  CreatePaymasterRow,
  UpdatePaymasterRow,
  OperationType,
  SuccessResponse as PaymasterSuccessResponse,
} from './PaymasterRepository';

// Export Note types
export type {
  Note,
  NoteComment,
  NoteHistoryEntry,
  CreateNoteInput,
  UpdateNoteInput,
  ChangeNoteStatusInput,
  CreateNoteCommentInput,
  NotePriority,
  NoteStatus,
  NoteHistoryAction,
} from './NoteRepository';

// Export Operations types
export type {
  DailyCheckinResponse,
  LinenDataItem,
  InvLinenResponse,
  LinenDispatchLogResponse,
  PatchDailyCheckinRequest,
  DispatchLaundryRequest,
  DispatchLaundryResponse,
  LinenType,
  CleaningStatus,
} from './OperationsRepository';

// Export Rooms types
export type {
  RoomResponse,
  CreateRoomRequest,
  UpdateRoomRequest,
} from './RoomsRepository';

// Export Schedule types
export type {
  ShiftsGridResponse,
  UserResponse,
  ShiftResponse,
  EmploymentPeriodResponse,
  UpdateShiftRequest,
  BulkUpdateShiftsRequest,
  ApproveShiftsRequest,
  RejectShiftsRequest,
  SuccessResponse as ScheduleSuccessResponse,
  ShiftStatus,
  RoleAtShift,
  UserRole,
} from './ScheduleRepository';

// Export Blacklist types
export type {
  BlacklistEntry,
  BlacklistCreateRequest,
  BlacklistUpdateRequest,
} from '@shared/contracts/blacklist';

// Export Contractors types
export type {
  ContractorResponse,
  CreateContractorRequest,
  UpdateContractorRequest,
  SuccessResponse as ContractorsSuccessResponse,
} from './ContractorsRepository';

// Export Equipment types
export type {
  LocalITResponse,
  CreateLocalITRequest,
  UpdateLocalITRequest,
  LocalSecurityResponse,
  CreateLocalSecurityRequest,
  UpdateLocalSecurityRequest,
  OtherEquipmentResponse,
  CreateOtherEquipmentRequest,
  UpdateOtherEquipmentRequest,
  AccessPort,
} from './EquipmentRepository';

// Export Task types
export type {
  Task,
  Position,
  CreateTaskInput,
  UpdateTaskInput,
  UpdateTaskPositionsInput,
} from './TaskRepository';

export { BaseRepository, type RepositoryConfig } from '../BaseRepository';
