@proto-kit/protocol 0.1.1-develop.1086

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 (251) hide show
  1. package/LICENSE.md +201 -0
  2. package/README.md +45 -0
  3. package/dist/Constants.d.ts +4 -0
  4. package/dist/Constants.d.ts.map +1 -0
  5. package/dist/Constants.js +3 -0
  6. package/dist/hooks/AccountStateHook.d.ts +52 -0
  7. package/dist/hooks/AccountStateHook.d.ts.map +1 -0
  8. package/dist/hooks/AccountStateHook.js +47 -0
  9. package/dist/hooks/BlockHeightHook.d.ts +7 -0
  10. package/dist/hooks/BlockHeightHook.d.ts.map +1 -0
  11. package/dist/hooks/BlockHeightHook.js +15 -0
  12. package/dist/hooks/LastStateRootBlockHook.d.ts +8 -0
  13. package/dist/hooks/LastStateRootBlockHook.d.ts.map +1 -0
  14. package/dist/hooks/LastStateRootBlockHook.js +15 -0
  15. package/dist/hooks/NoopBlockHook.d.ts +9 -0
  16. package/dist/hooks/NoopBlockHook.d.ts.map +1 -0
  17. package/dist/hooks/NoopBlockHook.js +9 -0
  18. package/dist/hooks/NoopSettlementHook.d.ts +6 -0
  19. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -0
  20. package/dist/hooks/NoopSettlementHook.js +17 -0
  21. package/dist/hooks/NoopTransactionHook.d.ts +6 -0
  22. package/dist/hooks/NoopTransactionHook.d.ts.map +1 -0
  23. package/dist/hooks/NoopTransactionHook.js +7 -0
  24. package/dist/index.d.ts +54 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +53 -0
  27. package/dist/model/MethodPublicOutput.d.ts +113 -0
  28. package/dist/model/MethodPublicOutput.d.ts.map +1 -0
  29. package/dist/model/MethodPublicOutput.js +14 -0
  30. package/dist/model/Option.d.ts +122 -0
  31. package/dist/model/Option.d.ts.map +1 -0
  32. package/dist/model/Option.js +110 -0
  33. package/dist/model/Path.d.ts +31 -0
  34. package/dist/model/Path.d.ts.map +1 -0
  35. package/dist/model/Path.js +42 -0
  36. package/dist/model/RuntimeLike.d.ts +11 -0
  37. package/dist/model/RuntimeLike.d.ts.map +1 -0
  38. package/dist/model/RuntimeLike.js +1 -0
  39. package/dist/model/StateTransition.d.ts +135 -0
  40. package/dist/model/StateTransition.d.ts.map +1 -0
  41. package/dist/model/StateTransition.js +68 -0
  42. package/dist/model/StateTransitionProvableBatch.d.ts +172 -0
  43. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -0
  44. package/dist/model/StateTransitionProvableBatch.js +85 -0
  45. package/dist/model/network/NetworkState.d.ts +160 -0
  46. package/dist/model/network/NetworkState.d.ts.map +1 -0
  47. package/dist/model/network/NetworkState.js +31 -0
  48. package/dist/model/transaction/RuntimeTransaction.d.ts +122 -0
  49. package/dist/model/transaction/RuntimeTransaction.d.ts.map +1 -0
  50. package/dist/model/transaction/RuntimeTransaction.js +86 -0
  51. package/dist/model/transaction/SignedTransaction.d.ts +107 -0
  52. package/dist/model/transaction/SignedTransaction.d.ts.map +1 -0
  53. package/dist/model/transaction/SignedTransaction.js +33 -0
  54. package/dist/model/transaction/ValueOption.d.ts +173 -0
  55. package/dist/model/transaction/ValueOption.d.ts.map +1 -0
  56. package/dist/model/transaction/ValueOption.js +24 -0
  57. package/dist/protocol/Protocol.d.ts +43 -0
  58. package/dist/protocol/Protocol.d.ts.map +1 -0
  59. package/dist/protocol/Protocol.js +95 -0
  60. package/dist/protocol/ProtocolEnvironment.d.ts +9 -0
  61. package/dist/protocol/ProtocolEnvironment.d.ts.map +1 -0
  62. package/dist/protocol/ProtocolEnvironment.js +1 -0
  63. package/dist/protocol/ProtocolModule.d.ts +9 -0
  64. package/dist/protocol/ProtocolModule.d.ts.map +1 -0
  65. package/dist/protocol/ProtocolModule.js +12 -0
  66. package/dist/protocol/ProvableBlockHook.d.ts +8 -0
  67. package/dist/protocol/ProvableBlockHook.d.ts.map +1 -0
  68. package/dist/protocol/ProvableBlockHook.js +4 -0
  69. package/dist/protocol/ProvableTransactionHook.d.ts +7 -0
  70. package/dist/protocol/ProvableTransactionHook.d.ts.map +1 -0
  71. package/dist/protocol/ProvableTransactionHook.js +3 -0
  72. package/dist/protocol/TransitioningProtocolModule.d.ts +10 -0
  73. package/dist/protocol/TransitioningProtocolModule.d.ts.map +1 -0
  74. package/dist/protocol/TransitioningProtocolModule.js +8 -0
  75. package/dist/prover/block/BlockProvable.d.ts +395 -0
  76. package/dist/prover/block/BlockProvable.d.ts.map +1 -0
  77. package/dist/prover/block/BlockProvable.js +45 -0
  78. package/dist/prover/block/BlockProver.d.ts +92 -0
  79. package/dist/prover/block/BlockProver.d.ts.map +1 -0
  80. package/dist/prover/block/BlockProver.js +472 -0
  81. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts +64 -0
  82. package/dist/prover/block/accummulators/BlockHashMerkleTree.d.ts.map +1 -0
  83. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +16 -0
  84. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +139 -0
  85. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts.map +1 -0
  86. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +20 -0
  87. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts +7 -0
  88. package/dist/prover/block/services/RuntimeVerificationKeyRootService.d.ts.map +1 -0
  89. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js +22 -0
  90. package/dist/prover/statetransition/StateTransitionProvable.d.ts +174 -0
  91. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -0
  92. package/dist/prover/statetransition/StateTransitionProvable.js +15 -0
  93. package/dist/prover/statetransition/StateTransitionProver.d.ts +51 -0
  94. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -0
  95. package/dist/prover/statetransition/StateTransitionProver.js +188 -0
  96. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts +16 -0
  97. package/dist/prover/statetransition/StateTransitionWitnessProvider.d.ts.map +1 -0
  98. package/dist/prover/statetransition/StateTransitionWitnessProvider.js +16 -0
  99. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts +7 -0
  100. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.d.ts.map +1 -0
  101. package/dist/prover/statetransition/StateTransitionWitnessProviderReference.js +19 -0
  102. package/dist/settlement/ContractModule.d.ts +15 -0
  103. package/dist/settlement/ContractModule.d.ts.map +1 -0
  104. package/dist/settlement/ContractModule.js +11 -0
  105. package/dist/settlement/SettlementContractModule.d.ts +40 -0
  106. package/dist/settlement/SettlementContractModule.d.ts.map +1 -0
  107. package/dist/settlement/SettlementContractModule.js +71 -0
  108. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +12 -0
  109. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -0
  110. package/dist/settlement/contracts/DispatchContractProtocolModule.js +35 -0
  111. package/dist/settlement/contracts/DispatchSmartContract.d.ts +22 -0
  112. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -0
  113. package/dist/settlement/contracts/DispatchSmartContract.js +110 -0
  114. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +19 -0
  115. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -0
  116. package/dist/settlement/contracts/SettlementContractProtocolModule.js +44 -0
  117. package/dist/settlement/contracts/SettlementSmartContract.d.ts +42 -0
  118. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -0
  119. package/dist/settlement/contracts/SettlementSmartContract.js +241 -0
  120. package/dist/settlement/messages/Deposit.d.ts +64 -0
  121. package/dist/settlement/messages/Deposit.d.ts.map +1 -0
  122. package/dist/settlement/messages/Deposit.js +6 -0
  123. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +189 -0
  124. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -0
  125. package/dist/settlement/messages/OutgoingMessageArgument.js +32 -0
  126. package/dist/settlement/messages/Withdrawal.d.ts +65 -0
  127. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -0
  128. package/dist/settlement/messages/Withdrawal.js +13 -0
  129. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +24 -0
  130. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -0
  131. package/dist/settlement/modularity/ProvableSettlementHook.js +3 -0
  132. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts +11 -0
  133. package/dist/settlement/modules/NetworkStateSettlementModule.d.ts.map +1 -0
  134. package/dist/settlement/modules/NetworkStateSettlementModule.js +14 -0
  135. package/dist/state/State.d.ts +68 -0
  136. package/dist/state/State.d.ts.map +1 -0
  137. package/dist/state/State.js +129 -0
  138. package/dist/state/StateMap.d.ts +37 -0
  139. package/dist/state/StateMap.d.ts.map +1 -0
  140. package/dist/state/StateMap.js +55 -0
  141. package/dist/state/StateService.d.ts +6 -0
  142. package/dist/state/StateService.d.ts.map +1 -0
  143. package/dist/state/StateService.js +1 -0
  144. package/dist/state/StateServiceProvider.d.ts +8 -0
  145. package/dist/state/StateServiceProvider.d.ts.map +1 -0
  146. package/dist/state/StateServiceProvider.js +36 -0
  147. package/dist/state/assert/assert.d.ts +12 -0
  148. package/dist/state/assert/assert.d.ts.map +1 -0
  149. package/dist/state/assert/assert.js +30 -0
  150. package/dist/state/context/ProtocolMethodExecutionContext.d.ts +22 -0
  151. package/dist/state/context/ProtocolMethodExecutionContext.d.ts.map +1 -0
  152. package/dist/state/context/ProtocolMethodExecutionContext.js +28 -0
  153. package/dist/state/context/RuntimeMethodExecutionContext.d.ts +193 -0
  154. package/dist/state/context/RuntimeMethodExecutionContext.d.ts.map +1 -0
  155. package/dist/state/context/RuntimeMethodExecutionContext.js +135 -0
  156. package/dist/state/context/TransitionMethodExecutionContext.d.ts +23 -0
  157. package/dist/state/context/TransitionMethodExecutionContext.d.ts.map +1 -0
  158. package/dist/state/context/TransitionMethodExecutionContext.js +5 -0
  159. package/dist/state/protocol/ProtocolState.d.ts +7 -0
  160. package/dist/state/protocol/ProtocolState.d.ts.map +1 -0
  161. package/dist/state/protocol/ProtocolState.js +39 -0
  162. package/dist/utils/MinaPrefixedProvableHashList.d.ts +24 -0
  163. package/dist/utils/MinaPrefixedProvableHashList.d.ts.map +1 -0
  164. package/dist/utils/MinaPrefixedProvableHashList.js +52 -0
  165. package/dist/utils/PrefixedProvableHashList.d.ts +8 -0
  166. package/dist/utils/PrefixedProvableHashList.d.ts.map +1 -0
  167. package/dist/utils/PrefixedProvableHashList.js +12 -0
  168. package/dist/utils/ProvableHashList.d.ts +27 -0
  169. package/dist/utils/ProvableHashList.d.ts.map +1 -0
  170. package/dist/utils/ProvableHashList.js +43 -0
  171. package/dist/utils/ProvableReductionHashList.d.ts +14 -0
  172. package/dist/utils/ProvableReductionHashList.d.ts.map +1 -0
  173. package/dist/utils/ProvableReductionHashList.js +50 -0
  174. package/dist/utils/StateTransitionReductionList.d.ts +11 -0
  175. package/dist/utils/StateTransitionReductionList.d.ts.map +1 -0
  176. package/dist/utils/StateTransitionReductionList.js +60 -0
  177. package/dist/utils/utils.d.ts +11 -0
  178. package/dist/utils/utils.d.ts.map +1 -0
  179. package/dist/utils/utils.js +44 -0
  180. package/jest.config.cjs +1 -0
  181. package/package.json +36 -0
  182. package/src/Constants.ts +3 -0
  183. package/src/hooks/AccountStateHook.ts +48 -0
  184. package/src/hooks/BlockHeightHook.ts +17 -0
  185. package/src/hooks/LastStateRootBlockHook.ts +26 -0
  186. package/src/hooks/NoopBlockHook.ts +21 -0
  187. package/src/hooks/NoopSettlementHook.ts +20 -0
  188. package/src/hooks/NoopTransactionHook.ts +10 -0
  189. package/src/index.ts +53 -0
  190. package/src/model/MethodPublicOutput.ts +14 -0
  191. package/src/model/Option.ts +172 -0
  192. package/src/model/Path.ts +50 -0
  193. package/src/model/RuntimeLike.ts +12 -0
  194. package/src/model/StateTransition.ts +88 -0
  195. package/src/model/StateTransitionProvableBatch.ts +125 -0
  196. package/src/model/Transaction.ts +31 -0
  197. package/src/model/network/NetworkState.ts +33 -0
  198. package/src/model/transaction/RuntimeTransaction.ts +105 -0
  199. package/src/model/transaction/SignedTransaction.ts +47 -0
  200. package/src/model/transaction/ValueOption.ts +28 -0
  201. package/src/protocol/Protocol.ts +197 -0
  202. package/src/protocol/ProtocolEnvironment.ts +10 -0
  203. package/src/protocol/ProtocolModule.ts +27 -0
  204. package/src/protocol/ProvableBlockHook.ts +19 -0
  205. package/src/protocol/ProvableTransactionHook.ts +13 -0
  206. package/src/protocol/TransitioningProtocolModule.ts +12 -0
  207. package/src/prover/block/BlockProvable.ts +99 -0
  208. package/src/prover/block/BlockProver.ts +954 -0
  209. package/src/prover/block/accummulators/BlockHashMerkleTree.ts +16 -0
  210. package/src/prover/block/accummulators/RuntimeVerificationKeyTree.ts +24 -0
  211. package/src/prover/block/services/RuntimeVerificationKeyRootService.ts +20 -0
  212. package/src/prover/statetransition/StateTransitionProvable.ts +44 -0
  213. package/src/prover/statetransition/StateTransitionProver.ts +371 -0
  214. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +23 -0
  215. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +17 -0
  216. package/src/settlement/ContractModule.ts +24 -0
  217. package/src/settlement/SettlementContractModule.ts +132 -0
  218. package/src/settlement/contracts/DispatchContractProtocolModule.ts +39 -0
  219. package/src/settlement/contracts/DispatchSmartContract.ts +136 -0
  220. package/src/settlement/contracts/SettlementContractProtocolModule.ts +67 -0
  221. package/src/settlement/contracts/SettlementSmartContract.ts +344 -0
  222. package/src/settlement/messages/Deposit.ts +6 -0
  223. package/src/settlement/messages/OutgoingMessageArgument.ts +42 -0
  224. package/src/settlement/messages/Withdrawal.ts +14 -0
  225. package/src/settlement/modularity/ProvableSettlementHook.ts +33 -0
  226. package/src/settlement/modules/NetworkStateSettlementModule.ts +42 -0
  227. package/src/state/State.ts +175 -0
  228. package/src/state/StateMap.ts +73 -0
  229. package/src/state/StateService.ts +6 -0
  230. package/src/state/StateServiceProvider.ts +37 -0
  231. package/src/state/assert/assert.ts +35 -0
  232. package/src/state/context/RuntimeMethodExecutionContext.ts +174 -0
  233. package/src/state/context/TransitionMethodExecutionContext.ts +26 -0
  234. package/src/state/protocol/ProtocolState.ts +61 -0
  235. package/src/utils/MinaPrefixedProvableHashList.ts +73 -0
  236. package/src/utils/PrefixedProvableHashList.ts +21 -0
  237. package/src/utils/ProvableHashList.ts +50 -0
  238. package/src/utils/ProvableReductionHashList.ts +68 -0
  239. package/src/utils/StateTransitionReductionList.ts +89 -0
  240. package/src/utils/utils.ts +75 -0
  241. package/test/BlockProver.test.ts +211 -0
  242. package/test/Protocol.test.ts +37 -0
  243. package/test/State.test.ts +45 -0
  244. package/test/StateTransition.test.ts +174 -0
  245. package/test/TestingProtocol.ts +47 -0
  246. package/test/model/Option.test.ts +72 -0
  247. package/test/state/assert/assert.test.ts +56 -0
  248. package/test/tsconfig.json +7 -0
  249. package/test/utils/ProvableReductionHashList.test.ts +117 -0
  250. package/test/utils.test.ts +27 -0
  251. package/tsconfig.json +8 -0
