/// <reference types="mongoose/types/aggregate" />
/// <reference types="mongoose/types/callback" />
/// <reference types="mongoose/types/collection" />
/// <reference types="mongoose/types/connection" />
/// <reference types="mongoose/types/cursor" />
/// <reference types="mongoose/types/document" />
/// <reference types="mongoose/types/error" />
/// <reference types="mongoose/types/expressions" />
/// <reference types="mongoose/types/helpers" />
/// <reference types="mongoose/types/middlewares" />
/// <reference types="mongoose/types/indexes" />
/// <reference types="mongoose/types/models" />
/// <reference types="mongoose/types/mongooseoptions" />
/// <reference types="mongoose/types/pipelinestage" />
/// <reference types="mongoose/types/populate" />
/// <reference types="mongoose/types/query" />
/// <reference types="mongoose/types/schemaoptions" />
/// <reference types="mongoose/types/schematypes" />
/// <reference types="mongoose/types/session" />
/// <reference types="mongoose/types/types" />
/// <reference types="mongoose/types/utility" />
/// <reference types="mongoose/types/validation" />
/// <reference types="mongoose/types/virtuals" />
/// <reference types="mongoose/types/inferschematype" />
/// <reference types="mongoose/types/inferrawdoctype" />
import { UserDocument, UserModel } from '../models/user';
import { Types } from 'mongoose';
import { AuthRequest } from '../../types';
import { IAuthConfigurationMetadata, IUserAdditionalField } from '@qelos/global-types';
export declare function getValidMetadata(metadata?: any, additionalFields?: IUserAdditionalField[]): {};
export declare function getUser(query: any): Promise<import("mongoose").Document<unknown, {}, UserDocument> & UserDocument & Required<{
    _id: unknown;
}>>;
export declare function updateUser(user: UserDocument | {
    _id: Types.ObjectId | string;
    tenant: string;
}, { username, password, fullName, roles, firstName, lastName, birthDate, profileImage, metadata }: {
    username?: any;
    password?: any;
    fullName?: any;
    roles?: any;
    firstName?: any;
    lastName?: any;
    birthDate?: any;
    profileImage?: any;
    metadata?: any;
}, authConfig?: IAuthConfigurationMetadata): Promise<UserDocument | import("mongoose").UpdateWriteOpResult>;
export declare function deleteUser(userId: string, tenant: string): Promise<{
    code: string;
    info: string;
}>;
export declare function comparePassword(user: UserModel, password: string): Promise<UserModel>;
export declare function setToken({ user, workspace }: {
    user: UserDocument;
    workspace?: any;
}, authType: string): any;
export declare function updateToken(user: UserModel, authType: string, currentPayload: {
    tokenIdentifier: any;
    workspace?: {
        _id: any;
        name: any;
        roles: any;
    };
}, newToken: string): Promise<UserDocument>;
export declare function deleteToken(tenant: string, userId: string, authType: string, token: string, isRelatedToken: boolean): Promise<boolean>;
export declare function getUserIfTokenExists(tenant: string, userId: string, tokenId: string): Promise<any>;
export declare function clearOldTokens(userId: string): Promise<void>;
export declare function getCookieTokenName(tenant: string): string;
export declare function getCookieTokenValue(req: AuthRequest): any;
export declare function getUserMetadata(userId: string, tenant: string): Promise<any>;
