import { AppointmentService } from './appointment.service';
import { Appointment } from './appointment.entity';
import { CreateAppointmentDto } from './dto/create-appointment.dto';
import { UpdateAppointmentDto } from './dto/update-appointment.dto';
import { ConfirmAppointmentDto } from './dto/confirm-appointment.dto';
import { AdminCreateAppointmentDto } from './dto/admin-create-appointment.dto';
import { TechnicianCreateAppointmentDto } from './dto/technician-create-appointment.dto';
import { MoveAppointmentDto } from './dto/move-appointment.dto';
import { User } from '../auth/user.entity';
import { UserService } from '../user/user.service';
import { Response } from 'express';
export declare class AppointmentController {
    private readonly appointmentService;
    private readonly userService;
    constructor(appointmentService: AppointmentService, userService: UserService);
    getAppointments(user: User, dateFrom: string, dateTo: string, clientId?: string, technicianId?: string, status?: string, tipoCierre?: string, overview?: string, page?: string, limit?: string, res?: Response): Promise<{
        data: Partial<Appointment>[];
        total: number;
        page: number;
        totalPages: number;
    }>;
    getAvailableSlots(equipmentTypeId: string, startDate?: string, clientId?: string): Promise<{
        date: string;
        time: string;
        availableTechnicians: number;
    }[]>;
    createAppointment(appointment: CreateAppointmentDto): Promise<Appointment>;
    confirmAppointment(appointment: ConfirmAppointmentDto, id: number): Promise<Appointment>;
    updateAppointment(id: number, updateData: UpdateAppointmentDto): Promise<Appointment>;
    deleteAppointment(id: number, user: User): Promise<void>;
    refuseAppointment(id: number, technicianId: number): Promise<import("./refused-appointment.entity").RefusedAppointment>;
    createAdminAppointment(appointmentData: AdminCreateAppointmentDto, user: User): Promise<Appointment>;
    createTechnicianSelfAppointment(appointmentData: TechnicianCreateAppointmentDto, user: User): Promise<Appointment>;
    getCompatibleTechnicians(id: number, user: User): Promise<{
        equipmentType: {
            id: number;
            description: string;
        };
        compatibleTechnicians: {
            id: number;
            name: string;
            email: string;
        }[];
        totalCount: number;
    }>;
    getClientAppointments(clientId: number, user: User, page?: string, limit?: string): Promise<{
        data: Partial<Appointment>[];
        total: number;
        page: number;
        totalPages: number;
    }>;
    getEquipmentHistory(equipmentId: number, user: User, clientId?: string, technicianId?: string, page?: string, limit?: string): Promise<{
        data: Partial<Appointment>[];
        total: number;
        page: number;
        totalPages: number;
    }>;
    moveAppointment(id: number, moveData: MoveAppointmentDto, user: User): Promise<Appointment>;
}
