import { type Ability } from "@casl/ability"; import { type PrismaQuery } from "@casl/prisma"; import type { Action, PermissionContext, PermissionProvider, PermissionRule, Resource, RoleDefinition } from "../types"; type AppAbility = Ability<[Action, Resource]>; export declare class CASLProvider implements PermissionProvider { private abilities; private roleDefinitions; constructor(roles?: RoleDefinition[]); defineRole(definition: RoleDefinition): void; getRulesForRole(role: string): PermissionRule[]; buildAbilityFor(context: PermissionContext): AppAbility; can(context: PermissionContext, action: Action, resource: Resource, subject?: unknown, field?: string): boolean; cannot(context: PermissionContext, action: Action, resource: Resource, subject?: unknown, field?: string): boolean; private collectRulesForContext; private applyRule; private getRoleHierarchy; private resolveConditions; private resolvePath; private resolveSubject; private getCacheKey; clearCache(): void; } export declare function createCASLProvider(roles?: RoleDefinition[]): CASLProvider; export declare function buildAbilityFor(context: PermissionContext, roles?: RoleDefinition[]): AppAbility; export declare function createPrismaAbility(context: PermissionContext, roles?: RoleDefinition[]): AppAbility; export declare function getPrismaQuery(ability: AppAbility, action: Action, resource: Resource): PrismaQuery; export {}; //# sourceMappingURL=casl.d.ts.map