import { VariavelInterface } from '../../../interfaces';
import { InterpretadorInterface } from '../../../interfaces';
import { TuplaN } from '../../../construtos';
/**
 * Retorna um número aleatório.
 * - Sem argumentos: retorna um número real entre 0 (inclusivo) e 1 (exclusivo).
 * - Com um argumento: retorna um número real entre 0 (inclusivo) e `maximo` (exclusivo).
 * - Com dois argumentos: retorna um número real entre `minimo` (inclusivo) e `maximo` (exclusivo).
 * @param {number} [minimo] O número mínimo (inclusivo), ou o máximo quando único argumento.
 * @param {number} [maximo] O número máximo (exclusivo).
 * @returns {Promise<number>} O número real aleatório gerado.
 */
export declare function aleatorio(interpretador: InterpretadorInterface, ...argumentos: any[]): Promise<number>;
/**
 * Verifica se algum dos elementos satisfaz a condição passada por parâmetro.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel Um iterável.
 * @param {any} funcaoPesquisa A função que ensina o método de pesquisa.
 * @returns {Promise<boolean>} Verdadeiro se há algum elemento no iterável com a condição. Falso caso contrário.
 */
export declare function algum(interpretador: InterpretadorInterface, iteravel: any, funcaoPesquisa: any): Promise<boolean>;
export declare function combinar(interpretador: InterpretadorInterface, primeiroIteravel: any, segundoIteravel: any): Promise<any[]>;
export declare function contar(interpretador: InterpretadorInterface, iteravel: any, elemento: any): Promise<number>;
/**
 * Retorna o primeiro elemento de um iterável que satisfaça a condição definida na função de pesquisa.
 * A execução é interrompida assim que o elemento for encontrado.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser percorrido.
 * @param {any} funcaoPesquisa A função que define a condição de busca.
 * @returns {Promise<any>} O primeiro elemento encontrado, ou nulo caso nenhum elemento satisfaça a condição.
 */
export declare function encontrar(interpretador: InterpretadorInterface, iteravel: any, funcaoPesquisa: any): Promise<any>;
/**
 * Retorna o índice do primeiro elemento de um iterável que satisfaça a condição definida na função de pesquisa.
 * A execução é interrompida assim que o elemento for encontrado.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser percorrido.
 * @param {any} funcaoPesquisa A função que define a condição de busca.
 * @returns {Promise<number>} O índice do primeiro elemento encontrado, ou -1 caso nenhum elemento satisfaça a condição.
 */
export declare function encontrar_indice(interpretador: InterpretadorInterface, iteravel: any, funcaoPesquisa: any): Promise<number>;
/**
 * Retorna o último elemento de um iterável que satisfaça a condição definida na função de pesquisa.
 * A execução é interrompida assim que o elemento for encontrado.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser percorrido.
 * @param {any} funcaoPesquisa A função que define a condição de busca.
 * @returns {Promise<any>} O último elemento encontrado, ou nulo caso nenhum elemento satisfaça a condição.
 */
export declare function encontrar_ultimo(interpretador: InterpretadorInterface, iteravel: any, funcaoPesquisa: any): Promise<any>;
/**
 * Retorna o índice do último elemento de um iterável que satisfaça a condição definida na função de pesquisa.
 * A execução é interrompida assim que o elemento for encontrado.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser percorrido.
 * @param {any} funcaoPesquisa A função que define a condição de busca.
 * @returns {Promise<number>} O índice do último elemento encontrado, ou -1 caso nenhum elemento satisfaça a condição.
 */
export declare function encontrar_ultimo_indice(interpretador: InterpretadorInterface, iteravel: any, funcaoPesquisa: any): Promise<number>;
/**
 * Retorna os elementos que satisfazem a condição definida na função de pesquisa.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser percorrido.
 * @param {any} funcaoPesquisa A função que define a condição de busca.
 * @returns {Promise<any[]>} Os elementos que satisfazem a função de pesquisa.
 */
export declare function filtrar_por(interpretador: InterpretadorInterface, iteravel: any, funcaoPesquisa: any): Promise<any[]>;
/**
 * Verifica se um valor específico está incluído dentro de um iterável.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser percorrido.
 * @param {any} valor O valor a ser buscado.
 * @returns {Promise<boolean>} verdadeiro se o valor for encontrado, falso caso contrário.
 */
export declare function incluido(interpretador: InterpretadorInterface, iteravel: any, valor: any): Promise<boolean>;
/**
 * Converte um valor em um número inteiro.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} valor O valor a ser convertido.
 * @returns {Promise<number>} o resultado da conversão.
 */
export declare function inteiro(interpretador: InterpretadorInterface, valor: any): Promise<number>;
/**
 * Cria um vetor com números inteiros no intervalo especificado.
 * O valor inicial é inclusivo e o valor final é exclusivo.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {VariavelInterface | number} valorInicial O valor inicial (inclusivo) ou o limite final se for o único parâmetro.
 * @param {VariavelInterface | number} valorFinal O valor final (exclusivo).
 * @param {VariavelInterface | number} valorPasso O valor do passo.
 * @returns {Promise<number[]>} Um vetor com os números no intervalo.
 */
