@gauntlet-xyz/sdk 2.5.0 → 3.1.1

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 (362) hide show
  1. package/README.md +121 -7
  2. package/dist/api/activity.d.ts +4 -2
  3. package/dist/api/activity.d.ts.map +1 -1
  4. package/dist/api/activityRows.d.ts +11 -0
  5. package/dist/api/activityRows.d.ts.map +1 -0
  6. package/dist/api/caip.d.ts +1 -1
  7. package/dist/api/caip.d.ts.map +1 -1
  8. package/dist/api/client.d.ts +43 -5
  9. package/dist/api/client.d.ts.map +1 -1
  10. package/dist/api/decimal.d.ts.map +1 -1
  11. package/dist/api/errors.d.ts +1 -1
  12. package/dist/api/errors.d.ts.map +1 -1
  13. package/dist/api/generated.d.ts +570 -7
  14. package/dist/api/generated.d.ts.map +1 -1
  15. package/dist/api/http.d.ts.map +1 -1
  16. package/dist/api/index.d.ts +13 -13
  17. package/dist/api/index.d.ts.map +1 -1
  18. package/dist/api/index.js +47 -8
  19. package/dist/api/index.js.map +7 -1
  20. package/dist/api/positionHistory.d.ts +1 -1
  21. package/dist/api/positionHistory.d.ts.map +1 -1
  22. package/dist/attribution/index.d.ts +8 -5
  23. package/dist/attribution/index.d.ts.map +1 -1
  24. package/dist/chunk-JJOLVL5V.js +546 -0
  25. package/dist/chunk-JJOLVL5V.js.map +7 -0
  26. package/dist/chunk-JRSNLXFY.js +2009 -0
  27. package/dist/chunk-JRSNLXFY.js.map +7 -0
  28. package/dist/chunk-MEKISE2T.js +367 -0
  29. package/dist/chunk-MEKISE2T.js.map +7 -0
  30. package/dist/chunk-YQXTLIJA.js +4477 -0
  31. package/dist/chunk-YQXTLIJA.js.map +7 -0
  32. package/dist/cjs/api/activity.d.ts +72 -0
  33. package/dist/cjs/api/activity.d.ts.map +1 -0
  34. package/dist/cjs/api/activity.js +138 -0
  35. package/dist/cjs/api/activity.js.map +7 -0
  36. package/dist/cjs/api/activityRows.d.ts +11 -0
  37. package/dist/cjs/api/activityRows.d.ts.map +1 -0
  38. package/dist/cjs/api/activityRows.js +139 -0
  39. package/dist/cjs/api/activityRows.js.map +7 -0
  40. package/dist/cjs/api/caip.d.ts +29 -0
  41. package/dist/cjs/api/caip.d.ts.map +1 -0
  42. package/dist/cjs/api/caip.js +61 -0
  43. package/dist/cjs/api/caip.js.map +7 -0
  44. package/dist/cjs/api/client.d.ts +173 -0
  45. package/dist/cjs/api/client.d.ts.map +1 -0
  46. package/dist/cjs/api/client.js +199 -0
  47. package/dist/cjs/api/client.js.map +7 -0
  48. package/dist/cjs/api/decimal.d.ts +21 -0
  49. package/dist/cjs/api/decimal.d.ts.map +1 -0
  50. package/dist/cjs/api/decimal.js +61 -0
  51. package/dist/cjs/api/decimal.js.map +7 -0
  52. package/dist/cjs/api/errors.d.ts +32 -0
  53. package/dist/cjs/api/errors.d.ts.map +1 -0
  54. package/dist/cjs/api/errors.js +80 -0
  55. package/dist/cjs/api/errors.js.map +7 -0
  56. package/dist/cjs/api/generated.d.ts +2068 -0
  57. package/dist/cjs/api/generated.d.ts.map +1 -0
  58. package/dist/cjs/api/generated.js +17 -0
  59. package/dist/cjs/api/generated.js.map +7 -0
  60. package/dist/cjs/api/http.d.ts +16 -0
  61. package/dist/cjs/api/http.d.ts.map +1 -0
  62. package/dist/cjs/api/http.js +65 -0
  63. package/dist/cjs/api/http.js.map +7 -0
  64. package/dist/cjs/api/index.d.ts +14 -0
  65. package/dist/cjs/api/index.d.ts.map +1 -0
  66. package/dist/cjs/api/index.js +73 -0
  67. package/dist/cjs/api/index.js.map +7 -0
  68. package/dist/cjs/api/positionHistory.d.ts +44 -0
  69. package/dist/cjs/api/positionHistory.d.ts.map +1 -0
  70. package/dist/cjs/api/positionHistory.js +144 -0
  71. package/dist/cjs/api/positionHistory.js.map +7 -0
  72. package/dist/cjs/attribution/erc8021.d.ts +9 -0
  73. package/dist/cjs/attribution/erc8021.d.ts.map +1 -0
  74. package/dist/cjs/attribution/erc8021.js +37 -0
  75. package/dist/cjs/attribution/erc8021.js.map +7 -0
  76. package/dist/cjs/attribution/index.d.ts +28 -0
  77. package/dist/cjs/attribution/index.d.ts.map +1 -0
  78. package/dist/cjs/attribution/index.js +70 -0
  79. package/dist/cjs/attribution/index.js.map +7 -0
  80. package/dist/cjs/client.d.ts +72 -0
  81. package/dist/cjs/client.d.ts.map +1 -0
  82. package/dist/cjs/client.js +80 -0
  83. package/dist/cjs/client.js.map +7 -0
  84. package/dist/cjs/constants.d.ts +16 -0
  85. package/dist/cjs/constants.d.ts.map +1 -0
  86. package/dist/cjs/constants.js +83 -0
  87. package/dist/cjs/constants.js.map +7 -0
  88. package/dist/cjs/errors.d.ts +85 -0
  89. package/dist/cjs/errors.d.ts.map +1 -0
  90. package/dist/cjs/errors.js +210 -0
  91. package/dist/cjs/errors.js.map +7 -0
  92. package/dist/cjs/evm/abis/erc20.d.ts +41 -0
  93. package/dist/cjs/evm/abis/erc20.d.ts.map +1 -0
  94. package/dist/cjs/evm/abis/erc20.js +57 -0
  95. package/dist/cjs/evm/abis/erc20.js.map +7 -0
  96. package/dist/cjs/evm/abis/erc4626.d.ts +105 -0
  97. package/dist/cjs/evm/abis/erc4626.d.ts.map +1 -0
  98. package/dist/cjs/evm/abis/erc4626.js +97 -0
  99. package/dist/cjs/evm/abis/erc4626.js.map +7 -0
  100. package/dist/cjs/evm/abis/multiDepositorVault.d.ts +1048 -0
  101. package/dist/cjs/evm/abis/multiDepositorVault.d.ts.map +1 -0
  102. package/dist/cjs/evm/abis/multiDepositorVault.js +614 -0
  103. package/dist/cjs/evm/abis/multiDepositorVault.js.map +7 -0
  104. package/dist/cjs/evm/abis/priceAndFeeCalculator.d.ts +910 -0
  105. package/dist/cjs/evm/abis/priceAndFeeCalculator.d.ts.map +1 -0
  106. package/dist/cjs/evm/abis/priceAndFeeCalculator.js +517 -0
  107. package/dist/cjs/evm/abis/priceAndFeeCalculator.js.map +7 -0
  108. package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.d.ts +277 -0
  109. package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.d.ts.map +1 -0
  110. package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.js +166 -0
  111. package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.js.map +7 -0
  112. package/dist/cjs/evm/abis/provisioner.d.ts +4984 -0
  113. package/dist/cjs/evm/abis/provisioner.d.ts.map +1 -0
  114. package/dist/cjs/evm/abis/provisioner.js +2785 -0
  115. package/dist/cjs/evm/abis/provisioner.js.map +7 -0
  116. package/dist/cjs/evm/abis/provisionerV2.d.ts +740 -0
  117. package/dist/cjs/evm/abis/provisionerV2.d.ts.map +1 -0
  118. package/dist/cjs/evm/abis/provisionerV2.js +320 -0
  119. package/dist/cjs/evm/abis/provisionerV2.js.map +7 -0
  120. package/dist/cjs/evm/adapters/aera.d.ts +6 -0
  121. package/dist/cjs/evm/adapters/aera.d.ts.map +1 -0
  122. package/dist/cjs/evm/adapters/aera.js +500 -0
  123. package/dist/cjs/evm/adapters/aera.js.map +7 -0
  124. package/dist/cjs/evm/adapters/index.d.ts +3 -0
  125. package/dist/cjs/evm/adapters/index.d.ts.map +1 -0
  126. package/dist/cjs/evm/adapters/index.js +41 -0
  127. package/dist/cjs/evm/adapters/index.js.map +7 -0
  128. package/dist/cjs/evm/adapters/morpho.d.ts +3 -0
  129. package/dist/cjs/evm/adapters/morpho.d.ts.map +1 -0
  130. package/dist/cjs/evm/adapters/morpho.js +103 -0
  131. package/dist/cjs/evm/adapters/morpho.js.map +7 -0
  132. package/dist/cjs/evm/adapters/types.d.ts +85 -0
  133. package/dist/cjs/evm/adapters/types.d.ts.map +1 -0
  134. package/dist/cjs/evm/adapters/types.js +17 -0
  135. package/dist/cjs/evm/adapters/types.js.map +7 -0
  136. package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.d.ts +46 -0
  137. package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -0
  138. package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.js +223 -0
  139. package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.js.map +7 -0
  140. package/dist/cjs/evm/aeraContracts/readOptions.d.ts +8 -0
  141. package/dist/cjs/evm/aeraContracts/readOptions.d.ts.map +1 -0
  142. package/dist/cjs/evm/aeraContracts/readOptions.js +31 -0
  143. package/dist/cjs/evm/aeraContracts/readOptions.js.map +7 -0
  144. package/dist/cjs/evm/aeraContracts/v1.d.ts +2317 -0
  145. package/dist/cjs/evm/aeraContracts/v1.d.ts.map +1 -0
  146. package/dist/cjs/evm/aeraContracts/v1.js +120 -0
  147. package/dist/cjs/evm/aeraContracts/v1.js.map +7 -0
  148. package/dist/cjs/evm/aeraContracts/v2.d.ts +4538 -0
  149. package/dist/cjs/evm/aeraContracts/v2.d.ts.map +1 -0
  150. package/dist/cjs/evm/aeraContracts/v2.js +449 -0
  151. package/dist/cjs/evm/aeraContracts/v2.js.map +7 -0
  152. package/dist/cjs/evm/aeraContracts.d.ts +33 -0
  153. package/dist/cjs/evm/aeraContracts.d.ts.map +1 -0
  154. package/dist/cjs/evm/aeraContracts.js +234 -0
  155. package/dist/cjs/evm/aeraContracts.js.map +7 -0
  156. package/dist/cjs/evm/deposit.d.ts +51 -0
  157. package/dist/cjs/evm/deposit.d.ts.map +1 -0
  158. package/dist/cjs/evm/deposit.js +142 -0
  159. package/dist/cjs/evm/deposit.js.map +7 -0
  160. package/dist/cjs/evm/depositQuote.d.ts +32 -0
  161. package/dist/cjs/evm/depositQuote.d.ts.map +1 -0
  162. package/dist/cjs/evm/depositQuote.js +97 -0
  163. package/dist/cjs/evm/depositQuote.js.map +7 -0
  164. package/dist/cjs/evm/depositReceiverApproval.d.ts +17 -0
  165. package/dist/cjs/evm/depositReceiverApproval.d.ts.map +1 -0
  166. package/dist/cjs/evm/depositReceiverApproval.js +71 -0
  167. package/dist/cjs/evm/depositReceiverApproval.js.map +7 -0
  168. package/dist/cjs/evm/index.d.ts +28 -0
  169. package/dist/cjs/evm/index.d.ts.map +1 -0
  170. package/dist/cjs/evm/index.js +116 -0
  171. package/dist/cjs/evm/index.js.map +7 -0
  172. package/dist/cjs/evm/operationMode.d.ts +9 -0
  173. package/dist/cjs/evm/operationMode.d.ts.map +1 -0
  174. package/dist/cjs/evm/operationMode.js +65 -0
  175. package/dist/cjs/evm/operationMode.js.map +7 -0
  176. package/dist/cjs/evm/tokenModes.d.ts +22 -0
  177. package/dist/cjs/evm/tokenModes.d.ts.map +1 -0
  178. package/dist/cjs/evm/tokenModes.js +47 -0
  179. package/dist/cjs/evm/tokenModes.js.map +7 -0
  180. package/dist/cjs/evm/types.d.ts +34 -0
  181. package/dist/cjs/evm/types.d.ts.map +1 -0
  182. package/dist/cjs/evm/types.js +32 -0
  183. package/dist/cjs/evm/types.js.map +7 -0
  184. package/dist/cjs/evm/userCurrentBalance.d.ts +69 -0
  185. package/dist/cjs/evm/userCurrentBalance.d.ts.map +1 -0
  186. package/dist/cjs/evm/userCurrentBalance.js +268 -0
  187. package/dist/cjs/evm/userCurrentBalance.js.map +7 -0
  188. package/dist/cjs/evm/vaults.d.ts +44 -0
  189. package/dist/cjs/evm/vaults.d.ts.map +1 -0
  190. package/dist/cjs/evm/vaults.js +78 -0
  191. package/dist/cjs/evm/vaults.js.map +7 -0
  192. package/dist/cjs/evm/withdraw.d.ts +75 -0
  193. package/dist/cjs/evm/withdraw.d.ts.map +1 -0
  194. package/dist/cjs/evm/withdraw.js +174 -0
  195. package/dist/cjs/evm/withdraw.js.map +7 -0
  196. package/dist/cjs/evm/withdrawQuote.d.ts +135 -0
  197. package/dist/cjs/evm/withdrawQuote.d.ts.map +1 -0
  198. package/dist/cjs/evm/withdrawQuote.js +257 -0
  199. package/dist/cjs/evm/withdrawQuote.js.map +7 -0
  200. package/dist/cjs/index.d.ts +31 -0
  201. package/dist/cjs/index.d.ts.map +1 -0
  202. package/dist/cjs/index.js +128 -0
  203. package/dist/cjs/index.js.map +7 -0
  204. package/dist/cjs/package.json +1 -0
  205. package/dist/cjs/privy/index.d.ts +52 -0
  206. package/dist/cjs/privy/index.d.ts.map +1 -0
  207. package/dist/cjs/privy/index.js +57 -0
  208. package/dist/cjs/privy/index.js.map +7 -0
  209. package/dist/client.d.ts +4 -2
  210. package/dist/client.d.ts.map +1 -1
  211. package/dist/constants.d.ts.map +1 -1
  212. package/dist/errors.d.ts +4 -1
  213. package/dist/errors.d.ts.map +1 -1
  214. package/dist/evm/adapters/aera.d.ts +1 -1
  215. package/dist/evm/adapters/aera.d.ts.map +1 -1
  216. package/dist/evm/adapters/index.d.ts +1 -1
  217. package/dist/evm/adapters/index.d.ts.map +1 -1
  218. package/dist/evm/adapters/morpho.d.ts +1 -1
  219. package/dist/evm/adapters/morpho.d.ts.map +1 -1
  220. package/dist/evm/adapters/types.d.ts +6 -3
  221. package/dist/evm/adapters/types.d.ts.map +1 -1
  222. package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts +1 -1
  223. package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -1
  224. package/dist/evm/aeraContracts/v1.d.ts +2 -2
  225. package/dist/evm/aeraContracts/v1.d.ts.map +1 -1
  226. package/dist/evm/aeraContracts/v2.d.ts +25 -4
  227. package/dist/evm/aeraContracts/v2.d.ts.map +1 -1
  228. package/dist/evm/aeraContracts.d.ts +2 -2
  229. package/dist/evm/aeraContracts.d.ts.map +1 -1
  230. package/dist/evm/deposit.d.ts +7 -4
  231. package/dist/evm/deposit.d.ts.map +1 -1
  232. package/dist/evm/depositQuote.d.ts +32 -0
  233. package/dist/evm/depositQuote.d.ts.map +1 -0
  234. package/dist/evm/depositReceiverApproval.d.ts +2 -2
  235. package/dist/evm/depositReceiverApproval.d.ts.map +1 -1
  236. package/dist/evm/index.d.ts +27 -25
  237. package/dist/evm/index.d.ts.map +1 -1
  238. package/dist/evm/index.js +86 -12
  239. package/dist/evm/index.js.map +7 -1
  240. package/dist/evm/tokenModes.d.ts +2 -2
  241. package/dist/evm/tokenModes.d.ts.map +1 -1
  242. package/dist/evm/userCurrentBalance.d.ts +21 -3
  243. package/dist/evm/userCurrentBalance.d.ts.map +1 -1
  244. package/dist/evm/vaults.d.ts +2 -9
  245. package/dist/evm/vaults.d.ts.map +1 -1
  246. package/dist/evm/withdraw.d.ts +5 -3
  247. package/dist/evm/withdraw.d.ts.map +1 -1
  248. package/dist/evm/withdrawQuote.d.ts +14 -6
  249. package/dist/evm/withdrawQuote.d.ts.map +1 -1
  250. package/dist/index.d.ts +30 -28
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +137 -14
  253. package/dist/index.js.map +7 -1
  254. package/dist/manifest/vaults.json +1958 -0
  255. package/dist/privy/index.d.ts +1 -1
  256. package/dist/privy/index.d.ts.map +1 -1
  257. package/dist/privy/index.js +39 -48
  258. package/dist/privy/index.js.map +7 -1
  259. package/manifest/vaults.json +22 -395
  260. package/package.json +43 -9
  261. package/src/api/activity.ts +18 -15
  262. package/src/api/activityRows.ts +143 -0
  263. package/src/api/caip.ts +3 -1
  264. package/src/api/client.ts +105 -6
  265. package/src/api/decimal.ts +1 -0
  266. package/src/api/generated.ts +570 -7
  267. package/src/api/http.ts +1 -0
  268. package/src/api/index.ts +8 -0
  269. package/src/api/positionHistory.ts +20 -5
  270. package/src/attribution/index.ts +6 -2
  271. package/src/client.ts +4 -1
  272. package/src/constants.ts +2 -0
  273. package/src/errors.ts +7 -0
  274. package/src/evm/adapters/aera.ts +40 -19
  275. package/src/evm/adapters/types.ts +3 -0
  276. package/src/evm/aeraContracts/v2.ts +124 -16
  277. package/src/evm/aeraContracts.ts +29 -14
  278. package/src/evm/deposit.ts +61 -18
  279. package/src/evm/depositQuote.ts +138 -0
  280. package/src/evm/depositReceiverApproval.ts +14 -9
  281. package/src/evm/index.ts +10 -1
  282. package/src/evm/userCurrentBalance.ts +155 -60
  283. package/src/evm/vaults.ts +0 -7
  284. package/src/evm/withdraw.ts +20 -1
  285. package/src/evm/withdrawQuote.ts +126 -51
  286. package/src/index.ts +11 -2
  287. package/dist/api/activity.js +0 -154
  288. package/dist/api/activity.js.map +0 -1
  289. package/dist/api/caip.js +0 -38
  290. package/dist/api/caip.js.map +0 -1
  291. package/dist/api/client.js +0 -119
  292. package/dist/api/client.js.map +0 -1
  293. package/dist/api/decimal.js +0 -44
  294. package/dist/api/decimal.js.map +0 -1
  295. package/dist/api/errors.js +0 -41
  296. package/dist/api/errors.js.map +0 -1
  297. package/dist/api/generated.js +0 -6
  298. package/dist/api/generated.js.map +0 -1
  299. package/dist/api/http.js +0 -39
  300. package/dist/api/http.js.map +0 -1
  301. package/dist/api/positionHistory.js +0 -126
  302. package/dist/api/positionHistory.js.map +0 -1
  303. package/dist/attribution/erc8021.js +0 -17
  304. package/dist/attribution/erc8021.js.map +0 -1
  305. package/dist/attribution/index.js +0 -45
  306. package/dist/attribution/index.js.map +0 -1
  307. package/dist/client.js +0 -72
  308. package/dist/client.js.map +0 -1
  309. package/dist/constants.js +0 -28
  310. package/dist/constants.js.map +0 -1
  311. package/dist/errors.js +0 -134
  312. package/dist/errors.js.map +0 -1
  313. package/dist/evm/abis/erc20.js +0 -30
  314. package/dist/evm/abis/erc20.js.map +0 -1
  315. package/dist/evm/abis/erc4626.js +0 -70
  316. package/dist/evm/abis/erc4626.js.map +0 -1
  317. package/dist/evm/abis/multiDepositorVault.js +0 -587
  318. package/dist/evm/abis/multiDepositorVault.js.map +0 -1
  319. package/dist/evm/abis/priceAndFeeCalculator.js +0 -490
  320. package/dist/evm/abis/priceAndFeeCalculator.js.map +0 -1
  321. package/dist/evm/abis/priceAndFeeCalculatorV2.js +0 -141
  322. package/dist/evm/abis/priceAndFeeCalculatorV2.js.map +0 -1
  323. package/dist/evm/abis/provisioner.js +0 -2768
  324. package/dist/evm/abis/provisioner.js.map +0 -1
  325. package/dist/evm/abis/provisionerV2.js +0 -295
  326. package/dist/evm/abis/provisionerV2.js.map +0 -1
  327. package/dist/evm/adapters/aera.js +0 -280
  328. package/dist/evm/adapters/aera.js.map +0 -1
  329. package/dist/evm/adapters/index.js +0 -14
  330. package/dist/evm/adapters/index.js.map +0 -1
  331. package/dist/evm/adapters/morpho.js +0 -79
  332. package/dist/evm/adapters/morpho.js.map +0 -1
  333. package/dist/evm/adapters/types.js +0 -2
  334. package/dist/evm/adapters/types.js.map +0 -1
  335. package/dist/evm/aeraContracts/priceAndFeeCalculator.js +0 -174
  336. package/dist/evm/aeraContracts/priceAndFeeCalculator.js.map +0 -1
  337. package/dist/evm/aeraContracts/readOptions.js +0 -4
  338. package/dist/evm/aeraContracts/readOptions.js.map +0 -1
  339. package/dist/evm/aeraContracts/v1.js +0 -59
  340. package/dist/evm/aeraContracts/v1.js.map +0 -1
  341. package/dist/evm/aeraContracts/v2.js +0 -273
  342. package/dist/evm/aeraContracts/v2.js.map +0 -1
  343. package/dist/evm/aeraContracts.js +0 -195
  344. package/dist/evm/aeraContracts.js.map +0 -1
  345. package/dist/evm/deposit.js +0 -109
  346. package/dist/evm/deposit.js.map +0 -1
  347. package/dist/evm/depositReceiverApproval.js +0 -32
  348. package/dist/evm/depositReceiverApproval.js.map +0 -1
  349. package/dist/evm/operationMode.js +0 -41
  350. package/dist/evm/operationMode.js.map +0 -1
  351. package/dist/evm/tokenModes.js +0 -34
  352. package/dist/evm/tokenModes.js.map +0 -1
  353. package/dist/evm/types.js +0 -5
  354. package/dist/evm/types.js.map +0 -1
  355. package/dist/evm/userCurrentBalance.js +0 -211
  356. package/dist/evm/userCurrentBalance.js.map +0 -1
  357. package/dist/evm/vaults.js +0 -75
  358. package/dist/evm/vaults.js.map +0 -1
  359. package/dist/evm/withdraw.js +0 -177
  360. package/dist/evm/withdraw.js.map +0 -1
  361. package/dist/evm/withdrawQuote.js +0 -164
  362. package/dist/evm/withdrawQuote.js.map +0 -1
