@proto-kit/protocol 0.1.1-develop.190 → 0.1.1-develop.2024

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 (466) hide show
  1. package/dist/Constants.js +1 -0
  2. package/dist/Constants.js.map +1 -0
  3. package/dist/hashing/mina-prefixes.d.ts +10 -0
  4. package/dist/hashing/mina-prefixes.d.ts.map +1 -0
  5. package/dist/hashing/mina-prefixes.js +10 -0
  6. package/dist/hashing/mina-prefixes.js.map +1 -0
  7. package/dist/hashing/protokit-prefixes.d.ts +10 -0
  8. package/dist/hashing/protokit-prefixes.d.ts.map +1 -0
  9. package/dist/hashing/protokit-prefixes.js +24 -0
  10. package/dist/hashing/protokit-prefixes.js.map +1 -0
  11. package/dist/hooks/AccountStateHook.d.ts +56 -0
  12. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  13. package/dist/hooks/AccountStateHook.js +62 -0
  14. package/dist/hooks/AccountStateHook.js.map +1 -0
  15. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  16. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  17. package/dist/hooks/BlockHeightHook.js +16 -0
  18. package/dist/hooks/BlockHeightHook.js.map +1 -0
  19. package/dist/hooks/LastStateRootBlockHook.d.ts +7 -0
  20. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  21. package/dist/hooks/LastStateRootBlockHook.js +16 -0
  22. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  23. package/dist/hooks/NoopBlockHook.d.ts +8 -0
  24. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  25. package/dist/hooks/NoopBlockHook.js +10 -0
  26. package/dist/hooks/NoopBlockHook.js.map +1 -0
  27. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  28. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  29. package/dist/{prover/statetransition/StateTransitionWitnessProvider.js → hooks/NoopSettlementHook.js} +8 -7
  30. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  31. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  32. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  33. package/dist/hooks/NoopTransactionHook.js +11 -0
  34. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  35. package/dist/index.d.ts +59 -9
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +60 -9
  38. package/dist/index.js.map +1 -0
  39. package/dist/model/AppliedStateTransitionBatch.d.ts +114 -0
  40. package/dist/model/AppliedStateTransitionBatch.d.ts.map +1 -0
  41. package/dist/model/AppliedStateTransitionBatch.js +16 -0
  42. package/dist/model/AppliedStateTransitionBatch.js.map +1 -0
  43. package/dist/model/MethodPublicOutput.d.ts +83 -28
  44. package/dist/model/MethodPublicOutput.d.ts.map +1 -1
  45. package/dist/model/MethodPublicOutput.js +4 -1
  46. package/dist/model/MethodPublicOutput.js.map +1 -0
  47. package/dist/model/Option.d.ts +70 -46
  48. package/dist/model/Option.d.ts.map +1 -1
  49. package/dist/model/Option.js +62 -57
  50. package/dist/model/Option.js.map +1 -0
  51. package/dist/model/Path.d.ts +4 -3
  52. package/dist/model/Path.d.ts.map +1 -1
  53. package/dist/model/Path.js +6 -5
  54. package/dist/model/Path.js.map +1 -0
  55. package/dist/model/RuntimeLike.d.ts +11 -0
  56. package/dist/model/RuntimeLike.d.ts.map +1 -0
  57. package/dist/model/RuntimeLike.js +2 -0
  58. package/dist/model/RuntimeLike.js.map +1 -0
  59. package/dist/model/StateTransition.d.ts +58 -18
  60. package/dist/model/StateTransition.d.ts.map +1 -1
  61. package/dist/model/StateTransition.js +13 -4
  62. package/dist/model/StateTransition.js.map +1 -0
  63. package/dist/model/StateTransitionProvableBatch.d.ts +389 -16
  64. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  65. package/dist/model/StateTransitionProvableBatch.js +87 -10
  66. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  67. package/dist/model/network/NetworkState.d.ts +105 -9
  68. package/dist/model/network/NetworkState.d.ts.map +1 -1
  69. package/dist/model/network/NetworkState.js +22 -2
  70. package/dist/model/network/NetworkState.js.map +1 -0
  71. package/dist/model/transaction/AuthorizedTransaction.d.ts +122 -0
  72. package/dist/model/transaction/AuthorizedTransaction.d.ts.map +1 -0
  73. package/dist/model/transaction/AuthorizedTransaction.js +39 -0
  74. package/dist/model/transaction/AuthorizedTransaction.js.map +1 -0
  75. package/dist/model/transaction/RuntimeTransaction.d.ts +94 -34
  76. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  77. package/dist/model/transaction/RuntimeTransaction.js +72 -11
  78. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  79. package/dist/model/transaction/SignedTransaction.d.ts +110 -0
  80. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  81. package/dist/model/transaction/SignedTransaction.js +34 -0
  82. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  83. package/dist/model/transaction/ValueOption.d.ts +187 -0
  84. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  85. package/dist/model/transaction/ValueOption.js +25 -0
  86. package/dist/model/transaction/ValueOption.js.map +1 -0
  87. package/dist/protocol/Protocol.d.ts +47 -21
  88. package/dist/protocol/Protocol.d.ts.map +1 -1
  89. package/dist/protocol/Protocol.js +127 -26
  90. package/dist/protocol/Protocol.js.map +1 -0
  91. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  92. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  93. package/dist/protocol/ProtocolEnvironment.js +2 -0
  94. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  95. package/dist/protocol/ProtocolModule.d.ts +7 -7
  96. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  97. package/dist/protocol/ProtocolModule.js +10 -7
  98. package/dist/protocol/ProtocolModule.js.map +1 -0
  99. package/dist/protocol/ProvableBlockHook.d.ts +29 -0
  100. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  101. package/dist/protocol/ProvableBlockHook.js +20 -0
  102. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  103. package/dist/protocol/ProvableTransactionHook.d.ts +35 -0
  104. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
  105. package/dist/protocol/ProvableTransactionHook.js +28 -0
  106. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  107. package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
  108. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
  109. package/dist/protocol/TransitioningProtocolModule.js +9 -0
  110. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  111. package/dist/prover/accumulators/AppliedBatchHashList.d.ts +18 -0
  112. package/dist/prover/accumulators/AppliedBatchHashList.d.ts.map +1 -0
  113. package/dist/prover/accumulators/AppliedBatchHashList.js +25 -0
  114. package/dist/prover/accumulators/AppliedBatchHashList.js.map +1 -0
  115. package/dist/prover/accumulators/BlockHashList.d.ts +263 -0
  116. package/dist/prover/accumulators/BlockHashList.d.ts.map +1 -0
  117. package/dist/prover/accumulators/BlockHashList.js +97 -0
  118. package/dist/prover/accumulators/BlockHashList.js.map +1 -0
  119. package/dist/prover/accumulators/StateTransitionReductionList.d.ts +12 -0
  120. package/dist/prover/accumulators/StateTransitionReductionList.d.ts.map +1 -0
  121. package/dist/prover/accumulators/StateTransitionReductionList.js +64 -0
  122. package/dist/prover/accumulators/StateTransitionReductionList.js.map +1 -0
  123. package/dist/prover/accumulators/TransactionHashList.d.ts +6 -0
  124. package/dist/prover/accumulators/TransactionHashList.d.ts.map +1 -0
  125. package/dist/prover/accumulators/TransactionHashList.js +8 -0
  126. package/dist/prover/accumulators/TransactionHashList.js.map +1 -0
  127. package/dist/prover/accumulators/WitnessedRootHashList.d.ts +123 -0
  128. package/dist/prover/accumulators/WitnessedRootHashList.d.ts.map +1 -0
  129. package/dist/prover/accumulators/WitnessedRootHashList.js +51 -0
  130. package/dist/prover/accumulators/WitnessedRootHashList.js.map +1 -0
  131. package/dist/prover/block/BlockProvable.d.ts +565 -96
  132. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  133. package/dist/prover/block/BlockProvable.js +196 -12
  134. package/dist/prover/block/BlockProvable.js.map +1 -0
  135. package/dist/prover/block/BlockProver.d.ts +52 -37
  136. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  137. package/dist/prover/block/BlockProver.js +327 -107
  138. package/dist/prover/block/BlockProver.js.map +1 -0
  139. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +106 -0
  140. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  141. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +25 -0
  142. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  143. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  144. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  145. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +21 -0
  146. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  147. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  148. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  149. package/dist/prover/{statetransition/StateTransitionWitnessProviderReference.js → block/services/RuntimeVerificationKeyRootService.js} +11 -8
  150. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  151. package/dist/prover/statetransition/StateTransitionProvable.d.ts +137 -48
  152. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  153. package/dist/prover/statetransition/StateTransitionProvable.js +10 -5
  154. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  155. package/dist/prover/statetransition/StateTransitionProver.d.ts +29 -17
  156. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  157. package/dist/prover/statetransition/StateTransitionProver.js +171 -73
  158. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  159. package/dist/prover/transaction/TransactionProvable.d.ts +626 -0
  160. package/dist/prover/transaction/TransactionProvable.d.ts.map +1 -0
  161. package/dist/prover/transaction/TransactionProvable.js +87 -0
  162. package/dist/prover/transaction/TransactionProvable.js.map +1 -0
  163. package/dist/prover/transaction/TransactionProver.d.ts +68 -0
  164. package/dist/prover/transaction/TransactionProver.d.ts.map +1 -0
  165. package/dist/prover/transaction/TransactionProver.js +301 -0
  166. package/dist/prover/transaction/TransactionProver.js.map +1 -0
  167. package/dist/prover/utils.d.ts +19 -0
  168. package/dist/prover/utils.d.ts.map +1 -0
  169. package/dist/prover/utils.js +67 -0
  170. package/dist/prover/utils.js.map +1 -0
  171. package/dist/settlement/ContractArgsRegistry.d.ts +13 -0
  172. package/dist/settlement/ContractArgsRegistry.d.ts.map +1 -0
  173. package/dist/settlement/ContractArgsRegistry.js +53 -0
  174. package/dist/settlement/ContractArgsRegistry.js.map +1 -0
  175. package/dist/settlement/ContractModule.d.ts +16 -0
  176. package/dist/settlement/ContractModule.d.ts.map +1 -0
  177. package/dist/settlement/ContractModule.js +12 -0
  178. package/dist/settlement/ContractModule.js.map +1 -0
  179. package/dist/settlement/SettlementContractModule.d.ts +47 -0
  180. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  181. package/dist/settlement/SettlementContractModule.js +81 -0
  182. package/dist/settlement/SettlementContractModule.js.map +1 -0
  183. package/dist/settlement/contracts/BridgeContract.d.ts +119 -0
  184. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  185. package/dist/settlement/contracts/BridgeContract.js +269 -0
  186. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  187. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +18 -0
  188. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  189. package/dist/settlement/contracts/BridgeContractProtocolModule.js +42 -0
  190. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  191. package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts +21 -0
  192. package/dist/settlement/contracts/BridgingSettlementContractModule.d.ts.map +1 -0
  193. package/dist/settlement/contracts/BridgingSettlementContractModule.js +81 -0
  194. package/dist/settlement/contracts/BridgingSettlementContractModule.js.map +1 -0
  195. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +23 -0
  196. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  197. package/dist/settlement/contracts/DispatchContractProtocolModule.js +55 -0
  198. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  199. package/dist/settlement/contracts/DispatchSmartContract.d.ts +50 -0
  200. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  201. package/dist/settlement/contracts/DispatchSmartContract.js +234 -0
  202. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  203. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +21 -0
  204. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  205. package/dist/settlement/contracts/SettlementContractProtocolModule.js +84 -0
  206. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  207. package/dist/settlement/contracts/SettlementSmartContract.d.ts +123 -0
  208. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  209. package/dist/settlement/contracts/SettlementSmartContract.js +310 -0
  210. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  211. package/dist/settlement/contracts/SettlementSmartContractModule.d.ts +20 -0
  212. package/dist/settlement/contracts/SettlementSmartContractModule.d.ts.map +1 -0
  213. package/dist/settlement/contracts/SettlementSmartContractModule.js +56 -0
  214. package/dist/settlement/contracts/SettlementSmartContractModule.js.map +1 -0
  215. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  216. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  217. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  218. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  219. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  220. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  221. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  222. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  223. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  224. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  225. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  226. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  227. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  228. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  229. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  230. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  231. package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts +107 -0
  232. package/dist/settlement/contracts/settlement/BridgingSettlementContract.d.ts.map +1 -0
  233. package/dist/settlement/contracts/settlement/BridgingSettlementContract.js +188 -0
  234. package/dist/settlement/contracts/settlement/BridgingSettlementContract.js.map +1 -0
  235. package/dist/settlement/contracts/settlement/SettlementBase.d.ts +41 -0
  236. package/dist/settlement/contracts/settlement/SettlementBase.d.ts.map +1 -0
  237. package/dist/settlement/contracts/settlement/SettlementBase.js +105 -0
  238. package/dist/settlement/contracts/settlement/SettlementBase.js.map +1 -0
  239. package/dist/settlement/contracts/settlement/SettlementContract.d.ts +15 -0
  240. package/dist/settlement/contracts/settlement/SettlementContract.d.ts.map +1 -0
  241. package/dist/settlement/contracts/settlement/SettlementContract.js +72 -0
  242. package/dist/settlement/contracts/settlement/SettlementContract.js.map +1 -0
  243. package/dist/settlement/messages/Deposit.d.ts +77 -0
  244. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  245. package/dist/settlement/messages/Deposit.js +8 -0
  246. package/dist/settlement/messages/Deposit.js.map +1 -0
  247. package/dist/settlement/messages/OutgoingMessage.d.ts +67 -0
  248. package/dist/settlement/messages/OutgoingMessage.d.ts.map +1 -0
  249. package/dist/settlement/messages/OutgoingMessage.js +7 -0
  250. package/dist/settlement/messages/OutgoingMessage.js.map +1 -0
  251. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +494 -0
  252. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  253. package/dist/settlement/messages/OutgoingMessageArgument.js +40 -0
  254. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  255. package/dist/settlement/messages/Withdrawal.d.ts +2 -0
  256. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  257. package/dist/settlement/messages/Withdrawal.js +3 -0
  258. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  259. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts +25 -0
  260. package/dist/settlement/modularity/OutgoingMessageProcessor.d.ts.map +1 -0
  261. package/dist/settlement/modularity/OutgoingMessageProcessor.js +30 -0
  262. package/dist/settlement/modularity/OutgoingMessageProcessor.js.map +1 -0
  263. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +26 -0
  264. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  265. package/dist/settlement/modularity/ProvableSettlementHook.js +4 -0
  266. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  267. package/dist/settlement/modularity/types.d.ts +9 -0
  268. package/dist/settlement/modularity/types.d.ts.map +1 -0
  269. package/dist/settlement/modularity/types.js +2 -0
  270. package/dist/settlement/modularity/types.js.map +1 -0
  271. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  272. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  273. package/dist/settlement/modules/NetworkStateSettlementModule.js +15 -0
  274. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  275. package/dist/state/SimpleAsyncStateService.d.ts +6 -0
  276. package/dist/state/SimpleAsyncStateService.d.ts.map +1 -0
  277. package/dist/state/SimpleAsyncStateService.js +2 -0
  278. package/dist/state/SimpleAsyncStateService.js.map +1 -0
  279. package/dist/state/State.d.ts +68 -0
  280. package/dist/state/State.d.ts.map +1 -0
  281. package/dist/state/State.js +141 -0
  282. package/dist/state/State.js.map +1 -0
  283. package/dist/state/StateMap.d.ts +37 -0
  284. package/dist/state/StateMap.d.ts.map +1 -0
  285. package/dist/state/StateMap.js +56 -0
  286. package/dist/state/StateMap.js.map +1 -0
  287. package/dist/state/StateService.d.ts +6 -0
  288. package/dist/state/StateService.d.ts.map +1 -0
  289. package/dist/state/StateService.js +2 -0
  290. package/dist/state/StateService.js.map +1 -0
  291. package/dist/state/StateServiceProvider.d.ts +8 -0
  292. package/dist/state/StateServiceProvider.d.ts.map +1 -0
  293. package/dist/state/StateServiceProvider.js +37 -0
  294. package/dist/state/StateServiceProvider.js.map +1 -0
  295. package/dist/state/WitnessBlockContext.d.ts +5 -0
  296. package/dist/state/WitnessBlockContext.d.ts.map +1 -0
  297. package/dist/state/WitnessBlockContext.js +42 -0
  298. package/dist/state/WitnessBlockContext.js.map +1 -0
  299. package/dist/state/assert/assert.d.ts +12 -0
  300. package/dist/state/assert/assert.d.ts.map +1 -0
  301. package/dist/state/assert/assert.js +33 -0
  302. package/dist/state/assert/assert.js.map +1 -0
  303. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
  304. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
  305. package/dist/state/context/RuntimeMethodExecutionContext.js +138 -0
  306. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  307. package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
  308. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
  309. package/dist/state/context/TransitionMethodExecutionContext.js +6 -0
  310. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  311. package/dist/state/protocol/ProtocolState.d.ts +13 -0
  312. package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
  313. package/dist/state/protocol/ProtocolState.js +58 -0
  314. package/dist/state/protocol/ProtocolState.js.map +1 -0
  315. package/dist/utils/FieldOptions.d.ts +62 -0
  316. package/dist/utils/FieldOptions.d.ts.map +1 -0
  317. package/dist/utils/FieldOptions.js +13 -0
  318. package/dist/utils/FieldOptions.js.map +1 -0
  319. package/dist/utils/MinaPrefixedProvableHashList.d.ts +20 -0
  320. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  321. package/dist/utils/MinaPrefixedProvableHashList.js +49 -0
  322. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  323. package/dist/utils/PrefixedProvableHashList.d.ts +3 -2
  324. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  325. package/dist/utils/PrefixedProvableHashList.js +5 -1
  326. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  327. package/dist/utils/ProvableHashList.d.ts +27 -4
  328. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  329. package/dist/utils/ProvableHashList.js +51 -3
  330. package/dist/utils/ProvableHashList.js.map +1 -0
  331. package/dist/utils/ProvableReductionHashList.d.ts +18 -0
  332. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  333. package/dist/utils/ProvableReductionHashList.js +54 -0
  334. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  335. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  336. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  337. package/dist/utils/StateTransitionReductionList.js +61 -0
  338. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  339. package/dist/utils/utils.d.ts +11 -5
  340. package/dist/utils/utils.d.ts.map +1 -1
  341. package/dist/utils/utils.js +13 -13
  342. package/dist/utils/utils.js.map +1 -0
  343. package/jest.config.cjs +12 -1
  344. package/package.json +11 -9
  345. package/src/hashing/mina-prefixes.ts +10 -0
  346. package/src/hashing/protokit-prefixes.ts +37 -0
  347. package/src/hooks/AccountStateHook.ts +80 -0
  348. package/src/hooks/BlockHeightHook.ts +17 -0
  349. package/src/hooks/LastStateRootBlockHook.ts +25 -0
  350. package/src/hooks/NoopBlockHook.ts +24 -0
  351. package/src/hooks/NoopSettlementHook.ts +20 -0
  352. package/src/hooks/NoopTransactionHook.ts +13 -0
  353. package/src/index.ts +59 -9
  354. package/src/model/AppliedStateTransitionBatch.ts +16 -0
  355. package/src/model/MethodPublicOutput.ts +3 -1
  356. package/src/model/Option.ts +99 -73
  357. package/src/model/Path.ts +9 -5
  358. package/src/model/RuntimeLike.ts +12 -0
  359. package/src/model/StateTransition.ts +19 -5
  360. package/src/model/StateTransitionProvableBatch.ts +114 -12
  361. package/src/model/Transaction.ts +3 -1
  362. package/src/model/network/NetworkState.ts +22 -2
  363. package/src/model/transaction/AuthorizedTransaction.ts +50 -0
  364. package/src/model/transaction/RuntimeTransaction.ts +86 -15
  365. package/src/model/transaction/ValueOption.ts +28 -0
  366. package/src/protocol/Protocol.ts +201 -69
  367. package/src/protocol/ProtocolEnvironment.ts +10 -0
  368. package/src/protocol/ProtocolModule.ts +16 -15
  369. package/src/protocol/ProvableBlockHook.ts +67 -0
  370. package/src/protocol/ProvableTransactionHook.ts +96 -0
  371. package/src/protocol/TransitioningProtocolModule.ts +12 -0
  372. package/src/prover/accumulators/AppliedBatchHashList.ts +32 -0
  373. package/src/prover/accumulators/BlockHashList.ts +117 -0
  374. package/src/prover/accumulators/StateTransitionReductionList.ts +92 -0
  375. package/src/prover/accumulators/TransactionHashList.ts +9 -0
  376. package/src/prover/accumulators/WitnessedRootHashList.ts +62 -0
  377. package/src/prover/block/BlockProvable.ts +360 -28
  378. package/src/prover/block/BlockProver.ts +721 -186
  379. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +24 -0
  380. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  381. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  382. package/src/prover/statetransition/StateTransitionProvable.ts +26 -19
  383. package/src/prover/statetransition/StateTransitionProver.ts +337 -126
  384. package/src/prover/transaction/TransactionProvable.ts +183 -0
  385. package/src/prover/transaction/TransactionProver.ts +561 -0
  386. package/src/prover/utils.ts +108 -0
  387. package/src/settlement/ContractArgsRegistry.ts +60 -0
  388. package/src/settlement/ContractModule.ts +31 -0
  389. package/src/settlement/SettlementContractModule.ts +150 -0
  390. package/src/settlement/contracts/BridgeContract.ts +385 -0
  391. package/src/settlement/contracts/BridgeContractProtocolModule.ts +49 -0
  392. package/src/settlement/contracts/BridgingSettlementContractModule.ts +116 -0
  393. package/src/settlement/contracts/DispatchContractProtocolModule.ts +77 -0
  394. package/src/settlement/contracts/DispatchSmartContract.ts +359 -0
  395. package/src/settlement/contracts/SettlementSmartContractModule.ts +79 -0
  396. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  397. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  398. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  399. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  400. package/src/settlement/contracts/settlement/BridgingSettlementContract.ts +283 -0
  401. package/src/settlement/contracts/settlement/SettlementBase.ts +249 -0
  402. package/src/settlement/contracts/settlement/SettlementContract.ts +75 -0
  403. package/src/settlement/messages/Deposit.ts +7 -0
  404. package/src/settlement/messages/OutgoingMessage.ts +17 -0
  405. package/src/settlement/messages/OutgoingMessageArgument.ts +53 -0
  406. package/src/settlement/modularity/OutgoingMessageProcessor.ts +65 -0
  407. package/src/settlement/modularity/ProvableSettlementHook.ts +36 -0
  408. package/src/settlement/modularity/types.ts +23 -0
  409. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  410. package/src/state/State.ts +190 -0
  411. package/src/state/StateMap.ts +73 -0
  412. package/src/state/StateService.ts +6 -0
  413. package/src/state/StateServiceProvider.ts +37 -0
  414. package/src/state/WitnessBlockContext.ts +50 -0
  415. package/src/state/assert/assert.ts +38 -0
  416. package/src/state/context/RuntimeMethodExecutionContext.ts +181 -0
  417. package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
  418. package/src/state/protocol/ProtocolState.ts +98 -0
  419. package/src/utils/FieldOptions.ts +13 -0
  420. package/src/utils/MinaPrefixedProvableHashList.ts +70 -0
  421. package/src/utils/PrefixedProvableHashList.ts +6 -2
  422. package/src/utils/ProvableHashList.ts +109 -4
  423. package/src/utils/ProvableReductionHashList.ts +77 -0
  424. package/src/utils/utils.ts +21 -16
  425. package/test/BlockProver.test.ts +161 -74
  426. package/test/Protocol.test.ts +20 -10
  427. package/test/State.test.ts +45 -0
  428. package/test/StateTransition.test.ts +57 -65
  429. package/test/TestingProtocol.ts +36 -0
  430. package/test/compiling/types.ts +28 -0
  431. package/test/model/Option.test.ts +72 -0
  432. package/test/model/StateTransitionProvableBatch.test.ts +137 -0
  433. package/test/modularity/types.ts +35 -0
  434. package/test/prover/block/BlockProver.test.ts +18 -0
  435. package/test/prover/statetransition/StateTransitionProver.test.ts +261 -0
  436. package/test/state/assert/assert.test.ts +56 -0
  437. package/test/tsconfig.json +7 -0
  438. package/test/utils/ProvableHashList.test.ts +44 -0
  439. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  440. package/test/utils.test.ts +0 -3
  441. package/LICENSE.md +0 -201
  442. package/dist/model/transaction/ProtocolTransaction.d.ts +0 -70
  443. package/dist/model/transaction/ProtocolTransaction.d.ts.map +0 -1
  444. package/dist/model/transaction/ProtocolTransaction.js +0 -18
  445. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +0 -16
  446. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +0 -1
  447. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +0 -7
  448. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +0 -1
  449. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +0 -25
  450. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +0 -1
  451. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +0 -77
  452. package/dist/utils/merkletree/MerkleTreeStore.d.ts +0 -11
  453. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +0 -1
  454. package/dist/utils/merkletree/MerkleTreeStore.js +0 -1
  455. package/dist/utils/merkletree/RollupMerkleTree.d.ts +0 -130
  456. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +0 -1
  457. package/dist/utils/merkletree/RollupMerkleTree.js +0 -244
  458. package/src/model/Option.test.ts +0 -21
  459. package/src/model/transaction/ProtocolTransaction.ts +0 -25
  460. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -24
  461. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
  462. package/src/utils/merkletree/InMemoryMerkleTreeStorage.ts +0 -106
  463. package/src/utils/merkletree/MerkleTreeStore.ts +0 -15
  464. package/src/utils/merkletree/RollupMerkleTree.ts +0 -255
  465. package/src/utils/merkletree/VirtualMerkleTreeStore.ts +0 -21
  466. package/tsconfig.test.json +0 -9
