zkcloudworker 0.18.2 → 0.18.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (406) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +2 -4
  3. package/dist/ts/cloud/config.js.map +1 -0
  4. package/dist/ts/cloud/index.js.map +1 -0
  5. package/dist/ts/cloud/networks.js.map +1 -0
  6. package/dist/ts/cloud/utils/base64.js.map +1 -0
  7. package/dist/ts/cloud/utils/graphql.js.map +1 -0
  8. package/dist/ts/cloud/utils/index.js.map +1 -0
  9. package/dist/ts/cloud/utils/utils.js.map +1 -0
  10. package/dist/ts/cloud/worker/cloud.js.map +1 -0
  11. package/dist/ts/cloud/worker/index.js.map +1 -0
  12. package/{lib → dist}/ts/cloud/worker/job.js.map +1 -1
  13. package/{lib → dist}/ts/cloud/worker/task.js.map +1 -1
  14. package/dist/ts/cloud/worker/transaction.js.map +1 -0
  15. package/dist/ts/cloud/worker/worker.js.map +1 -0
  16. package/dist/ts/index.js.map +1 -0
  17. package/dist/ts/mina/api/api.js.map +1 -0
  18. package/dist/ts/mina/index.js.map +1 -0
  19. package/dist/ts/mina/local/local.js.map +1 -0
  20. package/dist/ts/mina/storage/index.js.map +1 -0
  21. package/dist/ts/mina/storage/ipfs.js.map +1 -0
  22. package/dist/ts/mina/storage/pinata.js.map +1 -0
  23. package/dist/ts/mina/storage/storage.js.map +1 -0
  24. package/dist/ts/mina/token/FungibleToken.js.map +1 -0
  25. package/dist/ts/mina/token/FungibleTokenAdmin.js.map +1 -0
  26. package/dist/ts/mina/token/api.js.map +1 -0
  27. package/dist/ts/mina/token/index.js.map +1 -0
  28. package/dist/ts/mina/token/vk.js.map +1 -0
  29. package/{lib → dist}/ts/mina/token/whitelist.d.ts +1 -1
  30. package/{lib/web → dist/ts}/mina/token/whitelist.js +5 -1
  31. package/dist/ts/mina/token/whitelist.js.map +1 -0
  32. package/dist/ts/mina/transactions/account.js.map +1 -0
  33. package/dist/ts/mina/transactions/blockberry.js.map +1 -0
  34. package/dist/ts/mina/transactions/chain.js.map +1 -0
  35. package/dist/ts/mina/transactions/index.js.map +1 -0
  36. package/dist/ts/mina/transactions/nonce.js.map +1 -0
  37. package/dist/ts/mina/transactions/send.js.map +1 -0
  38. package/dist/ts/mina/transactions/tiny-contract.js.map +1 -0
  39. package/dist/ts/mina/transactions/transaction.js.map +1 -0
  40. package/dist/ts/mina/transactions/txstatus.js.map +1 -0
  41. package/dist/ts/mina/utils/base64.js.map +1 -0
  42. package/dist/ts/mina/utils/fee.js.map +1 -0
  43. package/dist/ts/mina/utils/fetch.js.map +1 -0
  44. package/dist/ts/mina/utils/fields.js.map +1 -0
  45. package/dist/ts/mina/utils/index.js.map +1 -0
  46. package/dist/ts/mina/utils/indexed-map.js.map +1 -0
  47. package/dist/ts/mina/utils/mina.js.map +1 -0
  48. package/dist/ts/mina/verification/index.js.map +1 -0
  49. package/dist/ts/mina/verification/verification.js.map +1 -0
  50. package/dist/tsconfig.web.tsbuildinfo +1 -0
  51. package/dist/web/cloud/config.js.map +1 -0
  52. package/dist/web/cloud/index.js.map +1 -0
  53. package/dist/web/cloud/networks.js.map +1 -0
  54. package/dist/web/cloud/utils/base64.js.map +1 -0
  55. package/dist/web/cloud/utils/graphql.js.map +1 -0
  56. package/dist/web/cloud/utils/index.js.map +1 -0
  57. package/dist/web/cloud/utils/utils.js.map +1 -0
  58. package/dist/web/cloud/worker/cloud.js.map +1 -0
  59. package/dist/web/cloud/worker/index.js.map +1 -0
  60. package/{lib → dist}/web/cloud/worker/job.js.map +1 -1
  61. package/{lib → dist}/web/cloud/worker/task.js.map +1 -1
  62. package/dist/web/cloud/worker/transaction.js.map +1 -0
  63. package/dist/web/cloud/worker/worker.js.map +1 -0
  64. package/dist/web/index.js.map +1 -0
  65. package/dist/web/mina/api/api.js.map +1 -0
  66. package/dist/web/mina/index.js.map +1 -0
  67. package/dist/web/mina/local/local.js.map +1 -0
  68. package/dist/web/mina/storage/index.js.map +1 -0
  69. package/dist/web/mina/storage/ipfs.js.map +1 -0
  70. package/dist/web/mina/storage/pinata.js.map +1 -0
  71. package/dist/web/mina/storage/storage.js.map +1 -0
  72. package/dist/web/mina/token/FungibleToken.js.map +1 -0
  73. package/dist/web/mina/token/FungibleTokenAdmin.js.map +1 -0
  74. package/dist/web/mina/token/api.js.map +1 -0
  75. package/dist/web/mina/token/index.js.map +1 -0
  76. package/dist/web/mina/token/vk.js.map +1 -0
  77. package/{lib → dist}/web/mina/token/whitelist.d.ts +1 -1
  78. package/{lib/ts → dist/web}/mina/token/whitelist.js +5 -1
  79. package/dist/web/mina/token/whitelist.js.map +1 -0
  80. package/dist/web/mina/transactions/account.js.map +1 -0
  81. package/dist/web/mina/transactions/blockberry.js.map +1 -0
  82. package/dist/web/mina/transactions/chain.js.map +1 -0
  83. package/dist/web/mina/transactions/index.js.map +1 -0
  84. package/dist/web/mina/transactions/nonce.js.map +1 -0
  85. package/dist/web/mina/transactions/send.js.map +1 -0
  86. package/dist/web/mina/transactions/tiny-contract.js.map +1 -0
  87. package/dist/web/mina/transactions/transaction.js.map +1 -0
  88. package/dist/web/mina/transactions/txstatus.js.map +1 -0
  89. package/dist/web/mina/utils/base64.js.map +1 -0
  90. package/dist/web/mina/utils/fee.js.map +1 -0
  91. package/dist/web/mina/utils/fetch.js.map +1 -0
  92. package/dist/web/mina/utils/fields.js.map +1 -0
  93. package/dist/web/mina/utils/index.js.map +1 -0
  94. package/dist/web/mina/utils/indexed-map.js.map +1 -0
  95. package/dist/web/mina/utils/mina.js.map +1 -0
  96. package/dist/web/mina/verification/index.js.map +1 -0
  97. package/dist/web/mina/verification/verification.js.map +1 -0
  98. package/package.json +32 -20
  99. package/src/cloud/config.ts +10 -0
  100. package/src/cloud/index.ts +4 -0
  101. package/src/cloud/networks.ts +130 -0
  102. package/src/cloud/utils/base64.ts +87 -0
  103. package/src/cloud/utils/graphql.ts +252 -0
  104. package/src/cloud/utils/index.ts +3 -0
  105. package/src/cloud/utils/utils.ts +79 -0
  106. package/src/cloud/worker/cloud.ts +326 -0
  107. package/src/cloud/worker/index.ts +5 -0
  108. package/src/cloud/worker/job.ts +123 -0
  109. package/src/cloud/worker/task.ts +45 -0
  110. package/src/cloud/worker/transaction.ts +12 -0
  111. package/src/cloud/worker/worker.ts +62 -0
  112. package/src/index.ts +2 -0
  113. package/src/mina/api/api.ts +597 -0
  114. package/src/mina/index.ts +8 -0
  115. package/src/mina/local/local.ts +651 -0
  116. package/src/mina/storage/index.ts +3 -0
  117. package/src/mina/storage/ipfs.ts +20 -0
  118. package/src/mina/storage/pinata.ts +52 -0
  119. package/src/mina/storage/storage.ts +55 -0
  120. package/src/mina/token/FungibleToken.ts +316 -0
  121. package/src/mina/token/FungibleTokenAdmin.ts +95 -0
  122. package/src/mina/token/api.ts +182 -0
  123. package/src/mina/token/index.ts +5 -0
  124. package/src/mina/token/vk.ts +42 -0
  125. package/src/mina/token/whitelist.ts +178 -0
  126. package/src/mina/transactions/account.ts +57 -0
  127. package/src/mina/transactions/blockberry.ts +166 -0
  128. package/src/mina/transactions/chain.ts +1 -0
  129. package/src/mina/transactions/index.ts +8 -0
  130. package/src/mina/transactions/nonce.ts +120 -0
  131. package/src/mina/transactions/send.ts +186 -0
  132. package/src/mina/transactions/tiny-contract.ts +9 -0
  133. package/src/mina/transactions/transaction.ts +255 -0
  134. package/src/mina/transactions/txstatus.ts +26 -0
  135. package/src/mina/utils/base64.ts +34 -0
  136. package/src/mina/utils/fee.ts +11 -0
  137. package/src/mina/utils/fetch.ts +126 -0
  138. package/src/mina/utils/fields.ts +39 -0
  139. package/src/mina/utils/index.ts +6 -0
  140. package/src/mina/utils/indexed-map.ts +169 -0
  141. package/src/mina/utils/mina.ts +175 -0
  142. package/src/mina/verification/index.ts +1 -0
  143. package/src/mina/verification/verification.ts +23 -0
  144. package/lib/ts/cloud/config.js.map +0 -1
  145. package/lib/ts/cloud/index.js.map +0 -1
  146. package/lib/ts/cloud/networks.js.map +0 -1
  147. package/lib/ts/cloud/utils/base64.js.map +0 -1
  148. package/lib/ts/cloud/utils/graphql.js.map +0 -1
  149. package/lib/ts/cloud/utils/index.js.map +0 -1
  150. package/lib/ts/cloud/utils/utils.js.map +0 -1
  151. package/lib/ts/cloud/worker/cloud.js.map +0 -1
  152. package/lib/ts/cloud/worker/index.js.map +0 -1
  153. package/lib/ts/cloud/worker/transaction.js.map +0 -1
  154. package/lib/ts/cloud/worker/worker.js.map +0 -1
  155. package/lib/ts/index.js.map +0 -1
  156. package/lib/ts/mina/api/api.js.map +0 -1
  157. package/lib/ts/mina/index.js.map +0 -1
  158. package/lib/ts/mina/local/local.js.map +0 -1
  159. package/lib/ts/mina/storage/index.js.map +0 -1
  160. package/lib/ts/mina/storage/ipfs.js.map +0 -1
  161. package/lib/ts/mina/storage/pinata.js.map +0 -1
  162. package/lib/ts/mina/storage/storage.js.map +0 -1
  163. package/lib/ts/mina/token/FungibleToken.js.map +0 -1
  164. package/lib/ts/mina/token/FungibleTokenAdmin.js.map +0 -1
  165. package/lib/ts/mina/token/api.js.map +0 -1
  166. package/lib/ts/mina/token/index.js.map +0 -1
  167. package/lib/ts/mina/token/vk.js.map +0 -1
  168. package/lib/ts/mina/token/whitelist.js.map +0 -1
  169. package/lib/ts/mina/transactions/account.js.map +0 -1
  170. package/lib/ts/mina/transactions/blockberry.js.map +0 -1
  171. package/lib/ts/mina/transactions/chain.js.map +0 -1
  172. package/lib/ts/mina/transactions/index.js.map +0 -1
  173. package/lib/ts/mina/transactions/nonce.js.map +0 -1
  174. package/lib/ts/mina/transactions/send.js.map +0 -1
  175. package/lib/ts/mina/transactions/tiny-contract.js.map +0 -1
  176. package/lib/ts/mina/transactions/transaction.js.map +0 -1
  177. package/lib/ts/mina/transactions/txstatus.js.map +0 -1
  178. package/lib/ts/mina/utils/base64.js.map +0 -1
  179. package/lib/ts/mina/utils/fee.js.map +0 -1
  180. package/lib/ts/mina/utils/fetch.js.map +0 -1
  181. package/lib/ts/mina/utils/fields.js.map +0 -1
  182. package/lib/ts/mina/utils/index.js.map +0 -1
  183. package/lib/ts/mina/utils/indexed-map.js.map +0 -1
  184. package/lib/ts/mina/utils/mina.js.map +0 -1
  185. package/lib/ts/mina/verification/index.js.map +0 -1
  186. package/lib/ts/mina/verification/verification.js.map +0 -1
  187. package/lib/tsconfig.web.tsbuildinfo +0 -1
  188. package/lib/web/cloud/config.js.map +0 -1
  189. package/lib/web/cloud/index.js.map +0 -1
  190. package/lib/web/cloud/networks.js.map +0 -1
  191. package/lib/web/cloud/utils/base64.js.map +0 -1
  192. package/lib/web/cloud/utils/graphql.js.map +0 -1
  193. package/lib/web/cloud/utils/index.js.map +0 -1
  194. package/lib/web/cloud/utils/utils.js.map +0 -1
  195. package/lib/web/cloud/worker/cloud.js.map +0 -1
  196. package/lib/web/cloud/worker/index.js.map +0 -1
  197. package/lib/web/cloud/worker/transaction.js.map +0 -1
  198. package/lib/web/cloud/worker/worker.js.map +0 -1
  199. package/lib/web/index.js.map +0 -1
  200. package/lib/web/mina/api/api.js.map +0 -1
  201. package/lib/web/mina/index.js.map +0 -1
  202. package/lib/web/mina/local/local.js.map +0 -1
  203. package/lib/web/mina/storage/index.js.map +0 -1
  204. package/lib/web/mina/storage/ipfs.js.map +0 -1
  205. package/lib/web/mina/storage/pinata.js.map +0 -1
  206. package/lib/web/mina/storage/storage.js.map +0 -1
  207. package/lib/web/mina/token/FungibleToken.js.map +0 -1
  208. package/lib/web/mina/token/FungibleTokenAdmin.js.map +0 -1
  209. package/lib/web/mina/token/api.js.map +0 -1
  210. package/lib/web/mina/token/index.js.map +0 -1
  211. package/lib/web/mina/token/vk.js.map +0 -1
  212. package/lib/web/mina/token/whitelist.js.map +0 -1
  213. package/lib/web/mina/transactions/account.js.map +0 -1
  214. package/lib/web/mina/transactions/blockberry.js.map +0 -1
  215. package/lib/web/mina/transactions/chain.js.map +0 -1
  216. package/lib/web/mina/transactions/index.js.map +0 -1
  217. package/lib/web/mina/transactions/nonce.js.map +0 -1
  218. package/lib/web/mina/transactions/send.js.map +0 -1
  219. package/lib/web/mina/transactions/tiny-contract.js.map +0 -1
  220. package/lib/web/mina/transactions/transaction.js.map +0 -1
  221. package/lib/web/mina/transactions/txstatus.js.map +0 -1
  222. package/lib/web/mina/utils/base64.js.map +0 -1
  223. package/lib/web/mina/utils/fee.js.map +0 -1
  224. package/lib/web/mina/utils/fetch.js.map +0 -1
  225. package/lib/web/mina/utils/fields.js.map +0 -1
  226. package/lib/web/mina/utils/index.js.map +0 -1
  227. package/lib/web/mina/utils/indexed-map.js.map +0 -1
  228. package/lib/web/mina/utils/mina.js.map +0 -1
  229. package/lib/web/mina/verification/index.js.map +0 -1
  230. package/lib/web/mina/verification/verification.js.map +0 -1
  231. /package/{lib → dist}/ts/cloud/config.d.ts +0 -0
  232. /package/{lib → dist}/ts/cloud/config.js +0 -0
  233. /package/{lib → dist}/ts/cloud/index.d.ts +0 -0
  234. /package/{lib → dist}/ts/cloud/index.js +0 -0
  235. /package/{lib → dist}/ts/cloud/networks.d.ts +0 -0
  236. /package/{lib → dist}/ts/cloud/networks.js +0 -0
  237. /package/{lib → dist}/ts/cloud/utils/base64.d.ts +0 -0
  238. /package/{lib → dist}/ts/cloud/utils/base64.js +0 -0
  239. /package/{lib → dist}/ts/cloud/utils/graphql.d.ts +0 -0
  240. /package/{lib → dist}/ts/cloud/utils/graphql.js +0 -0
  241. /package/{lib → dist}/ts/cloud/utils/index.d.ts +0 -0
  242. /package/{lib → dist}/ts/cloud/utils/index.js +0 -0
  243. /package/{lib → dist}/ts/cloud/utils/utils.d.ts +0 -0
  244. /package/{lib → dist}/ts/cloud/utils/utils.js +0 -0
  245. /package/{lib → dist}/ts/cloud/worker/cloud.d.ts +0 -0
  246. /package/{lib → dist}/ts/cloud/worker/cloud.js +0 -0
  247. /package/{lib → dist}/ts/cloud/worker/index.d.ts +0 -0
  248. /package/{lib → dist}/ts/cloud/worker/index.js +0 -0
  249. /package/{lib → dist}/ts/cloud/worker/job.d.ts +0 -0
  250. /package/{lib → dist}/ts/cloud/worker/job.js +0 -0
  251. /package/{lib → dist}/ts/cloud/worker/task.d.ts +0 -0
  252. /package/{lib → dist}/ts/cloud/worker/task.js +0 -0
  253. /package/{lib → dist}/ts/cloud/worker/transaction.d.ts +0 -0
  254. /package/{lib → dist}/ts/cloud/worker/transaction.js +0 -0
  255. /package/{lib → dist}/ts/cloud/worker/worker.d.ts +0 -0
  256. /package/{lib → dist}/ts/cloud/worker/worker.js +0 -0
  257. /package/{lib → dist}/ts/index.d.ts +0 -0
  258. /package/{lib → dist}/ts/index.js +0 -0
  259. /package/{lib → dist}/ts/mina/api/api.d.ts +0 -0
  260. /package/{lib → dist}/ts/mina/api/api.js +0 -0
  261. /package/{lib → dist}/ts/mina/index.d.ts +0 -0
  262. /package/{lib → dist}/ts/mina/index.js +0 -0
  263. /package/{lib → dist}/ts/mina/local/local.d.ts +0 -0
  264. /package/{lib → dist}/ts/mina/local/local.js +0 -0
  265. /package/{lib → dist}/ts/mina/storage/index.d.ts +0 -0
  266. /package/{lib → dist}/ts/mina/storage/index.js +0 -0
  267. /package/{lib → dist}/ts/mina/storage/ipfs.d.ts +0 -0
  268. /package/{lib → dist}/ts/mina/storage/ipfs.js +0 -0
  269. /package/{lib → dist}/ts/mina/storage/pinata.d.ts +0 -0
  270. /package/{lib → dist}/ts/mina/storage/pinata.js +0 -0
  271. /package/{lib → dist}/ts/mina/storage/storage.d.ts +0 -0
  272. /package/{lib → dist}/ts/mina/storage/storage.js +0 -0
  273. /package/{lib → dist}/ts/mina/token/FungibleToken.d.ts +0 -0
  274. /package/{lib → dist}/ts/mina/token/FungibleToken.js +0 -0
  275. /package/{lib → dist}/ts/mina/token/FungibleTokenAdmin.d.ts +0 -0
  276. /package/{lib → dist}/ts/mina/token/FungibleTokenAdmin.js +0 -0
  277. /package/{lib → dist}/ts/mina/token/api.d.ts +0 -0
  278. /package/{lib → dist}/ts/mina/token/api.js +0 -0
  279. /package/{lib → dist}/ts/mina/token/index.d.ts +0 -0
  280. /package/{lib → dist}/ts/mina/token/index.js +0 -0
  281. /package/{lib → dist}/ts/mina/token/vk.d.ts +0 -0
  282. /package/{lib → dist}/ts/mina/token/vk.js +0 -0
  283. /package/{lib → dist}/ts/mina/transactions/account.d.ts +0 -0
  284. /package/{lib → dist}/ts/mina/transactions/account.js +0 -0
  285. /package/{lib → dist}/ts/mina/transactions/blockberry.d.ts +0 -0
  286. /package/{lib → dist}/ts/mina/transactions/blockberry.js +0 -0
  287. /package/{lib → dist}/ts/mina/transactions/chain.d.ts +0 -0
  288. /package/{lib → dist}/ts/mina/transactions/chain.js +0 -0
  289. /package/{lib → dist}/ts/mina/transactions/index.d.ts +0 -0
  290. /package/{lib → dist}/ts/mina/transactions/index.js +0 -0
  291. /package/{lib → dist}/ts/mina/transactions/nonce.d.ts +0 -0
  292. /package/{lib → dist}/ts/mina/transactions/nonce.js +0 -0
  293. /package/{lib → dist}/ts/mina/transactions/send.d.ts +0 -0
  294. /package/{lib → dist}/ts/mina/transactions/send.js +0 -0
  295. /package/{lib → dist}/ts/mina/transactions/tiny-contract.d.ts +0 -0
  296. /package/{lib → dist}/ts/mina/transactions/tiny-contract.js +0 -0
  297. /package/{lib → dist}/ts/mina/transactions/transaction.d.ts +0 -0
  298. /package/{lib → dist}/ts/mina/transactions/transaction.js +0 -0
  299. /package/{lib → dist}/ts/mina/transactions/txstatus.d.ts +0 -0
  300. /package/{lib → dist}/ts/mina/transactions/txstatus.js +0 -0
  301. /package/{lib → dist}/ts/mina/utils/base64.d.ts +0 -0
  302. /package/{lib → dist}/ts/mina/utils/base64.js +0 -0
  303. /package/{lib → dist}/ts/mina/utils/fee.d.ts +0 -0
  304. /package/{lib → dist}/ts/mina/utils/fee.js +0 -0
  305. /package/{lib → dist}/ts/mina/utils/fetch.d.ts +0 -0
  306. /package/{lib → dist}/ts/mina/utils/fetch.js +0 -0
  307. /package/{lib → dist}/ts/mina/utils/fields.d.ts +0 -0
  308. /package/{lib → dist}/ts/mina/utils/fields.js +0 -0
  309. /package/{lib → dist}/ts/mina/utils/index.d.ts +0 -0
  310. /package/{lib → dist}/ts/mina/utils/index.js +0 -0
  311. /package/{lib → dist}/ts/mina/utils/indexed-map.d.ts +0 -0
  312. /package/{lib → dist}/ts/mina/utils/indexed-map.js +0 -0
  313. /package/{lib → dist}/ts/mina/utils/mina.d.ts +0 -0
  314. /package/{lib → dist}/ts/mina/utils/mina.js +0 -0
  315. /package/{lib → dist}/ts/mina/verification/index.d.ts +0 -0
  316. /package/{lib → dist}/ts/mina/verification/index.js +0 -0
  317. /package/{lib → dist}/ts/mina/verification/verification.d.ts +0 -0
  318. /package/{lib → dist}/ts/mina/verification/verification.js +0 -0
  319. /package/{lib → dist}/web/cloud/config.d.ts +0 -0
  320. /package/{lib → dist}/web/cloud/config.js +0 -0
  321. /package/{lib → dist}/web/cloud/index.d.ts +0 -0
  322. /package/{lib → dist}/web/cloud/index.js +0 -0
  323. /package/{lib → dist}/web/cloud/networks.d.ts +0 -0
  324. /package/{lib → dist}/web/cloud/networks.js +0 -0
  325. /package/{lib → dist}/web/cloud/utils/base64.d.ts +0 -0
  326. /package/{lib → dist}/web/cloud/utils/base64.js +0 -0
  327. /package/{lib → dist}/web/cloud/utils/graphql.d.ts +0 -0
  328. /package/{lib → dist}/web/cloud/utils/graphql.js +0 -0
  329. /package/{lib → dist}/web/cloud/utils/index.d.ts +0 -0
  330. /package/{lib → dist}/web/cloud/utils/index.js +0 -0
  331. /package/{lib → dist}/web/cloud/utils/utils.d.ts +0 -0
  332. /package/{lib → dist}/web/cloud/utils/utils.js +0 -0
  333. /package/{lib → dist}/web/cloud/worker/cloud.d.ts +0 -0
  334. /package/{lib → dist}/web/cloud/worker/cloud.js +0 -0
  335. /package/{lib → dist}/web/cloud/worker/index.d.ts +0 -0
  336. /package/{lib → dist}/web/cloud/worker/index.js +0 -0
  337. /package/{lib → dist}/web/cloud/worker/job.d.ts +0 -0
  338. /package/{lib → dist}/web/cloud/worker/job.js +0 -0
  339. /package/{lib → dist}/web/cloud/worker/task.d.ts +0 -0
  340. /package/{lib → dist}/web/cloud/worker/task.js +0 -0
  341. /package/{lib → dist}/web/cloud/worker/transaction.d.ts +0 -0
  342. /package/{lib → dist}/web/cloud/worker/transaction.js +0 -0
  343. /package/{lib → dist}/web/cloud/worker/worker.d.ts +0 -0
  344. /package/{lib → dist}/web/cloud/worker/worker.js +0 -0
  345. /package/{lib → dist}/web/index.d.ts +0 -0
  346. /package/{lib → dist}/web/index.js +0 -0
  347. /package/{lib → dist}/web/mina/api/api.d.ts +0 -0
  348. /package/{lib → dist}/web/mina/api/api.js +0 -0
  349. /package/{lib → dist}/web/mina/index.d.ts +0 -0
  350. /package/{lib → dist}/web/mina/index.js +0 -0
  351. /package/{lib → dist}/web/mina/local/local.d.ts +0 -0
  352. /package/{lib → dist}/web/mina/local/local.js +0 -0
  353. /package/{lib → dist}/web/mina/storage/index.d.ts +0 -0
  354. /package/{lib → dist}/web/mina/storage/index.js +0 -0
  355. /package/{lib → dist}/web/mina/storage/ipfs.d.ts +0 -0
  356. /package/{lib → dist}/web/mina/storage/ipfs.js +0 -0
  357. /package/{lib → dist}/web/mina/storage/pinata.d.ts +0 -0
  358. /package/{lib → dist}/web/mina/storage/pinata.js +0 -0
  359. /package/{lib → dist}/web/mina/storage/storage.d.ts +0 -0
  360. /package/{lib → dist}/web/mina/storage/storage.js +0 -0
  361. /package/{lib → dist}/web/mina/token/FungibleToken.d.ts +0 -0
  362. /package/{lib → dist}/web/mina/token/FungibleToken.js +0 -0
  363. /package/{lib → dist}/web/mina/token/FungibleTokenAdmin.d.ts +0 -0
  364. /package/{lib → dist}/web/mina/token/FungibleTokenAdmin.js +0 -0
  365. /package/{lib → dist}/web/mina/token/api.d.ts +0 -0
  366. /package/{lib → dist}/web/mina/token/api.js +0 -0
  367. /package/{lib → dist}/web/mina/token/index.d.ts +0 -0
  368. /package/{lib → dist}/web/mina/token/index.js +0 -0
  369. /package/{lib → dist}/web/mina/token/vk.d.ts +0 -0
  370. /package/{lib → dist}/web/mina/token/vk.js +0 -0
  371. /package/{lib → dist}/web/mina/transactions/account.d.ts +0 -0
  372. /package/{lib → dist}/web/mina/transactions/account.js +0 -0
  373. /package/{lib → dist}/web/mina/transactions/blockberry.d.ts +0 -0
  374. /package/{lib → dist}/web/mina/transactions/blockberry.js +0 -0
  375. /package/{lib → dist}/web/mina/transactions/chain.d.ts +0 -0
  376. /package/{lib → dist}/web/mina/transactions/chain.js +0 -0
  377. /package/{lib → dist}/web/mina/transactions/index.d.ts +0 -0
  378. /package/{lib → dist}/web/mina/transactions/index.js +0 -0
  379. /package/{lib → dist}/web/mina/transactions/nonce.d.ts +0 -0
  380. /package/{lib → dist}/web/mina/transactions/nonce.js +0 -0
  381. /package/{lib → dist}/web/mina/transactions/send.d.ts +0 -0
  382. /package/{lib → dist}/web/mina/transactions/send.js +0 -0
  383. /package/{lib → dist}/web/mina/transactions/tiny-contract.d.ts +0 -0
  384. /package/{lib → dist}/web/mina/transactions/tiny-contract.js +0 -0
  385. /package/{lib → dist}/web/mina/transactions/transaction.d.ts +0 -0
  386. /package/{lib → dist}/web/mina/transactions/transaction.js +0 -0
  387. /package/{lib → dist}/web/mina/transactions/txstatus.d.ts +0 -0
  388. /package/{lib → dist}/web/mina/transactions/txstatus.js +0 -0
  389. /package/{lib → dist}/web/mina/utils/base64.d.ts +0 -0
  390. /package/{lib → dist}/web/mina/utils/base64.js +0 -0
  391. /package/{lib → dist}/web/mina/utils/fee.d.ts +0 -0
  392. /package/{lib → dist}/web/mina/utils/fee.js +0 -0
  393. /package/{lib → dist}/web/mina/utils/fetch.d.ts +0 -0
  394. /package/{lib → dist}/web/mina/utils/fetch.js +0 -0
  395. /package/{lib → dist}/web/mina/utils/fields.d.ts +0 -0
  396. /package/{lib → dist}/web/mina/utils/fields.js +0 -0
  397. /package/{lib → dist}/web/mina/utils/index.d.ts +0 -0
  398. /package/{lib → dist}/web/mina/utils/index.js +0 -0
  399. /package/{lib → dist}/web/mina/utils/indexed-map.d.ts +0 -0
  400. /package/{lib → dist}/web/mina/utils/indexed-map.js +0 -0
  401. /package/{lib → dist}/web/mina/utils/mina.d.ts +0 -0
  402. /package/{lib → dist}/web/mina/utils/mina.js +0 -0
  403. /package/{lib → dist}/web/mina/verification/index.d.ts +0 -0
  404. /package/{lib → dist}/web/mina/verification/index.js +0 -0
  405. /package/{lib → dist}/web/mina/verification/verification.d.ts +0 -0
  406. /package/{lib → dist}/web/mina/verification/verification.js +0 -0
