@proto-kit/protocol 0.1.1-develop.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +45 -0
  3. package/dist/Constants.d.ts +4 -0
  4. package/dist/Constants.d.ts.map +1 -0
  5. package/dist/Constants.js +4 -0
  6. package/dist/Constants.js.map +1 -0
  7. package/dist/hooks/AccountStateHook.d.ts +52 -0
  8. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  9. package/dist/hooks/AccountStateHook.js +48 -0
  10. package/dist/hooks/AccountStateHook.js.map +1 -0
  11. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  12. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  13. package/dist/hooks/BlockHeightHook.js +16 -0
  14. package/dist/hooks/BlockHeightHook.js.map +1 -0
  15. package/dist/hooks/LastStateRootBlockHook.d.ts +8 -0
  16. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  17. package/dist/hooks/LastStateRootBlockHook.js +16 -0
  18. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  19. package/dist/hooks/NoopBlockHook.d.ts +9 -0
  20. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  21. package/dist/hooks/NoopBlockHook.js +10 -0
  22. package/dist/hooks/NoopBlockHook.js.map +1 -0
  23. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  24. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  25. package/dist/hooks/NoopSettlementHook.js +18 -0
  26. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  27. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  28. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  29. package/dist/hooks/NoopTransactionHook.js +8 -0
  30. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  31. package/dist/index.d.ts +58 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +58 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/model/MethodPublicOutput.d.ts +113 -0
  36. package/dist/model/MethodPublicOutput.d.ts.map +1 -0
  37. package/dist/model/MethodPublicOutput.js +15 -0
  38. package/dist/model/MethodPublicOutput.js.map +1 -0
  39. package/dist/model/Option.d.ts +122 -0
  40. package/dist/model/Option.d.ts.map +1 -0
  41. package/dist/model/Option.js +111 -0
  42. package/dist/model/Option.js.map +1 -0
  43. package/dist/model/Path.d.ts +31 -0
  44. package/dist/model/Path.d.ts.map +1 -0
  45. package/dist/model/Path.js +43 -0
  46. package/dist/model/Path.js.map +1 -0
  47. package/dist/model/RuntimeLike.d.ts +11 -0
  48. package/dist/model/RuntimeLike.d.ts.map +1 -0
  49. package/dist/model/RuntimeLike.js +2 -0
  50. package/dist/model/RuntimeLike.js.map +1 -0
  51. package/dist/model/StateTransition.d.ts +135 -0
  52. package/dist/model/StateTransition.d.ts.map +1 -0
  53. package/dist/model/StateTransition.js +69 -0
  54. package/dist/model/StateTransition.js.map +1 -0
  55. package/dist/model/StateTransitionProvableBatch.d.ts +198 -0
  56. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -0
  57. package/dist/model/StateTransitionProvableBatch.js +91 -0
  58. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  59. package/dist/model/network/NetworkState.d.ts +160 -0
  60. package/dist/model/network/NetworkState.d.ts.map +1 -0
  61. package/dist/model/network/NetworkState.js +32 -0
  62. package/dist/model/network/NetworkState.js.map +1 -0
  63. package/dist/model/transaction/RuntimeTransaction.d.ts +122 -0
  64. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -0
  65. package/dist/model/transaction/RuntimeTransaction.js +87 -0
  66. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  67. package/dist/model/transaction/SignedTransaction.d.ts +107 -0
  68. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  69. package/dist/model/transaction/SignedTransaction.js +34 -0
  70. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  71. package/dist/model/transaction/ValueOption.d.ts +173 -0
  72. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  73. package/dist/model/transaction/ValueOption.js +25 -0
  74. package/dist/model/transaction/ValueOption.js.map +1 -0
  75. package/dist/protocol/Protocol.d.ts +43 -0
  76. package/dist/protocol/Protocol.d.ts.map +1 -0
  77. package/dist/protocol/Protocol.js +120 -0
  78. package/dist/protocol/Protocol.js.map +1 -0
  79. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  80. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  81. package/dist/protocol/ProtocolEnvironment.js +2 -0
  82. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  83. package/dist/protocol/ProtocolModule.d.ts +9 -0
  84. package/dist/protocol/ProtocolModule.d.ts.map +1 -0
  85. package/dist/protocol/ProtocolModule.js +13 -0
  86. package/dist/protocol/ProtocolModule.js.map +1 -0
  87. package/dist/protocol/ProvableBlockHook.d.ts +8 -0
  88. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  89. package/dist/protocol/ProvableBlockHook.js +5 -0
  90. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  91. package/dist/protocol/ProvableTransactionHook.d.ts +7 -0
  92. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
  93. package/dist/protocol/ProvableTransactionHook.js +4 -0
  94. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  95. package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
  96. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
  97. package/dist/protocol/TransitioningProtocolModule.js +9 -0
  98. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  99. package/dist/prover/block/BlockProvable.d.ts +409 -0
  100. package/dist/prover/block/BlockProvable.d.ts.map +1 -0
  101. package/dist/prover/block/BlockProvable.js +48 -0
  102. package/dist/prover/block/BlockProvable.js.map +1 -0
  103. package/dist/prover/block/BlockProver.d.ts +94 -0
  104. package/dist/prover/block/BlockProver.d.ts.map +1 -0
  105. package/dist/prover/block/BlockProver.js +510 -0
  106. package/dist/prover/block/BlockProver.js.map +1 -0
  107. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +64 -0
  108. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  109. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +17 -0
  110. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  111. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  112. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  113. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  114. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  115. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  116. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  117. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js +23 -0
  118. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  119. package/dist/prover/statetransition/StateTransitionProvable.d.ts +172 -0
  120. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -0
  121. package/dist/prover/statetransition/StateTransitionProvable.js +16 -0
  122. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  123. package/dist/prover/statetransition/StateTransitionProver.d.ts +48 -0
  124. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -0
  125. package/dist/prover/statetransition/StateTransitionProver.js +187 -0
  126. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  127. package/dist/settlement/ContractModule.d.ts +16 -0
  128. package/dist/settlement/ContractModule.d.ts.map +1 -0
  129. package/dist/settlement/ContractModule.js +12 -0
  130. package/dist/settlement/ContractModule.js.map +1 -0
  131. package/dist/settlement/SettlementContractModule.d.ts +53 -0
  132. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  133. package/dist/settlement/SettlementContractModule.js +80 -0
  134. package/dist/settlement/SettlementContractModule.js.map +1 -0
  135. package/dist/settlement/contracts/BridgeContract.d.ts +97 -0
  136. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  137. package/dist/settlement/contracts/BridgeContract.js +164 -0
  138. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  139. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +14 -0
  140. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  141. package/dist/settlement/contracts/BridgeContractProtocolModule.js +30 -0
  142. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  143. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +21 -0
  144. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  145. package/dist/settlement/contracts/DispatchContractProtocolModule.js +57 -0
  146. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  147. package/dist/settlement/contracts/DispatchSmartContract.d.ts +44 -0
  148. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  149. package/dist/settlement/contracts/DispatchSmartContract.js +230 -0
  150. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  151. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  152. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  153. package/dist/settlement/contracts/SettlementContractProtocolModule.js +82 -0
  154. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  155. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  156. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  157. package/dist/settlement/contracts/SettlementSmartContract.js +309 -0
  158. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  159. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  160. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  161. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  162. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  163. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  164. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  165. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  166. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  167. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  168. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  169. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  170. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  171. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  172. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  173. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  174. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  175. package/dist/settlement/messages/Deposit.d.ts +77 -0
  176. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  177. package/dist/settlement/messages/Deposit.js +8 -0
  178. package/dist/settlement/messages/Deposit.js.map +1 -0
  179. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +197 -0
  180. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  181. package/dist/settlement/messages/OutgoingMessageArgument.js +33 -0
  182. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  183. package/dist/settlement/messages/Withdrawal.d.ts +78 -0
  184. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  185. package/dist/settlement/messages/Withdrawal.js +16 -0
  186. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  187. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  188. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  189. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  190. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  191. package/dist/settlement/modularity/types.d.ts +8 -0
  192. package/dist/settlement/modularity/types.d.ts.map +1 -0
  193. package/dist/settlement/modularity/types.js +2 -0
  194. package/dist/settlement/modularity/types.js.map +1 -0
  195. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  196. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  197. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  198. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  199. package/dist/state/State.d.ts +68 -0
  200. package/dist/state/State.d.ts.map +1 -0
  201. package/dist/state/State.js +130 -0
  202. package/dist/state/State.js.map +1 -0
  203. package/dist/state/StateMap.d.ts +37 -0
  204. package/dist/state/StateMap.d.ts.map +1 -0
  205. package/dist/state/StateMap.js +56 -0
  206. package/dist/state/StateMap.js.map +1 -0
  207. package/dist/state/StateService.d.ts +6 -0
  208. package/dist/state/StateService.d.ts.map +1 -0
  209. package/dist/state/StateService.js +2 -0
  210. package/dist/state/StateService.js.map +1 -0
  211. package/dist/state/StateServiceProvider.d.ts +8 -0
  212. package/dist/state/StateServiceProvider.d.ts.map +1 -0
  213. package/dist/state/StateServiceProvider.js +37 -0
  214. package/dist/state/StateServiceProvider.js.map +1 -0
  215. package/dist/state/assert/assert.d.ts +12 -0
  216. package/dist/state/assert/assert.d.ts.map +1 -0
  217. package/dist/state/assert/assert.js +31 -0
  218. package/dist/state/assert/assert.js.map +1 -0
  219. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
  220. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
  221. package/dist/state/context/RuntimeMethodExecutionContext.js +136 -0
  222. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  223. package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
  224. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
  225. package/dist/state/context/TransitionMethodExecutionContext.js +6 -0
  226. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  227. package/dist/state/protocol/ProtocolState.d.ts +7 -0
  228. package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
  229. package/dist/state/protocol/ProtocolState.js +40 -0
  230. package/dist/state/protocol/ProtocolState.js.map +1 -0
  231. package/dist/utils/MinaPrefixedProvableHashList.d.ts +24 -0
  232. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  233. package/dist/utils/MinaPrefixedProvableHashList.js +53 -0
  234. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  235. package/dist/utils/PrefixedProvableHashList.d.ts +8 -0
  236. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -0
  237. package/dist/utils/PrefixedProvableHashList.js +13 -0
  238. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  239. package/dist/utils/ProvableHashList.d.ts +27 -0
  240. package/dist/utils/ProvableHashList.d.ts.map +1 -0
  241. package/dist/utils/ProvableHashList.js +44 -0
  242. package/dist/utils/ProvableHashList.js.map +1 -0
  243. package/dist/utils/ProvableReductionHashList.d.ts +14 -0
  244. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  245. package/dist/utils/ProvableReductionHashList.js +51 -0
  246. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  247. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  248. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  249. package/dist/utils/StateTransitionReductionList.js +61 -0
  250. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  251. package/dist/utils/utils.d.ts +11 -0
  252. package/dist/utils/utils.d.ts.map +1 -0
  253. package/dist/utils/utils.js +45 -0
  254. package/dist/utils/utils.js.map +1 -0
  255. package/jest.config.cjs +12 -0
  256. package/package.json +36 -0
  257. package/src/Constants.ts +3 -0
  258. package/src/hooks/AccountStateHook.ts +48 -0
  259. package/src/hooks/BlockHeightHook.ts +17 -0
  260. package/src/hooks/LastStateRootBlockHook.ts +26 -0
  261. package/src/hooks/NoopBlockHook.ts +21 -0
  262. package/src/hooks/NoopSettlementHook.ts +20 -0
  263. package/src/hooks/NoopTransactionHook.ts +10 -0
  264. package/src/index.ts +57 -0
  265. package/src/model/MethodPublicOutput.ts +14 -0
  266. package/src/model/Option.ts +172 -0
  267. package/src/model/Path.ts +50 -0
  268. package/src/model/RuntimeLike.ts +12 -0
  269. package/src/model/StateTransition.ts +88 -0
  270. package/src/model/StateTransitionProvableBatch.ts +145 -0
  271. package/src/model/Transaction.ts +31 -0
  272. package/src/model/network/NetworkState.ts +33 -0
  273. package/src/model/transaction/RuntimeTransaction.ts +105 -0
  274. package/src/model/transaction/SignedTransaction.ts +47 -0
  275. package/src/model/transaction/ValueOption.ts +28 -0
  276. package/src/protocol/Protocol.ts +226 -0
  277. package/src/protocol/ProtocolEnvironment.ts +10 -0
  278. package/src/protocol/ProtocolModule.ts +27 -0
  279. package/src/protocol/ProvableBlockHook.ts +19 -0
  280. package/src/protocol/ProvableTransactionHook.ts +13 -0
  281. package/src/protocol/TransitioningProtocolModule.ts +12 -0
  282. package/src/prover/block/BlockProvable.ts +99 -0
  283. package/src/prover/block/BlockProver.ts +990 -0
  284. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +16 -0
  285. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  286. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  287. package/src/prover/statetransition/StateTransitionProvable.ts +41 -0
  288. package/src/prover/statetransition/StateTransitionProver.ts +377 -0
  289. package/src/settlement/ContractModule.ts +31 -0
  290. package/src/settlement/SettlementContractModule.ts +145 -0
  291. package/src/settlement/contracts/BridgeContract.ts +237 -0
  292. package/src/settlement/contracts/BridgeContractProtocolModule.ts +43 -0
  293. package/src/settlement/contracts/DispatchContractProtocolModule.ts +73 -0
  294. package/src/settlement/contracts/DispatchSmartContract.ts +326 -0
  295. package/src/settlement/contracts/SettlementContractProtocolModule.ts +108 -0
  296. package/src/settlement/contracts/SettlementSmartContract.ts +498 -0
  297. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  298. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  299. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  300. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  301. package/src/settlement/messages/Deposit.ts +7 -0
  302. package/src/settlement/messages/OutgoingMessageArgument.ts +42 -0
  303. package/src/settlement/messages/Withdrawal.ts +16 -0
  304. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  305. package/src/settlement/modularity/types.ts +22 -0
  306. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  307. package/src/state/State.ts +175 -0
  308. package/src/state/StateMap.ts +73 -0
  309. package/src/state/StateService.ts +6 -0
  310. package/src/state/StateServiceProvider.ts +37 -0
  311. package/src/state/assert/assert.ts +35 -0
  312. package/src/state/context/RuntimeMethodExecutionContext.ts +174 -0
  313. package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
  314. package/src/state/protocol/ProtocolState.ts +61 -0
  315. package/src/utils/MinaPrefixedProvableHashList.ts +73 -0
  316. package/src/utils/PrefixedProvableHashList.ts +21 -0
  317. package/src/utils/ProvableHashList.ts +50 -0
  318. package/src/utils/ProvableReductionHashList.ts +68 -0
  319. package/src/utils/StateTransitionReductionList.ts +89 -0
  320. package/src/utils/utils.ts +75 -0
  321. package/test/BlockProver.test.ts +212 -0
  322. package/test/Protocol.test.ts +37 -0
  323. package/test/State.test.ts +45 -0
  324. package/test/StateTransition.test.ts +174 -0
  325. package/test/TestingProtocol.ts +52 -0
  326. package/test/compiling/types.ts +28 -0
  327. package/test/model/Option.test.ts +72 -0
  328. package/test/modularity/types.ts +35 -0
  329. package/test/state/assert/assert.test.ts +56 -0
  330. package/test/tsconfig.json +7 -0
  331. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  332. package/test/utils.test.ts +27 -0
  333. package/tsconfig.json +8 -0
