import { type ModuleAccessLevel, type ModuleName } from '../../common/access/modules';
import { ModuleAccessRepository } from '../../common/access/module-access.repository';
import type { AuthenticatedUser } from '../../common/auth/authenticated-user';
import { AuthSessionsService } from '../auth/auth-sessions.service';
import type { CreateUserDto } from './dto/create-user.dto';
import type { UpdateUserDto } from './dto/update-user.dto';
import { type ManagedUser, type ManagedUserWithAccess, UsersRepository } from './users.repository';
export declare class UsersService {
    private readonly repository;
    private readonly sessions;
    private readonly moduleAccess;
    constructor(repository: UsersRepository, sessions: AuthSessionsService, moduleAccess: ModuleAccessRepository);
    list(): Promise<Array<ManagedUserWithAccess & {
        stateRows: number;
    }>>;
    setModuleAccess(id: string, changes: Partial<Record<ModuleName, ModuleAccessLevel>>, actor: AuthenticatedUser): Promise<ManagedUserWithAccess>;
    create(input: CreateUserDto): Promise<ManagedUser>;
    update(id: string, input: UpdateUserDto, actor: AuthenticatedUser): Promise<ManagedUser>;
}
