@aztec/txe 5.0.0-private.20260318 → 5.0.0-rc.1

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 (154) hide show
  1. package/dest/AuthRegistry-CPGFQR26.js +3 -0
  2. package/dest/AuthRegistry-CPGFQR26.js.map +7 -0
  3. package/dest/ContractClassRegistry-EHVIHGEK.js +3 -0
  4. package/dest/ContractClassRegistry-EHVIHGEK.js.map +7 -0
  5. package/dest/ContractInstanceRegistry-DWZDXHRG.js +3 -0
  6. package/dest/ContractInstanceRegistry-DWZDXHRG.js.map +7 -0
  7. package/dest/FeeJuice-MI32ZO7B.js +3 -0
  8. package/dest/FeeJuice-MI32ZO7B.js.map +7 -0
  9. package/dest/HandshakeRegistry-3KSP3ITH.js +3 -0
  10. package/dest/HandshakeRegistry-3KSP3ITH.js.map +7 -0
  11. package/dest/MultiCallEntrypoint-IU7HYFYE.js +3 -0
  12. package/dest/MultiCallEntrypoint-IU7HYFYE.js.map +7 -0
  13. package/dest/SchnorrAccount-6TUE7JX4.js +3 -0
  14. package/dest/SchnorrAccount-6TUE7JX4.js.map +7 -0
  15. package/dest/SchnorrInitializerlessAccount-S3DU2DJK.js +3 -0
  16. package/dest/SchnorrInitializerlessAccount-S3DU2DJK.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 +61 -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-5U25VAFR.js +265 -0
  26. package/dest/chunk-5U25VAFR.js.map +7 -0
  27. package/dest/chunk-BJVAAXNA.js +3 -0
  28. package/dest/chunk-BJVAAXNA.js.map +7 -0
  29. package/dest/chunk-UPW55EJX.js +304 -0
  30. package/dest/chunk-UPW55EJX.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 +8 -0
  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 +70 -190
  40. package/dest/metafile.json +38829 -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 +33 -8
  45. package/dest/oracle/interfaces.d.ts.map +1 -1
  46. package/dest/oracle/test-resolver/fixtures.d.ts +43 -0
  47. package/dest/oracle/test-resolver/fixtures.d.ts.map +1 -0
  48. package/dest/oracle/test-resolver/fixtures.js +39 -0
  49. package/dest/oracle/test-resolver/index.d.ts +9 -0
  50. package/dest/oracle/test-resolver/index.d.ts.map +1 -0
  51. package/dest/oracle/test-resolver/index.js +33 -0
  52. package/dest/oracle/test-resolver/resolver.d.ts +34 -0
  53. package/dest/oracle/test-resolver/resolver.d.ts.map +1 -0
  54. package/dest/oracle/test-resolver/resolver.js +114 -0
  55. package/dest/oracle/txe_oracle_public_context.d.ts +26 -2
  56. package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
  57. package/dest/oracle/txe_oracle_public_context.js +43 -1
  58. package/dest/oracle/txe_oracle_registry.d.ts +14 -0
  59. package/dest/oracle/txe_oracle_registry.d.ts.map +1 -0
  60. package/dest/oracle/txe_oracle_registry.js +562 -0
  61. package/dest/oracle/txe_oracle_top_level_context.d.ts +32 -18
  62. package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -1
  63. package/dest/oracle/txe_oracle_top_level_context.js +151 -55
  64. package/dest/oracle/txe_oracle_version.d.ts +17 -0
  65. package/dest/oracle/txe_oracle_version.d.ts.map +1 -0
  66. package/dest/oracle/txe_oracle_version.js +14 -0
  67. package/dest/oracle/txe_private_execution_oracle.d.ts +17 -0
  68. package/dest/oracle/txe_private_execution_oracle.d.ts.map +1 -0
  69. package/dest/oracle/txe_private_execution_oracle.js +15 -0
  70. package/dest/rpc_server.d.ts +14 -0
  71. package/dest/rpc_server.d.ts.map +1 -0
  72. package/dest/rpc_server.js +78 -0
  73. package/dest/rpc_translator.d.ts +103 -230
  74. package/dest/rpc_translator.d.ts.map +1 -1
  75. package/dest/rpc_translator.js +697 -616
  76. package/dest/server.bundle.js +3 -0
  77. package/dest/server.bundle.js.map +7 -0
  78. package/dest/state_machine/archiver.d.ts +4 -3
  79. package/dest/state_machine/archiver.d.ts.map +1 -1
  80. package/dest/state_machine/archiver.js +26 -15
  81. package/dest/state_machine/dummy_p2p_client.d.ts +14 -7
  82. package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
  83. package/dest/state_machine/dummy_p2p_client.js +19 -4
  84. package/dest/state_machine/global_variable_builder.d.ts +9 -4
  85. package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
  86. package/dest/state_machine/global_variable_builder.js +9 -3
  87. package/dest/state_machine/index.d.ts +4 -2
  88. package/dest/state_machine/index.d.ts.map +1 -1
  89. package/dest/state_machine/index.js +11 -3
  90. package/dest/state_machine/mock_epoch_cache.d.ts +16 -3
  91. package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
  92. package/dest/state_machine/mock_epoch_cache.js +29 -2
  93. package/dest/state_machine/synchronizer.js +1 -1
  94. package/dest/txe_session.d.ts +85 -17
  95. package/dest/txe_session.d.ts.map +1 -1
  96. package/dest/txe_session.js +245 -40
  97. package/dest/utils/encoding.d.ts +191 -0
  98. package/dest/utils/encoding.d.ts.map +1 -0
  99. package/dest/{util → utils}/encoding.js +7 -2
  100. package/dest/{util → utils}/expected_failure_error.d.ts +1 -1
  101. package/dest/utils/expected_failure_error.d.ts.map +1 -0
  102. package/dest/{util → utils}/txe_account_store.d.ts +1 -1
  103. package/dest/utils/txe_account_store.d.ts.map +1 -0
  104. package/dest/utils/txe_artifact_resolver.d.ts +37 -0
  105. package/dest/utils/txe_artifact_resolver.d.ts.map +1 -0
  106. package/dest/utils/txe_artifact_resolver.js +161 -0
  107. package/dest/utils/txe_public_contract_data_source.d.ts +20 -0
  108. package/dest/utils/txe_public_contract_data_source.d.ts.map +1 -0
  109. package/dest/{util → utils}/txe_public_contract_data_source.js +1 -3
  110. package/dest/worker.bundle.js +3 -0
  111. package/dest/worker.bundle.js.map +7 -0
  112. package/dest/worker.d.ts +2 -0
  113. package/dest/worker.d.ts.map +1 -0
  114. package/dest/worker.js +92 -0
  115. package/package.json +38 -21
  116. package/src/bin/check_txe_oracle_version.ts +70 -0
  117. package/src/bin/index.ts +11 -2
  118. package/src/bin/oracle_test_server.ts +51 -0
  119. package/src/constants.ts +10 -0
  120. package/src/dispatcher_pool.ts +317 -0
  121. package/src/index.ts +97 -227
  122. package/src/msgpackr_fr_extension.ts +23 -0
  123. package/src/oracle/interfaces.ts +29 -7
  124. package/src/oracle/test-resolver/fixtures.ts +84 -0
  125. package/src/oracle/test-resolver/index.ts +45 -0
  126. package/src/oracle/test-resolver/resolver.ts +165 -0
  127. package/src/oracle/txe_oracle_public_context.ts +60 -0
  128. package/src/oracle/txe_oracle_registry.ts +401 -0
  129. package/src/oracle/txe_oracle_top_level_context.ts +185 -64
  130. package/src/oracle/txe_oracle_version.ts +17 -0
  131. package/src/oracle/txe_private_execution_oracle.ts +30 -0
  132. package/src/rpc_server.ts +87 -0
  133. package/src/rpc_translator.ts +767 -892
  134. package/src/state_machine/archiver.ts +38 -16
  135. package/src/state_machine/dummy_p2p_client.ts +35 -11
  136. package/src/state_machine/global_variable_builder.ts +18 -3
  137. package/src/state_machine/index.ts +17 -5
  138. package/src/state_machine/mock_epoch_cache.ts +38 -3
  139. package/src/state_machine/synchronizer.ts +1 -1
  140. package/src/txe_session.ts +437 -50
  141. package/src/{util → utils}/encoding.ts +8 -2
  142. package/src/utils/txe_artifact_resolver.ts +217 -0
  143. package/src/{util → utils}/txe_public_contract_data_source.ts +0 -2
  144. package/src/worker.ts +98 -0
  145. package/dest/util/encoding.d.ts +0 -720
  146. package/dest/util/encoding.d.ts.map +0 -1
  147. package/dest/util/expected_failure_error.d.ts.map +0 -1
  148. package/dest/util/txe_account_store.d.ts.map +0 -1
  149. package/dest/util/txe_public_contract_data_source.d.ts +0 -20
  150. package/dest/util/txe_public_contract_data_source.d.ts.map +0 -1
  151. /package/dest/{util → utils}/expected_failure_error.js +0 -0
  152. /package/dest/{util → utils}/txe_account_store.js +0 -0
  153. /package/src/{util → utils}/expected_failure_error.ts +0 -0
  154. /package/src/{util → utils}/txe_account_store.ts +0 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXNncGFja3JfZnJfZXh0ZW5zaW9uLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvbXNncGFja3JfZnJfZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msgpackr_fr_extension.d.ts","sourceRoot":"","sources":["../src/msgpackr_fr_extension.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { Fr } from '@aztec/foundation/curves/bn254';
