import { InterpretadorInterface } from '../../interfaces';
import { ArgumentoInterface } from '../argumento-interface';
import { Chamavel } from './chamavel';
import { DeleguaFuncao } from './delegua-funcao';
import { ObjetoDeleguaClasse } from './objeto-delegua-classe';
/**
 * Proxy que encapsula múltiplas sobrecargas de um mesmo método,
 * resolvendo qual sobrecarga chamar em tempo de execução com base
 * nos tipos dos argumentos fornecidos.
 */
export declare class MetodoPolimorfico extends Chamavel {
    nome: string;
    sobrecargas: DeleguaFuncao[];
    instancia: ObjetoDeleguaClasse | undefined;
    constructor(nome: string, sobrecargas: DeleguaFuncao[], instancia?: ObjetoDeleguaClasse);
    aridade(): number;
    private contarParametrosObrigatorios;
    private temParametroEspalhado;
    resolverSobrecarga(argumentos: ArgumentoInterface[]): DeleguaFuncao;
    chamar(visitante: InterpretadorInterface, argumentos: ArgumentoInterface[]): Promise<any>;
    funcaoPorMetodoDeClasse(instancia: ObjetoDeleguaClasse): MetodoPolimorfico;
    paraTexto(): string;
    toString(): string;
}
//# sourceMappingURL=metodo-polimorfico.d.ts.map