@aztec/txe 4.0.0-nightly.20250907 → 4.0.0-nightly.20260107
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.
- package/dest/bin/index.d.ts +1 -1
- package/dest/bin/index.js +1 -1
- package/dest/constants.d.ts +3 -0
- package/dest/constants.d.ts.map +1 -0
- package/dest/constants.js +2 -0
- package/dest/index.d.ts +1 -1
- package/dest/index.d.ts.map +1 -1
- package/dest/index.js +8 -4
- package/dest/oracle/interfaces.d.ts +57 -0
- package/dest/oracle/interfaces.d.ts.map +1 -0
- package/dest/oracle/interfaces.js +3 -0
- package/dest/oracle/txe_oracle_public_context.d.ts +12 -12
- package/dest/oracle/txe_oracle_public_context.d.ts.map +1 -1
- package/dest/oracle/txe_oracle_public_context.js +30 -34
- package/dest/oracle/txe_oracle_top_level_context.d.ts +65 -0
- package/dest/oracle/txe_oracle_top_level_context.d.ts.map +1 -0
- package/dest/oracle/txe_oracle_top_level_context.js +463 -0
- package/dest/rpc_translator.d.ts +246 -0
- package/dest/rpc_translator.d.ts.map +1 -0
- package/dest/{txe_service/txe_service.js → rpc_translator.js} +201 -124
- package/dest/state_machine/archiver.d.ts +34 -13
- package/dest/state_machine/archiver.d.ts.map +1 -1
- package/dest/state_machine/archiver.js +111 -16
- package/dest/state_machine/dummy_p2p_client.d.ts +5 -2
- package/dest/state_machine/dummy_p2p_client.d.ts.map +1 -1
- package/dest/state_machine/dummy_p2p_client.js +9 -1
- package/dest/state_machine/global_variable_builder.d.ts +5 -16
- package/dest/state_machine/global_variable_builder.d.ts.map +1 -1
- package/dest/state_machine/global_variable_builder.js +15 -22
- package/dest/state_machine/index.d.ts +5 -5
- package/dest/state_machine/index.d.ts.map +1 -1
- package/dest/state_machine/index.js +17 -21
- package/dest/state_machine/mock_epoch_cache.d.ts +6 -5
- package/dest/state_machine/mock_epoch_cache.d.ts.map +1 -1
- package/dest/state_machine/mock_epoch_cache.js +8 -7
- package/dest/state_machine/synchronizer.d.ts +5 -4
- package/dest/state_machine/synchronizer.d.ts.map +1 -1
- package/dest/state_machine/synchronizer.js +5 -4
- package/dest/txe_session.d.ts +42 -46
- package/dest/txe_session.d.ts.map +1 -1
- package/dest/txe_session.js +241 -93
- package/dest/util/encoding.d.ts +623 -24
- package/dest/util/encoding.d.ts.map +1 -1
- package/dest/util/encoding.js +1 -1
- package/dest/util/expected_failure_error.d.ts +1 -1
- package/dest/util/expected_failure_error.d.ts.map +1 -1
- package/dest/util/txe_account_store.d.ts +10 -0
- package/dest/util/txe_account_store.d.ts.map +1 -0
- package/dest/util/{txe_account_data_provider.js → txe_account_store.js} +1 -1
- package/dest/util/txe_contract_store.d.ts +12 -0
- package/dest/util/txe_contract_store.d.ts.map +1 -0
- package/dest/util/{txe_contract_data_provider.js → txe_contract_store.js} +4 -4
- package/dest/util/txe_public_contract_data_source.d.ts +8 -6
- package/dest/util/txe_public_contract_data_source.d.ts.map +1 -1
- package/dest/util/txe_public_contract_data_source.js +14 -12
- package/dest/utils/block_creation.d.ts +28 -0
- package/dest/utils/block_creation.d.ts.map +1 -0
- package/dest/utils/block_creation.js +45 -0
- package/dest/utils/tx_effect_creation.d.ts +6 -0
- package/dest/utils/tx_effect_creation.d.ts.map +1 -0
- package/dest/utils/tx_effect_creation.js +16 -0
- package/package.json +18 -17
- package/src/bin/index.ts +1 -1
- package/src/constants.ts +3 -0
- package/src/index.ts +20 -20
- package/src/oracle/interfaces.ts +86 -0
- package/src/oracle/txe_oracle_public_context.ts +37 -75
- package/src/oracle/txe_oracle_top_level_context.ts +716 -0
- package/src/{txe_service/txe_service.ts → rpc_translator.ts} +261 -125
- package/src/state_machine/archiver.ts +147 -29
- package/src/state_machine/dummy_p2p_client.ts +13 -2
- package/src/state_machine/global_variable_builder.ts +24 -41
- package/src/state_machine/index.ts +24 -21
- package/src/state_machine/mock_epoch_cache.ts +12 -11
- package/src/state_machine/synchronizer.ts +8 -7
- package/src/txe_session.ts +416 -115
- package/src/util/encoding.ts +1 -1
- package/src/util/{txe_account_data_provider.ts → txe_account_store.ts} +1 -1
- package/src/util/{txe_contract_data_provider.ts → txe_contract_store.ts} +5 -4
- package/src/util/txe_public_contract_data_source.ts +16 -13
- package/src/utils/block_creation.ts +94 -0
- package/src/utils/tx_effect_creation.ts +38 -0
- package/dest/oracle/txe_oracle.d.ts +0 -124
- package/dest/oracle/txe_oracle.d.ts.map +0 -1
- package/dest/oracle/txe_oracle.js +0 -770
- package/dest/oracle/txe_typed_oracle.d.ts +0 -42
- package/dest/oracle/txe_typed_oracle.d.ts.map +0 -1
- package/dest/oracle/txe_typed_oracle.js +0 -83
- package/dest/txe_constants.d.ts +0 -2
- package/dest/txe_constants.d.ts.map +0 -1
- package/dest/txe_constants.js +0 -7
- package/dest/txe_service/txe_service.d.ts +0 -231
- package/dest/txe_service/txe_service.d.ts.map +0 -1
- package/dest/util/txe_account_data_provider.d.ts +0 -10
- package/dest/util/txe_account_data_provider.d.ts.map +0 -1
- package/dest/util/txe_contract_data_provider.d.ts +0 -11
- package/dest/util/txe_contract_data_provider.d.ts.map +0 -1
- package/src/oracle/txe_oracle.ts +0 -1287
- package/src/oracle/txe_typed_oracle.ts +0 -142
- package/src/txe_constants.ts +0 -9
package/dest/bin/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --no-warnings
|
|
2
2
|
export {};
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
|
package/dest/bin/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --no-warnings
|
|
2
|
-
import { createLogger } from '@aztec/aztec.js';
|
|
2
|
+
import { createLogger } from '@aztec/aztec.js/log';
|
|
3
3
|
import { startHttpRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
4
4
|
import { createTXERpcServer } from '../index.js';
|
|
5
5
|
/**
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
2
|
+
export declare const DEFAULT_ADDRESS: AztecAddress;
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUUzRCxlQUFPLE1BQU0sZUFBZSxjQUE4QixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,eAAO,MAAM,eAAe,cAA8B,CAAC"}
|
package/dest/index.d.ts
CHANGED
|
@@ -5,4 +5,4 @@ import type { Logger } from '@aztec/foundation/log';
|
|
|
5
5
|
* @returns A TXE RPC server.
|
|
6
6
|
*/
|
|
7
7
|
export declare function createTXERpcServer(logger: Logger): import("@aztec/foundation/json-rpc/server").SafeJsonRpcServer;
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQWdPcEQ7Ozs7R0FJRztBQUNILHdCQUFnQixrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsTUFBTSxpRUFJaEQifQ==
|
package/dest/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAgOpD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,iEAIhD"}
|
package/dest/index.js
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { SchnorrAccountContractArtifact } from '@aztec/accounts/schnorr';
|
|
2
|
-
import {
|
|
2
|
+
import { loadContractArtifact } from '@aztec/aztec.js/abi';
|
|
3
|
+
import { AztecAddress } from '@aztec/aztec.js/addresses';
|
|
4
|
+
import { getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts';
|
|
5
|
+
import { Fr } from '@aztec/aztec.js/fields';
|
|
6
|
+
import { PublicKeys, deriveKeys } from '@aztec/aztec.js/keys';
|
|
3
7
|
import { createSafeJsonRpcServer } from '@aztec/foundation/json-rpc/server';
|
|
4
8
|
import { protocolContractNames } from '@aztec/protocol-contracts';
|
|
5
9
|
import { BundledProtocolContractsProvider } from '@aztec/protocol-contracts/providers/bundle';
|
|
6
10
|
import { computeArtifactHash } from '@aztec/stdlib/contract';
|
|
11
|
+
import { zodFor } from '@aztec/stdlib/schemas';
|
|
7
12
|
import { createHash } from 'crypto';
|
|
8
13
|
import { createReadStream } from 'fs';
|
|
9
14
|
import { readFile, readdir } from 'fs/promises';
|
|
@@ -16,8 +21,7 @@ const sessions = new Map();
|
|
|
16
21
|
* TXE typically has to load the same contract artifacts over and over again for multiple tests,
|
|
17
22
|
* so we cache them here to avoid both loading them from disk repeatedly and computing their artifact hashes
|
|
18
23
|
*/ const TXEArtifactsCache = new Map();
|
|
19
|
-
|
|
20
|
-
const TXEForeignCallInputSchema = z.object({
|
|
24
|
+
const TXEForeignCallInputSchema = zodFor()(z.object({
|
|
21
25
|
// eslint-disable-next-line camelcase
|
|
22
26
|
session_id: z.number().int().nonnegative(),
|
|
23
27
|
function: z.string(),
|
|
@@ -26,7 +30,7 @@ const TXEForeignCallInputSchema = z.object({
|
|
|
26
30
|
// eslint-disable-next-line camelcase
|
|
27
31
|
package_name: z.string(),
|
|
28
32
|
inputs: ForeignCallArgsSchema
|
|
29
|
-
});
|
|
33
|
+
}));
|
|
30
34
|
class TXEDispatcher {
|
|
31
35
|
logger;
|
|
32
36
|
protocolContracts;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ContractArtifact } from '@aztec/aztec.js/abi';
|
|
2
|
+
import { CompleteAddress } from '@aztec/aztec.js/addresses';
|
|
3
|
+
import type { ContractInstanceWithAddress } from '@aztec/aztec.js/contracts';
|
|
4
|
+
import { TxHash } from '@aztec/aztec.js/tx';
|
|
5
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
6
|
+
import type { Fr } from '@aztec/foundation/curves/bn254';
|
|
7
|
+
import type { EventSelector, FunctionSelector } from '@aztec/stdlib/abi';
|
|
8
|
+
import type { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
10
|
+
/**
|
|
11
|
+
* Oracle methods associated with the execution of an Aztec #[external("public")] function.
|
|
12
|
+
*
|
|
13
|
+
* Note that real contracts have their Brillig calls to these be transpiled into opcodes, the oracles are only executed
|
|
14
|
+
* as such when running the original Brillig code, e.g. when invoking functions that interact with a PublicContext
|
|
15
|
+
* directly in a Noir test.
|
|
16
|
+
*/
|
|
17
|
+
export interface IAvmExecutionOracle {
|
|
18
|
+
isAvm: true;
|
|
19
|
+
avmOpcodeAddress(): Promise<AztecAddress>;
|
|
20
|
+
avmOpcodeSender(): Promise<AztecAddress>;
|
|
21
|
+
avmOpcodeBlockNumber(): Promise<BlockNumber>;
|
|
22
|
+
avmOpcodeTimestamp(): Promise<bigint>;
|
|
23
|
+
avmOpcodeIsStaticCall(): Promise<boolean>;
|
|
24
|
+
avmOpcodeChainId(): Promise<Fr>;
|
|
25
|
+
avmOpcodeVersion(): Promise<Fr>;
|
|
26
|
+
avmOpcodeEmitNullifier(nullifier: Fr): Promise<void>;
|
|
27
|
+
avmOpcodeEmitNoteHash(noteHash: Fr): Promise<void>;
|
|
28
|
+
avmOpcodeNullifierExists(innerNullifier: Fr, targetAddress: AztecAddress): Promise<boolean>;
|
|
29
|
+
avmOpcodeStorageWrite(slot: Fr, value: Fr): Promise<void>;
|
|
30
|
+
avmOpcodeStorageRead(slot: Fr): Promise<Fr>;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Oracle methods associated with the execution of an Aztec Noir test.
|
|
34
|
+
*/
|
|
35
|
+
export interface ITxeExecutionOracle {
|
|
36
|
+
isTxe: true;
|
|
37
|
+
txeGetDefaultAddress(): AztecAddress;
|
|
38
|
+
txeGetNextBlockNumber(): Promise<BlockNumber>;
|
|
39
|
+
txeGetNextBlockTimestamp(): Promise<UInt64>;
|
|
40
|
+
txeAdvanceBlocksBy(blocks: number): Promise<void>;
|
|
41
|
+
txeAdvanceTimestampBy(duration: UInt64): void;
|
|
42
|
+
txeDeploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, foreignSecret: Fr): Promise<void>;
|
|
43
|
+
txeCreateAccount(secret: Fr): Promise<CompleteAddress>;
|
|
44
|
+
txeAddAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<CompleteAddress>;
|
|
45
|
+
txeAddAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
|
|
46
|
+
txeGetLastBlockTimestamp(): Promise<bigint>;
|
|
47
|
+
txeGetLastTxEffects(): Promise<{
|
|
48
|
+
txHash: TxHash;
|
|
49
|
+
noteHashes: Fr[];
|
|
50
|
+
nullifiers: Fr[];
|
|
51
|
+
}>;
|
|
52
|
+
txeGetPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
|
|
53
|
+
txePrivateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[], argsHash: Fr, isStaticCall: boolean): Promise<Fr[]>;
|
|
54
|
+
txeSimulateUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[]): Promise<Fr[]>;
|
|
55
|
+
txePublicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sS0FBSyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEtBQUssRUFBRSxFQUFFLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RCxPQUFPLEtBQUssRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN6RSxPQUFPLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNoRSxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVFsRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLEtBQUssRUFBRSxJQUFJLENBQUM7SUFFWixnQkFBZ0IsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN6QyxvQkFBb0IsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0Msa0JBQWtCLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLHFCQUFxQixJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxnQkFBZ0IsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEMsZ0JBQWdCLElBQUksT0FBTyxDQUFD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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/oracle/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
4
|
+
import type { L2Block } from '@aztec/stdlib/block';
|
|
4
5
|
import { type MerkleTreeWriteOperations } from '@aztec/stdlib/trees';
|
|
5
6
|
import { GlobalVariables } from '@aztec/stdlib/tx';
|
|
6
|
-
import type {
|
|
7
|
-
|
|
8
|
-
export declare class TXEOraclePublicContext extends TXETypedOracle {
|
|
7
|
+
import type { IAvmExecutionOracle } from './interfaces.js';
|
|
8
|
+
export declare class TXEOraclePublicContext implements IAvmExecutionOracle {
|
|
9
9
|
private contractAddress;
|
|
10
|
-
private
|
|
10
|
+
private forkedWorldTrees;
|
|
11
11
|
private txRequestHash;
|
|
12
12
|
private globalVariables;
|
|
13
|
+
isAvm: true;
|
|
13
14
|
private logger;
|
|
14
15
|
private transientUniqueNoteHashes;
|
|
15
16
|
private transientSiloedNullifiers;
|
|
16
17
|
private publicDataWrites;
|
|
17
|
-
constructor(contractAddress: AztecAddress,
|
|
18
|
+
constructor(contractAddress: AztecAddress, forkedWorldTrees: MerkleTreeWriteOperations, txRequestHash: Fr, globalVariables: GlobalVariables);
|
|
18
19
|
avmOpcodeAddress(): Promise<AztecAddress>;
|
|
19
|
-
|
|
20
|
+
avmOpcodeSender(): Promise<AztecAddress>;
|
|
21
|
+
avmOpcodeBlockNumber(): Promise<BlockNumber>;
|
|
20
22
|
avmOpcodeTimestamp(): Promise<bigint>;
|
|
21
23
|
avmOpcodeIsStaticCall(): Promise<boolean>;
|
|
22
24
|
avmOpcodeChainId(): Promise<Fr>;
|
|
@@ -28,7 +30,5 @@ export declare class TXEOraclePublicContext extends TXETypedOracle {
|
|
|
28
30
|
avmOpcodeStorageRead(slot: Fr): Promise<Fr>;
|
|
29
31
|
close(): Promise<L2Block>;
|
|
30
32
|
private makeTxEffect;
|
|
31
|
-
private insertSideEffectIntoWorldTrees;
|
|
32
|
-
private makeBlockHeader;
|
|
33
33
|
}
|
|
34
|
-
//# sourceMappingURL=
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV9wdWJsaWNfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3B1YmxpY19jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE9BQU8sRUFFTCxLQUFLLHlCQUF5QixFQUcvQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFHckUsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUzRCxxQkFBYSxzQkFBdUIsWUFBVyxtQkFBbUI7SUFTOUQsT0FBTyxDQUFDLGVBQWU7SUFDdkIsT0FBTyxDQUFDLGdCQUFnQjtJQUN4QixPQUFPLENBQUMsYUFBYTtJQUNyQixPQUFPLENBQUMsZUFBZTtJQVh6QixLQUFLLE9BQWlCO0lBRXRCLE9BQU8sQ0FBQyxNQUFNLENBQVM7SUFDdkIsT0FBTyxDQUFDLHlCQUF5QixDQUFZO0lBQzdDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBWTtJQUM3QyxPQUFPLENBQUMsZ0JBQWdCLENBQXlCO0lBRWpELFlBQ1UsZUFBZSxFQUFFLFlBQVksRUFDN0IsZ0JBQWdCLEVBQUUseUJBQXlCLEVBQzNDLGFBQWEsRUFBRSxFQUFFLEVBQ2pCLGVBQWUsRUFBRSxlQUFlLEVBU3pDO0lBRUQsZ0JBQWdCLElBQUksT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUV4QztJQUVELGVBQWUsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLENBRXZDO0lBRUQsb0JBQW9CLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUUzQztJQUVELGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FFcEM7SUFFRCxxQkFBcUIsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBRXhDO0lBRUQsZ0JBQWdCLElBQUksT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUU5QjtJQUVELGdCQUFnQixJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FFOUI7SUFFSyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsRUFBRSxpQkFHekM7SUFFSyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsRUFBRSxpQkFJdkM7SUFFSyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxZQUFZLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQVNoRztJQUVLLHFCQUFxQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsaUJBVTlDO0lBRUssb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLENBcUJoRDtJQUVLLEtBQUssSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBa0I5QjtJQUVELE9BQU8sQ0FBQyxZQUFZO0NBYXJCIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txe_oracle_public_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_public_context.ts"],"names":[],"mappings":"
|
|
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,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAExC;IAED,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAEvC;IAED,oBAAoB,IAAI,OAAO,CAAC,WAAW,CAAC,CAE3C;IAED,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEpC;IAED,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAExC;IAED,gBAAgB,IAAI,OAAO,CAAC,EAAE,CAAC,CAE9B;IAED,gBAAgB,IAAI,OAAO,CAAC,EAAE,CAAC,CAE9B;IAEK,sBAAsB,CAAC,SAAS,EAAE,EAAE,iBAGzC;IAEK,qBAAqB,CAAC,QAAQ,EAAE,EAAE,iBAIvC;IAEK,wBAAwB,CAAC,cAAc,EAAE,EAAE,EAAE,aAAa,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAShG;IAEK,qBAAqB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,iBAU9C;IAEK,oBAAoB,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAqBhD;IAEK,KAAK,IAAI,OAAO,CAAC,OAAO,CAAC,CAkB9B;IAED,OAAO,CAAC,YAAY;CAarB"}
|
|
@@ -1,27 +1,32 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { padArrayEnd } from '@aztec/foundation/collection';
|
|
3
|
-
import { Fr } from '@aztec/foundation/fields';
|
|
1
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
4
2
|
import { createLogger } from '@aztec/foundation/log';
|
|
5
3
|
import { PublicDataWrite } from '@aztec/stdlib/avm';
|
|
6
|
-
import {
|
|
4
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
7
5
|
import { computePublicDataTreeLeafSlot, siloNoteHash, siloNullifier } from '@aztec/stdlib/hash';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
export class TXEOraclePublicContext extends TXETypedOracle {
|
|
6
|
+
import { MerkleTreeId, PublicDataTreeLeaf } from '@aztec/stdlib/trees';
|
|
7
|
+
import { TxEffect, TxHash } from '@aztec/stdlib/tx';
|
|
8
|
+
import { insertTxEffectIntoWorldTrees, makeTXEBlock } from '../utils/block_creation.js';
|
|
9
|
+
export class TXEOraclePublicContext {
|
|
13
10
|
contractAddress;
|
|
14
|
-
|
|
11
|
+
forkedWorldTrees;
|
|
15
12
|
txRequestHash;
|
|
16
13
|
globalVariables;
|
|
14
|
+
isAvm;
|
|
17
15
|
logger;
|
|
18
16
|
transientUniqueNoteHashes;
|
|
19
17
|
transientSiloedNullifiers;
|
|
20
18
|
publicDataWrites;
|
|
21
|
-
constructor(contractAddress,
|
|
22
|
-
|
|
19
|
+
constructor(contractAddress, forkedWorldTrees, txRequestHash, globalVariables){
|
|
20
|
+
this.contractAddress = contractAddress;
|
|
21
|
+
this.forkedWorldTrees = forkedWorldTrees;
|
|
22
|
+
this.txRequestHash = txRequestHash;
|
|
23
|
+
this.globalVariables = globalVariables;
|
|
24
|
+
this.isAvm = true;
|
|
25
|
+
this.transientUniqueNoteHashes = [];
|
|
26
|
+
this.transientSiloedNullifiers = [];
|
|
27
|
+
this.publicDataWrites = [];
|
|
23
28
|
this.logger = createLogger('txe:public_context');
|
|
24
|
-
this.logger.debug('Entering
|
|
29
|
+
this.logger.debug('Entering Public Context', {
|
|
25
30
|
contractAddress,
|
|
26
31
|
blockNumber: globalVariables.blockNumber,
|
|
27
32
|
timestamp: globalVariables.timestamp
|
|
@@ -30,6 +35,9 @@ export class TXEOraclePublicContext extends TXETypedOracle {
|
|
|
30
35
|
avmOpcodeAddress() {
|
|
31
36
|
return Promise.resolve(this.contractAddress);
|
|
32
37
|
}
|
|
38
|
+
avmOpcodeSender() {
|
|
39
|
+
return Promise.resolve(AztecAddress.ZERO); // todo: change?
|
|
40
|
+
}
|
|
33
41
|
avmOpcodeBlockNumber() {
|
|
34
42
|
return Promise.resolve(this.globalVariables.blockNumber);
|
|
35
43
|
}
|
|
@@ -56,7 +64,7 @@ export class TXEOraclePublicContext extends TXETypedOracle {
|
|
|
56
64
|
}
|
|
57
65
|
async avmOpcodeNullifierExists(innerNullifier, targetAddress) {
|
|
58
66
|
const nullifier = await siloNullifier(targetAddress, innerNullifier);
|
|
59
|
-
const treeIndex = (await this.
|
|
67
|
+
const treeIndex = (await this.forkedWorldTrees.findLeafIndices(MerkleTreeId.NULLIFIER_TREE, [
|
|
60
68
|
nullifier.toBuffer()
|
|
61
69
|
]))[0];
|
|
62
70
|
const transientIndex = this.transientSiloedNullifiers.find((n)=>n.equals(nullifier));
|
|
@@ -69,14 +77,14 @@ export class TXEOraclePublicContext extends TXETypedOracle {
|
|
|
69
77
|
});
|
|
70
78
|
const dataWrite = new PublicDataWrite(await computePublicDataTreeLeafSlot(this.contractAddress, slot), value);
|
|
71
79
|
this.publicDataWrites.push(dataWrite);
|
|
72
|
-
await this.
|
|
80
|
+
await this.forkedWorldTrees.sequentialInsert(MerkleTreeId.PUBLIC_DATA_TREE, [
|
|
73
81
|
new PublicDataTreeLeaf(dataWrite.leafSlot, dataWrite.value).toBuffer()
|
|
74
82
|
]);
|
|
75
83
|
}
|
|
76
84
|
async avmOpcodeStorageRead(slot) {
|
|
77
85
|
const leafSlot = await computePublicDataTreeLeafSlot(this.contractAddress, slot);
|
|
78
|
-
const lowLeafResult = await this.
|
|
79
|
-
const value = !lowLeafResult || !lowLeafResult.alreadyPresent ? Fr.ZERO : (await this.
|
|
86
|
+
const lowLeafResult = await this.forkedWorldTrees.getPreviousValueIndex(MerkleTreeId.PUBLIC_DATA_TREE, leafSlot.toBigInt());
|
|
87
|
+
const value = !lowLeafResult || !lowLeafResult.alreadyPresent ? Fr.ZERO : (await this.forkedWorldTrees.getLeafPreimage(MerkleTreeId.PUBLIC_DATA_TREE, lowLeafResult.index)).leaf.value;
|
|
80
88
|
this.logger.debug('AVM storage read', {
|
|
81
89
|
slot,
|
|
82
90
|
value
|
|
@@ -84,15 +92,15 @@ export class TXEOraclePublicContext extends TXETypedOracle {
|
|
|
84
92
|
return value;
|
|
85
93
|
}
|
|
86
94
|
async close() {
|
|
87
|
-
this.logger.debug('Exiting
|
|
95
|
+
this.logger.debug('Exiting Public Context, building block with collected side effects', {
|
|
88
96
|
blockNumber: this.globalVariables.blockNumber
|
|
89
97
|
});
|
|
90
98
|
const txEffect = this.makeTxEffect();
|
|
91
|
-
await this.
|
|
92
|
-
const block =
|
|
99
|
+
await insertTxEffectIntoWorldTrees(txEffect, this.forkedWorldTrees);
|
|
100
|
+
const block = await makeTXEBlock(this.forkedWorldTrees, this.globalVariables, [
|
|
93
101
|
txEffect
|
|
94
|
-
])
|
|
95
|
-
await this.
|
|
102
|
+
]);
|
|
103
|
+
await this.forkedWorldTrees.close();
|
|
96
104
|
this.logger.debug('Exited PublicContext with built block', {
|
|
97
105
|
blockNumber: block.number,
|
|
98
106
|
txEffects: block.body.txEffects
|
|
@@ -111,16 +119,4 @@ export class TXEOraclePublicContext extends TXETypedOracle {
|
|
|
111
119
|
txEffect.txHash = new TxHash(new Fr(this.globalVariables.blockNumber));
|
|
112
120
|
return txEffect;
|
|
113
121
|
}
|
|
114
|
-
async insertSideEffectIntoWorldTrees(txEffect) {
|
|
115
|
-
const l1ToL2Messages = Array(NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP).fill(0).map(Fr.zero);
|
|
116
|
-
await this.worldTrees.appendLeaves(MerkleTreeId.NOTE_HASH_TREE, padArrayEnd(txEffect.noteHashes, Fr.ZERO, MAX_NOTE_HASHES_PER_TX));
|
|
117
|
-
await this.worldTrees.appendLeaves(MerkleTreeId.L1_TO_L2_MESSAGE_TREE, l1ToL2Messages);
|
|
118
|
-
// We do not need to add public data writes because we apply them as we go.
|
|
119
|
-
await this.worldTrees.batchInsert(MerkleTreeId.NULLIFIER_TREE, padArrayEnd(txEffect.nullifiers, Fr.ZERO, MAX_NULLIFIERS_PER_TX).map((nullifier)=>nullifier.toBuffer()), NULLIFIER_SUBTREE_HEIGHT);
|
|
120
|
-
}
|
|
121
|
-
async makeBlockHeader() {
|
|
122
|
-
const stateReference = await this.worldTrees.getStateReference();
|
|
123
|
-
const archiveInfo = await this.worldTrees.getTreeInfo(MerkleTreeId.ARCHIVE);
|
|
124
|
-
return new BlockHeader(new AppendOnlyTreeSnapshot(new Fr(archiveInfo.root), Number(archiveInfo.size)), makeContentCommitment(), stateReference, this.globalVariables, Fr.ZERO, Fr.ZERO);
|
|
125
|
-
}
|
|
126
122
|
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { BlockNumber } from '@aztec/foundation/branded-types';
|
|
2
|
+
import { Fr } from '@aztec/foundation/curves/bn254';
|
|
3
|
+
import type { KeyStore } from '@aztec/key-store';
|
|
4
|
+
import { AddressStore, CapsuleStore, NoteStore, PrivateEventStore, RecipientTaggingStore, SenderAddressBookStore, SenderTaggingStore } from '@aztec/pxe/server';
|
|
5
|
+
import { type IMiscOracle } from '@aztec/pxe/simulator';
|
|
6
|
+
import { type ContractArtifact, EventSelector, FunctionSelector } from '@aztec/stdlib/abi';
|
|
7
|
+
import { AuthWitness } from '@aztec/stdlib/auth-witness';
|
|
8
|
+
import { AztecAddress } from '@aztec/stdlib/aztec-address';
|
|
9
|
+
import { type ContractInstanceWithAddress } from '@aztec/stdlib/contract';
|
|
10
|
+
import { TxHash } from '@aztec/stdlib/tx';
|
|
11
|
+
import type { UInt64 } from '@aztec/stdlib/types';
|
|
12
|
+
import type { TXEStateMachine } from '../state_machine/index.js';
|
|
13
|
+
import type { TXEAccountStore } from '../util/txe_account_store.js';
|
|
14
|
+
import type { TXEContractStore } from '../util/txe_contract_store.js';
|
|
15
|
+
import type { ITxeExecutionOracle } from './interfaces.js';
|
|
16
|
+
export declare class TXEOracleTopLevelContext implements IMiscOracle, ITxeExecutionOracle {
|
|
17
|
+
private stateMachine;
|
|
18
|
+
private contractStore;
|
|
19
|
+
private noteStore;
|
|
20
|
+
private keyStore;
|
|
21
|
+
private addressStore;
|
|
22
|
+
private accountStore;
|
|
23
|
+
private senderTaggingStore;
|
|
24
|
+
private recipientTaggingStore;
|
|
25
|
+
private senderAddressBookStore;
|
|
26
|
+
private capsuleStore;
|
|
27
|
+
private privateEventStore;
|
|
28
|
+
private nextBlockTimestamp;
|
|
29
|
+
private version;
|
|
30
|
+
private chainId;
|
|
31
|
+
private authwits;
|
|
32
|
+
isMisc: true;
|
|
33
|
+
isTxe: true;
|
|
34
|
+
private logger;
|
|
35
|
+
constructor(stateMachine: TXEStateMachine, contractStore: TXEContractStore, noteStore: NoteStore, keyStore: KeyStore, addressStore: AddressStore, accountStore: TXEAccountStore, senderTaggingStore: SenderTaggingStore, recipientTaggingStore: RecipientTaggingStore, senderAddressBookStore: SenderAddressBookStore, capsuleStore: CapsuleStore, privateEventStore: PrivateEventStore, nextBlockTimestamp: bigint, version: Fr, chainId: Fr, authwits: Map<string, AuthWitness>);
|
|
36
|
+
utilityAssertCompatibleOracleVersion(version: number): void;
|
|
37
|
+
utilityGetRandomField(): Fr;
|
|
38
|
+
utilityDebugLog(level: number, message: string, fields: Fr[]): void;
|
|
39
|
+
txeGetDefaultAddress(): AztecAddress;
|
|
40
|
+
txeGetNextBlockNumber(): Promise<BlockNumber>;
|
|
41
|
+
txeGetNextBlockTimestamp(): Promise<bigint>;
|
|
42
|
+
txeGetLastBlockTimestamp(): Promise<bigint>;
|
|
43
|
+
txeGetLastTxEffects(): Promise<{
|
|
44
|
+
txHash: TxHash;
|
|
45
|
+
noteHashes: Fr[];
|
|
46
|
+
nullifiers: Fr[];
|
|
47
|
+
}>;
|
|
48
|
+
txeGetPrivateEvents(selector: EventSelector, contractAddress: AztecAddress, scope: AztecAddress): Promise<Fr[][]>;
|
|
49
|
+
txeAdvanceBlocksBy(blocks: number): Promise<void>;
|
|
50
|
+
txeAdvanceTimestampBy(duration: UInt64): void;
|
|
51
|
+
txeDeploy(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<void>;
|
|
52
|
+
txeAddAccount(artifact: ContractArtifact, instance: ContractInstanceWithAddress, secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
|
|
53
|
+
txeCreateAccount(secret: Fr): Promise<import("@aztec/stdlib/contract").CompleteAddress>;
|
|
54
|
+
txeAddAuthWitness(address: AztecAddress, messageHash: Fr): Promise<void>;
|
|
55
|
+
mineBlock(options?: {
|
|
56
|
+
nullifiers?: Fr[];
|
|
57
|
+
}): Promise<void>;
|
|
58
|
+
txePrivateCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress | undefined, functionSelector: FunctionSelector | undefined, args: Fr[], argsHash?: Fr, isStaticCall?: boolean): Promise<Fr[]>;
|
|
59
|
+
txePublicCallNewFlow(from: AztecAddress, targetContractAddress: AztecAddress, calldata: Fr[], isStaticCall: boolean): Promise<Fr[]>;
|
|
60
|
+
txeSimulateUtilityFunction(targetContractAddress: AztecAddress, functionSelector: FunctionSelector, args: Fr[]): Promise<Fr[]>;
|
|
61
|
+
private executeUtilityCall;
|
|
62
|
+
close(): [bigint, Map<string, AuthWitness>];
|
|
63
|
+
private getLastBlockNumber;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhlX29yYWNsZV90b3BfbGV2ZWxfY29udGV4dC5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29yYWNsZS90eGVfb3JhY2xlX3RvcF9sZXZlbF9jb250ZXh0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHcEQsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUVULGlCQUFpQixFQUNqQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLGtCQUFrQixFQUVuQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFJTCxLQUFLLFdBQVcsRUFNakIsTUFBTSxzQkFBc0IsQ0FBQztBQWdCOUIsT0FBTyxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsYUFBYSxFQUFnQixnQkFBZ0IsRUFBZ0IsTUFBTSxtQkFBbUIsQ0FBQztBQUN2SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxLQUFLLDJCQUEyQixFQUF5QixNQUFNLHdCQUF3QixDQUFDO0FBWWpHLE9BQU8sRUFTTCxNQUFNLEVBRVAsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUlsRCxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNqRSxPQUFPLEtBQUssRUFBRSxlQUFlLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRSxPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixD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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txe_oracle_top_level_context.d.ts","sourceRoot":"","sources":["../../src/oracle/txe_oracle_top_level_context.ts"],"names":[],"mappings":"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"}
|