import { PropriedadeClasse } from '../../declaracoes';
import { InterpretadorInterface, SimboloInterface } from '../../interfaces';
import { Chamavel } from './chamavel';
import { DeleguaFuncao } from './delegua-funcao';
import { ObjetoDeleguaClasse } from './objeto-delegua-classe';
/**
 * Descritor de tipo de classe. Quando uma declaração de classe é visitada, o que
 * vai para a pilha de escopos de execução é esta estrutura. Quando uma nova instância
 * de classe é criada, a referência para a instância é implementada aqui.
 */
export declare class DescritorTipoClasse extends Chamavel {
    simboloOriginal: SimboloInterface;
    superClasse: DescritorTipoClasse;
    metodos: {
        [nome: string]: DeleguaFuncao;
    };
    propriedades: PropriedadeClasse[];
    dialetoRequerExpansaoPropriedadesEspacoMemoria: boolean;
    dialetoRequerDeclaracaoPropriedades: boolean;
    constructor(simboloOriginal?: SimboloInterface, superClasse?: DescritorTipoClasse, metodos?: {
        [nome: string]: DeleguaFuncao;
    }, propriedades?: PropriedadeClasse[]);
    encontrarMetodo(nome: string): DeleguaFuncao;
    encontrarPropriedade(nome: string): PropriedadeClasse;
    /**
     * Método utilizado por Delégua para representar esta classe quando impressa.
     * @returns {string} A representação da classe como texto.
     */
    paraTexto(): string;
    /**
     * Método utilizado pelo VSCode para inspecionar esta classe em depuração.
     * @returns {string} A representação da classe como texto.
     */
    toString(): string;
    aridade(): number;
    chamar(visitante: InterpretadorInterface, argumentos: any[]): Promise<ObjetoDeleguaClasse>;
}
//# sourceMappingURL=descritor-tipo-classe.d.ts.map