@alphafi/alphafi-sdk 0.0.19 → 0.0.21

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 (463) hide show
  1. package/README.md +14 -5
  2. package/dist/cjs/common/alphaTypes.d.ts.map +1 -0
  3. package/dist/cjs/common/alphaTypes.js +3 -0
  4. package/dist/cjs/common/alphaTypes.js.map +1 -0
  5. package/dist/cjs/common/cetus_mainnet_config.d.ts.map +1 -0
  6. package/dist/cjs/common/cetus_mainnet_config.js +50 -0
  7. package/dist/cjs/common/cetus_mainnet_config.js.map +1 -0
  8. package/dist/cjs/common/coins.d.ts.map +1 -0
  9. package/dist/cjs/common/coins.js +135 -0
  10. package/dist/cjs/common/coins.js.map +1 -0
  11. package/dist/cjs/common/constants.d.ts.map +1 -0
  12. package/dist/cjs/common/constants.js +465 -0
  13. package/dist/cjs/common/constants.js.map +1 -0
  14. package/dist/cjs/common/maps.d.ts.map +1 -0
  15. package/dist/cjs/common/maps.js +535 -0
  16. package/dist/cjs/common/maps.js.map +1 -0
  17. package/dist/cjs/common/pyth.d.ts.map +1 -0
  18. package/dist/cjs/common/pyth.js +3 -0
  19. package/dist/cjs/common/pyth.js.map +1 -0
  20. package/dist/cjs/common/types.d.ts.map +1 -0
  21. package/dist/cjs/common/types.js +18 -0
  22. package/dist/cjs/common/types.js.map +1 -0
  23. package/dist/cjs/example.d.ts.map +1 -0
  24. package/dist/cjs/example.js +42 -0
  25. package/dist/cjs/example.js.map +1 -0
  26. package/dist/cjs/getAirdropShare.d.ts.map +1 -0
  27. package/dist/cjs/getAirdropShare.js +9 -0
  28. package/dist/cjs/getAirdropShare.js.map +1 -0
  29. package/dist/cjs/getAllVaults.d.ts.map +1 -0
  30. package/dist/cjs/getAllVaults.js +32 -0
  31. package/dist/cjs/getAllVaults.js.map +1 -0
  32. package/dist/cjs/getAlphaUnlocks.d.ts.map +1 -0
  33. package/dist/cjs/getAlphaUnlocks.js +20 -0
  34. package/dist/cjs/getAlphaUnlocks.js.map +1 -0
  35. package/dist/cjs/getAprs.d.ts.map +1 -0
  36. package/dist/cjs/getAprs.js +56 -0
  37. package/dist/cjs/getAprs.js.map +1 -0
  38. package/dist/cjs/getHoldersFromTransactions.d.ts.map +1 -0
  39. package/dist/cjs/getHoldersFromTransactions.js +87 -0
  40. package/dist/cjs/getHoldersFromTransactions.js.map +1 -0
  41. package/dist/cjs/getLastAutoCompoundTime.d.ts.map +1 -0
  42. package/dist/cjs/getLastAutoCompoundTime.js +17 -0
  43. package/dist/cjs/getLastAutoCompoundTime.js.map +1 -0
  44. package/dist/cjs/getRebalanceHistory.d.ts.map +1 -0
  45. package/dist/cjs/getRebalanceHistory.js +24 -0
  46. package/dist/cjs/getRebalanceHistory.js.map +1 -0
  47. package/dist/cjs/getVaultBalances.d.ts.map +1 -0
  48. package/dist/cjs/getVaultBalances.js +132 -0
  49. package/dist/cjs/getVaultBalances.js.map +1 -0
  50. package/dist/cjs/getVaults.d.ts.map +1 -0
  51. package/dist/cjs/getVaults.js +31 -0
  52. package/dist/cjs/getVaults.js.map +1 -0
  53. package/dist/cjs/graphql/client.d.ts.map +1 -0
  54. package/dist/cjs/graphql/client.js +14 -0
  55. package/dist/cjs/graphql/client.js.map +1 -0
  56. package/dist/cjs/graphql/executeMutations.d.ts.map +1 -0
  57. package/dist/cjs/graphql/executeMutations.js +31 -0
  58. package/dist/cjs/graphql/executeMutations.js.map +1 -0
  59. package/dist/cjs/graphql/fetchAutoCompoundingEventsGql.d.ts.map +1 -0
  60. package/dist/cjs/graphql/fetchAutoCompoundingEventsGql.js +119 -0
  61. package/dist/cjs/graphql/fetchAutoCompoundingEventsGql.js.map +1 -0
  62. package/dist/cjs/graphql/fetchData.d.ts.map +1 -0
  63. package/dist/cjs/graphql/fetchData.js +95 -0
  64. package/dist/cjs/graphql/fetchData.js.map +1 -0
  65. package/dist/cjs/graphql/fetchNftHolders.d.ts.map +1 -0
  66. package/dist/cjs/graphql/fetchNftHolders.js +34 -0
  67. package/dist/cjs/graphql/fetchNftHolders.js.map +1 -0
  68. package/dist/cjs/graphql/fetchReceipts.d.ts.map +1 -0
  69. package/dist/cjs/graphql/fetchReceipts.js +35 -0
  70. package/dist/cjs/graphql/fetchReceipts.js.map +1 -0
  71. package/dist/cjs/graphql/mutations.d.ts.map +1 -0
  72. package/dist/cjs/graphql/mutations.js +33 -0
  73. package/dist/cjs/graphql/mutations.js.map +1 -0
  74. package/dist/cjs/graphql/parseData.d.ts.map +1 -0
  75. package/dist/cjs/graphql/parseData.js +9 -0
  76. package/dist/cjs/graphql/parseData.js.map +1 -0
  77. package/dist/cjs/graphql/parseLockedTableId.d.ts.map +1 -0
  78. package/dist/cjs/graphql/parseLockedTableId.js +15 -0
  79. package/dist/cjs/graphql/parseLockedTableId.js.map +1 -0
  80. package/dist/cjs/graphql/queries/autoCompoundEvents.d.ts.map +1 -0
  81. package/dist/cjs/graphql/queries/autoCompoundEvents.js +19 -0
  82. package/dist/cjs/graphql/queries/autoCompoundEvents.js.map +1 -0
  83. package/dist/cjs/graphql/queries/cetusPools.d.ts.map +1 -0
  84. package/dist/cjs/graphql/queries/cetusPools.js +39 -0
  85. package/dist/cjs/graphql/queries/cetusPools.js.map +1 -0
  86. package/dist/cjs/graphql/queries/investors.d.ts.map +1 -0
  87. package/dist/cjs/graphql/queries/investors.js +39 -0
  88. package/dist/cjs/graphql/queries/investors.js.map +1 -0
  89. package/dist/cjs/graphql/queries/lockedTableData.d.ts.map +1 -0
  90. package/dist/cjs/graphql/queries/lockedTableData.js +30 -0
  91. package/dist/cjs/graphql/queries/lockedTableData.js.map +1 -0
  92. package/dist/cjs/graphql/queries/lockedTableDataFragment.d.ts.map +1 -0
  93. package/dist/cjs/graphql/queries/lockedTableDataFragment.js +24 -0
  94. package/dist/cjs/graphql/queries/lockedTableDataFragment.js.map +1 -0
  95. package/dist/cjs/graphql/queries/nftHolders.d.ts.map +1 -0
  96. package/dist/cjs/graphql/queries/nftHolders.js +23 -0
  97. package/dist/cjs/graphql/queries/nftHolders.js.map +1 -0
  98. package/dist/cjs/graphql/queries/pools.d.ts.map +1 -0
  99. package/dist/cjs/graphql/queries/pools.js +57 -0
  100. package/dist/cjs/graphql/queries/pools.js.map +1 -0
  101. package/dist/cjs/graphql/queries/receiptData.d.ts.map +1 -0
  102. package/dist/cjs/graphql/queries/receiptData.js +21 -0
  103. package/dist/cjs/graphql/queries/receiptData.js.map +1 -0
  104. package/dist/cjs/graphql/queries/userVaultBalances.d.ts.map +1 -0
  105. package/dist/cjs/graphql/queries/userVaultBalances.js +62 -0
  106. package/dist/cjs/graphql/queries/userVaultBalances.js.map +1 -0
  107. package/dist/cjs/graphql/queries/userVaults.d.ts.map +1 -0
  108. package/dist/cjs/graphql/queries/userVaults.js +62 -0
  109. package/dist/cjs/graphql/queries/userVaults.js.map +1 -0
  110. package/dist/cjs/graphql/queries.d.ts.map +1 -0
  111. package/dist/cjs/graphql/queries.js +86 -0
  112. package/dist/cjs/graphql/queries.js.map +1 -0
  113. package/dist/cjs/graphql/types.d.ts.map +1 -0
  114. package/dist/cjs/graphql/types.js +3 -0
  115. package/dist/cjs/graphql/types.js.map +1 -0
  116. package/dist/cjs/index.d.ts.map +1 -0
  117. package/dist/cjs/index.js +70 -0
  118. package/dist/cjs/index.js.map +1 -0
  119. package/dist/cjs/sui-sdk/client.d.ts.map +1 -0
  120. package/dist/cjs/sui-sdk/client.js +69 -0
  121. package/dist/cjs/sui-sdk/client.js.map +1 -0
  122. package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -0
  123. package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js +201 -0
  124. package/dist/cjs/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -0
  125. package/dist/cjs/sui-sdk/events/fetchEvents.d.ts.map +1 -0
  126. package/dist/cjs/sui-sdk/events/fetchEvents.js +184 -0
  127. package/dist/cjs/sui-sdk/events/fetchEvents.js.map +1 -0
  128. package/dist/cjs/sui-sdk/events/fetchLiquidityChangeEvents.d.ts.map +1 -0
  129. package/dist/cjs/sui-sdk/events/fetchLiquidityChangeEvents.js +44 -0
  130. package/dist/cjs/sui-sdk/events/fetchLiquidityChangeEvents.js.map +1 -0
  131. package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.d.ts.map +1 -0
  132. package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.js +90 -0
  133. package/dist/cjs/sui-sdk/events/fetchRebalanceEvents.js.map +1 -0
  134. package/dist/cjs/sui-sdk/events/parseData.d.ts.map +1 -0
  135. package/dist/cjs/sui-sdk/events/parseData.js +31 -0
  136. package/dist/cjs/sui-sdk/events/parseData.js.map +1 -0
  137. package/dist/cjs/sui-sdk/events/types.d.ts.map +1 -0
  138. package/dist/cjs/sui-sdk/events/types.js +3 -0
  139. package/dist/cjs/sui-sdk/events/types.js.map +1 -0
  140. package/dist/cjs/sui-sdk/functions/fetchTableData.d.ts.map +1 -0
  141. package/dist/cjs/sui-sdk/functions/fetchTableData.js +77 -0
  142. package/dist/cjs/sui-sdk/functions/fetchTableData.js.map +1 -0
  143. package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -0
  144. package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js +82 -0
  145. package/dist/cjs/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -0
  146. package/dist/cjs/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -0
  147. package/dist/cjs/sui-sdk/functions/fetchUserVaults.js +45 -0
  148. package/dist/cjs/sui-sdk/functions/fetchUserVaults.js.map +1 -0
  149. package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -0
  150. package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js +246 -0
  151. package/dist/cjs/sui-sdk/functions/getPortfolioAmounts.js.map +1 -0
  152. package/dist/cjs/sui-sdk/functions/getReceipts.d.ts.map +1 -0
  153. package/dist/cjs/sui-sdk/functions/getReceipts.js +375 -0
  154. package/dist/cjs/sui-sdk/functions/getReceipts.js.map +1 -0
  155. package/dist/cjs/sui-sdk/transactions/constants.d.ts.map +1 -0
  156. package/dist/cjs/sui-sdk/transactions/constants.js +90 -0
  157. package/dist/cjs/sui-sdk/transactions/constants.js.map +1 -0
  158. package/dist/cjs/sui-sdk/transactions/fetchTransactions.d.ts.map +1 -0
  159. package/dist/cjs/sui-sdk/transactions/fetchTransactions.js +88 -0
  160. package/dist/cjs/sui-sdk/transactions/fetchTransactions.js.map +1 -0
  161. package/dist/cjs/sui-sdk/transactions/types.d.ts.map +1 -0
  162. package/dist/cjs/sui-sdk/transactions/types.js +3 -0
  163. package/dist/cjs/sui-sdk/transactions/types.js.map +1 -0
  164. package/dist/cjs/types.d.ts.map +1 -0
  165. package/dist/cjs/types.js +3 -0
  166. package/dist/cjs/types.js.map +1 -0
  167. package/dist/cjs/utils/clmm/prices.d.ts.map +1 -0
  168. package/dist/cjs/utils/clmm/prices.js +317 -0
  169. package/dist/cjs/utils/clmm/prices.js.map +1 -0
  170. package/dist/cjs/utils/clmm/tokenAmountFromLiquidity.d.ts.map +1 -0
  171. package/dist/cjs/utils/clmm/tokenAmountFromLiquidity.js +196 -0
  172. package/dist/cjs/utils/clmm/tokenAmountFromLiquidity.js.map +1 -0
  173. package/dist/cjs/utils/clmm/types.d.ts.map +1 -0
  174. package/dist/cjs/utils/clmm/types.js +3 -0
  175. package/dist/cjs/utils/clmm/types.js.map +1 -0
  176. package/dist/cjs/utils/constants.d.ts.map +1 -0
  177. package/dist/cjs/utils/constants.js +104 -0
  178. package/dist/cjs/utils/constants.js.map +1 -0
  179. package/dist/cjs/utils/getHoldersFromTransactionsUtils.d.ts.map +1 -0
  180. package/dist/cjs/utils/getHoldersFromTransactionsUtils.js +132 -0
  181. package/dist/cjs/utils/getHoldersFromTransactionsUtils.js.map +1 -0
  182. package/dist/cjs/utils/getReceipts.d.ts.map +1 -0
  183. package/dist/cjs/utils/getReceipts.js +45 -0
  184. package/dist/cjs/utils/getReceipts.js.map +1 -0
  185. package/dist/cjs/utils/hop.d.ts.map +1 -0
  186. package/dist/cjs/utils/hop.js +125 -0
  187. package/dist/cjs/utils/hop.js.map +1 -0
  188. package/dist/cjs/utils/prices.d.ts.map +1 -0
  189. package/dist/cjs/utils/prices.js +231 -0
  190. package/dist/cjs/utils/prices.js.map +1 -0
  191. package/dist/cjs/utils/simpleCache.d.ts.map +1 -0
  192. package/dist/cjs/utils/simpleCache.js +43 -0
  193. package/dist/cjs/utils/simpleCache.js.map +1 -0
  194. package/dist/cjs/utils/types.d.ts.map +1 -0
  195. package/dist/cjs/utils/types.js +3 -0
  196. package/dist/cjs/utils/types.js.map +1 -0
  197. package/dist/cjs/utils/userHoldings.d.ts.map +1 -0
  198. package/dist/cjs/utils/userHoldings.js +202 -0
  199. package/dist/cjs/utils/userHoldings.js.map +1 -0
  200. package/dist/cjs/vaultFunctions.d.ts.map +1 -0
  201. package/dist/cjs/vaultFunctions.js +32 -0
  202. package/dist/cjs/vaultFunctions.js.map +1 -0
  203. package/dist/esm/common/alphaTypes.d.ts.map +1 -0
  204. package/dist/esm/common/alphaTypes.js +2 -0
  205. package/dist/esm/common/alphaTypes.js.map +1 -0
  206. package/dist/esm/common/cetus_mainnet_config.d.ts.map +1 -0
  207. package/dist/esm/common/cetus_mainnet_config.js +47 -0
  208. package/dist/esm/common/cetus_mainnet_config.js.map +1 -0
  209. package/dist/esm/common/coins.d.ts.map +1 -0
  210. package/dist/esm/common/coins.js +132 -0
  211. package/dist/esm/common/coins.js.map +1 -0
  212. package/dist/esm/common/constants.d.ts.map +1 -0
  213. package/dist/esm/common/constants.js +462 -0
  214. package/dist/esm/common/constants.js.map +1 -0
  215. package/dist/esm/common/maps.d.ts.map +1 -0
  216. package/dist/esm/common/maps.js +527 -0
  217. package/dist/esm/common/maps.js.map +1 -0
  218. package/dist/esm/common/pyth.d.ts.map +1 -0
  219. package/dist/esm/common/pyth.js +2 -0
  220. package/dist/esm/common/pyth.js.map +1 -0
  221. package/dist/esm/common/types.d.ts.map +1 -0
  222. package/dist/esm/common/types.js +16 -0
  223. package/dist/esm/common/types.js.map +1 -0
  224. package/dist/esm/example.d.ts.map +1 -0
  225. package/dist/esm/example.js +38 -0
  226. package/dist/esm/example.js.map +1 -0
  227. package/dist/esm/getAirdropShare.d.ts.map +1 -0
  228. package/dist/esm/getAirdropShare.js +6 -0
  229. package/dist/esm/getAirdropShare.js.map +1 -0
  230. package/dist/esm/getAllVaults.d.ts.map +1 -0
  231. package/dist/esm/getAllVaults.js +27 -0
  232. package/dist/esm/getAllVaults.js.map +1 -0
  233. package/dist/esm/getAlphaUnlocks.d.ts.map +1 -0
  234. package/dist/esm/getAlphaUnlocks.js +17 -0
  235. package/dist/esm/getAlphaUnlocks.js.map +1 -0
  236. package/dist/esm/getAprs.d.ts.map +1 -0
  237. package/dist/esm/getAprs.js +50 -0
  238. package/dist/esm/getAprs.js.map +1 -0
  239. package/dist/esm/getHoldersFromTransactions.d.ts.map +1 -0
  240. package/dist/esm/getHoldersFromTransactions.js +82 -0
  241. package/dist/esm/getHoldersFromTransactions.js.map +1 -0
  242. package/dist/esm/getLastAutoCompoundTime.d.ts.map +1 -0
  243. package/dist/esm/getLastAutoCompoundTime.js +14 -0
  244. package/dist/esm/getLastAutoCompoundTime.js.map +1 -0
  245. package/dist/esm/getRebalanceHistory.d.ts.map +1 -0
  246. package/dist/esm/getRebalanceHistory.js +20 -0
  247. package/dist/esm/getRebalanceHistory.js.map +1 -0
  248. package/dist/esm/getVaultBalances.d.ts.map +1 -0
  249. package/dist/esm/getVaultBalances.js +124 -0
  250. package/dist/esm/getVaultBalances.js.map +1 -0
  251. package/dist/esm/getVaults.d.ts.map +1 -0
  252. package/dist/esm/getVaults.js +26 -0
  253. package/dist/esm/getVaults.js.map +1 -0
  254. package/dist/esm/graphql/client.d.ts.map +1 -0
  255. package/dist/esm/graphql/client.js +12 -0
  256. package/dist/esm/graphql/client.js.map +1 -0
  257. package/dist/esm/graphql/executeMutations.d.ts.map +1 -0
  258. package/dist/esm/graphql/executeMutations.js +25 -0
  259. package/dist/esm/graphql/executeMutations.js.map +1 -0
  260. package/dist/esm/graphql/fetchAutoCompoundingEventsGql.d.ts.map +1 -0
  261. package/dist/esm/graphql/fetchAutoCompoundingEventsGql.js +116 -0
  262. package/dist/esm/graphql/fetchAutoCompoundingEventsGql.js.map +1 -0
  263. package/dist/esm/graphql/fetchData.d.ts.map +1 -0
  264. package/dist/esm/graphql/fetchData.js +81 -0
  265. package/dist/esm/graphql/fetchData.js.map +1 -0
  266. package/dist/esm/graphql/fetchNftHolders.d.ts.map +1 -0
  267. package/dist/esm/graphql/fetchNftHolders.js +30 -0
  268. package/dist/esm/graphql/fetchNftHolders.js.map +1 -0
  269. package/dist/esm/graphql/fetchReceipts.d.ts.map +1 -0
  270. package/dist/esm/graphql/fetchReceipts.js +31 -0
  271. package/dist/esm/graphql/fetchReceipts.js.map +1 -0
  272. package/dist/esm/graphql/mutations.d.ts.map +1 -0
  273. package/dist/esm/graphql/mutations.js +30 -0
  274. package/dist/esm/graphql/mutations.js.map +1 -0
  275. package/dist/esm/graphql/parseData.d.ts.map +1 -0
  276. package/dist/esm/graphql/parseData.js +6 -0
  277. package/dist/esm/graphql/parseData.js.map +1 -0
  278. package/dist/esm/graphql/parseLockedTableId.d.ts.map +1 -0
  279. package/dist/esm/graphql/parseLockedTableId.js +12 -0
  280. package/dist/esm/graphql/parseLockedTableId.js.map +1 -0
  281. package/dist/esm/graphql/queries/autoCompoundEvents.d.ts.map +1 -0
  282. package/dist/esm/graphql/queries/autoCompoundEvents.js +16 -0
  283. package/dist/esm/graphql/queries/autoCompoundEvents.js.map +1 -0
  284. package/dist/esm/graphql/queries/cetusPools.d.ts.map +1 -0
  285. package/dist/esm/graphql/queries/cetusPools.js +36 -0
  286. package/dist/esm/graphql/queries/cetusPools.js.map +1 -0
  287. package/dist/esm/graphql/queries/investors.d.ts.map +1 -0
  288. package/dist/esm/graphql/queries/investors.js +36 -0
  289. package/dist/esm/graphql/queries/investors.js.map +1 -0
  290. package/dist/esm/graphql/queries/lockedTableData.d.ts.map +1 -0
  291. package/dist/esm/graphql/queries/lockedTableData.js +27 -0
  292. package/dist/esm/graphql/queries/lockedTableData.js.map +1 -0
  293. package/dist/esm/graphql/queries/lockedTableDataFragment.d.ts.map +1 -0
  294. package/dist/esm/graphql/queries/lockedTableDataFragment.js +21 -0
  295. package/dist/esm/graphql/queries/lockedTableDataFragment.js.map +1 -0
  296. package/dist/esm/graphql/queries/nftHolders.d.ts.map +1 -0
  297. package/dist/esm/graphql/queries/nftHolders.js +20 -0
  298. package/dist/esm/graphql/queries/nftHolders.js.map +1 -0
  299. package/dist/esm/graphql/queries/pools.d.ts.map +1 -0
  300. package/dist/esm/graphql/queries/pools.js +54 -0
  301. package/dist/esm/graphql/queries/pools.js.map +1 -0
  302. package/dist/esm/graphql/queries/receiptData.d.ts.map +1 -0
  303. package/dist/esm/graphql/queries/receiptData.js +18 -0
  304. package/dist/esm/graphql/queries/receiptData.js.map +1 -0
  305. package/dist/esm/graphql/queries/userVaultBalances.d.ts.map +1 -0
  306. package/dist/esm/graphql/queries/userVaultBalances.js +59 -0
  307. package/dist/esm/graphql/queries/userVaultBalances.js.map +1 -0
  308. package/dist/esm/graphql/queries/userVaults.d.ts.map +1 -0
  309. package/dist/esm/graphql/queries/userVaults.js +59 -0
  310. package/dist/esm/graphql/queries/userVaults.js.map +1 -0
  311. package/dist/esm/graphql/queries.d.ts.map +1 -0
  312. package/dist/esm/graphql/queries.js +83 -0
  313. package/dist/esm/graphql/queries.js.map +1 -0
  314. package/dist/esm/graphql/types.d.ts.map +1 -0
  315. package/dist/esm/graphql/types.js +2 -0
  316. package/dist/esm/graphql/types.js.map +1 -0
  317. package/dist/esm/index.d.ts.map +1 -0
  318. package/dist/{index.d.ts → esm/index.js} +23 -19
  319. package/dist/esm/index.js.map +1 -0
  320. package/dist/esm/sui-sdk/client.d.ts.map +1 -0
  321. package/dist/esm/sui-sdk/client.js +63 -0
  322. package/dist/esm/sui-sdk/client.js.map +1 -0
  323. package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.d.ts.map +1 -0
  324. package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js +196 -0
  325. package/dist/esm/sui-sdk/events/fetchAutoCompoundingEvents.js.map +1 -0
  326. package/dist/esm/sui-sdk/events/fetchEvents.d.ts.map +1 -0
  327. package/dist/esm/sui-sdk/events/fetchEvents.js +181 -0
  328. package/dist/esm/sui-sdk/events/fetchEvents.js.map +1 -0
  329. package/dist/esm/sui-sdk/events/fetchLiquidityChangeEvents.d.ts.map +1 -0
  330. package/dist/esm/sui-sdk/events/fetchLiquidityChangeEvents.js +41 -0
  331. package/dist/esm/sui-sdk/events/fetchLiquidityChangeEvents.js.map +1 -0
  332. package/dist/esm/sui-sdk/events/fetchRebalanceEvents.d.ts.map +1 -0
  333. package/dist/esm/sui-sdk/events/fetchRebalanceEvents.js +85 -0
  334. package/dist/esm/sui-sdk/events/fetchRebalanceEvents.js.map +1 -0
  335. package/dist/esm/sui-sdk/events/parseData.d.ts.map +1 -0
  336. package/dist/esm/sui-sdk/events/parseData.js +27 -0
  337. package/dist/esm/sui-sdk/events/parseData.js.map +1 -0
  338. package/dist/esm/sui-sdk/events/types.d.ts.map +1 -0
  339. package/dist/esm/sui-sdk/events/types.js +2 -0
  340. package/dist/esm/sui-sdk/events/types.js.map +1 -0
  341. package/dist/esm/sui-sdk/functions/fetchTableData.d.ts.map +1 -0
  342. package/dist/esm/sui-sdk/functions/fetchTableData.js +73 -0
  343. package/dist/esm/sui-sdk/functions/fetchTableData.js.map +1 -0
  344. package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.d.ts.map +1 -0
  345. package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js +79 -0
  346. package/dist/esm/sui-sdk/functions/fetchUserVaultBalances.js.map +1 -0
  347. package/dist/esm/sui-sdk/functions/fetchUserVaults.d.ts.map +1 -0
  348. package/dist/esm/sui-sdk/functions/fetchUserVaults.js +42 -0
  349. package/dist/esm/sui-sdk/functions/fetchUserVaults.js.map +1 -0
  350. package/dist/esm/sui-sdk/functions/getPortfolioAmounts.d.ts.map +1 -0
  351. package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js +238 -0
  352. package/dist/esm/sui-sdk/functions/getPortfolioAmounts.js.map +1 -0
  353. package/dist/esm/sui-sdk/functions/getReceipts.d.ts.map +1 -0
  354. package/dist/esm/sui-sdk/functions/getReceipts.js +364 -0
  355. package/dist/esm/sui-sdk/functions/getReceipts.js.map +1 -0
  356. package/dist/esm/sui-sdk/transactions/constants.d.ts.map +1 -0
  357. package/dist/esm/sui-sdk/transactions/constants.js +87 -0
  358. package/dist/esm/sui-sdk/transactions/constants.js.map +1 -0
  359. package/dist/esm/sui-sdk/transactions/fetchTransactions.d.ts.map +1 -0
  360. package/dist/esm/sui-sdk/transactions/fetchTransactions.js +85 -0
  361. package/dist/esm/sui-sdk/transactions/fetchTransactions.js.map +1 -0
  362. package/dist/esm/sui-sdk/transactions/types.d.ts.map +1 -0
  363. package/dist/esm/sui-sdk/transactions/types.js +2 -0
  364. package/dist/esm/sui-sdk/transactions/types.js.map +1 -0
  365. package/dist/esm/types.d.ts.map +1 -0
  366. package/dist/esm/types.js +2 -0
  367. package/dist/esm/types.js.map +1 -0
  368. package/dist/esm/utils/clmm/prices.d.ts.map +1 -0
  369. package/dist/esm/utils/clmm/prices.js +309 -0
  370. package/dist/esm/utils/clmm/prices.js.map +1 -0
  371. package/dist/esm/utils/clmm/tokenAmountFromLiquidity.d.ts.map +1 -0
  372. package/dist/esm/utils/clmm/tokenAmountFromLiquidity.js +188 -0
  373. package/dist/esm/utils/clmm/tokenAmountFromLiquidity.js.map +1 -0
  374. package/dist/esm/utils/clmm/types.d.ts.map +1 -0
  375. package/dist/esm/utils/clmm/types.js +2 -0
  376. package/dist/esm/utils/clmm/types.js.map +1 -0
  377. package/dist/esm/utils/constants.d.ts.map +1 -0
  378. package/dist/esm/utils/constants.js +101 -0
  379. package/dist/esm/utils/constants.js.map +1 -0
  380. package/dist/esm/utils/getHoldersFromTransactionsUtils.d.ts.map +1 -0
  381. package/dist/esm/utils/getHoldersFromTransactionsUtils.js +127 -0
  382. package/dist/esm/utils/getHoldersFromTransactionsUtils.js.map +1 -0
  383. package/dist/esm/utils/getReceipts.d.ts.map +1 -0
  384. package/dist/esm/utils/getReceipts.js +42 -0
  385. package/dist/esm/utils/getReceipts.js.map +1 -0
  386. package/dist/esm/utils/hop.d.ts.map +1 -0
  387. package/dist/esm/utils/hop.js +118 -0
  388. package/dist/esm/utils/hop.js.map +1 -0
  389. package/dist/esm/utils/prices.d.ts.map +1 -0
  390. package/dist/esm/utils/prices.js +226 -0
  391. package/dist/esm/utils/prices.js.map +1 -0
  392. package/dist/esm/utils/simpleCache.d.ts.map +1 -0
  393. package/dist/esm/utils/simpleCache.js +40 -0
  394. package/dist/esm/utils/simpleCache.js.map +1 -0
  395. package/dist/esm/utils/types.d.ts.map +1 -0
  396. package/dist/esm/utils/types.js +2 -0
  397. package/dist/esm/utils/types.js.map +1 -0
  398. package/dist/esm/utils/userHoldings.d.ts.map +1 -0
  399. package/dist/esm/utils/userHoldings.js +195 -0
  400. package/dist/esm/utils/userHoldings.js.map +1 -0
  401. package/dist/esm/vaultFunctions.d.ts.map +1 -0
  402. package/dist/esm/vaultFunctions.js +27 -0
  403. package/dist/esm/vaultFunctions.js.map +1 -0
  404. package/package.json +29 -13
  405. package/dist/common/alphaTypes.d.ts +0 -109
  406. package/dist/common/cetus_mainnet_config.d.ts +0 -2
  407. package/dist/common/coins.d.ts +0 -4
  408. package/dist/common/constants.d.ts +0 -401
  409. package/dist/common/maps.d.ts +0 -56
  410. package/dist/common/pyth.d.ts +0 -6
  411. package/dist/common/types.d.ts +0 -459
  412. package/dist/example.d.ts +0 -2
  413. package/dist/getAirdropShare.d.ts +0 -1
  414. package/dist/getAllVaults.d.ts +0 -3
  415. package/dist/getAlphaUnlocks.d.ts +0 -13
  416. package/dist/getAprs.d.ts +0 -5
  417. package/dist/getHoldersFromTransactions.d.ts +0 -8
  418. package/dist/getLastAutoCompoundTime.d.ts +0 -2
  419. package/dist/getRebalanceHistory.d.ts +0 -3
  420. package/dist/getVaultBalances.d.ts +0 -8
  421. package/dist/getVaults.d.ts +0 -4
  422. package/dist/graphql/client.d.ts +0 -3
  423. package/dist/graphql/executeMutations.d.ts +0 -3
  424. package/dist/graphql/fetchAutoCompoundingEventsGql.d.ts +0 -26
  425. package/dist/graphql/fetchData.d.ts +0 -10
  426. package/dist/graphql/fetchNftHolders.d.ts +0 -2
  427. package/dist/graphql/fetchReceipts.d.ts +0 -2
  428. package/dist/graphql/mutations.d.ts +0 -3
  429. package/dist/graphql/parseData.d.ts +0 -1
  430. package/dist/graphql/parseLockedTableId.d.ts +0 -6
  431. package/dist/graphql/queries.d.ts +0 -14
  432. package/dist/graphql/types.d.ts +0 -69
  433. package/dist/index.js +0 -3
  434. package/dist/index.js.LICENSE.txt +0 -48
  435. package/dist/index.js.map +0 -1
  436. package/dist/sui-sdk/client.d.ts +0 -30
  437. package/dist/sui-sdk/events/fetchAutoCompoundingEvents.d.ts +0 -5
  438. package/dist/sui-sdk/events/fetchEvents.d.ts +0 -2
  439. package/dist/sui-sdk/events/fetchLiquidityChangeEvents.d.ts +0 -2
  440. package/dist/sui-sdk/events/fetchRebalanceEvents.d.ts +0 -4
  441. package/dist/sui-sdk/events/parseData.d.ts +0 -3
  442. package/dist/sui-sdk/events/types.d.ts +0 -93
  443. package/dist/sui-sdk/functions/fetchTableData.d.ts +0 -49
  444. package/dist/sui-sdk/functions/fetchUserVaultBalances.d.ts +0 -2
  445. package/dist/sui-sdk/functions/fetchUserVaults.d.ts +0 -2
  446. package/dist/sui-sdk/functions/getPortfolioAmounts.d.ts +0 -32
  447. package/dist/sui-sdk/functions/getReceipts.d.ts +0 -10
  448. package/dist/sui-sdk/transactions/constants.d.ts +0 -3
  449. package/dist/sui-sdk/transactions/fetchTransactions.d.ts +0 -3
  450. package/dist/sui-sdk/transactions/types.d.ts +0 -7
  451. package/dist/types.d.ts +0 -212
  452. package/dist/utils/clmm/prices.d.ts +0 -19
  453. package/dist/utils/clmm/tokenAmountFromLiquidity.d.ts +0 -10
  454. package/dist/utils/clmm/types.d.ts +0 -24
  455. package/dist/utils/constants.d.ts +0 -2
  456. package/dist/utils/getHoldersFromTransactionsUtils.d.ts +0 -5
  457. package/dist/utils/getReceipts.d.ts +0 -3
  458. package/dist/utils/hop.d.ts +0 -15
  459. package/dist/utils/prices.d.ts +0 -6
  460. package/dist/utils/simpleCache.d.ts +0 -9
  461. package/dist/utils/types.d.ts +0 -4
  462. package/dist/utils/userHoldings.d.ts +0 -5
  463. package/dist/vaultFunctions.d.ts +0 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n CoinName,\n DoubleAssetPoolNames,\n PoolName,\n SingleAssetPoolNames,\n AlphaFiVaultBalance,\n} from \"./common/types.js\";\n\nexport type GetUserTokensFromTransactionsParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n owners?: string[];\n};\n\nexport type GetUserTokensInUsdFromTransactionsParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n owners?: string[];\n userTokensHoldings?: [string, string, string][];\n};\n\nexport type AlphaReceiptFields = {\n id: { id: string };\n image_url: string;\n last_acc_reward_per_xtoken: {\n type: string;\n fields: {\n contents: [\n {\n type: string;\n fields: {\n key: {\n type: string;\n fields: {\n name: string;\n };\n };\n value: string;\n };\n },\n ];\n };\n };\n locked_balance: {\n type: string;\n fields: {\n head: string;\n id: {\n id: string;\n };\n size: string;\n tail: string;\n };\n };\n name: string;\n owner: string;\n pending_rewards: {\n type: string;\n fields: {\n contents: [\n {\n type: string;\n fields: {\n key: {\n type: string;\n fields: {\n name: string;\n };\n };\n value: string;\n };\n },\n ];\n };\n };\n pool_id: string;\n unlocked_xtokens: string;\n xTokenBalance: string;\n};\n\nexport type OtherReceiptFields = {\n id: { id: string };\n image_url: string;\n last_acc_reward_per_xtoken: {\n fields: {\n contents: [\n {\n fields: {\n key: {\n fields: {\n name: string;\n };\n type: string;\n };\n value: string;\n };\n type: string;\n },\n ];\n };\n type: string;\n };\n name: string;\n owner: string;\n pending_rewards: {\n fields: {\n contents: [\n {\n fields: {\n key: {\n fields: {\n name: string;\n };\n type: string;\n };\n value: string;\n };\n type: string;\n },\n ];\n };\n type: string;\n };\n pool_id: string;\n xTokenBalance: string;\n};\n\nexport type GetHoldersParams = {\n poolNames?: string[];\n startTime?: number;\n endTime?: number;\n};\n\nexport type GetTokenHoldingsParams = {\n poolNames?: PoolName[];\n startTime?: number;\n endTime?: number;\n};\n\nexport type LiquidityToUsdParams = {\n liquidity: string;\n poolName: string;\n ticksCetusMap: { [pool: string]: { lower: string; upper: string } };\n sqrtPriceCetusMap: Map<PoolName, string>;\n tokenPriceMap: Map<CoinName, string>;\n};\n\nexport type LiquidityToTokensParams = {\n liquidity: string;\n poolName: string;\n ticksCetusMap: { [pool: string]: { lower: string; upper: string } };\n sqrtPriceCetusMap: Map<PoolName, string>;\n};\n\nexport type UserUsdHoldings = {\n user: string;\n poolName: PoolName;\n usdHoldings: string;\n};\n\nexport type UserPoolLiquidity = {\n user: string;\n poolName: string;\n liquidity: string;\n};\n\nexport type UserPoolTokenHoldings =\n | SingleAssetTokenHoldings\n | DoubleAssetTokenHoldings;\n\nexport type SingleAssetTokenHoldings = {\n user: string;\n poolName: SingleAssetPoolNames;\n tokens: string;\n};\n\nexport type DoubleAssetTokenHoldings = {\n user: string;\n poolName: DoubleAssetPoolNames;\n tokenAmountA: string;\n tokenAmountB: string;\n};\n\nexport type MultiGetVaultBalancesParams = {\n poolNames?: PoolName[];\n startTime?: number;\n endTime?: number;\n};\nexport type SingleGetVaultBalancesParams = {\n address?: string;\n poolName?: PoolName;\n};\nexport type GetVaultBalanceParams =\n | SingleGetVaultBalancesParams\n | MultiGetVaultBalancesParams;\n\nexport type HoldingsObj = {\n owner: string;\n poolName: PoolName;\n holding: string;\n};\n\nexport type VaultBalance =\n | AlphaFiVaultBalance\n | undefined\n | AlphaFiMultiVaultBalance[];\n\nexport type AlphaFiMultiVaultBalance =\n | SingleAssetMultiVaultBalance\n | DoubleAssetMultiVaultBalance;\n\nexport type SingleAssetMultiVaultBalance = {\n owner: string;\n poolName: PoolName;\n tokens: string;\n tokensInUsd: string;\n};\nexport type DoubleAssetMultiVaultBalance = {\n owner: string;\n poolName: PoolName;\n tokenA: string;\n tokenB: string;\n tokensInUsd: string;\n};\n\nexport type GetVaultBalanceForActiveUsersParams = {\n poolNames?: PoolName[];\n startTime?: number;\n endTime?: number;\n};\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../../../src/utils/clmm/prices.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,IAAI,EAGJ,oBAAoB,EAKrB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAiGjE,wBAAsB,aAAa,CACjC,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyC7B;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgBhE;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgBhE;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEzE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAe;gBAEnB,UAAU,EAAE,UAAU;IAK5B,QAAQ,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,IAAI,CAAA;KAAE,EAAE;IAoChD,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkClE,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC;IA0C/D,0BAA0B,CAC9B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,CAAC;CA6ExB"}
