import { WordPressClient } from '../utils/WordPressClient';
import { IWordPressPost } from '../interfaces/WordPressInterfaces';
/**
 * Opções para a criação/atualização de conteúdo
 */
export interface IPostUpdateOptions {
    /**
     * Atualizar metadados SEO do AI GROWTH - SEO WP
     * Default: false
     */
    updateSeoMetadata?: boolean;
    /**
     * Atualizar FAQs do AI GROWTH - SEO WP
     * Default: false
     */
    updateFaqs?: boolean;
    /**
     * Atualizar CTA do AI GROWTH - SEO WP
     * Default: false
     */
    updateCta?: boolean;
    /**
     * Atualizar imagem destacada
     */
    updateFeaturedImage?: boolean;
}
/**
 * Serviço para criação e atualização de posts e páginas no WordPress
 */
export declare class PostCreateService {
    private client;
    private seoService;
    private faqService;
    private ctaService;
    private metadataService;
    private featuredImageService;
    private taxonomyService;
    /**
     * Construtor do serviço
     * @param client Cliente WordPress
     */
    constructor(client: WordPressClient);
    /**
     * Cria um novo post no WordPress
     * @param post Dados do post a ser criado
     * @param options Opções da operação
     * @returns Post criado
     */
    createPost(post: IWordPressPost, options?: IPostUpdateOptions): Promise<IWordPressPost>;
    /**
     * Cria uma nova página no WordPress
     * @param page Dados da página a ser criada
     * @param options Opções da operação
     * @returns Página criada
     */
    createPage(page: IWordPressPost, options?: IPostUpdateOptions): Promise<IWordPressPost>;
    /**
     * Atualiza um post existente no WordPress
     * @param postId ID do post a ser atualizado
     * @param post Dados do post
     * @param options Opções da operação
     * @returns Post atualizado
     */
    updatePost(postId: number, post: Partial<IWordPressPost>, options?: IPostUpdateOptions): Promise<IWordPressPost>;
    /**
     * Atualiza uma página existente no WordPress
     * @param pageId ID da página a ser atualizada
     * @param page Dados da página
     * @param options Opções da operação
     * @returns Página atualizada
     */
    updatePage(pageId: number, page: Partial<IWordPressPost>, options?: IPostUpdateOptions): Promise<IWordPressPost>;
    /**
     * Exclui um post do WordPress
     * @param postId ID do post a ser excluído
     * @param force Forçar exclusão permanente (true) ou mover para lixeira (false)
     * @returns true se excluído com sucesso
     */
    deletePost(postId: number, force?: boolean): Promise<boolean>;
    /**
     * Exclui uma página do WordPress
     * @param pageId ID da página a ser excluída
     * @param force Forçar exclusão permanente (true) ou mover para lixeira (false)
     * @returns true se excluída com sucesso
     */
    deletePage(pageId: number, force?: boolean): Promise<boolean>;
    /**
     * Processa os metadados SEO, FAQ e CTA
     * @param postId ID do post/página
     * @param post Dados do post/página
     * @param options Opções da operação
     * @returns void
     */
    private processMetadata;
    /**
     * Processa a imagem destacada de um post/página
     * @param postId ID do post/página
     * @param post Dados do post/página
     * @returns void
     */
    private processFeaturedImage;
    /**
     * Formata um post/página para o formato esperado pela API WordPress
     * @param post Dados do post
     * @param type Tipo de conteúdo (post ou page)
     * @returns Payload formatado para a API
     */
    private formatPostForApi;
    /**
     * Obtém um post/página completo com metadados
     * @param id ID do post/página
     * @param type Tipo de conteúdo (post ou page)
     * @param options Opções da operação
     * @returns Post/página completo
     */
    private getCompletePost;
    /**
     * Verifica se um post/página existe no WordPress
     * @param id ID do post/página
     * @param type Tipo de conteúdo (post ou page)
     * @returns O post/página se existir
     * @throws WordPressError se não existir
     */
    private validateResourceExists;
}
