import type { ResourceNode, ApplicationGroup, ApplicationGroupWithSections, GroupedResourcesWithSections, SectionWithResources, PermissionStatus } from '@/components/platform/administration/permissions/types';
/**
 * Groups resources by application hierarchy.
 * Only includes modules (level === 'module'), not sections.
 */
export declare function groupResourcesByApplication(resources: ResourceNode[]): ApplicationGroup[];
/**
 * Groups resources by application hierarchy, including sections and resources.
 * Returns a flat structure: application -> modules -> sections -> resources
 * Used by the Assignments page (context level removed).
 */
export declare function groupByApplicationWithSections(resources: ResourceNode[]): ApplicationGroupWithSections[];
/**
 * @deprecated Context level removed — use groupByApplicationWithSections instead.
 * Wraps applications in a context layer (context = applicationLabel) for backward compatibility.
 */
export declare function groupResourcesWithSections(resources: ResourceNode[]): GroupedResourcesWithSections[];
/**
 * Calculates the permission status for a resource based on granted permissions.
 * Returns both the status and the count of granted permissions.
 * For modules, this only counts the module's own permissions, not child sections.
 */
export declare function calculatePermissionStatus(resource: ResourceNode, isPermissionGranted: (permissionId: string) => boolean): {
    status: PermissionStatus;
    grantedCount: number;
};
/**
 * Calculates the permission status for a module including all child sections and resources.
 * Returns the total count across module, sections, and resources.
 */
export declare function calculateModuleWithSectionsStatus(module: ResourceNode, sections: SectionWithResources[], isPermissionGranted: (permissionId: string) => boolean): {
    status: PermissionStatus;
    grantedCount: number;
    totalCount: number;
};
/**
 * Filters resources by status.
 */
export declare function filterResourcesByStatus(resources: ResourceNode[], statusFilters: Set<PermissionStatus>, getStatus: (resource: ResourceNode) => PermissionStatus): ResourceNode[];
/**
 * Returns the background color class for a cell based on permission status.
 */
export declare function getPermissionCellBackground(status: PermissionStatus): string;
//# sourceMappingURL=permissionUtils.d.ts.map