import mongoose, { Document } from 'mongoose';
import { Subscription } from '../subscriptions/subscriptions.model';
import { UserAnalytics } from '../user-analytics/user-analytics.model';
export type UserDocument = User & Document;
export declare class Settings {
    isFilter: boolean;
    isImageInsideChat: boolean;
}
export declare class MemoryItem {
    content: string;
    messageId?: mongoose.Types.ObjectId;
    date_created: Date;
}
export declare class User {
    _id: string | mongoose.Types.ObjectId;
    name: string;
    email: string;
    password: string;
    role?: 'user' | 'admin' | 'super_admin';
    imageUrl?: string;
    isVerified?: boolean;
    isBlocked?: boolean;
    isDeleted?: boolean;
    language?: string;
    subscription?: Subscription;
    userAnalytics: UserAnalytics;
    settings: Settings;
    memory: MemoryItem[];
    groupTag?: string;
    phoneNumber?: string;
    createdAt: Date;
    updatedAt: Date;
    timezone?: string;
    googleDrive: {
        accessToken: string;
        refreshToken: string;
        expiresAt: number;
    };
    checkPassword: (plainPassword: string, hashedPassword: string) => Promise<boolean>;
}
export declare const UserSchema: mongoose.Schema<User, mongoose.Model<User, any, any, any, mongoose.Document<unknown, any, User, any, {}> & User & Required<{
    _id: string | mongoose.Types.ObjectId;
}> & {
    __v: number;
}, any>, {}, {}, {}, {}, mongoose.DefaultSchemaOptions, User, mongoose.Document<unknown, {}, mongoose.FlatRecord<User>, {}, mongoose.DefaultSchemaOptions> & mongoose.FlatRecord<User> & Required<{
    _id: string | mongoose.Types.ObjectId;
}> & {
    __v: number;
}>;
