import { AcessoMetodo, AcessoMetodoOuPropriedade, AcessoIntervaloVariavel, TuplaN, AtribuicaoPorIndice, AcessoIndiceVariavel, TipoDe, Atribuir, DefinirValor, AcessoPropriedade, Morsa, Bote } from '../../../construtos';
import { Interpretador } from '../../interpretador';
import { EspacoMemoria } from '../../espaco-memoria';
import { Classe, Declaracao, ParaCada, Retorna } from '../../../declaracoes';
import { RetornoQuebra } from '../../../quebras';
import { DescritorTipoClasse } from '../../estruturas';
export declare class InterpretadorPitugues extends Interpretador {
    constructor(diretorioBase: string, performance?: boolean, funcaoDeRetorno?: Function, funcaoDeRetornoMesmaLinha?: Function);
    protected pontoInicializacaoBibliotecasGlobais(): void;
    /**
     * Sobrescreve `executarBloco` para marcar escopos de chamadas de função com
     * `tipo: 'funcao'`. Quando `ambiente` é fornecido, a chamada vem de
     * `DeleguaFuncao.chamar`, que repassa o espaço de memória dos parâmetros.
     * Isso permite que `PilhaEscoposExecucaoPitugues` identifique fronteiras de
     * função e aplique a semântica LEGB corretamente.
     */
    executarBloco(declaracoes: Declaracao[], ambiente?: EspacoMemoria): Promise<any>;
    visitarExpressaoAcessoMetodo(expressao: AcessoMetodo): Promise<any>;
    visitarExpressaoAcessoMetodoOuPropriedade(expressao: AcessoMetodoOuPropriedade): Promise<any>;
    visitarExpressaoAcessoPropriedade(expressao: AcessoPropriedade): Promise<any>;
    visitarExpressaoAcessoIntervaloVariavel(expressao: AcessoIntervaloVariavel): Promise<any>;
    visitarExpressaoTuplaN(expressao: TuplaN): Promise<any>;
    visitarExpressaoDeAtribuicao(expressao: Atribuir): Promise<any>;
    visitarExpressaoAtribuicaoPorIndice(expressao: AtribuicaoPorIndice): Promise<any>;
    visitarExpressaoAcessoIndiceVariavel(expressao: AcessoIndiceVariavel): Promise<any>;
    visitarExpressaoTipoDe(expressao: TipoDe): Promise<any>;
    /**
     * Normaliza o valor resolvido para um array iterável.
     * Converte dicionários em listas de Duplas e strings em listas de caracteres.
     */
    private prepararListaParaIteracao;
    /**
     * Resolve a lógica de atribuição das variáveis no escopo.
     * Suporta variáveis simples ou pares (Dupla).
     */
    private definirVariaveisIteracao;
    visitarDeclaracaoParaCada(declaracao: ParaCada): Promise<any>;
    visitarExpressaoRetornar(declaracao: Retorna): Promise<RetornoQuebra>;
    visitarDeclaracaoClasse(declaracao: Classe): Promise<DescritorTipoClasse>;
    visitarExpressaoDefinirValor(expressao: DefinirValor): Promise<any>;
    visitarExpressaoMorsa(expressao: Morsa): Promise<any>;
    visitarExpressaoBote(expressao: Bote): Promise<any>;
}
//# sourceMappingURL=interpretador-pitugues.d.ts.map