@bananapus/nana-sdk-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/dist/cjs/actions/JBSuckerAbi.d.ts +32 -0
  2. package/dist/cjs/actions/JBSuckerAbi.d.ts.map +1 -0
  3. package/dist/cjs/actions/JBSuckerAbi.js +42 -0
  4. package/dist/cjs/actions/JBSuckerAbi.js.map +1 -0
  5. package/dist/cjs/actions/dataHook.d.ts +29 -0
  6. package/dist/cjs/actions/dataHook.d.ts.map +1 -0
  7. package/dist/cjs/actions/dataHook.js +81 -0
  8. package/dist/cjs/actions/dataHook.js.map +1 -0
  9. package/dist/cjs/actions/projectMetadata.d.ts +16 -0
  10. package/dist/cjs/actions/projectMetadata.d.ts.map +1 -0
  11. package/dist/cjs/actions/projectMetadata.js +37 -0
  12. package/dist/cjs/actions/projectMetadata.js.map +1 -0
  13. package/dist/cjs/actions/suckerPairs.d.ts +19 -0
  14. package/dist/cjs/actions/suckerPairs.d.ts.map +1 -0
  15. package/dist/cjs/actions/suckerPairs.js +71 -0
  16. package/dist/cjs/actions/suckerPairs.js.map +1 -0
  17. package/dist/cjs/constants.d.ts +126 -0
  18. package/dist/cjs/constants.d.ts.map +1 -0
  19. package/dist/cjs/constants.js +229 -0
  20. package/dist/cjs/constants.js.map +1 -0
  21. package/dist/cjs/contracts.d.ts +71 -0
  22. package/dist/cjs/contracts.d.ts.map +1 -0
  23. package/dist/cjs/contracts.js +78 -0
  24. package/dist/cjs/contracts.js.map +1 -0
  25. package/dist/cjs/generated/juicebox.d.ts +79672 -0
  26. package/dist/cjs/generated/juicebox.d.ts.map +1 -0
  27. package/dist/cjs/generated/juicebox.js +62354 -0
  28. package/dist/cjs/generated/juicebox.js.map +1 -0
  29. package/dist/cjs/index.d.ts +9 -0
  30. package/dist/cjs/index.d.ts.map +1 -0
  31. package/dist/cjs/index.js +9 -0
  32. package/dist/cjs/index.js.map +1 -0
  33. package/dist/cjs/types.d.ts +120 -0
  34. package/dist/cjs/types.d.ts.map +1 -0
  35. package/dist/cjs/types.js +31 -0
  36. package/dist/cjs/types.js.map +1 -0
  37. package/dist/cjs/utils/contracts.d.ts +10 -0
  38. package/dist/cjs/utils/contracts.d.ts.map +1 -0
  39. package/dist/cjs/utils/contracts.js +28 -0
  40. package/dist/cjs/utils/contracts.js.map +1 -0
  41. package/dist/cjs/utils/data.d.ts +69 -0
  42. package/dist/cjs/utils/data.d.ts.map +1 -0
  43. package/dist/cjs/utils/data.js +80 -0
  44. package/dist/cjs/utils/data.js.map +1 -0
  45. package/dist/cjs/utils/data.test.d.ts +2 -0
  46. package/dist/cjs/utils/data.test.d.ts.map +1 -0
  47. package/dist/cjs/utils/data.test.js +25 -0
  48. package/dist/cjs/utils/data.test.js.map +1 -0
  49. package/dist/cjs/utils/debug.d.ts +2 -0
  50. package/dist/cjs/utils/debug.d.ts.map +1 -0
  51. package/dist/cjs/utils/debug.js +11 -0
  52. package/dist/cjs/utils/debug.js.map +1 -0
  53. package/dist/cjs/utils/deploy.d.ts +32 -0
  54. package/dist/cjs/utils/deploy.d.ts.map +1 -0
  55. package/dist/cjs/utils/deploy.js +62 -0
  56. package/dist/cjs/utils/deploy.js.map +1 -0
  57. package/dist/cjs/utils/deploy.test.d.ts +2 -0
  58. package/dist/cjs/utils/deploy.test.d.ts.map +1 -0
  59. package/dist/cjs/utils/deploy.test.js +22 -0
  60. package/dist/cjs/utils/deploy.test.js.map +1 -0
  61. package/dist/cjs/utils/fee.d.ts +2 -0
  62. package/dist/cjs/utils/fee.d.ts.map +1 -0
  63. package/dist/cjs/utils/fee.js +5 -0
  64. package/dist/cjs/utils/fee.js.map +1 -0
  65. package/dist/cjs/utils/fee.test.d.ts +2 -0
  66. package/dist/cjs/utils/fee.test.d.ts.map +1 -0
  67. package/dist/cjs/utils/fee.test.js +9 -0
  68. package/dist/cjs/utils/fee.test.js.map +1 -0
  69. package/dist/cjs/utils/format.d.ts +33 -0
  70. package/dist/cjs/utils/format.d.ts.map +1 -0
  71. package/dist/cjs/utils/format.js +48 -0
  72. package/dist/cjs/utils/format.js.map +1 -0
  73. package/dist/cjs/utils/format.test.d.ts +2 -0
  74. package/dist/cjs/utils/format.test.d.ts.map +1 -0
  75. package/dist/cjs/utils/format.test.js +25 -0
  76. package/dist/cjs/utils/format.test.js.map +1 -0
  77. package/dist/cjs/utils/hook.d.ts +9 -0
  78. package/dist/cjs/utils/hook.d.ts.map +1 -0
  79. package/dist/cjs/utils/hook.js +44 -0
  80. package/dist/cjs/utils/hook.js.map +1 -0
  81. package/dist/cjs/utils/index.d.ts +13 -0
  82. package/dist/cjs/utils/index.d.ts.map +1 -0
  83. package/dist/cjs/utils/index.js +13 -0
  84. package/dist/cjs/utils/index.js.map +1 -0
  85. package/dist/cjs/utils/ipfs.d.ts +12 -0
  86. package/dist/cjs/utils/ipfs.d.ts.map +1 -0
  87. package/dist/cjs/utils/ipfs.js +26 -0
  88. package/dist/cjs/utils/ipfs.js.map +1 -0
  89. package/dist/cjs/utils/ipfs.test.d.ts +2 -0
  90. package/dist/cjs/utils/ipfs.test.d.ts.map +1 -0
  91. package/dist/cjs/utils/ipfs.test.js +28 -0
  92. package/dist/cjs/utils/ipfs.test.js.map +1 -0
  93. package/dist/cjs/utils/revnet.d.ts +5 -0
  94. package/dist/cjs/utils/revnet.d.ts.map +1 -0
  95. package/dist/cjs/utils/revnet.js +26 -0
  96. package/dist/cjs/utils/revnet.js.map +1 -0
  97. package/dist/cjs/utils/revnet.test.d.ts +2 -0
  98. package/dist/cjs/utils/revnet.test.d.ts.map +1 -0
  99. package/dist/cjs/utils/revnet.test.js +10 -0
  100. package/dist/cjs/utils/revnet.test.js.map +1 -0
  101. package/dist/cjs/utils/ruleset.d.ts +18 -0
  102. package/dist/cjs/utils/ruleset.d.ts.map +1 -0
  103. package/dist/cjs/utils/ruleset.js +23 -0
  104. package/dist/cjs/utils/ruleset.js.map +1 -0
  105. package/dist/cjs/utils/ruleset.test.d.ts +2 -0
  106. package/dist/cjs/utils/ruleset.test.d.ts.map +1 -0
  107. package/dist/cjs/utils/ruleset.test.js +21 -0
  108. package/dist/cjs/utils/ruleset.test.js.map +1 -0
  109. package/dist/cjs/utils/token.d.ts +72 -0
  110. package/dist/cjs/utils/token.d.ts.map +1 -0
  111. package/dist/cjs/utils/token.js +129 -0
  112. package/dist/cjs/utils/token.js.map +1 -0
  113. package/dist/cjs/utils/token.test.d.ts +2 -0
  114. package/dist/cjs/utils/token.test.d.ts.map +1 -0
  115. package/dist/cjs/utils/token.test.js +38 -0
  116. package/dist/cjs/utils/token.test.js.map +1 -0
  117. package/dist/cjs/utils/tx.d.ts +2 -0
  118. package/dist/cjs/utils/tx.d.ts.map +1 -0
  119. package/dist/cjs/utils/tx.js +7 -0
  120. package/dist/cjs/utils/tx.js.map +1 -0
  121. package/dist/cjs/utils/urn.d.ts +8 -0
  122. package/dist/cjs/utils/urn.d.ts.map +1 -0
  123. package/dist/cjs/utils/urn.js +47 -0
  124. package/dist/cjs/utils/urn.js.map +1 -0
  125. package/dist/cjs/utils/urn.test.d.ts +2 -0
  126. package/dist/cjs/utils/urn.test.d.ts.map +1 -0
  127. package/dist/cjs/utils/urn.test.js +112 -0
  128. package/dist/cjs/utils/urn.test.js.map +1 -0
  129. package/dist/esm/actions/JBSuckerAbi.d.ts +32 -0
  130. package/dist/esm/actions/JBSuckerAbi.d.ts.map +1 -0
  131. package/dist/esm/actions/JBSuckerAbi.js +42 -0
  132. package/dist/esm/actions/JBSuckerAbi.js.map +1 -0
  133. package/dist/esm/actions/dataHook.d.ts +29 -0
  134. package/dist/esm/actions/dataHook.d.ts.map +1 -0
  135. package/dist/esm/actions/dataHook.js +81 -0
  136. package/dist/esm/actions/dataHook.js.map +1 -0
  137. package/dist/esm/actions/projectMetadata.d.ts +16 -0
  138. package/dist/esm/actions/projectMetadata.d.ts.map +1 -0
  139. package/dist/esm/actions/projectMetadata.js +37 -0
  140. package/dist/esm/actions/projectMetadata.js.map +1 -0
  141. package/dist/esm/actions/suckerPairs.d.ts +19 -0
  142. package/dist/esm/actions/suckerPairs.d.ts.map +1 -0
  143. package/dist/esm/actions/suckerPairs.js +71 -0
  144. package/dist/esm/actions/suckerPairs.js.map +1 -0
  145. package/dist/esm/constants.d.ts +126 -0
  146. package/dist/esm/constants.d.ts.map +1 -0
  147. package/dist/esm/constants.js +229 -0
  148. package/dist/esm/constants.js.map +1 -0
  149. package/dist/esm/contracts.d.ts +71 -0
  150. package/dist/esm/contracts.d.ts.map +1 -0
  151. package/dist/esm/contracts.js +78 -0
  152. package/dist/esm/contracts.js.map +1 -0
  153. package/dist/esm/generated/juicebox.d.ts +79672 -0
  154. package/dist/esm/generated/juicebox.d.ts.map +1 -0
  155. package/dist/esm/generated/juicebox.js +62354 -0
  156. package/dist/esm/generated/juicebox.js.map +1 -0
  157. package/dist/esm/index.d.ts +9 -0
  158. package/dist/esm/index.d.ts.map +1 -0
  159. package/dist/esm/index.js +9 -0
  160. package/dist/esm/index.js.map +1 -0
  161. package/dist/esm/types.d.ts +120 -0
  162. package/dist/esm/types.d.ts.map +1 -0
  163. package/dist/esm/types.js +31 -0
  164. package/dist/esm/types.js.map +1 -0
  165. package/dist/esm/utils/contracts.d.ts +10 -0
  166. package/dist/esm/utils/contracts.d.ts.map +1 -0
  167. package/dist/esm/utils/contracts.js +28 -0
  168. package/dist/esm/utils/contracts.js.map +1 -0
  169. package/dist/esm/utils/data.d.ts +69 -0
  170. package/dist/esm/utils/data.d.ts.map +1 -0
  171. package/dist/esm/utils/data.js +80 -0
  172. package/dist/esm/utils/data.js.map +1 -0
  173. package/dist/esm/utils/data.test.d.ts +2 -0
  174. package/dist/esm/utils/data.test.d.ts.map +1 -0
  175. package/dist/esm/utils/data.test.js +25 -0
  176. package/dist/esm/utils/data.test.js.map +1 -0
  177. package/dist/esm/utils/debug.d.ts +2 -0
  178. package/dist/esm/utils/debug.d.ts.map +1 -0
  179. package/dist/esm/utils/debug.js +11 -0
  180. package/dist/esm/utils/debug.js.map +1 -0
  181. package/dist/esm/utils/deploy.d.ts +32 -0
  182. package/dist/esm/utils/deploy.d.ts.map +1 -0
  183. package/dist/esm/utils/deploy.js +62 -0
  184. package/dist/esm/utils/deploy.js.map +1 -0
  185. package/dist/esm/utils/deploy.test.d.ts +2 -0
  186. package/dist/esm/utils/deploy.test.d.ts.map +1 -0
  187. package/dist/esm/utils/deploy.test.js +22 -0
  188. package/dist/esm/utils/deploy.test.js.map +1 -0
  189. package/dist/esm/utils/fee.d.ts +2 -0
  190. package/dist/esm/utils/fee.d.ts.map +1 -0
  191. package/dist/esm/utils/fee.js +5 -0
  192. package/dist/esm/utils/fee.js.map +1 -0
  193. package/dist/esm/utils/fee.test.d.ts +2 -0
  194. package/dist/esm/utils/fee.test.d.ts.map +1 -0
  195. package/dist/esm/utils/fee.test.js +9 -0
  196. package/dist/esm/utils/fee.test.js.map +1 -0
  197. package/dist/esm/utils/format.d.ts +33 -0
  198. package/dist/esm/utils/format.d.ts.map +1 -0
  199. package/dist/esm/utils/format.js +48 -0
  200. package/dist/esm/utils/format.js.map +1 -0
  201. package/dist/esm/utils/format.test.d.ts +2 -0
  202. package/dist/esm/utils/format.test.d.ts.map +1 -0
  203. package/dist/esm/utils/format.test.js +25 -0
  204. package/dist/esm/utils/format.test.js.map +1 -0
  205. package/dist/esm/utils/hook.d.ts +9 -0
  206. package/dist/esm/utils/hook.d.ts.map +1 -0
  207. package/dist/esm/utils/hook.js +44 -0
  208. package/dist/esm/utils/hook.js.map +1 -0
  209. package/dist/esm/utils/index.d.ts +13 -0
  210. package/dist/esm/utils/index.d.ts.map +1 -0
  211. package/dist/esm/utils/index.js +13 -0
  212. package/dist/esm/utils/index.js.map +1 -0
  213. package/dist/esm/utils/ipfs.d.ts +12 -0
  214. package/dist/esm/utils/ipfs.d.ts.map +1 -0
  215. package/dist/esm/utils/ipfs.js +26 -0
  216. package/dist/esm/utils/ipfs.js.map +1 -0
  217. package/dist/esm/utils/ipfs.test.d.ts +2 -0
  218. package/dist/esm/utils/ipfs.test.d.ts.map +1 -0
  219. package/dist/esm/utils/ipfs.test.js +28 -0
  220. package/dist/esm/utils/ipfs.test.js.map +1 -0
  221. package/dist/esm/utils/revnet.d.ts +5 -0
  222. package/dist/esm/utils/revnet.d.ts.map +1 -0
  223. package/dist/esm/utils/revnet.js +26 -0
  224. package/dist/esm/utils/revnet.js.map +1 -0
  225. package/dist/esm/utils/revnet.test.d.ts +2 -0
  226. package/dist/esm/utils/revnet.test.d.ts.map +1 -0
  227. package/dist/esm/utils/revnet.test.js +10 -0
  228. package/dist/esm/utils/revnet.test.js.map +1 -0
  229. package/dist/esm/utils/ruleset.d.ts +18 -0
  230. package/dist/esm/utils/ruleset.d.ts.map +1 -0
  231. package/dist/esm/utils/ruleset.js +23 -0
  232. package/dist/esm/utils/ruleset.js.map +1 -0
  233. package/dist/esm/utils/ruleset.test.d.ts +2 -0
  234. package/dist/esm/utils/ruleset.test.d.ts.map +1 -0
  235. package/dist/esm/utils/ruleset.test.js +21 -0
  236. package/dist/esm/utils/ruleset.test.js.map +1 -0
  237. package/dist/esm/utils/token.d.ts +72 -0
  238. package/dist/esm/utils/token.d.ts.map +1 -0
  239. package/dist/esm/utils/token.js +129 -0
  240. package/dist/esm/utils/token.js.map +1 -0
  241. package/dist/esm/utils/token.test.d.ts +2 -0
  242. package/dist/esm/utils/token.test.d.ts.map +1 -0
  243. package/dist/esm/utils/token.test.js +38 -0
  244. package/dist/esm/utils/token.test.js.map +1 -0
  245. package/dist/esm/utils/tx.d.ts +2 -0
  246. package/dist/esm/utils/tx.d.ts.map +1 -0
  247. package/dist/esm/utils/tx.js +7 -0
  248. package/dist/esm/utils/tx.js.map +1 -0
  249. package/dist/esm/utils/urn.d.ts +8 -0
  250. package/dist/esm/utils/urn.d.ts.map +1 -0
  251. package/dist/esm/utils/urn.js +47 -0
  252. package/dist/esm/utils/urn.js.map +1 -0
  253. package/dist/esm/utils/urn.test.d.ts +2 -0
  254. package/dist/esm/utils/urn.test.d.ts.map +1 -0
  255. package/dist/esm/utils/urn.test.js +112 -0
  256. package/dist/esm/utils/urn.test.js.map +1 -0
  257. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  258. package/dist/tsconfig.tsbuildinfo +1 -0
  259. package/package.json +65 -0
