import { ConfigService } from '@nestjs/config';
import { JwtService } from '@nestjs/jwt';
import { UserService } from '../user/users.service';
import { UserResponseDto } from 'modules/user/dto/user-response.dto';
import { UserRole } from 'common/enum/UserRole.enum';
import { IGoogleUser } from './interfaces/google-user.interface';
import { CreateUserDto } from 'modules/user/dto/create-user.dto';
import { UserEntity } from 'modules/user/entity/users.entity';
import { Repository } from 'typeorm';
import { UserLoginDto } from './dtos/user-login.dto';
import { VerifyEmailDto } from './dtos/verify-email.dto';
export declare class AuthService {
    private readonly userService;
    private readonly configService;
    private readonly jwtService;
    private readonly userRepository;
    private readonly logger;
    private transporter;
    private readonly emailVerificationTokenExpiry;
    constructor(userService: UserService, configService: ConfigService, jwtService: JwtService, userRepository: Repository<UserEntity>);
    private initializeEmailTransporter;
    private verifyEmailConnection;
    private generateEmailVerificationToken;
    private createToken;
    private getCookieOptions;
    validateUser(email: string, password: string, roles: UserRole[]): Promise<UserResponseDto>;
    private sendEmail;
    private sendVerificationEmailAsync;
    private generateVerificationEmailTemplate;
    sendEmailVerification(email: string): Promise<{
        message: string;
    }>;
    verifyEmail(verifyEmailDto: VerifyEmailDto): Promise<UserResponseDto>;
    resendEmailVerification(email: string): Promise<{
        message: string;
    }>;
    createUser(userData: CreateUserDto): Promise<UserResponseDto>;
    login(userData: UserLoginDto): Promise<{
        cookieData: any;
        token: string;
        findUser: UserResponseDto;
    }>;
    adminLogin(userData: UserLoginDto): Promise<{
        cookieData: any;
        token: string;
        findUser: UserResponseDto;
    }>;
    googleLogin(userData: IGoogleUser): Promise<{
        cookie: string;
        user: UserResponseDto;
    }>;
    googleLoginUrl(state?: string): Promise<{
        url: string;
    }>;
    logout(): Promise<{
        message: string;
        cookie: string;
    }>;
    ChangeUserPassword(userId: number, oldPassword: string, newPassword: string): Promise<UserResponseDto>;
    resetPasswordByEmail(email: string, newPassword: string): Promise<UserResponseDto>;
}
