import { AuditService } from '../audit/audit.service';
import { PasswordService } from '../auth/password.service';
import { PrismaService } from '../common/prisma/prisma.service';
export declare class AdminRbacService {
    private readonly prisma;
    private readonly passwords;
    private readonly audit;
    constructor(prisma: PrismaService, passwords: PasswordService, audit: AuditService);
    summary(): Promise<{
        admins: number;
        activeAdmins: number;
        roles: number;
        permissions: number;
        generatedAt: string;
    }>;
    listPermissions(): Promise<{
        items: {
            id: string;
            key: string;
            description: string | null;
            group: string;
        }[];
    }>;
    listRoles(): Promise<{
        items: {
            id: string;
            name: string;
            description: string | null;
            createdAt: string;
            adminCount: number;
            locked: boolean;
            permissions: string[];
        }[];
    }>;
    createRole(actorId: string, input: {
        name: string;
        description?: string;
        permissionKeys?: string[];
    }): Promise<{
        id: string;
        name: string;
        description: string | null;
        createdAt: string;
        adminCount: number;
        locked: boolean;
        permissions: string[];
    }>;
    updateRole(actorId: string, roleId: string, input: {
        description?: string;
        permissionKeys?: string[];
    }): Promise<{
        id: string;
        name: string;
        description: string | null;
        createdAt: string;
        adminCount: number;
        locked: boolean;
        permissions: string[];
    }>;
    deleteRole(actorId: string, roleId: string): Promise<{
        id: string;
        deleted: boolean;
    }>;
    listAdmins(query: {
        q?: string;
        status?: string;
    }): Promise<{
        items: {
            id: string;
            email: string;
            name: string;
            status: string;
            createdAt: string;
            updatedAt: string;
            roles: {
                id: string;
                name: string;
                description: string | null;
            }[];
        }[];
    }>;
    createAdmin(actorId: string, input: {
        email: string;
        name: string;
        password: string;
        roleIds: string[];
    }): Promise<{
        id: string;
        email: string;
        name: string;
        status: string;
        createdAt: string;
        updatedAt: string;
        roles: {
            id: string;
            name: string;
            description: string | null;
        }[];
    }>;
    updateAdmin(actorId: string, adminId: string, input: {
        name?: string;
        status?: 'ACTIVE' | 'SUSPENDED';
        password?: string;
        roleIds?: string[];
    }): Promise<{
        id: string;
        email: string;
        name: string;
        status: string;
        createdAt: string;
        updatedAt: string;
        roles: {
            id: string;
            name: string;
            description: string | null;
        }[];
    }>;
    private getRole;
    private getAdmin;
    private mapAdmin;
    private requireRole;
    private requireAdmin;
    private requireRoleIds;
    private resolvePermissionIds;
    private ensureNotLastActiveSuperAdmin;
    private wouldRemoveLastSuperAdmin;
}
