import { Declaracao } from '../../declaracoes';
import { Construto } from '../../construtos';
import { RegraEstilizacao } from '../../interfaces/estilizador-comum-interface';
import { TipoParadigma } from '../../lexador/mapeamento-paradigmas';
/**
 * Opções para a regra de paradigma consistente.
 */
export interface OpcoesParadigmaConsistente {
    /**
     * Paradigma a ser enforçado.
     * - 'imperativo': Aceita apenas formas imperativas (escreva, leia, etc.)
     * - 'infinitivo': Aceita apenas formas infinitivas (escrever, ler, etc.)
     * - 'ambos': Aceita ambas as formas (padrão)
     */
    paradigma?: TipoParadigma;
}
/**
 * Regra que enforça consistência de paradigma em palavras reservadas.
 *
 * Em português, instruções podem ser expressas no imperativo (escreva, leia)
 * ou no infinitivo (escrever, ler). Esta regra permite escolher um paradigma
 * único para manter a consistência do código.
 *
 * Exemplos:
 * - Modo imperativo: `escreva()`, `leia()`, `tente { } pegue { }`
 * - Modo infinitivo: `escrever()`, `ler()`, `tentar { } pegar { }`
 */
export declare class RegraParadigmaConsistente implements RegraEstilizacao {
    nome: string;
    descricao: string;
    private opcoes;
    private mapaLexemaParaParadigma;
    constructor(opcoes?: OpcoesParadigmaConsistente);
    aplicarEmDeclaracao(declaracao: Declaracao): Declaracao;
    aplicarEmConstruto(construto: Construto): Construto;
    /**
     * Processa uma declaração que tem um símbolo específico.
     */
    private processarDeclaracaoComSimbolo;
    /**
     * Processa um construto que tem um símbolo específico.
     */
    private processarConstrutoComSimbolo;
}
//# sourceMappingURL=paradigma-consistente.d.ts.map