@alphafi/alphafi-sdk 0.0.39 → 0.0.41

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.
Files changed (322) hide show
  1. package/dist/cjs/adminFunctions.d.ts.map +1 -1
  2. package/dist/cjs/adminFunctions.js +9 -1
  3. package/dist/cjs/adminFunctions.js.map +1 -1
  4. package/dist/cjs/common/coins.d.ts.map +1 -1
  5. package/dist/cjs/common/coins.js +18 -0
  6. package/dist/cjs/common/coins.js.map +1 -1
  7. package/dist/cjs/common/constants.d.ts +288 -0
  8. package/dist/cjs/common/constants.d.ts.map +1 -1
  9. package/dist/cjs/common/constants.js +214 -8
  10. package/dist/cjs/common/constants.js.map +1 -1
  11. package/dist/cjs/common/maps.d.ts +1 -0
  12. package/dist/cjs/common/maps.d.ts.map +1 -1
  13. package/dist/cjs/common/maps.js +207 -14
  14. package/dist/cjs/common/maps.js.map +1 -1
  15. package/dist/cjs/common/types.d.ts +58 -5
  16. package/dist/cjs/common/types.d.ts.map +1 -1
  17. package/dist/cjs/common/types.js.map +1 -1
  18. package/dist/cjs/graphql/getMultiReceipts.d.ts.map +1 -1
  19. package/dist/cjs/graphql/getMultiReceipts.js +49 -36
  20. package/dist/cjs/graphql/getMultiReceipts.js.map +1 -1
  21. package/dist/cjs/index.d.ts +5 -9
  22. package/dist/cjs/index.d.ts.map +1 -1
  23. package/dist/cjs/index.js +17 -8
  24. package/dist/cjs/index.js.map +1 -1
  25. package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -1
  26. package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js +2 -3
  27. package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -1
  28. package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
  29. package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js +6 -12
  30. package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
  31. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts +6 -3
  32. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -1
  33. package/dist/cjs/sui-sdk/functions/getReceipts.js +42 -26
  34. package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -1
  35. package/dist/cjs/transactions/7k.d.ts +13 -0
  36. package/dist/cjs/transactions/7k.d.ts.map +1 -0
  37. package/dist/cjs/transactions/7k.js +46 -0
  38. package/dist/cjs/transactions/7k.js.map +1 -0
  39. package/dist/cjs/transactions/alpha.d.ts.map +1 -1
  40. package/dist/cjs/transactions/alpha.js +1 -0
  41. package/dist/cjs/transactions/alpha.js.map +1 -1
  42. package/dist/cjs/transactions/bluefin.d.ts +12 -0
  43. package/dist/cjs/transactions/bluefin.d.ts.map +1 -1
  44. package/dist/cjs/transactions/bluefin.js +937 -91
  45. package/dist/cjs/transactions/bluefin.js.map +1 -1
  46. package/dist/cjs/transactions/cetus.d.ts +0 -3
  47. package/dist/cjs/transactions/cetus.d.ts.map +1 -1
  48. package/dist/cjs/transactions/cetus.js +4 -63
  49. package/dist/cjs/transactions/cetus.js.map +1 -1
  50. package/dist/cjs/transactions/deposit.d.ts +3 -0
  51. package/dist/cjs/transactions/deposit.d.ts.map +1 -1
  52. package/dist/cjs/transactions/deposit.js +77 -1
  53. package/dist/cjs/transactions/deposit.js.map +1 -1
  54. package/dist/cjs/transactions/deposit1.d.ts +1 -0
  55. package/dist/cjs/transactions/deposit1.d.ts.map +1 -0
  56. package/dist/cjs/transactions/deposit1.js +86 -0
  57. package/dist/cjs/transactions/deposit1.js.map +1 -0
  58. package/dist/cjs/transactions/types.d.ts +14 -0
  59. package/dist/cjs/transactions/types.d.ts.map +1 -0
  60. package/dist/cjs/transactions/types.js +3 -0
  61. package/dist/cjs/transactions/types.js.map +1 -0
  62. package/dist/cjs/transactions/withdraw.d.ts.map +1 -1
  63. package/dist/cjs/transactions/withdraw.js +17 -2
  64. package/dist/cjs/transactions/withdraw.js.map +1 -1
  65. package/dist/cjs/transactions/zapDeposit.d.ts +9 -0
  66. package/dist/cjs/transactions/zapDeposit.d.ts.map +1 -1
  67. package/dist/cjs/transactions/zapDeposit.js +1117 -725
  68. package/dist/cjs/transactions/zapDeposit.js.map +1 -1
  69. package/dist/esm/adminFunctions.d.ts.map +1 -1
  70. package/dist/esm/adminFunctions.js +10 -2
  71. package/dist/esm/adminFunctions.js.map +1 -1
  72. package/dist/esm/common/coins.d.ts.map +1 -1
  73. package/dist/esm/common/coins.js +18 -0
  74. package/dist/esm/common/coins.js.map +1 -1
  75. package/dist/esm/common/constants.d.ts +288 -0
  76. package/dist/esm/common/constants.d.ts.map +1 -1
  77. package/dist/esm/common/constants.js +214 -8
  78. package/dist/esm/common/constants.js.map +1 -1
  79. package/dist/esm/common/maps.d.ts +1 -0
  80. package/dist/esm/common/maps.d.ts.map +1 -1
  81. package/dist/esm/common/maps.js +206 -13
  82. package/dist/esm/common/maps.js.map +1 -1
  83. package/dist/esm/common/types.d.ts +58 -5
  84. package/dist/esm/common/types.d.ts.map +1 -1
  85. package/dist/esm/common/types.js.map +1 -1
  86. package/dist/esm/graphql/getMultiReceipts.d.ts.map +1 -1
  87. package/dist/esm/graphql/getMultiReceipts.js +49 -36
  88. package/dist/esm/graphql/getMultiReceipts.js.map +1 -1
  89. package/dist/esm/index.d.ts +5 -9
  90. package/dist/esm/index.d.ts.map +1 -1
  91. package/dist/esm/index.js +5 -9
  92. package/dist/esm/index.js.map +1 -1
  93. package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -1
  94. package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js +2 -3
  95. package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -1
  96. package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -1
  97. package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js +7 -13
  98. package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js.map +1 -1
  99. package/dist/esm/sui-sdk/functions/getReceipts.d.ts +6 -3
  100. package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -1
  101. package/dist/esm/sui-sdk/functions/getReceipts.js +43 -26
  102. package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -1
  103. package/dist/esm/transactions/7k.d.ts +13 -0
  104. package/dist/esm/transactions/7k.d.ts.map +1 -0
  105. package/dist/esm/transactions/7k.js +42 -0
  106. package/dist/esm/transactions/7k.js.map +1 -0
  107. package/dist/esm/transactions/alpha.d.ts.map +1 -1
  108. package/dist/esm/transactions/alpha.js +1 -0
  109. package/dist/esm/transactions/alpha.js.map +1 -1
  110. package/dist/esm/transactions/bluefin.d.ts +12 -0
  111. package/dist/esm/transactions/bluefin.d.ts.map +1 -1
  112. package/dist/esm/transactions/bluefin.js +928 -86
  113. package/dist/esm/transactions/bluefin.js.map +1 -1
  114. package/dist/esm/transactions/cetus.d.ts +0 -3
  115. package/dist/esm/transactions/cetus.d.ts.map +1 -1
  116. package/dist/esm/transactions/cetus.js +2 -57
  117. package/dist/esm/transactions/cetus.js.map +1 -1
  118. package/dist/esm/transactions/deposit.d.ts +3 -0
  119. package/dist/esm/transactions/deposit.d.ts.map +1 -1
  120. package/dist/esm/transactions/deposit.js +74 -2
  121. package/dist/esm/transactions/deposit.js.map +1 -1
  122. package/dist/esm/transactions/deposit1.d.ts +2 -0
  123. package/dist/esm/transactions/deposit1.d.ts.map +1 -0
  124. package/dist/esm/transactions/deposit1.js +86 -0
  125. package/dist/esm/transactions/deposit1.js.map +1 -0
  126. package/dist/esm/transactions/types.d.ts +14 -0
  127. package/dist/esm/transactions/types.d.ts.map +1 -0
  128. package/dist/esm/transactions/types.js +2 -0
  129. package/dist/esm/transactions/types.js.map +1 -0
  130. package/dist/esm/transactions/withdraw.d.ts.map +1 -1
  131. package/dist/esm/transactions/withdraw.js +18 -3
  132. package/dist/esm/transactions/withdraw.js.map +1 -1
  133. package/dist/esm/transactions/zapDeposit.d.ts +9 -1
  134. package/dist/esm/transactions/zapDeposit.d.ts.map +1 -1
  135. package/dist/esm/transactions/zapDeposit.js +1113 -726
  136. package/dist/esm/transactions/zapDeposit.js.map +1 -1
  137. package/docs/assets/highlight.css +78 -0
  138. package/docs/assets/icons.js +18 -0
  139. package/docs/assets/icons.svg +1 -0
  140. package/docs/assets/main.js +60 -0
  141. package/docs/assets/navigation.js +1 -0
  142. package/docs/assets/search.js +1 -0
  143. package/docs/assets/style.css +1493 -0
  144. package/docs/functions/alphaLpBreakdown.html +1 -0
  145. package/docs/functions/cetusLpBreakdown.html +1 -0
  146. package/docs/functions/claimRewardTxb.html +1 -0
  147. package/docs/functions/coinAmountToXTokensDoubleAsset.html +1 -0
  148. package/docs/functions/coinAmountToXTokensSingleAsset.html +1 -0
  149. package/docs/functions/coinsInPool.html +1 -0
  150. package/docs/functions/collectRewards.html +1 -0
  151. package/docs/functions/deposit.html +1 -0
  152. package/docs/functions/depositDoubleAssetTxb.html +1 -0
  153. package/docs/functions/depositSingleAssetTxb.html +1 -0
  154. package/docs/functions/fetchAfterTransactionEvents.html +1 -0
  155. package/docs/functions/fetchAutoCompoundingEvents.html +1 -0
  156. package/docs/functions/fetchAutoCompoundingEventsGql.html +1 -0
  157. package/docs/functions/fetchCetusPools.html +1 -0
  158. package/docs/functions/fetchChainIdentifier.html +1 -0
  159. package/docs/functions/fetchCheckRatioEvents.html +1 -0
  160. package/docs/functions/fetchLiquidityChangeEvents.html +1 -0
  161. package/docs/functions/fetchMultiReceipts.html +1 -0
  162. package/docs/functions/fetchNftHolders.html +1 -0
  163. package/docs/functions/fetchPools.html +1 -0
  164. package/docs/functions/fetchPortfolioData.html +1 -0
  165. package/docs/functions/fetchProtocolData.html +1 -0
  166. package/docs/functions/fetchTVL.html +1 -0
  167. package/docs/functions/fetchUserVaultBalances.html +1 -0
  168. package/docs/functions/fetchUserVaults.html +1 -0
  169. package/docs/functions/fetchUserWalletData.html +1 -0
  170. package/docs/functions/fetchWithdrawV2Events.html +1 -0
  171. package/docs/functions/getAirdropShare.html +1 -0
  172. package/docs/functions/getAllDoubleAssetVaults.html +1 -0
  173. package/docs/functions/getAllSingleAssetVaults.html +1 -0
  174. package/docs/functions/getAllVaultBalances.html +1 -0
  175. package/docs/functions/getAllVaults.html +1 -0
  176. package/docs/functions/getAlphaUnlocks.html +1 -0
  177. package/docs/functions/getAlphaVaultBalance.html +1 -0
  178. package/docs/functions/getAmounts.html +1 -0
  179. package/docs/functions/getApr.html +1 -0
  180. package/docs/functions/getAprs.html +1 -0
  181. package/docs/functions/getApy.html +1 -0
  182. package/docs/functions/getApys.html +1 -0
  183. package/docs/functions/getCetusInvestorTicksMap.html +1 -0
  184. package/docs/functions/getCetusSqrtPriceMap.html +1 -0
  185. package/docs/functions/getCoinAmountsFromLiquidity.html +1 -0
  186. package/docs/functions/getConf.html +1 -0
  187. package/docs/functions/getCurrentTick.html +1 -0
  188. package/docs/functions/getDoubleAssetVaultBalance.html +1 -0
  189. package/docs/functions/getDoubleAssetVaults.html +1 -0
  190. package/docs/functions/getHoldersFromTransactions.html +1 -0
  191. package/docs/functions/getInvestor.html +1 -0
  192. package/docs/functions/getInvestorPoolMap.html +1 -0
  193. package/docs/functions/getLastAutoCompoundTime.html +1 -0
  194. package/docs/functions/getLatestPrices.html +1 -0
  195. package/docs/functions/getLiquidity.html +1 -0
  196. package/docs/functions/getMultiInvestor.html +1 -0
  197. package/docs/functions/getMultiLatestPrices.html +1 -0
  198. package/docs/functions/getMultiParentPool.html +1 -0
  199. package/docs/functions/getMultiPool.html +1 -0
  200. package/docs/functions/getMultiReceipts.html +1 -0
  201. package/docs/functions/getParentPool.html +1 -0
  202. package/docs/functions/getPool.html +1 -0
  203. package/docs/functions/getPoolExchangeRateMap.html +1 -0
  204. package/docs/functions/getPositionRange.html +1 -0
  205. package/docs/functions/getPositionTicks.html +1 -0
  206. package/docs/functions/getPriceToTick.html +1 -0
  207. package/docs/functions/getRebalanceHistories.html +1 -0
  208. package/docs/functions/getRebalanceHistory.html +1 -0
  209. package/docs/functions/getReceipts.html +1 -0
  210. package/docs/functions/getSingleAssetVaultBalance.html +1 -0
  211. package/docs/functions/getSingleAssetVaults.html +1 -0
  212. package/docs/functions/getSuiClient.html +3 -0
  213. package/docs/functions/getSuiNodeUrl.html +3 -0
  214. package/docs/functions/getTVLs.html +1 -0
  215. package/docs/functions/getTickToPrice.html +1 -0
  216. package/docs/functions/getUserTokensFromTransactions.html +1 -0
  217. package/docs/functions/getUserTokensInUsdFromTransactions.html +1 -0
  218. package/docs/functions/getVaultBalance.html +1 -0
  219. package/docs/functions/getVaultBalanceForActiveUsers.html +1 -0
  220. package/docs/functions/getVaults.html +1 -0
  221. package/docs/functions/getXTokenVaultBalanceForActiveUsers.html +1 -0
  222. package/docs/functions/getZapAmounts.html +1 -0
  223. package/docs/functions/lastAutocompoundTime.html +1 -0
  224. package/docs/functions/liquidityToTokens.html +1 -0
  225. package/docs/functions/multiLiquidityToTokens.html +1 -0
  226. package/docs/functions/multiTokensToUsd.html +1 -0
  227. package/docs/functions/multiXTokensToLiquidity.html +1 -0
  228. package/docs/functions/parseUserWalletData.html +1 -0
  229. package/docs/functions/setSuiClient.html +7 -0
  230. package/docs/functions/setSuiNodeUrl.html +5 -0
  231. package/docs/functions/withdraw.html +1 -0
  232. package/docs/functions/withdrawAlphaTxb.html +1 -0
  233. package/docs/functions/withdrawTxb.html +1 -0
  234. package/docs/functions/zapDepositTxb.html +1 -0
  235. package/docs/index.html +76 -0
  236. package/docs/interfaces/Coin.html +12 -0
  237. package/docs/interfaces/CoinPair.html +3 -0
  238. package/docs/interfaces/NaviVoloData.html +3 -0
  239. package/docs/interfaces/RebalanceHistoryType.html +9 -0
  240. package/docs/modules.html +177 -0
  241. package/docs/types/AfterTransactionEventNode.html +1 -0
  242. package/docs/types/Allocator.html +1 -0
  243. package/docs/types/AlphaFiDoubleAssetVault.html +1 -0
  244. package/docs/types/AlphaFiMultiVaultBalance.html +1 -0
  245. package/docs/types/AlphaFiSingleAssetVault.html +1 -0
  246. package/docs/types/AlphaFiVault.html +1 -0
  247. package/docs/types/AlphaFiVaultBalance.html +1 -0
  248. package/docs/types/AlphaPoolType.html +1 -0
  249. package/docs/types/AlphaReceipt.html +1 -0
  250. package/docs/types/AlphaReceiptFields.html +1 -0
  251. package/docs/types/AlphaVaultBalance.html +1 -0
  252. package/docs/types/AutoCompoundingEventNode.html +1 -0
  253. package/docs/types/BluefinInvestor.html +1 -0
  254. package/docs/types/BluefinPoolType.html +1 -0
  255. package/docs/types/BucketInvestor.html +1 -0
  256. package/docs/types/CetusInvestor.html +1 -0
  257. package/docs/types/CetusPoolType.html +1 -0
  258. package/docs/types/CetusSwapOptions.html +1 -0
  259. package/docs/types/CoinAmounts.html +1 -0
  260. package/docs/types/CoinName.html +1 -0
  261. package/docs/types/CoinType.html +1 -0
  262. package/docs/types/CommonInvestorFields.html +1 -0
  263. package/docs/types/CreatePoolOptions.html +1 -0
  264. package/docs/types/Distributor.html +1 -0
  265. package/docs/types/DoubleAssetMultiVaultBalance.html +1 -0
  266. package/docs/types/DoubleAssetPoolNames.html +1 -0
  267. package/docs/types/DoubleAssetTokenHoldings.html +1 -0
  268. package/docs/types/DoubleAssetVaultBalance.html +1 -0
  269. package/docs/types/GetHoldersParams.html +1 -0
  270. package/docs/types/GetTokenHoldingsParams.html +1 -0
  271. package/docs/types/GetUserTokensFromTransactionsParams.html +1 -0
  272. package/docs/types/GetUserTokensInUsdFromTransactionsParams.html +1 -0
  273. package/docs/types/GetVaultBalanceForActiveUsersParams.html +1 -0
  274. package/docs/types/GetVaultBalanceParams.html +1 -0
  275. package/docs/types/HoldingsObj.html +1 -0
  276. package/docs/types/Icon.html +1 -0
  277. package/docs/types/Investor.html +1 -0
  278. package/docs/types/LiquidityChangeEventNode.html +1 -0
  279. package/docs/types/LiquidityToTokensParams.html +1 -0
  280. package/docs/types/LiquidityToUsdParams.html +1 -0
  281. package/docs/types/LoopingDebt.html +1 -0
  282. package/docs/types/LpBreakdownType.html +1 -0
  283. package/docs/types/MemberPoolDataType.html +1 -0
  284. package/docs/types/MemberType.html +1 -0
  285. package/docs/types/MultiGetVaultBalancesParams.html +1 -0
  286. package/docs/types/NaviInvestor.html +1 -0
  287. package/docs/types/OtherReceiptFields.html +1 -0
  288. package/docs/types/PoolName.html +1 -0
  289. package/docs/types/PoolReceipt.html +1 -0
  290. package/docs/types/PoolType.html +1 -0
  291. package/docs/types/Receipt.html +1 -0
  292. package/docs/types/ReceiptGQL.html +1 -0
  293. package/docs/types/SingleAssetMultiVaultBalance.html +1 -0
  294. package/docs/types/SingleAssetPoolNames.html +1 -0
  295. package/docs/types/SingleAssetTokenHoldings.html +1 -0
  296. package/docs/types/SingleAssetVaultBalance.html +1 -0
  297. package/docs/types/SingleGetVaultBalancesParams.html +1 -0
  298. package/docs/types/StrategyType.html +1 -0
  299. package/docs/types/SuiNetwork.html +1 -0
  300. package/docs/types/SwapOptions.html +1 -0
  301. package/docs/types/TickSpacing.html +1 -0
  302. package/docs/types/TotalWeightType.html +1 -0
  303. package/docs/types/TransactionBlockType.html +1 -0
  304. package/docs/types/UserPoolLiquidity.html +1 -0
  305. package/docs/types/UserPoolTokenHoldings.html +1 -0
  306. package/docs/types/UserUsdHoldings.html +1 -0
  307. package/docs/types/VaultBalance.html +1 -0
  308. package/docs/types/WithdrawV2EventNode.html +1 -0
  309. package/docs/variables/bluefinPoolMap.html +1 -0
  310. package/docs/variables/cetusPoolMap.html +1 -0
  311. package/docs/variables/coinsList.html +1 -0
  312. package/docs/variables/defunctPoolsSet.html +1 -0
  313. package/docs/variables/doubleAssetPoolCoinMap.html +1 -0
  314. package/docs/variables/ignoredWalletsForDailyRevenue.html +1 -0
  315. package/docs/variables/loopingAccountAddresses.html +1 -0
  316. package/docs/variables/loopingPoolCoinMap.html +1 -0
  317. package/docs/variables/naviAssetMap.html +1 -0
  318. package/docs/variables/poolIdPoolNameMap.html +1 -0
  319. package/docs/variables/poolInfo.html +1 -0
  320. package/docs/variables/singleAssetPoolCoinMap.html +1 -0
  321. package/docs/variables/stableCoins.html +1 -0
  322. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fetchUserVaultBalances.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/fetchUserVaultBalances.ts"],"names":[],"mappings":"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","sourcesContent":["import { poolInfo } from \"../../common/maps.js\";\nimport {\n AlphaFiVaultBalance,\n PoolName,\n SingleAssetPoolNames,\n} from \"../../common/types.js\";\nimport { getSuiClient } from \"../client.js\";\nimport {\n getAlphaPortfolioAmount,\n getAlphaPortfolioAmountInUSD,\n getPortfolioAmount,\n getDoubleAssetPortfolioAmountInUSD,\n getSingleAssetPortfolioAmount,\n getSingleAssetPortfolioAmountInUSD,\n} from \"./getPortfolioAmounts.js\";\n\nexport async function fetchUserVaultBalances(\n address: string,\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<AlphaFiVaultBalance | undefined> {\n const suiClient = getSuiClient();\n\n let vaultBalance: AlphaFiVaultBalance | undefined;\n if (poolInfo[poolName].parentProtocolName === \"ALPHAFI\") {\n const lockedPortfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n isLocked: true,\n },\n ignoreCache,\n );\n const lockedPortfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n { suiClient, address, isLocked: true },\n ignoreCache,\n );\n const unlockedPortfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n isLocked: false,\n },\n ignoreCache,\n );\n const unlockedPortfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n { suiClient, address, isLocked: false },\n ignoreCache,\n );\n const portfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n },\n ignoreCache,\n );\n const portfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n {\n suiClient,\n address,\n },\n ignoreCache,\n );\n if (\n lockedPortfolioAmount !== undefined &&\n lockedPortfolioAmountInUSD !== undefined &&\n unlockedPortfolioAmount !== undefined &&\n unlockedPortfolioAmountInUSD !== undefined &&\n portfolioAmount !== undefined &&\n portfolioAmountInUSD !== undefined\n ) {\n const res: AlphaFiVaultBalance = {\n lockedAlphaCoins: lockedPortfolioAmount,\n lockedAlphaCoinsInUSD: lockedPortfolioAmountInUSD,\n unlockedAlphaCoins: unlockedPortfolioAmount,\n unlockedAlphaCoinsInUSD: unlockedPortfolioAmountInUSD,\n totalAlphaCoins: portfolioAmount,\n totalAlphaCoinsInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n } else if (poolInfo[poolName].parentProtocolName === \"CETUS\") {\n const portfolioAmount = await getPortfolioAmount(\n poolName as PoolName,\n address,\n ignoreCache,\n );\n const portfolioAmountInUSD = await getDoubleAssetPortfolioAmountInUSD(\n poolName as PoolName,\n address,\n ignoreCache,\n );\n if (portfolioAmount !== undefined && portfolioAmountInUSD !== undefined) {\n const res: AlphaFiVaultBalance = {\n coinA: portfolioAmount[0].toString(),\n coinB: portfolioAmount[1].toString(),\n valueInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n } else if (\n poolInfo[poolName].parentProtocolName === \"NAVI\" ||\n poolInfo[poolName].parentProtocolName === \"BUCKET\"\n ) {\n const portfolioAmount = await getSingleAssetPortfolioAmount(\n poolName as SingleAssetPoolNames,\n address,\n ignoreCache,\n );\n const portfolioAmountInUSD = await getSingleAssetPortfolioAmountInUSD(\n poolName as SingleAssetPoolNames,\n address,\n ignoreCache,\n );\n if (portfolioAmount !== undefined && portfolioAmountInUSD !== undefined) {\n const res: AlphaFiVaultBalance = {\n coin: portfolioAmount.toString(),\n valueInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n }\n return vaultBalance;\n}\n"]}
