@alphafi/alphafi-sdk 0.0.32 → 0.0.34

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 (218) hide show
  1. package/dist/cjs/collectReward.d.ts +2 -0
  2. package/dist/cjs/collectReward.d.ts.map +1 -0
  3. package/dist/cjs/collectReward.js +7 -0
  4. package/dist/cjs/collectReward.js.map +1 -0
  5. package/dist/cjs/common/alphaTypes.d.ts +110 -0
  6. package/dist/cjs/common/cetus_mainnet_config.d.ts +3 -0
  7. package/dist/cjs/common/coins.d.ts +5 -0
  8. package/dist/cjs/common/constants.d.ts +998 -0
  9. package/dist/cjs/common/constants.d.ts.map +1 -1
  10. package/dist/cjs/common/constants.js +74 -1
  11. package/dist/cjs/common/constants.js.map +1 -1
  12. package/dist/cjs/common/maps.d.ts +76 -0
  13. package/dist/cjs/common/maps.d.ts.map +1 -1
  14. package/dist/cjs/common/maps.js +162 -23
  15. package/dist/cjs/common/maps.js.map +1 -1
  16. package/dist/cjs/common/pyth.d.ts +7 -0
  17. package/dist/cjs/common/types.d.ts +463 -0
  18. package/dist/cjs/common/types.d.ts.map +1 -1
  19. package/dist/cjs/common/types.js.map +1 -1
  20. package/dist/cjs/example.d.ts +3 -0
  21. package/dist/cjs/getAirdropShare.d.ts +2 -0
  22. package/dist/cjs/getAllVaults.d.ts +4 -0
  23. package/dist/cjs/getAlphaUnlocks.d.ts +14 -0
  24. package/dist/cjs/getAprs.d.ts +6 -0
  25. package/dist/cjs/getHoldersFromTransactions.d.ts +9 -0
  26. package/dist/cjs/getLastAutoCompoundTime.d.ts +3 -0
  27. package/dist/cjs/getLastAutoCompoundTime.js +1 -1
  28. package/dist/cjs/getLastAutoCompoundTime.js.map +1 -1
  29. package/dist/cjs/getRebalanceHistory.d.ts +4 -0
  30. package/dist/cjs/getVaultBalances.d.ts +9 -0
  31. package/dist/cjs/getVaults.d.ts +5 -0
  32. package/dist/cjs/graphql/client.d.ts +4 -0
  33. package/dist/cjs/graphql/executeMutations.d.ts +4 -0
  34. package/dist/cjs/graphql/fetchAutoCompoundingEventsGql.d.ts +27 -0
  35. package/dist/cjs/graphql/fetchData.d.ts +11 -0
  36. package/dist/cjs/graphql/fetchNftHolders.d.ts +3 -0
  37. package/dist/cjs/graphql/fetchReceipts.d.ts +3 -0
  38. package/dist/cjs/graphql/getMultiReceipts.d.ts +3 -0
  39. package/dist/cjs/graphql/getMultiReceipts.d.ts.map +1 -1
  40. package/dist/cjs/graphql/getMultiReceipts.js +9 -2
  41. package/dist/cjs/graphql/getMultiReceipts.js.map +1 -1
  42. package/dist/cjs/graphql/mutations.d.ts +4 -0
  43. package/dist/cjs/graphql/parseData.d.ts +2 -0
  44. package/dist/cjs/graphql/parseLockedTableId.d.ts +7 -0
  45. package/dist/cjs/graphql/queries/autoCompoundEvents.d.ts +2 -0
  46. package/dist/cjs/graphql/queries/cetusPools.d.ts +2 -0
  47. package/dist/cjs/graphql/queries/getMultiReceipts.d.ts +2 -0
  48. package/dist/cjs/graphql/queries/investors.d.ts +2 -0
  49. package/dist/cjs/graphql/queries/lockedTableData.d.ts +2 -0
  50. package/dist/cjs/graphql/queries/lockedTableDataFragment.d.ts +2 -0
  51. package/dist/cjs/graphql/queries/nftHolders.d.ts +2 -0
  52. package/dist/cjs/graphql/queries/pools.d.ts +2 -0
  53. package/dist/cjs/graphql/queries/receiptData.d.ts +2 -0
  54. package/dist/cjs/graphql/queries/userVaultBalances.d.ts +2 -0
  55. package/dist/cjs/graphql/queries/userVaults.d.ts +2 -0
  56. package/dist/cjs/graphql/queries.d.ts +15 -0
  57. package/dist/cjs/graphql/types.d.ts +112 -0
  58. package/dist/cjs/index.d.ts +29 -0
  59. package/dist/cjs/index.d.ts.map +1 -1
  60. package/dist/cjs/index.js +14 -3
  61. package/dist/cjs/index.js.map +1 -1
  62. package/dist/cjs/sui-sdk/client.d.ts +31 -0
  63. package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.d.ts +8 -0
  64. package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.d.ts.map +1 -0
  65. package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.js +126 -0
  66. package/dist/cjs/sui-sdk/events/fetchAfterTransactionEvents.js.map +1 -0
  67. package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.d.ts +6 -0
  68. package/dist/cjs/sui-sdk/events/fetchEvents.d.ts +3 -0
  69. package/dist/cjs/sui-sdk/events/fetchEvents.d.ts.map +1 -1
  70. package/dist/cjs/sui-sdk/events/fetchEvents.js +64 -2
  71. package/dist/cjs/sui-sdk/events/fetchEvents.js.map +1 -1
  72. package/dist/cjs/sui-sdk/events/fetchLiquidityChangeEvents.d.ts +3 -0
  73. package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.d.ts +5 -0
  74. package/dist/cjs/sui-sdk/events/fetchWithdrawV2Events.d.ts +3 -0
  75. package/dist/cjs/sui-sdk/events/fetchWithdrawV2Events.js +1 -1
  76. package/dist/cjs/sui-sdk/events/fetchWithdrawV2Events.js.map +1 -1
  77. package/dist/cjs/sui-sdk/events/parseData.d.ts +4 -0
  78. package/dist/cjs/sui-sdk/events/types.d.ts +183 -0
  79. package/dist/cjs/sui-sdk/events/types.d.ts.map +1 -1
  80. package/dist/cjs/sui-sdk/events/types.js.map +1 -1
  81. package/dist/cjs/sui-sdk/functions/fetchTableData.d.ts +50 -0
  82. package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts +3 -0
  83. package/dist/cjs/sui-sdk/functions/fetchUserVaults.d.ts +3 -0
  84. package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts +33 -0
  85. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts +29 -0
  86. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -1
  87. package/dist/cjs/sui-sdk/functions/getReceipts.js +53 -0
  88. package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -1
  89. package/dist/cjs/sui-sdk/transactions/constants.d.ts +4 -0
  90. package/dist/cjs/sui-sdk/transactions/fetchTransactions.d.ts +4 -0
  91. package/dist/cjs/sui-sdk/transactions/types.d.ts +8 -0
  92. package/dist/cjs/types.d.ts +213 -0
  93. package/dist/cjs/utils/clmm/prices.d.ts +20 -0
  94. package/dist/cjs/utils/clmm/tokenAmountFromLiquidity.d.ts +11 -0
  95. package/dist/cjs/utils/clmm/types.d.ts +25 -0
  96. package/dist/cjs/utils/constants.d.ts +3 -0
  97. package/dist/cjs/utils/getHoldersFromTransactionsUtils.d.ts +6 -0
  98. package/dist/cjs/utils/getReceipts.d.ts +4 -0
  99. package/dist/cjs/utils/hop.d.ts +16 -0
  100. package/dist/cjs/utils/prices.d.ts +6 -0
  101. package/dist/cjs/utils/simpleCache.d.ts +10 -0
  102. package/dist/cjs/utils/types.d.ts +5 -0
  103. package/dist/cjs/utils/userHoldings.d.ts +6 -0
  104. package/dist/cjs/utils/userHoldings.d.ts.map +1 -1
  105. package/dist/cjs/utils/userHoldings.js +26 -7
  106. package/dist/cjs/utils/userHoldings.js.map +1 -1
  107. package/dist/cjs/vaultFunctions.d.ts +5 -0
  108. package/dist/esm/collectReward.d.ts +2 -0
  109. package/dist/esm/collectReward.d.ts.map +1 -0
  110. package/dist/esm/collectReward.js +4 -0
  111. package/dist/esm/collectReward.js.map +1 -0
  112. package/dist/esm/common/alphaTypes.d.ts +110 -0
  113. package/dist/esm/common/cetus_mainnet_config.d.ts +3 -0
  114. package/dist/esm/common/coins.d.ts +5 -0
  115. package/dist/esm/common/constants.d.ts +998 -0
  116. package/dist/esm/common/constants.d.ts.map +1 -1
  117. package/dist/esm/common/constants.js +72 -0
  118. package/dist/esm/common/constants.js.map +1 -1
  119. package/dist/esm/common/maps.d.ts +76 -0
  120. package/dist/esm/common/maps.d.ts.map +1 -1
  121. package/dist/esm/common/maps.js +161 -23
  122. package/dist/esm/common/maps.js.map +1 -1
  123. package/dist/esm/common/pyth.d.ts +7 -0
  124. package/dist/esm/common/types.d.ts +463 -0
  125. package/dist/esm/common/types.d.ts.map +1 -1
  126. package/dist/esm/common/types.js.map +1 -1
  127. package/dist/esm/example.d.ts +3 -0
  128. package/dist/esm/getAirdropShare.d.ts +2 -0
  129. package/dist/esm/getAllVaults.d.ts +4 -0
  130. package/dist/esm/getAlphaUnlocks.d.ts +14 -0
  131. package/dist/esm/getAprs.d.ts +6 -0
  132. package/dist/esm/getHoldersFromTransactions.d.ts +9 -0
  133. package/dist/esm/getLastAutoCompoundTime.d.ts +3 -0
  134. package/dist/esm/getLastAutoCompoundTime.js +1 -1
  135. package/dist/esm/getLastAutoCompoundTime.js.map +1 -1
  136. package/dist/esm/getRebalanceHistory.d.ts +4 -0
  137. package/dist/esm/getVaultBalances.d.ts +9 -0
  138. package/dist/esm/getVaults.d.ts +5 -0
  139. package/dist/esm/graphql/client.d.ts +4 -0
  140. package/dist/esm/graphql/executeMutations.d.ts +4 -0
  141. package/dist/esm/graphql/fetchAutoCompoundingEventsGql.d.ts +27 -0
  142. package/dist/esm/graphql/fetchData.d.ts +11 -0
  143. package/dist/esm/graphql/fetchNftHolders.d.ts +3 -0
  144. package/dist/esm/graphql/fetchReceipts.d.ts +3 -0
  145. package/dist/esm/graphql/getMultiReceipts.d.ts +3 -0
  146. package/dist/esm/graphql/getMultiReceipts.d.ts.map +1 -1
  147. package/dist/esm/graphql/getMultiReceipts.js +9 -2
  148. package/dist/esm/graphql/getMultiReceipts.js.map +1 -1
  149. package/dist/esm/graphql/mutations.d.ts +4 -0
  150. package/dist/esm/graphql/parseData.d.ts +2 -0
  151. package/dist/esm/graphql/parseLockedTableId.d.ts +7 -0
  152. package/dist/esm/graphql/queries/autoCompoundEvents.d.ts +2 -0
  153. package/dist/esm/graphql/queries/cetusPools.d.ts +2 -0
  154. package/dist/esm/graphql/queries/getMultiReceipts.d.ts +2 -0
  155. package/dist/esm/graphql/queries/investors.d.ts +2 -0
  156. package/dist/esm/graphql/queries/lockedTableData.d.ts +2 -0
  157. package/dist/esm/graphql/queries/lockedTableDataFragment.d.ts +2 -0
  158. package/dist/esm/graphql/queries/nftHolders.d.ts +2 -0
  159. package/dist/esm/graphql/queries/pools.d.ts +2 -0
  160. package/dist/esm/graphql/queries/receiptData.d.ts +2 -0
  161. package/dist/esm/graphql/queries/userVaultBalances.d.ts +2 -0
  162. package/dist/esm/graphql/queries/userVaults.d.ts +2 -0
  163. package/dist/esm/graphql/queries.d.ts +15 -0
  164. package/dist/esm/graphql/types.d.ts +112 -0
  165. package/dist/esm/index.d.ts +29 -0
  166. package/dist/esm/index.d.ts.map +1 -1
  167. package/dist/esm/index.js +5 -3
  168. package/dist/esm/index.js.map +1 -1
  169. package/dist/esm/sui-sdk/client.d.ts +31 -0
  170. package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.d.ts +8 -0
  171. package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.d.ts.map +1 -0
  172. package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.js +123 -0
  173. package/dist/esm/sui-sdk/events/fetchAfterTransactionEvents.js.map +1 -0
  174. package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.d.ts +6 -0
  175. package/dist/esm/sui-sdk/events/fetchEvents.d.ts +3 -0
  176. package/dist/esm/sui-sdk/events/fetchEvents.d.ts.map +1 -1
  177. package/dist/esm/sui-sdk/events/fetchEvents.js +64 -2
  178. package/dist/esm/sui-sdk/events/fetchEvents.js.map +1 -1
  179. package/dist/esm/sui-sdk/events/fetchLiquidityChangeEvents.d.ts +3 -0
  180. package/dist/esm/sui-sdk/events/fetchRebalanceEvents.d.ts +5 -0
  181. package/dist/esm/sui-sdk/events/fetchWithdrawV2Events.d.ts +3 -0
  182. package/dist/esm/sui-sdk/events/fetchWithdrawV2Events.js +1 -1
  183. package/dist/esm/sui-sdk/events/fetchWithdrawV2Events.js.map +1 -1
  184. package/dist/esm/sui-sdk/events/parseData.d.ts +4 -0
  185. package/dist/esm/sui-sdk/events/types.d.ts +183 -0
  186. package/dist/esm/sui-sdk/events/types.d.ts.map +1 -1
  187. package/dist/esm/sui-sdk/events/types.js.map +1 -1
  188. package/dist/esm/sui-sdk/functions/fetchTableData.d.ts +50 -0
  189. package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts +3 -0
  190. package/dist/esm/sui-sdk/functions/fetchUserVaults.d.ts +3 -0
  191. package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts +33 -0
  192. package/dist/esm/sui-sdk/functions/getReceipts.d.ts +29 -0
  193. package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -1
  194. package/dist/esm/sui-sdk/functions/getReceipts.js +52 -0
  195. package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -1
  196. package/dist/esm/sui-sdk/transactions/constants.d.ts +4 -0
  197. package/dist/esm/sui-sdk/transactions/fetchTransactions.d.ts +4 -0
  198. package/dist/esm/sui-sdk/transactions/types.d.ts +8 -0
  199. package/dist/esm/types.d.ts +213 -0
  200. package/dist/esm/utils/clmm/prices.d.ts +20 -0
  201. package/dist/esm/utils/clmm/tokenAmountFromLiquidity.d.ts +11 -0
  202. package/dist/esm/utils/clmm/types.d.ts +25 -0
  203. package/dist/esm/utils/constants.d.ts +3 -0
  204. package/dist/esm/utils/getHoldersFromTransactionsUtils.d.ts +6 -0
  205. package/dist/esm/utils/getReceipts.d.ts +4 -0
  206. package/dist/esm/utils/hop.d.ts +16 -0
  207. package/dist/esm/utils/prices.d.ts +6 -0
  208. package/dist/esm/utils/simpleCache.d.ts +10 -0
  209. package/dist/esm/utils/types.d.ts +5 -0
  210. package/dist/esm/utils/userHoldings.d.ts +6 -0
  211. package/dist/esm/utils/userHoldings.d.ts.map +1 -1
  212. package/dist/esm/utils/userHoldings.js +27 -8
  213. package/dist/esm/utils/userHoldings.js.map +1 -1
  214. package/dist/esm/vaultFunctions.d.ts +5 -0
  215. package/package.json +3 -3
  216. package/dist/index.js +0 -3
  217. package/dist/index.js.LICENSE.txt +0 -48
  218. package/dist/index.js.map +0 -1
