/**
 * Exportações centralizadas dos serviços
 */

// Auth
export { authService } from "./auth/authService";
export type {
  LoginInput,
  LoginResponse,
  AuthUser,
  RefreshTokenInput,
  RefreshTokenResponse,
} from "./auth/types";

// Assignments
export { assignmentService } from "./assignments/assignmentService";
export type {
  PatientAssignment,
  CreateAssignmentInput,
  AssignmentFilters,
  AssignmentRole,
} from "./assignments/types";

// Avatars
export { avatarService } from "./avatars/avatarService";
export type {
  UploadAvatarInput,
  UploadAvatarResponse,
  DeleteAvatarInput,
  GetAvatarUrlInput,
  AvatarExtension,
} from "./avatars/types";

// Doctors
export { doctorService } from "./doctors/doctorService";
export type {
  Doctor,
  CreateDoctorInput,
  UpdateDoctorInput,
  DoctorFilters,
  CrmUF,
} from "./doctors/types";

// Patients
export { patientService } from "./patients/patientService";
export type {
  Patient,
  CreatePatientInput,
  UpdatePatientInput,
  PatientFilters,
  RegisterPatientInput,
  RegisterPatientResponse,
} from "./patients/types";

// Profiles
export { profileService } from "./profiles/profileService";
export type {
  Profile,
  UpdateProfileAvatarInput,
  ProfileFilters,
} from "./profiles/types";

// Reports
export { reportService } from "./reports/reportService";
export type {
  Report,
  CreateReportInput,
  UpdateReportInput,
  ReportFilters,
  ReportStatus,
} from "./reports/types";

// Users
export { userService } from "./users/userService";
export type {
  UserRole,
  UserRoleRecord,
  User,
  UserProfile,
  UserPermissions,
  UserInfo,
  CreateUserInput,
  CreateUserResponse,
} from "./users/types";

// SMS
export { smsService } from "./sms/smsService";
export type { SendSmsInput, SendSmsResponse } from "./sms/types";

// Appointments
export { appointmentService } from "./appointments/appointmentService";
export type {
  Appointment,
  CreateAppointmentInput,
  UpdateAppointmentInput,
  AppointmentFilters,
  GetAvailableSlotsInput,
  GetAvailableSlotsResponse,
  TimeSlot,
  AppointmentType,
  AppointmentStatus,
} from "./appointments/types";

// Availability
export { availabilityService } from "./availability/availabilityService";
export type {
  DoctorAvailability,
  CreateAvailabilityInput,
  UpdateAvailabilityInput,
  ListAvailabilityFilters,
  Weekday,
  AppointmentType as AvailabilityAppointmentType,
  DoctorException,
  CreateExceptionInput,
  ExceptionKind,
} from "./availability/types";

// Exceptions (deprecated - agora gerenciado via availabilityService)
// export { exceptionsService } from "./exceptions/exceptionsService";
// export type {
//   DoctorException,
//   CreateExceptionInput,
//   ListExceptionsFilters,
//   ExceptionKind,
// } from "./exceptions/types";

// API Client (caso precise usar diretamente)
export { apiClient } from "./api/client";
export { API_CONFIG } from "./api/config";
// Messages (placeholder service)
export { messageService } from "./messages/messageService";
export type { Message } from "./messages/messageService";
