import { ConfigService } from "@nestjs/config";
import { JwtPayload } from "../../utils/jwt";
import { ChangePasswordDto } from "./dto/change-password.dto";
import { CreateUserDto } from "./dto/create-user.dto";
import { EditProfileDto } from "./dto/edit-profile.dto";
import { LoginDto } from "./dto/login.dto";
import { ResetPasswordDto } from "./dto/reset-password.dto";
import { SetPasswordDto } from "./dto/set-password.dto";
import { RequestDemoDto } from "./dto/request-demo.dto";
import { AuthRepository } from "./repositories/auth.repository";
import { UserLoginRepository } from "./repositories/user-login.repository";
import { UserBlacklistedTokenRepository } from "./repositories/user-blacklisted-token.repository";
import { PasswordSetupTokenRepository } from "./repositories/password-setup-token.repository";
import { EmployeeRepository } from "../employees/repositories/employee.repository";
import { RolePermissionsService } from "../role-permissions/role-permissions.service";
import { RoleService } from "../role/role.service";
import { CompanySubscriptionRepository } from "../company/repositories/company-subscription.repository";
import { CompanyProfileRepository } from "../company/repositories/company-profile.repository";
export declare class AuthService {
    private readonly authRepository;
    private readonly userLoginRepository;
    private readonly userBlacklistedTokenRepository;
    private readonly passwordSetupTokenRepository;
    private readonly employeeRepository;
    private readonly rolePermissionsService;
    private readonly roleService;
    private readonly companySubscriptionRepository;
    private readonly configService;
    private readonly companyProfileRepository;
    constructor(authRepository: AuthRepository, userLoginRepository: UserLoginRepository, userBlacklistedTokenRepository: UserBlacklistedTokenRepository, passwordSetupTokenRepository: PasswordSetupTokenRepository, employeeRepository: EmployeeRepository, rolePermissionsService: RolePermissionsService, roleService: RoleService, companySubscriptionRepository: CompanySubscriptionRepository, configService: ConfigService, companyProfileRepository: CompanyProfileRepository);
    login(loginDto: LoginDto): Promise<any>;
    generateRefreshToken(payload: JwtPayload): string;
    regenerateRefreshToken(oldRefreshToken: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    private verifyToken;
    forgotPassword(email: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    resetPassword(resetPasswordDto: ResetPasswordDto): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    create(createUserDto: CreateUserDto): Promise<void>;
    generatePasswordSetupToken(userId: number): Promise<string>;
    sendPasswordSetupEmail(userId: number, employeeName: string, email: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    setPassword(setPasswordDto: SetPasswordDto): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    linkUserToEmployee(userId: number, employeeId: number): Promise<void>;
    generateEmailChangeToken(userId: number, newEmail: string): Promise<string>;
    sendEmailChangeRequestEmail(userId: number, userName: string, oldEmail: string, newEmail: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    getProfile(token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    editProfile(token: string, editProfileDto: EditProfileDto, attachment: any): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    changePassword(token: string, changePasswordDto: ChangePasswordDto): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    getUserByToken(token: string): Promise<JwtPayload | null>;
    private comparePassword;
    logout(token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    checkAdminExist(email: string): Promise<boolean>;
    private validateEmployeeDepartmentStatus;
    private validateCompanySubscriptionStatus;
    requestDemo(requestDemoDto: RequestDemoDto): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    verifyEmail(token: string): Promise<{
        success: boolean;
        code: number;
        message: string;
    } | {
        success: boolean;
        code: number;
        message: string;
        data: {
            message: string;
        };
    }>;
    bulkSendFeatureEmails(fileBuffer: Buffer): Promise<{
        success: boolean;
        code: number;
        message: string;
    }>;
    private parseEmailExcelFile;
    private generateEmailErrorExcel;
}
