import { UsersService } from './services/users.service';
import { UpdateFullUserDto, UpdateUserDto } from './users.validation';
import { IFullUser } from './users.interface';
import { AdminService } from './services/admin.service';
import { SuperAdminService } from './services/super-admin.service';
export declare class UserController {
    private userService;
    private adminService;
    private superAdminService;
    constructor(userService: UsersService, adminService: AdminService, superAdminService: SuperAdminService);
    searchOrFilterUsers(page: number, limit: number, searchTerm: string, name: string, email: string, sortBy: string, sortOrder: number): Promise<{
        users: any;
        totalUsers: any;
    }>;
    exportAllUsers(): Promise<(import("mongoose").FlattenMaps<{
        _id: string | import("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?: {
            user: any;
            plan: "free" | "premium";
            aiModel: import("../subscriptions/subscriptions.interface").TAIModel;
            type: null | "monthly" | "yearly";
            startDate: Date;
            endDate: Date;
            status: "active" | "inactive" | "suspended" | "cancelled" | "expired" | "pending";
            queryLimit: number;
            imageLimit: number;
            softImageLimit: number;
            fileLimit: number;
            lastResetDate: Date;
            payMeSubscriptionId: string;
            isCancelRequested: boolean;
            lastResetAt: Date;
            isPromptEnhancerEnabled: boolean;
            enabledImageGeneration: {
                gpt: boolean;
                claude: boolean;
                gemini: boolean;
            };
            enabledRealtimeSearch: {
                gpt: boolean;
                claude: boolean;
                gemini: boolean;
            };
            imageGenerationLimits: {
                allModels: number;
                minimax: number;
                fluxSchnell: number;
            };
            createdAt: Date;
            updatedAt: Date;
        };
        userAnalytics: {
            user: any;
            messageSent: {
                date: string;
                count: number;
            }[];
            imageGenerated: {
                date: string;
                count: number;
            }[];
            urlRead: {
                date: string;
                count: number;
            }[];
            fileRead: {
                date: string;
                count: number;
            }[];
            messageBlocked: {
                date: string;
                count: number;
            }[];
            imageBlocked: {
                date: string;
                count: number;
            }[];
            createdAt: Date;
            updatedAt: Date;
        };
        settings: {
            isFilter: boolean;
            isImageInsideChat: boolean;
        };
        memory: {
            content: string;
            messageId?: import("mongoose").Types.ObjectId;
            date_created: Date;
        }[];
        groupTag?: string;
        phoneNumber?: string;
        createdAt: Date;
        updatedAt: Date;
        timezone?: string;
        googleDrive: {
            accessToken: string;
            refreshToken: string;
            expiresAt: number;
        };
        checkPassword: (plainPassword: string, hashedPassword: string) => Promise<boolean>;
    }> & Required<{
        _id: string | import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    })[]>;
    findOne(userId: string): Promise<import("./users.model").User>;
    updateOne(userId: string, body: UpdateFullUserDto): Promise<import("mongoose").Document<unknown, {}, import("./users.model").User, {}, {}> & import("./users.model").User & Required<{
        _id: string | import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }>;
    deleteImage(userId: string): Promise<void>;
    findMe(user: any): Promise<import("./users.model").User>;
    updatePartialUser(body: UpdateUserDto, user: IFullUser): Promise<import("mongoose").Document<unknown, {}, import("./users.model").User, {}, {}> & import("./users.model").User & Required<{
        _id: string | import("mongoose").Types.ObjectId;
    }> & {
        __v: number;
    }>;
    deleteCurrentUser(user: IFullUser): Promise<void>;
    findUsersImages(page?: number, limit?: number): Promise<{
        data: any;
        totalRecords: any;
    }>;
    connectGoogleDrive(user: IFullUser, code: string): Promise<string>;
    getGoogleDrive(user: IFullUser): Promise<any>;
    disconnectGoogleDrive(user: IFullUser): Promise<any>;
    getMemories(user: IFullUser): Promise<import("./users.model").MemoryItem[]>;
    deleteMemory(user: IFullUser, memoryIndex: string): Promise<{
        message: string;
    }>;
    deleteAllMemories(user: IFullUser): Promise<{
        message: string;
    }>;
}
