import type { RoleDto } from '@/services/api/adminApi';
import type { GroupDetailDto } from '@/services/api/groupsApi';
/**
 * Extended RoleDto with tenant scope information from GroupRoleDto.
 */
export interface GroupRoleWithScope extends RoleDto {
    /** The tenant this role assignment is scoped to (null = global) */
    tenantId: string | null;
    /** The tenant name for display */
    tenantName: string | null;
    /** Whether this is a global role assignment */
    isGlobal: boolean;
}
import type { ResourceNode, RolePermissions, PermissionInheritanceInfo, InheritanceMap, MatrixFilters } from '@/components/admin/permissions/types';
export interface UseGroupPermissionsOptions {
    groupId: string;
    /** Optional tenant context - when provided, loads tenant-scoped roles */
    tenantId?: string;
}
export interface UseGroupPermissionsResult {
    loading: boolean;
    error: string | null;
    group: GroupDetailDto | null;
    groupRoles: GroupRoleWithScope[];
    resources: ResourceNode[];
    assignments: RolePermissions;
    inheritanceMap: InheritanceMap;
    effectivePermissions: Set<string>;
    filters: MatrixFilters;
    filteredResources: ResourceNode[];
    contexts: string[];
    applications: {
        context: string;
        app: string;
        label: string;
    }[];
    modules: {
        context: string;
        app: string;
        module: string;
        label: string;
    }[];
    updateFilters: (filters: Partial<MatrixFilters>) => void;
    getPermissionInheritance: (roleId: string, permissionId: string) => PermissionInheritanceInfo;
    getPermissionSources: (permissionId: string) => GroupRoleWithScope[];
    reloadData: () => Promise<void>;
    /** Whether we're in tenant-scoped mode */
    isTenantMode: boolean;
}
export declare function useGroupPermissions(options: UseGroupPermissionsOptions): UseGroupPermissionsResult;
//# sourceMappingURL=useGroupPermissions.d.ts.map