upshift-config 0.5.14

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 (316) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +349 -0
  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 +1043 -0
  40. package/lib/abis/SwapRouter.js +740 -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 +209 -0
  65. package/lib/adapters/evm/index.d.ts +353 -0
  66. package/lib/adapters/evm/index.js +434 -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/constants.d.ts +33 -0
  70. package/lib/adapters/solana/constants.js +52 -0
  71. package/lib/adapters/solana/getters.d.ts +11 -0
  72. package/lib/adapters/solana/getters.js +165 -0
  73. package/lib/adapters/solana/idl/vault-idl.d.ts +272 -0
  74. package/lib/adapters/solana/idl/vault-idl.js +1084 -0
  75. package/lib/adapters/solana/index.d.ts +233 -0
  76. package/lib/adapters/solana/index.js +291 -0
  77. package/lib/adapters/solana/types.d.ts +67 -0
  78. package/lib/adapters/solana/types.js +3 -0
  79. package/lib/adapters/solana/utils.d.ts +141 -0
  80. package/lib/adapters/solana/utils.js +595 -0
  81. package/lib/adapters/solana/vault.actions.d.ts +57 -0
  82. package/lib/adapters/solana/vault.actions.js +379 -0
  83. package/lib/adapters/stellar/actions.d.ts +28 -0
  84. package/lib/adapters/stellar/actions.js +77 -0
  85. package/lib/adapters/stellar/constants.d.ts +43 -0
  86. package/lib/adapters/stellar/constants.js +53 -0
  87. package/lib/adapters/stellar/getters.d.ts +68 -0
  88. package/lib/adapters/stellar/getters.js +290 -0
  89. package/lib/adapters/stellar/index.d.ts +114 -0
  90. package/lib/adapters/stellar/index.js +175 -0
  91. package/lib/adapters/stellar/soroban.d.ts +123 -0
  92. package/lib/adapters/stellar/soroban.js +613 -0
  93. package/lib/adapters/stellar/submit.d.ts +34 -0
  94. package/lib/adapters/stellar/submit.js +149 -0
  95. package/lib/adapters/stellar/types.d.ts +58 -0
  96. package/lib/adapters/stellar/types.js +6 -0
  97. package/lib/adapters/stellar/utils.d.ts +24 -0
  98. package/lib/adapters/stellar/utils.js +34 -0
  99. package/lib/adapters/sui/constants.d.ts +14 -0
  100. package/lib/adapters/sui/constants.js +29 -0
  101. package/lib/adapters/sui/getters.d.ts +9 -0
  102. package/lib/adapters/sui/getters.js +60 -0
  103. package/lib/adapters/sui/index.d.ts +45 -0
  104. package/lib/adapters/sui/index.js +101 -0
  105. package/lib/adapters/sui/transformer.d.ts +10 -0
  106. package/lib/adapters/sui/transformer.js +107 -0
  107. package/lib/adapters/sui/types.d.ts +66 -0
  108. package/lib/adapters/sui/types.js +3 -0
  109. package/lib/adapters/sui/utils.d.ts +10 -0
  110. package/lib/adapters/sui/utils.js +29 -0
  111. package/lib/core/analytics/chain-name.d.ts +9 -0
  112. package/lib/core/analytics/chain-name.js +34 -0
  113. package/lib/core/analytics/constants.d.ts +5 -0
  114. package/lib/core/analytics/constants.js +9 -0
  115. package/lib/core/analytics/env.d.ts +29 -0
  116. package/lib/core/analytics/env.js +59 -0
  117. package/lib/core/analytics/index.d.ts +36 -0
  118. package/lib/core/analytics/index.js +79 -0
  119. package/lib/core/analytics/instrumentation.d.ts +29 -0
  120. package/lib/core/analytics/instrumentation.js +277 -0
  121. package/lib/core/analytics/method-taxonomy.d.ts +19 -0
  122. package/lib/core/analytics/method-taxonomy.js +128 -0
  123. package/lib/core/analytics/metrics.d.ts +33 -0
  124. package/lib/core/analytics/metrics.js +116 -0
  125. package/lib/core/analytics/sanitize.d.ts +44 -0
  126. package/lib/core/analytics/sanitize.js +260 -0
  127. package/lib/core/analytics/sentry-runtime.d.ts +15 -0
  128. package/lib/core/analytics/sentry-runtime.js +97 -0
  129. package/lib/core/analytics/sentry.d.ts +67 -0
  130. package/lib/core/analytics/sentry.js +613 -0
  131. package/lib/core/analytics/types.d.ts +48 -0
  132. package/lib/core/analytics/types.js +3 -0
  133. package/lib/core/analytics/user-identity.d.ts +41 -0
  134. package/lib/core/analytics/user-identity.js +141 -0
  135. package/lib/core/analytics/version.d.ts +6 -0
  136. package/lib/core/analytics/version.js +10 -0
  137. package/lib/core/attribution.d.ts +111 -0
  138. package/lib/core/attribution.js +142 -0
  139. package/lib/core/auth/index.d.ts +1 -0
  140. package/lib/core/auth/index.js +18 -0
  141. package/lib/core/auth/verify.d.ts +2 -0
  142. package/lib/core/auth/verify.js +31 -0
  143. package/lib/core/base.class.d.ts +152 -0
  144. package/lib/core/base.class.js +172 -0
  145. package/lib/core/cache.d.ts +9 -0
  146. package/lib/core/cache.js +31 -0
  147. package/lib/core/constants/adapters.d.ts +103 -0
  148. package/lib/core/constants/adapters.js +180 -0
  149. package/lib/core/constants/core.d.ts +133 -0
  150. package/lib/core/constants/core.js +209 -0
  151. package/lib/core/constants/swap-router.d.ts +150 -0
  152. package/lib/core/constants/swap-router.js +169 -0
  153. package/lib/core/constants/vaults.d.ts +93 -0
  154. package/lib/core/constants/vaults.js +273 -0
  155. package/lib/core/constants/web3.d.ts +91 -0
  156. package/lib/core/constants/web3.js +229 -0
  157. package/lib/core/errors/index.d.ts +114 -0
  158. package/lib/core/errors/index.js +183 -0
  159. package/lib/core/fetcher.d.ts +198 -0
  160. package/lib/core/fetcher.js +903 -0
  161. package/lib/core/helpers/adapters.d.ts +13 -0
  162. package/lib/core/helpers/adapters.js +39 -0
  163. package/lib/core/helpers/chain-address.d.ts +13 -0
  164. package/lib/core/helpers/chain-address.js +47 -0
  165. package/lib/core/helpers/chain-error.d.ts +207 -0
  166. package/lib/core/helpers/chain-error.js +682 -0
  167. package/lib/core/helpers/chain-support.d.ts +80 -0
  168. package/lib/core/helpers/chain-support.js +115 -0
  169. package/lib/core/helpers/core.d.ts +68 -0
  170. package/lib/core/helpers/core.js +285 -0
  171. package/lib/core/helpers/explorer-link.d.ts +16 -0
  172. package/lib/core/helpers/explorer-link.js +26 -0
  173. package/lib/core/helpers/multicall.d.ts +68 -0
  174. package/lib/core/helpers/multicall.js +103 -0
  175. package/lib/core/helpers/revert-decode.d.ts +248 -0
  176. package/lib/core/helpers/revert-decode.js +515 -0
  177. package/lib/core/helpers/signer.d.ts +52 -0
  178. package/lib/core/helpers/signer.js +145 -0
  179. package/lib/core/helpers/swap-router.d.ts +211 -0
  180. package/lib/core/helpers/swap-router.js +480 -0
  181. package/lib/core/helpers/vault-version.d.ts +23 -0
  182. package/lib/core/helpers/vault-version.js +75 -0
  183. package/lib/core/helpers/vaults.d.ts +89 -0
  184. package/lib/core/helpers/vaults.js +235 -0
  185. package/lib/core/helpers/web3.d.ts +353 -0
  186. package/lib/core/helpers/web3.js +992 -0
  187. package/lib/core/index.d.ts +23 -0
  188. package/lib/core/index.js +40 -0
  189. package/lib/core/logger/index.d.ts +98 -0
  190. package/lib/core/logger/index.js +144 -0
  191. package/lib/core/logger/slack.d.ts +16 -0
  192. package/lib/core/logger/slack.js +57 -0
  193. package/lib/core/vault-metadata.d.ts +12 -0
  194. package/lib/core/vault-metadata.js +42 -0
  195. package/lib/core/version-check.d.ts +58 -0
  196. package/lib/core/version-check.js +182 -0
  197. package/lib/evm/index.d.ts +2 -0
  198. package/lib/evm/index.js +19 -0
  199. package/lib/evm/methods/crossChainVault.d.ts +128 -0
  200. package/lib/evm/methods/crossChainVault.js +853 -0
  201. package/lib/evm/methods/crossChainVaultRegistry.d.ts +93 -0
  202. package/lib/evm/methods/crossChainVaultRegistry.js +240 -0
  203. package/lib/evm/methods/index.d.ts +2 -0
  204. package/lib/evm/methods/index.js +19 -0
  205. package/lib/evm/types/crossChain.d.ts +363 -0
  206. package/lib/evm/types/crossChain.js +20 -0
  207. package/lib/evm/types/index.d.ts +1 -0
  208. package/lib/evm/types/index.js +18 -0
  209. package/lib/index.d.ts +30 -0
  210. package/lib/index.js +52 -0
  211. package/lib/main.d.ts +527 -0
  212. package/lib/main.js +601 -0
  213. package/lib/modules/api/fetcher.d.ts +82 -0
  214. package/lib/modules/api/fetcher.js +150 -0
  215. package/lib/modules/api/index.d.ts +1 -0
  216. package/lib/modules/api/index.js +6 -0
  217. package/lib/modules/api/main.d.ts +313 -0
  218. package/lib/modules/api/main.js +479 -0
  219. package/lib/modules/sub-accounts/fetcher.d.ts +53 -0
  220. package/lib/modules/sub-accounts/fetcher.js +120 -0
  221. package/lib/modules/sub-accounts/index.d.ts +2 -0
  222. package/lib/modules/sub-accounts/index.js +19 -0
  223. package/lib/modules/sub-accounts/main.d.ts +243 -0
  224. package/lib/modules/sub-accounts/main.js +205 -0
  225. package/lib/modules/sub-accounts/utils.d.ts +106 -0
  226. package/lib/modules/sub-accounts/utils.js +112 -0
  227. package/lib/modules/vaults/adapter.helpers.d.ts +64 -0
  228. package/lib/modules/vaults/adapter.helpers.js +184 -0
  229. package/lib/modules/vaults/fetcher.d.ts +147 -0
  230. package/lib/modules/vaults/fetcher.js +368 -0
  231. package/lib/modules/vaults/getters.d.ts +570 -0
  232. package/lib/modules/vaults/getters.js +3051 -0
  233. package/lib/modules/vaults/index.d.ts +20 -0
  234. package/lib/modules/vaults/index.js +44 -0
  235. package/lib/modules/vaults/main.d.ts +601 -0
  236. package/lib/modules/vaults/main.js +1623 -0
  237. package/lib/modules/vaults/prefetch.d.ts +65 -0
  238. package/lib/modules/vaults/prefetch.js +120 -0
  239. package/lib/modules/vaults/read.actions.d.ts +225 -0
  240. package/lib/modules/vaults/read.actions.js +596 -0
  241. package/lib/modules/vaults/types.d.ts +71 -0
  242. package/lib/modules/vaults/types.js +3 -0
  243. package/lib/modules/vaults/utils/call-data-decoder.d.ts +61 -0
  244. package/lib/modules/vaults/utils/call-data-decoder.js +194 -0
  245. package/lib/modules/vaults/utils/date-utils.d.ts +50 -0
  246. package/lib/modules/vaults/utils/date-utils.js +84 -0
  247. package/lib/modules/vaults/utils.d.ts +140 -0
  248. package/lib/modules/vaults/utils.js +799 -0
  249. package/lib/modules/vaults/write.actions.d.ts +529 -0
  250. package/lib/modules/vaults/write.actions.js +1749 -0
  251. package/lib/polyfills.d.ts +1 -0
  252. package/lib/polyfills.js +12 -0
  253. package/lib/sdk.d.ts +26721 -0
  254. package/lib/services/coingecko/fetcher.d.ts +15 -0
  255. package/lib/services/coingecko/fetcher.js +67 -0
  256. package/lib/services/coingecko/index.d.ts +2 -0
  257. package/lib/services/coingecko/index.js +19 -0
  258. package/lib/services/coingecko/utils.d.ts +1 -0
  259. package/lib/services/coingecko/utils.js +24 -0
  260. package/lib/services/debank/fetcher.d.ts +126 -0
  261. package/lib/services/debank/fetcher.js +47 -0
  262. package/lib/services/debank/index.d.ts +2 -0
  263. package/lib/services/debank/index.js +19 -0
  264. package/lib/services/debank/utils.d.ts +38 -0
  265. package/lib/services/debank/utils.js +297 -0
  266. package/lib/services/layerzero/deposits.d.ts +49 -0
  267. package/lib/services/layerzero/deposits.js +166 -0
  268. package/lib/services/layerzero/redeems.d.ts +20 -0
  269. package/lib/services/layerzero/redeems.js +92 -0
  270. package/lib/services/layerzero/utils.d.ts +9 -0
  271. package/lib/services/layerzero/utils.js +22 -0
  272. package/lib/services/octavfi/fetcher.d.ts +9 -0
  273. package/lib/services/octavfi/fetcher.js +103 -0
  274. package/lib/services/octavfi/index.d.ts +3 -0
  275. package/lib/services/octavfi/index.js +20 -0
  276. package/lib/services/octavfi/types.d.ts +34 -0
  277. package/lib/services/octavfi/types.js +3 -0
  278. package/lib/services/octavfi/utils.d.ts +16 -0
  279. package/lib/services/octavfi/utils.js +212 -0
  280. package/lib/services/subgraph/fetcher.d.ts +2 -0
  281. package/lib/services/subgraph/fetcher.js +61 -0
  282. package/lib/services/subgraph/index.d.ts +2 -0
  283. package/lib/services/subgraph/index.js +19 -0
  284. package/lib/services/subgraph/schema.d.ts +45 -0
  285. package/lib/services/subgraph/schema.js +75 -0
  286. package/lib/services/subgraph/vaults.d.ts +25 -0
  287. package/lib/services/subgraph/vaults.js +1106 -0
  288. package/lib/services/swap-quotes/index.d.ts +105 -0
  289. package/lib/services/swap-quotes/index.js +77 -0
  290. package/lib/services/swap-quotes/paraswap.d.ts +51 -0
  291. package/lib/services/swap-quotes/paraswap.js +138 -0
  292. package/lib/types/api.d.ts +280 -0
  293. package/lib/types/api.js +3 -0
  294. package/lib/types/index.d.ts +12 -0
  295. package/lib/types/index.js +28 -0
  296. package/lib/types/points.d.ts +28 -0
  297. package/lib/types/points.js +3 -0
  298. package/lib/types/pools.d.ts +144 -0
  299. package/lib/types/pools.js +3 -0
  300. package/lib/types/staking.d.ts +28 -0
  301. package/lib/types/staking.js +3 -0
  302. package/lib/types/sub-accounts.d.ts +140 -0
  303. package/lib/types/sub-accounts.js +3 -0
  304. package/lib/types/subgraph.d.ts +74 -0
  305. package/lib/types/subgraph.js +3 -0
  306. package/lib/types/typed-contract.d.ts +102 -0
  307. package/lib/types/typed-contract.js +3 -0
  308. package/lib/types/user.d.ts +1 -0
  309. package/lib/types/user.js +3 -0
  310. package/lib/types/vaults.d.ts +714 -0
  311. package/lib/types/vaults.js +24 -0
  312. package/lib/types/web3.d.ts +51 -0
  313. package/lib/types/web3.js +14 -0
  314. package/lib/types/webserver.d.ts +698 -0
  315. package/lib/types/webserver.js +3 -0
  316. package/package.json +78 -0
