import { SimboloInterface } from '../../../interfaces';
import { PilhaEscoposExecucao } from '../../pilha-escopos-execucao';
/**
 * Pilha de escopos de execução específica para Pituguês.
 *
 * Diferentemente de Delégua, Pituguês segue a regra de escopo local-first do
 * Python para atribuições dentro de funções:
 *
 * - Fora de uma função (escopo global, laços no nível global): o comportamento
 *   é o padrão — a pilha é percorrida para encontrar a variável e atualizá-la,
 *   ou ela é criada no escopo atual caso ainda não exista.
 *
 * - Dentro de uma função: a atribuição é sempre resolvida dentro da cadeia de
 *   escopos da própria função (do topo da pilha até o escopo de tipo 'funcao'
 *   inclusive), sem cruzar a fronteira para escopos ancestrais (globais). Se a
 *   variável não for encontrada nessa cadeia, ela é criada no escopo da função
 *   (não no escopo de laço interno, refletindo o comportamento do Python onde
 *   `if`/`while`/`for` não criam namespaces próprios).
 *
 * Leituras continuam percorrendo toda a pilha normalmente.
 */
export declare class PilhaEscoposExecucaoPitugues extends PilhaEscoposExecucao {
    /**
     * Retorna o índice do escopo de função mais recente na pilha, ou -1 se não
     * houver nenhum (estamos no nível global).
     */
    private indiceFuncaoAtual;
    /**
     * Atribui um valor a uma variável seguindo a semântica de escopo do Pituguês.
     *
     * Casos:
     * 1. Atribuição indexada (`x[i] = v`) → comportamento padrão (percorre a pilha).
     * 2. Fora de função → comportamento padrão com criação implícita se necessário.
     * 3. Dentro de função:
     *    a. Variável encontrada na cadeia de escopos da função → atualiza lá.
     *    b. Variável não encontrada (só existe no escopo global, ou é nova) →
     *       cria no escopo da função (não no escopo de laço interno).
     */
    atribuirVariavel(simbolo: SimboloInterface, valor: any, indice?: number): void;
}
//# sourceMappingURL=pilha-escopos-execucao-pitugues.d.ts.map