@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
@@ -1,5 +1,9 @@
1
- import { JB_CHAIN_SLUGS } from "../constants.js";
2
- export function jbUrn(urn) {
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jbUrn = jbUrn;
4
+ exports.toJbUrn = toJbUrn;
5
+ const constants_js_1 = require("../constants.js");
6
+ function jbUrn(urn) {
3
7
  try {
4
8
  const urlParts = urn.split(":").map((part) => part.trim());
5
9
  if (urlParts.length < 2 || urlParts.length > 3)
@@ -21,7 +25,7 @@ export function jbUrn(urn) {
21
25
  chainSlug = urlParts[1];
22
26
  projectId = urlParts[2];
23
27
  }
24
- const chain = JB_CHAIN_SLUGS[chainSlug];
28
+ const chain = constants_js_1.JB_CHAIN_SLUGS[chainSlug];
25
29
  if (!chain || !projectId || !isValidVersion(version))
26
30
  return null;
27
31
  return {
@@ -34,8 +38,8 @@ export function jbUrn(urn) {
34
38
  return null;
35
39
  }
36
40
  }
37
- export function toJbUrn(chainId, projectId) {
38
- const chain = Object.values(JB_CHAIN_SLUGS).find((chain) => chain.chain.id === chainId);
41
+ function toJbUrn(chainId, projectId) {
42
+ const chain = Object.values(constants_js_1.JB_CHAIN_SLUGS).find((chain) => chain.chain.id === chainId);
39
43
  if (!chain) {
40
44
  return null;
41
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/utils/urn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,UAAU,KAAK,CAAC,GAAW;IAK/B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAE5D,IAAI,SAA6B,CAAC;QAClC,IAAI,OAA2B,CAAC;QAChC,IAAI,SAA6B,CAAC;QAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,yBAAyB;YACzB,OAAO,GAAG,CAAC,CAAC;YACZ,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9C,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAElE,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAe;YACpC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;YAC5B,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAkB,EAAE,SAAiB;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CACtC,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/utils/urn.ts"],"names":[],"mappings":";;AAGA,sBAqCC;AAED,0BASC;AAnDD,kDAAiD;AAGjD,SAAgB,KAAK,CAAC,GAAW;IAK/B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAE5D,IAAI,SAA6B,CAAC;QAClC,IAAI,OAA2B,CAAC;QAChC,IAAI,SAA6B,CAAC;QAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,yBAAyB;YACzB,OAAO,GAAG,CAAC,CAAC;YACZ,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC9C,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;YAC/C,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACxB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,KAAK,GAAG,6BAAc,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAElE,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAe;YACpC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;YAC5B,OAAO;SACR,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,OAAO,CAAC,OAAkB,EAAE,SAAiB;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,6BAAc,CAAC,CAAC,IAAI,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CACtC,CAAC;IACF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;AACzD,CAAC"}
@@ -1,111 +1,113 @@
1
- import { arbitrum, base, mainnet, optimism, sepolia } from "viem/chains";
2
- import { describe, expect, it } from "vitest";
3
- import { jbUrn } from "./urn.js";
4
- describe("jbUrn", () => {
5
- describe("valid URNs", () => {
6
- it("should parse /eth:3 as mainnet project id 3, version 4", () => {
7
- const result = jbUrn("eth:3");
8
- expect(result).toEqual({
9
- chainId: mainnet.id,
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chains_1 = require("viem/chains");
4
+ const vitest_1 = require("vitest");
5
+ const urn_js_1 = require("./urn.js");
6
+ (0, vitest_1.describe)("jbUrn", () => {
7
+ (0, vitest_1.describe)("valid URNs", () => {
8
+ (0, vitest_1.it)("should parse /eth:3 as mainnet project id 3, version 4", () => {
9
+ const result = (0, urn_js_1.jbUrn)("eth:3");
10
+ (0, vitest_1.expect)(result).toEqual({
11
+ chainId: chains_1.mainnet.id,
10
12
  projectId: 3n,
11
13
  version: 4,
12
14
  });
13
15
  });
14
- it("should parse /v5:eth:5 as mainnet project id 5, version 5", () => {
15
- const result = jbUrn("v5:eth:5");
16
- expect(result).toEqual({
17
- chainId: mainnet.id,
16
+ (0, vitest_1.it)("should parse /v5:eth:5 as mainnet project id 5, version 5", () => {
17
+ const result = (0, urn_js_1.jbUrn)("v5:eth:5");
18
+ (0, vitest_1.expect)(result).toEqual({
19
+ chainId: chains_1.mainnet.id,
18
20
  projectId: 5n,
19
21
  version: 5,
20
22
  });
21
23
  });
22
- it("should parse large project IDs correctly", () => {
23
- const result = jbUrn("eth:999999999999999999");
24
- expect(result).toEqual({
25
- chainId: mainnet.id,
24
+ (0, vitest_1.it)("should parse large project IDs correctly", () => {
25
+ const result = (0, urn_js_1.jbUrn)("eth:999999999999999999");
26
+ (0, vitest_1.expect)(result).toEqual({
27
+ chainId: chains_1.mainnet.id,
26
28
  projectId: 999999999999999999n,
27
29
  version: 4,
28
30
  });
29
31
  });
30
32
  });
31
- describe("supported chains", () => {
33
+ (0, vitest_1.describe)("supported chains", () => {
32
34
  const chainTests = [
33
- { slug: "eth", chainId: mainnet.id, name: "Ethereum mainnet" },
34
- { slug: "sep", chainId: sepolia.id, name: "Sepolia testnet" },
35
- { slug: "op", chainId: optimism.id, name: "Optimism" },
36
- { slug: "base", chainId: base.id, name: "Base" },
37
- { slug: "arb", chainId: arbitrum.id, name: "Arbitrum" },
35
+ { slug: "eth", chainId: chains_1.mainnet.id, name: "Ethereum mainnet" },
36
+ { slug: "sep", chainId: chains_1.sepolia.id, name: "Sepolia testnet" },
37
+ { slug: "op", chainId: chains_1.optimism.id, name: "Optimism" },
38
+ { slug: "base", chainId: chains_1.base.id, name: "Base" },
39
+ { slug: "arb", chainId: chains_1.arbitrum.id, name: "Arbitrum" },
38
40
  ];
39
41
  chainTests.forEach(({ slug, chainId, name }) => {
40
- it(`should parse ${name} (${slug}) correctly`, () => {
41
- const result = jbUrn(`${slug}:42`);
42
- expect(result).toEqual({ chainId, projectId: 42n, version: 4 });
42
+ (0, vitest_1.it)(`should parse ${name} (${slug}) correctly`, () => {
43
+ const result = (0, urn_js_1.jbUrn)(`${slug}:42`);
44
+ (0, vitest_1.expect)(result).toEqual({ chainId, projectId: 42n, version: 4 });
43
45
  });
44
46
  });
45
47
  });
46
- describe("version validation", () => {
47
- it("should accept versions 4, 5 and 6, default to 4", () => {
48
- expect(jbUrn("v4:eth:1")?.version).toBe(4);
49
- expect(jbUrn("v5:eth:1")?.version).toBe(5);
50
- expect(jbUrn("v6:eth:1")?.version).toBe(6);
51
- expect(jbUrn("eth:1")?.version).toBe(4); // default
48
+ (0, vitest_1.describe)("version validation", () => {
49
+ (0, vitest_1.it)("should accept versions 4, 5 and 6, default to 4", () => {
50
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v4:eth:1")?.version).toBe(4);
51
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v5:eth:1")?.version).toBe(5);
52
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v6:eth:1")?.version).toBe(6);
53
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth:1")?.version).toBe(4); // default
52
54
  });
53
- it("should reject invalid versions", () => {
54
- expect(jbUrn("v1:eth:3")).toBeNull();
55
- expect(jbUrn("v7:eth:3")).toBeNull();
56
- expect(jbUrn("v0:eth:3")).toBeNull();
55
+ (0, vitest_1.it)("should reject invalid versions", () => {
56
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v1:eth:3")).toBeNull();
57
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v7:eth:3")).toBeNull();
58
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v0:eth:3")).toBeNull();
57
59
  });
58
60
  });
59
- describe("invalid URNs", () => {
60
- it("should return null for invalid version format", () => {
61
- expect(jbUrn("version5:eth:3")).toBeNull();
62
- expect(jbUrn("5:eth:3")).toBeNull();
63
- expect(jbUrn("V5:eth:3")).toBeNull();
64
- expect(jbUrn("v5a:eth:3")).toBeNull();
61
+ (0, vitest_1.describe)("invalid URNs", () => {
62
+ (0, vitest_1.it)("should return null for invalid version format", () => {
63
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("version5:eth:3")).toBeNull();
64
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("5:eth:3")).toBeNull();
65
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("V5:eth:3")).toBeNull();
66
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v5a:eth:3")).toBeNull();
65
67
  });
66
- it("should return null for unknown chain names", () => {
67
- expect(jbUrn("bitcoin:3")).toBeNull();
68
- expect(jbUrn("ethereum:3")).toBeNull();
69
- expect(jbUrn("ETH:3")).toBeNull();
68
+ (0, vitest_1.it)("should return null for unknown chain names", () => {
69
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("bitcoin:3")).toBeNull();
70
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("ethereum:3")).toBeNull();
71
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("ETH:3")).toBeNull();
70
72
  });
71
- it("should return null for malformed URLs", () => {
72
- expect(jbUrn("")).toBeNull();
73
- expect(jbUrn("eth:")).toBeNull();
74
- expect(jbUrn(":3")).toBeNull();
75
- expect(jbUrn("v5:eth:3:extra")).toBeNull();
76
- expect(jbUrn("eth")).toBeNull();
73
+ (0, vitest_1.it)("should return null for malformed URLs", () => {
74
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("")).toBeNull();
75
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth:")).toBeNull();
76
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)(":3")).toBeNull();
77
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v5:eth:3:extra")).toBeNull();
78
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth")).toBeNull();
77
79
  });
78
- it("should handle invalid project IDs", () => {
79
- expect(jbUrn("eth:abc")).toBeNull();
80
- expect(jbUrn("eth:3.14")).toBeNull();
80
+ (0, vitest_1.it)("should handle invalid project IDs", () => {
81
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth:abc")).toBeNull();
82
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth:3.14")).toBeNull();
81
83
  // 0x123 = 291
82
- expect(jbUrn("eth:0x123")).toEqual({
83
- chainId: mainnet.id,
84
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth:0x123")).toEqual({
85
+ chainId: chains_1.mainnet.id,
84
86
  projectId: 291n,
85
87
  version: 4,
86
88
  });
87
89
  });
88
90
  });
89
- describe("edge cases", () => {
90
- it("should handle whitespace by trimming", () => {
91
- expect(jbUrn(" eth:3")).toEqual({
92
- chainId: mainnet.id,
91
+ (0, vitest_1.describe)("edge cases", () => {
92
+ (0, vitest_1.it)("should handle whitespace by trimming", () => {
93
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)(" eth:3")).toEqual({
94
+ chainId: chains_1.mainnet.id,
93
95
  projectId: 3n,
94
96
  version: 4,
95
97
  });
96
- expect(jbUrn("v5: eth : 3 ")).toEqual({
97
- chainId: mainnet.id,
98
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("v5: eth : 3 ")).toEqual({
99
+ chainId: chains_1.mainnet.id,
98
100
  projectId: 3n,
99
101
  version: 5,
100
102
  });
101
103
  });
102
- it("should handle numeric edge cases", () => {
103
- expect(jbUrn("eth:0003")?.projectId).toBe(3n);
104
- expect(jbUrn("eth:0")?.projectId).toBe(0n);
104
+ (0, vitest_1.it)("should handle numeric edge cases", () => {
105
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth:0003")?.projectId).toBe(3n);
106
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth:0")?.projectId).toBe(0n);
105
107
  });
106
- it("should reject invalid formats", () => {
107
- expect(jbUrn("eth-test:3")).toBeNull();
108
- expect(jbUrn("a".repeat(1000) + ":1")).toBeNull();
108
+ (0, vitest_1.it)("should reject invalid formats", () => {
109
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("eth-test:3")).toBeNull();
110
+ (0, vitest_1.expect)((0, urn_js_1.jbUrn)("a".repeat(1000) + ":1")).toBeNull();
109
111
  });
110
112
  });
111
113
  });
@@ -1 +1 @@
1
- {"version":3,"file":"urn.test.js","sourceRoot":"","sources":["../../../src/utils/urn.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"urn.test.js","sourceRoot":"","sources":["../../../src/utils/urn.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import { Address, Hex, PublicClient } from "viem";
2
+ import { jbMultiTerminalAbi } from "../generated/juicebox.js";
3
+ import { JBChainId } from "../types.js";
4
+ /**
5
+ * A prepared `cashOutTokensOf` transaction request, accepted as-is by viem's
6
+ * `walletClient.writeContract` and wagmi's `writeContract`.
7
+ */
8
+ export interface V6CashOutTxRequest {
9
+ chainId: JBChainId;
10
+ address: Address;
11
+ abi: typeof jbMultiTerminalAbi;
12
+ functionName: "cashOutTokensOf";
13
+ args: readonly [Address, bigint, bigint, Address, bigint, Address, Hex];
14
+ }
15
+ /**
16
+ * Build a `cashOutTokensOf(holder, projectId, cashOutCount, tokenToReclaim,
17
+ * minTokensReclaimed, beneficiary, metadata)` transaction request for a v6 terminal.
18
+ *
19
+ * @param args.chainId The chain to cash out on.
20
+ * @param args.terminal The terminal holding the project's `tokenToReclaim` balance.
21
+ * @param args.holder The address whose project tokens are being cashed out.
22
+ * @param args.projectId The project's id.
23
+ * @param args.cashOutCount The number of project tokens to cash out, as a fixed point
24
+ * number with 18 decimals.
25
+ * @param args.tokenToReclaim The terminal token to reclaim from the project's surplus.
26
+ * @param args.minTokensReclaimed The minimum `tokenToReclaim` amount that must be
27
+ * reclaimed, else the transaction reverts. Defaults to 0.
28
+ * @param args.beneficiary The address that receives the reclaimed tokens.
29
+ * @param args.metadata Hook metadata. Defaults to "0x".
30
+ * @returns The transaction request.
31
+ */
32
+ export declare function buildCashOutTx({ chainId, terminal, holder, projectId, cashOutCount, tokenToReclaim, minTokensReclaimed, beneficiary, metadata, }: {
33
+ chainId: JBChainId;
34
+ terminal: Address;
35
+ holder: Address;
36
+ projectId: bigint;
37
+ cashOutCount: bigint;
38
+ tokenToReclaim: Address;
39
+ minTokensReclaimed?: bigint;
40
+ beneficiary: Address;
41
+ metadata?: Hex;
42
+ }): V6CashOutTxRequest;
43
+ /**
44
+ * A cash out quote.
45
+ */
46
+ export interface CashOutQuote {
47
+ /**
48
+ * The reclaimable surplus for the cash out count, before the protocol fee.
49
+ */
50
+ reclaimAmount: bigint;
51
+ /**
52
+ * The reclaim amount net of the 2.5% protocol cash out fee.
53
+ *
54
+ * The fee only applies when the ruleset's cash out tax rate is non-zero — for
55
+ * zero-tax rulesets the full {@link CashOutQuote.reclaimAmount} is paid out.
56
+ */
57
+ reclaimAmountAfterFee: bigint;
58
+ }
59
+ /**
60
+ * Quote the surplus reclaimed by cashing out `cashOutCount` project tokens, via
61
+ * `JBTerminalStore.currentReclaimableSurplusOf(projectId, cashOutCount, [], [],
62
+ * decimals, currency)`. Passing empty terminal/token arrays uses all of the project's
63
+ * terminals and tokens.
64
+ *
65
+ * @param client A viem public client on the given chain.
66
+ * @param args.chainId The chain to quote on.
67
+ * @param args.projectId The project's id.
68
+ * @param args.cashOutCount The number of project tokens to cash out, as a fixed point
69
+ * number with 18 decimals.
70
+ * @param args.decimals The decimals to quote the reclaim amount in. Defaults to 18.
71
+ * @param args.currency The currency to quote the reclaim amount in (an
72
+ * accounting-context currency, `uint32(uint160(token))`). Defaults to the native
73
+ * token's currency (61166).
74
+ * @returns The raw reclaim amount and the amount net of the 2.5% protocol fee.
75
+ *
76
+ * NOTE: the defaults quote in NATIVE terms (decimals 18, token-keyed native
77
+ * currency). For a project whose accounting token is not the native token
78
+ * (e.g. USDC), pass that token's `decimals` and `tokenCurrencyId(token)` to
79
+ * quote in its own terms and avoid a price-feed conversion.
80
+ */
81
+ export declare function getCashOutQuote(client: PublicClient, { chainId, projectId, cashOutCount, decimals, currency, }: {
82
+ chainId: JBChainId;
83
+ projectId: bigint;
84
+ cashOutCount: bigint;
85
+ decimals?: bigint;
86
+ currency?: bigint;
87
+ }): Promise<CashOutQuote>;
88
+ //# sourceMappingURL=cashOut.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cashOut.d.ts","sourceRoot":"","sources":["../../../src/v6/cashOut.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EACL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKxC;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,kBAAkB,CAAC;IAC/B,YAAY,EAAE,iBAAiB,CAAC;IAChC,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;CACzE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,cAAc,EACd,kBAAuB,EACvB,WAAW,EACX,QAAe,GAChB,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,CAAC;CAChB,GAAG,kBAAkB,CAgBrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,EACE,OAAO,EACP,SAAS,EACT,YAAY,EACZ,QAAc,EACd,QAA2C,GAC5C,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,YAAY,CAAC,CAYvB"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildCashOutTx = buildCashOutTx;
4
+ exports.getCashOutQuote = getCashOutQuote;
5
+ const juicebox_js_1 = require("../generated/juicebox.js");
6
+ const fee_js_1 = require("../utils/fee.js");
7
+ const currency_js_1 = require("./currency.js");
8
+ const types_js_1 = require("./types.js");
9
+ /**
10
+ * Build a `cashOutTokensOf(holder, projectId, cashOutCount, tokenToReclaim,
11
+ * minTokensReclaimed, beneficiary, metadata)` transaction request for a v6 terminal.
12
+ *
13
+ * @param args.chainId The chain to cash out on.
14
+ * @param args.terminal The terminal holding the project's `tokenToReclaim` balance.
15
+ * @param args.holder The address whose project tokens are being cashed out.
16
+ * @param args.projectId The project's id.
17
+ * @param args.cashOutCount The number of project tokens to cash out, as a fixed point
18
+ * number with 18 decimals.
19
+ * @param args.tokenToReclaim The terminal token to reclaim from the project's surplus.
20
+ * @param args.minTokensReclaimed The minimum `tokenToReclaim` amount that must be
21
+ * reclaimed, else the transaction reverts. Defaults to 0.
22
+ * @param args.beneficiary The address that receives the reclaimed tokens.
23
+ * @param args.metadata Hook metadata. Defaults to "0x".
24
+ * @returns The transaction request.
25
+ */
26
+ function buildCashOutTx({ chainId, terminal, holder, projectId, cashOutCount, tokenToReclaim, minTokensReclaimed = 0n, beneficiary, metadata = "0x", }) {
27
+ return {
28
+ chainId,
29
+ address: terminal,
30
+ abi: juicebox_js_1.jbMultiTerminalAbi,
31
+ functionName: "cashOutTokensOf",
32
+ args: [
33
+ holder,
34
+ projectId,
35
+ cashOutCount,
36
+ tokenToReclaim,
37
+ minTokensReclaimed,
38
+ beneficiary,
39
+ metadata,
40
+ ],
41
+ };
42
+ }
43
+ /**
44
+ * Quote the surplus reclaimed by cashing out `cashOutCount` project tokens, via
45
+ * `JBTerminalStore.currentReclaimableSurplusOf(projectId, cashOutCount, [], [],
46
+ * decimals, currency)`. Passing empty terminal/token arrays uses all of the project's
47
+ * terminals and tokens.
48
+ *
49
+ * @param client A viem public client on the given chain.
50
+ * @param args.chainId The chain to quote on.
51
+ * @param args.projectId The project's id.
52
+ * @param args.cashOutCount The number of project tokens to cash out, as a fixed point
53
+ * number with 18 decimals.
54
+ * @param args.decimals The decimals to quote the reclaim amount in. Defaults to 18.
55
+ * @param args.currency The currency to quote the reclaim amount in (an
56
+ * accounting-context currency, `uint32(uint160(token))`). Defaults to the native
57
+ * token's currency (61166).
58
+ * @returns The raw reclaim amount and the amount net of the 2.5% protocol fee.
59
+ *
60
+ * NOTE: the defaults quote in NATIVE terms (decimals 18, token-keyed native
61
+ * currency). For a project whose accounting token is not the native token
62
+ * (e.g. USDC), pass that token's `decimals` and `tokenCurrencyId(token)` to
63
+ * quote in its own terms and avoid a price-feed conversion.
64
+ */
65
+ async function getCashOutQuote(client, { chainId, projectId, cashOutCount, decimals = 18n, currency = BigInt(currency_js_1.NATIVE_TOKEN_CURRENCY_ID), }) {
66
+ const reclaimAmount = await client.readContract({
67
+ address: (0, types_js_1.v6Address)("JBTerminalStore", chainId),
68
+ abi: juicebox_js_1.jbTerminalStoreAbi,
69
+ functionName: "currentReclaimableSurplusOf",
70
+ args: [projectId, cashOutCount, [], [], decimals, currency],
71
+ });
72
+ return {
73
+ reclaimAmount,
74
+ reclaimAmountAfterFee: (0, fee_js_1.applyJbDaoCashOutFee)(reclaimAmount),
75
+ };
76
+ }
77
+ //# sourceMappingURL=cashOut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cashOut.js","sourceRoot":"","sources":["../../../src/v6/cashOut.ts"],"names":[],"mappings":";;AAuCA,wCAoCC;AAyCD,0CA2BC;AA9ID,0DAGkC;AAElC,4CAAuD;AACvD,+CAAyD;AACzD,yCAAuC;AAcvC;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,YAAY,EACZ,cAAc,EACd,kBAAkB,GAAG,EAAE,EACvB,WAAW,EACX,QAAQ,GAAG,IAAI,GAWhB;IACC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,QAAQ;QACjB,GAAG,EAAE,gCAAkB;QACvB,YAAY,EAAE,iBAAiB;QAC/B,IAAI,EAAE;YACJ,MAAM;YACN,SAAS;YACT,YAAY;YACZ,cAAc;YACd,kBAAkB;YAClB,WAAW;YACX,QAAQ;SACT;KACF,CAAC;AACJ,CAAC;AAmBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACI,KAAK,UAAU,eAAe,CACnC,MAAoB,EACpB,EACE,OAAO,EACP,SAAS,EACT,YAAY,EACZ,QAAQ,GAAG,GAAG,EACd,QAAQ,GAAG,MAAM,CAAC,sCAAwB,CAAC,GAO5C;IAED,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QAC9C,OAAO,EAAE,IAAA,oBAAS,EAAC,iBAAiB,EAAE,OAAO,CAAC;QAC9C,GAAG,EAAE,gCAAkB;QACvB,YAAY,EAAE,6BAA6B;QAC3C,IAAI,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC;KAC5D,CAAC,CAAC;IAEH,OAAO;QACL,aAAa;QACb,qBAAqB,EAAE,IAAA,6BAAoB,EAAC,aAAa,CAAC;KAC3D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cashOut.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cashOut.test.d.ts","sourceRoot":"","sources":["../../../src/v6/cashOut.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const viem_1 = require("viem");
4
+ const vitest_1 = require("vitest");
5
+ const constants_js_1 = require("../constants.js");
6
+ const juicebox_js_1 = require("../generated/juicebox.js");
7
+ const cashOut_js_1 = require("./cashOut.js");
8
+ const types_js_1 = require("./types.js");
9
+ const chainId = 11155111;
10
+ const terminal = "0x1111111111111111111111111111111111111111";
11
+ const holder = "0x2222222222222222222222222222222222222222";
12
+ const beneficiary = "0x3333333333333333333333333333333333333333";
13
+ const projectId = 3n;
14
+ (0, vitest_1.describe)("cashOut", () => {
15
+ (0, vitest_1.test)("buildCashOutTx encodes cashOutTokensOf", () => {
16
+ const tx = (0, cashOut_js_1.buildCashOutTx)({
17
+ chainId,
18
+ terminal,
19
+ holder,
20
+ projectId,
21
+ cashOutCount: constants_js_1.ONE_ETHER,
22
+ tokenToReclaim: constants_js_1.NATIVE_TOKEN,
23
+ beneficiary,
24
+ });
25
+ (0, vitest_1.expect)(tx.chainId).toEqual(chainId);
26
+ (0, vitest_1.expect)(tx.address).toEqual(terminal);
27
+ (0, vitest_1.expect)(tx.functionName).toEqual("cashOutTokensOf");
28
+ (0, vitest_1.expect)(tx.args).toEqual([
29
+ holder,
30
+ projectId,
31
+ constants_js_1.ONE_ETHER,
32
+ constants_js_1.NATIVE_TOKEN,
33
+ 0n,
34
+ beneficiary,
35
+ "0x",
36
+ ]);
37
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
38
+ });
39
+ (0, vitest_1.test)("buildCashOutTx passes minTokensReclaimed and metadata through", () => {
40
+ const tx = (0, cashOut_js_1.buildCashOutTx)({
41
+ chainId,
42
+ terminal,
43
+ holder,
44
+ projectId,
45
+ cashOutCount: constants_js_1.ONE_ETHER,
46
+ tokenToReclaim: constants_js_1.NATIVE_TOKEN,
47
+ minTokensReclaimed: 999n,
48
+ beneficiary,
49
+ metadata: "0x1234",
50
+ });
51
+ (0, vitest_1.expect)(tx.args[4]).toEqual(999n);
52
+ (0, vitest_1.expect)(tx.args[6]).toEqual("0x1234");
53
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
54
+ });
55
+ (0, vitest_1.test)("getCashOutQuote reads the terminal store and applies the 2.5% fee", async () => {
56
+ const calls = [];
57
+ const client = {
58
+ async readContract(params) {
59
+ calls.push(params);
60
+ return constants_js_1.ONE_ETHER;
61
+ },
62
+ };
63
+ const quote = await (0, cashOut_js_1.getCashOutQuote)(client, {
64
+ chainId,
65
+ projectId,
66
+ cashOutCount: constants_js_1.ONE_ETHER,
67
+ });
68
+ (0, vitest_1.expect)(quote.reclaimAmount).toEqual(constants_js_1.ONE_ETHER);
69
+ (0, vitest_1.expect)(quote.reclaimAmountAfterFee).toEqual(975000000000000000n);
70
+ (0, vitest_1.expect)(calls[0].address).toEqual((0, types_js_1.v6Address)("JBTerminalStore", chainId));
71
+ (0, vitest_1.expect)(calls[0].abi).toBe(juicebox_js_1.jbTerminalStoreAbi);
72
+ (0, vitest_1.expect)(calls[0].functionName).toEqual("currentReclaimableSurplusOf");
73
+ // Empty terminal/token arrays use all of the project's terminals and tokens;
74
+ // defaults quote 18 decimals in the native token's currency.
75
+ (0, vitest_1.expect)(calls[0].args).toEqual([projectId, constants_js_1.ONE_ETHER, [], [], 18n, 61166n]);
76
+ });
77
+ (0, vitest_1.test)("getCashOutQuote respects custom decimals and currency", async () => {
78
+ const calls = [];
79
+ const client = {
80
+ async readContract(params) {
81
+ calls.push(params);
82
+ return 0n;
83
+ },
84
+ };
85
+ await (0, cashOut_js_1.getCashOutQuote)(client, {
86
+ chainId,
87
+ projectId,
88
+ cashOutCount: constants_js_1.ONE_ETHER,
89
+ decimals: 6n,
90
+ currency: 0x3606eb48n,
91
+ });
92
+ (0, vitest_1.expect)(calls[0].args).toEqual([
93
+ projectId,
94
+ constants_js_1.ONE_ETHER,
95
+ [],
96
+ [],
97
+ 6n,
98
+ 0x3606eb48n,
99
+ ]);
100
+ });
101
+ });
102
+ //# sourceMappingURL=cashOut.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cashOut.test.js","sourceRoot":"","sources":["../../../src/v6/cashOut.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { Address } from "viem";
2
+ /**
3
+ * The v6 base currency id for ETH (JBCurrencyIds.ETH).
4
+ *
5
+ * Base currencies are the small standard ids (ETH = 1, USD = 2) used to denominate a
6
+ * ruleset's `baseCurrency` and fund access limits. They are NOT the same as
7
+ * accounting-context currencies, which are derived from a token's address via
8
+ * {@link tokenCurrencyId}. Never use an accounting-context currency (e.g. 61166 for the
9
+ * native token) as a ruleset `baseCurrency` to "skip the price feed" — base currency
10
+ * must be 1 or 2.
11
+ *
12
+ * @link https://github.com/Bananapus/nana-core-v6/blob/main/src/libraries/JBCurrencyIds.sol
13
+ */
14
+ export declare const BASE_CURRENCY_ETH = 1;
15
+ /**
16
+ * The v6 base currency id for USD (JBCurrencyIds.USD).
17
+ *
18
+ * See {@link BASE_CURRENCY_ETH} for the distinction between base currencies and
19
+ * accounting-context currencies.
20
+ *
21
+ * @link https://github.com/Bananapus/nana-core-v6/blob/main/src/libraries/JBCurrencyIds.sol
22
+ */
23
+ export declare const BASE_CURRENCY_USD = 2;
24
+ /**
25
+ * The accounting-context currency id of the network's native token (e.g. ETH).
26
+ *
27
+ * Equal to `uint32(uint160(0x000000000000000000000000000000000000EEEe))` = 61166.
28
+ * This is what {@link tokenCurrencyId} returns for the native token address.
29
+ */
30
+ export declare const NATIVE_TOKEN_CURRENCY_ID = 61166;
31
+ /**
32
+ * The v6 accounting-context currency id for a token: `uint32(uint160(tokenAddress))`,
33
+ * i.e. the lowest 4 bytes of the token's address.
34
+ *
35
+ * Use this for terminal accounting contexts (`{ token, decimals, currency }`) — NOT for
36
+ * a ruleset's `baseCurrency`, which must be a base currency id
37
+ * ({@link BASE_CURRENCY_ETH} or {@link BASE_CURRENCY_USD}).
38
+ *
39
+ * @param token The token address to derive a currency id from.
40
+ * @returns The token's accounting-context currency id (fits in a uint32).
41
+ */
42
+ export declare function tokenCurrencyId(token: Address): number;
43
+ //# sourceMappingURL=currency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../../src/v6/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC;AAEnC;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,QAAQ,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD"}