@bayybays/stacksone-sdk 1.0.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 (435) hide show
  1. package/.github/workflows/clarinet.yaml +33 -0
  2. package/README.md +444 -0
  3. package/docs/ARCHITECTURE.md +69 -0
  4. package/docs/CONTRACT_REGISTRY.md +11 -0
  5. package/docs/MODULE_OVERVIEW.md +38 -0
  6. package/docs/ROADMAP_Q1_2026.md +21 -0
  7. package/docs/SECURITY.md +47 -0
  8. package/docs/devlog.md +925 -0
  9. package/docs/notes.md +5 -0
  10. package/eslint.config.js +29 -0
  11. package/index.html +24 -0
  12. package/nonce.txt +1 -0
  13. package/nonce_store/nonce_1.txt +1 -0
  14. package/nonce_store/nonce_10.txt +1 -0
  15. package/nonce_store/nonce_2.txt +1 -0
  16. package/nonce_store/nonce_3.txt +1 -0
  17. package/nonce_store/nonce_4.txt +1 -0
  18. package/nonce_store/nonce_5.txt +1 -0
  19. package/nonce_store/nonce_6.txt +1 -0
  20. package/nonce_store/nonce_7.txt +1 -0
  21. package/nonce_store/nonce_8.txt +1 -0
  22. package/nonce_store/nonce_9.txt +1 -0
  23. package/package.json +62 -0
  24. package/package.json.save +60 -0
  25. package/postcss.config.js +6 -0
  26. package/public/logo.png +0 -0
  27. package/public/vite.svg +1 -0
  28. package/smart-contracts/.gitattributes +3 -0
  29. package/smart-contracts/.vscode/settings.json +4 -0
  30. package/smart-contracts/.vscode/tasks.json +19 -0
  31. package/smart-contracts/Clarinet.toml +11 -0
  32. package/smart-contracts/Mainnet.toml +5 -0
  33. package/smart-contracts/contracts/chaintap.clar +200 -0
  34. package/smart-contracts/contracts/contract-0.clar +35 -0
  35. package/smart-contracts/contracts/contract-1.clar +26 -0
  36. package/smart-contracts/contracts/contract-10.clar +31 -0
  37. package/smart-contracts/contracts/contract-12.clar +50 -0
  38. package/smart-contracts/contracts/contract-13.clar +25 -0
  39. package/smart-contracts/contracts/contract-14.clar +14 -0
  40. package/smart-contracts/contracts/contract-15.clar +20 -0
  41. package/smart-contracts/contracts/contract-16.clar +22 -0
  42. package/smart-contracts/contracts/contract-17.clar +23 -0
  43. package/smart-contracts/contracts/contract-18.clar +30 -0
  44. package/smart-contracts/contracts/contract-19.clar +49 -0
  45. package/smart-contracts/contracts/contract-2.clar +34 -0
  46. package/smart-contracts/contracts/contract-20.clar +7 -0
  47. package/smart-contracts/contracts/contract-21.clar +17 -0
  48. package/smart-contracts/contracts/contract-22.clar +23 -0
  49. package/smart-contracts/contracts/contract-23.clar +41 -0
  50. package/smart-contracts/contracts/contract-24.clar +30 -0
  51. package/smart-contracts/contracts/contract-28.clar +34 -0
  52. package/smart-contracts/contracts/contract-3.clar +36 -0
  53. package/smart-contracts/contracts/contract-30.clar +21 -0
  54. package/smart-contracts/contracts/contract-32.clar +26 -0
  55. package/smart-contracts/contracts/contract-33.clar +43 -0
  56. package/smart-contracts/contracts/contract-34.clar +29 -0
  57. package/smart-contracts/contracts/contract-35.clar +17 -0
  58. package/smart-contracts/contracts/contract-36.clar +47 -0
  59. package/smart-contracts/contracts/contract-37.clar +33 -0
  60. package/smart-contracts/contracts/contract-38.clar +26 -0
  61. package/smart-contracts/contracts/contract-4.clar +16 -0
  62. package/smart-contracts/contracts/contract-40.clar +19 -0
  63. package/smart-contracts/contracts/contract-42.clar +26 -0
  64. package/smart-contracts/contracts/contract-43.clar +23 -0
  65. package/smart-contracts/contracts/contract-44.clar +47 -0
  66. package/smart-contracts/contracts/contract-45.clar +32 -0
  67. package/smart-contracts/contracts/contract-46.clar +31 -0
  68. package/smart-contracts/contracts/contract-47.clar +33 -0
  69. package/smart-contracts/contracts/contract-48.clar +16 -0
  70. package/smart-contracts/contracts/contract-49.clar +36 -0
  71. package/smart-contracts/contracts/contract-5.clar +17 -0
  72. package/smart-contracts/contracts/contract-6.clar +52 -0
  73. package/smart-contracts/contracts/contract-7.clar +6 -0
  74. package/smart-contracts/contracts/contract-8.clar +27 -0
  75. package/smart-contracts/contracts/faucet-distributor-v2.clar +133 -0
  76. package/smart-contracts/contracts/faucet-distributor-v3.clar +129 -0
  77. package/smart-contracts/contracts/faucet-distributor-v4.clar +86 -0
  78. package/smart-contracts/contracts/faucet-distributor-v5.clar +90 -0
  79. package/smart-contracts/contracts/faucet-distributor-v6.clar +123 -0
  80. package/smart-contracts/contracts/faucet-distributor-v7.clar +88 -0
  81. package/smart-contracts/contracts/faucet-distributor.clar +64 -0
  82. package/smart-contracts/contracts/genesis-0.clar +297 -0
  83. package/smart-contracts/contracts/genesis-1.clar +342 -0
  84. package/smart-contracts/contracts/genesis-2.clar +297 -0
  85. package/smart-contracts/contracts/genesis-3.clar +282 -0
  86. package/smart-contracts/contracts/genesis-4.clar +291 -0
  87. package/smart-contracts/contracts/genesis-5.clar +276 -0
  88. package/smart-contracts/contracts/genesis-6.clar +273 -0
  89. package/smart-contracts/contracts/genesis-7.clar +261 -0
  90. package/smart-contracts/contracts/genesis-8.clar +279 -0
  91. package/smart-contracts/contracts/genesis-9.clar +288 -0
  92. package/smart-contracts/contracts/genesis-ascension-v1.clar +54 -0
  93. package/smart-contracts/contracts/genesis-badges-v10.clar +72 -0
  94. package/smart-contracts/contracts/genesis-badges-v4.clar +66 -0
  95. package/smart-contracts/contracts/genesis-badges-v5.clar +66 -0
  96. package/smart-contracts/contracts/genesis-badges-v8.clar +88 -0
  97. package/smart-contracts/contracts/genesis-badges-v9.clar +66 -0
  98. package/smart-contracts/contracts/genesis-badges.clar +73 -0
  99. package/smart-contracts/contracts/genesis-boost-v1.clar +58 -0
  100. package/smart-contracts/contracts/genesis-core-v10.clar +87 -0
  101. package/smart-contracts/contracts/genesis-core-v2.clar +86 -0
  102. package/smart-contracts/contracts/genesis-core-v4.clar +80 -0
  103. package/smart-contracts/contracts/genesis-core-v5.clar +86 -0
  104. package/smart-contracts/contracts/genesis-core-v6.clar +98 -0
  105. package/smart-contracts/contracts/genesis-core-v8.clar +106 -0
  106. package/smart-contracts/contracts/genesis-core-v9.clar +80 -0
  107. package/smart-contracts/contracts/genesis-core.clar +93 -0
  108. package/smart-contracts/contracts/genesis-missions-v4.clar +104 -0
  109. package/smart-contracts/contracts/genesis-missions-v5.clar +86 -0
  110. package/smart-contracts/contracts/genesis-missions-v6.clar +80 -0
  111. package/smart-contracts/contracts/genesis-missions-v8.clar +81 -0
  112. package/smart-contracts/contracts/genesis-missions-v9.clar +73 -0
  113. package/smart-contracts/contracts/genesis-missions.clar +68 -0
  114. package/smart-contracts/contracts/mission-mini-001.clar +32 -0
  115. package/smart-contracts/contracts/mission-mini-002.clar +42 -0
  116. package/smart-contracts/contracts/mission-mini-003.clar +39 -0
  117. package/smart-contracts/contracts/mission-mini-004.clar +39 -0
  118. package/smart-contracts/contracts/mission-mini-005.clar +36 -0
  119. package/smart-contracts/contracts/modules/genesis-badge-lite-v1.clar +17 -0
  120. package/smart-contracts/contracts/modules/genesis-counter-v1.clar +21 -0
  121. package/smart-contracts/contracts/modules/genesis-duel-v1.clar +16 -0
  122. package/smart-contracts/contracts/modules/genesis-flag-v1.clar +21 -0
  123. package/smart-contracts/contracts/modules/genesis-leaderboard-v1.clar +88 -0
  124. package/smart-contracts/contracts/modules/genesis-lucky-v1.clar +16 -0
  125. package/smart-contracts/contracts/modules/genesis-points-v1.clar +21 -0
  126. package/smart-contracts/contracts/modules/genesis-predict-v1.clar +14 -0
  127. package/smart-contracts/contracts/modules/genesis-score-lite-v1.clar +21 -0
  128. package/smart-contracts/contracts/modules/module-1.clar +2 -0
  129. package/smart-contracts/contracts/modules/module-10.clar +2 -0
  130. package/smart-contracts/contracts/modules/module-100.clar +2 -0
  131. package/smart-contracts/contracts/modules/module-101.clar +2 -0
  132. package/smart-contracts/contracts/modules/module-102.clar +2 -0
  133. package/smart-contracts/contracts/modules/module-103.clar +2 -0
  134. package/smart-contracts/contracts/modules/module-104.clar +2 -0
  135. package/smart-contracts/contracts/modules/module-105.clar +2 -0
  136. package/smart-contracts/contracts/modules/module-106.clar +2 -0
  137. package/smart-contracts/contracts/modules/module-107.clar +2 -0
  138. package/smart-contracts/contracts/modules/module-108.clar +2 -0
  139. package/smart-contracts/contracts/modules/module-109.clar +2 -0
  140. package/smart-contracts/contracts/modules/module-11.clar +2 -0
  141. package/smart-contracts/contracts/modules/module-110.clar +2 -0
  142. package/smart-contracts/contracts/modules/module-111.clar +2 -0
  143. package/smart-contracts/contracts/modules/module-112.clar +2 -0
  144. package/smart-contracts/contracts/modules/module-113.clar +2 -0
  145. package/smart-contracts/contracts/modules/module-114.clar +2 -0
  146. package/smart-contracts/contracts/modules/module-115.clar +2 -0
  147. package/smart-contracts/contracts/modules/module-116.clar +2 -0
  148. package/smart-contracts/contracts/modules/module-117.clar +2 -0
  149. package/smart-contracts/contracts/modules/module-118.clar +2 -0
  150. package/smart-contracts/contracts/modules/module-119.clar +2 -0
  151. package/smart-contracts/contracts/modules/module-12.clar +2 -0
  152. package/smart-contracts/contracts/modules/module-120.clar +2 -0
  153. package/smart-contracts/contracts/modules/module-121.clar +2 -0
  154. package/smart-contracts/contracts/modules/module-122.clar +2 -0
  155. package/smart-contracts/contracts/modules/module-123.clar +2 -0
  156. package/smart-contracts/contracts/modules/module-124.clar +2 -0
  157. package/smart-contracts/contracts/modules/module-125.clar +2 -0
  158. package/smart-contracts/contracts/modules/module-126.clar +2 -0
  159. package/smart-contracts/contracts/modules/module-127.clar +2 -0
  160. package/smart-contracts/contracts/modules/module-128.clar +2 -0
  161. package/smart-contracts/contracts/modules/module-129.clar +2 -0
  162. package/smart-contracts/contracts/modules/module-13.clar +2 -0
  163. package/smart-contracts/contracts/modules/module-130.clar +2 -0
  164. package/smart-contracts/contracts/modules/module-131.clar +2 -0
  165. package/smart-contracts/contracts/modules/module-132.clar +2 -0
  166. package/smart-contracts/contracts/modules/module-133.clar +2 -0
  167. package/smart-contracts/contracts/modules/module-134.clar +2 -0
  168. package/smart-contracts/contracts/modules/module-135.clar +2 -0
  169. package/smart-contracts/contracts/modules/module-136.clar +2 -0
  170. package/smart-contracts/contracts/modules/module-137.clar +2 -0
  171. package/smart-contracts/contracts/modules/module-138.clar +2 -0
  172. package/smart-contracts/contracts/modules/module-14.clar +2 -0
  173. package/smart-contracts/contracts/modules/module-140.clar +2 -0
  174. package/smart-contracts/contracts/modules/module-141.clar +2 -0
  175. package/smart-contracts/contracts/modules/module-142.clar +2 -0
  176. package/smart-contracts/contracts/modules/module-143.clar +2 -0
  177. package/smart-contracts/contracts/modules/module-144.clar +2 -0
  178. package/smart-contracts/contracts/modules/module-145.clar +2 -0
  179. package/smart-contracts/contracts/modules/module-146.clar +2 -0
  180. package/smart-contracts/contracts/modules/module-147.clar +2 -0
  181. package/smart-contracts/contracts/modules/module-148.clar +2 -0
  182. package/smart-contracts/contracts/modules/module-149.clar +2 -0
  183. package/smart-contracts/contracts/modules/module-15.clar +2 -0
  184. package/smart-contracts/contracts/modules/module-150.clar +2 -0
  185. package/smart-contracts/contracts/modules/module-152.clar +2 -0
  186. package/smart-contracts/contracts/modules/module-153.clar +2 -0
  187. package/smart-contracts/contracts/modules/module-154.clar +2 -0
  188. package/smart-contracts/contracts/modules/module-156.clar +2 -0
  189. package/smart-contracts/contracts/modules/module-157.clar +2 -0
  190. package/smart-contracts/contracts/modules/module-158.clar +2 -0
  191. package/smart-contracts/contracts/modules/module-159.clar +2 -0
  192. package/smart-contracts/contracts/modules/module-16.clar +2 -0
  193. package/smart-contracts/contracts/modules/module-160.clar +2 -0
  194. package/smart-contracts/contracts/modules/module-161.clar +2 -0
  195. package/smart-contracts/contracts/modules/module-162.clar +2 -0
  196. package/smart-contracts/contracts/modules/module-163.clar +2 -0
  197. package/smart-contracts/contracts/modules/module-164.clar +2 -0
  198. package/smart-contracts/contracts/modules/module-165.clar +2 -0
  199. package/smart-contracts/contracts/modules/module-166.clar +2 -0
  200. package/smart-contracts/contracts/modules/module-167.clar +2 -0
  201. package/smart-contracts/contracts/modules/module-168.clar +2 -0
  202. package/smart-contracts/contracts/modules/module-169.clar +2 -0
  203. package/smart-contracts/contracts/modules/module-17.clar +2 -0
  204. package/smart-contracts/contracts/modules/module-171.clar +2 -0
  205. package/smart-contracts/contracts/modules/module-172.clar +2 -0
  206. package/smart-contracts/contracts/modules/module-173.clar +2 -0
  207. package/smart-contracts/contracts/modules/module-174.clar +2 -0
  208. package/smart-contracts/contracts/modules/module-175.clar +2 -0
  209. package/smart-contracts/contracts/modules/module-176.clar +2 -0
  210. package/smart-contracts/contracts/modules/module-178.clar +2 -0
  211. package/smart-contracts/contracts/modules/module-179.clar +2 -0
  212. package/smart-contracts/contracts/modules/module-18.clar +2 -0
  213. package/smart-contracts/contracts/modules/module-180.clar +2 -0
  214. package/smart-contracts/contracts/modules/module-181.clar +2 -0
  215. package/smart-contracts/contracts/modules/module-182.clar +2 -0
  216. package/smart-contracts/contracts/modules/module-183.clar +2 -0
  217. package/smart-contracts/contracts/modules/module-184.clar +2 -0
  218. package/smart-contracts/contracts/modules/module-186.clar +2 -0
  219. package/smart-contracts/contracts/modules/module-188.clar +2 -0
  220. package/smart-contracts/contracts/modules/module-189.clar +2 -0
  221. package/smart-contracts/contracts/modules/module-19.clar +2 -0
  222. package/smart-contracts/contracts/modules/module-190.clar +2 -0
  223. package/smart-contracts/contracts/modules/module-191.clar +2 -0
  224. package/smart-contracts/contracts/modules/module-192.clar +2 -0
  225. package/smart-contracts/contracts/modules/module-193.clar +2 -0
  226. package/smart-contracts/contracts/modules/module-195.clar +2 -0
  227. package/smart-contracts/contracts/modules/module-196.clar +2 -0
  228. package/smart-contracts/contracts/modules/module-197.clar +2 -0
  229. package/smart-contracts/contracts/modules/module-198.clar +2 -0
  230. package/smart-contracts/contracts/modules/module-199.clar +2 -0
  231. package/smart-contracts/contracts/modules/module-2.clar +2 -0
  232. package/smart-contracts/contracts/modules/module-20.clar +2 -0
  233. package/smart-contracts/contracts/modules/module-200.clar +2 -0
  234. package/smart-contracts/contracts/modules/module-201.clar +2 -0
  235. package/smart-contracts/contracts/modules/module-202.clar +2 -0
  236. package/smart-contracts/contracts/modules/module-203.clar +2 -0
  237. package/smart-contracts/contracts/modules/module-204.clar +2 -0
  238. package/smart-contracts/contracts/modules/module-205.clar +2 -0
  239. package/smart-contracts/contracts/modules/module-207.clar +2 -0
  240. package/smart-contracts/contracts/modules/module-209.clar +2 -0
  241. package/smart-contracts/contracts/modules/module-21.clar +2 -0
  242. package/smart-contracts/contracts/modules/module-210.clar +2 -0
  243. package/smart-contracts/contracts/modules/module-212.clar +2 -0
  244. package/smart-contracts/contracts/modules/module-213.clar +2 -0
  245. package/smart-contracts/contracts/modules/module-215.clar +2 -0
  246. package/smart-contracts/contracts/modules/module-216.clar +2 -0
  247. package/smart-contracts/contracts/modules/module-218.clar +2 -0
  248. package/smart-contracts/contracts/modules/module-219.clar +2 -0
  249. package/smart-contracts/contracts/modules/module-22.clar +2 -0
  250. package/smart-contracts/contracts/modules/module-222.clar +2 -0
  251. package/smart-contracts/contracts/modules/module-223.clar +2 -0
  252. package/smart-contracts/contracts/modules/module-224.clar +2 -0
  253. package/smart-contracts/contracts/modules/module-226.clar +2 -0
  254. package/smart-contracts/contracts/modules/module-227.clar +2 -0
  255. package/smart-contracts/contracts/modules/module-228.clar +2 -0
  256. package/smart-contracts/contracts/modules/module-23.clar +2 -0
  257. package/smart-contracts/contracts/modules/module-230.clar +2 -0
  258. package/smart-contracts/contracts/modules/module-231.clar +2 -0
  259. package/smart-contracts/contracts/modules/module-232.clar +2 -0
  260. package/smart-contracts/contracts/modules/module-234.clar +2 -0
  261. package/smart-contracts/contracts/modules/module-235.clar +2 -0
  262. package/smart-contracts/contracts/modules/module-24.clar +2 -0
  263. package/smart-contracts/contracts/modules/module-241.clar +2 -0
  264. package/smart-contracts/contracts/modules/module-243.clar +2 -0
  265. package/smart-contracts/contracts/modules/module-244.clar +2 -0
  266. package/smart-contracts/contracts/modules/module-245.clar +2 -0
  267. package/smart-contracts/contracts/modules/module-246.clar +2 -0
  268. package/smart-contracts/contracts/modules/module-247.clar +2 -0
  269. package/smart-contracts/contracts/modules/module-25.clar +2 -0
  270. package/smart-contracts/contracts/modules/module-251.clar +2 -0
  271. package/smart-contracts/contracts/modules/module-252.clar +2 -0
  272. package/smart-contracts/contracts/modules/module-253.clar +2 -0
  273. package/smart-contracts/contracts/modules/module-254.clar +2 -0
  274. package/smart-contracts/contracts/modules/module-256.clar +2 -0
  275. package/smart-contracts/contracts/modules/module-257.clar +2 -0
  276. package/smart-contracts/contracts/modules/module-258.clar +2 -0
  277. package/smart-contracts/contracts/modules/module-26.clar +2 -0
  278. package/smart-contracts/contracts/modules/module-260.clar +2 -0
  279. package/smart-contracts/contracts/modules/module-262.clar +2 -0
  280. package/smart-contracts/contracts/modules/module-266.clar +2 -0
  281. package/smart-contracts/contracts/modules/module-267.clar +2 -0
  282. package/smart-contracts/contracts/modules/module-269.clar +2 -0
  283. package/smart-contracts/contracts/modules/module-27.clar +2 -0
  284. package/smart-contracts/contracts/modules/module-272.clar +2 -0
  285. package/smart-contracts/contracts/modules/module-275.clar +2 -0
  286. package/smart-contracts/contracts/modules/module-276.clar +2 -0
  287. package/smart-contracts/contracts/modules/module-277.clar +2 -0
  288. package/smart-contracts/contracts/modules/module-279.clar +2 -0
  289. package/smart-contracts/contracts/modules/module-28.clar +2 -0
  290. package/smart-contracts/contracts/modules/module-280.clar +2 -0
  291. package/smart-contracts/contracts/modules/module-282.clar +2 -0
  292. package/smart-contracts/contracts/modules/module-283.clar +2 -0
  293. package/smart-contracts/contracts/modules/module-286.clar +2 -0
  294. package/smart-contracts/contracts/modules/module-29.clar +2 -0
  295. package/smart-contracts/contracts/modules/module-291.clar +2 -0
  296. package/smart-contracts/contracts/modules/module-295.clar +2 -0
  297. package/smart-contracts/contracts/modules/module-296.clar +2 -0
  298. package/smart-contracts/contracts/modules/module-3.clar +2 -0
  299. package/smart-contracts/contracts/modules/module-30.clar +2 -0
  300. package/smart-contracts/contracts/modules/module-31.clar +2 -0
  301. package/smart-contracts/contracts/modules/module-32.clar +2 -0
  302. package/smart-contracts/contracts/modules/module-33.clar +2 -0
  303. package/smart-contracts/contracts/modules/module-34.clar +2 -0
  304. package/smart-contracts/contracts/modules/module-35.clar +2 -0
  305. package/smart-contracts/contracts/modules/module-36.clar +2 -0
  306. package/smart-contracts/contracts/modules/module-37.clar +2 -0
  307. package/smart-contracts/contracts/modules/module-38.clar +2 -0
  308. package/smart-contracts/contracts/modules/module-39.clar +2 -0
  309. package/smart-contracts/contracts/modules/module-4.clar +2 -0
  310. package/smart-contracts/contracts/modules/module-40.clar +2 -0
  311. package/smart-contracts/contracts/modules/module-41.clar +2 -0
  312. package/smart-contracts/contracts/modules/module-42.clar +2 -0
  313. package/smart-contracts/contracts/modules/module-43.clar +2 -0
  314. package/smart-contracts/contracts/modules/module-44.clar +2 -0
  315. package/smart-contracts/contracts/modules/module-45.clar +2 -0
  316. package/smart-contracts/contracts/modules/module-46.clar +2 -0
  317. package/smart-contracts/contracts/modules/module-47.clar +2 -0
  318. package/smart-contracts/contracts/modules/module-48.clar +2 -0
  319. package/smart-contracts/contracts/modules/module-49.clar +2 -0
  320. package/smart-contracts/contracts/modules/module-5.clar +2 -0
  321. package/smart-contracts/contracts/modules/module-50.clar +2 -0
  322. package/smart-contracts/contracts/modules/module-51.clar +2 -0
  323. package/smart-contracts/contracts/modules/module-52.clar +2 -0
  324. package/smart-contracts/contracts/modules/module-53.clar +2 -0
  325. package/smart-contracts/contracts/modules/module-54.clar +2 -0
  326. package/smart-contracts/contracts/modules/module-55.clar +2 -0
  327. package/smart-contracts/contracts/modules/module-56.clar +2 -0
  328. package/smart-contracts/contracts/modules/module-57.clar +2 -0
  329. package/smart-contracts/contracts/modules/module-58.clar +2 -0
  330. package/smart-contracts/contracts/modules/module-59.clar +2 -0
  331. package/smart-contracts/contracts/modules/module-6.clar +2 -0
  332. package/smart-contracts/contracts/modules/module-60.clar +2 -0
  333. package/smart-contracts/contracts/modules/module-61.clar +2 -0
  334. package/smart-contracts/contracts/modules/module-62.clar +2 -0
  335. package/smart-contracts/contracts/modules/module-63.clar +2 -0
  336. package/smart-contracts/contracts/modules/module-64.clar +2 -0
  337. package/smart-contracts/contracts/modules/module-65.clar +2 -0
  338. package/smart-contracts/contracts/modules/module-66.clar +2 -0
  339. package/smart-contracts/contracts/modules/module-67.clar +2 -0
  340. package/smart-contracts/contracts/modules/module-68.clar +2 -0
  341. package/smart-contracts/contracts/modules/module-69.clar +2 -0
  342. package/smart-contracts/contracts/modules/module-7.clar +2 -0
  343. package/smart-contracts/contracts/modules/module-70.clar +2 -0
  344. package/smart-contracts/contracts/modules/module-71.clar +2 -0
  345. package/smart-contracts/contracts/modules/module-72.clar +2 -0
  346. package/smart-contracts/contracts/modules/module-73.clar +2 -0
  347. package/smart-contracts/contracts/modules/module-74.clar +2 -0
  348. package/smart-contracts/contracts/modules/module-75.clar +2 -0
  349. package/smart-contracts/contracts/modules/module-76.clar +2 -0
  350. package/smart-contracts/contracts/modules/module-77.clar +2 -0
  351. package/smart-contracts/contracts/modules/module-78.clar +2 -0
  352. package/smart-contracts/contracts/modules/module-79.clar +2 -0
  353. package/smart-contracts/contracts/modules/module-8.clar +2 -0
  354. package/smart-contracts/contracts/modules/module-80.clar +2 -0
  355. package/smart-contracts/contracts/modules/module-81.clar +2 -0
  356. package/smart-contracts/contracts/modules/module-82.clar +2 -0
  357. package/smart-contracts/contracts/modules/module-83.clar +2 -0
  358. package/smart-contracts/contracts/modules/module-84.clar +2 -0
  359. package/smart-contracts/contracts/modules/module-85.clar +2 -0
  360. package/smart-contracts/contracts/modules/module-86.clar +2 -0
  361. package/smart-contracts/contracts/modules/module-87.clar +2 -0
  362. package/smart-contracts/contracts/modules/module-88.clar +2 -0
  363. package/smart-contracts/contracts/modules/module-89.clar +2 -0
  364. package/smart-contracts/contracts/modules/module-9.clar +2 -0
  365. package/smart-contracts/contracts/modules/module-90.clar +2 -0
  366. package/smart-contracts/contracts/modules/module-91.clar +2 -0
  367. package/smart-contracts/contracts/modules/module-92.clar +2 -0
  368. package/smart-contracts/contracts/modules/module-93.clar +2 -0
  369. package/smart-contracts/contracts/modules/module-94.clar +2 -0
  370. package/smart-contracts/contracts/modules/module-95.clar +2 -0
  371. package/smart-contracts/contracts/modules/module-96.clar +2 -0
  372. package/smart-contracts/contracts/modules/module-97.clar +2 -0
  373. package/smart-contracts/contracts/modules/module-98.clar +2 -0
  374. package/smart-contracts/contracts/modules/module-99.clar +2 -0
  375. package/smart-contracts/contracts/reputation-engine.clar +131 -0
  376. package/smart-contracts/contracts/sip-010-trait.clar +38 -0
  377. package/smart-contracts/contracts/staking-refinery-v3.clar +138 -0
  378. package/smart-contracts/contracts/staking-refinery-v4.clar +125 -0
  379. package/smart-contracts/contracts/staking-refinery-v5.clar +153 -0
  380. package/smart-contracts/contracts/staking-refinery-v6.clar +122 -0
  381. package/smart-contracts/contracts/staking-refinery-v7.clar +144 -0
  382. package/smart-contracts/contracts/staking-refinery.clar +80 -0
  383. package/smart-contracts/contracts/token-one-v3.clar +74 -0
  384. package/smart-contracts/contracts/token-one-v4.clar +51 -0
  385. package/smart-contracts/contracts/token-one-v5.clar +78 -0
  386. package/smart-contracts/contracts/token-one-v6.clar +91 -0
  387. package/smart-contracts/contracts/token-one-v7.clar +79 -0
  388. package/smart-contracts/contracts/token-one.clar +86 -0
  389. package/smart-contracts/contracts/token-poin-trait.clar +35 -0
  390. package/smart-contracts/contracts/token-poin-v3.clar +87 -0
  391. package/smart-contracts/contracts/token-poin-v4.clar +72 -0
  392. package/smart-contracts/contracts/token-poin-v5.clar +68 -0
  393. package/smart-contracts/contracts/token-poin-v6.clar +61 -0
  394. package/smart-contracts/contracts/token-poin-v7.clar +55 -0
  395. package/smart-contracts/contracts/token-poin.clar +85 -0
  396. package/smart-contracts/contracts/utility-gacha.clar +69 -0
  397. package/smart-contracts/deployments/default.mainnet-plan.yaml +18 -0
  398. package/smart-contracts/mission-mini-001.clar +0 -0
  399. package/smart-contracts/mission-mini-002.clar +0 -0
  400. package/smart-contracts/mission-mini-003.clar +0 -0
  401. package/smart-contracts/mission-mini-004.clar +0 -0
  402. package/smart-contracts/mission-mini-005.clar +0 -0
  403. package/smart-contracts/package-lock.json +2990 -0
  404. package/smart-contracts/package.json +24 -0
  405. package/smart-contracts/scripts/interact-modules.ts +1 -0
  406. package/smart-contracts/settings/Devnet.toml +155 -0
  407. package/smart-contracts/tests/genesis-badges.test.ts +21 -0
  408. package/smart-contracts/tests/genesis-core.test.ts +21 -0
  409. package/smart-contracts/tests/genesis-missions.test.ts +21 -0
  410. package/smart-contracts/tests/interact-reputation.ts +8 -0
  411. package/smart-contracts/tests/reputation-engine.test.ts +41 -0
  412. package/smart-contracts/tests/reputation.test.ts +15 -0
  413. package/smart-contracts/tests/token-one.test.ts +102 -0
  414. package/smart-contracts/tsconfig.json +26 -0
  415. package/smart-contracts/vitest.config.js +42 -0
  416. package/src/App.css +42 -0
  417. package/src/App.jsx +357 -0
  418. package/src/assets/react.svg +1 -0
  419. package/src/components/Layout.jsx +114 -0
  420. package/src/helper.js +153 -0
  421. package/src/index.css +21 -0
  422. package/src/main.jsx +160 -0
  423. package/src/pages/Gaming.jsx +177 -0
  424. package/src/pages/Home.jsx +153 -0
  425. package/src/pages/LeaderboardCard.tsx +93 -0
  426. package/src/pages/Profile.jsx +299 -0
  427. package/src/pages/Tasks.jsx +128 -0
  428. package/src/pages/Vault.jsx +524 -0
  429. package/src/polyfills.js +126 -0
  430. package/src/supabaseClient.js +141 -0
  431. package/src/utils.js +166 -0
  432. package/tailwind.config.js +42 -0
  433. package/temp-log.txt +4 -0
  434. package/vercel.json +8 -0
  435. package/vite.config.js +34 -0
