import { Model } from "mongoose";
import { ResponseService } from "src/common/service/response.service";
import { NotificationService } from "src/notifications/notifications.service";
import { LeadsDocument } from "src/schema/lead.schema";
import { UsersDocument } from "src/schema/users.schema";
import { QuotationDocument } from "src/schema/quatation.schema";
import { LeadStatusDocument } from "src/schema/lead-status.schema";
import { LeadsAttachmentDocument } from "src/schema/leads-attachment.schema";
import { Response, Request } from "express";
export declare class LeadService {
    private readonly usersModal;
    private readonly leadStatusModal;
    private readonly leadAttachmentModel;
    private readonly leadModel;
    private readonly quotationModel;
    private readonly mapAdminModel;
    private resService;
    private notificationService;
    userModel: any;
    constructor(usersModal: Model<UsersDocument>, leadStatusModal: Model<LeadStatusDocument>, leadAttachmentModel: Model<LeadsAttachmentDocument>, leadModel: Model<LeadsDocument>, quotationModel: Model<QuotationDocument>, mapAdminModel: Model<LeadsDocument>, resService: ResponseService, notificationService: NotificationService);
    createOrUpdate(dto: any, userId: string, res: Response, id?: string): Promise<Response<any, Record<string, any>>>;
    getLeadById(id: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getLeadsByAdminAndEmployee(res: Response, adminId: string, employeeId: string, page?: number, limit?: number, search?: string, status?: string, startDate?: string, endDate?: string): Promise<Response<any, Record<string, any>>>;
    getLeadsForEmployee(res: Response, employeeId: string, page?: number, limit?: number, search?: string, status?: string, startDate?: string, endDate?: string): Promise<Response<any, Record<string, any>>>;
    getMyAllLeads(res: Response, userId: string, page?: number, limit?: number, search?: string, status?: string, priority?: string, quotationStatus?: string, employeeId?: string, startDate?: string, endDate?: string): Promise<Response<any, Record<string, any>>>;
    saveFile(files: Express.Multer.File[], leadId: string, res: Response, req: Request): Promise<Response<any, Record<string, any>>>;
    getAllFiles(res: Response, leadId?: string): Promise<Response<any, Record<string, any>>>;
    getFileById(res: Response, id: string): Promise<Response<any, Record<string, any>>>;
    updateFile(res: Response, id: string, dto: any): Promise<Response<any, Record<string, any>>>;
    deleteAllFilesByLead(leadId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteSingleFile(fileId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteLead(userId: string, leadId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getLeadsCount(res: Response, userId: string): Promise<Response<any, Record<string, any>>>;
    addLeadStatus(name: string, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteLeadStatus(res: Response, id: string): Promise<Response<any, Record<string, any>>>;
    getAllStatuses(res: Response): Promise<Response<any, Record<string, any>>>;
}
