import { Signal } from "@angular/core"; import * as i0 from "@angular/core"; export declare function usePermsSignal(viewCodes: string[], keys: K[]): Signal; export declare abstract class SdAppStructureProvider { abstract items: TSdAppStructureItem[]; abstract usableModules: Signal; abstract permRecord: Signal | undefined>; usableMenus: Signal[]>; usableFlatMenus: Signal[]>; getPermissionsByStructure(items: TSdAppStructureItem[], codeChain?: string[]): ISdPermission[]; getTitleByFullCode(fullCode: string): string; getItemChainByFullCode(fullCode: string): TSdAppStructureItem[]; getPermsByFullCode(fullCodes: string[], permKeys: K[]): K[]; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵprov: i0.ɵɵInjectableDeclaration>; } export declare abstract class SdAppStructureUtils { static getTitleByFullCode(items: TSdAppStructureItem[], fullCode: string): string; static getPermsByFullCode(items: TSdAppStructureItem[], fullCodes: string[], permKeys: K[], permRecord: Record | undefined): K[]; static getItemChainByFullCode(items: TSdAppStructureItem[], fullCode: string): TSdAppStructureItem[]; static getMenus(items: TSdAppStructureItem[], codeChain: string[], usableModules: TModule[] | undefined, permRecord: Record | undefined): ISdMenu[]; static getFlatMenus(items: TSdAppStructureItem[], usableModules: TModule[] | undefined, permRecord: Record | undefined): ISdFlatMenu[]; static getPermissions(items: TSdAppStructureItem[], codeChain: string[], usableModules: TModule[] | undefined): ISdPermission[]; static getFlatPermissions(items: TSdAppStructureItem[], usableModules: TModule[] | undefined): ISdFlatPermission[]; private static _isUsableModulesChain; private static _isUsableModules; } export type TSdAppStructureItem = ISdAppStructureGroupItem | ISdAppStructureLeafItem; interface ISdAppStructureGroupItem { code: string; title: string; modules?: TModule[]; requiredModules?: TModule[]; icon?: string; children: TSdAppStructureItem[]; } interface ISdAppStructureLeafItem { code: string; title: string; modules?: TModule[]; requiredModules?: TModule[]; perms?: ("use" | "edit")[]; subPerms?: ISdAppStructureSubPermission[]; icon?: string; isNotMenu?: boolean; } interface ISdAppStructureSubPermission { code: string; title: string; modules?: TModule[]; requiredModules?: TModule[]; perms: ("use" | "edit")[]; } export interface ISdMenu { title: string; codeChain: string[]; icon: string | undefined; modules: TModule[] | undefined; children: ISdMenu[] | undefined; } export interface ISdFlatMenu { titleChain: string[]; codeChain: string[]; modulesChain: TModule[][]; } export interface ISdPermission { title: string; codeChain: string[]; modules: TModule[] | undefined; perms: ("use" | "edit")[] | undefined; children: ISdPermission[] | undefined; } export interface ISdFlatPermission { titleChain: string[]; codeChain: string[]; modulesChain: TModule[][]; } export {};