/// export interface ChildrenProps { hasRequiredPermissions: boolean; hasRequiredRoles: boolean; } export interface RequiredRBAC { requiredRoles?: R[]; requiredPermissions?: P[]; } export interface RBACComponentProps extends RequiredRBAC { children: React.ReactElement | (({ hasRequiredPermissions, hasRequiredRoles, }: ChildrenProps) => React.ReactElement); fallback?: React.ReactNode; blockedComponentPropsOverride?: Record; hideWhenBlocked?: boolean; oneOf?: boolean; } export interface RBACContextState { existingRolesNorm: Record; existingPermissionsNorm: Record; existingPermissions: P[]; existingRoles: R[]; blockedRoles: Record; addedRoles: Record; blockedPermissions: Record; addedPermissions: Record; } export interface RBACContextProps extends RBACContextState { addPermissions: (added: string[]) => void; blockPermissions: (blocked: string[]) => void; addRoles: (added: string[]) => void; blockRoles: (blocked: string[]) => void; resetRoles: () => void; resetPermissions: () => void; resetAll: () => void; } export interface RBACProviderProps { roles?: R[]; permissions?: P[]; children: ((props: RBACContextProps) => React.ReactNode) | React.ReactNode; }