import type { ModuleAccessMap } from '../../common/access/modules';
import { DatabaseService } from '../../common/database/database.service';
export interface ManagedUser {
    id: string;
    email: string;
    displayName: string | null;
    role: 'USER' | 'ADMIN';
    isActive: boolean;
    createdAt: Date;
    updatedAt: Date;
}
export interface ManagedUserWithAccess extends ManagedUser {
    modules: ModuleAccessMap;
}
export interface NewManagedUser {
    email: string;
    passwordHash: string;
    displayName: string | null;
    role: 'USER' | 'ADMIN';
}
export interface ManagedUserPatch {
    displayName?: string | null;
    role?: 'USER' | 'ADMIN';
    isActive?: boolean;
    passwordHash?: string;
}
export declare class UsersRepository {
    private readonly database;
    constructor(database: DatabaseService);
    list(): Promise<ManagedUser[]>;
    findById(id: string): Promise<ManagedUser | null>;
    findByEmail(email: string): Promise<ManagedUser | null>;
    create(input: NewManagedUser): Promise<ManagedUser>;
    update(id: string, patch: ManagedUserPatch): Promise<ManagedUser>;
    countOtherActiveAdmins(excludedId: string): Promise<number>;
    countStateRows(userId: string): Promise<number>;
}