1
+ {"version":3,"file":"fetchUserVaultBalances.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/fetchUserVaultBalances.ts"],"names":[],"mappings":"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","sourcesContent":["import { poolInfo } from \"../../common/maps.js\";\nimport {\n AlphaFiVaultBalance,\n PoolName,\n SingleAssetPoolNames,\n} from \"../../common/types.js\";\nimport { getSuiClient } from \"../client.js\";\nimport {\n getAlphaPortfolioAmount,\n getAlphaPortfolioAmountInUSD,\n getPortfolioAmount,\n getDoubleAssetPortfolioAmountInUSD,\n getSingleAssetPortfolioAmount,\n getSingleAssetPortfolioAmountInUSD,\n} from \"./getPortfolioAmounts.js\";\n\nexport async function fetchUserVaultBalances(\n address: string,\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<AlphaFiVaultBalance | undefined> {\n const suiClient = getSuiClient();\n\n let vaultBalance: AlphaFiVaultBalance | undefined;\n if (poolInfo[poolName].parentProtocolName === \"ALPHAFI\") {\n const lockedPortfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n isLocked: true,\n },\n ignoreCache,\n );\n const lockedPortfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n { suiClient, address, isLocked: true },\n ignoreCache,\n );\n const unlockedPortfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n isLocked: false,\n },\n ignoreCache,\n );\n const unlockedPortfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n { suiClient, address, isLocked: false },\n ignoreCache,\n );\n const portfolioAmount = await getAlphaPortfolioAmount(\n \"ALPHA\",\n {\n suiClient,\n address,\n },\n ignoreCache,\n );\n const portfolioAmountInUSD = await getAlphaPortfolioAmountInUSD(\n \"ALPHA\",\n {\n suiClient,\n address,\n },\n ignoreCache,\n );\n if (\n lockedPortfolioAmount !== undefined &&\n lockedPortfolioAmountInUSD !== undefined &&\n unlockedPortfolioAmount !== undefined &&\n unlockedPortfolioAmountInUSD !== undefined &&\n portfolioAmount !== undefined &&\n portfolioAmountInUSD !== undefined\n ) {\n const res: AlphaFiVaultBalance = {\n lockedAlphaCoins: lockedPortfolioAmount,\n lockedAlphaCoinsInUSD: lockedPortfolioAmountInUSD,\n unlockedAlphaCoins: unlockedPortfolioAmount,\n unlockedAlphaCoinsInUSD: unlockedPortfolioAmountInUSD,\n totalAlphaCoins: portfolioAmount,\n totalAlphaCoinsInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n } else if (poolInfo[poolName].assetTypes.length === 2) {\n const portfolioAmount = await getPortfolioAmount(\n poolName as PoolName,\n address,\n ignoreCache,\n );\n const portfolioAmountInUSD = await getDoubleAssetPortfolioAmountInUSD(\n poolName as PoolName,\n address,\n ignoreCache,\n );\n if (portfolioAmount !== undefined && portfolioAmountInUSD !== undefined) {\n const res: AlphaFiVaultBalance = {\n coinA: portfolioAmount[0].toString(),\n coinB: portfolioAmount[1].toString(),\n valueInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n } else if (poolInfo[poolName].assetTypes.length === 1) {\n const portfolioAmount = await getSingleAssetPortfolioAmount(\n poolName as SingleAssetPoolNames,\n address,\n ignoreCache,\n );\n const portfolioAmountInUSD = await getSingleAssetPortfolioAmountInUSD(\n poolName as SingleAssetPoolNames,\n address,\n ignoreCache,\n );\n if (portfolioAmount !== undefined && portfolioAmountInUSD !== undefined) {\n const res: AlphaFiVaultBalance = {\n coin: portfolioAmount.toString(),\n valueInUSD: portfolioAmountInUSD,\n };\n vaultBalance = res;\n }\n }\n return vaultBalance;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"getPortfolioAmounts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,QAAQ,EAUT,MAAM,gBAAgB,CAAC;AAoBxB,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,EAAE,OAAO,+BA+CrB;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,EAAE,OAAO,+BASrB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CA0BvC;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiC7B;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,mBAmKrB;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6B7B"}
1
+ {"version":3,"file":"getPortfolioAmounts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,QAAQ,EAUT,MAAM,gBAAgB,CAAC;AAmBxB,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,EAAE,OAAO,+BA+CrB;AAED,wBAAsB,4BAA4B,CAChD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EACtE,WAAW,EAAE,OAAO,+BASrB;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC,CA0BvC;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2B7B;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAa7B;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,mBAmKrB;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA6B7B"}
@@ -1,6 +1,6 @@
1
1
  import { Decimal } from "decimal.js";
2
- import { poolInfo, loopingPoolCoinMap, getSuiClient, cetusPoolMap, getParentPool, } from "../../index.js";
3
- import { getCoinAmountsFromLiquidity, getPool, getPoolExchangeRate, getReceipts, fetchVoloExchangeRate, getInvestor, } from "./getReceipts.js";
2
+ import { poolInfo, loopingPoolCoinMap, getSuiClient, cetusPoolMap, getParentPool, getCoinAmountsFromLiquidity, } from "../../index.js";
3
+ import { getPool, getPoolExchangeRate, getReceipts, fetchVoloExchangeRate, getInvestor, } from "./getReceipts.js";
4
4
  import { coinsList } from "../../common/coins.js";
5
5
  import { singleAssetPoolCoinMap, doubleAssetPoolCoinMap, } from "../../common/maps.js";
6
6
  import { getAlphaPrice } from "../../utils/clmm/prices.js";
@@ -86,23 +86,17 @@ export async function getPortfolioAmount(poolName, address, ignoreCache) {
86
86
  return portfolioAmount;
87
87
  }
88
88
  export async function getDoubleAssetPortfolioAmountInUSD(poolName, address, ignoreCache) {
89
- if (poolName !== undefined) {
89
+ if (poolInfo[poolName].assetTypes.length === 2) {
90
90
  const amounts = await getPortfolioAmount(poolName, address, ignoreCache);
91
- if (amounts !== undefined) {
91
+ if (amounts) {
92
92
  const ten = new Decimal(10);
93
93
  const pool1 = doubleAssetPoolCoinMap[poolName].coin1;
94
94
  const pool2 = doubleAssetPoolCoinMap[poolName].coin2;
95
95
  const amount0 = new Decimal(amounts[0]).div(ten.pow(coinsList[pool1].expo));
96
96
  const amount1 = new Decimal(amounts[1]).div(ten.pow(coinsList[pool2].expo));
97
- const tokens = poolName.split("-");
98
- const [priceOfCoin0, priceOfCoin1] = await getLatestPrices([
99
- `${tokens[0]}/USD`,
100
- `${tokens[1]}/USD`,
101
- ], ignoreCache);
102
- if (priceOfCoin0 && priceOfCoin1) {
103
- const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));
104
- return amount.toString();
105
- }
97
+ const [priceOfCoin0, priceOfCoin1] = await getLatestPrices([`${pool1}/USD`, `${pool2}/USD`], ignoreCache);
98
+ const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));
99
+ return amount.toString();
106
100
  }
107
101
  else {
108
102
  console.error(`getPortfolioAmountInUSD is not implemented for poolName: ${poolName}`);
@@ -1 +1 @@
1
- {"version":3,"file":"getPortfolioAmounts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"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","sourcesContent":["import { SuiClient } from \"@mysten/sui/client\";\nimport { Decimal } from \"decimal.js\";\nimport {\n PoolName,\n DoubleAssetPoolNames,\n NaviInvestor,\n CommonInvestorFields,\n poolInfo,\n loopingPoolCoinMap,\n getSuiClient,\n LoopingDebt,\n cetusPoolMap,\n getParentPool,\n} from \"../../index.js\";\nimport {\n getCoinAmountsFromLiquidity,\n getPool,\n getPoolExchangeRate,\n getReceipts,\n fetchVoloExchangeRate,\n getInvestor,\n} from \"./getReceipts.js\";\nimport { coinsList } from \"../../common/coins.js\";\nimport {\n singleAssetPoolCoinMap,\n doubleAssetPoolCoinMap,\n} from \"../../common/maps.js\";\nimport { PythPriceIdPair } from \"../../common/pyth.js\";\nimport { getAlphaPrice } from \"../../utils/clmm/prices.js\";\nimport { getLatestPrices } from \"../../utils/prices.js\";\nimport { TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\n\nexport async function getAlphaPortfolioAmount(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean,\n) {\n const receipts = await getReceipts(poolName, options.address, ignoreCache);\n const pool = await getPool(poolName, ignoreCache);\n if (!pool) {\n throw new Error(\"Pool not found\");\n }\n\n const exchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (!exchangeRate) {\n return \"0\"; // if pool has 0 xtokens\n }\n if (options.isLocked === true) {\n receipts.forEach(async (receipt) => {\n const xTokens = new Decimal(receipt.content.fields.xTokenBalance);\n const bal = new Decimal(\n Number(receipt.content.fields.unlocked_xtokens) *\n exchangeRate.toNumber(),\n );\n totalXTokens = totalXTokens.add(xTokens.sub(bal));\n });\n } else if (options.isLocked === false) {\n receipts.forEach((receipt) => {\n const bal = new Decimal(\n Number(receipt.content.fields.unlocked_xtokens) *\n exchangeRate.toNumber(),\n );\n totalXTokens = totalXTokens.add(bal);\n });\n } else {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n if (totalXTokens.gt(0)) {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n const tokens = totalXTokens.div(1e9).mul(poolExchangeRate);\n return `${tokens}`;\n } else {\n console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);\n }\n } else {\n return \"0\";\n }\n}\n\nexport async function getAlphaPortfolioAmountInUSD(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean,\n) {\n const tokens = await getAlphaPortfolioAmount(poolName, options, ignoreCache);\n const priceOfAlpha = await getAlphaPrice();\n if (priceOfAlpha && tokens) {\n let amount = new Decimal(tokens);\n amount = amount.mul(priceOfAlpha);\n return amount.toString();\n }\n}\n\nexport async function getPortfolioAmount(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<[string, string] | undefined> {\n let portfolioAmount: [string, string] = [\"0\", \"0\"];\n const receipts = await getReceipts(poolName, address, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (receipts) {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n\n if (totalXTokens.gt(0)) {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n const tokens = totalXTokens.mul(poolExchangeRate);\n const poolTokenAmounts = await getCoinAmountsFromLiquidity(\n poolName,\n tokens.toString(),\n ignoreCache,\n );\n portfolioAmount = poolTokenAmounts;\n } else {\n console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);\n }\n }\n return portfolioAmount;\n}\n\nexport async function getDoubleAssetPortfolioAmountInUSD(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<string | undefined> {\n if ((poolName as DoubleAssetPoolNames) !== undefined) {\n const amounts = await getPortfolioAmount(poolName, address, ignoreCache);\n if (amounts !== undefined) {\n const ten = new Decimal(10);\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const amount0 = new Decimal(amounts[0]).div(\n ten.pow(coinsList[pool1].expo),\n );\n const amount1 = new Decimal(amounts[1]).div(\n ten.pow(coinsList[pool2].expo),\n );\n const tokens = poolName.split(\"-\");\n const [priceOfCoin0, priceOfCoin1] = await getLatestPrices(\n [\n `${tokens[0]}/USD` as PythPriceIdPair,\n `${tokens[1]}/USD` as PythPriceIdPair,\n ],\n ignoreCache,\n );\n if (priceOfCoin0 && priceOfCoin1) {\n const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));\n return amount.toString();\n }\n } else {\n console.error(\n `getPortfolioAmountInUSD is not implemented for poolName: ${poolName}`,\n );\n }\n return \"0\";\n }\n}\n\nexport async function getNaviLoopingPoolDebt(\n poolName: PoolName,\n): Promise<string | undefined> {\n const debt = (\n (\n await getSuiClient().getDynamicFieldObject({\n parentId: poolInfo[poolName].investorId,\n name: {\n type: \"vector<u8>\",\n value: \"debt\".split(\"\").map((char) => char.charCodeAt(0)),\n },\n })\n ).data as LoopingDebt\n ).content.fields.value.toString();\n return debt;\n}\n\nexport async function getSingleAssetPortfolioAmount(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n) {\n let portfolioAmount: number = 0;\n const receipts = await getReceipts(poolName, address, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (receipts) {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n if (totalXTokens.gt(0)) {\n let pool;\n let investor;\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n pool = await getPool(poolName, ignoreCache);\n investor = (await getInvestor(poolName, ignoreCache)) as NaviInvestor &\n CommonInvestorFields;\n }\n if (\n poolName == \"NAVI-LOOP-USDC-USDT\" ||\n poolName == \"NAVI-LOOP-USDT-USDC\"\n ) {\n const supplyCoin = loopingPoolCoinMap[poolName].supplyCoin;\n const borrowCoin = loopingPoolCoinMap[poolName].borrowCoin;\n if (pool && investor) {\n let tokensInvested = new Decimal(0);\n const currentDebt = await getNaviLoopingPoolDebt(poolName);\n\n const currentSupply =\n investor.content.fields.tokensDeposited.toString();\n if (\n cetusPoolMap[supplyCoin + \"-\" + borrowCoin] &&\n currentDebt &&\n currentSupply\n ) {\n const cetusPool = await getParentPool(\n supplyCoin + \"-\" + borrowCoin,\n ignoreCache,\n );\n if (cetusPool) {\n const sqrtPrice = cetusPool?.content.fields.current_sqrt_price;\n const price = TickMath.sqrtPriceX64ToPrice(\n new BN(sqrtPrice!),\n coinsList[supplyCoin].expo,\n coinsList[borrowCoin].expo,\n );\n const currentDebtInSupplyCoin = new Decimal(currentDebt).div(price);\n tokensInvested = new Decimal(currentSupply).minus(\n currentDebtInSupplyCoin,\n );\n } else {\n console.error(`couldnt fetch cetus pool`);\n }\n } else if (\n cetusPoolMap[borrowCoin + \"-\" + supplyCoin] &&\n currentDebt !== undefined &&\n currentSupply !== undefined\n ) {\n const cetusPool = await getParentPool(\n borrowCoin + \"-\" + supplyCoin,\n ignoreCache,\n );\n if (cetusPool) {\n const sqrtPrice = cetusPool?.content.fields.current_sqrt_price;\n const price = TickMath.sqrtPriceX64ToPrice(\n new BN(sqrtPrice!),\n coinsList[borrowCoin].expo,\n coinsList[supplyCoin].expo,\n );\n const currentDebtInSupplyCoin = new Decimal(currentDebt).mul(price);\n tokensInvested = new Decimal(currentSupply).minus(\n currentDebtInSupplyCoin,\n );\n } else {\n console.error(`couldnt fetch cetus pool`);\n }\n } else {\n console.error(\n `one or more of these are possibly undefined: currentDebt:${currentDebt}, currentSupply: ${currentSupply}, cetusPoolMap[supplyCoin+'-'+borrowCoin]:${cetusPoolMap[supplyCoin + \"-\" + borrowCoin]}, cetusPoolMap[borrowCoin+'-'+supplyCoin]: ${cetusPoolMap[borrowCoin + \"-\" + supplyCoin]}`,\n );\n }\n\n const xTokenSupplyInPool = new Decimal(\n pool.content.fields.xTokenSupply,\n );\n const userTokens = totalXTokens\n .mul(tokensInvested)\n .div(xTokenSupplyInPool);\n const tokens = userTokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n portfolioAmount = Number(tokens);\n } else {\n console.error(`Could not get object for poolName: ${poolName}`);\n }\n } else if (\n poolName == \"NAVI-LOOP-HASUI-SUI\" ||\n poolName == \"NAVI-LOOP-SUI-VSUI\"\n ) {\n if (pool && investor) {\n const liquidity = new Decimal(investor.content.fields.tokensDeposited);\n const debtToSupplyRatio = new Decimal(\n investor.content.fields.current_debt_to_supply_ratio,\n );\n const tokensInvested = liquidity.mul(\n new Decimal(1).minus(new Decimal(debtToSupplyRatio).div(1e20)),\n );\n const xTokenSupplyInPool = new Decimal(\n pool.content.fields.xTokenSupply,\n );\n const userTokens = totalXTokens\n .mul(tokensInvested)\n .div(xTokenSupplyInPool);\n const tokens = userTokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n if (poolName == \"NAVI-LOOP-SUI-VSUI\") {\n // const { SevenKGateway } = await import(\"../\");\n // const sevenKInstance = new SevenKGateway();\n // const numberOfTokensInSui = (await sevenKInstance.getQuote({\n // slippage: 1,\n // senderAddress: options.address,\n // pair: { coinA: coins[\"VSUI\"], coinB: coins[\"SUI\"] },\n // inAmount: new BN(tokens.toNumber()),\n // })) as QuoteResponse;\n const voloExchRate = await fetchVoloExchangeRate();\n portfolioAmount = Number(\n tokens.mul(parseFloat(voloExchRate.data.exchangeRate)),\n );\n } else {\n portfolioAmount = Number(tokens);\n }\n } else {\n console.error(`Could not get object for poolName: ${poolName}`);\n }\n } else {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n let tokens = totalXTokens.mul(poolExchangeRate);\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n tokens = tokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n }\n portfolioAmount = tokens.toNumber();\n } else {\n console.error(\n `Could not get poolExchangeRate for poolName: ${poolName}`,\n );\n }\n }\n }\n return portfolioAmount;\n}\n\nexport async function getSingleAssetPortfolioAmountInUSD(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<string | undefined> {\n const amounts = await getSingleAssetPortfolioAmount(\n poolName,\n address,\n ignoreCache,\n );\n\n if (amounts !== undefined) {\n let coinName = singleAssetPoolCoinMap[poolName].coin;\n if (poolName == \"NAVI-LOOP-SUI-VSUI\") {\n coinName = \"SUI\";\n }\n const amount = new Decimal(amounts).div(\n new Decimal(Math.pow(10, coinsList[coinName].expo)),\n );\n const [priceOfCoin] = await getLatestPrices(\n [`${coinName}/USD` as PythPriceIdPair],\n ignoreCache,\n );\n if (priceOfCoin) {\n const amountInUSD = amount.mul(priceOfCoin);\n return amountInUSD.toString();\n }\n } else {\n console.error(\n `getSingleAssetPortfolioAmountInUSD is not implemented for poolName: ${poolName}`,\n );\n }\n return \"0\";\n}\n"]}
1
+ {"version":3,"file":"getPortfolioAmounts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getPortfolioAmounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAIL,QAAQ,EACR,kBAAkB,EAClB,YAAY,EAEZ,YAAY,EACZ,aAAa,EACb,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,qBAAqB,EACrB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAkB,EAClB,OAAsE,EACtE,WAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IACtE,IAAI,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,CAAC,wBAAwB;IACtC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC9B,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,GAAG,GAAG,IAAI,OAAO,CACrB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC7C,YAAY,CAAC,QAAQ,EAAE,CAC1B,CAAC;YACF,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QACtC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,GAAG,GAAG,IAAI,OAAO,CACrB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAC7C,YAAY,CAAC,QAAQ,EAAE,CAC1B,CAAC;YACF,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YACrD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC3D,OAAO,GAAG,MAAM,EAAE,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,QAAkB,EAClB,OAAsE,EACtE,WAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,MAAM,aAAa,EAAE,CAAC;IAC3C,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,IAAI,eAAe,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YACrD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAClD,MAAM,gBAAgB,GAAG,MAAM,2BAA2B,CACxD,QAAQ,EACR,MAAM,CAAC,QAAQ,EAAE,EACjB,WAAW,CACZ,CAAC;YACF,eAAe,GAAG,gBAAgB,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,gDAAgD,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5B,MAAM,KAAK,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;YACrD,MAAM,KAAK,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC;YAErD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CACzC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAC/B,CAAC;YACF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CACzC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAC/B,CAAC;YACF,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,GAAG,MAAM,eAAe,CACxD,CAAC,GAAG,KAAK,MAAyB,EAAE,GAAG,KAAK,MAAyB,CAAC,EACtE,WAAW,CACZ,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;YACxE,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CACX,4DAA4D,QAAQ,EAAE,CACvE,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAkB;IAElB,MAAM,IAAI,GACR,CACE,MAAM,YAAY,EAAE,CAAC,qBAAqB,CAAC;QACzC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,UAAU;QACvC,IAAI,EAAE;YACJ,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC1D;KACF,CAAC,CACH,CAAC,IACH,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,IAAI,eAAe,GAAW,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YACrD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC;QACT,IAAI,QAAQ,CAAC;QACb,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,kBAAkB,IAAI,MAAM,EAAE,CAAC;YACpD,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC5C,QAAQ,GAAG,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAC9B,CAAC;QACzB,CAAC;QACD,IACE,QAAQ,IAAI,qBAAqB;YACjC,QAAQ,IAAI,qBAAqB,EACjC,CAAC;YACD,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;YAC3D,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC;YAC3D,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACrB,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;gBACpC,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;gBAE3D,MAAM,aAAa,GACjB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;gBACrD,IACE,YAAY,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC;oBAC3C,WAAW;oBACX,aAAa,EACb,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,UAAU,GAAG,GAAG,GAAG,UAAU,EAC7B,WAAW,CACZ,CAAC;oBACF,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,SAAS,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;wBAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CACxC,IAAI,EAAE,CAAC,SAAU,CAAC,EAClB,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,EAC1B,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3B,CAAC;wBACF,MAAM,uBAAuB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACpE,cAAc,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAC/C,uBAAuB,CACxB,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;qBAAM,IACL,YAAY,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC;oBAC3C,WAAW,KAAK,SAAS;oBACzB,aAAa,KAAK,SAAS,EAC3B,CAAC;oBACD,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,UAAU,GAAG,GAAG,GAAG,UAAU,EAC7B,WAAW,CACZ,CAAC;oBACF,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,SAAS,GAAG,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC;wBAC/D,MAAM,KAAK,GAAG,QAAQ,CAAC,mBAAmB,CACxC,IAAI,EAAE,CAAC,SAAU,CAAC,EAClB,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,EAC1B,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAC3B,CAAC;wBACF,MAAM,uBAAuB,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACpE,cAAc,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAC/C,uBAAuB,CACxB,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CACX,4DAA4D,WAAW,oBAAoB,aAAa,6CAA6C,YAAY,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC,8CAA8C,YAAY,CAAC,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC,EAAE,CAC5R,CAAC;gBACJ,CAAC;gBAED,MAAM,kBAAkB,GAAG,IAAI,OAAO,CACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CACjC,CAAC;gBACF,MAAM,UAAU,GAAG,YAAY;qBAC5B,GAAG,CAAC,cAAc,CAAC;qBACnB,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAC3B,IAAI,CAAC,GAAG,CACN,EAAE,EACF,CAAC,GAAG,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,CACF,CAAC;gBACF,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,IACL,QAAQ,IAAI,qBAAqB;YACjC,QAAQ,IAAI,oBAAoB,EAChC,CAAC;YACD,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACrB,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;gBACvE,MAAM,iBAAiB,GAAG,IAAI,OAAO,CACnC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,4BAA4B,CACrD,CAAC;gBACF,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAClC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAC/D,CAAC;gBACF,MAAM,kBAAkB,GAAG,IAAI,OAAO,CACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CACjC,CAAC;gBACF,MAAM,UAAU,GAAG,YAAY;qBAC5B,GAAG,CAAC,cAAc,CAAC;qBACnB,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAC3B,IAAI,CAAC,GAAG,CACN,EAAE,EACF,CAAC,GAAG,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,CACF,CAAC;gBACF,IAAI,QAAQ,IAAI,oBAAoB,EAAE,CAAC;oBACrC,iDAAiD;oBACjD,8CAA8C;oBAC9C,+DAA+D;oBAC/D,iBAAiB;oBACjB,oCAAoC;oBACpC,yDAAyD;oBACzD,yCAAyC;oBACzC,wBAAwB;oBACxB,MAAM,YAAY,GAAG,MAAM,qBAAqB,EAAE,CAAC;oBACnD,eAAe,GAAG,MAAM,CACtB,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CACvD,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC1E,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAChD,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,kBAAkB,IAAI,MAAM,EAAE,CAAC;oBACpD,MAAM,GAAG,MAAM,CAAC,GAAG,CACjB,IAAI,CAAC,GAAG,CACN,EAAE,EACF,CAAC,GAAG,SAAS,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1D,CACF,CAAC;gBACJ,CAAC;gBACD,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CACX,gDAAgD,QAAQ,EAAE,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,QAAkB,EAClB,OAAe,EACf,WAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,6BAA6B,CACjD,QAAQ,EACR,OAAO,EACP,WAAW,CACZ,CAAC;IAEF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QACrD,IAAI,QAAQ,IAAI,oBAAoB,EAAE,CAAC;YACrC,QAAQ,GAAG,KAAK,CAAC;QACnB,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CACrC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,eAAe,CACzC,CAAC,GAAG,QAAQ,MAAyB,CAAC,EACtC,WAAW,CACZ,CAAC;QACF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC5C,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CACX,uEAAuE,QAAQ,EAAE,CAClF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { SuiClient } from \"@mysten/sui/client\";\nimport { Decimal } from \"decimal.js\";\nimport {\n PoolName,\n NaviInvestor,\n CommonInvestorFields,\n poolInfo,\n loopingPoolCoinMap,\n getSuiClient,\n LoopingDebt,\n cetusPoolMap,\n getParentPool,\n getCoinAmountsFromLiquidity,\n} from \"../../index.js\";\nimport {\n getPool,\n getPoolExchangeRate,\n getReceipts,\n fetchVoloExchangeRate,\n getInvestor,\n} from \"./getReceipts.js\";\nimport { coinsList } from \"../../common/coins.js\";\nimport {\n singleAssetPoolCoinMap,\n doubleAssetPoolCoinMap,\n} from \"../../common/maps.js\";\nimport { PythPriceIdPair } from \"../../common/pyth.js\";\nimport { getAlphaPrice } from \"../../utils/clmm/prices.js\";\nimport { getLatestPrices } from \"../../utils/prices.js\";\nimport { TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\n\nexport async function getAlphaPortfolioAmount(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean,\n) {\n const receipts = await getReceipts(poolName, options.address, ignoreCache);\n const pool = await getPool(poolName, ignoreCache);\n if (!pool) {\n throw new Error(\"Pool not found\");\n }\n\n const exchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (!exchangeRate) {\n return \"0\"; // if pool has 0 xtokens\n }\n if (options.isLocked === true) {\n receipts.forEach(async (receipt) => {\n const xTokens = new Decimal(receipt.content.fields.xTokenBalance);\n const bal = new Decimal(\n Number(receipt.content.fields.unlocked_xtokens) *\n exchangeRate.toNumber(),\n );\n totalXTokens = totalXTokens.add(xTokens.sub(bal));\n });\n } else if (options.isLocked === false) {\n receipts.forEach((receipt) => {\n const bal = new Decimal(\n Number(receipt.content.fields.unlocked_xtokens) *\n exchangeRate.toNumber(),\n );\n totalXTokens = totalXTokens.add(bal);\n });\n } else {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n if (totalXTokens.gt(0)) {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n const tokens = totalXTokens.div(1e9).mul(poolExchangeRate);\n return `${tokens}`;\n } else {\n console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);\n }\n } else {\n return \"0\";\n }\n}\n\nexport async function getAlphaPortfolioAmountInUSD(\n poolName: PoolName,\n options: { suiClient: SuiClient; address: string; isLocked?: boolean },\n ignoreCache: boolean,\n) {\n const tokens = await getAlphaPortfolioAmount(poolName, options, ignoreCache);\n const priceOfAlpha = await getAlphaPrice();\n if (priceOfAlpha && tokens) {\n let amount = new Decimal(tokens);\n amount = amount.mul(priceOfAlpha);\n return amount.toString();\n }\n}\n\nexport async function getPortfolioAmount(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<[string, string] | undefined> {\n let portfolioAmount: [string, string] = [\"0\", \"0\"];\n const receipts = await getReceipts(poolName, address, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (receipts) {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n\n if (totalXTokens.gt(0)) {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n const tokens = totalXTokens.mul(poolExchangeRate);\n const poolTokenAmounts = await getCoinAmountsFromLiquidity(\n poolName,\n tokens.toString(),\n ignoreCache,\n );\n portfolioAmount = poolTokenAmounts;\n } else {\n console.error(`Could not get poolExchangeRate for poolName: ${poolName}`);\n }\n }\n return portfolioAmount;\n}\n\nexport async function getDoubleAssetPortfolioAmountInUSD(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<string | undefined> {\n if (poolInfo[poolName].assetTypes.length === 2) {\n const amounts = await getPortfolioAmount(poolName, address, ignoreCache);\n if (amounts) {\n const ten = new Decimal(10);\n const pool1 = doubleAssetPoolCoinMap[poolName].coin1;\n const pool2 = doubleAssetPoolCoinMap[poolName].coin2;\n\n const amount0 = new Decimal(amounts[0]).div(\n ten.pow(coinsList[pool1].expo),\n );\n const amount1 = new Decimal(amounts[1]).div(\n ten.pow(coinsList[pool2].expo),\n );\n const [priceOfCoin0, priceOfCoin1] = await getLatestPrices(\n [`${pool1}/USD` as PythPriceIdPair, `${pool2}/USD` as PythPriceIdPair],\n ignoreCache,\n );\n const amount = amount0.mul(priceOfCoin0).add(amount1.mul(priceOfCoin1));\n return amount.toString();\n } else {\n console.error(\n `getPortfolioAmountInUSD is not implemented for poolName: ${poolName}`,\n );\n }\n return \"0\";\n }\n}\n\nexport async function getNaviLoopingPoolDebt(\n poolName: PoolName,\n): Promise<string | undefined> {\n const debt = (\n (\n await getSuiClient().getDynamicFieldObject({\n parentId: poolInfo[poolName].investorId,\n name: {\n type: \"vector<u8>\",\n value: \"debt\".split(\"\").map((char) => char.charCodeAt(0)),\n },\n })\n ).data as LoopingDebt\n ).content.fields.value.toString();\n return debt;\n}\n\nexport async function getSingleAssetPortfolioAmount(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n) {\n let portfolioAmount: number = 0;\n const receipts = await getReceipts(poolName, address, ignoreCache);\n let totalXTokens = new Decimal(0);\n if (receipts) {\n receipts.forEach((receipt) => {\n const xTokens = receipt.content.fields.xTokenBalance;\n totalXTokens = totalXTokens.add(xTokens);\n });\n }\n if (totalXTokens.gt(0)) {\n let pool;\n let investor;\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n pool = await getPool(poolName, ignoreCache);\n investor = (await getInvestor(poolName, ignoreCache)) as NaviInvestor &\n CommonInvestorFields;\n }\n if (\n poolName == \"NAVI-LOOP-USDC-USDT\" ||\n poolName == \"NAVI-LOOP-USDT-USDC\"\n ) {\n const supplyCoin = loopingPoolCoinMap[poolName].supplyCoin;\n const borrowCoin = loopingPoolCoinMap[poolName].borrowCoin;\n if (pool && investor) {\n let tokensInvested = new Decimal(0);\n const currentDebt = await getNaviLoopingPoolDebt(poolName);\n\n const currentSupply =\n investor.content.fields.tokensDeposited.toString();\n if (\n cetusPoolMap[supplyCoin + \"-\" + borrowCoin] &&\n currentDebt &&\n currentSupply\n ) {\n const cetusPool = await getParentPool(\n supplyCoin + \"-\" + borrowCoin,\n ignoreCache,\n );\n if (cetusPool) {\n const sqrtPrice = cetusPool?.content.fields.current_sqrt_price;\n const price = TickMath.sqrtPriceX64ToPrice(\n new BN(sqrtPrice!),\n coinsList[supplyCoin].expo,\n coinsList[borrowCoin].expo,\n );\n const currentDebtInSupplyCoin = new Decimal(currentDebt).div(price);\n tokensInvested = new Decimal(currentSupply).minus(\n currentDebtInSupplyCoin,\n );\n } else {\n console.error(`couldnt fetch cetus pool`);\n }\n } else if (\n cetusPoolMap[borrowCoin + \"-\" + supplyCoin] &&\n currentDebt !== undefined &&\n currentSupply !== undefined\n ) {\n const cetusPool = await getParentPool(\n borrowCoin + \"-\" + supplyCoin,\n ignoreCache,\n );\n if (cetusPool) {\n const sqrtPrice = cetusPool?.content.fields.current_sqrt_price;\n const price = TickMath.sqrtPriceX64ToPrice(\n new BN(sqrtPrice!),\n coinsList[borrowCoin].expo,\n coinsList[supplyCoin].expo,\n );\n const currentDebtInSupplyCoin = new Decimal(currentDebt).mul(price);\n tokensInvested = new Decimal(currentSupply).minus(\n currentDebtInSupplyCoin,\n );\n } else {\n console.error(`couldnt fetch cetus pool`);\n }\n } else {\n console.error(\n `one or more of these are possibly undefined: currentDebt:${currentDebt}, currentSupply: ${currentSupply}, cetusPoolMap[supplyCoin+'-'+borrowCoin]:${cetusPoolMap[supplyCoin + \"-\" + borrowCoin]}, cetusPoolMap[borrowCoin+'-'+supplyCoin]: ${cetusPoolMap[borrowCoin + \"-\" + supplyCoin]}`,\n );\n }\n\n const xTokenSupplyInPool = new Decimal(\n pool.content.fields.xTokenSupply,\n );\n const userTokens = totalXTokens\n .mul(tokensInvested)\n .div(xTokenSupplyInPool);\n const tokens = userTokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n portfolioAmount = Number(tokens);\n } else {\n console.error(`Could not get object for poolName: ${poolName}`);\n }\n } else if (\n poolName == \"NAVI-LOOP-HASUI-SUI\" ||\n poolName == \"NAVI-LOOP-SUI-VSUI\"\n ) {\n if (pool && investor) {\n const liquidity = new Decimal(investor.content.fields.tokensDeposited);\n const debtToSupplyRatio = new Decimal(\n investor.content.fields.current_debt_to_supply_ratio,\n );\n const tokensInvested = liquidity.mul(\n new Decimal(1).minus(new Decimal(debtToSupplyRatio).div(1e20)),\n );\n const xTokenSupplyInPool = new Decimal(\n pool.content.fields.xTokenSupply,\n );\n const userTokens = totalXTokens\n .mul(tokensInvested)\n .div(xTokenSupplyInPool);\n const tokens = userTokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n if (poolName == \"NAVI-LOOP-SUI-VSUI\") {\n // const { SevenKGateway } = await import(\"../\");\n // const sevenKInstance = new SevenKGateway();\n // const numberOfTokensInSui = (await sevenKInstance.getQuote({\n // slippage: 1,\n // senderAddress: options.address,\n // pair: { coinA: coins[\"VSUI\"], coinB: coins[\"SUI\"] },\n // inAmount: new BN(tokens.toNumber()),\n // })) as QuoteResponse;\n const voloExchRate = await fetchVoloExchangeRate();\n portfolioAmount = Number(\n tokens.mul(parseFloat(voloExchRate.data.exchangeRate)),\n );\n } else {\n portfolioAmount = Number(tokens);\n }\n } else {\n console.error(`Could not get object for poolName: ${poolName}`);\n }\n } else {\n const poolExchangeRate = await getPoolExchangeRate(poolName, ignoreCache);\n if (poolExchangeRate) {\n let tokens = totalXTokens.mul(poolExchangeRate);\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n tokens = tokens.div(\n Math.pow(\n 10,\n 9 - coinsList[singleAssetPoolCoinMap[poolName].coin].expo,\n ),\n );\n }\n portfolioAmount = tokens.toNumber();\n } else {\n console.error(\n `Could not get poolExchangeRate for poolName: ${poolName}`,\n );\n }\n }\n }\n return portfolioAmount;\n}\n\nexport async function getSingleAssetPortfolioAmountInUSD(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<string | undefined> {\n const amounts = await getSingleAssetPortfolioAmount(\n poolName,\n address,\n ignoreCache,\n );\n\n if (amounts !== undefined) {\n let coinName = singleAssetPoolCoinMap[poolName].coin;\n if (poolName == \"NAVI-LOOP-SUI-VSUI\") {\n coinName = \"SUI\";\n }\n const amount = new Decimal(amounts).div(\n new Decimal(Math.pow(10, coinsList[coinName].expo)),\n );\n const [priceOfCoin] = await getLatestPrices(\n [`${coinName}/USD` as PythPriceIdPair],\n ignoreCache,\n );\n if (priceOfCoin) {\n const amountInUSD = amount.mul(priceOfCoin);\n return amountInUSD.toString();\n }\n } else {\n console.error(\n `getSingleAssetPortfolioAmountInUSD is not implemented for poolName: ${poolName}`,\n );\n }\n return \"0\";\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { AlphaPoolType, NaviInvestor, CommonInvestorFields, CetusPoolType, PoolName, PoolType, Receipt, NaviVoloData, Investor, SingleAssetPoolNames, ReceiptGQL, Distributor } from "../../index.js";
1
+ import { AlphaPoolType, NaviInvestor, CommonInvestorFields, CetusPoolType, PoolName, PoolType, Receipt, NaviVoloData, Investor, SingleAssetPoolNames, ReceiptGQL, Distributor, BluefinPoolType } from "../../index.js";
2
2
  import { Decimal } from "decimal.js";
3
3
  export declare function convertReceiptGQLToReceipt(receipts: ReceiptGQL[]): Receipt[];
4
4
  export declare function getMultiReceipts(address: string): Promise<void>;
@@ -7,11 +7,10 @@ export declare function getPoolExchangeRate(poolName: PoolName, ignoreCache: boo
7
7
  export declare function getMultiPool(): Promise<void>;
8
8
  export declare function getPool(poolName: string, ignoreCache: boolean): Promise<PoolType | AlphaPoolType>;
9
9
  export declare function getMultiParentPool(): Promise<void>;
10
- export declare function getParentPool(poolName: string, ignoreCache: boolean): Promise<CetusPoolType>;
10
+ export declare function getParentPool(poolName: string, ignoreCache: boolean): Promise<CetusPoolType | BluefinPoolType>;
11
11
  export declare function getMultiInvestor(): Promise<void>;
12
12
  export declare function getInvestor(poolName: PoolName, ignoreCache: boolean): Promise<Investor>;
13
13
  export declare function fetchVoloExchangeRate(): Promise<NaviVoloData>;
14
- export declare function getCoinAmountsFromLiquidity(poolName: PoolName, liquidity: string, ignoreCache: boolean): Promise<[string, string]>;
15
14
  export declare function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]): Promise<{
16
15
  ALPHA?: (NaviInvestor & CommonInvestorFields) | undefined;
17
16
  "NAVI-SUI"?: (NaviInvestor & CommonInvestorFields) | undefined;
@@ -33,4 +32,8 @@ export declare function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]):
33
32
  "NAVI-NAVX"?: (NaviInvestor & CommonInvestorFields) | undefined;
