/**
 * Privacy Methods Mixin (Blocked & Restricted Users)
 */
import type { BlockedUser, RestrictedUser } from '../../models/interfaces';
import type { OxyServicesBase } from '../OxyServices.base';
export declare function OxyServicesPrivacyMixin<T extends typeof OxyServicesBase>(Base: T): {
    new (...args: any[]): {
        /**
         * Extract user ID from blocked/restricted user object
         */
        extractUserId(userIdField: string | {
            _id: string;
            username?: string;
            avatar?: string;
        }): string;
        /**
         * Check if a user is in a list (blocked or restricted)
         */
        isUserInList<T_1 extends BlockedUser | RestrictedUser>(userId: string, getUserList: () => Promise<T_1[]>, getIdField: (item: T_1) => string | {
            _id: string;
            username?: string;
            avatar?: string;
        }): Promise<boolean>;
        /**
         * Get list of blocked users
         * @returns Array of blocked users
         */
        getBlockedUsers(): Promise<BlockedUser[]>;
        /**
         * Block a user
         * @param userId - The user ID to block
         * @returns Success message
         */
        blockUser(userId: string): Promise<{
            message: string;
        }>;
        /**
         * Unblock a user
         * @param userId - The user ID to unblock
         * @returns Success message
         */
        unblockUser(userId: string): Promise<{
            message: string;
        }>;
        /**
         * Check if a user is blocked
         * @param userId - The user ID to check
         * @returns True if the user is blocked, false otherwise
         */
        isUserBlocked(userId: string): Promise<boolean>;
        /**
         * Get list of restricted users
         * @returns Array of restricted users
         */
        getRestrictedUsers(): Promise<RestrictedUser[]>;
        /**
         * Restrict a user (limit their interactions without fully blocking)
         * @param userId - The user ID to restrict
         * @returns Success message
         */
        restrictUser(userId: string): Promise<{
            message: string;
        }>;
        /**
         * Unrestrict a user
         * @param userId - The user ID to unrestrict
         * @returns Success message
         */
        unrestrictUser(userId: string): Promise<{
            message: string;
        }>;
        /**
         * Check if a user is restricted
         * @param userId - The user ID to check
         * @returns True if the user is restricted, false otherwise
         */
        isUserRestricted(userId: string): Promise<boolean>;
        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.privacy.d.ts.map