2
+ import { addExtension } from 'msgpackr';
3
+ // `@aztec/native/msgpack_channel` registers a msgpackr extension that packs `Fr` instances to
4
+ // their raw 32-byte buffer for the C++ world-state side to deserialize. Because `@aztec/native`
5
+ // is externalized in TXE's esbuild config (it loads a `.node` binary that can't be bundled),
6
+ // the `Fr` class the extension is keyed on belongs to the *external* `@aztec/foundation`
7
+ // module instance — a different class identity than the `Fr` bundled into the TXE worker /
8
+ // bin. msgpackr's extension match uses `instanceof`, so bundled `Fr` instances slip through
9
+ // and msgpackr falls back to `Fr.toJSON()` (returns `Fr.toString()` — a `0x...` hex string).
10
+ // The C++ side then sees a string where a 32-byte binary was expected and throws
11
+ // `msgpack::type_error` whose `what()` is literally `"std::bad_cast"`.
12
+ //
13
+ // Fix: register the same extension under the BUNDLED `Fr` class identity. msgpackr's extension
14
+ // table holds an entry per `Class`, so both Fr classes now resolve to the same `write` callback
15
+ // and produce the same wire format. Imported as a side-effect from `./index.js` so both the
16
+ // worker (via `./worker.ts`) and the main-thread RPC server (via `./rpc_server.ts`) get the
17
+ // registration before any `sendMessage` runs.
18
+ addExtension({
19
+ Class: Fr,
20
+ write: (fr)=>fr.toBuffer()
21
+ });
@@ -1,11 +1,11 @@
1
- import type { ContractArtifact } from '@aztec/aztec.js/abi';
2
1
  import { CompleteAddress } from '@aztec/aztec.js/addresses';
3
- import type { ContractInstanceWithAddress } from '@aztec/aztec.js/contracts';
4
2
  import { TxHash } from '@aztec/aztec.js/tx';
5
3
  import { BlockNumber } from '@aztec/foundation/branded-types';
6
4
  import type { Fr } from '@aztec/foundation/curves/bn254';
7
5
  import type { EventSelector, FunctionSelector } from '@aztec/stdlib/abi';
8
6
  import type { AztecAddress } from '@aztec/stdlib/aztec-address';
7
+ import type { GasSettings } from '@aztec/stdlib/gas';
8
+ import type { PrivateLog } from '@aztec/stdlib/logs';
9
9
  import type { UInt64 } from '@aztec/stdlib/types';