@@ -0,0 +1,49 @@
1
+ /**
2
+ * LayerZero Deposits Service
3
+ * Handles querying LayerZero USDC deposits from subgraphs
4
+ */
5
+ import type { IAddress } from '../../types';
6
+ export declare const LAYERZERO_VAULTS: {
7
+ coreUSDC: {
8
+ address: IAddress;
9
+ receiptToken: "coreusdc";
10
+ decimals: number;
11
+ hubChainId: number;
12
+ spokeChains: Record<number, IAddress>;
13
+ subgraphEndpoints: string[];
14
+ };
15
+ upUSDC: {
16
+ address: IAddress;
17
+ receiptToken: "upusdc";
18
+ decimals: number;
19
+ hubChainId: number;
20
+ spokeChains: Record<number, IAddress>;
21
+ subgraphEndpoints: string[];
22
+ };
23
+ earnAUSD: {
24
+ address: IAddress;
25
+ receiptToken: "earnausd";
26
+ decimals: number;
27
+ hubChainId: number;
28
+ spokeChains: Record<number, IAddress>;
29
+ subgraphEndpoints: string[];
30
+ };
31
+ };
32
+ export interface ILayerZeroDeposit {
33
+ assetAmt: string;
34
+ dstEid: string;
35
+ sender: string;
36
+ recipient: string;
37
+ shareAmt: string;
38
+ transactionHash_: string;
39
+ timestamp_: string;
40
+ }
41
+ /**
42
+ * Check if a vault address or symbol is a LayerZero vault
43
+ */
44
+ export declare function isLayerZeroVault(vaultAddressOrSymbol: string): keyof typeof LAYERZERO_VAULTS | null;
45
+ /**
46
+ * Query LayerZero deposits from the appropriate subgraph
47
+ * @throws Error if the GraphQL request fails or returns invalid data
48
+ */
49
+ export declare function queryLayerZeroDeposits(vaultKey: keyof typeof LAYERZERO_VAULTS, wallet?: IAddress): Promise<ILayerZeroDeposit[]>;
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * LayerZero Deposits Service
4
+ * Handles querying LayerZero USDC deposits from subgraphs
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.LAYERZERO_VAULTS = void 0;
8
+ exports.isLayerZeroVault = isLayerZeroVault;
9
+ exports.queryLayerZeroDeposits = queryLayerZeroDeposits;
10
+ const fetcher_1 = require("../subgraph/fetcher");
11
+ const utils_1 = require("./utils");
12
+ // LayerZero vault addresses and their corresponding receipt tokens
13
+ // spokeChains maps chainId -> shareOFT address (receipt token on that chain)
14
+ exports.LAYERZERO_VAULTS = {
15
+ coreUSDC: {
16
+ address: '0xE9B725010A9E419412ed67d0fA5f3A5f40159D32',
17
+ receiptToken: 'coreusdc',
18
+ decimals: 6, // USDC decimals
19
+ hubChainId: 1,
20
+ spokeChains: {
21
+ 42161: '0x50a31ff4d57841681011837c17aa201c6a34203c', // Arbitrum
22
+ 43114: '0x1FA931Bf85248aD2eDf0004DD9A284698358e708', // Avalanche
23
+ 8453: '0x1fa931bf85248ad2edf0004dd9a284698358e708', // Base
24
+ 146: '0x4bdd224fe59a3ae0b249125ad4c5b3126074c71b', // Sonic
25
+ },
26
+ subgraphEndpoints: [
27
+ 'https://api.goldsky.com/api/public/project_cm9g0xy3o4j6v01vd34r3hvv9/subgraphs/august-layerzero-coreusdc/1.0.0/gn',
28
+ ],
29
+ },
30
+ upUSDC: {
31
+ address: '0x80E1048eDE66ec4c364b4F22C8768fc657FF6A42',
32
+ receiptToken: 'upusdc',
33
+ decimals: 6, // USDC decimals
34
+ hubChainId: 1,
35
+ spokeChains: {
36
+ 42161: '0x81971a3c359cfe74259cff1b46fb5f2112ddde34', // Arbitrum
37
+ 43114: '0x81971A3C359cFE74259CfF1b46FB5f2112ddDE34', // Avalanche
38
+ 8453: '0x81971a3c359cfe74259cff1b46fb5f2112ddde34', // Base
39
+ 146: '0x81971a3c359cfe74259cff1b46fb5f2112ddde34', // Sonic
40
+ },
41
+ subgraphEndpoints: [
42
+ 'https://api.goldsky.com/api/public/project_cm9g0xy3o4j6v01vd34r3hvv9/subgraphs/august-layerzero-upusdc/1.0.0/gn',
43
+ ],
44
+ },
45
+ earnAUSD: {
46
+ address: '0x36eDbF0C834591BFdfCaC0Ef9605528c75c406aA',
47
+ receiptToken: 'earnausd',
48
+ decimals: 6,
49
+ hubChainId: 143,
50
+ spokeChains: {
51
+ 1: '0xa6916b65c5e3fEdf46c0a2F59bff776e872C8992', // Ethereum
52
+ },
53
+ subgraphEndpoints: [
54
+ 'https://api.goldsky.com/api/public/project_cm9g0xy3o4j6v01vd34r3hvv9/subgraphs/august-layerzero-earnAUSD/1.0.0/gn',
55
+ 'https://api.goldsky.com/api/public/project_cm9g0xy3o4j6v01vd34r3hvv9/subgraphs/august-layerzero-earnausd/1.0.0/gn',
56
+ ],
57
+ },
58
+ };
59
+ /**
60
+ * Check if a vault address or symbol is a LayerZero vault
61
+ */
62
+ function isLayerZeroVault(vaultAddressOrSymbol) {
63
+ const normalized = vaultAddressOrSymbol.toLowerCase();
64
+ // Check by address
65
+ if (normalized === exports.LAYERZERO_VAULTS.coreUSDC.address.toLowerCase() ||
66
+ normalized === 'coreusdc') {
67
+ return 'coreUSDC';
68
+ }
69
+ if (normalized === exports.LAYERZERO_VAULTS.upUSDC.address.toLowerCase() ||
70
+ normalized === 'upusdc') {
71
+ return 'upUSDC';
72
+ }
73
+ if (normalized === exports.LAYERZERO_VAULTS.earnAUSD.address.toLowerCase() ||
74
+ normalized === 'earnausd') {
75
+ return 'earnAUSD';
76
+ }
77
+ return null;
78
+ }
79
+ /**
80
+ * Validate GraphQL response structure
81
+ */
82
+ function validateDepositResponse(result) {
83
+ if (!result || typeof result !== 'object') {
84
+ return false;
85
+ }
86
+ const r = result;
87
+ if (!r.data || typeof r.data !== 'object') {
88
+ return false;
89
+ }
90
+ const data = r.data;
91
+ if (!Array.isArray(data.depositeds)) {
92
+ return false;
93
+ }
94
+ return true;
95
+ }
96
+ /**
97
+ * Query LayerZero deposits from the appropriate subgraph
98
+ * @throws Error if the GraphQL request fails or returns invalid data
99
+ */
100
+ async function queryLayerZeroDeposits(vaultKey, wallet) {
101
+ const vaultConfig = exports.LAYERZERO_VAULTS[vaultKey];
102
+ // Build GraphQL query (fetchSubgraph prepends "query " automatically)
103
+ let query = `GetDeposits {
104
+ depositeds(first: 1000) {
105
+ assetAmt
106
+ dstEid
107
+ sender
108
+ recipient
109
+ shareAmt
110
+ transactionHash_
111
+ timestamp_
112
+ }
113
+ }`;
114
+ // If wallet is provided, filter by sender
115
+ if (wallet) {
116
+ const senderBytes32 = (0, utils_1.addressToBytes32)(wallet);
117
+ query = `GetDeposits {
118
+ depositeds(first: 1000, where: { sender: "${senderBytes32}" }) {
119
+ assetAmt
120
+ dstEid
121
+ sender
122
+ recipient
123
+ shareAmt
124
+ transactionHash_
125
+ timestamp_
126
+ }
127
+ }`;
128
+ }
129
+ const endpoints = vaultConfig.subgraphEndpoints;
130
+ let lastError;
131
+ for (let i = 0; i < endpoints.length; i++) {
132
+ try {
133
+ const response = await (0, fetcher_1.fetchSubgraph)(endpoints[i], query);
134
+ // Only fall through to next endpoint on 404 (wrong URL casing)
135
+ if (response.status === 404 && i < endpoints.length - 1) {
136
+ continue;
137
+ }
138
+ if (!response.ok) {
139
+ throw new Error(`GraphQL request failed with status ${response.status}: ${response.statusText}`);
140
+ }
141
+ const result = await response.json();
142
+ if (result.errors) {
143
+ throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
144
+ }
145
+ // Validate response structure
146
+ if (!validateDepositResponse(result)) {
147
+ throw new Error(`Invalid response structure from LayerZero subgraph. Expected data.depositeds array, got: ${JSON.stringify(result)}`);
148
+ }
149
+ return result.data.depositeds;
150
+ }
151
+ catch (error) {
152
+ lastError = error;
153
+ // Only continue to next endpoint on network-level failures; re-throw application errors immediately
154
+ if (i >= endpoints.length - 1)
155
+ break;
156
+ }
157
+ }
158
+ // All endpoints failed — throw the last error with context
159
+ if (lastError instanceof Error) {
160
+ const enhancedError = new Error(`Failed to fetch LayerZero deposits for ${vaultKey}: ${lastError.message}`);
161
+ enhancedError.stack = lastError.stack;
162
+ throw enhancedError;
163
+ }
164
+ throw new Error(`Failed to fetch LayerZero deposits for ${vaultKey}: ${String(lastError)}`);
165
+ }
166
+ //# sourceMappingURL=deposits.js.map
@@ -0,0 +1,20 @@
1
+ /**
2
+ * LayerZero Redeems Service
3
+ * Handles querying LayerZero earnAUSD redeems from subgraphs
4
+ */
5
+ import type { IAddress } from '../../types';
6
+ export interface ILayerZeroRedeem {
7
+ id: string;
8
+ recipient: string;
9
+ sender: string;
10
+ shareAmt: string;
11
+ transactionHash_: string;
12
+ timestamp_: string;
13
+ }
14
+ /**
15
+ * Query LayerZero redeems for earnAUSD from the subgraph.
16
+ * Uses the same earnAUSD subgraph endpoints as deposits — the subgraph indexes
17
+ * both Deposited and Redeemed events from the same contract.
18
+ * @throws Error if the GraphQL request fails or returns invalid data
19
+ */
20
+ export declare function queryLayerZeroRedeems(wallet?: IAddress): Promise<ILayerZeroRedeem[]>;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * LayerZero Redeems Service
4
+ * Handles querying LayerZero earnAUSD redeems from subgraphs
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.queryLayerZeroRedeems = queryLayerZeroRedeems;
8
+ const fetcher_1 = require("../subgraph/fetcher");
9
+ const deposits_1 = require("./deposits");
10
+ const utils_1 = require("./utils");
11
+ /**
12
+ * Validate GraphQL response structure for redeems
13
+ */
14
+ function validateRedeemResponse(result) {
15
+ if (!result || typeof result !== 'object') {
16
+ return false;
17
+ }
18
+ const r = result;
19
+ if (!r.data || typeof r.data !== 'object') {
20
+ return false;
21
+ }
22
+ const data = r.data;
23
+ if (!Array.isArray(data.redeemeds)) {
24
+ return false;
25
+ }
26
+ return true;
27
+ }
28
+ /**
29
+ * Query LayerZero redeems for earnAUSD from the subgraph.
30
+ * Uses the same earnAUSD subgraph endpoints as deposits — the subgraph indexes
31
+ * both Deposited and Redeemed events from the same contract.
32
+ * @throws Error if the GraphQL request fails or returns invalid data
33
+ */
34
+ async function queryLayerZeroRedeems(wallet) {
35
+ const vaultConfig = deposits_1.LAYERZERO_VAULTS.earnAUSD;
36
+ let query = `GetRedeems {
37
+ redeemeds(first: 1000) {
38
+ id
39
+ recipient
40
+ sender
41
+ shareAmt
42
+ transactionHash_
43
+ timestamp_
44
+ }
45
+ }`;
46
+ if (wallet) {
47
+ const senderBytes32 = (0, utils_1.addressToBytes32)(wallet);
48
+ query = `GetRedeems {
49
+ redeemeds(first: 1000, where: { sender: "${senderBytes32}" }) {
50
+ id
51
+ recipient
52
+ sender
53
+ shareAmt
54
+ transactionHash_
55
+ timestamp_
56
+ }
57
+ }`;
58
+ }
59
+ const endpoints = vaultConfig.subgraphEndpoints;
60
+ let lastError;
61
+ for (let i = 0; i < endpoints.length; i++) {
62
+ try {
63
+ const response = await (0, fetcher_1.fetchSubgraph)(endpoints[i], query);
64
+ if (response.status === 404 && i < endpoints.length - 1) {
65
+ continue;
66
+ }
67
+ if (!response.ok) {
68
+ throw new Error(`GraphQL request failed with status ${response.status}: ${response.statusText}`);
69
+ }
70
+ const result = await response.json();
71
+ if (result.errors) {
72
+ throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
73
+ }
74
+ if (!validateRedeemResponse(result)) {
75
+ throw new Error(`Invalid response structure from LayerZero subgraph. Expected data.redeemeds array, got: ${JSON.stringify(result)}`);
76
+ }
77
+ return result.data.redeemeds;
78
+ }
79
+ catch (error) {
80
+ lastError = error;
81
+ if (i >= endpoints.length - 1)
82
+ break;
83
+ }
84
+ }
85
+ if (lastError instanceof Error) {
86
+ const enhancedError = new Error(`Failed to fetch LayerZero redeems for earnAUSD: ${lastError.message}`);
87
+ enhancedError.stack = lastError.stack;
88
+ throw enhancedError;
89
+ }
90
+ throw new Error(`Failed to fetch LayerZero redeems for earnAUSD: ${String(lastError)}`);
91
+ }
92
+ //# sourceMappingURL=redeems.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared LayerZero utilities
3
+ */
4
+ /**
5
+ * Convert Ethereum address to bytes32 format (left-padded with zeros)
6
+ * Used by LayerZero subgraph queries where addresses are stored in bytes32 format.
7
+ * @throws {Error} If address format is invalid
8
+ */
9
+ export declare function addressToBytes32(address: string): string;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ /**
3
+ * Shared LayerZero utilities
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addressToBytes32 = addressToBytes32;
7
+ /**
8
+ * Convert Ethereum address to bytes32 format (left-padded with zeros)
9
+ * Used by LayerZero subgraph queries where addresses are stored in bytes32 format.
10
+ * @throws {Error} If address format is invalid
11
+ */
12
+ function addressToBytes32(address) {
13
+ // Validate address format
14
+ if (!address.match(/^0x[a-fA-F0-9]{40}$/)) {
15
+ throw new Error(`Invalid Ethereum address format: ${address}. Expected format: 0x followed by 40 hexadecimal characters.`);
16
+ }
17
+ // Remove 0x prefix and convert to lowercase
18
+ const cleanAddress = address.replace(/^0x/i, '').toLowerCase();
19
+ // Pad with 24 zeros (12 bytes) to make it 32 bytes total
20
+ return '0x' + '0'.repeat(24) + cleanAddress;
21
+ }
22
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,9 @@
1
+ import type { IOctavfiPortfolio } from './types';
2
+ /**
3
+ * Fetches portfolio data from Octavfi API.
4
+ * Note: The API currently doesn't support multiple addresses in a single request,
5
+ * so individual requests are made for each address.
6
+ * @param addresses - Array of addresses to fetch data for.
7
+ * @returns Array of portfolio data (may be empty if all requests fail).
8
+ */
9
+ export declare function fetchOctavfiPortfolios(addresses: string[]): Promise<IOctavfiPortfolio[]>;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchOctavfiPortfolios = fetchOctavfiPortfolios;
4
+ const ethers_1 = require("ethers");
5
+ const utils_1 = require("../../adapters/solana/utils");
6
+ const core_1 = require("../../core");
7
+ const BASE_URL = 'https://api.octav.fi';
8
+ const OCTAVFI_API_KEY = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwczovL2hhc3VyYS5pby9qd3QvY2xhaW1zIjp7IngtaGFzdXJhLWRlZmF1bHQtcm9sZSI6InVzZXIiLCJ4LWhhc3VyYS1hbGxvd2VkLXJvbGVzIjpbInVzZXIiXSwieC1oYXN1cmEtdXNlci1pZCI6ImF1Z3VzdDEyMjM0In19.zaMUtrtdC82uaDh6XSZrsneEcKO3PFOE6FyX3G-MR6c';
9
+ /**
10
+ * Filters addresses to only include EVM and Solana wallet addresses.
11
+ * Excludes Sui addresses and other non-supported address formats.
12
+ *
13
+ * @param addresses - Array of addresses to filter
14
+ * @returns Array containing only EVM and Solana addresses
15
+ */
16
+ function filterEvmAndSolanaAddresses(addresses) {
17
+ return addresses.filter((address) => {
18
+ if (!address || typeof address !== 'string')
19
+ return false;
20
+ if ((0, ethers_1.isAddress)(address)) {
21
+ return true;
22
+ }
23
+ if (utils_1.SolanaUtils.isSolanaAddress(address)) {
24
+ return true;
25
+ }
26
+ core_1.Logger.log.info('filterEvmAndSolanaAddresses.excluded', { address });
27
+ return false;
28
+ });
29
+ }
30
+ /**
31
+ * Fetches portfolio data for a single address from Octavfi API.
32
+ * @param address - Single address to fetch data for.
33
+ * @returns Portfolio data or null if request fails.
34
+ */
35
+ async function fetchSinglePortfolio(address) {
36
+ try {
37
+ const response = await fetch(`${BASE_URL}/v1/portfolio?addresses=${address}`, {
38
+ method: 'GET',
39
+ headers: {
40
+ 'Content-Type': 'application/json',
41
+ Authorization: `Bearer ${OCTAVFI_API_KEY}`,
42
+ },
43
+ });
44
+ if (!response.ok) {
45
+ const errorText = await response.text();
46
+ core_1.Logger.log.error('fetchSinglePortfolio', new Error(`HTTP ${response.status} ${response.statusText}: ${errorText}`), {
47
+ address,
48
+ status: response.status,
49
+ statusText: response.statusText,
50
+ });
51
+ return null;
52
+ }
53
+ const data = await response.json();
54
+ if (!data || typeof data !== 'object') {
55
+ core_1.Logger.log.error('fetchSinglePortfolio.unexpected-type', new Error(`unexpected response type: ${typeof data}`), { address });
56
+ return null;
57
+ }
58
+ if (data.error) {
59
+ core_1.Logger.log.error('fetchSinglePortfolio.api-error', new Error(String(data.error)), { address });
60
+ return null;
61
+ }
62
+ // Handle nested array response: [[portfolio]] or [portfolio] or portfolio
63
+ let portfolio = data;
64
+ if (Array.isArray(data)) {
65
+ if (data.length > 0 && Array.isArray(data[0])) {
66
+ // Nested array: [[portfolio]]
67
+ portfolio = data[0][0];
68
+ }
69
+ else if (data.length > 0) {
70
+ // Single array: [portfolio]
71
+ portfolio = data[0];
72
+ }
73
+ else {
74
+ return null;
75
+ }
76
+ }
77
+ // Return raw Octavfi data (transformation should happen separately when needed)
78
+ return portfolio;
79
+ }
80
+ catch (error) {
81
+ core_1.Logger.log.error('fetchSinglePortfolio', error, { address });
82
+ return null;
83
+ }
84
+ }
85
+ /**
86
+ * Fetches portfolio data from Octavfi API.
87
+ * Note: The API currently doesn't support multiple addresses in a single request,
88
+ * so individual requests are made for each address.
89
+ * @param addresses - Array of addresses to fetch data for.
90
+ * @returns Array of portfolio data (may be empty if all requests fail).
91
+ */
92
+ async function fetchOctavfiPortfolios(addresses) {
93
+ const filteredAddresses = filterEvmAndSolanaAddresses(addresses);
94
+ if (filteredAddresses.length === 0) {
95
+ return [];
96
+ }
97
+ // Fetch portfolios for each address in parallel
98
+ const portfolioPromises = filteredAddresses.map((address) => fetchSinglePortfolio(address));
99
+ const portfolios = await Promise.all(portfolioPromises);
100
+ // Filter out null results (failed requests)
101
+ return portfolios.filter((portfolio) => portfolio !== null);
102
+ }
103
+ //# sourceMappingURL=fetcher.js.map
@@ -0,0 +1,3 @@
1
+ export * from './fetcher';
2
+ export * from './types';
3
+ export * from './utils';
@@ -0,0 +1,20 @@
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("./types"), exports);
19
+ __exportStar(require("./utils"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,34 @@
1
+ import type { IAddress } from '../../types';
2
+ export type IOctavfiEndpoint = 'portfolio';
3
+ export interface IOctavfiAsset {
4
+ balance: string;
5
+ symbol: string;
6
+ price: string;
7
+ value: string;
8
+ contractAddress?: IAddress;
9
+ chain: string;
10
+ }
11
+ export interface IOctavfiProtocolBreakdown {
12
+ key: string;
13
+ name: string;
14
+ value: string;
15
+ assets: IOctavfiAsset[];
16
+ }
17
+ export interface IOctavfiChainBreakdown {
18
+ key: string;
19
+ name: string;
20
+ value: string;
21
+ protocols: string[];
22
+ }
23
+ export interface IOctavfiPortfolio {
24
+ address: IAddress;
25
+ cashBalance: string;
26
+ dailyIncome: string;
27
+ dailyExpense: string;
28
+ fees: string;
29
+ feesFiat: string;
30
+ lastUpdated: string;
31
+ networth: string;
32
+ assetByProtocols: Record<string, IOctavfiProtocolBreakdown>;
33
+ chains: Record<string, IOctavfiChainBreakdown>;
34
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,16 @@
1
+ import type { IOctavfiPortfolio } from './types';
2
+ import type { IDebankNormalizedResponse } from '../debank/utils';
3
+ /**
4
+ * Transforms Octavfi portfolio response to DeBank-compatible format.
5
+ * This allows Solana addresses to use Octavfi data while maintaining
6
+ * compatibility with existing DeBank parsing functions.
7
+ *
8
+ * @param octavfiPortfolio - Octavfi portfolio response
9
+ * @returns DeBank-compatible response structure
10
+ */
11
+ export declare function transformOctavfiToDebank(octavfiPortfolio: IOctavfiPortfolio | null | undefined): IDebankNormalizedResponse;
12
+ /**
13
+ * Transforms multiple Octavfi portfolios to DeBank format.
14
+ * Used when fetching multiple addresses.
15
+ */
16
+ export declare function transformOctavfiPortfoliosToDebank(portfolios: IOctavfiPortfolio[]): any[];