export declare function intervalo(interpretador: InterpretadorInterface, valorInicial: VariavelInterface | number, valorFinal?: VariavelInterface | number, valorPasso?: VariavelInterface | number): Promise<number[]>;
export declare function inverter(interpretador: InterpretadorInterface, iteravel: any): Promise<any>;
/**
 * Dado um vetor e, opcionalmente, um valor de início, retorna um vetor de dicionários,
 * onde cada dicionário contém o índice e o valor correspondente do vetor original.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel Um iterável.
 * @param {any} [inicio] O valor inicial do contador de índices (opcional, padrão 0).
 * @returns {Promise<any[]>} Um vetor de dicionários com índice e valor.
 */
export declare function enumerar(interpretador: InterpretadorInterface, iteravel: any, inicio?: any): Promise<any[]>;
/**
 * Dado um iterável e uma função de mapeamento, executa a função de mapeamento
 * passando como argumento cada elemento do iterável.
 * @param interpretador A instância do interpretador.
 * @param iteravel O iteravel a ser mapeado.
 * @param funcaoMapeamento A função de mapeamento.
 * @returns {Promise<any[]>} O resultado acumulado em forma de vetor.
 */
export declare function mapear(interpretador: InterpretadorInterface, iteravel: any, funcaoMapeamento: any): Promise<any[]>;
/**
 * Encontra o maior número dentro de um iterável.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser inspecionado.
 * @returns {Promise<any>} O maior elemento encontrado.
 */
export declare function maximo(interpretador: InterpretadorInterface, iteravel: any): Promise<number>;
/**
 * Encontra o menor número dentro de um iterável.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser inspecionado.
 * @returns {Promise<any>} O menor elemento encontrado.
 */
export declare function minimo(interpretador: InterpretadorInterface, iteravel: any): Promise<any>;
/**
 * Ordena os elementos de um iterável
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser ordenado.
 * @returns {Promise<any[]>} Um novo vetor com os elementos ordenados.
 */
export declare function ordenar(interpretador: InterpretadorInterface, iteravel: any): Promise<any[]>;
/**
 * Executa uma função para cada elemento do iterável.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser percorrido.
 * @param {any} funcaoExecucao A função que será chamada para cada elemento.
 * @returns {Promise<void>}
 */
export declare function para_cada(interpretador: InterpretadorInterface, iteravel: VariavelInterface | any, funcaoExecucao: VariavelInterface | any): Promise<void>;
/**
 * Converte um valor em um número real (ponto flutuante).
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} valor O valor a ser convertido.
 * @returns {Promise<number>} O resultado da conversão.
 */
export declare function real(interpretador: InterpretadorInterface, valor: any): Promise<number>;
/**
 * Reduz um iterável a um único valor, executando uma função acumuladora em cada elemento.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser reduzido.
 * @param {any} funcaoReducao A função que será chamada (acumulador, valorAtual).
 * @param {any} [valorInicial=null] O valor inicial do acumulador.
 * @returns {Promise<any>} O resultado acumulado.
 */
export declare function reduzir(interpretador: InterpretadorInterface, iteravel: any, funcaoReducao: any, valorInicial?: any): Promise<any>;
/**
 * Realiza a soma de todos os números dentro de um iterável.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável contendo os números.
 * @returns {Promise<number>} A soma de todos os elementos.
 */
export declare function somar(interpretador: InterpretadorInterface, iteravel: any): Promise<number>;
/**
 * Retorna o tamanho do objeto, vetor, texto ou número de parâmetros de uma função/classe.
 * * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} valor O valor a ser inspecionado.
 * @returns {Promise<number>} O tamanho.
 */
export declare function tamanho(interpretador: InterpretadorInterface, valor: any): Promise<number>;
/**
 * Transforma o valor ou variável em texto.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} valor O valor ou variável a ser convertido em texto.
 * @returns {Promise<string>} O valor resolvido em texto.
 */
export declare function texto(interpretador: InterpretadorInterface, valor: any): Promise<string>;
/**
 * Retorna verdadeiro se todos os elementos do iterável forem verdadeiros (truthy). Caso seja passado uma função como segundo parâmetro, cada elemento do iterável será passado para ela.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel Qualquer dado que seja iterável
 * @param {any} funcaoCondicional A função que será executada com cada valor.
 * @returns {Promise<boolean>} Verdadeiro, se todos os valores do iterável forem verdadeiros ou se satisfazerem a função condicional.
 */
export declare function todos(interpretador: InterpretadorInterface, iteravel: any, funcaoCondicional?: any): Promise<boolean>;
/**
 * Transforma um iteravel em uma tupla.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser convertido.
 * @returns A tupla resolvida.
 */
export declare function tupla(interpretador: InterpretadorInterface, iteravel: any): Promise<TuplaN>;
export declare function unico(interpretador: InterpretadorInterface, iteravel: any): Promise<any[]>;
/**
 * Transforma um iteravel em um vetor.
 * @param {InterpretadorInterface} interpretador A instância do interpretador.
 * @param {any} iteravel O iterável a ser convertido.
 * @returns O vetor resolvido.
 */
export declare function vetor(interpretador: InterpretadorInterface, iteravel: any): Promise<any[]>;
//# sourceMappingURL=biblioteca-global.d.ts.map