import { AcessoIndiceVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, Agrupamento, Atribuir, Binario, Chamada, DefinirValor, Dicionario, FuncaoConstruto, Leia, Literal, Unario, Variavel, Vetor } from '../construtos';
import { Bloco, Const, Declaracao, Enquanto, Escolha, Escreva, Expressao, Fazer, Para, ParaCada, Se, Var } from '../declaracoes';
import { CaminhoEscolha, TradutorInterface } from '../interfaces';
declare class ArestaFluxograma {
    declaracao: Declaracao;
    texto: string;
    constructor(declaracao: Declaracao, texto: string);
}
declare class VerticeFluxograma {
    origem: ArestaFluxograma;
    destino: ArestaFluxograma;
    texto?: string;
    constructor(origem: ArestaFluxograma, destino: ArestaFluxograma, texto?: string);
    paraTexto(): string;
}
/**
 * [MermaidJs](https://mermaid.js.org/) é uma especificação que nos permite
 * criar fluxogramas através de uma notação por texto.
 *
 * Este tradutor converte estruturas da avaliação sintática em um fluxograma
 * compatível com o MermaidJs.
 *
 * Diferentemente de outros tradutores, este não trabalha diretamente com `string`s.
 * Construtos sim devolvem `string`s, mas declarações devolvem um vetor de
 * `VerticeFluxograma`.
 * @see VerticeFluxograma
 */
export declare class TradutorMermaidJs implements TradutorInterface<Declaracao> {
    anteriores: ArestaFluxograma[];
    vertices: VerticeFluxograma[];
    ultimaDicaVertice: string | undefined;
    traduzirConstrutoAcessoIndiceVariavel(acessoIndiceVariavel: AcessoIndiceVariavel): string;
    traduzirConstrutoAcessoMetodo(acessoMetodo: AcessoMetodo): string;
    traduzirConstrutoAcessoMetodoOuPropriedade(acessoMetodoOuPropriedade: AcessoMetodoOuPropriedade): string;
    traduzirConstrutoAcessoPropriedade(acessoPropriedade: AcessoPropriedade): string;
    traduzirConstrutoAgrupamento(agrupamento: Agrupamento): string;
    traduzirConstrutoAtribuir(atribuir: Atribuir): string;
    traduzirConstrutoBinario(binario: Binario): string;
    traduzirConstrutoChamada(chamada: Chamada): string;
    traduzirConstrutoDefinirValor(definirValor: DefinirValor): string;
    traduzirConstrutoDicionario(dicionario: Dicionario): string;
    traduzirFuncaoConstruto(funcaoConstruto: FuncaoConstruto): string;
    traduzirConstrutoLeia(leia: Leia): string;
    traduzirConstrutoLiteral(literal: Literal): string;
    traduzirConstrutoUnario(unario: Unario): string;
    traduzirConstrutoVariavel(variavel: Variavel): string;
    traduzirConstrutoVetor(vetor: Vetor): string;
    protected logicaComumConexaoArestas(aresta: ArestaFluxograma): VerticeFluxograma[];
    traduzirDeclaracaoBloco(declaracaoBloco: Bloco): VerticeFluxograma[];
    traduzirDeclaracaoConst(declaracaoConst: Const): VerticeFluxograma[];
    traduzirDeclaracaoEnquanto(declaracaoEnquanto: Enquanto): VerticeFluxograma[];
    protected logicaComumCaminhoEscolha(declaracaoEscolha: Escolha, caminhoEscolha: CaminhoEscolha, linha: number, textoIdentificadorOuLiteral: string, caminhoPadrao: boolean): {
        caminho: ArestaFluxograma;
        declaracoesCaminho: VerticeFluxograma[];
    };
    traduzirDeclaracaoEscolha(declaracaoEscolha: Escolha): VerticeFluxograma[];
    traduzirDeclaracaoEscreva(declaracaoEscreva: Escreva): VerticeFluxograma[];
    traduzirDeclaracaoExpressao(declaracaoExpressao: Expressao): VerticeFluxograma[];
    traduzirDeclaracaoFazerEnquanto(declaracaoFazerEnquanto: Fazer): VerticeFluxograma[];
    traduzirDeclaracaoPara(declaracaoPara: Para): VerticeFluxograma[];
    traduzirDeclaracaoParaCada(declaracaoParaCada: ParaCada): VerticeFluxograma[];
    traduzirDeclaracaoSe(declaracaoSe: Se): VerticeFluxograma[];
    protected logicaComumTraducaoVarEConst(declaracaoVarOuConst: Var | Const, textoInicial: string): string;
    traduzirDeclaracaoVar(declaracaoVar: Var): VerticeFluxograma[];
    dicionarioConstrutos: {
        AcessoIndiceVariavel: any;
        AcessoMetodo: any;
        AcessoMetodoOuPropriedade: any;
        AcessoPropriedade: any;
        Agrupamento: any;
        Atribuir: any;
        Binario: any;
        Chamada: any;
        Comentario: () => string;
        DefinirValor: any;
        Dicionario: any;
        FuncaoConstruto: any;
        Isto: () => string;
        Leia: any;
        Literal: any;
        Unario: any;
        Variavel: any;
        Vetor: any;
    };
    dicionarioDeclaracoes: {
        Bloco: any;
        Const: any;
        Enquanto: any;
        Escolha: any;
        Expressao: any;
        Escreva: any;
        Fazer: any;
        Para: any;
        ParaCada: any;
        Se: any;
        Var: any;
    };
    traduzir(declaracoes: Declaracao[]): string;
}
export {};
//# sourceMappingURL=tradutor-mermaidjs.d.ts.map