import { Media, MediaFolder, CreateFolderRequest, UploadRequest, ImageProcessingOptions, MediaListParams, MediaStats, BulkMediaOperation, BulkOperationResult, MediaScanResult } from '../types/media';
import { BaseResource } from './base';
export declare class MediaResource extends BaseResource {
    /**
     * Get list of media files
     */
    list(params?: MediaListParams): Promise<{
        data: Media[];
    }>;
    /**
     * Get media by ID
     */
    getById(mediaId: string): Promise<Media>;
    /**
     * Upload file
     */
    upload(data: UploadRequest): Promise<Media>;
    /**
     * Delete media
     */
    delete(mediaId: string): Promise<void>;
    /**
     * Update media
     */
    update(mediaId: string, data: {
        name?: string;
        folder_id?: string;
        tags?: string[];
        metadata?: Record<string, any>;
    }): Promise<Media>;
    /**
     * Process image
     */
    processImage(mediaId: string, options: ImageProcessingOptions): Promise<Media>;
    /**
     * List folders
     */
    listFolders(): Promise<{
        data: MediaFolder[];
    }>;
    /**
     * Create folder
     */
    createFolder(data: CreateFolderRequest): Promise<MediaFolder>;
    /**
     * Update folder
     */
    updateFolder(folderId: string, data: {
        name: string;
    }): Promise<MediaFolder>;
    /**
     * Delete folder
     */
    deleteFolder(folderId: string, recursive?: boolean): Promise<void>;
    /**
     * Get media statistics
     */
    getStats(): Promise<MediaStats>;
    /**
     * Bulk operation on media files
     */
    bulkOperation(operation: BulkMediaOperation): Promise<BulkOperationResult>;
    /**
     * Get upload URL for direct upload
     */
    getUploadUrl(data: {
        filename: string;
        content_type: string;
        size: number;
    }): Promise<{
        upload_url: string;
        expires_at: string;
        fields?: Record<string, string>;
    }>;
    /**
     * Scan media for viruses/malware
     */
    scanMedia(mediaId: string): Promise<MediaScanResult>;
    /**
     * Generate thumbnail
     */
    generateThumbnail(mediaId: string, options?: {
        width?: number;
        height?: number;
        format?: 'jpeg' | 'png' | 'webp';
    }): Promise<Media>;
    /**
     * Get media download URL
     */
    getDownloadUrl(mediaId: string, options?: {
        expires_in?: number;
        filename?: string;
    }): Promise<{
        download_url: string;
        expires_at: string;
    }>;
    /**
     * Search media
     */
    search(query: string, params?: Omit<MediaListParams, 'search'>): Promise<{
        data: Media[];
    }>;
}
