import { PermissionMatrix, PermissionMatrixEntry, PermissionAction, PermissionScope, PermissionCondition } from './types'; /** * All available permission actions. */ export declare const PERMISSION_ACTIONS: PermissionAction[]; /** * CRUD actions subset. */ export declare const CRUD_ACTIONS: PermissionAction[]; /** * Read-only actions. */ export declare const READ_ONLY_ACTIONS: PermissionAction[]; /** * Full access actions. */ export declare const FULL_ACCESS_ACTIONS: PermissionAction[]; /** * Builder for creating permission matrices. * * @example * ```typescript * const matrix = new PermissionMatrixBuilder() * .setDefaultBehavior('deny') * .setConflictResolution('deny-wins') * .addEntry({ * roleId: 'admin', * resource: '*', * allowedActions: ['*'], * }) * .addEntry({ * roleId: 'user', * resource: 'documents', * allowedActions: ['create', 'read', 'update'], * scope: 'own', * }) * .addEntry({ * roleId: 'user', * resource: 'documents', * allowedActions: ['read'], * scope: 'team', * }) * .build(); * ``` */ export declare class PermissionMatrixBuilder { private entries; private defaultBehavior; private conflictResolution; private version; /** * Set the default behavior when no entry matches. */ setDefaultBehavior(behavior: 'deny' | 'allow'): this; /** * Set the conflict resolution strategy. */ setConflictResolution(strategy: PermissionMatrix['conflictResolution']): this; /** * Set the matrix version. */ setVersion(version: string): this; /** * Add a permission matrix entry. */ addEntry(entry: PermissionMatrixEntry): this; /** * Add multiple entries at once. */ addEntries(entries: PermissionMatrixEntry[]): this; /** * Add full access for a role. */ grantFullAccess(roleId: string): this; /** * Add read-only access for a role on a resource. */ grantReadOnly(roleId: string, resource: string, scope?: PermissionScope): this; /** * Add CRUD access for a role on a resource. */ grantCRUD(roleId: string, resource: string, scope?: PermissionScope): this; /** * Deny specific actions for a role on a resource. */ denyActions(roleId: string, resource: string, actions: PermissionAction[]): this; /** * Add conditional entry. */ addConditionalEntry(entry: Omit, conditions: PermissionCondition[]): this; /** * Clear all entries. */ clear(): this; /** * Remove entries for a specific role. */ removeRoleEntries(roleId: string): this; /** * Remove entries for a specific resource. */ removeResourceEntries(resource: string): this; /** * Build the permission matrix. */ build(): PermissionMatrix; } /** * Create a standard permission matrix for common applications. * * @param options - Configuration options * @returns Configured permission matrix */ export declare function createStandardMatrix(options: { resources: string[]; adminRole?: string; managerRole?: string; userRole?: string; guestRole?: string; }): PermissionMatrix; /** * Create a healthcare-specific permission matrix. * * @returns Healthcare permission matrix */ export declare function createHealthcareMatrix(): PermissionMatrix; /** * Merge multiple permission matrices. * * @param matrices - Matrices to merge * @param options - Merge options * @returns Merged permission matrix */ export declare function mergePermissionMatrices(matrices: PermissionMatrix[], options?: { defaultBehavior?: 'deny' | 'allow'; conflictResolution?: PermissionMatrix['conflictResolution']; }): PermissionMatrix; /** * Filter permission matrix entries by role. * * @param matrix - Permission matrix * @param roleIds - Role IDs to filter by * @returns Filtered entries */ export declare function filterEntriesByRole(matrix: PermissionMatrix, roleIds: string[]): PermissionMatrixEntry[]; /** * Filter permission matrix entries by resource. * * @param matrix - Permission matrix * @param resource - Resource to filter by * @returns Filtered entries */ export declare function filterEntriesByResource(matrix: PermissionMatrix, resource: string): PermissionMatrixEntry[]; /** * Get all resources defined in a permission matrix. * * @param matrix - Permission matrix * @returns Unique resource list */ export declare function getDefinedResources(matrix: PermissionMatrix): string[]; /** * Get all roles defined in a permission matrix. * * @param matrix - Permission matrix * @returns Unique role list */ export declare function getDefinedRoles(matrix: PermissionMatrix): string[]; /** * Validate a permission matrix for consistency. * * @param matrix - Permission matrix to validate * @returns Validation errors if any */ export declare function validatePermissionMatrix(matrix: PermissionMatrix): string[]; /** * Create a new permission matrix builder. * * @returns New PermissionMatrixBuilder instance */ export declare function createPermissionMatrixBuilder(): PermissionMatrixBuilder;