/**
 * User Management Methods Mixin
 */
import type { User, Notification, SearchProfilesResponse } from '../../models/interfaces';
import type { OxyServicesBase } from '../OxyServices.base';
import { type PaginationParams } from '../../utils/apiUtils';
export declare function OxyServicesUserMixin<T extends typeof OxyServicesBase>(Base: T): {
    new (...args: any[]): {
        /**
         * Get profile by username
         */
        getProfileByUsername(username: string): Promise<User>;
        /**
         * Search user profiles
         */
        searchProfiles(query: string, pagination?: PaginationParams): Promise<SearchProfilesResponse>;
        /**
         * Get profile recommendations
         */
        getProfileRecommendations(): Promise<Array<{
            id: string;
            username: string;
            name?: {
                first?: string;
                last?: string;
                full?: string;
            };
            description?: string;
            _count?: {
                followers: number;
                following: number;
            };
            [key: string]: any;
        }>>;
        /**
         * Get user by ID
         */
        getUserById(userId: string): Promise<User>;
        /**
         * Get current user
         */
        getCurrentUser(): Promise<User>;
        /**
         * Update user profile
         */
        updateProfile(updates: Record<string, any>): Promise<User>;
        /**
         * Get privacy settings for a user
         * @param userId - The user ID (defaults to current user)
         */
        getPrivacySettings(userId?: string): Promise<any>;
        /**
         * Update privacy settings
         * @param settings - Partial privacy settings object
         * @param userId - The user ID (defaults to current user)
         */
        updatePrivacySettings(settings: Record<string, any>, userId?: string): Promise<any>;
        /**
         * Request account verification
         */
        requestAccountVerification(reason: string, evidence?: string): Promise<{
            message: string;
            requestId: string;
        }>;
        /**
         * Download account data export
         */
        downloadAccountData(format?: "json" | "csv"): Promise<Blob>;
        /**
         * Delete account permanently
         * @param password - User password for confirmation
         * @param confirmText - Confirmation text (usually username)
         */
        deleteAccount(password: string, confirmText: string): Promise<{
            message: string;
        }>;
        /**
         * Update user by ID (admin function)
         */
        updateUser(userId: string, updates: Record<string, any>): Promise<User>;
        /**
         * Follow a user
         */
        followUser(userId: string): Promise<{
            success: boolean;
            message: string;
        }>;
        /**
         * Unfollow a user
         */
        unfollowUser(userId: string): Promise<{
            success: boolean;
            message: string;
        }>;
        /**
         * Get follow status
         */
        getFollowStatus(userId: string): Promise<{
            isFollowing: boolean;
        }>;
        /**
         * Get user followers
         */
        getUserFollowers(userId: string, pagination?: PaginationParams): Promise<{
            followers: User[];
            total: number;
            hasMore: boolean;
        }>;
        /**
         * Get user following
         */
        getUserFollowing(userId: string, pagination?: PaginationParams): Promise<{
            following: User[];
            total: number;
            hasMore: boolean;
        }>;
        /**
         * Get notifications
         */
        getNotifications(): Promise<Notification[]>;
        /**
         * Get unread notification count
         */
        getUnreadCount(): Promise<number>;
        /**
         * Create notification
         */
        createNotification(data: Partial<Notification>): Promise<Notification>;
        /**
         * Mark notification as read
         */
        markNotificationAsRead(notificationId: string): Promise<void>;
        /**
         * Mark all notifications as read
         */
        markAllNotificationsAsRead(): Promise<void>;
        /**
         * Delete notification
         */
        deleteNotification(notificationId: string): Promise<void>;
        httpService: import("../HttpService").HttpService;
        cloudURL: string;
        config: import("../OxyServices.base").OxyConfig;
        makeRequest<T_1>(method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE", url: string, data?: any, options?: import("../HttpService").RequestOptions): Promise<T_1>;
        getBaseURL(): string;
        getClient(): import("../HttpService").HttpService;
        getMetrics(): {
            totalRequests: number;
            successfulRequests: number;
            failedRequests: number;
            cacheHits: number;
            cacheMisses: number;
            averageResponseTime: number;
        };
        clearCache(): void;
        clearCacheEntry(key: string): void;
        getCacheStats(): {
            size: number;
            hits: number;
            misses: number;
            hitRate: number;
        };
        getCloudURL(): string;
        setTokens(accessToken: string, refreshToken?: string): void;
        clearTokens(): void;
        getCurrentUserId(): string | null;
        hasValidToken(): boolean;
        getAccessToken(): string | null;
        waitForAuth(timeoutMs?: number): Promise<boolean>;
        withAuthRetry<T_1>(operation: () => Promise<T_1>, operationName: string, options?: {
            maxRetries?: number;
            retryDelay?: number;
            authTimeoutMs?: number;
        }): Promise<T_1>;
        validate(): Promise<boolean>;
        handleError(error: unknown): Error;
        healthCheck(): Promise<{
            status: string;
            users?: number;
            timestamp?: string;
            [key: string]: any;
        }>;
    };
    __resetTokensForTests(): void;
} & T;
//# sourceMappingURL=OxyServices.user.d.ts.map