10
10
  /**
11
11
  * Oracle methods associated with the execution of an Aztec #[external("public")] function.
@@ -28,6 +28,27 @@ export interface IAvmExecutionOracle {
28
28
  nullifierExists(siloedNullifier: Fr): Promise<boolean>;
29
29
  storageWrite(slot: Fr, value: Fr): Promise<void>;
30
30
  storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr>;
31
+ getContractInstanceDeployer(address: AztecAddress): Promise<{
32
+ member: Fr;
33
+ exists: boolean;
34
+ }>;
35
+ getContractInstanceClassId(address: AztecAddress): Promise<{
36
+ member: Fr;
37
+ exists: boolean;
38
+ }>;
39
+ getContractInstanceInitializationHash(address: AztecAddress): Promise<{
40
+ member: Fr;
41
+ exists: boolean;
42
+ }>;
43
+ getContractInstanceImmutablesHash(address: AztecAddress): Promise<{
44
+ member: Fr;
45
+ exists: boolean;
46
+ }>;
47
+ returndataSize(): Promise<Fr>;
48
+ returndataCopy(rdOffset: number, copySize: number): Promise<Fr[]>;
49
+ call(l2Gas: number, daGas: number, address: AztecAddress, argsLength: number, args: Fr[]): Promise<Fr[]>;
50
+ staticCall(l2Gas: number, daGas: number, address: AztecAddress, argsLength: number, args: Fr[]): Promise<Fr[]>;
51
+ successCopy(): Promise<Fr>;
31
52
  }
32
53
  /**
33
54
  * Oracle methods associated with the execution of an Aztec Noir test.
@@ -39,20 +60,24 @@ export interface ITxeExecutionOracle {
39
60
  getNextBlockTimestamp(): Promise<UInt64>;
40
61
  advanceBlocksBy(blocks: number): Promise<void>;
41
62
  advanceTimestampBy(duration: UInt64): void;
42
- deploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: Fr): Promise<void>;
63
+ deploy(contractPath: string, initializer: string, args: Fr[], secret: Fr, salt: Fr, deployer: AztecAddress): Promise<Fr[]>;
43
64
  createAccount(secret: Fr): Promise<CompleteAddress>;
44
- addAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<CompleteAddress>;
65
+ addAccount(secret: Fr): Promise<CompleteAddress>;
45
66
  addAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
46
67
  getLastBlockTimestamp(): Promise<bigint>;
47
68
  getLastTxEffects(): Promise<{
48
69
  txHash: TxHash;
49
70
  noteHashes: Fr[];
50
71
  nullifiers: Fr[];
72
+ privateLogs: PrivateLog[];
51
73
  }>;
52
74
  getPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
53
- privateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], argsHash: Fr, isStaticCall: boolean, jobId: string): Promise<Fr[]>;
54
- executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string): Promise<Fr[]>;
55
- publicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
75
+ privateCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], argsHash: Fr, isStaticCall: boolean, additionalScopes: AztecAddress[], jobId: string, authorizedUtilityCallTargets: AztecAddress[], gasSettings: GasSettings): Promise<{
76
+ returnValues: Fr[];
77
+ offchainEffects: Fr[][];
78
+ }>;
79
+ executeUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], jobId: string, authorizedUtilityCallTargets: AztecAddress[]): Promise<Fr[]>;
80
+ publicCallNewFlow(from: AztecAddress | undefined, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean, gasSettings: GasSettings): Promise<Fr[]>;
56
81
  syncContractNonOracleMethod(contractAddress: AztecAddress, scope: AztecAddress, jobId: string): Promise<void>;
57
82
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFsRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUM7SUFFWixPQUFPLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pDLE1BQU0sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNwQyxTQUFTLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLFlBQVksSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxD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
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pELE9BQU8sS0FBSyxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pFLE9BQU8sS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2hFLE9BQU8sS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBUWxEOzs7Ozs7R0FNRztBQUNILE1BQU0sV0FBVyxtQkFBbUI7SUFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQztJQUVaLE9BQU8sSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoQyxXQUFXLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BDLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsWUFBWSxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxPQUFPLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7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
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type NamedValue } from '@aztec/pxe/simulator';
2
+ import { TXE_ORACLE_REGISTRY } from '../txe_oracle_registry.js';
3
+ /**
4
+ * Fixture definitions for oracle roundtrip tests.
5
+ *
6
+ * Each key is an oracle name from TXE_ORACLE_REGISTRY, and the value is an array of scenarios. The resolver selects a
7
+ * scenario (by name for multi-scenario oracles, or automatically for single-scenario ones), verifies that the
8
+ * deserialized inputs match the fixture's expected values, and returns the fixture output.
9
+ *
10
+ * To add a new oracle test:
11
+ * 1. Add a fixture entry here with the expected inputs and output.
12
+ * 2. Add a Noir `#[oracle_test]` function that calls the oracle with the same input values and asserts the output.
13
+ */
14
+ export declare const ORACLE_TEST_FIXTURES: OracleTestFixtures;
15
+ /**
16
+ * Converts a `NamedValue` tuple (from `deserializeParams`) to a record.
17
+ * `[NamedValue<'slot', Fr>, NamedValue<'addr', AztecAddress>]` → `{ slot: Fr, addr: AztecAddress }`.
18
+ */
19
+ type NamedValuesToRecord<T extends readonly NamedValue[]> = {
20
+ [K in T[number] as K extends NamedValue<infer N, any> ? N : never]: K extends NamedValue<string, infer V> ? V : never;
21
+ };
22
+ /** Extracts the deserialized inputs record type from an oracle registry entry. */
23
+ type OracleInputs<K extends keyof typeof TXE_ORACLE_REGISTRY> = (typeof TXE_ORACLE_REGISTRY)[K] extends {
24
+ deserializeParams(...args: any[]): infer P;
25
+ } ? P extends readonly NamedValue[] ? NamedValuesToRecord<P> : Record<string, never> : Record<string, never>;
26
+ /** Extracts the return type from an oracle registry entry's serializeReturn method. */
27
+ type OracleOutput<K extends keyof typeof TXE_ORACLE_REGISTRY> = (typeof TXE_ORACLE_REGISTRY)[K] extends {
28
+ serializeReturn(result: infer R): any;
29
+ } ? R : void;
30
+ /** A single test scenario for an oracle, typed against the oracle registry. */
31
+ export interface OracleTestScenario<K extends keyof typeof TXE_ORACLE_REGISTRY = keyof typeof TXE_ORACLE_REGISTRY> {
32
+ /** Scenario name for selection via `#[oracle_test("name")]`. Required when an oracle has multiple scenarios. */
33
+ scenario?: string;
34
+ /** Expected deserialized inputs. */
35
+ inputs: OracleInputs<K>;
36
+ /** Return value to serialize back to Noir. */
37
+ output: OracleOutput<K>;
38
+ }
39
+ type OracleTestFixtures = {
40
+ [K in keyof typeof TXE_ORACLE_REGISTRY]?: OracleTestScenario<K>[];
41
+ };
42
+ export {};
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcmFjbGUvdGVzdC1yZXNvbHZlci9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsS0FBSyxVQUFVLEVBQVUsTUFBTSxzQkFBc0IsQ0FBQztBQUUvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUVoRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsZUFBTyxNQUFNLG9CQUFvQixFQUFFLGtCQW9CbEMsQ0FBQztBQUVGOzs7R0FHRztBQUNILEtBQUssbUJBQW1CLENBQUMsQ0FBQyxTQUFTLFNBQVMsVUFBVSxFQUFFLElBQUk7S0FDekQsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSztDQUN0SCxDQUFDO0FBRUYsa0ZBQWtGO0FBQ2xGLEtBQUssWUFBWSxDQUFDLENBQUMsU0FBUyxNQUFNLE9BQU8sbUJBQW1CLElBQUksQ0FBQyxPQUFPLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDdEcsaUJBQWlCLENBQUMsR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7Q0FDNUMsR0FDRyxDQUFDLFNBQVMsU0FBUyxVQUFVLEVBQUUsR0FDN0IsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQ3RCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQ3ZCLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFFMUIsdUZBQXVGO0FBQ3ZGLEtBQUssWUFBWSxDQUFDLENBQUMsU0FBUyxNQUFNLE9BQU8sbUJBQW1CLElBQUksQ0FBQyxPQUFPLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7SUFDdEcsZUFBZSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUM7Q0FDdkMsR0FDRyxDQUFDLEdBQ0QsSUFBSSxDQUFDO0FBRVQsK0VBQStFO0FBQy9FLE1BQU0sV0FBVyxrQkFBa0IsQ0FBQyxDQUFDLFNBQVMsTUFBTSxPQUFPLG1CQUFtQixHQUFHLE1BQU0sT0FBTyxtQkFBbUI7SUFDL0csZ0hBQWdIO0lBQ2hILFFBQVEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNsQixvQ0FBb0M7SUFDcEMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4Qiw4Q0FBOEM7SUFDOUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN6QjtBQUVELEtBQUssa0JBQWtCLEdBQUc7S0FDdkIsQ0FBQyxJQUFJLE1BQU0sT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLEVBQUU7Q0FDbEUsQ0FBQyJ9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../../../src/oracle/test-resolver/fixtures.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAAU,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAoBlC,CAAC;AAEF;;;GAGG;AACH,KAAK,mBAAmB,CAAC,CAAC,SAAS,SAAS,UAAU,EAAE,IAAI;KACzD,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;CACtH,CAAC;AAEF,kFAAkF;AAClF,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,OAAO,mBAAmB,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS;IACtG,iBAAiB,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC;CAC5C,GACG,CAAC,SAAS,SAAS,UAAU,EAAE,GAC7B,mBAAmB,CAAC,CAAC,CAAC,GACtB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAE1B,uFAAuF;AACvF,KAAK,YAAY,CAAC,CAAC,SAAS,MAAM,OAAO,mBAAmB,IAAI,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS;IACtG,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;CACvC,GACG,CAAC,GACD,IAAI,CAAC;AAET,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM,OAAO,mBAAmB,GAAG,MAAM,OAAO,mBAAmB;IAC/G,gHAAgH;IAChH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACxB,8CAA8C;IAC9C,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;CACzB;AAED,KAAK,kBAAkB,GAAG;KACvB,CAAC,IAAI,MAAM,OAAO,mBAAmB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE;CAClE,CAAC"}
@@ -0,0 +1,39 @@
1
+ /* eslint-disable camelcase */ import { AztecAddress } from '@aztec/aztec.js/addresses';
2
+ import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import { Option } from '@aztec/pxe/simulator';
4
+ /**
5
+ * Fixture definitions for oracle roundtrip tests.
6
+ *
7
+ * Each key is an oracle name from TXE_ORACLE_REGISTRY, and the value is an array of scenarios. The resolver selects a
8
+ * scenario (by name for multi-scenario oracles, or automatically for single-scenario ones), verifies that the
9
+ * deserialized inputs match the fixture's expected values, and returns the fixture output.
10
+ *
11
+ * To add a new oracle test:
12
+ * 1. Add a fixture entry here with the expected inputs and output.
13
+ * 2. Add a Noir `#[oracle_test]` function that calls the oracle with the same input values and asserts the output.
14
+ */ export const ORACLE_TEST_FIXTURES = {
15
+ aztec_avm_storageRead: [
16
+ makeScenario({
17
+ inputs: {
18
+ slot: new Fr(10),
19
+ contractAddress: AztecAddress.fromNumber(1)
20
+ },
21
+ output: new Fr(42)
22
+ })
23
+ ],
24
+ aztec_prv_getSenderForTags: [
25
+ makeScenario({
26
+ scenario: 'some',
27
+ inputs: {},
28
+ output: Option.some(AztecAddress.fromNumber(42))
29
+ }),
30
+ makeScenario({
31
+ scenario: 'none',
32
+ inputs: {},
33
+ output: Option.none(AztecAddress.ZERO)
34
+ })
35
+ ]
36
+ };
37
+ /** Creates a typed fixture scenario for a given oracle. */ function makeScenario(scenario) {
38
+ return scenario;
39
+ }
@@ -0,0 +1,9 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import { OracleTestResolver } from './resolver.js';
3
+ /** Creates an RPC server backed by the oracle test resolver. */
4
+ export declare function createOracleTestRpcServer(logger: Logger): {
5
+ server: import("@aztec/foundation/json-rpc/server").SafeJsonRpcServer;
6
+ resolver: OracleTestResolver;
7
+ };
8
+ export { OracleTestResolver } from './resolver.js';
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcmFjbGUvdGVzdC1yZXNvbHZlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVNwRCxPQUFPLEVBQTRCLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBd0I3RSxnRUFBZ0U7QUFDaEUsd0JBQWdCLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxNQUFNOzs7RUFNdkQ7QUFFRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUMifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/oracle/test-resolver/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AASpD,OAAO,EAA4B,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAwB7E,gEAAgE;AAChE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM;;;EAMvD;AAED,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,33 @@
1
+ /* eslint-disable camelcase */ import { createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
2
+ import { zodFor } from '@aztec/stdlib/schemas';
3
+ import { z } from 'zod';
4
+ import { ForeignCallArgsSchema, ForeignCallResultSchema } from '../../utils/encoding.js';
5
+ import { TXE_ORACLE_REGISTRY } from '../txe_oracle_registry.js';
6
+ import { ORACLE_TEST_FIXTURES } from './fixtures.js';
7
+ import { OracleTestResolver } from './resolver.js';
8
+ const OracleTestCallInputSchema = zodFor()(z.object({
9
+ session_id: z.number().nonnegative(),
10
+ function: z.string(),
11
+ root_path: z.string(),
12
+ package_name: z.string(),
13
+ inputs: ForeignCallArgsSchema
14
+ }));
15
+ const OracleTestRpcHandlerSchema = {
16
+ resolve_foreign_call: z.function({
17
+ input: z.tuple([
18
+ OracleTestCallInputSchema
19
+ ]),
20
+ output: ForeignCallResultSchema
21
+ })
22
+ };
23
+ /** Creates an RPC server backed by the oracle test resolver. */ export function createOracleTestRpcServer(logger) {
24
+ const resolver = new OracleTestResolver(TXE_ORACLE_REGISTRY, ORACLE_TEST_FIXTURES, logger);
25
+ const server = createSafeJsonRpcServer(resolver, OracleTestRpcHandlerSchema, {
26
+ http200OnError: true
27
+ });
28
+ return {
29
+ server,
30
+ resolver
31
+ };
32
+ }
33
+ export { OracleTestResolver } from './resolver.js';
@@ -0,0 +1,34 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ import type { OracleRegistryEntry } from '@aztec/pxe/simulator';
3
+ import type { ForeignCallArgs, ForeignCallResult } from '../../utils/encoding.js';
4
+ import type { OracleTestScenario } from './fixtures.js';
5
+ export type OracleTestCallInput = {
6
+ session_id: number;
7
+ function: string;
8
+ root_path: string;
9
+ package_name: string;
10
+ inputs: ForeignCallArgs;
11
+ };
12
+ /**
13
+ * Oracle resolver for roundtrip tests. Selects a fixture scenario, verifies that the received inputs match, and
14
+ * returns the corresponding fixture output.
15
+ *
16
+ * For oracles with a single fixture, it is selected automatically. For oracles with multiple fixtures, Noir tests
17
+ * must call the `oracle_test_set_scenario` meta-oracle to select a specific scenario by name before calling the
18
+ * real oracle.
19
+ */
20
+ export declare class OracleTestResolver {
21
+ #private;
22
+ private readonly registry;
23
+ private readonly fixtures;
24
+ private readonly calledOracles;
25
+ private readonly pendingScenario;
26
+ private readonly logger;
27
+ constructor(registry: Record<string, OracleRegistryEntry>, fixtures: Partial<Record<string, OracleTestScenario[]>>, logger?: Logger);
28
+ resolve_foreign_call(callData: OracleTestCallInput): Promise<ForeignCallResult>;
29
+ /** Returns oracles that have a fixture defined but were never called during testing. */
30
+ getUncalledFixtures(): string[];
31
+ /** Returns oracles in the registry that have no fixture defined at all. */
32
+ getMissingFixtures(): string[];
33
+ }
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9vcmFjbGUvdGVzdC1yZXNvbHZlci9yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUdwRCxPQUFPLEtBQUssRUFBYSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNFLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2xGLE9BQU8sS0FBSyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBS3hELE1BQU0sTUFBTSxtQkFBbUIsR0FBRztJQUNoQyxVQUFVLEVBQUUsTUFBTSxDQUFDO0lBQ25CLFFBQVEsRUFBRSxNQUFNLENBQUM7SUFDakIsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixZQUFZLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLE1BQU0sRUFBRSxlQUFlLENBQUM7Q0FDekIsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxxQkFBYSxrQkFBa0I7O0lBTTNCLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUTtJQUN6QixPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVE7SUFOM0IsT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQXFCO0lBQ25ELE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUE2QjtJQUM3RCxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBUztJQUVoQyxZQUNtQixRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxFQUM3QyxRQUFRLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDLEVBQ3hFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sRUFHaEI7SUFHSyxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsbUJBQW1CLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBNkJwRjtJQUVELHdGQUF3RjtJQUN4RixtQkFBbUIsSUFBSSxNQUFNLEVBQUUsQ0FFOUI7SUFFRCwyRUFBMkU7SUFDM0Usa0JBQWtCLElBQUksTUFBTSxFQUFFLENBRTdCO0NBNEVGIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../src/oracle/test-resolver/resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,KAAK,EAAa,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAKxD,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,kBAAkB;;IAM3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,YACmB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAC7C,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC,EACxE,MAAM,CAAC,EAAE,MAAM,EAGhB;IAGK,oBAAoB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6BpF;IAED,wFAAwF;IACxF,mBAAmB,IAAI,MAAM,EAAE,CAE9B;IAED,2EAA2E;IAC3E,kBAAkB,IAAI,MAAM,EAAE,CAE7B;CA4EF"}
@@ -0,0 +1,114 @@
1
+ /* eslint-disable camelcase */ import { createLogger } from '@aztec/foundation/log';
2
+ import { withHexPrefix, withoutHexPrefix } from '@aztec/foundation/string';
3
+ /** Name of the meta-oracle that Noir tests call to select a fixture scenario by name. */ const SET_SCENARIO_ORACLE = 'aztec_oracle_test_set_scenario';
4
+ /**
5
+ * Oracle resolver for roundtrip tests. Selects a fixture scenario, verifies that the received inputs match, and
6
+ * returns the corresponding fixture output.
7
+ *
8
+ * For oracles with a single fixture, it is selected automatically. For oracles with multiple fixtures, Noir tests
9
+ * must call the `oracle_test_set_scenario` meta-oracle to select a specific scenario by name before calling the
10
+ * real oracle.
11
+ */ export class OracleTestResolver {
12
+ registry;
13
+ fixtures;
14
+ calledOracles;
15
+ pendingScenario;
16
+ logger;
17
+ constructor(registry, fixtures, logger){
18
+ this.registry = registry;
19
+ this.fixtures = fixtures;
20
+ this.calledOracles = new Set();
21
+ this.pendingScenario = new Map();
22
+ this.logger = logger ?? createLogger('txe:test-resolver');
23
+ }
24
+ // eslint-disable-next-line require-await
25
+ async resolve_foreign_call(callData) {
26
+ const oracleName = callData.function;
27
+ this.logger.debug('Resolving oracle', {
28
+ oracleName
29
+ });
30
+ if (oracleName === SET_SCENARIO_ORACLE) {
31
+ return this.#handleSetScenario(callData);
32
+ }
33
+ this.calledOracles.add(oracleName);
34
+ if (!(oracleName in this.registry)) {
35
+ throw new Error(`Oracle '${oracleName}' not found in registry`);
36
+ }
37
+ const entry = this.registry[oracleName];
38
+ const scenarios = this.fixtures[oracleName];
39
+ if (!scenarios || scenarios.length === 0) {
40
+ throw new Error(`No fixture defined for oracle '${oracleName}'`);
41
+ }
42
+ const match = this.#selectScenario(callData.session_id, oracleName, scenarios);
43
+ this.#verifyInputs(callData.inputs, entry, match, oracleName);
44
+ this.logger.debug('Verified scenario for oracle', {
45
+ oracleName
46
+ });
47
+ const outputSlots = entry.serializeReturn(match.output);
48
+ return {
49
+ values: outputSlots.map((slot)=>Array.isArray(slot) ? slot.map(withoutHexPrefix) : withoutHexPrefix(slot))
50
+ };
51
+ }
52
+ /** Returns oracles that have a fixture defined but were never called during testing. */ getUncalledFixtures() {
53
+ return Object.keys(this.fixtures).filter((name)=>!this.calledOracles.has(name));
54
+ }
55
+ /** Returns oracles in the registry that have no fixture defined at all. */ getMissingFixtures() {
56
+ return Object.keys(this.registry).filter((name)=>!(name in this.fixtures));
57
+ }
58
+ #handleSetScenario(callData) {
59
+ const charCodes = callData.inputs[0];
60
+ const scenarioName = charCodes.map((hex)=>Number(BigInt(hex.startsWith('0x') ? hex : `0x${hex}`))).map((code)=>String.fromCharCode(code)).join('');
61
+ this.logger.debug('Setting scenario for next oracle call', {
62
+ sessionId: callData.session_id,
63
+ scenarioName
64
+ });
65
+ this.pendingScenario.set(callData.session_id, scenarioName);
66
+ return {
67
+ values: []
68
+ };
69
+ }
70
+ /** Selects a scenario by pending name (for multi-fixture oracles) or returns the single fixture. */ #selectScenario(sessionId, oracleName, fixtures) {
71
+ const selectedName = this.pendingScenario.get(sessionId);
72
+ if (selectedName !== undefined) {
73
+ this.pendingScenario.delete(sessionId);
74
+ const matches = fixtures.filter((s)=>s.scenario === selectedName);
75
+ if (matches.length === 0) {
76
+ const available = fixtures.map((s)=>s.scenario).join(', ');
77
+ throw new Error(`No scenario named '${selectedName}' for oracle '${oracleName}'. Available: ${available}`);
78
+ }
79
+ if (matches.length > 1) {
80
+ throw new Error(`Duplicate scenario name '${selectedName}' for oracle '${oracleName}'`);
81
+ }
82
+ return matches[0];
83
+ }
84
+ if (fixtures.length === 1) {
85
+ return fixtures[0];
86
+ }
87
+ throw new Error(`Oracle '${oracleName}' has ${fixtures.length} fixture scenarios. ` + `Use #[oracle_test("scenario_name")] to select one.`);
88
+ }
89
+ /** Deserializes actual inputs and verifies they match the scenario's expected inputs. */ #verifyInputs(rawInputs, entry, scenario, oracleName) {
90
+ const expectedInputs = scenario.inputs;
91
+ if (Object.keys(expectedInputs).length === 0) {
92
+ return;
93
+ }
94
+ const normalized = rawInputs.map((v)=>Array.isArray(v) ? v.map(withHexPrefix) : [
95
+ withHexPrefix(v)
96
+ ]);
97
+ const named = entry.deserializeParams(normalized);
98
+ for (const param of named){
99
+ if (!(param.name in expectedInputs)) {
100
+ throw new Error(`Unexpected param '${param.name}' for oracle '${oracleName}'. ` + `Expected: ${Object.keys(expectedInputs).join(', ')}`);
101
+ }
102
+ if (!valuesEqual(param.value, expectedInputs[param.name])) {
103
+ const scenarioLabel = scenario.scenario ? ` (scenario '${scenario.scenario}')` : '';
104
+ throw new Error(`Input mismatch for oracle '${oracleName}'${scenarioLabel}: ` + `param '${param.name}' expected ${String(expectedInputs[param.name])} ` + `but got ${String(param.value)}`);
105
+ }
106
+ }
107
+ }
108
+ }
109
+ function valuesEqual(actual, expected) {
110
+ if (Array.isArray(actual) && Array.isArray(expected)) {
111
+ return actual.length === expected.length && actual.every((v, i)=>valuesEqual(v, expected[i]));
112
+ }
113
+ return String(actual) === String(expected);
114
+ }
@@ -1,5 +1,6 @@
1
1
  import { BlockNumber } from '@aztec/foundation/branded-types';
