@bananapus/nana-sdk-core 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/dist/cjs/actions/JBSuckerAbi.js +4 -1
  2. package/dist/cjs/actions/JBSuckerAbi.js.map +1 -1
  3. package/dist/cjs/actions/dataHook.js +26 -22
  4. package/dist/cjs/actions/dataHook.js.map +1 -1
  5. package/dist/cjs/actions/projectMetadata.js +12 -8
  6. package/dist/cjs/actions/projectMetadata.js.map +1 -1
  7. package/dist/cjs/actions/suckerPairs.js +21 -17
  8. package/dist/cjs/actions/suckerPairs.js.map +1 -1
  9. package/dist/cjs/constants.js +89 -85
  10. package/dist/cjs/constants.js.map +1 -1
  11. package/dist/cjs/contracts.js +22 -19
  12. package/dist/cjs/contracts.js.map +1 -1
  13. package/dist/cjs/generated/juicebox.js +94 -90
  14. package/dist/cjs/generated/juicebox.js.map +1 -1
  15. package/dist/cjs/index.js +24 -8
  16. package/dist/cjs/index.js.map +1 -1
  17. package/dist/cjs/package.json +1 -0
  18. package/dist/cjs/types.js +15 -4
  19. package/dist/cjs/types.js.map +1 -1
  20. package/dist/cjs/utils/contracts.js +19 -14
  21. package/dist/cjs/utils/contracts.js.map +1 -1
  22. package/dist/cjs/utils/data.js +23 -13
  23. package/dist/cjs/utils/data.js.map +1 -1
  24. package/dist/cjs/utils/data.test.js +19 -17
  25. package/dist/cjs/utils/data.test.js.map +1 -1
  26. package/dist/cjs/utils/debug.js +4 -1
  27. package/dist/cjs/utils/debug.js.map +1 -1
  28. package/dist/cjs/utils/deploy.js +17 -13
  29. package/dist/cjs/utils/deploy.js.map +1 -1
  30. package/dist/cjs/utils/deploy.test.js +15 -13
  31. package/dist/cjs/utils/deploy.test.js.map +1 -1
  32. package/dist/cjs/utils/fee.js +6 -3
  33. package/dist/cjs/utils/fee.js.map +1 -1
  34. package/dist/cjs/utils/fee.test.js +8 -6
  35. package/dist/cjs/utils/fee.test.js.map +1 -1
  36. package/dist/cjs/utils/format.js +11 -6
  37. package/dist/cjs/utils/format.js.map +1 -1
  38. package/dist/cjs/utils/format.test.js +11 -9
  39. package/dist/cjs/utils/format.test.js.map +1 -1
  40. package/dist/cjs/utils/hook.js +9 -6
  41. package/dist/cjs/utils/hook.js.map +1 -1
  42. package/dist/cjs/utils/index.js +28 -12
  43. package/dist/cjs/utils/index.js.map +1 -1
  44. package/dist/cjs/utils/ipfs.js +14 -6
  45. package/dist/cjs/utils/ipfs.js.map +1 -1
  46. package/dist/cjs/utils/ipfs.test.js +23 -18
  47. package/dist/cjs/utils/ipfs.test.js.map +1 -1
  48. package/dist/cjs/utils/revnet.js +9 -5
  49. package/dist/cjs/utils/revnet.js.map +1 -1
  50. package/dist/cjs/utils/revnet.test.js +9 -7
  51. package/dist/cjs/utils/revnet.test.js.map +1 -1
  52. package/dist/cjs/utils/ruleset.js +11 -7
  53. package/dist/cjs/utils/ruleset.js.map +1 -1
  54. package/dist/cjs/utils/ruleset.test.js +9 -7
  55. package/dist/cjs/utils/ruleset.test.js.map +1 -1
  56. package/dist/cjs/utils/token.js +26 -19
  57. package/dist/cjs/utils/token.js.map +1 -1
  58. package/dist/cjs/utils/token.test.js +25 -23
  59. package/dist/cjs/utils/token.test.js.map +1 -1
  60. package/dist/cjs/utils/tx.js +6 -3
  61. package/dist/cjs/utils/tx.js.map +1 -1
  62. package/dist/cjs/utils/urn.js +9 -5
  63. package/dist/cjs/utils/urn.js.map +1 -1
  64. package/dist/cjs/utils/urn.test.js +71 -69
  65. package/dist/cjs/utils/urn.test.js.map +1 -1
  66. package/dist/cjs/v6/cashOut.d.ts +88 -0
  67. package/dist/cjs/v6/cashOut.d.ts.map +1 -0
  68. package/dist/cjs/v6/cashOut.js +77 -0
  69. package/dist/cjs/v6/cashOut.js.map +1 -0
  70. package/dist/cjs/v6/cashOut.test.d.ts +2 -0
  71. package/dist/cjs/v6/cashOut.test.d.ts.map +1 -0
  72. package/dist/cjs/v6/cashOut.test.js +102 -0
  73. package/dist/cjs/v6/cashOut.test.js.map +1 -0
  74. package/dist/cjs/v6/currency.d.ts +43 -0
  75. package/dist/cjs/v6/currency.d.ts.map +1 -0
  76. package/dist/cjs/v6/currency.js +48 -0
  77. package/dist/cjs/v6/currency.js.map +1 -0
  78. package/dist/cjs/v6/currency.test.d.ts +2 -0
  79. package/dist/cjs/v6/currency.test.d.ts.map +1 -0
  80. package/dist/cjs/v6/currency.test.js +26 -0
  81. package/dist/cjs/v6/currency.test.js.map +1 -0
  82. package/dist/cjs/v6/fees.d.ts +43 -0
  83. package/dist/cjs/v6/fees.d.ts.map +1 -0
  84. package/dist/cjs/v6/fees.js +56 -0
  85. package/dist/cjs/v6/fees.js.map +1 -0
  86. package/dist/cjs/v6/fees.test.d.ts +2 -0
  87. package/dist/cjs/v6/fees.test.d.ts.map +1 -0
  88. package/dist/cjs/v6/fees.test.js +40 -0
  89. package/dist/cjs/v6/fees.test.js.map +1 -0
  90. package/dist/cjs/v6/index.d.ts +16 -0
  91. package/dist/cjs/v6/index.d.ts.map +1 -0
  92. package/dist/cjs/v6/index.js +32 -0
  93. package/dist/cjs/v6/index.js.map +1 -0
  94. package/dist/cjs/v6/launch.d.ts +2754 -0
  95. package/dist/cjs/v6/launch.d.ts.map +1 -0
  96. package/dist/cjs/v6/launch.js +184 -0
  97. package/dist/cjs/v6/launch.js.map +1 -0
  98. package/dist/cjs/v6/launch.test.d.ts +2 -0
  99. package/dist/cjs/v6/launch.test.d.ts.map +1 -0
  100. package/dist/cjs/v6/launch.test.js +137 -0
  101. package/dist/cjs/v6/launch.test.js.map +1 -0
  102. package/dist/cjs/v6/loans.d.ts +176 -0
  103. package/dist/cjs/v6/loans.d.ts.map +1 -0
  104. package/dist/cjs/v6/loans.js +177 -0
  105. package/dist/cjs/v6/loans.js.map +1 -0
  106. package/dist/cjs/v6/loans.test.d.ts +2 -0
  107. package/dist/cjs/v6/loans.test.d.ts.map +1 -0
  108. package/dist/cjs/v6/loans.test.js +129 -0
  109. package/dist/cjs/v6/loans.test.js.map +1 -0
  110. package/dist/cjs/v6/omnichain.d.ts +10997 -0
  111. package/dist/cjs/v6/omnichain.d.ts.map +1 -0
  112. package/dist/cjs/v6/omnichain.js +120 -0
  113. package/dist/cjs/v6/omnichain.js.map +1 -0
  114. package/dist/cjs/v6/omnichain.test.d.ts +2 -0
  115. package/dist/cjs/v6/omnichain.test.d.ts.map +1 -0
  116. package/dist/cjs/v6/omnichain.test.js +145 -0
  117. package/dist/cjs/v6/omnichain.test.js.map +1 -0
  118. package/dist/cjs/v6/pay.d.ts +110 -0
  119. package/dist/cjs/v6/pay.d.ts.map +1 -0
  120. package/dist/cjs/v6/pay.js +111 -0
  121. package/dist/cjs/v6/pay.js.map +1 -0
  122. package/dist/cjs/v6/pay.test.d.ts +2 -0
  123. package/dist/cjs/v6/pay.test.d.ts.map +1 -0
  124. package/dist/cjs/v6/pay.test.js +130 -0
  125. package/dist/cjs/v6/pay.test.js.map +1 -0
  126. package/dist/cjs/v6/permissions.d.ts +128 -0
  127. package/dist/cjs/v6/permissions.d.ts.map +1 -0
  128. package/dist/cjs/v6/permissions.js +125 -0
  129. package/dist/cjs/v6/permissions.js.map +1 -0
  130. package/dist/cjs/v6/permissions.test.d.ts +2 -0
  131. package/dist/cjs/v6/permissions.test.d.ts.map +1 -0
  132. package/dist/cjs/v6/permissions.test.js +117 -0
  133. package/dist/cjs/v6/permissions.test.js.map +1 -0
  134. package/dist/cjs/v6/revnets.d.ts +4459 -0
  135. package/dist/cjs/v6/revnets.d.ts.map +1 -0
  136. package/dist/cjs/v6/revnets.js +178 -0
  137. package/dist/cjs/v6/revnets.js.map +1 -0
  138. package/dist/cjs/v6/revnets.test.d.ts +2 -0
  139. package/dist/cjs/v6/revnets.test.d.ts.map +1 -0
  140. package/dist/cjs/v6/revnets.test.js +233 -0
  141. package/dist/cjs/v6/revnets.test.js.map +1 -0
  142. package/dist/cjs/v6/rulesets.d.ts +2700 -0
  143. package/dist/cjs/v6/rulesets.d.ts.map +1 -0
  144. package/dist/cjs/v6/rulesets.js +76 -0
  145. package/dist/cjs/v6/rulesets.js.map +1 -0
  146. package/dist/cjs/v6/rulesets.test.d.ts +2 -0
  147. package/dist/cjs/v6/rulesets.test.d.ts.map +1 -0
  148. package/dist/cjs/v6/rulesets.test.js +106 -0
  149. package/dist/cjs/v6/rulesets.test.js.map +1 -0
  150. package/dist/cjs/v6/splits.d.ts +2671 -0
  151. package/dist/cjs/v6/splits.d.ts.map +1 -0
  152. package/dist/cjs/v6/splits.js +116 -0
  153. package/dist/cjs/v6/splits.js.map +1 -0
  154. package/dist/cjs/v6/splits.test.d.ts +2 -0
  155. package/dist/cjs/v6/splits.test.d.ts.map +1 -0
  156. package/dist/cjs/v6/splits.test.js +135 -0
  157. package/dist/cjs/v6/splits.test.js.map +1 -0
  158. package/dist/cjs/v6/suckers.d.ts +247 -0
  159. package/dist/cjs/v6/suckers.d.ts.map +1 -0
  160. package/dist/cjs/v6/suckers.js +163 -0
  161. package/dist/cjs/v6/suckers.js.map +1 -0
  162. package/dist/cjs/v6/suckers.test.d.ts +2 -0
  163. package/dist/cjs/v6/suckers.test.d.ts.map +1 -0
  164. package/dist/cjs/v6/suckers.test.js +134 -0
  165. package/dist/cjs/v6/suckers.test.js.map +1 -0
  166. package/dist/cjs/v6/terminals.d.ts +67 -0
  167. package/dist/cjs/v6/terminals.d.ts.map +1 -0
  168. package/dist/cjs/v6/terminals.js +54 -0
  169. package/dist/cjs/v6/terminals.js.map +1 -0
  170. package/dist/cjs/v6/terminals.test.d.ts +2 -0
  171. package/dist/cjs/v6/terminals.test.d.ts.map +1 -0
  172. package/dist/cjs/v6/terminals.test.js +59 -0
  173. package/dist/cjs/v6/terminals.test.js.map +1 -0
  174. package/dist/cjs/v6/tokens.d.ts +194 -0
  175. package/dist/cjs/v6/tokens.d.ts.map +1 -0
  176. package/dist/cjs/v6/tokens.js +170 -0
  177. package/dist/cjs/v6/tokens.js.map +1 -0
  178. package/dist/cjs/v6/tokens.test.d.ts +2 -0
  179. package/dist/cjs/v6/tokens.test.d.ts.map +1 -0
  180. package/dist/cjs/v6/tokens.test.js +141 -0
  181. package/dist/cjs/v6/tokens.test.js.map +1 -0
  182. package/dist/cjs/v6/types.d.ts +12 -0
  183. package/dist/cjs/v6/types.d.ts.map +1 -0
  184. package/dist/cjs/v6/types.js +15 -0
  185. package/dist/cjs/v6/types.js.map +1 -0
  186. package/dist/esm/v6/cashOut.d.ts +88 -0
  187. package/dist/esm/v6/cashOut.d.ts.map +1 -0
  188. package/dist/esm/v6/cashOut.js +73 -0
  189. package/dist/esm/v6/cashOut.js.map +1 -0
  190. package/dist/esm/v6/cashOut.test.d.ts +2 -0
  191. package/dist/esm/v6/cashOut.test.d.ts.map +1 -0
  192. package/dist/esm/v6/cashOut.test.js +100 -0
  193. package/dist/esm/v6/cashOut.test.js.map +1 -0
  194. package/dist/esm/v6/currency.d.ts +43 -0
  195. package/dist/esm/v6/currency.d.ts.map +1 -0
  196. package/dist/esm/v6/currency.js +44 -0
  197. package/dist/esm/v6/currency.js.map +1 -0
  198. package/dist/esm/v6/currency.test.d.ts +2 -0
  199. package/dist/esm/v6/currency.test.d.ts.map +1 -0
  200. package/dist/esm/v6/currency.test.js +24 -0
  201. package/dist/esm/v6/currency.test.js.map +1 -0
  202. package/dist/esm/v6/fees.d.ts +43 -0
  203. package/dist/esm/v6/fees.d.ts.map +1 -0
  204. package/dist/esm/v6/fees.js +51 -0
  205. package/dist/esm/v6/fees.js.map +1 -0
  206. package/dist/esm/v6/fees.test.d.ts +2 -0
  207. package/dist/esm/v6/fees.test.d.ts.map +1 -0
  208. package/dist/esm/v6/fees.test.js +38 -0
  209. package/dist/esm/v6/fees.test.js.map +1 -0
  210. package/dist/esm/v6/index.d.ts +16 -0
  211. package/dist/esm/v6/index.d.ts.map +1 -0
  212. package/dist/esm/v6/index.js +16 -0
  213. package/dist/esm/v6/index.js.map +1 -0
  214. package/dist/esm/v6/launch.d.ts +2754 -0
  215. package/dist/esm/v6/launch.d.ts.map +1 -0
  216. package/dist/esm/v6/launch.js +176 -0
  217. package/dist/esm/v6/launch.js.map +1 -0
  218. package/dist/esm/v6/launch.test.d.ts +2 -0
  219. package/dist/esm/v6/launch.test.d.ts.map +1 -0
  220. package/dist/esm/v6/launch.test.js +135 -0
  221. package/dist/esm/v6/launch.test.js.map +1 -0
  222. package/dist/esm/v6/loans.d.ts +176 -0
  223. package/dist/esm/v6/loans.d.ts.map +1 -0
  224. package/dist/esm/v6/loans.js +170 -0
  225. package/dist/esm/v6/loans.js.map +1 -0
  226. package/dist/esm/v6/loans.test.d.ts +2 -0
  227. package/dist/esm/v6/loans.test.d.ts.map +1 -0
  228. package/dist/esm/v6/loans.test.js +127 -0
  229. package/dist/esm/v6/loans.test.js.map +1 -0
  230. package/dist/esm/v6/omnichain.d.ts +10997 -0
  231. package/dist/esm/v6/omnichain.d.ts.map +1 -0
  232. package/dist/esm/v6/omnichain.js +116 -0
  233. package/dist/esm/v6/omnichain.js.map +1 -0
  234. package/dist/esm/v6/omnichain.test.d.ts +2 -0
  235. package/dist/esm/v6/omnichain.test.d.ts.map +1 -0
  236. package/dist/esm/v6/omnichain.test.js +143 -0
  237. package/dist/esm/v6/omnichain.test.js.map +1 -0
  238. package/dist/esm/v6/pay.d.ts +110 -0
  239. package/dist/esm/v6/pay.d.ts.map +1 -0
  240. package/dist/esm/v6/pay.js +106 -0
  241. package/dist/esm/v6/pay.js.map +1 -0
  242. package/dist/esm/v6/pay.test.d.ts +2 -0
  243. package/dist/esm/v6/pay.test.d.ts.map +1 -0
  244. package/dist/esm/v6/pay.test.js +128 -0
  245. package/dist/esm/v6/pay.test.js.map +1 -0
  246. package/dist/esm/v6/permissions.d.ts +128 -0
  247. package/dist/esm/v6/permissions.d.ts.map +1 -0
  248. package/dist/esm/v6/permissions.js +120 -0
  249. package/dist/esm/v6/permissions.js.map +1 -0
  250. package/dist/esm/v6/permissions.test.d.ts +2 -0
  251. package/dist/esm/v6/permissions.test.d.ts.map +1 -0
  252. package/dist/esm/v6/permissions.test.js +115 -0
  253. package/dist/esm/v6/permissions.test.js.map +1 -0
  254. package/dist/esm/v6/revnets.d.ts +4459 -0
  255. package/dist/esm/v6/revnets.d.ts.map +1 -0
  256. package/dist/esm/v6/revnets.js +169 -0
  257. package/dist/esm/v6/revnets.js.map +1 -0
  258. package/dist/esm/v6/revnets.test.d.ts +2 -0
  259. package/dist/esm/v6/revnets.test.d.ts.map +1 -0
  260. package/dist/esm/v6/revnets.test.js +231 -0
  261. package/dist/esm/v6/revnets.test.js.map +1 -0
  262. package/dist/esm/v6/rulesets.d.ts +2700 -0
  263. package/dist/esm/v6/rulesets.d.ts.map +1 -0
  264. package/dist/esm/v6/rulesets.js +70 -0
  265. package/dist/esm/v6/rulesets.js.map +1 -0
  266. package/dist/esm/v6/rulesets.test.d.ts +2 -0
  267. package/dist/esm/v6/rulesets.test.d.ts.map +1 -0
  268. package/dist/esm/v6/rulesets.test.js +104 -0
  269. package/dist/esm/v6/rulesets.test.js.map +1 -0
  270. package/dist/esm/v6/splits.d.ts +2671 -0
  271. package/dist/esm/v6/splits.d.ts.map +1 -0
  272. package/dist/esm/v6/splits.js +109 -0
  273. package/dist/esm/v6/splits.js.map +1 -0
  274. package/dist/esm/v6/splits.test.d.ts +2 -0
  275. package/dist/esm/v6/splits.test.d.ts.map +1 -0
  276. package/dist/esm/v6/splits.test.js +133 -0
  277. package/dist/esm/v6/splits.test.js.map +1 -0
  278. package/dist/esm/v6/suckers.d.ts +247 -0
  279. package/dist/esm/v6/suckers.d.ts.map +1 -0
  280. package/dist/esm/v6/suckers.js +156 -0
  281. package/dist/esm/v6/suckers.js.map +1 -0
  282. package/dist/esm/v6/suckers.test.d.ts +2 -0
  283. package/dist/esm/v6/suckers.test.d.ts.map +1 -0
  284. package/dist/esm/v6/suckers.test.js +132 -0
  285. package/dist/esm/v6/suckers.test.js.map +1 -0
  286. package/dist/esm/v6/terminals.d.ts +67 -0
  287. package/dist/esm/v6/terminals.d.ts.map +1 -0
  288. package/dist/esm/v6/terminals.js +50 -0
  289. package/dist/esm/v6/terminals.js.map +1 -0
  290. package/dist/esm/v6/terminals.test.d.ts +2 -0
  291. package/dist/esm/v6/terminals.test.d.ts.map +1 -0
  292. package/dist/esm/v6/terminals.test.js +57 -0
  293. package/dist/esm/v6/terminals.test.js.map +1 -0
  294. package/dist/esm/v6/tokens.d.ts +194 -0
  295. package/dist/esm/v6/tokens.d.ts.map +1 -0
  296. package/dist/esm/v6/tokens.js +161 -0
  297. package/dist/esm/v6/tokens.js.map +1 -0
  298. package/dist/esm/v6/tokens.test.d.ts +2 -0
  299. package/dist/esm/v6/tokens.test.d.ts.map +1 -0
  300. package/dist/esm/v6/tokens.test.js +139 -0
  301. package/dist/esm/v6/tokens.test.js.map +1 -0
  302. package/dist/esm/v6/types.d.ts +12 -0
  303. package/dist/esm/v6/types.d.ts.map +1 -0
  304. package/dist/esm/v6/types.js +12 -0
  305. package/dist/esm/v6/types.js.map +1 -0
  306. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  307. package/dist/tsconfig.tsbuildinfo +1 -1
  308. package/package.json +8 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splits.d.ts","sourceRoot":"","sources":["../../../src/v6/splits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAe,MAAM,MAAM,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,KAAK,kBAAkB,GAAG,oBAAoB,CAC5C,OAAO,eAAe,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA6B5D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CASV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;CACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQA"}
