@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,194 @@
1
+ import { Address, Hex, PublicClient } from "viem";
2
+ import { jbControllerAbi } from "../generated/juicebox.js";
3
+ import { JBChainId } from "../types.js";
4
+ /**
5
+ * A prepared `deployERC20For` transaction request.
6
+ */
7
+ export interface V6DeployErc20TxRequest {
8
+ chainId: JBChainId;
9
+ address: Address;
10
+ abi: typeof jbControllerAbi;
11
+ functionName: "deployERC20For";
12
+ args: readonly [bigint, string, string, Hex];
13
+ }
14
+ /**
15
+ * Build a `JBController.deployERC20For(projectId, name, symbol, salt)` transaction
16
+ * request, deploying a claimable ERC-20 for a project's tokens.
17
+ *
18
+ * Requires the project owner or the DEPLOY_ERC20 permission.
19
+ *
20
+ * @param args.chainId The chain to deploy on.
21
+ * @param args.projectId The project's id.
22
+ * @param args.name The ERC-20's name.
23
+ * @param args.symbol The ERC-20's symbol.
24
+ * @param args.salt A CREATE2 salt. Use the same non-zero salt (from the same deployer)
25
+ * across chains for a same-address omnichain ERC-20. Defaults to zero (non-deterministic
26
+ * address).
27
+ * @returns The transaction request.
28
+ */
29
+ export declare function buildDeployErc20Tx({ chainId, projectId, name, symbol, salt, }: {
30
+ chainId: JBChainId;
31
+ projectId: bigint;
32
+ name: string;
33
+ symbol: string;
34
+ salt?: Hex;
35
+ }): V6DeployErc20TxRequest;
36
+ /**
37
+ * A prepared `claimTokensFor` transaction request.
38
+ */
39
+ export interface V6ClaimTokensTxRequest {
40
+ chainId: JBChainId;
41
+ address: Address;
42
+ abi: typeof jbControllerAbi;
43
+ functionName: "claimTokensFor";
44
+ args: readonly [Address, bigint, bigint, Address];
45
+ }
46
+ /**
47
+ * Build a `JBController.claimTokensFor(holder, projectId, tokenCount, beneficiary)`
48
+ * transaction request, claiming a holder's internal token credits as ERC-20 tokens.
49
+ *
50
+ * The project must have an ERC-20 deployed (see {@link buildDeployErc20Tx}). Claiming
51
+ * for another holder requires the CLAIM_TOKENS permission.
52
+ *
53
+ * @param args.chainId The chain to claim on.
54
+ * @param args.holder The address whose credits are being claimed.
55
+ * @param args.projectId The project's id.
56
+ * @param args.tokenCount The number of credits to claim, as a fixed point number with
57
+ * 18 decimals.
58
+ * @param args.beneficiary The address that receives the ERC-20 tokens.
59
+ * @returns The transaction request.
60
+ */
61
+ export declare function buildClaimTokensTx({ chainId, holder, projectId, tokenCount, beneficiary, }: {
62
+ chainId: JBChainId;
63
+ holder: Address;
64
+ projectId: bigint;
65
+ tokenCount: bigint;
66
+ beneficiary: Address;
67
+ }): V6ClaimTokensTxRequest;
68
+ /**
69
+ * A prepared `transferCreditsFrom` transaction request.
70
+ */
71
+ export interface V6TransferCreditsTxRequest {
72
+ chainId: JBChainId;
73
+ address: Address;
74
+ abi: typeof jbControllerAbi;
75
+ functionName: "transferCreditsFrom";
76
+ args: readonly [Address, bigint, Address, bigint];
77
+ }
78
+ /**
79
+ * Build a `JBController.transferCreditsFrom(holder, projectId, recipient,
80
+ * creditCount)` transaction request, transferring internal token credits (unclaimed
81
+ * tokens) to another address.
82
+ *
83
+ * Transferring another holder's credits requires the TRANSFER_CREDITS permission.
84
+ *
85
+ * @param args.chainId The chain to transfer on.
86
+ * @param args.holder The address whose credits are being transferred.
87
+ * @param args.projectId The project's id.
88
+ * @param args.recipient The address that receives the credits.
89
+ * @param args.creditCount The number of credits to transfer, as a fixed point number
90
+ * with 18 decimals.
91
+ * @returns The transaction request.
92
+ */
93
+ export declare function buildTransferCreditsTx({ chainId, holder, projectId, recipient, creditCount, }: {
94
+ chainId: JBChainId;
95
+ holder: Address;
96
+ projectId: bigint;
97
+ recipient: Address;
98
+ creditCount: bigint;
99
+ }): V6TransferCreditsTxRequest;
100
+ /**
101
+ * A prepared `mintTokensOf` transaction request.
102
+ */
103
+ export interface V6MintTokensTxRequest {
104
+ chainId: JBChainId;
105
+ address: Address;
106
+ abi: typeof jbControllerAbi;
107
+ functionName: "mintTokensOf";
108
+ args: readonly [bigint, bigint, Address, string, boolean];
109
+ }
110
+ /**
111
+ * Build a `JBController.mintTokensOf(projectId, tokenCount, beneficiary, memo,
112
+ * useReservedPercent)` transaction request, minting new project tokens.
113
+ *
114
+ * Only works when the project's ruleset allows owner minting; requires the project
115
+ * owner or the MINT_TOKENS permission.
116
+ *
117
+ * @param args.chainId The chain to mint on.
118
+ * @param args.projectId The project's id.
119
+ * @param args.tokenCount The number of tokens to mint, as a fixed point number with 18
120
+ * decimals.
121
+ * @param args.beneficiary The address that receives the minted tokens.
122
+ * @param args.memo A memo included in the MintTokens event. Defaults to "".
123
+ * @param args.useReservedPercent Whether the ruleset's reserved percent should be
124
+ * withheld from the mint for the project's reserved splits. Defaults to true.
125
+ * @returns The transaction request.
126
+ */
127
+ export declare function buildMintTokensTx({ chainId, projectId, tokenCount, beneficiary, memo, useReservedPercent, }: {
128
+ chainId: JBChainId;
129
+ projectId: bigint;
130
+ tokenCount: bigint;
131
+ beneficiary: Address;
132
+ memo?: string;
133
+ useReservedPercent?: boolean;
134
+ }): V6MintTokensTxRequest;
135
+ /**
136
+ * A prepared `burnTokensOf` transaction request.
137
+ */
138
+ export interface V6BurnTokensTxRequest {
139
+ chainId: JBChainId;
140
+ address: Address;
141
+ abi: typeof jbControllerAbi;
142
+ functionName: "burnTokensOf";
143
+ args: readonly [Address, bigint, bigint, string];
144
+ }
145
+ /**
146
+ * Build a `JBController.burnTokensOf(holder, projectId, tokenCount, memo)` transaction
147
+ * request, burning a holder's project tokens.
148
+ *
149
+ * Burning another holder's tokens requires the BURN_TOKENS permission.
150
+ *
151
+ * @param args.chainId The chain to burn on.
152
+ * @param args.holder The address whose tokens are being burned.
153
+ * @param args.projectId The project's id.
154
+ * @param args.tokenCount The number of tokens to burn, as a fixed point number with 18
155
+ * decimals.
156
+ * @param args.memo A memo included in the BurnTokens event. Defaults to "".
157
+ * @returns The transaction request.
158
+ */
159
+ export declare function buildBurnTokensTx({ chainId, holder, projectId, tokenCount, memo, }: {
160
+ chainId: JBChainId;
161
+ holder: Address;
162
+ projectId: bigint;
163
+ tokenCount: bigint;
164
+ memo?: string;
165
+ }): V6BurnTokensTxRequest;
166
+ /**
167
+ * Read a project's ERC-20 token address via `JBTokens.tokenOf(projectId)`.
168
+ *
169
+ * @param client A viem public client on the given chain.
170
+ * @param args.chainId The chain to read from.
171
+ * @param args.projectId The project's id.
172
+ * @returns The token address, or null when the project has no ERC-20 deployed (token
173
+ * balances are held as internal credits).
174
+ */
175
+ export declare function getTokenAddress(client: PublicClient, { chainId, projectId, }: {
176
+ chainId: JBChainId;
177
+ projectId: bigint;
178
+ }): Promise<Address | null>;
179
+ /**
180
+ * Read a holder's internal token credit balance (unclaimed tokens) via
181
+ * `JBTokens.creditBalanceOf(holder, projectId)`.
182
+ *
183
+ * @param client A viem public client on the given chain.
184
+ * @param args.chainId The chain to read from.
185
+ * @param args.projectId The project's id.
186
+ * @param args.holder The holder to read the credit balance of.
187
+ * @returns The holder's credit balance, as a fixed point number with 18 decimals.
188
+ */
189
+ export declare function getCreditBalance(client: PublicClient, { chainId, projectId, holder, }: {
190
+ chainId: JBChainId;
191
+ projectId: bigint;
192
+ holder: Address;
193
+ }): Promise<bigint>;
194
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/v6/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildDeployErc20Tx = buildDeployErc20Tx;
4
+ exports.buildClaimTokensTx = buildClaimTokensTx;
5
+ exports.buildTransferCreditsTx = buildTransferCreditsTx;
6
+ exports.buildMintTokensTx = buildMintTokensTx;
7
+ exports.buildBurnTokensTx = buildBurnTokensTx;
8
+ exports.getTokenAddress = getTokenAddress;
9
+ exports.getCreditBalance = getCreditBalance;
10
+ const viem_1 = require("viem");
11
+ const juicebox_js_1 = require("../generated/juicebox.js");
12
+ const types_js_1 = require("./types.js");
13
+ /**
14
+ * Build a `JBController.deployERC20For(projectId, name, symbol, salt)` transaction
15
+ * request, deploying a claimable ERC-20 for a project's tokens.
16
+ *
17
+ * Requires the project owner or the DEPLOY_ERC20 permission.
18
+ *
19
+ * @param args.chainId The chain to deploy on.
20
+ * @param args.projectId The project's id.
21
+ * @param args.name The ERC-20's name.
22
+ * @param args.symbol The ERC-20's symbol.
23
+ * @param args.salt A CREATE2 salt. Use the same non-zero salt (from the same deployer)
24
+ * across chains for a same-address omnichain ERC-20. Defaults to zero (non-deterministic
25
+ * address).
26
+ * @returns The transaction request.
27
+ */
28
+ function buildDeployErc20Tx({ chainId, projectId, name, symbol, salt = viem_1.zeroHash, }) {
29
+ return {
30
+ chainId,
31
+ address: (0, types_js_1.v6Address)("JBController", chainId),
32
+ abi: juicebox_js_1.jbControllerAbi,
33
+ functionName: "deployERC20For",
34
+ args: [projectId, name, symbol, salt],
35
+ };
36
+ }
37
+ /**
38
+ * Build a `JBController.claimTokensFor(holder, projectId, tokenCount, beneficiary)`
39
+ * transaction request, claiming a holder's internal token credits as ERC-20 tokens.
40
+ *
41
+ * The project must have an ERC-20 deployed (see {@link buildDeployErc20Tx}). Claiming
42
+ * for another holder requires the CLAIM_TOKENS permission.
43
+ *
44
+ * @param args.chainId The chain to claim on.
45
+ * @param args.holder The address whose credits are being claimed.
46
+ * @param args.projectId The project's id.
47
+ * @param args.tokenCount The number of credits to claim, as a fixed point number with
48
+ * 18 decimals.
49
+ * @param args.beneficiary The address that receives the ERC-20 tokens.
50
+ * @returns The transaction request.
51
+ */
52
+ function buildClaimTokensTx({ chainId, holder, projectId, tokenCount, beneficiary, }) {
53
+ return {
54
+ chainId,
55
+ address: (0, types_js_1.v6Address)("JBController", chainId),
56
+ abi: juicebox_js_1.jbControllerAbi,
57
+ functionName: "claimTokensFor",
58
+ args: [holder, projectId, tokenCount, beneficiary],
59
+ };
60
+ }
61
+ /**
62
+ * Build a `JBController.transferCreditsFrom(holder, projectId, recipient,
63
+ * creditCount)` transaction request, transferring internal token credits (unclaimed
64
+ * tokens) to another address.
65
+ *
66
+ * Transferring another holder's credits requires the TRANSFER_CREDITS permission.
67
+ *
68
+ * @param args.chainId The chain to transfer on.
69
+ * @param args.holder The address whose credits are being transferred.
70
+ * @param args.projectId The project's id.
71
+ * @param args.recipient The address that receives the credits.
72
+ * @param args.creditCount The number of credits to transfer, as a fixed point number
73
+ * with 18 decimals.
74
+ * @returns The transaction request.
75
+ */
76
+ function buildTransferCreditsTx({ chainId, holder, projectId, recipient, creditCount, }) {
77
+ return {
78
+ chainId,
79
+ address: (0, types_js_1.v6Address)("JBController", chainId),
80
+ abi: juicebox_js_1.jbControllerAbi,
81
+ functionName: "transferCreditsFrom",
82
+ args: [holder, projectId, recipient, creditCount],
83
+ };
84
+ }
85
+ /**
86
+ * Build a `JBController.mintTokensOf(projectId, tokenCount, beneficiary, memo,
87
+ * useReservedPercent)` transaction request, minting new project tokens.
88
+ *
89
+ * Only works when the project's ruleset allows owner minting; requires the project
90
+ * owner or the MINT_TOKENS permission.
91
+ *
92
+ * @param args.chainId The chain to mint on.
93
+ * @param args.projectId The project's id.
94
+ * @param args.tokenCount The number of tokens to mint, as a fixed point number with 18
95
+ * decimals.
96
+ * @param args.beneficiary The address that receives the minted tokens.
97
+ * @param args.memo A memo included in the MintTokens event. Defaults to "".
98
+ * @param args.useReservedPercent Whether the ruleset's reserved percent should be
99
+ * withheld from the mint for the project's reserved splits. Defaults to true.
100
+ * @returns The transaction request.
101
+ */
102
+ function buildMintTokensTx({ chainId, projectId, tokenCount, beneficiary, memo = "", useReservedPercent = true, }) {
103
+ return {
104
+ chainId,
105
+ address: (0, types_js_1.v6Address)("JBController", chainId),
106
+ abi: juicebox_js_1.jbControllerAbi,
107
+ functionName: "mintTokensOf",
108
+ args: [projectId, tokenCount, beneficiary, memo, useReservedPercent],
109
+ };
110
+ }
111
+ /**
112
+ * Build a `JBController.burnTokensOf(holder, projectId, tokenCount, memo)` transaction
113
+ * request, burning a holder's project tokens.
114
+ *
115
+ * Burning another holder's tokens requires the BURN_TOKENS permission.
116
+ *
117
+ * @param args.chainId The chain to burn on.
118
+ * @param args.holder The address whose tokens are being burned.
119
+ * @param args.projectId The project's id.
120
+ * @param args.tokenCount The number of tokens to burn, as a fixed point number with 18
121
+ * decimals.
122
+ * @param args.memo A memo included in the BurnTokens event. Defaults to "".
123
+ * @returns The transaction request.
124
+ */
125
+ function buildBurnTokensTx({ chainId, holder, projectId, tokenCount, memo = "", }) {
126
+ return {
127
+ chainId,
128
+ address: (0, types_js_1.v6Address)("JBController", chainId),
129
+ abi: juicebox_js_1.jbControllerAbi,
130
+ functionName: "burnTokensOf",
131
+ args: [holder, projectId, tokenCount, memo],
132
+ };
133
+ }
134
+ /**
135
+ * Read a project's ERC-20 token address via `JBTokens.tokenOf(projectId)`.
136
+ *
137
+ * @param client A viem public client on the given chain.
138
+ * @param args.chainId The chain to read from.
139
+ * @param args.projectId The project's id.
140
+ * @returns The token address, or null when the project has no ERC-20 deployed (token
141
+ * balances are held as internal credits).
142
+ */
143
+ async function getTokenAddress(client, { chainId, projectId, }) {
144
+ const token = await client.readContract({
145
+ address: (0, types_js_1.v6Address)("JBTokens", chainId),
146
+ abi: juicebox_js_1.jbTokensAbi,
147
+ functionName: "tokenOf",
148
+ args: [projectId],
149
+ });
150
+ return token === viem_1.zeroAddress ? null : token;
151
+ }
152
+ /**
153
+ * Read a holder's internal token credit balance (unclaimed tokens) via
154
+ * `JBTokens.creditBalanceOf(holder, projectId)`.
155
+ *
156
+ * @param client A viem public client on the given chain.
157
+ * @param args.chainId The chain to read from.
158
+ * @param args.projectId The project's id.
159
+ * @param args.holder The holder to read the credit balance of.
160
+ * @returns The holder's credit balance, as a fixed point number with 18 decimals.
161
+ */
162
+ async function getCreditBalance(client, { chainId, projectId, holder, }) {
163
+ return client.readContract({
164
+ address: (0, types_js_1.v6Address)("JBTokens", chainId),
165
+ abi: juicebox_js_1.jbTokensAbi,
166
+ functionName: "creditBalanceOf",
167
+ args: [holder, projectId],
168
+ });
169
+ }
170
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/v6/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tokens.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.test.d.ts","sourceRoot":"","sources":["../../../src/v6/tokens.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,141 @@
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 tokens_js_1 = require("./tokens.js");
8
+ const types_js_1 = require("./types.js");
9
+ const chainId = 11155111;
10
+ const projectId = 3n;
11
+ const holder = "0x1111111111111111111111111111111111111111";
12
+ const beneficiary = "0x2222222222222222222222222222222222222222";
13
+ (0, vitest_1.describe)("tokens", () => {
14
+ (0, vitest_1.test)("buildDeployErc20Tx encodes deployERC20For", () => {
15
+ const tx = (0, tokens_js_1.buildDeployErc20Tx)({
16
+ chainId,
17
+ projectId,
18
+ name: "Token",
19
+ symbol: "TKN",
20
+ });
21
+ (0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
22
+ (0, vitest_1.expect)(tx.functionName).toEqual("deployERC20For");
23
+ (0, vitest_1.expect)(tx.args).toEqual([projectId, "Token", "TKN", viem_1.zeroHash]);
24
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
25
+ });
26
+ (0, vitest_1.test)("buildDeployErc20Tx passes a custom salt through", () => {
27
+ const salt = `0x${"11".repeat(32)}`;
28
+ const tx = (0, tokens_js_1.buildDeployErc20Tx)({
29
+ chainId,
30
+ projectId,
31
+ name: "Token",
32
+ symbol: "TKN",
33
+ salt,
34
+ });
35
+ (0, vitest_1.expect)(tx.args[3]).toEqual(salt);
36
+ });
37
+ (0, vitest_1.test)("buildClaimTokensTx encodes claimTokensFor", () => {
38
+ const tx = (0, tokens_js_1.buildClaimTokensTx)({
39
+ chainId,
40
+ holder,
41
+ projectId,
42
+ tokenCount: constants_js_1.ONE_ETHER,
43
+ beneficiary,
44
+ });
45
+ (0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
46
+ (0, vitest_1.expect)(tx.functionName).toEqual("claimTokensFor");
47
+ (0, vitest_1.expect)(tx.args).toEqual([holder, projectId, constants_js_1.ONE_ETHER, beneficiary]);
48
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
49
+ });
50
+ (0, vitest_1.test)("buildTransferCreditsTx encodes transferCreditsFrom", () => {
51
+ const tx = (0, tokens_js_1.buildTransferCreditsTx)({
52
+ chainId,
53
+ holder,
54
+ projectId,
55
+ recipient: beneficiary,
56
+ creditCount: constants_js_1.ONE_ETHER,
57
+ });
58
+ (0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
59
+ (0, vitest_1.expect)(tx.functionName).toEqual("transferCreditsFrom");
60
+ (0, vitest_1.expect)(tx.args).toEqual([holder, projectId, beneficiary, constants_js_1.ONE_ETHER]);
61
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
62
+ });
63
+ (0, vitest_1.test)("buildMintTokensTx encodes mintTokensOf with defaults", () => {
64
+ const tx = (0, tokens_js_1.buildMintTokensTx)({
65
+ chainId,
66
+ projectId,
67
+ tokenCount: constants_js_1.ONE_ETHER,
68
+ beneficiary,
69
+ });
70
+ (0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
71
+ (0, vitest_1.expect)(tx.functionName).toEqual("mintTokensOf");
72
+ (0, vitest_1.expect)(tx.args).toEqual([projectId, constants_js_1.ONE_ETHER, beneficiary, "", true]);
73
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
74
+ });
75
+ (0, vitest_1.test)("buildMintTokensTx can skip the reserved percent", () => {
76
+ const tx = (0, tokens_js_1.buildMintTokensTx)({
77
+ chainId,
78
+ projectId,
79
+ tokenCount: constants_js_1.ONE_ETHER,
80
+ beneficiary,
81
+ memo: "gm",
82
+ useReservedPercent: false,
83
+ });
84
+ (0, vitest_1.expect)(tx.args).toEqual([projectId, constants_js_1.ONE_ETHER, beneficiary, "gm", false]);
85
+ });
86
+ (0, vitest_1.test)("buildBurnTokensTx encodes burnTokensOf", () => {
87
+ const tx = (0, tokens_js_1.buildBurnTokensTx)({
88
+ chainId,
89
+ holder,
90
+ projectId,
91
+ tokenCount: constants_js_1.ONE_ETHER,
92
+ });
93
+ (0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("JBController", chainId));
94
+ (0, vitest_1.expect)(tx.functionName).toEqual("burnTokensOf");
95
+ (0, vitest_1.expect)(tx.args).toEqual([holder, projectId, constants_js_1.ONE_ETHER, ""]);
96
+ (0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
97
+ });
98
+ (0, vitest_1.test)("getTokenAddress returns null when no ERC-20 is deployed", async () => {
99
+ const calls = [];
100
+ const client = {
101
+ async readContract(params) {
102
+ calls.push(params);
103
+ return viem_1.zeroAddress;
104
+ },
105
+ };
106
+ const token = await (0, tokens_js_1.getTokenAddress)(client, { chainId, projectId });
107
+ (0, vitest_1.expect)(token).toBeNull();
108
+ (0, vitest_1.expect)(calls[0].address).toEqual((0, types_js_1.v6Address)("JBTokens", chainId));
109
+ (0, vitest_1.expect)(calls[0].abi).toBe(juicebox_js_1.jbTokensAbi);
110
+ (0, vitest_1.expect)(calls[0].functionName).toEqual("tokenOf");
111
+ (0, vitest_1.expect)(calls[0].args).toEqual([projectId]);
112
+ });
113
+ (0, vitest_1.test)("getTokenAddress returns the deployed ERC-20", async () => {
114
+ const erc20 = "0x3333333333333333333333333333333333333333";
115
+ const client = {
116
+ async readContract() {
117
+ return erc20;
118
+ },
119
+ };
120
+ (0, vitest_1.expect)(await (0, tokens_js_1.getTokenAddress)(client, { chainId, projectId })).toEqual(erc20);
121
+ });
122
+ (0, vitest_1.test)("getCreditBalance reads creditBalanceOf(holder, projectId)", async () => {
123
+ const calls = [];
124
+ const client = {
125
+ async readContract(params) {
126
+ calls.push(params);
127
+ return 42n;
128
+ },
129
+ };
130
+ const balance = await (0, tokens_js_1.getCreditBalance)(client, {
131
+ chainId,
132
+ projectId,
133
+ holder,
134
+ });
135
+ (0, vitest_1.expect)(balance).toEqual(42n);
136
+ (0, vitest_1.expect)(calls[0].address).toEqual((0, types_js_1.v6Address)("JBTokens", chainId));
137
+ (0, vitest_1.expect)(calls[0].functionName).toEqual("creditBalanceOf");
138
+ (0, vitest_1.expect)(calls[0].args).toEqual([holder, projectId]);
139
+ });
140
+ });
141
+ //# sourceMappingURL=tokens.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.test.js","sourceRoot":"","sources":["../../../src/v6/tokens.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Address } from "viem";
2
+ import { jbContractAddress } from "../generated/juicebox.js";
3
+ import { JBChainId } from "../types.js";
4
+ /**
5
+ * The contracts deployed for Juicebox v6.
6
+ */
7
+ export type V6Contract = keyof (typeof jbContractAddress)["6"];
8
+ /**
9
+ * The address of a v6 contract on a chain.
10
+ */
11
+ export declare function v6Address(contract: V6Contract, chainId: JBChainId): Address;
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/v6/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAQ3E"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.v6Address = v6Address;
4
+ const juicebox_js_1 = require("../generated/juicebox.js");
5
+ /**
6
+ * The address of a v6 contract on a chain.
7
+ */
8
+ function v6Address(contract, chainId) {
9
+ const address = juicebox_js_1.jbContractAddress["6"][contract][String(chainId)];
10
+ if (!address) {
11
+ throw new Error(`No v6 ${String(contract)} deployment on chain ${chainId}`);
12
+ }
13
+ return address;
14
+ }
15
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/v6/types.ts"],"names":[],"mappings":";;AAYA,8BAQC;AAnBD,0DAA6D;AAQ7D;;GAEG;AACH,SAAgB,SAAS,CAAC,QAAoB,EAAE,OAAkB;IAChE,MAAM,OAAO,GAAI,+BAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,CAA6B,CAC3E,MAAM,CAAC,OAAO,CAAC,CAChB,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,CAAC,QAAQ,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -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