@proto-kit/protocol 0.1.1-develop.600 → 0.1.1-develop.833

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 (285) hide show
  1. package/LICENSE.md +201 -201
  2. package/dist/blockmodules/AccountStateModule.d.ts +37 -37
  3. package/dist/blockmodules/AccountStateModule.js +43 -43
  4. package/dist/blockmodules/BlockHeightHook.d.ts +6 -6
  5. package/dist/blockmodules/BlockHeightHook.js +15 -15
  6. package/dist/blockmodules/LastStateRootBlockHook.d.ts +7 -7
  7. package/dist/blockmodules/LastStateRootBlockHook.js +15 -15
  8. package/dist/blockmodules/NoopBlockHook.d.ts +8 -8
  9. package/dist/blockmodules/NoopBlockHook.js +9 -9
  10. package/dist/blockmodules/NoopSettlementHook.d.ts +5 -5
  11. package/dist/blockmodules/NoopSettlementHook.d.ts.map +1 -1
  12. package/dist/blockmodules/NoopSettlementHook.js +18 -18
  13. package/dist/blockmodules/NoopTransactionHook.d.ts +5 -5
  14. package/dist/blockmodules/NoopTransactionHook.js +4 -4
  15. package/dist/hooks/AccountStateHook.d.ts +19 -5
  16. package/dist/hooks/AccountStateHook.d.ts.map +1 -1
  17. package/dist/hooks/AccountStateHook.js +15 -9
  18. package/dist/hooks/BlockHeightHook.d.ts +3 -3
  19. package/dist/hooks/BlockHeightHook.d.ts.map +1 -1
  20. package/dist/hooks/BlockHeightHook.js +5 -4
  21. package/dist/hooks/LastStateRootBlockHook.d.ts +8 -0
  22. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  23. package/dist/hooks/LastStateRootBlockHook.js +15 -0
  24. package/dist/hooks/NoopBlockHook.d.ts +6 -4
  25. package/dist/hooks/NoopBlockHook.d.ts.map +1 -1
  26. package/dist/hooks/NoopBlockHook.js +4 -4
  27. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  28. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  29. package/dist/hooks/NoopSettlementHook.js +17 -0
  30. package/dist/hooks/NoopTransactionHook.d.ts +1 -1
  31. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -1
  32. package/dist/hooks/NoopTransactionHook.js +4 -1
  33. package/dist/index.d.ts +18 -8
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +18 -8
  36. package/dist/model/MethodPublicOutput.d.ts +68 -34
  37. package/dist/model/MethodPublicOutput.d.ts.map +1 -1
  38. package/dist/model/Option.d.ts +39 -19
  39. package/dist/model/Option.d.ts.map +1 -1
  40. package/dist/model/Option.js +6 -0
  41. package/dist/model/Path.d.ts +1 -1
  42. package/dist/model/Path.d.ts.map +1 -1
  43. package/dist/model/Path.js +0 -2
  44. package/dist/model/RuntimeLike.d.ts +11 -0
  45. package/dist/model/RuntimeLike.d.ts.map +1 -0
  46. package/dist/model/RuntimeLike.js +1 -0
  47. package/dist/model/StateTransition.d.ts +51 -14
  48. package/dist/model/StateTransition.d.ts.map +1 -1
  49. package/dist/model/StateTransition.js +3 -0
  50. package/dist/model/StateTransitionProvableBatch.d.ts +71 -14
  51. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  52. package/dist/model/StateTransitionReduction.d.ts +3 -0
  53. package/dist/model/StateTransitionReduction.d.ts.map +1 -0
  54. package/dist/model/StateTransitionReduction.js +26 -0
  55. package/dist/model/network/NetworkState.d.ts +73 -18
  56. package/dist/model/network/NetworkState.d.ts.map +1 -1
  57. package/dist/model/network/NetworkState.js +2 -2
  58. package/dist/model/transaction/ProtocolTransaction.d.ts +69 -69
  59. package/dist/model/transaction/ProtocolTransaction.js +18 -18
  60. package/dist/model/transaction/RuntimeTransaction.d.ts +50 -16
  61. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -1
  62. package/dist/model/transaction/RuntimeTransaction.js +4 -4
  63. package/dist/model/transaction/SignedTransaction.d.ts +39 -3
  64. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -1
  65. package/dist/model/transaction/SignedTransaction.js +1 -1
  66. package/dist/model/transaction/ValueOption.d.ts +86 -32
  67. package/dist/model/transaction/ValueOption.d.ts.map +1 -1
  68. package/dist/model/transaction/ValueOption.js +1 -1
  69. package/dist/protocol/Protocol.d.ts +14 -20
  70. package/dist/protocol/Protocol.d.ts.map +1 -1
  71. package/dist/protocol/Protocol.js +13 -27
  72. package/dist/protocol/ProtocolEnvironment.d.ts +3 -3
  73. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -1
  74. package/dist/protocol/ProtocolModule.d.ts +1 -0
  75. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  76. package/dist/protocol/ProtocolModule.js +4 -2
  77. package/dist/protocol/ProvableBlockHook.d.ts +2 -2
  78. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -1
  79. package/dist/protocol/ProvableTransactionHook.d.ts +1 -1
  80. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -1
  81. package/dist/prover/block/BlockProvable.d.ts +240 -98
  82. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  83. package/dist/prover/block/BlockProver.d.ts +8 -8
  84. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  85. package/dist/prover/block/BlockProver.js +55 -45
  86. package/dist/prover/block/BlockTransactionPosition.d.ts +35 -35
  87. package/dist/prover/block/BlockTransactionPosition.js +25 -25
  88. package/dist/prover/block/BundleTransactionPosition.d.ts +36 -0
  89. package/dist/prover/block/BundleTransactionPosition.d.ts.map +1 -0
  90. package/dist/prover/block/BundleTransactionPosition.js +25 -0
  91. package/dist/prover/block/SplitPrefilledStateService.d.ts +11 -0
  92. package/dist/prover/block/SplitPrefilledStateService.d.ts.map +1 -0
  93. package/dist/prover/block/SplitPrefilledStateService.js +1 -0
  94. package/dist/prover/block/SplitStateService.d.ts +11 -0
  95. package/dist/prover/block/SplitStateService.d.ts.map +1 -0
  96. package/dist/prover/block/SplitStateService.js +1 -0
  97. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +35 -16
  98. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -1
  99. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +1 -1
  100. package/dist/prover/block/acummulators/BlockHashMerkleTree.d.ts +45 -0
  101. package/dist/prover/block/acummulators/BlockHashMerkleTree.d.ts.map +1 -0
  102. package/dist/prover/block/acummulators/BlockHashMerkleTree.js +16 -0
  103. package/dist/prover/statetransition/StateTransitionProvable.d.ts +116 -58
  104. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  105. package/dist/prover/statetransition/StateTransitionProver.d.ts +10 -9
  106. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  107. package/dist/prover/statetransition/StateTransitionProver.js +18 -22
  108. package/dist/prover/statetransition/StateTransitionWitnessProvider.js +1 -2
  109. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.js +1 -2
  110. package/dist/settlement/ContractModule.d.ts +15 -0
  111. package/dist/settlement/ContractModule.d.ts.map +1 -0
  112. package/dist/settlement/ContractModule.js +11 -0
  113. package/dist/settlement/DispatchContract.d.ts +20 -0
  114. package/dist/settlement/DispatchContract.d.ts.map +1 -0
  115. package/dist/settlement/DispatchContract.js +112 -0
  116. package/dist/settlement/OutgoingMessageArgument.d.ts +109 -0
  117. package/dist/settlement/OutgoingMessageArgument.d.ts.map +1 -0
  118. package/dist/settlement/OutgoingMessageArgument.js +32 -0
  119. package/dist/settlement/ProvableSettlementHook.d.ts +25 -25
  120. package/dist/settlement/ProvableSettlementHook.js +3 -3
  121. package/dist/settlement/SettlementContract.d.ts +229 -229
  122. package/dist/settlement/SettlementContract.js +346 -346
  123. package/dist/settlement/SettlementContractModule.d.ts +40 -0
  124. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  125. package/dist/settlement/SettlementContractModule.js +71 -0
  126. package/dist/settlement/contracts/DispatchContract.d.ts +21 -0
  127. package/dist/settlement/contracts/DispatchContract.d.ts.map +1 -0
  128. package/dist/settlement/contracts/DispatchContract.js +111 -0
  129. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +12 -0
  130. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  131. package/dist/{hooks/TransactionFeeHook.js → settlement/contracts/DispatchContractProtocolModule.js} +17 -21
  132. package/dist/settlement/contracts/DispatchSmartContract.d.ts +22 -0
  133. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  134. package/dist/settlement/contracts/DispatchSmartContract.js +110 -0
  135. package/dist/settlement/contracts/SettlementContract.d.ts +19 -0
  136. package/dist/settlement/contracts/SettlementContract.d.ts.map +1 -0
  137. package/dist/settlement/contracts/SettlementContract.js +43 -0
  138. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +19 -0
  139. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  140. package/dist/settlement/contracts/SettlementContractProtocolModule.js +44 -0
  141. package/dist/settlement/contracts/SettlementSmartContract.d.ts +42 -0
  142. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  143. package/dist/settlement/contracts/SettlementSmartContract.js +246 -0
  144. package/dist/settlement/messages/Deposit.d.ts +64 -0
  145. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  146. package/dist/settlement/messages/Deposit.js +6 -0
  147. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +189 -0
  148. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  149. package/dist/settlement/messages/OutgoingMessageArgument.js +32 -0
  150. package/dist/settlement/messages/Withdrawal.d.ts +65 -0
  151. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  152. package/dist/settlement/messages/Withdrawal.js +13 -0
  153. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +24 -0
  154. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  155. package/dist/settlement/modularity/ProvableSettlementHook.js +3 -0
  156. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +3 -3
  157. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -1
  158. package/dist/settlement/modules/NetworkStateSettlementModule.js +4 -2
  159. package/dist/state/State.d.ts +4 -3
  160. package/dist/state/State.d.ts.map +1 -1
  161. package/dist/state/State.js +18 -12
  162. package/dist/state/StateMap.d.ts +3 -3
  163. package/dist/state/StateMap.d.ts.map +1 -1
  164. package/dist/state/StateMap.js +4 -5
  165. package/dist/state/StateService.d.ts +3 -3
  166. package/dist/state/StateService.d.ts.map +1 -1
  167. package/dist/state/StateServiceProvider.d.ts +3 -3
  168. package/dist/state/StateServiceProvider.d.ts.map +1 -1
  169. package/dist/state/StateServiceProvider.js +1 -3
  170. package/dist/state/assert/assert.d.ts +1 -1
  171. package/dist/state/assert/assert.d.ts.map +1 -1
  172. package/dist/state/assert/assert.js +11 -5
  173. package/dist/state/context/ProtocolMethodExecutionContext.d.ts +1 -1
  174. package/dist/state/context/ProtocolMethodExecutionContext.d.ts.map +1 -1
  175. package/dist/state/context/ProtocolMethodExecutionContext.js +1 -1
  176. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +55 -4
  177. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -1
  178. package/dist/state/context/RuntimeMethodExecutionContext.js +6 -6
  179. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -1
  180. package/dist/state/context/TransitionMethodExecutionContext.js +0 -1
  181. package/dist/state/context/contextExecution.d.ts +14 -0
  182. package/dist/state/context/contextExecution.d.ts.map +1 -0
  183. package/dist/state/context/contextExecution.js +30 -0
  184. package/dist/state/protocol/ProtocolState.d.ts.map +1 -1
  185. package/dist/state/protocol/ProtocolState.js +0 -3
  186. package/dist/utils/AppliedBatchHashList.d.ts +17 -0
  187. package/dist/utils/AppliedBatchHashList.d.ts.map +1 -0
  188. package/dist/utils/AppliedBatchHashList.js +24 -0
  189. package/dist/utils/MinaPrefixedProvableHashList.d.ts +2 -2
  190. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -1
  191. package/dist/utils/MinaPrefixedProvableHashList.js +1 -0
  192. package/dist/utils/PrefixedProvableHashList.d.ts +2 -2
  193. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -1
  194. package/dist/utils/ProvableHashList.d.ts +4 -4
  195. package/dist/utils/ProvableHashList.d.ts.map +1 -1
  196. package/dist/utils/ProvableReductionHashList.d.ts +14 -0
  197. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  198. package/dist/utils/ProvableReductionHashList.js +50 -0
  199. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  200. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  201. package/dist/utils/StateTransitionReductionList.js +60 -0
  202. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts +11 -0
  203. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.d.ts.map +1 -0
  204. package/dist/utils/merkletree/InMemoryMerkleTreeStorage.js +12 -0
  205. package/dist/utils/merkletree/MerkleTreeStore.d.ts +5 -0
  206. package/dist/utils/merkletree/MerkleTreeStore.d.ts.map +1 -0
  207. package/dist/utils/merkletree/MerkleTreeStore.js +1 -0
  208. package/dist/utils/merkletree/RollupMerkleTree.d.ts +133 -0
  209. package/dist/utils/merkletree/RollupMerkleTree.d.ts.map +1 -0
  210. package/dist/utils/merkletree/RollupMerkleTree.js +255 -0
  211. package/dist/utils/utils.d.ts +1 -1
  212. package/dist/utils/utils.d.ts.map +1 -1
  213. package/dist/utils/utils.js +5 -10
  214. package/package.json +5 -5
  215. package/src/{blockmodules/AccountStateModule.ts → hooks/AccountStateHook.ts} +13 -9
  216. package/src/{blockmodules → hooks}/BlockHeightHook.ts +3 -4
  217. package/src/{blockmodules → hooks}/LastStateRootBlockHook.ts +4 -4
  218. package/src/{blockmodules → hooks}/NoopBlockHook.ts +6 -5
  219. package/src/{blockmodules → hooks}/NoopSettlementHook.ts +3 -4
  220. package/src/{blockmodules → hooks}/NoopTransactionHook.ts +5 -1
  221. package/src/index.ts +18 -8
  222. package/src/model/MethodPublicOutput.ts +2 -2
  223. package/src/model/Option.ts +21 -1
  224. package/src/model/Path.ts +1 -3
  225. package/src/model/RuntimeLike.ts +12 -0
  226. package/src/model/StateTransition.ts +9 -1
  227. package/src/model/Transaction.ts +2 -0
  228. package/src/model/network/NetworkState.ts +2 -2
  229. package/src/model/transaction/RuntimeTransaction.ts +5 -12
  230. package/src/model/transaction/SignedTransaction.ts +1 -8
  231. package/src/model/transaction/ValueOption.ts +1 -1
  232. package/src/protocol/Protocol.ts +34 -48
  233. package/src/protocol/ProtocolEnvironment.ts +7 -6
  234. package/src/protocol/ProtocolModule.ts +8 -4
  235. package/src/protocol/ProvableBlockHook.ts +3 -3
  236. package/src/protocol/ProvableTransactionHook.ts +4 -2
  237. package/src/protocol/TransitioningProtocolModule.ts +1 -1
  238. package/src/prover/block/BlockProvable.ts +3 -3
  239. package/src/prover/block/BlockProver.ts +98 -63
  240. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +2 -2
  241. package/src/prover/statetransition/StateTransitionProvable.ts +3 -3
  242. package/src/prover/statetransition/StateTransitionProver.ts +26 -28
  243. package/src/settlement/ContractModule.ts +24 -0
  244. package/src/settlement/SettlementContractModule.ts +132 -0
  245. package/src/settlement/contracts/DispatchContractProtocolModule.ts +39 -0
  246. package/src/settlement/contracts/DispatchSmartContract.ts +136 -0
  247. package/src/settlement/contracts/SettlementContractProtocolModule.ts +67 -0
  248. package/src/settlement/contracts/SettlementSmartContract.ts +350 -0
  249. package/src/settlement/messages/Deposit.ts +6 -0
  250. package/src/settlement/messages/OutgoingMessageArgument.ts +42 -0
  251. package/src/settlement/messages/Withdrawal.ts +14 -0
  252. package/src/settlement/{ProvableSettlementHook.ts → modularity/ProvableSettlementHook.ts} +9 -13
  253. package/src/settlement/modules/NetworkStateSettlementModule.ts +8 -5
  254. package/src/state/State.ts +21 -13
  255. package/src/state/StateMap.ts +4 -5
  256. package/src/state/StateService.ts +3 -3
  257. package/src/state/StateServiceProvider.ts +6 -7
  258. package/src/state/assert/assert.ts +13 -7
  259. package/src/state/context/RuntimeMethodExecutionContext.ts +13 -7
  260. package/src/state/context/TransitionMethodExecutionContext.ts +0 -1
  261. package/src/state/protocol/ProtocolState.ts +1 -4
  262. package/src/utils/MinaPrefixedProvableHashList.ts +4 -3
  263. package/src/utils/PrefixedProvableHashList.ts +2 -2
  264. package/src/utils/ProvableHashList.ts +2 -2
  265. package/src/utils/ProvableReductionHashList.ts +68 -0
  266. package/src/utils/StateTransitionReductionList.ts +89 -0
  267. package/src/utils/utils.ts +4 -9
  268. package/test/BlockProver.test.ts +110 -128
  269. package/test/Protocol.test.ts +14 -21
  270. package/test/State.test.ts +8 -8
  271. package/test/StateTransition.test.ts +56 -66
  272. package/test/TestingProtocol.ts +48 -0
  273. package/test/model/Option.test.ts +72 -0
  274. package/{src → test}/state/assert/assert.test.ts +4 -4
  275. package/test/tsconfig.json +7 -0
  276. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  277. package/test/utils.test.ts +0 -3
  278. package/dist/hooks/TransactionFeeHook.d.ts +0 -16
  279. package/dist/hooks/TransactionFeeHook.d.ts.map +0 -1
  280. package/src/blockmodules/SequenceStateTransactionModule.ts +0 -25
  281. package/src/model/Option.test.ts +0 -21
  282. package/src/settlement/SettlementContract.ts +0 -444
  283. package/src/state/context/ProtocolMethodExecutionContext.ts +0 -36
  284. package/test/Option.test.ts +0 -64
  285. package/tsconfig.test.json +0 -9
