@aztec/txe 0.0.1-commit.c2eed6949 → 0.0.1-commit.c52d6e7

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 (168) hide show
  1. package/dest/AuthRegistry-QVGDDH5X.js +3 -0
  2. package/dest/AuthRegistry-QVGDDH5X.js.map +7 -0
  3. package/dest/ContractClassRegistry-PVNCKGG7.js +3 -0
  4. package/dest/ContractClassRegistry-PVNCKGG7.js.map +7 -0
  5. package/dest/ContractInstanceRegistry-WLOZKTR6.js +3 -0
  6. package/dest/ContractInstanceRegistry-WLOZKTR6.js.map +7 -0
  7. package/dest/FeeJuice-MAQJU53K.js +3 -0
  8. package/dest/FeeJuice-MAQJU53K.js.map +7 -0
  9. package/dest/HandshakeRegistry-GY5CPEPS.js +3 -0
  10. package/dest/HandshakeRegistry-GY5CPEPS.js.map +7 -0
  11. package/dest/MultiCallEntrypoint-QG5H33ZZ.js +3 -0
  12. package/dest/MultiCallEntrypoint-QG5H33ZZ.js.map +7 -0
  13. package/dest/SchnorrAccount-ADD65DYA.js +3 -0
  14. package/dest/SchnorrAccount-ADD65DYA.js.map +7 -0
  15. package/dest/SchnorrInitializerlessAccount-TWGKRUSY.js +3 -0
  16. package/dest/SchnorrInitializerlessAccount-TWGKRUSY.js.map +7 -0
  17. package/dest/bin/check_txe_oracle_version.d.ts +2 -0
  18. package/dest/bin/check_txe_oracle_version.d.ts.map +1 -0
  19. package/dest/bin/check_txe_oracle_version.js +22 -0
  20. package/dest/bin/index.js +3 -30
  21. package/dest/bin/index.js.map +7 -0
  22. package/dest/bin/oracle_test_server.d.ts +3 -0
  23. package/dest/bin/oracle_test_server.d.ts.map +1 -0
  24. package/dest/bin/oracle_test_server.js +41 -0
  25. package/dest/chunk-32UHX7YY.js +3 -0
  26. package/dest/chunk-32UHX7YY.js.map +7 -0
  27. package/dest/chunk-RVEPNDEP.js +304 -0
  28. package/dest/chunk-RVEPNDEP.js.map +7 -0
  29. package/dest/chunk-XWIMXLKD.js +258 -0
  30. package/dest/chunk-XWIMXLKD.js.map +7 -0
  31. package/dest/constants.d.ts +5 -1
  32. package/dest/constants.d.ts.map +1 -1
  33. package/dest/constants.js +9 -1
  34. package/dest/dispatcher_pool.d.ts +67 -0
  35. package/dest/dispatcher_pool.d.ts.map +1 -0
  36. package/dest/dispatcher_pool.js +286 -0
  37. package/dest/index.d.ts +51 -7
  38. package/dest/index.d.ts.map +1 -1
  39. package/dest/index.js +72 -190
  40. package/dest/metafile.json +38833 -0
  41. package/dest/msgpackr_fr_extension.d.ts +2 -0
  42. package/dest/msgpackr_fr_extension.d.ts.map +1 -0
  43. package/dest/msgpackr_fr_extension.js +21 -0
  44. package/dest/oracle/interfaces.d.ts +47 -9
  45. package/dest/oracle/interfaces.d.ts.map +1 -1
  46. package/dest/oracle/tagging_secret_strategy.d.ts +12 -0
  47. package/dest/oracle/tagging_secret_strategy.d.ts.map +1 -0
  48. package/dest/oracle/tagging_secret_strategy.js +12 -0
  49. package/dest/oracle/test-resolver/default_fixtures.d.ts +16 -0
  50. package/dest/oracle/test-resolver/default_fixtures.d.ts.map +1 -0
  51. package/dest/oracle/test-resolver/default_fixtures.js +200 -0
  52. package/dest/oracle/test-resolver/index.d.ts +9 -0
  53. package/dest/oracle/test-resolver/index.d.ts.map +1 -0
  54. package/dest/oracle/test-resolver/index.js +32 -0
  55. package/dest/oracle/test-resolver/resolver.d.ts +48 -0
  56. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
  57. package/dest/oracle/test-resolver/resolver.js +181 -0
  58. package/dest/oracle/txe_oracle_public_context.d.ts +26 -2
  59. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  60. package/dest/oracle/txe_oracle_public_context.js +49 -1
  61. package/dest/oracle/txe_oracle_registry.d.ts +172 -0
  62. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
  63. package/dest/oracle/txe_oracle_registry.js +767 -0
  64. package/dest/oracle/txe_oracle_top_level_context.d.ts +58 -18
  65. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  66. package/dest/oracle/txe_oracle_top_level_context.js +558 -304
  67. package/dest/oracle/txe_oracle_version.d.ts +17 -0
  68. package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
  69. package/dest/oracle/txe_oracle_version.js +14 -0
  70. package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
  71. package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
  72. package/dest/oracle/txe_private_execution_oracle.js +15 -0
  73. package/dest/rpc_server.d.ts +14 -0
  74. package/dest/rpc_server.d.ts.map +1 -0
  75. package/dest/rpc_server.js +78 -0
  76. package/dest/rpc_translator.d.ts +116 -233
  77. package/dest/rpc_translator.d.ts.map +1 -1
  78. package/dest/rpc_translator.js +799 -636
  79. package/dest/server.bundle.js +3 -0
  80. package/dest/server.bundle.js.map +7 -0
  81. package/dest/state_machine/archiver.d.ts +4 -3
  82. package/dest/state_machine/archiver.d.ts.map +1 -1
  83. package/dest/state_machine/archiver.js +24 -14
  84. package/dest/state_machine/dummy_p2p_client.d.ts +16 -7
  85. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  86. package/dest/state_machine/dummy_p2p_client.js +25 -4
  87. package/dest/state_machine/global_variable_builder.d.ts +10 -6
  88. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  89. package/dest/state_machine/global_variable_builder.js +8 -5
  90. package/dest/state_machine/index.d.ts +11 -7
  91. package/dest/state_machine/index.d.ts.map +1 -1
  92. package/dest/state_machine/index.js +50 -14
  93. package/dest/state_machine/mock_epoch_cache.d.ts +2 -2
  94. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
  95. package/dest/state_machine/mock_epoch_cache.js +3 -3
  96. package/dest/state_machine/synchronizer.d.ts +10 -2
  97. package/dest/state_machine/synchronizer.d.ts.map +1 -1
  98. package/dest/state_machine/synchronizer.js +19 -6
  99. package/dest/txe_session.d.ts +92 -20
  100. package/dest/txe_session.d.ts.map +1 -1
  101. package/dest/txe_session.js +324 -69
  102. package/dest/utils/block_creation.d.ts +2 -2
  103. package/dest/utils/block_creation.d.ts.map +1 -1
  104. package/dest/utils/block_creation.js +2 -2
  105. package/dest/utils/encoding.d.ts +194 -0
  106. package/dest/utils/encoding.d.ts.map +1 -0
  107. package/dest/{util → utils}/encoding.js +7 -2
  108. package/dest/{util → utils}/expected_failure_error.d.ts +1 -1
  109. package/dest/utils/expected_failure_error.d.ts.map +1 -0
  110. package/dest/utils/tx_effect_creation.d.ts +1 -1
  111. package/dest/utils/tx_effect_creation.d.ts.map +1 -1
  112. package/dest/utils/tx_effect_creation.js +0 -1
  113. package/dest/{util → utils}/txe_account_store.d.ts +1 -1
  114. package/dest/utils/txe_account_store.d.ts.map +1 -0
  115. package/dest/utils/txe_artifact_resolver.d.ts +37 -0
  116. package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
  117. package/dest/utils/txe_artifact_resolver.js +161 -0
  118. package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
  119. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
  120. package/dest/{util → utils}/txe_public_contract_data_source.js +7 -4
  121. package/dest/worker.bundle.js +3 -0
  122. package/dest/worker.bundle.js.map +7 -0
  123. package/dest/worker.d.ts +2 -0
  124. package/dest/worker.d.ts.map +1 -0
  125. package/dest/worker.js +92 -0
  126. package/package.json +38 -21
  127. package/src/bin/check_txe_oracle_version.ts +31 -0
  128. package/src/bin/index.ts +11 -2
  129. package/src/bin/oracle_test_server.ts +51 -0
  130. package/src/constants.ts +11 -1
  131. package/src/dispatcher_pool.ts +317 -0
  132. package/src/index.ts +99 -227
  133. package/src/msgpackr_fr_extension.ts +23 -0
  134. package/src/oracle/interfaces.ts +47 -8
  135. package/src/oracle/tagging_secret_strategy.ts +25 -0
  136. package/src/oracle/test-resolver/default_fixtures.ts +271 -0
  137. package/src/oracle/test-resolver/index.ts +44 -0
  138. package/src/oracle/test-resolver/resolver.ts +245 -0
  139. package/src/oracle/txe_oracle_public_context.ts +62 -0
  140. package/src/oracle/txe_oracle_registry.ts +556 -0
  141. package/src/oracle/txe_oracle_top_level_context.ts +364 -117
  142. package/src/oracle/txe_oracle_version.ts +17 -0
  143. package/src/oracle/txe_private_execution_oracle.ts +30 -0
  144. package/src/rpc_server.ts +87 -0
  145. package/src/rpc_translator.ts +889 -901
  146. package/src/state_machine/archiver.ts +37 -16
  147. package/src/state_machine/dummy_p2p_client.ts +44 -11
  148. package/src/state_machine/global_variable_builder.ts +12 -11
  149. package/src/state_machine/index.ts +62 -32
  150. package/src/state_machine/mock_epoch_cache.ts +4 -4
  151. package/src/state_machine/synchronizer.ts +27 -6
  152. package/src/txe_session.ts +561 -85
  153. package/src/utils/block_creation.ts +2 -1
  154. package/src/{util → utils}/encoding.ts +8 -2
  155. package/src/utils/tx_effect_creation.ts +0 -2
  156. package/src/utils/txe_artifact_resolver.ts +217 -0
  157. package/src/{util → utils}/txe_public_contract_data_source.ts +6 -4
  158. package/src/worker.ts +98 -0
  159. package/dest/util/encoding.d.ts +0 -788
  160. package/dest/util/encoding.d.ts.map +0 -1
  161. package/dest/util/expected_failure_error.d.ts.map +0 -1
  162. package/dest/util/txe_account_store.d.ts.map +0 -1
  163. package/dest/util/txe_public_contract_data_source.d.ts +0 -20
  164. package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
  165. /package/dest/{util → utils}/expected_failure_error.js +0 -0
  166. /package/dest/{util → utils}/txe_account_store.js +0 -0
  167. /package/src/{util → utils}/expected_failure_error.ts +0 -0
  168. /package/src/{util → utils}/txe_account_store.ts +0 -0
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The TXE oracle version constants are used to check that the oracle interface used for tests is in sync between
3
+ * TXE and Aztec.nr. This is separate from the contract oracle version in `pxe/src/oracle_version.ts`, which covers
4
+ * oracles used during contract execution by PXE.
5
+ *
6
+ * The Noir counterparts are in `noir-projects/labs/aztec-nr/aztec/src/test/helpers/txe_oracles.nr`.
7
+ */
8
+ export declare const TXE_ORACLE_VERSION_MAJOR = 4;
9
+ export declare const TXE_ORACLE_VERSION_MINOR = 1;
10
+ /**
11
+ * This hash is computed from the TXE-specific entries in `TXE_ORACLE_REGISTRY` and is used to
12
+ * detect when those interfaces change. When it does, bump:
13
+ * - TXE_ORACLE_VERSION_MAJOR (and reset MINOR to 0) for breaking changes, or
14
+ * - TXE_ORACLE_VERSION_MINOR for additive changes (new oracle method added).
15
+ */
16
+ export declare const TXE_ORACLE_INTERFACE_HASH = "1a6c578d0a47cd8dd7dae07fd00abe781225a73920c596d873afcc061c0e4284";
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV92ZXJzaW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3JhY2xlL3R4ZV9vcmFjbGVfdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxlQUFPLE1BQU0sd0JBQXdCLElBQUksQ0FBQztBQUMxQyxlQUFPLE1BQU0sd0JBQXdCLElBQUksQ0FBQztBQUUxQzs7Ozs7R0FLRztBQUNILGVBQU8sTUFBTSx5QkFBeUIscUVBQXFFLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txe_oracle_version.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_version.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,qEAAqE,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The TXE oracle version constants are used to check that the oracle interface used for tests is in sync between
3
+ * TXE and Aztec.nr. This is separate from the contract oracle version in `pxe/src/oracle_version.ts`, which covers
4
+ * oracles used during contract execution by PXE.
5
+ *
6
+ * The Noir counterparts are in `noir-projects/labs/aztec-nr/aztec/src/test/helpers/txe_oracles.nr`.
7
+ */ export const TXE_ORACLE_VERSION_MAJOR = 4;
8
+ export const TXE_ORACLE_VERSION_MINOR = 1;
9
+ /**
10
+ * This hash is computed from the TXE-specific entries in `TXE_ORACLE_REGISTRY` and is used to
11
+ * detect when those interfaces change. When it does, bump:
12
+ * - TXE_ORACLE_VERSION_MAJOR (and reset MINOR to 0) for breaking changes, or
13
+ * - TXE_ORACLE_VERSION_MINOR for additive changes (new oracle method added).
14
+ */ export const TXE_ORACLE_INTERFACE_HASH = '1a6c578d0a47cd8dd7dae07fd00abe781225a73920c596d873afcc061c0e4284';
@@ -0,0 +1,17 @@
1
+ import type { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { PrivateExecutionOracle } from '@aztec/pxe/simulator';
3
+ import type { FunctionSelector } from '@aztec/stdlib/abi';
4
+ import type { AztecAddress } from '@aztec/stdlib/aztec-address';
5
+ /**
6
+ * TXE-specific subclass of PrivateExecutionOracle that forbids operations not supported in
7
+ * TestEnvironment::private_context. TXE uses dedicated oracle flows (e.g. private_call) instead.
8
+ */
9
+ export declare class TXEPrivateExecutionOracle extends PrivateExecutionOracle {
10
+ callPrivateFunction(_targetContractAddress: AztecAddress, _functionSelector: FunctionSelector, _argsHash: Fr, _sideEffectCounter: number, _isStaticCall: boolean): Promise<{
11
+ endSideEffectCounter: Fr;
12
+ returnsHash: Fr;
13
+ }>;
14
+ assertValidPublicCalldata(_calldataHash: Fr): Promise<void>;
15
+ notifyRevertiblePhaseStart(_minRevertibleSideEffectCounter: number): Promise<void>;
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX3ByaXZhdGVfZXhlY3V0aW9uX29yYWNsZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfcHJpdmF0ZV9leGVjdXRpb25fb3JhY2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFFaEU7OztHQUdHO0FBQ0gscUJBQWEseUJBQTBCLFNBQVEsc0JBQXNCO0lBQzFELG1CQUFtQixDQUMxQixzQkFBc0IsRUFBRSxZQUFZLEVBQ3BDLGlCQUFpQixFQUFFLGdCQUFnQixFQUNuQyxTQUFTLEVBQUUsRUFBRSxFQUNiLGtCQUFrQixFQUFFLE1BQU0sRUFDMUIsYUFBYSxFQUFFLE9BQU8sR0FDckIsT0FBTyxDQUFDO1FBQUUsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1FBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQTtLQUFFLENBQUMsQ0FJeEQ7SUFFUSx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FFbkU7SUFFUSwwQkFBMEIsQ0FBQywrQkFBK0IsRUFBRSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUUxRjtDQUNGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txe_private_execution_oracle.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_private_execution_oracle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;GAGG;AACH,qBAAa,yBAA0B,SAAQ,sBAAsB;IAC1D,mBAAmB,CAC1B,sBAAsB,EAAE,YAAY,EACpC,iBAAiB,EAAE,gBAAgB,EACnC,SAAS,EAAE,EAAE,EACb,kBAAkB,EAAE,MAAM,EAC1B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC;QAAE,oBAAoB,EAAE,EAAE,CAAC;QAAC,WAAW,EAAE,EAAE,CAAA;KAAE,CAAC,CAIxD;IAEQ,yBAAyB,CAAC,aAAa,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnE;IAEQ,0BAA0B,CAAC,+BAA+B,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1F;CACF"}
@@ -0,0 +1,15 @@
1
+ import { PrivateExecutionOracle } from '@aztec/pxe/simulator';
2
+ /**
3
+ * TXE-specific subclass of PrivateExecutionOracle that forbids operations not supported in
4
+ * TestEnvironment::private_context. TXE uses dedicated oracle flows (e.g. private_call) instead.
5
+ */ export class TXEPrivateExecutionOracle extends PrivateExecutionOracle {
6
+ callPrivateFunction(_targetContractAddress, _functionSelector, _argsHash, _sideEffectCounter, _isStaticCall) {
7
+ throw new Error('Contract calls are forbidden inside a `TestEnvironment::private_context`, use `private_call` instead');
8
+ }
9
+ assertValidPublicCalldata(_calldataHash) {
10
+ throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
11
+ }
12
+ notifyRevertiblePhaseStart(_minRevertibleSideEffectCounter) {
13
+ throw new Error('Enqueueing public calls is not supported in TestEnvironment::private_context');
14
+ }
15
+ }
@@ -0,0 +1,14 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ /**
3
+ * Creates the TXE RPC server. With `TXE_WORKERS=1` oracle calls run on the main thread (no
4
+ * worker_threads, no IPC overhead). With any other value oracle calls are
5
+ * routed to a pool of worker threads sized to that value, sticky by `session_id`.
6
+ *
7
+ * Each incoming TCP socket is tagged with the `session_id` of the first oracle call it carries —
8
+ * nargo uses one HTTP client per test, so the socket-to-session mapping is 1:1. When the socket
9
+ * closes (end of test), the dispatcher disposes the session and frees its world state + LMDB.
10
+ *
11
+ * Lives in its own module so the worker bundle does not pull in the HTTP server stack.
12
+ */
13
+ export declare function createTXERpcServer(logger: Logger): Promise<import("@aztec/foundation/json-rpc/server").SafeJsonRpcServer>;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjX3NlcnZlci5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JwY19zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFlcEQ7Ozs7Ozs7Ozs7R0FVRztBQUNILHdCQUFzQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSwwRUE0Q3REIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc_server.d.ts","sourceRoot":"","sources":["../src/rpc_server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAepD;;;;;;;;;;GAUG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,0EA4CtD"}
@@ -0,0 +1,78 @@
1
+ import { createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
2
+ import { TXEDispatcherPool, buildSharedContractStore } from './dispatcher_pool.js';
3
+ import { TXEDispatcher, TXEDispatcherApiSchema } from './index.js';
4
+ /**
5
+ * Symbol used to tag an incoming TCP socket with the `session_id` it has been associated with.
6
+ * Hidden under a Symbol so we don't risk colliding with anything koa or http core adds.
7
+ */ const SESSION_SYMBOL = Symbol('txeSessionId');
8
+ /**
9
+ * Creates the TXE RPC server. With `TXE_WORKERS=1` oracle calls run on the main thread (no
10
+ * worker_threads, no IPC overhead). With any other value oracle calls are
11
+ * routed to a pool of worker threads sized to that value, sticky by `session_id`.
12
+ *
13
+ * Each incoming TCP socket is tagged with the `session_id` of the first oracle call it carries —
14
+ * nargo uses one HTTP client per test, so the socket-to-session mapping is 1:1. When the socket
15
+ * closes (end of test), the dispatcher disposes the session and frees its world state + LMDB.
16
+ *
17
+ * Lives in its own module so the worker bundle does not pull in the HTTP server stack.
18
+ */ export async function createTXERpcServer(logger) {
19
+ const workerCount = Number(process.env.TXE_WORKERS);
20
+ let dispatcher;
21
+ if (workerCount === 1) {
22
+ const { dataDir, schnorrClassId } = await buildSharedContractStore();
23
+ dispatcher = new TXEDispatcher(logger, {
24
+ contractStoreSourceDir: dataDir,
25
+ schnorrClassId
26
+ });
27
+ } else {
28
+ dispatcher = new TXEDispatcherPool(logger, {
29
+ workers: Number.isFinite(workerCount) && workerCount > 1 ? workerCount : undefined
30
+ });
31
+ }
32
+ const server = createSafeJsonRpcServer(dispatcher, TXEDispatcherApiSchema, {
33
+ http200OnError: true,
34
+ middlewares: [
35
+ async (ctx, next)=>{
36
+ // The body parser runs further down the chain, so `ctx.request.body` is populated only
37
+ // after `next()` resolves.
38
+ await next();
39
+ const socket = ctx.req.socket;
40
+ if (socket[SESSION_SYMBOL] !== undefined) {
41
+ return;
42
+ }
43
+ const body = ctx.request.body;
44
+ const sessionId = body && typeof body === 'object' && 'params' in body ? extractSessionId(body.params) : undefined;
45
+ if (sessionId === undefined) {
46
+ return;
47
+ }
48
+ socket[SESSION_SYMBOL] = sessionId;
49
+ logger.debug(`Tagged socket with session`, {
50
+ sessionId,
51
+ remoteAddress: socket.remoteAddress,
52
+ remotePort: socket.remotePort
53
+ });
54
+ socket.once('close', ()=>{
55
+ logger.debug(`Disposing session on socket close`, {
56
+ sessionId
57
+ });
58
+ void dispatcher.disposeSession(sessionId);
59
+ });
60
+ }
61
+ ]
62
+ });
63
+ return server;
64
+ }
65
+ // Extracts `session_id` from a JSON-RPC `params` array. Always a `number` because session_id
66
+ // comes off `JSON.parse`, which never produces BigInt; values above MAX_SAFE_INTEGER lose
67
+ // precision but still work as a Map key.
68
+ function extractSessionId(params) {
69
+ if (!Array.isArray(params) || params.length === 0) {
70
+ return undefined;
71
+ }
72
+ const first = params[0];
73
+ if (first && typeof first === 'object' && 'session_id' in first) {
74
+ const sid = first.session_id;
75
+ return typeof sid === 'number' ? sid : undefined;
76
+ }
77
+ return undefined;
78
+ }
@@ -1,9 +1,7 @@
1
- import type { ContractInstanceWithAddress } from '@aztec/aztec.js/contracts';
2
- import { type IMiscOracle, type IPrivateExecutionOracle, type IUtilityExecutionOracle } from '@aztec/pxe/simulator';
3
- import { type ContractArtifact } from '@aztec/stdlib/abi';
1
+ import type { IMiscOracle, IPrivateExecutionOracle, IUtilityExecutionOracle } from '@aztec/pxe/simulator';
4
2
  import type { IAvmExecutionOracle, ITxeExecutionOracle } from './oracle/interfaces.js';
5
3
  import type { TXESessionStateHandler } from './txe_session.js';
6
- import { type ForeignCallArray, type ForeignCallSingle } from './util/encoding.js';
4
+ import type { ForeignCallArgs } from './utils/encoding.js';
7
5
  export declare class UnavailableOracleError extends Error {
8
6
  constructor(oracleName: string);
9
7
  }
@@ -25,233 +23,118 @@ export declare class RPCTranslator {
25
23
  private handlerAsPrivate;
26
24
  private handlerAsAvm;
27
25
  private handlerAsTxe;
28
- aztec_txe_setTopLevelTXEContext(): Promise<{
29
- values: (string | ForeignCallArray)[];
30
- }>;
31
- aztec_txe_setPrivateTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle, foreignAnchorBlockNumberIsSome: ForeignCallSingle, foreignAnchorBlockNumberValue: ForeignCallSingle): Promise<{
32
- values: (string | ForeignCallArray)[];
33
- }>;
34
- aztec_txe_setPublicTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle): Promise<{
35
- values: (string | ForeignCallArray)[];
36
- }>;
37
- aztec_txe_setUtilityTXEContext(foreignContractAddressIsSome: ForeignCallSingle, foreignContractAddressValue: ForeignCallSingle): Promise<{
38
- values: (string | ForeignCallArray)[];
39
- }>;
40
- aztec_txe_getDefaultAddress(): {
41
- values: (string | ForeignCallArray)[];
42
- };
43
- aztec_txe_getNextBlockNumber(): Promise<{
44
- values: (string | ForeignCallArray)[];
45
- }>;
46
- aztec_txe_getNextBlockTimestamp(): Promise<{
47
- values: (string | ForeignCallArray)[];
48
- }>;
49
- aztec_txe_advanceBlocksBy(foreignBlocks: ForeignCallSingle): Promise<{
50
- values: (string | ForeignCallArray)[];
51
- }>;
52
- aztec_txe_advanceTimestampBy(foreignDuration: ForeignCallSingle): {
53
- values: (string | ForeignCallArray)[];
54
- };
55
- aztec_txe_deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: ForeignCallSingle): Promise<{
56
- values: (string | ForeignCallArray)[];
57
- }>;
58
- aztec_txe_createAccount(foreignSecret: ForeignCallSingle): Promise<{
59
- values: (string | ForeignCallArray)[];
60
- }>;
61
- aztec_txe_addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: ForeignCallSingle): Promise<{
62
- values: (string | ForeignCallArray)[];
63
- }>;
64
- aztec_txe_addAuthWitness(foreignAddress: ForeignCallSingle, foreignMessageHash: ForeignCallSingle): Promise<{
65
- values: (string | ForeignCallArray)[];
66
- }>;
67
- aztec_utl_assertCompatibleOracleVersion(foreignVersion: ForeignCallSingle): {
68
- values: (string | ForeignCallArray)[];
69
- };
70
- aztec_utl_getRandomField(): {
71
- values: (string | ForeignCallArray)[];
72
- };
73
- aztec_txe_getLastBlockTimestamp(): Promise<{
74
- values: (string | ForeignCallArray)[];
75
- }>;
76
- aztec_txe_getLastTxEffects(): Promise<{
77
- values: (string | ForeignCallArray)[];
78
- }>;
79
- aztec_txe_getPrivateEvents(foreignSelector: ForeignCallSingle, foreignContractAddress: ForeignCallSingle, foreignScope: ForeignCallSingle): Promise<{
80
- values: (string | ForeignCallArray)[];
81
- }>;
82
- aztec_prv_storeInExecutionCache(foreignValues: ForeignCallArray, foreignHash: ForeignCallSingle): {
83
- values: (string | ForeignCallArray)[];
84
- };
85
- aztec_prv_loadFromExecutionCache(foreignHash: ForeignCallSingle): Promise<{
86
- values: (string | ForeignCallArray)[];
87
- }>;
88
- aztec_utl_log(foreignLevel: ForeignCallSingle, foreignMessage: ForeignCallArray, _foreignLength: ForeignCallSingle, foreignFields: ForeignCallArray): Promise<{
89
- values: (string | ForeignCallArray)[];
90
- }>;
91
- aztec_utl_storageRead(foreignBlockHash: ForeignCallSingle, foreignContractAddress: ForeignCallSingle, foreignStartStorageSlot: ForeignCallSingle, foreignNumberOfElements: ForeignCallSingle): Promise<{
92
- values: (string | ForeignCallArray)[];
93
- }>;
94
- aztec_utl_getPublicDataWitness(foreignBlockHash: ForeignCallSingle, foreignLeafSlot: ForeignCallSingle): Promise<{
95
- values: (string | ForeignCallArray)[];
96
- }>;
97
- aztec_utl_getNotes(foreignOwnerIsSome: ForeignCallSingle, foreignOwnerValue: ForeignCallSingle, foreignStorageSlot: ForeignCallSingle, foreignNumSelects: ForeignCallSingle, foreignSelectByIndexes: ForeignCallArray, foreignSelectByOffsets: ForeignCallArray, foreignSelectByLengths: ForeignCallArray, foreignSelectValues: ForeignCallArray, foreignSelectComparators: ForeignCallArray, foreignSortByIndexes: ForeignCallArray, foreignSortByOffsets: ForeignCallArray, foreignSortByLengths: ForeignCallArray, foreignSortOrder: ForeignCallArray, foreignLimit: ForeignCallSingle, foreignOffset: ForeignCallSingle, foreignStatus: ForeignCallSingle, foreignMaxNotes: ForeignCallSingle, foreignPackedHintedNoteLength: ForeignCallSingle): Promise<{
98
- values: (string | ForeignCallArray)[];
99
- }>;
100
- aztec_prv_notifyCreatedNote(foreignOwner: ForeignCallSingle, foreignStorageSlot: ForeignCallSingle, foreignRandomness: ForeignCallSingle, foreignNoteTypeId: ForeignCallSingle, foreignNote: ForeignCallArray, foreignNoteHash: ForeignCallSingle, foreignCounter: ForeignCallSingle): {
101
- values: (string | ForeignCallArray)[];
102
- };
103
- aztec_prv_notifyNullifiedNote(foreignInnerNullifier: ForeignCallSingle, foreignNoteHash: ForeignCallSingle, foreignCounter: ForeignCallSingle): Promise<{
104
- values: (string | ForeignCallArray)[];
105
- }>;
106
- aztec_prv_notifyCreatedNullifier(foreignInnerNullifier: ForeignCallSingle): Promise<{
107
- values: (string | ForeignCallArray)[];
108
- }>;
109
- aztec_prv_isNullifierPending(foreignInnerNullifier: ForeignCallSingle, foreignContractAddress: ForeignCallSingle): Promise<{
110
- values: (string | ForeignCallArray)[];
111
- }>;
112
- aztec_utl_checkNullifierExists(foreignInnerNullifier: ForeignCallSingle): Promise<{
113
- values: (string | ForeignCallArray)[];
114
- }>;
115
- aztec_utl_getContractInstance(foreignAddress: ForeignCallSingle): Promise<{
116
- values: (string | ForeignCallArray)[];
117
- }>;
118
- aztec_utl_tryGetPublicKeysAndPartialAddress(foreignAddress: ForeignCallSingle): Promise<{
119
- values: (string | ForeignCallArray)[];
120
- }>;
121
- aztec_utl_getKeyValidationRequest(foreignPkMHash: ForeignCallSingle): Promise<{
122
- values: (string | ForeignCallArray)[];
123
- }>;
124
- aztec_prv_callPrivateFunction(_foreignTargetContractAddress: ForeignCallSingle, _foreignFunctionSelector: ForeignCallSingle, _foreignArgsHash: ForeignCallSingle, _foreignSideEffectCounter: ForeignCallSingle, _foreignIsStaticCall: ForeignCallSingle): void;
125
- aztec_utl_getNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
126
- values: (string | ForeignCallArray)[];
127
- }>;
128
- aztec_utl_getAuthWitness(foreignMessageHash: ForeignCallSingle): Promise<{
129
- values: (string | ForeignCallArray)[];
130
- }>;
131
- aztec_prv_validatePublicCalldata(_foreignCalldataHash: ForeignCallSingle): void;
132
- aztec_prv_notifyRevertiblePhaseStart(_foreignMinRevertibleSideEffectCounter: ForeignCallSingle): void;
133
- aztec_prv_inRevertiblePhase(foreignSideEffectCounter: ForeignCallSingle): Promise<{
134
- values: (string | ForeignCallArray)[];
135
- }>;
136
- aztec_utl_getUtilityContext(): {
137
- values: (string | ForeignCallArray)[];
138
- };
139
- aztec_utl_getBlockHeader(foreignBlockNumber: ForeignCallSingle): Promise<{
140
- values: (string | ForeignCallArray)[];
141
- }>;
142
- aztec_utl_getNoteHashMembershipWitness(foreignAnchorBlockHash: ForeignCallSingle, foreignNoteHash: ForeignCallSingle): Promise<{
143
- values: (string | ForeignCallArray)[];
144
- }>;
145
- aztec_utl_getBlockHashMembershipWitness(foreignAnchorBlockHash: ForeignCallSingle, foreignBlockHash: ForeignCallSingle): Promise<{
146
- values: (string | ForeignCallArray)[];
147
- }>;
148
- aztec_utl_getLowNullifierMembershipWitness(foreignBlockHash: ForeignCallSingle, foreignNullifier: ForeignCallSingle): Promise<{
149
- values: (string | ForeignCallArray)[];
150
- }>;
151
- aztec_utl_fetchTaggedLogs(foreignPendingTaggedLogArrayBaseSlot: ForeignCallSingle): Promise<{
152
- values: (string | ForeignCallArray)[];
153
- }>;
154
- aztec_utl_validateAndStoreEnqueuedNotesAndEvents(foreignContractAddress: ForeignCallSingle, foreignNoteValidationRequestsArrayBaseSlot: ForeignCallSingle, foreignEventValidationRequestsArrayBaseSlot: ForeignCallSingle, foreignMaxNotePackedLen: ForeignCallSingle, foreignMaxEventSerializedLen: ForeignCallSingle): Promise<{
155
- values: (string | ForeignCallArray)[];
156
- }>;
157
- aztec_utl_bulkRetrieveLogs(foreignContractAddress: ForeignCallSingle, foreignLogRetrievalRequestsArrayBaseSlot: ForeignCallSingle, foreignLogRetrievalResponsesArrayBaseSlot: ForeignCallSingle): Promise<{
158
- values: (string | ForeignCallArray)[];
159
- }>;
160
- aztec_utl_utilityResolveMessageContexts(foreignContractAddress: ForeignCallSingle, foreignMessageContextRequestsArrayBaseSlot: ForeignCallSingle, foreignMessageContextResponsesArrayBaseSlot: ForeignCallSingle): Promise<{
161
- values: (string | ForeignCallArray)[];
162
- }>;
163
- aztec_utl_storeCapsule(foreignContractAddress: ForeignCallSingle, foreignSlot: ForeignCallSingle, foreignCapsule: ForeignCallArray): Promise<{
164
- values: (string | ForeignCallArray)[];
165
- }>;
166
- aztec_utl_loadCapsule(foreignContractAddress: ForeignCallSingle, foreignSlot: ForeignCallSingle, foreignTSize: ForeignCallSingle): Promise<{
167
- values: (string | ForeignCallArray)[];
168
- }>;
169
- aztec_utl_deleteCapsule(foreignContractAddress: ForeignCallSingle, foreignSlot: ForeignCallSingle): Promise<{
170
- values: (string | ForeignCallArray)[];
171
- }>;
172
- aztec_utl_copyCapsule(foreignContractAddress: ForeignCallSingle, foreignSrcSlot: ForeignCallSingle, foreignDstSlot: ForeignCallSingle, foreignNumEntries: ForeignCallSingle): Promise<{
173
- values: (string | ForeignCallArray)[];
174
- }>;
175
- aztec_utl_tryAes128Decrypt(foreignCiphertextBVecStorage: ForeignCallArray, foreignCiphertextLength: ForeignCallSingle, foreignIv: ForeignCallArray, foreignSymKey: ForeignCallArray): Promise<{
176
- values: (string | ForeignCallArray)[];
177
- }>;
178
- aztec_utl_getSharedSecret(foreignAddress: ForeignCallSingle, foreignEphPKField0: ForeignCallSingle, foreignEphPKField1: ForeignCallSingle, foreignEphPKField2: ForeignCallSingle): Promise<{
179
- values: (string | ForeignCallArray)[];
180
- }>;
181
- aztec_utl_invalidateContractSyncCache(foreignContractAddress: ForeignCallSingle, foreignScopes: ForeignCallArray, foreignScopeCount: ForeignCallSingle): Promise<{
182
- values: (string | ForeignCallArray)[];
183
- }>;
184
- aztec_utl_emitOffchainEffect(_foreignData: ForeignCallArray): void;
185
- aztec_avm_emitPublicLog(_foreignMessage: ForeignCallArray): {
186
- values: (string | ForeignCallArray)[];
187
- };
188
- aztec_avm_storageRead(foreignSlot: ForeignCallSingle, foreignContractAddress: ForeignCallSingle): Promise<{
189
- values: (string | ForeignCallArray)[];
190
- }>;
191
- aztec_avm_storageWrite(foreignSlot: ForeignCallSingle, foreignValue: ForeignCallSingle): Promise<{
192
- values: (string | ForeignCallArray)[];
193
- }>;
194
- aztec_avm_getContractInstanceDeployer(foreignAddress: ForeignCallSingle): Promise<{
195
- values: (string | ForeignCallArray)[];
196
- }>;
197
- aztec_avm_getContractInstanceClassId(foreignAddress: ForeignCallSingle): Promise<{
198
- values: (string | ForeignCallArray)[];
199
- }>;
200
- aztec_avm_getContractInstanceInitializationHash(foreignAddress: ForeignCallSingle): Promise<{
201
- values: (string | ForeignCallArray)[];
202
- }>;
203
- aztec_avm_sender(): Promise<{
204
- values: (string | ForeignCallArray)[];
205
- }>;
206
- aztec_avm_emitNullifier(foreignNullifier: ForeignCallSingle): Promise<{
207
- values: (string | ForeignCallArray)[];
208
- }>;
209
- aztec_avm_emitNoteHash(foreignNoteHash: ForeignCallSingle): Promise<{
210
- values: (string | ForeignCallArray)[];
211
- }>;
212
- aztec_avm_nullifierExists(foreignSiloedNullifier: ForeignCallSingle): Promise<{
213
- values: (string | ForeignCallArray)[];
214
- }>;
215
- aztec_avm_address(): Promise<{
216
- values: (string | ForeignCallArray)[];
217
- }>;
218
- aztec_avm_blockNumber(): Promise<{
219
- values: (string | ForeignCallArray)[];
220
- }>;
221
- aztec_avm_timestamp(): Promise<{
222
- values: (string | ForeignCallArray)[];
223
- }>;
224
- aztec_avm_isStaticCall(): Promise<{
225
- values: (string | ForeignCallArray)[];
226
- }>;
227
- aztec_avm_chainId(): Promise<{
228
- values: (string | ForeignCallArray)[];
229
- }>;
230
- aztec_avm_version(): Promise<{
231
- values: (string | ForeignCallArray)[];
232
- }>;
233
- aztec_avm_returndataSize(): void;
234
- aztec_avm_returndataCopy(_foreignRdOffset: ForeignCallSingle, _foreignCopySize: ForeignCallSingle): void;
235
- aztec_avm_call(_foreignL2Gas: ForeignCallSingle, _foreignDaGas: ForeignCallSingle, _foreignAddress: ForeignCallSingle, _foreignLength: ForeignCallSingle, _foreignArgs: ForeignCallArray): void;
236
- aztec_avm_staticCall(_foreignL2Gas: ForeignCallSingle, _foreignDaGas: ForeignCallSingle, _foreignAddress: ForeignCallSingle, _foreignLength: ForeignCallSingle, _foreignArgs: ForeignCallArray): void;
237
- aztec_avm_successCopy(): void;
238
- aztec_txe_privateCallNewFlow(foreignFrom: ForeignCallSingle, foreignTargetContractAddress: ForeignCallSingle, foreignFunctionSelector: ForeignCallSingle, foreignArgs: ForeignCallArray, foreignArgsHash: ForeignCallSingle, foreignIsStaticCall: ForeignCallSingle): Promise<{
239
- values: (string | ForeignCallArray)[];
240
- }>;
241
- aztec_txe_executeUtilityFunction(foreignTargetContractAddress: ForeignCallSingle, foreignFunctionSelector: ForeignCallSingle, foreignArgs: ForeignCallArray): Promise<{
242
- values: (string | ForeignCallArray)[];
243
- }>;
244
- aztec_txe_publicCallNewFlow(foreignFrom: ForeignCallSingle, foreignAddress: ForeignCallSingle, foreignCalldata: ForeignCallArray, foreignIsStaticCall: ForeignCallSingle): Promise<{
245
- values: (string | ForeignCallArray)[];
246
- }>;
247
- aztec_prv_getSenderForTags(): Promise<{
248
- values: (string | ForeignCallArray)[];
249
- }>;
250
- aztec_prv_setSenderForTags(foreignSenderForTags: ForeignCallSingle): Promise<{
251
- values: (string | ForeignCallArray)[];
252
- }>;
253
- aztec_prv_getNextAppTagAsSender(foreignSender: ForeignCallSingle, foreignRecipient: ForeignCallSingle): Promise<{
254
- values: (string | ForeignCallArray)[];
255
- }>;
26
+ aztec_txe_assertCompatibleOracleVersion(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
27
+ aztec_txe_setTopLevelTXEContext(): Promise<import("./utils/encoding.js").ForeignCallResult>;
28
+ aztec_txe_setPrivateTXEContext(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
29
+ aztec_txe_setPublicTXEContext(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
30
+ aztec_txe_setUtilityTXEContext(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
31
+ aztec_txe_getDefaultAddress(): Promise<import("./utils/encoding.js").ForeignCallResult>;
32
+ aztec_txe_getNextBlockNumber(): Promise<import("./utils/encoding.js").ForeignCallResult>;
33
+ aztec_txe_getNextBlockTimestamp(): Promise<import("./utils/encoding.js").ForeignCallResult>;
34
+ aztec_txe_advanceBlocksBy(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
35
+ aztec_txe_advanceTimestampBy(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
36
+ aztec_txe_deploy(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
37
+ aztec_txe_createAccount(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
38
+ aztec_txe_addAccount(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
39
+ aztec_txe_addAuthWitness(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
40
+ aztec_txe_sendL1ToL2Message(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
41
+ aztec_txe_setTaggingSecretStrategies(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
42
+ aztec_txe_setAuthorizeAllUtilityCallTargets(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
43
+ aztec_misc_assertCompatibleOracleVersion(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
44
+ aztec_misc_getRandomField(): Promise<import("./utils/encoding.js").ForeignCallResult>;
45
+ aztec_txe_getLastBlockTimestamp(): Promise<import("./utils/encoding.js").ForeignCallResult>;
46
+ aztec_txe_getLastTxEffects(): Promise<import("./utils/encoding.js").ForeignCallResult>;
47
+ aztec_txe_getLastCallOffchainEffects(): Promise<import("./utils/encoding.js").ForeignCallResult>;
48
+ aztec_txe_getLastCallContext(): Promise<import("./utils/encoding.js").ForeignCallResult>;
49
+ aztec_txe_getPrivateEvents(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
50
+ aztec_prv_setHashPreimage(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
51
+ aztec_prv_getHashPreimage(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
52
+ aztec_misc_log(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
53
+ aztec_utl_getFromPublicStorage(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
54
+ aztec_utl_getPublicDataWitness(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
55
+ aztec_utl_getNotes(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
56
+ aztec_prv_notifyCreatedNote(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
57
+ aztec_prv_notifyNullifiedNote(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
58
+ aztec_prv_notifyCreatedNullifier(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
59
+ aztec_prv_isNullifierPending(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
60
+ aztec_utl_doesNullifierExist(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
61
+ aztec_utl_getContractInstance(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
62
+ aztec_utl_getPublicKeysAndPartialAddress(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
63
+ aztec_utl_getKeyValidationRequest(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
64
+ aztec_prv_callPrivateFunction(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
65
+ aztec_utl_getNullifierMembershipWitness(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
66
+ aztec_utl_getL1ToL2MembershipWitnessV2(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
67
+ aztec_utl_getAuthWitness(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
68
+ aztec_prv_assertValidPublicCalldata(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
69
+ aztec_prv_notifyRevertiblePhaseStart(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
70
+ aztec_prv_isExecutionInRevertiblePhase(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
71
+ aztec_utl_getUtilityContext(): Promise<import("./utils/encoding.js").ForeignCallResult>;
72
+ aztec_utl_getBlockHeader(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
73
+ aztec_utl_getNoteHashMembershipWitness(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
74
+ aztec_utl_getBlockHashMembershipWitness(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
75
+ aztec_utl_areBlockHashesInArchive(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
76
+ aztec_utl_getLowNullifierMembershipWitness(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
77
+ aztec_utl_getPendingTaggedLogsV2(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
78
+ aztec_utl_validateAndStoreEnqueuedNotesAndEvents(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
79
+ aztec_utl_getLogsByTagV2(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
80
+ aztec_utl_getResolvedTxs(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
81
+ aztec_utl_getTxEffects(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
82
+ aztec_utl_setCapsule(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
83
+ aztec_utl_getCapsule(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
84
+ aztec_utl_deleteCapsule(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
85
+ aztec_utl_copyCapsule(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
86
+ aztec_utl_pushEphemeral(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
87
+ aztec_utl_popEphemeral(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
88
+ aztec_utl_getEphemeral(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
89
+ aztec_utl_setEphemeral(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
90
+ aztec_utl_getEphemeralLen(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
91
+ aztec_utl_removeEphemeral(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
92
+ aztec_utl_clearEphemeral(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
93
+ aztec_utl_pushTransient(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
94
+ aztec_utl_popTransient(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
95
+ aztec_utl_getTransient(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
96
+ aztec_utl_setTransient(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
97
+ aztec_utl_getTransientLen(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
98
+ aztec_utl_removeTransient(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
99
+ aztec_utl_clearTransient(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
100
+ aztec_utl_decryptAes128(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
101
+ aztec_utl_getSharedSecrets(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
102
+ aztec_utl_setContractSyncCacheInvalid(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
103
+ aztec_utl_emitOffchainEffect(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
104
+ aztec_utl_recordFact(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
105
+ aztec_utl_deleteFactCollection(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
106
+ aztec_utl_getFactCollection(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
107
+ aztec_utl_getFactCollectionsByType(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
108
+ aztec_utl_callUtilityFunction(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
109
+ aztec_avm_emitPublicLog(): Promise<import("./utils/encoding.js").ForeignCallResult>;
110
+ aztec_avm_storageRead(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
111
+ aztec_avm_storageWrite(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
112
+ aztec_avm_getContractInstanceDeployer(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
113
+ aztec_avm_getContractInstanceClassId(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
114
+ aztec_avm_getContractInstanceInitializationHash(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
115
+ aztec_avm_getContractInstanceImmutablesHash(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
116
+ aztec_avm_sender(): Promise<import("./utils/encoding.js").ForeignCallResult>;
117
+ aztec_avm_emitNullifier(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
118
+ aztec_avm_emitNoteHash(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
119
+ aztec_avm_nullifierExists(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
120
+ aztec_avm_address(): Promise<import("./utils/encoding.js").ForeignCallResult>;
121
+ aztec_avm_blockNumber(): Promise<import("./utils/encoding.js").ForeignCallResult>;
122
+ aztec_avm_timestamp(): Promise<import("./utils/encoding.js").ForeignCallResult>;
123
+ aztec_avm_isStaticCall(): Promise<import("./utils/encoding.js").ForeignCallResult>;
124
+ aztec_avm_chainId(): Promise<import("./utils/encoding.js").ForeignCallResult>;
125
+ aztec_avm_version(): Promise<import("./utils/encoding.js").ForeignCallResult>;
126
+ aztec_avm_returndataSize(): Promise<import("./utils/encoding.js").ForeignCallResult>;
127
+ aztec_avm_returndataCopy(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
128
+ aztec_avm_call(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
129
+ aztec_avm_staticCall(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
130
+ aztec_avm_successCopy(): Promise<import("./utils/encoding.js").ForeignCallResult>;
131
+ aztec_txe_privateCallNewFlow(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
132
+ aztec_txe_executeUtilityFunction(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
133
+ aztec_txe_publicCallNewFlow(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
134
+ aztec_prv_getSenderForTags(): Promise<import("./utils/encoding.js").ForeignCallResult>;
135
+ aztec_prv_resolveTaggingStrategy(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
136
+ aztec_prv_resolveCustomRequest(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
137
+ aztec_prv_getAppTaggingSecret(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
138
+ aztec_prv_getNextTaggingIndex(...inputs: ForeignCallArgs): Promise<import("./utils/encoding.js").ForeignCallResult>;
256
139
  }
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjX3RyYW5zbGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ycGNfdHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBSTdFLE9BQU8sRUFDTCxLQUFLLFdBQVcsRUFDaEIsS0FBSyx1QkFBdUIsRUFDNUIsS0FBSyx1QkFBdUIsRUFFN0IsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsS0FBSyxnQkFBZ0IsRUFBaUQsTUFBTSxtQkFBbUIsQ0FBQztBQUl6RyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxFQUNMLEtBQUssZ0JBQWdCLEVBQ3JCLEtBQUssaUJBQWlCLEVBWXZCLE1BQU0sb0JBQW9CLENBQUM7QUFLNUIscUJBQWEsc0JBQXVCLFNBQVEsS0FBSztJQUMvQyxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBRTdCO0NBQ0Y7QUFFRCxxQkFBYSxhQUFhO0lBV3RCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLE9BQU8sQ0FBQyxhQUFhO0lBWHZCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDVSxZQUFZLEVBQUUsc0JBQXNCLEVBQ3BDLGFBQWEsRUFDakIsV0FBVyxHQUNYLHVCQUF1QixHQUN2Qix1QkFBdUIsR0FDdkIsbUJBQW1CLEdBQ25CLG1CQUFtQixFQUNyQjtJQUtKLE9BQU8sQ0FBQyxhQUFhO0lBUXJCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFReEIsT0FBTyxDQUFDLGdCQUFnQjtJQVF4QixPQUFPLENBQUMsWUFBWTtJQVFwQixPQUFPLENBQUMsWUFBWTtJQVdkLCtCQUErQjs7T0FJcEM7SUFHSyw4QkFBOEIsQ0FDbEMsNEJBQTRCLEVBQUUsaUJBQWlCLEVB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
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnBjX3RyYW5zbGF0b3IuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ycGNfdHJhbnNsYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXZGLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0QsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFM0QscUJBQWEsc0JBQXVCLFNBQVEsS0FBSztJQUMvQyxZQUFZLFVBQVUsRUFBRSxNQUFNLEVBRTdCO0NBQ0Y7QUFFRCxxQkFBYSxhQUFhO0lBV3RCLE9BQU8sQ0FBQyxZQUFZO0lBQ3BCLE9BQU8sQ0FBQyxhQUFhO0lBWHZCOzs7Ozs7OztPQVFHO0lBQ0gsWUFDVSxZQUFZLEVBQUUsc0JBQXNCLEVBQ3BDLGFBQWEsRUFDakIsV0FBVyxHQUNYLHVCQUF1QixHQUN2Qix1QkFBdUIsR0FDdkIsbUJBQW1CLEdBQ25CLG1CQUFtQixFQUNyQjtJQUtKLE9BQU8sQ0FBQyxhQUFhO0lBUXJCLE9BQU8sQ0FBQyxnQkFBZ0I7SUFReEIsT0FBTyxDQUFDLGdCQUFnQjtJQVF4QixPQUFPLENBQUMsWUFBWTtJQVFwQixPQUFPLENBQUMsWUFBWTtJQVNwQix1Q0FBdUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxlQUFlLDREQVFqRTtJQUtELCtCQUErQiw2REFNOUI7SUFHRCw4QkFBOEIsQ0FBQyxHQUFHLE1BQU0sRUFBRSxlQUFlLDREQU94RDtJQUdELDZCQUE2QixDQUFDLEdBQUcsTUFBTSxFQUFFLGVBQWUsNERBTXZEO0lBR0QsOEJBQThCLENBQUMsR0FBRyxNQUFNLEVBQUUsZUFBZSw0REFN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