@xchainjs/xchain-midgard-query 1.0.7 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { CachedValue, assetFromStringEx, assetToString, assetFromString, CryptoAmount, baseAmount, isSynthAsset, isTradeAsset } from '@xchainjs/xchain-util';
1
+ import { CachedValue, assetFromStringEx, assetToString, assetFromString, CryptoAmount, baseAmount, isSynthAsset, isTradeAsset, isSecuredAsset } from '@xchainjs/xchain-util';
2
2
  import { Network } from '@xchainjs/xchain-client';
3
3
  import { MidgardApi, Configuration } from '@xchainjs/xchain-midgard';
4
4
  import axios from 'axios';
@@ -314,7 +314,7 @@ class MidgardQuery {
314
314
  */
315
315
  getDecimalForAsset(asset) {
316
316
  return __awaiter(this, void 0, void 0, function* () {
317
- if (isAssetRuneNative(asset) || isSynthAsset(asset) || isTradeAsset(asset))
317
+ if (isAssetRuneNative(asset) || isSynthAsset(asset) || isTradeAsset(asset) || isSecuredAsset(asset))
318
318
  return DEFAULT_THORCHAIN_DECIMALS;
319
319
  const pool = yield this.getPool(assetToString(asset));
320
320
  return Number(pool.nativeDecimal);
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/utils/midgard.ts","../src/midgard-cache.ts","../src/utils/const.ts","../src/midgard-query.ts"],"sourcesContent":["import { Network } from '@xchainjs/xchain-client'\nimport {\n Configuration,\n GetActions200Response as ActionHistory,\n MidgardApi,\n PoolDetail,\n ReverseTHORNames,\n SaverDetails,\n THORNameDetails,\n} from '@xchainjs/xchain-midgard'\nimport axios from 'axios'\nimport axiosRetry from 'axios-retry'\n\nimport { GetActionsParams, MidgardConfig } from '../types'\n\nconst defaultMidgardConfig: Record<Network, MidgardConfig> = {\n mainnet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://midgard.ninerealms.com'],\n },\n stagenet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://stagenet-midgard.ninerealms.com'],\n },\n testnet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://testnet.midgard.thorchain.info'],\n },\n}\n\nexport class Midgard {\n private config: MidgardConfig\n readonly network: Network\n private midgardApis: MidgardApi[]\n\n constructor(network: Network = Network.Mainnet, config?: MidgardConfig) {\n this.network = network\n this.config = config ?? defaultMidgardConfig[this.network]\n axiosRetry(axios, { retries: this.config.apiRetries, retryDelay: axiosRetry.exponentialDelay })\n this.midgardApis = this.config.midgardBaseUrls.map(\n (url: string) => new MidgardApi(new Configuration({ basePath: url })),\n )\n }\n\n /**\n * Function to return member details based on valid liquidity position\n * @param address - query can also be multiple addresses should be separated by comma\n * @returns - object type of Member Detail\n */\n public async getSavers(address: string): Promise<SaverDetails> {\n for (const api of this.midgardApis) {\n try {\n const saverDetails = (await api.getSaverDetail(address)).data\n return saverDetails\n } catch (e) {\n // console.error(e)\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n /**\n *\n * @returns an array of Pools\n */\n async getPools(): Promise<PoolDetail[]> {\n for (const api of this.midgardApis) {\n try {\n return (await api.getPools()).data\n } catch (e) {\n // console.error(e)\n }\n }\n throw new Error(`Midgard not responding`)\n }\n\n public async getTHORNameDetails(name: string): Promise<THORNameDetails | undefined> {\n for (const api of this.midgardApis) {\n try {\n const resp = await api.getTHORNameDetail(name)\n if (resp.status == 404) {\n return undefined\n } else if (resp.status == 200) {\n return resp.data\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.response.status == 404) {\n return undefined\n }\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n public async getTHORNameReverseLookup(address: string): Promise<ReverseTHORNames | undefined> {\n for (const api of this.midgardApis) {\n try {\n const resp = await api.getTHORNamesByAddress(address)\n if (resp.status == 404) {\n return []\n } else if (resp.status == 200) {\n return resp.data\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.response.status == 404) {\n return []\n }\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n /**\n * List actions along with their related transactions. An action is generated by one or more inbound transactions\n * with the intended action set in the transaction memo. The action may result in one or more outbound transactions.\n * Results are paginated by sets of 50. Filters may be applied to query actions.\n *\n * @param {GetActionsParams} params - Get actions params\n * @param {string} params.address - Comma separated list. Address of sender or recipient of any in/out transaction\n * related to the action.\n * @param {string} params.txid - ID of any in/out tx related to the action\n * @param {string} params.asset - Comma separated list. Any asset that is part of the action (CHAIN.SYMBOL) Additionally,\n * synth, nosynth, and norune filters can be used for swap, add/withdraw actions.\n * @param {ActionType} params.type - One or more comma separated unique types of action (swap, addLiquidity, withdraw,\n * donate, refund, switch)\n * @param {string} params.affiliate - Comma separated list. Affiliate address of the action (swap, refund)\n * @param {number} params.limit - Number of actions returned, default is 50\n * @param {number} params.offset - Pagination offset, default is 0\n * @param {number} params.nextPageToken - If this is given, the actions for the next page will be given\n * @param {number} params.timestamp - If this is given, the actions older than the timestamp will be given\n * @param {number} params.height - If this is given, the actions older than the height will be given\n * @param {number} params.prevPageToken - If this is given, the actions for the previous page will be given\n * @param {number} params.fromTimestamp - If this is given, the actions newer than the timestamp will be given\n * @param {number} params.fromHeight - If this is given, the actions newer than the height will be given\n *\n * @returns {ActionHistory} Array of actions for the given filters\n */\n public async getActions({\n address,\n txid,\n asset,\n type,\n txType,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n }: GetActionsParams): Promise<ActionHistory> {\n for (const api of this.midgardApis) {\n try {\n const response = await api.getActions(\n address,\n txid,\n asset,\n type,\n txType,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n )\n return response.data\n } catch (e) {}\n }\n throw new Error(`Midgard not responding`)\n }\n}\n","import { PoolDetail, SaverDetails } from '@xchainjs/xchain-midgard'\nimport { CachedValue } from '@xchainjs/xchain-util'\n\nimport { Midgard } from './utils/midgard'\n\nconst MILLISECOND_CACHE_POOLS = 5000\nconst MILLISECOND_CACHE_SAVERS = 5000\n\nconst defaultMidgard = new Midgard()\n\n/**\n * This class retrieves raw information from Midgard API and cached it\n */\n/**\n * Class for caching and retrieving data from Midgard API related to pools and savers.\n */\nexport class MidgardCache {\n readonly midgard: Midgard\n private readonly cachedPools: CachedValue<PoolDetail[]>\n private readonly cachedSavers: CachedValue<SaverDetails>\n\n /**\n * Constructor to create a MidgardCache.\n *\n * @param {Midgard} midgard - An instance of the Midgard API (could be pointing to stagenet, testnet, mainnet).\n * @returns MidgardCache\n */\n constructor(midgard = defaultMidgard) {\n this.midgard = midgard\n this.cachedPools = new CachedValue<PoolDetail[]>(() => this.midgard.getPools(), MILLISECOND_CACHE_POOLS)\n this.cachedSavers = new CachedValue<SaverDetails>(() => this.midgard.getSavers(''), MILLISECOND_CACHE_SAVERS)\n }\n\n /**\n * Get information about existing pools in the protocol from Midgard API.\n *\n * @returns {PoolDetail[]} Array of pools\n */\n public async getPools(): Promise<PoolDetail[]> {\n return this.cachedPools.getValue()\n }\n\n /**\n * Returns the information of all the positions of a set of addresses in the THORChain savers product.\n *\n * @param {String} address - Comma-separated list of addresses.\n * @returns {SaverDetails} Array of savers positions\n */\n public async getSavers(address: string): Promise<SaverDetails> {\n return this.cachedSavers.getValue(address)\n }\n}\n","import { AnyAsset, Asset, assetFromStringEx, assetToString } from '@xchainjs/xchain-util'\n\nexport const AssetAVAX = assetFromStringEx('AVAX.AVAX') as Asset\nexport const AssetBTC = assetFromStringEx('BTC.BTC') as Asset\nexport const AssetATOM = assetFromStringEx('GAIA.ATOM') as Asset\nexport const AssetRuneNative = assetFromStringEx('THOR.RUNE') as Asset\n\nexport const BTCChain = 'BTC'\nexport const GAIAChain = 'GAIA'\nexport const AVAXChain = 'AVAX'\n\nexport const isAssetRuneNative = (asset: AnyAsset): boolean => assetToString(asset) === assetToString(AssetRuneNative)\n","import { PoolDetail } from '@xchainjs/xchain-midgard'\nimport {\n Asset,\n CryptoAmount,\n TokenAsset,\n assetFromString,\n assetToString,\n baseAmount,\n isSynthAsset,\n isTradeAsset,\n} from '@xchainjs/xchain-util'\n\nimport { MidgardCache } from './midgard-cache'\nimport { ActionHistory, CompatibleAsset, GetActionsParams, SaversPosition, getSaver } from './types'\nimport { isAssetRuneNative } from './utils/const'\n\n/**\n * Default number of decimals used for THORChain assets.\n */\nconst DEFAULT_THORCHAIN_DECIMALS = 8\n\n/**\n * Default cache instance for Midgard queries.\n */\nconst defaultCache = new MidgardCache()\n\n/**\n * Class for retrieving and processing data from the Midgard API using MidgardCache to optimize request numbers (THORChain L2 API).\n */\nexport class MidgardQuery {\n readonly midgardCache: MidgardCache\n\n /**\n * Constructor to create a MidgardQuery.\n *\n * @param midgardCache - An instance of the MidgardCache (could be pointing to stagenet, testnet, mainnet).\n * @returns MidgardQuery\n */\n constructor(midgardCache = defaultCache) {\n this.midgardCache = midgardCache\n }\n\n /**\n * Get pool by asset.\n *\n * @param {string} asset - For example: BTC.BTC.\n * @returns {PoolDetail} - Details of the selected pool.\n * @throws {Error} - Can't find pool for asset.\n */\n private async getPool(asset: string): Promise<PoolDetail> {\n const pools = await this.midgardCache.getPools()\n const pool = pools.find((pool) => pool.asset === asset)\n if (!pool) {\n throw new Error(`Can't find pool for asset: ${asset}`)\n }\n return pool\n }\n\n /**\n * Get saver positions by an array of saver descriptions.\n *\n * @param {getSaver[]} params - Array of search conditions.\n * @returns {SaversPosition[]} - Information on the positions found.\n */\n public async getSaverPositions(params: getSaver[]): Promise<SaversPosition[]> {\n const addresses: Set<string> = new Set<string>()\n params.forEach((param) => addresses.add(param.address))\n const addressesString: string = Array.from(addresses).join(',')\n const saversDetail = await this.midgardCache.getSavers(addressesString)\n const errors: string[] = []\n\n const saversPositions: SaversPosition[] = []\n const allPositionsPromises = saversDetail.pools.map(async (saver) => {\n const asset = assetFromString(saver.pool) as Asset | TokenAsset\n\n if (asset) {\n const poolDetail = await this.getPool(saver.pool)\n const depositAmount = new CryptoAmount(baseAmount(saver.assetAdded).minus(saver.assetWithdrawn), asset)\n const ownerUnits = Number(saver?.saverUnits)\n const saverUnits = Number(poolDetail.saversUnits)\n const assetDepth = Number(poolDetail.saversDepth)\n const redeemableValue = (ownerUnits / saverUnits) * assetDepth\n const redeemableAssetAmount = new CryptoAmount(baseAmount(redeemableValue), asset)\n const saverGrowth = redeemableAssetAmount.minus(depositAmount).div(depositAmount).times(100)\n const saversAge = (Date.now() / 1000 - Number(saver.dateLastAdded)) / (365 * 86400)\n\n saversPositions.push({\n depositValue: depositAmount,\n redeemableValue: redeemableAssetAmount,\n lastAddHeight: -1,\n percentageGrowth: saverGrowth.assetAmount.amount().toNumber(),\n ageInYears: saversAge,\n ageInDays: saversAge * 365,\n asset,\n errors,\n })\n }\n })\n await Promise.all(allPositionsPromises)\n return saversPositions\n }\n\n /**\n * Returns the number of decimals for a given asset.\n *\n * @param {Asset} asset - The asset for getting decimals.\n * @returns {number} - Number of decimals from Midgard. Reference: https://gitlab.com/thorchain/midgard#refresh-native-decimals\n */\n public async getDecimalForAsset(asset: CompatibleAsset): Promise<number> {\n if (isAssetRuneNative(asset) || isSynthAsset(asset) || isTradeAsset(asset)) return DEFAULT_THORCHAIN_DECIMALS\n\n const pool = await this.getPool(assetToString(asset))\n return Number(pool.nativeDecimal)\n }\n\n /**\n * List actions along with their related transactions. An action is generated by one or more inbound transactions\n * with the intended action set in the transaction memo. The action may result in one or more outbound transactions.\n * Results are paginated by sets of 50. Filters may be applied to query actions.\n *\n * @param {GetActionsParams} params - Get actions params\n * @param {string} params.address - Comma separated list. Address of sender or recipient of any in/out transaction\n * related to the action.\n * @param {string} params.txid - ID of any in/out tx related to the action\n * @param {string} params.asset - Comma separated list. Any asset that is part of the action (CHAIN.SYMBOL) Additionally,\n * synth, nosynth, and norune filters can be used for swap, add/withdraw actions.\n * @param {ActionType} params.type - One or more comma separated unique types of action (swap, addLiquidity, withdraw,\n * donate, refund, switch)\n * @param {string} params.affiliate - Comma separated list. Affiliate address of the action (swap, refund)\n * @param {number} params.limit - Number of actions returned, default is 50\n * @param {number} params.offset - Pagination offset, default is 0\n * @param {number} params.nextPageToken - If this is given, the actions for the next page will be given\n * @param {number} params.timestamp - If this is given, the actions older than the timestamp will be given\n * @param {number} params.height - If this is given, the actions older than the height will be given\n * @param {number} params.prevPageToken - If this is given, the actions for the previous page will be given\n * @param {number} params.fromTimestamp - If this is given, the actions newer than the timestamp will be given\n * @param {number} params.fromHeight - If this is given, the actions newer than the height will be given\n *\n * @returns {ActionHistory} Array of actions for the given filters\n */\n public async getActions({\n address,\n txid,\n asset,\n type,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n }: GetActionsParams): Promise<ActionHistory> {\n return this.midgardCache.midgard.getActions({\n address,\n txid,\n asset,\n type,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n })\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/utils/midgard.ts","../src/midgard-cache.ts","../src/utils/const.ts","../src/midgard-query.ts"],"sourcesContent":["import { Network } from '@xchainjs/xchain-client'\nimport {\n Configuration,\n GetActions200Response as ActionHistory,\n MidgardApi,\n PoolDetail,\n ReverseTHORNames,\n SaverDetails,\n THORNameDetails,\n} from '@xchainjs/xchain-midgard'\nimport axios from 'axios'\nimport axiosRetry from 'axios-retry'\n\nimport { GetActionsParams, MidgardConfig } from '../types'\n\nconst defaultMidgardConfig: Record<Network, MidgardConfig> = {\n mainnet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://midgard.ninerealms.com'],\n },\n stagenet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://stagenet-midgard.ninerealms.com'],\n },\n testnet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://testnet.midgard.thorchain.info'],\n },\n}\n\nexport class Midgard {\n private config: MidgardConfig\n readonly network: Network\n private midgardApis: MidgardApi[]\n\n constructor(network: Network = Network.Mainnet, config?: MidgardConfig) {\n this.network = network\n this.config = config ?? defaultMidgardConfig[this.network]\n axiosRetry(axios, { retries: this.config.apiRetries, retryDelay: axiosRetry.exponentialDelay })\n this.midgardApis = this.config.midgardBaseUrls.map(\n (url: string) => new MidgardApi(new Configuration({ basePath: url })),\n )\n }\n\n /**\n * Function to return member details based on valid liquidity position\n * @param address - query can also be multiple addresses should be separated by comma\n * @returns - object type of Member Detail\n */\n public async getSavers(address: string): Promise<SaverDetails> {\n for (const api of this.midgardApis) {\n try {\n const saverDetails = (await api.getSaverDetail(address)).data\n return saverDetails\n } catch (e) {\n // console.error(e)\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n /**\n *\n * @returns an array of Pools\n */\n async getPools(): Promise<PoolDetail[]> {\n for (const api of this.midgardApis) {\n try {\n return (await api.getPools()).data\n } catch (e) {\n // console.error(e)\n }\n }\n throw new Error(`Midgard not responding`)\n }\n\n public async getTHORNameDetails(name: string): Promise<THORNameDetails | undefined> {\n for (const api of this.midgardApis) {\n try {\n const resp = await api.getTHORNameDetail(name)\n if (resp.status == 404) {\n return undefined\n } else if (resp.status == 200) {\n return resp.data\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.response.status == 404) {\n return undefined\n }\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n public async getTHORNameReverseLookup(address: string): Promise<ReverseTHORNames | undefined> {\n for (const api of this.midgardApis) {\n try {\n const resp = await api.getTHORNamesByAddress(address)\n if (resp.status == 404) {\n return []\n } else if (resp.status == 200) {\n return resp.data\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.response.status == 404) {\n return []\n }\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n /**\n * List actions along with their related transactions. An action is generated by one or more inbound transactions\n * with the intended action set in the transaction memo. The action may result in one or more outbound transactions.\n * Results are paginated by sets of 50. Filters may be applied to query actions.\n *\n * @param {GetActionsParams} params - Get actions params\n * @param {string} params.address - Comma separated list. Address of sender or recipient of any in/out transaction\n * related to the action.\n * @param {string} params.txid - ID of any in/out tx related to the action\n * @param {string} params.asset - Comma separated list. Any asset that is part of the action (CHAIN.SYMBOL) Additionally,\n * synth, nosynth, and norune filters can be used for swap, add/withdraw actions.\n * @param {ActionType} params.type - One or more comma separated unique types of action (swap, addLiquidity, withdraw,\n * donate, refund, switch)\n * @param {string} params.affiliate - Comma separated list. Affiliate address of the action (swap, refund)\n * @param {number} params.limit - Number of actions returned, default is 50\n * @param {number} params.offset - Pagination offset, default is 0\n * @param {number} params.nextPageToken - If this is given, the actions for the next page will be given\n * @param {number} params.timestamp - If this is given, the actions older than the timestamp will be given\n * @param {number} params.height - If this is given, the actions older than the height will be given\n * @param {number} params.prevPageToken - If this is given, the actions for the previous page will be given\n * @param {number} params.fromTimestamp - If this is given, the actions newer than the timestamp will be given\n * @param {number} params.fromHeight - If this is given, the actions newer than the height will be given\n *\n * @returns {ActionHistory} Array of actions for the given filters\n */\n public async getActions({\n address,\n txid,\n asset,\n type,\n txType,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n }: GetActionsParams): Promise<ActionHistory> {\n for (const api of this.midgardApis) {\n try {\n const response = await api.getActions(\n address,\n txid,\n asset,\n type,\n txType,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n )\n return response.data\n } catch (e) {}\n }\n throw new Error(`Midgard not responding`)\n }\n}\n","import { PoolDetail, SaverDetails } from '@xchainjs/xchain-midgard'\nimport { CachedValue } from '@xchainjs/xchain-util'\n\nimport { Midgard } from './utils/midgard'\n\nconst MILLISECOND_CACHE_POOLS = 5000\nconst MILLISECOND_CACHE_SAVERS = 5000\n\nconst defaultMidgard = new Midgard()\n\n/**\n * This class retrieves raw information from Midgard API and cached it\n */\n/**\n * Class for caching and retrieving data from Midgard API related to pools and savers.\n */\nexport class MidgardCache {\n readonly midgard: Midgard\n private readonly cachedPools: CachedValue<PoolDetail[]>\n private readonly cachedSavers: CachedValue<SaverDetails>\n\n /**\n * Constructor to create a MidgardCache.\n *\n * @param {Midgard} midgard - An instance of the Midgard API (could be pointing to stagenet, testnet, mainnet).\n * @returns MidgardCache\n */\n constructor(midgard = defaultMidgard) {\n this.midgard = midgard\n this.cachedPools = new CachedValue<PoolDetail[]>(() => this.midgard.getPools(), MILLISECOND_CACHE_POOLS)\n this.cachedSavers = new CachedValue<SaverDetails>(() => this.midgard.getSavers(''), MILLISECOND_CACHE_SAVERS)\n }\n\n /**\n * Get information about existing pools in the protocol from Midgard API.\n *\n * @returns {PoolDetail[]} Array of pools\n */\n public async getPools(): Promise<PoolDetail[]> {\n return this.cachedPools.getValue()\n }\n\n /**\n * Returns the information of all the positions of a set of addresses in the THORChain savers product.\n *\n * @param {String} address - Comma-separated list of addresses.\n * @returns {SaverDetails} Array of savers positions\n */\n public async getSavers(address: string): Promise<SaverDetails> {\n return this.cachedSavers.getValue(address)\n }\n}\n","import { AnyAsset, Asset, assetFromStringEx, assetToString } from '@xchainjs/xchain-util'\n\nexport const AssetAVAX = assetFromStringEx('AVAX.AVAX') as Asset\nexport const AssetBTC = assetFromStringEx('BTC.BTC') as Asset\nexport const AssetATOM = assetFromStringEx('GAIA.ATOM') as Asset\nexport const AssetRuneNative = assetFromStringEx('THOR.RUNE') as Asset\n\nexport const BTCChain = 'BTC'\nexport const GAIAChain = 'GAIA'\nexport const AVAXChain = 'AVAX'\n\nexport const isAssetRuneNative = (asset: AnyAsset): boolean => assetToString(asset) === assetToString(AssetRuneNative)\n","import { PoolDetail } from '@xchainjs/xchain-midgard'\nimport {\n Asset,\n CryptoAmount,\n TokenAsset,\n assetFromString,\n assetToString,\n baseAmount,\n isSecuredAsset,\n isSynthAsset,\n isTradeAsset,\n} from '@xchainjs/xchain-util'\n\nimport { MidgardCache } from './midgard-cache'\nimport { ActionHistory, CompatibleAsset, GetActionsParams, SaversPosition, getSaver } from './types'\nimport { isAssetRuneNative } from './utils/const'\n\n/**\n * Default number of decimals used for THORChain assets.\n */\nconst DEFAULT_THORCHAIN_DECIMALS = 8\n\n/**\n * Default cache instance for Midgard queries.\n */\nconst defaultCache = new MidgardCache()\n\n/**\n * Class for retrieving and processing data from the Midgard API using MidgardCache to optimize request numbers (THORChain L2 API).\n */\nexport class MidgardQuery {\n readonly midgardCache: MidgardCache\n\n /**\n * Constructor to create a MidgardQuery.\n *\n * @param midgardCache - An instance of the MidgardCache (could be pointing to stagenet, testnet, mainnet).\n * @returns MidgardQuery\n */\n constructor(midgardCache = defaultCache) {\n this.midgardCache = midgardCache\n }\n\n /**\n * Get pool by asset.\n *\n * @param {string} asset - For example: BTC.BTC.\n * @returns {PoolDetail} - Details of the selected pool.\n * @throws {Error} - Can't find pool for asset.\n */\n private async getPool(asset: string): Promise<PoolDetail> {\n const pools = await this.midgardCache.getPools()\n const pool = pools.find((pool) => pool.asset === asset)\n if (!pool) {\n throw new Error(`Can't find pool for asset: ${asset}`)\n }\n return pool\n }\n\n /**\n * Get saver positions by an array of saver descriptions.\n *\n * @param {getSaver[]} params - Array of search conditions.\n * @returns {SaversPosition[]} - Information on the positions found.\n */\n public async getSaverPositions(params: getSaver[]): Promise<SaversPosition[]> {\n const addresses: Set<string> = new Set<string>()\n params.forEach((param) => addresses.add(param.address))\n const addressesString: string = Array.from(addresses).join(',')\n const saversDetail = await this.midgardCache.getSavers(addressesString)\n const errors: string[] = []\n\n const saversPositions: SaversPosition[] = []\n const allPositionsPromises = saversDetail.pools.map(async (saver) => {\n const asset = assetFromString(saver.pool) as Asset | TokenAsset\n\n if (asset) {\n const poolDetail = await this.getPool(saver.pool)\n const depositAmount = new CryptoAmount(baseAmount(saver.assetAdded).minus(saver.assetWithdrawn), asset)\n const ownerUnits = Number(saver?.saverUnits)\n const saverUnits = Number(poolDetail.saversUnits)\n const assetDepth = Number(poolDetail.saversDepth)\n const redeemableValue = (ownerUnits / saverUnits) * assetDepth\n const redeemableAssetAmount = new CryptoAmount(baseAmount(redeemableValue), asset)\n const saverGrowth = redeemableAssetAmount.minus(depositAmount).div(depositAmount).times(100)\n const saversAge = (Date.now() / 1000 - Number(saver.dateLastAdded)) / (365 * 86400)\n\n saversPositions.push({\n depositValue: depositAmount,\n redeemableValue: redeemableAssetAmount,\n lastAddHeight: -1,\n percentageGrowth: saverGrowth.assetAmount.amount().toNumber(),\n ageInYears: saversAge,\n ageInDays: saversAge * 365,\n asset,\n errors,\n })\n }\n })\n await Promise.all(allPositionsPromises)\n return saversPositions\n }\n\n /**\n * Returns the number of decimals for a given asset.\n *\n * @param {Asset} asset - The asset for getting decimals.\n * @returns {number} - Number of decimals from Midgard. Reference: https://gitlab.com/thorchain/midgard#refresh-native-decimals\n */\n public async getDecimalForAsset(asset: CompatibleAsset): Promise<number> {\n if (isAssetRuneNative(asset) || isSynthAsset(asset) || isTradeAsset(asset) || isSecuredAsset(asset))\n return DEFAULT_THORCHAIN_DECIMALS\n\n const pool = await this.getPool(assetToString(asset))\n return Number(pool.nativeDecimal)\n }\n\n /**\n * List actions along with their related transactions. An action is generated by one or more inbound transactions\n * with the intended action set in the transaction memo. The action may result in one or more outbound transactions.\n * Results are paginated by sets of 50. Filters may be applied to query actions.\n *\n * @param {GetActionsParams} params - Get actions params\n * @param {string} params.address - Comma separated list. Address of sender or recipient of any in/out transaction\n * related to the action.\n * @param {string} params.txid - ID of any in/out tx related to the action\n * @param {string} params.asset - Comma separated list. Any asset that is part of the action (CHAIN.SYMBOL) Additionally,\n * synth, nosynth, and norune filters can be used for swap, add/withdraw actions.\n * @param {ActionType} params.type - One or more comma separated unique types of action (swap, addLiquidity, withdraw,\n * donate, refund, switch)\n * @param {string} params.affiliate - Comma separated list. Affiliate address of the action (swap, refund)\n * @param {number} params.limit - Number of actions returned, default is 50\n * @param {number} params.offset - Pagination offset, default is 0\n * @param {number} params.nextPageToken - If this is given, the actions for the next page will be given\n * @param {number} params.timestamp - If this is given, the actions older than the timestamp will be given\n * @param {number} params.height - If this is given, the actions older than the height will be given\n * @param {number} params.prevPageToken - If this is given, the actions for the previous page will be given\n * @param {number} params.fromTimestamp - If this is given, the actions newer than the timestamp will be given\n * @param {number} params.fromHeight - If this is given, the actions newer than the height will be given\n *\n * @returns {ActionHistory} Array of actions for the given filters\n */\n public async getActions({\n address,\n txid,\n asset,\n type,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n }: GetActionsParams): Promise<ActionHistory> {\n return this.midgardCache.midgard.getActions({\n address,\n txid,\n asset,\n type,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n })\n }\n}\n"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -321,7 +321,7 @@ class MidgardQuery {
321
321
  */
322
322
  getDecimalForAsset(asset) {
323
323
  return __awaiter(this, void 0, void 0, function* () {
324
- if (isAssetRuneNative(asset) || xchainUtil.isSynthAsset(asset) || xchainUtil.isTradeAsset(asset))
324
+ if (isAssetRuneNative(asset) || xchainUtil.isSynthAsset(asset) || xchainUtil.isTradeAsset(asset) || xchainUtil.isSecuredAsset(asset))
325
325
  return DEFAULT_THORCHAIN_DECIMALS;
326
326
  const pool = yield this.getPool(xchainUtil.assetToString(asset));
327
327
  return Number(pool.nativeDecimal);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/midgard.ts","../src/midgard-cache.ts","../src/utils/const.ts","../src/midgard-query.ts"],"sourcesContent":["import { Network } from '@xchainjs/xchain-client'\nimport {\n Configuration,\n GetActions200Response as ActionHistory,\n MidgardApi,\n PoolDetail,\n ReverseTHORNames,\n SaverDetails,\n THORNameDetails,\n} from '@xchainjs/xchain-midgard'\nimport axios from 'axios'\nimport axiosRetry from 'axios-retry'\n\nimport { GetActionsParams, MidgardConfig } from '../types'\n\nconst defaultMidgardConfig: Record<Network, MidgardConfig> = {\n mainnet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://midgard.ninerealms.com'],\n },\n stagenet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://stagenet-midgard.ninerealms.com'],\n },\n testnet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://testnet.midgard.thorchain.info'],\n },\n}\n\nexport class Midgard {\n private config: MidgardConfig\n readonly network: Network\n private midgardApis: MidgardApi[]\n\n constructor(network: Network = Network.Mainnet, config?: MidgardConfig) {\n this.network = network\n this.config = config ?? defaultMidgardConfig[this.network]\n axiosRetry(axios, { retries: this.config.apiRetries, retryDelay: axiosRetry.exponentialDelay })\n this.midgardApis = this.config.midgardBaseUrls.map(\n (url: string) => new MidgardApi(new Configuration({ basePath: url })),\n )\n }\n\n /**\n * Function to return member details based on valid liquidity position\n * @param address - query can also be multiple addresses should be separated by comma\n * @returns - object type of Member Detail\n */\n public async getSavers(address: string): Promise<SaverDetails> {\n for (const api of this.midgardApis) {\n try {\n const saverDetails = (await api.getSaverDetail(address)).data\n return saverDetails\n } catch (e) {\n // console.error(e)\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n /**\n *\n * @returns an array of Pools\n */\n async getPools(): Promise<PoolDetail[]> {\n for (const api of this.midgardApis) {\n try {\n return (await api.getPools()).data\n } catch (e) {\n // console.error(e)\n }\n }\n throw new Error(`Midgard not responding`)\n }\n\n public async getTHORNameDetails(name: string): Promise<THORNameDetails | undefined> {\n for (const api of this.midgardApis) {\n try {\n const resp = await api.getTHORNameDetail(name)\n if (resp.status == 404) {\n return undefined\n } else if (resp.status == 200) {\n return resp.data\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.response.status == 404) {\n return undefined\n }\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n public async getTHORNameReverseLookup(address: string): Promise<ReverseTHORNames | undefined> {\n for (const api of this.midgardApis) {\n try {\n const resp = await api.getTHORNamesByAddress(address)\n if (resp.status == 404) {\n return []\n } else if (resp.status == 200) {\n return resp.data\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.response.status == 404) {\n return []\n }\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n /**\n * List actions along with their related transactions. An action is generated by one or more inbound transactions\n * with the intended action set in the transaction memo. The action may result in one or more outbound transactions.\n * Results are paginated by sets of 50. Filters may be applied to query actions.\n *\n * @param {GetActionsParams} params - Get actions params\n * @param {string} params.address - Comma separated list. Address of sender or recipient of any in/out transaction\n * related to the action.\n * @param {string} params.txid - ID of any in/out tx related to the action\n * @param {string} params.asset - Comma separated list. Any asset that is part of the action (CHAIN.SYMBOL) Additionally,\n * synth, nosynth, and norune filters can be used for swap, add/withdraw actions.\n * @param {ActionType} params.type - One or more comma separated unique types of action (swap, addLiquidity, withdraw,\n * donate, refund, switch)\n * @param {string} params.affiliate - Comma separated list. Affiliate address of the action (swap, refund)\n * @param {number} params.limit - Number of actions returned, default is 50\n * @param {number} params.offset - Pagination offset, default is 0\n * @param {number} params.nextPageToken - If this is given, the actions for the next page will be given\n * @param {number} params.timestamp - If this is given, the actions older than the timestamp will be given\n * @param {number} params.height - If this is given, the actions older than the height will be given\n * @param {number} params.prevPageToken - If this is given, the actions for the previous page will be given\n * @param {number} params.fromTimestamp - If this is given, the actions newer than the timestamp will be given\n * @param {number} params.fromHeight - If this is given, the actions newer than the height will be given\n *\n * @returns {ActionHistory} Array of actions for the given filters\n */\n public async getActions({\n address,\n txid,\n asset,\n type,\n txType,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n }: GetActionsParams): Promise<ActionHistory> {\n for (const api of this.midgardApis) {\n try {\n const response = await api.getActions(\n address,\n txid,\n asset,\n type,\n txType,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n )\n return response.data\n } catch (e) {}\n }\n throw new Error(`Midgard not responding`)\n }\n}\n","import { PoolDetail, SaverDetails } from '@xchainjs/xchain-midgard'\nimport { CachedValue } from '@xchainjs/xchain-util'\n\nimport { Midgard } from './utils/midgard'\n\nconst MILLISECOND_CACHE_POOLS = 5000\nconst MILLISECOND_CACHE_SAVERS = 5000\n\nconst defaultMidgard = new Midgard()\n\n/**\n * This class retrieves raw information from Midgard API and cached it\n */\n/**\n * Class for caching and retrieving data from Midgard API related to pools and savers.\n */\nexport class MidgardCache {\n readonly midgard: Midgard\n private readonly cachedPools: CachedValue<PoolDetail[]>\n private readonly cachedSavers: CachedValue<SaverDetails>\n\n /**\n * Constructor to create a MidgardCache.\n *\n * @param {Midgard} midgard - An instance of the Midgard API (could be pointing to stagenet, testnet, mainnet).\n * @returns MidgardCache\n */\n constructor(midgard = defaultMidgard) {\n this.midgard = midgard\n this.cachedPools = new CachedValue<PoolDetail[]>(() => this.midgard.getPools(), MILLISECOND_CACHE_POOLS)\n this.cachedSavers = new CachedValue<SaverDetails>(() => this.midgard.getSavers(''), MILLISECOND_CACHE_SAVERS)\n }\n\n /**\n * Get information about existing pools in the protocol from Midgard API.\n *\n * @returns {PoolDetail[]} Array of pools\n */\n public async getPools(): Promise<PoolDetail[]> {\n return this.cachedPools.getValue()\n }\n\n /**\n * Returns the information of all the positions of a set of addresses in the THORChain savers product.\n *\n * @param {String} address - Comma-separated list of addresses.\n * @returns {SaverDetails} Array of savers positions\n */\n public async getSavers(address: string): Promise<SaverDetails> {\n return this.cachedSavers.getValue(address)\n }\n}\n","import { AnyAsset, Asset, assetFromStringEx, assetToString } from '@xchainjs/xchain-util'\n\nexport const AssetAVAX = assetFromStringEx('AVAX.AVAX') as Asset\nexport const AssetBTC = assetFromStringEx('BTC.BTC') as Asset\nexport const AssetATOM = assetFromStringEx('GAIA.ATOM') as Asset\nexport const AssetRuneNative = assetFromStringEx('THOR.RUNE') as Asset\n\nexport const BTCChain = 'BTC'\nexport const GAIAChain = 'GAIA'\nexport const AVAXChain = 'AVAX'\n\nexport const isAssetRuneNative = (asset: AnyAsset): boolean => assetToString(asset) === assetToString(AssetRuneNative)\n","import { PoolDetail } from '@xchainjs/xchain-midgard'\nimport {\n Asset,\n CryptoAmount,\n TokenAsset,\n assetFromString,\n assetToString,\n baseAmount,\n isSynthAsset,\n isTradeAsset,\n} from '@xchainjs/xchain-util'\n\nimport { MidgardCache } from './midgard-cache'\nimport { ActionHistory, CompatibleAsset, GetActionsParams, SaversPosition, getSaver } from './types'\nimport { isAssetRuneNative } from './utils/const'\n\n/**\n * Default number of decimals used for THORChain assets.\n */\nconst DEFAULT_THORCHAIN_DECIMALS = 8\n\n/**\n * Default cache instance for Midgard queries.\n */\nconst defaultCache = new MidgardCache()\n\n/**\n * Class for retrieving and processing data from the Midgard API using MidgardCache to optimize request numbers (THORChain L2 API).\n */\nexport class MidgardQuery {\n readonly midgardCache: MidgardCache\n\n /**\n * Constructor to create a MidgardQuery.\n *\n * @param midgardCache - An instance of the MidgardCache (could be pointing to stagenet, testnet, mainnet).\n * @returns MidgardQuery\n */\n constructor(midgardCache = defaultCache) {\n this.midgardCache = midgardCache\n }\n\n /**\n * Get pool by asset.\n *\n * @param {string} asset - For example: BTC.BTC.\n * @returns {PoolDetail} - Details of the selected pool.\n * @throws {Error} - Can't find pool for asset.\n */\n private async getPool(asset: string): Promise<PoolDetail> {\n const pools = await this.midgardCache.getPools()\n const pool = pools.find((pool) => pool.asset === asset)\n if (!pool) {\n throw new Error(`Can't find pool for asset: ${asset}`)\n }\n return pool\n }\n\n /**\n * Get saver positions by an array of saver descriptions.\n *\n * @param {getSaver[]} params - Array of search conditions.\n * @returns {SaversPosition[]} - Information on the positions found.\n */\n public async getSaverPositions(params: getSaver[]): Promise<SaversPosition[]> {\n const addresses: Set<string> = new Set<string>()\n params.forEach((param) => addresses.add(param.address))\n const addressesString: string = Array.from(addresses).join(',')\n const saversDetail = await this.midgardCache.getSavers(addressesString)\n const errors: string[] = []\n\n const saversPositions: SaversPosition[] = []\n const allPositionsPromises = saversDetail.pools.map(async (saver) => {\n const asset = assetFromString(saver.pool) as Asset | TokenAsset\n\n if (asset) {\n const poolDetail = await this.getPool(saver.pool)\n const depositAmount = new CryptoAmount(baseAmount(saver.assetAdded).minus(saver.assetWithdrawn), asset)\n const ownerUnits = Number(saver?.saverUnits)\n const saverUnits = Number(poolDetail.saversUnits)\n const assetDepth = Number(poolDetail.saversDepth)\n const redeemableValue = (ownerUnits / saverUnits) * assetDepth\n const redeemableAssetAmount = new CryptoAmount(baseAmount(redeemableValue), asset)\n const saverGrowth = redeemableAssetAmount.minus(depositAmount).div(depositAmount).times(100)\n const saversAge = (Date.now() / 1000 - Number(saver.dateLastAdded)) / (365 * 86400)\n\n saversPositions.push({\n depositValue: depositAmount,\n redeemableValue: redeemableAssetAmount,\n lastAddHeight: -1,\n percentageGrowth: saverGrowth.assetAmount.amount().toNumber(),\n ageInYears: saversAge,\n ageInDays: saversAge * 365,\n asset,\n errors,\n })\n }\n })\n await Promise.all(allPositionsPromises)\n return saversPositions\n }\n\n /**\n * Returns the number of decimals for a given asset.\n *\n * @param {Asset} asset - The asset for getting decimals.\n * @returns {number} - Number of decimals from Midgard. Reference: https://gitlab.com/thorchain/midgard#refresh-native-decimals\n */\n public async getDecimalForAsset(asset: CompatibleAsset): Promise<number> {\n if (isAssetRuneNative(asset) || isSynthAsset(asset) || isTradeAsset(asset)) return DEFAULT_THORCHAIN_DECIMALS\n\n const pool = await this.getPool(assetToString(asset))\n return Number(pool.nativeDecimal)\n }\n\n /**\n * List actions along with their related transactions. An action is generated by one or more inbound transactions\n * with the intended action set in the transaction memo. The action may result in one or more outbound transactions.\n * Results are paginated by sets of 50. Filters may be applied to query actions.\n *\n * @param {GetActionsParams} params - Get actions params\n * @param {string} params.address - Comma separated list. Address of sender or recipient of any in/out transaction\n * related to the action.\n * @param {string} params.txid - ID of any in/out tx related to the action\n * @param {string} params.asset - Comma separated list. Any asset that is part of the action (CHAIN.SYMBOL) Additionally,\n * synth, nosynth, and norune filters can be used for swap, add/withdraw actions.\n * @param {ActionType} params.type - One or more comma separated unique types of action (swap, addLiquidity, withdraw,\n * donate, refund, switch)\n * @param {string} params.affiliate - Comma separated list. Affiliate address of the action (swap, refund)\n * @param {number} params.limit - Number of actions returned, default is 50\n * @param {number} params.offset - Pagination offset, default is 0\n * @param {number} params.nextPageToken - If this is given, the actions for the next page will be given\n * @param {number} params.timestamp - If this is given, the actions older than the timestamp will be given\n * @param {number} params.height - If this is given, the actions older than the height will be given\n * @param {number} params.prevPageToken - If this is given, the actions for the previous page will be given\n * @param {number} params.fromTimestamp - If this is given, the actions newer than the timestamp will be given\n * @param {number} params.fromHeight - If this is given, the actions newer than the height will be given\n *\n * @returns {ActionHistory} Array of actions for the given filters\n */\n public async getActions({\n address,\n txid,\n asset,\n type,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n }: GetActionsParams): Promise<ActionHistory> {\n return this.midgardCache.midgard.getActions({\n address,\n txid,\n asset,\n type,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n })\n }\n}\n"],"names":["Network","axiosRetry","axios","MidgardApi","Configuration","CachedValue","assetFromStringEx","assetToString","assetFromString","CryptoAmount","baseAmount","isSynthAsset","isTradeAsset"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/midgard.ts","../src/midgard-cache.ts","../src/utils/const.ts","../src/midgard-query.ts"],"sourcesContent":["import { Network } from '@xchainjs/xchain-client'\nimport {\n Configuration,\n GetActions200Response as ActionHistory,\n MidgardApi,\n PoolDetail,\n ReverseTHORNames,\n SaverDetails,\n THORNameDetails,\n} from '@xchainjs/xchain-midgard'\nimport axios from 'axios'\nimport axiosRetry from 'axios-retry'\n\nimport { GetActionsParams, MidgardConfig } from '../types'\n\nconst defaultMidgardConfig: Record<Network, MidgardConfig> = {\n mainnet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://midgard.ninerealms.com'],\n },\n stagenet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://stagenet-midgard.ninerealms.com'],\n },\n testnet: {\n apiRetries: 3,\n midgardBaseUrls: ['https://testnet.midgard.thorchain.info'],\n },\n}\n\nexport class Midgard {\n private config: MidgardConfig\n readonly network: Network\n private midgardApis: MidgardApi[]\n\n constructor(network: Network = Network.Mainnet, config?: MidgardConfig) {\n this.network = network\n this.config = config ?? defaultMidgardConfig[this.network]\n axiosRetry(axios, { retries: this.config.apiRetries, retryDelay: axiosRetry.exponentialDelay })\n this.midgardApis = this.config.midgardBaseUrls.map(\n (url: string) => new MidgardApi(new Configuration({ basePath: url })),\n )\n }\n\n /**\n * Function to return member details based on valid liquidity position\n * @param address - query can also be multiple addresses should be separated by comma\n * @returns - object type of Member Detail\n */\n public async getSavers(address: string): Promise<SaverDetails> {\n for (const api of this.midgardApis) {\n try {\n const saverDetails = (await api.getSaverDetail(address)).data\n return saverDetails\n } catch (e) {\n // console.error(e)\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n /**\n *\n * @returns an array of Pools\n */\n async getPools(): Promise<PoolDetail[]> {\n for (const api of this.midgardApis) {\n try {\n return (await api.getPools()).data\n } catch (e) {\n // console.error(e)\n }\n }\n throw new Error(`Midgard not responding`)\n }\n\n public async getTHORNameDetails(name: string): Promise<THORNameDetails | undefined> {\n for (const api of this.midgardApis) {\n try {\n const resp = await api.getTHORNameDetail(name)\n if (resp.status == 404) {\n return undefined\n } else if (resp.status == 200) {\n return resp.data\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.response.status == 404) {\n return undefined\n }\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n public async getTHORNameReverseLookup(address: string): Promise<ReverseTHORNames | undefined> {\n for (const api of this.midgardApis) {\n try {\n const resp = await api.getTHORNamesByAddress(address)\n if (resp.status == 404) {\n return []\n } else if (resp.status == 200) {\n return resp.data\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n if (e.response.status == 404) {\n return []\n }\n }\n }\n throw Error(`Midgard not responding`)\n }\n\n /**\n * List actions along with their related transactions. An action is generated by one or more inbound transactions\n * with the intended action set in the transaction memo. The action may result in one or more outbound transactions.\n * Results are paginated by sets of 50. Filters may be applied to query actions.\n *\n * @param {GetActionsParams} params - Get actions params\n * @param {string} params.address - Comma separated list. Address of sender or recipient of any in/out transaction\n * related to the action.\n * @param {string} params.txid - ID of any in/out tx related to the action\n * @param {string} params.asset - Comma separated list. Any asset that is part of the action (CHAIN.SYMBOL) Additionally,\n * synth, nosynth, and norune filters can be used for swap, add/withdraw actions.\n * @param {ActionType} params.type - One or more comma separated unique types of action (swap, addLiquidity, withdraw,\n * donate, refund, switch)\n * @param {string} params.affiliate - Comma separated list. Affiliate address of the action (swap, refund)\n * @param {number} params.limit - Number of actions returned, default is 50\n * @param {number} params.offset - Pagination offset, default is 0\n * @param {number} params.nextPageToken - If this is given, the actions for the next page will be given\n * @param {number} params.timestamp - If this is given, the actions older than the timestamp will be given\n * @param {number} params.height - If this is given, the actions older than the height will be given\n * @param {number} params.prevPageToken - If this is given, the actions for the previous page will be given\n * @param {number} params.fromTimestamp - If this is given, the actions newer than the timestamp will be given\n * @param {number} params.fromHeight - If this is given, the actions newer than the height will be given\n *\n * @returns {ActionHistory} Array of actions for the given filters\n */\n public async getActions({\n address,\n txid,\n asset,\n type,\n txType,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n }: GetActionsParams): Promise<ActionHistory> {\n for (const api of this.midgardApis) {\n try {\n const response = await api.getActions(\n address,\n txid,\n asset,\n type,\n txType,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n )\n return response.data\n } catch (e) {}\n }\n throw new Error(`Midgard not responding`)\n }\n}\n","import { PoolDetail, SaverDetails } from '@xchainjs/xchain-midgard'\nimport { CachedValue } from '@xchainjs/xchain-util'\n\nimport { Midgard } from './utils/midgard'\n\nconst MILLISECOND_CACHE_POOLS = 5000\nconst MILLISECOND_CACHE_SAVERS = 5000\n\nconst defaultMidgard = new Midgard()\n\n/**\n * This class retrieves raw information from Midgard API and cached it\n */\n/**\n * Class for caching and retrieving data from Midgard API related to pools and savers.\n */\nexport class MidgardCache {\n readonly midgard: Midgard\n private readonly cachedPools: CachedValue<PoolDetail[]>\n private readonly cachedSavers: CachedValue<SaverDetails>\n\n /**\n * Constructor to create a MidgardCache.\n *\n * @param {Midgard} midgard - An instance of the Midgard API (could be pointing to stagenet, testnet, mainnet).\n * @returns MidgardCache\n */\n constructor(midgard = defaultMidgard) {\n this.midgard = midgard\n this.cachedPools = new CachedValue<PoolDetail[]>(() => this.midgard.getPools(), MILLISECOND_CACHE_POOLS)\n this.cachedSavers = new CachedValue<SaverDetails>(() => this.midgard.getSavers(''), MILLISECOND_CACHE_SAVERS)\n }\n\n /**\n * Get information about existing pools in the protocol from Midgard API.\n *\n * @returns {PoolDetail[]} Array of pools\n */\n public async getPools(): Promise<PoolDetail[]> {\n return this.cachedPools.getValue()\n }\n\n /**\n * Returns the information of all the positions of a set of addresses in the THORChain savers product.\n *\n * @param {String} address - Comma-separated list of addresses.\n * @returns {SaverDetails} Array of savers positions\n */\n public async getSavers(address: string): Promise<SaverDetails> {\n return this.cachedSavers.getValue(address)\n }\n}\n","import { AnyAsset, Asset, assetFromStringEx, assetToString } from '@xchainjs/xchain-util'\n\nexport const AssetAVAX = assetFromStringEx('AVAX.AVAX') as Asset\nexport const AssetBTC = assetFromStringEx('BTC.BTC') as Asset\nexport const AssetATOM = assetFromStringEx('GAIA.ATOM') as Asset\nexport const AssetRuneNative = assetFromStringEx('THOR.RUNE') as Asset\n\nexport const BTCChain = 'BTC'\nexport const GAIAChain = 'GAIA'\nexport const AVAXChain = 'AVAX'\n\nexport const isAssetRuneNative = (asset: AnyAsset): boolean => assetToString(asset) === assetToString(AssetRuneNative)\n","import { PoolDetail } from '@xchainjs/xchain-midgard'\nimport {\n Asset,\n CryptoAmount,\n TokenAsset,\n assetFromString,\n assetToString,\n baseAmount,\n isSecuredAsset,\n isSynthAsset,\n isTradeAsset,\n} from '@xchainjs/xchain-util'\n\nimport { MidgardCache } from './midgard-cache'\nimport { ActionHistory, CompatibleAsset, GetActionsParams, SaversPosition, getSaver } from './types'\nimport { isAssetRuneNative } from './utils/const'\n\n/**\n * Default number of decimals used for THORChain assets.\n */\nconst DEFAULT_THORCHAIN_DECIMALS = 8\n\n/**\n * Default cache instance for Midgard queries.\n */\nconst defaultCache = new MidgardCache()\n\n/**\n * Class for retrieving and processing data from the Midgard API using MidgardCache to optimize request numbers (THORChain L2 API).\n */\nexport class MidgardQuery {\n readonly midgardCache: MidgardCache\n\n /**\n * Constructor to create a MidgardQuery.\n *\n * @param midgardCache - An instance of the MidgardCache (could be pointing to stagenet, testnet, mainnet).\n * @returns MidgardQuery\n */\n constructor(midgardCache = defaultCache) {\n this.midgardCache = midgardCache\n }\n\n /**\n * Get pool by asset.\n *\n * @param {string} asset - For example: BTC.BTC.\n * @returns {PoolDetail} - Details of the selected pool.\n * @throws {Error} - Can't find pool for asset.\n */\n private async getPool(asset: string): Promise<PoolDetail> {\n const pools = await this.midgardCache.getPools()\n const pool = pools.find((pool) => pool.asset === asset)\n if (!pool) {\n throw new Error(`Can't find pool for asset: ${asset}`)\n }\n return pool\n }\n\n /**\n * Get saver positions by an array of saver descriptions.\n *\n * @param {getSaver[]} params - Array of search conditions.\n * @returns {SaversPosition[]} - Information on the positions found.\n */\n public async getSaverPositions(params: getSaver[]): Promise<SaversPosition[]> {\n const addresses: Set<string> = new Set<string>()\n params.forEach((param) => addresses.add(param.address))\n const addressesString: string = Array.from(addresses).join(',')\n const saversDetail = await this.midgardCache.getSavers(addressesString)\n const errors: string[] = []\n\n const saversPositions: SaversPosition[] = []\n const allPositionsPromises = saversDetail.pools.map(async (saver) => {\n const asset = assetFromString(saver.pool) as Asset | TokenAsset\n\n if (asset) {\n const poolDetail = await this.getPool(saver.pool)\n const depositAmount = new CryptoAmount(baseAmount(saver.assetAdded).minus(saver.assetWithdrawn), asset)\n const ownerUnits = Number(saver?.saverUnits)\n const saverUnits = Number(poolDetail.saversUnits)\n const assetDepth = Number(poolDetail.saversDepth)\n const redeemableValue = (ownerUnits / saverUnits) * assetDepth\n const redeemableAssetAmount = new CryptoAmount(baseAmount(redeemableValue), asset)\n const saverGrowth = redeemableAssetAmount.minus(depositAmount).div(depositAmount).times(100)\n const saversAge = (Date.now() / 1000 - Number(saver.dateLastAdded)) / (365 * 86400)\n\n saversPositions.push({\n depositValue: depositAmount,\n redeemableValue: redeemableAssetAmount,\n lastAddHeight: -1,\n percentageGrowth: saverGrowth.assetAmount.amount().toNumber(),\n ageInYears: saversAge,\n ageInDays: saversAge * 365,\n asset,\n errors,\n })\n }\n })\n await Promise.all(allPositionsPromises)\n return saversPositions\n }\n\n /**\n * Returns the number of decimals for a given asset.\n *\n * @param {Asset} asset - The asset for getting decimals.\n * @returns {number} - Number of decimals from Midgard. Reference: https://gitlab.com/thorchain/midgard#refresh-native-decimals\n */\n public async getDecimalForAsset(asset: CompatibleAsset): Promise<number> {\n if (isAssetRuneNative(asset) || isSynthAsset(asset) || isTradeAsset(asset) || isSecuredAsset(asset))\n return DEFAULT_THORCHAIN_DECIMALS\n\n const pool = await this.getPool(assetToString(asset))\n return Number(pool.nativeDecimal)\n }\n\n /**\n * List actions along with their related transactions. An action is generated by one or more inbound transactions\n * with the intended action set in the transaction memo. The action may result in one or more outbound transactions.\n * Results are paginated by sets of 50. Filters may be applied to query actions.\n *\n * @param {GetActionsParams} params - Get actions params\n * @param {string} params.address - Comma separated list. Address of sender or recipient of any in/out transaction\n * related to the action.\n * @param {string} params.txid - ID of any in/out tx related to the action\n * @param {string} params.asset - Comma separated list. Any asset that is part of the action (CHAIN.SYMBOL) Additionally,\n * synth, nosynth, and norune filters can be used for swap, add/withdraw actions.\n * @param {ActionType} params.type - One or more comma separated unique types of action (swap, addLiquidity, withdraw,\n * donate, refund, switch)\n * @param {string} params.affiliate - Comma separated list. Affiliate address of the action (swap, refund)\n * @param {number} params.limit - Number of actions returned, default is 50\n * @param {number} params.offset - Pagination offset, default is 0\n * @param {number} params.nextPageToken - If this is given, the actions for the next page will be given\n * @param {number} params.timestamp - If this is given, the actions older than the timestamp will be given\n * @param {number} params.height - If this is given, the actions older than the height will be given\n * @param {number} params.prevPageToken - If this is given, the actions for the previous page will be given\n * @param {number} params.fromTimestamp - If this is given, the actions newer than the timestamp will be given\n * @param {number} params.fromHeight - If this is given, the actions newer than the height will be given\n *\n * @returns {ActionHistory} Array of actions for the given filters\n */\n public async getActions({\n address,\n txid,\n asset,\n type,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n }: GetActionsParams): Promise<ActionHistory> {\n return this.midgardCache.midgard.getActions({\n address,\n txid,\n asset,\n type,\n affiliate,\n limit,\n offset,\n nextPageToken,\n timestamp,\n height,\n prevPageToken,\n fromTimestamp,\n fromHeight,\n })\n }\n}\n"],"names":["Network","axiosRetry","axios","MidgardApi","Configuration","CachedValue","assetFromStringEx","assetToString","assetFromString","CryptoAmount","baseAmount","isSynthAsset","isTradeAsset","isSecuredAsset"],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { GetActions200Response } from '@xchainjs/xchain-midgard';
2
- import { Address, Asset, CryptoAmount, SynthAsset, TokenAsset, TradeAsset } from '@xchainjs/xchain-util';
3
- export type CompatibleAsset = Asset | TokenAsset | SynthAsset | TradeAsset;
2
+ import { Address, Asset, CryptoAmount, SecuredAsset, SynthAsset, TokenAsset, TradeAsset } from '@xchainjs/xchain-util';
3
+ export type CompatibleAsset = Asset | TokenAsset | SynthAsset | TradeAsset | SecuredAsset;
4
4
  /**
5
5
  * Search parameters to search for positions within the THORChain SAVER investment product trunks.
6
6
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xchainjs/xchain-midgard-query",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "license": "MIT",
5
5
  "description": "Module that is responsible for get data from Midgard API",
6
6
  "keywords": [
@@ -32,9 +32,9 @@
32
32
  "postversion": "git push --follow-tags"
33
33
  },
34
34
  "dependencies": {
35
- "@xchainjs/xchain-client": "1.0.7",
36
- "@xchainjs/xchain-midgard": "0.5.11",
37
- "@xchainjs/xchain-util": "1.0.6",
35
+ "@xchainjs/xchain-client": "1.0.9",
36
+ "@xchainjs/xchain-midgard": "0.5.12",
37
+ "@xchainjs/xchain-util": "1.0.7",
38
38
  "axios": "1.7.4",
39
39
  "axios-retry": "3.2.5"
40
40
  },