export interface Role { id: string; name: string; description?: string; inherits?: string[]; permissions: string[]; createdAt: Date; updatedAt: Date; } export interface Department { id: string; name: string; description?: string; permissions: string[]; parent?: string; createdAt: Date; updatedAt: Date; } export interface Permission { id: string; name: string; resource: string; action: string; description?: string; createdAt: Date; } export interface RoleHierarchy { [roleName: string]: { inherits?: string[]; permissions: string[]; }; } export interface DepartmentHierarchy { [departmentName: string]: { permissions: string[]; parent?: string; }; } export interface PermissionCheck { hasPermission: boolean; source?: 'role' | 'department' | 'explicit'; inheritedFrom?: string; } export interface UserPermissions { roles: string[]; departments: string[]; explicitPermissions: string[]; effectivePermissions: string[]; } export interface PermissionTemplate { id: string; name: string; description?: string; roles?: string[]; departments?: string[]; permissions?: string[]; excludePermissions?: string[]; }