import { WordPressClient } from '../utils/WordPressClient';
import { IImageMetadata, IWordPressImage } from '../interfaces/WordPressInterfaces';
import { IImageDownloadOptions } from './ImageDownloadService';
/**
 * Opções para upload de mídia
 */
export interface IMediaUploadOptions {
    /**
     * Nome do arquivo (opcional, será extraído da URL se não fornecido)
     */
    filename?: string;
    /**
     * Tipo MIME do arquivo (opcional, será determinado a partir da URL se não fornecido)
     */
    mimeType?: string;
    /**
     * Metadados da imagem
     */
    metadata?: IImageMetadata;
    /**
     * Opções para download da imagem (se upload a partir de URL)
     */
    downloadOptions?: IImageDownloadOptions;
}
/**
 * Serviço para upload de imagens para a biblioteca de mídia do WordPress
 */
export declare class MediaUploadService {
    private client;
    private downloadService;
    private urlService;
    /**
     * Construtor do serviço
     * @param client Cliente WordPress
     */
    constructor(client: WordPressClient);
    /**
     * Faz upload de uma imagem para a biblioteca de mídia a partir de uma URL
     * @param imageUrl URL da imagem
     * @param options Opções de upload
     * @returns Imagem carregada
     */
    uploadFromUrl(imageUrl: string, options?: IMediaUploadOptions): Promise<IWordPressImage>;
    /**
     * Faz upload de dados binários de imagem para a biblioteca de mídia
     * @param buffer Buffer contendo os dados da imagem
     * @param options Opções de upload
     * @returns Imagem carregada
     */
    uploadBuffer(buffer: Buffer, options?: IMediaUploadOptions): Promise<IWordPressImage>;
    /**
     * Atualiza os metadados de uma imagem existente
     * @param imageId ID da imagem na biblioteca de mídia
     * @param metadata Metadados a serem atualizados
     * @returns Imagem atualizada
     */
    updateImageMetadata(imageId: number, metadata: IImageMetadata): Promise<IWordPressImage>;
    /**
     * Obtém uma mídia específica da biblioteca
     * @param mediaId ID da mídia
     * @returns Informações da mídia
     */
    getMedia(mediaId: number): Promise<IWordPressImage>;
    /**
     * Formata a resposta da API para o formato de IWordPressImage
     * @param response Resposta da API
     * @returns Imagem formatada
     */
    private formatMediaResponse;
}
