@aztec/txe 0.0.0-test.1 → 0.0.1-commit.017a351

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 (182) hide show
  1. package/dest/ContractClassRegistry-PII7Q556.js +3 -0
  2. package/dest/ContractClassRegistry-PII7Q556.js.map +7 -0
  3. package/dest/ContractInstanceRegistry-3MHLGFNZ.js +3 -0
  4. package/dest/ContractInstanceRegistry-3MHLGFNZ.js.map +7 -0
  5. package/dest/FeeJuice-TQV5AQK7.js +3 -0
  6. package/dest/FeeJuice-TQV5AQK7.js.map +7 -0
  7. package/dest/MultiCallEntrypoint-SBJUIJY7.js +3 -0
  8. package/dest/MultiCallEntrypoint-SBJUIJY7.js.map +7 -0
  9. package/dest/SchnorrAccount-MQXPIZ44.js +3 -0
  10. package/dest/SchnorrAccount-MQXPIZ44.js.map +7 -0
  11. package/dest/bin/check_txe_oracle_version.d.ts +2 -0
  12. package/dest/bin/check_txe_oracle_version.d.ts.map +1 -0
  13. package/dest/bin/check_txe_oracle_version.js +61 -0
  14. package/dest/bin/index.d.ts +1 -1
  15. package/dest/bin/index.js +3 -29
  16. package/dest/bin/index.js.map +7 -0
  17. package/dest/bin/oracle_test_server.d.ts +3 -0
  18. package/dest/bin/oracle_test_server.d.ts.map +1 -0
  19. package/dest/bin/oracle_test_server.js +41 -0
  20. package/dest/chunk-BA54BEZH.js +265 -0
  21. package/dest/chunk-BA54BEZH.js.map +7 -0
  22. package/dest/chunk-BJVAAXNA.js +3 -0
  23. package/dest/chunk-BJVAAXNA.js.map +7 -0
  24. package/dest/chunk-ZKW35DT6.js +304 -0
  25. package/dest/chunk-ZKW35DT6.js.map +7 -0
  26. package/dest/constants.d.ts +7 -0
  27. package/dest/constants.d.ts.map +1 -0
  28. package/dest/constants.js +10 -0
  29. package/dest/dispatcher_pool.d.ts +67 -0
  30. package/dest/dispatcher_pool.d.ts.map +1 -0
  31. package/dest/dispatcher_pool.js +284 -0
  32. package/dest/index.d.ts +185 -7
  33. package/dest/index.d.ts.map +1 -1
  34. package/dest/index.js +76 -132
  35. package/dest/metafile.json +38691 -0
  36. package/dest/msgpackr_fr_extension.d.ts +2 -0
  37. package/dest/msgpackr_fr_extension.d.ts.map +1 -0
  38. package/dest/msgpackr_fr_extension.js +21 -0
  39. package/dest/oracle/interfaces.d.ts +83 -0
  40. package/dest/oracle/interfaces.d.ts.map +1 -0
  41. package/dest/oracle/interfaces.js +3 -0
  42. package/dest/oracle/test-resolver/fixtures.d.ts +43 -0
  43. package/dest/oracle/test-resolver/fixtures.d.ts.map +1 -0
  44. package/dest/oracle/test-resolver/fixtures.js +39 -0
  45. package/dest/oracle/test-resolver/index.d.ts +9 -0
  46. package/dest/oracle/test-resolver/index.d.ts.map +1 -0
  47. package/dest/oracle/test-resolver/index.js +33 -0
  48. package/dest/oracle/test-resolver/resolver.d.ts +34 -0
  49. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
  50. package/dest/oracle/test-resolver/resolver.js +114 -0
  51. package/dest/oracle/txe_oracle_public_context.d.ts +58 -0
  52. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -0
  53. package/dest/oracle/txe_oracle_public_context.js +164 -0
  54. package/dest/oracle/txe_oracle_registry.d.ts +147 -0
  55. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
  56. package/dest/oracle/txe_oracle_registry.js +562 -0
  57. package/dest/oracle/txe_oracle_top_level_context.d.ts +85 -0
  58. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -0
  59. package/dest/oracle/txe_oracle_top_level_context.js +634 -0
  60. package/dest/oracle/txe_oracle_version.d.ts +17 -0
  61. package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
  62. package/dest/oracle/txe_oracle_version.js +14 -0
  63. package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
  64. package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
  65. package/dest/oracle/txe_private_execution_oracle.js +15 -0
  66. package/dest/rpc_server.d.ts +14 -0
  67. package/dest/rpc_server.d.ts.map +1 -0
  68. package/dest/rpc_server.js +78 -0
  69. package/dest/rpc_translator.d.ts +120 -0
  70. package/dest/rpc_translator.d.ts.map +1 -0
  71. package/dest/rpc_translator.js +882 -0
  72. package/dest/server.bundle.js +3 -0
  73. package/dest/server.bundle.js.map +7 -0
  74. package/dest/state_machine/archiver.d.ts +32 -0
  75. package/dest/state_machine/archiver.d.ts.map +1 -0
  76. package/dest/state_machine/archiver.js +96 -0
  77. package/dest/state_machine/dummy_p2p_client.d.ts +65 -0
  78. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -0
  79. package/dest/state_machine/dummy_p2p_client.js +165 -0
  80. package/dest/state_machine/global_variable_builder.d.ts +16 -0
  81. package/dest/state_machine/global_variable_builder.d.ts.map +1 -0
  82. package/dest/state_machine/global_variable_builder.js +28 -0
  83. package/dest/state_machine/index.d.ts +20 -0
  84. package/dest/state_machine/index.d.ts.map +1 -0
  85. package/dest/state_machine/index.js +86 -0
  86. package/dest/state_machine/mock_epoch_cache.d.ts +42 -0
  87. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -0
  88. package/dest/state_machine/mock_epoch_cache.js +85 -0
  89. package/dest/state_machine/synchronizer.d.ts +33 -0
  90. package/dest/state_machine/synchronizer.d.ts.map +1 -0
  91. package/dest/state_machine/synchronizer.js +59 -0
  92. package/dest/txe_session.d.ts +140 -0
  93. package/dest/txe_session.d.ts.map +1 -0
  94. package/dest/txe_session.js +499 -0
  95. package/dest/utils/block_creation.d.ts +28 -0
  96. package/dest/utils/block_creation.d.ts.map +1 -0
  97. package/dest/utils/block_creation.js +58 -0
  98. package/dest/utils/encoding.d.ts +191 -0
  99. package/dest/utils/encoding.d.ts.map +1 -0
  100. package/dest/utils/encoding.js +136 -0
  101. package/dest/utils/expected_failure_error.d.ts +4 -0
  102. package/dest/utils/expected_failure_error.d.ts.map +1 -0
  103. package/dest/utils/tx_effect_creation.d.ts +5 -0
  104. package/dest/utils/tx_effect_creation.d.ts.map +1 -0
  105. package/dest/utils/tx_effect_creation.js +13 -0
  106. package/dest/utils/txe_account_store.d.ts +10 -0
  107. package/dest/utils/txe_account_store.d.ts.map +1 -0
  108. package/dest/{util/txe_account_data_provider.js → utils/txe_account_store.js} +1 -1
  109. package/dest/utils/txe_artifact_resolver.d.ts +37 -0
  110. package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
  111. package/dest/utils/txe_artifact_resolver.js +161 -0
  112. package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
  113. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
  114. package/dest/utils/txe_public_contract_data_source.js +48 -0
  115. package/dest/worker.bundle.js +3 -0
  116. package/dest/worker.bundle.js.map +7 -0
  117. package/dest/worker.d.ts +2 -0
  118. package/dest/worker.d.ts.map +1 -0
  119. package/dest/worker.js +92 -0
  120. package/package.json +52 -29
  121. package/src/bin/check_txe_oracle_version.ts +70 -0
  122. package/src/bin/index.ts +14 -4
  123. package/src/bin/oracle_test_server.ts +51 -0
  124. package/src/constants.ts +13 -0
  125. package/src/dispatcher_pool.ts +316 -0
  126. package/src/index.ts +113 -175
  127. package/src/msgpackr_fr_extension.ts +23 -0
  128. package/src/oracle/interfaces.ts +109 -0
  129. package/src/oracle/test-resolver/fixtures.ts +84 -0
  130. package/src/oracle/test-resolver/index.ts +45 -0
  131. package/src/oracle/test-resolver/resolver.ts +165 -0
  132. package/src/oracle/txe_oracle_public_context.ts +218 -0
  133. package/src/oracle/txe_oracle_registry.ts +401 -0
  134. package/src/oracle/txe_oracle_top_level_context.ts +898 -0
  135. package/src/oracle/txe_oracle_version.ts +17 -0
  136. package/src/oracle/txe_private_execution_oracle.ts +30 -0
  137. package/src/rpc_server.ts +87 -0
  138. package/src/rpc_translator.ts +1103 -0
  139. package/src/state_machine/archiver.ts +119 -0
  140. package/src/state_machine/dummy_p2p_client.ts +247 -0
  141. package/src/state_machine/global_variable_builder.ts +53 -0
  142. package/src/state_machine/index.ts +135 -0
  143. package/src/state_machine/mock_epoch_cache.ts +107 -0
  144. package/src/state_machine/synchronizer.ts +88 -0
  145. package/src/txe_session.ts +799 -0
  146. package/src/utils/block_creation.ts +97 -0
  147. package/src/utils/encoding.ts +172 -0
  148. package/src/utils/tx_effect_creation.ts +30 -0
  149. package/src/{util/txe_account_data_provider.ts → utils/txe_account_store.ts} +1 -1
  150. package/src/utils/txe_artifact_resolver.ts +217 -0
  151. package/src/utils/txe_public_contract_data_source.ts +58 -0
  152. package/src/worker.ts +98 -0
  153. package/dest/node/txe_node.d.ts +0 -358
  154. package/dest/node/txe_node.d.ts.map +0 -1
  155. package/dest/node/txe_node.js +0 -504
  156. package/dest/oracle/txe_oracle.d.ts +0 -152
  157. package/dest/oracle/txe_oracle.d.ts.map +0 -1
  158. package/dest/oracle/txe_oracle.js +0 -833
  159. package/dest/txe_service/txe_service.d.ts +0 -212
  160. package/dest/txe_service/txe_service.d.ts.map +0 -1
  161. package/dest/txe_service/txe_service.js +0 -572
  162. package/dest/util/encoding.d.ts +0 -103
  163. package/dest/util/encoding.d.ts.map +0 -1
  164. package/dest/util/encoding.js +0 -76
  165. package/dest/util/expected_failure_error.d.ts +0 -4
  166. package/dest/util/expected_failure_error.d.ts.map +0 -1
  167. package/dest/util/txe_account_data_provider.d.ts +0 -10
  168. package/dest/util/txe_account_data_provider.d.ts.map +0 -1
  169. package/dest/util/txe_public_contract_data_source.d.ts +0 -20
  170. package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
  171. package/dest/util/txe_public_contract_data_source.js +0 -88
  172. package/dest/util/txe_world_state_db.d.ts +0 -14
  173. package/dest/util/txe_world_state_db.d.ts.map +0 -1
  174. package/dest/util/txe_world_state_db.js +0 -27
  175. package/src/node/txe_node.ts +0 -725
  176. package/src/oracle/txe_oracle.ts +0 -1241
  177. package/src/txe_service/txe_service.ts +0 -749
  178. package/src/util/encoding.ts +0 -92
  179. package/src/util/txe_public_contract_data_source.ts +0 -101
  180. package/src/util/txe_world_state_db.ts +0 -38
  181. /package/dest/{util → utils}/expected_failure_error.js +0 -0
  182. /package/src/{util → utils}/expected_failure_error.ts +0 -0
