import { AdminPrincipal } from '../common/auth/principal';
import { AdminRbacService } from './admin-rbac.service';
declare class CreateRoleDto {
    name: string;
    description?: string;
    permissionKeys?: string[];
}
declare class UpdateRoleDto {
    description?: string;
    permissionKeys?: string[];
}
declare class CreateAdminDto {
    email: string;
    name: string;
    password: string;
    roleIds: string[];
}
declare class UpdateAdminDto {
    name?: string;
    status?: 'ACTIVE' | 'SUSPENDED';
    password?: string;
    roleIds?: string[];
}
declare class AdminQueryDto {
    q?: string;
    status?: string;
}
export declare class AdminRbacController {
    private readonly rbac;
    constructor(rbac: AdminRbacService);
    summary(): Promise<{
        data: {
            admins: number;
            activeAdmins: number;
            roles: number;
            permissions: number;
            generatedAt: string;
        };
        message: string;
    }>;
    permissions(): Promise<{
        data: {
            items: {
                id: string;
                key: string;
                description: string | null;
                group: string;
            }[];
        };
        message: string;
    }>;
    roles(): Promise<{
        data: {
            items: {
                id: string;
                name: string;
                description: string | null;
                createdAt: string;
                adminCount: number;
                locked: boolean;
                permissions: string[];
            }[];
        };
        message: string;
    }>;
    createRole(principal: AdminPrincipal, dto: CreateRoleDto): Promise<{
        data: {
            id: string;
            name: string;
            description: string | null;
            createdAt: string;
            adminCount: number;
            locked: boolean;
            permissions: string[];
        };
        message: string;
    }>;
    updateRole(principal: AdminPrincipal, id: string, dto: UpdateRoleDto): Promise<{
        data: {
            id: string;
            name: string;
            description: string | null;
            createdAt: string;
            adminCount: number;
            locked: boolean;
            permissions: string[];
        };
        message: string;
    }>;
    setRolePermissions(principal: AdminPrincipal, id: string, dto: UpdateRoleDto): Promise<{
        data: {
            id: string;
            name: string;
            description: string | null;
            createdAt: string;
            adminCount: number;
            locked: boolean;
            permissions: string[];
        };
        message: string;
    }>;
    deleteRole(principal: AdminPrincipal, id: string): Promise<{
        data: {
            id: string;
            deleted: boolean;
        };
        message: string;
    }>;
    admins(query: AdminQueryDto): Promise<{
        data: {
            items: {
                id: string;
                email: string;
                name: string;
                status: string;
                createdAt: string;
                updatedAt: string;
                roles: {
                    id: string;
                    name: string;
                    description: string | null;
                }[];
            }[];
        };
        message: string;
    }>;
    createAdmin(principal: AdminPrincipal, dto: CreateAdminDto): Promise<{
        data: {
            id: string;
            email: string;
            name: string;
            status: string;
            createdAt: string;
            updatedAt: string;
            roles: {
                id: string;
                name: string;
                description: string | null;
            }[];
        };
        message: string;
    }>;
    updateAdmin(principal: AdminPrincipal, id: string, dto: UpdateAdminDto): Promise<{
        data: {
            id: string;
            email: string;
            name: string;
            status: string;
            createdAt: string;
            updatedAt: string;
            roles: {
                id: string;
                name: string;
                description: string | null;
            }[];
        };
        message: string;
    }>;
    setAdminRoles(principal: AdminPrincipal, id: string, dto: UpdateAdminDto): Promise<{
        data: {
            id: string;
            email: string;
            name: string;
            status: string;
            createdAt: string;
            updatedAt: string;
            roles: {
                id: string;
                name: string;
                description: string | null;
            }[];
        };
        message: string;
    }>;
}
export {};
