@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":"omnichain.d.ts","sourceRoot":"","sources":["../../../src/v6/omnichain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAA6B,MAAM,oBAAoB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGhD,KAAK,mBAAmB,GAAG,oBAAoB,CAC7C,OAAO,sBAAsB,EAC7B,SAAS,EACT,kBAAkB,CACnB,CAAC;AAEF,KAAK,oBAAoB,GAAG,OAAO,CACjC,mBAAmB,EACnB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CACzE,CAAC;AAEF,KAAK,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,sBAAsB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,0BAA0B,CAAC;CAC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,0BAA0B,CAAC;CAC9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBA"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildOmnichainLaunchProjectTx = buildOmnichainLaunchProjectTx;
4
+ exports.buildOmnichainQueueRulesetsTx = buildOmnichainQueueRulesetsTx;
5
+ const juicebox_js_1 = require("../generated/juicebox.js");
6
+ const deploy_js_1 = require("../utils/deploy.js");
7
+ const types_js_1 = require("./types.js");
8
+ /**
9
+ * Build a `JBOmnichainDeployer.launchProjectFor` transaction request creating
10
+ * a new project wired for cross-chain operation (suckers + omnichain ruleset
11
+ * queueing). Send ONE such transaction per chain in `chainIds`.
12
+ *
13
+ * CROSS-CHAIN DETERMINISM RULES — sucker pairing only works if every chain's
14
+ * deployment derives the SAME deterministic addresses:
15
+ *
16
+ * - Use ONE shared `salt` for every chain's transaction (and the same
17
+ * sending address — the salt is scoped to the sender).
18
+ * - Ruleset configurations must be BYTE-IDENTICAL across chains: pick ONE
19
+ * shared `mustStartAtOrAfter` timestamp up front (absolute timestamps are
20
+ * hashed into the deterministic addresses — per-chain "now" values break
21
+ * sucker pairing).
22
+ * - When deploying a 721 hook, `deploy721Config` (including its salt) must
23
+ * also be identical across chains.
24
+ *
25
+ * The transaction is payable and must send EXACTLY the current project
26
+ * creation fee — read it per chain with `getProjectCreationFee` (never reuse
27
+ * a fee across chains).
28
+ *
29
+ * @param args.chainId The chain this transaction is for.
30
+ * @param args.chainIds ALL chains the project deploys to (including
31
+ * `chainId`); sucker deployer configs are built for every other chain.
32
+ * @param args.assets The assets to bridge between chains. Defaults to the
33
+ * native token only.
34
+ * @param args.salt The shared salt (use the same value on every chain).
35
+ * @param args.deploy721Config Optional tiered 721 hook to deploy with the
36
+ * project (uses the 7-arg overload when given).
37
+ * @param args.creationFee The exact fee from `JBProjects.creationFee()` on
38
+ * this chain.
39
+ */
40
+ function buildOmnichainLaunchProjectTx(args) {
41
+ // parseSuckerDeployerConfig's return type is a v5/v6 union that TS cannot
42
+ // narrow on the `version` option; passing `version: 6` guarantees the v6
43
+ // shape at runtime.
44
+ const suckerDeploymentConfiguration = (0, deploy_js_1.parseSuckerDeployerConfig)(args.chainId, args.chainIds, args.assets ?? [deploy_js_1.MappableAsset.NATIVE], { salt: args.salt, version: 6 });
45
+ const address = (0, types_js_1.v6Address)("JBOmnichainDeployer", args.chainId);
46
+ const memo = args.memo ?? "";
47
+ if (args.deploy721Config) {
48
+ return {
49
+ chainId: args.chainId,
50
+ address,
51
+ abi: juicebox_js_1.jbOmnichainDeployerAbi,
52
+ functionName: "launchProjectFor",
53
+ args: [
54
+ args.owner,
55
+ args.projectUri,
56
+ args.deploy721Config,
57
+ args.rulesetConfigurations,
58
+ args.terminalConfigurations,
59
+ memo,
60
+ suckerDeploymentConfiguration,
61
+ ],
62
+ value: args.creationFee,
63
+ };
64
+ }
65
+ return {
66
+ chainId: args.chainId,
67
+ address,
68
+ abi: juicebox_js_1.jbOmnichainDeployerAbi,
69
+ functionName: "launchProjectFor",
70
+ args: [
71
+ args.owner,
72
+ args.projectUri,
73
+ args.rulesetConfigurations,
74
+ args.terminalConfigurations,
75
+ memo,
76
+ suckerDeploymentConfiguration,
77
+ ],
78
+ value: args.creationFee,
79
+ };
80
+ }
81
+ /**
82
+ * Build a `JBOmnichainDeployer.queueRulesetsOf` transaction request queuing
83
+ * rulesets for an omnichain project. Send ONE such transaction per chain the
84
+ * project lives on, with BYTE-IDENTICAL ruleset configurations (including a
85
+ * single shared `mustStartAtOrAfter` — per-chain "now" timestamps make the
86
+ * chains' rulesets diverge).
87
+ *
88
+ * The caller must have the `QUEUE_RULESETS` permission for the project (the
89
+ * omnichain deployer holds it when the project was launched through it).
90
+ *
91
+ * @param args.deploy721Config Optionally deploy a NEW tiered 721 hook (e.g.
92
+ * as the queued ruleset's data hook) alongside the queue — uses the 4-arg
93
+ * overload when given; keep it identical across chains.
94
+ */
95
+ function buildOmnichainQueueRulesetsTx(args) {
96
+ const address = (0, types_js_1.v6Address)("JBOmnichainDeployer", args.chainId);
97
+ const memo = args.memo ?? "";
98
+ if (args.deploy721Config) {
99
+ return {
100
+ chainId: args.chainId,
101
+ address,
102
+ abi: juicebox_js_1.jbOmnichainDeployerAbi,
103
+ functionName: "queueRulesetsOf",
104
+ args: [
105
+ args.projectId,
106
+ args.deploy721Config,
107
+ args.rulesetConfigurations,
108
+ memo,
109
+ ],
110
+ };
111
+ }
112
+ return {
113
+ chainId: args.chainId,
114
+ address,
115
+ abi: juicebox_js_1.jbOmnichainDeployerAbi,
116
+ functionName: "queueRulesetsOf",
117
+ args: [args.projectId, args.rulesetConfigurations, memo],
118
+ };
119
+ }
120
+ //# sourceMappingURL=omnichain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omnichain.js","sourceRoot":"","sources":["../../../src/v6/omnichain.ts"],"names":[],"mappings":";;AAmEA,sEA2DC;AAgBD,sEA+BC;AA5KD,0DAAkE;AAElE,kDAA8E;AAG9E,yCAAuC;AA6BvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAgB,6BAA6B,CAAC,IAY7C;IACC,0EAA0E;IAC1E,yEAAyE;IACzE,oBAAoB;IACpB,MAAM,6BAA6B,GAAG,IAAA,qCAAyB,EAC7D,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,IAAI,CAAC,yBAAa,CAAC,MAAM,CAAC,EACrC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CACO,CAAC;IAEzC,MAAM,OAAO,GAAG,IAAA,oBAAS,EAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO;YACP,GAAG,EAAE,oCAAsB;YAC3B,YAAY,EAAE,kBAA2B;YACzC,IAAI,EAAE;gBACJ,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,qBAAqB;gBAC1B,IAAI,CAAC,sBAAsB;gBAC3B,IAAI;gBACJ,6BAA6B;aACrB;YACV,KAAK,EAAE,IAAI,CAAC,WAAW;SACxB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO;QACP,GAAG,EAAE,oCAAsB;QAC3B,YAAY,EAAE,kBAA2B;QACzC,IAAI,EAAE;YACJ,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,qBAAqB;YAC1B,IAAI,CAAC,sBAAsB;YAC3B,IAAI;YACJ,6BAA6B;SACrB;QACV,KAAK,EAAE,IAAI,CAAC,WAAW;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,6BAA6B,CAAC,IAM7C;IACC,MAAM,OAAO,GAAG,IAAA,oBAAS,EAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO;YACP,GAAG,EAAE,oCAAsB;YAC3B,YAAY,EAAE,iBAA0B;YACxC,IAAI,EAAE;gBACJ,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,qBAAqB;gBAC1B,IAAI;aACI;SACX,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO;QACP,GAAG,EAAE,oCAAsB;QAC3B,YAAY,EAAE,iBAA0B;QACxC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAU;KAClE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=omnichain.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omnichain.test.d.ts","sourceRoot":"","sources":["../../../src/v6/omnichain.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const viem_1 = require("viem");
4
+ const chains_1 = require("viem/chains");
5
+ const vitest_1 = require("vitest");
6
+ const juicebox_js_1 = require("../generated/juicebox.js");
7
+ const launch_js_1 = require("./launch.js");
8
+ const omnichain_js_1 = require("./omnichain.js");
9
+ const types_js_1 = require("./types.js");
10
+ const OWNER = "0x000000000000000000000000000000000000dEaD";
11
+ const SALT = "0xabababababababababababababababababababababababababababababababab";
12
+ const DEPLOY_721_CONFIG = {
13
+ deployTiersHookConfig: {
14
+ name: "Test Collection",
15
+ symbol: "TEST",
16
+ baseUri: "ipfs://",
17
+ tokenUriResolver: viem_1.zeroAddress,
18
+ contractUri: "",
19
+ tiersConfig: {
20
+ tiers: [
21
+ {
22
+ price: (0, viem_1.parseEther)("0.01"),
23
+ initialSupply: 999_999_999, // "unlimited" sentinel (NOT uint32 max)
24
+ votingUnits: 0,
25
+ reserveFrequency: 0,
26
+ reserveBeneficiary: viem_1.zeroAddress,
27
+ encodedIpfsUri: viem_1.zeroHash,
28
+ category: 1,
29
+ discountPercent: 0,
30
+ flags: {
31
+ allowOwnerMint: false,
32
+ useReserveBeneficiaryAsDefault: false,
33
+ transfersPausable: false,
34
+ useVotingUnits: false,
35
+ cantBeRemoved: false,
36
+ cantIncreaseDiscountPercent: false,
37
+ cantBuyWithCredits: false,
38
+ },
39
+ splitPercent: 0,
40
+ splits: [],
41
+ },
42
+ ],
43
+ currency: 1,
44
+ decimals: 18,
45
+ },
46
+ flags: {
47
+ noNewTiersWithReserves: false,
48
+ noNewTiersWithVotes: false,
49
+ noNewTiersWithOwnerMinting: false,
50
+ preventOverspending: false,
51
+ issueTokensForSplits: false,
52
+ },
53
+ },
54
+ useDataHookForCashOut: true,
55
+ salt: SALT,
56
+ };
57
+ function launchArgs() {
58
+ return {
59
+ chainId: chains_1.sepolia.id,
60
+ chainIds: [chains_1.sepolia.id, chains_1.optimismSepolia.id, chains_1.baseSepolia.id],
61
+ owner: OWNER,
62
+ projectUri: "ipfs://bafy",
63
+ rulesetConfigurations: [(0, launch_js_1.buildRulesetConfiguration)()],
64
+ terminalConfigurations: (0, launch_js_1.buildTerminalConfigurations)({
65
+ chainId: chains_1.sepolia.id,
66
+ }),
67
+ creationFee: (0, viem_1.parseEther)("0.01"),
68
+ salt: SALT,
69
+ };
70
+ }
71
+ (0, vitest_1.describe)("buildOmnichainLaunchProjectTx", () => {
72
+ (0, vitest_1.test)("encodes the 6-arg overload with sucker configs for every other chain", () => {
73
+ const request = (0, omnichain_js_1.buildOmnichainLaunchProjectTx)(launchArgs());
74
+ (0, vitest_1.expect)(request.address).toBe((0, types_js_1.v6Address)("JBOmnichainDeployer", chains_1.sepolia.id));
75
+ (0, vitest_1.expect)(request.value).toBe((0, viem_1.parseEther)("0.01"));
76
+ (0, vitest_1.expect)(request.args).toHaveLength(6);
77
+ // The shared salt must flow into the sucker deployment configuration and
78
+ // a deployer config must exist for each REMOTE chain (not the local one).
79
+ const suckerConfiguration = request.args[5];
80
+ if (typeof suckerConfiguration === "string") {
81
+ throw new Error("expected a sucker deployment configuration");
82
+ }
83
+ (0, vitest_1.expect)(suckerConfiguration.salt).toBe(SALT);
84
+ (0, vitest_1.expect)(suckerConfiguration.deployerConfigurations).toHaveLength(2);
85
+ for (const deployerConfiguration of suckerConfiguration.deployerConfigurations) {
86
+ (0, vitest_1.expect)(deployerConfiguration.peer).toBe(viem_1.zeroHash);
87
+ (0, vitest_1.expect)(deployerConfiguration.mappings).toHaveLength(1);
88
+ }
89
+ const data = (0, viem_1.encodeFunctionData)(request);
90
+ const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.jbOmnichainDeployerAbi, data });
91
+ (0, vitest_1.expect)(decoded.functionName).toBe("launchProjectFor");
92
+ });
93
+ (0, vitest_1.test)("encodes the 7-arg overload when a 721 config is given", () => {
94
+ const request = (0, omnichain_js_1.buildOmnichainLaunchProjectTx)({
95
+ ...launchArgs(),
96
+ deploy721Config: DEPLOY_721_CONFIG,
97
+ });
98
+ (0, vitest_1.expect)(request.args).toHaveLength(7);
99
+ (0, vitest_1.expect)(request.args[2]).toBe(DEPLOY_721_CONFIG);
100
+ (0, vitest_1.expect)(request.value).toBe((0, viem_1.parseEther)("0.01"));
101
+ const data = (0, viem_1.encodeFunctionData)(request);
102
+ (0, vitest_1.expect)(data.length).toBeGreaterThan(10);
103
+ });
104
+ (0, vitest_1.test)("a single-chain launch produces no sucker deployer configs", () => {
105
+ const request = (0, omnichain_js_1.buildOmnichainLaunchProjectTx)({
106
+ ...launchArgs(),
107
+ chainIds: [chains_1.sepolia.id],
108
+ });
109
+ const suckerConfiguration = request.args[5];
110
+ if (typeof suckerConfiguration === "string") {
111
+ throw new Error("expected a sucker deployment configuration");
112
+ }
113
+ (0, vitest_1.expect)(suckerConfiguration.deployerConfigurations).toEqual([]);
114
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(request)).not.toThrow();
115
+ });
116
+ });
117
+ (0, vitest_1.describe)("buildOmnichainQueueRulesetsTx", () => {
118
+ (0, vitest_1.test)("encodes the 3-arg overload", () => {
119
+ const request = (0, omnichain_js_1.buildOmnichainQueueRulesetsTx)({
120
+ chainId: chains_1.sepolia.id,
121
+ projectId: 9n,
122
+ rulesetConfigurations: [(0, launch_js_1.buildRulesetConfiguration)()],
123
+ memo: "queue",
124
+ });
125
+ (0, vitest_1.expect)(request.address).toBe((0, types_js_1.v6Address)("JBOmnichainDeployer", chains_1.sepolia.id));
126
+ (0, vitest_1.expect)(request.args).toHaveLength(3);
127
+ const data = (0, viem_1.encodeFunctionData)(request);
128
+ const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.jbOmnichainDeployerAbi, data });
129
+ (0, vitest_1.expect)(decoded.functionName).toBe("queueRulesetsOf");
130
+ (0, vitest_1.expect)(decoded.args[0]).toBe(9n);
131
+ });
132
+ (0, vitest_1.test)("encodes the 4-arg overload when deploying a 721 hook", () => {
133
+ const request = (0, omnichain_js_1.buildOmnichainQueueRulesetsTx)({
134
+ chainId: chains_1.sepolia.id,
135
+ projectId: 9n,
136
+ rulesetConfigurations: [(0, launch_js_1.buildRulesetConfiguration)()],
137
+ deploy721Config: DEPLOY_721_CONFIG,
138
+ });
139
+ (0, vitest_1.expect)(request.args).toHaveLength(4);
140
+ (0, vitest_1.expect)(request.args[1]).toBe(DEPLOY_721_CONFIG);
141
+ (0, vitest_1.expect)(request.args[3]).toBe(""); // default memo
142
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(request)).not.toThrow();
143
+ });
144
+ });
145
+ //# sourceMappingURL=omnichain.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"omnichain.test.js","sourceRoot":"","sources":["../../../src/v6/omnichain.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { Address, Hex, PublicClient } from "viem";
2
+ import { jbMultiTerminalAbi } from "../generated/juicebox.js";
3
+ import { JBChainId } from "../types.js";
4
+ /**
5
+ * A prepared `pay` transaction request, accepted as-is by viem's
6
+ * `walletClient.writeContract` and wagmi's `writeContract`.
7
+ */
8
+ export interface V6PayTxRequest {
9
+ chainId: JBChainId;
10
+ address: Address;
11
+ abi: typeof jbMultiTerminalAbi;
12
+ functionName: "pay";
13
+ args: readonly [bigint, Address, bigint, Address, bigint, string, Hex];
14
+ value: bigint;
15
+ }
16
+ /**
17
+ * Build a `pay(projectId, token, amount, beneficiary, minReturnedTokens, memo,
18
+ * metadata)` transaction request for a v6 terminal.
19
+ *
20
+ * When `token` is the native token, `value` is set to `amount` (the terminal reads the
21
+ * paid amount from `msg.value`); for ERC-20 payments `value` is 0 and the terminal must
22
+ * be approved to pull `amount` beforehand.
23
+ *
24
+ * @param args.chainId The chain to pay on.
25
+ * @param args.terminal The terminal to pay (resolve with `resolvePaymentTerminal`).
26
+ * @param args.projectId The project's id.
27
+ * @param args.token The token being paid.
28
+ * @param args.amount The amount being paid, as a fixed point number with the token's
29
+ * decimals.
30
+ * @param args.beneficiary The address that receives the minted project tokens.
31
+ * @param args.minReturnedTokens The minimum project token count the beneficiary must
32
+ * receive, else the transaction reverts. Defaults to 0.
33
+ * @param args.memo A memo included in the Pay event. Defaults to "".
34
+ * @param args.metadata Hook metadata (e.g. from {@link build721PayMetadata}). Defaults
35
+ * to "0x".
36
+ * @returns The transaction request.
37
+ */
38
+ export declare function buildPayTx({ chainId, terminal, projectId, token, amount, beneficiary, minReturnedTokens, memo, metadata, }: {
39
+ chainId: JBChainId;
40
+ terminal: Address;
41
+ projectId: bigint;
42
+ token: Address;
43
+ amount: bigint;
44
+ beneficiary: Address;
45
+ minReturnedTokens?: bigint;
46
+ memo?: string;
47
+ metadata?: Hex;
48
+ }): V6PayTxRequest;
49
+ /**
50
+ * The result of previewing a payment.
51
+ */
52
+ export interface PayPreview {
53
+ /**
54
+ * The project token count the beneficiary would receive.
55
+ */
56
+ beneficiaryTokenCount: bigint;
57
+ /**
58
+ * The project token count that would be reserved for the project's reserved splits.
59
+ */
60
+ reservedTokenCount: bigint;
61
+ }
62
+ /**
63
+ * Preview the project tokens minted by a payment, via the terminal's
64
+ * `previewPayFor(projectId, token, amount, beneficiary, metadata)`.
65
+ *
66
+ * The terminal's `previewPayFor` is used (rather than
67
+ * `JBTerminalStore.previewPayFrom`) because it takes exactly the data a `pay` caller
68
+ * already has — the store variant additionally requires a full `JBTokenAmount` tuple
69
+ * (token, decimals, currency, value), forcing an extra accounting-context lookup.
70
+ *
71
+ * @param client A viem public client on the given chain.
72
+ * @param args.chainId The chain to preview on.
73
+ * @param args.terminal The terminal that would be paid.
74
+ * @param args.projectId The project's id.
75
+ * @param args.token The token being paid.
76
+ * @param args.amount The amount being paid, as a fixed point number with the token's
77
+ * decimals.
78
+ * @param args.beneficiary The address that would receive the minted project tokens.
79
+ * @param args.metadata Hook metadata. Defaults to "0x".
80
+ * @returns The previewed token counts.
81
+ */
82
+ export declare function previewPay(client: PublicClient, { terminal, projectId, token, amount, beneficiary, metadata, }: {
83
+ chainId: JBChainId;
84
+ terminal: Address;
85
+ projectId: bigint;
86
+ token: Address;
87
+ amount: bigint;
88
+ beneficiary: Address;
89
+ metadata?: Hex;
90
+ }): Promise<PayPreview>;
91
+ /**
92
+ * Build pay metadata instructing a project's JB721 tiers hook to mint specific tiers.
93
+ *
94
+ * The tier payload is `abi.encode(bool allowOverspending, uint16[] tierIdsToMint)`,
95
+ * keyed by the hook's metadata id (`bytes4(bytes20(hookAddress) ^
96
+ * bytes20(keccak256("pay")))`) and packed into the JBMetadataResolver
97
+ * word-offset-table format.
98
+ *
99
+ * @param args.hookAddress The project's JB721 tiers hook (the ruleset's data hook).
100
+ * @param args.tierIdsToMint The tier ids to mint, one entry per NFT.
101
+ * @param args.allowOverspending Whether payment beyond the tiers' total price is
102
+ * allowed (excess mints no NFT). Defaults to true.
103
+ * @returns The metadata to pass as `pay`'s `metadata` argument.
104
+ */
105
+ export declare function build721PayMetadata({ hookAddress, tierIdsToMint, allowOverspending, }: {
106
+ hookAddress: Address;
107
+ tierIdsToMint: bigint[];
108
+ allowOverspending?: boolean;
109
+ }): Hex;
110
+ //# sourceMappingURL=pay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pay.d.ts","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,GAAG,EACH,YAAY,EAKb,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;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,aAAa,EACb,iBAA8C,GAC/C,EAAE;IACD,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,GAAG,GAAG,CAUN"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildPayTx = buildPayTx;
4
+ exports.previewPay = previewPay;
5
+ exports.build721PayMetadata = build721PayMetadata;
6
+ const viem_1 = require("viem");
7
+ const constants_js_1 = require("../constants.js");
8
+ const juicebox_js_1 = require("../generated/juicebox.js");
9
+ const hook_js_1 = require("../utils/hook.js");
10
+ /**
11
+ * Build a `pay(projectId, token, amount, beneficiary, minReturnedTokens, memo,
12
+ * metadata)` transaction request for a v6 terminal.
13
+ *
14
+ * When `token` is the native token, `value` is set to `amount` (the terminal reads the
15
+ * paid amount from `msg.value`); for ERC-20 payments `value` is 0 and the terminal must
16
+ * be approved to pull `amount` beforehand.
17
+ *
18
+ * @param args.chainId The chain to pay on.
19
+ * @param args.terminal The terminal to pay (resolve with `resolvePaymentTerminal`).
20
+ * @param args.projectId The project's id.
21
+ * @param args.token The token being paid.
22
+ * @param args.amount The amount being paid, as a fixed point number with the token's
23
+ * decimals.
24
+ * @param args.beneficiary The address that receives the minted project tokens.
25
+ * @param args.minReturnedTokens The minimum project token count the beneficiary must
26
+ * receive, else the transaction reverts. Defaults to 0.
27
+ * @param args.memo A memo included in the Pay event. Defaults to "".
28
+ * @param args.metadata Hook metadata (e.g. from {@link build721PayMetadata}). Defaults
29
+ * to "0x".
30
+ * @returns The transaction request.
31
+ */
32
+ function buildPayTx({ chainId, terminal, projectId, token, amount, beneficiary, minReturnedTokens = 0n, memo = "", metadata = "0x", }) {
33
+ const isNative = token.toLowerCase() === constants_js_1.NATIVE_TOKEN.toLowerCase();
34
+ return {
35
+ chainId,
36
+ address: terminal,
37
+ abi: juicebox_js_1.jbMultiTerminalAbi,
38
+ functionName: "pay",
39
+ args: [
40
+ projectId,
41
+ token,
42
+ amount,
43
+ beneficiary,
44
+ minReturnedTokens,
45
+ memo,
46
+ metadata,
47
+ ],
48
+ value: isNative ? amount : 0n,
49
+ };
50
+ }
51
+ /**
52
+ * Preview the project tokens minted by a payment, via the terminal's
53
+ * `previewPayFor(projectId, token, amount, beneficiary, metadata)`.
54
+ *
55
+ * The terminal's `previewPayFor` is used (rather than
56
+ * `JBTerminalStore.previewPayFrom`) because it takes exactly the data a `pay` caller
57
+ * already has — the store variant additionally requires a full `JBTokenAmount` tuple
58
+ * (token, decimals, currency, value), forcing an extra accounting-context lookup.
59
+ *
60
+ * @param client A viem public client on the given chain.
61
+ * @param args.chainId The chain to preview on.
62
+ * @param args.terminal The terminal that would be paid.
63
+ * @param args.projectId The project's id.
64
+ * @param args.token The token being paid.
65
+ * @param args.amount The amount being paid, as a fixed point number with the token's
66
+ * decimals.
67
+ * @param args.beneficiary The address that would receive the minted project tokens.
68
+ * @param args.metadata Hook metadata. Defaults to "0x".
69
+ * @returns The previewed token counts.
70
+ */
71
+ async function previewPay(client, { terminal, projectId, token, amount, beneficiary, metadata = "0x", }) {
72
+ const [, beneficiaryTokenCount, reservedTokenCount] = await client.readContract({
73
+ address: terminal,
74
+ abi: juicebox_js_1.jbMultiTerminalAbi,
75
+ functionName: "previewPayFor",
76
+ args: [projectId, token, amount, beneficiary, metadata],
77
+ });
78
+ return { beneficiaryTokenCount, reservedTokenCount };
79
+ }
80
+ /**
81
+ * The metadata id a JB721 hook looks up in pay metadata:
82
+ * `bytes4(bytes20(target) ^ bytes20(keccak256("pay")))`, where the target is the hook's
83
+ * own address (`JB721Hook.METADATA_ID_TARGET` is `address(this)`).
84
+ *
85
+ * @link https://github.com/Bananapus/nana-core-v6/blob/main/src/libraries/JBMetadataResolver.sol (`getId`)
86
+ */
87
+ function pay721MetadataId(hookAddress) {
88
+ const targetBytes = (0, viem_1.toBytes)(hookAddress).slice(0, 20);
89
+ const purposeBytes = (0, viem_1.toBytes)((0, viem_1.keccak256)((0, viem_1.toBytes)("pay"))).slice(0, 20);
90
+ const xorResult = targetBytes.map((byte, i) => byte ^ purposeBytes[i]);
91
+ return (0, viem_1.bytesToHex)(xorResult.slice(0, 4));
92
+ }
93
+ /**
94
+ * Build pay metadata instructing a project's JB721 tiers hook to mint specific tiers.
95
+ *
96
+ * The tier payload is `abi.encode(bool allowOverspending, uint16[] tierIdsToMint)`,
97
+ * keyed by the hook's metadata id (`bytes4(bytes20(hookAddress) ^
98
+ * bytes20(keccak256("pay")))`) and packed into the JBMetadataResolver
99
+ * word-offset-table format.
100
+ *
101
+ * @param args.hookAddress The project's JB721 tiers hook (the ruleset's data hook).
102
+ * @param args.tierIdsToMint The tier ids to mint, one entry per NFT.
103
+ * @param args.allowOverspending Whether payment beyond the tiers' total price is
104
+ * allowed (excess mints no NFT). Defaults to true.
105
+ * @returns The metadata to pass as `pay`'s `metadata` argument.
106
+ */
107
+ function build721PayMetadata({ hookAddress, tierIdsToMint, allowOverspending = constants_js_1.DEFAULT_ALLOW_OVERSPENDING, }) {
108
+ const tierPayload = (0, viem_1.encodeAbiParameters)([{ type: "bool" }, { type: "uint16[]" }], [allowOverspending, tierIdsToMint.map(Number)]);
109
+ return (0, hook_js_1.createHookMetadata)([pay721MetadataId(hookAddress)], [tierPayload]);
110
+ }
111
+ //# sourceMappingURL=pay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../src/v6/pay.ts"],"names":[],"mappings":";;AAiDA,gCAuCC;AAoCD,gCA4BC;AAgCD,kDAkBC;AA1MD,+BAQc;AACd,kDAA2E;AAC3E,0DAA8D;AAE9D,8CAAsD;AAetD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,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,2BAAY,CAAC,WAAW,EAAE,CAAC;IAEpE,OAAO;QACL,OAAO;QACP,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,gCAAkB;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;AACI,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,gCAAkB;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;;;;;;GAMG;AACH,SAAS,gBAAgB,CAAC,WAAoB;IAC5C,MAAM,WAAW,GAAG,IAAA,cAAO,EAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,IAAA,cAAO,EAAC,IAAA,gBAAS,EAAC,IAAA,cAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAErE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAEvE,OAAO,IAAA,iBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,mBAAmB,CAAC,EAClC,WAAW,EACX,aAAa,EACb,iBAAiB,GAAG,yCAA0B,GAK/C;IACC,MAAM,WAAW,GAAG,IAAA,0BAAmB,EACrC,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,IAAA,4BAAkB,EACvB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAC/B,CAAC,WAAW,CAAC,CACP,CAAC;AACX,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pay.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pay.test.d.ts","sourceRoot":"","sources":["../../../src/v6/pay.test.ts"],"names":[],"mappings":""}