@@ -0,0 +1,1103 @@
1
+ import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from '@aztec/pxe/simulator';
2
+
3
+ import type { IAvmExecutionOracle, ITxeExecutionOracle } from './oracle/interfaces.js';
4
+ import { callTxeHandler } from './oracle/txe_oracle_registry.js';
5
+ import type { TXESessionStateHandler } from './txe_session.js';
6
+ import type { ForeignCallArgs } from './utils/encoding.js';
7
+
8
+ export class UnavailableOracleError extends Error {
9
+ constructor(oracleName: string) {
10
+ super(`${oracleName} oracles not available with the current handler`);
11
+ }
12
+ }
13
+
14
+ export class RPCTranslator {
15
+ /**
16
+ * Create a new instance of `RPCTranslator` that will translate all TXE RPC calls to and from the foreign
17
+ * (`ForeignCallSingle`, `ForeignCallResult`, etc.) and native TS types, delegating actual execution of the oracles
18
+ * to the different handlers.
19
+ * @param stateHandler The handler that will process TXE session state transitions, such as entering a private or
20
+ * public context.
21
+ * @param oracleHandler The handler that will process all other oracle calls that are not directly related to session
22
+ * state.
23
+ */
24
+ constructor(
25
+ private stateHandler: TXESessionStateHandler,
26
+ private oracleHandler:
27
+ | IMiscOracle
28
+ | IUtilityExecutionOracle
29
+ | IPrivateExecutionOracle
30
+ | IAvmExecutionOracle
31
+ | ITxeExecutionOracle,
32
+ ) {}
33
+
34
+ // Note: If you rename the following functions to not start with "handlerAs", you must also update the validation
35
+ // check in `TXESession.processFunction`.
36
+
37
+ private handlerAsMisc(): IMiscOracle {
38
+ if (!('isMisc' in this.oracleHandler)) {
39
+ throw new UnavailableOracleError('Misc');
40
+ }
41
+
42
+ return this.oracleHandler;
43
+ }
44
+
45
+ private handlerAsUtility(): IUtilityExecutionOracle {
46
+ if (!('isUtility' in this.oracleHandler)) {
47
+ throw new UnavailableOracleError('Utility');
48
+ }
49
+
50
+ return this.oracleHandler;
51
+ }
52
+
53
+ private handlerAsPrivate(): IPrivateExecutionOracle {
54
+ if (!('isPrivate' in this.oracleHandler)) {
55
+ throw new UnavailableOracleError('Private');
56
+ }
57
+
58
+ return this.oracleHandler;
59
+ }
60
+
61
+ private handlerAsAvm(): IAvmExecutionOracle {
62
+ if (!('isAvm' in this.oracleHandler)) {
63
+ throw new UnavailableOracleError('Avm');
64
+ }
65
+
66
+ return this.oracleHandler;
67
+ }
68
+
69
+ private handlerAsTxe(): ITxeExecutionOracle {
70
+ if (!('isTxe' in this.oracleHandler)) {
71
+ throw new UnavailableOracleError('Txe');
72
+ }
73
+
74
+ return this.oracleHandler;
75
+ }
76
+
77
+ // eslint-disable-next-line camelcase
78
+ aztec_txe_assertCompatibleOracleVersion(...inputs: ForeignCallArgs) {
79
+ return callTxeHandler({
80
+ oracle: 'aztec_txe_assertCompatibleOracleVersion',
81
+ inputs,
82
+ handler: ([major, minor]) => {
83
+ this.stateHandler.setTxeOracleVersion(major, minor);
84
+ },
85
+ });
86
+ }
87
+
88
+ // TXE session state transition functions - these get handled by the state handler
89
+
90
+ // eslint-disable-next-line camelcase
91
+ aztec_txe_setTopLevelTXEContext() {
92
+ return callTxeHandler({
93
+ oracle: 'aztec_txe_setTopLevelTXEContext',
94
+ inputs: [],
95
+ handler: () => this.stateHandler.enterTopLevelState(),
96
+ });
97
+ }
98
+
99
+ // eslint-disable-next-line camelcase
100
+ aztec_txe_setPrivateTXEContext(...inputs: ForeignCallArgs) {
101
+ return callTxeHandler({
102
+ oracle: 'aztec_txe_setPrivateTXEContext',
103
+ inputs,
104
+ handler: ([contractAddress, anchorBlockNumber, gasSettings]) =>
105
+ this.stateHandler.enterPrivateState(contractAddress, anchorBlockNumber, gasSettings),
106
+ });
107
+ }
108
+
109
+ // eslint-disable-next-line camelcase
110
+ aztec_txe_setPublicTXEContext(...inputs: ForeignCallArgs) {
111
+ return callTxeHandler({
112
+ oracle: 'aztec_txe_setPublicTXEContext',
113
+ inputs,
114
+ handler: ([contractAddress]) => this.stateHandler.enterPublicState(contractAddress),
115
+ });
116
+ }
117
+
118
+ // eslint-disable-next-line camelcase
119
+ aztec_txe_setUtilityTXEContext(...inputs: ForeignCallArgs) {
120
+ return callTxeHandler({
121
+ oracle: 'aztec_txe_setUtilityTXEContext',
122
+ inputs,
123
+ handler: ([contractAddress]) => this.stateHandler.enterUtilityState(contractAddress),
124
+ });
125
+ }
126
+
127
+ // Other oracles - these get handled by the oracle handler
128
+
129
+ // TXE-specific oracles
130
+
131
+ // eslint-disable-next-line camelcase
132
+ aztec_txe_getDefaultAddress() {
133
+ return callTxeHandler({
134
+ oracle: 'aztec_txe_getDefaultAddress',
135
+ inputs: [],
136
+ handler: () => this.handlerAsTxe().getDefaultAddress(),
137
+ });
138
+ }
139
+
140
+ // eslint-disable-next-line camelcase
141
+ aztec_txe_getNextBlockNumber() {
142
+ return callTxeHandler({
143
+ oracle: 'aztec_txe_getNextBlockNumber',
144
+ inputs: [],
145
+ handler: () => this.handlerAsTxe().getNextBlockNumber(),
146
+ });
147
+ }
148
+
149
+ // eslint-disable-next-line camelcase
150
+ aztec_txe_getNextBlockTimestamp() {
151
+ return callTxeHandler({
152
+ oracle: 'aztec_txe_getNextBlockTimestamp',
153
+ inputs: [],
154
+ handler: () => this.handlerAsTxe().getNextBlockTimestamp(),
155
+ });
156
+ }
157
+
158
+ // eslint-disable-next-line camelcase
159
+ aztec_txe_advanceBlocksBy(...inputs: ForeignCallArgs) {
160
+ return callTxeHandler({
161
+ oracle: 'aztec_txe_advanceBlocksBy',
162
+ inputs,
163
+ handler: ([blocks]) => this.handlerAsTxe().advanceBlocksBy(blocks),
164
+ });
165
+ }
166
+
167
+ // eslint-disable-next-line camelcase
168
+ aztec_txe_advanceTimestampBy(...inputs: ForeignCallArgs) {
169
+ return callTxeHandler({
170
+ oracle: 'aztec_txe_advanceTimestampBy',
171
+ inputs,
172
+ handler: ([duration]) => this.handlerAsTxe().advanceTimestampBy(duration),
173
+ });
174
+ }
175
+
176
+ // eslint-disable-next-line camelcase
177
+ aztec_txe_deploy(...inputs: ForeignCallArgs) {
178
+ return callTxeHandler({
179
+ oracle: 'aztec_txe_deploy',
180
+ inputs,
181
+ handler: ([contractPath, initializer, _, args, secret, salt, deployer]) =>
182
+ this.handlerAsTxe().deploy(contractPath, initializer, args, secret, salt, deployer),
183
+ });
184
+ }
185
+
186
+ // eslint-disable-next-line camelcase
187
+ aztec_txe_createAccount(...inputs: ForeignCallArgs) {
188
+ return callTxeHandler({
189
+ oracle: 'aztec_txe_createAccount',
190
+ inputs,
191
+ handler: ([secret]) => this.handlerAsTxe().createAccount(secret),
192
+ });
193
+ }
194
+
195
+ // eslint-disable-next-line camelcase
196
+ aztec_txe_addAccount(...inputs: ForeignCallArgs) {
197
+ return callTxeHandler({
198
+ oracle: 'aztec_txe_addAccount',
199
+ inputs,
200
+ handler: ([secret]) => this.handlerAsTxe().addAccount(secret),
201
+ });
202
+ }
203
+
204
+ // eslint-disable-next-line camelcase
205
+ aztec_txe_addAuthWitness(...inputs: ForeignCallArgs) {
206
+ return callTxeHandler({
207
+ oracle: 'aztec_txe_addAuthWitness',
208
+ inputs,
209
+ handler: ([address, messageHash]) => this.handlerAsTxe().addAuthWitness(address, messageHash),
210
+ });
211
+ }
212
+
213
+ // PXE oracles
214
+
215
+ // eslint-disable-next-line camelcase
216
+ aztec_misc_assertCompatibleOracleVersion(...inputs: ForeignCallArgs) {
217
+ return callTxeHandler({
218
+ oracle: 'aztec_misc_assertCompatibleOracleVersion',
219
+ inputs,
220
+ handler: ([major, minor]) => this.handlerAsMisc().assertCompatibleOracleVersion(major, minor),
221
+ });
222
+ }
223
+
224
+ // eslint-disable-next-line camelcase
225
+ aztec_misc_getRandomField() {
226
+ return callTxeHandler({
227
+ oracle: 'aztec_misc_getRandomField',
228
+ inputs: [],
229
+ handler: () => this.handlerAsMisc().getRandomField(),
230
+ });
231
+ }
232
+
233
+ // eslint-disable-next-line camelcase
234
+ aztec_txe_getLastBlockTimestamp() {
235
+ return callTxeHandler({
236
+ oracle: 'aztec_txe_getLastBlockTimestamp',
237
+ inputs: [],
238
+ handler: () => this.handlerAsTxe().getLastBlockTimestamp(),
239
+ });
240
+ }
241
+
242
+ // eslint-disable-next-line camelcase
243
+ aztec_txe_getLastTxEffects() {
244
+ return callTxeHandler({
245
+ oracle: 'aztec_txe_getLastTxEffects',
246
+ inputs: [],
247
+ handler: () => this.handlerAsTxe().getLastTxEffects(),
248
+ });
249
+ }
250
+
251
+ // eslint-disable-next-line camelcase
252
+ aztec_txe_getLastCallOffchainEffects() {
253
+ return callTxeHandler({
254
+ oracle: 'aztec_txe_getLastCallOffchainEffects',
255
+ inputs: [],
256
+ handler: () => this.stateHandler.getLastCallOffchainEffects(),
257
+ });
258
+ }
259
+
260
+ // eslint-disable-next-line camelcase
261
+ aztec_txe_getLastCallContext() {
262
+ return callTxeHandler({
263
+ oracle: 'aztec_txe_getLastCallContext',
264
+ inputs: [],
265
+ handler: () => this.stateHandler.getLastCallContext(),
266
+ });
267
+ }
268
+
269
+ // eslint-disable-next-line camelcase
270
+ aztec_txe_getPrivateEvents(...inputs: ForeignCallArgs) {
271
+ return callTxeHandler({
272
+ oracle: 'aztec_txe_getPrivateEvents',
273
+ inputs,
274
+ handler: async ([selector, contractAddress, scope]) => {
275
+ // TODO(F-335): Avoid doing the following 2 calls here.
276
+ {
277
+ await this.handlerAsTxe().syncContractNonOracleMethod(
278
+ contractAddress,
279
+ scope,
280
+ this.stateHandler.getCurrentJob(),
281
+ );
282
+ // We cycle job to commit the stores after the contract sync.
283
+ await this.stateHandler.cycleJob();
284
+ }
285
+
286
+ return this.handlerAsTxe().getPrivateEvents(selector, contractAddress, scope);
287
+ },
288
+ });
289
+ }
290
+
291
+ // eslint-disable-next-line camelcase
292
+ aztec_prv_setHashPreimage(...inputs: ForeignCallArgs) {
293
+ return callTxeHandler({
294
+ oracle: 'aztec_prv_setHashPreimage',
295
+ inputs,
296
+ handler: ([values, hash]) => this.handlerAsPrivate().setHashPreimage(values, hash),
297
+ });
298
+ }
299
+
300
+ // eslint-disable-next-line camelcase
301
+ aztec_prv_getHashPreimage(...inputs: ForeignCallArgs) {
302
+ return callTxeHandler({
303
+ oracle: 'aztec_prv_getHashPreimage',
304
+ inputs,
305
+ handler: ([hash]) => this.handlerAsPrivate().getHashPreimage(hash),
306
+ });
307
+ }
308
+
309
+ // eslint-disable-next-line camelcase
310
+ aztec_misc_log(...inputs: ForeignCallArgs) {
311
+ return callTxeHandler({
312
+ oracle: 'aztec_misc_log',
313
+ inputs,
314
+ handler: ([level, message, fieldsSize, fields]) => this.handlerAsMisc().log(level, message, fieldsSize, fields),
315
+ });
316
+ }
317
+
318
+ // eslint-disable-next-line camelcase
319
+ aztec_utl_getFromPublicStorage(...inputs: ForeignCallArgs) {
320
+ return callTxeHandler({
321
+ oracle: 'aztec_utl_getFromPublicStorage',
322
+ inputs,
323
+ handler: ([blockHash, contractAddress, startStorageSlot, numberOfElements]) =>
324
+ this.handlerAsUtility().getFromPublicStorage(blockHash, contractAddress, startStorageSlot, numberOfElements),
325
+ });
326
+ }
327
+
328
+ // eslint-disable-next-line camelcase
329
+ aztec_utl_getPublicDataWitness(...inputs: ForeignCallArgs) {
330
+ return callTxeHandler({
331
+ oracle: 'aztec_utl_getPublicDataWitness',
332
+ inputs,
333
+ handler: ([blockHash, leafSlot]) => this.handlerAsUtility().getPublicDataWitness(blockHash, leafSlot),
334
+ });
335
+ }
336
+
337
+ // eslint-disable-next-line camelcase
338
+ aztec_utl_getNotes(...inputs: ForeignCallArgs) {
339
+ return callTxeHandler({
340
+ oracle: 'aztec_utl_getNotes',
341
+ inputs,
342
+ handler: ([
343
+ owner,
344
+ storageSlot,
345
+ numSelects,
346
+ selectByIndexes,
347
+ selectByOffsets,
348
+ selectByLengths,
349
+ selectValues,
350
+ selectComparators,
351
+ sortByIndexes,
352
+ sortByOffsets,
353
+ sortByLengths,
354
+ sortOrder,
355
+ limit,
356
+ offset,
357
+ status,
358
+ maxNotes,
359
+ packedHintedNoteLength,
360
+ ]) =>
361
+ this.handlerAsUtility().getNotes(
362
+ owner,
363
+ storageSlot,
364
+ numSelects,
365
+ selectByIndexes,
366
+ selectByOffsets,
367
+ selectByLengths,
368
+ selectValues,
369
+ selectComparators,
370
+ sortByIndexes,
371
+ sortByOffsets,
372
+ sortByLengths,
373
+ sortOrder,
374
+ limit,
375
+ offset,
376
+ status,
377
+ maxNotes,
378
+ packedHintedNoteLength,
379
+ ),
380
+ });
381
+ }
382
+
383
+ // eslint-disable-next-line camelcase
384
+ aztec_prv_notifyCreatedNote(...inputs: ForeignCallArgs) {
385
+ return callTxeHandler({
386
+ oracle: 'aztec_prv_notifyCreatedNote',
387
+ inputs,
388
+ handler: ([owner, storageSlot, randomness, noteTypeId, note, noteHash, counter]) =>
389
+ this.handlerAsPrivate().notifyCreatedNote(owner, storageSlot, randomness, noteTypeId, note, noteHash, counter),
390
+ });
391
+ }
392
+
393
+ // eslint-disable-next-line camelcase
394
+ aztec_prv_notifyNullifiedNote(...inputs: ForeignCallArgs) {
395
+ return callTxeHandler({
396
+ oracle: 'aztec_prv_notifyNullifiedNote',
397
+ inputs,
398
+ handler: ([innerNullifier, noteHash, counter]) =>
399
+ this.handlerAsPrivate().notifyNullifiedNote(innerNullifier, noteHash, counter),
400
+ });
401
+ }
402
+
403
+ // eslint-disable-next-line camelcase
404
+ aztec_prv_notifyCreatedNullifier(...inputs: ForeignCallArgs) {
405
+ return callTxeHandler({
406
+ oracle: 'aztec_prv_notifyCreatedNullifier',
407
+ inputs,
408
+ handler: ([innerNullifier]) => this.handlerAsPrivate().notifyCreatedNullifier(innerNullifier),
409
+ });
410
+ }
411
+
412
+ // eslint-disable-next-line camelcase
413
+ aztec_prv_isNullifierPending(...inputs: ForeignCallArgs) {
414
+ return callTxeHandler({
415
+ oracle: 'aztec_prv_isNullifierPending',
416
+ inputs,
417
+ handler: ([innerNullifier, contractAddress]) =>
418
+ this.handlerAsPrivate().isNullifierPending(innerNullifier, contractAddress),
419
+ });
420
+ }
421
+
422
+ // eslint-disable-next-line camelcase
423
+ aztec_utl_doesNullifierExist(...inputs: ForeignCallArgs) {
424
+ return callTxeHandler({
425
+ oracle: 'aztec_utl_doesNullifierExist',
426
+ inputs,
427
+ handler: ([innerNullifier]) => this.handlerAsUtility().doesNullifierExist(innerNullifier),
428
+ });
429
+ }
430
+
431
+ // eslint-disable-next-line camelcase
432
+ aztec_utl_getContractInstance(...inputs: ForeignCallArgs) {
433
+ return callTxeHandler({
434
+ oracle: 'aztec_utl_getContractInstance',
435
+ inputs,
436
+ handler: ([address]) => this.handlerAsUtility().getContractInstance(address),
437
+ });
438
+ }
439
+
440
+ // eslint-disable-next-line camelcase
441
+ aztec_utl_getPublicKeysAndPartialAddress(...inputs: ForeignCallArgs) {
442
+ return callTxeHandler({
443
+ oracle: 'aztec_utl_getPublicKeysAndPartialAddress',
444
+ inputs,
445
+ handler: ([address]) => this.handlerAsUtility().getPublicKeysAndPartialAddress(address),
446
+ });
447
+ }
448
+
449
+ // eslint-disable-next-line camelcase
450
+ aztec_utl_getKeyValidationRequest(...inputs: ForeignCallArgs) {
451
+ return callTxeHandler({
452
+ oracle: 'aztec_utl_getKeyValidationRequest',
453
+ inputs,
454
+ handler: ([pkMHash]) => this.handlerAsUtility().getKeyValidationRequest(pkMHash),
455
+ });
456
+ }
457
+
458
+ // eslint-disable-next-line camelcase
459
+ aztec_prv_callPrivateFunction(...inputs: ForeignCallArgs) {
460
+ return callTxeHandler({
461
+ oracle: 'aztec_prv_callPrivateFunction',
462
+ inputs,
463
+ handler: ([contractAddress, functionSelector, argsHash, sideEffectCounter, isStaticCall]) =>
464
+ this.handlerAsPrivate().callPrivateFunction(
465
+ contractAddress,
466
+ functionSelector,
467
+ argsHash,
468
+ sideEffectCounter,
469
+ isStaticCall,
470
+ ),
471
+ });
472
+ }
473
+
474
+ // eslint-disable-next-line camelcase
475
+ aztec_utl_getNullifierMembershipWitness(...inputs: ForeignCallArgs) {
476
+ return callTxeHandler({
477
+ oracle: 'aztec_utl_getNullifierMembershipWitness',
478
+ inputs,
479
+ handler: ([blockHash, nullifier]) => this.handlerAsUtility().getNullifierMembershipWitness(blockHash, nullifier),
480
+ });
481
+ }
482
+
483
+ // eslint-disable-next-line camelcase
484
+ aztec_utl_getAuthWitness(...inputs: ForeignCallArgs) {
485
+ return callTxeHandler({
486
+ oracle: 'aztec_utl_getAuthWitness',
487
+ inputs,
488
+ handler: ([messageHash]) => this.handlerAsUtility().getAuthWitness(messageHash),
489
+ });
490
+ }
491
+
492
+ // eslint-disable-next-line camelcase
493
+ aztec_prv_assertValidPublicCalldata(...inputs: ForeignCallArgs) {
494
+ return callTxeHandler({
495
+ oracle: 'aztec_prv_assertValidPublicCalldata',
496
+ inputs,
497
+ handler: ([calldataHash]) => this.handlerAsPrivate().assertValidPublicCalldata(calldataHash),
498
+ });
499
+ }
500
+
501
+ // eslint-disable-next-line camelcase
502
+ aztec_prv_notifyRevertiblePhaseStart(...inputs: ForeignCallArgs) {
503
+ return callTxeHandler({
504
+ oracle: 'aztec_prv_notifyRevertiblePhaseStart',
505
+ inputs,
506
+ handler: ([minRevertibleSideEffectCounter]) =>
507
+ this.handlerAsPrivate().notifyRevertiblePhaseStart(minRevertibleSideEffectCounter),
508
+ });
509
+ }
510
+
511
+ // eslint-disable-next-line camelcase
512
+ aztec_prv_isExecutionInRevertiblePhase(...inputs: ForeignCallArgs) {
513
+ return callTxeHandler({
514
+ oracle: 'aztec_prv_isExecutionInRevertiblePhase',
515
+ inputs,
516
+ handler: ([sideEffectCounter]) => this.handlerAsPrivate().isExecutionInRevertiblePhase(sideEffectCounter),
517
+ });
518
+ }
519
+
520
+ // eslint-disable-next-line camelcase
521
+ aztec_utl_getUtilityContext() {
522
+ return callTxeHandler({
523
+ oracle: 'aztec_utl_getUtilityContext',
524
+ inputs: [],
525
+ handler: () => this.handlerAsUtility().getUtilityContext(),
526
+ });
527
+ }
528
+
529
+ // eslint-disable-next-line camelcase
530
+ aztec_utl_getBlockHeader(...inputs: ForeignCallArgs) {
531
+ return callTxeHandler({
532
+ oracle: 'aztec_utl_getBlockHeader',
533
+ inputs,
534
+ handler: ([blockNumber]) => this.handlerAsUtility().getBlockHeader(blockNumber),
535
+ });
536
+ }
537
+
538
+ // eslint-disable-next-line camelcase
539
+ aztec_utl_getNoteHashMembershipWitness(...inputs: ForeignCallArgs) {
540
+ return callTxeHandler({
541
+ oracle: 'aztec_utl_getNoteHashMembershipWitness',
542
+ inputs,
543
+ handler: ([blockHash, noteHash]) => this.handlerAsUtility().getNoteHashMembershipWitness(blockHash, noteHash),
544
+ });
545
+ }
546
+
547
+ // eslint-disable-next-line camelcase
548
+ aztec_utl_getBlockHashMembershipWitness(...inputs: ForeignCallArgs) {
549
+ return callTxeHandler({
550
+ oracle: 'aztec_utl_getBlockHashMembershipWitness',
551
+ inputs,
552
+ handler: ([anchorBlockHash, blockHash]) =>
553
+ this.handlerAsUtility().getBlockHashMembershipWitness(anchorBlockHash, blockHash),
554
+ });
555
+ }
556
+
557
+ // eslint-disable-next-line camelcase
558
+ aztec_utl_getLowNullifierMembershipWitness(...inputs: ForeignCallArgs) {
559
+ return callTxeHandler({
560
+ oracle: 'aztec_utl_getLowNullifierMembershipWitness',
561
+ inputs,
562
+ handler: ([blockHash, nullifier]) =>
563
+ this.handlerAsUtility().getLowNullifierMembershipWitness(blockHash, nullifier),
564
+ });
565
+ }
566
+
567
+ // eslint-disable-next-line camelcase
568
+ aztec_utl_getPendingTaggedLogs(...inputs: ForeignCallArgs) {
569
+ return callTxeHandler({
570
+ oracle: 'aztec_utl_getPendingTaggedLogs',
571
+ inputs,
572
+ handler: ([scope, providedSecrets]) => this.handlerAsUtility().getPendingTaggedLogs(scope, providedSecrets),
573
+ });
574
+ }
575
+
576
+ // eslint-disable-next-line camelcase
577
+ aztec_utl_validateAndStoreEnqueuedNotesAndEvents(...inputs: ForeignCallArgs) {
578
+ return callTxeHandler({
579
+ oracle: 'aztec_utl_validateAndStoreEnqueuedNotesAndEvents',
580
+ inputs,
581
+ handler: ([noteValidationRequests, eventValidationRequests, scope]) =>
582
+ this.handlerAsUtility().validateAndStoreEnqueuedNotesAndEvents(
583
+ noteValidationRequests,
584
+ eventValidationRequests,
585
+ scope,
586
+ ),
587
+ });
588
+ }
589
+
590
+ // eslint-disable-next-line camelcase
591
+ aztec_utl_getLogsByTag(...inputs: ForeignCallArgs) {
592
+ return callTxeHandler({
593
+ oracle: 'aztec_utl_getLogsByTag',
594
+ inputs,
595
+ handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getLogsByTag(requestArrayBaseSlot),
596
+ });
597
+ }
598
+
599
+ // eslint-disable-next-line camelcase
600
+ aztec_utl_getMessageContextsByTxHash(...inputs: ForeignCallArgs) {
601
+ return callTxeHandler({
602
+ oracle: 'aztec_utl_getMessageContextsByTxHash',
603
+ inputs,
604
+ handler: ([requestArrayBaseSlot]) => this.handlerAsUtility().getMessageContextsByTxHash(requestArrayBaseSlot),
605
+ });
606
+ }
607
+
608
+ // eslint-disable-next-line camelcase
609
+ aztec_utl_setCapsule(...inputs: ForeignCallArgs) {
610
+ return callTxeHandler({
611
+ oracle: 'aztec_utl_setCapsule',
612
+ inputs,
613
+ handler: ([contractAddress, slot, capsule, scope]) =>
614
+ this.handlerAsUtility().setCapsule(contractAddress, slot, capsule, scope),
615
+ });
616
+ }
617
+
618
+ // eslint-disable-next-line camelcase
619
+ aztec_utl_getCapsule(...inputs: ForeignCallArgs) {
620
+ return callTxeHandler({
621
+ oracle: 'aztec_utl_getCapsule',
622
+ inputs,
623
+ handler: ([contractAddress, slot, tSize, scope]) =>
624
+ this.handlerAsUtility().getCapsule(contractAddress, slot, tSize, scope),
625
+ });
626
+ }
627
+
628
+ // eslint-disable-next-line camelcase
629
+ aztec_utl_deleteCapsule(...inputs: ForeignCallArgs) {
630
+ return callTxeHandler({
631
+ oracle: 'aztec_utl_deleteCapsule',
632
+ inputs,
633
+ handler: ([contractAddress, slot, scope]) => this.handlerAsUtility().deleteCapsule(contractAddress, slot, scope),
634
+ });
635
+ }
636
+
637
+ // eslint-disable-next-line camelcase
638
+ aztec_utl_copyCapsule(...inputs: ForeignCallArgs) {
639
+ return callTxeHandler({
640
+ oracle: 'aztec_utl_copyCapsule',
641
+ inputs,
642
+ handler: ([contractAddress, srcSlot, dstSlot, numEntries, scope]) =>
643
+ this.handlerAsUtility().copyCapsule(contractAddress, srcSlot, dstSlot, numEntries, scope),
644
+ });
645
+ }
646
+
647
+ // eslint-disable-next-line camelcase
648
+ aztec_utl_pushEphemeral(...inputs: ForeignCallArgs) {
649
+ return callTxeHandler({
650
+ oracle: 'aztec_utl_pushEphemeral',
651
+ inputs,
652
+ handler: ([slot, elements]) => this.handlerAsUtility().pushEphemeral(slot, elements),
653
+ });
654
+ }
655
+
656
+ // eslint-disable-next-line camelcase
657
+ aztec_utl_popEphemeral(...inputs: ForeignCallArgs) {
658
+ return callTxeHandler({
659
+ oracle: 'aztec_utl_popEphemeral',
660
+ inputs,
661
+ handler: ([slot]) => this.handlerAsUtility().popEphemeral(slot),
662
+ });
663
+ }
664
+
665
+ // eslint-disable-next-line camelcase
666
+ aztec_utl_getEphemeral(...inputs: ForeignCallArgs) {
667
+ return callTxeHandler({
668
+ oracle: 'aztec_utl_getEphemeral',
669
+ inputs,
670
+ handler: ([slot, index]) => this.handlerAsUtility().getEphemeral(slot, index),
671
+ });
672
+ }
673
+
674
+ // eslint-disable-next-line camelcase
675
+ aztec_utl_setEphemeral(...inputs: ForeignCallArgs) {
676
+ return callTxeHandler({
677
+ oracle: 'aztec_utl_setEphemeral',
678
+ inputs,
679
+ handler: ([slot, index, elements]) => this.handlerAsUtility().setEphemeral(slot, index, elements),
680
+ });
681
+ }
682
+
683
+ // eslint-disable-next-line camelcase
684
+ aztec_utl_getEphemeralLen(...inputs: ForeignCallArgs) {
685
+ return callTxeHandler({
686
+ oracle: 'aztec_utl_getEphemeralLen',
687
+ inputs,
688
+ handler: ([slot]) => this.handlerAsUtility().getEphemeralLen(slot),
689
+ });
690
+ }
691
+
692
+ // eslint-disable-next-line camelcase
693
+ aztec_utl_removeEphemeral(...inputs: ForeignCallArgs) {
694
+ return callTxeHandler({
695
+ oracle: 'aztec_utl_removeEphemeral',
696
+ inputs,
697
+ handler: ([slot, index]) => this.handlerAsUtility().removeEphemeral(slot, index),
698
+ });
699
+ }
700
+
701
+ // eslint-disable-next-line camelcase
702
+ aztec_utl_clearEphemeral(...inputs: ForeignCallArgs) {
703
+ return callTxeHandler({
704
+ oracle: 'aztec_utl_clearEphemeral',
705
+ inputs,
706
+ handler: ([slot]) => this.handlerAsUtility().clearEphemeral(slot),
707
+ });
708
+ }
709
+
710
+ // TODO: I forgot to add a corresponding function here, when I introduced an oracle method to txe_oracle.ts.
711
+ // The compiler didn't throw an error, so it took me a while to learn of the existence of this file, and that I need
712
+ // to implement this function here. Isn't there a way to programmatically identify that this is missing, given the
713
+ // existence of a txe_oracle method?
714
+ // eslint-disable-next-line camelcase
715
+ aztec_utl_decryptAes128(...inputs: ForeignCallArgs) {
716
+ return callTxeHandler({
717
+ oracle: 'aztec_utl_decryptAes128',
718
+ inputs,
719
+ handler: ([ciphertext, iv, symKey]) => this.handlerAsUtility().decryptAes128(ciphertext, iv, symKey),
720
+ });
721
+ }
722
+
723
+ // eslint-disable-next-line camelcase
724
+ aztec_utl_getSharedSecrets(...inputs: ForeignCallArgs) {
725
+ return callTxeHandler({
726
+ oracle: 'aztec_utl_getSharedSecrets',
727
+ inputs,
728
+ handler: ([address, ephPksSlot, contractAddress]) =>
729
+ this.handlerAsUtility().getSharedSecrets(address, ephPksSlot, contractAddress),
730
+ });
731
+ }
732
+
733
+ // eslint-disable-next-line camelcase
734
+ aztec_utl_setContractSyncCacheInvalid(...inputs: ForeignCallArgs) {
735
+ return callTxeHandler({
736
+ oracle: 'aztec_utl_setContractSyncCacheInvalid',
737
+ inputs,
738
+ handler: ([contractAddress, scopes]) =>
739
+ this.handlerAsUtility().setContractSyncCacheInvalid(contractAddress, scopes),
740
+ });
741
+ }
742
+
743
+ // eslint-disable-next-line camelcase
744
+ aztec_utl_emitOffchainEffect(...inputs: ForeignCallArgs) {
745
+ return callTxeHandler({
746
+ oracle: 'aztec_utl_emitOffchainEffect',
747
+ inputs,
748
+ handler: ([data]) => {
749
+ // Record the raw payload against the currently-executing top-level call. The Noir side
750
+ // (via `env.offchain_messages()`) is responsible for decoding the protocol-reserved prefix
751
+ // (`OFFCHAIN_MESSAGE_IDENTIFIER`, recipient) and turning each payload into an `OffchainMessage` struct suitable
752
+ // for `offchain_receive`.
753
+ this.stateHandler.recordOffchainEffect(data);
754
+ },
755
+ });
756
+ }
757
+
758
+ // AVM opcodes
759
+
760
+ // eslint-disable-next-line camelcase
761
+ aztec_avm_emitPublicLog() {
762
+ return callTxeHandler({
763
+ oracle: 'aztec_avm_emitPublicLog',
764
+ inputs: [],
765
+ // TODO(#8811): Implement
766
+ handler: () => {},
767
+ });
768
+ }
769
+
770
+ // eslint-disable-next-line camelcase
771
+ aztec_avm_storageRead(...inputs: ForeignCallArgs) {
772
+ return callTxeHandler({
773
+ oracle: 'aztec_avm_storageRead',
774
+ inputs,
775
+ handler: ([slot, contractAddress]) => this.handlerAsAvm().storageRead(slot, contractAddress),
776
+ });
777
+ }
778
+
779
+ // eslint-disable-next-line camelcase
780
+ aztec_avm_storageWrite(...inputs: ForeignCallArgs) {
781
+ return callTxeHandler({
782
+ oracle: 'aztec_avm_storageWrite',
783
+ inputs,
784
+ handler: ([slot, value]) => this.handlerAsAvm().storageWrite(slot, value),
785
+ });
786
+ }
787
+
788
+ // eslint-disable-next-line camelcase
789
+ aztec_avm_getContractInstanceDeployer(...inputs: ForeignCallArgs) {
790
+ return callTxeHandler({
791
+ oracle: 'aztec_avm_getContractInstanceDeployer',
792
+ inputs,
793
+ handler: ([address]) => this.handlerAsAvm().getContractInstanceDeployer(address),
794
+ });
795
+ }
796
+
797
+ // eslint-disable-next-line camelcase
798
+ aztec_avm_getContractInstanceClassId(...inputs: ForeignCallArgs) {
799
+ return callTxeHandler({
800
+ oracle: 'aztec_avm_getContractInstanceClassId',
801
+ inputs,
802
+ handler: ([address]) => this.handlerAsAvm().getContractInstanceClassId(address),
803
+ });
804
+ }
805
+
806
+ // eslint-disable-next-line camelcase
807
+ aztec_avm_getContractInstanceInitializationHash(...inputs: ForeignCallArgs) {
808
+ return callTxeHandler({
809
+ oracle: 'aztec_avm_getContractInstanceInitializationHash',
810
+ inputs,
811
+ handler: ([address]) => this.handlerAsAvm().getContractInstanceInitializationHash(address),
812
+ });
813
+ }
814
+
815
+ // eslint-disable-next-line camelcase
816
+ aztec_avm_getContractInstanceImmutablesHash(...inputs: ForeignCallArgs) {
817
+ return callTxeHandler({
818
+ oracle: 'aztec_avm_getContractInstanceImmutablesHash',
819
+ inputs,
820
+ handler: ([address]) => this.handlerAsAvm().getContractInstanceImmutablesHash(address),
821
+ });
822
+ }
823
+
824
+ // eslint-disable-next-line camelcase
825
+ aztec_avm_sender() {
826
+ return callTxeHandler({
827
+ oracle: 'aztec_avm_sender',
828
+ inputs: [],
829
+ handler: () => this.handlerAsAvm().sender(),
830
+ });
831
+ }
832
+
833
+ // eslint-disable-next-line camelcase
834
+ aztec_avm_emitNullifier(...inputs: ForeignCallArgs) {
835
+ return callTxeHandler({
836
+ oracle: 'aztec_avm_emitNullifier',
837
+ inputs,
838
+ handler: ([nullifier]) => this.handlerAsAvm().emitNullifier(nullifier),
839
+ });
840
+ }
841
+
842
+ // eslint-disable-next-line camelcase
843
+ aztec_avm_emitNoteHash(...inputs: ForeignCallArgs) {
844
+ return callTxeHandler({
845
+ oracle: 'aztec_avm_emitNoteHash',
846
+ inputs,
847
+ handler: ([noteHash]) => this.handlerAsAvm().emitNoteHash(noteHash),
848
+ });
849
+ }
850
+
851
+ // eslint-disable-next-line camelcase
852
+ aztec_avm_nullifierExists(...inputs: ForeignCallArgs) {
853
+ return callTxeHandler({
854
+ oracle: 'aztec_avm_nullifierExists',
855
+ inputs,
856
+ handler: ([siloedNullifier]) => this.handlerAsAvm().nullifierExists(siloedNullifier),
857
+ });
858
+ }
859
+
860
+ // eslint-disable-next-line camelcase
861
+ aztec_avm_address() {
862
+ return callTxeHandler({
863
+ oracle: 'aztec_avm_address',
864
+ inputs: [],
865
+ handler: () => this.handlerAsAvm().address(),
866
+ });
867
+ }
868
+
869
+ // eslint-disable-next-line camelcase
870
+ aztec_avm_blockNumber() {
871
+ return callTxeHandler({
872
+ oracle: 'aztec_avm_blockNumber',
873
+ inputs: [],
874
+ handler: () => this.handlerAsAvm().blockNumber(),
875
+ });
876
+ }
877
+
878
+ // eslint-disable-next-line camelcase
879
+ aztec_avm_timestamp() {
880
+ return callTxeHandler({
881
+ oracle: 'aztec_avm_timestamp',
882
+ inputs: [],
883
+ handler: () => this.handlerAsAvm().timestamp(),
884
+ });
885
+ }
886
+
887
+ // eslint-disable-next-line camelcase
888
+ aztec_avm_isStaticCall() {
889
+ return callTxeHandler({
890
+ oracle: 'aztec_avm_isStaticCall',
891
+ inputs: [],
892
+ handler: () => this.handlerAsAvm().isStaticCall(),
893
+ });
894
+ }
895
+
896
+ // eslint-disable-next-line camelcase
897
+ aztec_avm_chainId() {
898
+ return callTxeHandler({
899
+ oracle: 'aztec_avm_chainId',
900
+ inputs: [],
901
+ handler: () => this.handlerAsAvm().chainId(),
902
+ });
903
+ }
904
+
905
+ // eslint-disable-next-line camelcase
906
+ aztec_avm_version() {
907
+ return callTxeHandler({
908
+ oracle: 'aztec_avm_version',
909
+ inputs: [],
910
+ handler: () => this.handlerAsAvm().version(),
911
+ });
912
+ }
913
+
914
+ // eslint-disable-next-line camelcase
915
+ aztec_avm_returndataSize() {
916
+ return callTxeHandler({
917
+ oracle: 'aztec_avm_returndataSize',
918
+ inputs: [],
919
+ handler: () => this.handlerAsAvm().returndataSize(),
920
+ });
921
+ }
922
+
923
+ // eslint-disable-next-line camelcase
924
+ aztec_avm_returndataCopy(...inputs: ForeignCallArgs) {
925
+ return callTxeHandler({
926
+ oracle: 'aztec_avm_returndataCopy',
927
+ inputs,
928
+ handler: ([rdOffset, copySize]) => this.handlerAsAvm().returndataCopy(rdOffset, copySize),
929
+ });
930
+ }
931
+
932
+ // eslint-disable-next-line camelcase
933
+ aztec_avm_call(...inputs: ForeignCallArgs) {
934
+ return callTxeHandler({
935
+ oracle: 'aztec_avm_call',
936
+ inputs,
937
+ handler: ([l2Gas, daGas, address, argsLength, args]) =>
938
+ this.handlerAsAvm().call(l2Gas, daGas, address, argsLength, args),
939
+ });
940
+ }
941
+
942
+ // eslint-disable-next-line camelcase
943
+ aztec_avm_staticCall(...inputs: ForeignCallArgs) {
944
+ return callTxeHandler({
945
+ oracle: 'aztec_avm_staticCall',
946
+ inputs,
947
+ handler: ([l2Gas, daGas, address, argsLength, args]) =>
948
+ this.handlerAsAvm().staticCall(l2Gas, daGas, address, argsLength, args),
949
+ });
950
+ }
951
+
952
+ // eslint-disable-next-line camelcase
953
+ aztec_avm_successCopy() {
954
+ return callTxeHandler({
955
+ oracle: 'aztec_avm_successCopy',
956
+ inputs: [],
957
+ handler: () => this.handlerAsAvm().successCopy(),
958
+ });
959
+ }
960
+
961
+ // TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
962
+ // eslint-disable-next-line camelcase
963
+ aztec_txe_privateCallNewFlow(...inputs: ForeignCallArgs) {
964
+ return callTxeHandler({
965
+ oracle: 'aztec_txe_privateCallNewFlow',
966
+ inputs,
967
+ handler: async ([
968
+ from,
969
+ targetContractAddress,
970
+ functionSelector,
971
+ args,
972
+ argsHash,
973
+ isStaticCall,
974
+ additionalScopes,
975
+ authorizedUtilityCallTargets,
976
+ gasSettings,
977
+ ]) => {
978
+ const returnValues = await this.stateHandler.withTopLevelCallTracking(async () => {
979
+ const { returnValues, offchainEffects } = await this.handlerAsTxe().privateCallNewFlow(
980
+ from?.value,
981
+ targetContractAddress,
982
+ functionSelector,
983
+ args,
984
+ argsHash,
985
+ isStaticCall,
986
+ additionalScopes,
987
+ this.stateHandler.getCurrentJob(),
988
+ authorizedUtilityCallTargets,
989
+ gasSettings,
990
+ );
991
+
992
+ // Private execution collects offchain effects inside PXE's PrivateExecutionOracle rather than
993
+ // round-tripping them through `aztec_utl_emitOffchainEffect`, so the session buffer is empty
994
+ // at this point. Drain the effects from the execution tree into the session buffer so the
995
+ // next `env.offchain_messages()` call in the test sees them.
996
+ for (const data of offchainEffects) {
997
+ this.stateHandler.recordOffchainEffect(data);
998
+ }
999
+
1000
+ // TODO(F-335): Avoid doing the following call here.
1001
+ await this.stateHandler.cycleJob();
1002
+
1003
+ if (isStaticCall) {
1004
+ // Static calls revert their checkpoint and mine no block, so there is no tx hash to tag
1005
+ // offchain effects with. Querying `getLastTxEffects()` here would return an unrelated
1006
+ // predecessor tx.
1007
+ return { result: returnValues };
1008
+ }
1009
+ const { txHash } = await this.handlerAsTxe().getLastTxEffects();
1010
+ return { result: returnValues, txHash: txHash.hash };
1011
+ });
1012
+
1013
+ return returnValues;
1014
+ },
1015
+ });
1016
+ }
1017
+
1018
+ // TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
1019
+ // eslint-disable-next-line camelcase
1020
+ aztec_txe_executeUtilityFunction(...inputs: ForeignCallArgs) {
1021
+ return callTxeHandler({
1022
+ oracle: 'aztec_txe_executeUtilityFunction',
1023
+ inputs,
1024
+ handler: async ([targetContractAddress, functionSelector, args, authorizedUtilityCallTargets]) => {
1025
+ const returnValues = await this.stateHandler.withTopLevelCallTracking(async () => {
1026
+ const returnValues = await this.handlerAsTxe().executeUtilityFunction(
1027
+ targetContractAddress,
1028
+ functionSelector,
1029
+ args,
1030
+ this.stateHandler.getCurrentJob(),
1031
+ authorizedUtilityCallTargets,
1032
+ );
1033
+
1034
+ // TODO(F-335): Avoid doing the following call here.
1035
+ await this.stateHandler.cycleJob();
1036
+
1037
+ return { result: returnValues };
1038
+ });
1039
+
1040
+ return returnValues;
1041
+ },
1042
+ });
1043
+ }
1044
+
1045
+ // TODO(F-674): Move orchestration logic into the handler so the transport layer is pure serialize->delegate->deserialize.
1046
+ // eslint-disable-next-line camelcase
1047
+ aztec_txe_publicCallNewFlow(...inputs: ForeignCallArgs) {
1048
+ return callTxeHandler({
1049
+ oracle: 'aztec_txe_publicCallNewFlow',
1050
+ inputs,
1051
+ handler: async ([from, address, calldata, isStaticCall, gasSettings]) => {
1052
+ const returnValues = await this.stateHandler.withTopLevelCallTracking(async () => {
1053
+ const returnValues = await this.handlerAsTxe().publicCallNewFlow(
1054
+ from?.value,
1055
+ address,
1056
+ calldata,
1057
+ isStaticCall,
1058
+ gasSettings,
1059
+ );
1060
+
1061
+ // TODO(F-335): Avoid doing the following call here.
1062
+ await this.stateHandler.cycleJob();
1063
+
1064
+ if (isStaticCall) {
1065
+ // See equivalent branch in `aztec_txe_privateCallNewFlow`.
1066
+ return { result: returnValues };
1067
+ }
1068
+ const { txHash } = await this.handlerAsTxe().getLastTxEffects();
1069
+ return { result: returnValues, txHash: txHash.hash };
1070
+ });
1071
+
1072
+ return returnValues;
1073
+ },
1074
+ });
1075
+ }
1076
+
1077
+ // eslint-disable-next-line camelcase
1078
+ aztec_prv_getSenderForTags() {
1079
+ return callTxeHandler({
1080
+ oracle: 'aztec_prv_getSenderForTags',
1081
+ inputs: [],
1082
+ handler: () => this.handlerAsPrivate().getSenderForTags(),
1083
+ });
1084
+ }
1085
+
1086
+ // eslint-disable-next-line camelcase
1087
+ aztec_prv_getAppTaggingSecret(...inputs: ForeignCallArgs) {
1088
+ return callTxeHandler({
1089
+ oracle: 'aztec_prv_getAppTaggingSecret',
1090
+ inputs,
1091
+ handler: ([sender, recipient]) => this.handlerAsPrivate().getAppTaggingSecret(sender, recipient),
1092
+ });
1093
+ }
1094
+
1095
+ // eslint-disable-next-line camelcase
1096
+ aztec_prv_getNextTaggingIndex(...inputs: ForeignCallArgs) {
1097
+ return callTxeHandler({
1098
+ oracle: 'aztec_prv_getNextTaggingIndex',
1099
+ inputs,
1100
+ handler: ([secret, deliveryMode]) => this.handlerAsPrivate().getNextTaggingIndex(secret, deliveryMode),
1101
+ });
1102
+ }
1103
+ }