import { AvaliadorSintaticoInterface, SimboloInterface } from '../../interfaces';
import { ConstrutoInterface } from '../../interfaces/construtos/construto-interface';
import { Chamada, FuncaoConstruto, Leia, ImportarComoConstruto } from '../../construtos';
import { ErroAvaliadorSintatico } from '../erro-avaliador-sintatico';
import { Classe, Continua, Enquanto, Escolha, Escreva, Expressao, Fazer, FuncaoDeclaracao, Para, Sustar, Retorna, Se, Tente, Var, Const, Declaracao } from '../../declaracoes';
import { RetornoAvaliadorSintaticoInterface } from '../../interfaces/retornos/retorno-avaliador-sintatico-interface';
import { RetornoLexadorInterface } from '../../interfaces/retornos/retorno-lexador-interface';
/**
 * O avaliador sintático (_Parser_) é responsável por transformar os símbolos do Lexador em estruturas de alto nível.
 * Essas estruturas de alto nível são as partes que executam lógica de programação de fato.
 *
 * Esta implementação tenta seguir à risca o que está atualmente em https://github.com/eguatech/egua/blob/master/src/parser.js.
 */
export declare class AvaliadorSintaticoEguaClassico implements AvaliadorSintaticoInterface<SimboloInterface, Declaracao> {
    simbolos: SimboloInterface[];
    erros: ErroAvaliadorSintatico[];
    hashArquivo: number;
    atual: number;
    blocos: number;
    superclasseAtual: string | undefined;
    constructor(simbolos?: SimboloInterface[]);
    declaracaoDeConstantes(): Const[];
    declaracaoDeVariaveis(): Var[];
    declaracaoLeia(): Leia;
    sincronizar(): void;
    erro(simbolo: SimboloInterface, mensagemDeErro: string, codigoDiagnostico?: string, simboloRelacionado?: SimboloInterface): ErroAvaliadorSintatico;
    consumir(tipo: string, mensagemDeErro: string): SimboloInterface;
    verificarTipoSimboloAtual(tipo: string): boolean;
    verificarTipoProximoSimbolo(tipo: string): boolean;
    simboloAtual(): SimboloInterface;
    simboloAnterior(): SimboloInterface;
    simboloNaPosicao(posicao: number): SimboloInterface;
    estaNoFinal(): boolean;
    avancarEDevolverAnterior(): SimboloInterface;
    verificarSeSimboloAtualEIgualA(...argumentos: string[]): boolean;
    primario(): ConstrutoInterface;
    finalizarChamada(entidadeChamada: ConstrutoInterface): Chamada;
    chamar(): ConstrutoInterface;
    unario(): ConstrutoInterface;
    /**
     * A exponenciacão de Égua [é implementada com resolução à esquerda](https://github.com/eguadev/egua/blob/main/src/parser.js#L230).
     * Por isso esse dialeto resolve `direito` chamando `unario()`, e não `exponenciacao()` como os demais.
     * @returns {Binario} A expressão binária na forma do construto `Binario`.
     */
    exponenciacao(): ConstrutoInterface;
    multiplicar(): ConstrutoInterface;
    adicaoOuSubtracao: any;
    adicionar(): ConstrutoInterface;
    bitShift(): ConstrutoInterface;
    bitE(): ConstrutoInterface;
    bitOu(): ConstrutoInterface;
    comparar(): ConstrutoInterface;
    comparacaoIgualdade(): ConstrutoInterface;
    em(): ConstrutoInterface;
    e(): ConstrutoInterface;
    ou(): ConstrutoInterface;
    atribuir(): ConstrutoInterface;
    expressao(): ConstrutoInterface;
    declaracaoEscreva(): Escreva;
    declaracaoExpressao(): Expressao;
    blocoEscopo(): Declaracao[];
    declaracaoSe(): Se;
    declaracaoEnquanto(): Enquanto;
    declaracaoPara(): Para;
    declaracaoSustar(): Sustar;
    declaracaoContinua(): Continua;
    declaracaoRetorna(): Retorna;
    declaracaoEscolha(): Escolha;
    construtoImportar(): ImportarComoConstruto;
    declaracaoTente(): Tente;
    declaracaoFazer(): Fazer;
    resolverDeclaracao(): any;
    declaracaoDeVariavel(): Var;
    funcao(kind: string): FuncaoDeclaracao;
    corpoDaFuncao(kind: string): FuncaoConstruto;
    declaracaoDeClasse(): Classe;
    resolverDeclaracaoForaDeBloco(): Declaracao;
    analisar(retornoLexador: RetornoLexadorInterface<SimboloInterface>, hashArquivo: number): Promise<RetornoAvaliadorSintaticoInterface<Declaracao>>;
}
//# sourceMappingURL=avaliador-sintatico-egua-classico.d.ts.map