/// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// import { Types } from 'mongoose'; import { PrincipalType } from 'librechat-data-provider'; import type { TPrincipalSearchResult } from 'librechat-data-provider'; import type { ClientSession } from 'mongoose'; import type { IGroup, IUser } from '~/types'; export declare function createUserGroupMethods(mongoose: typeof import('mongoose')): { findGroupById: (groupId: string | Types.ObjectId, projection?: Record, session?: ClientSession) => Promise; findGroupByExternalId: (idOnTheSource: string, source?: 'entra' | 'local', projection?: Record, session?: ClientSession) => Promise; findGroupsByNamePattern: (namePattern: string, source?: 'entra' | 'local' | null, limit?: number, session?: ClientSession) => Promise; findGroupsByMemberId: (userId: string | Types.ObjectId, session?: ClientSession) => Promise; createGroup: (groupData: Partial, session?: ClientSession) => Promise; upsertGroupByExternalId: (idOnTheSource: string, source: 'entra' | 'local', updateData: Partial, session?: ClientSession) => Promise; addUserToGroup: (userId: string | Types.ObjectId, groupId: string | Types.ObjectId, session?: ClientSession) => Promise<{ user: IUser; group: IGroup | null; }>; removeUserFromGroup: (userId: string | Types.ObjectId, groupId: string | Types.ObjectId, session?: ClientSession) => Promise<{ user: IUser; group: IGroup | null; }>; removeUserFromAllGroups: (userId: string | Types.ObjectId) => Promise; findGroupByQuery: (filter: Record, session?: ClientSession) => Promise; updateGroupById: (groupId: string | Types.ObjectId, data: Record, session?: ClientSession) => Promise; bulkUpdateGroups: (filter: Record, update: Record, options?: { session?: ClientSession; }) => Promise; getUserGroups: (userId: string | Types.ObjectId, session?: ClientSession) => Promise; getUserPrincipals: (params: { userId: string | Types.ObjectId; role?: string | null; }, session?: ClientSession) => Promise>; syncUserEntraGroups: (userId: string | Types.ObjectId, entraGroups: Array<{ id: string; name: string; description?: string; email?: string; }>, session?: ClientSession) => Promise<{ user: IUser; addedGroups: IGroup[]; removedGroups: IGroup[]; }>; searchPrincipals: (searchPattern: string, limitPerType?: number, typeFilter?: Array | null, session?: ClientSession) => Promise; calculateRelevanceScore: (item: TPrincipalSearchResult, searchPattern: string) => number; sortPrincipalsByRelevance: (results: T[]) => T[]; listGroups: (filter?: { source?: 'local' | 'entra'; search?: string; limit?: number; offset?: number; }, session?: ClientSession) => Promise; countGroups: (filter?: { source?: 'local' | 'entra'; search?: string; }, session?: ClientSession) => Promise; deleteGroup: (groupId: string | Types.ObjectId, session?: ClientSession) => Promise; removeMemberById: (groupId: string | Types.ObjectId, memberId: string, session?: ClientSession) => Promise; }; export type UserGroupMethods = ReturnType;