@@ -0,0 +1,42 @@
1
+ export const fungibleTokenVerificationKeys = {
2
+ testnet: {
3
+ admin: {
4
+ hash: "15958550144671703080408884627087990244648824766878280780120011347457437134053",
5
+ data: "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",
6
+ },
7
+ token: {
8
+ hash: "22278758441605771858700252645311428360030262698072838723799702480887091310093",
9
+ data: "AABoR9W/JCk+QV7xmR0EmMunepTBYRNFuyTe3jy0YL4FPMZvsY3S7Erek8aQc6iEbg0gx8yQZuX7/I9abchc2AM3/JhaHwmIVJYlvR+hIhruFPB3wgxMNv0w0gKKcrMUjwumIsjP5rBKR/iI66NePvgPuC29OEcvCy1WA7VGa4jkJdudep82RUdWGRWK2+TESBdYTcmhDVuKl71sFjmOdRsHPuHz9tgXl+pkmjmsRFUu0NL0uf7+4UZZ3qwo5JDu+CK6Ec77HZQNWTxobryIa5NH8CwGRTykkaJMUmjbfWiFPCUHzvcqpOIDa/P0WVqqmkAksmXroqqmKGk7zQBN+Ak0GHEPqQDSJIQv98Wm/EluR3MtPMixUI0OSCdbCe++KR4gIKwvRX+AyBCIcMUEuQ7CN4TcDQmD4dsnU3Ywu2cTLCmf1z6el9AHdoTNg5kHvhrxJtV5O5sUnQEW+LPdxSMkxmO3ao9cj4Pdjpf//o1wVN9GR9uyGgj7JxOzi0e1HC2DWmTr5hsWR+J7Pz5rAY5jv5xAcpzUgdqRLr+0Z5wQBovJXign+HwE1cLbTGjZjc2WzRyDEAUfk+VvpE9GcgUdAAYcIULS5ZqNrgfCjlXT8pN5RNRmKgXn+Cn5vzxcnl420mtiW3d/pggz7op2FJbzAn7+OGvB37M0alQcCcwnhyahL95iMJSSJp15EYPASeiSRhU71xGX0Ga6ZJUBPmwuN43AhoCb5DcuShlhi7CwjficYrtDo1u7ZpmnWP0tbaE1u3Cmua8TUIWLHYL9CoBo2HEP5858I/xbZpseBTXbUhQOgdQSqCj0ai5ibbIEWlzyeVctufQRm6pK4OGSnZvSP+km8zpVR15SVLkkzPAtmtpJ28bSInD1sm++/MMMz30+xP+7XMk6yCnAKS7Ryh+7LqDgPK2C3fPDaPe38v1PXDUseFa60FhJTq5ztwNXhVtkUUgBMObzMAH3yCYnFj41JvRuR9diVD4NJ0h3wxxcbGWD8ROvjUEUv2U9ouTlDggGX//W2Ejz+ebqgkUtnytJECQtc5GWLwBwSijUtBS5nCMPbyTXae/35q01qddf4BaHXTmi+Aq4VAacF+UdqGczJvTMuFUkkmFI4SnN3lH07zi4IbwHvZzIofdlOqOKILs4QwZ38srG/YRk3+A6ruqaLY6wmtRqq3mm03DF0SqZEhM/l882C3IQcOyVS4j6tJvV7Z87QSHbGnw0iM/bp3WjCgd+XbMVKuLB1iwTlhgWJc0HMs3w9N0ZlssmVHaWTEorf/QDhPtXCCqwGlNLJgH7mO+P0Tmco9/vB6iGqQ66hwXZlTangzKx28yLvUiZraqXFF8bsmgkuxfzoTKsstEKJMiTF4q5UNl9Cixyht9LdXL76v/MRCzaVrhGoiJMueECkMxTgwLrNNq7h6j+xRf8lWaYTudxkUUFrAKTzRpbpAduRmpd4tjIYhM7umH0mhTnCK6ShwQz6ZsHBSbktYOxGFqHjMyPtx2k0+pZ+Qsu/GjsmeMbJSLcUPTObWIfFVco2SSBUteZsA3ZgP4jhEWWtOzXYIHjWqj3g9XOVuVJ4TcbO2FK4mVJ9ETnRxKH0AmGPnXb0Nc+sC9nRnDN2OTqPtXJkeRfI7jkHCFb79u8QPvuqhsYWVSS8bI3rXE1kWY1ZKYoC3FtfenG9e8haWYXUyk1783IQJ4W1jkscQTU1RZrL0cWoaCxIXnXsdDJStgz8B9EQ0uUEkfXSXYEbQtIA4DVKzTO4uqxOzafqAOLnvOxi5Vn95JCOu3CEAFr0WQEOnA2X3nw31spFvLj0jykGpn1ECHhW4Ft9EOkHDr4qDA8Mi5gH9EB+g0AhObwxj7RZB2Wq5PSmZw131mkHzgYOgD3JC9tlaGMSxesjF1O3+U3wUOLrrU89s128Y0PpiEzO6Jsm1aDzbF1pkz3asy0z+Enb4BMg/Jv5j/EZkKM6Okv746/ETIs69fv3e5Iucae7lyyYVNCYBtucWrOQK2Pfi4QzRZjkC29hj8OenHSn+75qcX/v5ejhSBAb24Bp1INNVgaF3VHGz1+ULEcs73b/b0K1AQJYfdkfD4fqrj1nUIlVYv3yw1SyEKClpoiBaLiRxg/04rgb3enmxe6msVApSIlAYs+qeRAIRDCU+ZensV1x4sS4VCjQgoPlo9sV7wJDUOTsUkgux38w39sqiSfONzmyhfXqZocojTv1m3vHh8gnCFUbZ/d3WvywDE67VPRlTYX5ZR80Yyjz3byDH2/+DWOsjv2q8KUv2mtgkiOTZ1D3tAF6Vl6tSWlixMYc1tfC8KDWDOq2eg7M72MqjfiMTuBPXr2ZB/nTdtCi9lDQQESzBmgJaV/KCZOAaIKQR9hibvy4vt3wlSZ9XTK+FFZPQc=",
10
+ },
11
+ },
12
+ mainnet: {
13
+ admin: {
14
+ hash: "25901604630376752069358432490423434073212977760589721765585739320126139736123",
15
+ data: "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",
16
+ },
17
+ token: {
18
+ hash: "27787098481477206239805523694633411816874383698563160451006881053714904356680",
19
+ data: "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",
20
+ },
21
+ },
22
+ testnet_v1: {
23
+ admin: {
24
+ hash: "1200635497217107248831982322269320244173535715339356861513501242012238077174",
25
+ data: "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",
26
+ },
27
+ token: {
28
+ hash: "25084457276132306637089336910977939820654927814172888515895248592725736067489",
29
+ data: "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",
30
+ },
31
+ },
32
+ mainnet_v1: {
33
+ admin: {
34
+ hash: "16115269877914581564299853766147447229664556890591132763176560855029019233817",
35
+ data: "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",
36
+ },
37
+ token: {
38
+ hash: "12320223354843720065815824451082596238990220882343256724550451075683722289248",
39
+ data: "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",
40
+ },
41
+ },
42
+ };
@@ -0,0 +1,178 @@
1
+ import {
2
+ Experimental,
3
+ Struct,
4
+ Field,
5
+ Option,
6
+ Provable,
7
+ PublicKey,
8
+ UInt64,
9
+ Poseidon,
10
+ Bool,
11
+ } from "o1js";
12
+ import {
13
+ serializeIndexedMap,
14
+ loadIndexedMerkleMap,
15
+ } from "../utils/indexed-map.js";
16
+ import { sleep } from "../../cloud/utils/utils.js";
17
+ import { Storage } from "../storage/storage.js";
18
+ import { createIpfsURL } from "../storage/ipfs.js";
19
+ import { pinJSON } from "../storage/pinata.js";
20
+
21
+ const { IndexedMerkleMap } = Experimental;
22
+ type IndexedMerkleMap = Experimental.IndexedMerkleMap;
23
+ const WHITELIST_HEIGHT = 20;
24
+
25
+ /** Represents the whitelist using an Indexed Merkle Map. */
26
+ export class WhitelistMap extends IndexedMerkleMap(WHITELIST_HEIGHT) {}
27
+ export class WhitelistMapOption extends Option(WhitelistMap) {}
28
+ export class UInt64Option extends Option(UInt64) {}
29
+ export class WhitelistedAddress extends Struct({
30
+ address: PublicKey,
31
+ amount: UInt64, // Maximum permitted amount of the transaction
32
+ }) {}
33
+
34
+ export class Whitelist extends Struct({
35
+ /** The root hash of the Merkle tree representing the whitelist. */
36
+ root: Field,
37
+ /** Off-chain storage information, typically an IPFS hash pointing to the whitelist data. */
38
+ storage: Storage,
39
+ }) {
40
+ isNone(): Bool {
41
+ return this.root
42
+ .equals(Field(0))
43
+ .or(Storage.equals(this.storage, Storage.empty()));
44
+ }
45
+
46
+ isSome(): Bool {
47
+ return this.isNone().not();
48
+ }
49
+
50
+ async load(): Promise<WhitelistMapOption> {
51
+ const isNone = this.isNone();
52
+ const map = await Provable.witnessAsync(WhitelistMapOption, async () => {
53
+ if (isNone.toBoolean()) return WhitelistMapOption.none();
54
+ else
55
+ return WhitelistMapOption.fromValue(
56
+ await loadIndexedMerkleMap({
57
+ url: createIpfsURL({ hash: this.storage.toString() }),
58
+ type: WhitelistMap,
59
+ })
60
+ );
61
+ });
62
+ isNone.assertEquals(map.isSome.not());
63
+ const root = Provable.if(
64
+ map.isSome,
65
+ map.orElse(new WhitelistMap()).root,
66
+ Field(0)
67
+ );
68
+ root.equals(this.root);
69
+ return map;
70
+ }
71
+
72
+ /**
73
+ * The function fetches a whitelisted amount associated with a given address using a map and returns it
74
+ * as a UInt64Option.
75
+ * @param {PublicKey} address - The `address` parameter is of type `PublicKey`, which represents a
76
+ * public key used in cryptography for various purposes such as encryption, digital signatures, and
77
+ * authentication. In the context of the `fetchWhitelistedAmount` function, the `address` parameter is
78
+ * used to retrieve a whitelisted amount
79
+ * @returns The `fetchWhitelistedAmount` function returns a `Promise` that resolves to a `UInt64Option`
80
+ * object. This object contains a `value` property representing the amount retrieved from a map based
81
+ * on the provided address. The `isSome` property indicates whether the value is present or not.
82
+ * The value is not present if the whitelist is NOT empty and the address is NOT whitelisted.
83
+ * The value is present if the whitelist is NOT empty or the address IS whitelisted.
84
+ * The value is present and equals to UInt64.MAXINT() if the whitelist IS empty.
85
+ */
86
+ async getWhitelistedAmount(address: PublicKey): Promise<UInt64Option> {
87
+ const map = await this.load();
88
+ const key = Poseidon.hashPacked(PublicKey, address);
89
+ const value = map.orElse(new WhitelistMap()).getOption(key);
90
+ const valueField = value.orElse(UInt64.MAXINT().value);
91
+ valueField.assertLessThanOrEqual(UInt64.MAXINT().value);
92
+ const amount = UInt64.Unsafe.fromField(valueField);
93
+ return new UInt64Option({
94
+ value: amount,
95
+ isSome: value.isSome.or(this.isNone()),
96
+ });
97
+ }
98
+
99
+ static empty(): Whitelist {
100
+ return new Whitelist({
101
+ root: Field(0),
102
+ storage: Storage.empty(),
103
+ });
104
+ }
105
+
106
+ /**
107
+ * Creates a new whitelist and pins it to IPFS.
108
+ * @param params - The parameters for creating the whitelist.
109
+ * @returns A new `Whitelist` instance.
110
+ */
111
+ static async create(params: {
112
+ list: WhitelistedAddress[] | { address: string; amount?: number }[];
113
+ name?: string;
114
+ keyvalues?: { key: string; value: string }[];
115
+ timeout?: number;
116
+ attempts?: number;
117
+ auth?: string;
118
+ }): Promise<Whitelist> {
119
+ const {
120
+ name = "whitelist.json",
121
+ keyvalues = [{ key: "library", value: "zkcloudworker" }],
122
+ timeout = 60 * 1000,
123
+ attempts = 5,
124
+ auth,
125
+ } = params;
126
+ const list: WhitelistedAddress[] =
127
+ typeof params.list[0].address === "string"
128
+ ? (params.list as { address: string; amount?: number }[]).map(
129
+ (item) =>
130
+ new WhitelistedAddress({
131
+ address: PublicKey.fromBase58(item.address),
132
+ amount: item.amount
133
+ ? UInt64.from(item.amount)
134
+ : UInt64.MAXINT(),
135
+ })
136
+ )
137
+ : (params.list as WhitelistedAddress[]);
138
+ const map = new WhitelistMap();
139
+ for (const item of list) {
140
+ map.insert(
141
+ Poseidon.hashPacked(PublicKey, item.address),
142
+ item.amount.toBigInt()
143
+ );
144
+ }
145
+ const serializedMap = serializeIndexedMap(map);
146
+ const json = {
147
+ map: serializedMap,
148
+ whitelist: list.map((item) => ({
149
+ address: item.address.toBase58(),
150
+ amount: Number(item.amount.toBigInt()),
151
+ })),
152
+ };
153
+ let attempt = 0;
154
+ const start = Date.now();
155
+ let hash = await pinJSON({
156
+ data: json,
157
+ name,
158
+ keyvalues,
159
+ auth,
160
+ });
161
+ while (!hash && attempt < attempts && Date.now() - start < timeout) {
162
+ attempt++;
163
+ await sleep(5000 * attempt); // handle rate-limits
164
+ hash = await pinJSON({
165
+ data: json,
166
+ name,
167
+ keyvalues,
168
+ auth,
169
+ });
170
+ }
171
+ if (!hash) throw new Error("Failed to pin whitelist");
172
+
173
+ return new Whitelist({
174
+ root: map.root,
175
+ storage: Storage.fromString(hash),
176
+ });
177
+ }
178
+ }
@@ -0,0 +1,57 @@
1
+ import { fetchMinaAccount } from "../index.js";
2
+ import { Mina, PublicKey, Field } from "o1js";
3
+
4
+ export async function accountExists(
5
+ address: string | PublicKey,
6
+ tokenId?: Field
7
+ ): Promise<boolean> {
8
+ try {
9
+ const publicKey =
10
+ typeof address === "string" ? PublicKey.fromBase58(address) : address;
11
+ await fetchMinaAccount({ publicKey, tokenId, force: false });
12
+ return Mina.hasAccount(publicKey, tokenId);
13
+ } catch (error) {
14
+ return false;
15
+ }
16
+ }
17
+
18
+ export async function tokenBalance(
19
+ address: string | PublicKey,
20
+ tokenId?: Field
21
+ ): Promise<number | undefined> {
22
+ try {
23
+ const publicKey =
24
+ typeof address === "string" ? PublicKey.fromBase58(address) : address;
25
+ await fetchMinaAccount({ publicKey, tokenId, force: false });
26
+ return Mina.hasAccount(publicKey, tokenId)
27
+ ? Number(Mina.getAccount(publicKey, tokenId).balance.toBigInt())
28
+ : undefined;
29
+ } catch (error) {
30
+ console.error("Cannot fetch account balance", error);
31
+ return undefined;
32
+ }
33
+ }
34
+
35
+ export async function checkAddress(
36
+ address: string | undefined
37
+ ): Promise<boolean> {
38
+ if (!address || typeof address !== "string") {
39
+ console.error("checkAddress params are invalid:", address);
40
+ return false;
41
+ }
42
+ try {
43
+ const publicKey = PublicKey.fromBase58(address);
44
+ if (address !== publicKey.toBase58()) {
45
+ console.log(
46
+ "checkAddress: address is not valid",
47
+ address,
48
+ publicKey.toBase58()
49
+ );
50
+ return false;
51
+ }
52
+ return true;
53
+ } catch (error) {
54
+ console.error("checkAddress catch", { address, error });
55
+ return false;
56
+ }
57
+ }
@@ -0,0 +1,166 @@
1
+ import { BlockBerryChain } from "./chain.js";
2
+
3
+ export async function getZkAppTxsFromBlockBerry(params: {
4
+ account: string;
5
+ chain: BlockBerryChain;
6
+ blockBerryApiKey: string;
7
+ }): Promise<any> {
8
+ const { account, chain, blockBerryApiKey } = params;
9
+ const options = {
10
+ method: "GET",
11
+ headers: {
12
+ accept: "application/json",
13
+ "x-api-key": blockBerryApiKey,
14
+ },
15
+ };
16
+ try {
17
+ const response = await fetch(
18
+ `https://api.blockberry.one/mina-${chain}/v1/zkapps/accounts/${account}/txs?size=10&orderBy=DESC&sortBy=AGE`,
19
+ options
20
+ );
21
+ if (!response.ok) {
22
+ console.error(
23
+ "Cannot fetch zkApp txs for account:",
24
+ account,
25
+ chain,
26
+ response.statusText
27
+ );
28
+ return undefined;
29
+ }
30
+ const result = await response.json();
31
+ //console.log("zkAppTxs", result);
32
+ return result;
33
+ } catch (err) {
34
+ console.error(
35
+ "Cannot fetch zkApp txs for account - catch:",
36
+ account,
37
+ chain,
38
+ err
39
+ );
40
+ return undefined;
41
+ }
42
+ }
43
+
44
+ export async function getPaymentTxsFromBlockBerry(params: {
45
+ account: string;
46
+ chain: BlockBerryChain;
47
+ blockBerryApiKey: string;
48
+ }): Promise<any> {
49
+ const { account, chain, blockBerryApiKey } = params;
50
+ const options = {
51
+ method: "GET",
52
+ headers: {
53
+ accept: "application/json",
54
+ "x-api-key": blockBerryApiKey,
55
+ },
56
+ };
57
+
58
+ try {
59
+ const response = await fetch(
60
+ `https://api.blockberry.one/mina-${chain}/v1/accounts/` +
61
+ account +
62
+ "/txs?page=0&size=1&orderBy=DESC&sortBy=AGE&direction=OUT",
63
+ options
64
+ );
65
+ if (!response.ok) {
66
+ console.error(
67
+ "Cannot fetch payment txs for account:",
68
+ account,
69
+ chain,
70
+ response.statusText
71
+ );
72
+ return undefined;
73
+ }
74
+ const result = await response.json();
75
+ //console.log("paymentTxs", result);
76
+ return result;
77
+ } catch (err) {
78
+ console.error(
79
+ "Cannot fetch payment txs for account - catch:",
80
+ account,
81
+ chain,
82
+ err
83
+ );
84
+ return undefined;
85
+ }
86
+ }
87
+
88
+ export async function getZkAppTxFromBlockBerry(params: {
89
+ hash: string;
90
+ chain: BlockBerryChain;
91
+ blockBerryApiKey: string;
92
+ }): Promise<any> {
93
+ const { hash, chain, blockBerryApiKey } = params;
94
+ const options = {
95
+ method: "GET",
96
+ headers: {
97
+ accept: "application/json",
98
+ "x-api-key": blockBerryApiKey,
99
+ },
100
+ };
101
+ try {
102
+ const response = await fetch(
103
+ `https://api.blockberry.one/mina-${chain}/v1/zkapps/txs/${hash}`,
104
+ options
105
+ );
106
+ if (response.ok) {
107
+ const result = await response.json();
108
+ return result;
109
+ } else {
110
+ console.error(
111
+ "getZkAppTxFromBlockBerry error while getting hash - not ok",
112
+ { hash, chain, text: response.statusText, status: response.status }
113
+ );
114
+ return undefined;
115
+ }
116
+ } catch (err) {
117
+ console.error(
118
+ "getZkAppTxFromBlockBerry error while getting mainnet hash - catch",
119
+ hash,
120
+ chain,
121
+ err
122
+ );
123
+ return undefined;
124
+ }
125
+ }
126
+
127
+ export async function getZkAppFromBlockBerry(params: {
128
+ account: string;
129
+ chain: BlockBerryChain;
130
+ blockBerryApiKey: string;
131
+ }): Promise<any> {
132
+ const { account, chain, blockBerryApiKey } = params;
133
+ const options = {
134
+ method: "GET",
135
+ headers: {
136
+ accept: "application/json",
137
+ "x-api-key": blockBerryApiKey,
138
+ },
139
+ };
140
+ try {
141
+ const response = await fetch(
142
+ `https://api.blockberry.one/mina-${chain}/v1/zkapps/${account}`,
143
+ options
144
+ );
145
+ if (response.ok) {
146
+ const result = await response.json();
147
+ return result;
148
+ } else {
149
+ console.error("getZkAppFromBlockBerry error while getting account", {
150
+ account,
151
+ chain,
152
+ text: response.statusText,
153
+ status: response.status,
154
+ });
155
+ return undefined;
156
+ }
157
+ } catch (err) {
158
+ console.error(
159
+ "getZkAppFromBlockBerry error while getting account - catch",
160
+ account,
161
+ chain,
162
+ err
163
+ );
164
+ return undefined;
165
+ }
166
+ }
@@ -0,0 +1 @@
1
+ export type BlockBerryChain = "mainnet" | "devnet";
@@ -0,0 +1,8 @@
1
+ export * from "./nonce.js";
2
+ export * from "./transaction.js";
3
+ export * from "./txstatus.js";
4
+ export * from "./chain.js";
5
+ export * from "./blockberry.js";
6
+ export * from "./tiny-contract.js";
7
+ export * from "./send.js";
8
+ export * from "./account.js";
@@ -0,0 +1,120 @@
1
+ import { BlockBerryChain } from "./chain.js";
2
+ import {
3
+ getZkAppTxsFromBlockBerry,
4
+ getPaymentTxsFromBlockBerry,
5
+ } from "./blockberry.js";
6
+ import { fetchMinaAccount, getCurrentNetwork } from "../index.js";
7
+ import { Mina, PublicKey } from "o1js";
8
+ import { blockchain } from "../../cloud/networks.js";
9
+
10
+ export async function getNonce(params: {
11
+ account: string;
12
+ chain: BlockBerryChain;
13
+ blockBerryApiKey: string;
14
+ }): Promise<{
15
+ success: boolean;
16
+ nonce: number;
17
+ message?: string;
18
+ }> {
19
+ const { account, chain, blockBerryApiKey } = params;
20
+ try {
21
+ if (account === undefined || account === null || account === "") {
22
+ return {
23
+ success: false,
24
+ nonce: -1,
25
+ message: "Account is required",
26
+ };
27
+ }
28
+
29
+ if (
30
+ blockBerryApiKey === undefined ||
31
+ blockBerryApiKey === null ||
32
+ blockBerryApiKey === ""
33
+ ) {
34
+ return {
35
+ success: false,
36
+ nonce: -1,
37
+ message: "blockBerryApiKey is required",
38
+ };
39
+ }
40
+ const zkAppTxsPromise = getZkAppTxsFromBlockBerry({
41
+ account,
42
+ chain,
43
+ blockBerryApiKey,
44
+ });
45
+ const paymentTxs = getPaymentTxsFromBlockBerry({
46
+ account,
47
+ chain,
48
+ blockBerryApiKey,
49
+ });
50
+
51
+ const paymentNonce = (await paymentTxs)?.data[0]?.nonce ?? -1;
52
+ let zkNonce = -1;
53
+ let found = false;
54
+ const zkAppTxs = await zkAppTxsPromise;
55
+ const size = zkAppTxs?.data?.length ?? 0;
56
+ let i = 0;
57
+ while (!found && i < size) {
58
+ if (zkAppTxs?.data[i]?.proverAddress === account) {
59
+ zkNonce = zkAppTxs?.data[i]?.nonce;
60
+ found = true;
61
+ }
62
+ i++;
63
+ }
64
+ const nonce = Math.max(zkNonce, paymentNonce);
65
+
66
+ return {
67
+ success: true,
68
+ nonce,
69
+ };
70
+ } catch (error) {
71
+ return {
72
+ success: false,
73
+ nonce: -1,
74
+ message: String(error),
75
+ };
76
+ }
77
+ }
78
+
79
+ export async function getAccountNonce(params: {
80
+ account: string;
81
+ chain?: blockchain;
82
+ blockBerryApiKey?: string;
83
+ verbose?: boolean;
84
+ }): Promise<number> {
85
+ const {
86
+ account,
87
+ chain = getCurrentNetwork().network.chainId,
88
+ blockBerryApiKey,
89
+ verbose = true,
90
+ } = params;
91
+ const canUseBlockBerry =
92
+ blockBerryApiKey !== undefined &&
93
+ (chain === "devnet" || chain === "mainnet");
94
+ if (chain === "zeko") {
95
+ const publicKey = PublicKey.fromBase58(account);
96
+ await fetchMinaAccount({ publicKey });
97
+ const nonce = Number(Mina.getAccount(publicKey).nonce.toBigint());
98
+ return nonce;
99
+ } else {
100
+ const blockberryNoncePromise = canUseBlockBerry
101
+ ? getNonce({
102
+ account,
103
+ blockBerryApiKey,
104
+ chain,
105
+ })
106
+ : undefined;
107
+ const publicKey = PublicKey.fromBase58(account);
108
+ await fetchMinaAccount({ publicKey });
109
+ const senderNonce = Number(Mina.getAccount(publicKey).nonce.toBigint());
110
+ const blockberryNonce = blockberryNoncePromise
111
+ ? (await blockberryNoncePromise).nonce ?? -1
112
+ : -1;
113
+ const nonce = Math.max(senderNonce, blockberryNonce + 1);
114
+ if (verbose && nonce > senderNonce)
115
+ console.log(
116
+ `Nonce changed from ${senderNonce} to ${nonce} for ${account}`
117
+ );
118
+ return nonce;
119
+ }
120
+ }