import { DataScopeType, Prisma } from '@prisma/client';
import { PrismaService } from "../../../core/database/prisma/prisma.service";
import { IamAuditService } from "../../../common/services/iam-audit.service";
interface CreateDataScopeInput {
    code: string;
    name: string;
    scopeType: DataScopeType;
    rules?: Prisma.InputJsonValue | null | undefined;
}
interface UpdateDataScopeInput {
    name?: string;
    scopeType?: DataScopeType;
    rules?: Prisma.InputJsonValue | null | undefined;
}
interface BindRoleDataScopeInput {
    roleId: string;
    dataScopeId: string;
    resource: string;
}
export declare class DataScopeAdminService {
    private readonly prisma;
    private readonly audit;
    constructor(prisma: PrismaService, audit: IamAuditService);
    list(): Prisma.PrismaPromise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        isBuiltIn: boolean;
        rules: Prisma.JsonValue | null;
        scopeType: import("@prisma/client").$Enums.DataScopeType;
    }[]>;
    listByRole(roleId: string): Promise<({
        dataScope: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            isBuiltIn: boolean;
            rules: Prisma.JsonValue | null;
            scopeType: import("@prisma/client").$Enums.DataScopeType;
        };
    } & {
        id: string;
        createdAt: Date;
        resource: string;
        roleId: string;
        dataScopeId: string;
    })[]>;
    create(input: CreateDataScopeInput, actor: string): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        isBuiltIn: boolean;
        rules: Prisma.JsonValue | null;
        scopeType: import("@prisma/client").$Enums.DataScopeType;
    }>;
    update(id: string, input: UpdateDataScopeInput, actor: string): Promise<{
        code: string;
        id: string;
        createdAt: Date;
        name: string;
        updatedAt: Date;
        isBuiltIn: boolean;
        rules: Prisma.JsonValue | null;
        scopeType: import("@prisma/client").$Enums.DataScopeType;
    }>;
    remove(id: string, actor: string): Promise<{
        ok: boolean;
    }>;
    listMatrix(roleId?: string): Promise<({
        role: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            description: string | null;
            isBuiltIn: boolean;
            enabled: boolean;
        };
        dataScope: {
            code: string;
            id: string;
            createdAt: Date;
            name: string;
            updatedAt: Date;
            isBuiltIn: boolean;
            rules: Prisma.JsonValue | null;
            scopeType: import("@prisma/client").$Enums.DataScopeType;
        };
    } & {
        id: string;
        createdAt: Date;
        resource: string;
        roleId: string;
        dataScopeId: string;
    })[]>;
    bind(input: BindRoleDataScopeInput, actor: string): Promise<{
        id: string;
        createdAt: Date;
        resource: string;
        roleId: string;
        dataScopeId: string;
    }>;
    unbind(id: string, actor: string): Promise<{
        ok: boolean;
    }>;
    private assertNotCustom;
}
export {};