@@ -0,0 +1,24 @@
1
+
2
+ {
3
+ "name": "smart-contracts-tests",
4
+ "version": "1.0.0",
5
+ "description": "Run unit tests on this project.",
6
+ "type": "module",
7
+ "private": true,
8
+ "scripts": {
9
+ "test": "vitest run",
10
+ "test:report": "vitest run -- --coverage --costs",
11
+ "test:watch": "chokidar \"tests/**/*.ts\" \"contracts/**/*.clar\" -c \"npm run test:report\""
12
+ },
13
+ "author": "",
14
+ "license": "ISC",
15
+ "dependencies": {
16
+ "@hirosystems/clarinet-sdk": "^2.3.2",
17
+ "@stacks/transactions": "^6.12.0",
18
+ "chokidar-cli": "^3.0.0",
19
+ "typescript": "^5.3.3",
20
+ "vite": "^5.1.4",
21
+ "vitest": "^1.3.1",
22
+ "vitest-environment-clarinet": "^2.0.0"
23
+ }
24
+ }
@@ -0,0 +1 @@
1
+ console.log("Module interaction script placeholder for testing counter, flag, and score modules.");
@@ -0,0 +1,155 @@
1
+ [network]
2
+ name = "devnet"
3
+ deployment_fee_rate = 10
4
+
5
+ [accounts.deployer]
6
+ mnemonic = "twice kind fence tip hidden tilt action fragile skin nothing glory cousin green tomorrow spring wrist shed math olympic multiply hip blue scout claw"
7
+ balance = 100_000_000_000_000
8
+ # secret_key: 753b7cc01a1a2e86221266a154af739463fce51219d97e4f856cd7200c3bd2a601
9
+ # stx_address: ST1PQHQKV0RJXZFY1DGX8MNSNYVE3VGZJSRTPGZGM
10
+ # btc_address: mqVnk6NPRdhntvfm4hh9vvjiRkFDUuSYsH
11
+
12
+ [accounts.wallet_1]
13
+ mnemonic = "sell invite acquire kitten bamboo drastic jelly vivid peace spawn twice guilt pave pen trash pretty park cube fragile unaware remain midnight betray rebuild"
14
+ balance = 100_000_000_000_000
15
+ # secret_key: 7287ba251d44a4d3fd9276c88ce34c5c52a038955511cccaf77e61068649c17801
16
+ # stx_address: ST1SJ3DTE5DN7X54YDH5D64R3BCB6A2AG2ZQ8YPD5
17
+ # btc_address: mr1iPkD9N3RJZZxXRk7xF9d36gffa6exNC
18
+
19
+ [accounts.wallet_2]
20
+ mnemonic = "hold excess usual excess ring elephant install account glad dry fragile donkey gaze humble truck breeze nation gasp vacuum limb head keep delay hospital"
21
+ balance = 100_000_000_000_000
22
+ # secret_key: 530d9f61984c888536871c6573073bdfc0058896dc1adfe9a6a10dfacadc209101
23
+ # stx_address: ST2CY5V39NHDPWSXMW9QDT3HC3GD6Q6XX4CFRK9AG
24
+ # btc_address: muYdXKmX9bByAueDe6KFfHd5Ff1gdN9ErG
25
+
26
+ [accounts.wallet_3]
27
+ mnemonic = "cycle puppy glare enroll cost improve round trend wrist mushroom scorpion tower claim oppose clever elephant dinosaur eight problem before frozen dune wagon high"
28
+ balance = 100_000_000_000_000
29
+ # secret_key: d655b2523bcd65e34889725c73064feb17ceb796831c0e111ba1a552b0f31b3901
30
+ # stx_address: ST2JHG361ZXG51QTKY2NQCVBPPRRE2KZB1HR05NNC
31
+ # btc_address: mvZtbibDAAA3WLpY7zXXFqRa3T4XSknBX7
32
+
33
+ [accounts.wallet_4]
34
+ mnemonic = "board list obtain sugar hour worth raven scout denial thunder horse logic fury scorpion fold genuine phrase wealth news aim below celery when cabin"
35
+ balance = 100_000_000_000_000
36
+ # secret_key: f9d7206a47f14d2870c163ebab4bf3e70d18f5d14ce1031f3902fbbc894fe4c701
37
+ # stx_address: ST2NEB84ASENDXKYGJPQW86YXQCEFEX2ZQPG87ND
38
+ # btc_address: mg1C76bNTutiCDV3t9nWhZs3Dc8LzUufj8
39
+
40
+ [accounts.wallet_5]
41
+ mnemonic = "hurry aunt blame peanut heavy update captain human rice crime juice adult scale device promote vast project quiz unit note reform update climb purchase"
42
+ balance = 100_000_000_000_000
43
+ # secret_key: 3eccc5dac8056590432db6a35d52b9896876a3d5cbdea53b72400bc9c2099fe801
44
+ # stx_address: ST2REHHS5J3CERCRBEPMGH7921Q6PYKAADT7JP2VB
45
+ # btc_address: mweN5WVqadScHdA81aATSdcVr4B6dNokqx
46
+
47
+ [accounts.wallet_6]
48
+ mnemonic = "area desk dutch sign gold cricket dawn toward giggle vibrant indoor bench warfare wagon number tiny universe sand talk dilemma pottery bone trap buddy"
49
+ balance = 100_000_000_000_000
50
+ # secret_key: 7036b29cb5e235e5fd9b09ae3e8eec4404e44906814d5d01cbca968a60ed4bfb01
51
+ # stx_address: ST3AM1A56AK2C1XAFJ4115ZSV26EB49BVQ10MGCS0
52
+ # btc_address: mzxXgV6e4BZSsz8zVHm3TmqbECt7mbuErt
53
+
54
+ [accounts.wallet_7]
55
+ mnemonic = "prevent gallery kind limb income control noise together echo rival record wedding sense uncover school version force bleak nuclear include danger skirt enact arrow"
56
+ balance = 100_000_000_000_000
57
+ # secret_key: b463f0df6c05d2f156393eee73f8016c5372caa0e9e29a901bb7171d90dc4f1401
58
+ # stx_address: ST3PF13W7Z0RRM42A8VZRVFQ75SV1K26RXEP8YGKJ
59
+ # btc_address: n37mwmru2oaVosgfuvzBwgV2ysCQRrLko7
60
+
61
+ [accounts.wallet_8]
62
+ mnemonic = "female adjust gallery certain visit token during great side clown fitness like hurt clip knife warm bench start reunion globe detail dream depend fortune"
63
+ balance = 100_000_000_000_000
64
+ # secret_key: 6a1a754ba863d7bab14adbbc3f8ebb090af9e871ace621d3e5ab634e1422885e01
65
+ # stx_address: ST3NBRSFKX28FQ2ZJ1MAKX58HKHSDGNV5N7R21XCP
66
+ # btc_address: n2v875jbJ4RjBnTjgbfikDfnwsDV5iUByw
67
+
68
+ [accounts.faucet]
69
+ mnemonic = "shadow private easily thought say logic fault paddle word top book during ignore notable orange flight clock image wealth health outside kitten belt reform"
70
+ balance = 100_000_000_000_000
71
+ # secret_key: de433bdfa14ec43aa1098d5be594c8ffb20a31485ff9de2923b2689471c401b801
72
+ # stx_address: STNHKEPYEPJ8ET55ZZ0M5A34J0R3N5FM2CMMMAZ6
73
+ # btc_address: mjSrB3wS4xab3kYqFktwBzfTdPg367ZJ2d
74
+
75
+ [devnet]
76
+ disable_stacks_explorer = false
77
+ disable_stacks_api = false
78
+ # disable_postgres = false
79
+ # disable_subnet_api = false
80
+ # disable_bitcoin_explorer = true
81
+ # working_dir = "tmp/devnet"
82
+ # stacks_node_events_observers = ["host.docker.internal:8002"]
83
+ # miner_mnemonic = "fragile loan twenty basic net assault jazz absorb diet talk art shock innocent float punch travel gadget embrace caught blossom hockey surround initial reduce"
84
+ # miner_derivation_path = "m/44'/5757'/0'/0/0"
85
+ # faucet_mnemonic = "shadow private easily thought say logic fault paddle word top book during ignore notable orange flight clock image wealth health outside kitten belt reform"
86
+ # faucet_derivation_path = "m/44'/5757'/0'/0/0"
87
+ # orchestrator_port = 20445
88
+ # bitcoin_node_p2p_port = 18444
89
+ # bitcoin_node_rpc_port = 18443
90
+ # bitcoin_node_username = "devnet"
91
+ # bitcoin_node_password = "devnet"
92
+ # bitcoin_controller_block_time = 30_000
93
+ # stacks_node_rpc_port = 20443
94
+ # stacks_node_p2p_port = 20444
95
+ # stacks_api_port = 3999
96
+ # stacks_api_events_port = 3700
97
+ # bitcoin_explorer_port = 8001
98
+ # stacks_explorer_port = 8000
99
+ # postgres_port = 5432
100
+ # postgres_username = "postgres"
101
+ # postgres_password = "postgres"
102
+ # postgres_database = "postgres"
103
+ # bitcoin_node_image_url = "quay.io/hirosystems/bitcoind:26.0"
104
+ # stacks_node_image_url = "quay.io/hirosystems/stacks-node:devnet-3.0"
105
+ # stacks_signer_image_url = "quay.io/hirosystems/stacks-signer:devnet-3.0"
106
+ # stacks_api_image_url = "hirosystems/stacks-blockchain-api:master"
107
+ # stacks_explorer_image_url = "hirosystems/explorer:latest"
108
+ # bitcoin_explorer_image_url = "quay.io/hirosystems/bitcoin-explorer:devnet"
109
+ # postgres_image_url = "postgres:alpine"
110
+ # enable_subnet_node = true
111
+ # subnet_node_image_url = "hirosystems/stacks-subnets:0.8.1"
112
+ # subnet_leader_mnemonic = "twice kind fence tip hidden tilt action fragile skin nothing glory cousin green tomorrow spring wrist shed math olympic multiply hip blue scout claw"
113
+ # subnet_leader_derivation_path = "m/44'/5757'/0'/0/0"
114
+ # subnet_contract_id = "ST173JK7NZBA4BS05ZRATQH1K89YJMTGEH1Z5J52E.subnet-v3-0-1"
115
+ # subnet_node_rpc_port = 30443
116
+ # subnet_node_p2p_port = 30444
117
+ # subnet_events_ingestion_port = 30445
118
+ # subnet_node_events_observers = ["host.docker.internal:8002"]
119
+ # subnet_api_image_url = "hirosystems/stacks-blockchain-api:master"
120
+ # subnet_api_postgres_database = "subnet_api"
121
+
122
+ # epoch_2_0 = 100
123
+ # epoch_2_05 = 100
124
+ # epoch_2_1 = 101
125
+ # epoch_2_2 = 102
126
+ # epoch_2_3 = 103
127
+ # epoch_2_4 = 104
128
+ # epoch_2_5 = 108
129
+ # epoch_3_0 = 142
130
+
131
+ # Send some stacking orders
132
+ [[devnet.pox_stacking_orders]]
133
+ start_at_cycle = 1
134
+ duration = 10
135
+ auto_extend = true
136
+ wallet = "wallet_1"
137
+ slots = 2
138
+ btc_address = "mr1iPkD9N3RJZZxXRk7xF9d36gffa6exNC"
139
+
140
+ [[devnet.pox_stacking_orders]]
141
+ start_at_cycle = 1
142
+ duration = 10
143
+ auto_extend = true
144
+ wallet = "wallet_2"
145
+ slots = 2
146
+ btc_address = "muYdXKmX9bByAueDe6KFfHd5Ff1gdN9ErG"
147
+
148
+ [[devnet.pox_stacking_orders]]
149
+ start_at_cycle = 1
150
+ duration = 10
151
+ auto_extend = true
152
+ wallet = "wallet_3"
153
+ slots = 2
154
+ btc_address = "mvZtbibDAAA3WLpY7zXXFqRa3T4XSknBX7"
155
+
@@ -0,0 +1,21 @@
1
+
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ const accounts = simnet.getAccounts();
5
+ const address1 = accounts.get("wallet_1")!;
6
+
7
+ /*
8
+ The test below is an example. To learn more, read the testing documentation here:
9
+ https://docs.hiro.so/stacks/clarinet-js-sdk
10
+ */
11
+
12
+ describe("example tests", () => {
13
+ it("ensures simnet is well initalised", () => {
14
+ expect(simnet.blockHeight).toBeDefined();
15
+ });
16
+
17
+ // it("shows an example", () => {
18
+ // const { result } = simnet.callReadOnlyFn("counter", "get-counter", [], address1);
19
+ // expect(result).toBeUint(0);
20
+ // });
21
+ });
@@ -0,0 +1,21 @@
1
+
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ const accounts = simnet.getAccounts();
5
+ const address1 = accounts.get("wallet_1")!;
6
+
7
+ /*
8
+ The test below is an example. To learn more, read the testing documentation here:
9
+ https://docs.hiro.so/stacks/clarinet-js-sdk
10
+ */
11
+
12
+ describe("example tests", () => {
13
+ it("ensures simnet is well initalised", () => {
14
+ expect(simnet.blockHeight).toBeDefined();
15
+ });
16
+
17
+ // it("shows an example", () => {
18
+ // const { result } = simnet.callReadOnlyFn("counter", "get-counter", [], address1);
19
+ // expect(result).toBeUint(0);
20
+ // });
21
+ });
@@ -0,0 +1,21 @@
1
+
2
+ import { describe, expect, it } from "vitest";
3
+
4
+ const accounts = simnet.getAccounts();
5
+ const address1 = accounts.get("wallet_1")!;
6
+
7
+ /*
8
+ The test below is an example. To learn more, read the testing documentation here:
9
+ https://docs.hiro.so/stacks/clarinet-js-sdk
10
+ */
11
+
12
+ describe("example tests", () => {
13
+ it("ensures simnet is well initalised", () => {
14
+ expect(simnet.blockHeight).toBeDefined();
15
+ });
16
+
17
+ // it("shows an example", () => {
18
+ // const { result } = simnet.callReadOnlyFn("counter", "get-counter", [], address1);
19
+ // expect(result).toBeUint(0);
20
+ // });
21
+ });
@@ -0,0 +1,8 @@
1
+ import { makeContractCall } from "@stacks/transactions";
2
+
3
+ async function interact() {
4
+ console.log("Triggering reputation update...");
5
+ // placeholder for real interaction logic
6
+ }
7
+
8
+ interact();
@@ -0,0 +1,41 @@
1
+ import { Clarinet, Tx, Chain, Account, types } from "clarinet";
2
+
3
+ Clarinet.test({
4
+ name: "Initialize and increase reputation",
5
+ async fn(chain: Chain, accounts: Map<string, Account>) {
6
+
7
+ const deployer = accounts.get("deployer")!;
8
+ const wallet1 = accounts.get("wallet_1")!;
9
+
10
+ let block = chain.mineBlock([
11
+ Tx.contractCall(
12
+ "reputation-engine",
13
+ "init-user",
14
+ [types.principal(wallet1.address)],
15
+ wallet1.address
16
+ )
17
+ ]);
18
+
19
+ block.receipts[0].result.expectOk();
20
+
21
+ block = chain.mineBlock([
22
+ Tx.contractCall(
23
+ "reputation-engine",
24
+ "increase-score",
25
+ [types.principal(wallet1.address), types.uint(100)],
26
+ deployer.address
27
+ )
28
+ ]);
29
+
30
+ block.receipts[0].result.expectOk();
31
+
32
+ let call = chain.callReadOnlyFn(
33
+ "reputation-engine",
34
+ "get-user",
35
+ [types.principal(wallet1.address)],
36
+ deployer.address
37
+ );
38
+
39
+ call.result.expectSome();
40
+ }
41
+ });
@@ -0,0 +1,15 @@
1
+ import { describe, it, expect } from "vitest";
2
+
3
+ describe("Reputation Engine", () => {
4
+ it("should initialize correctly", () => {
5
+ const initialScore = 0;
6
+ expect(initialScore).toBe(0);
7
+ });
8
+
9
+ it("should increment score logic", () => {
10
+ const current = 10;
11
+ const added = 5;
12
+ const result = current + added;
13
+ expect(result).toBe(15);
14
+ });
15
+ });
@@ -0,0 +1,102 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { Cl } from "@stacks/transactions";
3
+
4
+ const accounts = simnet.getAccounts();
5
+ const deployer = accounts.get("deployer")!;
6
+ const wallet1 = accounts.get("wallet_1")!;
7
+ const wallet2 = accounts.get("wallet_2")!;
8
+
9
+ describe("Token One (SIP-010) Test Suite", () => {
10
+ it("ensures simnet is well initialised", () => {
11
+ expect(simnet.blockHeight).toBeDefined();
12
+ });
13
+
14
+ describe("Token Metadata", () => {
15
+ it("returns correct token name", () => {
16
+ const { result } = simnet.callReadOnlyFn("token-one", "get-name", [], deployer);
17
+ expect(result).toBeOk(Cl.stringAscii("Stacks One"));
18
+ });
19
+
20
+ it("returns correct token symbol", () => {
21
+ const { result } = simnet.callReadOnlyFn("token-one", "get-symbol", [], deployer);
22
+ expect(result).toBeOk(Cl.stringAscii("ONE"));
23
+ });
24
+
25
+ it("returns correct decimals", () => {
26
+ const { result } = simnet.callReadOnlyFn("token-one", "get-decimals", [], deployer);
27
+ expect(result).toBeOk(Cl.uint(6));
28
+ });
29
+
30
+ it("returns correct initial total supply (0)", () => {
31
+ const { result } = simnet.callReadOnlyFn("token-one", "get-total-supply", [], deployer);
32
+ expect(result).toBeOk(Cl.uint(0));
33
+ });
34
+ });
35
+
36
+ describe("Minting and Balances", () => {
37
+ it("allows contract owner to mint tokens", () => {
38
+ const mintAmount = 1000000;
39
+
40
+ const { result } = simnet.callPublicFn(
41
+ "token-one",
42
+ "mint",
43
+ [Cl.uint(mintAmount), Cl.principal(wallet1)],
44
+ deployer
45
+ );
46
+
47
+ expect(result).toBeOk(Cl.bool(true));
48
+
49
+ // Verify wallet1 balance
50
+ const balance = simnet.callReadOnlyFn("token-one", "get-balance", [Cl.principal(wallet1)], deployer);
51
+ expect(balance.result).toBeOk(Cl.uint(mintAmount));
52
+ });
53
+
54
+ it("prevents unauthorized wallets from minting", () => {
55
+ const { result } = simnet.callPublicFn(
56
+ "token-one",
57
+ "mint",
58
+ [Cl.uint(1000000), Cl.principal(wallet2)],
59
+ wallet1
60
+ );
61
+
62
+ expect(result).toBeErr(Cl.uint(101));
63
+ });
64
+ });
65
+
66
+ describe("Transfers", () => {
67
+ it("allows successful transfer between wallets", () => {
68
+ // 1. Mint 1M tokens to wallet1
69
+ simnet.callPublicFn("token-one", "mint", [Cl.uint(1000000), Cl.principal(wallet1)], deployer);
70
+
71
+ // 2. Transfer 400k tokens from wallet1 to wallet2
72
+ const { result } = simnet.callPublicFn(
73
+ "token-one",
74
+ "transfer",
75
+ [Cl.uint(400000), Cl.principal(wallet1), Cl.principal(wallet2), Cl.none()],
76
+ wallet1
77
+ );
78
+ expect(result).toBeOk(Cl.bool(true));
79
+
80
+ // 3. Verify balances
81
+ const bal1 = simnet.callReadOnlyFn("token-one", "get-balance", [Cl.principal(wallet1)], deployer);
82
+ expect(bal1.result).toBeOk(Cl.uint(600000));
83
+
84
+ const bal2 = simnet.callReadOnlyFn("token-one", "get-balance", [Cl.principal(wallet2)], deployer);
85
+ expect(bal2.result).toBeOk(Cl.uint(400000));
86
+ });
87
+
88
+ it("prevents transfer if sender is not tx-sender", () => {
89
+ simnet.callPublicFn("token-one", "mint", [Cl.uint(1000000), Cl.principal(wallet1)], deployer);
90
+
91
+ // wallet2 tries to maliciously transfer wallet1's tokens
92
+ const { result } = simnet.callPublicFn(
93
+ "token-one",
94
+ "transfer",
95
+ [Cl.uint(100000), Cl.principal(wallet1), Cl.principal(wallet2), Cl.none()],
96
+ wallet2
97
+ );
98
+
99
+ expect(result).toBeErr(Cl.uint(101));
100
+ });
101
+ });
102
+ });
@@ -0,0 +1,26 @@
1
+
2
+ {
3
+ "compilerOptions": {
4
+ "target": "ESNext",
5
+ "useDefineForClassFields": true,
6
+ "module": "ESNext",
7
+ "lib": ["ESNext"],
8
+ "skipLibCheck": true,
9
+
10
+ "moduleResolution": "bundler",
11
+ "allowImportingTsExtensions": true,
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "noEmit": true,
15
+
16
+ "strict": true,
17
+ "noImplicitAny": true,
18
+ "noUnusedLocals": true,
19
+ "noUnusedParameters": true,
20
+ "noFallthroughCasesInSwitch": true
21
+ },
22
+ "include": [
23
+ "node_modules/@hirosystems/clarinet-sdk/vitest-helpers/src",
24
+ "tests"
25
+ ]
26
+ }
@@ -0,0 +1,42 @@
1
+
2
+ /// <reference types="vitest" />
3
+
4
+ import { defineConfig } from "vite";
5
+ import { vitestSetupFilePath, getClarinetVitestsArgv } from "@hirosystems/clarinet-sdk/vitest";
6
+
7
+ /*
8
+ In this file, Vitest is configured so that it works seamlessly with Clarinet and the Simnet.
9
+
10
+ The `vitest-environment-clarinet` will initialise the clarinet-sdk
11
+ and make the `simnet` object available globally in the test files.
12
+
13
+ `vitestSetupFilePath` points to a file in the `@hirosystems/clarinet-sdk` package that does two things:
14
+ - run `before` hooks to initialize the simnet and `after` hooks to collect costs and coverage reports.
15
+ - load custom vitest matchers to work with Clarity values (such as `expect(...).toBeUint()`)
16
+
17
+ The `getClarinetVitestsArgv()` will parse options passed to the command `vitest run --`
18
+ - vitest run -- --manifest ./Clarinet.toml # pass a custom path
19
+ - vitest run -- --coverage --costs # collect coverage and cost reports
20
+ */
21
+
22
+ export default defineConfig({
23
+ test: {
24
+ environment: "clarinet", // use vitest-environment-clarinet
25
+ pool: "forks",
26
+ poolOptions: {
27
+ threads: { singleThread: true },
28
+ forks: { singleFork: true },
29
+ },
30
+ setupFiles: [
31
+ vitestSetupFilePath,
32
+ // custom setup files can be added here
33
+ ],
34
+ environmentOptions: {
35
+ clarinet: {
36
+ ...getClarinetVitestsArgv(),
37
+ // add or override options
38
+ },
39
+ },
40
+ },
41
+ });
42
+
package/src/App.css ADDED
@@ -0,0 +1,42 @@
1
+ #root {
2
+ max-width: 1280px;
3
+ margin: 0 auto;
4
+ padding: 2rem;
5
+ text-align: center;
6
+ }
7
+
8
+ .logo {
9
+ height: 6em;
10
+ padding: 1.5em;
11
+ will-change: filter;
12
+ transition: filter 300ms;
13
+ }
14
+ .logo:hover {
15
+ filter: drop-shadow(0 0 2em #646cffaa);
16
+ }
17
+ .logo.react:hover {
18
+ filter: drop-shadow(0 0 2em #61dafbaa);
19
+ }
20
+
21
+ @keyframes logo-spin {
22
+ from {
23
+ transform: rotate(0deg);
24
+ }
25
+ to {
26
+ transform: rotate(360deg);
27
+ }
28
+ }
29
+
30
+ @media (prefers-reduced-motion: no-preference) {
31
+ a:nth-of-type(2) .logo {
32
+ animation: logo-spin infinite 20s linear;
33
+ }
34
+ }
35
+
36
+ .card {
37
+ padding: 2em;
38
+ }
39
+
40
+ .read-the-docs {
41
+ color: #888;
42
+ }