@proto-kit/protocol 0.1.1-develop.1088 → 0.1.1-develop.1309

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 (211) hide show
  1. package/dist/Constants.js +1 -0
  2. package/dist/Constants.js.map +1 -0
  3. package/dist/hooks/AccountStateHook.js +1 -0
  4. package/dist/hooks/AccountStateHook.js.map +1 -0
  5. package/dist/hooks/BlockHeightHook.js +1 -0
  6. package/dist/hooks/BlockHeightHook.js.map +1 -0
  7. package/dist/hooks/LastStateRootBlockHook.js +1 -0
  8. package/dist/hooks/LastStateRootBlockHook.js.map +1 -0
  9. package/dist/hooks/NoopBlockHook.js +1 -0
  10. package/dist/hooks/NoopBlockHook.js.map +1 -0
  11. package/dist/hooks/NoopSettlementHook.d.ts +2 -2
  12. package/dist/hooks/NoopSettlementHook.d.ts.map +1 -1
  13. package/dist/hooks/NoopSettlementHook.js +1 -0
  14. package/dist/hooks/NoopSettlementHook.js.map +1 -0
  15. package/dist/hooks/NoopTransactionHook.js +1 -0
  16. package/dist/hooks/NoopTransactionHook.js.map +1 -0
  17. package/dist/index.d.ts +6 -2
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +7 -2
  20. package/dist/index.js.map +1 -0
  21. package/dist/model/MethodPublicOutput.js +1 -0
  22. package/dist/model/MethodPublicOutput.js.map +1 -0
  23. package/dist/model/Option.js +1 -0
  24. package/dist/model/Option.js.map +1 -0
  25. package/dist/model/Path.js +1 -0
  26. package/dist/model/Path.js.map +1 -0
  27. package/dist/model/RuntimeLike.js +1 -0
  28. package/dist/model/RuntimeLike.js.map +1 -0
  29. package/dist/model/StateTransition.js +1 -0
  30. package/dist/model/StateTransition.js.map +1 -0
  31. package/dist/model/StateTransitionProvableBatch.d.ts +28 -2
  32. package/dist/model/StateTransitionProvableBatch.d.ts.map +1 -1
  33. package/dist/model/StateTransitionProvableBatch.js +9 -3
  34. package/dist/model/StateTransitionProvableBatch.js.map +1 -0
  35. package/dist/model/network/NetworkState.js +1 -0
  36. package/dist/model/network/NetworkState.js.map +1 -0
  37. package/dist/model/transaction/RuntimeTransaction.js +1 -0
  38. package/dist/model/transaction/RuntimeTransaction.js.map +1 -0
  39. package/dist/model/transaction/SignedTransaction.js +1 -0
  40. package/dist/model/transaction/SignedTransaction.js.map +1 -0
  41. package/dist/model/transaction/ValueOption.js +1 -0
  42. package/dist/model/transaction/ValueOption.js.map +1 -0
  43. package/dist/protocol/Protocol.d.ts.map +1 -1
  44. package/dist/protocol/Protocol.js +31 -6
  45. package/dist/protocol/Protocol.js.map +1 -0
  46. package/dist/protocol/ProtocolEnvironment.js +1 -0
  47. package/dist/protocol/ProtocolEnvironment.js.map +1 -0
  48. package/dist/protocol/ProtocolModule.d.ts +1 -1
  49. package/dist/protocol/ProtocolModule.d.ts.map +1 -1
  50. package/dist/protocol/ProtocolModule.js +2 -1
  51. package/dist/protocol/ProtocolModule.js.map +1 -0
  52. package/dist/protocol/ProvableBlockHook.js +1 -0
  53. package/dist/protocol/ProvableBlockHook.js.map +1 -0
  54. package/dist/protocol/ProvableTransactionHook.js +1 -0
  55. package/dist/protocol/ProvableTransactionHook.js.map +1 -0
  56. package/dist/protocol/TransitioningProtocolModule.js +1 -0
  57. package/dist/protocol/TransitioningProtocolModule.js.map +1 -0
  58. package/dist/prover/block/BlockProvable.d.ts +19 -5
  59. package/dist/prover/block/BlockProvable.d.ts.map +1 -1
  60. package/dist/prover/block/BlockProvable.js +5 -2
  61. package/dist/prover/block/BlockProvable.js.map +1 -0
  62. package/dist/prover/block/BlockProver.d.ts +11 -9
  63. package/dist/prover/block/BlockProver.d.ts.map +1 -1
  64. package/dist/prover/block/BlockProver.js +79 -41
  65. package/dist/prover/block/BlockProver.js.map +1 -0
  66. package/dist/prover/block/accummulators/BlockHashMerkleTree.js +1 -0
  67. package/dist/prover/block/accummulators/BlockHashMerkleTree.js.map +1 -0
  68. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.d.ts +2 -2
  69. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js +1 -0
  70. package/dist/prover/block/accummulators/RuntimeVerificationKeyTree.js.map +1 -0
  71. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js +1 -0
  72. package/dist/prover/block/services/RuntimeVerificationKeyRootService.js.map +1 -0
  73. package/dist/prover/statetransition/StateTransitionProvable.d.ts +2 -4
  74. package/dist/prover/statetransition/StateTransitionProvable.d.ts.map +1 -1
  75. package/dist/prover/statetransition/StateTransitionProvable.js +1 -0
  76. package/dist/prover/statetransition/StateTransitionProvable.js.map +1 -0
  77. package/dist/prover/statetransition/StateTransitionProver.d.ts +7 -10
  78. package/dist/prover/statetransition/StateTransitionProver.d.ts.map +1 -1
  79. package/dist/prover/statetransition/StateTransitionProver.js +27 -28
  80. package/dist/prover/statetransition/StateTransitionProver.js.map +1 -0
  81. package/dist/settlement/ContractModule.d.ts +4 -3
  82. package/dist/settlement/ContractModule.d.ts.map +1 -1
  83. package/dist/settlement/ContractModule.js +2 -1
  84. package/dist/settlement/ContractModule.js.map +1 -0
  85. package/dist/settlement/SettlementContractModule.d.ts +25 -12
  86. package/dist/settlement/SettlementContractModule.d.ts.map +1 -1
  87. package/dist/settlement/SettlementContractModule.js +29 -20
  88. package/dist/settlement/SettlementContractModule.js.map +1 -0
  89. package/dist/settlement/contracts/BridgeContract.d.ts +97 -0
  90. package/dist/settlement/contracts/BridgeContract.d.ts.map +1 -0
  91. package/dist/settlement/contracts/BridgeContract.js +164 -0
  92. package/dist/settlement/contracts/BridgeContract.js.map +1 -0
  93. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts +14 -0
  94. package/dist/settlement/contracts/BridgeContractProtocolModule.d.ts.map +1 -0
  95. package/dist/settlement/contracts/BridgeContractProtocolModule.js +30 -0
  96. package/dist/settlement/contracts/BridgeContractProtocolModule.js.map +1 -0
  97. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts +10 -1
  98. package/dist/settlement/contracts/DispatchContractProtocolModule.d.ts.map +1 -1
  99. package/dist/settlement/contracts/DispatchContractProtocolModule.js +24 -2
  100. package/dist/settlement/contracts/DispatchContractProtocolModule.js.map +1 -0
  101. package/dist/settlement/contracts/DispatchSmartContract.d.ts +26 -4
  102. package/dist/settlement/contracts/DispatchSmartContract.d.ts.map +1 -1
  103. package/dist/settlement/contracts/DispatchSmartContract.js +139 -19
  104. package/dist/settlement/contracts/DispatchSmartContract.js.map +1 -0
  105. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts +10 -8
  106. package/dist/settlement/contracts/SettlementContractProtocolModule.d.ts.map +1 -1
  107. package/dist/settlement/contracts/SettlementContractProtocolModule.js +47 -9
  108. package/dist/settlement/contracts/SettlementContractProtocolModule.js.map +1 -0
  109. package/dist/settlement/contracts/SettlementSmartContract.d.ts +98 -17
  110. package/dist/settlement/contracts/SettlementSmartContract.d.ts.map +1 -1
  111. package/dist/settlement/contracts/SettlementSmartContract.js +147 -79
  112. package/dist/settlement/contracts/SettlementSmartContract.js.map +1 -0
  113. package/dist/settlement/contracts/TokenBridgeTree.d.ts +228 -0
  114. package/dist/settlement/contracts/TokenBridgeTree.d.ts.map +1 -0
  115. package/dist/settlement/contracts/TokenBridgeTree.js +60 -0
  116. package/dist/settlement/contracts/TokenBridgeTree.js.map +1 -0
  117. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts +10 -0
  118. package/dist/settlement/contracts/authorizations/ContractAuthorization.d.ts.map +1 -0
  119. package/dist/settlement/contracts/authorizations/ContractAuthorization.js +2 -0
  120. package/dist/settlement/contracts/authorizations/ContractAuthorization.js.map +1 -0
  121. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts +85 -0
  122. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.d.ts.map +1 -0
  123. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js +11 -0
  124. package/dist/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.js.map +1 -0
  125. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts +79 -0
  126. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.d.ts.map +1 -0
  127. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js +11 -0
  128. package/dist/settlement/contracts/authorizations/UpdateMessagesHashAuth.js.map +1 -0
  129. package/dist/settlement/messages/Deposit.d.ts +13 -0
  130. package/dist/settlement/messages/Deposit.d.ts.map +1 -1
  131. package/dist/settlement/messages/Deposit.js +3 -1
  132. package/dist/settlement/messages/Deposit.js.map +1 -0
  133. package/dist/settlement/messages/OutgoingMessageArgument.d.ts +8 -0
  134. package/dist/settlement/messages/OutgoingMessageArgument.d.ts.map +1 -1
  135. package/dist/settlement/messages/OutgoingMessageArgument.js +1 -0
  136. package/dist/settlement/messages/OutgoingMessageArgument.js.map +1 -0
  137. package/dist/settlement/messages/Withdrawal.d.ts +13 -0
  138. package/dist/settlement/messages/Withdrawal.d.ts.map +1 -1
  139. package/dist/settlement/messages/Withdrawal.js +4 -1
  140. package/dist/settlement/messages/Withdrawal.js.map +1 -0
  141. package/dist/settlement/modularity/ProvableSettlementHook.d.ts +5 -3
  142. package/dist/settlement/modularity/ProvableSettlementHook.d.ts.map +1 -1
  143. package/dist/settlement/modularity/ProvableSettlementHook.js +1 -0
  144. package/dist/settlement/modularity/ProvableSettlementHook.js.map +1 -0
  145. package/dist/settlement/modularity/types.d.ts +8 -0
  146. package/dist/settlement/modularity/types.d.ts.map +1 -0
  147. package/dist/settlement/modularity/types.js +2 -0
  148. package/dist/settlement/modularity/types.js.map +1 -0
  149. package/dist/settlement/modules/NetworkStateSettlementModule.js +1 -0
  150. package/dist/settlement/modules/NetworkStateSettlementModule.js.map +1 -0
  151. package/dist/state/State.js +1 -0
  152. package/dist/state/State.js.map +1 -0
  153. package/dist/state/StateMap.js +1 -0
  154. package/dist/state/StateMap.js.map +1 -0
  155. package/dist/state/StateService.js +1 -0
  156. package/dist/state/StateService.js.map +1 -0
  157. package/dist/state/StateServiceProvider.js +1 -0
  158. package/dist/state/StateServiceProvider.js.map +1 -0
  159. package/dist/state/assert/assert.js +1 -0
  160. package/dist/state/assert/assert.js.map +1 -0
  161. package/dist/state/context/RuntimeMethodExecutionContext.js +1 -0
  162. package/dist/state/context/RuntimeMethodExecutionContext.js.map +1 -0
  163. package/dist/state/context/TransitionMethodExecutionContext.js +1 -0
  164. package/dist/state/context/TransitionMethodExecutionContext.js.map +1 -0
  165. package/dist/state/protocol/ProtocolState.js +1 -0
  166. package/dist/state/protocol/ProtocolState.js.map +1 -0
  167. package/dist/utils/MinaPrefixedProvableHashList.js +1 -0
  168. package/dist/utils/MinaPrefixedProvableHashList.js.map +1 -0
  169. package/dist/utils/PrefixedProvableHashList.js +1 -0
  170. package/dist/utils/PrefixedProvableHashList.js.map +1 -0
  171. package/dist/utils/ProvableHashList.js +1 -0
  172. package/dist/utils/ProvableHashList.js.map +1 -0
  173. package/dist/utils/ProvableReductionHashList.js +1 -0
  174. package/dist/utils/ProvableReductionHashList.js.map +1 -0
  175. package/dist/utils/StateTransitionReductionList.js +1 -0
  176. package/dist/utils/StateTransitionReductionList.js.map +1 -0
  177. package/dist/utils/utils.js +1 -0
  178. package/dist/utils/utils.js.map +1 -0
  179. package/jest.config.cjs +12 -1
  180. package/package.json +4 -4
  181. package/src/hooks/NoopSettlementHook.ts +2 -2
  182. package/src/index.ts +6 -2
  183. package/src/model/StateTransitionProvableBatch.ts +24 -4
  184. package/src/protocol/Protocol.ts +36 -7
  185. package/src/protocol/ProtocolModule.ts +1 -1
  186. package/src/prover/block/BlockProvable.ts +9 -9
  187. package/src/prover/block/BlockProver.ts +94 -58
  188. package/src/prover/statetransition/StateTransitionProvable.ts +5 -8
  189. package/src/prover/statetransition/StateTransitionProver.ts +46 -40
  190. package/src/settlement/ContractModule.ts +17 -10
  191. package/src/settlement/SettlementContractModule.ts +54 -41
  192. package/src/settlement/contracts/BridgeContract.ts +237 -0
  193. package/src/settlement/contracts/BridgeContractProtocolModule.ts +43 -0
  194. package/src/settlement/contracts/DispatchContractProtocolModule.ts +37 -3
  195. package/src/settlement/contracts/DispatchSmartContract.ts +213 -23
  196. package/src/settlement/contracts/SettlementContractProtocolModule.ts +61 -20
  197. package/src/settlement/contracts/SettlementSmartContract.ts +261 -107
  198. package/src/settlement/contracts/TokenBridgeTree.ts +73 -0
  199. package/src/settlement/contracts/authorizations/ContractAuthorization.ts +11 -0
  200. package/src/settlement/contracts/authorizations/TokenBridgeDeploymentAuth.ts +16 -0
  201. package/src/settlement/contracts/authorizations/UpdateMessagesHashAuth.ts +16 -0
  202. package/src/settlement/messages/Deposit.ts +2 -1
  203. package/src/settlement/messages/Withdrawal.ts +3 -1
  204. package/src/settlement/modularity/ProvableSettlementHook.ts +6 -3
  205. package/src/settlement/modularity/types.ts +22 -0
  206. package/test/BlockProver.test.ts +2 -1
  207. package/test/TestingProtocol.ts +17 -12
  208. package/test/compiling/types.ts +28 -0
  209. package/test/modularity/types.ts +35 -0
  210. package/src/prover/statetransition/StateTransitionWitnessProvider.ts +0 -23
  211. package/src/prover/statetransition/StateTransitionWitnessProviderReference.ts +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeVerificationKeyRootService.js","sourceRoot":"","sources":["../../../../src/prover/block/services/RuntimeVerificationKeyRootService.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAMlD,WAAM,iCAAiC,GAAvC,MAAM,iCAAiC;IAGrC,OAAO,CAAC,IAAY;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,EAAE;YACnC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SACxC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;CACF,CAAA;AAbY,iCAAiC;IAF7C,UAAU,EAAE;IACZ,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC;GACrB,iCAAiC,CAa7C"}
