@upshiftfinance/sdk 0.0.0-stage → 0.2.0

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 (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +408 -2
  3. package/lib/abis/AddressResolver.d.ts +28 -0
  4. package/lib/abis/AddressResolver.js +23 -0
  5. package/lib/abis/ChainlinkV3.d.ts +87 -0
  6. package/lib/abis/ChainlinkV3.js +117 -0
  7. package/lib/abis/ERC20.d.ts +168 -0
  8. package/lib/abis/ERC20.js +226 -0
  9. package/lib/abis/ERC20_Bytes32.d.ts +139 -0
  10. package/lib/abis/ERC20_Bytes32.js +196 -0
  11. package/lib/abis/ERC4626.d.ts +364 -0
  12. package/lib/abis/ERC4626.js +507 -0
  13. package/lib/abis/ERC721.d.ts +231 -0
  14. package/lib/abis/ERC721.js +321 -0
  15. package/lib/abis/FeeOracle.d.ts +120 -0
  16. package/lib/abis/FeeOracle.js +162 -0
  17. package/lib/abis/LendingPool.d.ts +1393 -0
  18. package/lib/abis/LendingPool.js +1807 -0
  19. package/lib/abis/LendingPoolV2.d.ts +1413 -0
  20. package/lib/abis/LendingPoolV2.js +1833 -0
  21. package/lib/abis/LendingPoolV3.d.ts +1677 -0
  22. package/lib/abis/LendingPoolV3.js +1160 -0
  23. package/lib/abis/Loan.d.ts +837 -0
  24. package/lib/abis/Loan.js +1080 -0
  25. package/lib/abis/MultiAssetNativeDepositWrapper.d.ts +137 -0
  26. package/lib/abis/MultiAssetNativeDepositWrapper.js +125 -0
  27. package/lib/abis/Multicall3.d.ts +30 -0
  28. package/lib/abis/Multicall3.js +97 -0
  29. package/lib/abis/OFT.d.ts +116 -0
  30. package/lib/abis/OFT.js +85 -0
  31. package/lib/abis/PoolAdapter.d.ts +36 -0
  32. package/lib/abis/PoolAdapter.js +51 -0
  33. package/lib/abis/RewardDistributor.d.ts +267 -0
  34. package/lib/abis/RewardDistributor.js +352 -0
  35. package/lib/abis/RwaRedeemSubaccount.d.ts +747 -0
  36. package/lib/abis/RwaRedeemSubaccount.js +548 -0
  37. package/lib/abis/SmartAccount.d.ts +17 -0
  38. package/lib/abis/SmartAccount.js +19 -0
  39. package/lib/abis/SwapRouter.d.ts +953 -0
  40. package/lib/abis/SwapRouter.js +1228 -0
  41. package/lib/abis/TextResolver.d.ts +16 -0
  42. package/lib/abis/TextResolver.js +16 -0
  43. package/lib/abis/TokenizedVaultV2.d.ts +1364 -0
  44. package/lib/abis/TokenizedVaultV2.js +1041 -0
  45. package/lib/abis/TokenizedVaultV2DepositWithPermit.d.ts +1456 -0
  46. package/lib/abis/TokenizedVaultV2DepositWithPermit.js +1878 -0
  47. package/lib/abis/TokenizedVaultV2Receipt.d.ts +1568 -0
  48. package/lib/abis/TokenizedVaultV2Receipt.js +1061 -0
  49. package/lib/abis/TokenizedVaultV2SenderAllocationWhitelist.d.ts +454 -0
  50. package/lib/abis/TokenizedVaultV2SenderAllocationWhitelist.js +327 -0
  51. package/lib/abis/TokenizedVaultV2WhitelistedAllocation.d.ts +1466 -0
  52. package/lib/abis/TokenizedVaultV2WhitelistedAllocation.js +1092 -0
  53. package/lib/abis/TokenizedVaultV2WhitelistedAssets.d.ts +274 -0
  54. package/lib/abis/TokenizedVaultV2WhitelistedAssets.js +167 -0
  55. package/lib/abis/UniversalResolverResolve.d.ts +69 -0
  56. package/lib/abis/UniversalResolverResolve.js +35 -0
  57. package/lib/abis/UniversalSignatureValidator.d.ts +17 -0
  58. package/lib/abis/UniversalSignatureValidator.js +30 -0
  59. package/lib/abis/WrapperAdapter.d.ts +71 -0
  60. package/lib/abis/WrapperAdapter.js +77 -0
  61. package/lib/abis/index.d.ts +34 -0
  62. package/lib/abis/index.js +51 -0
  63. package/lib/adapters/evm/getters.d.ts +19 -0
  64. package/lib/adapters/evm/getters.js +249 -0
  65. package/lib/adapters/evm/index.d.ts +539 -0
  66. package/lib/adapters/evm/index.js +656 -0
  67. package/lib/adapters/evm/utils.d.ts +8 -0
  68. package/lib/adapters/evm/utils.js +51 -0
  69. package/lib/adapters/solana/confirm.d.ts +88 -0
  70. package/lib/adapters/solana/confirm.js +291 -0
  71. package/lib/adapters/solana/constants.d.ts +42 -0
  72. package/lib/adapters/solana/constants.js +59 -0
  73. package/lib/adapters/solana/getters.d.ts +42 -0
  74. package/lib/adapters/solana/getters.js +275 -0
  75. package/lib/adapters/solana/idl/vault-idl.d.ts +700 -0
  76. package/lib/adapters/solana/idl/vault-idl.js +2101 -0
  77. package/lib/adapters/solana/idl/withdrawal-queue-idl.d.ts +795 -0
  78. package/lib/adapters/solana/idl/withdrawal-queue-idl.js +1864 -0
  79. package/lib/adapters/solana/index.d.ts +372 -0
  80. package/lib/adapters/solana/index.js +459 -0
  81. package/lib/adapters/solana/pricing.d.ts +184 -0
  82. package/lib/adapters/solana/pricing.js +239 -0
  83. package/lib/adapters/solana/queue-hints.d.ts +29 -0
  84. package/lib/adapters/solana/queue-hints.js +59 -0
  85. package/lib/adapters/solana/queue.actions.d.ts +97 -0
  86. package/lib/adapters/solana/queue.actions.js +468 -0
  87. package/lib/adapters/solana/token-reads.d.ts +108 -0
  88. package/lib/adapters/solana/token-reads.js +145 -0
  89. package/lib/adapters/solana/types.d.ts +325 -0
  90. package/lib/adapters/solana/types.js +3 -0
  91. package/lib/adapters/solana/utils.d.ts +229 -0
  92. package/lib/adapters/solana/utils.js +773 -0
  93. package/lib/adapters/solana/vault.actions.d.ts +140 -0
  94. package/lib/adapters/solana/vault.actions.js +657 -0
  95. package/lib/adapters/solana/withdrawal-queue.d.ts +125 -0
  96. package/lib/adapters/solana/withdrawal-queue.js +301 -0
  97. package/lib/adapters/stellar/actions.d.ts +41 -0
  98. package/lib/adapters/stellar/actions.js +126 -0
  99. package/lib/adapters/stellar/constants.d.ts +43 -0
  100. package/lib/adapters/stellar/constants.js +53 -0
  101. package/lib/adapters/stellar/getters.d.ts +68 -0
  102. package/lib/adapters/stellar/getters.js +290 -0
  103. package/lib/adapters/stellar/index.d.ts +126 -0
  104. package/lib/adapters/stellar/index.js +187 -0
  105. package/lib/adapters/stellar/invocation.d.ts +55 -0
  106. package/lib/adapters/stellar/invocation.js +92 -0
  107. package/lib/adapters/stellar/soroban.d.ts +131 -0
  108. package/lib/adapters/stellar/soroban.js +617 -0
  109. package/lib/adapters/stellar/submit.d.ts +42 -0
  110. package/lib/adapters/stellar/submit.js +195 -0
  111. package/lib/adapters/stellar/types.d.ts +57 -0
  112. package/lib/adapters/stellar/types.js +6 -0
  113. package/lib/adapters/stellar/utils.d.ts +24 -0
  114. package/lib/adapters/stellar/utils.js +34 -0
  115. package/lib/adapters/sui/client.d.ts +83 -0
  116. package/lib/adapters/sui/client.js +216 -0
  117. package/lib/adapters/sui/constants.d.ts +33 -0
  118. package/lib/adapters/sui/constants.js +31 -0
  119. package/lib/adapters/sui/index.d.ts +57 -0
  120. package/lib/adapters/sui/index.js +100 -0
  121. package/lib/adapters/sui/targets.d.ts +171 -0
  122. package/lib/adapters/sui/targets.js +225 -0
  123. package/lib/adapters/sui/utils.d.ts +8 -0
  124. package/lib/adapters/sui/utils.js +17 -0
  125. package/lib/core/analytics/app-name.d.ts +27 -0
  126. package/lib/core/analytics/app-name.js +48 -0
  127. package/lib/core/analytics/chain-name.d.ts +9 -0
  128. package/lib/core/analytics/chain-name.js +34 -0
  129. package/lib/core/analytics/constants.d.ts +15 -0
  130. package/lib/core/analytics/constants.js +28 -0
  131. package/lib/core/analytics/env.d.ts +46 -0
  132. package/lib/core/analytics/env.js +147 -0
  133. package/lib/core/analytics/index.d.ts +39 -0
  134. package/lib/core/analytics/index.js +83 -0
  135. package/lib/core/analytics/instrumentation.d.ts +29 -0
  136. package/lib/core/analytics/instrumentation.js +292 -0
  137. package/lib/core/analytics/method-taxonomy.d.ts +19 -0
  138. package/lib/core/analytics/method-taxonomy.js +156 -0
  139. package/lib/core/analytics/metrics.d.ts +48 -0
  140. package/lib/core/analytics/metrics.js +142 -0
  141. package/lib/core/analytics/sanitize.d.ts +57 -0
  142. package/lib/core/analytics/sanitize.js +272 -0
  143. package/lib/core/analytics/sentry-runtime.d.ts +15 -0
  144. package/lib/core/analytics/sentry-runtime.js +131 -0
  145. package/lib/core/analytics/sentry.d.ts +100 -0
  146. package/lib/core/analytics/sentry.js +696 -0
  147. package/lib/core/analytics/types.d.ts +55 -0
  148. package/lib/core/analytics/types.js +3 -0
  149. package/lib/core/analytics/user-identity.d.ts +55 -0
  150. package/lib/core/analytics/user-identity.js +218 -0
  151. package/lib/core/analytics/version.d.ts +6 -0
  152. package/lib/core/analytics/version.js +10 -0
  153. package/lib/core/attribution.d.ts +159 -0
  154. package/lib/core/attribution.js +194 -0
  155. package/lib/core/auth/index.d.ts +1 -0
  156. package/lib/core/auth/index.js +18 -0
  157. package/lib/core/auth/verify.d.ts +2 -0
  158. package/lib/core/auth/verify.js +35 -0
  159. package/lib/core/base.class.d.ts +193 -0
  160. package/lib/core/base.class.js +163 -0
  161. package/lib/core/cache.d.ts +9 -0
  162. package/lib/core/cache.js +31 -0
  163. package/lib/core/constants/adapters.d.ts +103 -0
  164. package/lib/core/constants/adapters.js +180 -0
  165. package/lib/core/constants/core.d.ts +162 -0
  166. package/lib/core/constants/core.js +281 -0
  167. package/lib/core/constants/swap-router.d.ts +180 -0
  168. package/lib/core/constants/swap-router.js +203 -0
  169. package/lib/core/constants/vaults.d.ts +93 -0
  170. package/lib/core/constants/vaults.js +277 -0
  171. package/lib/core/constants/web3.d.ts +106 -0
  172. package/lib/core/constants/web3.js +251 -0
  173. package/lib/core/errors/index.d.ts +177 -0
  174. package/lib/core/errors/index.js +257 -0
  175. package/lib/core/fetcher.d.ts +237 -0
  176. package/lib/core/fetcher.js +1103 -0
  177. package/lib/core/helpers/adapters.d.ts +13 -0
  178. package/lib/core/helpers/adapters.js +39 -0
  179. package/lib/core/helpers/chain-address.d.ts +13 -0
  180. package/lib/core/helpers/chain-address.js +47 -0
  181. package/lib/core/helpers/chain-error.d.ts +207 -0
  182. package/lib/core/helpers/chain-error.js +697 -0
  183. package/lib/core/helpers/chain-support.d.ts +98 -0
  184. package/lib/core/helpers/chain-support.js +139 -0
  185. package/lib/core/helpers/concurrency.d.ts +51 -0
  186. package/lib/core/helpers/concurrency.js +79 -0
  187. package/lib/core/helpers/core.d.ts +92 -0
  188. package/lib/core/helpers/core.js +368 -0
  189. package/lib/core/helpers/explorer-link.d.ts +16 -0
  190. package/lib/core/helpers/explorer-link.js +26 -0
  191. package/lib/core/helpers/multicall.d.ts +68 -0
  192. package/lib/core/helpers/multicall.js +103 -0
  193. package/lib/core/helpers/revert-decode.d.ts +248 -0
  194. package/lib/core/helpers/revert-decode.js +515 -0
  195. package/lib/core/helpers/signer.d.ts +61 -0
  196. package/lib/core/helpers/signer.js +184 -0
  197. package/lib/core/helpers/swap-router.d.ts +269 -0
  198. package/lib/core/helpers/swap-router.js +542 -0
  199. package/lib/core/helpers/vault-version.d.ts +24 -0
  200. package/lib/core/helpers/vault-version.js +83 -0
  201. package/lib/core/helpers/vaults.d.ts +89 -0
  202. package/lib/core/helpers/vaults.js +241 -0
  203. package/lib/core/helpers/web3.d.ts +366 -0
  204. package/lib/core/helpers/web3.js +1034 -0
  205. package/lib/core/index.d.ts +23 -0
  206. package/lib/core/index.js +40 -0
  207. package/lib/core/logger/curator-alert.d.ts +217 -0
  208. package/lib/core/logger/curator-alert.js +276 -0
  209. package/lib/core/logger/index.d.ts +99 -0
  210. package/lib/core/logger/index.js +163 -0
  211. package/lib/core/logger/slack.d.ts +49 -0
  212. package/lib/core/logger/slack.js +111 -0
  213. package/lib/core/vault-metadata.d.ts +12 -0
  214. package/lib/core/vault-metadata.js +42 -0
  215. package/lib/core/version-check.d.ts +58 -0
  216. package/lib/core/version-check.js +182 -0
  217. package/lib/evm/index.d.ts +2 -0
  218. package/lib/evm/index.js +19 -0
  219. package/lib/evm/methods/crossChainVault.d.ts +132 -0
  220. package/lib/evm/methods/crossChainVault.js +857 -0
  221. package/lib/evm/methods/crossChainVaultRegistry.d.ts +92 -0
  222. package/lib/evm/methods/crossChainVaultRegistry.js +239 -0
  223. package/lib/evm/methods/index.d.ts +2 -0
  224. package/lib/evm/methods/index.js +19 -0
  225. package/lib/evm/types/crossChain.d.ts +363 -0
  226. package/lib/evm/types/crossChain.js +20 -0
  227. package/lib/evm/types/index.d.ts +1 -0
  228. package/lib/evm/types/index.js +18 -0
  229. package/lib/index.d.ts +30 -0
  230. package/lib/index.js +52 -0
  231. package/lib/main.d.ts +596 -0
  232. package/lib/main.js +681 -0
  233. package/lib/modules/api/fetcher.d.ts +108 -0
  234. package/lib/modules/api/fetcher.js +187 -0
  235. package/lib/modules/api/index.d.ts +1 -0
  236. package/lib/modules/api/index.js +6 -0
  237. package/lib/modules/api/main.d.ts +587 -0
  238. package/lib/modules/api/main.js +911 -0
  239. package/lib/modules/sub-accounts/fetcher.d.ts +53 -0
  240. package/lib/modules/sub-accounts/fetcher.js +96 -0
  241. package/lib/modules/sub-accounts/index.d.ts +2 -0
  242. package/lib/modules/sub-accounts/index.js +19 -0
  243. package/lib/modules/sub-accounts/main.d.ts +249 -0
  244. package/lib/modules/sub-accounts/main.js +211 -0
  245. package/lib/modules/sub-accounts/utils.d.ts +106 -0
  246. package/lib/modules/sub-accounts/utils.js +112 -0
  247. package/lib/modules/vaults/adapter.helpers.d.ts +84 -0
  248. package/lib/modules/vaults/adapter.helpers.js +202 -0
  249. package/lib/modules/vaults/fetcher.d.ts +147 -0
  250. package/lib/modules/vaults/fetcher.js +357 -0
  251. package/lib/modules/vaults/getters.d.ts +1060 -0
  252. package/lib/modules/vaults/getters.js +4079 -0
  253. package/lib/modules/vaults/index.d.ts +20 -0
  254. package/lib/modules/vaults/index.js +44 -0
  255. package/lib/modules/vaults/main.d.ts +607 -0
  256. package/lib/modules/vaults/main.js +1687 -0
  257. package/lib/modules/vaults/prefetch.d.ts +65 -0
  258. package/lib/modules/vaults/prefetch.js +120 -0
  259. package/lib/modules/vaults/read.actions.d.ts +406 -0
  260. package/lib/modules/vaults/read.actions.js +891 -0
  261. package/lib/modules/vaults/types.d.ts +149 -0
  262. package/lib/modules/vaults/types.js +3 -0
  263. package/lib/modules/vaults/utils/call-data-decoder.d.ts +61 -0
  264. package/lib/modules/vaults/utils/call-data-decoder.js +194 -0
  265. package/lib/modules/vaults/utils/date-utils.d.ts +50 -0
  266. package/lib/modules/vaults/utils/date-utils.js +84 -0
  267. package/lib/modules/vaults/utils.d.ts +153 -0
  268. package/lib/modules/vaults/utils.js +818 -0
  269. package/lib/modules/vaults/write.actions.d.ts +812 -0
  270. package/lib/modules/vaults/write.actions.js +2377 -0
  271. package/lib/polyfills.d.ts +1 -0
  272. package/lib/polyfills.js +12 -0
  273. package/lib/sdk.d.ts +30173 -0
  274. package/lib/services/coingecko/fetcher.d.ts +15 -0
  275. package/lib/services/coingecko/fetcher.js +67 -0
  276. package/lib/services/coingecko/index.d.ts +2 -0
  277. package/lib/services/coingecko/index.js +19 -0
  278. package/lib/services/coingecko/utils.d.ts +1 -0
  279. package/lib/services/coingecko/utils.js +24 -0
  280. package/lib/services/debank/fetcher.d.ts +126 -0
  281. package/lib/services/debank/fetcher.js +47 -0
  282. package/lib/services/debank/index.d.ts +2 -0
  283. package/lib/services/debank/index.js +19 -0
  284. package/lib/services/debank/utils.d.ts +50 -0
  285. package/lib/services/debank/utils.js +325 -0
  286. package/lib/services/layerzero/deposits.d.ts +55 -0
  287. package/lib/services/layerzero/deposits.js +174 -0
  288. package/lib/services/layerzero/redeems.d.ts +20 -0
  289. package/lib/services/layerzero/redeems.js +92 -0
  290. package/lib/services/layerzero/utils.d.ts +9 -0
  291. package/lib/services/layerzero/utils.js +22 -0
  292. package/lib/services/octavfi/fetcher.d.ts +33 -0
  293. package/lib/services/octavfi/fetcher.js +39 -0
  294. package/lib/services/octavfi/index.d.ts +3 -0
  295. package/lib/services/octavfi/index.js +20 -0
  296. package/lib/services/octavfi/types.d.ts +34 -0
  297. package/lib/services/octavfi/types.js +3 -0
  298. package/lib/services/octavfi/utils.d.ts +16 -0
  299. package/lib/services/octavfi/utils.js +244 -0
  300. package/lib/services/subgraph/fetcher.d.ts +2 -0
  301. package/lib/services/subgraph/fetcher.js +66 -0
  302. package/lib/services/subgraph/index.d.ts +2 -0
  303. package/lib/services/subgraph/index.js +19 -0
  304. package/lib/services/subgraph/schema.d.ts +48 -0
  305. package/lib/services/subgraph/schema.js +87 -0
  306. package/lib/services/subgraph/vaults.d.ts +83 -0
  307. package/lib/services/subgraph/vaults.js +1282 -0
  308. package/lib/services/swap-quotes/index.d.ts +105 -0
  309. package/lib/services/swap-quotes/index.js +77 -0
  310. package/lib/services/swap-quotes/paraswap.d.ts +51 -0
  311. package/lib/services/swap-quotes/paraswap.js +138 -0
  312. package/lib/services/untangled/fetcher.d.ts +40 -0
  313. package/lib/services/untangled/fetcher.js +110 -0
  314. package/lib/services/untangled/index.d.ts +3 -0
  315. package/lib/services/untangled/index.js +20 -0
  316. package/lib/services/untangled/types.d.ts +83 -0
  317. package/lib/services/untangled/types.js +10 -0
  318. package/lib/services/untangled/utils.d.ts +91 -0
  319. package/lib/services/untangled/utils.js +339 -0
  320. package/lib/types/api.d.ts +498 -0
  321. package/lib/types/api.js +3 -0
  322. package/lib/types/index.d.ts +12 -0
  323. package/lib/types/index.js +28 -0
  324. package/lib/types/points.d.ts +28 -0
  325. package/lib/types/points.js +3 -0
  326. package/lib/types/pools.d.ts +144 -0
  327. package/lib/types/pools.js +3 -0
  328. package/lib/types/staking.d.ts +28 -0
  329. package/lib/types/staking.js +3 -0
  330. package/lib/types/sub-accounts.d.ts +150 -0
  331. package/lib/types/sub-accounts.js +3 -0
  332. package/lib/types/subgraph.d.ts +84 -0
  333. package/lib/types/subgraph.js +3 -0
  334. package/lib/types/typed-contract.d.ts +102 -0
  335. package/lib/types/typed-contract.js +3 -0
  336. package/lib/types/user.d.ts +1 -0
  337. package/lib/types/user.js +3 -0
  338. package/lib/types/vaults.d.ts +886 -0
  339. package/lib/types/vaults.js +30 -0
  340. package/lib/types/web3.d.ts +100 -0
  341. package/lib/types/web3.js +14 -0
  342. package/lib/types/webserver.d.ts +730 -0
  343. package/lib/types/webserver.js +3 -0
  344. package/package.json +79 -3
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Fetch the latest USD price for a token symbol from CoinGecko's
3
+ * `/market_chart/range` endpoint, mapped through `COINGECKO_COIN_ID_MAP`.
4
+ *
5
+ * @param symbol - Token symbol (case-insensitive). Must be present in
6
+ * `COINGECKO_COIN_ID_MAP`.
7
+ * @param coinGeckoKey - CoinGecko Pro API key passed as `x-cg-pro-api-key`.
8
+ * @returns The latest price in USD (a number) on success; `null` when the
9
+ * response contains an empty or missing `prices` array. `musd` (mezo-usd)
10
+ * is a USD-pegged stablecoin and short-circuits to a price of `1`.
11
+ * @throws {@link UpshiftValidationError} When `symbol` is not in `COINGECKO_COIN_ID_MAP`.
12
+ * @throws {@link UpshiftRateLimitError} On a 429 response from CoinGecko.
13
+ * @throws {@link UpshiftServerError} On any other non-2xx response.
14
+ */
15
+ export declare function fetchTokenPricesFromCoinGecko(symbol: string, coinGeckoKey: string): Promise<number>;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchTokenPricesFromCoinGecko = fetchTokenPricesFromCoinGecko;
4
+ const logger_1 = require("../../core/logger");
5
+ const errors_1 = require("../../core/errors");
6
+ const utils_1 = require("./utils");
7
+ /**
8
+ * Fetch the latest USD price for a token symbol from CoinGecko's
9
+ * `/market_chart/range` endpoint, mapped through `COINGECKO_COIN_ID_MAP`.
10
+ *
11
+ * @param symbol - Token symbol (case-insensitive). Must be present in
12
+ * `COINGECKO_COIN_ID_MAP`.
13
+ * @param coinGeckoKey - CoinGecko Pro API key passed as `x-cg-pro-api-key`.
14
+ * @returns The latest price in USD (a number) on success; `null` when the
15
+ * response contains an empty or missing `prices` array. `musd` (mezo-usd)
16
+ * is a USD-pegged stablecoin and short-circuits to a price of `1`.
17
+ * @throws {@link UpshiftValidationError} When `symbol` is not in `COINGECKO_COIN_ID_MAP`.
18
+ * @throws {@link UpshiftRateLimitError} On a 429 response from CoinGecko.
19
+ * @throws {@link UpshiftServerError} On any other non-2xx response.
20
+ */
21
+ async function fetchTokenPricesFromCoinGecko(symbol, coinGeckoKey) {
22
+ const coinId = utils_1.COINGECKO_COIN_ID_MAP[symbol.toLowerCase()];
23
+ if (coinId === 'mezo-usd') {
24
+ return 1;
25
+ }
26
+ if (!coinId) {
27
+ throw new errors_1.UpshiftValidationError('INVALID_INPUT', `fetchTokenPricesFromCoinGecko: symbol "${symbol}" is not in COINGECKO_COIN_ID_MAP`, { context: { symbol } });
28
+ }
29
+ const sevendDaysInS = 7 * 24 * 60 * 60;
30
+ const from = Date.now() / 1000 - sevendDaysInS;
31
+ const url = `https://pro-api.coingecko.com/api/v3/coins/${coinId}/market_chart/range?vs_currency=usd&from=${from}&to=${Math.floor(Date.now() / 1000)}&interval=daily`;
32
+ try {
33
+ const response = await fetch(url, {
34
+ method: 'GET',
35
+ headers: {
36
+ 'Content-Type': 'application/json',
37
+ 'x-cg-pro-api-key': coinGeckoKey,
38
+ },
39
+ });
40
+ if (!response.ok) {
41
+ if (response.status === 429) {
42
+ throw new errors_1.UpshiftRateLimitError(`CoinGecko rate-limited (429): symbol "${symbol}"`, { context: { symbol, coinId, status: response.status } });
43
+ }
44
+ throw new errors_1.UpshiftServerError(response.status, `CoinGecko API error ${response.status} ${response.statusText}: symbol "${symbol}"`, { context: { symbol, coinId } });
45
+ }
46
+ const data = (await response.json());
47
+ // `/market_chart/range` returns `{ prices, market_caps, total_volumes }` —
48
+ // an object. The previous `data.length` check was always falsy on the
49
+ // success path and silently collapsed every valid response to `null`.
50
+ if (data?.prices?.length) {
51
+ return data.prices[data.prices.length - 1][1];
52
+ }
53
+ return null;
54
+ }
55
+ catch (error) {
56
+ logger_1.Logger.log.error('fetchTokenPricesFromCoinGecko', error, {
57
+ coinId,
58
+ symbol,
59
+ });
60
+ // Re-throw typed SDK errors (UpshiftRateLimitError, UpshiftServerError, etc.)
61
+ // so callers can distinguish rate-limits and server errors from "no data".
62
+ if (error instanceof errors_1.UpshiftSDKError)
63
+ throw error;
64
+ return null;
65
+ }
66
+ }
67
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1,2 @@
1
+ export * from './utils';
2
+ export * from './fetcher';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./utils"), exports);
18
+ __exportStar(require("./fetcher"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ export declare const COINGECKO_COIN_ID_MAP: Record<string, string>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COINGECKO_COIN_ID_MAP = void 0;
4
+ exports.COINGECKO_COIN_ID_MAP = {
5
+ rseth: 'kelp-dao-restaked-eth',
6
+ usdc: 'usd-coin',
7
+ cbbtc: 'coinbase-wrapped-btc',
8
+ lbtc: 'lombard-staked-btc',
9
+ wsteth: 'wrapped-steth',
10
+ susde: 'ethena-staked-usde',
11
+ ausd: 'agora-dollar',
12
+ wavax: 'wrapped-avax',
13
+ cusdo: 'compounding-open-dollar',
14
+ whype: 'wrapped-hype',
15
+ usdt: 'binance-bridged-usdt-bnb-smart-chain',
16
+ usr: 'resolv-usr',
17
+ tbtc: 'tbtc',
18
+ ubtc: 'unit-bitcoin',
19
+ weth: 'weth',
20
+ teth: 'treehouse-eth',
21
+ musd: 'mezo-usd',
22
+ xbtc: 'tbtc',
23
+ };
24
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,126 @@
1
+ import type { IAddress, IWSMonitorHeaders } from '../../types';
2
+ export interface IDebankStatsObject {
3
+ asset_usd_value: number;
4
+ debt_usd_value: number;
5
+ net_usd_value: number;
6
+ }
7
+ export interface IDebankPoolObject {
8
+ controller: string;
9
+ id: string;
10
+ chain: string;
11
+ project_id: string;
12
+ adapter_id?: string | null;
13
+ time_at?: number | null;
14
+ }
15
+ export interface IDebankProxyDetailObject {
16
+ project?: Record<string, unknown> | null;
17
+ proxy_contract_id?: string | null;
18
+ }
19
+ export interface IDebankTokenObject {
20
+ id: string;
21
+ chain: string;
22
+ name: string;
23
+ symbol: string;
24
+ display_symbol: unknown;
25
+ optimized_symbol: string;
26
+ decimals: number;
27
+ protocol_id: string;
28
+ is_core?: boolean | null;
29
+ price: number;
30
+ time_at?: number | null;
31
+ logo_url?: string | null;
32
+ price_24h_change?: number | null;
33
+ credit_score?: number | null;
34
+ is_verified?: boolean | null;
35
+ is_scam?: boolean | null;
36
+ is_suspicious?: boolean | null;
37
+ is_wallet?: boolean | null;
38
+ amount?: number | null;
39
+ raw_amount?: number | null;
40
+ }
41
+ export interface IDebankAppTokenObject {
42
+ id: string;
43
+ name: string;
44
+ symbol: string;
45
+ decimals: number;
46
+ logo_url?: string | null;
47
+ app_id?: string | null;
48
+ price: number;
49
+ amount?: number | null;
50
+ [key: string]: unknown;
51
+ }
52
+ export interface IDebankDetailObject {
53
+ supply_token_list?: IDebankTokenObject[];
54
+ reward_token_list?: IDebankTokenObject[];
55
+ borrow_token_list?: IDebankTokenObject[];
56
+ health_rate?: number | null;
57
+ }
58
+ export interface IDebankAppPortfolioDetailObject {
59
+ supply_token_list?: IDebankAppTokenObject[];
60
+ reward_token_list?: IDebankAppTokenObject[];
61
+ borrow_token_list?: IDebankAppTokenObject[];
62
+ description?: string | null;
63
+ }
64
+ export type IDebankPortfolioItemName = 'Yield' | 'Deposit' | 'Staked' | 'Locked' | 'Farming' | 'Leveraged Farming' | 'Lending' | 'Vesting' | 'Rewards' | 'Airdrop' | 'Liquidity Pool' | 'Options Seller' | 'Options Buyer' | 'Insurance' | 'Investment' | 'Governance' | 'Perpetuals' | 'NFT Staked' | 'NFT Liquidity Pool' | 'NFT Lending' | 'NFT Fraction' | 'NFT P2P Borrower' | 'NFT P2P Lender';
65
+ export interface IDebankPortfolioItemObject {
66
+ stats: IDebankStatsObject;
67
+ update_at: number;
68
+ name: IDebankPortfolioItemName;
69
+ detail_types: string[];
70
+ detail: IDebankDetailObject;
71
+ proxy_detail?: IDebankProxyDetailObject | null;
72
+ position_index?: string | null;
73
+ pool: IDebankPoolObject;
74
+ }
75
+ export interface IDebankAppPortfolioItemObject {
76
+ stats: IDebankStatsObject;
77
+ update_at: number;
78
+ name: string;
79
+ detail_types: string[];
80
+ detail: IDebankAppPortfolioDetailObject;
81
+ proxy_detail?: IDebankProxyDetailObject | null;
82
+ position_index?: string | null;
83
+ [key: string]: unknown;
84
+ }
85
+ export interface IDebankUserProtocol {
86
+ id: string;
87
+ chain: string;
88
+ name: string;
89
+ logo_url?: string | null;
90
+ site_url: string;
91
+ has_supported_portfolio: boolean;
92
+ portfolio_item_list: IDebankPortfolioItemObject[];
93
+ }
94
+ export interface IDebankAppProtocol {
95
+ id: string;
96
+ name: string;
97
+ logo_url?: string | null;
98
+ site_url: string;
99
+ has_supported_portfolio: boolean;
100
+ portfolio_item_list: IDebankAppPortfolioItemObject[];
101
+ }
102
+ export interface IDebankAccountData {
103
+ positions: IDebankUserProtocol[];
104
+ app_positions: IDebankAppProtocol[];
105
+ tokens: IDebankTokenObject[];
106
+ }
107
+ export interface IDebankAccountDataError {
108
+ error: string;
109
+ }
110
+ /**
111
+ * Response type for vault-level DeBank data.
112
+ * Keys are subaccount addresses, values are either DeBank data or error objects.
113
+ */
114
+ export type IVaultDebankResponse = Record<string, IDebankAccountData | IDebankAccountDataError>;
115
+ /**
116
+ * Fetch DeBank data for all subaccounts of a vault in a single request.
117
+ * @param vaultAddress The vault contract address
118
+ * @param headers Optional monitoring headers
119
+ * @returns Dictionary of subaccount addresses to DeBank data, or false on error
120
+ */
121
+ export declare function fetchVaultDebankResponse(vaultAddress: IAddress, headers?: IWSMonitorHeaders): Promise<IVaultDebankResponse | false>;
122
+ /**
123
+ * @deprecated Use fetchVaultDebankResponse for vault-level queries.
124
+ * Fetch DeBank data for a single subaccount address.
125
+ */
126
+ export declare function fetchDebankResponse(address: IAddress, headers?: IWSMonitorHeaders): Promise<any>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchVaultDebankResponse = fetchVaultDebankResponse;
4
+ exports.fetchDebankResponse = fetchDebankResponse;
5
+ const core_1 = require("../../core");
6
+ /**
7
+ * Fetch DeBank data for all subaccounts of a vault in a single request.
8
+ * @param vaultAddress The vault contract address
9
+ * @param headers Optional monitoring headers
10
+ * @returns Dictionary of subaccount addresses to DeBank data, or false on error
11
+ */
12
+ async function fetchVaultDebankResponse(vaultAddress, headers) {
13
+ try {
14
+ const response = await (0, core_1.fetchUpshiftPublic)(core_1.WEBSERVER_ENDPOINTS.public.tokenizedVault.debank(vaultAddress), { headers: headers });
15
+ // 200 = success, 207 = partial success (some subaccounts failed)
16
+ if (response.status === 200 || response.status === 207) {
17
+ const data = (await response.json());
18
+ return data;
19
+ }
20
+ core_1.Logger.log.error('fetchVaultDebankResponse', new Error(`HTTP ${response.status} ${response.statusText}`), { status: response.status, statusText: response.statusText });
21
+ return false;
22
+ }
23
+ catch (e) {
24
+ core_1.Logger.log.error('fetchVaultDebankResponse', e);
25
+ return false;
26
+ }
27
+ }
28
+ /**
29
+ * @deprecated Use fetchVaultDebankResponse for vault-level queries.
30
+ * Fetch DeBank data for a single subaccount address.
31
+ */
32
+ async function fetchDebankResponse(address, headers) {
33
+ // filter out hyperevm since debank does not yet support hyperevm
34
+ const debankResponse = await (0, core_1.fetchUpshiftWithKey)(undefined, core_1.WEBSERVER_ENDPOINTS.subaccount.debank(address), { headers: headers });
35
+ if (debankResponse.status !== 200) {
36
+ core_1.Logger.log.error('fetchDebankResponse', new Error(`HTTP ${debankResponse.status} ${debankResponse.statusText}`), {
37
+ status: debankResponse.status,
38
+ statusText: debankResponse.statusText,
39
+ });
40
+ return false;
41
+ }
42
+ else if (debankResponse.status === 200) {
43
+ const debankRes = await debankResponse.json();
44
+ return debankRes;
45
+ }
46
+ }
47
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1,2 @@
1
+ export * from './fetcher';
2
+ export * from './utils';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./fetcher"), exports);
18
+ __exportStar(require("./utils"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,50 @@
1
+ import type { IAddress, IDebankProtocolExposure, IDebankTokenExposure, IExposurePerCategory } from '../../types';
2
+ import type { IDebankAppProtocol, IDebankTokenObject, IDebankUserProtocol } from './fetcher';
3
+ /**
4
+ * DeBank-shaped exposure for one subaccount. Produced from DeBank directly
5
+ * and by the Octav.fi / Untangled transformers, which map their data into
6
+ * this same shape so one parser handles every source.
7
+ */
8
+ export interface IDebankNormalizedResponse {
9
+ subaccount: {
10
+ /** Protocol positions (DeBank `user_protocol` objects). */
11
+ positions: IDebankUserProtocol[];
12
+ /** App positions; only present on DeBank-sourced responses. */
13
+ app_positions?: IDebankAppProtocol[];
14
+ /** Wallet (idle) token balances. */
15
+ tokens: IDebankTokenObject[];
16
+ };
17
+ }
18
+ export declare function parseVaultLevelDebank(debankRes: IDebankNormalizedResponse, protocolExposure: IDebankProtocolExposure[], tokenExposure: IDebankTokenExposure[], borrower: IAddress, exposurePerCategory: IExposurePerCategory, netValue: {
19
+ value: number;
20
+ }): {
21
+ tokenMap: Record<string, string>;
22
+ protocolTokenMap: Record<string, string[]>;
23
+ protocolExposures: IDebankUserProtocol[];
24
+ tokenExposures: IDebankTokenObject[];
25
+ loansExposure: {
26
+ exposure: any[];
27
+ positions: any[];
28
+ };
29
+ };
30
+ export declare function getVaultExposure(debankResponse: IDebankNormalizedResponse): {
31
+ borrowing_exposure: {
32
+ symbol: string;
33
+ chain: string;
34
+ amount: number;
35
+ }[];
36
+ supplying_exposure: {
37
+ symbol: string;
38
+ chain: string;
39
+ amount: number;
40
+ }[];
41
+ wallet_exposure: {
42
+ symbol: string;
43
+ chain: string;
44
+ amount: number;
45
+ }[];
46
+ };
47
+ export declare function parseLoanLevelDebank(debankRes: any): {
48
+ exposure: any[];
49
+ positions: any[];
50
+ };