@@ -0,0 +1,309 @@
1
+ import { Percentage, adjustForSlippage, ClmmPoolUtil, TickMath, d, CetusClmmSDK, } from "@cetusprotocol/cetus-sui-clmm-sdk";
2
+ import BN from "bn.js";
3
+ import { coins } from "../../common/coins.js";
4
+ import { cetusMainnetSDKOptions } from "../../common/cetus_mainnet_config.js";
5
+ import { getLatestPrice } from "../prices.js";
6
+ import { SimpleCache } from "../simpleCache.js";
7
+ const poolData = {
8
+ "SUI/USDC": {
9
+ pair: "SUI/USDC",
10
+ id: "0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630",
11
+ a2b: false,
12
+ },
13
+ "USDC/SUI": {
14
+ pair: "USDC/SUI",
15
+ id: "0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630",
16
+ a2b: true,
17
+ },
18
+ "SUI/USDT": {
19
+ pair: "SUI/USDT",
20
+ id: "0x06d8af9e6afd27262db436f0d37b304a041f710c3ea1fa4c3a9bab36b3569ad3",
21
+ a2b: false,
22
+ },
23
+ "USDT/SUI": {
24
+ pair: "USDT/SUI",
25
+ id: "0x06d8af9e6afd27262db436f0d37b304a041f710c3ea1fa4c3a9bab36b3569ad3",
26
+ a2b: true,
27
+ },
28
+ "USDC/USDT": {
29
+ pair: "USDC/USDT",
30
+ id: "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20",
31
+ a2b: false,
32
+ },
33
+ "USDT/USDC": {
34
+ pair: "USDT/USDC",
35
+ id: "0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20",
36
+ a2b: true,
37
+ },
38
+ "SUI/VSUI": {
39
+ pair: "SUI/VSUI",
40
+ id: "0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535",
41
+ a2b: false,
42
+ },
43
+ "VSUI/SUI": {
44
+ pair: "VSUI/SUI",
45
+ id: "0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535",
46
+ a2b: true,
47
+ },
48
+ "SUI/NAVX": {
49
+ pair: "SUI/NAVX",
50
+ id: "0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703",
51
+ a2b: false,
52
+ },
53
+ "NAVX/SUI": {
54
+ pair: "NAVX/SUI",
55
+ id: "0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703",
56
+ a2b: true,
57
+ },
58
+ "ALPHA/SUI": {
59
+ pair: "ALPHA/SUI",
60
+ id: "0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720",
61
+ a2b: true,
62
+ },
63
+ "SUI/ALPHA": {
64
+ pair: "ALPHA/SUI",
65
+ id: "0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720",
66
+ a2b: false,
67
+ },
68
+ "USDY/USDC": {
69
+ pair: "USDY/USDC",
70
+ id: "0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d",
71
+ a2b: true,
72
+ },
73
+ "USDC/USDY": {
74
+ pair: "USDY/USDC",
75
+ id: "0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d",
76
+ a2b: false,
77
+ },
78
+ "BUCK/USDC": {
79
+ pair: "BUCK/USDC",
80
+ id: "0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5",
81
+ a2b: true,
82
+ },
83
+ "USDC/BUCK": {
84
+ pair: "USDC/BUCK",
85
+ id: "0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5",
86
+ a2b: false,
87
+ },
88
+ };
89
+ const alphaPricePromiseCache = new SimpleCache(60000);
90
+ const alphaPriceCache = new SimpleCache(60000);
91
+ export async function getAlphaPrice(ignoreCache = false) {
92
+ const cacheKey = `getAlphaPrice`;
93
+ if (ignoreCache) {
94
+ alphaPriceCache.delete(cacheKey);
95
+ alphaPricePromiseCache.delete(cacheKey);
96
+ }
97
+ const cachedResponse = alphaPriceCache.get(cacheKey);
98
+ if (cachedResponse) {
99
+ return cachedResponse;
100
+ }
101
+ let alphaPrice = 0;
102
+ let cachedPromise = alphaPricePromiseCache.get(cacheKey);
103
+ if (!cachedPromise) {
104
+ cachedPromise = (async () => {
105
+ const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);
106
+ const swapOption = {
107
+ pair: { coinA: coins.ALPHA, coinB: coins.SUI },
108
+ senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
109
+ slippage: 1,
110
+ inAmount: new BN(1_000_000_000),
111
+ };
112
+ const res = await cetusGateway.getPrice(swapOption);
113
+ const latestSuiPrice = await getLatestPrice("SUI/USD");
114
+ if (latestSuiPrice) {
115
+ alphaPrice =
116
+ res.estimatedAmountOut.toNumber() * Number(latestSuiPrice) * 1e-9;
117
+ alphaPriceCache.set(cacheKey, alphaPrice);
118
+ alphaPricePromiseCache.delete(cacheKey); // Remove the promise from cache
119
+ }
120
+ return alphaPrice;
121
+ })().catch((error) => {
122
+ alphaPricePromiseCache.delete(cacheKey); // Remove the promise from cache
123
+ throw error;
124
+ });
125
+ alphaPricePromiseCache.set(cacheKey, cachedPromise);
126
+ }
127
+ return cachedPromise;
128
+ }
129
+ export async function getUSDYPrice() {
130
+ const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);
131
+ const swapOption = {
132
+ pair: { coinA: coins.USDY, coinB: coins.USDC },
133
+ senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
134
+ slippage: 1,
135
+ inAmount: new BN(1_000_000),
136
+ };
137
+ const res = await cetusGateway.getPrice(swapOption);
138
+ const latestUSDCPrice = await getLatestPrice("USDC/USD");
139
+ if (latestUSDCPrice) {
140
+ return res.estimatedAmountOut.toNumber() * Number(latestUSDCPrice) * 1e-6;
141
+ }
142
+ else {
143
+ return undefined;
144
+ }
145
+ }
146
+ export async function getBUCKPrice() {
147
+ const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);
148
+ const swapOption = {
149
+ pair: { coinA: coins.BUCK, coinB: coins.USDC },
150
+ senderAddress: "0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e",
151
+ slippage: 1,
152
+ inAmount: new BN(1_000_000_000),
153
+ };
154
+ const res = await cetusGateway.getPrice(swapOption);
155
+ const latestUSDCPrice = await getLatestPrice("USDC/USD");
156
+ if (latestUSDCPrice) {
157
+ return res.estimatedAmountOut.toNumber() * Number(latestUSDCPrice) * 1e-6;
158
+ }
159
+ else {
160
+ return undefined;
161
+ }
162
+ }
163
+ export async function getPriceFromCetus(coinType) {
164
+ return coinType;
165
+ }
166
+ export class CetusGateway {
167
+ cetusSDK;
168
+ constructor(sdkOptions) {
169
+ this.cetusSDK = new CetusClmmSDK(sdkOptions);
170
+ this.cetusSDK.senderAddress = sdkOptions.simulationAccount.address;
171
+ }
172
+ async getPools(pairs) {
173
+ const allPools = await this.cetusSDK.Pool.getPoolsWithPage([]);
174
+ const matchedPools = [];
175
+ pairs.forEach((pair) => {
176
+ const filteredPools = allPools.filter((pool) => {
177
+ if (pair.coinA && pair.coinB) {
178
+ return ((pool.coinTypeA === pair.coinA.type &&
179
+ pool.coinTypeB === pair.coinB.type) ||
180
+ (pool.coinTypeA === pair.coinB.type &&
181
+ pool.coinTypeB === pair.coinA.type));
182
+ }
183
+ else if (pair.coinA && !pair.coinB) {
184
+ return (pool.coinTypeA === pair.coinA.type ||
185
+ pool.coinTypeB === pair.coinA.type);
186
+ }
187
+ else if (!pair.coinA && pair.coinB) {
188
+ return (pool.coinTypeB === pair.coinB.type ||
189
+ pool.coinTypeB === pair.coinB.type);
190
+ }
191
+ else {
192
+ return undefined;
193
+ }
194
+ });
195
+ matchedPools.push(...filteredPools);
196
+ });
197
+ console.log(matchedPools);
198
+ console.log(`Matched pools for specified pairs: ${matchedPools.length}`);
199
+ console.log(`Total pools: ${allPools.length}`);
200
+ return matchedPools;
201
+ }
202
+ async getPrice(options) {
203
+ const { pair, inAmount, outAmount } = options;
204
+ const poolDatum = poolData[pair.coinA.name + "/" + pair.coinB.name];
205
+ let amount = new BN(0);
206
+ let byAmountIn = true;
207
+ if (inAmount) {
208
+ byAmountIn = true;
209
+ amount = inAmount;
210
+ }
211
+ else if (outAmount) {
212
+ byAmountIn = false;
213
+ amount = outAmount;
214
+ }
215
+ const pool = await this.cetusSDK.Pool.getPool(poolDatum.id);
216
+ const swapTicks = await this.cetusSDK.Pool.fetchTicks({
217
+ pool_id: pool.poolAddress,
218
+ coinTypeA: pool.coinTypeA,
219
+ coinTypeB: pool.coinTypeB,
220
+ });
221
+ const res = this.cetusSDK.Swap.calculateRates({
222
+ decimalsA: pair.coinA.expo,
223
+ decimalsB: pair.coinB.expo,
224
+ a2b: poolDatum.a2b,
225
+ byAmountIn,
226
+ amount,
227
+ swapTicks,
228
+ currentPool: pool,
229
+ });
230
+ return res;
231
+ }
232
+ async getTransaction(options) {
233
+ const res = await this.getPrice(options);
234
+ const { pair, senderAddress, slippage, inAmount, outAmount } = options;
235
+ const poolDatum = poolData[pair.coinA.name + "/" + pair.coinB.name];
236
+ const poolID = poolDatum.id;
237
+ const pool = await this.cetusSDK.Pool.getPool(poolID);
238
+ let byAmountIn = true;
239
+ if (inAmount) {
240
+ byAmountIn = true;
241
+ }
242
+ else if (outAmount) {
243
+ byAmountIn = false;
244
+ }
245
+ const slippagePercentage = new Percentage(new BN(Math.floor(slippage * 100).toString()), new BN(100));
246
+ const toAmount = byAmountIn
247
+ ? res.estimatedAmountOut
248
+ : res.estimatedAmountIn;
249
+ const amountLimit = adjustForSlippage(toAmount, slippagePercentage, !byAmountIn);
250
+ // TransactionBlock
251
+ this.cetusSDK.senderAddress = senderAddress;
252
+ const txb = this.cetusSDK.Swap.createSwapTransactionPayload({
253
+ pool_id: pool.poolAddress,
254
+ coinTypeA: pool.coinTypeA,
255
+ coinTypeB: pool.coinTypeB,
256
+ a2b: poolDatum.a2b,
257
+ by_amount_in: byAmountIn,
258
+ amount: res.amount.toString(),
259
+ amount_limit: amountLimit.toString(),
260
+ });
261
+ return txb;
262
+ }
263
+ async createPoolTransactionBlock(options) {
264
+ console.log(d(options.initializePrice), coins[options.coinNameA].expo, coins[options.coinNameB].expo);
265
+ const initializeSqrtPrice = TickMath.priceToSqrtPriceX64(d(options.initializePrice), coins[options.coinNameA].expo, coins[options.coinNameB].expo).toString();
266
+ const current_tick_index = TickMath.sqrtPriceX64ToTickIndex(new BN(Math.floor(parseFloat(initializeSqrtPrice)).toString()));
267
+ // build tick range
268
+ const lowerTick = TickMath.getPrevInitializableTickIndex(new BN(Math.floor(current_tick_index).toString()).toNumber(), new BN(options.tickSpacing.toString()).toNumber());
269
+ const upperTick = TickMath.getNextInitializableTickIndex(new BN(Math.floor(current_tick_index).toString()).toNumber(), new BN(options.tickSpacing.toString()).toNumber());
270
+ // slippage value 0.05 means 5%
271
+ const slippage = 0.01;
272
+ // Estimate liquidity and token amount from one amounts
273
+ const liquidityInput = ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(lowerTick, upperTick, new BN(options.amount.toString()), options.isAmountA, true, slippage, new BN(initializeSqrtPrice.toString()));
274
+ // Estimate token a and token b amount
275
+ const amount_a = options.isAmountA
276
+ ? options.amount
277
+ : liquidityInput.tokenMaxA.toNumber();
278
+ const amount_b = options.isAmountA
279
+ ? liquidityInput.tokenMaxB.toNumber()
280
+ : options.amount;
281
+ console.log({
282
+ coinTypeA: coins[options.coinNameA].type,
283
+ coinTypeB: coins[options.coinNameB].type,
284
+ tick_spacing: options.tickSpacing,
285
+ initialize_sqrt_price: `${initializeSqrtPrice}`,
286
+ uri: options.imageUrl,
287
+ amount_a: amount_a,
288
+ amount_b: amount_b,
289
+ fix_amount_a: options.isAmountA,
290
+ tick_lower: lowerTick,
291
+ tick_upper: upperTick,
292
+ });
293
+ // build creatPoolPayload Payload
294
+ const txb = this.cetusSDK.Pool.creatPoolTransactionPayload({
295
+ coinTypeA: coins[options.coinNameA].type,
296
+ coinTypeB: coins[options.coinNameB].type,
297
+ tick_spacing: options.tickSpacing,
298
+ initialize_sqrt_price: `${initializeSqrtPrice}`,
299
+ uri: options.imageUrl,
300
+ amount_a: amount_a,
301
+ amount_b: amount_b,
302
+ fix_amount_a: options.isAmountA,
303
+ tick_lower: lowerTick,
304
+ tick_upper: upperTick,
305
+ });
306
+ return txb;
307
+ }
308
+ }
309
+ //# sourceMappingURL=prices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.js","sourceRoot":"","sources":["../../../../src/utils/clmm/prices.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n SdkOptions,\n Pool,\n Percentage,\n adjustForSlippage,\n CalculateRatesResult,\n ClmmPoolUtil,\n TickMath,\n d,\n CetusClmmSDK,\n} from \"@cetusprotocol/cetus-sui-clmm-sdk\";\nimport BN from \"bn.js\";\nimport { Transaction } from \"@mysten/sui/transactions\";\nimport { Coin } from \"../../common/types.js\";\nimport { coins } from \"../../common/coins.js\";\nimport { CetusSwapOptions, CreatePoolOptions } from \"./types.js\";\nimport { cetusMainnetSDKOptions } from \"../../common/cetus_mainnet_config.js\";\nimport { getLatestPrice } from \"../prices.js\";\nimport { SimpleCache } from \"../simpleCache.js\";\n\ninterface PoolData {\n pair: string;\n id: string;\n a2b: boolean;\n}\n\nconst poolData: { [key: string]: PoolData } = {\n \"SUI/USDC\": {\n pair: \"SUI/USDC\",\n id: \"0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630\",\n a2b: false,\n },\n \"USDC/SUI\": {\n pair: \"USDC/SUI\",\n id: \"0xcf994611fd4c48e277ce3ffd4d4364c914af2c3cbb05f7bf6facd371de688630\",\n a2b: true,\n },\n \"SUI/USDT\": {\n pair: \"SUI/USDT\",\n id: \"0x06d8af9e6afd27262db436f0d37b304a041f710c3ea1fa4c3a9bab36b3569ad3\",\n a2b: false,\n },\n \"USDT/SUI\": {\n pair: \"USDT/SUI\",\n id: \"0x06d8af9e6afd27262db436f0d37b304a041f710c3ea1fa4c3a9bab36b3569ad3\",\n a2b: true,\n },\n \"USDC/USDT\": {\n pair: \"USDC/USDT\",\n id: \"0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20\",\n a2b: false,\n },\n \"USDT/USDC\": {\n pair: \"USDT/USDC\",\n id: \"0xc8d7a1503dc2f9f5b05449a87d8733593e2f0f3e7bffd90541252782e4d2ca20\",\n a2b: true,\n },\n \"SUI/VSUI\": {\n pair: \"SUI/VSUI\",\n id: \"0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535\",\n a2b: false,\n },\n \"VSUI/SUI\": {\n pair: \"VSUI/SUI\",\n id: \"0x6c545e78638c8c1db7a48b282bb8ca79da107993fcb185f75cedc1f5adb2f535\",\n a2b: true,\n },\n \"SUI/NAVX\": {\n pair: \"SUI/NAVX\",\n id: \"0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703\",\n a2b: false,\n },\n \"NAVX/SUI\": {\n pair: \"NAVX/SUI\",\n id: \"0x0254747f5ca059a1972cd7f6016485d51392a3fde608107b93bbaebea550f703\",\n a2b: true,\n },\n \"ALPHA/SUI\": {\n pair: \"ALPHA/SUI\",\n id: \"0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720\",\n a2b: true,\n },\n \"SUI/ALPHA\": {\n pair: \"ALPHA/SUI\",\n id: \"0xda7347c3192a27ddac32e659c9d9cbed6f8c9d1344e605c71c8886d7b787d720\",\n a2b: false,\n },\n \"USDY/USDC\": {\n pair: \"USDY/USDC\",\n id: \"0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d\",\n a2b: true,\n },\n \"USDC/USDY\": {\n pair: \"USDY/USDC\",\n id: \"0x0e809689d04d87f4bd4e660cd1b84bf5448c5a7997e3d22fc480e7e5e0b3f58d\",\n a2b: false,\n },\n \"BUCK/USDC\": {\n pair: \"BUCK/USDC\",\n id: \"0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5\",\n a2b: true,\n },\n \"USDC/BUCK\": {\n pair: \"USDC/BUCK\",\n id: \"0x81fe26939ed676dd766358a60445341a06cea407ca6f3671ef30f162c84126d5\",\n a2b: false,\n },\n};\n\nconst alphaPricePromiseCache = new SimpleCache<Promise<number>>(60000);\nconst alphaPriceCache = new SimpleCache<number>(60000);\n\nexport async function getAlphaPrice(\n ignoreCache: boolean = false,\n): Promise<number | undefined> {\n const cacheKey = `getAlphaPrice`;\n if (ignoreCache) {\n alphaPriceCache.delete(cacheKey);\n alphaPricePromiseCache.delete(cacheKey);\n }\n const cachedResponse = alphaPriceCache.get(cacheKey);\n\n if (cachedResponse) {\n return cachedResponse;\n }\n let alphaPrice = 0;\n let cachedPromise = alphaPricePromiseCache.get(cacheKey);\n if (!cachedPromise) {\n cachedPromise = (async (): Promise<number> => {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coins.ALPHA, coinB: coins.SUI },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const latestSuiPrice = await getLatestPrice(\"SUI/USD\");\n if (latestSuiPrice) {\n alphaPrice =\n res.estimatedAmountOut.toNumber() * Number(latestSuiPrice) * 1e-9;\n alphaPriceCache.set(cacheKey, alphaPrice);\n alphaPricePromiseCache.delete(cacheKey); // Remove the promise from cache\n }\n return alphaPrice;\n })().catch((error) => {\n alphaPricePromiseCache.delete(cacheKey); // Remove the promise from cache\n throw error;\n });\n\n alphaPricePromiseCache.set(cacheKey, cachedPromise);\n }\n\n return cachedPromise;\n}\n\nexport async function getUSDYPrice(): Promise<number | undefined> {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coins.USDY, coinB: coins.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const latestUSDCPrice = await getLatestPrice(\"USDC/USD\");\n if (latestUSDCPrice) {\n return res.estimatedAmountOut.toNumber() * Number(latestUSDCPrice) * 1e-6;\n } else {\n return undefined;\n }\n}\n\nexport async function getBUCKPrice(): Promise<number | undefined> {\n const cetusGateway = new CetusGateway(cetusMainnetSDKOptions);\n const swapOption: CetusSwapOptions = {\n pair: { coinA: coins.BUCK, coinB: coins.USDC },\n senderAddress:\n \"0x4260738f0f7341adc79a8edaa62f8a4681ebd27c595aecab1f322f47bfc52c5e\",\n slippage: 1,\n inAmount: new BN(1_000_000_000),\n };\n const res = await cetusGateway.getPrice(swapOption);\n const latestUSDCPrice = await getLatestPrice(\"USDC/USD\");\n if (latestUSDCPrice) {\n return res.estimatedAmountOut.toNumber() * Number(latestUSDCPrice) * 1e-6;\n } else {\n return undefined;\n }\n}\n\nexport async function getPriceFromCetus(coinType: string): Promise<string> {\n return coinType;\n}\n\nexport class CetusGateway {\n private cetusSDK: CetusClmmSDK;\n\n constructor(sdkOptions: SdkOptions) {\n this.cetusSDK = new CetusClmmSDK(sdkOptions);\n this.cetusSDK.senderAddress = sdkOptions.simulationAccount.address;\n }\n\n async getPools(pairs: { coinA?: Coin; coinB?: Coin }[]) {\n const allPools = await this.cetusSDK.Pool.getPoolsWithPage([]);\n const matchedPools: Pool[] = [];\n\n pairs.forEach((pair) => {\n const filteredPools: Pool[] = allPools.filter((pool: Pool) => {\n if (pair.coinA && pair.coinB) {\n return (\n (pool.coinTypeA === pair.coinA.type &&\n pool.coinTypeB === pair.coinB.type) ||\n (pool.coinTypeA === pair.coinB.type &&\n pool.coinTypeB === pair.coinA.type)\n );\n } else if (pair.coinA && !pair.coinB) {\n return (\n pool.coinTypeA === pair.coinA.type ||\n pool.coinTypeB === pair.coinA.type\n );\n } else if (!pair.coinA && pair.coinB) {\n return (\n pool.coinTypeB === pair.coinB.type ||\n pool.coinTypeB === pair.coinB.type\n );\n } else {\n return undefined;\n }\n });\n matchedPools.push(...filteredPools);\n });\n\n console.log(matchedPools);\n console.log(`Matched pools for specified pairs: ${matchedPools.length}`);\n console.log(`Total pools: ${allPools.length}`);\n return matchedPools;\n }\n\n async getPrice(options: CetusSwapOptions): Promise<CalculateRatesResult> {\n const { pair, inAmount, outAmount } = options;\n const poolDatum = poolData[pair.coinA.name + \"/\" + pair.coinB.name];\n let amount: BN = new BN(0);\n let byAmountIn: boolean = true;\n if (inAmount) {\n byAmountIn = true;\n amount = inAmount;\n } else if (outAmount) {\n byAmountIn = false;\n amount = outAmount;\n }\n\n const pool = await this.cetusSDK.Pool.getPool(poolDatum.id);\n\n const swapTicks = await this.cetusSDK.Pool.fetchTicks({\n pool_id: pool.poolAddress,\n coinTypeA: pool.coinTypeA,\n coinTypeB: pool.coinTypeB,\n });\n\n const res = this.cetusSDK.Swap.calculateRates({\n decimalsA: pair.coinA.expo,\n decimalsB: pair.coinB.expo,\n a2b: poolDatum.a2b,\n byAmountIn,\n amount,\n swapTicks,\n currentPool: pool,\n });\n\n return res;\n }\n\n async getTransaction(options: CetusSwapOptions): Promise<Transaction> {\n const res = await this.getPrice(options);\n\n const { pair, senderAddress, slippage, inAmount, outAmount } = options;\n const poolDatum = poolData[pair.coinA.name + \"/\" + pair.coinB.name];\n const poolID = poolDatum.id;\n const pool = await this.cetusSDK.Pool.getPool(poolID);\n\n let byAmountIn: boolean = true;\n if (inAmount) {\n byAmountIn = true;\n } else if (outAmount) {\n byAmountIn = false;\n }\n\n const slippagePercentage = new Percentage(\n new BN(Math.floor(slippage * 100).toString()),\n new BN(100),\n );\n const toAmount = byAmountIn\n ? res.estimatedAmountOut\n : res.estimatedAmountIn;\n const amountLimit = adjustForSlippage(\n toAmount,\n slippagePercentage,\n !byAmountIn,\n );\n // TransactionBlock\n this.cetusSDK.senderAddress = senderAddress;\n const txb = this.cetusSDK.Swap.createSwapTransactionPayload({\n pool_id: pool.poolAddress,\n coinTypeA: pool.coinTypeA,\n coinTypeB: pool.coinTypeB,\n a2b: poolDatum.a2b,\n by_amount_in: byAmountIn,\n amount: res.amount.toString(),\n amount_limit: amountLimit.toString(),\n });\n\n return txb;\n }\n\n async createPoolTransactionBlock(\n options: CreatePoolOptions,\n ): Promise<Transaction> {\n console.log(\n d(options.initializePrice),\n coins[options.coinNameA].expo,\n coins[options.coinNameB].expo,\n );\n\n const initializeSqrtPrice = TickMath.priceToSqrtPriceX64(\n d(options.initializePrice),\n coins[options.coinNameA].expo,\n coins[options.coinNameB].expo,\n ).toString();\n\n const current_tick_index = TickMath.sqrtPriceX64ToTickIndex(\n new BN(Math.floor(parseFloat(initializeSqrtPrice)).toString()),\n );\n\n // build tick range\n const lowerTick = TickMath.getPrevInitializableTickIndex(\n new BN(Math.floor(current_tick_index).toString()).toNumber(),\n new BN(options.tickSpacing.toString()).toNumber(),\n );\n const upperTick = TickMath.getNextInitializableTickIndex(\n new BN(Math.floor(current_tick_index).toString()).toNumber(),\n new BN(options.tickSpacing.toString()).toNumber(),\n );\n\n // slippage value 0.05 means 5%\n const slippage = 0.01;\n // Estimate liquidity and token amount from one amounts\n const liquidityInput = ClmmPoolUtil.estLiquidityAndcoinAmountFromOneAmounts(\n lowerTick,\n upperTick,\n new BN(options.amount.toString()),\n options.isAmountA,\n true,\n slippage,\n new BN(initializeSqrtPrice.toString()),\n );\n\n // Estimate token a and token b amount\n const amount_a = options.isAmountA\n ? options.amount\n : liquidityInput.tokenMaxA.toNumber();\n const amount_b = options.isAmountA\n ? liquidityInput.tokenMaxB.toNumber()\n : options.amount;\n\n console.log({\n coinTypeA: coins[options.coinNameA].type,\n coinTypeB: coins[options.coinNameB].type,\n tick_spacing: options.tickSpacing,\n initialize_sqrt_price: `${initializeSqrtPrice}`,\n uri: options.imageUrl,\n amount_a: amount_a,\n amount_b: amount_b,\n fix_amount_a: options.isAmountA,\n tick_lower: lowerTick,\n tick_upper: upperTick,\n });\n\n // build creatPoolPayload Payload\n const txb = this.cetusSDK.Pool.creatPoolTransactionPayload({\n coinTypeA: coins[options.coinNameA].type,\n coinTypeB: coins[options.coinNameB].type,\n tick_spacing: options.tickSpacing,\n initialize_sqrt_price: `${initializeSqrtPrice}`,\n uri: options.imageUrl,\n amount_a: amount_a,\n amount_b: amount_b,\n fix_amount_a: options.isAmountA,\n tick_lower: lowerTick,\n tick_upper: upperTick,\n });\n\n return txb;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenAmountFromLiquidity.d.ts","sourceRoot":"","sources":["../../../../src/utils/clmm/tokenAmountFromLiquidity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,MAAM,OAAO,CAAC;AAGvB,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,MAIzE;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAyIpE;AAED,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,aAsH7D;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,aAKxD;AAKD,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,MAAM,EACxB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,OAAO,GACf;IAAE,YAAY,EAAE,SAAS,CAAC;IAAC,YAAY,EAAE,SAAS,CAAA;CAAE,CA0CtD"}
@@ -0,0 +1,188 @@
1
+ /* eslint-disable no-bitwise */
2
+ import { BigNumber } from "bignumber.js";
3
+ import BN from "bn.js";
4
+ import { Decimal } from "decimal.js";
5
+ export function signedShiftRight(n0, shiftBy, bitWidth) {
6
+ const twoN0 = n0.toTwos(bitWidth).shrn(shiftBy);
7
+ twoN0.imaskn(bitWidth - shiftBy + 1);
8
+ return twoN0.fromTwos(bitWidth - shiftBy);
9
+ }
10
+ export function tickIndexToSqrtPricePositive(tick) {
11
+ let ratio;
12
+ if ((tick & 1) !== 0) {
13
+ ratio = new BN("79232123823359799118286999567");
14
+ }
15
+ else {
16
+ ratio = new BN("79228162514264337593543950336");
17
+ }
18
+ if ((tick & 2) !== 0) {
19
+ ratio = signedShiftRight(ratio.mul(new BN("79236085330515764027303304731")), 96, 256);
20
+ }
21
+ if ((tick & 4) !== 0) {
22
+ ratio = signedShiftRight(ratio.mul(new BN("79244008939048815603706035061")), 96, 256);
23
+ }
24
+ if ((tick & 8) !== 0) {
25
+ ratio = signedShiftRight(ratio.mul(new BN("79259858533276714757314932305")), 96, 256);
26
+ }
27
+ if ((tick & 16) !== 0) {
28
+ ratio = signedShiftRight(ratio.mul(new BN("79291567232598584799939703904")), 96, 256);
29
+ }
30
+ if ((tick & 32) !== 0) {
31
+ ratio = signedShiftRight(ratio.mul(new BN("79355022692464371645785046466")), 96, 256);
32
+ }
33
+ if ((tick & 64) !== 0) {
34
+ ratio = signedShiftRight(ratio.mul(new BN("79482085999252804386437311141")), 96, 256);
35
+ }
36
+ if ((tick & 128) !== 0) {
37
+ ratio = signedShiftRight(ratio.mul(new BN("79736823300114093921829183326")), 96, 256);
38
+ }
39
+ if ((tick & 256) !== 0) {
40
+ ratio = signedShiftRight(ratio.mul(new BN("80248749790819932309965073892")), 96, 256);
41
+ }
42
+ if ((tick & 512) !== 0) {
43
+ ratio = signedShiftRight(ratio.mul(new BN("81282483887344747381513967011")), 96, 256);
44
+ }
45
+ if ((tick & 1024) !== 0) {
46
+ ratio = signedShiftRight(ratio.mul(new BN("83390072131320151908154831281")), 96, 256);
47
+ }
48
+ if ((tick & 2048) !== 0) {
49
+ ratio = signedShiftRight(ratio.mul(new BN("87770609709833776024991924138")), 96, 256);
50
+ }
51
+ if ((tick & 4096) !== 0) {
52
+ ratio = signedShiftRight(ratio.mul(new BN("97234110755111693312479820773")), 96, 256);
53
+ }
54
+ if ((tick & 8192) !== 0) {
55
+ ratio = signedShiftRight(ratio.mul(new BN("119332217159966728226237229890")), 96, 256);
56
+ }
57
+ if ((tick & 16384) !== 0) {
58
+ ratio = signedShiftRight(ratio.mul(new BN("179736315981702064433883588727")), 96, 256);
59
+ }
60
+ if ((tick & 32768) !== 0) {
61
+ ratio = signedShiftRight(ratio.mul(new BN("407748233172238350107850275304")), 96, 256);
62
+ }
63
+ if ((tick & 65536) !== 0) {
64
+ ratio = signedShiftRight(ratio.mul(new BN("2098478828474011932436660412517")), 96, 256);
65
+ }
66
+ if ((tick & 131072) !== 0) {
67
+ ratio = signedShiftRight(ratio.mul(new BN("55581415166113811149459800483533")), 96, 256);
68
+ }
69
+ if ((tick & 262144) !== 0) {
70
+ ratio = signedShiftRight(ratio.mul(new BN("38992368544603139932233054999993551")), 96, 256);
71
+ }
72
+ return new BigNumber(signedShiftRight(ratio, 32, 256).toString());
73
+ }
74
+ export function tickIndexToSqrtPriceNegative(tickIndex) {
75
+ const tick = Math.abs(tickIndex);
76
+ let ratio;
77
+ if ((tick & 1) !== 0) {
78
+ ratio = new BN("18445821805675392311");
79
+ }
80
+ else {
81
+ ratio = new BN("18446744073709551616");
82
+ }
83
+ if ((tick & 2) !== 0) {
84
+ ratio = signedShiftRight(ratio.mul(new BN("18444899583751176498")), 64, 256);
85
+ }
86
+ if ((tick & 4) !== 0) {
87
+ ratio = signedShiftRight(ratio.mul(new BN("18443055278223354162")), 64, 256);
88
+ }
89
+ if ((tick & 8) !== 0) {
90
+ ratio = signedShiftRight(ratio.mul(new BN("18439367220385604838")), 64, 256);
91
+ }
92
+ if ((tick & 16) !== 0) {
93
+ ratio = signedShiftRight(ratio.mul(new BN("18431993317065449817")), 64, 256);
94
+ }
95
+ if ((tick & 32) !== 0) {
96
+ ratio = signedShiftRight(ratio.mul(new BN("18417254355718160513")), 64, 256);
97
+ }
98
+ if ((tick & 64) !== 0) {
99
+ ratio = signedShiftRight(ratio.mul(new BN("18387811781193591352")), 64, 256);
100
+ }
101
+ if ((tick & 128) !== 0) {
102
+ ratio = signedShiftRight(ratio.mul(new BN("18329067761203520168")), 64, 256);
103
+ }
104
+ if ((tick & 256) !== 0) {
105
+ ratio = signedShiftRight(ratio.mul(new BN("18212142134806087854")), 64, 256);
106
+ }
107
+ if ((tick & 512) !== 0) {
108
+ ratio = signedShiftRight(ratio.mul(new BN("17980523815641551639")), 64, 256);
109
+ }
110
+ if ((tick & 1024) !== 0) {
111
+ ratio = signedShiftRight(ratio.mul(new BN("17526086738831147013")), 64, 256);
112
+ }
113
+ if ((tick & 2048) !== 0) {
114
+ ratio = signedShiftRight(ratio.mul(new BN("16651378430235024244")), 64, 256);
115
+ }
116
+ if ((tick & 4096) !== 0) {
117
+ ratio = signedShiftRight(ratio.mul(new BN("15030750278693429944")), 64, 256);
118
+ }
119
+ if ((tick & 8192) !== 0) {
120
+ ratio = signedShiftRight(ratio.mul(new BN("12247334978882834399")), 64, 256);
121
+ }
122
+ if ((tick & 16384) !== 0) {
123
+ ratio = signedShiftRight(ratio.mul(new BN("8131365268884726200")), 64, 256);
124
+ }
125
+ if ((tick & 32768) !== 0) {
126
+ ratio = signedShiftRight(ratio.mul(new BN("3584323654723342297")), 64, 256);
127
+ }
128
+ if ((tick & 65536) !== 0) {
129
+ ratio = signedShiftRight(ratio.mul(new BN("696457651847595233")), 64, 256);
130
+ }
131
+ if ((tick & 131072) !== 0) {
132
+ ratio = signedShiftRight(ratio.mul(new BN("26294789957452057")), 64, 256);
133
+ }
134
+ if ((tick & 262144) !== 0) {
135
+ ratio = signedShiftRight(ratio.mul(new BN("37481735321082")), 64, 256);
136
+ }
137
+ return new BigNumber(ratio.toString());
138
+ }
139
+ export function tickIndexToSqrtPriceX64(tickIndex) {
140
+ if (tickIndex > 0) {
141
+ return new BigNumber(tickIndexToSqrtPricePositive(tickIndex));
142
+ }
143
+ return new BigNumber(tickIndexToSqrtPriceNegative(tickIndex));
144
+ }
145
+ const fromX64Decimal = (num) => num.times(Decimal.pow(2, -64));
146
+ const toX64Decimal = (num) => num.times(Decimal.pow(2, 64));
147
+ export function getTokenAmountsFromLiquidity(liquidity, tickCurrentIndex, tickLowerIndex, tickUpperIndex, roundUp) {
148
+ const currentSqrtPrice = tickIndexToSqrtPriceX64(tickCurrentIndex);
149
+ const lowerSqrtPrice = tickIndexToSqrtPriceX64(tickLowerIndex);
150
+ const upperSqrtPrice = tickIndexToSqrtPriceX64(tickUpperIndex);
151
+ const decLiquidity = new Decimal(liquidity.toString());
152
+ const currentPrice = new Decimal(currentSqrtPrice.toString());
153
+ const lowerPrice = new Decimal(lowerSqrtPrice.toString());
154
+ const upperPrice = new Decimal(upperSqrtPrice.toString());
155
+ let tokenA;
156
+ let tokenB;
157
+ if (currentSqrtPrice.lt(lowerSqrtPrice)) {
158
+ // x = L * (pb - pa) / (pa * pb)
159
+ tokenA = toX64Decimal(decLiquidity)
160
+ .times(upperPrice.sub(lowerPrice))
161
+ .div(lowerPrice.mul(upperPrice));
162
+ tokenB = new Decimal(0);
163
+ }
164
+ else if (currentSqrtPrice.lt(upperSqrtPrice)) {
165
+ // x = L * (pb - p) / (p * pb)
166
+ // y = L * (p - pa)
167
+ tokenA = toX64Decimal(decLiquidity)
168
+ .times(upperPrice.sub(currentPrice))
169
+ .div(currentPrice.mul(upperPrice));
170
+ tokenB = fromX64Decimal(decLiquidity.mul(currentPrice.sub(lowerPrice)));
171
+ }
172
+ else {
173
+ // y = L * (pb - pa)
174
+ tokenA = new Decimal(0);
175
+ tokenB = fromX64Decimal(decLiquidity.mul(upperPrice.sub(lowerPrice)));
176
+ }
177
+ if (roundUp) {
178
+ return {
179
+ tokenAmountA: new BigNumber(tokenA.ceil().toString()),
180
+ tokenAmountB: new BigNumber(tokenB.ceil().toString()),
181
+ };
182
+ }
183
+ return {
184
+ tokenAmountA: new BigNumber(tokenA.floor().toString()),
185
+ tokenAmountB: new BigNumber(tokenB.floor().toString()),
186
+ };
187
+ }
188
+ //# sourceMappingURL=tokenAmountFromLiquidity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenAmountFromLiquidity.js","sourceRoot":"","sources":["../../../../src/utils/clmm/tokenAmountFromLiquidity.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-bitwise */\nimport { BigNumber } from \"bignumber.js\";\nimport BN from \"bn.js\";\nimport { Decimal } from \"decimal.js\";\n\nexport function signedShiftRight(n0: BN, shiftBy: number, bitWidth: number) {\n const twoN0 = n0.toTwos(bitWidth).shrn(shiftBy);\n twoN0.imaskn(bitWidth - shiftBy + 1);\n return twoN0.fromTwos(bitWidth - shiftBy);\n}\n\nexport function tickIndexToSqrtPricePositive(tick: number): BigNumber {\n let ratio: BN;\n\n if ((tick & 1) !== 0) {\n ratio = new BN(\"79232123823359799118286999567\");\n } else {\n ratio = new BN(\"79228162514264337593543950336\");\n }\n\n if ((tick & 2) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"79236085330515764027303304731\")),\n 96,\n 256,\n );\n }\n if ((tick & 4) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"79244008939048815603706035061\")),\n 96,\n 256,\n );\n }\n if ((tick & 8) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"79259858533276714757314932305\")),\n 96,\n 256,\n );\n }\n if ((tick & 16) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"79291567232598584799939703904\")),\n 96,\n 256,\n );\n }\n if ((tick & 32) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"79355022692464371645785046466\")),\n 96,\n 256,\n );\n }\n if ((tick & 64) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"79482085999252804386437311141\")),\n 96,\n 256,\n );\n }\n if ((tick & 128) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"79736823300114093921829183326\")),\n 96,\n 256,\n );\n }\n if ((tick & 256) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"80248749790819932309965073892\")),\n 96,\n 256,\n );\n }\n if ((tick & 512) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"81282483887344747381513967011\")),\n 96,\n 256,\n );\n }\n if ((tick & 1024) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"83390072131320151908154831281\")),\n 96,\n 256,\n );\n }\n if ((tick & 2048) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"87770609709833776024991924138\")),\n 96,\n 256,\n );\n }\n if ((tick & 4096) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"97234110755111693312479820773\")),\n 96,\n 256,\n );\n }\n if ((tick & 8192) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"119332217159966728226237229890\")),\n 96,\n 256,\n );\n }\n if ((tick & 16384) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"179736315981702064433883588727\")),\n 96,\n 256,\n );\n }\n if ((tick & 32768) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"407748233172238350107850275304\")),\n 96,\n 256,\n );\n }\n if ((tick & 65536) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"2098478828474011932436660412517\")),\n 96,\n 256,\n );\n }\n if ((tick & 131072) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"55581415166113811149459800483533\")),\n 96,\n 256,\n );\n }\n if ((tick & 262144) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"38992368544603139932233054999993551\")),\n 96,\n 256,\n );\n }\n\n return new BigNumber(signedShiftRight(ratio, 32, 256).toString());\n}\n\nexport function tickIndexToSqrtPriceNegative(tickIndex: number) {\n const tick = Math.abs(tickIndex);\n let ratio: BN;\n\n if ((tick & 1) !== 0) {\n ratio = new BN(\"18445821805675392311\");\n } else {\n ratio = new BN(\"18446744073709551616\");\n }\n\n if ((tick & 2) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"18444899583751176498\")),\n 64,\n 256,\n );\n }\n if ((tick & 4) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"18443055278223354162\")),\n 64,\n 256,\n );\n }\n if ((tick & 8) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"18439367220385604838\")),\n 64,\n 256,\n );\n }\n if ((tick & 16) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"18431993317065449817\")),\n 64,\n 256,\n );\n }\n if ((tick & 32) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"18417254355718160513\")),\n 64,\n 256,\n );\n }\n if ((tick & 64) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"18387811781193591352\")),\n 64,\n 256,\n );\n }\n if ((tick & 128) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"18329067761203520168\")),\n 64,\n 256,\n );\n }\n if ((tick & 256) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"18212142134806087854\")),\n 64,\n 256,\n );\n }\n if ((tick & 512) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"17980523815641551639\")),\n 64,\n 256,\n );\n }\n if ((tick & 1024) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"17526086738831147013\")),\n 64,\n 256,\n );\n }\n if ((tick & 2048) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"16651378430235024244\")),\n 64,\n 256,\n );\n }\n if ((tick & 4096) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"15030750278693429944\")),\n 64,\n 256,\n );\n }\n if ((tick & 8192) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN(\"12247334978882834399\")),\n 64,\n 256,\n );\n }\n if ((tick & 16384) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN(\"8131365268884726200\")), 64, 256);\n }\n if ((tick & 32768) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN(\"3584323654723342297\")), 64, 256);\n }\n if ((tick & 65536) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN(\"696457651847595233\")), 64, 256);\n }\n if ((tick & 131072) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN(\"26294789957452057\")), 64, 256);\n }\n if ((tick & 262144) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN(\"37481735321082\")), 64, 256);\n }\n\n return new BigNumber(ratio.toString());\n}\n\nexport function tickIndexToSqrtPriceX64(tickIndex: number) {\n if (tickIndex > 0) {\n return new BigNumber(tickIndexToSqrtPricePositive(tickIndex));\n }\n return new BigNumber(tickIndexToSqrtPriceNegative(tickIndex));\n}\n\nconst fromX64Decimal = (num: Decimal) => num.times(Decimal.pow(2, -64));\nconst toX64Decimal = (num: Decimal) => num.times(Decimal.pow(2, 64));\n\nexport function getTokenAmountsFromLiquidity(\n liquidity: BigNumber,\n tickCurrentIndex: number,\n tickLowerIndex: number,\n tickUpperIndex: number,\n roundUp: boolean,\n): { tokenAmountA: BigNumber; tokenAmountB: BigNumber } {\n const currentSqrtPrice = tickIndexToSqrtPriceX64(tickCurrentIndex);\n const lowerSqrtPrice = tickIndexToSqrtPriceX64(tickLowerIndex);\n const upperSqrtPrice = tickIndexToSqrtPriceX64(tickUpperIndex);\n\n const decLiquidity = new Decimal(liquidity.toString());\n const currentPrice = new Decimal(currentSqrtPrice.toString());\n const lowerPrice = new Decimal(lowerSqrtPrice.toString());\n const upperPrice = new Decimal(upperSqrtPrice.toString());\n let tokenA: Decimal;\n let tokenB: Decimal;\n\n if (currentSqrtPrice.lt(lowerSqrtPrice)) {\n // x = L * (pb - pa) / (pa * pb)\n tokenA = toX64Decimal(decLiquidity)\n .times(upperPrice.sub(lowerPrice))\n .div(lowerPrice.mul(upperPrice));\n tokenB = new Decimal(0);\n } else if (currentSqrtPrice.lt(upperSqrtPrice)) {\n // x = L * (pb - p) / (p * pb)\n // y = L * (p - pa)\n tokenA = toX64Decimal(decLiquidity)\n .times(upperPrice.sub(currentPrice))\n .div(currentPrice.mul(upperPrice));\n tokenB = fromX64Decimal(decLiquidity.mul(currentPrice.sub(lowerPrice)));\n } else {\n // y = L * (pb - pa)\n tokenA = new Decimal(0);\n tokenB = fromX64Decimal(decLiquidity.mul(upperPrice.sub(lowerPrice)));\n }\n\n if (roundUp) {\n return {\n tokenAmountA: new BigNumber(tokenA.ceil().toString()),\n tokenAmountB: new BigNumber(tokenB.ceil().toString()),\n };\n }\n\n return {\n tokenAmountA: new BigNumber(tokenA.floor().toString()),\n tokenAmountB: new BigNumber(tokenB.floor().toString()),\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/utils/clmm/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvB,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;AAE5C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,QAAQ,CAAC;IACpB,SAAS,EAAE,QAAQ,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,CAAC;IAAE,QAAQ,EAAE,EAAE,CAAC;IAAC,SAAS,CAAC,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/utils/clmm/types.ts"],"names":[],"mappings":"","sourcesContent":["import { CoinName, CoinPair } from \"../../common/types.js\";\nimport BN from \"bn.js\";\n\nexport type CetusSwapOptions = SwapOptions;\n\nexport type TickSpacing = 2 | 10 | 60 | 200;\n\nexport type CreatePoolOptions = {\n tickSpacing: TickSpacing;\n initializePrice: number;\n imageUrl: string;\n coinNameA: CoinName;\n coinNameB: CoinName;\n amount: number;\n isAmountA: boolean;\n};\n\nexport type SwapOptions = {\n pair: CoinPair;\n senderAddress: string;\n slippage: number;\n} & ({ inAmount: BN; outAmount?: never } | { outAmount: BN; inAmount?: never });\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,eAAO,MAAM,aAAa,EAAE,aAqH3B,CAAC"}