@@ -1,7 +1,6 @@
1
1
  import { Proof } from "o1js";
2
- import { WithZkProgrammable } from "@proto-kit/common";
2
+ import { WithZkProgrammable, CompilableModule } from "@proto-kit/common";
3
3
  import { StateTransitionProvableBatch } from "../../model/StateTransitionProvableBatch";
4
- import { StateTransitionWitnessProviderReference } from "./StateTransitionWitnessProviderReference";
5
4
  declare const StateTransitionProverPublicInput_base: (new (value: {
6
5
  stateTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
7
6
  protocolTransitionsHash: import("o1js/dist/node/lib/provable/field").Field;
@@ -165,8 +164,7 @@ declare const StateTransitionProverPublicOutput_base: (new (value: {
165
164
  export declare class StateTransitionProverPublicOutput extends StateTransitionProverPublicOutput_base {
166
165
  }
167
166
  export type StateTransitionProof = Proof<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>;
168
- export interface StateTransitionProvable extends WithZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput> {
169
- witnessProviderReference: StateTransitionWitnessProviderReference;
167
+ export interface StateTransitionProvable extends WithZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>, CompilableModule {
170
168
  runBatch: (publicInput: StateTransitionProverPublicInput, batch: StateTransitionProvableBatch) => Promise<StateTransitionProverPublicOutput>;
171
169
  merge: (publicInput: StateTransitionProverPublicInput, proof1: StateTransitionProof, proof2: StateTransitionProof) => Promise<StateTransitionProverPublicOutput>;
172
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StateTransitionProvable.d.ts","sourceRoot":"","sources":["../../../src/prover/statetransition/StateTransitionProvable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,EAAU,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAExF,OAAO,EAAE,uCAAuC,EAAE,MAAM,2CAA2C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpG,qBAAa,gCAAiC,SAAQ,qCAKpD;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,iCAAkC,SAAQ,sCAKrD;CAAG;AAEL,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC,gCAAgC,EAChC,iCAAiC,CAClC,CAAC;AAEF,MAAM,WAAW,uBACf,SAAQ,kBAAkB,CACxB,gCAAgC,EAChC,iCAAiC,CAClC;IACD,wBAAwB,EAAE,uCAAuC,CAAC;IAElE,QAAQ,EAAE,CACR,WAAW,EAAE,gCAAgC,EAC7C,KAAK,EAAE,4BAA4B,KAChC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAEhD,KAAK,EAAE,CACL,WAAW,EAAE,gCAAgC,EAC7C,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,oBAAoB,KACzB,OAAO,CAAC,iCAAiC,CAAC,CAAC;CACjD"}
1
+ {"version":3,"file":"StateTransitionProvable.d.ts","sourceRoot":"","sources":["../../../src/prover/statetransition/StateTransitionProvable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,EAAU,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAExF,qBAAa,gCAAiC,SAAQ,qCAKpD;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,iCAAkC,SAAQ,sCAKrD;CAAG;AAEL,MAAM,MAAM,oBAAoB,GAAG,KAAK,CACtC,gCAAgC,EAChC,iCAAiC,CAClC,CAAC;AAEF,MAAM,WAAW,uBACf,SAAQ,kBAAkB,CACtB,gCAAgC,EAChC,iCAAiC,CAClC,EACD,gBAAgB;IAClB,QAAQ,EAAE,CACR,WAAW,EAAE,gCAAgC,EAC7C,KAAK,EAAE,4BAA4B,KAChC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IAEhD,KAAK,EAAE,CACL,WAAW,EAAE,gCAAgC,EAC7C,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,oBAAoB,KACzB,OAAO,CAAC,iCAAiC,CAAC,CAAC;CACjD"}
@@ -13,3 +13,4 @@ export class StateTransitionProverPublicOutput extends Struct({
13
13
  protocolStateRoot: Field,
14
14
  }) {
15
15
  }
16
+ //# sourceMappingURL=StateTransitionProvable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransitionProvable.js","sourceRoot":"","sources":["../../../src/prover/statetransition/StateTransitionProvable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAS,MAAM,EAAE,MAAM,MAAM,CAAC;AAK5C,MAAM,OAAO,gCAAiC,SAAQ,MAAM,CAAC;IAC3D,oBAAoB,EAAE,KAAK;IAC3B,uBAAuB,EAAE,KAAK;IAC9B,SAAS,EAAE,KAAK;IAChB,iBAAiB,EAAE,KAAK;CACzB,CAAC;CAAG;AAEL,MAAM,OAAO,iCAAkC,SAAQ,MAAM,CAAC;IAC5D,oBAAoB,EAAE,KAAK;IAC3B,uBAAuB,EAAE,KAAK;IAC9B,SAAS,EAAE,KAAK;IAChB,iBAAiB,EAAE,KAAK;CACzB,CAAC;CAAG"}
@@ -1,4 +1,4 @@
1
- import { AreProofsEnabled, PlainZkProgram, ZkProgrammable } from "@proto-kit/common";
1
+ import { AreProofsEnabled, PlainZkProgram, RollupMerkleTreeWitness, ZkProgrammable, CompilableModule, type ArtifactRecord, type CompileRegistry } from "@proto-kit/common";
2
2
  import { Field } from "o1js";
3
3
  import { ProvableStateTransition } from "../../model/StateTransition";
4
4
  import { ProvableStateTransitionType, StateTransitionProvableBatch } from "../../model/StateTransitionProvableBatch";
@@ -6,7 +6,6 @@ import { StateTransitionProverType } from "../../protocol/Protocol";
6
6
  import { ProtocolModule } from "../../protocol/ProtocolModule";
7
7
  import { ProvableHashList } from "../../utils/ProvableHashList";
8
8
  import { StateTransitionProof, StateTransitionProvable, StateTransitionProverPublicInput, StateTransitionProverPublicOutput } from "./StateTransitionProvable";
9
- import { StateTransitionWitnessProviderReference } from "./StateTransitionWitnessProviderReference";
10
9
  interface StateTransitionProverExecutionState {
11
10
  stateRoot: Field;
12
11
  protocolStateRoot: Field;
@@ -19,11 +18,9 @@ interface StateTransitionProverExecutionState {
19
18
  */
20
19
  export declare class StateTransitionProverProgrammable extends ZkProgrammable<StateTransitionProverPublicInput, StateTransitionProverPublicOutput> {
21
20
  private readonly stateTransitionProver;
22
- readonly witnessProviderReference: StateTransitionWitnessProviderReference;
23
- constructor(stateTransitionProver: StateTransitionProver, witnessProviderReference: StateTransitionWitnessProviderReference);
24
- get appChain(): AreProofsEnabled | undefined;
21
+ constructor(stateTransitionProver: StateTransitionProver);
22
+ get areProofsEnabled(): AreProofsEnabled | undefined;
25
23
  zkProgramFactory(): PlainZkProgram<StateTransitionProverPublicInput, StateTransitionProverPublicOutput>[];
26
- private get witnessProvider();
27
24
  /**
28
25
  * Applies the state transitions to the current stateRoot
29
26
  * and returns the new prover state
@@ -33,17 +30,17 @@ export declare class StateTransitionProverProgrammable extends ZkProgrammable<St
33
30
  * Applies a single state transition to the given state
34
31
  * and mutates it in place
35
32
  */
36
- applyTransition(state: StateTransitionProverExecutionState, transition: ProvableStateTransition, type: ProvableStateTransitionType, index?: number): void;
33
+ applyTransition(state: StateTransitionProverExecutionState, transition: ProvableStateTransition, type: ProvableStateTransitionType, merkleWitness: RollupMerkleTreeWitness, index?: number): void;
37
34
  /**
38
35
  * Applies a whole batch of StateTransitions at once
39
36
  */
40
37
  runBatch(publicInput: StateTransitionProverPublicInput, batch: StateTransitionProvableBatch): Promise<StateTransitionProverPublicOutput>;
41
38
  merge(publicInput: StateTransitionProverPublicInput, proof1: StateTransitionProof, proof2: StateTransitionProof): Promise<StateTransitionProverPublicOutput>;
42
39
  }
43
- export declare class StateTransitionProver extends ProtocolModule implements StateTransitionProvable, StateTransitionProverType {
44
- readonly witnessProviderReference: StateTransitionWitnessProviderReference;
40
+ export declare class StateTransitionProver extends ProtocolModule implements StateTransitionProvable, StateTransitionProverType, CompilableModule {
45
41
  zkProgrammable: StateTransitionProverProgrammable;
46
- constructor(witnessProviderReference: StateTransitionWitnessProviderReference);
42
+ constructor();
43
+ compile(registry: CompileRegistry): Promise<void | ArtifactRecord>;
47
44
  runBatch(publicInput: StateTransitionProverPublicInput, batch: StateTransitionProvableBatch): Promise<StateTransitionProverPublicOutput>;
48
45
  merge(publicInput: StateTransitionProverPublicInput, proof1: StateTransitionProof, proof2: StateTransitionProof): Promise<StateTransitionProverPublicOutput>;
49
46
  }
@@ -1 +1 @@
1
- {"version":3,"file":"StateTransitionProver.d.ts","sourceRoot":"","sources":["../../../src/prover/statetransition/StateTransitionProver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,cAAc,EAGd,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAkC,MAAM,MAAM,CAAC;AAI7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAEL,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,uCAAuC,EAAE,MAAM,2CAA2C,CAAC;AAepG,UAAU,mCAAmC;IAC3C,SAAS,EAAE,KAAK,CAAC;IACjB,iBAAiB,EAAE,KAAK,CAAC;IACzB,mBAAmB,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IAC/D,sBAAsB,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;CACnE;AAOD;;;GAGG;AACH,qBAAa,iCAAkC,SAAQ,cAAc,CACnE,gCAAgC,EAChC,iCAAiC,CAClC;IAEG,OAAO,CAAC,QAAQ,CAAC,qBAAqB;aACtB,wBAAwB,EAAE,uCAAuC;gBADhE,qBAAqB,EAAE,qBAAqB,EAC7C,wBAAwB,EAAE,uCAAuC;IAKnF,IAAW,QAAQ,IAAI,gBAAgB,GAAG,SAAS,CAElD;IAEM,gBAAgB,IAAI,cAAc,CACvC,gCAAgC,EAChC,iCAAiC,CAClC,EAAE;IAuDH,OAAO,KAAK,eAAe,GAM1B;IAED;;;OAGG;IACI,gBAAgB,CACrB,SAAS,EAAE,KAAK,EAChB,iBAAiB,EAAE,KAAK,EACxB,6BAA6B,EAAE,KAAK,EACpC,gCAAgC,EAAE,KAAK,EACvC,eAAe,EAAE,4BAA4B,GAC5C,mCAAmC;IA6BtC;;;OAGG;IACI,eAAe,CACpB,KAAK,EAAE,mCAAmC,EAC1C,UAAU,EAAE,uBAAuB,EACnC,IAAI,EAAE,2BAA2B,EACjC,KAAK,SAAI;IAiDX;;OAEG;IAEU,QAAQ,CACnB,WAAW,EAAE,gCAAgC,EAC7C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,iCAAiC,CAAC;IAkBhC,KAAK,CAChB,WAAW,EAAE,gCAAgC,EAC7C,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,iCAAiC,CAAC;CAqE9C;AAED,qBACa,qBACX,SAAQ,cACR,YAAW,uBAAuB,EAAE,yBAAyB;aAM3C,wBAAwB,EAAE,uCAAuC;IAJ5E,cAAc,EAAE,iCAAiC,CAAC;gBAIvC,wBAAwB,EAAE,uCAAuC;IAS5E,QAAQ,CACb,WAAW,EAAE,gCAAgC,EAC7C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,iCAAiC,CAAC;IAItC,KAAK,CACV,WAAW,EAAE,gCAAgC,EAC7C,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,iCAAiC,CAAC;CAG9C"}
1
+ {"version":3,"file":"StateTransitionProver.d.ts","sourceRoot":"","sources":["../../../src/prover/statetransition/StateTransitionProver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,cAAc,EAEd,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAkC,MAAM,MAAM,CAAC;AAI7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAEL,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,2BAA2B,CAAC;AA0BnC,UAAU,mCAAmC;IAC3C,SAAS,EAAE,KAAK,CAAC;IACjB,iBAAiB,EAAE,KAAK,CAAC;IACzB,mBAAmB,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;IAC/D,sBAAsB,EAAE,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;CACnE;AAOD;;;GAGG;AACH,qBAAa,iCAAkC,SAAQ,cAAc,CACnE,gCAAgC,EAChC,iCAAiC,CAClC;IAEG,OAAO,CAAC,QAAQ,CAAC,qBAAqB;gBAArB,qBAAqB,EAAE,qBAAqB;IAK/D,IAAW,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAE1D;IAEM,gBAAgB,IAAI,cAAc,CACvC,gCAAgC,EAChC,iCAAiC,CAClC,EAAE;IAwDH;;;OAGG;IACI,gBAAgB,CACrB,SAAS,EAAE,KAAK,EAChB,iBAAiB,EAAE,KAAK,EACxB,6BAA6B,EAAE,KAAK,EACpC,gCAAgC,EAAE,KAAK,EACvC,eAAe,EAAE,4BAA4B,GAC5C,mCAAmC;IAoCtC;;;OAGG;IACI,eAAe,CACpB,KAAK,EAAE,mCAAmC,EAC1C,UAAU,EAAE,uBAAuB,EACnC,IAAI,EAAE,2BAA2B,EACjC,aAAa,EAAE,uBAAuB,EACtC,KAAK,SAAI;IAwCX;;OAEG;IAEU,QAAQ,CACnB,WAAW,EAAE,gCAAgC,EAC7C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,iCAAiC,CAAC;IAkBhC,KAAK,CAChB,WAAW,EAAE,gCAAgC,EAC7C,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,iCAAiC,CAAC;CAqE9C;AAED,qBACa,qBACX,SAAQ,cACR,YACE,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB;IAEX,cAAc,EAAE,iCAAiC,CAAC;;IAO5C,OAAO,CAClB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,GAAG,cAAc,CAAC;IAI1B,QAAQ,CACb,WAAW,EAAE,gCAAgC,EAC7C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,iCAAiC,CAAC;IAItC,KAAK,CACV,WAAW,EAAE,gCAAgC,EAC7C,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,iCAAiC,CAAC;CAG9C"}
@@ -7,7 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
- import { provableMethod, RollupMerkleTreeWitness, ZkProgrammable, } from "@proto-kit/common";
10
+ import { provableMethod, ZkProgrammable, } from "@proto-kit/common";
11
11
  import { Field, Provable, SelfProof, ZkProgram } from "o1js";
12
12
  import { injectable } from "tsyringe";
13
13
  import { constants } from "../../Constants";
@@ -16,10 +16,15 @@ import { StateTransitionProvableBatch, } from "../../model/StateTransitionProvab
16
16
  import { ProtocolModule } from "../../protocol/ProtocolModule";
17
17
  import { DefaultProvableHashList, } from "../../utils/ProvableHashList";
18
18
  import { StateTransitionProverPublicInput, StateTransitionProverPublicOutput, } from "./StateTransitionProvable";
19
- import { StateTransitionWitnessProviderReference } from "./StateTransitionWitnessProviderReference";
20
19
  const errors = {
21
20
  propertyNotMatching: (property, step) => `${property} not matching ${step}`,
22
- merkleWitnessNotCorrect: (index, type) => `MerkleWitness not valid for StateTransition (${index}, type ${type})`,
21
+ merkleWitnessNotCorrect: (index, type) => {
22
+ let s = `MerkleWitness not valid for StateTransition (${index}, type unknown)`;
23
+ Provable.asProver(() => {
24
+ s = s.replace("unknown", type.isNormal().toBoolean() ? "normal" : "protocol");
25
+ });
26
+ return s;
27
+ },
23
28
  noWitnessProviderSet: () => new Error("WitnessProvider not set, set it before you use StateTransitionProvider"),
24
29
  };
25
30
  const StateTransitionSelfProofClass = (SelfProof);
@@ -28,13 +33,12 @@ const StateTransitionSelfProofClass = (SelfProof);
28
33
  * transitions and checks and updates their merkle-tree entries
29
34
  */
30
35
  export class StateTransitionProverProgrammable extends ZkProgrammable {
31
- constructor(stateTransitionProver, witnessProviderReference) {
36
+ constructor(stateTransitionProver) {
32
37
  super();
33
38
  this.stateTransitionProver = stateTransitionProver;
34
- this.witnessProviderReference = witnessProviderReference;
35
39
  }
36
- get appChain() {
37
- return this.stateTransitionProver.appChain;
40
+ get areProofsEnabled() {
41
+ return this.stateTransitionProver.areProofsEnabled;
38
42
  }
39
43
  zkProgramFactory() {
40
44
  const instance = this;
@@ -43,7 +47,7 @@ export class StateTransitionProverProgrammable extends ZkProgrammable {
43
47
  publicInput: StateTransitionProverPublicInput,
44
48
  publicOutput: StateTransitionProverPublicOutput,
45
49
  methods: {
46
- proveBatch: {
50
+ runBatch: {
47
51
  privateInputs: [StateTransitionProvableBatch],
48
52
  async method(publicInput, batch) {
49
53
  return await instance.runBatch(publicInput, batch);
@@ -61,12 +65,13 @@ export class StateTransitionProverProgrammable extends ZkProgrammable {
61
65
  },
62
66
  });
63
67
  const methods = {
64
- proveBatch: program.proveBatch.bind(program),
68
+ runBatch: program.runBatch.bind(program),
65
69
  merge: program.merge.bind(program),
66
70
  };
67
71
  const SelfProofClass = ZkProgram.Proof(program);
68
72
  return [
69
73
  {
74
+ name: program.name,
70
75
  compile: program.compile.bind(program),
71
76
  verify: program.verify.bind(program),
72
77
  analyzeMethods: program.analyzeMethods.bind(program),
@@ -75,13 +80,6 @@ export class StateTransitionProverProgrammable extends ZkProgrammable {
75
80
  },
76
81
  ];
77
82
  }
78
- get witnessProvider() {
79
- const provider = this.witnessProviderReference.getWitnessProvider();
80
- if (provider === undefined) {
81
- throw errors.noWitnessProviderSet();
82
- }
83
- return provider;
84
- }
85
83
  /**
86
84
  * Applies the state transitions to the current stateRoot
87
85
  * and returns the new prover state
@@ -95,8 +93,9 @@ export class StateTransitionProverProgrammable extends ZkProgrammable {
95
93
  };
96
94
  const transitions = transitionBatch.batch;
97
95
  const types = transitionBatch.transitionTypes;
96
+ const merkleWitness = transitionBatch.merkleWitnesses;
98
97
  for (let index = 0; index < constants.stateTransitionProverBatchSize; index++) {
99
- this.applyTransition(state, transitions[index], types[index], index);
98
+ this.applyTransition(state, transitions[index], types[index], merkleWitness[index], index);
100
99
  }
101
100
  return state;
102
101
  }
@@ -104,13 +103,12 @@ export class StateTransitionProverProgrammable extends ZkProgrammable {
104
103
  * Applies a single state transition to the given state
105
104
  * and mutates it in place
106
105
  */
107
- applyTransition(state, transition, type, index = 0) {
108
- const witness = Provable.witness(RollupMerkleTreeWitness, () => this.witnessProvider.getWitness(transition.path));
109
- const membershipValid = witness.checkMembership(state.stateRoot, transition.path, transition.from.value);
106
+ applyTransition(state, transition, type, merkleWitness, index = 0) {
107
+ const membershipValid = merkleWitness.checkMembership(state.stateRoot, transition.path, transition.from.value);
110
108
  membershipValid
111
109
  .or(transition.from.isSome.not())
112
- .assertTrue(errors.merkleWitnessNotCorrect(index, type.isNormal().toBoolean() ? "normal" : "protocol"));
113
- const newRoot = witness.calculateRoot(transition.to.value);
110
+ .assertTrue(errors.merkleWitnessNotCorrect(index, type));
111
+ const newRoot = merkleWitness.calculateRoot(transition.to.value);
114
112
  state.stateRoot = Provable.if(transition.to.isSome, newRoot, state.stateRoot);
115
113
  // Only update protocol state root if ST is also of type protocol
116
114
  // Since protocol STs are all at the start of the batch, this works
@@ -168,12 +166,12 @@ __decorate([
168
166
  __metadata("design:returntype", Promise)
169
167
  ], StateTransitionProverProgrammable.prototype, "merge", null);
170
168
  export let StateTransitionProver = class StateTransitionProver extends ProtocolModule {
171
- constructor(
172
- // Injected
173
- witnessProviderReference) {
169
+ constructor() {
174
170
  super();
175
- this.witnessProviderReference = witnessProviderReference;
176
- this.zkProgrammable = new StateTransitionProverProgrammable(this, witnessProviderReference);
171
+ this.zkProgrammable = new StateTransitionProverProgrammable(this);
172
+ }
173
+ async compile(registry) {
174
+ return await this.zkProgrammable.compile(registry);
177
175
  }
178
176
  runBatch(publicInput, batch) {
179
177
  return this.zkProgrammable.runBatch(publicInput, batch);
@@ -184,5 +182,6 @@ export let StateTransitionProver = class StateTransitionProver extends ProtocolM
184
182
  };
185
183
  StateTransitionProver = __decorate([
186
184
  injectable(),
187
- __metadata("design:paramtypes", [StateTransitionWitnessProviderReference])
185
+ __metadata("design:paramtypes", [])
188
186
  ], StateTransitionProver);
187
+ //# sourceMappingURL=StateTransitionProver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StateTransitionProver.js","sourceRoot":"","sources":["../../../src/prover/statetransition/StateTransitionProver.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ConfigurableModule, NoConfig, TypedClass } from "@proto-kit/common";
1
+ import { ArtifactRecord, type CompilableModule, CompileRegistry, ConfigurableModule, NoConfig, TypedClass } from "@proto-kit/common";
2
2
  import { SmartContract } from "o1js";
3
3
  export type SmartContractClassFromInterface<Type> = typeof SmartContract & TypedClass<Type>;
4
4
  /**
@@ -9,7 +9,8 @@ export type SmartContractClassFromInterface<Type> = typeof SmartContract & Typed
9
9
  * of SmartContract and implements a certain interface as specified by the
10
10
  * ContractType generic.
11
11
  */
12
- export declare abstract class ContractModule<ContractType, Arguments = undefined, Config = NoConfig> extends ConfigurableModule<Config> {
13
- abstract contractFactory(args: Arguments): SmartContractClassFromInterface<ContractType>;
12
+ export declare abstract class ContractModule<ContractType, Config = NoConfig> extends ConfigurableModule<Config> implements CompilableModule {
13
+ abstract contractFactory(): SmartContractClassFromInterface<ContractType>;
14
+ abstract compile(registry: CompileRegistry): Promise<ArtifactRecord | undefined>;
14
15
  }
15
16
  //# sourceMappingURL=ContractModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContractModule.d.ts","sourceRoot":"","sources":["../../src/settlement/ContractModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,MAAM,+BAA+B,CAAC,IAAI,IAAI,OAAO,aAAa,GACtE,UAAU,CAAC,IAAI,CAAC,CAAC;AAEnB;;;;;;;GAOG;AACH,8BAAsB,cAAc,CAClC,YAAY,EAEZ,SAAS,GAAG,SAAS,EACrB,MAAM,GAAG,QAAQ,CACjB,SAAQ,kBAAkB,CAAC,MAAM,CAAC;aAClB,eAAe,CAC7B,IAAI,EAAE,SAAS,GACd,+BAA+B,CAAC,YAAY,CAAC;CACjD"}
1
+ {"version":3,"file":"ContractModule.d.ts","sourceRoot":"","sources":["../../src/settlement/ContractModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,gBAAgB,EACrB,eAAe,EACf,kBAAkB,EAClB,QAAQ,EACR,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,MAAM,+BAA+B,CAAC,IAAI,IAAI,OAAO,aAAa,GACtE,UAAU,CAAC,IAAI,CAAC,CAAC;AAEnB;;;;;;;GAOG;AACH,8BAAsB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAClE,SAAQ,kBAAkB,CAAC,MAAM,CACjC,YAAW,gBAAgB;aAEX,eAAe,IAAI,+BAA+B,CAAC,YAAY,CAAC;aAEhE,OAAO,CACrB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CACvC"}
@@ -1,4 +1,4 @@
1
- import { ConfigurableModule } from "@proto-kit/common";
1
+ import { ConfigurableModule, } from "@proto-kit/common";
2
2
  /**
3
3
  * This module type is used to define a contract module that can be used to
4
4
  * construct and inject smart contract instances.
@@ -9,3 +9,4 @@ import { ConfigurableModule } from "@proto-kit/common";
9
9
  */
10
10
  export class ContractModule extends ConfigurableModule {
11
11
  }
12
+ //# sourceMappingURL=ContractModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContractModule.js","sourceRoot":"","sources":["../../src/settlement/ContractModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,GAGnB,MAAM,mBAAmB,CAAC;AAM3B;;;;;;;GAOG;AACH,MAAM,OAAgB,cACpB,SAAQ,kBAA0B;CAQnC"}
@@ -1,34 +1,46 @@
1
1
  import { AreProofsEnabled, ChildContainerProvider, ModuleContainer, ModulesRecord, TypedClass } from "@proto-kit/common";
2
- import { PublicKey, SmartContract } from "o1js";
2
+ import { Field, PublicKey, SmartContract } from "o1js";
3
3
  import { ProtocolEnvironment } from "../protocol/ProtocolEnvironment";
4
4
  import { ProtocolModule } from "../protocol/ProtocolModule";
5
- import { ContractModule, SmartContractClassFromInterface } from "./ContractModule";
5
+ import { ContractModule } from "./ContractModule";
6
6
  import { DispatchContractProtocolModule } from "./contracts/DispatchContractProtocolModule";
7
7
  import { DispatchContractType } from "./contracts/DispatchSmartContract";
8
8
  import { SettlementContractConfig, SettlementContractProtocolModule } from "./contracts/SettlementContractProtocolModule";
9
9
  import { SettlementContractType } from "./contracts/SettlementSmartContract";
10
- export type SettlementModulesRecord = ModulesRecord<TypedClass<ContractModule<unknown, unknown, unknown>>>;
10
+ import { BridgeContractType } from "./contracts/BridgeContract";
11
+ import { BridgeContractConfig, BridgeContractProtocolModule } from "./contracts/BridgeContractProtocolModule";
12
+ import { GetContracts } from "./modularity/types";
13
+ export type SettlementModulesRecord = ModulesRecord<TypedClass<ContractModule<unknown, unknown>>>;
11
14
  export type MandatorySettlementModulesRecord = {
12
- SettlementContract: TypedClass<ContractModule<SettlementContractType, SmartContractClassFromInterface<DispatchContractType>, SettlementContractConfig>>;
13
- DispatchContract: TypedClass<ContractModule<DispatchContractType, unknown, unknown>>;
15
+ SettlementContract: TypedClass<ContractModule<SettlementContractType, SettlementContractConfig>>;
16
+ DispatchContract: TypedClass<ContractModule<DispatchContractType, unknown>>;
17
+ BridgeContract: TypedClass<ContractModule<BridgeContractType, BridgeContractConfig>>;
14
18
  };
15
19
  export declare class SettlementContractModule<SettlementModules extends SettlementModulesRecord & MandatorySettlementModulesRecord> extends ModuleContainer<SettlementModules> implements ProtocolModule<unknown> {
16
20
  constructor(definition: {
17
21
  modules: SettlementModules;
18
22
  });
19
23
  static from<SettlementModules extends SettlementModulesRecord & MandatorySettlementModulesRecord>(modules: SettlementModules): TypedClass<SettlementContractModule<SettlementModules>>;
24
+ static mandatoryModules(): {
25
+ readonly SettlementContract: typeof SettlementContractProtocolModule;
26
+ readonly DispatchContract: typeof DispatchContractProtocolModule;
27
+ readonly BridgeContract: typeof BridgeContractProtocolModule;
28
+ };
20
29
  static fromDefaults(): TypedClass<SettlementContractModule<{
21
- SettlementContract: typeof SettlementContractProtocolModule;
22
- DispatchContract: typeof DispatchContractProtocolModule;
30
+ readonly SettlementContract: typeof SettlementContractProtocolModule;
31
+ readonly DispatchContract: typeof DispatchContractProtocolModule;
32
+ readonly BridgeContract: typeof BridgeContractProtocolModule;
23
33
  }>>;
34
+ static with<AdditionalModules extends SettlementModulesRecord>(additionalModules: AdditionalModules): TypedClass<SettlementContractModule<{
35
+ readonly SettlementContract: typeof SettlementContractProtocolModule;
36
+ readonly DispatchContract: typeof DispatchContractProtocolModule;
37
+ readonly BridgeContract: typeof BridgeContractProtocolModule;
38
+ } & AdditionalModules>>;
24
39
  protocol?: ProtocolEnvironment;
25
- get appChain(): AreProofsEnabled | undefined;
40
+ get areProofsEnabled(): AreProofsEnabled | undefined;
26
41
  create(childContainerProvider: ChildContainerProvider): void;
27
42
  start(): Promise<void>;
28
- getContractClasses(): {
29
- settlement: SmartContractClassFromInterface<SettlementContractType>;
30
- dispatch: SmartContractClassFromInterface<DispatchContractType>;
31
- };
43
+ getContractClasses(): GetContracts<SettlementModules>;
32
44
  createContracts(addresses: {
33
45
  settlement: PublicKey;
34
46
  dispatch: PublicKey;
@@ -36,5 +48,6 @@ export declare class SettlementContractModule<SettlementModules extends Settleme
36
48
  settlement: SettlementContractType & SmartContract;
37
49
  dispatch: DispatchContractType & SmartContract;
38
50
  };
51
+ createBridgeContract(address: PublicKey, tokenId?: Field): BridgeContractType & SmartContract;
39
52
  }
40
53
  //# sourceMappingURL=SettlementContractModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SettlementContractModule.d.ts","sourceRoot":"","sources":["../../src/settlement/SettlementContractModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,UAAU,EAEX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAGhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EACL,cAAc,EACd,+BAA+B,EAChC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EACjC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,MAAM,uBAAuB,GAAG,aAAa,CACjD,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CACtD,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,kBAAkB,EAAE,UAAU,CAC5B,cAAc,CACZ,sBAAsB,EACtB,+BAA+B,CAAC,oBAAoB,CAAC,EACrD,wBAAwB,CACzB,CACF,CAAC;IACF,gBAAgB,EAAE,UAAU,CAC1B,cAAc,CAAC,oBAAoB,EAAE,OAAO,EAAE,OAAO,CAAC,CACvD,CAAC;CACH,CAAC;AAEF,qBACa,wBAAwB,CACjC,iBAAiB,SAAS,uBAAuB,GAC/C,gCAAgC,CAEpC,SAAQ,eAAe,CAAC,iBAAiB,CACzC,YAAW,cAAc,CAAC,OAAO,CAAC;gBAEf,UAAU,EAAE;QAAE,OAAO,EAAE,iBAAiB,CAAA;KAAE;WAI/C,IAAI,CAChB,iBAAiB,SAAS,uBAAuB,GAC/C,gCAAgC,EAElC,OAAO,EAAE,iBAAiB,GACzB,UAAU,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;WAQ5C,YAAY;;;;IAQnB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAEtC,IAAW,QAAQ,IAAI,gBAAgB,GAAG,SAAS,CAElD;IAGM,MAAM,CAAC,sBAAsB,EAAE,sBAAsB;IAI/C,KAAK;IAIX,kBAAkB,IAAI;QAC3B,UAAU,EAAE,+BAA+B,CAAC,sBAAsB,CAAC,CAAC;QACpE,QAAQ,EAAE,+BAA+B,CAAC,oBAAoB,CAAC,CAAC;KACjE;IAkBM,eAAe,CAAC,SAAS,EAAE;QAChC,UAAU,EAAE,SAAS,CAAC;QACtB,QAAQ,EAAE,SAAS,CAAC;KACrB,GAAG;QACF,UAAU,EAAE,sBAAsB,GAAG,aAAa,CAAC;QACnD,QAAQ,EAAE,oBAAoB,GAAG,aAAa,CAAC;KAChD;CAaF"}
1
+ {"version":3,"file":"SettlementContractModule.d.ts","sourceRoot":"","sources":["../../src/settlement/SettlementContractModule.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAGvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EACL,wBAAwB,EACxB,gCAAgC,EACjC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,uBAAuB,GAAG,aAAa,CACjD,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAC7C,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,kBAAkB,EAAE,UAAU,CAC5B,cAAc,CAAC,sBAAsB,EAAE,wBAAwB,CAAC,CACjE,CAAC;IACF,gBAAgB,EAAE,UAAU,CAAC,cAAc,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5E,cAAc,EAAE,UAAU,CACxB,cAAc,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CACzD,CAAC;CACH,CAAC;AAEF,qBACa,wBAAwB,CACjC,iBAAiB,SAAS,uBAAuB,GAC/C,gCAAgC,CAEpC,SAAQ,eAAe,CAAC,iBAAiB,CACzC,YAAW,cAAc,CAAC,OAAO,CAAC;gBAEf,UAAU,EAAE;QAAE,OAAO,EAAE,iBAAiB,CAAA;KAAE;WAI/C,IAAI,CAChB,iBAAiB,SAAS,uBAAuB,GAC/C,gCAAgC,EAElC,OAAO,EAAE,iBAAiB,GACzB,UAAU,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;WAQ5C,gBAAgB;;;;;WAQhB,YAAY;;;;;WAMZ,IAAI,CAAC,iBAAiB,SAAS,uBAAuB,EAClE,iBAAiB,EAAE,iBAAiB;;;;;IAS/B,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAEtC,IAAW,gBAAgB,IAAI,gBAAgB,GAAG,SAAS,CAE1D;IAGM,MAAM,CAAC,sBAAsB,EAAE,sBAAsB;IAI/C,KAAK;IAIX,kBAAkB,IAAI,YAAY,CAAC,iBAAiB,CAAC;IAUrD,eAAe,CAAC,SAAS,EAAE;QAChC,UAAU,EAAE,SAAS,CAAC;QACtB,QAAQ,EAAE,SAAS,CAAC;KACrB,GAAG;QACF,UAAU,EAAE,sBAAsB,GAAG,aAAa,CAAC;QACnD,QAAQ,EAAE,oBAAoB,GAAG,aAAa,CAAC;KAChD;IAYM,oBAAoB,CACzB,OAAO,EAAE,SAAS,EAClB,OAAO,CAAC,EAAE,KAAK,GACd,kBAAkB,GAAG,aAAa;CAKtC"}
@@ -12,6 +12,7 @@ import { ModuleContainer, noop, } from "@proto-kit/common";
12
12
  import { injectable } from "tsyringe";
13
13
  import { DispatchContractProtocolModule } from "./contracts/DispatchContractProtocolModule";
14
14
  import { SettlementContractProtocolModule, } from "./contracts/SettlementContractProtocolModule";
15
+ import { BridgeContractProtocolModule, } from "./contracts/BridgeContractProtocolModule";
15
16
  export let SettlementContractModule = SettlementContractModule_1 = class SettlementContractModule extends ModuleContainer {
16
17
  constructor(definition) {
17
18
  super(definition);
@@ -23,13 +24,23 @@ export let SettlementContractModule = SettlementContractModule_1 = class Settlem
23
24
  }
24
25
  };
25
26
  }
26
- static fromDefaults() {
27
- return SettlementContractModule_1.from({
27
+ static mandatoryModules() {
28
+ return {
28
29
  SettlementContract: SettlementContractProtocolModule,
29
30
  DispatchContract: DispatchContractProtocolModule,
31
+ BridgeContract: BridgeContractProtocolModule,
32
+ };
33
+ }
34
+ static fromDefaults() {
35
+ return SettlementContractModule_1.from(SettlementContractModule_1.mandatoryModules());
36
+ }
37
+ static with(additionalModules) {
38
+ return SettlementContractModule_1.from({
39
+ ...SettlementContractModule_1.mandatoryModules(),
40
+ ...additionalModules,
30
41
  });
31
42
  }
32
- get appChain() {
43
+ get areProofsEnabled() {
33
44
  return this.protocol?.getAreProofsEnabled();
34
45
  }
35
46
  // **
@@ -40,32 +51,30 @@ export let SettlementContractModule = SettlementContractModule_1 = class Settlem
40
51
  noop();
41
52
  }
42
53
  getContractClasses() {
43
- const settlementContractKey = "SettlementContract";
44
- const dispatchContractKey = "DispatchContract";
45
- this.assertIsValidModuleName(settlementContractKey);
46
- this.assertIsValidModuleName(dispatchContractKey);
47
- const settlementModule = this.resolve(settlementContractKey);
48
- const dispatchModule = this.resolve(dispatchContractKey);
49
- const dispatch = dispatchModule.contractFactory(undefined);
50
- const settlement = settlementModule.contractFactory(dispatch);
51
- return {
52
- settlement,
53
- dispatch,
54
- };
54
+ const contracts =
55
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
56
+ this.moduleNames.map((name) => {
57
+ const module = this.resolve(name);
58
+ return [name, module.contractFactory()];
59
+ });
60
+ return Object.fromEntries(contracts);
55
61
  }
56
62
  createContracts(addresses) {
57
- const { dispatch, settlement } = this.getContractClasses();
58
- // eslint-disable-next-line new-cap
59
- const dispatchInstance = new dispatch(addresses.dispatch);
60
- // eslint-disable-next-line new-cap
61
- const settlementInstance = new settlement(addresses.settlement);
63
+ const { DispatchContract, SettlementContract } = this.getContractClasses();
64
+ const dispatchInstance = new DispatchContract(addresses.dispatch);
65
+ const settlementInstance = new SettlementContract(addresses.settlement);
62
66
  return {
63
67
  dispatch: dispatchInstance,
64
68
  settlement: settlementInstance,
65
69
  };
66
70
  }
71
+ createBridgeContract(address, tokenId) {
72
+ const { BridgeContract } = this.getContractClasses();
73
+ return new BridgeContract(address, tokenId);
74
+ }
67
75
  };
68
76
  SettlementContractModule = SettlementContractModule_1 = __decorate([
69
77
  injectable(),
70
78
  __metadata("design:paramtypes", [Object])
71
79
  ], SettlementContractModule);
80
+ //# sourceMappingURL=SettlementContractModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettlementContractModule.js","sourceRoot":"","sources":["../../src/settlement/SettlementContractModule.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAGL,eAAe,EAGf,IAAI,GAEL,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAMtC,OAAO,EAAE,8BAA8B,EAAE,MAAM,4CAA4C,CAAC;AAE5F,OAAO,EAEL,gCAAgC,GACjC,MAAM,8CAA8C,CAAC;AAGtD,OAAO,EAEL,4BAA4B,GAC7B,MAAM,0CAA0C,CAAC;AAkB3C,WAAM,wBAAwB,gCAA9B,MAAM,wBAIX,SAAQ,eAAkC;IAG1C,YAAmB,UAA0C;QAC3D,KAAK,CAAC,UAAU,CAAC,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,IAAI,CAIhB,OAA0B;QAE1B,OAAO,MAAM,8BAA+B,SAAQ,0BAA2C;YAC7F;gBACE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YACrB,CAAC;SACF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,gBAAgB;QAC5B,OAAO;YACL,kBAAkB,EAAE,gCAAgC;YACpD,gBAAgB,EAAE,8BAA8B;YAChD,cAAc,EAAE,4BAA4B;SACpC,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,YAAY;QACxB,OAAO,0BAAwB,CAAC,IAAI,CAClC,0BAAwB,CAAC,gBAAgB,EAAE,CAC5C,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,IAAI,CAChB,iBAAoC;QAEpC,OAAO,0BAAwB,CAAC,IAAI,CAAC;YACnC,GAAG,0BAAwB,CAAC,gBAAgB,EAAE;YAC9C,GAAG,iBAAiB;SACZ,CAAC,CAAC;IACd,CAAC;IAKD,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAC9C,CAAC;IACD,KAAK;IAEE,MAAM,CAAC,sBAA8C;QAC1D,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,EAAE,CAAC;IACT,CAAC;IAEM,kBAAkB;QACvB,MAAM,SAAS;QACb,yEAAyE;QACxE,IAAI,CAAC,WAAgD,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QACL,OAAO,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAEM,eAAe,CAAC,SAGtB;QAIC,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE3E,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAExE,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,UAAU,EAAE,kBAAkB;SAC/B,CAAC;IACJ,CAAC;IAEM,oBAAoB,CACzB,OAAkB,EAClB,OAAe;QAEf,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAErD,OAAO,IAAI,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACF,CAAA;AAnGY,wBAAwB;IADpC,UAAU,EAAE;;GACA,wBAAwB,CAmGpC"}
@@ -0,0 +1,97 @@
1
+ import { AccountUpdate, Field, Permissions, PublicKey, SmartContract, State, TokenContractV2, VerificationKey } from "o1js";
2
+ import { TypedClass } from "@proto-kit/common";
3
+ import { OutgoingMessageArgumentBatch } from "../messages/OutgoingMessageArgument";
4
+ import type { SettlementContractType } from "./SettlementSmartContract";
5
+ export type BridgeContractType = {
6
+ stateRoot: State<Field>;
7
+ outgoingMessageCursor: State<Field>;
8
+ rollupOutgoingMessages: (batch: OutgoingMessageArgumentBatch) => Promise<Field>;
9
+ redeem: (additionUpdate: AccountUpdate) => Promise<void>;
10
+ deployProvable: (args: VerificationKey | undefined, signedSettlement: boolean, permissions: Permissions, settlementContractAddress: PublicKey) => Promise<AccountUpdate>;
11
+ updateStateRoot: (root: Field) => Promise<void>;
12
+ };
13
+ declare const OutgoingMessageKey_base: (new (value: {
14
+ index: import("o1js/dist/node/lib/provable/field").Field;
15
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
16
+ }) => {
17
+ index: import("o1js/dist/node/lib/provable/field").Field;
18
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
19
+ }) & {
20
+ _isStruct: true;
21
+ } & Omit<import("o1js/dist/node/lib/provable/types/provable-intf").Provable<{
22
+ index: import("o1js/dist/node/lib/provable/field").Field;
23
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
24
+ }, {
25
+ index: bigint;
26
+ tokenId: bigint;
27
+ }>, "fromFields"> & {
28
+ fromFields: (fields: import("o1js/dist/node/lib/provable/field").Field[]) => {
29
+ index: import("o1js/dist/node/lib/provable/field").Field;
30
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
31
+ };
32
+ } & {
33
+ fromValue: (value: {
34
+ index: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
35
+ tokenId: string | number | bigint | import("o1js/dist/node/lib/provable/field").Field;
36
+ }) => {
37
+ index: import("o1js/dist/node/lib/provable/field").Field;
38
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
39
+ };
40
+ toInput: (x: {
41
+ index: import("o1js/dist/node/lib/provable/field").Field;
42
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
43
+ }) => {
44
+ fields?: import("o1js/dist/node/lib/provable/field").Field[] | undefined;
45
+ packed?: [import("o1js/dist/node/lib/provable/field").Field, number][] | undefined;
46
+ };
47
+ toJSON: (x: {
48
+ index: import("o1js/dist/node/lib/provable/field").Field;
49
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
50
+ }) => {
51
+ index: string;
52
+ tokenId: string;
53
+ };
54
+ fromJSON: (x: {
55
+ index: string;
56
+ tokenId: string;
57
+ }) => {
58
+ index: import("o1js/dist/node/lib/provable/field").Field;
59
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
60
+ };
61
+ empty: () => {
62
+ index: import("o1js/dist/node/lib/provable/field").Field;
63
+ tokenId: import("o1js/dist/node/lib/provable/field").Field;
64
+ };
65
+ };
66
+ export declare class OutgoingMessageKey extends OutgoingMessageKey_base {
67
+ }
68
+ export declare abstract class BridgeContractBase extends TokenContractV2 {
69
+ static args: {
70
+ SettlementContract: (TypedClass<SettlementContractType> & typeof SmartContract) | undefined;
71
+ withdrawalStatePath: [string, string];
72
+ };
73
+ abstract settlementContractAddress: State<PublicKey>;
74
+ abstract stateRoot: State<Field>;
75
+ abstract outgoingMessageCursor: State<Field>;
76
+ /**
77
+ * Function to deploy the bridging contract in a provable way, so that it can be
78
+ * a provable process initiated by the settlement contract with a baked-in vk
79
+ *
80
+ * @returns Creates and returns an account update deploying the bridge contract
81
+ */
82
+ deployProvable(verificationKey: VerificationKey | undefined, signedSettlement: boolean, permissions: Permissions, settlementContractAddress: PublicKey): Promise<AccountUpdate>;
83
+ approveBase(): Promise<void>;
84
+ updateStateRootBase(root: Field): Promise<void>;
85
+ rollupOutgoingMessagesBase(batch: OutgoingMessageArgumentBatch): Promise<Field>;
86
+ protected redeemBase(additionUpdate: AccountUpdate): Promise<void>;
87
+ }
88
+ export declare class BridgeContract extends BridgeContractBase implements BridgeContractType {
89
+ settlementContractAddress: State<PublicKey>;
90
+ stateRoot: State<import("o1js/dist/node/lib/provable/field").Field>;
91
+ outgoingMessageCursor: State<import("o1js/dist/node/lib/provable/field").Field>;
92
+ updateStateRoot(root: Field): Promise<void>;
93
+ rollupOutgoingMessages(batch: OutgoingMessageArgumentBatch): Promise<Field>;
94
+ redeem(additionUpdate: AccountUpdate): Promise<void>;
95
+ }
96
+ export {};
97
+ //# sourceMappingURL=BridgeContract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BridgeContract.d.ts","sourceRoot":"","sources":["../../../src/settlement/contracts/BridgeContract.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EAEb,KAAK,EAEL,WAAW,EAGX,SAAS,EACT,aAAa,EACb,KAAK,EAGL,eAAe,EAEf,eAAe,EAChB,MAAM,MAAM,CAAC;AACd,OAAO,EAAe,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAEL,4BAA4B,EAC7B,MAAM,qCAAqC,CAAC;AAI7C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACxB,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpC,sBAAsB,EAAE,CACtB,KAAK,EAAE,4BAA4B,KAChC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,EAAE,CAAC,cAAc,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzD,cAAc,EAAE,CACd,IAAI,EAAE,eAAe,GAAG,SAAS,EACjC,gBAAgB,EAAE,OAAO,EACzB,WAAW,EAAE,WAAW,EACxB,yBAAyB,EAAE,SAAS,KACjC,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5B,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGF,qBAAa,kBAAmB,SAAQ,uBAGtC;CAAG;AAEL,8BAAsB,kBAAmB,SAAQ,eAAe;IAC9D,OAAc,IAAI,EAAE;QAClB,kBAAkB,EACd,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,OAAO,aAAa,CAAC,GAC3D,SAAS,CAAC;QACd,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACvC,CAAC;IAEF,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAErD,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAEjC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE7C;;;;;OAKG;IACU,cAAc,CACzB,eAAe,EAAE,eAAe,GAAG,SAAS,EAC5C,gBAAgB,EAAE,OAAO,EACzB,WAAW,EAAE,WAAW,EACxB,yBAAyB,EAAE,SAAS;IAgCzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,mBAAmB,CAAC,IAAI,EAAE,KAAK;IAkB/B,0BAA0B,CACrC,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,KAAK,CAAC;cAiDD,UAAU,CAAC,cAAc,EAAE,aAAa;CA0BzD;AAED,qBAAa,cACX,SAAQ,kBACR,YAAW,kBAAkB;IAEJ,yBAAyB,mBAAsB;IAEnD,SAAS,2DAAkB;IAE3B,qBAAqB,2DAAkB;IAG/C,eAAe,CAAC,IAAI,EAAE,KAAK;IAK3B,sBAAsB,CACjC,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,KAAK,CAAC;IAKJ,MAAM,CAAC,cAAc,EAAE,aAAa;CAGlD"}