import type { RBACConfig } from "./config.types"; import type { Permission, RoleKey, RolesConfig } from "./roles.types"; import type { LogLevel } from "./utils.types"; export interface RBACState { roles: RolesConfig; userRoles: RoleKey[]; isLoading: boolean; isInitialized: boolean; } export interface VueRBACPluginOptions { config?: Partial; logLevel?: LogLevel; } export interface RBAC { options: Required; state: RBACState; init(): Promise; fetchRolesAndPermissions(): Promise; setUserRoles(roles: RoleKey | RoleKey[]): void; hasPermission(permission: Permission): boolean; hasRole(role: RoleKey): boolean; hasAnyPermission(permissions: Permission[]): boolean; hasAllPermissions(permissions: Permission[]): boolean; invalidateCache(): void; } export interface IUseRBAC { state: RBACState; setUserRoles(roles: RoleKey | RoleKey[]): void; hasRole(role: RoleKey): boolean; hasPermission(permission: Permission): boolean; hasAnyPermission(permissions: Permission[]): boolean; hasAllPermissions(permissions: Permission[]): boolean; invalidateCache(): void; }