@@ -0,0 +1,16 @@
1
+ import { HopApiOptions, GetQuoteResponse } from "@hop.ag/sdk";
2
+ import { SwapOptions } from "../common/types.js";
3
+ import { Transaction } from "@mysten/sui/transactions";
4
+ export type HopSwapOptions = SwapOptions;
5
+ export declare const hopSDKOptions: HopApiOptions;
6
+ export declare class HopGateway {
7
+ private hopAPI;
8
+ constructor(sdkOptions: HopApiOptions);
9
+ getQuote(options: HopSwapOptions, debug?: boolean): Promise<GetQuoteResponse>;
10
+ getTransactionBlock(options: HopSwapOptions, quote: GetQuoteResponse, debug?: boolean, transaction?: Transaction | undefined): Promise<Transaction>;
11
+ }
12
+ export declare function getWUSDCPrice(): Promise<number | undefined>;
13
+ export declare function getBlubPrice(): Promise<number | undefined>;
14
+ export declare function getFudPrice(): Promise<number | undefined>;
15
+ export declare function getWsolPrice(): Promise<number | undefined>;
16
+ //# sourceMappingURL=hop.d.ts.map
@@ -0,0 +1,6 @@
1
+ import { PythPriceIdPair } from "../common/pyth.js";
2
+ export declare function getLatestPrices(pairs: PythPriceIdPair[], ignoreCache: boolean): Promise<string[]>;
3
+ export declare function getLatestTokenPricePairs(pairs: PythPriceIdPair[], ignoreCache: boolean): Promise<{
4
+ [key: string]: string | undefined;
5
+ }>;
6
+ //# sourceMappingURL=prices.d.ts.map
@@ -0,0 +1,10 @@
1
+ export declare class SimpleCache<T> {
2
+ private cache;
3
+ private defaultTTL;
4
+ constructor(defaultTTL?: number);
5
+ get(key: string): T | null;
6
+ set(key: string, value: T, ttl?: number): void;
7
+ delete(key: string): void;
8
+ clear(): void;
9
+ }
10
+ //# sourceMappingURL=simpleCache.d.ts.map
@@ -0,0 +1,5 @@
1
+ export type GetReceiptParams = {
2
+ poolNames?: string[];
3
+ owners: string[];
4
+ };
5
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,6 @@
1
+ import { DoubleAssetTokenHoldings, HoldingsObj, SingleAssetTokenHoldings, LiquidityToTokensParams } from "../types.js";
2
+ export declare function multiXTokensToLiquidity(xTokensHoldings: HoldingsObj[]): Promise<HoldingsObj[]>;
3
+ export declare function multiLiquidityToTokens(holdings: HoldingsObj[]): Promise<(SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[]>;
4
+ export declare function liquidityToTokens(params: LiquidityToTokensParams): string | [string, string];
5
+ export declare function multiTokensToUsd(tokensHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[]): Promise<HoldingsObj[]>;
6
+ //# sourceMappingURL=userHoldings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"userHoldings.d.ts","sourceRoot":"","sources":["../../../src/utils/userHoldings.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAerB,wBAAsB,uBAAuB,CAAC,eAAe,EAAE,WAAW,EAAE,0BAoB3E;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,oEA4BnE;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,uBAAuB,GAC9B,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA0B3B;AAwID,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,CAAC,wBAAwB,GAAG,wBAAwB,CAAC,EAAE,GACtE,OAAO,CAAC,WAAW,EAAE,CAAC,CAuCxB"}
1
+ {"version":3,"file":"userHoldings.d.ts","sourceRoot":"","sources":["../../../src/utils/userHoldings.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAiBrB,wBAAsB,uBAAuB,CAAC,eAAe,EAAE,WAAW,EAAE,0BAmB3E;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,oEA4BnE;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,uBAAuB,GAC9B,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CA0B3B;AAkJD,wBAAsB,gBAAgB,CACpC,cAAc,EAAE,CAAC,wBAAwB,GAAG,wBAAwB,CAAC,EAAE,GACtE,OAAO,CAAC,WAAW,EAAE,CAAC,CAoDxB"}
@@ -10,6 +10,7 @@ const decimal_js_1 = require("decimal.js");
10
10
  const cetus_sui_clmm_sdk_1 = require("@cetusprotocol/cetus-sui-clmm-sdk");
11
11
  const bn_js_1 = tslib_1.__importDefault(require("bn.js"));
12
12
  const coins_js_1 = require("../common/coins.js");
13
+ const prices_js_1 = require("./prices.js");
13
14
  async function multiXTokensToLiquidity(xTokensHoldings) {
14
15
  let holdings = [];
15
16
  const exchangeRateMap = await (0, maps_js_1.getPoolExchangeRateMap)();
@@ -17,7 +18,6 @@ async function multiXTokensToLiquidity(xTokensHoldings) {
17
18
  const conversion = new decimal_js_1.Decimal(exchangeRateMap.get(holdingsObj.poolName));
18
19
  const liquidity = new decimal_js_1.Decimal(holdingsObj.holding)
19
20
  .mul(conversion)
20
- .toFixed(5)
21
21
  .toString();
22
22
  return {
23
23
  owner: holdingsObj.owner,
@@ -115,12 +115,19 @@ function alphaLiquidityToTokens(liquidity) {
115
115
  }
116
116
  function singleAssetLiquidityToTokens(liquidity, pool) {
117
117
  const singlePool = pool;
118
- if (maps_js_1.poolInfo[pool].parentProtocolName === "NAVI") {
118
+ if (maps_js_1.poolInfo[pool].parentProtocolName === "NAVI" &&
119
+ maps_js_1.poolInfo[pool].strategyType !== "LOOPING") {
119
120
  const coin = maps_js_1.poolCoinMap[singlePool];
120
121
  let amount = new decimal_js_1.Decimal(liquidity).div(Math.pow(10, 9 - coins_js_1.coins[coin].expo));
121
122
  amount = amount.div(new decimal_js_1.Decimal(Math.pow(10, coins_js_1.coins[coin].expo)));
122
123
  return amount.toFixed(5);
123
124
  }
125
+ else if (maps_js_1.poolInfo[pool].parentProtocolName === "NAVI" &&
126
+ maps_js_1.poolInfo[pool].strategyType === "LOOPING") {
127
+ const coin = (0, maps_js_1.coinsInPool)(pool);
128
+ const amount = new decimal_js_1.Decimal(liquidity).div(Math.pow(10, coins_js_1.coins[coin].expo));
129
+ return amount.toFixed(5);
130
+ }
124
131
  else if (maps_js_1.poolInfo[pool].parentProtocolName === "BUCKET" &&
125
132
  pool in maps_js_1.poolCoinMap) {
126
133
  const coin = maps_js_1.poolCoinMap[singlePool];
@@ -183,14 +190,26 @@ function mergeDuplicateTokenHoldings(tokenHoldings) {
183
190
  return result;
184
191
  }
185
192
  async function multiTokensToUsd(tokensHoldings) {
193
+ const pricePairs = new Set();
194
+ tokensHoldings.map((o) => {
195
+ if ("tokens" in o) {
196
+ const thisCoins = (0, maps_js_1.coinsInPool)(o.poolName);
197
+ pricePairs.add(`${thisCoins}/USD`);
198
+ }
199
+ else if ("tokenAmountA" in o) {
200
+ const thisCoins = (0, maps_js_1.coinsInPool)(o.poolName);
201
+ pricePairs.add(`${thisCoins.coinA}/USD`);
202
+ pricePairs.add(`${thisCoins.coinB}/USD`);
203
+ }
204
+ });
186
205
  const usdHoldings = [];
187
- const tokenPriceMap = await (0, maps_js_1.getTokenPriceMap)();
206
+ const prices = await (0, prices_js_1.getLatestTokenPricePairs)(Array.from(pricePairs), false);
188
207
  for (const tokenHolding of tokensHoldings) {
189
208
  if ("tokens" in tokenHolding) {
190
209
  // SingleAssetTokenHoldings
191
210
  const singlePool = tokenHolding.poolName;
192
- const coin = maps_js_1.poolCoinMap[singlePool];
193
- const priceOfCoin = tokenPriceMap.get(coin);
211
+ const coin = (0, maps_js_1.coinsInPool)(singlePool);
212
+ const priceOfCoin = prices[`${coin}/USD`];
194
213
  if (priceOfCoin) {
195
214
  const amountInUSD = new decimal_js_1.Decimal(tokenHolding.tokens).mul(priceOfCoin);
196
215
  usdHoldings.push({
@@ -205,8 +224,8 @@ async function multiTokensToUsd(tokensHoldings) {
205
224
  const poolName = tokenHolding.poolName;
206
225
  const coin1 = maps_js_1.poolCoinPairMap[poolName].coinA;
207
226
  const coin2 = maps_js_1.poolCoinPairMap[poolName].coinB;
208
- const priceOfCoin1 = tokenPriceMap.get(coin1);
209
- const priceOfCoin2 = tokenPriceMap.get(coin2);
227
+ const priceOfCoin1 = prices[`${coin1}/USD`];
228
+ const priceOfCoin2 = prices[`${coin2}/USD`];
210
229
  if (priceOfCoin1 && priceOfCoin2) {
211
230
  const amount = new decimal_js_1.Decimal(tokenHolding.tokenAmountA)
212
231
  .mul(priceOfCoin1)
@@ -1 +1 @@
1
- {"version":3,"file":"userHoldings.js","sourceRoot":"","sources":["../../../src/utils/userHoldings.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getPoolExchangeRateMap,\n getTokenPriceMap,\n getCetusInvestorTicksMap,\n getCetusSqrtPriceMap,\n poolCoinPairMap,\n poolCoinMap,\n poolInfo,\n} from \"../common/maps.js\";\nimport {\n DoubleAssetTokenHoldings,\n HoldingsObj,\n SingleAssetTokenHoldings,\n LiquidityToTokensParams,\n} from \"../types.js\";\nimport { Decimal } from \"decimal.js\";\nimport {\n DoubleAssetPoolNames,\n PoolName,\n SingleAssetPoolNames,\n} from \"../common/types.js\";\nimport {\n CoinAmounts,\n ClmmPoolUtil,\n TickMath,\n} from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { coins } from \"../common/coins.js\";\n\nexport async function multiXTokensToLiquidity(xTokensHoldings: HoldingsObj[]) {\n let holdings: HoldingsObj[] = [];\n\n const exchangeRateMap = await getPoolExchangeRateMap();\n holdings = xTokensHoldings.map((holdingsObj) => {\n const conversion = new Decimal(\n exchangeRateMap.get(holdingsObj.poolName) as string,\n );\n const liquidity = new Decimal(holdingsObj.holding)\n .mul(conversion)\n .toFixed(5)\n .toString();\n return {\n owner: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n holding: liquidity,\n };\n });\n\n return holdings;\n}\n\nexport async function multiLiquidityToTokens(holdings: HoldingsObj[]) {\n const sqrtPriceCetusMap = await getCetusSqrtPriceMap();\n const ticksCetusMap = await getCetusInvestorTicksMap();\n let tokenHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[] =\n holdings.map((holdingsObj) => {\n const tokens = liquidityToTokens({\n liquidity: holdingsObj.holding,\n poolName: holdingsObj.poolName,\n ticksCetusMap: ticksCetusMap,\n sqrtPriceCetusMap: sqrtPriceCetusMap,\n });\n if (typeof tokens === \"string\") {\n return {\n user: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n tokens: tokens,\n } as SingleAssetTokenHoldings;\n } else {\n return {\n user: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n tokenAmountA: tokens[0],\n tokenAmountB: tokens[1],\n } as DoubleAssetTokenHoldings;\n }\n });\n tokenHoldings = mergeDuplicateTokenHoldings(tokenHoldings);\n return tokenHoldings;\n}\n\nexport function liquidityToTokens(\n params: LiquidityToTokensParams,\n): string | [string, string] {\n let holdingUSD: string | undefined;\n if (params.poolName.slice(0, 4) === \"NAVI\") {\n holdingUSD = singleAssetLiquidityToTokens(\n params.liquidity,\n params.poolName,\n );\n } else if (params.poolName === \"ALPHA\") {\n holdingUSD = alphaLiquidityToTokens(params.liquidity);\n } else if (poolInfo[params.poolName].parentProtocolName === \"CETUS\") {\n const [holdingA, holdingB] = doubleAssetliquidityToTokens(params);\n return [holdingA, holdingB];\n } else if (poolInfo[params.poolName].parentProtocolName === \"BUCKET\") {\n if (params.poolName in poolCoinMap) {\n holdingUSD = singleAssetLiquidityToTokens(\n params.liquidity,\n params.poolName,\n );\n }\n } else {\n console.error(params.poolName);\n throw new Error(\"Unexpected Parent Protocol\");\n }\n if (!holdingUSD)\n throw new Error(`holdingsUsd undefined for poolName: ${params.poolName}`);\n return holdingUSD;\n}\n\nfunction doubleAssetliquidityToTokens(params: {\n liquidity: string;\n poolName: string;\n ticksCetusMap: { [pool: string]: { lower: string; upper: string } };\n sqrtPriceCetusMap: Map<PoolName, string>;\n}): [string, string] {\n const pool = params.poolName;\n const liquidity = params.liquidity;\n const ticksCetusMap = params.ticksCetusMap;\n const sqrtPriceCetusMap = params.sqrtPriceCetusMap;\n\n const upper_bound = 443636;\n let lower_tick = Number(ticksCetusMap[pool].lower);\n let upper_tick = Number(ticksCetusMap[pool].upper);\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 const liquidityInt = Math.floor(Number(liquidity));\n const sqrtPrice = sqrtPriceCetusMap.get(pool as PoolName) as string;\n const coin_amounts: CoinAmounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n new BN(`${liquidityInt}`),\n new BN(sqrtPrice),\n TickMath.tickIndexToSqrtPriceX64(lower_tick),\n TickMath.tickIndexToSqrtPriceX64(upper_tick),\n true,\n );\n const coinAmounts = [\n coin_amounts.coinA.toNumber(),\n coin_amounts.coinB.toNumber(),\n ];\n const ten = new Decimal(10);\n const coin1 = poolCoinPairMap[pool as DoubleAssetPoolNames].coinA;\n const coin2 = poolCoinPairMap[pool as DoubleAssetPoolNames].coinB;\n\n const amount1 = new Decimal(coinAmounts[0]).div(ten.pow(coins[coin1].expo));\n const amount2 = new Decimal(coinAmounts[1]).div(ten.pow(coins[coin2].expo));\n return [amount1.toFixed(5).toString(), amount2.toFixed(4).toString()];\n}\n\nfunction alphaLiquidityToTokens(liquidity: string) {\n const amount = new Decimal(liquidity).div(1e9);\n return amount.toFixed(5);\n}\n\nfunction singleAssetLiquidityToTokens(liquidity: string, pool: string) {\n const singlePool = pool;\n if (poolInfo[pool].parentProtocolName === \"NAVI\") {\n const coin = poolCoinMap[singlePool as SingleAssetPoolNames];\n let amount = new Decimal(liquidity).div(Math.pow(10, 9 - coins[coin].expo));\n amount = amount.div(new Decimal(Math.pow(10, coins[coin].expo)));\n return amount.toFixed(5);\n } else if (\n poolInfo[pool].parentProtocolName === \"BUCKET\" &&\n pool in poolCoinMap\n ) {\n const coin = poolCoinMap[singlePool as SingleAssetPoolNames];\n const amount = new Decimal(liquidity).div(\n new Decimal(Math.pow(10, coins[coin].expo)),\n );\n return amount.toFixed(5);\n } else {\n throw new Error(\"Incorrect pool in argument\");\n }\n}\n\nfunction mergeDuplicateTokenHoldings(\n tokenHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[],\n) {\n const uniqueOwnerPoolMap = new Map<\n string,\n { tokens: string } | { tokenAmountA: string; tokenAmountB: string }\n >();\n\n for (const holding of tokenHoldings) {\n const owner = holding.user;\n const poolName = holding.poolName;\n const key = `${owner}_${poolName}`;\n if (uniqueOwnerPoolMap.has(key)) {\n const existingTokens = uniqueOwnerPoolMap.get(key);\n if (\"tokens\" in existingTokens!) {\n const thisHolding = holding as SingleAssetTokenHoldings;\n uniqueOwnerPoolMap.set(key, {\n tokens: (\n parseFloat(thisHolding.tokens) + parseFloat(existingTokens.tokens)\n )\n .toFixed(5)\n .toString(),\n });\n } else {\n const thisHolding = holding as DoubleAssetTokenHoldings;\n const tokensObj = {\n tokenAmountA: (\n parseFloat(thisHolding.tokenAmountA) +\n parseFloat(existingTokens!.tokenAmountA)\n )\n .toFixed(5)\n .toString(),\n tokenAmountB: (\n parseFloat(thisHolding.tokenAmountB) +\n parseFloat(existingTokens!.tokenAmountB)\n )\n .toFixed(5)\n .toString(),\n };\n uniqueOwnerPoolMap.set(key, tokensObj);\n }\n } else {\n if (\"tokens\" in holding) {\n uniqueOwnerPoolMap.set(key, { tokens: holding.tokens });\n } else {\n uniqueOwnerPoolMap.set(key, {\n tokenAmountA: holding.tokenAmountA,\n tokenAmountB: holding.tokenAmountB,\n });\n }\n }\n }\n\n const uniqueOwnerPoolMapArr = Array.from(uniqueOwnerPoolMap);\n const result: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[] =\n uniqueOwnerPoolMapArr.map(([owner_pool, holding]) => {\n const owner = owner_pool.split(\"_\")[0];\n const poolName = owner_pool.split(\"_\")[1];\n return { user: owner, poolName: poolName, ...holding } as\n | SingleAssetTokenHoldings\n | DoubleAssetTokenHoldings;\n });\n return result;\n}\n\nexport async function multiTokensToUsd(\n tokensHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[],\n): Promise<HoldingsObj[]> {\n const usdHoldings: HoldingsObj[] = [];\n const tokenPriceMap = await getTokenPriceMap();\n\n for (const tokenHolding of tokensHoldings) {\n if (\"tokens\" in tokenHolding) {\n // SingleAssetTokenHoldings\n const singlePool = tokenHolding.poolName;\n const coin = poolCoinMap[singlePool];\n const priceOfCoin = tokenPriceMap.get(coin);\n if (priceOfCoin) {\n const amountInUSD = new Decimal(tokenHolding.tokens).mul(priceOfCoin);\n usdHoldings.push({\n owner: tokenHolding.user,\n poolName: tokenHolding.poolName,\n holding: amountInUSD.toFixed(2).toString(),\n });\n }\n } else {\n // DoubleAssetTokenHoldings\n const poolName = tokenHolding.poolName;\n const coin1 = poolCoinPairMap[poolName].coinA;\n const coin2 = poolCoinPairMap[poolName].coinB;\n const priceOfCoin1 = tokenPriceMap.get(coin1);\n const priceOfCoin2 = tokenPriceMap.get(coin2);\n if (priceOfCoin1 && priceOfCoin2) {\n const amount = new Decimal(tokenHolding.tokenAmountA)\n .mul(priceOfCoin1)\n .add(new Decimal(tokenHolding.tokenAmountB).mul(priceOfCoin2));\n usdHoldings.push({\n owner: tokenHolding.user,\n poolName: tokenHolding.poolName,\n holding: amount.toFixed(2).toString(),\n });\n }\n }\n }\n\n return usdHoldings;\n}\n"]}
1
+ {"version":3,"file":"userHoldings.js","sourceRoot":"","sources":["../../../src/utils/userHoldings.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getPoolExchangeRateMap,\n getCetusInvestorTicksMap,\n getCetusSqrtPriceMap,\n poolCoinPairMap,\n poolCoinMap,\n poolInfo,\n coinsInPool,\n} from \"../common/maps.js\";\nimport {\n DoubleAssetTokenHoldings,\n HoldingsObj,\n SingleAssetTokenHoldings,\n LiquidityToTokensParams,\n} from \"../types.js\";\nimport { Decimal } from \"decimal.js\";\nimport {\n DoubleAssetPoolNames,\n PoolName,\n SingleAssetPoolNames,\n} from \"../common/types.js\";\nimport {\n CoinAmounts,\n ClmmPoolUtil,\n TickMath,\n} from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { coins } from \"../common/coins.js\";\nimport { getLatestTokenPricePairs } from \"./prices.js\";\nimport { PythPriceIdPair } from \"../common/pyth.js\";\n\nexport async function multiXTokensToLiquidity(xTokensHoldings: HoldingsObj[]) {\n let holdings: HoldingsObj[] = [];\n\n const exchangeRateMap = await getPoolExchangeRateMap();\n holdings = xTokensHoldings.map((holdingsObj) => {\n const conversion = new Decimal(\n exchangeRateMap.get(holdingsObj.poolName) as string,\n );\n const liquidity = new Decimal(holdingsObj.holding)\n .mul(conversion)\n .toString();\n return {\n owner: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n holding: liquidity,\n };\n });\n\n return holdings;\n}\n\nexport async function multiLiquidityToTokens(holdings: HoldingsObj[]) {\n const sqrtPriceCetusMap = await getCetusSqrtPriceMap();\n const ticksCetusMap = await getCetusInvestorTicksMap();\n let tokenHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[] =\n holdings.map((holdingsObj) => {\n const tokens = liquidityToTokens({\n liquidity: holdingsObj.holding,\n poolName: holdingsObj.poolName,\n ticksCetusMap: ticksCetusMap,\n sqrtPriceCetusMap: sqrtPriceCetusMap,\n });\n if (typeof tokens === \"string\") {\n return {\n user: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n tokens: tokens,\n } as SingleAssetTokenHoldings;\n } else {\n return {\n user: holdingsObj.owner,\n poolName: holdingsObj.poolName,\n tokenAmountA: tokens[0],\n tokenAmountB: tokens[1],\n } as DoubleAssetTokenHoldings;\n }\n });\n tokenHoldings = mergeDuplicateTokenHoldings(tokenHoldings);\n return tokenHoldings;\n}\n\nexport function liquidityToTokens(\n params: LiquidityToTokensParams,\n): string | [string, string] {\n let holdingUSD: string | undefined;\n if (params.poolName.slice(0, 4) === \"NAVI\") {\n holdingUSD = singleAssetLiquidityToTokens(\n params.liquidity,\n params.poolName,\n );\n } else if (params.poolName === \"ALPHA\") {\n holdingUSD = alphaLiquidityToTokens(params.liquidity);\n } else if (poolInfo[params.poolName].parentProtocolName === \"CETUS\") {\n const [holdingA, holdingB] = doubleAssetliquidityToTokens(params);\n return [holdingA, holdingB];\n } else if (poolInfo[params.poolName].parentProtocolName === \"BUCKET\") {\n if (params.poolName in poolCoinMap) {\n holdingUSD = singleAssetLiquidityToTokens(\n params.liquidity,\n params.poolName,\n );\n }\n } else {\n console.error(params.poolName);\n throw new Error(\"Unexpected Parent Protocol\");\n }\n if (!holdingUSD)\n throw new Error(`holdingsUsd undefined for poolName: ${params.poolName}`);\n return holdingUSD;\n}\n\nfunction doubleAssetliquidityToTokens(params: {\n liquidity: string;\n poolName: string;\n ticksCetusMap: { [pool: string]: { lower: string; upper: string } };\n sqrtPriceCetusMap: Map<PoolName, string>;\n}): [string, string] {\n const pool = params.poolName;\n const liquidity = params.liquidity;\n const ticksCetusMap = params.ticksCetusMap;\n const sqrtPriceCetusMap = params.sqrtPriceCetusMap;\n\n const upper_bound = 443636;\n let lower_tick = Number(ticksCetusMap[pool].lower);\n let upper_tick = Number(ticksCetusMap[pool].upper);\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 const liquidityInt = Math.floor(Number(liquidity));\n const sqrtPrice = sqrtPriceCetusMap.get(pool as PoolName) as string;\n const coin_amounts: CoinAmounts = ClmmPoolUtil.getCoinAmountFromLiquidity(\n new BN(`${liquidityInt}`),\n new BN(sqrtPrice),\n TickMath.tickIndexToSqrtPriceX64(lower_tick),\n TickMath.tickIndexToSqrtPriceX64(upper_tick),\n true,\n );\n const coinAmounts = [\n coin_amounts.coinA.toNumber(),\n coin_amounts.coinB.toNumber(),\n ];\n const ten = new Decimal(10);\n const coin1 = poolCoinPairMap[pool as DoubleAssetPoolNames].coinA;\n const coin2 = poolCoinPairMap[pool as DoubleAssetPoolNames].coinB;\n\n const amount1 = new Decimal(coinAmounts[0]).div(ten.pow(coins[coin1].expo));\n const amount2 = new Decimal(coinAmounts[1]).div(ten.pow(coins[coin2].expo));\n return [amount1.toFixed(5).toString(), amount2.toFixed(4).toString()];\n}\n\nfunction alphaLiquidityToTokens(liquidity: string) {\n const amount = new Decimal(liquidity).div(1e9);\n return amount.toFixed(5);\n}\n\nfunction singleAssetLiquidityToTokens(liquidity: string, pool: string) {\n const singlePool = pool;\n if (\n poolInfo[pool].parentProtocolName === \"NAVI\" &&\n poolInfo[pool].strategyType !== \"LOOPING\"\n ) {\n const coin = poolCoinMap[singlePool as SingleAssetPoolNames];\n let amount = new Decimal(liquidity).div(Math.pow(10, 9 - coins[coin].expo));\n amount = amount.div(new Decimal(Math.pow(10, coins[coin].expo)));\n return amount.toFixed(5);\n } else if (\n poolInfo[pool].parentProtocolName === \"NAVI\" &&\n poolInfo[pool].strategyType === \"LOOPING\"\n ) {\n const coin = coinsInPool(pool as SingleAssetPoolNames);\n const amount = new Decimal(liquidity).div(Math.pow(10, coins[coin].expo));\n return amount.toFixed(5);\n } else if (\n poolInfo[pool].parentProtocolName === \"BUCKET\" &&\n pool in poolCoinMap\n ) {\n const coin = poolCoinMap[singlePool as SingleAssetPoolNames];\n const amount = new Decimal(liquidity).div(\n new Decimal(Math.pow(10, coins[coin].expo)),\n );\n return amount.toFixed(5);\n } else {\n throw new Error(\"Incorrect pool in argument\");\n }\n}\n\nfunction mergeDuplicateTokenHoldings(\n tokenHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[],\n) {\n const uniqueOwnerPoolMap = new Map<\n string,\n { tokens: string } | { tokenAmountA: string; tokenAmountB: string }\n >();\n\n for (const holding of tokenHoldings) {\n const owner = holding.user;\n const poolName = holding.poolName;\n const key = `${owner}_${poolName}`;\n if (uniqueOwnerPoolMap.has(key)) {\n const existingTokens = uniqueOwnerPoolMap.get(key);\n if (\"tokens\" in existingTokens!) {\n const thisHolding = holding as SingleAssetTokenHoldings;\n uniqueOwnerPoolMap.set(key, {\n tokens: (\n parseFloat(thisHolding.tokens) + parseFloat(existingTokens.tokens)\n )\n .toFixed(5)\n .toString(),\n });\n } else {\n const thisHolding = holding as DoubleAssetTokenHoldings;\n const tokensObj = {\n tokenAmountA: (\n parseFloat(thisHolding.tokenAmountA) +\n parseFloat(existingTokens!.tokenAmountA)\n )\n .toFixed(5)\n .toString(),\n tokenAmountB: (\n parseFloat(thisHolding.tokenAmountB) +\n parseFloat(existingTokens!.tokenAmountB)\n )\n .toFixed(5)\n .toString(),\n };\n uniqueOwnerPoolMap.set(key, tokensObj);\n }\n } else {\n if (\"tokens\" in holding) {\n uniqueOwnerPoolMap.set(key, { tokens: holding.tokens });\n } else {\n uniqueOwnerPoolMap.set(key, {\n tokenAmountA: holding.tokenAmountA,\n tokenAmountB: holding.tokenAmountB,\n });\n }\n }\n }\n\n const uniqueOwnerPoolMapArr = Array.from(uniqueOwnerPoolMap);\n const result: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[] =\n uniqueOwnerPoolMapArr.map(([owner_pool, holding]) => {\n const owner = owner_pool.split(\"_\")[0];\n const poolName = owner_pool.split(\"_\")[1];\n return { user: owner, poolName: poolName, ...holding } as\n | SingleAssetTokenHoldings\n | DoubleAssetTokenHoldings;\n });\n return result;\n}\n\nexport async function multiTokensToUsd(\n tokensHoldings: (SingleAssetTokenHoldings | DoubleAssetTokenHoldings)[],\n): Promise<HoldingsObj[]> {\n const pricePairs = new Set<PythPriceIdPair>();\n tokensHoldings.map((o) => {\n if (\"tokens\" in o) {\n const thisCoins = coinsInPool(o.poolName);\n pricePairs.add(`${thisCoins}/USD` as PythPriceIdPair);\n } else if (\"tokenAmountA\" in o) {\n const thisCoins = coinsInPool(o.poolName);\n pricePairs.add(`${thisCoins.coinA}/USD` as PythPriceIdPair);\n pricePairs.add(`${thisCoins.coinB}/USD` as PythPriceIdPair);\n }\n });\n\n const usdHoldings: HoldingsObj[] = [];\n const prices = await getLatestTokenPricePairs(Array.from(pricePairs), false);\n\n for (const tokenHolding of tokensHoldings) {\n if (\"tokens\" in tokenHolding) {\n // SingleAssetTokenHoldings\n const singlePool = tokenHolding.poolName;\n const coin = coinsInPool(singlePool);\n const priceOfCoin = prices[`${coin}/USD`];\n if (priceOfCoin) {\n const amountInUSD = new Decimal(tokenHolding.tokens).mul(priceOfCoin);\n usdHoldings.push({\n owner: tokenHolding.user,\n poolName: tokenHolding.poolName,\n holding: amountInUSD.toFixed(2).toString(),\n });\n }\n } else {\n // DoubleAssetTokenHoldings\n const poolName = tokenHolding.poolName;\n const coin1 = poolCoinPairMap[poolName].coinA;\n const coin2 = poolCoinPairMap[poolName].coinB;\n const priceOfCoin1 = prices[`${coin1}/USD`];\n const priceOfCoin2 = prices[`${coin2}/USD`];\n\n if (priceOfCoin1 && priceOfCoin2) {\n const amount = new Decimal(tokenHolding.tokenAmountA)\n .mul(priceOfCoin1)\n .add(new Decimal(tokenHolding.tokenAmountB).mul(priceOfCoin2));\n usdHoldings.push({\n owner: tokenHolding.user,\n poolName: tokenHolding.poolName,\n holding: amount.toFixed(2).toString(),\n });\n }\n }\n }\n\n return usdHoldings;\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import { LpBreakdownType, PoolName } from "./common/types.js";
2
+ export declare function alphaLpBreakdown(poolName: PoolName): Promise<LpBreakdownType>;
3
+ export declare function cetusLpBreakdown(poolName: PoolName): Promise<LpBreakdownType>;
4
+ export declare function lastAutocompoundTime(poolName: PoolName): Promise<string>;
5
+ //# sourceMappingURL=vaultFunctions.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function collectReward(): void;
2
+ //# sourceMappingURL=collectReward.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectReward.d.ts","sourceRoot":"","sources":["../../src/collectReward.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,SAE5B"}
@@ -0,0 +1,4 @@
1
+ export function collectReward() {
2
+ console.log("Not implemented");
3
+ }
4
+ //# sourceMappingURL=collectReward.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectReward.js","sourceRoot":"","sources":["../../src/collectReward.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa;IAC3B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACjC,CAAC","sourcesContent":["export function collectReward() {\n console.log(\"Not implemented\");\n}\n"]}
@@ -0,0 +1,110 @@
1
+ export type Distributor = {
2
+ objectId: string;
3
+ version: string;
4
+ digest: string;
5
+ type: string;
6
+ content: {
7
+ dataType: string;
8
+ type: string;
9
+ hasPublicTransfer: boolean;
10
+ fields: {
11
+ airdrop_wallet: string;
12
+ airdrop_wallet_balance: string;
13
+ dust_wallet_address: string;
14
+ fee_wallet: string;
15
+ id: {
16
+ id: string;
17
+ };
18
+ next_halving_timestamp: string;
19
+ pool_allocator: Allocator;
20
+ reward_unlock: {
21
+ fields: {
22
+ contents: [];
23
+ };
24
+ type: string;
25
+ };
26
+ start_timestamp: string;
27
+ target: string;
28
+ team_wallet_address: string;
29
+ team_wallet_balance: string;
30
+ };
31
+ };
32
+ };
33
+ export type Allocator = {
34
+ fields: {
35
+ id: {
36
+ id: string;
37
+ };
38
+ members: {
39
+ fields: {
40
+ contents: MemberType[];
41
+ };
42
+ type: string;
43
+ };
44
+ rewards: {
45
+ fields: {
46
+ id: {
47
+ id: string;
48
+ };
49
+ size: string;
50
+ };
51
+ type: string;
52
+ };
53
+ total_weights: {
54
+ fields: {
55
+ contents: TotalWeightType[];
56
+ };
57
+ type: string;
58
+ };
59
+ };
60
+ type: string;
61
+ };
62
+ export type TotalWeightType = {
63
+ fields: {
64
+ key: {
65
+ fields: {
66
+ name: string;
67
+ };
68
+ type: string;
69
+ };
70
+ value: string;
71
+ };
72
+ type: string;
73
+ };
74
+ export type MemberPoolDataType = {
75
+ fields: {
76
+ key: {
77
+ fields: {
78
+ name: string;
79
+ };
80
+ type: string;
81
+ };
82
+ value: {
83
+ fields: {
84
+ last_update_time: string;
85
+ pending_rewards: string;
86
+ weight: string;
87
+ };
88
+ type: string;
89
+ };
90
+ };
91
+ type: string;
92
+ };
93
+ export type MemberType = {
94
+ fields: {
95
+ key: string;
96
+ value: {
97
+ fields: {
98
+ pool_data: {
99
+ fields: {
100
+ contents: MemberPoolDataType[];
101
+ };
102
+ type: string;
103
+ };
104
+ };
105
+ type: string;
106
+ };
107
+ };
108
+ type: string;
109
+ };
110
+ //# sourceMappingURL=alphaTypes.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { SdkOptions } from "@cetusprotocol/cetus-sui-clmm-sdk";
2
+ export declare const cetusMainnetSDKOptions: SdkOptions;
3
+ //# sourceMappingURL=cetus_mainnet_config.d.ts.map
@@ -0,0 +1,5 @@
1
+ import { Coin, CoinName } from "./types.js";
2
+ export declare const coins: {
3
+ [key in CoinName]: Coin;
4
+ };
5
+ //# sourceMappingURL=coins.d.ts.map