import type { RoleDto, UserDetailDto, TenantMemberDto, UserConsolidatedRoleDto } from '@/services/api/adminApi';
import { type UseEntityPermissionsResult } from './useEntityPermissions';
import type { PermissionInheritanceInfo } from '@/components/platform/administration/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: UseEntityPermissionsResult<RoleDto>['resources'];
    assignments: UseEntityPermissionsResult<RoleDto>['assignments'];
    inheritanceMap: UseEntityPermissionsResult<RoleDto>['inheritanceMap'];
    effectivePermissions: UseEntityPermissionsResult<RoleDto>['effectivePermissions'];
    filters: UseEntityPermissionsResult<RoleDto>['filters'];
    filteredResources: UseEntityPermissionsResult<RoleDto>['filteredResources'];
    applications: UseEntityPermissionsResult<RoleDto>['applications'];
    modules: UseEntityPermissionsResult<RoleDto>['modules'];
    updateFilters: UseEntityPermissionsResult<RoleDto>['updateFilters'];
    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