@walletmesh/aztec-rpc-wallet 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +7 -0
- package/LICENSE +201 -0
- package/README.md +260 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/aztecRemoteWallet.d.ts +73 -0
- package/dist/aztecRemoteWallet.d.ts.map +1 -0
- package/dist/aztecRemoteWallet.js +354 -0
- package/dist/chainProvider.d.ts +56 -0
- package/dist/chainProvider.d.ts.map +1 -0
- package/dist/chainProvider.js +98 -0
- package/dist/contractArtifactCache.d.ts +50 -0
- package/dist/contractArtifactCache.d.ts.map +1 -0
- package/dist/contractArtifactCache.js +66 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +62 -0
- package/dist/handlers/aztecAccountWallet.d.ts +4 -0
- package/dist/handlers/aztecAccountWallet.d.ts.map +1 -0
- package/dist/handlers/aztecAccountWallet.js +329 -0
- package/dist/handlers/transactions.d.ts +21 -0
- package/dist/handlers/transactions.d.ts.map +1 -0
- package/dist/handlers/transactions.js +90 -0
- package/dist/handlers.d.ts +27 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/handlers.js +55 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/provider.d.ts +105 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +160 -0
- package/dist/serializers/account.d.ts +167 -0
- package/dist/serializers/account.d.ts.map +1 -0
- package/dist/serializers/account.js +245 -0
- package/dist/serializers/contract-utils.d.ts +40 -0
- package/dist/serializers/contract-utils.d.ts.map +1 -0
- package/dist/serializers/contract-utils.js +102 -0
- package/dist/serializers/contract.d.ts +168 -0
- package/dist/serializers/contract.d.ts.map +1 -0
- package/dist/serializers/contract.js +268 -0
- package/dist/serializers/core.d.ts +110 -0
- package/dist/serializers/core.d.ts.map +1 -0
- package/dist/serializers/core.js +130 -0
- package/dist/serializers/index.d.ts +28 -0
- package/dist/serializers/index.d.ts.map +1 -0
- package/dist/serializers/index.js +159 -0
- package/dist/serializers/log.d.ts +113 -0
- package/dist/serializers/log.d.ts.map +1 -0
- package/dist/serializers/log.js +231 -0
- package/dist/serializers/note.d.ts +127 -0
- package/dist/serializers/note.d.ts.map +1 -0
- package/dist/serializers/note.js +182 -0
- package/dist/serializers/transaction-utils.d.ts +107 -0
- package/dist/serializers/transaction-utils.d.ts.map +1 -0
- package/dist/serializers/transaction-utils.js +130 -0
- package/dist/serializers/transaction.d.ts +103 -0
- package/dist/serializers/transaction.d.ts.map +1 -0
- package/dist/serializers/transaction.js +238 -0
- package/dist/serializers/types.d.ts +49 -0
- package/dist/serializers/types.d.ts.map +1 -0
- package/dist/serializers/types.js +22 -0
- package/dist/types.d.ts +391 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/wallet.d.ts +62 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +77 -0
- package/package.json +44 -0
- package/src/aztecRemoteWallet.test.ts +542 -0
- package/src/aztecRemoteWallet.ts +484 -0
- package/src/chainProvider.test.ts +322 -0
- package/src/chainProvider.ts +122 -0
- package/src/contractArtifactCache.test.ts +126 -0
- package/src/contractArtifactCache.ts +75 -0
- package/src/errors.ts +71 -0
- package/src/handlers/aztecAccountWallet.test.ts +720 -0
- package/src/handlers/aztecAccountWallet.ts +593 -0
- package/src/handlers/transactions.ts +110 -0
- package/src/handlers.test.ts +270 -0
- package/src/handlers.ts +70 -0
- package/src/index.test.ts +23 -0
- package/src/index.ts +64 -0
- package/src/provider.test.ts +276 -0
- package/src/provider.ts +189 -0
- package/src/serializers/account.test.ts +125 -0
- package/src/serializers/account.ts +319 -0
- package/src/serializers/contract-utils.ts +104 -0
- package/src/serializers/contract.test.ts +162 -0
- package/src/serializers/contract.ts +350 -0
- package/src/serializers/core.test.ts +56 -0
- package/src/serializers/core.ts +141 -0
- package/src/serializers/index.test.ts +122 -0
- package/src/serializers/index.ts +213 -0
- package/src/serializers/log.test.ts +119 -0
- package/src/serializers/log.ts +283 -0
- package/src/serializers/note.test.ts +100 -0
- package/src/serializers/note.ts +227 -0
- package/src/serializers/transaction-utils.ts +237 -0
- package/src/serializers/transaction.test.ts +153 -0
- package/src/serializers/transaction.ts +342 -0
- package/src/serializers/types.ts +58 -0
- package/src/types.ts +295 -0
- package/src/wallet.test.ts +275 -0
- package/src/wallet.ts +94 -0
- package/tsconfig.build.json +6 -0
- package/tsconfig.json +11 -0
- package/typedoc.json +15 -0
- package/vitest.config.ts +10 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
import { AuthWitness, AztecAddress, Contract, NoFeePaymentMethod, } from '@aztec/aztec.js';
|
2
|
+
import { GasSettings } from '@aztec/circuits.js';
|
3
|
+
import { AztecWalletError } from '../errors.js';
|
4
|
+
/**
|
5
|
+
* Handles the 'aztec_sendTransaction' JSON-RPC method.
|
6
|
+
* Sends transactions to the Aztec network and returns the transaction hash.
|
7
|
+
* @param params - The transaction parameters
|
8
|
+
* @param params.functionCalls - Array of function calls to execute
|
9
|
+
* @param params.authwits - Optional array of authorization witnesses for the transaction
|
10
|
+
* @returns A Promise that resolves to the transaction hash string
|
11
|
+
*/
|
12
|
+
export async function sendTransaction(context, params) {
|
13
|
+
try {
|
14
|
+
// Setup the execution request without the calls for now
|
15
|
+
const executionRequestInit = {
|
16
|
+
calls: [],
|
17
|
+
authWitnesses: params.authwits?.map(AuthWitness.fromString) ?? [],
|
18
|
+
// TODO: Figure out what we should be doing with this fee parameter
|
19
|
+
fee: {
|
20
|
+
paymentMethod: new NoFeePaymentMethod(),
|
21
|
+
gasSettings: GasSettings.default({ maxFeesPerGas: await context.wallet.getCurrentBaseFees() }),
|
22
|
+
},
|
23
|
+
};
|
24
|
+
// Get artifacts and contracts first
|
25
|
+
const contractMap = new Map();
|
26
|
+
for (const c of params.functionCalls) {
|
27
|
+
const contractAddress = AztecAddress.fromString(c.contractAddress);
|
28
|
+
if (!contractMap.has(c.contractAddress)) {
|
29
|
+
const artifact = await context.contractArtifactCache.getContractArtifact(contractAddress);
|
30
|
+
const contract = await Contract.at(contractAddress, artifact, context.wallet);
|
31
|
+
contractMap.set(c.contractAddress, { contract, artifact });
|
32
|
+
}
|
33
|
+
}
|
34
|
+
// Now build the execution request
|
35
|
+
for (const c of params.functionCalls) {
|
36
|
+
// biome-ignore lint/style/noNonNullAssertion: we know the contract is in the map
|
37
|
+
const { contract } = contractMap.get(c.contractAddress);
|
38
|
+
const functionCall = contract.methods[c.functionName](...c.args);
|
39
|
+
executionRequestInit.calls.push(await functionCall.request());
|
40
|
+
}
|
41
|
+
const txExecutionRequest = await context.wallet.createTxExecutionRequest(executionRequestInit);
|
42
|
+
const simulatedTx = await context.wallet.simulateTx(txExecutionRequest, true /* simulatePublic */);
|
43
|
+
const txProvingResult = await context.wallet.proveTx(txExecutionRequest, simulatedTx.privateExecutionResult);
|
44
|
+
const txHash = await context.wallet.sendTx(txProvingResult.toTx());
|
45
|
+
return txHash.toString();
|
46
|
+
}
|
47
|
+
catch (error) {
|
48
|
+
throw new AztecWalletError('unknownInternalError');
|
49
|
+
}
|
50
|
+
}
|
51
|
+
/**
|
52
|
+
* Handles the 'aztec_simulateTransaction' JSON-RPC method.
|
53
|
+
* Simulates a transaction without submitting it to the network.
|
54
|
+
* @param params - The transaction parameters to simulate
|
55
|
+
* @param params.contractAddress - The target contract address
|
56
|
+
* @param params.functionName - The contract function to call
|
57
|
+
* @param params.args - The function arguments
|
58
|
+
* @returns A Promise that resolves to the simulation result
|
59
|
+
*/
|
60
|
+
export async function simulateTransaction(context, params) {
|
61
|
+
try {
|
62
|
+
const { contractAddress, functionName, args } = params;
|
63
|
+
const addr = AztecAddress.fromString(contractAddress);
|
64
|
+
const artifact = await context.contractArtifactCache.getContractArtifact(addr);
|
65
|
+
const contract = await Contract.at(addr, artifact, context.wallet);
|
66
|
+
const result = await contract.methods[functionName](...args).simulate();
|
67
|
+
// TODO: Is this sufficient for serializing the result?
|
68
|
+
switch (typeof result) {
|
69
|
+
case 'string':
|
70
|
+
return result;
|
71
|
+
case 'bigint':
|
72
|
+
return result.toString();
|
73
|
+
case 'object':
|
74
|
+
if (result instanceof Uint8Array) {
|
75
|
+
return Buffer.from(result).toString('hex');
|
76
|
+
}
|
77
|
+
return result;
|
78
|
+
default:
|
79
|
+
return result;
|
80
|
+
}
|
81
|
+
}
|
82
|
+
catch (error) {
|
83
|
+
if (error instanceof AztecWalletError) {
|
84
|
+
throw error;
|
85
|
+
}
|
86
|
+
console.error('Error simulating transaction:', error);
|
87
|
+
throw new AztecWalletError('unknownInternalError', 'aztec_simulateTransaction');
|
88
|
+
}
|
89
|
+
}
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hhbmRsZXJzL3RyYW5zYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLFlBQVksRUFDWixRQUFRLEVBQ1Isa0JBQWtCLEdBRW5CLE1BQU0saUJBQWlCLENBQUM7QUFFekIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBSWpELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVoRDs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQ25DLE9BQTJCLEVBQzNCLE1BQXlCO0lBRXpCLElBQUksQ0FBQztRQUNILHdEQUF3RDtRQUN4RCxNQUFNLG9CQUFvQixHQUF5QjtZQUNqRCxLQUFLLEVBQUUsRUFBRTtZQUNULGFBQWEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRTtZQUNqRSxtRUFBbUU7WUFDbkUsR0FBRyxFQUFFO2dCQUNILGFBQWEsRUFBRSxJQUFJLGtCQUFrQixFQUFFO2dCQUN2QyxXQUFXLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDO2FBQy9GO1NBQ0YsQ0FBQztRQUVGLG9DQUFvQztRQUNwQyxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBOEQsQ0FBQztRQUMxRixLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNyQyxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNuRSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMs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
|
@@ -0,0 +1,27 @@
|
|
1
|
+
/**
|
2
|
+
* @module handlers
|
3
|
+
*
|
4
|
+
* This module provides the core RPC method handling logic for the Aztec wallet.
|
5
|
+
* It routes incoming RPC requests to appropriate specialized handlers based on the method type.
|
6
|
+
*
|
7
|
+
* The handlers are organized into categories:
|
8
|
+
* - Base wallet methods (connect, getAccount, etc.)
|
9
|
+
* - Account wallet methods (chain operations, contract management, etc.)
|
10
|
+
* - Transaction methods (send, simulate)
|
11
|
+
*
|
12
|
+
* Each method handler validates inputs, performs the requested operation through the wallet,
|
13
|
+
* and returns properly formatted responses.
|
14
|
+
*/
|
15
|
+
import type { AztecWalletMethodMap } from './types.js';
|
16
|
+
import { type AztecWalletContext } from './types.js';
|
17
|
+
/**
|
18
|
+
* Main handler function that routes RPC method calls to appropriate specialized handlers.
|
19
|
+
*
|
20
|
+
* @param context - The wallet context containing PXE and wallet instances
|
21
|
+
* @param method - The RPC method being called
|
22
|
+
* @param params - Parameters passed to the method
|
23
|
+
* @returns Result from the method handler
|
24
|
+
* @throws {AztecWalletError} If method not supported or handler fails
|
25
|
+
*/
|
26
|
+
export declare function handler<M extends keyof AztecWalletMethodMap>(context: AztecWalletContext, method: M, params: AztecWalletMethodMap[M]['params']): Promise<AztecWalletMethodMap[M]['result']>;
|
27
|
+
//# sourceMappingURL=handlers.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,KAAK,kBAAkB,EAAuB,MAAM,YAAY,CAAC;AAK1E;;;;;;;;GAQG;AAEH,wBAAsB,OAAO,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAChE,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GACxC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAkC5C"}
|
package/dist/handlers.js
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
/**
|
2
|
+
* @module handlers
|
3
|
+
*
|
4
|
+
* This module provides the core RPC method handling logic for the Aztec wallet.
|
5
|
+
* It routes incoming RPC requests to appropriate specialized handlers based on the method type.
|
6
|
+
*
|
7
|
+
* The handlers are organized into categories:
|
8
|
+
* - Base wallet methods (connect, getAccount, etc.)
|
9
|
+
* - Account wallet methods (chain operations, contract management, etc.)
|
10
|
+
* - Transaction methods (send, simulate)
|
11
|
+
*
|
12
|
+
* Each method handler validates inputs, performs the requested operation through the wallet,
|
13
|
+
* and returns properly formatted responses.
|
14
|
+
*/
|
15
|
+
import { BASE_WALLET_METHODS } from './types.js';
|
16
|
+
import { AztecWalletError } from './errors.js';
|
17
|
+
import { sendTransaction, simulateTransaction } from './handlers/transactions.js';
|
18
|
+
import { aztecWalletHandler, AZTEC_WALLET_METHODS } from './handlers/aztecAccountWallet.js';
|
19
|
+
/**
|
20
|
+
* Main handler function that routes RPC method calls to appropriate specialized handlers.
|
21
|
+
*
|
22
|
+
* @param context - The wallet context containing PXE and wallet instances
|
23
|
+
* @param method - The RPC method being called
|
24
|
+
* @param params - Parameters passed to the method
|
25
|
+
* @returns Result from the method handler
|
26
|
+
* @throws {AztecWalletError} If method not supported or handler fails
|
27
|
+
*/
|
28
|
+
export async function handler(context, method, params) {
|
29
|
+
if (AZTEC_WALLET_METHODS.includes(method)) {
|
30
|
+
return aztecWalletHandler(context, method, params);
|
31
|
+
}
|
32
|
+
switch (method) {
|
33
|
+
// Base wallet methods
|
34
|
+
case 'wm_getSupportedMethods': {
|
35
|
+
// Return combined list of supported methods from all handlers
|
36
|
+
return [...BASE_WALLET_METHODS, ...AZTEC_WALLET_METHODS];
|
37
|
+
}
|
38
|
+
case 'aztec_connect': {
|
39
|
+
// Basic connection validation
|
40
|
+
// Note: Main connection logic handled by provider
|
41
|
+
return true;
|
42
|
+
}
|
43
|
+
// Core wallet methods
|
44
|
+
case 'aztec_getAccount':
|
45
|
+
return (await context.wallet.getAddress()).toString();
|
46
|
+
// Transaction methods
|
47
|
+
case 'aztec_sendTransaction':
|
48
|
+
return await sendTransaction(context, params);
|
49
|
+
case 'aztec_simulateTransaction':
|
50
|
+
return await simulateTransaction(context, params);
|
51
|
+
default:
|
52
|
+
throw new AztecWalletError('invalidRequest', `Method not supported: ${String(method)}`);
|
53
|
+
}
|
54
|
+
}
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaGFuZGxlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUdILE9BQU8sRUFBMkIsbUJBQW1CLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUU1Rjs7Ozs7Ozs7R0FRRztBQUVILE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxDQUMzQixPQUEyQixFQUMzQixNQUFTLEVBQ1QsTUFBeUM7SUFFekMsSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQyxPQUFPLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELFFBQVEsTUFBTSxFQUFFLENBQUM7UUFDZixzQkFBc0I7UUFDdEIsS0FBSyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7WUFDOUIsOERBQThEO1lBQzlELE9BQU8sQ0FBQyxHQUFHLG1CQUFtQixFQUFFLEdBQUcsb0JBQW9CLENBQWEsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsS0FBSyxlQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3JCLDhCQUE4QjtZQUM5QixrREFBa0Q7WUFDbEQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0Qsc0JBQXNCO1FBQ3RCLEtBQUssa0JBQWtCO1lBQ3JCLE9BQU8sQ0FBQyxNQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUV4RCxzQkFBc0I7UUFDdEIsS0FBSyx1QkFBdUI7WUFDMUIsT0FBTyxNQUFNLGVBQWUsQ0FDMUIsT0FBTyxFQUNQLE1BQWlFLENBQ2xFLENBQUM7UUFDSixLQUFLLDJCQUEyQjtZQUM5QixPQUFPLE1BQU0sbUJBQW1CLENBQzlCLE9BQU8sRUFDUCxNQUFxRSxDQUN0RSxDQUFDO1FBRUo7WUFDRSxNQUFNLElBQUksZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUseUJBQXlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUYsQ0FBQztBQUNILENBQUMifQ==
|
package/dist/index.d.ts
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
/**
|
2
|
+
* @module @walletmesh/aztec-rpc-wallet
|
3
|
+
*
|
4
|
+
* This module provides a JSON-RPC implementation for interacting with Aztec Network.
|
5
|
+
* It enables communication between dApps and wallets through a standardized interface.
|
6
|
+
*/
|
7
|
+
/**
|
8
|
+
* Provider class for dApps to interact with Aztec wallets
|
9
|
+
* @see AztecProvider
|
10
|
+
*/
|
11
|
+
export { AztecProvider } from './provider.js';
|
12
|
+
/**
|
13
|
+
* Minimal provider for direct interaction with an Aztec chain wallet
|
14
|
+
* @see AztecChainProvider
|
15
|
+
*/
|
16
|
+
export { AztecChainProvider } from './chainProvider.js';
|
17
|
+
/**
|
18
|
+
* Wallet implementation that handles RPC requests from dApps
|
19
|
+
* @see AztecChainWallet
|
20
|
+
*/
|
21
|
+
export { AztecChainWallet } from './wallet.js';
|
22
|
+
export { AztecChainWalletMiddleware } from './types.js';
|
23
|
+
/**
|
24
|
+
* Cache for contract artifacts
|
25
|
+
* @see ContractArtifactCache
|
26
|
+
*/
|
27
|
+
export { ContractArtifactCache } from './contractArtifactCache.js';
|
28
|
+
/**
|
29
|
+
* Error handling utilities for RPC communication
|
30
|
+
* @see AztecWalletError
|
31
|
+
* @see AztecWalletErrorMap
|
32
|
+
*/
|
33
|
+
export { AztecWalletError, AztecWalletErrorMap } from './errors.js';
|
34
|
+
/**
|
35
|
+
* Type definitions for RPC interfaces
|
36
|
+
*/
|
37
|
+
export type {
|
38
|
+
/** Chain identifier type */
|
39
|
+
AztecChainId,
|
40
|
+
/** Context passed through RPC middleware */
|
41
|
+
AztecWalletContext,
|
42
|
+
/** Event map for wallet events */
|
43
|
+
AztecWalletEventMap,
|
44
|
+
/** Base method map for core wallet functionality */
|
45
|
+
AztecWalletBaseMethodMap,
|
46
|
+
/** Complete method map including all Aztec methods */
|
47
|
+
AztecWalletMethodMap,
|
48
|
+
/** Middleware type for processing RPC requests */
|
49
|
+
AztecWalletMiddleware,
|
50
|
+
/** Router client type for wallet mesh integration */
|
51
|
+
AztecWalletRouterClient,
|
52
|
+
/** Handler type for wallet methods */
|
53
|
+
AztecWalletMethodHandler,
|
54
|
+
/** Type for contract function calls */
|
55
|
+
TransactionFunctionCall,
|
56
|
+
/** Parameters for transaction requests */
|
57
|
+
TransactionParams, } from './types.js';
|
58
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C;;;GAGG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;GAGG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD;;;GAGG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEpE;;GAEG;AACH,YAAY;AACV,4BAA4B;AAC5B,YAAY;AACZ,4CAA4C;AAC5C,kBAAkB;AAClB,kCAAkC;AAClC,mBAAmB;AACnB,oDAAoD;AACpD,wBAAwB;AACxB,sDAAsD;AACtD,oBAAoB;AACpB,kDAAkD;AAClD,qBAAqB;AACrB,qDAAqD;AACrD,uBAAuB;AACvB,sCAAsC;AACtC,wBAAwB;AACxB,uCAAuC;AACvC,uBAAuB;AACvB,0CAA0C;AAC1C,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
/**
|
2
|
+
* @module @walletmesh/aztec-rpc-wallet
|
3
|
+
*
|
4
|
+
* This module provides a JSON-RPC implementation for interacting with Aztec Network.
|
5
|
+
* It enables communication between dApps and wallets through a standardized interface.
|
6
|
+
*/
|
7
|
+
/**
|
8
|
+
* Provider class for dApps to interact with Aztec wallets
|
9
|
+
* @see AztecProvider
|
10
|
+
*/
|
11
|
+
export { AztecProvider } from './provider.js';
|
12
|
+
/**
|
13
|
+
* Minimal provider for direct interaction with an Aztec chain wallet
|
14
|
+
* @see AztecChainProvider
|
15
|
+
*/
|
16
|
+
export { AztecChainProvider } from './chainProvider.js';
|
17
|
+
/**
|
18
|
+
* Wallet implementation that handles RPC requests from dApps
|
19
|
+
* @see AztecChainWallet
|
20
|
+
*/
|
21
|
+
export { AztecChainWallet } from './wallet.js';
|
22
|
+
/**
|
23
|
+
* Cache for contract artifacts
|
24
|
+
* @see ContractArtifactCache
|
25
|
+
*/
|
26
|
+
export { ContractArtifactCache } from './contractArtifactCache.js';
|
27
|
+
/**
|
28
|
+
* Error handling utilities for RPC communication
|
29
|
+
* @see AztecWalletError
|
30
|
+
* @see AztecWalletErrorMap
|
31
|
+
*/
|
32
|
+
export { AztecWalletError, AztecWalletErrorMap } from './errors.js';
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSDs7O0dBR0c7QUFDSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTlDOzs7R0FHRztBQUNILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhEOzs7R0FHRztBQUNILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUcvQzs7O0dBR0c7QUFDSCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUVuRTs7OztHQUlHO0FBQ0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sYUFBYSxDQUFDIn0=
|
@@ -0,0 +1,105 @@
|
|
1
|
+
import type { JSONRPCTransport } from '@walletmesh/jsonrpc';
|
2
|
+
import { WalletRouterProvider } from '@walletmesh/router';
|
3
|
+
import type { AztecChainId, AztecWalletMethodMap, TransactionParams } from './types.js';
|
4
|
+
/**
|
5
|
+
* Provider for interacting with multiple Aztec chains through WalletMesh router.
|
6
|
+
*
|
7
|
+
* This class implements the client-side interface for dApps to communicate with Aztec wallets.
|
8
|
+
* It handles:
|
9
|
+
* - Connection management for multiple chains
|
10
|
+
* - Session tracking
|
11
|
+
* - Method calls with proper context
|
12
|
+
* - Event handling for wallet state changes
|
13
|
+
*
|
14
|
+
* @example
|
15
|
+
* ```typescript
|
16
|
+
* // Create provider with transport
|
17
|
+
* const provider = new AztecProvider(transport);
|
18
|
+
*
|
19
|
+
* // Connect to chains
|
20
|
+
* await provider.connect(['aztec:testnet', 'aztec:devnet']);
|
21
|
+
*
|
22
|
+
* // Single operation using convenience method
|
23
|
+
* const address = await provider.getAccount('aztec:testnet');
|
24
|
+
*
|
25
|
+
* // Single operation using chain builder
|
26
|
+
* const txHash = await provider.chain('aztec:testnet')
|
27
|
+
* .call('aztec_sendTransaction', {
|
28
|
+
* functionCalls: [{
|
29
|
+
* contractAddress: "0x...",
|
30
|
+
* functionName: "transfer",
|
31
|
+
* args: [recipient, amount]
|
32
|
+
* }]
|
33
|
+
* })
|
34
|
+
* .execute();
|
35
|
+
*
|
36
|
+
* // Multiple operations in one call
|
37
|
+
* const [account, contracts, blockNumber] = await provider
|
38
|
+
* .chain('aztec:testnet')
|
39
|
+
* .call('aztec_getAccount')
|
40
|
+
* .call('aztec_getContracts')
|
41
|
+
* .call('aztec_getBlockNumber')
|
42
|
+
* .execute();
|
43
|
+
* ```
|
44
|
+
*/
|
45
|
+
export declare class AztecProvider extends WalletRouterProvider {
|
46
|
+
private connectedChains;
|
47
|
+
private requestedChains;
|
48
|
+
constructor(transport: JSONRPCTransport);
|
49
|
+
/**
|
50
|
+
* Handles wallet state change events from the router.
|
51
|
+
* Updates the set of connected chains based on account availability.
|
52
|
+
* @param params - Event parameters containing chain ID and changes
|
53
|
+
*/
|
54
|
+
private handleWalletStateChanged;
|
55
|
+
/**
|
56
|
+
* Handles session termination events from the router.
|
57
|
+
* Cleans up session state and connected chains.
|
58
|
+
* @param params - Event parameters containing session ID
|
59
|
+
*/
|
60
|
+
private handleSessionTerminated;
|
61
|
+
/**
|
62
|
+
* Gets the list of currently connected chain IDs.
|
63
|
+
* @returns Array of connected chain IDs
|
64
|
+
*/
|
65
|
+
getSupportedChains(): AztecChainId[];
|
66
|
+
getAccount(chainId: AztecChainId): Promise<string>;
|
67
|
+
/**
|
68
|
+
* Sends a transaction to the specified chain.
|
69
|
+
* @param chainId - ID of the chain to send transaction to
|
70
|
+
* @param params - Transaction parameters including function calls and optional auth witnesses
|
71
|
+
* @returns Transaction hash
|
72
|
+
* @throws {AztecWalletError} If transaction fails or response invalid
|
73
|
+
*/
|
74
|
+
sendTransaction(chainId: AztecChainId, params: TransactionParams): Promise<string>;
|
75
|
+
/**
|
76
|
+
* Simulates a transaction without submitting it.
|
77
|
+
* @param chainId - ID of the chain to simulate on
|
78
|
+
* @param params - Transaction parameters to simulate
|
79
|
+
* @returns Simulation result
|
80
|
+
* @throws {AztecWalletError} If simulation fails
|
81
|
+
*/
|
82
|
+
simulateTransaction(chainId: AztecChainId, params: TransactionParams['functionCalls'][0]): Promise<unknown>;
|
83
|
+
/**
|
84
|
+
* Registers a contract instance with the wallet.
|
85
|
+
* @param chainId - ID of the chain where contract is deployed
|
86
|
+
* @param params - Contract registration parameters
|
87
|
+
* @throws {AztecWalletError} If registration fails
|
88
|
+
*/
|
89
|
+
registerContract(chainId: AztecChainId, params: AztecWalletMethodMap['aztec_registerContract']['params']): Promise<void>;
|
90
|
+
/**
|
91
|
+
* Registers a contract class with the wallet.
|
92
|
+
* @param chainId - ID of the chain to register on
|
93
|
+
* @param params - Contract class registration parameters
|
94
|
+
* @throws {AztecWalletError} If registration fails
|
95
|
+
*/
|
96
|
+
registerContractClass(chainId: AztecChainId, params: AztecWalletMethodMap['aztec_registerContractClass']['params']): Promise<void>;
|
97
|
+
/**
|
98
|
+
* Registers a transaction sender with the wallet.
|
99
|
+
* @param chainId - ID of the chain to register on
|
100
|
+
* @param params - Sender registration parameters
|
101
|
+
* @throws {AztecWalletError} If registration fails
|
102
|
+
*/
|
103
|
+
registerSender(chainId: AztecChainId, params: AztecWalletMethodMap['aztec_registerSender']['params']): Promise<void>;
|
104
|
+
}
|
105
|
+
//# sourceMappingURL=provider.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAExF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,qBAAa,aAAc,SAAQ,oBAAoB;IACrD,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,eAAe,CAAoB;gBAE/B,SAAS,EAAE,gBAAgB;IAcvC;;;;OAIG;IACH,OAAO,CAAC,wBAAwB;IAiBhC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;OAGG;IACI,kBAAkB,IAAI,YAAY,EAAE;IAI9B,UAAU,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ/D;;;;;;OAMG;IACU,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ/F;;;;;;OAMG;IACU,mBAAmB,CAC9B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAC5C,OAAO,CAAC,OAAO,CAAC;IAQnB;;;;;OAKG;IACU,gBAAgB,CAC3B,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,GAC/D,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;OAKG;IACU,qBAAqB,CAChC,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,oBAAoB,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,GACpE,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;;OAKG;IACU,cAAc,CACzB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,GAC7D,OAAO,CAAC,IAAI,CAAC;CAGjB"}
|
package/dist/provider.js
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
import { WalletRouterProvider } from '@walletmesh/router';
|
2
|
+
import { AztecWalletError, AztecWalletErrorType } from './errors.js';
|
3
|
+
/**
|
4
|
+
* Provider for interacting with multiple Aztec chains through WalletMesh router.
|
5
|
+
*
|
6
|
+
* This class implements the client-side interface for dApps to communicate with Aztec wallets.
|
7
|
+
* It handles:
|
8
|
+
* - Connection management for multiple chains
|
9
|
+
* - Session tracking
|
10
|
+
* - Method calls with proper context
|
11
|
+
* - Event handling for wallet state changes
|
12
|
+
*
|
13
|
+
* @example
|
14
|
+
* ```typescript
|
15
|
+
* // Create provider with transport
|
16
|
+
* const provider = new AztecProvider(transport);
|
17
|
+
*
|
18
|
+
* // Connect to chains
|
19
|
+
* await provider.connect(['aztec:testnet', 'aztec:devnet']);
|
20
|
+
*
|
21
|
+
* // Single operation using convenience method
|
22
|
+
* const address = await provider.getAccount('aztec:testnet');
|
23
|
+
*
|
24
|
+
* // Single operation using chain builder
|
25
|
+
* const txHash = await provider.chain('aztec:testnet')
|
26
|
+
* .call('aztec_sendTransaction', {
|
27
|
+
* functionCalls: [{
|
28
|
+
* contractAddress: "0x...",
|
29
|
+
* functionName: "transfer",
|
30
|
+
* args: [recipient, amount]
|
31
|
+
* }]
|
32
|
+
* })
|
33
|
+
* .execute();
|
34
|
+
*
|
35
|
+
* // Multiple operations in one call
|
36
|
+
* const [account, contracts, blockNumber] = await provider
|
37
|
+
* .chain('aztec:testnet')
|
38
|
+
* .call('aztec_getAccount')
|
39
|
+
* .call('aztec_getContracts')
|
40
|
+
* .call('aztec_getBlockNumber')
|
41
|
+
* .execute();
|
42
|
+
* ```
|
43
|
+
*/
|
44
|
+
export class AztecProvider extends WalletRouterProvider {
|
45
|
+
constructor(transport) {
|
46
|
+
super(transport);
|
47
|
+
this.connectedChains = new Set();
|
48
|
+
this.requestedChains = new Set();
|
49
|
+
// Bind event handlers
|
50
|
+
this.handleWalletStateChanged = this.handleWalletStateChanged.bind(this);
|
51
|
+
this.handleSessionTerminated = this.handleSessionTerminated.bind(this);
|
52
|
+
// Register event handlers
|
53
|
+
this.on('wm_walletStateChanged', this.handleWalletStateChanged);
|
54
|
+
this.on('wm_sessionTerminated', this.handleSessionTerminated);
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* Handles wallet state change events from the router.
|
58
|
+
* Updates the set of connected chains based on account availability.
|
59
|
+
* @param params - Event parameters containing chain ID and changes
|
60
|
+
*/
|
61
|
+
handleWalletStateChanged(params) {
|
62
|
+
const { chainId, changes } = params;
|
63
|
+
const aztecChainId = chainId;
|
64
|
+
// Only handle events for requested chains
|
65
|
+
if (this.requestedChains.has(aztecChainId)) {
|
66
|
+
if (changes.accounts && changes.accounts.length > 0) {
|
67
|
+
this.connectedChains.add(aztecChainId);
|
68
|
+
console.log('Chain connected:', aztecChainId);
|
69
|
+
}
|
70
|
+
else {
|
71
|
+
this.connectedChains.delete(aztecChainId);
|
72
|
+
console.log('Chain disconnected:', aztecChainId);
|
73
|
+
}
|
74
|
+
console.log('Connected chains:', Array.from(this.connectedChains));
|
75
|
+
}
|
76
|
+
}
|
77
|
+
/**
|
78
|
+
* Handles session termination events from the router.
|
79
|
+
* Cleans up session state and connected chains.
|
80
|
+
* @param params - Event parameters containing session ID
|
81
|
+
*/
|
82
|
+
handleSessionTerminated(params) {
|
83
|
+
const { sessionId } = params;
|
84
|
+
if (sessionId === this.sessionId) {
|
85
|
+
this.connectedChains.clear();
|
86
|
+
this.requestedChains.clear();
|
87
|
+
console.log('Session terminated, all chains cleared');
|
88
|
+
}
|
89
|
+
}
|
90
|
+
/**
|
91
|
+
* Gets the list of currently connected chain IDs.
|
92
|
+
* @returns Array of connected chain IDs
|
93
|
+
*/
|
94
|
+
getSupportedChains() {
|
95
|
+
return Array.from(this.connectedChains);
|
96
|
+
}
|
97
|
+
async getAccount(chainId) {
|
98
|
+
const result = await this.chain(chainId).call('aztec_getAccount').execute();
|
99
|
+
if (typeof result !== 'string' || !result) {
|
100
|
+
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid account address returned');
|
101
|
+
}
|
102
|
+
return result;
|
103
|
+
}
|
104
|
+
/**
|
105
|
+
* Sends a transaction to the specified chain.
|
106
|
+
* @param chainId - ID of the chain to send transaction to
|
107
|
+
* @param params - Transaction parameters including function calls and optional auth witnesses
|
108
|
+
* @returns Transaction hash
|
109
|
+
* @throws {AztecWalletError} If transaction fails or response invalid
|
110
|
+
*/
|
111
|
+
async sendTransaction(chainId, params) {
|
112
|
+
const result = await this.chain(chainId).call('aztec_sendTransaction', params).execute();
|
113
|
+
if (typeof result !== 'string' || !result) {
|
114
|
+
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid transaction hash returned');
|
115
|
+
}
|
116
|
+
return result;
|
117
|
+
}
|
118
|
+
/**
|
119
|
+
* Simulates a transaction without submitting it.
|
120
|
+
* @param chainId - ID of the chain to simulate on
|
121
|
+
* @param params - Transaction parameters to simulate
|
122
|
+
* @returns Simulation result
|
123
|
+
* @throws {AztecWalletError} If simulation fails
|
124
|
+
*/
|
125
|
+
async simulateTransaction(chainId, params) {
|
126
|
+
const result = await this.chain(chainId).call('aztec_simulateTransaction', params).execute();
|
127
|
+
if (result === undefined || result === null) {
|
128
|
+
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid simulation result returned');
|
129
|
+
}
|
130
|
+
return result;
|
131
|
+
}
|
132
|
+
/**
|
133
|
+
* Registers a contract instance with the wallet.
|
134
|
+
* @param chainId - ID of the chain where contract is deployed
|
135
|
+
* @param params - Contract registration parameters
|
136
|
+
* @throws {AztecWalletError} If registration fails
|
137
|
+
*/
|
138
|
+
async registerContract(chainId, params) {
|
139
|
+
await this.chain(chainId).call('aztec_registerContract', params).execute();
|
140
|
+
}
|
141
|
+
/**
|
142
|
+
* Registers a contract class with the wallet.
|
143
|
+
* @param chainId - ID of the chain to register on
|
144
|
+
* @param params - Contract class registration parameters
|
145
|
+
* @throws {AztecWalletError} If registration fails
|
146
|
+
*/
|
147
|
+
async registerContractClass(chainId, params) {
|
148
|
+
await this.chain(chainId).call('aztec_registerContractClass', params).execute();
|
149
|
+
}
|
150
|
+
/**
|
151
|
+
* Registers a transaction sender with the wallet.
|
152
|
+
* @param chainId - ID of the chain to register on
|
153
|
+
* @param params - Sender registration parameters
|
154
|
+
* @throws {AztecWalletError} If registration fails
|
155
|
+
*/
|
156
|
+
async registerSender(chainId, params) {
|
157
|
+
await this.chain(chainId).call('aztec_registerSender', params).execute();
|
158
|
+
}
|
159
|
+
}
|
160
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBR3JFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0NHO0FBQ0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxvQkFBb0I7SUFJckQsWUFBWSxTQUEyQjtRQUNyQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUVqQyxzQkFBc0I7UUFDdEIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdkUsMEJBQTBCO1FBQzFCLElBQUksQ0FBQyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLHdCQUF3QixDQUFDLE1BQStDO1FBQzlFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLE9BQXVCLENBQUM7UUFFN0MsMENBQTBDO1FBQzFDLElBQUksSUFBSSxDQUFDLGVB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
|