import type { RoleDto, UserDetailDto, TenantMemberDto, UserConsolidatedRoleDto } from '@/services/api/adminApi';
import type { ResourceNode, RolePermissions, PermissionInheritanceInfo, InheritanceMap, MatrixFilters } from '@/components/admin/permissions/types';
export interface UseUserPermissionsOptions {
    userId: string;
    /** Optional tenant context - when provided, loads tenant-scoped roles */
    tenantId?: string;
}
export interface UseUserPermissionsResult {
    loading: boolean;
    error: string | null;
    user: UserDetailDto | null;
    userRoles: RoleDto[];
    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) => RoleDto[];
    reloadData: () => Promise<void>;
    /** Whether we're in tenant-scoped mode */
    isTenantMode: boolean;
    /** Tenant member data (when in tenant mode) */
    tenantMember: TenantMemberDto | null;
    /** Assign roles to tenant member (when in tenant mode) */
    assignTenantRoles: (roleIds: string[]) => Promise<void>;
    /** Consolidated roles with tenant/source info (global mode only) */
    consolidatedRoles: UserConsolidatedRoleDto[];
}
export declare function useUserPermissions(options: UseUserPermissionsOptions): UseUserPermissionsResult;
//# sourceMappingURL=useUserPermissions.d.ts.map