import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { PrismaService } from 'src/prisma/prisma.service';
import { EmailsService } from 'src/emails/emails.service';
export declare class UsersService {
    private prisma;
    private emailer;
    constructor(prisma: PrismaService, emailer: EmailsService);
    private logger;
    create(createUserDto: CreateUserDto, emailUser?: boolean): Promise<{
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    }>;
    findAll(skip: number | undefined, take: number | undefined, sortBy: string, sortOrder: string, search?: string, active?: string | undefined, clientId?: number | undefined, role?: string | Array<string> | undefined): Promise<[({
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    } | {
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    })[][], number, number]>;
    findOne(id: number): Promise<({
        client: {
            id: number;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            notes: string;
            email: string;
            phone: string;
            address1: string;
            address2: string;
            city: string;
            state: string;
            postcode: string;
            country: string;
        } | null;
    } & {
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    }) | null>;
    findClientUsers(clientId: number, activeUsersOnly: boolean): Promise<{
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    }[]>;
    findUsersByName(name: string): Promise<{
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    }[]>;
    update(id: number, updateUserDto: UpdateUserDto): Promise<{
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    }>;
    remove(id: number): Promise<{
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    }>;
    findClientUsersSimple(clientId: number, activeUsersOnly?: boolean): Promise<{
        id: number;
        name: string;
    }[]>;
    findUsersByNameSimple(name: string, activeUsersOnly?: boolean): Promise<{
        id: number;
        name: string;
    }[]>;
    findUsersByEmailSimple(email: string, activeUsersOnly?: boolean): Promise<{
        id: number;
        email: string;
    }[]>;
    findAllSimple(params: any): Promise<{
        id: number;
        name: string;
        active: boolean;
        role: string;
    }[]>;
    activateUser(cuid: string): Promise<{
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    }>;
    keyCheckUser(cuid: string): Promise<{
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    } | null>;
    resetPassword(email: string): Promise<{
        message: string;
    }>;
    updatePassword(key: string, body: any): Promise<{
        id: number;
        name: string;
        createdAt: Date;
        updatedAt: Date;
        email: string;
        phone: string;
        address1: string;
        address2: string;
        city: string;
        state: string;
        postcode: string;
        country: string;
        active: boolean;
        password: string;
        role: string;
        uuid: string;
        clientId: number | null;
        favourite: boolean;
    }>;
}