34
33
  }>;
35
34
  export declare function getDistributor(ignoreCache: boolean): Promise<Distributor | undefined>;
35
+ export declare function getPositionRange(ignoreCache: boolean): Promise<Map<PoolName, {
36
+ lowerPrice: string;
37
+ upperPrice: string;
38
+ }>>;
36
39
  //# sourceMappingURL=getReceipts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getReceipts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAEb,YAAY,EACZ,oBAAoB,EACpB,aAAa,EAEb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,QAAQ,EAGR,oBAAoB,EAEpB,UAAU,EAGV,WAAW,EAEZ,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAyE5E;AAKD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,iBA0BrD;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC,CAgEpB;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,OAAO,CAAC,CAgClB;AAKD,wBAAsB,YAAY,kBAuBjC;AAED,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,CAgDnC;AAKD,wBAAsB,kBAAkB,kBAuBvC;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,aAAa,CAAC,CAkDxB;AAKD,wBAAsB,gBAAgB,kBAuBrC;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,QAAQ,CAAC,CAqDnB;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,CAAC,CAenE;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA4B3B;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;GA8B3E;AAOD,wBAAsB,cAAc,CAClC,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA6ClC"}
1
+ {"version":3,"file":"getReceipts.d.ts","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAEb,YAAY,EACZ,oBAAoB,EACpB,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,QAAQ,EAGR,oBAAoB,EAEpB,UAAU,EAGV,WAAW,EAEX,eAAe,EAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKrC,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,CAyE5E;AAKD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,iBA0BrD;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,OAAO,EAAE,CAAC,CAgEpB;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,OAAO,CAAC,CAgClB;AAKD,wBAAsB,YAAY,kBAuBjC;AAED,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,CAgDnC;AAOD,wBAAsB,kBAAkB,kBAuBvC;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,aAAa,GAAG,eAAe,CAAC,CAkD1C;AAKD,wBAAsB,gBAAgB,kBAuBrC;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,QAAQ,CAAC,CAqDnB;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,CAAC,CAenE;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;GA8B3E;AAOD,wBAAsB,cAAc,CAClC,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA6ClC;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAuDpE"}
@@ -1,10 +1,9 @@
1
- import { fetchMultiReceipts, cetusPoolMap, bluefinPoolMap, getConf, } from "../../index.js";
2
- import { poolInfo } from "../../common/maps.js";
3
- import { ClmmPoolUtil, TickMath } from "@cetusprotocol/cetus-sui-clmm-sdk";
4
- import BN from "bn.js";
1
+ import { fetchMultiReceipts, cetusPoolMap, bluefinPoolMap, getConf, coinsList, } from "../../index.js";
2
+ import { doubleAssetPoolCoinMap, poolInfo } from "../../common/maps.js";
5
3
  import { Decimal } from "decimal.js";
