import type { AccountStorageUsageResponse, AssetUrlResponse, AssetVariant } from '../../models/interfaces';
import type { OxyServicesBase } from '../OxyServices.base';
export declare function OxyServicesAssetsMixin<T extends typeof OxyServicesBase>(Base: T): {
    new (...args: any[]): {
        /**
         * Delete file
         */
        deleteFile(fileId: string): Promise<any>;
        /**
         * Get file download URL (synchronous - uses stream endpoint for images to avoid ORB blocking)
         */
        getFileDownloadUrl(fileId: string, variant?: string, expiresIn?: number): string;
        /**
         * Get file download URL asynchronously (returns signed URL directly from CDN)
         */
        getFileDownloadUrlAsync(fileId: string, variant?: string, expiresIn?: number): Promise<string>;
        /**
         * List user files
         */
        listUserFiles(limit?: number, offset?: number): Promise<{
            files: any[];
            total: number;
            hasMore: boolean;
        }>;
        /**
         * Get account storage usage (server-side usage aggregated from assets)
         */
        getAccountStorageUsage(): Promise<AccountStorageUsageResponse>;
        /**
         * Get file content as text
         */
        getFileContentAsText(fileId: string, variant?: string): Promise<string>;
        /**
         * Get file content as blob
         */
        getFileContentAsBlob(fileId: string, variant?: string): Promise<Blob>;
        /**
         * Get batch access to multiple files
         */
        getBatchFileAccess(fileIds: string[], context?: string): Promise<Record<string, any>>;
        /**
         * Get download URLs for multiple files efficiently
         */
        getFileDownloadUrls(fileIds: string[], context?: string): Promise<Record<string, string>>;
        /**
         * Upload raw file data
         */
        uploadRawFile(file: File | Blob, visibility?: "private" | "public" | "unlisted", metadata?: Record<string, any>): Promise<any>;
        /**
         * Upload file using Central Asset Service
         */
        assetUpload(file: File, visibility?: "private" | "public" | "unlisted", metadata?: Record<string, any>, onProgress?: (progress: number) => void): Promise<any>;
        /**
         * Link asset to an entity
         */
        assetLink(fileId: string, app: string, entityType: string, entityId: string, visibility?: "private" | "public" | "unlisted", webhookUrl?: string): Promise<any>;
        /**
         * Unlink asset from an entity
         */
        assetUnlink(fileId: string, app: string, entityType: string, entityId: string): Promise<any>;
        /**
         * Get asset metadata
         */
        assetGet(fileId: string): Promise<any>;
        /**
         * Get asset URL (CDN or signed URL)
         */
        assetGetUrl(fileId: string, variant?: string, expiresIn?: number): Promise<AssetUrlResponse>;
        /**
         * Restore asset from trash
         */
        assetRestore(fileId: string): Promise<any>;
        /**
         * Delete asset with optional force
         */
        assetDelete(fileId: string, force?: boolean): Promise<any>;
        /**
         * Get list of available variants for an asset
         */
        assetGetVariants(fileId: string): Promise<AssetVariant[]>;
        /**
         * Update asset visibility
         */
        assetUpdateVisibility(fileId: string, visibility: "private" | "public" | "unlisted"): Promise<any>;
        uploadAvatar(file: File, userId: string, app?: string): Promise<any>;
        uploadProfileBanner(file: File, userId: string, app?: string): Promise<any>;
        getAssetUrlCacheTTL(expiresIn?: number): number;
        fetchAssetDownloadUrl(fileId: string, variant?: string, cacheTTL?: number, expiresIn?: number): Promise<string | null>;
        fetchAssetContent(url: string, type: "text"): Promise<string>;
        fetchAssetContent(url: string, type: "blob"): Promise<Blob>;
        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.assets.d.ts.map