import { ConfigService } from '@nestjs/config';
import { ActivityLogService } from '../activity-logs/activity-log.service';
import { EmailService } from '../email/email.service';
import { PrismaService } from '../../common/prisma/prisma.service';
import type { UserRole, UserStatus } from '../../generated/prisma/enums';
import { CreateUserDto } from './dto/create-user.dto';
import { ListUsersQueryDto } from './dto/list-users-query.dto';
import { UpdateUserDto } from './dto/update-user.dto';
export type AdminUserRecord = {
    id: string;
    firstName: string;
    lastName: string;
    name: string;
    email: string;
    role: UserRole;
    status: UserStatus;
    isDeleted: boolean;
    createdAt: Date;
    updatedAt: Date;
    passwordSetupPending: boolean;
};
export type AdminUsersSummary = {
    total: number;
    superAdmins: number;
    managers: number;
    active: number;
};
export type AdminUsersListResponse = {
    items: AdminUserRecord[];
    meta: {
        page: number;
        limit: number;
        total: number;
        totalPages: number;
    };
    summary: AdminUsersSummary;
};
export declare class UsersService {
    private readonly prisma;
    private readonly activityLogService;
    private readonly emailService;
    private readonly configService;
    private readonly logger;
    constructor(prisma: PrismaService, activityLogService: ActivityLogService, emailService: EmailService, configService: ConfigService);
    private get userClient();
    listUsers(query: ListUsersQueryDto): Promise<AdminUsersListResponse>;
    listAssignableUsers(): Promise<AdminUserRecord[]>;
    listSeoManagers(): Promise<AdminUserRecord[]>;
    createUser(dto: CreateUserDto, actorUserId?: string | null): Promise<AdminUserRecord>;
    updateUser(userId: string, dto: UpdateUserDto, actorUserId?: string | null): Promise<AdminUserRecord>;
    softDeleteUser(userId: string, actorUserId?: string | null): Promise<AdminUserRecord>;
    restoreUser(userId: string, actorUserId?: string | null): Promise<AdminUserRecord>;
    resendPasswordSetupEmail(userId: string, actorUserId?: string | null): Promise<{
        success: boolean;
    }>;
    validatePasswordSetupToken(token: string): Promise<{
        valid: boolean;
        name: string;
        email: string;
    }>;
    completePasswordSetup(token: string, password: string): Promise<{
        success: boolean;
    }>;
    findByEmail(email: string): any;
    findById(id: string): any;
    updateRefreshTokenHash(userId: string, refreshTokenHash: string | null): any;
    private issuePasswordSetupEmail;
    private assertPasswordSetupResendAllowed;
    private getValidPasswordSetupToken;
    private hashSetupToken;
    private getPasswordSetupExpiryHours;
    private buildDisplayName;
    private buildUserWhere;
    private getUsersSummary;
    private roleLabel;
    private describeUserUpdate;
    private describeChange;
    private capitalize;
    private recordActivity;
    private readonly userSelect;
    private readonly userSelectWithPassword;
    private serializeUser;
}
