import { Declaracao } from '../../declaracoes';
import { RegraEstilizacaoInterface } from '../../interfaces/estilizador';
/**
 * Opções de convenção de nomenclatura.
 */
export interface OpcoesConvencaoNomenclatura {
    /**
     * Convenção para variáveis.
     * - 'caixaCamelo': primeiraPalavraMinuscula
     * - 'caixa_cobra': primeira_palavra_minuscula
     * - 'CaixaPascal': PrimeiraPalavraMaiuscula
     */
    variavel?: 'caixaCamelo' | 'caixa_cobra' | 'CaixaPascal';
    /**
     * Convenção para constantes.
     * - 'CAIXA_ALTA': TODAS_MAIUSCULAS
     * - 'caixaCamelo': primeiraPalavraMinuscula
     */
    constante?: 'CAIXA_ALTA' | 'caixaCamelo';
    /**
     * Convenção para funções.
     * - 'caixaCamelo': primeiraPalavraMinuscula
     * - 'caixa_cobra': primeira_palavra_minuscula
     * - 'CaixaPascal': PrimeiraPalavraMaiuscula
     */
    funcao?: 'caixaCamelo' | 'caixa_cobra' | 'CaixaPascal';
}
/**
 * Regra que enforça convenções de nomenclatura.
 *
 * Exemplos:
 * - Variáveis em caixaCamelo: `var meuNome` (não `var MeuNome` ou `var meu_nome`)
 * - Constantes em CAIXA_ALTA: `constante PI_VALOR` (não `constante piValor`)
 * - Funções em caixaCamelo: `função calcularTotal()` (não `função CalcularTotal()`)
 */
export declare class RegraConvencaoNomenclatura implements RegraEstilizacaoInterface {
    nome: string;
    descricao: string;
    private opcoes;
    constructor(opcoes?: OpcoesConvencaoNomenclatura);
    aplicarEmDeclaracao(declaracao: Declaracao): Declaracao;
    /**
     * Aplica convenção em declaração Var.
     */
    private aplicarConvencaoVar;
    /**
     * Aplica convenção em declaração Const.
     */
    private aplicarConvencaoConst;
    /**
     * Aplica convenção em declaração de Função.
     */
    private aplicarConvencaoFuncao;
    /**
     * Converte um nome para a convenção especificada.
     */
    private converterNome;
    /**
     * Converte nome para camelCase.
     */
    private paraCamelCase;
    /**
     * Converte nome para snake_case.
     */
    private paraSnakeCase;
    /**
     * Converte nome para PascalCase.
     */
    private paraPascalCase;
    /**
     * Converte nome para UPPER_CASE.
     */
    private paraUpperCase;
    /**
     * Valida se um nome está na convenção especificada.
     */
    validarNome(nome: string, convencao: string): boolean;
}
//# sourceMappingURL=convencao-nomenclatura.d.ts.map