/**
 * Device Methods Mixin
 */
import type { OxyServicesBase } from '../OxyServices.base';
export declare function OxyServicesDevicesMixin<T extends typeof OxyServicesBase>(Base: T): {
    new (...args: any[]): {
        /**
         * Register a new device
         * @param deviceData - Device information
         * @returns Registered device object
         */
        registerDevice(deviceData: any): Promise<any>;
        /**
         * Get all devices for the current user
         * @returns Array of user devices
         */
        getUserDevices(): Promise<any[]>;
        /**
         * Remove a device
         * @param deviceId - The device ID to remove
         */
        removeDevice(deviceId: string): Promise<void>;
        /**
         * Get device sessions for a given session ID
         * Note: Not cached by default to ensure fresh data
         * @param sessionId - The session ID
         * @returns Array of device sessions
         */
        getDeviceSessions(sessionId: string): Promise<any[]>;
        /**
         * Logout all device sessions
         * @param sessionId - The session ID
         * @param deviceId - Optional device ID to target
         * @param excludeCurrent - Whether to exclude the current session
         * @returns Logout result
         */
        logoutAllDeviceSessions(sessionId: string, deviceId?: string, excludeCurrent?: boolean): Promise<any>;
        /**
         * Update device name
         * @param sessionId - The session ID
         * @param deviceName - New device name
         * @returns Updated device object
         */
        updateDeviceName(sessionId: string, deviceName: string): Promise<any>;
        /**
         * Get security information (TOTP status, backup codes count)
         * @returns Security information object
         */
        getSecurityInfo(): Promise<{
            twoFactorEnabled: boolean;
            totpCreatedAt: string | null;
            backupCodesCount: number;
            recoveryEmail: string | null;
        }>;
        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.devices.d.ts.map