@walletmesh/aztec-rpc-wallet 0.1.0
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/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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
|