import React from 'react'; import { useRBACContext, useGetPermissionsState, useGetRolesState, useHasRoles, useHasPermissions, } from './RBAC.hooks'; import { RBACWrapper } from './RBACWrapper'; import { withRBAC } from './withRBAC'; import { RBACProvider } from './RBACContext'; import { RBACComponentProps, RBACContextProps, RBACContextState, RBACProviderProps, } from './RBAC.types'; export function RBACFactory(): { RBAC: { Provider: React.ComponentClass< RBACProviderProps, RBACContextState >; Wrapper: (props: RBACComponentProps) => JSX.Element; with: ( WrappedComponent: React.ComponentType, rbacProps: Omit, 'children'> ) => (props: object) => JSX.Element; useContext: () => RBACContextProps; useGetPermissionsState: ( permissions: P[] ) => ReturnType; useGetRolesState: (roles: R[]) => ReturnType; useHasRoles: (roles: R[], oneOf?: boolean) => boolean; useHasPermissions: (permissions: P[], oneOf?: boolean) => boolean; }; } { return { RBAC: { Provider: RBACProvider, with: withRBAC, Wrapper: RBACWrapper, useContext: useRBACContext, useGetPermissionsState, useGetRolesState, useHasRoles, useHasPermissions, }, }; }