import { Chamavel } from './chamavel';
import { EspacoMemoria } from '../espaco-memoria';
import { DescritorTipoClasse } from './descritor-tipo-classe';
import { InterpretadorInterface } from '../../interfaces';
import { ObjetoDeleguaClasse } from './objeto-delegua-classe';
import { ComentarioComoConstruto, FuncaoConstruto } from '../../construtos';
import { ArgumentoInterface } from '../argumento-interface';
/**
 * Qualquer função declarada em código é uma DeleguaFuncao.
 */
export declare class DeleguaFuncao extends Chamavel {
    nome: string | null;
    declaracao: FuncaoConstruto;
    eInicializador: boolean;
    instancia: any;
    documentacao?: ComentarioComoConstruto;
    /** Classe que declarou este método; usado para calcular a posição no OReM em chamadas a `super()`. */
    classeDefinidora: DescritorTipoClasse | null;
    constructor(nome: string | null, declaracao: FuncaoConstruto, instancia?: any, eInicializador?: boolean);
    aridade(): number;
    /**
     * Método utilizado por Delégua para representar esta função quando impressa.
     * @returns {string} A representação da função como texto.
     */
    paraTexto(): string;
    /**
     * Método utilizado pelo VSCode para inspecionar esta função em depuração.
     * @returns {string} A representação da função como texto.
     */
    toString(): string;
    private resolverParametrosEspalhados;
    protected resolverAmbiente(argumentos: Array<ArgumentoInterface>): EspacoMemoria;
    chamar(visitante: InterpretadorInterface, argumentos: Array<ArgumentoInterface>): Promise<any>;
    funcaoPorMetodoDeClasse(instancia: ObjetoDeleguaClasse): DeleguaFuncao;
    funcaoPorExtensao(valor: any): DeleguaFuncao;
}
//# sourceMappingURL=delegua-funcao.d.ts.map