import { INodeProperties } from 'n8n-workflow';
import { IFaqItem, ICta } from './WordPressInterfaces';
/**
 * Recurso que o nó pode manipular
 */
export type WordPressResource = 'post' | 'page';
/**
 * Operações disponíveis para recursos
 */
export type WordPressOperation = 'create' | 'get' | 'getAll' | 'update' | 'delete';
/**
 * Status possíveis para um post/página
 */
export type WordPressPostStatus = 'publish' | 'draft' | 'pending' | 'private' | 'future';
/**
 * Interface para definição de campo no nó
 */
export interface INodeField {
    /**
     * Propriedades do campo
     */
    field: INodeProperties;
    /**
     * Operações em que o campo deve ser exibido
     */
    operations?: WordPressOperation[];
    /**
     * Recursos em que o campo deve ser exibido
     */
    resources?: WordPressResource[];
}
/**
 * Interface para parâmetros de criação de post/página
 */
export interface ICreatePostParams {
    /**
     * Título do post/página
     */
    title: string;
    /**
     * Conteúdo do post/página (HTML)
     */
    content: string;
    /**
     * Status do post/página
     */
    status: WordPressPostStatus;
    /**
     * Trecho/resumo do post/página
     */
    excerpt?: string;
    /**
     * Categorias (nomes ou IDs) (apenas para posts)
     */
    categories?: (string | number)[];
    /**
     * Tags (nomes ou IDs) (apenas para posts)
     */
    tags?: (string | number)[];
    /**
     * URL da imagem destacada
     */
    featured_image_url?: string;
    /**
     * Data de publicação programada (formato ISO)
     */
    date?: string;
    /**
     * Slug personalizado
     */
    slug?: string;
    /**
     * Título meta para SEO
     */
    meta_title?: string;
    /**
     * Descrição meta para SEO
     */
    meta_description?: string;
    /**
     * Palavras-chave meta para SEO
     */
    meta_keywords?: string;
    /**
     * Título Open Graph para social media
     */
    og_title?: string;
    /**
     * Descrição Open Graph para social media
     */
    og_description?: string;
    /**
     * Título Twitter para social media
     */
    twitter_title?: string;
    /**
     * Descrição Twitter para social media
     */
    twitter_description?: string;
    /**
     * FAQs para o post/página
     */
    faq?: IFaqItem[];
    /**
     * CTA para o post/página
     */
    cta?: ICta;
    /**
     * Habilitar atualização de metadados SEO
     */
    updateSeoMetadata?: boolean;
    /**
     * Habilitar atualização de FAQs
     */
    updateFaqs?: boolean;
    /**
     * Habilitar atualização de CTA
     */
    updateCta?: boolean;
}
/**
 * Interface para parâmetros de atualização de post/página
 */
export interface IUpdatePostParams extends ICreatePostParams {
    /**
     * ID do post/página a ser atualizado
     */
    id: number;
}
/**
 * Interface para parâmetros de obtenção de post/página
 */
export interface IGetPostParams {
    /**
     * ID do post/página a ser obtido
     */
    id: number;
    /**
     * Incluir metadados SEO
     */
    includeSeoMetadata?: boolean;
    /**
     * Incluir FAQs
     */
    includeFaqs?: boolean;
    /**
     * Incluir CTA
     */
    includeCta?: boolean;
}
/**
 * Interface para parâmetros de obtenção de múltiplos posts/páginas
 */
export interface IGetAllPostsParams {
    /**
     * Número de itens por página
     */
    limit?: number;
    /**
     * Página a ser recuperada
     */
    page?: number;
    /**
     * Termo de busca
     */
    search?: string;
    /**
     * IDs de categorias para filtrar (apenas para posts)
     */
    categories?: number[];
    /**
     * IDs de tags para filtrar (apenas para posts)
     */
    tags?: number[];
    /**
     * Status dos posts/páginas a serem recuperados
     */
    status?: WordPressPostStatus;
    /**
     * Incluir metadados SEO
     */
    includeSeoMetadata?: boolean;
    /**
     * Incluir FAQs
     */
    includeFaqs?: boolean;
    /**
     * Incluir CTA
     */
    includeCta?: boolean;
}
/**
 * Interface para parâmetros de exclusão de post/página
 */
export interface IDeletePostParams {
    /**
     * ID do post/página a ser excluído
     */
    id: number;
    /**
     * Forçar exclusão permanente (true) ou mover para lixeira (false)
     */
    force?: boolean;
}