@@ -0,0 +1,13 @@
1
+ import { PublicKey, Struct, UInt64 } from "o1js";
2
+ import { EMPTY_PUBLICKEY } from "@proto-kit/common";
3
+ export class Withdrawal extends Struct({
4
+ address: PublicKey,
5
+ amount: UInt64,
6
+ }) {
7
+ static dummy() {
8
+ return new Withdrawal({
9
+ address: EMPTY_PUBLICKEY,
10
+ amount: UInt64.from(0),
11
+ });
12
+ }
13
+ }
@@ -0,0 +1,24 @@
1
+ import { Field, PublicKey, UInt32 } from "o1js";
2
+ import { ProtocolModule } from "../../protocol/ProtocolModule";
3
+ import { NetworkState } from "../../model/network/NetworkState";
4
+ import type { BlockProof } from "../../prover/block/BlockProver";
5
+ import type { SettlementSmartContract } from "../contracts/SettlementSmartContract";
6
+ export type SettlementStateRecord = {
7
+ sequencerKey: PublicKey;
8
+ lastSettlementL1Block: UInt32;
9
+ stateRoot: Field;
10
+ networkStateHash: Field;
11
+ blockHashRoot: Field;
12
+ };
13
+ export type SettlementHookInputs = {
14
+ blockProof: BlockProof;
15
+ fromNetworkState: NetworkState;
16
+ toNetworkState: NetworkState;
17
+ newPromisedMessagesHash: Field;
18
+ contractState: SettlementStateRecord;
19
+ currentL1Block: UInt32;
20
+ };
21
+ export declare abstract class ProvableSettlementHook<Config> extends ProtocolModule<Config> {
22
+ abstract beforeSettlement(smartContract: SettlementSmartContract, inputs: SettlementHookInputs): Promise<void>;
23
+ }
24
+ //# 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;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,MAAM,MAAM,qBAAqB,GAAG;IAClC,YAAY,EAAE,SAAS,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;IAE9B,SAAS,EAAE,KAAK,CAAC;IACjB,gBAAgB,EAAE,KAAK,CAAC;IACxB,aAAa,EAAE,KAAK,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,YAAY,CAAC;IAC/B,cAAc,EAAE,YAAY,CAAC;IAC7B,uBAAuB,EAAE,KAAK,CAAC;IAC/B,aAAa,EAAE,qBAAqB,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,8BAAsB,sBAAsB,CAC1C,MAAM,CACN,SAAQ,cAAc,CAAC,MAAM,CAAC;aACd,gBAAgB,CAC9B,aAAa,EAAE,uBAAuB,EACtC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ import { ProtocolModule } from "../../protocol/ProtocolModule";
2
+ export class ProvableSettlementHook extends ProtocolModule {
3
+ }
@@ -1,11 +1,11 @@
1
1
  import { UInt64 } from "o1js";
