import { AcessoIndiceVariavel, AcessoIntervaloVariavel, AcessoMetodo, AcessoMetodoOuPropriedade, AcessoPropriedade, Agrupamento, ArgumentoReferenciaFuncao, AtribuicaoPorIndice, Atribuir, Binario, Chamada, ComentarioComoConstruto, Construto, DefinirValor, Dicionario, ExpressaoRegular, FimPara, FormatacaoEscrita, FuncaoConstruto, ImportarComoConstruto, Isto, Leia, Literal, Logico, ReferenciaFuncao, Separador, Super, TipoDe, Tupla, TuplaN, Unario, Variavel, Vetor } from '../construtos';
import { Classe, Const, ConstMultiplo, Expressao, FuncaoDeclaracao, Enquanto, Escolha, Escreva, Fazer, Importar, Para, ParaCada, Se, Tente, Var, VarMultiplo, Bloco, Continua, EscrevaMesmaLinha, Retorna, Sustar, Declaracao, Falhar, CabecalhoPrograma, TendoComo, Comentario, TextoDocumentacao } from '../declaracoes';
import { InicioAlgoritmo } from '../declaracoes/inicio-algoritmo';
import { VisitanteComumInterface } from '../interfaces';
/**
 * O formatador de código Delégua.
 * Normalmente usado por IDEs, mas pode ser usado por linha de comando ou programaticamente.
 */
export declare class FormatadorDelegua implements VisitanteComumInterface {
    indentacaoAtual: number;
    quebraLinha: string;
    tamanhoIndentacao: number;
    codigoFormatado: string;
    devePularLinha: boolean;
    deveIndentar: boolean;
    constructor(quebraLinha: string, tamanhoIndentacao?: number);
    visitarExpressaoTuplaN(expressao: TuplaN): Promise<any> | void;
    visitarExpressaoAcessoIntervaloVariavel(expressao: AcessoIntervaloVariavel): Promise<any> | void;
    visitarDeclaracaoTextoDocumentacao(declaracao: TextoDocumentacao): Promise<any> | void;
    visitarExpressaoSeparador(expressao: Separador): Promise<any> | void;
    visitarExpressaoComentario(expressao: ComentarioComoConstruto): Promise<any> | void;
    visitarExpressaoArgumentoReferenciaFuncao(expressao: ArgumentoReferenciaFuncao): void;
    visitarExpressaoReferenciaFuncao(expressao: ReferenciaFuncao): void;
    visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): void;
    visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): void;
    visitarDeclaracaoComentario(declaracao: Comentario): void | Promise<any>;
    visitarDeclaracaoTendoComo(declaracao: TendoComo): void;
    visitarDeclaracaoInicioAlgoritmo(declaracao: InicioAlgoritmo): Promise<any>;
    visitarDeclaracaoCabecalhoPrograma(declaracao: CabecalhoPrograma): Promise<any>;
    visitarExpressaoTupla(expressao: Tupla): any;
    visitarDeclaracaoClasse(declaracao: Classe): void;
    visitarDeclaracaoConst(declaracao: Const): any;
    visitarDeclaracaoConstMultiplo(declaracao: ConstMultiplo): any;
    visitarExpressaoDeAtribuicao(expressao: Atribuir): void;
    visitarDeclaracaoDeExpressao(declaracao: Expressao): void;
    visitarDeclaracaoDefinicaoFuncao(declaracao: FuncaoDeclaracao): void;
    visitarDeclaracaoEnquanto(declaracao: Enquanto): void;
    visitarDeclaracaoEscolha(declaracao: Escolha): void;
    visitarDeclaracaoEscreva(declaracao: Escreva): void;
    visitarDeclaracaoFazer(declaracao: Fazer): void;
    visitarDeclaracaoImportar(declaracao: Importar): void;
    visitarDeclaracaoPara(declaracao: Para): any;
    visitarDeclaracaoParaCada(declaracao: ParaCada): any;
    visitarDeclaracaoSe(declaracao: Se): void;
    visitarDeclaracaoTente(declaracao: Tente): void;
    visitarDeclaracaoVar(declaracao: Var): any;
    visitarDeclaracaoVarMultiplo(declaracao: VarMultiplo): any;
    visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): void;
    visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): void;
    visitarExpressaoAgrupamento(expressao: Agrupamento): any;
    visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): any;
    visitarExpressaoAtribuicaoPorIndicesMatriz(expressao: any): Promise<any>;
    visitarExpressaoAcessoElementoMatriz(expressao: any): void;
    visitarExpressaoBinaria(expressao: Binario): void;
    private formatarBlocoOuVetorDeclaracoes;
    visitarExpressaoBloco(declaracao: Bloco): any;
    visitarExpressaoContinua(declaracao?: Continua): any;
    visitarExpressaoDeChamada(expressao: Chamada): void;
    visitarExpressaoDefinirValor(expressao: DefinirValor): void;
    visitarExpressaoDeVariavel(expressao: Variavel): void;
    visitarExpressaoDicionario(expressao: Dicionario): void;
    visitarExpressaoExpressaoRegular(expressao: ExpressaoRegular): any;
    visitarDeclaracaoEscrevaMesmaLinha(declaracao: EscrevaMesmaLinha): void;
    visitarExpressaoFalhar(expressao: Falhar): any;
    visitarExpressaoFimPara(declaracao: FimPara): void;
    visitarExpressaoFormatacaoEscrita(declaracao: FormatacaoEscrita): void;
    visitarExpressaoFuncaoConstruto(expressao: FuncaoConstruto): void;
    visitarExpressaoImportar(expressao: ImportarComoConstruto): void;
    visitarExpressaoIsto(expressao: Isto): void;
    visitarExpressaoLeia(expressao: Leia): any;
    visitarExpressaoLiteral(expressao: Literal): void;
    visitarExpressaoLogica(expressao: Logico): void;
    visitarExpressaoRetornar(declaracao: Retorna): any;
    visitarExpressaoSuper(expressao: Super): void;
    visitarExpressaoSustar(declaracao?: Sustar): any;
    visitarExpressaoTipoDe(expressao: TipoDe): any;
    visitarExpressaoUnaria(expressao: Unario): void;
    visitarExpressaoVetor(expressao: Vetor): void;
    formatarDeclaracaoOuConstruto(declaracaoOuConstruto: Declaracao | Construto): void;
    /**
     * Devolve código formatado de acordo com os símbolos encontrados.
     * @param {Declaracao[]} declaracoes Um vetor de declarações.
     * @returns Código Delégua formatado.
     */
    formatar(declaracoes: Declaracao[]): string;
}
//# sourceMappingURL=formatador-delegua.d.ts.map