import { Equatable, Serializable } from "./../utilities"; import { Actions } from "./../actions"; import { Resource } from "./../resource"; import { GrantSet, Permission, PermissionsList } from "./../permission"; import { Scopable } from "./../scopable"; /** * WhenFn * * A function to determine additional conditions for granting permission. */ export type WhenFn = (entity: PermissibleEntity, action: Actions, resource: Resource) => boolean; /** * PermissibleEntity * * A Permissible Entity */ export declare abstract class PermissibleEntity implements Scopable, Equatable, Serializable { readonly name: string; readonly scope: string; readonly permissions: Permission[]; constructor(name: string, permissions: Permission[], scope?: string); get permissionsList(): string[]; /** * buildPermissionsMap() * @param permissions the array of permissions to build the map from * @returns The created Permissions Map. */ protected buildPermissionsMap(permissions: Permission[]): Map; /** * can * * An object containing a list of permissions to verify against to determine if an actiion is permitted. */ abstract get can(): PermissionsList; /** * cannot * * An object containing a list of permissions to verify against to determine if an actiion is not permitted. */ abstract get cannot(): PermissionsList; equals(suspect: any): boolean; serialize(): string; /** * serializePermissions() * * serializes the permissions. * @returns the serialized permissions */ protected serializePermissions(): string; toString(): string; }