2
- import { ProvableSettlementHook, SettlementHookInputs } from "../ProvableSettlementHook";
3
- import { SettlementContract } from "../SettlementContract";
2
+ import { ProvableSettlementHook, SettlementHookInputs } from "../modularity/ProvableSettlementHook";
3
+ import { SettlementSmartContract } from "../contracts/SettlementSmartContract";
4
4
  type NetworkStateSettlementModuleConfig = {
5
5
  blocksPerL1Block: UInt64;
6
6
  };
7
7
  export declare class NetworkStateSettlementModule extends ProvableSettlementHook<NetworkStateSettlementModuleConfig> {
8
- beforeSettlement(smartContract: SettlementContract, { blockProof, fromNetworkState, toNetworkState, contractState, currentL1Block, }: SettlementHookInputs): void;
8
+ beforeSettlement(smartContract: SettlementSmartContract, { blockProof, fromNetworkState, toNetworkState, contractState, currentL1Block, }: SettlementHookInputs): Promise<void>;
9
9
  }
10
10
  export {};
11
11
  //# sourceMappingURL=NetworkStateSettlementModule.d.ts.map
@@ -1 +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,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,KAAK,kCAAkC,GAAG;IACxC,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,qBAAa,4BAA6B,SAAQ,sBAAsB,CAAC,kCAAkC,CAAC;IACnG,gBAAgB,CACrB,aAAa,EAAE,kBAAkB,EACjC,EACE,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,GACf,EAAE,oBAAoB,GACtB,IAAI;CAgBR"}
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,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,KAAK,kCAAkC,GAAG;IACxC,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC;AAGF,qBAAa,4BAA6B,SAAQ,sBAAsB,CAAC,kCAAkC,CAAC;IAC7F,gBAAgB,CAC3B,aAAa,EAAE,uBAAuB,EACtC,EACE,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,cAAc,GACf,EAAE,oBAAoB;CAiB1B"}
@@ -1,6 +1,7 @@
1
- import { ProvableSettlementHook, } from "../ProvableSettlementHook";
1
+ import { ProvableSettlementHook, } from "../modularity/ProvableSettlementHook";
2
+ /* eslint-disable @typescript-eslint/no-unused-vars */
2
3
  export class NetworkStateSettlementModule extends ProvableSettlementHook {
3
- beforeSettlement(smartContract, { blockProof, fromNetworkState, toNetworkState, contractState, currentL1Block, }) {
4
+ async beforeSettlement(smartContract, { blockProof, fromNetworkState, toNetworkState, contractState, currentL1Block, }) {
4
5
  const { lastSettlementL1Block } = contractState;
5
6
  const blocksPerL1Block = this.config.blocksPerL1Block.toConstant();
6
7
  const numL1Blocks = currentL1Block.sub(lastSettlementL1Block);
@@ -10,3 +11,4 @@ export class NetworkStateSettlementModule extends ProvableSettlementHook {
10
11
  // TODO Check within bounds efficiently
11
12
  }
12
13
  }
14
+ /* eslint-enable @typescript-eslint/no-unused-vars */
@@ -14,7 +14,7 @@ export declare class WithStateServiceProvider {
14
14
  stateServiceProvider: StateServiceProvider;
15
15
  };
16
16
  }
17
- declare const State_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider, false>;
17
+ declare const State_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider>;
18
18
  /**
19
19
  * Utilities for runtime module state, such as get/set
20
20
  */
@@ -28,6 +28,7 @@ export declare class State<Value> extends State_base {
28
28
  */
29
29
  static from<Value>(valueType: FlexibleProvablePure<Value>): State<Value>;
30
30
  constructor(valueType: FlexibleProvablePure<Value>);
31
+ private stateType;
31
32
  /**
32
33
  * Returns the state that is currently the current state tree
33
34
  * value: The value-fields, or if not state was found, dummy values
@@ -49,7 +50,7 @@ export declare class State<Value> extends State_base {
49
50
  *
50
51
  * @returns Option representation of the current state.
51
52
  */
52
- get(): Option<Value>;
53
+ get(): Promise<Option<Value>>;
53
54
  /**
54
55
  * Sets a new state value by creating a state transition from
55
56
  * the current value to the newly set value.
@@ -61,7 +62,7 @@ export declare class State<Value> extends State_base {
61
62
  *
62
63
  * @param value - Value to be set as the current state
63
64
  */
64
- set(value: Value): void;
65
+ set(value: Value): Promise<void>;
65
66
  }
66
67
  export {};
67
68
  //# sourceMappingURL=State.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../src/state/State.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,EAAY,KAAK,oBAAoB,EAAE,MAAM,MAAM,CAAC;AAIxE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,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;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAuChB;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;;OAKG;IACI,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC;IAc3B;;;;;;;;;;OAUG;IACI,GAAG,CAAC,KAAK,EAAE,KAAK;CAiBxB"}
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;AAG9D,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;IAyCtB;;;;;OAKG;YACW,gBAAgB;IAW9B;;;;;OAKG;IACU,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAc1C;;;;;;;;;;OAUG;IACU,GAAG,CAAC,KAAK,EAAE,KAAK;CAiB9B"}
@@ -1,5 +1,5 @@
1
1
  import { Mixin } from "ts-mixer";
2
- import { Bool, Provable } from "o1js";
2
+ import { Bool, Provable, Struct } from "o1js";
3
3
  import { container } from "tsyringe";
4
4
  import { dummyValue } from "@proto-kit/common";
5
5
  import { Option } from "../model/Option";
@@ -35,6 +35,11 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
35
35
  constructor(valueType) {
36
36
  super();
37
37
  this.valueType = valueType;
38
+ this.stateType = class StateType extends Struct({
39
+ value: this.valueType,
40
+ isSome: Bool,
41
+ }) {
42
+ };
38
43
  }
39
44
  /**
40
45
  * Returns the state that is currently the current state tree
@@ -43,15 +48,17 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
43
48
  * (Basically, whether the value-fields are dummy values or actual values
44
49
  * @private
45
50
  */
46
- getState() {
51
+ async getState() {
47
52
  this.hasStateServiceOrFail();
48
53
  this.hasPathOrFail();
49
54
  const { path, stateServiceProvider, valueType } = this;
50
55
  const { stateTransitions } = container
51
56
  .resolve(RuntimeMethodExecutionContext)
52
57
  .current().result;
58
+ // TODO Use Stateservice for this
53
59
  // First try to find a match inside already created stateTransitions
54
- const previousMutatingTransitions = stateTransitions.filter((transition) => transition.path.equals(path).and(transition.to.isSome).toBoolean());
60
+ let previousMutatingTransitions = [];
61
+ previousMutatingTransitions = stateTransitions.filter((transition) => transition.path.equals(path).and(transition.to.isSome).toBoolean());
55
62
  const pmtLength = previousMutatingTransitions.length;
56
63
  let value = pmtLength > 0
57
64
  ? // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
@@ -61,7 +68,7 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
61
68
  return { value, isSome: Bool(true) };
62
69
  }
63
70
  // If the value is still undefined, look it up in the stateService
64
- const fields = stateServiceProvider.stateService.get(path);
71
+ const fields = await stateServiceProvider.stateService.get(path);
65
72
  if (fields) {
66
73
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
67
74
  value = valueType.fromFields(fields);
@@ -77,11 +84,10 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
77
84
  *
78
85
  * @returns Optional value of the current state
79
86
  */
80
- witnessFromState() {
87
+ async witnessFromState() {
81
88
  // get the value from storage, or return a dummy value instead
82
- const value = Provable.witness(this.valueType, () => this.getState().value);
83
- // check if the value exists in the storage or not
84
- const isSome = Provable.witness(Bool, () => this.getState().isSome);
89
+ // also check if the value exists in the storage or not
90
+ const { value, isSome } = await Provable.witnessAsync(this.stateType, async () => await this.getState());
85
91
  return Option.from(isSome, value, this.valueType);
86
92
  }
87
93
  /**
@@ -90,8 +96,8 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
90
96
  *
91
97
  * @returns Option representation of the current state.
92
98
  */
93
- get() {
94
- const option = this.witnessFromState();
99
+ async get() {
100
+ const option = await this.witnessFromState();
95
101
  this.hasPathOrFail();
96
102
  const stateTransition = StateTransition.from(this.path, option);
97
103
  container
@@ -110,9 +116,9 @@ export class State extends Mixin(WithPath, WithStateServiceProvider) {
110
116
  *
111
117
  * @param value - Value to be set as the current state
112
118
  */
113
- set(value) {
119
+ async set(value) {
114
120
  // link the transition to the current state
115
- const fromOption = this.witnessFromState();
121
+ const fromOption = await this.witnessFromState();
116
122
  const toOption = Option.fromValue(value, this.valueType);
117
123
  this.hasPathOrFail();
118
124
  const stateTransition = StateTransition.fromTo(this.path, fromOption, toOption);
@@ -1,7 +1,7 @@
1
1
  import type { Field, FlexibleProvablePure } from "o1js";
2
2
  import { Option } from "../model/Option";
3
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, false>;
4
+ declare const StateMap_base: import("ts-mixer/dist/types/types").Class<any[], WithPath & WithStateServiceProvider, typeof WithPath & typeof WithStateServiceProvider>;
5
5
  /**
6
6
  * Map-like wrapper for state
7
7
  */
@@ -24,14 +24,14 @@ export declare class StateMap<KeyType, ValueType> extends StateMap_base {
24
24
  * @param key - Key to obtain the state for
25
25
  * @returns Value for the provided key.
26
26
  */
27
- get(key: KeyType): Option<ValueType>;
27
+ get(key: KeyType): Promise<Option<ValueType>>;
28
28
  /**
29
29
  * Sets a value for the given key in the current state map.
30
30
  *
31
31
  * @param key - Key to store the value under
32
32
  * @param value - Value to be stored under the given key
33
33
  */
34
- set(key: KeyType, value: ValueType): void;
34
+ set(key: KeyType, value: ValueType): Promise<void>;
35
35
  }
36
36
  export {};
37
37
  //# sourceMappingURL=StateMap.d.ts.map
@@ -1 +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;AAEH,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;IACI,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;IAU3C;;;;;OAKG;IACI,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;CASjD"}
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"}
@@ -4,7 +4,6 @@ import { State, WithStateServiceProvider, WithPath } from "./State";
4
4
  /**
5
5
  * Map-like wrapper for state
6
6
  */
7
- // eslint-disable-next-line new-cap
8
7
  export class StateMap extends Mixin(WithPath, WithStateServiceProvider) {
9
8
  /**
10
9
  * Create a new state map with the given key and value types
@@ -31,13 +30,13 @@ export class StateMap extends Mixin(WithPath, WithStateServiceProvider) {
31
30
  * @param key - Key to obtain the state for
32
31
  * @returns Value for the provided key.
33
32
  */
34
- get(key) {
33
+ async get(key) {
35
34
  const state = State.from(this.valueType);
36
35
  this.hasPathOrFail();
37
36
  this.hasStateServiceOrFail();
38
37
  state.path = this.getPath(key);
39
38
  state.stateServiceProvider = this.stateServiceProvider;
40
- return state.get();
39
+ return await state.get();
41
40
  }
42
41
  /**
43
42
  * Sets a value for the given key in the current state map.
@@ -45,12 +44,12 @@ export class StateMap extends Mixin(WithPath, WithStateServiceProvider) {
45
44
  * @param key - Key to store the value under
46
45
  * @param value - Value to be stored under the given key
47
46
  */
48
- set(key, value) {
47
+ async set(key, value) {
49
48
  const state = State.from(this.valueType);
50
49
  this.hasPathOrFail();
51
50
  this.hasStateServiceOrFail();
52
51
  state.path = Path.fromKey(this.path, this.keyType, key);
53
52
  state.stateServiceProvider = this.stateServiceProvider;
54
- state.set(value);
53
+ return await state.set(value);
55
54
  }
56
55
  }
@@ -1,6 +1,6 @@
1
1
  import { Field } from "o1js";
2
- export interface StateService {
3
- get: (key: Field) => Field[] | undefined;
4
- set: (key: Field, value: Field[] | undefined) => void;
2
+ export interface SimpleAsyncStateService {
3
+ get: (key: Field) => Promise<Field[] | undefined>;
4
+ set: (key: Field, value: Field[] | undefined) => Promise<void>;
5
5
  }
6
6
  //# sourceMappingURL=StateService.d.ts.map
@@ -1 +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,YAAY;IAC3B,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,KAAK,EAAE,GAAG,SAAS,CAAC;IACzC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,KAAK,IAAI,CAAC;CACvD"}
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"}
@@ -1,8 +1,8 @@
1
- import { StateService } from "./StateService";
1
+ import { SimpleAsyncStateService } from "./StateService";
2
2
  export declare class StateServiceProvider {
3
3
  private readonly stateServiceStack;
4
- get stateService(): StateService;
5
- setCurrentStateService(service: StateService): void;
4
+ get stateService(): SimpleAsyncStateService;
5
+ setCurrentStateService(service: SimpleAsyncStateService): void;
6
6
  popCurrentStateService(): void;
7
7
  }
8
8
  //# sourceMappingURL=StateServiceProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StateServiceProvider.d.ts","sourceRoot":"","sources":["../../src/state/StateServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAU9C,qBACa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IAExD,IAAW,YAAY,IAAI,YAAY,CAQtC;IAEM,sBAAsB,CAAC,OAAO,EAAE,YAAY;IAI5C,sBAAsB;CAO9B"}
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"}
@@ -9,7 +9,7 @@ import { log } from "@proto-kit/common";
9
9
  const errors = {
10
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
11
  };
12
- let StateServiceProvider = class StateServiceProvider {
12
+ export let StateServiceProvider = class StateServiceProvider {
13
13
  constructor() {
14
14
  this.stateServiceStack = [];
15
15
  }
@@ -18,7 +18,6 @@ let StateServiceProvider = class StateServiceProvider {
18
18
  throw errors.stateServiceNotSet();
19
19
  }
20
20
  // Assertion here is ok, because we check that the array is not empty above
21
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
22
21
  return this.stateServiceStack.at(-1);
23
22
  }
24
23
  setCurrentStateService(service) {
@@ -35,4 +34,3 @@ let StateServiceProvider = class StateServiceProvider {
35
34
  StateServiceProvider = __decorate([
36
35
  injectable()
37
36
  ], StateServiceProvider);
38
- export { StateServiceProvider };
@@ -8,5 +8,5 @@ import { Bool } from "o1js";
8
8
  * @param condition - Result of the assertion made about the execution status
9
9
  * @param message - Optional message describing the prior status
10
10
  */
11
- export declare function assert(condition: Bool, message?: string): void;
11
+ export declare function assert(condition: Bool, message?: string | (() => string)): void;
12
12
  //# sourceMappingURL=assert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/state/assert/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAM5B;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,MAAM,QAavD"}
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"}
@@ -1,3 +1,4 @@
1
+ import { Provable } from "o1js";
1
2
  import { container } from "tsyringe";
2
3
  import { log } from "@proto-kit/common";
3
4
  import { RuntimeMethodExecutionContext } from "../context/RuntimeMethodExecutionContext";
@@ -14,11 +15,16 @@ export function assert(condition, message) {
14
15
  const executionContext = container.resolve(RuntimeMethodExecutionContext);
15
16
  const previousStatus = executionContext.current().result.status;
16
17
  const status = condition.and(previousStatus);
17
- if (!condition.toBoolean()) {
18
- if (!executionContext.current().isSimulated) {
19
- log.debug("Assertion failed: ", message);
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);
20
27
  }
21
- executionContext.setStatusMessage(message);
22
- }
28
+ });
23
29
  executionContext.setStatus(status);
24
30
  }
@@ -1,5 +1,5 @@
1
- import { TransitionMethodExecutionContext, TransitionMethodExecutionResult } from "./TransitionMethodExecutionContext";
2
1
  import { StateTransition } from "../../model/StateTransition";
2
+ import { TransitionMethodExecutionContext, TransitionMethodExecutionResult } from "./TransitionMethodExecutionContext";
3
3
  export declare class ProtocolMethodExecutionContext implements TransitionMethodExecutionContext {
4
4
  result: TransitionMethodExecutionResult;
5
5
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolMethodExecutionContext.d.ts","sourceRoot":"","sources":["../../../src/state/context/ProtocolMethodExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,qBAAa,8BAA+B,YAAW,gCAAgC;IAC9E,MAAM,kCAAyC;IAEtD;;;OAGG;IACI,kBAAkB,CAAC,KAAK,EAC7B,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IAKzC;;OAEG;IACI,KAAK;IAIZ;;;OAGG;IACI,OAAO;;;CAKf"}
1
+ {"version":3,"file":"ProtocolMethodExecutionContext.d.ts","sourceRoot":"","sources":["../../../src/state/context/ProtocolMethodExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAChC,MAAM,oCAAoC,CAAC;AAE5C,qBAAa,8BACX,YAAW,gCAAgC;IAEpC,MAAM,kCAAyC;IAEtD;;;OAGG;IACI,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC;IAIxE;;OAEG;IACI,KAAK;IAIZ;;;OAGG;IACI,OAAO;;;CAKf"}
@@ -1,4 +1,4 @@
1
- import { TransitionMethodExecutionResult } from "./TransitionMethodExecutionContext";
1
+ import { TransitionMethodExecutionResult, } from "./TransitionMethodExecutionContext";
2
2
  export class ProtocolMethodExecutionContext {
3
3
  constructor() {
4
4
  this.result = new TransitionMethodExecutionResult();
@@ -7,6 +7,7 @@ export declare class RuntimeProvableMethodExecutionResult extends ProvableMethod
7
7
  stateTransitions: StateTransition<any>[];
8
8
  status: Bool;
9
9
  statusMessage?: string;
10
+ stackTrace?: string;
10
11
  }
11
12
  export interface RuntimeMethodExecutionData {
12
13
  transaction: RuntimeTransaction;
@@ -23,13 +24,59 @@ declare const RuntimeMethodExecutionDataStruct_base: (new (value: {
23
24
  } & Provable<{
24
25
  transaction: RuntimeTransaction;
25
26
  networkState: NetworkState;
27
+ }, {
28
+ transaction: {
29
+ methodId: bigint;
30
+ argsHash: bigint;
31
+ nonce: {
32
+ isSome: boolean;
33
+ value: any;
34
+ };
35
+ sender: {
36
+ isSome: boolean;
37
+ value: any;
38
+ };
39
+ };
40
+ networkState: {
41
+ block: {
42
+ height: bigint;
43
+ };
44
+ previous: {
45
+ rootHash: bigint;
46
+ };
47
+ };
26
48
  }> & {
49
+ fromValue: (value: {
50
+ transaction: RuntimeTransaction | {
51
+ methodId: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
52
+ argsHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
53
+ nonce: import("../..").UInt64Option | {
54
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
55
+ value: any;
56
+ };
57
+ sender: import("../..").PublicKeyOption | {
58
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
59
+ value: any;
60
+ };
61
+ };
62
+ networkState: NetworkState | {
63
+ block: import("../../model/network/NetworkState").CurrentBlock | {
64
+ height: bigint | import("o1js/dist/node/lib/provable/int").UInt64;
65
+ };
66
+ previous: import("../../model/network/NetworkState").PreviousBlock | {
67
+ rootHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
68
+ };
69
+ };
70
+ }) => {
71
+ transaction: RuntimeTransaction;
72
+ networkState: NetworkState;
73
+ };
27
74
  toInput: (x: {
28
75
  transaction: RuntimeTransaction;
29
76
  networkState: NetworkState;
30
77
  }) => {
31
- fields?: import("o1js/dist/node/lib/field").Field[] | undefined;
32
- packed?: [import("o1js/dist/node/lib/field").Field, number][] | undefined;
78
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
79
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
33
80
  };
34
81
  toJSON: (x: {
35
82
  transaction: RuntimeTransaction;
@@ -81,8 +128,12 @@ declare const RuntimeMethodExecutionDataStruct_base: (new (value: {
81
128
  transaction: RuntimeTransaction;
82
129
  networkState: NetworkState;
83
130
  };
131
+ empty: () => {
132
+ transaction: RuntimeTransaction;
133
+ networkState: NetworkState;
134
+ };
84
135
  };
85
- export declare class RuntimeMethodExecutionDataStruct extends RuntimeMethodExecutionDataStruct_base {
136
+ export declare class RuntimeMethodExecutionDataStruct extends RuntimeMethodExecutionDataStruct_base implements RuntimeMethodExecutionData {
86
137
  }
87
138
  /**
88
139
  * Execution context used to wrap runtime module methods,
@@ -104,7 +155,7 @@ export declare class RuntimeMethodExecutionContext extends ProvableMethodExecuti
104
155
  /**
105
156
  * @param message - Status message to acompany the current status
106
157
  */
107
- setStatusMessage(message?: string): void;
158
+ setStatusMessage(message?: string, stackTrace?: string): void;
108
159
  /**
109
160
  * @param status - Execution status of the current method
110
161
  */
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeMethodExecutionContext.d.ts","sourceRoot":"","sources":["../../../src/state/context/RuntimeMethodExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,MAAM,MAAM,CAAC;AAE9C,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAC3B,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;IAE9E,gBAAgB,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAM;IAE9C,MAAM,EAAE,IAAI,CAAc;IAE1B,aAAa,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,kBAAkB,CAAC;IAChC,YAAY,EAAE,YAAY,CAAC;CAC5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,gCAAiC,SAAQ,qCAGpD;CAAG;AAEL;;;;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;IAKxE;;OAEG;IACI,gBAAgB,CAAC,OAAO,CAAC,EAAE,MAAM;IAQxC;;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;IASlB;;;OAGG;IACI,OAAO;;;;;;CAQf"}
1
+ {"version":3,"file":"RuntimeMethodExecutionContext.d.ts","sourceRoot":"","sources":["../../../src/state/context/RuntimeMethodExecutionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAU,MAAM,MAAM,CAAC;AAE9C,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;CAC5B;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;IAKxE;;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"}
@@ -15,7 +15,6 @@ const errors = {
15
15
  export class RuntimeProvableMethodExecutionResult extends ProvableMethodExecutionResult {
16
16
  constructor() {
17
17
  super(...arguments);
18
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
18
  this.stateTransitions = [];
20
19
  this.status = Bool(true);
21
20
  }
@@ -30,7 +29,7 @@ export class RuntimeMethodExecutionDataStruct extends Struct({
30
29
  * allowing them to post relevant information (such as execution status)
31
30
  * into the context without any unnecessary 'prop drilling'.
32
31
  */
33
- let RuntimeMethodExecutionContext = class RuntimeMethodExecutionContext extends ProvableMethodExecutionContext {
32
+ export let RuntimeMethodExecutionContext = class RuntimeMethodExecutionContext extends ProvableMethodExecutionContext {
34
33
  constructor() {
35
34
  super(...arguments);
36
35
  this.methods = [];
@@ -53,13 +52,14 @@ let RuntimeMethodExecutionContext = class RuntimeMethodExecutionContext extends
53
52
  /**
54
53
  * @param message - Status message to acompany the current status
55
54
  */
56
- setStatusMessage(message) {
57
- var _a;
55
+ setStatusMessage(message, stackTrace) {
56
+ var _a, _b;
58
57
  this.assertSetupCalled();
59
58
  if (this.isSimulated) {
60
59
  return;
61
60
  }
62
61
  (_a = this.result).statusMessage ?? (_a.statusMessage = message);
62
+ (_b = this.result).stackTrace ?? (_b.stackTrace = stackTrace);
63
63
  }
64
64
  /**
65
65
  * @param status - Execution status of the current method
@@ -101,7 +101,8 @@ let RuntimeMethodExecutionContext = class RuntimeMethodExecutionContext extends
101
101
  super.afterMethod();
102
102
  if (this.isFinished) {
103
103
  this.lastInput = this.input;
104
- this.input = undefined;
104
+ // TODO: find out why input isnt set in TransactionFeeHook during assert
105
+ // this.input = undefined;
105
106
  this.isSimulated = false;
106
107
  }
107
108
  }
@@ -121,4 +122,3 @@ let RuntimeMethodExecutionContext = class RuntimeMethodExecutionContext extends
121
122
  RuntimeMethodExecutionContext = __decorate([
122
123
  singleton()
123
124
  ], RuntimeMethodExecutionContext);
124
- export { RuntimeMethodExecutionContext };
@@ -1 +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;IAEnC,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"}
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"}
@@ -1,6 +1,5 @@
1
1
  export class TransitionMethodExecutionResult {
2
2
  constructor() {
3
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
3
  this.stateTransitions = [];
5
4
  }
6
5
  }
@@ -0,0 +1,14 @@
1
+ import { RuntimeMethodExecutionData, RuntimeProvableMethodExecutionResult } from "./RuntimeMethodExecutionContext";
2
+ /**
3
+ * Executed a given function f inside a RuntimeMethodExecutionContext
4
+ * and retrieves the result along with the return value of f
5
+ * @param f
6
+ * @param inputs
7
+ * @param isAnnotated Whether the execution f is annotated with @runtimeMethod or similar
8
+ * @param isSimulated
9
+ */
10
+ export declare function executeWithContext<T>(f: () => T, inputs: RuntimeMethodExecutionData, isAnnotated: boolean, isSimulated: boolean): {
11
+ result: RuntimeProvableMethodExecutionResult;
12
+ functionResult: T;
13
+ };
14
+ //# sourceMappingURL=contextExecution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextExecution.d.ts","sourceRoot":"","sources":["../../../src/state/context/contextExecution.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,0BAA0B,EAC1B,oCAAoC,EACrC,MAAM,iCAAiC,CAAC;AAEzC;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,CAAC,EAAE,MAAM,CAAC,EACV,MAAM,EAAE,0BAA0B,EAClC,WAAW,EAAE,OAAO,EACpB,WAAW,EAAE,OAAO,GACnB;IAAE,MAAM,EAAE,oCAAoC,CAAC;IAAC,cAAc,EAAE,CAAC,CAAA;CAAE,CAwBrE"}
@@ -0,0 +1,30 @@
1
+ import { container } from "tsyringe";
2
+ import { RuntimeMethodExecutionContext, } from "./RuntimeMethodExecutionContext";
3
+ /**
4
+ * Executed a given function f inside a RuntimeMethodExecutionContext
5
+ * and retrieves the result along with the return value of f
6
+ * @param f
7
+ * @param inputs
8
+ * @param isAnnotated Whether the execution f is annotated with @runtimeMethod or similar
9
+ * @param isSimulated
10
+ */
11
+ export function executeWithContext(f, inputs, isAnnotated, isSimulated) {
12
+ const executionContext = container.resolve(RuntimeMethodExecutionContext);
13
+ if (!isAnnotated) {
14
+ executionContext.beforeMethod("", "", []);
15
+ }
16
+ // Setup context for potential calls to runtime methods.
17
+ // With the special case that we set the new networkstate for every hook
18
+ // We also have to put in a dummy transaction for network.transaction
19
+ executionContext.setup(inputs);
20
+ executionContext.setSimulated(isSimulated);
21
+ const functionResult = f();
22
+ if (!isAnnotated) {
23
+ executionContext.afterMethod();
24
+ }
25
+ const result = executionContext.current().result;
26
+ return {
27
+ result,
28
+ functionResult,
29
+ };
30
+ }
@@ -1 +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,UAoCtB"}
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"}