import { HttpStatus } from '@nestjs/common';
import { DatabaseService } from '../../config';
import { PermissionUserContext } from '../../common/access-control/permission-context.types';
import { PermissionResolverService } from '../../common/access-control/permission-resolver.service';
import { createAccessRoleDto, updateAccessRoleDto } from './access-control.dto';
import { PermissionValue } from './permission-catalog';
export declare class AccessControlService {
    private readonly db;
    private readonly permissionResolver;
    constructor(db: DatabaseService, permissionResolver: PermissionResolverService);
    getPermissionCatalog(): {
        data: import("./permission-catalog").PermissionModuleDefinition[];
        message: string;
        status: HttpStatus;
        details: {
            total_modules: number;
            total_permissions: number;
        };
    };
    private slugify;
    private getRolePermissionsMap;
    private mergePermissionMap;
    private formatRoleResponse;
    private isDeadlockError;
    private buildPermissionRows;
    private persistRolePermissions;
    private ensureOwnerPermissionKeysExist;
    ensureDefaultRoles(owner_id: string): Promise<any>;
    getRoles(owner_id: string): Promise<{
        data: any[];
        message: string;
        status: HttpStatus;
        details: {
            total_roles: number;
        };
    }>;
    getRoleById(roleId: string, owner_id: string): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    createRole(data: createAccessRoleDto, owner_id: string): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    updateRole(roleId: string, data: updateAccessRoleDto, owner_id: string): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    deleteRole(roleId: string, owner_id: string): Promise<{
        data: any;
        message: string;
        status: HttpStatus;
        details: any;
    }>;
    resolveAccessRoleIdBySlug(owner_id: string, slug: string): Promise<any>;
    getMyPermissions(ctx: PermissionUserContext): Promise<{
        data: {
            permissions: Record<string, PermissionValue>;
            access_role_id: string;
            role_slug: any;
        };
        message: string;
        status: HttpStatus;
        details: any;
    }>;
}
