import { UsersService } from "../users/users.service";
import { AppConfigService } from "../config/config.service";
import { JwtService } from "@nestjs/jwt";
import { RefreshTokenDto } from "./dto/refresh-token.dto";
import { RegisterDto } from "./dto/register.dto";
import { LoginDto } from "./dto/login.dto";
import { SocialUser, User } from '../types/common';
import { PrismaService } from "../prisma/prisma.service";
import { ChangePasswordDto } from "./dto/changePassword.dto";
export declare class AuthService {
    private usersService;
    private jwtService;
    private configService;
    private prisma;
    constructor(usersService: UsersService, jwtService: JwtService, configService: AppConfigService, prisma: PrismaService);
    validateUser(email: string, password: string): Promise<User>;
    login(user: User, otp?: string): Promise<{
        accessToken: string;
        refreshToken: string;
        expiresIn: any;
        tokenType: string;
        message: string;
        verified: boolean;
        otp: string | undefined;
        user: User;
    }>;
    loginWithCredentials(loginDto: LoginDto): Promise<{
        message: string;
        verified: boolean;
        user: User;
        token: {
            accessToken: string;
            refreshToken: string;
            expiresIn: any;
            tokenType: string;
        };
    }>;
    register(registerDto: RegisterDto): Promise<{
        message: string;
        user: {
            id: string;
            isActive: boolean;
            createdAt: Date;
            updatedAt: Date;
            name: string;
            email: string;
            phone: string | null;
            provider: string | null;
            providerId: string | null;
            profilePic: string | null;
            role: import(".prisma/client").$Enums.AccountType;
            isEmailVerified: boolean;
            isPermission: boolean;
            warehouseId: string | null;
            warehouse: {
                id: string;
                name: string;
            } | null;
        };
        token: {
            accessToken: string;
            refreshToken: string;
            expiresIn: any;
            tokenType: string;
        };
    }>;
    refreshTokens(refreshTokenDto: RefreshTokenDto): Promise<{
        accessToken: string;
        refreshToken: string;
        expiresIn: any;
        tokenType: string;
    }>;
    private getTokens;
    changePassword(changePasswordDto: ChangePasswordDto, id: string): Promise<{
        message: string;
    }>;
    socialLogin(socialUser: SocialUser): Promise<{
        accessToken: string;
        refreshToken: string;
        expiresIn: any;
        tokenType: string;
        message: string;
        verified: boolean;
        user: User;
    }>;
    forgotPassword(email: string): Promise<{
        message: string;
    }>;
    resetPassword(token: string, newPassword: string): Promise<{
        message: string;
    }>;
}
