import { UsersDocument } from "src/schema/users.schema";
import { ResponseService } from "src/common/service/response.service";
import { JwtUtilsService } from "src/common/service/jwt-util.service";
import { otpUtilService } from "src/common/service/otp.util.service";
import { GoogleAuthService } from "src/common/service/google-auth.service";
import { LeadsDocument } from "src/schema/lead.schema";
import { UserDevicesDocument } from "src/user-devices/user-device.schema";
import { MapAdminEmployeeDocument } from "src/schema/map-employee-admin.schema";
import { Model } from "mongoose";
import { MailerService } from "src/common/service/mailer.service";
import { CreateUserDto, LoginUserDto, VerifyOtpDto, UpdateUserProfileDto, CreateUserByAdmin, VerifyEmailOtpDto, LoginWithEmailDto, LoginWithGoogleDto, LoginWithAppleDto, UpdateEmailPreferencesDto } from "./dto/users.dto";
import { Response, Request } from "express";
import { UsersAttachmentDocument } from "src/schema/user-attachment.schema";
import { InvoiceDocument } from "src/schema/invoice.schema";
import { EstimationDocument } from "src/schema/estimation.schema";
import { MapAdminClientDocument } from "src/schema/map-admin-users.schema";
import { GuestProfileDto } from "./dto/guest-user.dto";
import { EmailService } from "src/email/email.service";
import { PaymentDetailsDocument } from "src/schema/user-payment-details.schema";
export declare class UsersService {
    private readonly usersModel;
    private readonly deviceModel;
    private readonly usersAttachmentsModel;
    private readonly mapAdminEmployee;
    private readonly paymentDetailsModel;
    private readonly leadModal;
    private invoiceModel;
    private estimateModel;
    private clientModel;
    private resService;
    private jwtUtilService;
    private otpService;
    private mailService;
    private emailService;
    private googleAuthService;
    constructor(usersModel: Model<UsersDocument>, deviceModel: Model<UserDevicesDocument>, usersAttachmentsModel: Model<UsersAttachmentDocument>, mapAdminEmployee: Model<MapAdminEmployeeDocument>, paymentDetailsModel: Model<PaymentDetailsDocument>, leadModal: Model<LeadsDocument>, invoiceModel: Model<InvoiceDocument>, estimateModel: Model<EstimationDocument>, clientModel: Model<MapAdminClientDocument>, resService: ResponseService, jwtUtilService: JwtUtilsService, otpService: otpUtilService, mailService: MailerService, emailService: EmailService, googleAuthService: GoogleAuthService);
    private mapUserResponse;
    signup(dto: CreateUserDto, res: Response, deviceType: string): Promise<Response<any, Record<string, any>>>;
    verifyOtp(body: VerifyOtpDto, res: Response, type: string): Promise<Response<any, Record<string, any>>>;
    login(dto: LoginUserDto, res: Response): Promise<Response<any, Record<string, any>>>;
    loginWithEmail(dto: LoginWithEmailDto, res: Response): Promise<Response<any, Record<string, any>>>;
    loginWithGoogle(dto: LoginWithGoogleDto, res: Response): Promise<Response<any, Record<string, any>>>;
    loginWithApple(dto: LoginWithAppleDto, res: Response): Promise<Response<any, Record<string, any>>>;
    resendOtp(dto: LoginWithEmailDto, res: Response): Promise<Response<any, Record<string, any>>>;
    verifyEmailOtpLogin(dto: VerifyEmailOtpDto, res: Response): Promise<Response<any, Record<string, any>>>;
    guestLogin(dto: GuestProfileDto, res: Response, req: Request, file?: Express.Multer.File): Promise<Response<any, Record<string, any>>>;
    forgotPassword(email: string, res: Response): Promise<Response<any, Record<string, any>> | undefined>;
    otpVerify(email: string, otp: string, res: Response): Promise<void>;
    deleteAccount(userId: string, res: Response, req: Request): Promise<Response<any, Record<string, any>>>;
    resetPassword(email: string, newPassword: string, res: Response): Promise<void>;
    changePassword(userId: string, oldPassword: string, newPassword: string, res: Response): Promise<Response<any, Record<string, any>>>;
    updateProfile(userId: string, body: UpdateUserProfileDto, res: Response, req: Request, file?: Express.Multer.File): Promise<Response<any, Record<string, any>>>;
    getDashboardStats(res: Response, adminId: any, filterType?: "month" | "week" | "day" | "year", selectedMonth?: number, selectedYear?: number): Promise<Response<any, Record<string, any>>>;
    getEmployeeAnalytics(res: Response, employeeId: string, filterType?: "day" | "week" | "month" | "year", selectedMonth?: number, selectedYear?: number): Promise<Response<any, Record<string, any>>>;
    createUser(dto: CreateUserByAdmin, res: any): Promise<Response<any, Record<string, any>>>;
    getUserDetails(res: Response, req: Request, userId: string): Promise<Response<any, Record<string, any>>>;
    updateEmailPreferences(res: Response, userId: string, body: UpdateEmailPreferencesDto): Promise<Response<any, Record<string, any>>>;
    getEmailPreferences(res: Response, userId: string): Promise<Response<any, Record<string, any>>>;
}