2
2
  import { Fr } from '@aztec/foundation/curves/bn254';
3
+ import type { ContractStore } from '@aztec/pxe/server';
3
4
  import { AztecAddress } from '@aztec/stdlib/aztec-address';
4
5
  import type { L2Block } from '@aztec/stdlib/block';
5
6
  import { type MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
@@ -10,12 +11,13 @@ export declare class TXEOraclePublicContext implements IAvmExecutionOracle {
10
11
  private forkedWorldTrees;
11
12
  private txRequestHash;
12
13
  private globalVariables;
14
+ private contractStore;
13
15
  isAvm: true;
14
16
  private logger;
15
17
  private transientUniqueNoteHashes;
16
18
  private transientSiloedNullifiers;
17
19
  private publicDataWrites;
18
- constructor(contractAddress: AztecAddress, forkedWorldTrees: MerkleTreeWriteOperations, txRequestHash: Fr, globalVariables: GlobalVariables);
20
+ constructor(contractAddress: AztecAddress, forkedWorldTrees: MerkleTreeWriteOperations, txRequestHash: Fr, globalVariables: GlobalVariables, contractStore: ContractStore);
19
21
  address(): Promise<AztecAddress>;
20
22
  sender(): Promise<AztecAddress>;
21
23
  blockNumber(): Promise<BlockNumber>;
@@ -28,7 +30,29 @@ export declare class TXEOraclePublicContext implements IAvmExecutionOracle {
28
30
  nullifierExists(siloedNullifier: Fr): Promise<boolean>;
29
31
  storageWrite(slot: Fr, value: Fr): Promise<void>;
30
32
  storageRead(slot: Fr, contractAddress: AztecAddress): Promise<Fr>;
33
+ getContractInstanceDeployer(address: AztecAddress): Promise<{
34
+ member: Fr;
35
+ exists: boolean;
36
+ }>;
37
+ getContractInstanceClassId(address: AztecAddress): Promise<{
38
+ member: Fr;
39
+ exists: boolean;
40
+ }>;
41
+ getContractInstanceInitializationHash(address: AztecAddress): Promise<{
42
+ member: Fr;
43
+ exists: boolean;
44
+ }>;
45
+ getContractInstanceImmutablesHash(address: AztecAddress): Promise<{
46
+ member: Fr;
47
+ exists: boolean;
48
+ }>;
49
+ private getContractInstanceMember;
50
+ returndataSize(): Promise<Fr>;
51
+ returndataCopy(_rdOffset: number, _copySize: number): Promise<Fr[]>;
52
+ call(_l2Gas: number, _daGas: number, _address: AztecAddress, _argsLength: number, _args: Fr[]): Promise<Fr[]>;
53
+ staticCall(_l2Gas: number, _daGas: number, _address: AztecAddress, _argsLength: number, _args: Fr[]): Promise<Fr[]>;
54
+ successCopy(): Promise<Fr>;
31
55
  close(): Promise<L2Block>;
32
56
  private makeTxEffect;
33
57
  }
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV9wdWJsaWNfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3B1YmxpY19jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFFTCxLQUFLLHlCQUF5QixFQUcvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFHckUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxxQkFBYSxzQkFBdUIsWUFBVyxtQkFBbUI7SUFTOUQsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsZUFBZTtJQVh6QixLQUFLLE9BQWlCO0lBRXRCLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLHlCQUF5QixDQUFZO0lBQzdDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBWTtJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELFlBQ1UsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQzNDLGFBQWEsRUFBRSxFQUFFLEVBQ2pCLGVBQWUsRUFBRSxlQUFlLEVBU3pDO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FFL0I7SUFFRCxNQUFNLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUU5QjtJQUVELFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBRWxDO0lBRUQsU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFM0I7SUFFRCxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUUvQjtJQUVELE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBRXJCO0lBRUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFckI7SUFFSyxhQUFhLENBQUMsU0FBUyxFQUFFLEVBQUUsaUJBR2hDO0lBRUssWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLGlCQUk5QjtJQUVLLGVBQWUsQ0FBQyxlQUFlLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FPM0Q7SUFFSyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxpQkFVckM7SUFFSyxXQUFXLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxlQUFlLEVBQUUsWUFBWSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FxQnRFO0lBRUssS0FBSyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FrQjlCO0lBRUQsT0FBTyxDQUFDLFlBQVk7Q0FhckIifQ==
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV9wdWJsaWNfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3B1YmxpY19jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFcEQsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR25ELE9BQU8sRUFFTCxLQUFLLHlCQUF5QixFQUcvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFHckUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxxQkFBYSxzQkFBdUIsWUFBVyxtQkFBbUI7SUFTOUQsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsZUFBZTtJQUN2QixPQUFPLENBQUMsYUFBYTtJQVp2QixLQUFLLE9BQWlCO0lBRXRCLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLHlCQUF5QixDQUFZO0lBQzdDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBWTtJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELFlBQ1UsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQzNDLGFBQWEsRUFBRSxFQUFFLEVBQ2pCLGVBQWUsRUFBRSxlQUFlLEVBQ2hDLGFBQWEsRUFBRSxhQUFh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
@@ -1 +1 @@
1
- {"version":3,"file":"txe_oracle_public_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_public_context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AAGpD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAoB,MAAM,kBAAkB,CAAC;AAGrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE3D,qBAAa,sBAAuB,YAAW,mBAAmB;IAS9D,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,gBAAgB;IACxB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,eAAe;IAXzB,KAAK,OAAiB;IAEtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,yBAAyB,CAAY;IAC7C,OAAO,CAAC,gBAAgB,CAAyB;IAEjD,YACU,eAAe,EAAE,YAAY,EAC7B,gBAAgB,EAAE,yBAAyB,EAC3C,aAAa,EAAE,EAAE,EACjB,eAAe,EAAE,eAAe,EASzC;IAED,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CAE/B;IAED,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAE9B;IAED,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAElC;IAED,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAE3B;IAED,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC,CAE/B;IAED,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAErB;IAED,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,CAErB;IAEK,aAAa,CAAC,SAAS,EAAE,EAAE,iBAGhC;IAEK,YAAY,CAAC,QAAQ,EAAE,EAAE,iBAI9B;IAEK,eAAe,CAAC,eAAe,EAAE,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;IAEK,YAAY,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,iBAUrC;IAEK,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,YAAY,GAAG,OAAO,CAAC,EAAE,CAAC,CAqBtE;IAEK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAkB9B;IAED,OAAO,CAAC,YAAY;CAarB"}
1
+ {"version":3,"file":"txe_oracle_public_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_public_context.ts"],"names":[],"mappings":"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"}
@@ -11,16 +11,18 @@ export class TXEOraclePublicContext {
11
11
  forkedWorldTrees;
12
12
  txRequestHash;
13
13
  globalVariables;
14
+ contractStore;
14
15
  isAvm;
15
16
  logger;
16
17
  transientUniqueNoteHashes;
17
18
  transientSiloedNullifiers;
18
19
  publicDataWrites;
19
- constructor(contractAddress, forkedWorldTrees, txRequestHash, globalVariables){
20
+ constructor(contractAddress, forkedWorldTrees, txRequestHash, globalVariables, contractStore){
20
21
  this.contractAddress = contractAddress;
21
22
  this.forkedWorldTrees = forkedWorldTrees;
22
23
  this.txRequestHash = txRequestHash;
23
24
  this.globalVariables = globalVariables;
25
+ this.contractStore = contractStore;
24
26
  this.isAvm = true;
25
27
  this.transientUniqueNoteHashes = [];
26
28
  this.transientSiloedNullifiers = [];
@@ -91,6 +93,46 @@ export class TXEOraclePublicContext {
91
93
  });
92
94
  return value;
93
95
  }
96
+ getContractInstanceDeployer(address) {
97
+ return this.getContractInstanceMember(address, (i)=>i.deployer.toField());
98
+ }
99
+ getContractInstanceClassId(address) {
100
+ return this.getContractInstanceMember(address, (i)=>i.currentContractClassId);
101
+ }
102
+ getContractInstanceInitializationHash(address) {
103
+ return this.getContractInstanceMember(address, (i)=>i.initializationHash);
104
+ }
105
+ getContractInstanceImmutablesHash(address) {
106
+ return this.getContractInstanceMember(address, (i)=>i.immutablesHash);
107
+ }
108
+ async getContractInstanceMember(address, accessor) {
109
+ const instance = await this.contractStore.getContractInstance(address);
110
+ if (!instance) {
111
+ return {
112
+ member: Fr.ZERO,
113
+ exists: false
114
+ };
115
+ }
116
+ return {
117
+ member: accessor(instance),
118
+ exists: true
119
+ };
120
+ }
121
+ returndataSize() {
122
+ throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
123
+ }
124
+ returndataCopy(_rdOffset, _copySize) {
125
+ throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
126
+ }
127
+ call(_l2Gas, _daGas, _address, _argsLength, _args) {
128
+ throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
129
+ }
130
+ staticCall(_l2Gas, _daGas, _address, _argsLength, _args) {
131
+ throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
132
+ }
133
+ successCopy() {
134
+ throw new Error('Contract calls are forbidden inside a `TestEnvironment::public_context`, use `public_call` instead');
135
+ }
94
136
  async close() {
95
137
  this.logger.debug('Exiting Public Context, building block with collected side effects', {
96
138
  blockNumber: this.globalVariables.blockNumber
@@ -0,0 +1,14 @@
1
+ import { type MaybePromise, type OracleRegistryEntry, type ParamTypes } from '@aztec/pxe/simulator';
2
+ import type { ForeignCallArgs, ForeignCallResult } from '../utils/encoding.js';
3
+ export declare const TXE_ORACLE_REGISTRY: Record<string, OracleRegistryEntry>;
4
+ /**
5
+ * Deserializes oracle inputs, calls the handler with typed params, serializes the result, and wraps
6
+ * it in a `ForeignCallResult`. Normalizes `ForeignCallArgs` (which may contain bare strings) into
7
+ * `InputSlot[]` (always arrays) before deserialization.
8
+ */
9
+ export declare function callTxeHandler<K extends keyof typeof TXE_ORACLE_REGISTRY>({ oracle, inputs, handler }: {
10
+ oracle: K;
11
+ inputs: ForeignCallArgs;
12
+ handler: (params: ParamTypes<ReturnType<(typeof TXE_ORACLE_REGISTRY)[K]['deserializeParams']>>) => MaybePromise<Parameters<(typeof TXE_ORACLE_REGISTRY)[K]['serializeReturn']>[0]>;
13
+ }): Promise<ForeignCallResult>;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV9yZWdpc3RyeS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFTTCxLQUFLLFlBQVksRUFHakIsS0FBSyxtQkFBbUIsRUFDeEIsS0FBSyxVQUFVLEVBS2hCLE1BQU0sc0JBQXNCLENBQUM7QUFjOUIsT0FBTyxLQUFLLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUEwRy9FLGVBQU8sTUFBTSxtQkFBbUIsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQThObkUsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCx3QkFBc0IsY0FBYyxDQUFDLENBQUMsU0FBUyxNQUFNLE9BQU8sbUJBQW1CLEVBQUUsRUFDL0UsTUFBTSxFQUNOLE1BQU0sRUFDTixPQUFPLEVBQ1IsRUFBRTtJQUNELE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDVixNQUFNLEVBQUUsZUFBZSxDQUFDO0lBQ3hCLE9BQU8sRUFBRSxDQUNQLE1BQU0sRUFBRSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxLQUNqRixZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0NBQ3RGLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBYTdCIn0=
@@ -0,0 +1 @@
1
+ {"version":3,"file":"txe_oracle_registry.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_registry.ts"],"names":[],"mappings":"AAUA,OAAO,EASL,KAAK,YAAY,EAGjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EAKhB,MAAM,sBAAsB,CAAC;AAc9B,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AA0G/E,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CA8NnE,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,SAAS,MAAM,OAAO,mBAAmB,EAAE,EAC/E,MAAM,EACN,MAAM,EACN,OAAO,EACR,EAAE;IACD,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,CACP,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KACjF,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtF,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAa7B"}