package/src/evm/vaults.ts CHANGED
@@ -8,16 +8,9 @@ export enum VaultId {
8
8
  EthUsdcPrime = 'ethUsdcPrime',
9
9
  AeraUsdAlpha = 'gtusda',
10
10
  EthUsdcPrimeV2 = 'ethUsdcPrimeV2',
11
- AeraUsdAlphaStaging = 'stgusda',
12
- AeraUsdAlphaDev = 'devusda',
13
- AeraUsdAlphaDevDeux = 'devusda2',
14
11
  AeraLeveredFalconX = 'gpaafalconx',
15
- AeraLeveredFalconXStaging = 'pytstg',
16
12
  AeraSyrupUsdc = 'gpsyrupusdc',
17
- AeraSyrupUsdcStaging = 'syruppytstg',
18
13
  AeraBtcYield = 'gtbtc',
19
- AeraBtcYieldStaging = 'gtbtcstaging',
20
- AeraLeveredUsccStaging = 'gtusccstg',
21
14
  AeraLeveredUscc = 'gtuscc',
22
15
  AeraLend = 'gtlend',
23
16
  AeraKastEth = 'kasteth',
@@ -9,6 +9,7 @@ import {
9
9
  AccountRequiredError,
10
10
  VaultNotFoundError,
11
11
  UnsupportedAssetError,
12
+ UnsupportedFeatureError,
12
13
  InvalidSlippageBPSError,
13
14
  InvalidWithdrawParamsError,
14
15
  } from '../errors';
@@ -49,6 +50,8 @@ export type EvmWithdrawParams = {
49
50
  * Supplying bounds implies `depositMode: 'sync'`; explicit async requests are rejected.
50
51
  */
51
52
  syncWithdrawQuote?: SyncWithdrawQuoteBounds;
53
+ /** Limit a sync withdrawal to the shares reviewed before a rate change. */
54
+ maxShares?: bigint;
52
55
  } & (
53
56
  | { shares: bigint; amount?: never; entireAmount?: never }
54
57
  | { amount: bigint; shares?: never; entireAmount?: never }
@@ -56,6 +59,15 @@ export type EvmWithdrawParams = {
56
59
  );
57
60
 
58
61
  function validateWithdrawParams(params: EvmWithdrawParams) {
62
+ if (params.entireAmount !== undefined && typeof params.entireAmount !== 'boolean') {
63
+ throw new InvalidWithdrawParamsError();
64
+ }
65
+ if (
66
+ (params.amount !== undefined && params.amount < 0n) ||
67
+ (params.shares !== undefined && params.shares < 0n)
68
+ ) {
69
+ throw new InvalidWithdrawParamsError();
70
+ }
59
71
  const modes = [
60
72
  'amount' in params && params.amount != null,
61
73
  'shares' in params && params.shares != null,
@@ -171,6 +183,7 @@ export async function getWithdrawTx(
171
183
  client: GauntletClient,
172
184
  params: EvmWithdrawParams
173
185
  ): Promise<PreparedTx[]> {
186
+ params = structuredClone(params);
174
187
  validateWithdrawParams(params);
175
188
 
176
189
  if (
@@ -196,6 +209,9 @@ export async function getWithdrawTx(
196
209
  }
197
210
 
198
211
  const { vault, protocol } = resolved;
212
+ if (params.maxShares !== undefined && protocol !== 'aera') {
213
+ throw new UnsupportedFeatureError('maxShares requires an Aera sync withdrawal');
214
+ }
199
215
 
200
216
  const token =
201
217
  vault.supplyToken.length > 1
@@ -267,6 +283,7 @@ export async function getWithdrawTx(
267
283
  maxPriceAge: params.maxPriceAge,
268
284
  aeraRuntime,
269
285
  syncWithdrawQuote: params.syncWithdrawQuote,
286
+ maxShares: params.maxShares,
270
287
  ...('shares' in params && params.shares != null ? { shares: params.shares } : {}),
271
288
  ...('amount' in params && params.amount != null ? { amount: params.amount } : {}),
272
289
  ...('entireAmount' in params && params.entireAmount ? { entireAmount: true as const } : {}),
@@ -274,5 +291,7 @@ export async function getWithdrawTx(
274
291
 
275
292
  const steps = await adapter.buildWithdraw(withdrawParams as AdapterWithdrawParams);
276
293
 
277
- return await Promise.all(steps.map((step) => encodeTransactionWithAttribution(client, step)));
294
+ return await Promise.all(
295
+ steps.map((step) => encodeTransactionWithAttribution(client, step, chainId))
296
+ );
278
297
  }
@@ -24,8 +24,10 @@ import {
24
24
  convertTokenToNumeraire,
25
25
  } from './aeraContracts/priceAndFeeCalculator';
26
26
  import {
27
+ getKnownSyncRedeemLiquidityTokens,
27
28
  getSyncRedeemEpochState,
28
29
  getSyncRedeemRate,
30
+ getSyncRedeemRateContext,
29
31
  getSyncRedeemTokenOut,
30
32
  getSyncWithdrawUnitsIn,
31
33
  getUserUnitsRefundableUntil,
@@ -33,7 +35,7 @@ import {
33
35
  } from './aeraContracts/v2';
34
36
  import { resolveOperationMode } from './operationMode';
35
37
 
36
- /** Epoch capacity accounting for the global sync redeem cap. */
38
+ /** Epoch-cap accounting plus any liquid-token balance known to the caller. */
37
39
  export interface SyncWithdrawCapacity {
38
40
  /** Effective epoch cap (min of relative and absolute), in numeraire. */
39
41
  epochCapNumeraire: bigint;
@@ -43,6 +45,8 @@ export interface SyncWithdrawCapacity {
43
45
  remainingNumeraire: bigint;
44
46
  /** Remaining capacity expressed in the withdraw token. */
45
47
  remainingTokens: bigint;
48
+ /** Vault token balance when no pull-funds calldata is configured; otherwise unknown. */
49
+ knownLiquidityTokens?: bigint;
46
50
  /** This redemption's size in numeraire (matches the on-chain epoch accounting). */
47
51
  requestNumeraire: bigint;
48
52
  /** True when this redemption alone exceeds remaining epoch capacity (the tx would revert). */
@@ -77,6 +81,8 @@ interface SyncWithdrawQuoteDetails {
77
81
  tokensOut: bigint;
78
82
  /** Lower bound on tokens received after slippage (equals `tokensOut` for `'withdraw'`). */
79
83
  minTokensOut: bigint;
84
+ /** Largest exact-token withdrawal that fits `shares`; only set for `'redeem'` quotes. */
85
+ shareSafeTokensOut?: bigint;
80
86
  /** Live multiplier breakdown (base, dynamic premium, effective), in bps. */
81
87
  rate: SyncRedeemRate;
82
88
  capacity: SyncWithdrawCapacity;
@@ -112,12 +118,15 @@ export type SyncWithdrawQuote =
112
118
  | (SyncWithdrawQuoteDetails & { kind: 'redeem' })
113
119
  | (SyncWithdrawQuoteDetails & { kind: 'withdraw' });
114
120
 
115
- type SyncWithdrawQuoteBaseParams = {
121
+ export type SyncWithdrawRateParams = {
116
122
  vaultId: string;
117
123
  /** EVM chain ID. Defaults to the vault's primary chain (Base for current multichain vaults). */
118
124
  chainId?: number;
119
125
  /** Required for multiasset vaults. */
120
126
  assetSymbol?: string;
127
+ };
128
+
129
+ type SyncWithdrawQuoteBaseParams = SyncWithdrawRateParams & {
121
130
  /** Optional for explicit amount/shares quotes; required for full-position quotes. */
122
131
  account?: Address;
123
132
  /**
@@ -150,47 +159,25 @@ function validateSyncWithdrawQuoteParams(params: SyncWithdrawQuoteParams) {
150
159
  }
151
160
  }
152
161
 
153
- /**
154
- * Builds a live quote for an instant (sync) withdraw without sending a transaction.
155
- *
156
- * Surfaces everything the on-chain `redeem`/`withdraw` would apply or check but that a plain
157
- * transaction build does not pre-validate: the effective rate (including the price-age dynamic
158
- * premium), slippage bounds, the global per-epoch redeem capacity, and whether the caller's units
159
- * are still locked from a recent sync deposit.
160
- *
161
- * @throws {VaultNotFoundError} If the vault ID is not found.
162
- * @throws {UnsupportedAssetError} If the asset symbol is not accepted by the vault.
163
- * @throws {UnsupportedFeatureError} If the vault is not an Aera V2 deployment.
164
- * @throws {UnsupportedDepositModeError} If sync redeem is not enabled for the token.
165
- * @throws {StalePriceError} If the oracle price is too stale for an instant redeem.
166
- */
167
- export async function getSyncWithdrawQuote(
162
+ async function resolveSyncWithdrawContext(
168
163
  client: GauntletClient,
169
- params: SyncWithdrawQuoteParams
170
- ): Promise<SyncWithdrawQuote> {
171
- validateSyncWithdrawQuoteParams(params);
172
-
173
- if (
174
- params.slippageBps !== undefined &&
175
- (!Number.isInteger(params.slippageBps) ||
176
- params.slippageBps < 0 ||
177
- params.slippageBps > Number(MAX_BPS))
178
- ) {
179
- throw new InvalidSlippageBPSError(params.slippageBps);
180
- }
181
- const slippageBps = params.slippageBps ?? DEFAULT_BPS;
182
-
164
+ params: SyncWithdrawRateParams,
165
+ readKind: 'quote' | 'rate'
166
+ ) {
183
167
  const resolved = await resolveVault(client, params.vaultId, params.chainId);
184
168
  if (!resolved) throw new VaultNotFoundError(params.vaultId);
185
169
 
186
170
  const { vault, protocol } = resolved;
187
171
  if (protocol !== 'aera') {
188
- throw new UnsupportedFeatureError('Sync withdraw quote is only available for Aera vaults');
172
+ throw new UnsupportedFeatureError(
173
+ readKind === 'quote'
174
+ ? 'Sync withdraw quote is only available for Aera vaults'
175
+ : 'Sync withdraw rate is only available for Aera vaults'
176
+ );
189
177
  }
190
178
 
191
179
  const chainId = params.chainId ?? vault.chainId;
192
180
  const publicClient = client.getPublicClient(chainId);
193
-
194
181
  const token =
195
182
  vault.supplyToken.length > 1
196
183
  ? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol)
@@ -201,33 +188,101 @@ export async function getSyncWithdrawQuote(
201
188
 
202
189
  const quoteBlock = await publicClient.getBlock();
203
190
  if (quoteBlock.number === null) {
204
- throw new UnsupportedFeatureError('Aera: sync withdraw quote requires a numbered block');
191
+ throw new UnsupportedFeatureError(
192
+ readKind === 'quote'
193
+ ? 'Aera: sync withdraw quote requires a numbered block'
194
+ : 'Aera: sync withdraw rate requires a numbered block'
195
+ );
205
196
  }
206
- const quoteReadContext = {
197
+ const readContext = {
207
198
  blockNumber: quoteBlock.number,
208
199
  blockTimestamp: BigInt(quoteBlock.timestamp),
209
200
  };
210
201
 
211
- const runtime = await resolveAeraRuntimeContracts(publicClient, vault, quoteReadContext);
202
+ const runtime = await resolveAeraRuntimeContracts(publicClient, vault, readContext);
212
203
  requireAeraSyncRedeemRuntime(runtime);
213
204
 
214
205
  const support = await resolveAeraTokenModeSupport(
215
206
  publicClient,
216
207
  runtime,
217
208
  token.address,
218
- quoteReadContext
209
+ readContext
219
210
  );
220
211
  resolveOperationMode(params.vaultId, 'sync', {
221
212
  async: support.asyncRedeem,
222
213
  sync: support.syncRedeem,
223
214
  });
224
215
 
216
+ return { publicClient, vault, token, runtime, chainId, readContext };
217
+ }
218
+
219
+ /** Reads the live instant-withdraw fee rate without requiring a withdrawal amount or account. */
220
+ export async function getSyncWithdrawRate(
221
+ client: GauntletClient,
222
+ params: SyncWithdrawRateParams
223
+ ): Promise<SyncRedeemRate> {
224
+ const { publicClient, vault, token, runtime, readContext } = await resolveSyncWithdrawContext(
225
+ client,
226
+ params,
227
+ 'rate'
228
+ );
229
+
230
+ return getSyncRedeemRate(
231
+ publicClient,
232
+ runtime.provisioner.address,
233
+ vault.vaultAddress,
234
+ token.address,
235
+ runtime.feeCalculator.address,
236
+ readContext
237
+ );
238
+ }
239
+
240
+ /**
241
+ * Builds a live quote for an instant (sync) withdraw without sending a transaction.
242
+ *
243
+ * Surfaces everything the on-chain `redeem`/`withdraw` would apply or check but that a plain
244
+ * transaction build does not pre-validate: the effective rate (including the price-age dynamic
245
+ * premium), slippage bounds, the global per-epoch redeem capacity, any known vault-balance limit,
246
+ * and whether the caller's units are still locked from a recent sync deposit.
247
+ *
248
+ * @throws {VaultNotFoundError} If the vault ID is not found.
249
+ * @throws {UnsupportedAssetError} If the asset symbol is not accepted by the vault.
250
+ * @throws {UnsupportedFeatureError} If the vault is not an Aera V2 deployment.
251
+ * @throws {UnsupportedDepositModeError} If sync redeem is not enabled for the token.
252
+ * @throws {StalePriceError} If the oracle price is too stale for an instant redeem.
253
+ */
254
+ export async function getSyncWithdrawQuote(
255
+ client: GauntletClient,
256
+ params: SyncWithdrawQuoteParams
257
+ ): Promise<SyncWithdrawQuote> {
258
+ params = structuredClone(params);
259
+ validateSyncWithdrawQuoteParams(params);
260
+
261
+ if (
262
+ params.slippageBps !== undefined &&
263
+ (!Number.isInteger(params.slippageBps) ||
264
+ params.slippageBps < 0 ||
265
+ params.slippageBps > Number(MAX_BPS))
266
+ ) {
267
+ throw new InvalidSlippageBPSError(params.slippageBps);
268
+ }
269
+ const slippageBps = params.slippageBps ?? DEFAULT_BPS;
270
+
271
+ const {
272
+ publicClient,
273
+ vault,
274
+ token,
275
+ runtime,
276
+ chainId,
277
+ readContext: quoteReadContext,
278
+ } = await resolveSyncWithdrawContext(client, params, 'quote');
279
+
225
280
  const provisioner = runtime.provisioner.address;
226
281
  const feeCalculator = runtime.feeCalculator.address;
227
282
  const feeVersion = runtime.feeCalculator.version;
228
283
  const vaultAddress = vault.vaultAddress;
229
284
 
230
- const rate = await getSyncRedeemRate(
285
+ const { rate, hasPullFundsSubmitData } = await getSyncRedeemRateContext(
231
286
  publicClient,
232
287
  provisioner,
233
288
  vaultAddress,
@@ -242,6 +297,7 @@ export async function getSyncWithdrawQuote(
242
297
  let minTokensOut: bigint;
243
298
  let maxUnitsIn: bigint;
244
299
  let request: SyncWithdrawQuoteRequest;
300
+ let shareSafeTokensOut: bigint | undefined;
245
301
 
246
302
  if ('amount' in params && params.amount != null) {
247
303
  // Exact token out: shares burned is the estimate, bounded above by slippage.
@@ -283,23 +339,34 @@ export async function getSyncWithdrawQuote(
283
339
  throw new InvalidWithdrawParamsError();
284
340
  }
285
341
  requireNonZeroSyncWithdrawBound(shares, 'unitsIn');
286
- tokensOut = await getSyncRedeemTokenOut(
287
- publicClient,
288
- provisioner,
289
- feeCalculator,
290
- feeVersion,
291
- vaultAddress,
292
- token.address,
293
- shares,
294
- rate.effectiveMultiplierBps,
295
- quoteReadContext
296
- );
342
+ const getTokensOut = (unitsIn: bigint) =>
343
+ getSyncRedeemTokenOut(
344
+ publicClient,
345
+ provisioner,
346
+ feeCalculator,
347
+ feeVersion,
348
+ vaultAddress,
349
+ token.address,
350
+ unitsIn,
351
+ rate.effectiveMultiplierBps,
352
+ quoteReadContext
353
+ );
354
+ // A capacity-limited Max is submitted as an exact-token withdraw. Reserve slippage headroom so
355
+ // its maximum share cost cannot exceed the user's share balance.
356
+ const shareSafeUnitsIn = (shares * MAX_BPS) / (MAX_BPS + BigInt(slippageBps));
357
+ const tokensOutPromise = getTokensOut(shares);
358
+ const shareSafeTokensOutPromise =
359
+ shareSafeUnitsIn === shares ? tokensOutPromise : getTokensOut(shareSafeUnitsIn);
360
+ [tokensOut, shareSafeTokensOut] = await Promise.all([
361
+ tokensOutPromise,
362
+ shareSafeTokensOutPromise,
363
+ ]);
297
364
  minTokensOut = applySlippageDown(tokensOut, slippageBps);
298
365
  requireNonZeroSyncWithdrawBound(minTokensOut, 'minTokensOut');
299
366
  maxUnitsIn = shares;
300
367
  }
301
368
 
302
- const [epoch, requestNumeraire, unitsLockedUntil] = await Promise.all([
369
+ const [epoch, requestNumeraire, unitsLockedUntil, knownLiquidityTokens] = await Promise.all([
303
370
  getSyncRedeemEpochState(publicClient, provisioner, quoteReadContext),
304
371
  convertTokenToNumeraire(
305
372
  publicClient,
@@ -313,6 +380,13 @@ export async function getSyncWithdrawQuote(
313
380
  params.account
314
381
  ? getUserUnitsRefundableUntil(publicClient, provisioner, params.account, quoteReadContext)
315
382
  : Promise.resolve(undefined),
383
+ getKnownSyncRedeemLiquidityTokens(
384
+ publicClient,
385
+ vaultAddress,
386
+ token.address,
387
+ hasPullFundsSubmitData,
388
+ quoteReadContext
389
+ ),
316
390
  ]);
317
391
 
318
392
  const remainingNumeraire =
@@ -328,18 +402,19 @@ export async function getSyncWithdrawQuote(
328
402
  remainingNumeraire,
329
403
  quoteReadContext
330
404
  );
331
-
332
405
  const quoteDetails: SyncWithdrawQuoteDetails = {
333
406
  shares,
334
407
  maxUnitsIn,
335
408
  tokensOut,
336
409
  minTokensOut,
410
+ shareSafeTokensOut,
337
411
  rate,
338
412
  capacity: {
339
413
  epochCapNumeraire: epoch.epochCapNumeraire,
340
414
  epochRedeemedNumeraire: epoch.epochRedeemedNumeraire,
341
415
  remainingNumeraire,
342
416
  remainingTokens,
417
+ knownLiquidityTokens,
343
418
  requestNumeraire,
344
419
  exceedsCapacity: requestNumeraire > remainingNumeraire,
345
420
  },
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { GauntletClient, AttributionMode } from './client';
1
+ export { GauntletClient, AttributionMode, bundledVaultManifest } from './client';
2
2
  export type { GauntletClientConfig } from './client';
3
3
  export { ContractVersion } from './evm/types';
4
4
 
@@ -15,8 +15,9 @@ export type { VaultFilter } from './evm/vaults';
15
15
 
16
16
  export { getDepositTx } from './evm/deposit';
17
17
  export { getDepositReceiverApprovalTx } from './evm/depositReceiverApproval';
18
+ export { getSyncDepositQuote, getSyncDepositRate } from './evm/depositQuote';
18
19
  export { getWithdrawTx } from './evm/withdraw';
19
- export { getSyncWithdrawQuote } from './evm/withdrawQuote';
20
+ export { getSyncWithdrawQuote, getSyncWithdrawRate } from './evm/withdrawQuote';
20
21
  export { getAeraTokenModeSupport } from './evm/tokenModes';
21
22
  export { getUserCurrentBalance } from './evm/userCurrentBalance';
22
23
  export { getVaults, VaultId } from './evm/vaults';
@@ -34,6 +35,12 @@ export {
34
35
 
35
36
  export type { EvmDepositParams } from './evm/deposit';
36
37
  export type { EvmDepositReceiverApprovalParams } from './evm/depositReceiverApproval';
38
+ export type {
39
+ SyncDepositQuote,
40
+ SyncDepositQuoteParams,
41
+ SyncDepositRate,
42
+ SyncDepositRateParams,
43
+ } from './evm/depositQuote';
37
44
  export type { EvmWithdrawParams } from './evm/withdraw';
38
45
  export type {
39
46
  SyncWithdrawQuote,
@@ -42,6 +49,7 @@ export type {
42
49
  SyncWithdrawQuoteContext,
43
50
  SyncWithdrawQuoteRequest,
44
51
  SyncWithdrawQuoteBounds,
52
+ SyncWithdrawRateParams,
45
53
  } from './evm/withdrawQuote';
46
54
  export type { AeraTokenModeSupportParams } from './evm/tokenModes';
47
55
  export type { SyncRedeemRate } from './evm/aeraContracts/v2';
@@ -63,6 +71,7 @@ export {
63
71
  UnsupportedProtocolError,
64
72
  UnsupportedFeatureError,
65
73
  InvalidWithdrawParamsError,
74
+ InvalidSyncDepositBoundError,
66
75
  InvalidSyncWithdrawBoundError,
67
76
  InvalidSlippageBPSError,
68
77
  UnimplementedFeatureError,
@@ -1,154 +0,0 @@
1
- import { GauntletSDKError } from '../errors';
2
- import { decimalToBigInt, sharesToBigInt } from './decimal';
3
- import { SettlementTimeoutError } from './errors';
4
- const PENDING_TYPES = new Set(['deposit_pending', 'withdraw_pending']);
5
- const REFUNDED_TYPES = new Set(['deposit_refunded', 'withdraw_refunded']);
6
- function flowKind(rowType) {
7
- if (rowType.startsWith('deposit'))
8
- return 'deposit';
9
- if (rowType.startsWith('withdraw'))
10
- return 'withdraw';
11
- if (rowType === 'transfer_in' || rowType === 'transfer_out')
12
- return rowType;
13
- throw new GauntletSDKError(`Unknown activity row type "${rowType}"`);
14
- }
15
- function abs(value) {
16
- return value < 0n ? -value : value;
17
- }
18
- /**
19
- * Comparison scale for asset amounts. The API emits human-unit decimal strings
20
- * with at most `token.decimals` fractional digits, so 18 digits is exact for
21
- * every supported asset.
22
- */
23
- const ASSET_SCALE = 18;
24
- function toAssetAmount(rows) {
25
- // Per the API contract, at most one row of an async lifecycle carries the
26
- // asset movement (the other legs are "0"), so the max magnitude is the
27
- // flow's amount. For refunded flows this surfaces the requested amount
28
- // instead of the useless net of zero.
29
- let best = rows[0];
30
- let bestMagnitude = abs(decimalToBigInt(best.assets_delta.native, ASSET_SCALE));
31
- for (const row of rows.slice(1)) {
32
- const magnitude = abs(decimalToBigInt(row.assets_delta.native, ASSET_SCALE));
33
- if (magnitude > bestMagnitude) {
34
- best = row;
35
- bestMagnitude = magnitude;
36
- }
37
- }
38
- const token = best.assets_delta.token ?? rows.find((r) => r.assets_delta.token)?.assets_delta.token ?? null;
39
- const decimal = best.assets_delta.native.replace(/^-/, '');
40
- const raw = token?.decimals != null ? decimalToBigInt(decimal, token.decimals) : null;
41
- return { decimal, raw, token };
42
- }
43
- /**
44
- * Pure stitcher: folds raw activity rows into `ActivityFlow`s. Rows may be in
45
- * any order and may span multiple vaults; async lifecycles are paired by
46
- * `request_hash`. Flows are returned newest-first (by the flow's latest row).
47
- */
48
- export function stitchActivityFlows(rows) {
49
- const groups = new Map();
50
- for (const [index, row] of rows.entries()) {
51
- // Rows without a request_hash are standalone sync flows: each one is its
52
- // own group, so two same-type events in one transaction (e.g. a multicall
53
- // doing two deposits) stay two flows.
54
- const key = row.request_hash ?? `row:${index}`;
55
- const group = groups.get(key);
56
- if (group)
57
- group.push(row);
58
- else
59
- groups.set(key, [row]);
60
- }
61
- const flows = [];
62
- for (const group of groups.values()) {
63
- group.sort((a, b) => a.block_timestamp - b.block_timestamp);
64
- const pendingRow = group.find((r) => PENDING_TYPES.has(r.type)) ?? null;
65
- const terminalRow = group.find((r) => !PENDING_TYPES.has(r.type)) ?? null;
66
- const isAsync = group.some((r) => r.request_hash != null);
67
- let status;
68
- if (!terminalRow)
69
- status = 'pending';
70
- else if (REFUNDED_TYPES.has(terminalRow.type))
71
- status = 'refunded';
72
- else
73
- status = 'settled';
74
- let sharesMagnitude = 0n;
75
- for (const row of group) {
76
- const shares = abs(sharesToBigInt(row.shares_delta));
77
- if (shares > sharesMagnitude)
78
- sharesMagnitude = shares;
79
- }
80
- flows.push({
81
- kind: flowKind((terminalRow ?? pendingRow ?? group[0]).type),
82
- status,
83
- vaultId: group[0].vault_id,
84
- requestHash: group[0].request_hash ?? null,
85
- requestedAt: pendingRow
86
- ? new Date(pendingRow.block_timestamp * 1000)
87
- : isAsync
88
- ? null
89
- : new Date(group[0].block_timestamp * 1000),
90
- settledAt: terminalRow ? new Date(terminalRow.block_timestamp * 1000) : null,
91
- assets: toAssetAmount(group),
92
- shares: sharesMagnitude,
93
- txHashes: [...new Set(group.map((r) => r.tx_hash))],
94
- });
95
- }
96
- return flows.sort((a, b) => {
97
- const aAt = (a.settledAt ?? a.requestedAt)?.getTime() ?? 0;
98
- const bAt = (b.settledAt ?? b.requestedAt)?.getTime() ?? 0;
99
- return bAt - aAt;
100
- });
101
- }
102
- /**
103
- * Fetches the wallet's activity log and stitches it into lifecycle-aware
104
- * flows — the replacement for scanning vault event logs over RPC.
105
- *
106
- * ```ts
107
- * const flows = await getActivityFlows(client.api, wallet);
108
- * const open = flows.filter((f) => f.status === 'pending');
109
- * ```
110
- */
111
- export async function getActivityFlows(api, walletAddress, options = {}) {
112
- const maxRows = options.maxRows ?? 1000;
113
- const rows = [];
114
- for await (const row of api.activityRows(walletAddress, {
115
- vaultId: options.vaultId,
116
- // The API caps page size at 1000; request maxRows per page so the common
117
- // case is a single round trip instead of ten default-100 pages.
118
- limit: options.limit ?? Math.min(maxRows, 1000),
119
- order: 'desc',
120
- })) {
121
- rows.push(row);
122
- if (rows.length >= maxRows)
123
- break;
124
- }
125
- const flows = stitchActivityFlows(rows);
126
- if (rows.length >= maxRows) {
127
- // The window cut may have split an async lifecycle, keeping a terminal
128
- // row whose request leg (the one carrying the amount) fell outside the
129
- // window. Drop those flows rather than reporting zeroed amounts.
130
- return flows.filter((f) => f.requestHash === null || f.requestedAt !== null);
131
- }
132
- return flows;
133
- }
134
- /**
135
- * Polls the activity log until the Aera async request identified by
136
- * `requestHash` reaches a terminal state, and returns the settled or refunded
137
- * flow. Use after submitting a `requestDeposit` / `requestRedeem` transaction.
138
- */
139
- export async function waitForRequestSettlement(api, walletAddress, requestHash, options = {}) {
140
- const pollIntervalMs = options.pollIntervalMs ?? 5000;
141
- const timeoutMs = options.timeoutMs ?? 600000;
142
- const deadline = Date.now() + timeoutMs;
143
- for (;;) {
144
- const flows = await getActivityFlows(api, walletAddress, { vaultId: options.vaultId });
145
- const flow = flows.find((f) => f.requestHash === requestHash);
146
- if (flow && flow.status !== 'pending')
147
- return flow;
148
- if (Date.now() + pollIntervalMs > deadline) {
149
- throw new SettlementTimeoutError(requestHash, timeoutMs);
150
- }
151
- await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
152
- }
153
- }
154
- //# sourceMappingURL=activity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/api/activity.ts"],"names":[],"mappings":"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"}
package/dist/api/caip.js DELETED
@@ -1,38 +0,0 @@
1
- import { VaultNotFoundError } from '../errors';
2
- import { resolveVault } from '../evm/vaults';
3
- import { InvalidCaipIdError } from './errors';
4
- export function parseApiVaultId(id) {
5
- const match = /^(?:eip155:)?(\d+):(0x[0-9a-fA-F]{40})$/.exec(id);
6
- if (!match)
7
- throw new InvalidCaipIdError(id);
8
- return { chainId: Number(match[1]), address: match[2].toLowerCase() };
9
- }
10
- export function formatApiVaultId(chainId, address) {
11
- return `${chainId}:${address.toLowerCase()}`;
12
- }
13
- /**
14
- * Resolves a manifest vault id (e.g. `VaultId.AeraUsdAlpha` / `'gtusda'`) to
15
- * the Gaia API's CAIP-10 id for the vault's deployment on `chainId`.
16
- *
17
- * Deployment resolution is `resolveVault` — the same rules tx-building uses:
18
- * single-deployment vaults resolve directly (a mismatched explicit `chainId`
19
- * throws `ChainMismatchError`), multi-chain vaults default to Base when
20
- * `chainId` is omitted.
21
- */
22
- export async function apiVaultIdFromVaultId(client, vaultId, chainId) {
23
- const resolved = await resolveVault(client, vaultId, chainId);
24
- if (!resolved)
25
- throw new VaultNotFoundError(vaultId, chainId);
26
- return formatApiVaultId(resolved.vault.chainId, resolved.vault.vaultAddress);
27
- }
28
- /**
29
- * Resolves a Gaia API CAIP-10 vault id back to the manifest vault id, or
30
- * `undefined` when the vault is not in the bundled manifest (the API indexes
31
- * more vaults than the manifest lists).
32
- */
33
- export async function vaultIdFromApiVaultId(client, apiVaultId) {
34
- const { chainId, address } = parseApiVaultId(apiVaultId);
35
- const manifest = await client.manifest;
36
- return manifest.vaults.find((v) => v.deployments.some((d) => d.chain === 'evm' && d.chainId === chainId && d.vaultAddress.toLowerCase() === address))?.vaultId;
37
- }
38
- //# sourceMappingURL=caip.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caip.js","sourceRoot":"","sources":["../../src/api/caip.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAY9C,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,MAAM,KAAK,GAAG,yCAAyC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAe;IAC/D,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;AAC/C,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAsB,EACtB,OAAe,EACf,OAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,OAAO,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAsB,EACtB,UAAkB;IAElB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;IACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAChC,CAAC,CAAC,WAAW,CAAC,IAAI,CAChB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,OAAO,CAC9F,CACF,EAAE,OAAO,CAAC;AACb,CAAC"}