@gauntlet-xyz/sdk 2.3.0 → 3.0.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 (353) hide show
  1. package/README.md +135 -0
  2. package/dist/api/activity.d.ts +1 -1
  3. package/dist/api/activity.d.ts.map +1 -1
  4. package/dist/api/caip.d.ts +1 -1
  5. package/dist/api/caip.d.ts.map +1 -1
  6. package/dist/api/client.d.ts +65 -6
  7. package/dist/api/client.d.ts.map +1 -1
  8. package/dist/api/errors.d.ts +1 -1
  9. package/dist/api/errors.d.ts.map +1 -1
  10. package/dist/api/generated.d.ts +621 -14
  11. package/dist/api/generated.d.ts.map +1 -1
  12. package/dist/api/index.d.ts +13 -13
  13. package/dist/api/index.d.ts.map +1 -1
  14. package/dist/api/index.js +48 -8
  15. package/dist/api/index.js.map +7 -1
  16. package/dist/api/positionHistory.d.ts +1 -1
  17. package/dist/api/positionHistory.d.ts.map +1 -1
  18. package/dist/attribution/index.d.ts +3 -3
  19. package/dist/attribution/index.d.ts.map +1 -1
  20. package/dist/chunk-7TA2OJUK.js +4364 -0
  21. package/dist/chunk-7TA2OJUK.js.map +7 -0
  22. package/dist/chunk-HC2BS7MK.js +439 -0
  23. package/dist/chunk-HC2BS7MK.js.map +7 -0
  24. package/dist/chunk-S2TTA45N.js +2009 -0
  25. package/dist/chunk-S2TTA45N.js.map +7 -0
  26. package/dist/chunk-STIV2CC4.js +57 -0
  27. package/dist/chunk-STIV2CC4.js.map +7 -0
  28. package/dist/chunk-SU6JAKIA.js +283 -0
  29. package/dist/chunk-SU6JAKIA.js.map +7 -0
  30. package/dist/cjs/api/activity.d.ts +70 -0
  31. package/dist/cjs/api/activity.d.ts.map +1 -0
  32. package/dist/cjs/api/activity.js +136 -0
  33. package/dist/cjs/api/activity.js.map +7 -0
  34. package/dist/cjs/api/caip.d.ts +29 -0
  35. package/dist/cjs/api/caip.d.ts.map +1 -0
  36. package/dist/cjs/api/caip.js +59 -0
  37. package/dist/cjs/api/caip.js.map +7 -0
  38. package/dist/cjs/api/client.d.ts +173 -0
  39. package/dist/cjs/api/client.d.ts.map +1 -0
  40. package/dist/cjs/api/client.js +171 -0
  41. package/dist/cjs/api/client.js.map +7 -0
  42. package/dist/cjs/api/decimal.d.ts +21 -0
  43. package/dist/cjs/api/decimal.d.ts.map +1 -0
  44. package/dist/cjs/api/decimal.js +60 -0
  45. package/dist/cjs/api/decimal.js.map +7 -0
  46. package/dist/cjs/api/errors.d.ts +32 -0
  47. package/dist/cjs/api/errors.d.ts.map +1 -0
  48. package/dist/cjs/api/errors.js +80 -0
  49. package/dist/cjs/api/errors.js.map +7 -0
  50. package/dist/cjs/api/generated.d.ts +2068 -0
  51. package/dist/cjs/api/generated.d.ts.map +1 -0
  52. package/dist/cjs/api/generated.js +17 -0
  53. package/dist/cjs/api/generated.js.map +7 -0
  54. package/dist/cjs/api/http.d.ts +16 -0
  55. package/dist/cjs/api/http.d.ts.map +1 -0
  56. package/dist/cjs/api/http.js +64 -0
  57. package/dist/cjs/api/http.js.map +7 -0
  58. package/dist/cjs/api/index.d.ts +14 -0
  59. package/dist/cjs/api/index.d.ts.map +1 -0
  60. package/dist/cjs/api/index.js +73 -0
  61. package/dist/cjs/api/index.js.map +7 -0
  62. package/dist/cjs/api/positionHistory.d.ts +44 -0
  63. package/dist/cjs/api/positionHistory.d.ts.map +1 -0
  64. package/dist/cjs/api/positionHistory.js +131 -0
  65. package/dist/cjs/api/positionHistory.js.map +7 -0
  66. package/dist/cjs/attribution/erc8021.d.ts +9 -0
  67. package/dist/cjs/attribution/erc8021.d.ts.map +1 -0
  68. package/dist/cjs/attribution/erc8021.js +37 -0
  69. package/dist/cjs/attribution/erc8021.js.map +7 -0
  70. package/dist/cjs/attribution/index.d.ts +25 -0
  71. package/dist/cjs/attribution/index.d.ts.map +1 -0
  72. package/dist/cjs/attribution/index.js +68 -0
  73. package/dist/cjs/attribution/index.js.map +7 -0
  74. package/dist/cjs/client.d.ts +72 -0
  75. package/dist/cjs/client.d.ts.map +1 -0
  76. package/dist/cjs/client.js +80 -0
  77. package/dist/cjs/client.js.map +7 -0
  78. package/dist/cjs/constants.d.ts +16 -0
  79. package/dist/cjs/constants.d.ts.map +1 -0
  80. package/dist/cjs/constants.js +83 -0
  81. package/dist/cjs/constants.js.map +7 -0
  82. package/dist/cjs/errors.d.ts +85 -0
  83. package/dist/cjs/errors.d.ts.map +1 -0
  84. package/dist/cjs/errors.js +210 -0
  85. package/dist/cjs/errors.js.map +7 -0
  86. package/dist/cjs/evm/abis/erc20.d.ts +41 -0
  87. package/dist/cjs/evm/abis/erc20.d.ts.map +1 -0
  88. package/dist/cjs/evm/abis/erc20.js +57 -0
  89. package/dist/cjs/evm/abis/erc20.js.map +7 -0
  90. package/dist/cjs/evm/abis/erc4626.d.ts +105 -0
  91. package/dist/cjs/evm/abis/erc4626.d.ts.map +1 -0
  92. package/dist/cjs/evm/abis/erc4626.js +97 -0
  93. package/dist/cjs/evm/abis/erc4626.js.map +7 -0
  94. package/dist/cjs/evm/abis/multiDepositorVault.d.ts +1048 -0
  95. package/dist/cjs/evm/abis/multiDepositorVault.d.ts.map +1 -0
  96. package/dist/cjs/evm/abis/multiDepositorVault.js +614 -0
  97. package/dist/cjs/evm/abis/multiDepositorVault.js.map +7 -0
  98. package/dist/cjs/evm/abis/priceAndFeeCalculator.d.ts +910 -0
  99. package/dist/cjs/evm/abis/priceAndFeeCalculator.d.ts.map +1 -0
  100. package/dist/cjs/evm/abis/priceAndFeeCalculator.js +517 -0
  101. package/dist/cjs/evm/abis/priceAndFeeCalculator.js.map +7 -0
  102. package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.d.ts +277 -0
  103. package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.d.ts.map +1 -0
  104. package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.js +166 -0
  105. package/dist/cjs/evm/abis/priceAndFeeCalculatorV2.js.map +7 -0
  106. package/dist/cjs/evm/abis/provisioner.d.ts +4984 -0
  107. package/dist/cjs/evm/abis/provisioner.d.ts.map +1 -0
  108. package/dist/cjs/evm/abis/provisioner.js +2785 -0
  109. package/dist/cjs/evm/abis/provisioner.js.map +7 -0
  110. package/dist/cjs/evm/abis/provisionerV2.d.ts +740 -0
  111. package/dist/cjs/evm/abis/provisionerV2.d.ts.map +1 -0
  112. package/dist/cjs/evm/abis/provisionerV2.js +320 -0
  113. package/dist/cjs/evm/abis/provisionerV2.js.map +7 -0
  114. package/dist/cjs/evm/adapters/aera.d.ts +6 -0
  115. package/dist/cjs/evm/adapters/aera.d.ts.map +1 -0
  116. package/dist/cjs/evm/adapters/aera.js +491 -0
  117. package/dist/cjs/evm/adapters/aera.js.map +7 -0
  118. package/dist/cjs/evm/adapters/index.d.ts +3 -0
  119. package/dist/cjs/evm/adapters/index.d.ts.map +1 -0
  120. package/dist/cjs/evm/adapters/index.js +41 -0
  121. package/dist/cjs/evm/adapters/index.js.map +7 -0
  122. package/dist/cjs/evm/adapters/morpho.d.ts +3 -0
  123. package/dist/cjs/evm/adapters/morpho.d.ts.map +1 -0
  124. package/dist/cjs/evm/adapters/morpho.js +103 -0
  125. package/dist/cjs/evm/adapters/morpho.js.map +7 -0
  126. package/dist/cjs/evm/adapters/types.d.ts +84 -0
  127. package/dist/cjs/evm/adapters/types.d.ts.map +1 -0
  128. package/dist/cjs/evm/adapters/types.js +17 -0
  129. package/dist/cjs/evm/adapters/types.js.map +7 -0
  130. package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.d.ts +46 -0
  131. package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -0
  132. package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.js +223 -0
  133. package/dist/cjs/evm/aeraContracts/priceAndFeeCalculator.js.map +7 -0
  134. package/dist/cjs/evm/aeraContracts/readOptions.d.ts +8 -0
  135. package/dist/cjs/evm/aeraContracts/readOptions.d.ts.map +1 -0
  136. package/dist/cjs/evm/aeraContracts/readOptions.js +31 -0
  137. package/dist/cjs/evm/aeraContracts/readOptions.js.map +7 -0
  138. package/dist/cjs/evm/aeraContracts/v1.d.ts +2317 -0
  139. package/dist/cjs/evm/aeraContracts/v1.d.ts.map +1 -0
  140. package/dist/cjs/evm/aeraContracts/v1.js +120 -0
  141. package/dist/cjs/evm/aeraContracts/v1.js.map +7 -0
  142. package/dist/cjs/evm/aeraContracts/v2.d.ts +4538 -0
  143. package/dist/cjs/evm/aeraContracts/v2.d.ts.map +1 -0
  144. package/dist/cjs/evm/aeraContracts/v2.js +449 -0
  145. package/dist/cjs/evm/aeraContracts/v2.js.map +7 -0
  146. package/dist/cjs/evm/aeraContracts.d.ts +33 -0
  147. package/dist/cjs/evm/aeraContracts.d.ts.map +1 -0
  148. package/dist/cjs/evm/aeraContracts.js +224 -0
  149. package/dist/cjs/evm/aeraContracts.js.map +7 -0
  150. package/dist/cjs/evm/deposit.d.ts +50 -0
  151. package/dist/cjs/evm/deposit.d.ts.map +1 -0
  152. package/dist/cjs/evm/deposit.js +112 -0
  153. package/dist/cjs/evm/deposit.js.map +7 -0
  154. package/dist/cjs/evm/depositQuote.d.ts +32 -0
  155. package/dist/cjs/evm/depositQuote.d.ts.map +1 -0
  156. package/dist/cjs/evm/depositQuote.js +96 -0
  157. package/dist/cjs/evm/depositQuote.js.map +7 -0
  158. package/dist/cjs/evm/depositReceiverApproval.d.ts +17 -0
  159. package/dist/cjs/evm/depositReceiverApproval.d.ts.map +1 -0
  160. package/dist/cjs/evm/depositReceiverApproval.js +66 -0
  161. package/dist/cjs/evm/depositReceiverApproval.js.map +7 -0
  162. package/dist/cjs/evm/index.d.ts +28 -0
  163. package/dist/cjs/evm/index.d.ts.map +1 -0
  164. package/dist/cjs/evm/index.js +116 -0
  165. package/dist/cjs/evm/index.js.map +7 -0
  166. package/dist/cjs/evm/operationMode.d.ts +9 -0
  167. package/dist/cjs/evm/operationMode.d.ts.map +1 -0
  168. package/dist/cjs/evm/operationMode.js +65 -0
  169. package/dist/cjs/evm/operationMode.js.map +7 -0
  170. package/dist/cjs/evm/tokenModes.d.ts +22 -0
  171. package/dist/cjs/evm/tokenModes.d.ts.map +1 -0
  172. package/dist/cjs/evm/tokenModes.js +47 -0
  173. package/dist/cjs/evm/tokenModes.js.map +7 -0
  174. package/dist/cjs/evm/types.d.ts +34 -0
  175. package/dist/cjs/evm/types.d.ts.map +1 -0
  176. package/dist/cjs/evm/types.js +32 -0
  177. package/dist/cjs/evm/types.js.map +7 -0
  178. package/dist/cjs/evm/userCurrentBalance.d.ts +55 -0
  179. package/dist/cjs/evm/userCurrentBalance.d.ts.map +1 -0
  180. package/dist/cjs/evm/userCurrentBalance.js +225 -0
  181. package/dist/cjs/evm/userCurrentBalance.js.map +7 -0
  182. package/dist/cjs/evm/vaults.d.ts +44 -0
  183. package/dist/cjs/evm/vaults.d.ts.map +1 -0
  184. package/dist/cjs/evm/vaults.js +78 -0
  185. package/dist/cjs/evm/vaults.js.map +7 -0
  186. package/dist/cjs/evm/withdraw.d.ts +73 -0
  187. package/dist/cjs/evm/withdraw.d.ts.map +1 -0
  188. package/dist/cjs/evm/withdraw.js +161 -0
  189. package/dist/cjs/evm/withdraw.js.map +7 -0
  190. package/dist/cjs/evm/withdrawQuote.d.ts +135 -0
  191. package/dist/cjs/evm/withdrawQuote.d.ts.map +1 -0
  192. package/dist/cjs/evm/withdrawQuote.js +256 -0
  193. package/dist/cjs/evm/withdrawQuote.js.map +7 -0
  194. package/dist/cjs/index.d.ts +31 -0
  195. package/dist/cjs/index.d.ts.map +1 -0
  196. package/dist/cjs/index.js +128 -0
  197. package/dist/cjs/index.js.map +7 -0
  198. package/dist/cjs/package.json +1 -0
  199. package/dist/cjs/privy/index.d.ts +52 -0
  200. package/dist/cjs/privy/index.d.ts.map +1 -0
  201. package/dist/cjs/privy/index.js +57 -0
  202. package/dist/cjs/privy/index.js.map +7 -0
  203. package/dist/client.d.ts +4 -2
  204. package/dist/client.d.ts.map +1 -1
  205. package/dist/constants.d.ts.map +1 -1
  206. package/dist/errors.d.ts +15 -1
  207. package/dist/errors.d.ts.map +1 -1
  208. package/dist/evm/abis/priceAndFeeCalculatorV2.d.ts +44 -0
  209. package/dist/evm/abis/priceAndFeeCalculatorV2.d.ts.map +1 -1
  210. package/dist/evm/abis/provisionerV2.d.ts +56 -0
  211. package/dist/evm/abis/provisionerV2.d.ts.map +1 -1
  212. package/dist/evm/adapters/aera.d.ts +1 -1
  213. package/dist/evm/adapters/aera.d.ts.map +1 -1
  214. package/dist/evm/adapters/index.d.ts +1 -1
  215. package/dist/evm/adapters/index.d.ts.map +1 -1
  216. package/dist/evm/adapters/morpho.d.ts +1 -1
  217. package/dist/evm/adapters/morpho.d.ts.map +1 -1
  218. package/dist/evm/adapters/types.d.ts +6 -2
  219. package/dist/evm/adapters/types.d.ts.map +1 -1
  220. package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts +11 -6
  221. package/dist/evm/aeraContracts/priceAndFeeCalculator.d.ts.map +1 -1
  222. package/dist/evm/aeraContracts/readOptions.d.ts +8 -0
  223. package/dist/evm/aeraContracts/readOptions.d.ts.map +1 -0
  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 +396 -4
  227. package/dist/evm/aeraContracts/v2.d.ts.map +1 -1
  228. package/dist/evm/aeraContracts.d.ts +11 -5
  229. package/dist/evm/aeraContracts.d.ts.map +1 -1
  230. package/dist/evm/deposit.d.ts +4 -2
  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 -17
  237. package/dist/evm/index.d.ts.map +1 -1
  238. package/dist/evm/index.js +88 -9
  239. package/dist/evm/index.js.map +7 -1
  240. package/dist/evm/tokenModes.d.ts +22 -0
  241. package/dist/evm/tokenModes.d.ts.map +1 -0
  242. package/dist/evm/userCurrentBalance.d.ts +6 -2
  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 +10 -2
  247. package/dist/evm/withdraw.d.ts.map +1 -1
  248. package/dist/evm/withdrawQuote.d.ts +135 -0
  249. package/dist/evm/withdrawQuote.d.ts.map +1 -0
  250. package/dist/index.d.ts +30 -22
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +139 -12
  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 +45 -460
  260. package/package.json +43 -9
  261. package/src/api/client.ts +104 -7
  262. package/src/api/generated.ts +621 -14
  263. package/src/api/index.ts +13 -0
  264. package/src/client.ts +4 -1
  265. package/src/constants.ts +2 -0
  266. package/src/errors.ts +39 -2
  267. package/src/evm/abis/priceAndFeeCalculatorV2.ts +22 -0
  268. package/src/evm/abis/provisionerV2.ts +33 -0
  269. package/src/evm/adapters/aera.ts +64 -34
  270. package/src/evm/adapters/types.ts +4 -0
  271. package/src/evm/aeraContracts/priceAndFeeCalculator.ts +72 -5
  272. package/src/evm/aeraContracts/readOptions.ts +3 -0
  273. package/src/evm/aeraContracts/v2.ts +273 -41
  274. package/src/evm/aeraContracts.ts +81 -8
  275. package/src/evm/deposit.ts +21 -8
  276. package/src/evm/depositQuote.ts +137 -0
  277. package/src/evm/index.ts +41 -0
  278. package/src/evm/tokenModes.ts +54 -0
  279. package/src/evm/userCurrentBalance.ts +12 -1
  280. package/src/evm/vaults.ts +0 -7
  281. package/src/evm/withdraw.ts +131 -7
  282. package/src/evm/withdrawQuote.ts +434 -0
  283. package/src/index.ts +26 -1
  284. package/dist/api/activity.js +0 -154
  285. package/dist/api/activity.js.map +0 -1
  286. package/dist/api/caip.js +0 -38
  287. package/dist/api/caip.js.map +0 -1
  288. package/dist/api/client.js +0 -109
  289. package/dist/api/client.js.map +0 -1
  290. package/dist/api/decimal.js +0 -44
  291. package/dist/api/decimal.js.map +0 -1
  292. package/dist/api/errors.js +0 -41
  293. package/dist/api/errors.js.map +0 -1
  294. package/dist/api/generated.js +0 -6
  295. package/dist/api/generated.js.map +0 -1
  296. package/dist/api/http.js +0 -39
  297. package/dist/api/http.js.map +0 -1
  298. package/dist/api/positionHistory.js +0 -126
  299. package/dist/api/positionHistory.js.map +0 -1
  300. package/dist/attribution/erc8021.js +0 -17
  301. package/dist/attribution/erc8021.js.map +0 -1
  302. package/dist/attribution/index.js +0 -45
  303. package/dist/attribution/index.js.map +0 -1
  304. package/dist/client.js +0 -72
  305. package/dist/client.js.map +0 -1
  306. package/dist/constants.js +0 -28
  307. package/dist/constants.js.map +0 -1
  308. package/dist/errors.js +0 -115
  309. package/dist/errors.js.map +0 -1
  310. package/dist/evm/abis/erc20.js +0 -30
  311. package/dist/evm/abis/erc20.js.map +0 -1
  312. package/dist/evm/abis/erc4626.js +0 -70
  313. package/dist/evm/abis/erc4626.js.map +0 -1
  314. package/dist/evm/abis/multiDepositorVault.js +0 -587
  315. package/dist/evm/abis/multiDepositorVault.js.map +0 -1
  316. package/dist/evm/abis/priceAndFeeCalculator.js +0 -490
  317. package/dist/evm/abis/priceAndFeeCalculator.js.map +0 -1
  318. package/dist/evm/abis/priceAndFeeCalculatorV2.js +0 -119
  319. package/dist/evm/abis/priceAndFeeCalculatorV2.js.map +0 -1
  320. package/dist/evm/abis/provisioner.js +0 -2768
  321. package/dist/evm/abis/provisioner.js.map +0 -1
  322. package/dist/evm/abis/provisionerV2.js +0 -262
  323. package/dist/evm/abis/provisionerV2.js.map +0 -1
  324. package/dist/evm/adapters/aera.js +0 -249
  325. package/dist/evm/adapters/aera.js.map +0 -1
  326. package/dist/evm/adapters/index.js +0 -14
  327. package/dist/evm/adapters/index.js.map +0 -1
  328. package/dist/evm/adapters/morpho.js +0 -79
  329. package/dist/evm/adapters/morpho.js.map +0 -1
  330. package/dist/evm/adapters/types.js +0 -2
  331. package/dist/evm/adapters/types.js.map +0 -1
  332. package/dist/evm/aeraContracts/priceAndFeeCalculator.js +0 -140
  333. package/dist/evm/aeraContracts/priceAndFeeCalculator.js.map +0 -1
  334. package/dist/evm/aeraContracts/v1.js +0 -59
  335. package/dist/evm/aeraContracts/v1.js.map +0 -1
  336. package/dist/evm/aeraContracts/v2.js +0 -217
  337. package/dist/evm/aeraContracts/v2.js.map +0 -1
  338. package/dist/evm/aeraContracts.js +0 -134
  339. package/dist/evm/aeraContracts.js.map +0 -1
  340. package/dist/evm/deposit.js +0 -109
  341. package/dist/evm/deposit.js.map +0 -1
  342. package/dist/evm/depositReceiverApproval.js +0 -32
  343. package/dist/evm/depositReceiverApproval.js.map +0 -1
  344. package/dist/evm/operationMode.js +0 -41
  345. package/dist/evm/operationMode.js.map +0 -1
  346. package/dist/evm/types.js +0 -5
  347. package/dist/evm/types.js.map +0 -1
  348. package/dist/evm/userCurrentBalance.js +0 -211
  349. package/dist/evm/userCurrentBalance.js.map +0 -1
  350. package/dist/evm/vaults.js +0 -75
  351. package/dist/evm/vaults.js.map +0 -1
  352. package/dist/evm/withdraw.js +0 -97
  353. package/dist/evm/withdraw.js.map +0 -1
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var aeraContracts_exports = {};
20
+ __export(aeraContracts_exports, {
21
+ applySlippageDown: () => applySlippageDown,
22
+ applySlippageUp: () => applySlippageUp,
23
+ getMultiDepositorVault: () => getMultiDepositorVault,
24
+ requireAeraSyncRedeemRuntime: () => requireAeraSyncRedeemRuntime,
25
+ resolveAeraRuntimeContracts: () => resolveAeraRuntimeContracts,
26
+ resolveAeraTokenModeSupport: () => resolveAeraTokenModeSupport,
27
+ resolveContractVersion: () => resolveContractVersion
28
+ });
29
+ module.exports = __toCommonJS(aeraContracts_exports);
30
+ var import_viem = require("viem");
31
+ var import_errors = require("../errors");
32
+ var import_multiDepositorVault = require("./abis/multiDepositorVault");
33
+ var import_provisioner = require("./abis/provisioner");
34
+ var import_provisionerV2 = require("./abis/provisionerV2");
35
+ var import_constants = require("../constants");
36
+ var import_types = require("./types");
37
+ var import_readOptions = require("./aeraContracts/readOptions");
38
+ const contractVersionCache = /* @__PURE__ */ new Map();
39
+ const contractVersionAbi = [
40
+ {
41
+ type: "function",
42
+ inputs: [],
43
+ name: "version",
44
+ outputs: [{ name: "", internalType: "string", type: "string" }],
45
+ stateMutability: "view"
46
+ }
47
+ ];
48
+ const solvingGateAbi = [
49
+ {
50
+ type: "function",
51
+ inputs: [
52
+ { name: "provisioner", internalType: "address", type: "address" },
53
+ { name: "token", internalType: "address", type: "address" }
54
+ ],
55
+ name: "paused",
56
+ outputs: [{ name: "", internalType: "bool", type: "bool" }],
57
+ stateMutability: "view"
58
+ }
59
+ ];
60
+ function requireAeraSyncRedeemRuntime(runtime) {
61
+ if (runtime.provisioner.version !== import_types.ContractVersion.V2) {
62
+ throw new import_errors.UnsupportedFeatureError("Aera: sync redeem requires a V2 provisioner");
63
+ }
64
+ if (runtime.feeCalculator.version !== import_types.ContractVersion.V2) {
65
+ throw new import_errors.UnsupportedFeatureError("Aera: sync redeem requires a V2 price and fee calculator");
66
+ }
67
+ }
68
+ function applySlippageDown(amount, slippageBps) {
69
+ return amount * (import_constants.MAX_BPS - BigInt(slippageBps)) / import_constants.MAX_BPS;
70
+ }
71
+ function applySlippageUp(amount, slippageBps) {
72
+ return (amount * (import_constants.MAX_BPS + BigInt(slippageBps)) + import_constants.MAX_BPS - 1n) / import_constants.MAX_BPS;
73
+ }
74
+ function contractVersionCacheKey(client, address) {
75
+ return `${client.chain?.id ?? "unknown"}:${address.toLowerCase()}`;
76
+ }
77
+ function isVersionUnavailableError(error) {
78
+ if (!(error instanceof import_viem.ContractFunctionExecutionError) || error.functionName !== "version") {
79
+ return false;
80
+ }
81
+ if (error.cause instanceof import_viem.ContractFunctionRevertedError) {
82
+ const hasDecodedError = error.cause.signature !== void 0 || error.cause.data !== void 0 || error.cause.raw !== void 0 && error.cause.raw !== "0x";
83
+ return !hasDecodedError && (error.cause.reason === void 0 || error.cause.reason === "execution reverted");
84
+ }
85
+ return error.cause instanceof import_viem.ContractFunctionZeroDataError;
86
+ }
87
+ function getMultiDepositorVault(client, vaultAddress) {
88
+ return (0, import_viem.getContract)({
89
+ address: vaultAddress,
90
+ abi: import_multiDepositorVault.multiDepositorVaultAbi,
91
+ client
92
+ });
93
+ }
94
+ async function resolveContractVersion(client, address, options = {}) {
95
+ const cacheKey = contractVersionCacheKey(client, address);
96
+ const cached = contractVersionCache.get(cacheKey);
97
+ if (cached) return cached;
98
+ try {
99
+ const versionString = await client.readContract({
100
+ address,
101
+ abi: contractVersionAbi,
102
+ functionName: "version",
103
+ ...(0, import_readOptions.readAtBlock)(options)
104
+ });
105
+ const version = versionString.startsWith("2.") ? import_types.ContractVersion.V2 : import_types.ContractVersion.V1;
106
+ contractVersionCache.set(cacheKey, version);
107
+ return version;
108
+ } catch (error) {
109
+ if (!isVersionUnavailableError(error)) throw error;
110
+ contractVersionCache.set(cacheKey, import_types.ContractVersion.V1);
111
+ return import_types.ContractVersion.V1;
112
+ }
113
+ }
114
+ async function resolveAeraRuntimeContracts(client, vault, options = {}) {
115
+ if (vault.vaultType !== "multi-depositor") {
116
+ throw new import_errors.UnimplementedFeatureError("Aera: single depositor vaults");
117
+ }
118
+ const [provisionerAddress, feeCalculatorAddress] = await Promise.all([
119
+ client.readContract({
120
+ address: vault.vaultAddress,
121
+ abi: import_multiDepositorVault.multiDepositorVaultAbi,
122
+ functionName: "provisioner",
123
+ ...(0, import_readOptions.readAtBlock)(options)
124
+ }),
125
+ client.readContract({
126
+ address: vault.vaultAddress,
127
+ abi: import_multiDepositorVault.multiDepositorVaultAbi,
128
+ functionName: "feeCalculator",
129
+ ...(0, import_readOptions.readAtBlock)(options)
130
+ })
131
+ ]);
132
+ if (provisionerAddress === import_viem.zeroAddress) {
133
+ throw new import_errors.UnsupportedFeatureError("Aera: vault without provisioner");
134
+ }
135
+ if (feeCalculatorAddress === import_viem.zeroAddress) {
136
+ throw new import_errors.UnsupportedFeatureError("Aera: vault without price and fee calculator");
137
+ }
138
+ const [provisionerVersion, feeCalculatorVersion] = await Promise.all([
139
+ resolveContractVersion(client, provisionerAddress, options),
140
+ resolveContractVersion(client, feeCalculatorAddress, options)
141
+ ]);
142
+ return {
143
+ provisioner: {
144
+ address: provisionerAddress,
145
+ version: provisionerVersion
146
+ },
147
+ feeCalculator: {
148
+ address: feeCalculatorAddress,
149
+ version: feeCalculatorVersion
150
+ }
151
+ };
152
+ }
153
+ async function resolveAeraTokenModeSupport(client, runtime, token, options = {}) {
154
+ if (runtime.provisioner.version === import_types.ContractVersion.V2) {
155
+ const tokenDetailsPromise = client.readContract({
156
+ address: runtime.provisioner.address,
157
+ abi: import_provisionerV2.provisionerV2Abi,
158
+ functionName: "tokensDetails",
159
+ args: [token],
160
+ ...(0, import_readOptions.readAtBlock)(options)
161
+ });
162
+ if (options.includeSyncModes === false) {
163
+ const tokenDetails3 = await tokenDetailsPromise;
164
+ return {
165
+ asyncDeposit: Boolean(tokenDetails3[0]),
166
+ asyncRedeem: Boolean(tokenDetails3[1]),
167
+ syncDeposit: false,
168
+ syncRedeem: false
169
+ };
170
+ }
171
+ const [tokenDetails2, solvingGateEnabled, solvingGate] = await Promise.all([
172
+ tokenDetailsPromise,
173
+ client.readContract({
174
+ address: runtime.provisioner.address,
175
+ abi: import_provisionerV2.provisionerV2Abi,
176
+ functionName: "SOLVING_GATE_ENABLED",
177
+ ...(0, import_readOptions.readAtBlock)(options)
178
+ }),
179
+ client.readContract({
180
+ address: runtime.provisioner.address,
181
+ abi: import_provisionerV2.provisionerV2Abi,
182
+ functionName: "solvingGate",
183
+ ...(0, import_readOptions.readAtBlock)(options)
184
+ })
185
+ ]);
186
+ const solvingPaused = solvingGateEnabled && solvingGate !== import_viem.zeroAddress ? await client.readContract({
187
+ address: solvingGate,
188
+ abi: solvingGateAbi,
189
+ functionName: "paused",
190
+ args: [runtime.provisioner.address, token],
191
+ ...(0, import_readOptions.readAtBlock)(options)
192
+ }) : false;
193
+ return {
194
+ asyncDeposit: Boolean(tokenDetails2[0]),
195
+ asyncRedeem: Boolean(tokenDetails2[1]),
196
+ syncDeposit: Boolean(tokenDetails2[2]) && !solvingPaused,
197
+ syncRedeem: Boolean(tokenDetails2[3]) && !solvingPaused && runtime.feeCalculator.version === import_types.ContractVersion.V2
198
+ };
199
+ }
200
+ const tokenDetails = await client.readContract({
201
+ address: runtime.provisioner.address,
202
+ abi: import_provisioner.provisionerAbi,
203
+ functionName: "tokensDetails",
204
+ args: [token],
205
+ ...(0, import_readOptions.readAtBlock)(options)
206
+ });
207
+ return {
208
+ asyncDeposit: Boolean(tokenDetails[0]),
209
+ asyncRedeem: Boolean(tokenDetails[1]),
210
+ syncDeposit: false,
211
+ syncRedeem: false
212
+ };
213
+ }
214
+ // Annotate the CommonJS export names for ESM import in node:
215
+ 0 && (module.exports = {
216
+ applySlippageDown,
217
+ applySlippageUp,
218
+ getMultiDepositorVault,
219
+ requireAeraSyncRedeemRuntime,
220
+ resolveAeraRuntimeContracts,
221
+ resolveAeraTokenModeSupport,
222
+ resolveContractVersion
223
+ });
224
+ //# sourceMappingURL=aeraContracts.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/evm/aeraContracts.ts"],
4
+ "sourcesContent": ["import {\n ContractFunctionExecutionError,\n ContractFunctionRevertedError,\n ContractFunctionZeroDataError,\n type Address,\n type Client,\n type GetContractReturnType,\n type PublicClient,\n getContract,\n zeroAddress,\n} from 'viem';\nimport { UnimplementedFeatureError, UnsupportedFeatureError } from '../errors';\nimport { multiDepositorVaultAbi } from './abis/multiDepositorVault';\nimport { provisionerAbi } from './abis/provisioner';\nimport { provisionerV2Abi } from './abis/provisionerV2';\nimport { MAX_BPS } from '../constants';\nimport { ContractVersion, type EvmVaultDeployment } from './types';\nimport { readAtBlock } from './aeraContracts/readOptions';\n\nconst contractVersionCache = new Map<string, ContractVersion>();\n\nconst contractVersionAbi = [\n {\n type: 'function',\n inputs: [],\n name: 'version',\n outputs: [{ name: '', internalType: 'string', type: 'string' }],\n stateMutability: 'view',\n },\n] as const;\n\nconst solvingGateAbi = [\n {\n type: 'function',\n inputs: [\n { name: 'provisioner', internalType: 'address', type: 'address' },\n { name: 'token', internalType: 'address', type: 'address' },\n ],\n name: 'paused',\n outputs: [{ name: '', internalType: 'bool', type: 'bool' }],\n stateMutability: 'view',\n },\n] as const;\n\nexport interface AeraRuntimeContracts {\n provisioner: {\n address: Address;\n version: ContractVersion;\n };\n feeCalculator: {\n address: Address;\n version: ContractVersion;\n };\n}\n\nexport interface AeraTokenModeSupport {\n asyncDeposit: boolean;\n asyncRedeem: boolean;\n syncDeposit: boolean;\n syncRedeem: boolean;\n}\n\nexport function requireAeraSyncRedeemRuntime(runtime: AeraRuntimeContracts): void {\n if (runtime.provisioner.version !== ContractVersion.V2) {\n throw new UnsupportedFeatureError('Aera: sync redeem requires a V2 provisioner');\n }\n if (runtime.feeCalculator.version !== ContractVersion.V2) {\n throw new UnsupportedFeatureError('Aera: sync redeem requires a V2 price and fee calculator');\n }\n}\n\nexport type AeraReadOptions = {\n blockNumber?: bigint;\n};\n\nexport function applySlippageDown(amount: bigint, slippageBps: number): bigint {\n return (amount * (MAX_BPS - BigInt(slippageBps))) / MAX_BPS;\n}\n\nexport function applySlippageUp(amount: bigint, slippageBps: number): bigint {\n return (amount * (MAX_BPS + BigInt(slippageBps)) + MAX_BPS - 1n) / MAX_BPS;\n}\n\nfunction contractVersionCacheKey(client: PublicClient, address: Address): string {\n return `${client.chain?.id ?? 'unknown'}:${address.toLowerCase()}`;\n}\n\nfunction isVersionUnavailableError(error: unknown): boolean {\n if (!(error instanceof ContractFunctionExecutionError) || error.functionName !== 'version') {\n return false;\n }\n\n if (error.cause instanceof ContractFunctionRevertedError) {\n const hasDecodedError =\n error.cause.signature !== undefined ||\n error.cause.data !== undefined ||\n (error.cause.raw !== undefined && error.cause.raw !== '0x');\n\n return (\n !hasDecodedError &&\n (error.cause.reason === undefined || error.cause.reason === 'execution reverted')\n );\n }\n\n return error.cause instanceof ContractFunctionZeroDataError;\n}\n\nexport type MultiDepositorVaultContract<T extends Client> = GetContractReturnType<\n typeof multiDepositorVaultAbi,\n T,\n Address\n>;\n\nexport function getMultiDepositorVault<T extends Client>(\n client: T,\n vaultAddress: Address\n): MultiDepositorVaultContract<T> {\n return getContract({\n address: vaultAddress,\n abi: multiDepositorVaultAbi,\n client,\n });\n}\n\nexport async function resolveContractVersion(\n client: PublicClient,\n address: Address,\n options: AeraReadOptions = {}\n): Promise<ContractVersion> {\n const cacheKey = contractVersionCacheKey(client, address);\n const cached = contractVersionCache.get(cacheKey);\n if (cached) return cached;\n\n try {\n const versionString = await client.readContract({\n address,\n abi: contractVersionAbi,\n functionName: 'version',\n ...readAtBlock(options),\n });\n const version = versionString.startsWith('2.') ? ContractVersion.V2 : ContractVersion.V1;\n contractVersionCache.set(cacheKey, version);\n\n return version;\n } catch (error) {\n if (!isVersionUnavailableError(error)) throw error;\n\n contractVersionCache.set(cacheKey, ContractVersion.V1);\n return ContractVersion.V1;\n }\n}\n\nexport async function resolveAeraRuntimeContracts(\n client: PublicClient,\n vault: EvmVaultDeployment,\n options: AeraReadOptions = {}\n): Promise<AeraRuntimeContracts> {\n if (vault.vaultType !== 'multi-depositor') {\n throw new UnimplementedFeatureError('Aera: single depositor vaults');\n }\n\n const [provisionerAddress, feeCalculatorAddress] = await Promise.all([\n client.readContract({\n address: vault.vaultAddress,\n abi: multiDepositorVaultAbi,\n functionName: 'provisioner',\n ...readAtBlock(options),\n }),\n client.readContract({\n address: vault.vaultAddress,\n abi: multiDepositorVaultAbi,\n functionName: 'feeCalculator',\n ...readAtBlock(options),\n }),\n ]);\n\n if (provisionerAddress === zeroAddress) {\n throw new UnsupportedFeatureError('Aera: vault without provisioner');\n }\n if (feeCalculatorAddress === zeroAddress) {\n throw new UnsupportedFeatureError('Aera: vault without price and fee calculator');\n }\n\n const [provisionerVersion, feeCalculatorVersion] = await Promise.all([\n resolveContractVersion(client, provisionerAddress, options),\n resolveContractVersion(client, feeCalculatorAddress, options),\n ]);\n\n return {\n provisioner: {\n address: provisionerAddress,\n version: provisionerVersion,\n },\n feeCalculator: {\n address: feeCalculatorAddress,\n version: feeCalculatorVersion,\n },\n };\n}\n\nexport async function resolveAeraTokenModeSupport(\n client: PublicClient,\n runtime: AeraRuntimeContracts,\n token: Address,\n options: AeraReadOptions & { includeSyncModes?: boolean } = {}\n): Promise<AeraTokenModeSupport> {\n if (runtime.provisioner.version === ContractVersion.V2) {\n const tokenDetailsPromise = client.readContract({\n address: runtime.provisioner.address,\n abi: provisionerV2Abi,\n functionName: 'tokensDetails',\n args: [token],\n ...readAtBlock(options),\n });\n if (options.includeSyncModes === false) {\n const tokenDetails = await tokenDetailsPromise;\n return {\n asyncDeposit: Boolean(tokenDetails[0]),\n asyncRedeem: Boolean(tokenDetails[1]),\n syncDeposit: false,\n syncRedeem: false,\n };\n }\n\n const [tokenDetails, solvingGateEnabled, solvingGate] = await Promise.all([\n tokenDetailsPromise,\n client.readContract({\n address: runtime.provisioner.address,\n abi: provisionerV2Abi,\n functionName: 'SOLVING_GATE_ENABLED',\n ...readAtBlock(options),\n }),\n client.readContract({\n address: runtime.provisioner.address,\n abi: provisionerV2Abi,\n functionName: 'solvingGate',\n ...readAtBlock(options),\n }),\n ]);\n const solvingPaused =\n solvingGateEnabled && solvingGate !== zeroAddress\n ? await client.readContract({\n address: solvingGate,\n abi: solvingGateAbi,\n functionName: 'paused',\n args: [runtime.provisioner.address, token],\n ...readAtBlock(options),\n })\n : false;\n\n return {\n asyncDeposit: Boolean(tokenDetails[0]),\n asyncRedeem: Boolean(tokenDetails[1]),\n syncDeposit: Boolean(tokenDetails[2]) && !solvingPaused,\n syncRedeem:\n Boolean(tokenDetails[3]) &&\n !solvingPaused &&\n runtime.feeCalculator.version === ContractVersion.V2,\n };\n }\n\n const tokenDetails = await client.readContract({\n address: runtime.provisioner.address,\n abi: provisionerAbi,\n functionName: 'tokensDetails',\n args: [token],\n ...readAtBlock(options),\n });\n\n return {\n asyncDeposit: Boolean(tokenDetails[0]),\n asyncRedeem: Boolean(tokenDetails[1]),\n syncDeposit: false,\n syncRedeem: false,\n };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["tokenDetails"]
7
+ }
@@ -0,0 +1,50 @@
1
+ import type { Address } from 'viem';
2
+ import type { GauntletClient } from "../client.js";
3
+ import { PreparedTx } from "../attribution/index.js";
4
+ export interface EvmDepositParams {
5
+ vaultId: string;
6
+ amount: bigint;
7
+ chainId?: number;
8
+ assetSymbol?: string;
9
+ /** Request async (queued) or sync deposit. Availability is read from live vault configuration. */
10
+ depositMode?: string;
11
+ receiver?: Address;
12
+ /** Slippage tolerance in basis points (e.g. 100 = 1%). Defaults to 100. */
13
+ slippageBps?: number;
14
+ /** Solver tip passed to async Aera provisioner requests. Defaults to 0. */
15
+ solverTip?: bigint;
16
+ /** Maximum price age passed to async Aera provisioner requests. Defaults to 10 days. */
17
+ maxPriceAge?: bigint;
18
+ /** Caller-reviewed minimum output for an explicit Aera synchronous deposit. */
19
+ minUnitsOut?: bigint;
20
+ }
21
+ /**
22
+ * Builds the ordered list of EVM transactions required to deposit into a Gauntlet vault.
23
+ *
24
+ * Returns one or two transactions: an ERC-20 approval (only if the current allowance is
25
+ * insufficient) followed by the deposit or async deposit request. Each transaction is
26
+ * returned as a `PreparedTx` object ready to be signed and sent.
27
+ *
28
+ * @param client - A configured `GauntletClient` instance with an EVM public client and wallet.
29
+ * @param params - Deposit parameters including the vault identifier, token amount, and optional
30
+ * chain, asset symbol, deposit mode (`'sync'` | `'async'`), and receiver address.
31
+ * @returns Ordered array of prepared transactions to execute in sequence.
32
+ *
33
+ * @throws {VaultNotFoundError} If the vault ID is not found in the manifest.
34
+ * @throws {AccountRequiredError} If no wallet account is set on the client.
35
+ * @throws {UnsupportedDepositModeError} If the requested deposit mode is not supported by the vault.
36
+ * @throws {UnsupportedAssetError} If the specified asset symbol is not accepted by the vault.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * const txs = await getDepositTx(client, {
41
+ * vaultId: 'baseUsdcPrime',
42
+ * amount: 100_000_000n, // 100 USDC (6 decimals)
43
+ * });
44
+ * for (const tx of txs) {
45
+ * await walletClient.sendTransaction(tx.tx);
46
+ * }
47
+ * ```
48
+ */
49
+ export declare function getDepositTx(client: GauntletClient, params: EvmDepositParams): Promise<PreparedTx[]>;
50
+ //# sourceMappingURL=deposit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deposit.d.ts","sourceRoot":"","sources":["../../../src/evm/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAkB;AAGhD,OAAO,EAAoC,UAAU,EAAE,gCAAuB;AAsB9E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC,CAuGvB"}
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var deposit_exports = {};
20
+ __export(deposit_exports, {
21
+ getDepositTx: () => getDepositTx
22
+ });
23
+ module.exports = __toCommonJS(deposit_exports);
24
+ var import_adapters = require("./adapters");
25
+ var import_attribution = require("../attribution");
26
+ var import_errors = require("../errors");
27
+ var import_aeraContracts = require("./aeraContracts");
28
+ var import_vaults = require("./vaults");
29
+ var import_constants = require("../constants");
30
+ var import_operationMode = require("./operationMode");
31
+ async function getDepositTx(client, params) {
32
+ const slippageBps = params.slippageBps ?? import_constants.DEFAULT_BPS;
33
+ if (!Number.isInteger(slippageBps) || slippageBps < 0 || slippageBps > Number(import_constants.MAX_BPS)) {
34
+ throw new import_errors.InvalidSlippageBPSError(slippageBps);
35
+ }
36
+ if (params.minUnitsOut !== void 0 && (typeof params.minUnitsOut !== "bigint" || params.minUnitsOut <= 0n)) {
37
+ throw new import_errors.InvalidSyncDepositBoundError();
38
+ }
39
+ const resolved = await (0, import_vaults.resolveVault)(client, params.vaultId, params.chainId);
40
+ if (!resolved) throw new import_errors.VaultNotFoundError(params.vaultId);
41
+ const chainId = params.chainId ?? resolved.vault.chainId;
42
+ const account = client.wallet?.account?.address;
43
+ if (!account) throw new import_errors.AccountRequiredError();
44
+ const { vault, protocol } = resolved;
45
+ const adapter = (0, import_adapters.getAdapter)(protocol);
46
+ const publicClient = client.getPublicClient(chainId);
47
+ const token = vault.supplyToken.length > 1 ? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol) : vault.supplyToken[0];
48
+ if (token === void 0) {
49
+ throw new import_errors.UnsupportedAssetError(params.assetSymbol ?? "unknown", params.vaultId);
50
+ }
51
+ const requestedDepositMode = (0, import_operationMode.parseOperationMode)(params.vaultId, params.depositMode);
52
+ if (params.minUnitsOut !== void 0 && (protocol !== "aera" || requestedDepositMode !== "sync")) {
53
+ throw new import_errors.InvalidSyncDepositBoundError();
54
+ }
55
+ let modifiedDepositMode;
56
+ let aeraRuntime;
57
+ if (protocol === "aera") {
58
+ aeraRuntime = await (0, import_aeraContracts.resolveAeraRuntimeContracts)(publicClient, vault);
59
+ const tokenModeSupport = await (0, import_aeraContracts.resolveAeraTokenModeSupport)(
60
+ publicClient,
61
+ aeraRuntime,
62
+ token.address,
63
+ { includeSyncModes: requestedDepositMode !== "async" }
64
+ );
65
+ modifiedDepositMode = (0, import_operationMode.resolveOperationMode)(params.vaultId, requestedDepositMode, {
66
+ async: tokenModeSupport.asyncDeposit,
67
+ sync: tokenModeSupport.syncDeposit
68
+ });
69
+ } else {
70
+ modifiedDepositMode = (0, import_operationMode.resolveSyncOnlyOperationMode)(params.vaultId, requestedDepositMode);
71
+ }
72
+ const spender = protocol === "aera" && modifiedDepositMode === "async" ? aeraRuntime.provisioner.address : vault.vaultAddress;
73
+ const { sufficient } = await adapter.checkAllowance({
74
+ publicClient,
75
+ token: token.address,
76
+ owner: account,
77
+ spender,
78
+ amount: params.amount
79
+ });
80
+ const steps = [];
81
+ if (!sufficient) {
82
+ steps.push(
83
+ adapter.buildApproval({
84
+ token: token.address,
85
+ spender,
86
+ amount: params.amount,
87
+ account
88
+ })
89
+ );
90
+ }
91
+ const depositSteps = await adapter.buildDeposit({
92
+ vault,
93
+ amount: params.amount,
94
+ receiver: params.receiver ?? account,
95
+ account,
96
+ async: modifiedDepositMode === "async",
97
+ asset: token,
98
+ publicClient,
99
+ slippageBps,
100
+ solverTip: params.solverTip,
101
+ maxPriceAge: params.maxPriceAge,
102
+ aeraRuntime,
103
+ minUnitsOut: params.minUnitsOut
104
+ });
105
+ steps.push(...depositSteps);
106
+ return Promise.all(steps.map((step) => (0, import_attribution.encodeTransactionWithAttribution)(client, step)));
107
+ }
108
+ // Annotate the CommonJS export names for ESM import in node:
109
+ 0 && (module.exports = {
110
+ getDepositTx
111
+ });
112
+ //# sourceMappingURL=deposit.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/evm/deposit.ts"],
4
+ "sourcesContent": ["import type { Address } from 'viem';\nimport type { GauntletClient } from '../client';\nimport type { EvmTxStep } from './adapters/types';\nimport { getAdapter } from './adapters';\nimport { encodeTransactionWithAttribution, PreparedTx } from '../attribution';\nimport {\n AccountRequiredError,\n VaultNotFoundError,\n UnsupportedAssetError,\n InvalidSlippageBPSError,\n InvalidSyncDepositBoundError,\n} from '../errors';\nimport {\n resolveAeraRuntimeContracts,\n resolveAeraTokenModeSupport,\n type AeraRuntimeContracts,\n} from './aeraContracts';\nimport { resolveVault } from './vaults';\nimport { DEFAULT_BPS, MAX_BPS } from '../constants';\nimport {\n parseOperationMode,\n resolveOperationMode,\n resolveSyncOnlyOperationMode,\n type OperationMode,\n} from './operationMode';\n\nexport interface EvmDepositParams {\n vaultId: string;\n amount: bigint;\n // Required for multichain vaults, will default to base\n chainId?: number;\n // Required for multiasset vaults, not utilized yet\n assetSymbol?: string;\n /** Request async (queued) or sync deposit. Availability is read from live vault configuration. */\n depositMode?: string;\n // So a developer is able to specify a separate receiver than the tx sender\n receiver?: Address;\n /** Slippage tolerance in basis points (e.g. 100 = 1%). Defaults to 100. */\n slippageBps?: number;\n /** Solver tip passed to async Aera provisioner requests. Defaults to 0. */\n solverTip?: bigint;\n /** Maximum price age passed to async Aera provisioner requests. Defaults to 10 days. */\n maxPriceAge?: bigint;\n /** Caller-reviewed minimum output for an explicit Aera synchronous deposit. */\n minUnitsOut?: bigint;\n}\n\n/**\n * Builds the ordered list of EVM transactions required to deposit into a Gauntlet vault.\n *\n * Returns one or two transactions: an ERC-20 approval (only if the current allowance is\n * insufficient) followed by the deposit or async deposit request. Each transaction is\n * returned as a `PreparedTx` object ready to be signed and sent.\n *\n * @param client - A configured `GauntletClient` instance with an EVM public client and wallet.\n * @param params - Deposit parameters including the vault identifier, token amount, and optional\n * chain, asset symbol, deposit mode (`'sync'` | `'async'`), and receiver address.\n * @returns Ordered array of prepared transactions to execute in sequence.\n *\n * @throws {VaultNotFoundError} If the vault ID is not found in the manifest.\n * @throws {AccountRequiredError} If no wallet account is set on the client.\n * @throws {UnsupportedDepositModeError} If the requested deposit mode is not supported by the vault.\n * @throws {UnsupportedAssetError} If the specified asset symbol is not accepted by the vault.\n *\n * @example\n * ```ts\n * const txs = await getDepositTx(client, {\n * vaultId: 'baseUsdcPrime',\n * amount: 100_000_000n, // 100 USDC (6 decimals)\n * });\n * for (const tx of txs) {\n * await walletClient.sendTransaction(tx.tx);\n * }\n * ```\n */\nexport async function getDepositTx(\n client: GauntletClient,\n params: EvmDepositParams\n): Promise<PreparedTx[]> {\n const slippageBps = params.slippageBps ?? DEFAULT_BPS;\n if (!Number.isInteger(slippageBps) || slippageBps < 0 || slippageBps > Number(MAX_BPS)) {\n throw new InvalidSlippageBPSError(slippageBps);\n }\n if (\n params.minUnitsOut !== undefined &&\n (typeof params.minUnitsOut !== 'bigint' || params.minUnitsOut <= 0n)\n ) {\n throw new InvalidSyncDepositBoundError();\n }\n\n const resolved = await resolveVault(client, params.vaultId, params.chainId);\n if (!resolved) throw new VaultNotFoundError(params.vaultId);\n\n const chainId = params.chainId ?? resolved.vault.chainId;\n\n const account = client.wallet?.account?.address;\n if (!account) throw new AccountRequiredError();\n\n const { vault, protocol } = resolved;\n\n const adapter = getAdapter(protocol);\n const publicClient = client.getPublicClient(chainId);\n const token =\n vault.supplyToken.length > 1\n ? vault.supplyToken.find((tInfo) => tInfo.symbol === params.assetSymbol)\n : vault.supplyToken[0];\n\n if (token === undefined) {\n throw new UnsupportedAssetError(params.assetSymbol ?? 'unknown', params.vaultId);\n }\n\n const requestedDepositMode = parseOperationMode(params.vaultId, params.depositMode);\n if (\n params.minUnitsOut !== undefined &&\n (protocol !== 'aera' || requestedDepositMode !== 'sync')\n ) {\n throw new InvalidSyncDepositBoundError();\n }\n let modifiedDepositMode: OperationMode;\n let aeraRuntime: AeraRuntimeContracts | undefined;\n\n if (protocol === 'aera') {\n aeraRuntime = await resolveAeraRuntimeContracts(publicClient, vault);\n const tokenModeSupport = await resolveAeraTokenModeSupport(\n publicClient,\n aeraRuntime,\n token.address,\n { includeSyncModes: requestedDepositMode !== 'async' }\n );\n modifiedDepositMode = resolveOperationMode(params.vaultId, requestedDepositMode, {\n async: tokenModeSupport.asyncDeposit,\n sync: tokenModeSupport.syncDeposit,\n });\n } else {\n modifiedDepositMode = resolveSyncOnlyOperationMode(params.vaultId, requestedDepositMode);\n }\n\n const spender =\n protocol === 'aera' && modifiedDepositMode === 'async'\n ? aeraRuntime!.provisioner.address\n : vault.vaultAddress;\n\n // NOTE: this could be moved to the buildDeposit level\n const { sufficient } = await adapter.checkAllowance({\n publicClient,\n token: token.address,\n owner: account,\n spender,\n amount: params.amount,\n });\n\n const steps: EvmTxStep[] = [];\n\n if (!sufficient) {\n steps.push(\n adapter.buildApproval({\n token: token.address,\n spender,\n amount: params.amount,\n account,\n })\n );\n }\n\n const depositSteps = await adapter.buildDeposit({\n vault,\n amount: params.amount,\n receiver: params.receiver ?? account,\n account,\n async: modifiedDepositMode === 'async',\n asset: token,\n publicClient,\n slippageBps,\n solverTip: params.solverTip,\n maxPriceAge: params.maxPriceAge,\n aeraRuntime,\n minUnitsOut: params.minUnitsOut,\n });\n steps.push(...depositSteps);\n\n return Promise.all(steps.map((step) => encodeTransactionWithAttribution(client, step)));\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,32 @@
1
+ import type { GauntletClient } from "../client.js";
2
+ export type SyncDepositQuote = Readonly<{
3
+ unitsOut: bigint;
4
+ minUnitsOut: bigint;
5
+ /** Deposit amount converted to the vault's numeraire, after the Instant Supply fee. */
6
+ numeraireOut: bigint;
7
+ /** Instant Supply fee applied to the deposited token amount, in basis points. */
8
+ feeBps: bigint;
9
+ /** Slippage tolerance used to derive `minUnitsOut`, in basis points. */
10
+ slippageBps: number;
11
+ }>;
12
+ export type SyncDepositQuoteParams = {
13
+ vaultId: string;
14
+ chainId?: number;
15
+ assetSymbol?: string;
16
+ amount: bigint;
17
+ slippageBps?: number;
18
+ };
19
+ export type SyncDepositRateParams = {
20
+ vaultId: string;
21
+ chainId?: number;
22
+ assetSymbol?: string;
23
+ };
24
+ export type SyncDepositRate = Readonly<{
25
+ /** Instant Supply fee, in basis points. Independent of the deposit amount. */
26
+ feeBps: bigint;
27
+ }>;
28
+ /** Quotes an Aera synchronous deposit and its execution bounds. */
29
+ export declare function getSyncDepositQuote(client: GauntletClient, params: SyncDepositQuoteParams): Promise<SyncDepositQuote>;
30
+ /** Reads the live Instant Supply fee for a vault token, without requiring a deposit amount. */
31
+ export declare function getSyncDepositRate(client: GauntletClient, params: SyncDepositRateParams): Promise<SyncDepositRate>;
32
+ //# sourceMappingURL=depositQuote.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depositQuote.d.ts","sourceRoot":"","sources":["../../../src/evm/depositQuote.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAkB;AAmBhD,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,YAAY,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AA6CH,mEAAmE;AACnE,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,gBAAgB,CAAC,CAyB3B;AAED,+FAA+F;AAC/F,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAS1B"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var depositQuote_exports = {};
20
+ __export(depositQuote_exports, {
21
+ getSyncDepositQuote: () => getSyncDepositQuote,
22
+ getSyncDepositRate: () => getSyncDepositRate
23
+ });
24
+ module.exports = __toCommonJS(depositQuote_exports);
25
+ var import_constants = require("../constants");
26
+ var import_errors = require("../errors");
27
+ var import_aeraContracts = require("./aeraContracts");
28
+ var import_v2 = require("./aeraContracts/v2");
29
+ var import_operationMode = require("./operationMode");
30
+ var import_types = require("./types");
31
+ var import_vaults = require("./vaults");
32
+ async function resolveSyncDepositContext(client, params, readKind) {
33
+ const resolved = await (0, import_vaults.resolveVault)(client, params.vaultId, params.chainId);
34
+ if (!resolved) throw new import_errors.VaultNotFoundError(params.vaultId, params.chainId);
35
+ if (resolved.protocol !== "aera") {
36
+ throw new import_errors.UnsupportedFeatureError(
37
+ readKind === "quote" ? "Sync deposit quote is only available for Aera vaults" : "Sync deposit rate is only available for Aera vaults"
38
+ );
39
+ }
40
+ const { vault } = resolved;
41
+ const token = vault.supplyToken.length > 1 ? vault.supplyToken.find(({ symbol }) => symbol === params.assetSymbol) : vault.supplyToken[0];
42
+ if (!token) throw new import_errors.UnsupportedAssetError(params.assetSymbol ?? "unknown", params.vaultId);
43
+ const publicClient = client.getPublicClient(params.chainId ?? vault.chainId);
44
+ const runtime = await (0, import_aeraContracts.resolveAeraRuntimeContracts)(publicClient, vault);
45
+ if (runtime.provisioner.version !== import_types.ContractVersion.V2) {
46
+ throw new import_errors.UnsupportedFeatureError(
47
+ readKind === "quote" ? "Sync deposit quote requires an Aera V2 provisioner" : "Sync deposit rate requires an Aera V2 provisioner"
48
+ );
49
+ }
50
+ const tokenModeSupport = await (0, import_aeraContracts.resolveAeraTokenModeSupport)(publicClient, runtime, token.address, {
51
+ includeSyncModes: true
52
+ });
53
+ (0, import_operationMode.resolveOperationMode)(params.vaultId, "sync", {
54
+ async: tokenModeSupport.asyncDeposit,
55
+ sync: tokenModeSupport.syncDeposit
56
+ });
57
+ return { publicClient, vault, token, runtime };
58
+ }
59
+ async function getSyncDepositQuote(client, params) {
60
+ const slippageBps = params.slippageBps ?? import_constants.DEFAULT_BPS;
61
+ if (!Number.isInteger(slippageBps) || slippageBps < 0 || slippageBps > Number(import_constants.MAX_BPS)) {
62
+ throw new import_errors.InvalidSlippageBPSError(slippageBps);
63
+ }
64
+ const { publicClient, vault, token, runtime } = await resolveSyncDepositContext(
65
+ client,
66
+ params,
67
+ "quote"
68
+ );
69
+ const { unitsOut, feeBps, numeraireOut } = await (0, import_v2.getSyncDepositQuoteValues)(
70
+ publicClient,
71
+ runtime.provisioner.address,
72
+ runtime.feeCalculator.address,
73
+ runtime.feeCalculator.version,
74
+ vault.vaultAddress,
75
+ token.address,
76
+ params.amount
77
+ );
78
+ const minUnitsOut = (0, import_aeraContracts.applySlippageDown)(unitsOut, slippageBps);
79
+ if (minUnitsOut <= 0n) throw new import_errors.InvalidSyncDepositBoundError();
80
+ return { unitsOut, minUnitsOut, numeraireOut, feeBps, slippageBps };
81
+ }
82
+ async function getSyncDepositRate(client, params) {
83
+ const { publicClient, runtime, token } = await resolveSyncDepositContext(client, params, "rate");
84
+ const feeBps = await (0, import_v2.getSyncDepositFeeBps)(
85
+ publicClient,
86
+ runtime.provisioner.address,
87
+ token.address
88
+ );
89
+ return { feeBps };
90
+ }
91
+ // Annotate the CommonJS export names for ESM import in node:
92
+ 0 && (module.exports = {
93
+ getSyncDepositQuote,
94
+ getSyncDepositRate
95
+ });
96
+ //# sourceMappingURL=depositQuote.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/evm/depositQuote.ts"],
4
+ "sourcesContent": ["import type { GauntletClient } from '../client';\nimport { DEFAULT_BPS, MAX_BPS } from '../constants';\nimport {\n InvalidSlippageBPSError,\n InvalidSyncDepositBoundError,\n UnsupportedAssetError,\n UnsupportedFeatureError,\n VaultNotFoundError,\n} from '../errors';\nimport {\n applySlippageDown,\n resolveAeraRuntimeContracts,\n resolveAeraTokenModeSupport,\n} from './aeraContracts';\nimport { getSyncDepositFeeBps, getSyncDepositQuoteValues } from './aeraContracts/v2';\nimport { resolveOperationMode } from './operationMode';\nimport { ContractVersion } from './types';\nimport { resolveVault } from './vaults';\n\nexport type SyncDepositQuote = Readonly<{\n unitsOut: bigint;\n minUnitsOut: bigint;\n /** Deposit amount converted to the vault's numeraire, after the Instant Supply fee. */\n numeraireOut: bigint;\n /** Instant Supply fee applied to the deposited token amount, in basis points. */\n feeBps: bigint;\n /** Slippage tolerance used to derive `minUnitsOut`, in basis points. */\n slippageBps: number;\n}>;\n\nexport type SyncDepositQuoteParams = {\n vaultId: string;\n chainId?: number;\n assetSymbol?: string;\n amount: bigint;\n slippageBps?: number;\n};\n\nexport type SyncDepositRateParams = {\n vaultId: string;\n chainId?: number;\n assetSymbol?: string;\n};\n\nexport type SyncDepositRate = Readonly<{\n /** Instant Supply fee, in basis points. Independent of the deposit amount. */\n feeBps: bigint;\n}>;\n\nasync function resolveSyncDepositContext(\n client: GauntletClient,\n params: SyncDepositRateParams,\n readKind: 'quote' | 'rate'\n) {\n const resolved = await resolveVault(client, params.vaultId, params.chainId);\n if (!resolved) throw new VaultNotFoundError(params.vaultId, params.chainId);\n if (resolved.protocol !== 'aera') {\n throw new UnsupportedFeatureError(\n readKind === 'quote'\n ? 'Sync deposit quote is only available for Aera vaults'\n : 'Sync deposit rate is only available for Aera vaults'\n );\n }\n\n const { vault } = resolved;\n const token =\n vault.supplyToken.length > 1\n ? vault.supplyToken.find(({ symbol }) => symbol === params.assetSymbol)\n : vault.supplyToken[0];\n if (!token) throw new UnsupportedAssetError(params.assetSymbol ?? 'unknown', params.vaultId);\n\n const publicClient = client.getPublicClient(params.chainId ?? vault.chainId);\n const runtime = await resolveAeraRuntimeContracts(publicClient, vault);\n if (runtime.provisioner.version !== ContractVersion.V2) {\n throw new UnsupportedFeatureError(\n readKind === 'quote'\n ? 'Sync deposit quote requires an Aera V2 provisioner'\n : 'Sync deposit rate requires an Aera V2 provisioner'\n );\n }\n\n const tokenModeSupport = await resolveAeraTokenModeSupport(publicClient, runtime, token.address, {\n includeSyncModes: true,\n });\n resolveOperationMode(params.vaultId, 'sync', {\n async: tokenModeSupport.asyncDeposit,\n sync: tokenModeSupport.syncDeposit,\n });\n\n return { publicClient, vault, token, runtime };\n}\n\n/** Quotes an Aera synchronous deposit and its execution bounds. */\nexport async function getSyncDepositQuote(\n client: GauntletClient,\n params: SyncDepositQuoteParams\n): Promise<SyncDepositQuote> {\n const slippageBps = params.slippageBps ?? DEFAULT_BPS;\n if (!Number.isInteger(slippageBps) || slippageBps < 0 || slippageBps > Number(MAX_BPS)) {\n throw new InvalidSlippageBPSError(slippageBps);\n }\n\n const { publicClient, vault, token, runtime } = await resolveSyncDepositContext(\n client,\n params,\n 'quote'\n );\n\n const { unitsOut, feeBps, numeraireOut } = await getSyncDepositQuoteValues(\n publicClient,\n runtime.provisioner.address,\n runtime.feeCalculator.address,\n runtime.feeCalculator.version,\n vault.vaultAddress,\n token.address,\n params.amount\n );\n const minUnitsOut = applySlippageDown(unitsOut, slippageBps);\n if (minUnitsOut <= 0n) throw new InvalidSyncDepositBoundError();\n\n return { unitsOut, minUnitsOut, numeraireOut, feeBps, slippageBps };\n}\n\n/** Reads the live Instant Supply fee for a vault token, without requiring a deposit amount. */\nexport async function getSyncDepositRate(\n client: GauntletClient,\n params: SyncDepositRateParams\n): Promise<SyncDepositRate> {\n const { publicClient, runtime, token } = await resolveSyncDepositContext(client, params, 'rate');\n\n const feeBps = await getSyncDepositFeeBps(\n publicClient,\n runtime.provisioner.address,\n token.address\n );\n return { feeBps };\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,uBAAqC;AACrC,oBAMO;AACP,2BAIO;AACP,gBAAgE;AAChE,2BAAqC;AACrC,mBAAgC;AAChC,oBAA6B;AAgC7B,eAAe,0BACb,QACA,QACA,UACA;AACA,QAAM,WAAW,UAAM,4BAAa,QAAQ,OAAO,SAAS,OAAO,OAAO;AAC1E,MAAI,CAAC,SAAU,OAAM,IAAI,iCAAmB,OAAO,SAAS,OAAO,OAAO;AAC1E,MAAI,SAAS,aAAa,QAAQ;AAChC,UAAM,IAAI;AAAA,MACR,aAAa,UACT,yDACA;AAAA,IACN;AAAA,EACF;AAEA,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,QACJ,MAAM,YAAY,SAAS,IACvB,MAAM,YAAY,KAAK,CAAC,EAAE,OAAO,MAAM,WAAW,OAAO,WAAW,IACpE,MAAM,YAAY,CAAC;AACzB,MAAI,CAAC,MAAO,OAAM,IAAI,oCAAsB,OAAO,eAAe,WAAW,OAAO,OAAO;AAE3F,QAAM,eAAe,OAAO,gBAAgB,OAAO,WAAW,MAAM,OAAO;AAC3E,QAAM,UAAU,UAAM,kDAA4B,cAAc,KAAK;AACrE,MAAI,QAAQ,YAAY,YAAY,6BAAgB,IAAI;AACtD,UAAM,IAAI;AAAA,MACR,aAAa,UACT,uDACA;AAAA,IACN;AAAA,EACF;AAEA,QAAM,mBAAmB,UAAM,kDAA4B,cAAc,SAAS,MAAM,SAAS;AAAA,IAC/F,kBAAkB;AAAA,EACpB,CAAC;AACD,iDAAqB,OAAO,SAAS,QAAQ;AAAA,IAC3C,OAAO,iBAAiB;AAAA,IACxB,MAAM,iBAAiB;AAAA,EACzB,CAAC;AAED,SAAO,EAAE,cAAc,OAAO,OAAO,QAAQ;AAC/C;AAGA,eAAsB,oBACpB,QACA,QAC2B;AAC3B,QAAM,cAAc,OAAO,eAAe;AAC1C,MAAI,CAAC,OAAO,UAAU,WAAW,KAAK,cAAc,KAAK,cAAc,OAAO,wBAAO,GAAG;AACtF,UAAM,IAAI,sCAAwB,WAAW;AAAA,EAC/C;AAEA,QAAM,EAAE,cAAc,OAAO,OAAO,QAAQ,IAAI,MAAM;AAAA,IACpD;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,EAAE,UAAU,QAAQ,aAAa,IAAI,UAAM;AAAA,IAC/C;AAAA,IACA,QAAQ,YAAY;AAAA,IACpB,QAAQ,cAAc;AAAA,IACtB,QAAQ,cAAc;AAAA,IACtB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACA,QAAM,kBAAc,wCAAkB,UAAU,WAAW;AAC3D,MAAI,eAAe,GAAI,OAAM,IAAI,2CAA6B;AAE9D,SAAO,EAAE,UAAU,aAAa,cAAc,QAAQ,YAAY;AACpE;AAGA,eAAsB,mBACpB,QACA,QAC0B;AAC1B,QAAM,EAAE,cAAc,SAAS,MAAM,IAAI,MAAM,0BAA0B,QAAQ,QAAQ,MAAM;AAE/F,QAAM,SAAS,UAAM;AAAA,IACnB;AAAA,IACA,QAAQ,YAAY;AAAA,IACpB,MAAM;AAAA,EACR;AACA,SAAO,EAAE,OAAO;AAClB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ import type { Address } from 'viem';
2
+ import type { GauntletClient } from "../client.js";
3
+ import type { PreparedTx } from "../attribution/index.js";
4
+ export interface EvmDepositReceiverApprovalParams {
5
+ vaultId: string;
6
+ depositor: Address;
7
+ approved?: boolean;
8
+ chainId?: number;
9
+ }
10
+ /**
11
+ * Builds the V2 receiver-side approval transaction required before a depositor
12
+ * can make sync deposits to a separate receiver.
13
+ *
14
+ * The wallet account on the client is the receiver and must sign this transaction.
15
+ */
16
+ export declare function getDepositReceiverApprovalTx(client: GauntletClient, params: EvmDepositReceiverApprovalParams): Promise<PreparedTx>;
17
+ //# sourceMappingURL=depositReceiverApproval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depositReceiverApproval.d.ts","sourceRoot":"","sources":["../../../src/evm/depositReceiverApproval.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAkB;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,gCAAuB;AAQjD,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,UAAU,CAAC,CAwBrB"}