import { PrismaService } from "../prisma/prisma.service";
import { CreateUserDto } from "./dto/create-user.dto";
import { UpdateUserDto } from "./dto/update-user.dto";
import { ProfileUpdateDto } from "../auth/dto/profileUpdate.dto";
import { ConfigService } from "@nestjs/config";
import { SocialUser } from "../types/common";
export declare class UsersService {
    private prisma;
    private readonly configService;
    constructor(prisma: PrismaService, configService: ConfigService);
    create(createUserDto: CreateUserDto): Promise<{
        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;
    }>;
    findAll(page: number, perPage: number, query?: string, role?: string, isActive?: string, warehouseId?: string): Promise<{
        items: {
            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;
        }[];
        pagination: {
            total: number;
            per_page: number;
            current_page: number;
            last_page: number;
        };
    } | undefined>;
    findOne(id: string): Promise<{
        warehouse: {
            id: string;
            name: string;
        } | null;
        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;
        refreshToken: string | null;
        passwordResetToken: string | null;
        passwordResetExpires: Date | null;
        warehouseId: string | null;
        clientId: string | null;
    }>;
    findByEmail(email: string): Promise<{
        id: string;
        isActive: boolean;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        email: string;
        phone: string | null;
        password: string | null;
        provider: string | null;
        providerId: string | null;
        profilePic: string | null;
        role: import(".prisma/client").$Enums.AccountType;
        isEmailVerified: boolean;
        isPermission: boolean;
        refreshToken: string | null;
        passwordResetToken: string | null;
        passwordResetExpires: Date | null;
        warehouseId: string | null;
        clientId: string | null;
    } | null>;
    update(id: string, updateUserDto: UpdateUserDto): Promise<{
        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;
    }>;
    updateEmailVerified(id: string, status: boolean): Promise<{
        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;
    }>;
    updateRefreshToken(userId: string, refreshToken: string | null): Promise<{
        id: string;
        isActive: boolean;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        email: string;
        phone: string | null;
        password: string | null;
        provider: string | null;
        providerId: string | null;
        profilePic: string | null;
        role: import(".prisma/client").$Enums.AccountType;
        isEmailVerified: boolean;
        isPermission: boolean;
        refreshToken: string | null;
        passwordResetToken: string | null;
        passwordResetExpires: Date | null;
        warehouseId: string | null;
        clientId: string | null;
    }>;
    remove(id: string): Promise<{
        id: string;
    }>;
    private generateHash;
    verifyPassword(hashedPassword: string, plainPassword: string): Promise<boolean>;
    updateprofile(userId: string, profileUpdateDto: ProfileUpdateDto): Promise<{
        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;
    } | undefined>;
    createSocialUser(socialUser: SocialUser): import(".prisma/client").Prisma.Prisma__usersClient<{
        id: string;
        isActive: boolean;
        createdAt: Date;
        updatedAt: Date;
        name: string;
        email: string;
        phone: string | null;
        password: string | null;
        provider: string | null;
        providerId: string | null;
        profilePic: string | null;
        role: import(".prisma/client").$Enums.AccountType;
        isEmailVerified: boolean;
        isPermission: boolean;
        refreshToken: string | null;
        passwordResetToken: string | null;
        passwordResetExpires: Date | null;
        warehouseId: string | null;
        clientId: string | null;
    }, never, import("@prisma/client/runtime/library").DefaultArgs, import(".prisma/client").Prisma.PrismaClientOptions>;
    searchUser(query: string, page: number, perPage: number, role?: string, isActive?: string): Promise<{
        items: {
            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;
        }[];
        pagination: {
            total: number;
            per_page: number;
            current_page: number;
            last_page: number;
        };
    } | undefined>;
    changeStatus(id: string): Promise<{
        id: string;
        isActive: boolean;
    }>;
}
