@etherspot/data-utils
Version:
Etherspot Data Utils
287 lines (285 loc) • 7.46 kB
JavaScript
import {
validateDto
} from "./chunk-MOME3JHZ.mjs";
import {
GetTokenListsDto
} from "./chunk-5YDEIS4W.mjs";
import {
GetTransactionStatusDto
} from "./chunk-GZPQDG5N.mjs";
import {
GetTransactionDto
} from "./chunk-KP2K45EE.mjs";
import {
GetTransactionsDto
} from "./chunk-COLUB3R4.mjs";
import {
GetExchangeOffersDto
} from "./chunk-U6ULOGB4.mjs";
import {
GetExchangeSupportedAssetsDto
} from "./chunk-Z3R6YZ4Z.mjs";
import {
GetNftListDto
} from "./chunk-7FRLPXUA.mjs";
import {
GetQuotesDto
} from "./chunk-I5VZJ76X.mjs";
import {
GetStepTransactionsLiFiDto
} from "./chunk-7GGGAJSW.mjs";
import {
GetSupportedAssetsDto
} from "./chunk-6CIRRYH7.mjs";
import {
GetTokenListDto
} from "./chunk-7W6QEWUT.mjs";
import {
DataModule
} from "./chunk-QCLH3UIP.mjs";
import {
GetAdvanceRoutesLiFiDto
} from "./chunk-3NBGLOUD.mjs";
import {
GetAccountBalancesDto
} from "./chunk-OWQ2V6GF.mjs";
import {
BigNumber
} from "./chunk-DEX5RLI7.mjs";
// src/sdk/dataUtils.ts
import "reflect-metadata";
var DataUtils = class {
constructor(apiKey) {
this.defaultDataApiKey = "eyJvcmciOiI2NTIzZjY5MzUwOTBmNzAwMDFiYjJkZWIiLCJpZCI6IjI4ZWJiMGQ5YTMxYjQ3MmY4NmU4MWY2YTVhYzBhMzE1IiwiaCI6Im11cm11cjEyOCJ9";
this.dataModule = new DataModule(apiKey || this.defaultDataApiKey);
}
/**
* gets account balances
* @param dto
* @return Promise<AccountBalances>
*/
async getAccountBalances(dto) {
const { account, tokens, chainId, provider } = await validateDto(dto, GetAccountBalancesDto, {
addressKeys: ["account", "tokens"]
});
return this.dataModule.getAccountBalances(
account,
chainId,
tokens,
provider
);
}
/**
* gets transaction
* @param dto
* @return Promise<Transaction>
*/
async getTransaction(dto) {
const { hash, chainId } = await validateDto(dto, GetTransactionDto);
return this.dataModule.getTransaction(hash, chainId);
}
/**
* gets transactions
* @param dto
* @return Promise<Transactions>
*/
async getTransactions(dto) {
const { account, chainId, page, limit } = await validateDto(dto, GetTransactionsDto, {
addressKeys: ["account"]
});
return this.dataModule.getTransactions(
account,
chainId,
page,
limit
);
}
/**
* gets NFT list belonging to account
* @param dto
* @return Promise<NftList>
*/
async getNftList(dto) {
const { account, chainId } = await validateDto(dto, GetNftListDto, {
addressKeys: ["account"]
});
return this.dataModule.getNftList(
account,
chainId
);
}
/**
* gets advance routes from LIFI
* @param dto
* @return Promise<AdvanceRoutesLiFi>
*/
async getAdvanceRoutesLiFi(dto) {
const {
fromChainId,
toChainId,
fromTokenAddress,
toTokenAddress,
fromAmount,
allowSwitchChain,
showZeroUsd,
fromAddress
} = await validateDto(dto, GetAdvanceRoutesLiFiDto, {
addressKeys: ["fromTokenAddress", "toTokenAddress", "fromAddress"]
});
let { toAddress } = dto;
if (!toAddress) toAddress = fromAddress;
const data = await this.dataModule.getAdvanceRoutesLiFi(
fromTokenAddress,
toTokenAddress,
fromChainId,
toChainId,
fromAmount,
toAddress,
allowSwitchChain,
fromAddress,
showZeroUsd
);
return data;
}
/**
* gets step transactions from LIFI
* @param dto
* @return Promise<StepTransactions>
*/
async getStepTransaction(dto) {
const { route, account } = await validateDto(dto, GetStepTransactionsLiFiDto, {
addressKeys: ["account"]
});
return this.dataModule.getStepTransaction(route, account);
}
/**
* gets exchange supported tokens
* @param dto
* @return Promise<PaginatedTokens>
*/
async getExchangeSupportedAssets(dto) {
const { page, limit, chainId, account } = await validateDto(dto, GetExchangeSupportedAssetsDto, {
addressKeys: ["account"]
});
return this.dataModule.getExchangeSupportedAssets(page, limit, chainId, account);
}
/**
* gets exchange offers
* @param dto
* @return Promise<ExchangeOffer[]>
*/
async getExchangeOffers(dto) {
const { fromTokenAddress, toTokenAddress, fromAmount, fromChainId, showZeroUsd, fromAddress } = await validateDto(dto, GetExchangeOffersDto, {
addressKeys: ["fromTokenAddress", "toTokenAddress", "fromAddress"]
});
let { toAddress } = dto;
if (!toAddress) toAddress = fromAddress;
return this.dataModule.getExchangeOffers(
fromTokenAddress,
toTokenAddress,
BigNumber.from(fromAmount),
fromChainId,
fromAddress,
toAddress,
showZeroUsd
);
}
/**
* gets token lists
* @param dto
* @return Promise<TokenList[]>
*/
async getTokenLists(dto) {
const { chainId } = await validateDto(dto, GetTokenListsDto);
return this.dataModule.getTokenLists(chainId);
}
/**
* gets token list tokens
* @param dto
* @return Promise<TokenListToken[]>
*/
async getTokenListTokens(dto) {
const { chainId, name } = await validateDto(dto, GetTokenListDto);
return this.dataModule.getTokenListTokens(chainId, name);
}
/**
* fetch exchange rates of tokens
* @param dto
* @return Promise<RateData>
*/
async fetchExchangeRates(dto) {
const { tokens, chainId } = dto;
let data;
const promises = [];
const batches = [...Array(Math.ceil(tokens.length / 50))].map(() => tokens.splice(0, 50));
batches.forEach((batch) => {
promises.push(this.dataModule.fetchExchangeRates(batch, chainId));
});
await Promise.allSettled(promises).then(
(response) => response?.forEach((result) => {
if (result?.status === "fulfilled") {
!data ? data = result.value ? result.value : {} : data.items = result?.value?.items ? [...data.items, ...result.value.items] : [...data.items];
}
})
);
if (data && data.items && data.items.length) {
data.error = "";
data.errored = false;
data.items = [...new Map(data.items.map((item) => [item["address"], item])).values()];
} else {
data.items = [];
}
return data;
}
/**
* gets supported tokens
* @param dto
* @return Promise<Token[]>
*/
async getSupportedAssets(dto) {
const { chainId, provider } = await validateDto(dto, GetSupportedAssetsDto);
return this.dataModule.getSupportedAssets(chainId, provider);
}
/**
* gets quote transactions
* @param dto
* @return Promise<Quote[]>
*/
async getQuotes(dto) {
const {
fromAddress,
toAddress,
fromChainId,
toChainId,
fromToken,
fromAmount,
slippage,
provider
} = await validateDto(dto, GetQuotesDto, {
addressKeys: ["fromAddress", "toAddress", "fromToken"]
});
return this.dataModule.getQuotes(
fromAddress,
toAddress,
fromChainId,
toChainId,
fromToken,
BigNumber.from(fromAmount),
slippage,
provider
);
}
/**
* gets transaction status
* @param dto
* @return Promise<TransactionStatus>
*/
async getTransactionStatus(dto) {
const { fromChainId, toChainId, transactionHash, provider } = await validateDto(dto, GetTransactionStatusDto);
return this.dataModule.getTransactionStatus(fromChainId, toChainId, transactionHash, provider);
}
};
export {
DataUtils
};
//# sourceMappingURL=chunk-ZAVVPZRT.mjs.map