@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,299 @@
1
+ import React, { useState, useEffect, useCallback } from 'react';
2
+ import { StacksMainnet } from '@stacks/network';
3
+ import { callReadOnlyFunction, standardPrincipalCV, cvToValue } from '@stacks/transactions';
4
+ import { userSession } from '../supabaseClient';
5
+ import { Wallet, Award, Zap, Box, Copy, ExternalLink, RefreshCw, Hexagon, CheckCircle } from 'lucide-react';
6
+
7
+ // --- CONFIGURATION ---
8
+ const CONTRACT_ADDRESS = 'SP3GHKMV4GSYNA8WGBX83DACG80K1RRVQZAZMB9J3';
9
+
10
+ const Profile = () => {
11
+ const [userData, setUserData] = useState(null);
12
+ const [address, setAddress] = useState('');
13
+ const [balances, setBalances] = useState({ poin: 0, one: 0 });
14
+ const [badges, setBadges] = useState([]);
15
+ const [loading, setLoading] = useState(true);
16
+ const [copied, setCopied] = useState(false);
17
+
18
+ const network = new StacksMainnet();
19
+
20
+ const fetchData = useCallback(async () => {
21
+ if (!userSession.isUserSignedIn()) {
22
+ setLoading(false);
23
+ return;
24
+ }
25
+
26
+ setLoading(true);
27
+ const user = userSession.loadUserData();
28
+ setUserData(user);
29
+
30
+ if (user?.profile?.stxAddress) {
31
+ const stxAddress = user.profile.stxAddress.mainnet;
32
+ setAddress(stxAddress);
33
+ await Promise.all([
34
+ fetchBalances(stxAddress),
35
+ fetchBadges(stxAddress)
36
+ ]);
37
+ }
38
+ setLoading(false);
39
+ }, []);
40
+
41
+ useEffect(() => {
42
+ fetchData();
43
+ }, [fetchData]);
44
+
45
+ // --- DATA FETCHING ---
46
+ const fetchBalances = async (userAddress) => {
47
+ try {
48
+ const [poinData, oneData] = await Promise.all([
49
+ callReadOnlyFunction({
50
+ contractAddress: CONTRACT_ADDRESS,
51
+ contractName: 'token-poin',
52
+ functionName: 'get-balance',
53
+ functionArgs: [standardPrincipalCV(userAddress)],
54
+ network,
55
+ senderAddress: userAddress
56
+ }),
57
+ callReadOnlyFunction({
58
+ contractAddress: CONTRACT_ADDRESS,
59
+ contractName: 'token-one',
60
+ functionName: 'get-balance',
61
+ functionArgs: [standardPrincipalCV(userAddress)],
62
+ network,
63
+ senderAddress: userAddress
64
+ })
65
+ ]);
66
+
67
+ setBalances({
68
+ poin: Number(cvToValue(poinData).value) / 1000000,
69
+ one: Number(cvToValue(oneData).value) / 1000000
70
+ });
71
+ } catch (e) {
72
+ console.error("Failed to load token balance:", e);
73
+ }
74
+ };
75
+
76
+ const fetchBadges = async (userAddress) => {
77
+ try {
78
+ // Using Hiro API to fetch all NFTs owned by the wallet
79
+ const response = await fetch(`https://api.mainnet.hiro.so/extended/v1/tokens/nft/holdings?principal=${userAddress}`);
80
+ const data = await response.json();
81
+
82
+ if (data && data.results) {
83
+ // Specific filter for genesis-badges contract
84
+ const badgeHoldings = data.results.filter(
85
+ item => item.asset_identifier.includes(`${CONTRACT_ADDRESS}.genesis-badges`)
86
+ );
87
+
88
+ // Mapping API NFT data to UI format
89
+ const formattedBadges = badgeHoldings.map((item) => {
90
+ const tokenId = item.value.repr.replace('u', ''); // Remove 'u' from uint
91
+ return {
92
+ id: tokenId,
93
+ name: `Genesis Badge #${tokenId}`,
94
+ description: "On-Chain Achievement in the StacksOne Ecosystem.",
95
+ imageUrl: `https://api.dicebear.com/7.x/shapes/svg?seed=${tokenId}&backgroundColor=0f172a,1e293b&shape1Color=6366f1`
96
+ };
97
+ });
98
+
99
+ // Mock Fallback if user doesn't have a badge yet (For UI preview)
100
+ if (formattedBadges.length === 0) {
101
+ setBadges([
102
+ { id: '1', name: 'Pioneer Staker', description: 'Made the first stake in the Refinery.', earned: true },
103
+ { id: '2', name: 'Lucky Burner', description: 'Won a prize from the Utility Gacha.', earned: true }
104
+ ]);
105
+ } else {
106
+ setBadges(formattedBadges);
107
+ }
108
+ }
109
+ } catch (e) {
110
+ console.error("Failed to load badges data:", e);
111
+ setBadges([]);
112
+ }
113
+ };
114
+
115
+ // --- UTILS ---
116
+ const copyAddress = () => {
117
+ navigator.clipboard.writeText(address);
118
+ setCopied(true);
119
+ setTimeout(() => setCopied(false), 2000);
120
+ };
121
+
122
+ const truncateAddress = (addr) => {
123
+ if (!addr) return '';
124
+ return `${addr.substring(0, 6)}...${addr.substring(addr.length - 4)}`;
125
+ };
126
+
127
+ // --- RENDER NOT CONNECTED ---
128
+ if (!userSession.isUserSignedIn()) {
129
+ return (
130
+ <div className="min-h-screen bg-[#0B1120] flex items-center justify-center p-6">
131
+ <div className="text-center bg-[#1E293B] p-10 rounded-3xl border border-slate-700 max-w-md w-full">
132
+ <Wallet size={48} className="text-slate-500 mx-auto mb-4" />
133
+ <h2 className="text-2xl font-bold text-white mb-2">Wallet Disconnected</h2>
134
+ <p className="text-slate-400 mb-6 text-sm">Please connect your Stacks wallet to view your profile, assets, and achievement badges.</p>
135
+ </div>
136
+ </div>
137
+ );
138
+ }
139
+
140
+ return (
141
+ <div className="min-h-screen bg-[#0B1120] text-slate-200 pb-20 font-sans">
142
+ {/* HEADER: IDENTITY */}
143
+ <div className="bg-gradient-to-b from-indigo-950/50 to-[#0B1120] border-b border-slate-800 pt-10 pb-8 px-6 md:px-10">
144
+ <div className="max-w-5xl mx-auto flex flex-col md:flex-row items-center md:items-end gap-6">
145
+ {/* Avatar (Generated based on address) */}
146
+ <div className="relative">
147
+ <div className="w-24 h-24 rounded-2xl bg-gradient-to-br from-indigo-500 to-purple-600 p-1 shadow-xl shadow-indigo-900/20">
148
+ <div className="w-full h-full bg-[#0B1120] rounded-xl overflow-hidden flex items-center justify-center">
149
+ <img
150
+ src={`https://api.dicebear.com/7.x/identicon/svg?seed=${address}&backgroundColor=transparent`}
151
+ alt="Avatar"
152
+ className="w-16 h-16 opacity-80"
153
+ />
154
+ </div>
155
+ </div>
156
+ <div className="absolute -bottom-2 -right-2 bg-emerald-500 text-white text-[10px] font-bold px-2 py-1 rounded-lg border-2 border-[#0B1120] flex items-center gap-1">
157
+ <span className="w-1.5 h-1.5 rounded-full bg-white animate-pulse"></span>
158
+ LIVE
159
+ </div>
160
+ </div>
161
+
162
+ <div className="text-center md:text-left flex-1">
163
+ <h1 className="text-2xl md:text-3xl font-bold text-white mb-2">Web3 Identity</h1>
164
+ <div className="flex flex-wrap items-center justify-center md:justify-start gap-3">
165
+ <div className="flex items-center gap-2 bg-[#1E293B] border border-slate-700 rounded-lg px-3 py-1.5">
166
+ <span className="text-sm font-mono text-indigo-300">{truncateAddress(address)}</span>
167
+ <button onClick={copyAddress} className="text-slate-400 hover:text-white transition-colors">
168
+ {copied ? <CheckCircle size={16} className="text-emerald-400" /> : <Copy size={16} />}
169
+ </button>
170
+ </div>
171
+ <a
172
+ href={`https://explorer.hiro.so/address/${address}?chain=mainnet`}
173
+ target="_blank"
174
+ rel="noreferrer"
175
+ className="flex items-center gap-1 text-xs text-slate-400 hover:text-indigo-400 transition-colors"
176
+ >
177
+ View on Explorer <ExternalLink size={12} />
178
+ </a>
179
+ </div>
180
+ </div>
181
+
182
+ <button
183
+ onClick={fetchData}
184
+ disabled={loading}
185
+ className="flex items-center gap-2 px-4 py-2 bg-slate-800/80 hover:bg-slate-700 rounded-xl border border-slate-700 text-sm font-medium transition-all"
186
+ >
187
+ <RefreshCw size={16} className={loading ? 'animate-spin' : ''} />
188
+ Refresh
189
+ </button>
190
+ </div>
191
+ </div>
192
+
193
+ <div className="max-w-5xl mx-auto p-6 md:p-10 space-y-10">
194
+
195
+ {/* SECTION 1: WALLET ASSETS */}
196
+ <section>
197
+ <h2 className="text-xl font-bold text-white flex items-center gap-2 mb-6">
198
+ <Wallet className="text-indigo-400" /> Available Assets
199
+ </h2>
200
+ <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
201
+ {/* POIN Card */}
202
+ <div className="bg-gradient-to-br from-[#1E293B] to-[#0F172A] border border-slate-700 rounded-3xl p-6 relative overflow-hidden group hover:border-amber-500/50 transition-colors">
203
+ <div className="absolute top-0 right-0 w-32 h-32 bg-amber-500/10 rounded-full blur-3xl -mr-10 -mt-10"></div>
204
+ <div className="flex justify-between items-start mb-4 relative z-10">
205
+ <div className="p-3 rounded-2xl bg-amber-500/20 text-amber-400">
206
+ <Zap size={28} />
207
+ </div>
208
+ <span className="text-xs font-bold uppercase tracking-wider text-slate-500">Staking Token</span>
209
+ </div>
210
+ <div className="relative z-10">
211
+ <p className="text-slate-400 text-sm font-medium mb-1">$POIN Balance</p>
212
+ {loading ? (
213
+ <div className="h-10 w-32 bg-slate-700/50 rounded animate-pulse"></div>
214
+ ) : (
215
+ <h3 className="text-4xl font-bold text-white">{balances.poin.toLocaleString()}</h3>
216
+ )}
217
+ </div>
218
+ </div>
219
+
220
+ {/* ONE Card */}
221
+ <div className="bg-gradient-to-br from-[#1E293B] to-[#0F172A] border border-slate-700 rounded-3xl p-6 relative overflow-hidden group hover:border-indigo-500/50 transition-colors">
222
+ <div className="absolute top-0 right-0 w-32 h-32 bg-indigo-500/10 rounded-full blur-3xl -mr-10 -mt-10"></div>
223
+ <div className="flex justify-between items-start mb-4 relative z-10">
224
+ <div className="p-3 rounded-2xl bg-indigo-500/20 text-indigo-400">
225
+ <Box size={28} />
226
+ </div>
227
+ <span className="text-xs font-bold uppercase tracking-wider text-slate-500">Main Token</span>
228
+ </div>
229
+ <div className="relative z-10">
230
+ <p className="text-slate-400 text-sm font-medium mb-1">$ONE Balance</p>
231
+ {loading ? (
232
+ <div className="h-10 w-32 bg-slate-700/50 rounded animate-pulse"></div>
233
+ ) : (
234
+ <h3 className="text-4xl font-bold text-white">{balances.one.toLocaleString()}</h3>
235
+ )}
236
+ </div>
237
+ </div>
238
+ </div>
239
+ </section>
240
+
241
+ {/* SECTION 2: WEB3 BADGES (NFTs) */}
242
+ <section>
243
+ <div className="flex justify-between items-end mb-6">
244
+ <h2 className="text-xl font-bold text-white flex items-center gap-2">
245
+ <Award className="text-emerald-400" /> Genesis Badges
246
+ </h2>
247
+ <span className="text-sm font-medium text-slate-500">
248
+ Total: <span className="text-white">{badges.length}</span>
249
+ </span>
250
+ </div>
251
+
252
+ {loading ? (
253
+ <div className="grid grid-cols-2 md:grid-cols-4 gap-4">
254
+ {[1, 2, 3, 4].map(i => (
255
+ <div key={i} className="bg-[#1E293B] h-48 rounded-3xl border border-slate-700 animate-pulse"></div>
256
+ ))}
257
+ </div>
258
+ ) : badges.length === 0 ? (
259
+ <div className="bg-[#0F172A] border border-dashed border-slate-700 rounded-3xl p-10 text-center">
260
+ <Hexagon size={48} className="text-slate-600 mx-auto mb-4" />
261
+ <h3 className="text-lg font-bold text-white mb-2">No Badges Yet</h3>
262
+ <p className="text-slate-400 text-sm max-w-sm mx-auto">Complete missions on the Tasks page or perform transactions in the Vault to start minting your Web3 identity.</p>
263
+ </div>
264
+ ) : (
265
+ <div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 md:gap-6">
266
+ {badges.map((badge, idx) => (
267
+ <div key={idx} className="bg-[#1E293B]/60 border border-slate-700 rounded-3xl p-4 flex flex-col items-center text-center hover:bg-[#1E293B] hover:border-emerald-500/50 transition-all group cursor-pointer relative overflow-hidden">
268
+
269
+ {/* Efek Shine saat hover */}
270
+ <div className="absolute inset-0 bg-gradient-to-tr from-transparent via-white/5 to-transparent -translate-x-full group-hover:animate-[shimmer_1.5s_infinite] pointer-events-none"></div>
271
+
272
+ {/* Badge Image / Placeholder */}
273
+ <div className="w-24 h-24 rounded-2xl bg-gradient-to-br from-slate-800 to-slate-900 mb-4 p-2 flex items-center justify-center border border-slate-700 shadow-inner group-hover:scale-105 transition-transform">
274
+ {badge.imageUrl ? (
275
+ <img src={badge.imageUrl} alt={badge.name} className="w-full h-full object-contain" />
276
+ ) : (
277
+ <Hexagon size={40} className="text-emerald-400" />
278
+ )}
279
+ </div>
280
+
281
+ <div className="mt-auto">
282
+ <span className="text-[10px] font-bold uppercase tracking-widest text-emerald-400 mb-1 block">
283
+ Badge #{badge.id}
284
+ </span>
285
+ <h3 className="text-sm font-bold text-white mb-1 leading-tight">{badge.name}</h3>
286
+ <p className="text-xs text-slate-400 line-clamp-2">{badge.description}</p>
287
+ </div>
288
+ </div>
289
+ ))}
290
+ </div>
291
+ )}
292
+ </section>
293
+
294
+ </div>
295
+ </div>
296
+ );
297
+ };
298
+
299
+ export default Profile;
@@ -0,0 +1,128 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { callReadOnlyFunction, standardPrincipalCV, uintCV, cvToValue } from '@stacks/transactions';
3
+ import { StacksMainnet } from '@stacks/network';
4
+ import { userSession } from '../supabaseClient';
5
+
6
+ // --- CONFIGURATION V10 ---
7
+ const CONTRACT_ADDRESS = 'SP3GHKMV4GSYNA8WGBX83DACG80K1RRVQZAZMB9J3';
8
+ const CONTRACT_NAME = 'genesis-missions-v10'; // DISESUAIKAN DENGAN V10
9
+ const CHECK_FUNCTION_NAME = 'is-task-done';
10
+
11
+ const Tasks = ({ initialTasks, handleTask }) => {
12
+ const [tasks, setTasks] = useState(initialTasks || []);
13
+ const [loadingTasks, setLoadingTasks] = useState(false);
14
+ const network = new StacksMainnet();
15
+
16
+ useEffect(() => {
17
+ if (userSession.isUserSignedIn() && initialTasks && initialTasks.length > 0) {
18
+ syncTaskStatusFromBlockchain();
19
+ } else {
20
+ setTasks(initialTasks || []);
21
+ }
22
+ }, [initialTasks]);
23
+
24
+ const syncTaskStatusFromBlockchain = async () => {
25
+ setLoadingTasks(true);
26
+ const userData = userSession.loadUserData();
27
+ const userAddress = userData.profile.stxAddress.mainnet;
28
+
29
+ try {
30
+ const updatedTasks = await Promise.all(
31
+ initialTasks.map(async (task) => {
32
+ try {
33
+ const statusData = await callReadOnlyFunction({
34
+ contractAddress: CONTRACT_ADDRESS,
35
+ contractName: CONTRACT_NAME,
36
+ functionName: CHECK_FUNCTION_NAME,
37
+ functionArgs: [
38
+ standardPrincipalCV(userAddress),
39
+ uintCV(task.id)
40
+ ],
41
+ network,
42
+ senderAddress: userAddress
43
+ });
44
+
45
+ const val = cvToValue(statusData);
46
+ const isCompleted = val.value === true || val === true;
47
+
48
+ return { ...task, completed: isCompleted };
49
+ } catch (err) {
50
+ console.warn(`Failed to fetch status for task ${task.id}`, err);
51
+ return task;
52
+ }
53
+ })
54
+ );
55
+ setTasks(updatedTasks);
56
+ } catch (error) {
57
+ console.error("Error syncing tasks:", error);
58
+ } finally {
59
+ setLoadingTasks(false);
60
+ }
61
+ };
62
+
63
+ const onTaskClick = async (taskId) => {
64
+ const txSucceeded = await handleTask(taskId);
65
+ if(txSucceeded !== false) {
66
+ setTasks(prevTasks => prevTasks.map(t =>
67
+ t.id === taskId ? { ...t, completed: true } : t
68
+ ));
69
+ setTimeout(() => {
70
+ syncTaskStatusFromBlockchain();
71
+ }, 10000);
72
+ }
73
+ };
74
+
75
+ return (
76
+ <div className="space-y-6 relative">
77
+ {loadingTasks && (
78
+ <div className="absolute -top-10 right-0 flex items-center text-xs text-indigo-400 animate-pulse">
79
+ Syncing with v10 blockchain...
80
+ </div>
81
+ )}
82
+
83
+ <div className="flex items-center justify-between">
84
+ <h2 className="text-3xl font-bold text-white">Mission Board</h2>
85
+ <span className="bg-indigo-500/20 text-indigo-400 px-3 py-1 rounded-full text-xs font-bold">
86
+ {tasks.filter(t => t.completed).length}/{tasks.length} COMPLETE
87
+ </span>
88
+ </div>
89
+
90
+ <div className="grid gap-4">
91
+ {tasks.map((task) => (
92
+ <div key={task.id} className="group relative bg-slate-900 border border-slate-800 rounded-xl p-5 hover:border-indigo-500/50 transition-all duration-300">
93
+ <div className="flex items-center justify-between relative z-10">
94
+ <div className="flex items-center gap-4">
95
+ <div className={`w-12 h-12 rounded-full flex items-center justify-center text-xl shadow-lg ${
96
+ task.completed ? "bg-green-500 text-black" : "bg-slate-800 text-slate-400"
97
+ }`}>
98
+ {task.completed ? "✓" : task.icon || "📋"}
99
+ </div>
100
+ <div>
101
+ <h3 className="font-bold text-lg text-white group-hover:text-indigo-400 transition-colors">{task.name}</h3>
102
+ <p className="text-slate-400 text-sm">{task.desc}</p>
103
+ </div>
104
+ </div>
105
+
106
+ <div className="text-right">
107
+ <div className="text-indigo-400 font-bold font-mono mb-2">+{task.reward} XP</div>
108
+ <button
109
+ onClick={() => onTaskClick(task.id)}
110
+ disabled={task.completed || loadingTasks}
111
+ className={`px-4 py-2 rounded-lg text-xs font-bold uppercase tracking-wider transition-all ${
112
+ task.completed
113
+ ? "bg-slate-800 text-slate-500 cursor-default"
114
+ : "bg-white text-black hover:bg-indigo-400 hover:text-white"
115
+ } ${loadingTasks && !task.completed ? "opacity-50 cursor-wait" : ""}`}
116
+ >
117
+ {task.completed ? "Claimed" : "Start"}
118
+ </button>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ ))}
123
+ </div>
124
+ </div>
125
+ );
126
+ };
127
+
128
+ export default Tasks;