@xchainjs/xchain-midgard-query 0.1.3 → 0.1.4

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
@@ -261,15 +261,11 @@ class MidgardQuery {
261
261
  */
262
262
  getDecimalForAsset(asset) {
263
263
  return __awaiter(this, void 0, void 0, function* () {
264
- if (!isAssetRuneNative(asset)) {
265
- const pool = yield this.getPool(assetToString(asset));
266
- const decimals = Number(pool.nativeDecimal);
267
- if (decimals > 0)
268
- return decimals;
269
- else
270
- return DEFAULT_THORCHAIN_DECIMALS;
271
- }
272
- return DEFAULT_THORCHAIN_DECIMALS;
264
+ if (isAssetRuneNative(asset) || asset.synth)
265
+ return DEFAULT_THORCHAIN_DECIMALS;
266
+ const pool = yield this.getPool(assetToString(asset));
267
+ const decimals = Number(pool.nativeDecimal);
268
+ return decimals > 0 ? decimals : DEFAULT_THORCHAIN_DECIMALS;
273
269
  });
274
270
  }
275
271
  }
@@ -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 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 { 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","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 */\nexport class MidgardCache {\n readonly midgard: Midgard\n private readonly cachedPools: CachedValue<PoolDetail[]>\n private readonly cachedSavers: CachedValue<SaverDetails>\n /**\n * Constructor to create a ThorchainCache\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 info 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 { Asset, assetFromStringEx, assetToString } from '@xchainjs/xchain-util'\n\nexport const AssetAVAX = assetFromStringEx('AVAX.AVAX')\nexport const AssetBTC = assetFromStringEx('BTC.BTC')\nexport const AssetATOM = assetFromStringEx('GAIA.ATOM')\nexport const AssetRuneNative = assetFromStringEx('THOR.RUNE')\n\nexport const BTCChain = 'BTC'\nexport const GAIAChain = 'GAIA'\nexport const AVAXChain = 'AVAX'\n\nexport const isAssetRuneNative = (asset: Asset): boolean => assetToString(asset) === assetToString(AssetRuneNative)\n","import { PoolDetail } from '@xchainjs/xchain-midgard'\nimport { Asset, CryptoAmount, assetFromString, assetToString, baseAmount } from '@xchainjs/xchain-util'\n\nimport { MidgardCache } from './midgard-cache'\nimport { SaversPosition, getSaver } from './types'\nimport { isAssetRuneNative } from './utils/const'\n\nconst DEFAULT_THORCHAIN_DECIMALS = 8\n\nconst defaultCache = new MidgardCache()\n\n/**\n * Class for getting data and process from Midgard API using MidgardCache for optimize request number (THORChain L2 Api).\n */\nexport class MidgardQuery {\n readonly midgardCache: MidgardCache\n\n /**\n * Contructor 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 In example: BTC.BTC\n * @returns {PoolDetail} Details of 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 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)\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 number of decimals by asset\n *\n * @param {Asset} asset asset for getting decimals\n * @returns {number} Number of decimals from Midgard https://gitlab.com/thorchain/midgard#refresh-native-decimals\n */\n public async getDecimalForAsset(asset: Asset): Promise<number> {\n if (!isAssetRuneNative(asset)) {\n const pool = await this.getPool(assetToString(asset))\n const decimals = Number(pool.nativeDecimal)\n if (decimals > 0) return decimals\n else return DEFAULT_THORCHAIN_DECIMALS\n }\n return DEFAULT_THORCHAIN_DECIMALS\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,MAAM,oBAAoB,GAAmC;AAC3D,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,CAAC,gCAAgC,CAAC;AACpD,KAAA;AACD,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,CAAC,yCAAyC,CAAC;AAC7D,KAAA;AACD,IAAA,OAAO,EAAE;AACP,QAAA,UAAU,EAAE,CAAC;QACb,eAAe,EAAE,CAAC,wCAAwC,CAAC;AAC5D,KAAA;CACF,CAAA;MAEY,OAAO,CAAA;AAKlB,IAAA,WAAA,CAAY,OAAmB,GAAA,OAAO,CAAC,OAAO,EAAE,MAAsB,EAAA;AACpE,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAN,MAAM,GAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC1D,QAAA,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAA;AAC/F,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,CAChD,CAAC,GAAW,KAAK,IAAI,UAAU,CAAC,IAAI,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CACtE,CAAA;KACF;AAED;;;;AAIG;AACU,IAAA,SAAS,CAAC,OAAe,EAAA;;AACpC,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClC,IAAI;AACF,oBAAA,MAAM,YAAY,GAAG,CAAC,MAAM,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,IAAI,CAAA;AAC7D,oBAAA,OAAO,YAAY,CAAA;AACpB,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;;AAEX,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,KAAK,CAAC,CAAwB,sBAAA,CAAA,CAAC,CAAA;SACtC,CAAA,CAAA;AAAA,KAAA;AAED;;;AAGG;IACG,QAAQ,GAAA;;AACZ,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClC,IAAI;oBACF,OAAO,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAA;AACnC,iBAAA;AAAC,gBAAA,OAAO,CAAC,EAAE;;AAEX,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,IAAI,KAAK,CAAC,CAAA,sBAAA,CAAwB,CAAC,CAAA;SAC1C,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,kBAAkB,CAAC,IAAY,EAAA;;AAC1C,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClC,IAAI;oBACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;AAC9C,oBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE;AACtB,wBAAA,OAAO,SAAS,CAAA;AACjB,qBAAA;AAAM,yBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE;wBAC7B,OAAO,IAAI,CAAC,IAAI,CAAA;AACjB,qBAAA;;AAEF,iBAAA;AAAC,gBAAA,OAAO,CAAM,EAAE;AACf,oBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;AAC5B,wBAAA,OAAO,SAAS,CAAA;AACjB,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,KAAK,CAAC,CAAwB,sBAAA,CAAA,CAAC,CAAA;SACtC,CAAA,CAAA;AAAA,KAAA;AAEY,IAAA,wBAAwB,CAAC,OAAe,EAAA;;AACnD,YAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClC,IAAI;oBACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;AACrD,oBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE;AACtB,wBAAA,OAAO,EAAE,CAAA;AACV,qBAAA;AAAM,yBAAA,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE;wBAC7B,OAAO,IAAI,CAAC,IAAI,CAAA;AACjB,qBAAA;;AAEF,iBAAA;AAAC,gBAAA,OAAO,CAAM,EAAE;AACf,oBAAA,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE;AAC5B,wBAAA,OAAO,EAAE,CAAA;AACV,qBAAA;AACF,iBAAA;AACF,aAAA;AACD,YAAA,MAAM,KAAK,CAAC,CAAwB,sBAAA,CAAA,CAAC,CAAA;SACtC,CAAA,CAAA;AAAA,KAAA;AACF;;AC3GD,MAAM,uBAAuB,GAAG,IAAI,CAAA;AACpC,MAAM,wBAAwB,GAAG,IAAI,CAAA;AAErC,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE,CAAA;AAEpC;;AAEG;MACU,YAAY,CAAA;AAIvB;;;;;AAKG;IACH,WAAY,CAAA,OAAO,GAAG,cAAc,EAAA;AAClC,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;AACtB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAe,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,uBAAuB,CAAC,CAAA;QACxG,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,CAAe,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAA;KAC9G;AAED;;;;AAIG;IACU,QAAQ,GAAA;;AACnB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAA;SACnC,CAAA,CAAA;AAAA,KAAA;AAED;;;;;AAKG;AACU,IAAA,SAAS,CAAC,OAAe,EAAA;;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;SAC3C,CAAA,CAAA;AAAA,KAAA;AACF;;AC7CwB,iBAAiB,CAAC,WAAW,EAAC;AAC/B,iBAAiB,CAAC,SAAS,EAAC;AAC3B,iBAAiB,CAAC,WAAW,EAAC;AAChD,MAAM,eAAe,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;AAMtD,MAAM,iBAAiB,GAAG,CAAC,KAAY,KAAc,aAAa,CAAC,KAAK,CAAC,KAAK,aAAa,CAAC,eAAe,CAAC;;ACJnH,MAAM,0BAA0B,GAAG,CAAC,CAAA;AAEpC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAA;AAEvC;;AAEG;MACU,YAAY,CAAA;AAGvB;;;;;AAKG;IACH,WAAY,CAAA,YAAY,GAAG,YAAY,EAAA;AACrC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;KACjC;AAED;;;;;;AAMG;AACW,IAAA,OAAO,CAAC,KAAa,EAAA;;YACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAA;AAChD,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA;YACvD,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAA,CAAE,CAAC,CAAA;AACvD,aAAA;AACD,YAAA,OAAO,IAAI,CAAA;SACZ,CAAA,CAAA;AAAA,KAAA;AAED;;;;;AAKG;AACU,IAAA,iBAAiB,CAAC,MAAkB,EAAA;;AAC/C,YAAA,MAAM,SAAS,GAAgB,IAAI,GAAG,EAAU,CAAA;AAChD,YAAA,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;AACvD,YAAA,MAAM,eAAe,GAAW,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;YACvE,MAAM,MAAM,GAAa,EAAE,CAAA;YAE3B,MAAM,eAAe,GAAqB,EAAE,CAAA;YAC5C,MAAM,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAO,KAAK,KAAI,SAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,aAAA;gBAClE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AAEzC,gBAAA,IAAI,KAAK,EAAE;oBACT,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBACjD,MAAM,aAAa,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAA;AACvG,oBAAA,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAL,KAAK,CAAE,UAAU,CAAC,CAAA;oBAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;oBACjD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;oBACjD,MAAM,eAAe,GAAG,CAAC,UAAU,GAAG,UAAU,IAAI,UAAU,CAAA;AAC9D,oBAAA,MAAM,qBAAqB,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC,CAAA;AAClF,oBAAA,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC5F,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,GAAG,GAAG,KAAK,CAAC,CAAA;oBAEnF,eAAe,CAAC,IAAI,CAAC;AACnB,wBAAA,YAAY,EAAE,aAAa;AAC3B,wBAAA,eAAe,EAAE,qBAAqB;wBACtC,aAAa,EAAE,CAAC,CAAC;wBACjB,gBAAgB,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;AAC7D,wBAAA,UAAU,EAAE,SAAS;wBACrB,SAAS,EAAE,SAAS,GAAG,GAAG;wBAC1B,KAAK;wBACL,MAAM;AACP,qBAAA,CAAC,CAAA;AACH,iBAAA;aACF,CAAA,CAAC,CAAA;AACF,YAAA,MAAM,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;AACvC,YAAA,OAAO,eAAe,CAAA;SACvB,CAAA,CAAA;AAAA,KAAA;AAED;;;;;AAKG;AACU,IAAA,kBAAkB,CAAC,KAAY,EAAA;;AAC1C,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;gBACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBAC3C,IAAI,QAAQ,GAAG,CAAC;AAAE,oBAAA,OAAO,QAAQ,CAAA;;AAC5B,oBAAA,OAAO,0BAA0B,CAAA;AACvC,aAAA;AACD,YAAA,OAAO,0BAA0B,CAAA;SAClC,CAAA,CAAA;AAAA,KAAA;AACF;;;;"}
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 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 { 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","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 */\nexport class MidgardCache {\n readonly midgard: Midgard\n private readonly cachedPools: CachedValue<PoolDetail[]>\n private readonly cachedSavers: CachedValue<SaverDetails>\n /**\n * Constructor to create a ThorchainCache\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 info 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 { Asset, assetFromStringEx, assetToString } from '@xchainjs/xchain-util'\n\nexport const AssetAVAX = assetFromStringEx('AVAX.AVAX')\nexport const AssetBTC = assetFromStringEx('BTC.BTC')\nexport const AssetATOM = assetFromStringEx('GAIA.ATOM')\nexport const AssetRuneNative = assetFromStringEx('THOR.RUNE')\n\nexport const BTCChain = 'BTC'\nexport const GAIAChain = 'GAIA'\nexport const AVAXChain = 'AVAX'\n\nexport const isAssetRuneNative = (asset: Asset): boolean => assetToString(asset) === assetToString(AssetRuneNative)\n","import { PoolDetail } from '@xchainjs/xchain-midgard'\nimport { Asset, CryptoAmount, assetFromString, assetToString, baseAmount } from '@xchainjs/xchain-util'\n\nimport { MidgardCache } from './midgard-cache'\nimport { SaversPosition, getSaver } from './types'\nimport { isAssetRuneNative } from './utils/const'\n\nconst DEFAULT_THORCHAIN_DECIMALS = 8\n\nconst defaultCache = new MidgardCache()\n\n/**\n * Class for getting data and process from Midgard API using MidgardCache for optimize request number (THORChain L2 Api).\n */\nexport class MidgardQuery {\n readonly midgardCache: MidgardCache\n\n /**\n * Contructor 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 In example: BTC.BTC\n * @returns {PoolDetail} Details of 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 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)\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 number of decimals by asset\n *\n * @param {Asset} asset asset for getting decimals\n * @returns {number} Number of decimals from Midgard https://gitlab.com/thorchain/midgard#refresh-native-decimals\n */\n public async getDecimalForAsset(asset: Asset): Promise<number> {\n if (isAssetRuneNative(asset) || asset.synth) return DEFAULT_THORCHAIN_DECIMALS\n\n const pool = await this.getPool(assetToString(asset))\n const decimals = Number(pool.nativeDecimal)\n\n return decimals > 0 ? decimals : DEFAULT_THORCHAIN_DECIMALS\n }\n}\n"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -270,15 +270,11 @@ class MidgardQuery {
270
270
  */
271
271
  getDecimalForAsset(asset) {
272
272
  return __awaiter(this, void 0, void 0, function* () {
273
- if (!isAssetRuneNative(asset)) {
274
- const pool = yield this.getPool(xchainUtil.assetToString(asset));
275
- const decimals = Number(pool.nativeDecimal);
276
- if (decimals > 0)
277
- return decimals;
278
- else
279
- return DEFAULT_THORCHAIN_DECIMALS;
280
- }
281
- return DEFAULT_THORCHAIN_DECIMALS;
273
+ if (isAssetRuneNative(asset) || asset.synth)
274
+ return DEFAULT_THORCHAIN_DECIMALS;
275
+ const pool = yield this.getPool(xchainUtil.assetToString(asset));
276
+ const decimals = Number(pool.nativeDecimal);
277
+ return decimals > 0 ? decimals : DEFAULT_THORCHAIN_DECIMALS;
282
278
  });
283
279
  }
284
280
  }
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 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 { 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","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 */\nexport class MidgardCache {\n readonly midgard: Midgard\n private readonly cachedPools: CachedValue<PoolDetail[]>\n private readonly cachedSavers: CachedValue<SaverDetails>\n /**\n * Constructor to create a ThorchainCache\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 info 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 { Asset, assetFromStringEx, assetToString } from '@xchainjs/xchain-util'\n\nexport const AssetAVAX = assetFromStringEx('AVAX.AVAX')\nexport const AssetBTC = assetFromStringEx('BTC.BTC')\nexport const AssetATOM = assetFromStringEx('GAIA.ATOM')\nexport const AssetRuneNative = assetFromStringEx('THOR.RUNE')\n\nexport const BTCChain = 'BTC'\nexport const GAIAChain = 'GAIA'\nexport const AVAXChain = 'AVAX'\n\nexport const isAssetRuneNative = (asset: Asset): boolean => assetToString(asset) === assetToString(AssetRuneNative)\n","import { PoolDetail } from '@xchainjs/xchain-midgard'\nimport { Asset, CryptoAmount, assetFromString, assetToString, baseAmount } from '@xchainjs/xchain-util'\n\nimport { MidgardCache } from './midgard-cache'\nimport { SaversPosition, getSaver } from './types'\nimport { isAssetRuneNative } from './utils/const'\n\nconst DEFAULT_THORCHAIN_DECIMALS = 8\n\nconst defaultCache = new MidgardCache()\n\n/**\n * Class for getting data and process from Midgard API using MidgardCache for optimize request number (THORChain L2 Api).\n */\nexport class MidgardQuery {\n readonly midgardCache: MidgardCache\n\n /**\n * Contructor 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 In example: BTC.BTC\n * @returns {PoolDetail} Details of 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 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)\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 number of decimals by asset\n *\n * @param {Asset} asset asset for getting decimals\n * @returns {number} Number of decimals from Midgard https://gitlab.com/thorchain/midgard#refresh-native-decimals\n */\n public async getDecimalForAsset(asset: Asset): Promise<number> {\n if (!isAssetRuneNative(asset)) {\n const pool = await this.getPool(assetToString(asset))\n const decimals = Number(pool.nativeDecimal)\n if (decimals > 0) return decimals\n else return DEFAULT_THORCHAIN_DECIMALS\n }\n return DEFAULT_THORCHAIN_DECIMALS\n }\n}\n"],"names":["Network","axiosRetry","axios","MidgardApi","Configuration","CachedValue","assetFromStringEx","assetToString","assetFromString","CryptoAmount","baseAmount"],"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 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 { 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","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 */\nexport class MidgardCache {\n readonly midgard: Midgard\n private readonly cachedPools: CachedValue<PoolDetail[]>\n private readonly cachedSavers: CachedValue<SaverDetails>\n /**\n * Constructor to create a ThorchainCache\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 info 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 { Asset, assetFromStringEx, assetToString } from '@xchainjs/xchain-util'\n\nexport const AssetAVAX = assetFromStringEx('AVAX.AVAX')\nexport const AssetBTC = assetFromStringEx('BTC.BTC')\nexport const AssetATOM = assetFromStringEx('GAIA.ATOM')\nexport const AssetRuneNative = assetFromStringEx('THOR.RUNE')\n\nexport const BTCChain = 'BTC'\nexport const GAIAChain = 'GAIA'\nexport const AVAXChain = 'AVAX'\n\nexport const isAssetRuneNative = (asset: Asset): boolean => assetToString(asset) === assetToString(AssetRuneNative)\n","import { PoolDetail } from '@xchainjs/xchain-midgard'\nimport { Asset, CryptoAmount, assetFromString, assetToString, baseAmount } from '@xchainjs/xchain-util'\n\nimport { MidgardCache } from './midgard-cache'\nimport { SaversPosition, getSaver } from './types'\nimport { isAssetRuneNative } from './utils/const'\n\nconst DEFAULT_THORCHAIN_DECIMALS = 8\n\nconst defaultCache = new MidgardCache()\n\n/**\n * Class for getting data and process from Midgard API using MidgardCache for optimize request number (THORChain L2 Api).\n */\nexport class MidgardQuery {\n readonly midgardCache: MidgardCache\n\n /**\n * Contructor 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 In example: BTC.BTC\n * @returns {PoolDetail} Details of 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 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)\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 number of decimals by asset\n *\n * @param {Asset} asset asset for getting decimals\n * @returns {number} Number of decimals from Midgard https://gitlab.com/thorchain/midgard#refresh-native-decimals\n */\n public async getDecimalForAsset(asset: Asset): Promise<number> {\n if (isAssetRuneNative(asset) || asset.synth) return DEFAULT_THORCHAIN_DECIMALS\n\n const pool = await this.getPool(assetToString(asset))\n const decimals = Number(pool.nativeDecimal)\n\n return decimals > 0 ? decimals : DEFAULT_THORCHAIN_DECIMALS\n }\n}\n"],"names":["Network","axiosRetry","axios","MidgardApi","Configuration","CachedValue","assetFromStringEx","assetToString","assetFromString","CryptoAmount","baseAmount"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xchainjs/xchain-midgard-query",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "license": "MIT",
5
5
  "description": "Module that is responsible for get data from Midgard API",
6
6
  "keywords": [
@@ -32,7 +32,7 @@
32
32
  "postversion": "git push --follow-tags"
33
33
  },
34
34
  "devDependencies": {
35
- "@xchainjs/xchain-client": "^0.14.2",
35
+ "@xchainjs/xchain-client": "^0.15.1",
36
36
  "@xchainjs/xchain-midgard": "^0.5.2",
37
37
  "@xchainjs/xchain-util": "^0.13.1",
38
38
  "axios": "^1.3.6",
@@ -40,7 +40,7 @@
40
40
  "bignumber.js": "^9.0.0"
41
41
  },
42
42
  "peerDependencies": {
43
- "@xchainjs/xchain-client": "^0.14.2",
43
+ "@xchainjs/xchain-client": "^0.15.1",
44
44
  "@xchainjs/xchain-midgard": "^0.5.2",
45
45
  "@xchainjs/xchain-util": "^0.13.1",
46
46
  "axios": "^1.3.6",