///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
///
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;