import { Ability, AnyAbility, AbilityTuple, AbilityBuilder, Subject } from '@casl/ability'; import { AnyClass } from '@casl/ability/dist/types/types'; import { DefaultActions } from '../actions.enum'; import { AuthorizableUser } from './authorizable-user.interface'; export declare class UserAbilityBuilder = AuthorizableUser> extends AbilityBuilder { user: User; permissions: AnyPermissions; constructor(user: User, permissions: AnyPermissions, AbilityType: AnyClass>>); extend: (role: string) => void; permissionsFor(role: string): void; } export type DefinePermissions = AuthorizableUser> = (builder: UserAbilityBuilder) => void; export type Permissions = AuthorizableUser> = Partial>>; export type AnyPermissions = AuthorizableUser> = Permissions;