import type { ModuleController } from "@86d-app/core/types/module"; export type ServiceStatus = "active" | "inactive"; export type StaffStatus = "active" | "inactive"; export type AppointmentStatus = "pending" | "confirmed" | "cancelled" | "completed" | "no-show"; export type Service = { id: string; name: string; slug: string; description?: string; duration: number; price: number; currency: string; status: ServiceStatus; maxCapacity: number; sortOrder: number; createdAt: Date; updatedAt: Date; }; export type Staff = { id: string; name: string; email: string; bio?: string; status: StaffStatus; createdAt: Date; updatedAt: Date; }; export type StaffService = { id: string; staffId: string; serviceId: string; createdAt: Date; }; export type Schedule = { id: string; staffId: string; dayOfWeek: number; startTime: string; endTime: string; createdAt: Date; }; export type Appointment = { id: string; serviceId: string; staffId: string; customerId?: string; customerName: string; customerEmail: string; customerPhone?: string; startsAt: Date; endsAt: Date; status: AppointmentStatus; notes?: string; price: number; currency: string; createdAt: Date; updatedAt: Date; }; export type StaffWithServices = Staff & { services: Service[]; }; export type ServiceWithStaff = Service & { staff: Staff[]; }; export type TimeSlot = { startsAt: Date; endsAt: Date; staffId: string; }; export type AppointmentStats = { totalAppointments: number; pendingAppointments: number; confirmedAppointments: number; cancelledAppointments: number; completedAppointments: number; noShowAppointments: number; totalServices: number; totalStaff: number; totalRevenue: number; }; export type AppointmentController = ModuleController & { createService(params: { name: string; slug: string; description?: string; duration: number; price: number; currency?: string; status?: ServiceStatus; maxCapacity?: number; sortOrder?: number; }): Promise; getService(id: string): Promise; getServiceBySlug(slug: string): Promise; updateService(id: string, params: { name?: string; slug?: string; description?: string | null; duration?: number; price?: number; currency?: string; status?: ServiceStatus; maxCapacity?: number; sortOrder?: number; }): Promise; deleteService(id: string): Promise; listServices(params?: { status?: ServiceStatus; take?: number; skip?: number; }): Promise; countServices(params?: { status?: ServiceStatus; }): Promise; createStaff(params: { name: string; email: string; bio?: string; status?: StaffStatus; }): Promise; getStaff(id: string): Promise; updateStaff(id: string, params: { name?: string; email?: string; bio?: string | null; status?: StaffStatus; }): Promise; deleteStaff(id: string): Promise; listStaff(params?: { status?: StaffStatus; take?: number; skip?: number; }): Promise; countStaff(params?: { status?: StaffStatus; }): Promise; assignService(staffId: string, serviceId: string): Promise; unassignService(staffId: string, serviceId: string): Promise; getStaffServices(staffId: string): Promise; getServiceStaff(serviceId: string): Promise; setSchedule(params: { staffId: string; dayOfWeek: number; startTime: string; endTime: string; }): Promise; getSchedule(staffId: string): Promise; removeSchedule(staffId: string, dayOfWeek: number): Promise; getAvailableSlots(params: { serviceId: string; staffId?: string; date: Date; }): Promise; createAppointment(params: { serviceId: string; staffId: string; customerId?: string; customerName: string; customerEmail: string; customerPhone?: string; startsAt: Date; notes?: string; }): Promise; getAppointment(id: string): Promise; updateAppointment(id: string, params: { status?: AppointmentStatus; notes?: string | null; startsAt?: Date; staffId?: string; }): Promise; cancelAppointment(id: string): Promise; listAppointments(params?: { staffId?: string; serviceId?: string; customerId?: string; status?: AppointmentStatus; from?: Date; to?: Date; take?: number; skip?: number; }): Promise; countAppointments(params?: { staffId?: string; serviceId?: string; customerId?: string; status?: AppointmentStatus; from?: Date; to?: Date; }): Promise; getUpcomingAppointments(params?: { staffId?: string; customerId?: string; take?: number; }): Promise; getStats(): Promise; }; //# sourceMappingURL=service.d.ts.map