@@ -0,0 +1,113 @@
1
+ declare const MethodPublicOutput_base: (new (value: {
2
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
3
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
4
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
5
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
6
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
7
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
8
+ }) => {
9
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
10
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
11
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
12
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
13
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
14
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
15
+ }) & {
16
+ _isStruct: true;
17
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
18
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
19
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
20
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
21
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
22
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
23
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
24
+ }, {
25
+ stateTransitionsHash: bigint;
26
+ status: boolean;
27
+ transactionHash: bigint;
28
+ networkStateHash: bigint;
29
+ isMessage: boolean;
30
+ eventsHash: bigint;
31
+ }>, "fromFields"> & {
32
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
33
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
34
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
35
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
36
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
37
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
38
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
39
+ };
40
+ } & {
41
+ fromValue: (value: {
42
+ stateTransitionsHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
43
+ status: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
44
+ transactionHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
45
+ networkStateHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
46
+ isMessage: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
47
+ eventsHash: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
48
+ }) => {
49
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
50
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
51
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
52
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
53
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
54
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
55
+ };
56
+ toInput: (x: {
57
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
58
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
59
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
60
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
61
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
62
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
63
+ }) => {
64
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
65
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
66
+ };
67
+ toJSON: (x: {
68
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
69
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
70
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
71
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
72
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
73
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
74
+ }) => {
75
+ stateTransitionsHash: string;
76
+ status: boolean;
77
+ transactionHash: string;
78
+ networkStateHash: string;
79
+ isMessage: boolean;
80
+ eventsHash: string;
81
+ };
82
+ fromJSON: (x: {
83
+ stateTransitionsHash: string;
84
+ status: boolean;
85
+ transactionHash: string;
86
+ networkStateHash: string;
87
+ isMessage: boolean;
88
+ eventsHash: string;
89
+ }) => {
90
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
91
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
92
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
93
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
94
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
95
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
96
+ };
97
+ empty: () => {
98
+ stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
99
+ status: import("o1js/dist/node/lib/provable/bool").Bool;
100
+ transactionHash: import("o1js/dist/node/lib/provable/field").Field;
101
+ networkStateHash: import("o1js/dist/node/lib/provable/field").Field;
102
+ isMessage: import("o1js/dist/node/lib/provable/bool").Bool;
103
+ eventsHash: import("o1js/dist/node/lib/provable/field").Field;
104
+ };
105
+ };
106
+ /**
107
+ * Public input used to link in-circuit execution with
108
+ * the proof's public input.
109
+ */
110
+ export declare class MethodPublicOutput extends MethodPublicOutput_base {
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=MethodPublicOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodPublicOutput.d.ts","sourceRoot":"","sources":["../../src/model/MethodPublicOutput.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,uBAOtC;CAAG"}
@@ -0,0 +1,14 @@
1
+ import { Bool, Field, Struct } from "o1js";
2
+ /**
3
+ * Public input used to link in-circuit execution with
4
+ * the proof's public input.
5
+ */
6
+ export class MethodPublicOutput extends Struct({
7
+ stateTransitionsHash: Field,
8
+ status: Bool,
9
+ transactionHash: Field,
10
+ networkStateHash: Field,
11
+ isMessage: Bool,
12
+ eventsHash: Field,
13
+ }) {
14
+ }
@@ -0,0 +1,122 @@
1
+ import { Bool, Field, type FlexibleProvablePure } from "o1js";
2
+ declare const ProvableOption_base: (new (value: {
3
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
4
+ value: import("o1js/dist/node/lib/provable/field").Field;
5
+ }) => {
6
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
7
+ value: import("o1js/dist/node/lib/provable/field").Field;
8
+ }) & {
9
+ _isStruct: true;
10
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
11
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
12
+ value: import("o1js/dist/node/lib/provable/field").Field;
13
+ }, {
14
+ isSome: boolean;
15
+ value: bigint;
16
+ }>, "fromFields"> & {
17
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
18
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
19
+ value: import("o1js/dist/node/lib/provable/field").Field;
20
+ };
21
+ } & {
22
+ fromValue: (value: {
23
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
24
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
25
+ }) => {
26
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
27
+ value: import("o1js/dist/node/lib/provable/field").Field;
28
+ };
29
+ toInput: (x: {
30
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
31
+ value: import("o1js/dist/node/lib/provable/field").Field;
32
+ }) => {
33
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
34
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
35
+ };
36
+ toJSON: (x: {
37
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
38
+ value: import("o1js/dist/node/lib/provable/field").Field;
39
+ }) => {
40
+ isSome: boolean;
41
+ value: string;
42
+ };
43
+ fromJSON: (x: {
44
+ isSome: boolean;
45
+ value: string;
46
+ }) => {
47
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
48
+ value: import("o1js/dist/node/lib/provable/field").Field;
49
+ };
50
+ empty: () => {
51
+ isSome: import("o1js/dist/node/lib/provable/bool").Bool;
52
+ value: import("o1js/dist/node/lib/provable/field").Field;
53
+ };
54
+ };
55
+ export declare class ProvableOption extends ProvableOption_base {
56
+ toSome(): this;
57
+ }
58
+ export declare abstract class OptionBase {
59
+ isSome: Bool;
60
+ isForcedSome: Bool;
61
+ protected constructor(isSome: Bool, isForcedSome: Bool);
62
+ protected abstract encodeValueToFields(): Field[];
63
+ protected abstract clone(): OptionBase;
64
+ /**
65
+ * @returns Tree representation of the current value
66
+ */
67
+ get treeValue(): import("o1js/dist/node/lib/provable/field").Field;
68
+ forceSome(): void;
69
+ /**
70
+ * Returns the `to`-value as decoded as a list of fields
71
+ * Not in circuit
72
+ */
73
+ toFields(): Field[];
74
+ /**
75
+ * @returns Provable representation of the current option.
76
+ */
77
+ toProvable(): ProvableOption;
78
+ toJSON(): {
79
+ isSome: boolean;
80
+ isForcedSome: boolean;
81
+ value: string[];
82
+ };
83
+ }
84
+ /**
85
+ * Option facilitating in-circuit values that may or may not exist.
86
+ */
87
+ export declare class Option<Value> extends OptionBase {
88
+ value: Value;
89
+ valueType: FlexibleProvablePure<Value>;
90
+ /**
91
+ * Creates a new Option from the provided parameters
92
+ *
93
+ * @param isSome
94
+ * @param value
95
+ * @param valueType
96
+ * @returns New option from the provided parameters.
97
+ */
98
+ static from<Value>(isSome: Bool, value: Value, valueType: FlexibleProvablePure<Value>): Option<Value>;
99
+ /**
100
+ * Creates a new Option from the provided parameters
101
+ *
102
+ * @param value
103
+ * @param valueType
104
+ * @returns New option from the provided parameters.
105
+ */
106
+ static fromValue<Value>(value: Value, valueType: FlexibleProvablePure<Value>): Option<Value>;
107
+ /**
108
+ * @returns Empty / none option
109
+ */
110
+ static none(): Option<import("o1js/dist/node/lib/provable/field").Field>;
111
+ constructor(isSome: Bool, value: Value, valueType: FlexibleProvablePure<Value>, isForcedSome?: import("o1js/dist/node/lib/provable/bool").Bool);
112
+ encodeValueToFields(): Field[];
113
+ clone(): Option<Value>;
114
+ /**
115
+ * @returns Returns the value of this option if it isSome,
116
+ * otherwise returns the given defaultValue
117
+ */
118
+ orElse(defaultValue: Value): Value;
119
+ toConstant(): Option<Value>;
120
+ }
121
+ export {};
122
+ //# sourceMappingURL=Option.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Option.d.ts","sourceRoot":"","sources":["../../src/model/Option.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,KAAK,EACL,KAAK,oBAAoB,EAK1B,MAAM,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEd,qBAAa,cAAe,SAAQ,mBAGlC;IACO,MAAM;CAId;AAED,8BAAsB,UAAU;IAErB,MAAM,EAAE,IAAI;IACZ,YAAY,EAAE,IAAI;IAF3B,SAAS,aACA,MAAM,EAAE,IAAI,EACZ,YAAY,EAAE,IAAI;IAG3B,SAAS,CAAC,QAAQ,CAAC,mBAAmB,IAAI,KAAK,EAAE;IAEjD,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU;IAEtC;;OAEG;IACH,IAAW,SAAS,sDAQnB;IAEM,SAAS;IAKhB;;;OAGG;IACI,QAAQ,IAAI,KAAK,EAAE;IAO1B;;OAEG;IACI,UAAU;IAOV,MAAM;;;;;CASd;AAED;;GAEG;AACH,qBAAa,MAAM,CAAC,KAAK,CAAE,SAAQ,UAAU;IAwClC,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAxC/C;;;;;;;OAOG;WACW,IAAI,CAAC,KAAK,EACtB,MAAM,EAAE,IAAI,EACZ,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAKxC;;;;;;OAMG;WACW,SAAS,CAAC,KAAK,EAC3B,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC;IAKxC;;OAEG;WACW,IAAI;gBAKhB,MAAM,EAAE,IAAI,EACL,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAC7C,YAAY,kDAAc;IAKrB,mBAAmB,IAAI,KAAK,EAAE;IAI9B,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IAS7B;;;OAGG;IACI,MAAM,CAAC,YAAY,EAAE,KAAK,GAAG,KAAK;IASlC,UAAU;CAelB"}
@@ -0,0 +1,110 @@
1
+ import { Bool, Field, Poseidon, Provable, Struct, } from "o1js";
2
+ export class ProvableOption extends Struct({
3
+ isSome: Bool,
4
+ value: Field,
5
+ }) {
6
+ toSome() {
7
+ this.isSome = Bool(true);
8
+ return this;
9
+ }
10
+ }
11
+ export class OptionBase {
12
+ constructor(isSome, isForcedSome) {
13
+ this.isSome = isSome;
14
+ this.isForcedSome = isForcedSome;
15
+ }
16
+ /**
17
+ * @returns Tree representation of the current value
18
+ */
19
+ get treeValue() {
20
+ const treeValue = Poseidon.hash(this.encodeValueToFields());
21
+ return Provable.if(this.isSome.and(this.isForcedSome.not()), treeValue, Field(0));
22
+ }
23
+ forceSome() {
24
+ this.isForcedSome = Provable.if(this.isSome, Bool(false), Bool(true));
25
+ this.isSome = Bool(true);
26
+ }
27
+ /**
28
+ * Returns the `to`-value as decoded as a list of fields
29
+ * Not in circuit
30
+ */
31
+ toFields() {
32
+ if (this.isSome.toBoolean()) {
33
+ return this.encodeValueToFields();
34
+ }
35
+ return [Field(0)];
36
+ }
37
+ /**
38
+ * @returns Provable representation of the current option.
39
+ */
40
+ toProvable() {
41
+ return new ProvableOption({
42
+ isSome: this.isSome,
43
+ value: this.treeValue,
44
+ });
45
+ }
46
+ toJSON() {
47
+ const value = this.encodeValueToFields().map((field) => field.toString());
48
+ return {
49
+ isSome: this.isSome.toBoolean(),
50
+ isForcedSome: this.isForcedSome.toBoolean(),
51
+ value,
52
+ };
53
+ }
54
+ }
55
+ /**
56
+ * Option facilitating in-circuit values that may or may not exist.
57
+ */
58
+ export class Option extends OptionBase {
59
+ /**
60
+ * Creates a new Option from the provided parameters
61
+ *
62
+ * @param isSome
63
+ * @param value
64
+ * @param valueType
65
+ * @returns New option from the provided parameters.
66
+ */
67
+ static from(isSome, value, valueType) {
68
+ return new Option(isSome, value, valueType);
69
+ }
70
+ /**
71
+ * Creates a new Option from the provided parameters
72
+ *
73
+ * @param value
74
+ * @param valueType
75
+ * @returns New option from the provided parameters.
76
+ */
77
+ static fromValue(value, valueType) {
78
+ return this.from(Bool(true), value, valueType);
79
+ }
80
+ /**
81
+ * @returns Empty / none option
82
+ */
83
+ static none() {
84
+ return new Option(Bool(false), Field(0), Field);
85
+ }
86
+ constructor(isSome, value, valueType, isForcedSome = Bool(false)) {
87
+ super(isSome, isForcedSome);
88
+ this.value = value;
89
+ this.valueType = valueType;
90
+ }
91
+ encodeValueToFields() {
92
+ return this.valueType.toFields(this.value);
93
+ }
94
+ clone() {
95
+ return new Option(this.isSome, this.value, this.valueType, this.isForcedSome);
96
+ }
97
+ /**
98
+ * @returns Returns the value of this option if it isSome,
99
+ * otherwise returns the given defaultValue
100
+ */
101
+ orElse(defaultValue) {
102
+ return Provable.if(this.isSome, this.valueType, this.value, defaultValue);
103
+ }
104
+ toConstant() {
105
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
106
+ const valueConstant = this.valueType.fromFields(this.valueType.toFields(this.value).map((field) => field.toConstant()));
107
+ const boolConstant = (bool) => Bool.fromFields([bool.toField().toConstant()]);
108
+ return new Option(boolConstant(this.isSome), valueConstant, this.valueType, boolConstant(this.isForcedSome));
109
+ }
110
+ }
@@ -0,0 +1,31 @@
1
+ import { Field, type FlexibleProvablePure } from "o1js";
2
+ /**
3
+ * Helps manage path (key) identifiers for key-values in trees.
4
+ */
5
+ export declare class Path {
6
+ /**
7
+ * Encodes a JS string as a Field
8
+ *
9
+ * @param value
10
+ * @returns Field representation of the provided value
11
+ */
12
+ static toField(value: string): import("o1js/dist/node/lib/provable/field").Field;
13
+ /**
14
+ * Encodes a class name and its property name into a Field
15
+ *
16
+ * @param className
17
+ * @param propertyKey
18
+ * @returns Field representation of class name + property name
19
+ */
20
+ static fromProperty(className: string, propertyKey: string): Field;
21
+ /**
22
+ * Encodes an existing path with the provided key into a single Field.
23
+ *
24
+ * @param path
25
+ * @param keyType
26
+ * @param key
27
+ * @returns Field representation of the leading path + the provided key.
28
+ */
29
+ static fromKey<KeyType>(path: Field, keyType: FlexibleProvablePure<KeyType>, key: KeyType): Field;
30
+ }
31
+ //# sourceMappingURL=Path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Path.d.ts","sourceRoot":"","sources":["../../src/model/Path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,oBAAoB,EAAY,MAAM,MAAM,CAAC;AAIlE;;GAEG;AACH,qBAAa,IAAI;IACf;;;;;OAKG;WACW,OAAO,CAAC,KAAK,EAAE,MAAM;IAInC;;;;;;OAMG;WACW,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK;IAQzE;;;;;;;OAOG;WACW,OAAO,CAAC,OAAO,EAC3B,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,oBAAoB,CAAC,OAAO,CAAC,EACtC,GAAG,EAAE,OAAO,GACX,KAAK;CAIT"}
@@ -0,0 +1,42 @@
1
+ import { Field, Poseidon } from "o1js";
2
+ import { stringToField } from "../utils/utils";
3
+ /**
4
+ * Helps manage path (key) identifiers for key-values in trees.
5
+ */
6
+ export class Path {
7
+ /**
8
+ * Encodes a JS string as a Field
9
+ *
10
+ * @param value
11
+ * @returns Field representation of the provided value
12
+ */
13
+ static toField(value) {
14
+ return stringToField(value);
15
+ }
16
+ /**
17
+ * Encodes a class name and its property name into a Field
18
+ *
19
+ * @param className
20
+ * @param propertyKey
21
+ * @returns Field representation of class name + property name
22
+ */
23
+ static fromProperty(className, propertyKey) {
24
+ return Poseidon.hash([
25
+ Path.toField(className),
26
+ Path.toField(propertyKey),
27
+ Field(0),
28
+ ]);
29
+ }
30
+ /**
31
+ * Encodes an existing path with the provided key into a single Field.
32
+ *
33
+ * @param path
34
+ * @param keyType
35
+ * @param key
36
+ * @returns Field representation of the leading path + the provided key.
37
+ */
38
+ static fromKey(path, keyType, key) {
39
+ const keyHash = Poseidon.hash(keyType.toFields(key));
40
+ return Poseidon.hash([path, keyHash]);
41
+ }
42
+ }
@@ -0,0 +1,11 @@
1
+ export type RuntimeMethodInvocationType = "INCOMING_MESSAGE" | "SIGNATURE";
2
+ export type RuntimeMethodIdMapping = Record<`${string}.${string}`, {
3
+ methodId: bigint;
4
+ type: RuntimeMethodInvocationType;
5
+ }>;
6
+ export interface RuntimeLike {
7
+ get methodIdResolver(): {
8
+ methodIdMap: () => RuntimeMethodIdMapping;
9
+ };
10
+ }
11
+ //# sourceMappingURL=RuntimeLike.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeLike.d.ts","sourceRoot":"","sources":["../../src/model/RuntimeLike.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,2BAA2B,GAAG,kBAAkB,GAAG,WAAW,CAAC;AAE3E,MAAM,MAAM,sBAAsB,GAAG,MAAM,CACzC,GAAG,MAAM,IAAI,MAAM,EAAE,EACrB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,2BAA2B,CAAA;CAAE,CACxD,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,gBAAgB,IAAI;QACtB,WAAW,EAAE,MAAM,sBAAsB,CAAC;KAC3C,CAAC;CACH"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,135 @@
1
+ import { Field } from "o1js";
2
+ import { Option, ProvableOption } from "./Option";
3
+ declare const ProvableStateTransition_base: (new (value: {
4
+ path: import("o1js/dist/node/lib/provable/field").Field;
5
+ from: ProvableOption;
6
+ to: ProvableOption;
7
+ }) => {
8
+ path: import("o1js/dist/node/lib/provable/field").Field;
9
+ from: ProvableOption;
10
+ to: ProvableOption;
11
+ }) & {
12
+ _isStruct: true;
13
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
14
+ path: import("o1js/dist/node/lib/provable/field").Field;
15
+ from: ProvableOption;
16
+ to: ProvableOption;
17
+ }, {
18
+ path: bigint;
19
+ from: {
20
+ isSome: boolean;
21
+ value: bigint;
22
+ };
23
+ to: {
24
+ isSome: boolean;
25
+ value: bigint;
26
+ };
27
+ }>, "fromFields"> & {
28
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
29
+ path: import("o1js/dist/node/lib/provable/field").Field;
30
+ from: ProvableOption;
31
+ to: ProvableOption;
32
+ };
33
+ } & {
34
+ fromValue: (value: {
35
+ path: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
36
+ from: ProvableOption | {
37
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
38
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
39
+ };
40
+ to: ProvableOption | {
41
+ isSome: boolean | import("o1js/dist/node/lib/provable/bool").Bool;
42
+ value: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
43
+ };
44
+ }) => {
45
+ path: import("o1js/dist/node/lib/provable/field").Field;
46
+ from: ProvableOption;
47
+ to: ProvableOption;
48
+ };
49
+ toInput: (x: {
50
+ path: import("o1js/dist/node/lib/provable/field").Field;
51
+ from: ProvableOption;
52
+ to: ProvableOption;
53
+ }) => {
54
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
55
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
56
+ };
57
+ toJSON: (x: {
58
+ path: import("o1js/dist/node/lib/provable/field").Field;
59
+ from: ProvableOption;
60
+ to: ProvableOption;
61
+ }) => {
62
+ path: string;
63
+ from: {
64
+ isSome: boolean;
65
+ value: string;
66
+ };
67
+ to: {
68
+ isSome: boolean;
69
+ value: string;
70
+ };
71
+ };
72
+ fromJSON: (x: {
73
+ path: string;
74
+ from: {
75
+ isSome: boolean;
76
+ value: string;
77
+ };
78
+ to: {
79
+ isSome: boolean;
80
+ value: string;
81
+ };
82
+ }) => {
83
+ path: import("o1js/dist/node/lib/provable/field").Field;
84
+ from: ProvableOption;
85
+ to: ProvableOption;
86
+ };
87
+ empty: () => {
88
+ path: import("o1js/dist/node/lib/provable/field").Field;
89
+ from: ProvableOption;
90
+ to: ProvableOption;
91
+ };
92
+ };
93
+ /**
94
+ * Provable representation of a State Transition, used to
95
+ * normalize state transitions of various value types for
96
+ * the state transition circuit.
97
+ */
98
+ export declare class ProvableStateTransition extends ProvableStateTransition_base {
99
+ static dummy(): ProvableStateTransition;
100
+ }
101
+ /**
102
+ * Generic state transition that constraints the current method circuit
103
+ * to external state, by providing a state anchor.
104
+ */
105
+ export declare class StateTransition<Value> {
106
+ path: Field;
107
+ fromValue: Option<Value>;
108
+ toValue: Option<Field> | Option<Value>;
109
+ static from<Value>(path: Field, fromValue: Option<Value>): StateTransition<Value>;
110
+ static fromTo<Value>(path: Field, fromValue: Option<Value>, toValue: Option<Value>): StateTransition<Value>;
111
+ constructor(path: Field, fromValue: Option<Value>, toValue: Option<Field> | Option<Value>);
112
+ get from(): Option<Value>;
113
+ get to(): Option<import("o1js/dist/node/lib/provable/field").Field> | Option<Value>;
114
+ /**
115
+ * Converts a StateTransition to a ProvableStateTransition,
116
+ * while enforcing the 'from' property to be 'Some' in all cases.
117
+ */
118
+ toProvable(): ProvableStateTransition;
119
+ toJSON(): {
120
+ path: string;
121
+ from: {
122
+ isSome: boolean;
123
+ isForcedSome: boolean;
124
+ value: string[];
125
+ };
126
+ to: {
127
+ isSome: boolean;
128
+ isForcedSome: boolean;
129
+ value: string[];
130
+ };
131
+ };
132
+ toConstant(): StateTransition<Value>;
133
+ }
134
+ export {};
135
+ //# sourceMappingURL=StateTransition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransition.d.ts","sourceRoot":"","sources":["../../src/model/StateTransition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAU,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAElD;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,4BAQ3C;WACc,KAAK,IAAI,uBAAuB;CAO/C;AAED;;;GAGG;AACH,qBAAa,eAAe,CAAC,KAAK;IAcvB,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;WAfjC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC;WAIjD,MAAM,CAAC,KAAK,EACxB,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EACxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;gBAMf,IAAI,EAAE,KAAK,EACX,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,EACxB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IAG/C,IAAW,IAAI,kBAId;IAED,IAAW,EAAE,8EAEZ;IAED;;;OAGG;IACI,UAAU,IAAI,uBAAuB;IAQrC,MAAM;;;;;;;;;;;;;IAQN,UAAU,IAAI,eAAe,CAAC,KAAK,CAAC;CAO5C"}
@@ -0,0 +1,68 @@
1
+ import { Field, Struct } from "o1js";
2
+ import { Option, ProvableOption } from "./Option";
3
+ /**
4
+ * Provable representation of a State Transition, used to
5
+ * normalize state transitions of various value types for
6
+ * the state transition circuit.
7
+ */
8
+ export class ProvableStateTransition extends Struct({
9
+ path: Field,
10
+ // must be applied even if `None`
11
+ from: ProvableOption,
12
+ // must be ignored if `None`
13
+ to: ProvableOption,
14
+ }) {
15
+ static dummy() {
16
+ return new ProvableStateTransition({
17
+ path: Field(0),
18
+ from: Option.none().toProvable(),
19
+ to: Option.none().toProvable(),
20
+ });
21
+ }
22
+ }
23
+ /**
24
+ * Generic state transition that constraints the current method circuit
25
+ * to external state, by providing a state anchor.
26
+ */
27
+ export class StateTransition {
28
+ static from(path, fromValue) {
29
+ return new StateTransition(path, fromValue, Option.none());
30
+ }
31
+ static fromTo(path, fromValue, toValue) {
32
+ return new StateTransition(path, fromValue, toValue);
33
+ }
34
+ constructor(path, fromValue, toValue) {
35
+ this.path = path;
36
+ this.fromValue = fromValue;
37
+ this.toValue = toValue;
38
+ }
39
+ get from() {
40
+ const from = this.fromValue.clone();
41
+ from.forceSome();
42
+ return from;
43
+ }
44
+ get to() {
45
+ return this.toValue.clone();
46
+ }
47
+ /**
48
+ * Converts a StateTransition to a ProvableStateTransition,
49
+ * while enforcing the 'from' property to be 'Some' in all cases.
50
+ */
51
+ toProvable() {
52
+ return new ProvableStateTransition({
53
+ path: this.path,
54
+ from: this.from.toProvable(),
55
+ to: this.to.toProvable(),
56
+ });
57
+ }
58
+ toJSON() {
59
+ return {
60
+ path: this.path.toString(),
61
+ from: this.fromValue.toJSON(),
62
+ to: this.toValue.toJSON(),
63
+ };
64
+ }
65
+ toConstant() {
66
+ return new StateTransition(this.path.toConstant(), this.fromValue.toConstant(), this.toValue.toConstant());
67
+ }
68
+ }