6
4
  import { getSuiClient } from "../client.js";
7
5
  import { SimpleCache } from "../../utils/simpleCache.js";
6
+ import { TickMath } from "@cetusprotocol/cetus-sui-clmm-sdk";
8
7
  export function convertReceiptGQLToReceipt(receipts) {
9
8
  const res = receipts.map((receipt) => {
10
9
  return {
@@ -296,7 +295,7 @@ export async function getMultiParentPool() {
296
295
  }
297
296
  export async function getParentPool(poolName, ignoreCache) {
298
297
  const suiClient = getSuiClient();
299
- const cacheKey = `pool_${cetusPoolMap[poolName.toUpperCase()]}`;
298
+ const cacheKey = `pool_${poolName}`;
300
299
  if (ignoreCache) {
301
300
  cetusPoolCache.delete(cacheKey);
302
301
  cetusPoolPromiseCache.delete(cacheKey);
@@ -442,27 +441,6 @@ export async function fetchVoloExchangeRate() {
442
441
  });
443
442
  return NaviVoloDetails;
444
443
  }
445
- export async function getCoinAmountsFromLiquidity(poolName, liquidity, ignoreCache) {
446
- const clmmPool = await getParentPool(poolName, ignoreCache);
447
- const investor = (await getInvestor(poolName, ignoreCache));
448
- const upper_bound = 443636;
449
- let lower_tick = Number(investor.content.fields.lower_tick);
450
- let upper_tick = Number(investor.content.fields.upper_tick);
451
- if (lower_tick > upper_bound) {
452
- lower_tick = -~(lower_tick - 1);
453
- }
454
- if (upper_tick > upper_bound) {
455
- upper_tick = -~(upper_tick - 1);
456
- }
457
- if (clmmPool) {
458
- const liquidityInt = Math.floor(parseFloat(liquidity));
459
- const coin_amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(new BN(`${liquidityInt}`), new BN(clmmPool.content.fields.current_sqrt_price), TickMath.tickIndexToSqrtPriceX64(lower_tick), TickMath.tickIndexToSqrtPriceX64(upper_tick), true);
460
- return [coin_amounts.coinA.toString(), coin_amounts.coinB.toString()];
461
- }
462
- else {
463
- return ["0", "0"];
464
- }
465
- }
466
444
  export async function multiGetNaviInvestor(poolNames) {
467
445
  const results = {};
468
446
  const poolInvestorIds = [];
@@ -533,6 +511,45 @@ export async function getDistributor(ignoreCache) {
533
511
  distributorPromiseCache.set(cacheKey, distributorPromise);
534
512
  return distributorPromise;
535
513
  }
514
+ export async function getPositionRange(ignoreCache) {
515
+ const res = new Map();
516
+ for (const poolNameString of Object.keys(poolInfo)) {
517
+ const poolName = poolNameString;
518
+ if (poolName == "ALPHA" ||
519
+ !["CETUS", "BLUEFIN"].includes(poolInfo[poolNameString].parentProtocolName)) {
520
+ continue;
521
+ }
522
+ let investor;
523
+ if (poolInfo[poolNameString].parentProtocolName == "CETUS") {
524
+ investor = (await getInvestor(poolName, ignoreCache));
525
+ }
526
+ else {
527
+ investor = (await getInvestor(poolName, ignoreCache));
528
+ }
529
+ const coinAName = doubleAssetPoolCoinMap[poolName].coin1;
530
+ const coinA = coinsList[coinAName];
531
+ const coinBName = doubleAssetPoolCoinMap[poolName].coin2;
532
+ const coinB = coinsList[coinBName];
533
+ if (investor) {
534
+ const upperBound = 443636;
535
+ let lowerTick = Number(investor.content.fields.lower_tick);
536
+ let upperTick = Number(investor.content.fields.upper_tick);
537
+ if (lowerTick > upperBound) {
538
+ lowerTick = -~(lowerTick - 1);
539
+ }
540
+ if (upperTick > upperBound) {
541
+ upperTick = -~(upperTick - 1);
542
+ }
543
+ const lowerPrice = TickMath.tickIndexToPrice(lowerTick, coinA.expo, coinB.expo);
544
+ const upperPrice = TickMath.tickIndexToPrice(upperTick, coinA.expo, coinB.expo);
545
+ res.set(poolName, {
546
+ lowerPrice: lowerPrice.toString(),
547
+ upperPrice: upperPrice.toString(),
548
+ });
549
+ }
550
+ }
551
+ return res;
552
+ }
536
553
  /*
537
554
  for the missing pools, add a promise, each of those promises waits for there respective object from a map, that map is populated all at once,
538
555
  problem with concurrency
@@ -1 +1 @@
1
- {"version":3,"file":"getReceipts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"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","sourcesContent":["import { PaginatedObjectsResponse } from \"@mysten/sui/client\";\nimport {\n AlphaPoolType,\n CetusInvestor,\n NaviInvestor,\n CommonInvestorFields,\n CetusPoolType,\n CoinAmounts,\n PoolName,\n PoolType,\n Receipt,\n NaviVoloData,\n Investor,\n BluefinInvestor,\n BucketInvestor,\n SingleAssetPoolNames,\n fetchMultiReceipts,\n ReceiptGQL,\n cetusPoolMap,\n bluefinPoolMap,\n Distributor,\n getConf,\n} from \"../../index.js\";\nimport { poolInfo } from \"../../common/maps.js\";\nimport { ClmmPoolUtil, TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { Decimal } from \"decimal.js\";\nimport { getSuiClient } from \"../client.js\";\nimport { SimpleCache } from \"../../utils/simpleCache.js\";\n\nexport function convertReceiptGQLToReceipt(receipts: ReceiptGQL[]): Receipt[] {\n const res = receipts.map((receipt) => {\n return {\n objectId: receipt.address,\n version: receipt.version,\n digest: receipt.digest,\n content: {\n dataType: \"moveObject\", // Assuming a fixed value as it's not available in ReceiptA\n type: receipt.contents.type.repr,\n hasPublicTransfer: receipt.hasPublicTransfer,\n fields: {\n id: { id: receipt.contents.json.id },\n image_url: receipt.contents.json.image_url,\n last_acc_reward_per_xtoken: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents:\n receipt.contents.json.last_acc_reward_per_xtoken.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n value: item.value,\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n },\n }),\n ),\n },\n },\n locked_balance: receipt.contents.json.locked_balance\n ? {\n type: \"unknown\", // Assuming fixed value\n fields: {\n head: receipt.contents.json.locked_balance.head,\n id: { id: receipt.contents.json.locked_balance.id },\n size: receipt.contents.json.locked_balance.size,\n tail: receipt.contents.json.locked_balance.tail,\n },\n }\n : undefined,\n name: receipt.contents.json.name,\n owner: receipt.contents.json.owner,\n pending_rewards: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents: receipt.contents.json.pending_rewards.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n value: item.value,\n },\n }),\n ),\n },\n },\n pool_id: receipt.contents.json.pool_id,\n xTokenBalance: receipt.contents.json.xTokenBalance,\n unlocked_xtokens: receipt.contents.json.unlocked_xtokens ?? undefined,\n },\n },\n };\n });\n return res;\n}\n\nconst receiptsCache = new SimpleCache<Receipt[]>(3600000);\nconst receiptsPromiseCache = new SimpleCache<Promise<Receipt[]>>(3600000);\n\nexport async function getMultiReceipts(address: string) {\n try {\n const receiptMap = await fetchMultiReceipts(address);\n for (const pool of Object.keys(poolInfo)) {\n const cacheKey = `getReceipts-${poolInfo[pool].receiptName}-${address}`;\n let receipt: Receipt[] = [];\n if (receiptMap.has(poolInfo[pool].receiptName)) {\n receipt = convertReceiptGQLToReceipt(\n receiptMap.get(poolInfo[pool].receiptName) as ReceiptGQL[],\n );\n }\n receiptsCache.set(cacheKey, receipt);\n }\n } catch (error) {\n console.error(\"Error fetching receipts from graphQL:\", error);\n // get receipts individually\n const pools = Object.keys(poolInfo);\n const receiptPromises = pools.map((pool) => {\n return getReceipts(pool as PoolName, address, true);\n });\n const receipts = await Promise.all(receiptPromises);\n receipts.forEach((receipt, index) => {\n const cacheKey = `getReceipts-${poolInfo[pools[index]].receiptName}-${address}`;\n receiptsCache.set(cacheKey, receipt);\n });\n }\n}\n\nexport async function getReceipts(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<Receipt[]> {\n const suiClient = getSuiClient();\n const receiptsCacheKey = `getReceipts-${poolInfo[poolName].receiptName}-${address}`;\n if (ignoreCache) {\n receiptsCache.delete(receiptsCacheKey);\n receiptsPromiseCache.delete(receiptsCacheKey);\n }\n const cachedResponse = receiptsCache.get(receiptsCacheKey);\n if (cachedResponse) {\n return cachedResponse;\n }\n //\n const nfts: Receipt[] = [];\n if (poolInfo[poolName].receiptType == \"\") {\n return nfts;\n }\n let cachedPromise = receiptsPromiseCache.get(receiptsCacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<Receipt[]> => {\n // const first_package = getConf().ALPHA_FIRST_PACKAGE_ID;\n let currentCursor: string | null | undefined = null;\n while (true) {\n const paginatedObjects: PaginatedObjectsResponse =\n await suiClient.getOwnedObjects({\n owner: address,\n cursor: currentCursor,\n filter: {\n // StructType: `${first_package}::${module}::Receipt`,\n StructType: poolInfo[poolName].receiptType,\n },\n options: {\n showContent: true,\n },\n });\n // Traverse the current page data and push to coins array\n paginatedObjects.data.forEach((obj) => {\n const o = obj.data as Receipt;\n if (o) {\n if (poolInfo[poolName].receiptName === o.content.fields.name) {\n nfts.push(o);\n }\n }\n });\n // Check if there's a next page\n if (paginatedObjects.hasNextPage && paginatedObjects.nextCursor) {\n currentCursor = paginatedObjects.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n }\n receiptsCache.set(receiptsCacheKey, nfts);\n receiptsPromiseCache.delete(receiptsCacheKey);\n return nfts;\n })().catch((error) => {\n receiptsPromiseCache.delete(receiptsCacheKey); // Remove the promise from cache\n throw error;\n });\n // const data = await cachedPromise;\n // console.log(\"received cached data\", data);\n receiptsPromiseCache.set(receiptsCacheKey, cachedPromise);\n }\n return cachedPromise;\n}\n\nexport async function getPoolExchangeRate(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Decimal> {\n let pool;\n try {\n pool = await getPool(poolName, ignoreCache);\n const xTokenSupply = new Decimal(pool.content.fields.xTokenSupply);\n let tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n if (poolName == \"ALPHA\") {\n tokensInvested = new Decimal(pool.content.fields.alpha_bal);\n } else if (poolInfo[poolName].parentProtocolName == \"CETUS\") {\n const investor = (await getInvestor(\n poolName,\n ignoreCache,\n )) as CetusInvestor & CommonInvestorFields;\n if (!investor) {\n throw new Error(`couldnt fetch investor object for pool: ${poolName}`);\n }\n tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n }\n\n // Check for division by zero\n if (xTokenSupply.eq(0)) {\n console.error(\"Division by zero error: tokensInvested is zero.\");\n return new Decimal(0);\n }\n const poolExchangeRate = tokensInvested.div(xTokenSupply);\n return poolExchangeRate;\n } catch (err) {\n console.log(\n `getPoolExchangeRate failed for poolName: ${poolName}, with error ${err}`,\n );\n throw err;\n }\n}\n\nconst poolCache = new SimpleCache<PoolType | AlphaPoolType>();\nconst poolPromiseCache = new SimpleCache<Promise<PoolType | AlphaPoolType>>();\n\nexport async function getMultiPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].poolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as AlphaPoolType | PoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].poolId}`;\n poolCache.set(cacheKey, poolData);\n }\n } catch (error) {\n console.error(`Error getting multiPools - ${error}`);\n }\n}\n\nexport async function getPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<PoolType | AlphaPoolType> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${poolInfo[poolName.toUpperCase()].poolId}`;\n\n if (ignoreCache) {\n poolCache.delete(cacheKey);\n poolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = poolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let poolPromise = poolPromiseCache.get(cacheKey);\n if (poolPromise) {\n return poolPromise;\n }\n // If not, create a new promise and cache it\n poolPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName].poolId,\n options: {\n showContent: true,\n },\n });\n\n const poolData =\n poolName === \"ALPHA\" ? (o.data as AlphaPoolType) : (o.data as PoolType);\n\n // Cache the pool object\n poolCache.set(cacheKey, poolData);\n return poolData;\n } catch (err) {\n console.error(`Error in getPool; poolName => ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n poolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n poolPromiseCache.set(cacheKey, poolPromise);\n return poolPromise;\n}\n\nconst cetusPoolCache = new SimpleCache<CetusPoolType>();\nconst cetusPoolPromiseCache = new SimpleCache<Promise<CetusPoolType>>();\n\nexport async function getMultiParentPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].parentPoolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as CetusPoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].parentPoolId}`;\n cetusPoolCache.set(cacheKey, poolData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getParentPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<CetusPoolType> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${cetusPoolMap[poolName.toUpperCase()]}`;\n if (ignoreCache) {\n cetusPoolCache.delete(cacheKey);\n cetusPoolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = cetusPoolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let cetusPoolPromise = cetusPoolPromiseCache.get(cacheKey);\n if (cetusPoolPromise) {\n return cetusPoolPromise;\n }\n // If not, create a new promise and cache it\n cetusPoolPromise = (async () => {\n try {\n const id = poolInfo[poolName]\n ? poolInfo[poolName].parentPoolId\n : cetusPoolMap[poolName]\n ? cetusPoolMap[poolName]\n : bluefinPoolMap[poolName];\n const o = await suiClient.getObject({\n id: id,\n options: {\n showContent: true,\n },\n });\n const cetusPool = o.data as CetusPoolType;\n\n // Cache the pool object\n cetusPoolCache.set(cacheKey, cetusPool);\n return cetusPool;\n } catch (err) {\n console.error(`getCetusPool failed for poolName: ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n cetusPoolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n cetusPoolPromiseCache.set(cacheKey, cetusPoolPromise);\n return cetusPoolPromise;\n}\n\nconst investorCache = new SimpleCache<Investor>();\nconst investorPromiseCache = new SimpleCache<Promise<Investor>>();\n\nexport async function getMultiInvestor() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].investorId !== \"\";\n });\n const investorIds = pools.map((pool) => {\n return poolInfo[pool].investorId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: investorIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const investorData = o[i].data as Investor;\n const cacheKey = `investor_${poolInfo[pools[i]].investorId}`;\n investorCache.set(cacheKey, investorData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getInvestor(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Investor> {\n const suiClient = getSuiClient();\n const cacheKey = `investor_${poolInfo[poolName.toUpperCase()].investorId}`;\n if (ignoreCache) {\n investorCache.delete(cacheKey);\n investorPromiseCache.delete(cacheKey);\n }\n // Check if the investor is already in the cache\n const cachedInvestor = investorCache.get(cacheKey);\n if (cachedInvestor) {\n return cachedInvestor;\n }\n\n // Check if there is already a promise in the cache\n let cetusInvestorPromise = investorPromiseCache.get(cacheKey);\n if (cetusInvestorPromise) {\n return cetusInvestorPromise;\n }\n // If not, create a new promise and cache it\n cetusInvestorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName.toUpperCase()].investorId,\n options: {\n showContent: true,\n },\n });\n let cetusInvestor;\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n cetusInvestor = o.data as NaviInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BUCKET\") {\n cetusInvestor = o.data as BucketInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BLUEFIN\") {\n cetusInvestor = o.data as BluefinInvestor & CommonInvestorFields;\n } else {\n cetusInvestor = o.data as CetusInvestor & CommonInvestorFields;\n }\n\n // Cache the investor object\n investorCache.set(cacheKey, cetusInvestor);\n return cetusInvestor;\n } catch (err) {\n console.error(`getInvestor failed for pool: ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n investorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n investorPromiseCache.set(cacheKey, cetusInvestorPromise);\n return cetusInvestorPromise;\n}\n\nexport async function fetchVoloExchangeRate(): Promise<NaviVoloData> {\n const apiUrl = \"https://open-api.naviprotocol.io/api/volo/stats\";\n const NaviVoloDetails: NaviVoloData = await fetch(apiUrl)\n .then(async (response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const data = (await response.json()) as NaviVoloData; // Parse the JSON response\n return data;\n })\n .catch((error) => {\n console.log(\"failed to fetch Navi-volo details\", error);\n throw error;\n });\n return NaviVoloDetails;\n}\n\nexport async function getCoinAmountsFromLiquidity(\n poolName: PoolName,\n liquidity: string,\n ignoreCache: boolean,\n): Promise<[string, string]> {\n const clmmPool = await getParentPool(poolName, ignoreCache);\n const investor = (await getInvestor(poolName, ignoreCache)) as CetusInvestor &\n CommonInvestorFields;\n\n const upper_bound = 443636;\n let lower_tick = Number(investor!.content.fields.lower_tick);\n let upper_tick = Number(investor!.content.fields.upper_tick);\n\n if (lower_tick > upper_bound) {\n lower_tick = -~(lower_tick - 1);\n }\n if (upper_tick > upper_bound) {\n upper_tick = -~(upper_tick - 1);\n }\n if (clmmPool) {\n const liquidityInt = Math.floor(parseFloat(liquidity));\n const coin_amounts: CoinAmounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n new BN(`${liquidityInt}`),\n new BN(clmmPool.content.fields.current_sqrt_price),\n TickMath.tickIndexToSqrtPriceX64(lower_tick),\n TickMath.tickIndexToSqrtPriceX64(upper_tick),\n true,\n );\n return [coin_amounts.coinA.toString(), coin_amounts.coinB.toString()];\n } else {\n return [\"0\", \"0\"];\n }\n}\n\nexport async function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]) {\n const results: {\n [poolName in SingleAssetPoolNames]?:\n | (NaviInvestor & CommonInvestorFields)\n | undefined;\n } = {};\n const poolInvestorIds: string[] = [];\n\n for (const poolName of poolNames) {\n poolInvestorIds.push(poolInfo[poolName.toUpperCase()].investorId);\n }\n try {\n const suiClient = getSuiClient();\n const objects = await suiClient.multiGetObjects({\n ids: poolInvestorIds,\n options: { showContent: true },\n });\n for (let i = 0; i < objects.length; i++) {\n const investor = objects[i].data as NaviInvestor & CommonInvestorFields;\n results[poolNames[i]] = investor;\n }\n return results;\n } catch (err) {\n //improve\n console.error(\n \"multiGetNaviInvestor failed for poolNames: \",\n poolNames.join(\", \"),\n );\n throw err;\n }\n}\n\nconst distributorCache = new SimpleCache<Distributor>();\nconst distributorPromiseCache = new SimpleCache<\n Promise<Distributor | undefined>\n>();\n\nexport async function getDistributor(\n ignoreCache: boolean,\n): Promise<Distributor | undefined> {\n const suiClient = getSuiClient();\n const cacheKey = `distributor_${getConf().ALPHA_DISTRIBUTOR}`;\n if (ignoreCache) {\n distributorCache.delete(cacheKey);\n distributorPromiseCache.delete(cacheKey);\n }\n // Check if the distributor is already in the cache\n const cachedDistributor = distributorCache.get(cacheKey);\n if (cachedDistributor) {\n return cachedDistributor;\n }\n\n // Check if there is already a promise in the cache\n let distributorPromise = distributorPromiseCache.get(cacheKey);\n if (distributorPromise) {\n return distributorPromise;\n }\n\n // If not, create a new promise and cache it\n distributorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: getConf().ALPHA_DISTRIBUTOR,\n options: {\n showContent: true,\n },\n });\n const distributor = o.data as Distributor;\n\n // Cache the distributor object\n distributorCache.set(cacheKey, distributor);\n return distributor;\n } catch (e) {\n console.error(`getDistributor failed`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n distributorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n distributorPromiseCache.set(cacheKey, distributorPromise);\n return distributorPromise;\n}\n\n/*\nfor the missing pools, add a promise, each of those promises waits for there respective object from a map, that map is populated all at once, \nproblem with concurrency\n*/\n// ask how to deal with this kind of probem with high concurrency anf throughput\n"]}
1
+ {"version":3,"file":"getReceipts.js","sourceRoot":"","sources":["../../../../src/sui-sdk/functions/getReceipts.ts"],"names":[],"mappings":"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","sourcesContent":["import { PaginatedObjectsResponse } from \"@mysten/sui/client\";\nimport {\n AlphaPoolType,\n CetusInvestor,\n NaviInvestor,\n CommonInvestorFields,\n CetusPoolType,\n PoolName,\n PoolType,\n Receipt,\n NaviVoloData,\n Investor,\n BluefinInvestor,\n BucketInvestor,\n SingleAssetPoolNames,\n fetchMultiReceipts,\n ReceiptGQL,\n cetusPoolMap,\n bluefinPoolMap,\n Distributor,\n getConf,\n BluefinPoolType,\n coinsList,\n} from \"../../index.js\";\nimport { doubleAssetPoolCoinMap, poolInfo } from \"../../common/maps.js\";\nimport { Decimal } from \"decimal.js\";\nimport { getSuiClient } from \"../client.js\";\nimport { SimpleCache } from \"../../utils/simpleCache.js\";\nimport { TickMath } from \"@cetusprotocol/cetus-sui-clmm-sdk\";\n\nexport function convertReceiptGQLToReceipt(receipts: ReceiptGQL[]): Receipt[] {\n const res = receipts.map((receipt) => {\n return {\n objectId: receipt.address,\n version: receipt.version,\n digest: receipt.digest,\n content: {\n dataType: \"moveObject\", // Assuming a fixed value as it's not available in ReceiptA\n type: receipt.contents.type.repr,\n hasPublicTransfer: receipt.hasPublicTransfer,\n fields: {\n id: { id: receipt.contents.json.id },\n image_url: receipt.contents.json.image_url,\n last_acc_reward_per_xtoken: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents:\n receipt.contents.json.last_acc_reward_per_xtoken.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n value: item.value,\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n },\n }),\n ),\n },\n },\n locked_balance: receipt.contents.json.locked_balance\n ? {\n type: \"unknown\", // Assuming fixed value\n fields: {\n head: receipt.contents.json.locked_balance.head,\n id: { id: receipt.contents.json.locked_balance.id },\n size: receipt.contents.json.locked_balance.size,\n tail: receipt.contents.json.locked_balance.tail,\n },\n }\n : undefined,\n name: receipt.contents.json.name,\n owner: receipt.contents.json.owner,\n pending_rewards: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n contents: receipt.contents.json.pending_rewards.contents.map(\n (item) => ({\n type: \"unknown\", // Assuming fixed value\n fields: {\n key: {\n type: \"unknown\", // Assuming fixed value\n fields: {\n name: item.key.name,\n },\n },\n value: item.value,\n },\n }),\n ),\n },\n },\n pool_id: receipt.contents.json.pool_id,\n xTokenBalance: receipt.contents.json.xTokenBalance,\n unlocked_xtokens: receipt.contents.json.unlocked_xtokens ?? undefined,\n },\n },\n };\n });\n return res;\n}\n\nconst receiptsCache = new SimpleCache<Receipt[]>(3600000);\nconst receiptsPromiseCache = new SimpleCache<Promise<Receipt[]>>(3600000);\n\nexport async function getMultiReceipts(address: string) {\n try {\n const receiptMap = await fetchMultiReceipts(address);\n for (const pool of Object.keys(poolInfo)) {\n const cacheKey = `getReceipts-${poolInfo[pool].receiptName}-${address}`;\n let receipt: Receipt[] = [];\n if (receiptMap.has(poolInfo[pool].receiptName)) {\n receipt = convertReceiptGQLToReceipt(\n receiptMap.get(poolInfo[pool].receiptName) as ReceiptGQL[],\n );\n }\n receiptsCache.set(cacheKey, receipt);\n }\n } catch (error) {\n console.error(\"Error fetching receipts from graphQL:\", error);\n // get receipts individually\n const pools = Object.keys(poolInfo);\n const receiptPromises = pools.map((pool) => {\n return getReceipts(pool as PoolName, address, true);\n });\n const receipts = await Promise.all(receiptPromises);\n receipts.forEach((receipt, index) => {\n const cacheKey = `getReceipts-${poolInfo[pools[index]].receiptName}-${address}`;\n receiptsCache.set(cacheKey, receipt);\n });\n }\n}\n\nexport async function getReceipts(\n poolName: PoolName,\n address: string,\n ignoreCache: boolean,\n): Promise<Receipt[]> {\n const suiClient = getSuiClient();\n const receiptsCacheKey = `getReceipts-${poolInfo[poolName].receiptName}-${address}`;\n if (ignoreCache) {\n receiptsCache.delete(receiptsCacheKey);\n receiptsPromiseCache.delete(receiptsCacheKey);\n }\n const cachedResponse = receiptsCache.get(receiptsCacheKey);\n if (cachedResponse) {\n return cachedResponse;\n }\n //\n const nfts: Receipt[] = [];\n if (poolInfo[poolName].receiptType == \"\") {\n return nfts;\n }\n let cachedPromise = receiptsPromiseCache.get(receiptsCacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<Receipt[]> => {\n // const first_package = getConf().ALPHA_FIRST_PACKAGE_ID;\n let currentCursor: string | null | undefined = null;\n while (true) {\n const paginatedObjects: PaginatedObjectsResponse =\n await suiClient.getOwnedObjects({\n owner: address,\n cursor: currentCursor,\n filter: {\n // StructType: `${first_package}::${module}::Receipt`,\n StructType: poolInfo[poolName].receiptType,\n },\n options: {\n showContent: true,\n },\n });\n // Traverse the current page data and push to coins array\n paginatedObjects.data.forEach((obj) => {\n const o = obj.data as Receipt;\n if (o) {\n if (poolInfo[poolName].receiptName === o.content.fields.name) {\n nfts.push(o);\n }\n }\n });\n // Check if there's a next page\n if (paginatedObjects.hasNextPage && paginatedObjects.nextCursor) {\n currentCursor = paginatedObjects.nextCursor;\n } else {\n // No more pages available\n // console.log(\"No more receipts available.\");\n break;\n }\n }\n receiptsCache.set(receiptsCacheKey, nfts);\n receiptsPromiseCache.delete(receiptsCacheKey);\n return nfts;\n })().catch((error) => {\n receiptsPromiseCache.delete(receiptsCacheKey); // Remove the promise from cache\n throw error;\n });\n // const data = await cachedPromise;\n // console.log(\"received cached data\", data);\n receiptsPromiseCache.set(receiptsCacheKey, cachedPromise);\n }\n return cachedPromise;\n}\n\nexport async function getPoolExchangeRate(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Decimal> {\n let pool;\n try {\n pool = await getPool(poolName, ignoreCache);\n const xTokenSupply = new Decimal(pool.content.fields.xTokenSupply);\n let tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n if (poolName == \"ALPHA\") {\n tokensInvested = new Decimal(pool.content.fields.alpha_bal);\n } else if (poolInfo[poolName].parentProtocolName == \"CETUS\") {\n const investor = (await getInvestor(\n poolName,\n ignoreCache,\n )) as CetusInvestor & CommonInvestorFields;\n if (!investor) {\n throw new Error(`couldnt fetch investor object for pool: ${poolName}`);\n }\n tokensInvested = new Decimal(pool.content.fields.tokensInvested);\n }\n\n // Check for division by zero\n if (xTokenSupply.eq(0)) {\n console.error(\"Division by zero error: tokensInvested is zero.\");\n return new Decimal(0);\n }\n const poolExchangeRate = tokensInvested.div(xTokenSupply);\n return poolExchangeRate;\n } catch (err) {\n console.log(\n `getPoolExchangeRate failed for poolName: ${poolName}, with error ${err}`,\n );\n throw err;\n }\n}\n\nconst poolCache = new SimpleCache<PoolType | AlphaPoolType>();\nconst poolPromiseCache = new SimpleCache<Promise<PoolType | AlphaPoolType>>();\n\nexport async function getMultiPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].poolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as AlphaPoolType | PoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].poolId}`;\n poolCache.set(cacheKey, poolData);\n }\n } catch (error) {\n console.error(`Error getting multiPools - ${error}`);\n }\n}\n\nexport async function getPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<PoolType | AlphaPoolType> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${poolInfo[poolName.toUpperCase()].poolId}`;\n\n if (ignoreCache) {\n poolCache.delete(cacheKey);\n poolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = poolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let poolPromise = poolPromiseCache.get(cacheKey);\n if (poolPromise) {\n return poolPromise;\n }\n // If not, create a new promise and cache it\n poolPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName].poolId,\n options: {\n showContent: true,\n },\n });\n\n const poolData =\n poolName === \"ALPHA\" ? (o.data as AlphaPoolType) : (o.data as PoolType);\n\n // Cache the pool object\n poolCache.set(cacheKey, poolData);\n return poolData;\n } catch (err) {\n console.error(`Error in getPool; poolName => ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n poolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n poolPromiseCache.set(cacheKey, poolPromise);\n return poolPromise;\n}\n\nconst cetusPoolCache = new SimpleCache<CetusPoolType | BluefinPoolType>();\nconst cetusPoolPromiseCache = new SimpleCache<\n Promise<CetusPoolType | BluefinPoolType>\n>();\n\nexport async function getMultiParentPool() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].poolId !== \"\";\n });\n const poolIds = pools.map((pool) => {\n return poolInfo[pool].parentPoolId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: poolIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const poolData = o[i].data as CetusPoolType;\n const cacheKey = `pool_${poolInfo[pools[i]].parentPoolId}`;\n cetusPoolCache.set(cacheKey, poolData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getParentPool(\n poolName: string,\n ignoreCache: boolean,\n): Promise<CetusPoolType | BluefinPoolType> {\n const suiClient = getSuiClient();\n const cacheKey = `pool_${poolName}`;\n if (ignoreCache) {\n cetusPoolCache.delete(cacheKey);\n cetusPoolPromiseCache.delete(cacheKey);\n }\n\n // Check if the pool is already in the cache\n const cachedPool = cetusPoolCache.get(cacheKey);\n if (cachedPool) {\n return cachedPool;\n }\n\n // Check if there is already a promise in the cache\n let cetusPoolPromise = cetusPoolPromiseCache.get(cacheKey);\n if (cetusPoolPromise) {\n return cetusPoolPromise;\n }\n // If not, create a new promise and cache it\n cetusPoolPromise = (async () => {\n try {\n const id = poolInfo[poolName]\n ? poolInfo[poolName].parentPoolId\n : cetusPoolMap[poolName]\n ? cetusPoolMap[poolName]\n : bluefinPoolMap[poolName];\n const o = await suiClient.getObject({\n id: id,\n options: {\n showContent: true,\n },\n });\n const cetusPool = o.data as CetusPoolType | BluefinPoolType;\n\n // Cache the pool object\n cetusPoolCache.set(cacheKey, cetusPool);\n return cetusPool;\n } catch (err) {\n console.error(`getCetusPool failed for poolName: ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n cetusPoolPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n cetusPoolPromiseCache.set(cacheKey, cetusPoolPromise);\n return cetusPoolPromise;\n}\n\nconst investorCache = new SimpleCache<Investor>();\nconst investorPromiseCache = new SimpleCache<Promise<Investor>>();\n\nexport async function getMultiInvestor() {\n let pools = Object.keys(poolInfo);\n pools = pools.filter((pool) => {\n return poolInfo[pool].investorId !== \"\";\n });\n const investorIds = pools.map((pool) => {\n return poolInfo[pool].investorId;\n });\n try {\n const o = await getSuiClient().multiGetObjects({\n ids: investorIds,\n options: {\n showContent: true,\n },\n });\n for (let i = 0; i < pools.length; i = i + 1) {\n const investorData = o[i].data as Investor;\n const cacheKey = `investor_${poolInfo[pools[i]].investorId}`;\n investorCache.set(cacheKey, investorData);\n }\n } catch (e) {\n console.error(`Error getting multiPools`);\n }\n}\n\nexport async function getInvestor(\n poolName: PoolName,\n ignoreCache: boolean,\n): Promise<Investor> {\n const suiClient = getSuiClient();\n const cacheKey = `investor_${poolInfo[poolName.toUpperCase()].investorId}`;\n if (ignoreCache) {\n investorCache.delete(cacheKey);\n investorPromiseCache.delete(cacheKey);\n }\n // Check if the investor is already in the cache\n const cachedInvestor = investorCache.get(cacheKey);\n if (cachedInvestor) {\n return cachedInvestor;\n }\n\n // Check if there is already a promise in the cache\n let cetusInvestorPromise = investorPromiseCache.get(cacheKey);\n if (cetusInvestorPromise) {\n return cetusInvestorPromise;\n }\n // If not, create a new promise and cache it\n cetusInvestorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: poolInfo[poolName.toUpperCase()].investorId,\n options: {\n showContent: true,\n },\n });\n let cetusInvestor;\n if (poolInfo[poolName].parentProtocolName == \"NAVI\") {\n cetusInvestor = o.data as NaviInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BUCKET\") {\n cetusInvestor = o.data as BucketInvestor & CommonInvestorFields;\n } else if (poolInfo[poolName].parentProtocolName == \"BLUEFIN\") {\n cetusInvestor = o.data as BluefinInvestor & CommonInvestorFields;\n } else {\n cetusInvestor = o.data as CetusInvestor & CommonInvestorFields;\n }\n\n // Cache the investor object\n investorCache.set(cacheKey, cetusInvestor);\n return cetusInvestor;\n } catch (err) {\n console.error(`getInvestor failed for pool: ${poolName}`);\n throw err;\n } finally {\n // Remove the promise from the cache after it resolves\n investorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n investorPromiseCache.set(cacheKey, cetusInvestorPromise);\n return cetusInvestorPromise;\n}\n\nexport async function fetchVoloExchangeRate(): Promise<NaviVoloData> {\n const apiUrl = \"https://open-api.naviprotocol.io/api/volo/stats\";\n const NaviVoloDetails: NaviVoloData = await fetch(apiUrl)\n .then(async (response) => {\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n const data = (await response.json()) as NaviVoloData; // Parse the JSON response\n return data;\n })\n .catch((error) => {\n console.log(\"failed to fetch Navi-volo details\", error);\n throw error;\n });\n return NaviVoloDetails;\n}\n\nexport async function multiGetNaviInvestor(poolNames: SingleAssetPoolNames[]) {\n const results: {\n [poolName in SingleAssetPoolNames]?:\n | (NaviInvestor & CommonInvestorFields)\n | undefined;\n } = {};\n const poolInvestorIds: string[] = [];\n\n for (const poolName of poolNames) {\n poolInvestorIds.push(poolInfo[poolName.toUpperCase()].investorId);\n }\n try {\n const suiClient = getSuiClient();\n const objects = await suiClient.multiGetObjects({\n ids: poolInvestorIds,\n options: { showContent: true },\n });\n for (let i = 0; i < objects.length; i++) {\n const investor = objects[i].data as NaviInvestor & CommonInvestorFields;\n results[poolNames[i]] = investor;\n }\n return results;\n } catch (err) {\n //improve\n console.error(\n \"multiGetNaviInvestor failed for poolNames: \",\n poolNames.join(\", \"),\n );\n throw err;\n }\n}\n\nconst distributorCache = new SimpleCache<Distributor>();\nconst distributorPromiseCache = new SimpleCache<\n Promise<Distributor | undefined>\n>();\n\nexport async function getDistributor(\n ignoreCache: boolean,\n): Promise<Distributor | undefined> {\n const suiClient = getSuiClient();\n const cacheKey = `distributor_${getConf().ALPHA_DISTRIBUTOR}`;\n if (ignoreCache) {\n distributorCache.delete(cacheKey);\n distributorPromiseCache.delete(cacheKey);\n }\n // Check if the distributor is already in the cache\n const cachedDistributor = distributorCache.get(cacheKey);\n if (cachedDistributor) {\n return cachedDistributor;\n }\n\n // Check if there is already a promise in the cache\n let distributorPromise = distributorPromiseCache.get(cacheKey);\n if (distributorPromise) {\n return distributorPromise;\n }\n\n // If not, create a new promise and cache it\n distributorPromise = (async () => {\n try {\n const o = await suiClient.getObject({\n id: getConf().ALPHA_DISTRIBUTOR,\n options: {\n showContent: true,\n },\n });\n const distributor = o.data as Distributor;\n\n // Cache the distributor object\n distributorCache.set(cacheKey, distributor);\n return distributor;\n } catch (e) {\n console.error(`getDistributor failed`);\n return undefined;\n } finally {\n // Remove the promise from the cache after it resolves\n distributorPromiseCache.delete(cacheKey);\n }\n })();\n\n // Cache the promise\n distributorPromiseCache.set(cacheKey, distributorPromise);\n return distributorPromise;\n}\n\nexport async function getPositionRange(\n ignoreCache: boolean,\n): Promise<Map<PoolName, { lowerPrice: string; upperPrice: string }>> {\n const res = new Map<PoolName, { lowerPrice: string; upperPrice: string }>();\n for (const poolNameString of Object.keys(poolInfo)) {\n const poolName = poolNameString as PoolName;\n if (\n poolName == \"ALPHA\" ||\n ![\"CETUS\", \"BLUEFIN\"].includes(\n poolInfo[poolNameString].parentProtocolName,\n )\n ) {\n continue;\n }\n let investor;\n if (poolInfo[poolNameString].parentProtocolName == \"CETUS\") {\n investor = (await getInvestor(\n poolName as PoolName,\n ignoreCache,\n )) as CetusInvestor & CommonInvestorFields;\n } else {\n investor = (await getInvestor(\n poolName as PoolName,\n ignoreCache,\n )) as BluefinInvestor & CommonInvestorFields;\n }\n const coinAName = doubleAssetPoolCoinMap[poolName].coin1;\n const coinA = coinsList[coinAName];\n const coinBName = doubleAssetPoolCoinMap[poolName].coin2;\n const coinB = coinsList[coinBName];\n if (investor) {\n const upperBound = 443636;\n let lowerTick = Number(investor.content.fields.lower_tick);\n let upperTick = Number(investor.content.fields.upper_tick);\n if (lowerTick > upperBound) {\n lowerTick = -~(lowerTick - 1);\n }\n if (upperTick > upperBound) {\n upperTick = -~(upperTick - 1);\n }\n const lowerPrice = TickMath.tickIndexToPrice(\n lowerTick,\n coinA.expo,\n coinB.expo,\n );\n const upperPrice = TickMath.tickIndexToPrice(\n upperTick,\n coinA.expo,\n coinB.expo,\n );\n res.set(poolName, {\n lowerPrice: lowerPrice.toString(),\n upperPrice: upperPrice.toString(),\n });\n }\n }\n return res;\n}\n\n/*\nfor the missing pools, add a promise, each of those promises waits for there respective object from a map, that map is populated all at once, \nproblem with concurrency\n*/\n// ask how to deal with this kind of probem with high concurrency anf throughput\n"]}
@@ -0,0 +1,13 @@
1
+ import { QuoteResponse } from "@7kprotocol/sdk-ts";
2
+ import { Transaction, TransactionObjectArgument } from "@mysten/sui/transactions";
3
+ import { SwapOptions } from "../common/types.js";
4
+ export type sevenKSwapOptions = SwapOptions;
5
+ export declare class SevenKGateway {
6
+ constructor();
7
+ getQuote(options: sevenKSwapOptions): Promise<QuoteResponse | undefined>;
8
+ getTransactionBlock(options: sevenKSwapOptions, quoteResponse: QuoteResponse, transaction?: Transaction | undefined): Promise<{
9
+ tx: Transaction;
10
+ coinOut: TransactionObjectArgument | undefined;
11
+ }>;
12
+ }
13
+ //# sourceMappingURL=7k.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7k.d.ts","sourceRoot":"","sources":["../../../src/transactions/7k.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,EACX,yBAAyB,EAC1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAC;AAE5C,qBAAa,aAAa;;IAMlB,QAAQ,CAAC,OAAO,EAAE,iBAAiB;IAanC,mBAAmB,CACvB,OAAO,EAAE,iBAAiB,EAC1B,aAAa,EAAE,aAAa,EAC5B,WAAW,GAAE,WAAW,GAAG,SAAqB,GAC/C,OAAO,CAAC;QACT,EAAE,EAAE,WAAW,CAAC;QAChB,OAAO,EAAE,yBAAyB,GAAG,SAAS,CAAC;KAChD,CAAC;CAoBH"}
@@ -0,0 +1,42 @@
1
+ import { buildTx, getQuote, setSuiClient, } from "@7kprotocol/sdk-ts";
2
+ import { Transaction, } from "@mysten/sui/transactions";
3
+ import { getSuiClient } from "../sui-sdk/client.js";
4
+ export class SevenKGateway {
5
+ constructor() {
6
+ const suiClient = getSuiClient();
7
+ setSuiClient(suiClient);
8
+ }
9
+ async getQuote(options) {
10
+ const { pair, inAmount } = options;
11
+ if (inAmount) {
12
+ const quoteResponse = await getQuote({
13
+ tokenIn: pair.coinA.type,
14
+ tokenOut: pair.coinB.type,
15
+ amountIn: inAmount.toString(),
16
+ });
17
+ return quoteResponse;
18
+ }
19
+ }
20
+ // getTransactionBlock returns a transaction and also returns a coinOut argument which is some coins left out that we have to transfer to the user seperately.
21
+ async getTransactionBlock(options, quoteResponse, transaction = undefined) {
22
+ let txb = new Transaction();
23
+ const { senderAddress, slippage } = options;
24
+ if (transaction)
25
+ txb = transaction;
26
+ const commissionPartnerAddress = "0x401c29204828bed9a2f9f65f9da9b9e54b1e43178c88811e2584e05cf2c3eb6f";
27
+ const { tx, coinOut } = await buildTx({
28
+ quoteResponse,
29
+ accountAddress: senderAddress,
30
+ slippage: slippage, // 1%
31
+ commission: {
32
+ partner: commissionPartnerAddress,
33
+ commissionBps: 0,
34
+ },
35
+ extendTx: {
36
+ tx: txb,
37
+ },
38
+ });
39
+ return { tx, coinOut };
40
+ }
41
+ }
42
+ //# sourceMappingURL=7k.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7k.js","sourceRoot":"","sources":["../../../src/transactions/7k.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,QAAQ,EAER,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,WAAW,GAEZ,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,MAAM,OAAO,aAAa;IACxB;QACE,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;QACjC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAA0B;QACvC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QACnC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC;gBACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACxB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;gBACzB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE;aAC9B,CAAC,CAAC;YACH,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;IAED,8JAA8J;IAC9J,KAAK,CAAC,mBAAmB,CACvB,OAA0B,EAC1B,aAA4B,EAC5B,cAAuC,SAAS;QAKhD,IAAI,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;QAC5B,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC5C,IAAI,WAAW;YAAE,GAAG,GAAG,WAAW,CAAC;QACnC,MAAM,wBAAwB,GAC5B,oEAAoE,CAAC;QACvE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,OAAO,CAAC;YACpC,aAAa;YACb,cAAc,EAAE,aAAa;YAC7B,QAAQ,EAAE,QAAQ,EAAE,KAAK;YACzB,UAAU,EAAE;gBACV,OAAO,EAAE,wBAAwB;gBACjC,aAAa,EAAE,CAAC;aACjB;YACD,QAAQ,EAAE;gBACR,EAAE,EAAE,GAAG;aACR;SACF,CAAC,CAAC;QACH,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACzB,CAAC;CACF","sourcesContent":["import {\n buildTx,\n getQuote,\n QuoteResponse,\n setSuiClient,\n} from \"@7kprotocol/sdk-ts\";\nimport {\n Transaction,\n TransactionObjectArgument,\n} from \"@mysten/sui/transactions\";\nimport { SwapOptions } from \"../common/types.js\";\nimport { getSuiClient } from \"../sui-sdk/client.js\";\n\nexport type sevenKSwapOptions = SwapOptions;\n\nexport class SevenKGateway {\n constructor() {\n const suiClient = getSuiClient();\n setSuiClient(suiClient);\n }\n\n async getQuote(options: sevenKSwapOptions) {\n const { pair, inAmount } = options;\n if (inAmount) {\n const quoteResponse = await getQuote({\n tokenIn: pair.coinA.type,\n tokenOut: pair.coinB.type,\n amountIn: inAmount.toString(),\n });\n return quoteResponse;\n }\n }\n\n // getTransactionBlock returns a transaction and also returns a coinOut argument which is some coins left out that we have to transfer to the user seperately.\n async getTransactionBlock(\n options: sevenKSwapOptions,\n quoteResponse: QuoteResponse,\n transaction: Transaction | undefined = undefined,\n ): Promise<{\n tx: Transaction;\n coinOut: TransactionObjectArgument | undefined;\n }> {\n let txb = new Transaction();\n const { senderAddress, slippage } = options;\n if (transaction) txb = transaction;\n const commissionPartnerAddress =\n \"0x401c29204828bed9a2f9f65f9da9b9e54b1e43178c88811e2584e05cf2c3eb6f\";\n const { tx, coinOut } = await buildTx({\n quoteResponse,\n accountAddress: senderAddress,\n slippage: slippage, // 1%\n commission: {\n partner: commissionPartnerAddress,\n commissionBps: 0,\n },\n extendTx: {\n tx: txb,\n },\n });\n return { tx, coinOut };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"alpha.d.ts","sourceRoot":"","sources":["../../../src/transactions/alpha.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,eAAO,MAAM,eAAe,WAClB,MAAM,WACL,MAAM,KACd,OAAO,CAAC,WAAW,CAiFrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAClB,MAAM,sBACK,OAAO,WAClB,MAAM,KACd,OAAO,CAAC,WAAW,CAqBrB,CAAC"}
1
+ {"version":3,"file":"alpha.d.ts","sourceRoot":"","sources":["../../../src/transactions/alpha.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,eAAO,MAAM,eAAe,WAClB,MAAM,WACL,MAAM,KACd,OAAO,CAAC,WAAW,CAiFrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAClB,MAAM,sBACK,OAAO,WAClB,MAAM,KACd,OAAO,CAAC,WAAW,CAsBrB,CAAC"}