/** * Reactive permissions store — current user roles + workspace PermissionMap. * * - Singleton: `import { permissions } from '@r2digisolutions/components'` * - Prefer `` in the tree for scoped values via context * * @example * ```ts * permissions.configure({ * roles: ['member'], * map: { member: { projects: ['read', 'write'] } } * }); * permissions.can('projects', 'write'); // true * ``` */ import { type PermissionCheck, type PermissionLevel, type PermissionMap } from './permissions.js'; export type { PermissionCheck, PermissionLevel, PermissionMap }; export declare const PERMISSIONS_CONTEXT_KEY = "r2-permissions"; export interface PermissionsState { roles: string[]; map: PermissionMap; can: (resource: string, level?: PermissionLevel) => boolean; hasRole: (role: string) => boolean; hasAnyRole: (roles: string[]) => boolean; hasAllRoles: (roles: string[]) => boolean; check: (check: PermissionCheck) => boolean; levels: (resource: string) => PermissionLevel[]; setRoles: (roles: string[]) => void; setMap: (map: PermissionMap) => void; configure: (options: { roles?: string[]; map?: PermissionMap; }) => void; } /** Global default store (overridden in-tree by ``). */ export declare const permissions: PermissionsState; /** * Nearest `` API, or the global `permissions` store. */ export declare function getPermissionsContext(): PermissionsState;