@@ -0,0 +1,32 @@
1
+ export declare const JBSuckerAbi: readonly [{
2
+ readonly type: "function";
3
+ readonly name: "peer";
4
+ readonly inputs: readonly [];
5
+ readonly outputs: readonly [{
6
+ readonly name: "";
7
+ readonly type: "address";
8
+ readonly internalType: "contract IJBSucker";
9
+ }];
10
+ readonly stateMutability: "view";
11
+ }, {
12
+ readonly type: "function";
13
+ readonly name: "projectId";
14
+ readonly inputs: readonly [];
15
+ readonly outputs: readonly [{
16
+ readonly name: "";
17
+ readonly type: "uint256";
18
+ readonly internalType: "uint256";
19
+ }];
20
+ readonly stateMutability: "view";
21
+ }, {
22
+ readonly type: "function";
23
+ readonly name: "peerChainId";
24
+ readonly inputs: readonly [];
25
+ readonly outputs: readonly [{
26
+ readonly name: "";
27
+ readonly type: "uint256";
28
+ readonly internalType: "uint256";
29
+ }];
30
+ readonly stateMutability: "view";
31
+ }];
32
+ //# sourceMappingURL=JBSuckerAbi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JBSuckerAbi.d.ts","sourceRoot":"","sources":["../../../src/actions/JBSuckerAbi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCd,CAAC"}
@@ -0,0 +1,42 @@
1
+ export const JBSuckerAbi = [
2
+ {
3
+ type: "function",
4
+ name: "peer",
5
+ inputs: [],
6
+ outputs: [
7
+ {
8
+ name: "",
9
+ type: "address",
10
+ internalType: "contract IJBSucker",
11
+ },
12
+ ],
13
+ stateMutability: "view",
14
+ },
15
+ {
16
+ type: "function",
17
+ name: "projectId",
18
+ inputs: [],
19
+ outputs: [
20
+ {
21
+ name: "",
22
+ type: "uint256",
23
+ internalType: "uint256",
24
+ },
25
+ ],
26
+ stateMutability: "view",
27
+ },
28
+ {
29
+ type: "function",
30
+ name: "peerChainId",
31
+ inputs: [],
32
+ outputs: [
33
+ {
34
+ name: "",
35
+ type: "uint256",
36
+ internalType: "uint256",
37
+ },
38
+ ],
39
+ stateMutability: "view",
40
+ },
41
+ ];
42
+ //# sourceMappingURL=JBSuckerAbi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JBSuckerAbi.js","sourceRoot":"","sources":["../../../src/actions/JBSuckerAbi.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,oBAAoB;aACnC;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,SAAS;aACxB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,aAAa;QACnB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,SAAS;aACxB;SACF;QACD,eAAe,EAAE,MAAM;KACxB;CACO,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { JBVersion } from "../types.js";
2
+ import { Address, PublicClient } from "viem";
3
+ /**
4
+ * Find the 721 data hook for a given project and ruleset.
5
+ *
6
+ * NOTE this is an expensive call. Best to run it server-side and cache it.
7
+ */
8
+ export declare function find721DataHook(publicClient: PublicClient, args: {
9
+ dataHookAddress: Address;
10
+ projectId: bigint;
11
+ rulesetId: number;
12
+ version: JBVersion;
13
+ }): Promise<`0x${string}` | null>;
14
+ export declare function getHookSpecifications(publicClient: PublicClient, args: {
15
+ dataHookAddress: Address;
16
+ projectId: bigint;
17
+ rulesetId: number;
18
+ version: JBVersion;
19
+ }): Promise<readonly {
20
+ hook: `0x${string}`;
21
+ noop: boolean;
22
+ amount: bigint;
23
+ metadata: `0x${string}`;
24
+ }[] | readonly {
25
+ hook: `0x${string}`;
26
+ amount: bigint;
27
+ metadata: `0x${string}`;
28
+ }[]>;
29
+ //# sourceMappingURL=dataHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataHook.d.ts","sourceRoot":"","sources":["../../../src/actions/dataHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6D,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnG,OAAO,EAAE,OAAO,EAAE,YAAY,EAA4C,MAAM,MAAM,CAAC;AAQvF;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE;IACJ,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;CACpB,iCA4DF;AAED,wBAAsB,qBAAqB,CACzC,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE;IACJ,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;CACpB;;;;;;;;;KAgCF"}
@@ -0,0 +1,81 @@
1
+ import { JB721HookContracts, JBAddressRegistryContracts } from "../types.js";
2
+ import { getJBContractAddress } from "../utils/contracts.js";
3
+ import { getContract, isAddressEqual, zeroAddress } from "viem";
4
+ import { jb721TiersHookAbi, jb721TiersHookV5Abi, jbAddressRegistryAbi, } from "../generated/juicebox.js";
5
+ import { debug } from "../utils/debug.js";
6
+ /**
7
+ * Find the 721 data hook for a given project and ruleset.
8
+ *
9
+ * NOTE this is an expensive call. Best to run it server-side and cache it.
10
+ */
11
+ export async function find721DataHook(publicClient, args) {
12
+ const chainId = publicClient.chain?.id;
13
+ if (!chainId) {
14
+ throw new Error("[@bananapus/nana-sdk-core] No chain ID on public client.");
15
+ }
16
+ const deployerAddress = getJBContractAddress(JB721HookContracts.JB721TiersHookDeployer, args.version, chainId);
17
+ const registerAddress = getJBContractAddress(JBAddressRegistryContracts.JBAddressRegistry, args.version, chainId);
18
+ if (!registerAddress) {
19
+ throw new Error(`[@bananapus/nana-sdk-core] No JBAddressRegistry address for chain ${chainId}.`);
20
+ }
21
+ const registry = getContract({
22
+ address: registerAddress,
23
+ abi: jbAddressRegistryAbi,
24
+ client: publicClient,
25
+ });
26
+ debug("🧃 getHookSpecifications::args", {
27
+ dataHookAddress: args.dataHookAddress,
28
+ projectId: args.projectId,
29
+ rulesetId: args.rulesetId,
30
+ });
31
+ const hookSpecs = await getHookSpecifications(publicClient, {
32
+ dataHookAddress: args.dataHookAddress,
33
+ projectId: args.projectId,
34
+ rulesetId: args.rulesetId,
35
+ version: args.version,
36
+ });
37
+ const res = await Promise.all(hookSpecs.map(async (h) => {
38
+ const deployerOf = await registry.read.deployerOf([h.hook]);
39
+ debug("🧃 deployerOf", {
40
+ hook: h.hook,
41
+ deployerOf,
42
+ deployerAddress,
43
+ });
44
+ return isAddressEqual(deployerOf, deployerAddress);
45
+ }));
46
+ const index = res.findIndex((r) => r);
47
+ if (index === -1) {
48
+ return null;
49
+ }
50
+ return hookSpecs[index].hook;
51
+ }
52
+ export async function getHookSpecifications(publicClient, args) {
53
+ // v6's returned JBPayHookSpecification gained a `noop` field, so the v4/v5 response
54
+ // doesn't decode with the v6 ABI.
55
+ const dataHook = getContract({
56
+ address: args.dataHookAddress,
57
+ abi: args.version === 6 ? jb721TiersHookAbi : jb721TiersHookV5Abi,
58
+ client: publicClient,
59
+ });
60
+ const [_, hookSpecifications] = await dataHook.read.beforePayRecordedWith([
61
+ {
62
+ projectId: args.projectId,
63
+ rulesetId: BigInt(args.rulesetId), // TODO update the ABI to be a number, will fix this.
64
+ terminal: zeroAddress,
65
+ beneficiary: zeroAddress,
66
+ amount: {
67
+ token: zeroAddress,
68
+ value: 0n,
69
+ decimals: 0,
70
+ currency: 0,
71
+ },
72
+ payer: zeroAddress,
73
+ weight: 0n,
74
+ reservedPercent: 0n,
75
+ metadata: zeroAddress,
76
+ },
77
+ ]);
78
+ debug("🧃 getHookSpecifications", { args, hookSpecifications });
79
+ return hookSpecifications;
80
+ }
81
+ //# sourceMappingURL=dataHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataHook.js","sourceRoot":"","sources":["../../../src/actions/dataHook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Address, PublicClient } from "viem";
2
+ import { JBProjectMetadata } from "../types.js";
3
+ /**
4
+ * Fetch the project metadata for the given [projectId]
5
+ * @param publicClient - The Viem Public Client to use for fetching on-chain data.
6
+ * @link https://viem.sh/docs/clients/public.html
7
+ * @param opts.ipfsGatewayHostname - The hostname of the IPFS gateway to use. Defaults to "ipfs.io"
8
+ *
9
+ */
10
+ export declare const getProjectMetadata: (publicClient: PublicClient, args: {
11
+ jbControllerAddress: Address;
12
+ projectId: bigint;
13
+ }, opts?: {
14
+ ipfsGatewayHostname?: string;
15
+ }) => Promise<JBProjectMetadata | undefined>;
16
+ //# sourceMappingURL=projectMetadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectMetadata.d.ts","sourceRoot":"","sources":["../../../src/actions/projectMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,YAAY,EAIb,MAAM,MAAM,CAAC;AAEd,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA+BhD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAC7B,cAAc,YAAY,EAC1B,MAAM;IACJ,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB,EACD,OAAO;IACL,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B,KACA,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAWvC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { getContract, isAddressEqual, zeroAddress, } from "viem";
2
+ import { jbControllerAbi } from "../generated/juicebox.js";
3
+ import { ipfsGatewayUrl } from "../utils/ipfs.js";
4
+ /**
5
+ * Fetch the onchain metadata CID for the given project, using the given JBController contract.
6
+ */
7
+ const getMetadataCid = async (publicClient, args) => {
8
+ if (isAddressEqual(args.jbControllerAddress, zeroAddress)) {
9
+ return;
10
+ }
11
+ const JBController = getContract({
12
+ address: args.jbControllerAddress,
13
+ abi: jbControllerAbi,
14
+ client: publicClient,
15
+ });
16
+ // ipfs://cid or https://cid, probably
17
+ const metadataUri = await JBController.read.uriOf([args.projectId]);
18
+ const metadataCid = metadataUri.split("/").pop();
19
+ return metadataCid;
20
+ };
21
+ /**
22
+ * Fetch the project metadata for the given [projectId]
23
+ * @param publicClient - The Viem Public Client to use for fetching on-chain data.
24
+ * @link https://viem.sh/docs/clients/public.html
25
+ * @param opts.ipfsGatewayHostname - The hostname of the IPFS gateway to use. Defaults to "ipfs.io"
26
+ *
27
+ */
28
+ export const getProjectMetadata = async (publicClient, args, opts) => {
29
+ const metadataCid = await getMetadataCid(publicClient, args);
30
+ if (!metadataCid) {
31
+ return;
32
+ }
33
+ const ipfsUrl = ipfsGatewayUrl(metadataCid, opts?.ipfsGatewayHostname);
34
+ const res = (await fetch(ipfsUrl).then((res) => res.json()));
35
+ return res;
36
+ };
37
+ //# sourceMappingURL=projectMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectMetadata.js","sourceRoot":"","sources":["../../../src/actions/projectMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,MAAM,cAAc,GAAG,KAAK,EAC1B,YAA0B,EAC1B,IAGC,EACD,EAAE;IACF,IAAI,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,EAAE,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,WAAW,CAAC;QAC/B,OAAO,EAAE,IAAI,CAAC,mBAAmB;QACjC,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE,YAAY;KACrB,CAAC,CAAC;IAEH,sCAAsC;IACtC,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAEjD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,YAA0B,EAC1B,IAGC,EACD,IAEC,EACuC,EAAE;IAC1C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACvE,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAE9C,CAAC;IAEd,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { JBChainId, JBVersion } from "../types.js";
2
+ import { useConfig } from "wagmi";
3
+ export type SuckerPair = {
4
+ peerChainId: JBChainId;
5
+ projectId: bigint;
6
+ };
7
+ export declare function getSuckerPairs({ config, chainId, projectId, version, }: {
8
+ config: ReturnType<typeof useConfig>;
9
+ chainId: JBChainId;
10
+ projectId: bigint;
11
+ version: JBVersion;
12
+ }): Promise<SuckerPair[]>;
13
+ export declare function resolveSuckers({ config, chainId, projectId, version, }: {
14
+ config: ReturnType<typeof useConfig>;
15
+ chainId: JBChainId;
16
+ projectId: bigint;
17
+ version: JBVersion;
18
+ }): Promise<SuckerPair[]>;
19
+ //# sourceMappingURL=suckerPairs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suckerPairs.d.ts","sourceRoot":"","sources":["../../../src/actions/suckerPairs.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAqB,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAsB,cAAc,CAAC,EACnC,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,GACR,EAAE;IACD,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;IACrC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;CACpB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA0DxB;AAED,wBAAsB,cAAc,CAAC,EACnC,MAAM,EACN,OAAO,EACP,SAAS,EACT,OAAO,GACR,EAAE;IACD,MAAM,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC;IACrC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;CACpB,yBA0BA"}
@@ -0,0 +1,71 @@
1
+ import { getAddress, getContract, sliceHex } from "viem";
2
+ import { jbSuckerRegistryAbi, jbSuckerRegistryV5Abi } from "../generated/juicebox.js";
3
+ import { JBSuckerAbi } from "./JBSuckerAbi.js";
4
+ import { JBSuckerContracts } from "../types.js";
5
+ import { getJBContractAddress } from "../utils/contracts.js";
6
+ export async function getSuckerPairs({ config, chainId, projectId, version, }) {
7
+ const jbSuckerRegistry = getJBContractAddress(JBSuckerContracts.JBSuckerRegistry, version, chainId);
8
+ const client = config.getClient({ chainId: Number(chainId) });
9
+ // v6 identifies remote suckers as bytes32 (for cross-VM compatibility); for EVM peers
10
+ // the address is in the low 20 bytes.
11
+ const suckers = version === 6
12
+ ? (await getContract({
13
+ address: jbSuckerRegistry,
14
+ abi: jbSuckerRegistryAbi,
15
+ client,
16
+ }).read.suckerPairsOf([projectId])).map((sucker) => ({ ...sucker, remote: getAddress(sliceHex(sucker.remote, 12)) }))
17
+ : await getContract({
18
+ address: jbSuckerRegistry,
19
+ abi: jbSuckerRegistryV5Abi,
20
+ client,
21
+ }).read.suckerPairsOf([projectId]);
22
+ const suckerPairs = await Promise.all(suckers.map(async (sucker) => {
23
+ const client = config.getClient({
24
+ chainId: Number(sucker.remoteChainId),
25
+ });
26
+ const suckerContract = getContract({
27
+ address: sucker.remote,
28
+ abi: JBSuckerAbi,
29
+ client,
30
+ });
31
+ const peer = (await suckerContract.read.peer());
32
+ if (!peer) {
33
+ return;
34
+ }
35
+ const peerContract = getContract({
36
+ address: peer,
37
+ abi: JBSuckerAbi,
38
+ client,
39
+ });
40
+ const projectId = await peerContract.read.projectId();
41
+ return {
42
+ peerChainId: Number(sucker.remoteChainId),
43
+ projectId,
44
+ };
45
+ }));
46
+ return suckerPairs.filter((x) => x);
47
+ }
48
+ export async function resolveSuckers({ config, chainId, projectId, version, }) {
49
+ const initialPairs = await getSuckerPairs({ config, chainId, projectId, version });
50
+ const pairs = [...initialPairs];
51
+ await Promise.all(initialPairs.map(async (pair) => {
52
+ try {
53
+ const peerPairs = await getSuckerPairs({
54
+ config,
55
+ chainId: pair.peerChainId,
56
+ projectId: pair.projectId,
57
+ version,
58
+ });
59
+ peerPairs.forEach((pair) => {
60
+ if (!pairs.some((x) => x.peerChainId === pair.peerChainId)) {
61
+ pairs.push(pair);
62
+ }
63
+ });
64
+ }
65
+ catch (e) {
66
+ console.error("peer error", e);
67
+ }
68
+ }));
69
+ return pairs;
70
+ }
71
+ //# sourceMappingURL=suckerPairs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suckerPairs.js","sourceRoot":"","sources":["../../../src/actions/suckerPairs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ import { Address, Chain, Hash } from "viem";
2
+ import { JBChainId, JBVersion } from "./types.js";
3
+ /**
4
+ * Representation of one ether.
5
+ */
6
+ export declare const ONE_ETHER: bigint;
7
+ /**
8
+ * Default value for `memo` arguments in Juicebox transactions.
9
+ */
10
+ export declare const DEFAULT_MEMO = "";
11
+ /**
12
+ * Default value for `metadata` arguments in Juicebox transactions.
13
+ */
14
+ export declare const DEFAULT_METADATA: Hash;
15
+ export declare const DEFAULT_MIN_RETURNED_TOKENS = 0n;
16
+ export declare const DEFAULT_ALLOW_OVERSPENDING = true;
17
+ /**
18
+ * The maximum value for a ruleset's Reserved Rate.
19
+ *
20
+ * @link JBConstants.sol
21
+ */
22
+ export declare const MAX_RESERVED_PERCENT = 10000;
23
+ /**
24
+ * The maximum value for a ruleset's Cash Out Tax Rate.
25
+ *
26
+ * @link JBConstants.sol
27
+ */
28
+ export declare const MAX_CASH_OUT_TAX_RATE = 10000;
29
+ /**
30
+ * The maximum value for a ruleset's Decay Rate.
31
+ *
32
+ * @link JBConstants.sol
33
+ */
34
+ export declare const MAX_WEIGHT_CUT_PERCENT = 1000000000;
35
+ /**
36
+ * @link JBConstants.sol
37
+ */
38
+ export declare const MAX_FEE = 1000000000;
39
+ /**
40
+ * @link JBConstants.sol
41
+ */
42
+ export declare const MAX_FEE_DISCOUNT = 1000000000;
43
+ export declare const MAX_PAYOUT_LIMIT: bigint;
44
+ /**
45
+ * The 100% representation for a ruleset's Splits.
46
+ *
47
+ * The sum of all Splits should total this value.
48
+ *
49
+ * @link JBConstants.sol
50
+ */
51
+ export declare const SPLITS_TOTAL_PERCENT = 1000000000;
52
+ /**
53
+ * The number of decimals that the internal JB Token has.
54
+ *
55
+ * JB Token are internal to the Juicebox contracts.
56
+ * They keep track of a given address's share of a treasury.
57
+ * At a later time, a wallet can claim their ERC-20 tokens based on the JB Token they hold.
58
+ *
59
+ */
60
+ export declare const JB_TOKEN_DECIMALS: 18;
61
+ /**
62
+ * One JB project token as a fixed-point representation.
63
+ */
64
+ export declare const ONE_JB_TOKEN: bigint;
65
+ /**
66
+ * An address representation of the network's 'native' token (e.g. ETH, OP).
67
+ * Within Juicebox contracts, each chain's native token address is represented by this address.
68
+ *
69
+ * @link JBConstants.sol
70
+ */
71
+ export declare const NATIVE_TOKEN: Address;
72
+ /**
73
+ * The ID that represents the network's 'native' currency (e.g. ETH, OP).
74
+ *
75
+ * @link https://github.com/Bananapus/nana-core/blob/main/src/libraries/JBCurrencyIds.sol
76
+ */
77
+ export declare const ETH_CURRENCY_ID = 1;
78
+ /**
79
+ * The ID that represents USD currencies. Use this when specifying USD-deonominated payouts.
80
+ *
81
+ * @link https://github.com/Bananapus/nana-core/blob/main/src/libraries/JBCurrencyIds.sol
82
+ */
83
+ export declare const USD_CURRENCY_ID: (version: JBVersion) => 2 | 3;
84
+ /**
85
+ * Amount of decimals to use for native token fixed-point representation.
86
+ *
87
+ * 18 is assumed to be the default for most EVM-based chains.
88
+ */
89
+ export declare const NATIVE_TOKEN_DECIMALS: 18;
90
+ /**
91
+ * The fee percentage taken by Juicebox DAO on cashing out Tokens.
92
+ */
93
+ export declare const JBDAO_CASHOUT_FEE_PERCENT = 0.025;
94
+ type JBChainMetadata = {
95
+ chain: Chain;
96
+ name: string;
97
+ slug: string;
98
+ nativeTokenSymbol: string;
99
+ etherscanHostname: string;
100
+ };
101
+ export declare const JB_CHAINS: Record<JBChainId, JBChainMetadata>;
102
+ /**
103
+ * Map of JBChain slugs to chains.
104
+ * Useful when getting the chain for a particular url path.
105
+ */
106
+ export declare const JB_CHAIN_SLUGS: Record<string, JBChainMetadata>;
107
+ export declare const DEFAULT_NATIVE_TOKEN_SYMBOL = "ETH";
108
+ type CCIPMap = {
109
+ [k in JBChainId]?: {
110
+ [k in JBChainId]?: Address;
111
+ };
112
+ };
113
+ /**
114
+ * CCIP sucker deployer addresses, keyed by version, then local chain, then remote chain.
115
+ *
116
+ * The `5` map is also used for v4 deployments.
117
+ *
118
+ * @see https://discord.com/channels/1139291093310132376/1139291094069301385/1337164727008366683
119
+ */
120
+ export declare const CCIP_SUCKER_DEPLOYER_ADDRESSES: Record<5 | 6, CCIPMap>;
121
+ /**
122
+ * USDC contract addresses on supported chains.
123
+ */
124
+ export declare const USDC_ADDRESSES: Record<JBChainId, Address>;
125
+ export {};
126
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAA0B,MAAM,MAAM,CAAC;AAepE,OAAO,EAAE,SAAS,EAAqB,SAAS,EAAE,MAAM,YAAY,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,SAAS,QAAkB,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAY,IAAI,CAAC;AAC9C,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAE3C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAS,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,aAAgB,CAAC;AAEpD;;GAEG;AACH,eAAO,MAAM,OAAO,aAAgB,CAAC;AAErC;;GAEG;AACH,eAAO,MAAM,gBAAgB,aAAgB,CAAC;AAG9C,eAAO,MAAM,gBAAgB,QAE5B,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,aAAgB,CAAC;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,EAAG,EAAW,CAAC;AAE7C;;GAEG;AACH,eAAO,MAAM,YAAY,QAAqC,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,OACmB,CAAC;AAE/C;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,SAAS,UAA4B,CAAC;AAE/E;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAG,EAAW,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,eAAe,CAyDxD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,iCAM1B,CAAC;AAEF,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AAEjD,KAAK,OAAO,GAAG;KACZ,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE;SAChB,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO;KAC3B;CACF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,8BAA8B,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAiHjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,CASrD,CAAC"}