@bananapus/nana-sdk-core 1.4.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/dist/cjs/utils/token.d.ts +2 -2
  2. package/dist/cjs/utils/token.d.ts.map +1 -1
  3. package/dist/cjs/utils/token.js +30 -9
  4. package/dist/cjs/utils/token.js.map +1 -1
  5. package/dist/cjs/v6/pay.d.ts +25 -0
  6. package/dist/cjs/v6/pay.d.ts.map +1 -1
  7. package/dist/cjs/v6/pay.js +31 -0
  8. package/dist/cjs/v6/pay.js.map +1 -1
  9. package/dist/cjs/v6/uniswapV4.d.ts +87 -1
  10. package/dist/cjs/v6/uniswapV4.d.ts.map +1 -1
  11. package/dist/cjs/v6/uniswapV4.js +191 -1
  12. package/dist/cjs/v6/uniswapV4.js.map +1 -1
  13. package/dist/esm/utils/token.d.ts +2 -2
  14. package/dist/esm/utils/token.d.ts.map +1 -1
  15. package/dist/esm/utils/token.js +30 -9
  16. package/dist/esm/utils/token.js.map +1 -1
  17. package/dist/esm/v6/pay.d.ts +25 -0
  18. package/dist/esm/v6/pay.d.ts.map +1 -1
  19. package/dist/esm/v6/pay.js +31 -1
  20. package/dist/esm/v6/pay.js.map +1 -1
  21. package/dist/esm/v6/uniswapV4.d.ts +87 -1
  22. package/dist/esm/v6/uniswapV4.d.ts.map +1 -1
  23. package/dist/esm/v6/uniswapV4.js +188 -1
  24. package/dist/esm/v6/uniswapV4.js.map +1 -1
  25. package/package.json +17 -10
  26. package/dist/cjs/utils/data.test.d.ts +0 -2
  27. package/dist/cjs/utils/data.test.d.ts.map +0 -1
  28. package/dist/cjs/utils/data.test.js +0 -27
  29. package/dist/cjs/utils/data.test.js.map +0 -1
  30. package/dist/cjs/utils/deploy.test.d.ts +0 -2
  31. package/dist/cjs/utils/deploy.test.d.ts.map +0 -1
  32. package/dist/cjs/utils/deploy.test.js +0 -65
  33. package/dist/cjs/utils/deploy.test.js.map +0 -1
  34. package/dist/cjs/utils/fee.test.d.ts +0 -2
  35. package/dist/cjs/utils/fee.test.d.ts.map +0 -1
  36. package/dist/cjs/utils/fee.test.js +0 -11
  37. package/dist/cjs/utils/fee.test.js.map +0 -1
  38. package/dist/cjs/utils/format.test.d.ts +0 -2
  39. package/dist/cjs/utils/format.test.d.ts.map +0 -1
  40. package/dist/cjs/utils/format.test.js +0 -27
  41. package/dist/cjs/utils/format.test.js.map +0 -1
  42. package/dist/cjs/utils/ipfs.test.d.ts +0 -2
  43. package/dist/cjs/utils/ipfs.test.d.ts.map +0 -1
  44. package/dist/cjs/utils/ipfs.test.js +0 -67
  45. package/dist/cjs/utils/ipfs.test.js.map +0 -1
  46. package/dist/cjs/utils/revnet.test.d.ts +0 -2
  47. package/dist/cjs/utils/revnet.test.d.ts.map +0 -1
  48. package/dist/cjs/utils/revnet.test.js +0 -12
  49. package/dist/cjs/utils/revnet.test.js.map +0 -1
  50. package/dist/cjs/utils/ruleset.test.d.ts +0 -2
  51. package/dist/cjs/utils/ruleset.test.d.ts.map +0 -1
  52. package/dist/cjs/utils/ruleset.test.js +0 -23
  53. package/dist/cjs/utils/ruleset.test.js.map +0 -1
  54. package/dist/cjs/utils/token.test.d.ts +0 -2
  55. package/dist/cjs/utils/token.test.d.ts.map +0 -1
  56. package/dist/cjs/utils/token.test.js +0 -40
  57. package/dist/cjs/utils/token.test.js.map +0 -1
  58. package/dist/cjs/utils/urn.test.d.ts +0 -2
  59. package/dist/cjs/utils/urn.test.d.ts.map +0 -1
  60. package/dist/cjs/utils/urn.test.js +0 -114
  61. package/dist/cjs/utils/urn.test.js.map +0 -1
  62. package/dist/cjs/v6/cashOut.test.d.ts +0 -2
  63. package/dist/cjs/v6/cashOut.test.d.ts.map +0 -1
  64. package/dist/cjs/v6/cashOut.test.js +0 -122
  65. package/dist/cjs/v6/cashOut.test.js.map +0 -1
  66. package/dist/cjs/v6/currency.test.d.ts +0 -2
  67. package/dist/cjs/v6/currency.test.d.ts.map +0 -1
  68. package/dist/cjs/v6/currency.test.js +0 -26
  69. package/dist/cjs/v6/currency.test.js.map +0 -1
  70. package/dist/cjs/v6/fees.test.d.ts +0 -2
  71. package/dist/cjs/v6/fees.test.d.ts.map +0 -1
  72. package/dist/cjs/v6/fees.test.js +0 -40
  73. package/dist/cjs/v6/fees.test.js.map +0 -1
  74. package/dist/cjs/v6/launch.test.d.ts +0 -2
  75. package/dist/cjs/v6/launch.test.d.ts.map +0 -1
  76. package/dist/cjs/v6/launch.test.js +0 -162
  77. package/dist/cjs/v6/launch.test.js.map +0 -1
  78. package/dist/cjs/v6/loans.test.d.ts +0 -2
  79. package/dist/cjs/v6/loans.test.d.ts.map +0 -1
  80. package/dist/cjs/v6/loans.test.js +0 -129
  81. package/dist/cjs/v6/loans.test.js.map +0 -1
  82. package/dist/cjs/v6/nft.test.d.ts +0 -2
  83. package/dist/cjs/v6/nft.test.d.ts.map +0 -1
  84. package/dist/cjs/v6/nft.test.js +0 -279
  85. package/dist/cjs/v6/nft.test.js.map +0 -1
  86. package/dist/cjs/v6/omnichain.test.d.ts +0 -2
  87. package/dist/cjs/v6/omnichain.test.d.ts.map +0 -1
  88. package/dist/cjs/v6/omnichain.test.js +0 -145
  89. package/dist/cjs/v6/omnichain.test.js.map +0 -1
  90. package/dist/cjs/v6/pay.test.d.ts +0 -2
  91. package/dist/cjs/v6/pay.test.d.ts.map +0 -1
  92. package/dist/cjs/v6/pay.test.js +0 -137
  93. package/dist/cjs/v6/pay.test.js.map +0 -1
  94. package/dist/cjs/v6/permissions.test.d.ts +0 -2
  95. package/dist/cjs/v6/permissions.test.d.ts.map +0 -1
  96. package/dist/cjs/v6/permissions.test.js +0 -142
  97. package/dist/cjs/v6/permissions.test.js.map +0 -1
  98. package/dist/cjs/v6/projectPayers.test.d.ts +0 -2
  99. package/dist/cjs/v6/projectPayers.test.d.ts.map +0 -1
  100. package/dist/cjs/v6/projectPayers.test.js +0 -85
  101. package/dist/cjs/v6/projectPayers.test.js.map +0 -1
  102. package/dist/cjs/v6/revnets.test.d.ts +0 -2
  103. package/dist/cjs/v6/revnets.test.d.ts.map +0 -1
  104. package/dist/cjs/v6/revnets.test.js +0 -233
  105. package/dist/cjs/v6/revnets.test.js.map +0 -1
  106. package/dist/cjs/v6/rulesets.test.d.ts +0 -2
  107. package/dist/cjs/v6/rulesets.test.d.ts.map +0 -1
  108. package/dist/cjs/v6/rulesets.test.js +0 -160
  109. package/dist/cjs/v6/rulesets.test.js.map +0 -1
  110. package/dist/cjs/v6/splits.test.d.ts +0 -2
  111. package/dist/cjs/v6/splits.test.d.ts.map +0 -1
  112. package/dist/cjs/v6/splits.test.js +0 -135
  113. package/dist/cjs/v6/splits.test.js.map +0 -1
  114. package/dist/cjs/v6/suckers.test.d.ts +0 -2
  115. package/dist/cjs/v6/suckers.test.d.ts.map +0 -1
  116. package/dist/cjs/v6/suckers.test.js +0 -362
  117. package/dist/cjs/v6/suckers.test.js.map +0 -1
  118. package/dist/cjs/v6/terminals.test.d.ts +0 -2
  119. package/dist/cjs/v6/terminals.test.d.ts.map +0 -1
  120. package/dist/cjs/v6/terminals.test.js +0 -59
  121. package/dist/cjs/v6/terminals.test.js.map +0 -1
  122. package/dist/cjs/v6/tokens.test.d.ts +0 -2
  123. package/dist/cjs/v6/tokens.test.d.ts.map +0 -1
  124. package/dist/cjs/v6/tokens.test.js +0 -141
  125. package/dist/cjs/v6/tokens.test.js.map +0 -1
  126. package/dist/cjs/v6/uniswapV4.test.d.ts +0 -2
  127. package/dist/cjs/v6/uniswapV4.test.d.ts.map +0 -1
  128. package/dist/cjs/v6/uniswapV4.test.js +0 -128
  129. package/dist/cjs/v6/uniswapV4.test.js.map +0 -1
  130. package/dist/esm/utils/data.test.d.ts +0 -2
  131. package/dist/esm/utils/data.test.d.ts.map +0 -1
  132. package/dist/esm/utils/data.test.js +0 -25
  133. package/dist/esm/utils/data.test.js.map +0 -1
  134. package/dist/esm/utils/deploy.test.d.ts +0 -2
  135. package/dist/esm/utils/deploy.test.d.ts.map +0 -1
  136. package/dist/esm/utils/deploy.test.js +0 -63
  137. package/dist/esm/utils/deploy.test.js.map +0 -1
  138. package/dist/esm/utils/fee.test.d.ts +0 -2
  139. package/dist/esm/utils/fee.test.d.ts.map +0 -1
  140. package/dist/esm/utils/fee.test.js +0 -9
  141. package/dist/esm/utils/fee.test.js.map +0 -1
  142. package/dist/esm/utils/format.test.d.ts +0 -2
  143. package/dist/esm/utils/format.test.d.ts.map +0 -1
  144. package/dist/esm/utils/format.test.js +0 -25
  145. package/dist/esm/utils/format.test.js.map +0 -1
  146. package/dist/esm/utils/ipfs.test.d.ts +0 -2
  147. package/dist/esm/utils/ipfs.test.d.ts.map +0 -1
  148. package/dist/esm/utils/ipfs.test.js +0 -62
  149. package/dist/esm/utils/ipfs.test.js.map +0 -1
  150. package/dist/esm/utils/revnet.test.d.ts +0 -2
  151. package/dist/esm/utils/revnet.test.d.ts.map +0 -1
  152. package/dist/esm/utils/revnet.test.js +0 -10
  153. package/dist/esm/utils/revnet.test.js.map +0 -1
  154. package/dist/esm/utils/ruleset.test.d.ts +0 -2
  155. package/dist/esm/utils/ruleset.test.d.ts.map +0 -1
  156. package/dist/esm/utils/ruleset.test.js +0 -21
  157. package/dist/esm/utils/ruleset.test.js.map +0 -1
  158. package/dist/esm/utils/token.test.d.ts +0 -2
  159. package/dist/esm/utils/token.test.d.ts.map +0 -1
  160. package/dist/esm/utils/token.test.js +0 -38
  161. package/dist/esm/utils/token.test.js.map +0 -1
  162. package/dist/esm/utils/urn.test.d.ts +0 -2
  163. package/dist/esm/utils/urn.test.d.ts.map +0 -1
  164. package/dist/esm/utils/urn.test.js +0 -112
  165. package/dist/esm/utils/urn.test.js.map +0 -1
  166. package/dist/esm/v6/cashOut.test.d.ts +0 -2
  167. package/dist/esm/v6/cashOut.test.d.ts.map +0 -1
  168. package/dist/esm/v6/cashOut.test.js +0 -120
  169. package/dist/esm/v6/cashOut.test.js.map +0 -1
  170. package/dist/esm/v6/currency.test.d.ts +0 -2
  171. package/dist/esm/v6/currency.test.d.ts.map +0 -1
  172. package/dist/esm/v6/currency.test.js +0 -24
  173. package/dist/esm/v6/currency.test.js.map +0 -1
  174. package/dist/esm/v6/fees.test.d.ts +0 -2
  175. package/dist/esm/v6/fees.test.d.ts.map +0 -1
  176. package/dist/esm/v6/fees.test.js +0 -38
  177. package/dist/esm/v6/fees.test.js.map +0 -1
  178. package/dist/esm/v6/launch.test.d.ts +0 -2
  179. package/dist/esm/v6/launch.test.d.ts.map +0 -1
  180. package/dist/esm/v6/launch.test.js +0 -160
  181. package/dist/esm/v6/launch.test.js.map +0 -1
  182. package/dist/esm/v6/loans.test.d.ts +0 -2
  183. package/dist/esm/v6/loans.test.d.ts.map +0 -1
  184. package/dist/esm/v6/loans.test.js +0 -127
  185. package/dist/esm/v6/loans.test.js.map +0 -1
  186. package/dist/esm/v6/nft.test.d.ts +0 -2
  187. package/dist/esm/v6/nft.test.d.ts.map +0 -1
  188. package/dist/esm/v6/nft.test.js +0 -277
  189. package/dist/esm/v6/nft.test.js.map +0 -1
  190. package/dist/esm/v6/omnichain.test.d.ts +0 -2
  191. package/dist/esm/v6/omnichain.test.d.ts.map +0 -1
  192. package/dist/esm/v6/omnichain.test.js +0 -143
  193. package/dist/esm/v6/omnichain.test.js.map +0 -1
  194. package/dist/esm/v6/pay.test.d.ts +0 -2
  195. package/dist/esm/v6/pay.test.d.ts.map +0 -1
  196. package/dist/esm/v6/pay.test.js +0 -135
  197. package/dist/esm/v6/pay.test.js.map +0 -1
  198. package/dist/esm/v6/permissions.test.d.ts +0 -2
  199. package/dist/esm/v6/permissions.test.d.ts.map +0 -1
  200. package/dist/esm/v6/permissions.test.js +0 -140
  201. package/dist/esm/v6/permissions.test.js.map +0 -1
  202. package/dist/esm/v6/projectPayers.test.d.ts +0 -2
  203. package/dist/esm/v6/projectPayers.test.d.ts.map +0 -1
  204. package/dist/esm/v6/projectPayers.test.js +0 -83
  205. package/dist/esm/v6/projectPayers.test.js.map +0 -1
  206. package/dist/esm/v6/revnets.test.d.ts +0 -2
  207. package/dist/esm/v6/revnets.test.d.ts.map +0 -1
  208. package/dist/esm/v6/revnets.test.js +0 -231
  209. package/dist/esm/v6/revnets.test.js.map +0 -1
  210. package/dist/esm/v6/rulesets.test.d.ts +0 -2
  211. package/dist/esm/v6/rulesets.test.d.ts.map +0 -1
  212. package/dist/esm/v6/rulesets.test.js +0 -158
  213. package/dist/esm/v6/rulesets.test.js.map +0 -1
  214. package/dist/esm/v6/splits.test.d.ts +0 -2
  215. package/dist/esm/v6/splits.test.d.ts.map +0 -1
  216. package/dist/esm/v6/splits.test.js +0 -133
  217. package/dist/esm/v6/splits.test.js.map +0 -1
  218. package/dist/esm/v6/suckers.test.d.ts +0 -2
  219. package/dist/esm/v6/suckers.test.d.ts.map +0 -1
  220. package/dist/esm/v6/suckers.test.js +0 -360
  221. package/dist/esm/v6/suckers.test.js.map +0 -1
  222. package/dist/esm/v6/terminals.test.d.ts +0 -2
  223. package/dist/esm/v6/terminals.test.d.ts.map +0 -1
  224. package/dist/esm/v6/terminals.test.js +0 -57
  225. package/dist/esm/v6/terminals.test.js.map +0 -1
  226. package/dist/esm/v6/tokens.test.d.ts +0 -2
  227. package/dist/esm/v6/tokens.test.d.ts.map +0 -1
  228. package/dist/esm/v6/tokens.test.js +0 -139
  229. package/dist/esm/v6/tokens.test.js.map +0 -1
  230. package/dist/esm/v6/uniswapV4.test.d.ts +0 -2
  231. package/dist/esm/v6/uniswapV4.test.d.ts.map +0 -1
  232. package/dist/esm/v6/uniswapV4.test.js +0 -126
  233. package/dist/esm/v6/uniswapV4.test.js.map +0 -1
  234. package/dist/tsconfig.cjs.tsbuildinfo +0 -1
  235. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAO3D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAChD,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;AACjC,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE;;;;;CAoBzE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,gBAAgB,MAAM,EACtB,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,qBAYzE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAChD,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;AACjC,gBAAgB,MAAM,EACtB,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,qBAOzE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,GAClC,cAAc,MAAM,EACpB,+DAKG;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,eAwDF,CAAC"}
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAO3D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAChD,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;AACjC,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE;;;;;CAoBzE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,gBAAgB,MAAM,EACtB,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,qBAYzE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,MAAM,EAChD,cAAc,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM;AACjC,gBAAgB,MAAM,EACtB,aAAa;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,eAAe,EAAE,eAAe,CAAA;CAAE,qBAOzE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,uBAAuB,GAClC,cAAc,MAAM,EACpB,+DAKG;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,WAiFF,CAAC"}
@@ -74,29 +74,50 @@ tokenADecimals, cycleParams) => {
74
74
  * - `r` = cashOutTaxRate
75
75
  *
76
76
  * @implements JBCashOuts.cashOutFrom
77
- * @see https://github.com/Bananapus/nana-core/blob/44ae030f910e4a40a9a70a1eccf67cb0cf0c80f9/src/libraries/JBCashOuts.sol
77
+ * @see https://github.com/Bananapus/nana-core-v6/blob/89ac631620588687b63b06d8cebe8499f7a60bdf/src/libraries/JBCashOuts.sol
78
78
  * @see https://www.desmos.com/calculator/sp9ru6zbpk
79
79
  * @returns amount in ETH
80
80
  */
81
81
  export const getTokenCashOutQuoteEth = (tokensAmount, { overflowWei, // surplus
82
82
  totalSupply, cashOutTaxRate, tokensReserved, }) => {
83
+ const maxUint256 = (1n << 256n) - 1n;
84
+ if (tokensAmount < 0n ||
85
+ tokensAmount > maxUint256 ||
86
+ overflowWei < 0n ||
87
+ overflowWei > maxUint256 ||
88
+ totalSupply < 0n ||
89
+ totalSupply > maxUint256 ||
90
+ tokensReserved < 0n ||
91
+ tokensReserved > maxUint256 ||
92
+ totalSupply > maxUint256 - tokensReserved ||
93
+ !Number.isSafeInteger(cashOutTaxRate) ||
94
+ cashOutTaxRate < 0 ||
95
+ cashOutTaxRate > MAX_CASH_OUT_TAX_RATE) {
96
+ throw new RangeError("cash-out inputs are outside contract bounds");
97
+ }
83
98
  // alias names, to match the contract's implementation for easier manual comparison.
84
99
  const surplus = overflowWei;
85
100
  const cashOutCount = tokensAmount;
101
+ // `JBTerminalStore` supplies `JBCashOuts.cashOutFrom` with total outstanding
102
+ // tokens, which includes pending reserved tokens. Build that denominator
103
+ // before applying any of the library's edge conditions: a holder cashing out
104
+ // every minted token is not cashing out the full supply while reserved tokens
105
+ // are still pending.
106
+ const realTotalSupply = totalSupply + tokensReserved;
107
+ // Match JBCashOuts.cashOutFrom's first edge condition. This must precede the
108
+ // full-supply branch so a zero count against a zero supply cannot reclaim the
109
+ // surplus.
110
+ if (cashOutCount === 0n) {
111
+ return 0n;
112
+ }
86
113
  // If the cash out tax rate is the max, no surplus can be reclaimed.
87
114
  if (cashOutTaxRate === MAX_CASH_OUT_TAX_RATE) {
88
- return 0;
115
+ return 0n;
89
116
  }
90
117
  // If the total supply is being cashed out, return the entire surplus.
91
- if (cashOutCount >= totalSupply) {
118
+ if (cashOutCount >= realTotalSupply) {
92
119
  return surplus;
93
120
  }
94
- //
95
- /**
96
- * totalOutstandingTokensOf in contract.
97
- * @note this deviates from the contract's `cashOutFrom` implementation.
98
- */
99
- const realTotalSupply = totalSupply + tokensReserved;
100
121
  /**
101
122
  * Get a reference to the linear proportion.
102
123
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../../src/utils/token.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,31 @@ export interface PayPreview {
59
59
  */
60
60
  reservedTokenCount: bigint;
61
61
  }
62
+ export type PaySettlement = "issuance" | "swap";
63
+ export interface PayRouteCandidate extends PayPreview {
64
+ kind: "pay";
65
+ settlement: PaySettlement;
66
+ }
67
+ export interface DirectSwapRouteCandidate extends PayPreview {
68
+ kind: "direct-swap";
69
+ settlement: "swap";
70
+ quotedTokenCount: bigint;
71
+ }
72
+ export type BestPayRoute = PayRouteCandidate | DirectSwapRouteCandidate;
73
+ /**
74
+ * Pick the executable route which guarantees the beneficiary the most tokens.
75
+ *
76
+ * A direct pool swap bypasses the terminal, so its reserved token count is always
77
+ * zero. Its quote is reduced by `slippageBps` before comparison: a route is only
78
+ * selected when its on-chain minimum beats the terminal preview, not merely when
79
+ * its optimistic quote does.
80
+ */
81
+ export declare function chooseBestPayRoute({ pay, paySettlement, directSwapQuote, slippageBps, }: {
82
+ pay: PayPreview;
83
+ paySettlement: PaySettlement;
84
+ directSwapQuote?: bigint | null;
85
+ slippageBps?: bigint;
86
+ }): BestPayRoute;
62
87
  /**
63
88
  * Preview the project tokens minted by a payment, via the terminal's
64
89
  * `previewPayFor(projectId, token, amount, beneficiary, metadata)`.
@@ -1 +1 @@
1
- {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,GAAG,EACH,YAAY,EAEb,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,kBAAkB,CAAC;IAC/B,YAAY,EAAE,KAAK,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACvE,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,iBAAsB,EACtB,IAAS,EACT,QAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GAAG,cAAc,CAmBjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,YAAY,EACpB,EACE,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GACA,OAAO,CAAC,UAAU,CAAC,CAUrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAA8C,GAC/C,EAAE;IACD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,0CAA0C;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,GAAG,CAeN"}
1
+ {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { encodeAbiParameters, } from "viem";
1
+ import { encodeAbiParameters } from "viem";
2
2
  import { DEFAULT_ALLOW_OVERSPENDING, NATIVE_TOKEN } from "../constants.js";
3
3
  import { jbMultiTerminalAbi } from "../generated/juicebox.js";
4
4
  import { createHookMetadata, hookMetadataId } from "../utils/hook.js";
@@ -43,6 +43,36 @@ export function buildPayTx({ chainId, terminal, projectId, token, amount, benefi
43
43
  value: isNative ? amount : 0n,
44
44
  };
45
45
  }
46
+ /**
47
+ * Pick the executable route which guarantees the beneficiary the most tokens.
48
+ *
49
+ * A direct pool swap bypasses the terminal, so its reserved token count is always
50
+ * zero. Its quote is reduced by `slippageBps` before comparison: a route is only
51
+ * selected when its on-chain minimum beats the terminal preview, not merely when
52
+ * its optimistic quote does.
53
+ */
54
+ export function chooseBestPayRoute({ pay, paySettlement, directSwapQuote, slippageBps = 100n, }) {
55
+ if (slippageBps < 0n || slippageBps >= 10000n) {
56
+ throw new Error("slippageBps must be between 0 and 9,999.");
57
+ }
58
+ const payRoute = {
59
+ kind: "pay",
60
+ settlement: paySettlement,
61
+ ...pay,
62
+ };
63
+ if (!directSwapQuote || directSwapQuote <= 0n)
64
+ return payRoute;
65
+ const minimum = (directSwapQuote * (10000n - slippageBps)) / 10000n;
66
+ if (minimum <= pay.beneficiaryTokenCount)
67
+ return payRoute;
68
+ return {
69
+ kind: "direct-swap",
70
+ settlement: "swap",
71
+ quotedTokenCount: directSwapQuote,
72
+ beneficiaryTokenCount: minimum,
73
+ reservedTokenCount: 0n,
74
+ };
75
+ }
46
76
  /**
47
77
  * Preview the project tokens minted by a payment, via the terminal's
48
78
  * `previewPayFor(projectId, token, amount, beneficiary, metadata)`.
@@ -1 +1 @@
1
- {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,mBAAmB,GACpB,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAetE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,iBAAiB,GAAG,EAAE,EACtB,IAAI,GAAG,EAAE,EACT,QAAQ,GAAG,IAAI,GAWhB;IACC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;IAEpE,OAAO;QACL,OAAO;QACP,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,kBAAkB;QACvB,YAAY,EAAE,KAAK;QACnB,IAAI,EAAE;YACJ,SAAS;YACT,KAAK;YACL,MAAM;YACN,WAAW;YACX,iBAAiB;YACjB,IAAI;YACJ,QAAQ;SACT;QACD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;KAC9B,CAAC;AACJ,CAAC;AAgBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAoB,EACpB,EACE,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAQ,GAAG,IAAI,GAShB;IAED,MAAM,CAAC,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,GACjD,MAAM,MAAM,CAAC,YAAY,CAAC;QACxB,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,kBAAkB;QACvB,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;KACxD,CAAC,CAAC;IAEL,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAAiB,GAAG,0BAA0B,GAO/C;IACC,MAAM,MAAM,GAAG,gBAAgB,IAAI,WAAW,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CACrC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EACxC,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAC/C,CAAC;IAEF,OAAO,kBAAkB,CACvB,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAC/B,CAAC,WAAW,CAAC,CACP,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,mBAAmB,EAAE,MAAM,MAAM,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAetE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,iBAAiB,GAAG,EAAE,EACtB,IAAI,GAAG,EAAE,EACT,QAAQ,GAAG,IAAI,GAWhB;IACC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;IAEpE,OAAO;QACL,OAAO;QACP,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,kBAAkB;QACvB,YAAY,EAAE,KAAK;QACnB,IAAI,EAAE;YACJ,SAAS;YACT,KAAK;YACL,MAAM;YACN,WAAW;YACX,iBAAiB;YACjB,IAAI;YACJ,QAAQ;SACT;QACD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;KAC9B,CAAC;AACJ,CAAC;AA+BD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,EACjC,GAAG,EACH,aAAa,EACb,eAAe,EACf,WAAW,GAAG,IAAI,GAMnB;IACC,IAAI,WAAW,GAAG,EAAE,IAAI,WAAW,IAAI,MAAO,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,QAAQ,GAAsB;QAClC,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,aAAa;QACzB,GAAG,GAAG;KACP,CAAC;IACF,IAAI,CAAC,eAAe,IAAI,eAAe,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IAE/D,MAAM,OAAO,GAAG,CAAC,eAAe,GAAG,CAAC,MAAO,GAAG,WAAW,CAAC,CAAC,GAAG,MAAO,CAAC;IACtE,IAAI,OAAO,IAAI,GAAG,CAAC,qBAAqB;QAAE,OAAO,QAAQ,CAAC;IAE1D,OAAO;QACL,IAAI,EAAE,aAAa;QACnB,UAAU,EAAE,MAAM;QAClB,gBAAgB,EAAE,eAAe;QACjC,qBAAqB,EAAE,OAAO;QAC9B,kBAAkB,EAAE,EAAE;KACvB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAoB,EACpB,EACE,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAQ,GAAG,IAAI,GAShB;IAED,MAAM,CAAC,EAAE,qBAAqB,EAAE,kBAAkB,CAAC,GACjD,MAAM,MAAM,CAAC,YAAY,CAAC;QACxB,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,kBAAkB;QACvB,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;KACxD,CAAC,CAAC;IAEL,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAAiB,GAAG,0BAA0B,GAO/C;IACC,MAAM,MAAM,GAAG,gBAAgB,IAAI,WAAW,CAAC;IAC/C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,WAAW,GAAG,mBAAmB,CACrC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EACxC,CAAC,iBAAiB,EAAE,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAC/C,CAAC;IAEF,OAAO,kBAAkB,CACvB,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAC/B,CAAC,WAAW,CAAC,CACP,CAAC;AACX,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Address, Hex } from "viem";
1
+ import type { Address, Hex, PublicClient } from "viem";
2
2
  import type { JBChainId } from "../types.js";
3
3
  /**
4
4
  * Canonical Uniswap V4 PoolManager deployments used by Juicebox v6.
@@ -10,6 +10,8 @@ export declare const UNISWAP_V4_POOL_MANAGER_ADDRESSES: Readonly<Partial<Record<
10
10
  export declare const UNISWAP_V4_POSITION_MANAGER_ADDRESSES: Readonly<Partial<Record<JBChainId, Address>>>;
11
11
  /** Canonical V4Quoter deployments; missing chains must fail closed. */
12
12
  export declare const UNISWAP_V4_QUOTER_ADDRESSES: Readonly<Partial<Record<JBChainId, Address>>>;
13
+ /** Canonical Universal Router deployments which support the V4_SWAP command. */
14
+ export declare const UNISWAP_V4_UNIVERSAL_ROUTER_ADDRESSES: Readonly<Partial<Record<JBChainId, Address>>>;
13
15
  /** Permit2 is deployed at the same address on supported EVM chains. */
14
16
  export declare const UNISWAP_PERMIT2_ADDRESS: Address;
15
17
  /** Resolve the supported V4 surface for a chain without guessing addresses. */
@@ -17,6 +19,7 @@ export declare function uniswapV4Deployment(chainId: number): {
17
19
  poolManager: Address;
18
20
  positionManager: Address | null;
19
21
  quoter: Address | null;
22
+ universalRouter: Address | null;
20
23
  permit2: Address;
21
24
  } | null;
22
25
  export declare const UNISWAP_V4_Q96: bigint;
@@ -29,6 +32,88 @@ export interface UniswapV4PoolKey {
29
32
  tickSpacing: number;
30
33
  hooks: Address;
31
34
  }
35
+ declare const UNIVERSAL_ROUTER_ABI: readonly [{
36
+ readonly type: "function";
37
+ readonly name: "execute";
38
+ readonly stateMutability: "payable";
39
+ readonly inputs: readonly [{
40
+ readonly name: "commands";
41
+ readonly type: "bytes";
42
+ }, {
43
+ readonly name: "inputs";
44
+ readonly type: "bytes[]";
45
+ }, {
46
+ readonly name: "deadline";
47
+ readonly type: "uint256";
48
+ }];
49
+ readonly outputs: readonly [];
50
+ }];
51
+ declare const PERMIT2_ABI: readonly [{
52
+ readonly type: "function";
53
+ readonly name: "approve";
54
+ readonly stateMutability: "nonpayable";
55
+ readonly inputs: readonly [{
56
+ readonly name: "token";
57
+ readonly type: "address";
58
+ }, {
59
+ readonly name: "spender";
60
+ readonly type: "address";
61
+ }, {
62
+ readonly name: "amount";
63
+ readonly type: "uint160";
64
+ }, {
65
+ readonly name: "expiration";
66
+ readonly type: "uint48";
67
+ }];
68
+ readonly outputs: readonly [];
69
+ }];
70
+ /** Quote an exact-input single-pool swap, including the pool hook's behavior. */
71
+ export declare function quoteUniswapV4ExactInputSingle(client: PublicClient, { chainId, poolKey, zeroForOne, amountIn, hookData, }: {
72
+ chainId: JBChainId;
73
+ poolKey: UniswapV4PoolKey;
74
+ zeroForOne: boolean;
75
+ amountIn: bigint;
76
+ hookData?: Hex;
77
+ }): Promise<bigint>;
78
+ export interface UniswapV4SwapTxRequest {
79
+ chainId: JBChainId;
80
+ address: Address;
81
+ abi: typeof UNIVERSAL_ROUTER_ABI;
82
+ functionName: "execute";
83
+ args: readonly [Hex, readonly Hex[], bigint];
84
+ value: bigint;
85
+ }
86
+ /**
87
+ * Build a Universal Router exact-input V4 swap.
88
+ *
89
+ * ERC-20 input must first approve Permit2, then authorize the Universal Router
90
+ * with {@link buildPermit2ApproveTx}. Native input is supplied as `msg.value`.
91
+ */
92
+ export declare function buildUniswapV4ExactInputSwapTx({ chainId, poolKey, zeroForOne, amountIn, minimumAmountOut, recipient, deadline, hookData, }: {
93
+ chainId: JBChainId;
94
+ poolKey: UniswapV4PoolKey;
95
+ zeroForOne: boolean;
96
+ amountIn: bigint;
97
+ minimumAmountOut: bigint;
98
+ recipient: Address;
99
+ deadline: bigint;
100
+ hookData?: Hex;
101
+ }): UniswapV4SwapTxRequest;
102
+ export interface Permit2ApproveTxRequest {
103
+ chainId: JBChainId;
104
+ address: Address;
105
+ abi: typeof PERMIT2_ABI;
106
+ functionName: "approve";
107
+ args: readonly [Address, Address, bigint, number];
108
+ value: 0n;
109
+ }
110
+ /** Authorize the Universal Router to spend an ERC-20 already approved to Permit2. */
111
+ export declare function buildPermit2ApproveTx({ chainId, token, amount, expiration, }: {
112
+ chainId: JBChainId;
113
+ token: Address;
114
+ amount?: bigint;
115
+ expiration: number;
116
+ }): Permit2ApproveTxRequest;
32
117
  /** `PoolId.unwrap(PoolIdLibrary.toId(key))`. */
33
118
  export declare function uniswapV4PoolId(key: UniswapV4PoolKey): Hex;
34
119
  /** Storage slot containing the pool's packed slot0 in PoolManager. */
@@ -79,4 +164,5 @@ export declare function uniswapV4PositionTokenIdFromLog(log: {
79
164
  }, positionManager: Address): bigint | null;
80
165
  /** Whether an address is one of the canonical PoolManager deployments. */
81
166
  export declare function isUniswapV4PoolManager(address: string): boolean;
167
+ export {};
82
168
  //# sourceMappingURL=uniswapV4.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uniswapV4.d.ts","sourceRoot":"","sources":["../../../src/v6/uniswapV4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uniswapV4.d.ts","sourceRoot":"","sources":["../../../src/v6/uniswapV4.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { encodeAbiParameters, keccak256, toEventSelector } from "viem";
1
+ import { decodeFunctionResult, encodeAbiParameters, encodeFunctionData, keccak256, toEventSelector, zeroAddress, } from "viem";
2
2
  /**
3
3
  * Canonical Uniswap V4 PoolManager deployments used by Juicebox v6.
4
4
  * Optimism Sepolia is intentionally absent: deploy-all skips the Uniswap stack
@@ -33,6 +33,16 @@ export const UNISWAP_V4_QUOTER_ADDRESSES = {
33
33
  421614: "0x7de51022d70a725b508085468052e25e22b5c4c9",
34
34
  11155111: "0x61b3f2011a92d183c7dbadbda940a7555ccf9227",
35
35
  };
36
+ /** Canonical Universal Router deployments which support the V4_SWAP command. */
37
+ export const UNISWAP_V4_UNIVERSAL_ROUTER_ADDRESSES = {
38
+ 1: "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
39
+ 10: "0x851116d9223fabed8e56c0e6b8ad0c31d98b3507",
40
+ 8453: "0x6ff5693b99212da76ad316178a184ab56d299b43",
41
+ 42161: "0xa51afafe0263b40edaef0df8781ea9aa03e381a3",
42
+ 84532: "0x492e6456d9528771018deb9e87ef7750ef184104",
43
+ 421614: "0xefd1d4bd4cf1e86da286bb4cb1b8bced9c10ba47",
44
+ 11155111: "0x3A9D48AB9751398BbFa63ad67599Bb04e4BdF98b",
45
+ };
36
46
  /** Permit2 is deployed at the same address on supported EVM chains. */
37
47
  export const UNISWAP_PERMIT2_ADDRESS = "0x000000000022D473030F116dDEE9F6B43aC78BA3";
38
48
  /** Resolve the supported V4 surface for a chain without guessing addresses. */
@@ -44,11 +54,188 @@ export function uniswapV4Deployment(chainId) {
44
54
  poolManager,
45
55
  positionManager: UNISWAP_V4_POSITION_MANAGER_ADDRESSES[chainId] ?? null,
46
56
  quoter: UNISWAP_V4_QUOTER_ADDRESSES[chainId] ?? null,
57
+ universalRouter: UNISWAP_V4_UNIVERSAL_ROUTER_ADDRESSES[chainId] ?? null,
47
58
  permit2: UNISWAP_PERMIT2_ADDRESS,
48
59
  };
49
60
  }
50
61
  export const UNISWAP_V4_Q96 = 1n << 96n;
51
62
  export const UNISWAP_V4_MAX_TICK = 887_272;
63
+ const V4_QUOTER_ABI = [
64
+ {
65
+ type: "function",
66
+ name: "quoteExactInputSingle",
67
+ stateMutability: "nonpayable",
68
+ inputs: [
69
+ {
70
+ name: "params",
71
+ type: "tuple",
72
+ components: [
73
+ {
74
+ name: "poolKey",
75
+ type: "tuple",
76
+ components: [
77
+ { name: "currency0", type: "address" },
78
+ { name: "currency1", type: "address" },
79
+ { name: "fee", type: "uint24" },
80
+ { name: "tickSpacing", type: "int24" },
81
+ { name: "hooks", type: "address" },
82
+ ],
83
+ },
84
+ { name: "zeroForOne", type: "bool" },
85
+ { name: "exactAmount", type: "uint128" },
86
+ { name: "hookData", type: "bytes" },
87
+ ],
88
+ },
89
+ ],
90
+ outputs: [
91
+ { name: "amountOut", type: "uint256" },
92
+ { name: "gasEstimate", type: "uint256" },
93
+ ],
94
+ },
95
+ ];
96
+ const UNIVERSAL_ROUTER_ABI = [
97
+ {
98
+ type: "function",
99
+ name: "execute",
100
+ stateMutability: "payable",
101
+ inputs: [
102
+ { name: "commands", type: "bytes" },
103
+ { name: "inputs", type: "bytes[]" },
104
+ { name: "deadline", type: "uint256" },
105
+ ],
106
+ outputs: [],
107
+ },
108
+ ];
109
+ const PERMIT2_ABI = [
110
+ {
111
+ type: "function",
112
+ name: "approve",
113
+ stateMutability: "nonpayable",
114
+ inputs: [
115
+ { name: "token", type: "address" },
116
+ { name: "spender", type: "address" },
117
+ { name: "amount", type: "uint160" },
118
+ { name: "expiration", type: "uint48" },
119
+ ],
120
+ outputs: [],
121
+ },
122
+ ];
123
+ const UINT128_MAX = (1n << 128n) - 1n;
124
+ const UINT160_MAX = (1n << 160n) - 1n;
125
+ /** Quote an exact-input single-pool swap, including the pool hook's behavior. */
126
+ export async function quoteUniswapV4ExactInputSingle(client, { chainId, poolKey, zeroForOne, amountIn, hookData = "0x", }) {
127
+ if (amountIn <= 0n || amountIn > UINT128_MAX) {
128
+ throw new Error("Swap amount is outside Uniswap V4's uint128 range.");
129
+ }
130
+ const quoter = uniswapV4Deployment(chainId)?.quoter;
131
+ if (!quoter)
132
+ throw new Error(`No supported Uniswap V4 quoter on chain ${chainId}.`);
133
+ const call = await client.call({
134
+ to: quoter,
135
+ data: encodeFunctionData({
136
+ abi: V4_QUOTER_ABI,
137
+ functionName: "quoteExactInputSingle",
138
+ args: [{ poolKey, zeroForOne, exactAmount: amountIn, hookData }],
139
+ }),
140
+ });
141
+ if (!call.data)
142
+ throw new Error("Uniswap V4 quoter returned no data.");
143
+ const [amountOut] = decodeFunctionResult({
144
+ abi: V4_QUOTER_ABI,
145
+ functionName: "quoteExactInputSingle",
146
+ data: call.data,
147
+ });
148
+ return amountOut;
149
+ }
150
+ /**
151
+ * Build a Universal Router exact-input V4 swap.
152
+ *
153
+ * ERC-20 input must first approve Permit2, then authorize the Universal Router
154
+ * with {@link buildPermit2ApproveTx}. Native input is supplied as `msg.value`.
155
+ */
156
+ export function buildUniswapV4ExactInputSwapTx({ chainId, poolKey, zeroForOne, amountIn, minimumAmountOut, recipient, deadline, hookData = "0x", }) {
157
+ if (amountIn <= 0n ||
158
+ amountIn > UINT128_MAX ||
159
+ minimumAmountOut <= 0n ||
160
+ minimumAmountOut > UINT128_MAX) {
161
+ throw new Error("Swap amounts are outside Uniswap V4's uint128 range.");
162
+ }
163
+ const universalRouter = uniswapV4Deployment(chainId)?.universalRouter;
164
+ if (!universalRouter) {
165
+ throw new Error(`No supported Uniswap Universal Router on chain ${chainId}.`);
166
+ }
167
+ const currencyIn = zeroForOne ? poolKey.currency0 : poolKey.currency1;
168
+ const currencyOut = zeroForOne ? poolKey.currency1 : poolKey.currency0;
169
+ const swap = encodeAbiParameters([
170
+ {
171
+ type: "tuple",
172
+ components: [
173
+ {
174
+ type: "tuple",
175
+ components: [
176
+ { type: "address" },
177
+ { type: "address" },
178
+ { type: "uint24" },
179
+ { type: "int24" },
180
+ { type: "address" },
181
+ ],
182
+ },
183
+ { type: "bool" },
184
+ { type: "uint128" },
185
+ { type: "uint128" },
186
+ { type: "bytes" },
187
+ ],
188
+ },
189
+ ], [
190
+ [
191
+ [
192
+ poolKey.currency0,
193
+ poolKey.currency1,
194
+ poolKey.fee,
195
+ poolKey.tickSpacing,
196
+ poolKey.hooks,
197
+ ],
198
+ zeroForOne,
199
+ amountIn,
200
+ minimumAmountOut,
201
+ hookData,
202
+ ],
203
+ ]);
204
+ const settle = encodeAbiParameters([{ type: "address" }, { type: "uint256" }], [currencyIn, amountIn]);
205
+ const take = encodeAbiParameters([{ type: "address" }, { type: "address" }, { type: "uint256" }], [currencyOut, recipient, 0n]);
206
+ const input = encodeAbiParameters([{ type: "bytes" }, { type: "bytes[]" }], ["0x060c0e", [swap, settle, take]]);
207
+ return {
208
+ chainId,
209
+ address: universalRouter,
210
+ abi: UNIVERSAL_ROUTER_ABI,
211
+ functionName: "execute",
212
+ args: ["0x10", [input], deadline],
213
+ value: currencyIn.toLowerCase() === zeroAddress ? amountIn : 0n,
214
+ };
215
+ }
216
+ /** Authorize the Universal Router to spend an ERC-20 already approved to Permit2. */
217
+ export function buildPermit2ApproveTx({ chainId, token, amount = UINT160_MAX, expiration, }) {
218
+ if (amount <= 0n || amount > UINT160_MAX) {
219
+ throw new Error("Permit2 amount is outside its uint160 range.");
220
+ }
221
+ if (!Number.isInteger(expiration) ||
222
+ expiration <= 0 ||
223
+ expiration >= 2 ** 48) {
224
+ throw new Error("Permit2 expiration is outside its uint48 range.");
225
+ }
226
+ const deployment = uniswapV4Deployment(chainId);
227
+ if (!deployment?.universalRouter) {
228
+ throw new Error(`No supported Uniswap Universal Router on chain ${chainId}.`);
229
+ }
230
+ return {
231
+ chainId,
232
+ address: deployment.permit2,
233
+ abi: PERMIT2_ABI,
234
+ functionName: "approve",
235
+ args: [token, deployment.universalRouter, amount, expiration],
236
+ value: 0n,
237
+ };
238
+ }
52
239
  const POOL_KEY_TUPLE = [
53
240
  {
54
241
  type: "tuple",
@@ -1 +1 @@
1
- {"version":3,"file":"uniswapV4.js","sourceRoot":"","sources":["../../../src/v6/uniswapV4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"uniswapV4.js","sourceRoot":"","sources":["../../../src/v6/uniswapV4.ts"],"names":[],"mappings":"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"}