@@ -0,0 +1,109 @@
1
+ import { zeroAddress } from "viem";
2
+ import { SPLITS_TOTAL_PERCENT } from "../constants.js";
3
+ import { jbControllerAbi } from "../generated/juicebox.js";
4
+ import { v6Address } from "./types.js";
5
+ /**
6
+ * The group id for a project's reserved-token splits.
7
+ */
8
+ export const RESERVED_TOKEN_SPLIT_GROUP_ID = 1n;
9
+ /**
10
+ * The group id for a project's payout splits of the given token:
11
+ * `uint256(uint160(token))`.
12
+ *
13
+ * Use the project's ACCOUNTING token (e.g. USDC for a USDC-accounting
14
+ * project), not the native-token sentinel, or payouts will be looked up
15
+ * under the wrong group.
16
+ */
17
+ export function payoutSplitGroupId(token) {
18
+ return BigInt(token);
19
+ }
20
+ /**
21
+ * Scale integer shares so the group totals EXACTLY `SPLITS_TOTAL_PERCENT`
22
+ * (1e9), assigning the rounding remainder to the largest share (the first
23
+ * one, on ties). Per-row rounding drifts, and `JBSplits` reverts unless the
24
+ * group sums to exactly 1e9 — always run computed percents through this
25
+ * before encoding.
26
+ *
27
+ * @param shares Non-negative integer shares, each already denominated out of
28
+ * `SPLITS_TOTAL_PERCENT` (their sum should be ~1e9; only rounding drift is
29
+ * corrected here).
30
+ * @returns A new array summing to exactly `SPLITS_TOTAL_PERCENT`. An empty
31
+ * input returns an empty array (an empty group is valid).
32
+ * @throws If a share is negative or non-integer, or if the drift from
33
+ * `SPLITS_TOTAL_PERCENT` exceeds one unit per share (the input was not
34
+ * normalized to `SPLITS_TOTAL_PERCENT`).
35
+ */
36
+ export function fillSplitPercents(shares) {
37
+ if (shares.length === 0)
38
+ return [];
39
+ for (const share of shares) {
40
+ if (!Number.isInteger(share) || share < 0) {
41
+ throw new Error(`Split shares must be non-negative integers, got ${share}`);
42
+ }
43
+ }
44
+ const filled = [...shares];
45
+ const sum = filled.reduce((total, share) => total + share, 0);
46
+ const delta = SPLITS_TOTAL_PERCENT - sum;
47
+ if (delta === 0)
48
+ return filled;
49
+ // Per-row rounding can drift by at most one unit per share. Anything larger means
50
+ // the input wasn't normalized to SPLITS_TOTAL_PERCENT — silently rewriting it would
51
+ // hand a beneficiary a very different share than intended.
52
+ if (Math.abs(delta) > filled.length) {
53
+ throw new Error(`Split shares sum to ${sum}; expected ~${SPLITS_TOTAL_PERCENT} (drift larger than rounding error)`);
54
+ }
55
+ let largestIndex = 0;
56
+ for (let i = 1; i < filled.length; i++) {
57
+ if (filled[i] > filled[largestIndex])
58
+ largestIndex = i;
59
+ }
60
+ filled[largestIndex] += delta;
61
+ return filled;
62
+ }
63
+ /**
64
+ * Build a `JBSplit` with safe defaults: pays a beneficiary wallet directly
65
+ * (`projectId` 0, no hook, `preferAddToBalance` false, unlocked).
66
+ *
67
+ * @param args.beneficiary The address that receives the split.
68
+ * @param args.percent The split's share, out of `SPLITS_TOTAL_PERCENT` (1e9).
69
+ * Run computed groups through {@link fillSplitPercents} first.
70
+ * @param args.projectId Route the split to a project instead of a wallet
71
+ * (the beneficiary then receives that project's tokens). Defaults to 0n.
72
+ * @param args.preferAddToBalance For project-routed splits, use
73
+ * `addToBalanceOf` instead of `pay`. Defaults to false.
74
+ * @param args.lockedUntil Timestamp until which the split cannot be changed.
75
+ * Defaults to 0 (unlocked).
76
+ * @param args.hook A split hook contract to receive the split. Defaults to
77
+ * the zero address (no hook).
78
+ */
79
+ export function buildSplit(args) {
80
+ return {
81
+ percent: args.percent,
82
+ projectId: args.projectId ?? 0n,
83
+ beneficiary: args.beneficiary,
84
+ preferAddToBalance: args.preferAddToBalance ?? false,
85
+ lockedUntil: args.lockedUntil ?? 0,
86
+ hook: args.hook ?? zeroAddress,
87
+ };
88
+ }
89
+ /**
90
+ * Build a `JBController.setSplitGroupsOf` transaction request setting a
91
+ * project's split groups for a given ruleset.
92
+ *
93
+ * The caller must be the project's owner or have the `SET_SPLIT_GROUPS`
94
+ * permission. Each group must total exactly `SPLITS_TOTAL_PERCENT`.
95
+ *
96
+ * @param args.rulesetId The id of the ruleset the split groups apply to.
97
+ * @param args.splitGroups Use {@link RESERVED_TOKEN_SPLIT_GROUP_ID} for the
98
+ * reserved-token group and {@link payoutSplitGroupId} for payout groups.
99
+ */
100
+ export function buildSetSplitGroupsTx(args) {
101
+ return {
102
+ chainId: args.chainId,
103
+ address: v6Address("JBController", args.chainId),
104
+ abi: jbControllerAbi,
105
+ functionName: "setSplitGroupsOf",
106
+ args: [args.projectId, args.rulesetId, args.splitGroups],
107
+ };
108
+ }
109
+ //# sourceMappingURL=splits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splits.js","sourceRoot":"","sources":["../../../src/v6/splits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,WAAW,EAAE,MAAM,MAAM,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqBvC;;GAEG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAgB;IAChD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,mDAAmD,KAAK,EAAE,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,oBAAoB,GAAG,GAAG,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE/B,kFAAkF;IAClF,oFAAoF;IACpF,2DAA2D;IAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,uBAAuB,GAAG,eAAe,oBAAoB,qCAAqC,CACnG,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;YAAE,YAAY,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU,CAAC,IAO1B;IACC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,KAAK;QACpD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;QAClC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,WAAW;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAKrC;IACC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD,GAAG,EAAE,eAAe;QACpB,YAAY,EAAE,kBAA2B;QACzC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAU;KAClE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=splits.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splits.test.d.ts","sourceRoot":"","sources":["../../../src/v6/splits.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
1
+ import { decodeFunctionData, encodeFunctionData } from "viem";
2
+ import { sepolia } from "viem/chains";
3
+ import { describe, expect, test } from "vitest";
4
+ import { NATIVE_TOKEN, SPLITS_TOTAL_PERCENT } from "../constants.js";
5
+ import { jbControllerAbi } from "../generated/juicebox.js";
6
+ import { RESERVED_TOKEN_SPLIT_GROUP_ID, buildSetSplitGroupsTx, buildSplit, fillSplitPercents, payoutSplitGroupId, } from "./splits.js";
7
+ import { v6Address } from "./types.js";
8
+ const BENEFICIARY = "0x000000000000000000000000000000000000dEaD";
9
+ describe("fillSplitPercents", () => {
10
+ test("returns an empty array for an empty group", () => {
11
+ expect(fillSplitPercents([])).toEqual([]);
12
+ });
13
+ test("leaves an exact group untouched", () => {
14
+ expect(fillSplitPercents([600_000_000, 400_000_000])).toEqual([
15
+ 600_000_000, 400_000_000,
16
+ ]);
17
+ expect(fillSplitPercents([SPLITS_TOTAL_PERCENT])).toEqual([
18
+ SPLITS_TOTAL_PERCENT,
19
+ ]);
20
+ });
21
+ test("assigns a positive remainder to the largest share", () => {
22
+ const third = Math.floor(SPLITS_TOTAL_PERCENT / 3);
23
+ const filled = fillSplitPercents([third, third, third]);
24
+ // 3 * 333,333,333 = 999,999,999 — one atom short; the first max takes it.
25
+ expect(filled).toEqual([third + 1, third, third]);
26
+ expect(filled.reduce((a, b) => a + b, 0)).toBe(SPLITS_TOTAL_PERCENT);
27
+ });
28
+ test("assigns the remainder to the largest share, not the last", () => {
29
+ const filled = fillSplitPercents([100_000_000, 899_999_999]);
30
+ expect(filled).toEqual([100_000_000, 900_000_000]);
31
+ });
32
+ test("shaves a negative remainder off the largest share", () => {
33
+ const filled = fillSplitPercents([500_000_000, 500_000_001]);
34
+ expect(filled).toEqual([500_000_000, 500_000_000]);
35
+ expect(filled.reduce((a, b) => a + b, 0)).toBe(SPLITS_TOTAL_PERCENT);
36
+ });
37
+ test("uneven 7-way split fills to exactly 1e9", () => {
38
+ const seventh = Math.floor(SPLITS_TOTAL_PERCENT / 7);
39
+ const shares = Array(7).fill(seventh);
40
+ const filled = fillSplitPercents(shares);
41
+ expect(filled.reduce((a, b) => a + b, 0)).toBe(SPLITS_TOTAL_PERCENT);
42
+ // 1e9 - 7 * 142,857,142 = 6 atoms on the first max.
43
+ expect(filled[0]).toBe(seventh + 6);
44
+ expect(filled.slice(1)).toEqual(Array(6).fill(seventh));
45
+ });
46
+ test("throws when the drift exceeds rounding error", () => {
47
+ expect(() => fillSplitPercents([0])).toThrow(/drift larger than rounding/);
48
+ expect(() => fillSplitPercents([50, 50])).toThrow(/drift larger than rounding/);
49
+ expect(() => fillSplitPercents([0, 0, 0])).toThrow(/drift larger than rounding/);
50
+ });
51
+ test("does not mutate the input", () => {
52
+ const shares = [499999999, 499999999, 1];
53
+ fillSplitPercents(shares);
54
+ expect(shares).toEqual([499999999, 499999999, 1]);
55
+ });
56
+ test("throws on negative or non-integer shares", () => {
57
+ expect(() => fillSplitPercents([-1, SPLITS_TOTAL_PERCENT])).toThrow(/non-negative integers/);
58
+ expect(() => fillSplitPercents([0.5, SPLITS_TOTAL_PERCENT])).toThrow(/non-negative integers/);
59
+ });
60
+ test("repairs a small oversum even above the total", () => {
61
+ // sum = 1e9 + 2; shaving 2 off the largest still leaves it non-negative.
62
+ const filled = fillSplitPercents([SPLITS_TOTAL_PERCENT + 1, 1]);
63
+ expect(filled).toEqual([SPLITS_TOTAL_PERCENT - 1, 1]);
64
+ expect(filled.reduce((a, b) => a + b, 0)).toBe(SPLITS_TOTAL_PERCENT);
65
+ });
66
+ test("throws when the group oversums beyond repair", () => {
67
+ // sum = 1.8e9; the -8e8 delta far exceeds rounding error.
68
+ expect(() => fillSplitPercents([600_000_000, 600_000_000, 600_000_000])).toThrow(/drift larger than rounding/);
69
+ });
70
+ });
71
+ describe("split group ids", () => {
72
+ test("reserved-token group id is 1n", () => {
73
+ expect(RESERVED_TOKEN_SPLIT_GROUP_ID).toBe(1n);
74
+ });
75
+ test("payout group id is uint256(uint160(token))", () => {
76
+ expect(payoutSplitGroupId(NATIVE_TOKEN)).toBe(61166n);
77
+ expect(payoutSplitGroupId("0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984")).toBe(BigInt("0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"));
78
+ });
79
+ });
80
+ describe("buildSplit", () => {
81
+ test("applies safe defaults", () => {
82
+ const split = buildSplit({ beneficiary: BENEFICIARY, percent: 1 });
83
+ expect(split).toEqual({
84
+ percent: 1,
85
+ projectId: 0n,
86
+ beneficiary: BENEFICIARY,
87
+ preferAddToBalance: false,
88
+ lockedUntil: 0,
89
+ hook: "0x0000000000000000000000000000000000000000",
90
+ });
91
+ });
92
+ test("honors overrides", () => {
93
+ const split = buildSplit({
94
+ beneficiary: BENEFICIARY,
95
+ percent: 5,
96
+ projectId: 3n,
97
+ preferAddToBalance: true,
98
+ lockedUntil: 1_750_000_000,
99
+ hook: BENEFICIARY,
100
+ });
101
+ expect(split.projectId).toBe(3n);
102
+ expect(split.preferAddToBalance).toBe(true);
103
+ expect(split.lockedUntil).toBe(1_750_000_000);
104
+ expect(split.hook).toBe(BENEFICIARY);
105
+ });
106
+ });
107
+ describe("buildSetSplitGroupsTx", () => {
108
+ test("encodes against the controller ABI", () => {
109
+ const percents = fillSplitPercents([
110
+ Math.floor(SPLITS_TOTAL_PERCENT * 0.7),
111
+ Math.floor(SPLITS_TOTAL_PERCENT * 0.3),
112
+ ]);
113
+ const request = buildSetSplitGroupsTx({
114
+ chainId: sepolia.id,
115
+ projectId: 5n,
116
+ rulesetId: 1700000000n,
117
+ splitGroups: [
118
+ {
119
+ groupId: RESERVED_TOKEN_SPLIT_GROUP_ID,
120
+ splits: percents.map((percent) => buildSplit({ beneficiary: BENEFICIARY, percent })),
121
+ },
122
+ ],
123
+ });
124
+ expect(request.address).toBe(v6Address("JBController", sepolia.id));
125
+ expect(request.chainId).toBe(sepolia.id);
126
+ expect(request.functionName).toBe("setSplitGroupsOf");
127
+ const data = encodeFunctionData(request);
128
+ const decoded = decodeFunctionData({ abi: jbControllerAbi, data });
129
+ expect(decoded.functionName).toBe("setSplitGroupsOf");
130
+ expect(decoded.args[0]).toBe(5n);
131
+ });
132
+ });
133
+ //# sourceMappingURL=splits.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"splits.test.js","sourceRoot":"","sources":["../../../src/v6/splits.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ import { Address, Hex, PublicClient } from "viem";
2
+ import { JBChainId } from "../types.js";
3
+ /**
4
+ * Minimal v6 JBSucker ABI. v6 identifies remote beneficiaries as bytes32 (for cross-VM
5
+ * compatibility) and adds an opaque `metadata` attribution payload to prepared leaves.
6
+ */
7
+ export declare const jbSuckerV6Abi: readonly [{
8
+ readonly type: "function";
9
+ readonly name: "prepare";
10
+ readonly inputs: readonly [{
11
+ readonly name: "projectTokenCount";
12
+ readonly type: "uint256";
13
+ readonly internalType: "uint256";
14
+ }, {
15
+ readonly name: "beneficiary";
16
+ readonly type: "bytes32";
17
+ readonly internalType: "bytes32";
18
+ }, {
19
+ readonly name: "minTokensReclaimed";
20
+ readonly type: "uint256";
21
+ readonly internalType: "uint256";
22
+ }, {
23
+ readonly name: "token";
24
+ readonly type: "address";
25
+ readonly internalType: "address";
26
+ }, {
27
+ readonly name: "metadata";
28
+ readonly type: "bytes32";
29
+ readonly internalType: "bytes32";
30
+ }];
31
+ readonly outputs: readonly [];
32
+ readonly stateMutability: "nonpayable";
33
+ }, {
34
+ readonly type: "function";
35
+ readonly name: "toRemote";
36
+ readonly inputs: readonly [{
37
+ readonly name: "token";
38
+ readonly type: "address";
39
+ readonly internalType: "address";
40
+ }];
41
+ readonly outputs: readonly [];
42
+ readonly stateMutability: "payable";
43
+ }, {
44
+ readonly type: "function";
45
+ readonly name: "claim";
46
+ readonly inputs: readonly [{
47
+ readonly name: "claimData";
48
+ readonly type: "tuple";
49
+ readonly internalType: "struct JBClaim";
50
+ readonly components: readonly [{
51
+ readonly name: "token";
52
+ readonly type: "address";
53
+ readonly internalType: "address";
54
+ }, {
55
+ readonly name: "leaf";
56
+ readonly type: "tuple";
57
+ readonly internalType: "struct JBLeaf";
58
+ readonly components: readonly [{
59
+ readonly name: "index";
60
+ readonly type: "uint256";
61
+ readonly internalType: "uint256";
62
+ }, {
63
+ readonly name: "beneficiary";
64
+ readonly type: "bytes32";
65
+ readonly internalType: "bytes32";
66
+ }, {
67
+ readonly name: "projectTokenCount";
68
+ readonly type: "uint256";
69
+ readonly internalType: "uint256";
70
+ }, {
71
+ readonly name: "terminalTokenAmount";
72
+ readonly type: "uint256";
73
+ readonly internalType: "uint256";
74
+ }, {
75
+ readonly name: "metadata";
76
+ readonly type: "bytes32";
77
+ readonly internalType: "bytes32";
78
+ }];
79
+ }, {
80
+ readonly name: "proof";
81
+ readonly type: "bytes32[32]";
82
+ readonly internalType: "bytes32[32]";
83
+ }];
84
+ }];
85
+ readonly outputs: readonly [];
86
+ readonly stateMutability: "nonpayable";
87
+ }];
88
+ /**
89
+ * A leaf of a v6 sucker's merkle tree, representing tokens bridged for one beneficiary.
90
+ * The beneficiary is a bytes32 (an EVM address left-padded to 32 bytes).
91
+ */
92
+ export type JBLeaf = {
93
+ index: bigint;
94
+ beneficiary: Hex;
95
+ projectTokenCount: bigint;
96
+ terminalTokenAmount: bigint;
97
+ metadata: Hex;
98
+ };
99
+ /**
100
+ * A 32-entry bytes32 merkle inclusion proof, matching the fixed-size `bytes32[32]` the
101
+ * sucker's `claim` function takes.
102
+ */
103
+ export type JBLeafProof = readonly [
104
+ Hex,
105
+ Hex,
106
+ Hex,
107
+ Hex,
108
+ Hex,
109
+ Hex,
110
+ Hex,
111
+ Hex,
112
+ Hex,
113
+ Hex,
114
+ Hex,
115
+ Hex,
116
+ Hex,
117
+ Hex,
118
+ Hex,
119
+ Hex,
120
+ Hex,
121
+ Hex,
122
+ Hex,
123
+ Hex,
124
+ Hex,
125
+ Hex,
126
+ Hex,
127
+ Hex,
128
+ Hex,
129
+ Hex,
130
+ Hex,
131
+ Hex,
132
+ Hex,
133
+ Hex,
134
+ Hex,
135
+ Hex
136
+ ];
137
+ /**
138
+ * A claim against a v6 sucker: the terminal token being claimed, the merkle leaf, and its
139
+ * inclusion proof. The proof must contain exactly 32 bytes32 entries.
140
+ */
141
+ export type JBClaim = {
142
+ token: Address;
143
+ leaf: JBLeaf;
144
+ proof: JBLeafProof;
145
+ };
146
+ /**
147
+ * A v6 sucker pair for a project: the local sucker and its remote counterpart.
148
+ * The registry stores remotes as bytes32; this type carries the unpacked EVM address.
149
+ */
150
+ export type JBSuckerPairV6 = {
151
+ local: Address;
152
+ remote: Address;
153
+ remoteChainId: bigint;
154
+ };
155
+ /**
156
+ * Builds a `prepare` transaction on a v6 sucker, locking project tokens into an outbox
157
+ * leaf destined for the remote chain.
158
+ *
159
+ * The beneficiary is an EVM address; it's left-padded to bytes32 internally (v6 suckers
160
+ * identify beneficiaries as bytes32 for cross-VM compatibility).
161
+ *
162
+ * @param args.chainId The chain the sucker lives on.
163
+ * @param args.sucker The sucker's address.
164
+ * @param args.projectTokenCount The number of project tokens to bridge, as a fixed point
165
+ * number with 18 decimals.
166
+ * @param args.beneficiary The address that will claim the bridged tokens on the remote chain.
167
+ * @param args.minTokensReclaimed The minimum number of terminal tokens to reclaim when the
168
+ * project tokens are cashed out. Defaults to 0.
169
+ * @param args.token The local terminal token being bridged alongside the project tokens.
170
+ * @param args.metadata Opaque bytes32 attribution payload hashed into the leaf. Defaults to
171
+ * zero.
172
+ */
173
+ export declare function buildBridgePrepareTx({ chainId, sucker, projectTokenCount, beneficiary, minTokensReclaimed, token, metadata, }: {
174
+ chainId: JBChainId;
175
+ sucker: Address;
176
+ projectTokenCount: bigint;
177
+ beneficiary: Address;
178
+ minTokensReclaimed?: bigint;
179
+ token: Address;
180
+ metadata?: Hex;
181
+ }): {
182
+ chainId: JBChainId;
183
+ address: Address;
184
+ abi: typeof jbSuckerV6Abi;
185
+ functionName: "prepare";
186
+ args: readonly [bigint, Hex, bigint, Address, Hex];
187
+ };
188
+ /**
189
+ * Builds a `claim` transaction on a v6 sucker, redeeming an inbox leaf that was bridged
190
+ * from the remote chain.
191
+ *
192
+ * @param args.chainId The chain the sucker lives on.
193
+ * @param args.sucker The sucker's address.
194
+ * @param args.claim The claim: terminal token, leaf (with bytes32 beneficiary), and a
195
+ * 32-entry bytes32 inclusion proof.
196
+ */
197
+ export declare function buildBridgeClaimTx({ chainId, sucker, claim, }: {
198
+ chainId: JBChainId;
199
+ sucker: Address;
200
+ claim: JBClaim;
201
+ }): {
202
+ chainId: JBChainId;
203
+ address: Address;
204
+ abi: typeof jbSuckerV6Abi;
205
+ functionName: "claim";
206
+ args: readonly [JBClaim];
207
+ };
208
+ /**
209
+ * Builds a `toRemote` transaction on a v6 sucker, sending the outbox tree for a token to
210
+ * the remote chain.
211
+ *
212
+ * Payable: bridging over CCIP requires a fee to be sent along as `value`. Native-bridge
213
+ * suckers (OP/Base/Arbitrum) take no fee.
214
+ *
215
+ * @param args.chainId The chain the sucker lives on.
216
+ * @param args.sucker The sucker's address.
217
+ * @param args.token The local terminal token whose outbox tree should be bridged.
218
+ * @param args.value The bridge fee to send along. Defaults to 0.
219
+ */
220
+ export declare function buildToRemoteTx({ chainId, sucker, token, value, }: {
221
+ chainId: JBChainId;
222
+ sucker: Address;
223
+ token: Address;
224
+ value?: bigint;
225
+ }): {
226
+ chainId: JBChainId;
227
+ address: Address;
228
+ abi: typeof jbSuckerV6Abi;
229
+ functionName: "toRemote";
230
+ args: readonly [Address];
231
+ value: bigint;
232
+ };
233
+ /**
234
+ * Reads a project's v6 sucker pairs from the JBSuckerRegistry on the given chain.
235
+ *
236
+ * The v6 registry stores remote suckers as bytes32 (for cross-VM compatibility); for EVM
237
+ * peers the address is in the low 20 bytes, which this unpacks to a checksummed address.
238
+ *
239
+ * @param client A viem PublicClient connected to `chainId`.
240
+ * @param args.chainId The chain to read the registry on.
241
+ * @param args.projectId The project to look up pairs for.
242
+ */
243
+ export declare function getV6SuckerPairs(client: PublicClient, { chainId, projectId }: {
244
+ chainId: JBChainId;
245
+ projectId: bigint;
246
+ }): Promise<JBSuckerPairV6[]>;
247
+ //# sourceMappingURL=suckers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suckers.d.ts","sourceRoot":"","sources":["../../../src/v6/suckers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,GAAG,EACH,YAAY,EAKb,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDhB,CAAC;AAEX;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,GAAG,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC;CACf,CAAC;AAEF;;;GAGG;AAEH,MAAM,MAAM,WAAW,GAAG,SAAS;IACjC,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IACtC,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IACtC,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IACtC,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;IAAE,GAAG;CACvC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,MAAM,EACN,iBAAiB,EACjB,WAAW,EACX,kBAAuB,EACvB,KAAK,EACL,QAAmB,GACpB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GAAG;IACF,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,aAAa,CAAC;IAC1B,YAAY,EAAE,SAAS,CAAC;IACxB,IAAI,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;CACpD,CAeA;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,MAAM,EACN,KAAK,GACN,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB,GAAG;IACF,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,aAAa,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;CAC1B,CAQA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAU,GACX,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG;IACF,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,aAAa,CAAC;IAC1B,YAAY,EAAE,UAAU,CAAC;IACzB,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACf,CASA;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,cAAc,EAAE,CAAC,CAa3B"}