@@ -0,0 +1,37 @@
1
+ import type { Field, FlexibleProvablePure } from "o1js";
2
+ import { Option } from "../model/Option";
3
+ import { WithStateServiceProvider, WithPath } from "./State";
4
+ declare const StateMap_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider>;
5
+ /**
6
+ * Map-like wrapper for state
7
+ */
8
+ export declare class StateMap<KeyType, ValueType> extends StateMap_base {
9
+ keyType: FlexibleProvablePure<KeyType>;
10
+ valueType: FlexibleProvablePure<ValueType>;
11
+ /**
12
+ * Create a new state map with the given key and value types
13
+ *
14
+ * @param keyType - Type to be used as a key
15
+ * @param valueType - Type to be stored as a value
16
+ * @returns State map with provided key and value types.
17
+ */
18
+ static from<KeyType, ValueType>(keyType: FlexibleProvablePure<KeyType>, valueType: FlexibleProvablePure<ValueType>): StateMap<KeyType, ValueType>;
19
+ constructor(keyType: FlexibleProvablePure<KeyType>, valueType: FlexibleProvablePure<ValueType>);
20
+ getPath(key: KeyType): Field;
21
+ /**
22
+ * Obtains a value for the provided key in the current state map.
23
+ *
24
+ * @param key - Key to obtain the state for
25
+ * @returns Value for the provided key.
26
+ */
27
+ get(key: KeyType): Promise<Option<ValueType>>;
28
+ /**
29
+ * Sets a value for the given key in the current state map.
30
+ *
31
+ * @param key - Key to store the value under
32
+ * @param value - Value to be stored under the given key
33
+ */
34
+ set(key: KeyType, value: ValueType): Promise<void>;
35
+ }
36
+ export {};
37
+ //# sourceMappingURL=StateMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateMap.d.ts","sourceRoot":"","sources":["../../src/state/StateMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,MAAM,CAAC;AAIxD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAS,wBAAwB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;;AAEpE;;GAEG;AACH,qBAAa,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAE,SAAQ,aAGjD;IAgBU,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC;IACtC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAhBnD;;;;;;OAMG;WACW,IAAI,CAAC,OAAO,EAAE,SAAS,EACnC,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACtC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACzC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;gBAKtB,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACtC,SAAS,EAAE,oBAAoB,CAAC,SAAS,CAAC;IAK5C,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK;IAKnC;;;;;OAKG;IACU,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAU1D;;;;;OAKG;IACU,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAShE"}
@@ -0,0 +1,56 @@
1
+ import { Mixin } from "ts-mixer";
2
+ import { Path } from "../model/Path";
3
+ import { State, WithStateServiceProvider, WithPath } from "./State";
4
+ /**
5
+ * Map-like wrapper for state
6
+ */
7
+ export class StateMap extends Mixin(WithPath, WithStateServiceProvider) {
8
+ /**
9
+ * Create a new state map with the given key and value types
10
+ *
11
+ * @param keyType - Type to be used as a key
12
+ * @param valueType - Type to be stored as a value
13
+ * @returns State map with provided key and value types.
14
+ */
15
+ static from(keyType, valueType) {
16
+ return new StateMap(keyType, valueType);
17
+ }
18
+ constructor(keyType, valueType) {
19
+ super();
20
+ this.keyType = keyType;
21
+ this.valueType = valueType;
22
+ }
23
+ getPath(key) {
24
+ this.hasPathOrFail();
25
+ return Path.fromKey(this.path, this.keyType, key);
26
+ }
27
+ /**
28
+ * Obtains a value for the provided key in the current state map.
29
+ *
30
+ * @param key - Key to obtain the state for
31
+ * @returns Value for the provided key.
32
+ */
33
+ async get(key) {
34
+ const state = State.from(this.valueType);
35
+ this.hasPathOrFail();
36
+ this.hasStateServiceOrFail();
37
+ state.path = this.getPath(key);
38
+ state.stateServiceProvider = this.stateServiceProvider;
39
+ return await state.get();
40
+ }
41
+ /**
42
+ * Sets a value for the given key in the current state map.
43
+ *
44
+ * @param key - Key to store the value under
45
+ * @param value - Value to be stored under the given key
46
+ */
47
+ async set(key, value) {
48
+ const state = State.from(this.valueType);
49
+ this.hasPathOrFail();
50
+ this.hasStateServiceOrFail();
51
+ state.path = Path.fromKey(this.path, this.keyType, key);
52
+ state.stateServiceProvider = this.stateServiceProvider;
53
+ return await state.set(value);
54
+ }
55
+ }
56
+ //# sourceMappingURL=StateMap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateMap.js","sourceRoot":"","sources":["../../src/state/StateMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEpE;;GAEG;AACH,MAAM,OAAO,QAA6B,SAAQ,KAAK,CACrD,QAAQ,EACR,wBAAwB,CACzB;IACC;;;;;;OAMG;IACI,MAAM,CAAC,IAAI,CAChB,OAAsC,EACtC,SAA0C;QAE1C,OAAO,IAAI,QAAQ,CAAqB,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,YACS,OAAsC,EACtC,SAA0C;QAEjD,KAAK,EAAE,CAAC;QAHD,YAAO,GAAP,OAAO,CAA+B;QACtC,cAAS,GAAT,SAAS,CAAiC;IAGnD,CAAC;IAEM,OAAO,CAAC,GAAY;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,GAAG,CAAC,GAAY;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,GAAG,CAAC,GAAY,EAAE,KAAgB;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACxD,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,OAAO,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import { Field } from "o1js";
2
+ export interface SimpleAsyncStateService {
3
+ get: (key: Field) => Promise<Field[] | undefined>;
4
+ set: (key: Field, value: Field[] | undefined) => Promise<void>;
5
+ }
6
+ //# sourceMappingURL=StateService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateService.d.ts","sourceRoot":"","sources":["../../src/state/StateService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC;IAClD,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=StateService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateService.js","sourceRoot":"","sources":["../../src/state/StateService.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { SimpleAsyncStateService } from "./StateService";
2
+ export declare class StateServiceProvider {
3
+ private readonly stateServiceStack;
4
+ get stateService(): SimpleAsyncStateService;
5
+ setCurrentStateService(service: SimpleAsyncStateService): void;
6
+ popCurrentStateService(): void;
7
+ }
8
+ //# sourceMappingURL=StateServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateServiceProvider.d.ts","sourceRoot":"","sources":["../../src/state/StateServiceProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AASzD,qBACa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IAEnE,IAAW,YAAY,IAAI,uBAAuB,CAOjD;IAEM,sBAAsB,CAAC,OAAO,EAAE,uBAAuB;IAIvD,sBAAsB;CAO9B"}
@@ -0,0 +1,37 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { injectable } from "tsyringe";
8
+ import { log } from "@proto-kit/common";
9
+ const errors = {
10
+ stateServiceNotSet: () => new Error("StateService has not been set yet. Be sure to either call your runtime or protocol function by creating them with an AppChain or by setting the stateService manually."),
11
+ };
12
+ export let StateServiceProvider = class StateServiceProvider {
13
+ constructor() {
14
+ this.stateServiceStack = [];
15
+ }
16
+ get stateService() {
17
+ if (this.stateServiceStack.length === 0) {
18
+ throw errors.stateServiceNotSet();
19
+ }
20
+ // Assertion here is ok, because we check that the array is not empty above
21
+ return this.stateServiceStack.at(-1);
22
+ }
23
+ setCurrentStateService(service) {
24
+ this.stateServiceStack.push(service);
25
+ }
26
+ popCurrentStateService() {
27
+ if (this.stateServiceStack.length === 0) {
28
+ log.trace("Trying to pop from empty state-service stack");
29
+ return;
30
+ }
31
+ this.stateServiceStack.pop();
32
+ }
33
+ };
34
+ StateServiceProvider = __decorate([
35
+ injectable()
36
+ ], StateServiceProvider);
37
+ //# sourceMappingURL=StateServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateServiceProvider.js","sourceRoot":"","sources":["../../src/state/StateServiceProvider.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAIxC,MAAM,MAAM,GAAG;IACb,kBAAkB,EAAE,GAAG,EAAE,CACvB,IAAI,KAAK,CACP,wKAAwK,CACzK;CACJ,CAAC;AAGK,WAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QACY,sBAAiB,GAA8B,EAAE,CAAC;IAsBrE,CAAC;IApBC,IAAW,YAAY;QACrB,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,MAAM,MAAM,CAAC,kBAAkB,EAAE,CAAC;SACnC;QAED,2EAA2E;QAC3E,OAAO,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;IACxC,CAAC;IAEM,sBAAsB,CAAC,OAAgC;QAC5D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAEM,sBAAsB;QAC3B,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,GAAG,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC1D,OAAO;SACR;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;CACF,CAAA;AAvBY,oBAAoB;IADhC,UAAU,EAAE;GACA,oBAAoB,CAuBhC"}
@@ -0,0 +1,12 @@
1
+ import { Bool } from "o1js";
2
+ /**
3
+ * Maintains an execution status of the current runtime module method,
4
+ * while prioritizing one-time failures. The assertion won't change the
5
+ * execution status if it has previously failed at least once within the
6
+ * same method execution context.
7
+ *
8
+ * @param condition - Result of the assertion made about the execution status
9
+ * @param message - Optional message describing the prior status
10
+ */
11
+ export declare function assert(condition: Bool, message?: string | (() => string)): void;
12
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/state/assert/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAY,MAAM,MAAM,CAAC;AAMtC;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,QAmBxE"}
@@ -0,0 +1,31 @@
1
+ import { Provable } from "o1js";
2
+ import { container } from "tsyringe";
3
+ import { log } from "@proto-kit/common";
4
+ import { RuntimeMethodExecutionContext } from "../context/RuntimeMethodExecutionContext";
5
+ /**
6
+ * Maintains an execution status of the current runtime module method,
7
+ * while prioritizing one-time failures. The assertion won't change the
8
+ * execution status if it has previously failed at least once within the
9
+ * same method execution context.
10
+ *
11
+ * @param condition - Result of the assertion made about the execution status
12
+ * @param message - Optional message describing the prior status
13
+ */
14
+ export function assert(condition, message) {
15
+ const executionContext = container.resolve(RuntimeMethodExecutionContext);
16
+ const previousStatus = executionContext.current().result.status;
17
+ const status = condition.and(previousStatus);
18
+ Provable.asProver(() => {
19
+ if (!condition.toBoolean()) {
20
+ if (!executionContext.current().isSimulated) {
21
+ log.debug("Assertion failed: ", message);
22
+ }
23
+ const messageString = message !== undefined && typeof message === "function"
24
+ ? message()
25
+ : message;
26
+ executionContext.setStatusMessage(messageString, new Error().stack);
27
+ }
28
+ });
29
+ executionContext.setStatus(status);
30
+ }
31
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../../src/state/assert/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,6BAA6B,EAAE,MAAM,0CAA0C,CAAC;AAEzF;;;;;;;;GAQG;AACH,MAAM,UAAU,MAAM,CAAC,SAAe,EAAE,OAAiC;IACvE,MAAM,gBAAgB,GAAG,SAAS,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IAChE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE7C,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE;QACrB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE;YAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE;gBAC3C,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;aAC1C;YACD,MAAM,aAAa,GACjB,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,KAAK,UAAU;gBACpD,CAAC,CAAC,OAAO,EAAE;gBACX,CAAC,CAAC,OAAO,CAAC;YACd,gBAAgB,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;SACrE;IACH,CAAC,CAAC,CAAC;IAEH,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,193 @@
1
+ import { Bool, FlexibleProvablePure, Provable } from "o1js";
2
+ import { ProvableMethodExecutionContext, ProvableMethodExecutionResult } from "@proto-kit/common";
3
+ import { StateTransition } from "../../model/StateTransition";
4
+ import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
5
+ import { NetworkState } from "../../model/network/NetworkState";
6
+ export declare class RuntimeProvableMethodExecutionResult extends ProvableMethodExecutionResult {
7
+ stateTransitions: StateTransition<any>[];
8
+ status: Bool;
9
+ statusMessage?: string;
10
+ stackTrace?: string;
11
+ events: {
12
+ eventType: FlexibleProvablePure<any>;
13
+ event: any;
14
+ eventName: string;
15
+ condition: Bool;
16
+ }[];
17
+ }
18
+ export interface RuntimeMethodExecutionData {
19
+ transaction: RuntimeTransaction;
20
+ networkState: NetworkState;
21
+ }
22
+ declare const RuntimeMethodExecutionDataStruct_base: (new (value: {
23
+ transaction: RuntimeTransaction;
24
+ networkState: NetworkState;
25
+ }) => {
26
+ transaction: RuntimeTransaction;
27
+ networkState: NetworkState;
28
+ }) & {
29
+ _isStruct: true;
30
+ } & Provable<{
31
+ transaction: RuntimeTransaction;
32
+ networkState: NetworkState;
33
+ }, {
34
+ transaction: {
35
+ methodId: bigint;
36
+ argsHash: bigint;
37
+ nonce: {
38
+ isSome: boolean;
39
+ value: any;
40
+ };
41
+ sender: {
42
+ isSome: boolean;
43
+ value: any;
44
+ };
45
+ };
46
+ networkState: {
47
+ block: {
48
+ height: bigint;
49
+ };
50
+ previous: {
51
+ rootHash: bigint;
52
+ };
53
+ };
54
+ }> & {
55
+ fromValue: (value: {
56
+ transaction: RuntimeTransaction | {
57
+ methodId: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
58
+ argsHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
59
+ nonce: import("../..").UInt64Option | {
60
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
61
+ value: any;
62
+ };
63
+ sender: import("../..").PublicKeyOption | {
64
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
65
+ value: any;
66
+ };
67
+ };
68
+ networkState: NetworkState | {
69
+ block: import("../../model/network/NetworkState").CurrentBlock | {
70
+ height: bigint | import("o1js/dist/node/lib/provable/int").UInt64;
71
+ };
72
+ previous: import("../../model/network/NetworkState").PreviousBlock | {
73
+ rootHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
74
+ };
75
+ };
76
+ }) => {
77
+ transaction: RuntimeTransaction;
78
+ networkState: NetworkState;
79
+ };
80
+ toInput: (x: {
81
+ transaction: RuntimeTransaction;
82
+ networkState: NetworkState;
83
+ }) => {
84
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
85
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
86
+ };
87
+ toJSON: (x: {
88
+ transaction: RuntimeTransaction;
89
+ networkState: NetworkState;
90
+ }) => {
91
+ transaction: {
92
+ methodId: string;
93
+ argsHash: string;
94
+ nonce: {
95
+ isSome: boolean;
96
+ value: any;
97
+ };
98
+ sender: {
99
+ isSome: boolean;
100
+ value: any;
101
+ };
102
+ };
103
+ networkState: {
104
+ block: {
105
+ height: string;
106
+ };
107
+ previous: {
108
+ rootHash: string;
109
+ };
110
+ };
111
+ };
112
+ fromJSON: (x: {
113
+ transaction: {
114
+ methodId: string;
115
+ argsHash: string;
116
+ nonce: {
117
+ isSome: boolean;
118
+ value: any;
119
+ };
120
+ sender: {
121
+ isSome: boolean;
122
+ value: any;
123
+ };
124
+ };
125
+ networkState: {
126
+ block: {
127
+ height: string;
128
+ };
129
+ previous: {
130
+ rootHash: string;
131
+ };
132
+ };
133
+ }) => {
134
+ transaction: RuntimeTransaction;
135
+ networkState: NetworkState;
136
+ };
137
+ empty: () => {
138
+ transaction: RuntimeTransaction;
139
+ networkState: NetworkState;
140
+ };
141
+ };
142
+ export declare class RuntimeMethodExecutionDataStruct extends RuntimeMethodExecutionDataStruct_base implements RuntimeMethodExecutionData {
143
+ }
144
+ /**
145
+ * Execution context used to wrap runtime module methods,
146
+ * allowing them to post relevant information (such as execution status)
147
+ * into the context without any unnecessary 'prop drilling'.
148
+ */
149
+ export declare class RuntimeMethodExecutionContext extends ProvableMethodExecutionContext {
150
+ methods: string[];
151
+ input: RuntimeMethodExecutionData | undefined;
152
+ private lastInput;
153
+ result: RuntimeProvableMethodExecutionResult;
154
+ private isSimulated;
155
+ private assertSetupCalled;
156
+ /**
157
+ * Adds an in-method generated state transition to the current context
158
+ * @param stateTransition - State transition to add to the context
159
+ */
160
+ addStateTransition<Value>(stateTransition: StateTransition<Value>): void;
161
+ addEvent(eventType: FlexibleProvablePure<any>, event: any, eventName: string, condition?: Bool): void;
162
+ /**
163
+ * @param message - Status message to acompany the current status
164
+ */
165
+ setStatusMessage(message?: string, stackTrace?: string): void;
166
+ /**
167
+ * @param status - Execution status of the current method
168
+ */
169
+ setStatus(status: Bool): void;
170
+ /**
171
+ * @param input Input witness data required for a runtime execution
172
+ */
173
+ setup(input: RuntimeMethodExecutionData): void;
174
+ witnessInput(): RuntimeMethodExecutionDataStruct;
175
+ setSimulated(simulated: boolean): void;
176
+ /**
177
+ * Manually clears/resets the execution context
178
+ */
179
+ clear(): void;
180
+ afterMethod(): void;
181
+ /**
182
+ * Had to override current() otherwise it would not infer
183
+ * the type of result correctly (parent type would be reused)
184
+ */
185
+ current(): {
186
+ isFinished: boolean;
187
+ result: RuntimeProvableMethodExecutionResult;
188
+ input: RuntimeMethodExecutionData | undefined;
189
+ isSimulated: boolean;
190
+ };
191
+ }
192
+ export {};
193
+ //# sourceMappingURL=RuntimeMethodExecutionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeMethodExecutionContext.d.ts","sourceRoot":"","sources":["../../../src/state/context/RuntimeMethodExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,QAAQ,EAAU,MAAM,MAAM,CAAC;AAEpE,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAShE,qBAAa,oCAAqC,SAAQ,6BAA6B;IAC9E,gBAAgB,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAM;IAE9C,MAAM,EAAE,IAAI,CAAc;IAE1B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,MAAM,EAAE;QACb,SAAS,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACrC,KAAK,EAAE,GAAG,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,IAAI,CAAC;KACjB,EAAE,CAAM;CACV;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,kBAAkB,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;CAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,gCACX,SAAQ,qCAIR,YAAW,0BAA0B;CAAG;AAE1C;;;;GAIG;AACH,qBACa,6BAA8B,SAAQ,8BAA8B;IACxE,OAAO,EAAE,MAAM,EAAE,CAAM;IAEvB,KAAK,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAGrD,OAAO,CAAC,SAAS,CAAyC;IAE1C,MAAM,uCAA8C;IAEpE,OAAO,CAAC,WAAW,CAAkB;IAErC,OAAO,CAAC,iBAAiB;IAQzB;;;OAGG;IACI,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IAKjE,QAAQ,CACb,SAAS,EAAE,oBAAoB,CAAC,GAAG,CAAC,EACpC,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,IAAiB;IAY9B;;OAEG;IACI,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;IAS7D;;OAEG;IACI,SAAS,CAAC,MAAM,EAAE,IAAI;IAQ7B;;OAEG;IACI,KAAK,CAAC,KAAK,EAAE,0BAA0B;IAIvC,YAAY,IAAI,gCAAgC;IAYhD,YAAY,CAAC,SAAS,EAAE,OAAO;IAItC;;OAEG;IACI,KAAK;IAIL,WAAW;IAUlB;;;OAGG;IACI,OAAO;;;;;;CAQf"}
@@ -0,0 +1,136 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { Bool, Provable, Struct } from "o1js";
8
+ import { singleton } from "tsyringe";
9
+ import { ProvableMethodExecutionContext, ProvableMethodExecutionResult, } from "@proto-kit/common";
10
+ import { RuntimeTransaction } from "../../model/transaction/RuntimeTransaction";
11
+ import { NetworkState } from "../../model/network/NetworkState";
12
+ const errors = {
13
+ setupNotCalled: () => new Error("Setup has not been called prior to executing a runtime method. Be sure to do that so that the Runtime is setup property for execution"),
14
+ };
15
+ export class RuntimeProvableMethodExecutionResult extends ProvableMethodExecutionResult {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.stateTransitions = [];
19
+ this.status = Bool(true);
20
+ this.events = [];
21
+ }
22
+ }
23
+ export class RuntimeMethodExecutionDataStruct extends Struct({
24
+ transaction: RuntimeTransaction,
25
+ networkState: NetworkState,
26
+ }) {
27
+ }
28
+ /**
29
+ * Execution context used to wrap runtime module methods,
30
+ * allowing them to post relevant information (such as execution status)
31
+ * into the context without any unnecessary 'prop drilling'.
32
+ */
33
+ export let RuntimeMethodExecutionContext = class RuntimeMethodExecutionContext extends ProvableMethodExecutionContext {
34
+ constructor() {
35
+ super(...arguments);
36
+ this.methods = [];
37
+ this.result = new RuntimeProvableMethodExecutionResult();
38
+ this.isSimulated = false;
39
+ }
40
+ assertSetupCalled() {
41
+ if (this.input === undefined) {
42
+ throw errors.setupNotCalled();
43
+ }
44
+ }
45
+ /**
46
+ * Adds an in-method generated state transition to the current context
47
+ * @param stateTransition - State transition to add to the context
48
+ */
49
+ addStateTransition(stateTransition) {
50
+ this.assertSetupCalled();
51
+ this.result.stateTransitions.push(stateTransition);
52
+ }
53
+ addEvent(eventType, event, eventName, condition = Bool(true)) {
54
+ this.assertSetupCalled();
55
+ this.result.events.push({
56
+ eventType,
57
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
58
+ event,
59
+ eventName,
60
+ condition,
61
+ });
62
+ }
63
+ /**
64
+ * @param message - Status message to acompany the current status
65
+ */
66
+ setStatusMessage(message, stackTrace) {
67
+ var _a, _b;
68
+ this.assertSetupCalled();
69
+ if (this.isSimulated) {
70
+ return;
71
+ }
72
+ (_a = this.result).statusMessage ?? (_a.statusMessage = message);
73
+ (_b = this.result).stackTrace ?? (_b.stackTrace = stackTrace);
74
+ }
75
+ /**
76
+ * @param status - Execution status of the current method
77
+ */
78
+ setStatus(status) {
79
+ this.assertSetupCalled();
80
+ if (this.isSimulated) {
81
+ return;
82
+ }
83
+ this.result.status = status;
84
+ }
85
+ /**
86
+ * @param input Input witness data required for a runtime execution
87
+ */
88
+ setup(input) {
89
+ this.input = input;
90
+ }
91
+ witnessInput() {
92
+ this.assertSetupCalled();
93
+ return Provable.witness(RuntimeMethodExecutionDataStruct, () => {
94
+ // TODO Is that right? Or this.current().input
95
+ const { transaction, networkState } = this.input;
96
+ return new RuntimeMethodExecutionDataStruct({
97
+ networkState,
98
+ transaction,
99
+ });
100
+ });
101
+ }
102
+ setSimulated(simulated) {
103
+ this.isSimulated = simulated;
104
+ }
105
+ /**
106
+ * Manually clears/resets the execution context
107
+ */
108
+ clear() {
109
+ this.result = new RuntimeProvableMethodExecutionResult();
110
+ }
111
+ afterMethod() {
112
+ super.afterMethod();
113
+ if (this.isFinished) {
114
+ this.lastInput = this.input;
115
+ // TODO: find out why input isnt set in TransactionFeeHook during assert
116
+ // this.input = undefined;
117
+ this.isSimulated = false;
118
+ }
119
+ }
120
+ /**
121
+ * Had to override current() otherwise it would not infer
122
+ * the type of result correctly (parent type would be reused)
123
+ */
124
+ current() {
125
+ return {
126
+ isFinished: this.isFinished,
127
+ result: this.result,
128
+ input: this.lastInput,
129
+ isSimulated: this.isSimulated,
130
+ };
131
+ }
132
+ };
133
+ RuntimeMethodExecutionContext = __decorate([
134
+ singleton()
135
+ ], RuntimeMethodExecutionContext);
136
+ //# sourceMappingURL=RuntimeMethodExecutionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeMethodExecutionContext.js","sourceRoot":"","sources":["../../../src/state/context/RuntimeMethodExecutionContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { StateTransition } from "../../model/StateTransition";
2
+ export declare class TransitionMethodExecutionResult {
3
+ stateTransitions: StateTransition<any>[];
4
+ }
5
+ export interface TransitionMethodExecutionContext {
6
+ /**
7
+ * Adds an in-method generated state transition to the current context
8
+ * @param stateTransition - State transition to add to the context
9
+ */
10
+ addStateTransition: <Value>(stateTransition: StateTransition<Value>) => void;
11
+ /**
12
+ * Manually clears/resets the execution context
13
+ */
14
+ clear: () => void;
15
+ /**
16
+ * Had to override current() otherwise it would not infer
17
+ * the type of result correctly (parent type would be reused)
18
+ */
19
+ current: () => {
20
+ result: TransitionMethodExecutionResult;
21
+ };
22
+ }
23
+ //# sourceMappingURL=TransitionMethodExecutionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransitionMethodExecutionContext.d.ts","sourceRoot":"","sources":["../../../src/state/context/TransitionMethodExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,qBAAa,+BAA+B;IACnC,gBAAgB,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAM;CACtD;AAED,MAAM,WAAW,gCAAgC;IAC/C;;;OAGG;IACH,kBAAkB,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IAE7E;;OAEG;IACH,KAAK,EAAE,MAAM,IAAI,CAAC;IAElB;;;OAGG;IACH,OAAO,EAAE,MAAM;QACb,MAAM,EAAE,+BAA+B,CAAC;KACzC,CAAC;CACH"}
@@ -0,0 +1,6 @@
1
+ export class TransitionMethodExecutionResult {
2
+ constructor() {
3
+ this.stateTransitions = [];
4
+ }
5
+ }
6
+ //# sourceMappingURL=TransitionMethodExecutionContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransitionMethodExecutionContext.js","sourceRoot":"","sources":["../../../src/state/context/TransitionMethodExecutionContext.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,+BAA+B;IAA5C;QACS,qBAAgB,GAA2B,EAAE,CAAC;IACvD,CAAC;CAAA"}
@@ -0,0 +1,7 @@
1
+ import { TransitioningProtocolModule } from "../../protocol/TransitioningProtocolModule";
2
+ /**
3
+ * Decorates a runtime module property as state, passing down some
4
+ * underlying values to improve developer experience.
5
+ */
6
+ export declare function protocolState(): <TargetTransitioningModule extends TransitioningProtocolModule<unknown>>(target: TargetTransitioningModule, propertyKey: string) => void;
7
+ //# sourceMappingURL=ProtocolState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolState.d.ts","sourceRoot":"","sources":["../../../src/state/protocol/ProtocolState.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AAgBzF;;;GAGG;AACH,wBAAgB,aAAa,6HAKZ,MAAM,UAiCtB"}