UNPKG

@etherspot/data-utils

Version:
1 lines 12.4 kB
{"version":3,"sources":["../../src/sdk/dataUtils.ts"],"sourcesContent":["import \"reflect-metadata\";\nimport { AccountBalances, AdvanceRoutesLiFi, Token, TransactionStatus, DataModule, ExchangeOffer, NftList, PaginatedTokens, RateData, StepTransactions, TokenList, TokenListToken, Transaction, Transactions, QuoteTransactionsResponse } from \"./data\";\nimport { FetchExchangeRatesDto, GetAccountBalancesDto, GetAdvanceRoutesLiFiDto, GetSupportedAssetsDto, GetTransactionStatusDto, GetExchangeOffersDto, GetExchangeSupportedAssetsDto, GetNftListDto, GetStepTransactionsLiFiDto, GetTokenListDto, GetTokenListsDto, GetTransactionDto, GetTransactionsDto, GetQuotesDto, validateDto } from \"./dto\";\nimport { BigNumber } from \"./common\";\n\nexport class DataUtils {\n private dataModule: DataModule;\n private readonly defaultDataApiKey = 'eyJvcmciOiI2NTIzZjY5MzUwOTBmNzAwMDFiYjJkZWIiLCJpZCI6IjI4ZWJiMGQ5YTMxYjQ3MmY4NmU4MWY2YTVhYzBhMzE1IiwiaCI6Im11cm11cjEyOCJ9';\n constructor(apiKey?: string) {\n this.dataModule = new DataModule(apiKey || this.defaultDataApiKey);\n }\n\n /**\n * gets account balances\n * @param dto\n * @return Promise<AccountBalances>\n */\n async getAccountBalances(dto: GetAccountBalancesDto): Promise<AccountBalances> {\n const { account, tokens, chainId, provider } = await validateDto(dto, GetAccountBalancesDto, {\n addressKeys: ['account', 'tokens'],\n });\n\n return this.dataModule.getAccountBalances(\n account,\n chainId,\n tokens,\n provider,\n );\n }\n\n /**\n * gets transaction\n * @param dto\n * @return Promise<Transaction>\n */\n async getTransaction(dto: GetTransactionDto): Promise<Transaction> {\n const { hash, chainId } = await validateDto(dto, GetTransactionDto);\n\n return this.dataModule.getTransaction(hash, chainId);\n }\n\n /**\n * gets transactions\n * @param dto\n * @return Promise<Transactions>\n */\n async getTransactions(dto: GetTransactionsDto): Promise<Transactions> {\n const { account, chainId, page, limit } = await validateDto(dto, GetTransactionsDto, {\n addressKeys: ['account'],\n });\n\n return this.dataModule.getTransactions(\n account,\n chainId,\n page,\n limit,\n );\n }\n\n /**\n * gets NFT list belonging to account\n * @param dto\n * @return Promise<NftList>\n */\n async getNftList(dto: GetNftListDto): Promise<NftList> {\n const { account, chainId } = await validateDto(dto, GetNftListDto, {\n addressKeys: ['account'],\n });\n\n return this.dataModule.getNftList(\n account,\n chainId,\n );\n }\n\n /**\n * gets advance routes from LIFI\n * @param dto\n * @return Promise<AdvanceRoutesLiFi>\n */\n async getAdvanceRoutesLiFi(dto: GetAdvanceRoutesLiFiDto): Promise<AdvanceRoutesLiFi> {\n const {\n fromChainId,\n toChainId,\n fromTokenAddress,\n toTokenAddress,\n fromAmount,\n allowSwitchChain,\n showZeroUsd,\n fromAddress,\n } = await validateDto(dto, GetAdvanceRoutesLiFiDto, {\n addressKeys: ['fromTokenAddress', 'toTokenAddress', 'fromAddress'],\n });\n\n let { toAddress } = dto;\n\n if (!toAddress) toAddress = fromAddress;\n\n const data = await this.dataModule.getAdvanceRoutesLiFi(\n fromTokenAddress,\n toTokenAddress,\n fromChainId,\n toChainId,\n fromAmount,\n toAddress,\n allowSwitchChain,\n fromAddress,\n showZeroUsd,\n );\n\n return data;\n }\n\n /**\n * gets step transactions from LIFI\n * @param dto\n * @return Promise<StepTransactions>\n */\n async getStepTransaction(dto: GetStepTransactionsLiFiDto): Promise<StepTransactions> {\n const { route, account } = await validateDto(dto, GetStepTransactionsLiFiDto, {\n addressKeys: ['account']\n })\n\n return this.dataModule.getStepTransaction(route, account);\n }\n\n /**\n * gets exchange supported tokens\n * @param dto\n * @return Promise<PaginatedTokens>\n */\n async getExchangeSupportedAssets(dto: GetExchangeSupportedAssetsDto): Promise<PaginatedTokens> {\n const { page, limit, chainId, account } = await validateDto(dto, GetExchangeSupportedAssetsDto, {\n addressKeys: ['account']\n });\n\n return this.dataModule.getExchangeSupportedAssets(page, limit, chainId, account);\n }\n\n /**\n * gets exchange offers\n * @param dto\n * @return Promise<ExchangeOffer[]>\n */\n async getExchangeOffers(dto: GetExchangeOffersDto): Promise<ExchangeOffer[]> {\n const { fromTokenAddress, toTokenAddress, fromAmount, fromChainId, showZeroUsd, fromAddress } = await validateDto(dto, GetExchangeOffersDto, {\n addressKeys: ['fromTokenAddress', 'toTokenAddress', 'fromAddress'],\n });\n\n let { toAddress } = dto;\n\n if (!toAddress) toAddress = fromAddress;\n\n return this.dataModule.getExchangeOffers(\n fromTokenAddress,\n toTokenAddress,\n BigNumber.from(fromAmount),\n fromChainId,\n fromAddress,\n toAddress,\n showZeroUsd,\n );\n }\n\n /**\n * gets token lists\n * @param dto\n * @return Promise<TokenList[]>\n */\n async getTokenLists(dto: GetTokenListsDto): Promise<TokenList[]> {\n const { chainId } = await validateDto(dto, GetTokenListsDto);\n\n return this.dataModule.getTokenLists(chainId);\n }\n\n /**\n * gets token list tokens\n * @param dto\n * @return Promise<TokenListToken[]>\n */\n async getTokenListTokens(dto: GetTokenListDto): Promise<TokenListToken[]> {\n const { chainId, name } = await validateDto(dto, GetTokenListDto);\n\n return this.dataModule.getTokenListTokens(chainId, name);\n }\n\n /**\n * fetch exchange rates of tokens\n * @param dto\n * @return Promise<RateData>\n */\n async fetchExchangeRates(dto: FetchExchangeRatesDto): Promise<RateData> {\n const { tokens, chainId } = dto;\n let data: RateData;\n const promises = [];\n\n // Create a batch of 50\n const batches = [...Array(Math.ceil(tokens.length / 50))].map(() => tokens.splice(0, 50));\n batches.forEach((batch) => {\n promises.push(this.dataModule.fetchExchangeRates(batch, chainId));\n });\n\n // Fetch succeded results and merge\n await (Promise as any)\n .allSettled(promises)\n .then((response) =>\n response?.forEach((result) => {\n if (result?.status === 'fulfilled') {\n !data\n ? (data = result.value ? result.value : {})\n : (data.items = result?.value?.items ? [...data.items, ...result.value.items] : [...data.items]);\n }\n }),\n );\n\n // Return Unique tokens\n if (data && data.items && data.items.length) {\n data.error = ''\n data.errored = false\n data.items = [...new Map(data.items.map(item => [item['address'], item])).values()];\n } else {\n data.items = [];\n }\n\n return data;\n }\n\n /**\n * gets supported tokens\n * @param dto\n * @return Promise<Token[]>\n */\n async getSupportedAssets(dto: GetSupportedAssetsDto): Promise<Token[]> {\n const { chainId, provider } = await validateDto(dto, GetSupportedAssetsDto);\n\n return this.dataModule.getSupportedAssets(chainId, provider);\n }\n\n /**\n * gets quote transactions\n * @param dto\n * @return Promise<Quote[]>\n */\n async getQuotes(dto: GetQuotesDto): Promise<QuoteTransactionsResponse> {\n const {\n fromAddress,\n toAddress,\n fromChainId,\n toChainId,\n fromToken,\n fromAmount,\n slippage,\n provider\n } = await validateDto(dto, GetQuotesDto, {\n addressKeys: ['fromAddress', 'toAddress', 'fromToken'],\n });\n\n return this.dataModule.getQuotes(\n fromAddress,\n toAddress,\n fromChainId,\n toChainId,\n fromToken,\n BigNumber.from(fromAmount),\n slippage,\n provider\n );\n }\n\n /**\n * gets transaction status\n * @param dto\n * @return Promise<TransactionStatus>\n */\n async getTransactionStatus(dto: GetTransactionStatusDto): Promise<TransactionStatus> {\n const { fromChainId, toChainId, transactionHash, provider } = await validateDto(dto, GetTransactionStatusDto);\n\n return this.dataModule.getTransactionStatus(fromChainId, toChainId, transactionHash, provider);\n }\n}\n"],"mappings":"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","names":[]}