export interface SubModule { sub_module_name: string; } export interface ModuleAccess { module_name: string; sub_modules?: SubModule[]; } export interface UserData { module_access?: ModuleAccess[]; } export interface MenuItem { bacSubModuleName?: string | string[]; submenu?: MenuItem[]; [key: string]: any; } export interface Permission { [key: string]: any; } export declare class StorageUtils { /** * Retrieves and parses user data from localStorage * @returns Parsed user data or null if not found */ static getUserData(): UserData | null; /** * Retrieves and parses role permissions from localStorage * @returns Parsed permissions object */ static getRolePermissions(): Permission; } export declare class ModuleAccessService { /** * Filters modules by allowed module names and adds dashboard sub-module * @param moduleNames - Array of allowed module names * @param userData - User data containing module access * @returns Filtered modules with dashboard added */ static getAccessibleSubModules(moduleNames: string[], userData: UserData | null, permissions: Permission): ModuleAccess[]; /** * Extracts unique sub-module names from modules * @param modules - Array of module access objects * @returns Set of unique sub-module names */ static extractSubModuleNames(modules: ModuleAccess[]): Set; /** * Matches sub-module names with permission keys * @param subModuleNames - Set of sub-module names * @param permissions - Permission object * @returns Set of matching sub-module names */ static getMatchingSubModules(subModuleNames: Set, permissions: Permission): Set; } export declare class MenuFilterService { private static checkSubModuleAccess; private static filterHrmsSubmenu; /** * Recursively filters menu items based on accessible sub-modules * @param menu - Array of menu items * @param accessibleSubModules - Set of accessible sub-module names * @returns Filtered menu array */ static filterMenuByAccess(menu: MenuItem[], accessibleSubModules: Set): MenuItem[]; } export declare class MenuFilter { /** * Filters menu based on user permissions and module access * @param menu - Menu items to filter * @param allowedModules - Array of allowed module names * @returns Filtered menu items */ static filterByModuleAccess(menu: MenuItem[], allowedModules: string[]): MenuItem[]; }