import type { Request } from 'express';
import type { AuthenticatedUser } from '../../common/interfaces/authenticated-user.interface';
import { AuditService } from '../audit/audit.service';
import { MailService } from '../mail/mail.service';
import { AssignCompaniesDto } from './dto/assign-companies.dto';
import { AssignSitesDto } from './dto/assign-sites.dto';
import { CreateUserDto } from './dto/create-user.dto';
import { UpdateUserDto } from './dto/update-user.dto';
import { UsersQueryDto } from './dto/users-query.dto';
import { UsersService } from './users.service';
export declare class UsersController {
    private readonly usersService;
    private readonly auditService;
    private readonly mailService;
    constructor(usersService: UsersService, auditService: AuditService, mailService: MailService);
    list(query: UsersQueryDto, actor: AuthenticatedUser): Promise<{
        items: import("./users.service").PublicUser[];
        total: number;
    }>;
    getOne(id: number, actor: AuthenticatedUser): Promise<import("./users.service").PublicUser>;
    create(dto: CreateUserDto, actor: AuthenticatedUser, req: Request): Promise<import("./users.service").PublicUser>;
    update(id: number, dto: UpdateUserDto, actor: AuthenticatedUser, req: Request): Promise<import("./users.service").PublicUser>;
    deactivate(id: number, actor: AuthenticatedUser, req: Request): Promise<void>;
    assignCompanies(id: number, dto: AssignCompaniesDto, actor: AuthenticatedUser, req: Request): Promise<import("./users.service").PublicUser>;
    getCompanies(id: number, actor: AuthenticatedUser): Promise<import("../companies/entities/company.entity").Company[]>;
    assignSites(id: number, dto: AssignSitesDto, actor: AuthenticatedUser, req: Request): Promise<import("./users.service").PublicUser>;
    getSites(id: number, actor: AuthenticatedUser): Promise<import("../sites/entities/site.entity").Site[]>;
    resetPassword(id: number, actor: AuthenticatedUser, req: Request): Promise<{
        emailSent: boolean;
        emailTo?: string;
        tempPassword?: string;
    }>;
}