@@ -0,0 +1,26 @@
1
+ import { Field, PublicKey, UInt32 } from "o1js";
2
+ import { InferProofBase } from "@proto-kit/common";
3
+ import { ProtocolModule } from "../../protocol/ProtocolModule";
4
+ import { NetworkState } from "../../model/network/NetworkState";
5
+ import type { BlockProof } from "../../prover/block/BlockProvable";
6
+ import type { SettlementContractType } from "../contracts/settlement/SettlementBase";
7
+ export type InputBlockProof = InferProofBase<BlockProof>;
8
+ export type SettlementStateRecord = {
9
+ sequencerKey: PublicKey;
10
+ lastSettlementL1BlockHeight: UInt32;
11
+ stateRoot: Field;
12
+ networkStateHash: Field;
13
+ blockHashRoot: Field;
14
+ };
15
+ export type SettlementHookInputs = {
16
+ blockProof: InputBlockProof;
17
+ fromNetworkState: NetworkState;
18
+ toNetworkState: NetworkState;
19
+ newPromisedMessagesHash: Field;
20
+ contractState: SettlementStateRecord;
21
+ currentL1BlockHeight: UInt32;
22
+ };
23
+ export declare abstract class ProvableSettlementHook<Config> extends ProtocolModule<Config> {
24
+ abstract beforeSettlement(smartContract: SettlementContractType, inputs: SettlementHookInputs): Promise<void>;
25
+ }
26
+ //# sourceMappingURL=ProvableSettlementHook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableSettlementHook.d.ts","sourceRoot":"","sources":["../../../src/settlement/modularity/ProvableSettlementHook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAErF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,SAAS,CAAC;IACxB,2BAA2B,EAAE,MAAM,CAAC;IAEpC,SAAS,EAAE,KAAK,CAAC;IACjB,gBAAgB,EAAE,KAAK,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,eAAe,CAAC;IAC5B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,cAAc,EAAE,YAAY,CAAC;IAC7B,uBAAuB,EAAE,KAAK,CAAC;IAC/B,aAAa,EAAE,qBAAqB,CAAC;IACrC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,8BAAsB,sBAAsB,CAC1C,MAAM,CACN,SAAQ,cAAc,CAAC,MAAM,CAAC;aACd,gBAAgB,CAC9B,aAAa,EAAE,sBAAsB,EACrC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;CACjB"}
@@ -0,0 +1,4 @@
1
+ import { ProtocolModule } from "../../protocol/ProtocolModule";
2
+ export class ProvableSettlementHook extends ProtocolModule {
3
+ }
4
+ //# sourceMappingURL=ProvableSettlementHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProvableSettlementHook.js","sourceRoot":"","sources":["../../../src/settlement/modularity/ProvableSettlementHook.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAyB/D,MAAM,OAAgB,sBAEpB,SAAQ,cAAsB;CAK/B"}
@@ -0,0 +1,9 @@
1
+ import { TypedClass } from "@proto-kit/common";
2
+ import { SmartContract } from "o1js";
3
+ import { ContractModule, SmartContractClassFromInterface } from "../ContractModule";
4
+ import type { SettlementModulesRecord } from "../SettlementContractModule";
5
+ export type InferContractType<Module extends TypedClass<ContractModule<any, any>>> = Module extends TypedClass<infer ConcreteModule> ? ConcreteModule extends ContractModule<infer Contract, any> ? Contract & SmartContract : never : never;
6
+ export type GetContracts<SettlementModules extends SettlementModulesRecord> = {
7
+ [Key in keyof SettlementModules]: SmartContractClassFromInterface<InferContractType<SettlementModules[Key]>>;
8
+ };
9
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/settlement/modularity/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EACL,cAAc,EACd,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E,MAAM,MAAM,iBAAiB,CAC3B,MAAM,SAAS,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAEnD,MAAM,SAAS,UAAU,CAAC,MAAM,cAAc,CAAC,GAC3C,cAAc,SAAS,cAAc,CAAC,MAAM,QAAQ,EAAE,GAAG,CAAC,GACxD,QAAQ,GAAG,aAAa,GACxB,KAAK,GACP,KAAK,CAAC;AAEZ,MAAM,MAAM,YAAY,CAAC,iBAAiB,SAAS,uBAAuB,IAAI;KAC3E,GAAG,IAAI,MAAM,iBAAiB,GAAG,+BAA+B,CAC/D,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAC1C;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/settlement/modularity/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { UInt64 } from "o1js";
2
+ import { ProvableSettlementHook, SettlementHookInputs } from "../modularity/ProvableSettlementHook";
3
+ import { SettlementContractType } from "../contracts/settlement/SettlementBase";
4
+ type NetworkStateSettlementModuleConfig = {
5
+ blocksPerL1Block: UInt64;
6
+ };
7
+ export declare class NetworkStateSettlementModule extends ProvableSettlementHook<NetworkStateSettlementModuleConfig> {
8
+ beforeSettlement(smartContract: SettlementContractType, { blockProof, fromNetworkState, toNetworkState, contractState, currentL1BlockHeight, }: SettlementHookInputs): Promise<void>;
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=NetworkStateSettlementModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkStateSettlementModule.d.ts","sourceRoot":"","sources":["../../../src/settlement/modules/NetworkStateSettlementModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,KAAK,kCAAkC,GAAG;IACxC,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAGF,qBAAa,4BAA6B,SAAQ,sBAAsB,CAAC,kCAAkC,CAAC;IAC7F,gBAAgB,CAC3B,aAAa,EAAE,sBAAsB,EACrC,EACE,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,oBAAoB,GACrB,EAAE,oBAAoB;CAiB1B"}
@@ -0,0 +1,15 @@
1
+ import { ProvableSettlementHook, } from "../modularity/ProvableSettlementHook";
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
3
+ export class NetworkStateSettlementModule extends ProvableSettlementHook {
4
+ async beforeSettlement(smartContract, { blockProof, fromNetworkState, toNetworkState, contractState, currentL1BlockHeight, }) {
5
+ const { lastSettlementL1BlockHeight } = contractState;
6
+ const blocksPerL1Block = this.config.blocksPerL1Block.toConstant();
7
+ const numL1Blocks = currentL1BlockHeight.sub(lastSettlementL1BlockHeight);
8
+ const expectedHeightDiff = numL1Blocks.toUInt64().mul(blocksPerL1Block);
9
+ const actualHeightDiff = toNetworkState.block.height.sub(fromNetworkState.block.height);
10
+ const acceptableDerivation = numL1Blocks.mul(1).div(10);
11
+ // TODO Check within bounds efficiently
12
+ }
13
+ }
14
+ /* eslint-enable @typescript-eslint/no-unused-vars */
15
+ //# sourceMappingURL=NetworkStateSettlementModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NetworkStateSettlementModule.js","sourceRoot":"","sources":["../../../src/settlement/modules/NetworkStateSettlementModule.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,sBAAsB,GAEvB,MAAM,sCAAsC,CAAC;AAO9C,sDAAsD;AACtD,MAAM,OAAO,4BAA6B,SAAQ,sBAA0D;IACnG,KAAK,CAAC,gBAAgB,CAC3B,aAAqC,EACrC,EACE,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,oBAAoB,GACC;QAEvB,MAAM,EAAE,2BAA2B,EAAE,GAAG,aAAa,CAAC;QAEtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QAEnE,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAC1E,MAAM,kBAAkB,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAExE,MAAM,gBAAgB,GAAG,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CACtD,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAC9B,CAAC;QAEF,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAExD,uCAAuC;IACzC,CAAC;CACF;AAED,qDAAqD"}
@@ -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=SimpleAsyncStateService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleAsyncStateService.d.ts","sourceRoot":"","sources":["../../src/state/SimpleAsyncStateService.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=SimpleAsyncStateService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleAsyncStateService.js","sourceRoot":"","sources":["../../src/state/SimpleAsyncStateService.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ import { Field, type FlexibleProvablePure } from "o1js";
2
+ import { Path } from "../model/Path";
3
+ import { Option } from "../model/Option";
4
+ import { StateServiceProvider } from "./StateServiceProvider";
5
+ export declare class WithPath {
6
+ path?: Field;
7
+ hasPathOrFail(): asserts this is {
8
+ path: Path;
9
+ };
10
+ }
11
+ export declare class WithStateServiceProvider {
12
+ stateServiceProvider?: StateServiceProvider;
13
+ hasStateServiceOrFail(): asserts this is {
14
+ stateServiceProvider: StateServiceProvider;
15
+ };
16
+ }
17
+ declare const State_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider>;
18
+ /**
19
+ * Utilities for runtime module state, such as get/set
20
+ */
21
+ export declare class State<Value> extends State_base {
22
+ valueType: FlexibleProvablePure<Value>;
23
+ /**
24
+ * Creates a new state wrapper for the provided value type.
25
+ *
26
+ * @param valueType - Type of value to be stored (e.g. UInt64, Struct, ...)
27
+ * @returns New state for the given value type.
28
+ */
29
+ static from<Value>(valueType: FlexibleProvablePure<Value>): State<Value>;
30
+ constructor(valueType: FlexibleProvablePure<Value>);
31
+ private stateType;
32
+ /**
33
+ * Returns the state that is currently the current state tree
34
+ * value: The value-fields, or if not state was found, dummy values
35
+ * isSome: Whether the values where found in the state or not
36
+ * (Basically, whether the value-fields are dummy values or actual values
37
+ * @private
38
+ */
39
+ private getState;
40
+ /**
41
+ * Provides an in-circuit witness for the current state representation,
42
+ * and constructs an Option out of it.
43
+ *
44
+ * @returns Optional value of the current state
45
+ */
46
+ private witnessFromState;
47
+ /**
48
+ * Retrieves the current state and creates a state transition
49
+ * anchoring the use of the current state value in the circuit.
50
+ *
51
+ * @returns Option representation of the current state.
52
+ */
53
+ get(): Promise<Option<Value>>;
54
+ /**
55
+ * Sets a new state value by creating a state transition from
56
+ * the current value to the newly set value.
57
+ *
58
+ * The newly set value isn't available via state.get(), since the
59
+ * state transitions are not applied within the same circuit.
60
+ * You can however store and access your new value in
61
+ * a separate circuit variable.
62
+ *
63
+ * @param value - Value to be set as the current state
64
+ */
65
+ set(value: Value): Promise<void>;
66
+ }
67
+ export {};
68
+ //# sourceMappingURL=State.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../src/state/State.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,EAAY,KAAK,oBAAoB,EAAU,MAAM,MAAM,CAAC;AAIhF,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,qBAAa,QAAQ;IACZ,IAAI,CAAC,EAAE,KAAK,CAAC;IAEb,aAAa,IAAI,OAAO,CAAC,IAAI,IAAI;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;CAOvD;AAED,qBAAa,wBAAwB;IAC5B,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAE5C,qBAAqB,IAAI,OAAO,CAAC,IAAI,IAAI;QAC9C,oBAAoB,EAAE,oBAAoB,CAAC;KAC5C;CAOF;;AAED;;GAEG;AACH,qBAAa,KAAK,CAAC,KAAK,CAAE,SAAQ,UAAyC;IAW/C,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAVhE;;;;;OAKG;WACW,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;gBAItC,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAIhE,OAAO,CAAC,SAAS,CAGX;IAEN;;;;;;OAMG;YACW,QAAQ;IA2CtB;;;;;OAKG;YACW,gBAAgB;IAW9B;;;;;OAKG;IACU,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAoB1C;;;;;;;;;;OAUG;IACU,GAAG,CAAC,KAAK,EAAE,KAAK;CAuB9B"}
@@ -0,0 +1,141 @@
1
+ import { Mixin } from "ts-mixer";
2
+ import { Bool, Provable, Struct } from "o1js";
3
+ import { container } from "tsyringe";
4
+ import { dummyValue } from "@proto-kit/common";
5
+ import { Option } from "../model/Option";
6
+ import { StateTransition } from "../model/StateTransition";
7
+ import { RuntimeMethodExecutionContext } from "./context/RuntimeMethodExecutionContext";
8
+ import { WitnessBlockContext } from "./WitnessBlockContext";
9
+ export class WithPath {
10
+ hasPathOrFail() {
11
+ if (!this.path) {
12
+ throw new Error("Could not find 'path', did you forget to add '@state' to your state property?");
13
+ }
14
+ }
15
+ }
16
+ export class WithStateServiceProvider {
17
+ hasStateServiceOrFail() {
18
+ if (!this.stateServiceProvider) {
19
+ throw new Error("Could not find 'stateServiceProvider', did you forget to add '@state' to your state property?");
20
+ }
21
+ }
22
+ }
23
+ /**
24
+ * Utilities for runtime module state, such as get/set
25
+ */
26
+ export class State extends Mixin(WithPath, WithStateServiceProvider) {
27
+ /**
28
+ * Creates a new state wrapper for the provided value type.
29
+ *
30
+ * @param valueType - Type of value to be stored (e.g. UInt64, Struct, ...)
31
+ * @returns New state for the given value type.
32
+ */
33
+ static from(valueType) {
34
+ return new State(valueType);
35
+ }
36
+ constructor(valueType) {
37
+ super();
38
+ this.valueType = valueType;
39
+ this.stateType = class StateType extends Struct({
40
+ value: this.valueType,
41
+ isSome: Bool,
42
+ }) {
43
+ };
44
+ }
45
+ /**
46
+ * Returns the state that is currently the current state tree
47
+ * value: The value-fields, or if not state was found, dummy values
48
+ * isSome: Whether the values where found in the state or not
49
+ * (Basically, whether the value-fields are dummy values or actual values
50
+ * @private
51
+ */
52
+ async getState() {
53
+ this.hasStateServiceOrFail();
54
+ this.hasPathOrFail();
55
+ const { path, stateServiceProvider, valueType } = this;
56
+ const { stateTransitions } = container
57
+ .resolve(RuntimeMethodExecutionContext)
58
+ .current().result;
59
+ // TODO Use Stateservice for this
60
+ // First try to find a match inside already created stateTransitions
61
+ let previousMutatingTransitions = [];
62
+ previousMutatingTransitions = stateTransitions.filter((transition) => transition.path.toConstant().toBigInt() ===
63
+ path.toConstant().toBigInt() && transition.to.isSome.toBoolean());
64
+ const pmtLength = previousMutatingTransitions.length;
65
+ let value = pmtLength > 0
66
+ ? // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
67
+ previousMutatingTransitions[pmtLength - 1].to.value
68
+ : undefined;
69
+ if (value !== undefined) {
70
+ return { value, isSome: Bool(true) };
71
+ }
72
+ // If the value is still undefined, look it up in the stateService
73
+ const fields = await stateServiceProvider.stateService.get(path);
74
+ if (fields) {
75
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
76
+ value = valueType.fromFields(fields);
77
+ }
78
+ if (value !== undefined) {
79
+ return { value, isSome: Bool(true) };
80
+ }
81
+ return { value: dummyValue(valueType), isSome: Bool(false) };
82
+ }
83
+ /**
84
+ * Provides an in-circuit witness for the current state representation,
85
+ * and constructs an Option out of it.
86
+ *
87
+ * @returns Optional value of the current state
88
+ */
89
+ async witnessFromState() {
90
+ // get the value from storage, or return a dummy value instead
91
+ // also check if the value exists in the storage or not
92
+ const { value, isSome } = await Provable.witnessAsync(this.stateType, async () => await this.getState());
93
+ return Option.from(isSome, value, this.valueType);
94
+ }
95
+ /**
96
+ * Retrieves the current state and creates a state transition
97
+ * anchoring the use of the current state value in the circuit.
98
+ *
99
+ * @returns Option representation of the current state.
100
+ */
101
+ async get() {
102
+ const option = await this.witnessFromState();
103
+ this.hasPathOrFail();
104
+ const { isInWitnessBlock } = container.resolve(WitnessBlockContext);
105
+ // If we're inside a witness block, we only want to retrieve the state
106
+ // to use as a witness but not emit an ST
107
+ if (!isInWitnessBlock) {
108
+ const stateTransition = StateTransition.from(this.path, option);
109
+ container
110
+ .resolve(RuntimeMethodExecutionContext)
111
+ .addStateTransition(stateTransition);
112
+ }
113
+ return option;
114
+ }
115
+ /**
116
+ * Sets a new state value by creating a state transition from
117
+ * the current value to the newly set value.
118
+ *
119
+ * The newly set value isn't available via state.get(), since the
120
+ * state transitions are not applied within the same circuit.
121
+ * You can however store and access your new value in
122
+ * a separate circuit variable.
123
+ *
124
+ * @param value - Value to be set as the current state
125
+ */
126
+ async set(value) {
127
+ // link the transition to the current state
128
+ const fromOption = await this.witnessFromState();
129
+ const toOption = Option.fromValue(value, this.valueType);
130
+ this.hasPathOrFail();
131
+ const stateTransition = StateTransition.fromTo(this.path, fromOption, toOption);
132
+ const { isInWitnessBlock } = container.resolve(WitnessBlockContext);
133
+ if (isInWitnessBlock) {
134
+ throw new Error("Cannot set state inside of provable block.");
135
+ }
136
+ container
137
+ .resolve(RuntimeMethodExecutionContext)
138
+ .addStateTransition(stateTransition);
139
+ }
140
+ }
141
+ //# sourceMappingURL=State.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.js","sourceRoot":"","sources":["../../src/state/State.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,IAAI,EAAS,QAAQ,EAA6B,MAAM,EAAE,MAAM,MAAM,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,OAAO,QAAQ;IAGZ,aAAa;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;SACH;IACH,CAAC;CACF;AAED,MAAM,OAAO,wBAAwB;IAG5B,qBAAqB;QAG1B,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,MAAM,IAAI,KAAK,CACb,+FAA+F,CAChG,CAAC;SACH;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,KAAa,SAAQ,KAAK,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IACzE;;;;;OAKG;IACI,MAAM,CAAC,IAAI,CAAQ,SAAsC;QAC9D,OAAO,IAAI,KAAK,CAAQ,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,YAA0B,SAAsC;QAC9D,KAAK,EAAE,CAAC;QADgB,cAAS,GAAT,SAAS,CAA6B;QAIxD,cAAS,GAAG,MAAM,SAAU,SAAQ,MAAM,CAAC;YACjD,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,MAAM,EAAE,IAAI;SACb,CAAC;SAAG,CAAC;IALN,CAAC;IAOD;;;;;;OAMG;IACK,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;QAEvD,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS;aACnC,OAAO,CAAC,6BAA6B,CAAC;aACtC,OAAO,EAAE,CAAC,MAAM,CAAC;QAEpB,iCAAiC;QACjC,oEAAoE;QACpE,IAAI,2BAA2B,GAA2B,EAAE,CAAC;QAC7D,2BAA2B,GAAG,gBAAgB,CAAC,MAAM,CACnD,CAAC,UAAU,EAAE,EAAE,CACb,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE;YACrC,IAAI,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CACrE,CAAC;QACF,MAAM,SAAS,GAAG,2BAA2B,CAAC,MAAM,CAAC;QAErD,IAAI,KAAK,GACP,SAAS,GAAG,CAAC;YACX,CAAC,CAAC,yEAAyE;gBACxE,2BAA2B,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAe;YAChE,CAAC,CAAC,SAAS,CAAC;QAEhB,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACtC;QAED,kEAAkE;QAClE,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,MAAM,EAAE;YACV,yEAAyE;YACzE,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAU,CAAC;SAC/C;QAED,IAAI,KAAK,KAAK,SAAS,EAAE;YACvB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACtC;QACD,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,gBAAgB;QAC5B,8DAA8D;QAC9D,uDAAuD;QACvD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,YAAY,CACnD,IAAI,CAAC,SAAS,EACd,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAClC,CAAC;QAEF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,GAAG;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE7C,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAEpE,sEAAsE;QACtE,yCAAyC;QACzC,IAAI,CAAC,gBAAgB,EAAE;YACrB,MAAM,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAEhE,SAAS;iBACN,OAAO,CAAC,6BAA6B,CAAC;iBACtC,kBAAkB,CAAC,eAAe,CAAC,CAAC;SACxC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;;;;OAUG;IACI,KAAK,CAAC,GAAG,CAAC,KAAY;QAC3B,2CAA2C;QAC3C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEzD,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,MAAM,eAAe,GAAG,eAAe,CAAC,MAAM,CAC5C,IAAI,CAAC,IAAI,EACT,UAAU,EACV,QAAQ,CACT,CAAC;QAEF,MAAM,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAEpE,IAAI,gBAAgB,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;SAC/D;QAED,SAAS;aACN,OAAO,CAAC,6BAA6B,CAAC;aACtC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;CACF"}
@@ -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,5 @@
1
+ export declare class WitnessBlockContext {
2
+ witnessBlockDepth: number;
3
+ get isInWitnessBlock(): boolean;
4
+ }
5
+ //# sourceMappingURL=WitnessBlockContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WitnessBlockContext.d.ts","sourceRoot":"","sources":["../../src/state/WitnessBlockContext.ts"],"names":[],"mappings":"AAGA,qBACa,mBAAmB;IACvB,iBAAiB,EAAE,MAAM,CAAK;IAErC,IAAW,gBAAgB,YAE1B;CACF"}
@@ -0,0 +1,42 @@
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 { container, singleton } from "tsyringe";
8
+ import { Provable } from "o1js";
9
+ export let WitnessBlockContext = class WitnessBlockContext {
10
+ constructor() {
11
+ this.witnessBlockDepth = 0;
12
+ }
13
+ get isInWitnessBlock() {
14
+ return this.witnessBlockDepth > 0;
15
+ }
16
+ };
17
+ WitnessBlockContext = __decorate([
18
+ singleton()
19
+ ], WitnessBlockContext);
20
+ const asyncProxyWitnessFunction = (originalFuncDef) => {
21
+ return async (...args) => {
22
+ const context = container.resolve(WitnessBlockContext);
23
+ context.witnessBlockDepth += 1;
24
+ const ret = await originalFuncDef(...args);
25
+ context.witnessBlockDepth -= 1;
26
+ return ret;
27
+ };
28
+ };
29
+ const proxySyncWitnessFunction = (originalFuncDef) => {
30
+ return (...args) => {
31
+ const context = container.resolve(WitnessBlockContext);
32
+ context.witnessBlockDepth += 1;
33
+ const ret = originalFuncDef(...args);
34
+ context.witnessBlockDepth -= 1;
35
+ return ret;
36
+ };
37
+ };
38
+ Provable.witnessAsync = asyncProxyWitnessFunction(Provable.witnessAsync);
39
+ Provable.witness = proxySyncWitnessFunction(Provable.witness);
40
+ Provable.witnessFields = proxySyncWitnessFunction(Provable.witnessFields);
41
+ Provable.asProver = proxySyncWitnessFunction(Provable.asProver);
42
+ //# sourceMappingURL=WitnessBlockContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WitnessBlockContext.js","sourceRoot":"","sources":["../../src/state/WitnessBlockContext.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAGzB,WAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAAzB;QACE,sBAAiB,GAAW,CAAC,CAAC;IAKvC,CAAC;IAHC,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IACpC,CAAC;CACF,CAAA;AANY,mBAAmB;IAD/B,SAAS,EAAE;GACC,mBAAmB,CAM/B;AAED,MAAM,yBAAyB,GAAG,CAIhC,eAAkB,EAClB,EAAE;IACF,OAAO,KAAK,EAAE,GAAG,IAAmB,EAAE,EAAE;QACtC,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvD,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAK/B,eAAkB,EAClB,EAAE;IACF,OAAO,CAAC,GAAG,IAAY,EAAO,EAAE;QAC9B,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACvD,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAC/B,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,QAAQ,CAAC,YAAY,GAAG,yBAAyB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAEzE,QAAQ,CAAC,OAAO,GAAG,wBAAwB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAE9D,QAAQ,CAAC,aAAa,GAAG,wBAAwB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAE1E,QAAQ,CAAC,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC"}
@@ -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,QAsBxE"}