import type { RoleDto } from '@/services/api/adminApi';
export interface ResourcePermission {
    id: string;
    action: string;
    path: string;
}
export interface ResourceNode {
    id: string;
    path: string;
    label: string;
    applicationLabel: string;
    moduleLabel: string;
    parentModuleLabel?: string;
    parentModuleId?: string;
    parentSectionLabel?: string;
    parentSectionId?: string;
    level: 'module' | 'section' | 'resource';
    permissions: ResourcePermission[];
    totalPermissions: number;
    childSections?: ResourceNode[];
    childResources?: ResourceNode[];
}
export interface PermissionInheritanceInfo {
    isDirect: boolean;
    isInherited: boolean;
    inheritedFromPath?: string;
    inheritedFromId?: string;
}
export interface RolePermissions {
    [roleId: string]: Set<string>;
}
export interface InheritanceMap {
    [roleId: string]: Map<string, PermissionInheritanceInfo>;
}
export interface MatrixFilters {
    selectedRoleIds: string[];
    resourceSearch: string;
    applicationFilter: string;
    moduleFilter: string;
}
export type PermissionStatus = 'all' | 'some' | 'read-only' | 'none';
export type MatrixMode = 'roles' | 'user' | 'user-editable';
export interface PermissionMatrixColumn {
    id: string;
    name: string;
    shortName: string;
    isSystem: boolean;
    isEditable: boolean;
    roleSource?: RoleDto;
}
export interface UserPermissionInfo {
    permissionId: string;
    isGranted: boolean;
    sourceRoles: RoleDto[];
    isDirect: boolean;
    isInherited: boolean;
    inheritedFromPath?: string;
}
export interface SectionWithResources {
    section: ResourceNode;
    resources: ResourceNode[];
}
export interface ModuleWithSections {
    module: ResourceNode;
    sections: SectionWithResources[];
}
export interface ApplicationGroup {
    application: string;
    modules: ResourceNode[];
}
export interface ApplicationGroupWithSections {
    application: string;
    modules: ModuleWithSections[];
}
//# sourceMappingURL=types.d.ts.map