import { Declaracao } from '../declaracoes';
import { EstilizadorInterface, OpcoesFormatacaoEstilizadorInterface, RegraEstilizacaoInterface, ViolacaoEstiloInterface } from '../interfaces/estilizador';
/**
 * Estilizador de código para Delégua.
 * Aplica transformações no AST para enforcar convenções e melhorar qualidade do código.
 */
export declare class EstilizadorDelegua implements EstilizadorInterface {
    regras: RegraEstilizacaoInterface[];
    private violacoes;
    private modoValidacao;
    constructor(regras?: RegraEstilizacaoInterface[]);
    adicionarRegra(regra: RegraEstilizacaoInterface): void;
    removerRegra(nomeRegra: string): void;
    /**
     * Aplica as regras de estilização recursivamente em uma declaração.
     * @param declaracao A declaração a ser estilizada.
     * @returns A declaração estilizada.
     */
    private estilizarDeclaracao;
    /**
     * Verifica se uma declaração foi modificada comparando propriedades relevantes.
     */
    private declaracaoFoiModificada;
    /**
     * Clona uma declaração de forma superficial.
     */
    private clonarDeclaracao;
    /**
     * Estiliza construtos dentro de uma declaração.
     * @param declaracao A declaração cujos campos serão estilizados.
     */
    private estilizarCamposDeclaracao;
    /**
     * Aplica as regras de estilização em um construto.
     * @param construto O construto a ser estilizado.
     * @returns O construto estilizado.
     */
    private estilizarConstruto;
    /**
     * Estiliza campos dentro de um construto.
     * @param construto O construto cujos campos serão estilizados.
     */
    private estilizarCamposConstruto;
    /**
     * Verifica se um objeto é uma Declaração.
     */
    private ehDeclaracao;
    /**
     * Verifica se um objeto é um Construto.
     */
    private ehConstruto;
    estilizar(declaracoes: Declaracao[]): Declaracao[];
    validar(declaracoes: Declaracao[]): ViolacaoEstiloInterface[];
    estilizarEFormatar(declaracoes: Declaracao[], opcoesFormatacao?: OpcoesFormatacaoEstilizadorInterface): string;
}
//# sourceMappingURL=estilizador-delegua.d.ts.map