@walletmesh/aztec-rpc-wallet 0.3.1 → 0.4.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.
Files changed (185) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +290 -228
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/client/aztec-dapp-wallet.d.ts +401 -0
  5. package/dist/client/aztec-dapp-wallet.d.ts.map +1 -0
  6. package/dist/client/aztec-dapp-wallet.js +705 -0
  7. package/dist/client/aztec-router-provider.d.ts +58 -0
  8. package/dist/client/aztec-router-provider.d.ts.map +1 -0
  9. package/dist/client/aztec-router-provider.js +62 -0
  10. package/dist/client/helpers.d.ts +44 -0
  11. package/dist/client/helpers.d.ts.map +1 -0
  12. package/dist/client/helpers.js +79 -0
  13. package/dist/client/register-serializers.d.ts +41 -0
  14. package/dist/client/register-serializers.d.ts.map +1 -0
  15. package/dist/client/register-serializers.js +97 -0
  16. package/dist/contractArtifactCache.d.ts +49 -32
  17. package/dist/contractArtifactCache.d.ts.map +1 -1
  18. package/dist/contractArtifactCache.js +47 -34
  19. package/dist/errors.d.ts +50 -8
  20. package/dist/errors.d.ts.map +1 -1
  21. package/dist/errors.js +50 -10
  22. package/dist/index.d.ts +53 -40
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +52 -17
  25. package/dist/types.d.ts +345 -270
  26. package/dist/types.d.ts.map +1 -1
  27. package/dist/types.js +10 -8
  28. package/dist/wallet/create-node.d.ts +73 -0
  29. package/dist/wallet/create-node.d.ts.map +1 -0
  30. package/dist/wallet/create-node.js +99 -0
  31. package/dist/wallet/handlers/account.d.ts +67 -0
  32. package/dist/wallet/handlers/account.d.ts.map +1 -0
  33. package/dist/wallet/handlers/account.js +85 -0
  34. package/dist/wallet/handlers/contract-interaction.d.ts +77 -0
  35. package/dist/wallet/handlers/contract-interaction.d.ts.map +1 -0
  36. package/dist/wallet/handlers/contract-interaction.js +219 -0
  37. package/dist/wallet/handlers/contract.d.ts +96 -0
  38. package/dist/wallet/handlers/contract.d.ts.map +1 -0
  39. package/dist/wallet/handlers/contract.js +146 -0
  40. package/dist/wallet/handlers/event.d.ts +62 -0
  41. package/dist/wallet/handlers/event.d.ts.map +1 -0
  42. package/dist/wallet/handlers/event.js +85 -0
  43. package/dist/wallet/handlers/index.d.ts +88 -0
  44. package/dist/wallet/handlers/index.d.ts.map +1 -0
  45. package/dist/wallet/handlers/index.js +47 -0
  46. package/dist/wallet/handlers/node.d.ts +117 -0
  47. package/dist/wallet/handlers/node.d.ts.map +1 -0
  48. package/dist/wallet/handlers/node.js +196 -0
  49. package/dist/wallet/handlers/senders.d.ts +70 -0
  50. package/dist/wallet/handlers/senders.d.ts.map +1 -0
  51. package/dist/wallet/handlers/senders.js +92 -0
  52. package/dist/wallet/handlers/transaction.d.ts +123 -0
  53. package/dist/wallet/handlers/transaction.d.ts.map +1 -0
  54. package/dist/wallet/handlers/transaction.js +191 -0
  55. package/dist/wallet/serializers.d.ts +75 -0
  56. package/dist/wallet/serializers.d.ts.map +1 -0
  57. package/dist/wallet/serializers.js +501 -0
  58. package/docs/README.md +290 -229
  59. package/docs/classes/AztecDappWallet.md +1304 -0
  60. package/docs/classes/AztecRouterProvider.md +1058 -0
  61. package/docs/classes/AztecWalletError.md +124 -47
  62. package/docs/classes/ContractArtifactCache.md +48 -31
  63. package/docs/functions/connectAztec.md +62 -0
  64. package/docs/functions/createAztecWallet.md +46 -0
  65. package/docs/functions/createAztecWalletNode.md +96 -0
  66. package/docs/functions/registerAztecSerializers.md +61 -0
  67. package/docs/functions/registerWalletAztecSerializers.md +39 -0
  68. package/docs/globals.md +16 -14
  69. package/docs/interfaces/AztecHandlerContext.md +54 -0
  70. package/docs/interfaces/AztecWalletContext.md +50 -0
  71. package/docs/interfaces/AztecWalletMethodMap.md +470 -477
  72. package/docs/type-aliases/AztecChainId.md +16 -3
  73. package/docs/variables/ALL_AZTEC_METHODS.md +20 -0
  74. package/docs/variables/AztecWalletErrorMap.md +9 -4
  75. package/docs/variables/AztecWalletSerializer.md +45 -0
  76. package/package.json +9 -9
  77. package/src/client/aztec-dapp-wallet.test.ts +628 -0
  78. package/src/client/aztec-dapp-wallet.ts +879 -0
  79. package/src/client/aztec-router-provider.test.ts +235 -0
  80. package/src/client/aztec-router-provider.ts +64 -0
  81. package/src/client/helpers.test.ts +187 -0
  82. package/src/client/helpers.ts +91 -0
  83. package/src/client/register-serializers.ts +108 -0
  84. package/src/contractArtifactCache.test.ts +21 -10
  85. package/src/contractArtifactCache.ts +54 -35
  86. package/src/errors.ts +58 -10
  87. package/src/index.test.ts +2 -6
  88. package/src/index.ts +73 -37
  89. package/src/types.ts +379 -217
  90. package/src/wallet/create-node.test.ts +332 -0
  91. package/src/wallet/create-node.ts +120 -0
  92. package/src/wallet/handlers/account.test.ts +172 -0
  93. package/src/wallet/handlers/account.ts +99 -0
  94. package/src/wallet/handlers/contract-interaction.test.ts +248 -0
  95. package/src/wallet/handlers/contract-interaction.ts +269 -0
  96. package/src/wallet/handlers/contract.test.ts +245 -0
  97. package/src/wallet/handlers/contract.ts +174 -0
  98. package/src/wallet/handlers/event.test.ts +216 -0
  99. package/src/wallet/handlers/event.ts +99 -0
  100. package/src/wallet/handlers/index.ts +84 -0
  101. package/src/wallet/handlers/node.test.ts +304 -0
  102. package/src/wallet/handlers/node.ts +230 -0
  103. package/src/wallet/handlers/senders.test.ts +172 -0
  104. package/src/wallet/handlers/senders.ts +106 -0
  105. package/src/wallet/handlers/transaction.test.ts +371 -0
  106. package/src/wallet/handlers/transaction.ts +239 -0
  107. package/src/wallet/serializers.test.ts +253 -0
  108. package/src/wallet/serializers.ts +586 -0
  109. package/typedoc.json +23 -1
  110. package/dist/aztecRemoteWallet.d.ts +0 -70
  111. package/dist/aztecRemoteWallet.d.ts.map +0 -1
  112. package/dist/aztecRemoteWallet.js +0 -335
  113. package/dist/chainProvider.d.ts +0 -56
  114. package/dist/chainProvider.d.ts.map +0 -1
  115. package/dist/chainProvider.js +0 -98
  116. package/dist/handlers/aztecAccountWallet.d.ts +0 -4
  117. package/dist/handlers/aztecAccountWallet.d.ts.map +0 -1
  118. package/dist/handlers/aztecAccountWallet.js +0 -295
  119. package/dist/handlers/transactions.d.ts +0 -21
  120. package/dist/handlers/transactions.d.ts.map +0 -1
  121. package/dist/handlers/transactions.js +0 -98
  122. package/dist/handlers.d.ts +0 -27
  123. package/dist/handlers.d.ts.map +0 -1
  124. package/dist/handlers.js +0 -55
  125. package/dist/provider.d.ts +0 -105
  126. package/dist/provider.d.ts.map +0 -1
  127. package/dist/provider.js +0 -160
  128. package/dist/serializers/account.d.ts +0 -164
  129. package/dist/serializers/account.d.ts.map +0 -1
  130. package/dist/serializers/account.js +0 -244
  131. package/dist/serializers/contract.d.ts +0 -62
  132. package/dist/serializers/contract.d.ts.map +0 -1
  133. package/dist/serializers/contract.js +0 -130
  134. package/dist/serializers/index.d.ts +0 -21
  135. package/dist/serializers/index.d.ts.map +0 -1
  136. package/dist/serializers/index.js +0 -154
  137. package/dist/serializers/log.d.ts +0 -66
  138. package/dist/serializers/log.d.ts.map +0 -1
  139. package/dist/serializers/log.js +0 -222
  140. package/dist/serializers/note.d.ts +0 -124
  141. package/dist/serializers/note.d.ts.map +0 -1
  142. package/dist/serializers/note.js +0 -208
  143. package/dist/serializers/transaction.d.ts +0 -99
  144. package/dist/serializers/transaction.d.ts.map +0 -1
  145. package/dist/serializers/transaction.js +0 -275
  146. package/dist/wallet.d.ts +0 -62
  147. package/dist/wallet.d.ts.map +0 -1
  148. package/dist/wallet.js +0 -77
  149. package/docs/classes/AztecChainProvider.md +0 -553
  150. package/docs/classes/AztecChainWallet.md +0 -409
  151. package/docs/classes/AztecProvider.md +0 -1112
  152. package/docs/interfaces/AztecWalletBaseMethodMap.md +0 -135
  153. package/docs/interfaces/AztecWalletEventMap.md +0 -17
  154. package/docs/type-aliases/AztecChainWalletMiddleware.md +0 -13
  155. package/docs/type-aliases/AztecWalletContext.md +0 -29
  156. package/docs/type-aliases/AztecWalletMethodHandler.md +0 -37
  157. package/docs/type-aliases/AztecWalletMiddleware.md +0 -13
  158. package/docs/type-aliases/AztecWalletRouterClient.md +0 -13
  159. package/docs/type-aliases/TransactionFunctionCall.md +0 -33
  160. package/docs/type-aliases/TransactionParams.md +0 -27
  161. package/src/aztecRemoteWallet.test.ts +0 -505
  162. package/src/aztecRemoteWallet.ts +0 -467
  163. package/src/chainProvider.test.ts +0 -401
  164. package/src/chainProvider.ts +0 -116
  165. package/src/handlers/aztecAccountWallet.test.ts +0 -650
  166. package/src/handlers/aztecAccountWallet.ts +0 -531
  167. package/src/handlers/transactions.ts +0 -124
  168. package/src/handlers.test.ts +0 -270
  169. package/src/handlers.ts +0 -70
  170. package/src/provider.test.ts +0 -277
  171. package/src/provider.ts +0 -189
  172. package/src/serializers/account.test.ts +0 -125
  173. package/src/serializers/account.ts +0 -301
  174. package/src/serializers/contract.test.ts +0 -24
  175. package/src/serializers/contract.ts +0 -183
  176. package/src/serializers/index.test.ts +0 -136
  177. package/src/serializers/index.ts +0 -191
  178. package/src/serializers/log.test.ts +0 -286
  179. package/src/serializers/log.ts +0 -292
  180. package/src/serializers/note.test.ts +0 -125
  181. package/src/serializers/note.ts +0 -250
  182. package/src/serializers/transaction.test.ts +0 -320
  183. package/src/serializers/transaction.ts +0 -409
  184. package/src/wallet.test.ts +0 -275
  185. package/src/wallet.ts +0 -94
@@ -0,0 +1,219 @@
1
+ import { Contract, FeeJuicePaymentMethod, Fr } from '@aztec/aztec.js';
2
+ import { GasSettings } from '@aztec/stdlib/gas';
3
+ import { createLogger } from '@aztec/foundation/log';
4
+ const logger = createLogger('aztec-rpc-wallet:contract-interaction:handler');
5
+ /**
6
+ * @module @walletmesh/aztec-rpc-wallet/wallet/handlers/contract-interaction
7
+ * This module provides handlers for WalletMesh-specific high-level contract
8
+ * interaction and deployment methods (e.g., `aztec_wmExecuteTx`, `aztec_wmDeployContract`).
9
+ * These methods simplify common contract operations for dApp developers by accepting
10
+ * an {@link ExecutionPayload} or deployment parameters, with the wallet-side
11
+ * handling more of the transaction construction, simulation, proving, and sending flow.
12
+ */
13
+ /**
14
+ * Creates handlers for WalletMesh-specific contract interaction and deployment JSON-RPC methods.
15
+ *
16
+ * These handlers manage high-level contract operations such as:
17
+ * - `aztec_wmExecuteTx`: Executing a pre-constructed {@link ExecutionPayload}.
18
+ * - `aztec_wmSimulateTx`: Simulating an {@link ExecutionPayload}.
19
+ * - `aztec_wmDeployContract`: Deploying a new contract from its artifact and arguments.
20
+ *
21
+ * The primary goal of these "wm" (WalletMesh) methods is to simplify the dApp's
22
+ * interaction with the wallet by abstracting parts of the standard Aztec transaction
23
+ * lifecycle (e.g., fee estimation, `createTxExecutionRequest`, `proveTx`, `sendTx`).
24
+ * The wallet takes on more responsibility, which can lead to a better user experience
25
+ * as the wallet can provide more context or apply its own policies.
26
+ *
27
+ * @returns An object where keys are "wm" prefixed method names and values are their
28
+ * corresponding handler functions.
29
+ * @see {@link AztecWalletMethodMap} for method definitions.
30
+ */
31
+ export function createContractInteractionHandlers() {
32
+ /** @internal Helper to configure fee options. TODO: Make this more configurable. */
33
+ async function getFeeOptions(ctx) {
34
+ // TODO: Provide gas settings from the context
35
+ logger.debug('Getting current base fees...');
36
+ const baseFees = await ctx.wallet.getCurrentBaseFees();
37
+ logger.debug('Base fees:', baseFees);
38
+ const maxFeesPerGas = baseFees.mul(1.5);
39
+ logger.debug('Calculated max fees per gas:', maxFeesPerGas);
40
+ const feeOpts = {
41
+ paymentMethod: new FeeJuicePaymentMethod(ctx.wallet.getAddress()),
42
+ gasSettings: GasSettings.default({ maxFeesPerGas }),
43
+ };
44
+ logger.debug('Fee options configured:', feeOpts);
45
+ return feeOpts;
46
+ }
47
+ /** @internal Helper to configure transaction execution options. TODO: Make this more configurable. */
48
+ async function getTxOptions(_ctx) {
49
+ // TODO(twt): Enable setting cancellable flag & nonce in the options
50
+ const txOpts = {};
51
+ return txOpts;
52
+ }
53
+ async function createTxExecutionRequest(ctx, executionPayload) {
54
+ logger.debug('Creating transaction execution request...');
55
+ try {
56
+ // TODO(twt): Provide gas settings from the context
57
+ logger.debug('Getting current base fees...');
58
+ const baseFees = await ctx.wallet.getCurrentBaseFees();
59
+ logger.debug('Base fees:', baseFees);
60
+ const maxFeesPerGas = baseFees.mul(1.5);
61
+ logger.debug('Calculated max fees per gas:', maxFeesPerGas);
62
+ const feeOpts = await getFeeOptions(ctx);
63
+ const txOpts = await getTxOptions(ctx);
64
+ // Create a transaction execution request from the payload
65
+ const txRequest = await ctx.wallet.createTxExecutionRequest(executionPayload, feeOpts, txOpts);
66
+ return txRequest;
67
+ }
68
+ catch (error) {
69
+ logger.error('Failed to create transaction execution request:', error);
70
+ throw error;
71
+ }
72
+ }
73
+ async function simulateTransaction(ctx, executionPayload, txExecutionRequest) {
74
+ try {
75
+ const txRequest = txExecutionRequest || (await createTxExecutionRequest(ctx, executionPayload));
76
+ // Execute the transaction using the standard flow
77
+ logger.debug('Starting transaction simulation...');
78
+ const simStartTime = Date.now();
79
+ const simulationResult = await ctx.wallet.simulateTx(txRequest, true);
80
+ logger.debug(`Transaction simulation completed in ${Date.now() - simStartTime}ms`);
81
+ return simulationResult;
82
+ }
83
+ catch (error) {
84
+ logger.error('Transaction simulation failed:', error);
85
+ throw error;
86
+ }
87
+ }
88
+ /**
89
+ * @internal
90
+ * Helper function to execute a transaction from an {@link ExecutionPayload}.
91
+ * This consolidates the common flow:
92
+ * 1. Create TxExecutionRequest (if needed, though typically done by `aztec_wmExecuteTx` caller or here).
93
+ * 2. Simulate transaction.
94
+ * 3. Prove transaction.
95
+ * 4. Send transaction.
96
+ *
97
+ * @param ctx - The {@link AztecHandlerContext}.
98
+ * @param executionPayload - The {@link ExecutionPayload} for the transaction.
99
+ * @returns A promise resolving to the {@link TxHash} of the sent transaction.
100
+ */
101
+ async function executeTransaction(ctx, executionPayload) {
102
+ const startTime = Date.now();
103
+ logger.debug(`Starting transaction execution. Wallet: ${ctx.wallet.getAddress().toString()}, Payload: ${executionPayload.calls.length} calls`);
104
+ logger.debug('Execution payload:', executionPayload);
105
+ try {
106
+ const txRequest = await createTxExecutionRequest(ctx, executionPayload);
107
+ const simulationResult = await simulateTransaction(ctx, executionPayload, txRequest);
108
+ logger.debug('Starting transaction proving...');
109
+ const proveStartTime = Date.now();
110
+ const provingResult = await ctx.wallet.proveTx(txRequest, simulationResult.privateExecutionResult);
111
+ logger.debug(`Transaction proving completed in ${Date.now() - proveStartTime}ms`);
112
+ logger.debug('Proving result:', provingResult);
113
+ logger.debug('Creating transaction from proving result...');
114
+ const tx = provingResult.toTx();
115
+ logger.debug('Transaction created:', tx);
116
+ logger.debug('Sending transaction to network...');
117
+ const sendStartTime = Date.now();
118
+ const txHash = await ctx.wallet.sendTx(tx);
119
+ logger.debug(`Transaction sent in ${Date.now() - sendStartTime}ms, hash: ${txHash.toString()}`);
120
+ return txHash;
121
+ }
122
+ catch (error) {
123
+ const totalTime = Date.now() - startTime;
124
+ logger.error(`Transaction execution failed after ${totalTime}ms}`);
125
+ logger.error('Error details:', error);
126
+ throw error;
127
+ }
128
+ }
129
+ return {
130
+ /**
131
+ * Handles the "aztec_wmExecuteTx" JSON-RPC method.
132
+ * This WalletMesh-specific method takes an {@link ExecutionPayload} and handles
133
+ * the full lifecycle of simulating, proving, and sending the transaction.
134
+ *
135
+ * @param ctx - The {@link AztecHandlerContext}.
136
+ * @param paramsTuple - A tuple containing the {@link ExecutionPayload}.
137
+ * Defined by {@link AztecWalletMethodMap.aztec_wmExecuteTx.params}.
138
+ * @param paramsTuple.0 - The {@link ExecutionPayload} to execute.
139
+ * @returns A promise that resolves to the {@link TxHash} of the sent transaction.
140
+ * Type defined by {@link AztecWalletMethodMap.aztec_wmExecuteTx.result}.
141
+ */
142
+ aztec_wmExecuteTx: async (ctx, paramsTuple) => {
143
+ const [executionPayload] = paramsTuple;
144
+ return executeTransaction(ctx, executionPayload);
145
+ },
146
+ /**
147
+ * Handles the "aztec_wmSimulateTx" JSON-RPC method.
148
+ * This WalletMesh-specific method takes an {@link ExecutionPayload} and simulates
149
+ * the transaction, returning the {@link TxSimulationResult}.
150
+ *
151
+ * @param ctx - The {@link AztecHandlerContext}.
152
+ * @param paramsTuple - A tuple containing the {@link ExecutionPayload}.
153
+ * Defined by {@link AztecWalletMethodMap.aztec_wmSimulateTx.params}.
154
+ * @param paramsTuple.0 - The {@link ExecutionPayload} to simulate.
155
+ * @returns A promise that resolves to the {@link TxSimulationResult}.
156
+ * Type defined by {@link AztecWalletMethodMap.aztec_wmSimulateTx.result}.
157
+ */
158
+ aztec_wmSimulateTx: async (ctx, paramsTuple) => {
159
+ const [executionPayload] = paramsTuple;
160
+ return await simulateTransaction(ctx, executionPayload);
161
+ },
162
+ /**
163
+ * Handles the "aztec_wmDeployContract" JSON-RPC method.
164
+ * This WalletMesh-specific method deploys a new contract using its {@link ContractArtifact}
165
+ * and constructor arguments. It manages the deployment transaction lifecycle, including
166
+ * computing the contract address, proving, and sending the deployment transaction.
167
+ *
168
+ * Fee configuration is determined internally by the `getFeeOptions` helper.
169
+ *
170
+ * @param ctx - The {@link AztecHandlerContext}.
171
+ * @param paramsTuple - A tuple containing the deployment parameters (artifact, args, constructorName).
172
+ * Defined by {@link AztecWalletMethodMap.aztec_wmDeployContract.params}.
173
+ * @param paramsTuple.0.artifact - The {@link ContractArtifact} of the contract to deploy.
174
+ * @param paramsTuple.0.args - An array of arguments for the contract's constructor.
175
+ * @param paramsTuple.0.constructorName - Optional name of the constructor function if the artifact has multiple.
176
+ * @returns A promise that resolves to an object containing the `txHash` ({@link TxHash})
177
+ * of the deployment transaction and the `contractAddress` ({@link AztecAddress})
178
+ * of the newly deployed contract.
179
+ * Type defined by {@link AztecWalletMethodMap.aztec_wmDeployContract.result}.
180
+ */
181
+ aztec_wmDeployContract: async (ctx, paramsTuple) => {
182
+ const [params] = paramsTuple;
183
+ const { artifact, args, constructorName } = params;
184
+ logger.debug(`aztec_wmDeployContract: deploying ${artifact.name} with ${args.length} args`);
185
+ try {
186
+ // Create deployment method using the server-side wallet
187
+ const deployMethod = Contract.deploy(ctx.wallet, artifact, args, constructorName);
188
+ const contractAddressSalt = Fr.random();
189
+ const txOpts = await getTxOptions(ctx);
190
+ const opts = {
191
+ contractAddressSalt,
192
+ fee: await getFeeOptions(ctx),
193
+ };
194
+ if (txOpts.nonce) {
195
+ opts.nonce = txOpts.nonce;
196
+ }
197
+ if (txOpts.cancellable) {
198
+ opts.cancellable = txOpts.cancellable;
199
+ }
200
+ // Compute the contract address
201
+ const { address: contractAddress } = await deployMethod.getInstance(opts);
202
+ logger.debug(`Computed contract address: ${contractAddress.toString()}`);
203
+ const deployProvenTx = await deployMethod.prove(opts);
204
+ const deploySentTx = await deployProvenTx.send();
205
+ const txHash = await deploySentTx.getTxHash();
206
+ logger.debug(`Contract deployed, hash: ${txHash.toString()}`);
207
+ return {
208
+ txHash,
209
+ contractAddress,
210
+ };
211
+ }
212
+ catch (error) {
213
+ logger.error(`Contract deployment failed for ${artifact.name}:`, error);
214
+ throw error;
215
+ }
216
+ },
217
+ };
218
+ }
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QtaW50ZXJhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2FsbGV0L2hhbmRsZXJzL2NvbnRyYWN0LWludGVyYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxFQUFtQyxNQUFNLGlCQUFpQixDQUFDO0FBR3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFHckQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFFN0U7Ozs7Ozs7R0FPRztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sVUFBVSxpQ0FBaUM7SUFDL0Msb0ZBQW9GO0lBQ3BGLEtBQUssVUFBVSxhQUFhLENBQUMsR0FBd0I7UUFDbkQsOENBQThDO1FBQzlDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM3QyxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUVyQyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFNUQsTUFBTSxPQUFPLEdBQWU7WUFDMUIsYUFBYSxFQUFFLElBQUkscUJBQXFCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqRSxXQUFXLEVBQUUsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDO1NBQ3BELENBQUM7UUFD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
@@ -0,0 +1,96 @@
1
+ import type { AztecWalletMethodMap } from '../../types.js';
2
+ import type { AztecHandlerContext } from './index.js';
3
+ /**
4
+ * Creates handlers for contract-related Aztec wallet JSON-RPC methods.
5
+ * These handlers are responsible for managing the registration of deployed contract
6
+ * instances and contract classes (artifacts), as well as retrieving contract metadata.
7
+ *
8
+ * Each handler function receives an {@link AztecHandlerContext} which provides access
9
+ * to the {@link AccountWallet}, {@link PXE} client, and {@link ContractArtifactCache}.
10
+ *
11
+ * @returns An object where keys are contract-related method names
12
+ * (e.g., "aztec_registerContract", "aztec_getContractMetadata") and values
13
+ * are their corresponding handler functions.
14
+ * @see {@link AztecWalletMethodMap} for method definitions.
15
+ */
16
+ export declare function createContractHandlers(): {
17
+ /**
18
+ * Handles the "aztec_registerContract" JSON-RPC method.
19
+ * Registers a deployed contract instance with the {@link AccountWallet} in the context.
20
+ * This allows the wallet to be aware of and interact with the specified contract.
21
+ * An optional {@link ContractArtifact} can be provided to include ABI information.
22
+ *
23
+ * @param ctx - The {@link AztecHandlerContext} containing the `wallet` instance.
24
+ * @param paramsTuple - A tuple containing the contract instance and optional artifact.
25
+ * Defined by {@link AztecWalletMethodMap.aztec_registerContract.params}.
26
+ * @param paramsTuple.0 - The {@link ContractInstanceWithAddress} to register.
27
+ * @param paramsTuple.1 - Optional: The {@link ContractArtifact} associated with the instance.
28
+ * @returns A promise that resolves to `true` if the registration was successful.
29
+ * @throws {Error} If critical parameters like `instance` are missing or invalid,
30
+ * though type checking and serializer validation should catch this earlier.
31
+ */
32
+ aztec_registerContract: (ctx: AztecHandlerContext, paramsTuple: AztecWalletMethodMap["aztec_registerContract"]["params"]) => Promise<AztecWalletMethodMap["aztec_registerContract"]["result"]>;
33
+ /**
34
+ * Handles the "aztec_registerContractClass" JSON-RPC method.
35
+ * Registers a contract class (defined by its {@link ContractArtifact}) with the
36
+ * {@link AccountWallet} in the context. This makes the contract's bytecode and ABI
37
+ * known to the wallet, typically for future deployments or interactions.
38
+ *
39
+ * @param ctx - The {@link AztecHandlerContext} containing the `wallet` instance.
40
+ * @param paramsTuple - A tuple containing the contract artifact.
41
+ * Defined by {@link AztecWalletMethodMap.aztec_registerContractClass.params}.
42
+ * @param paramsTuple.0 - The {@link ContractArtifact} to register.
43
+ * @returns A promise that resolves to `true` if the registration was successful.
44
+ * @throws {Error} If the `artifact` parameter is missing or invalid,
45
+ * though type checking and serializer validation should catch this earlier.
46
+ */
47
+ aztec_registerContractClass: (ctx: AztecHandlerContext, paramsTuple: AztecWalletMethodMap["aztec_registerContractClass"]["params"]) => Promise<AztecWalletMethodMap["aztec_registerContractClass"]["result"]>;
48
+ /**
49
+ * Handles the "aztec_getContractMetadata" JSON-RPC method.
50
+ * Retrieves {@link ContractMetadata} for a deployed contract at a given {@link AztecAddress},
51
+ * using the {@link AccountWallet} in the context.
52
+ *
53
+ * Contract metadata typically includes information about the contract's instance,
54
+ * initialization status, and public deployment status.
55
+ *
56
+ * @param ctx - The {@link AztecHandlerContext} containing the `wallet` instance.
57
+ * @param paramsTuple - A tuple containing the contract address.
58
+ * Defined by {@link AztecWalletMethodMap.aztec_getContractMetadata.params}.
59
+ * @param paramsTuple.0 - The {@link AztecAddress} of the contract.
60
+ * @returns A promise that resolves to the {@link ContractMetadata}.
61
+ * @throws {Error} If the `address` parameter is missing or invalid, or if metadata is not found.
62
+ */
63
+ aztec_getContractMetadata: (ctx: AztecHandlerContext, paramsTuple: AztecWalletMethodMap["aztec_getContractMetadata"]["params"]) => Promise<AztecWalletMethodMap["aztec_getContractMetadata"]["result"]>;
64
+ /**
65
+ * Handles the "aztec_getContracts" JSON-RPC method.
66
+ * Retrieves a list of {@link AztecAddress}es for all contracts known to the {@link PXE}
67
+ * instance in the current context. This typically includes contracts that have been
68
+ * registered or deployed through this PXE.
69
+ *
70
+ * @param ctx - The {@link AztecHandlerContext} containing the `pxe` instance.
71
+ * @param _paramsTuple - Parameters for this method (expected to be an empty array).
72
+ * Defined by {@link AztecWalletMethodMap.aztec_getContracts.params}.
73
+ * @returns A promise that resolves to an array of {@link AztecAddress} objects.
74
+ * Type defined by {@link AztecWalletMethodMap.aztec_getContracts.result}.
75
+ */
76
+ aztec_getContracts: (ctx: AztecHandlerContext, _paramsTuple: AztecWalletMethodMap["aztec_getContracts"]["params"]) => Promise<AztecWalletMethodMap["aztec_getContracts"]["result"]>;
77
+ /**
78
+ * Handles the "aztec_getContractClassMetadata" JSON-RPC method.
79
+ * Retrieves {@link ContractClassMetadata} for a contract class identified by its {@link Fr} ID,
80
+ * using the {@link AccountWallet} in the context.
81
+ *
82
+ * Contract class metadata provides information about a registered contract class,
83
+ * potentially including its artifact if requested.
84
+ *
85
+ * @param ctx - The {@link AztecHandlerContext} containing the `wallet` instance.
86
+ * @param paramsTuple - A tuple containing the class ID and an optional flag to include the artifact.
87
+ * Defined by {@link AztecWalletMethodMap.aztec_getContractClassMetadata.params}.
88
+ * @param paramsTuple.0 - The {@link Fr} ID of the contract class.
89
+ * @param paramsTuple.1 - Optional: A boolean indicating whether to include the full {@link ContractArtifact}
90
+ * in the returned metadata. Defaults to `false`.
91
+ * @returns A promise that resolves to the {@link ContractClassMetadata}.
92
+ * @throws {Error} If the `id` parameter is missing or invalid.
93
+ */
94
+ aztec_getContractClassMetadata: (ctx: AztecHandlerContext, paramsTuple: AztecWalletMethodMap["aztec_getContractClassMetadata"]["params"]) => Promise<AztecWalletMethodMap["aztec_getContractClassMetadata"]["result"]>;
95
+ };
96
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/contract.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAKtD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB;IAElC;;;;;;;;;;;;;;OAcG;kCAEI,mBAAmB,eACX,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,KACpE,OAAO,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,CAAC;IAmBpE;;;;;;;;;;;;;OAaG;uCAEI,mBAAmB,eACX,oBAAoB,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,KACzE,OAAO,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC,QAAQ,CAAC,CAAC;IAQzE;;;;;;;;;;;;;;OAcG;qCAEI,mBAAmB,eACX,oBAAoB,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,KACvE,OAAO,CAAC,oBAAoB,CAAC,2BAA2B,CAAC,CAAC,QAAQ,CAAC,CAAC;IAgBvE;;;;;;;;;;;OAWG;8BAEI,mBAAmB,gBACV,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KACjE,OAAO,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC;IAKhE;;;;;;;;;;;;;;;;OAgBG;0CAEI,mBAAmB,eACX,oBAAoB,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,KAC5E,OAAO,CAAC,oBAAoB,CAAC,gCAAgC,CAAC,CAAC,QAAQ,CAAC,CAAC;EAc/E"}
@@ -0,0 +1,146 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ const logger = createLogger('aztec-rpc-wallet:contract');
3
+ /**
4
+ * Creates handlers for contract-related Aztec wallet JSON-RPC methods.
5
+ * These handlers are responsible for managing the registration of deployed contract
6
+ * instances and contract classes (artifacts), as well as retrieving contract metadata.
7
+ *
8
+ * Each handler function receives an {@link AztecHandlerContext} which provides access
9
+ * to the {@link AccountWallet}, {@link PXE} client, and {@link ContractArtifactCache}.
10
+ *
11
+ * @returns An object where keys are contract-related method names
12
+ * (e.g., "aztec_registerContract", "aztec_getContractMetadata") and values
13
+ * are their corresponding handler functions.
14
+ * @see {@link AztecWalletMethodMap} for method definitions.
15
+ */
16
+ export function createContractHandlers() {
17
+ return {
18
+ /**
19
+ * Handles the "aztec_registerContract" JSON-RPC method.
20
+ * Registers a deployed contract instance with the {@link AccountWallet} in the context.
21
+ * This allows the wallet to be aware of and interact with the specified contract.
22
+ * An optional {@link ContractArtifact} can be provided to include ABI information.
23
+ *
24
+ * @param ctx - The {@link AztecHandlerContext} containing the `wallet` instance.
25
+ * @param paramsTuple - A tuple containing the contract instance and optional artifact.
26
+ * Defined by {@link AztecWalletMethodMap.aztec_registerContract.params}.
27
+ * @param paramsTuple.0 - The {@link ContractInstanceWithAddress} to register.
28
+ * @param paramsTuple.1 - Optional: The {@link ContractArtifact} associated with the instance.
29
+ * @returns A promise that resolves to `true` if the registration was successful.
30
+ * @throws {Error} If critical parameters like `instance` are missing or invalid,
31
+ * though type checking and serializer validation should catch this earlier.
32
+ */
33
+ aztec_registerContract: async (ctx, paramsTuple) => {
34
+ const [instance, artifact] = paramsTuple;
35
+ logger.debug(`[HANDLER] aztec_registerContract: instance = ${instance?.address?.toString()}, artifact provided = ${!!artifact}`);
36
+ // Original logic used `instance === undefined` check, but instance is not optional in the tuple.
37
+ // The type system should ensure `instance` is provided.
38
+ // If `instance` itself could be undefined in the tuple, the tuple type would be `[ContractInstanceWithAddress | undefined, ...]`.
39
+ // Assuming `instance` is guaranteed by the tuple type.
40
+ const contractToRegister = {
41
+ instance,
42
+ };
43
+ if (artifact) {
44
+ contractToRegister.artifact = artifact;
45
+ }
46
+ await ctx.wallet.registerContract(contractToRegister);
47
+ return true;
48
+ },
49
+ /**
50
+ * Handles the "aztec_registerContractClass" JSON-RPC method.
51
+ * Registers a contract class (defined by its {@link ContractArtifact}) with the
52
+ * {@link AccountWallet} in the context. This makes the contract's bytecode and ABI
53
+ * known to the wallet, typically for future deployments or interactions.
54
+ *
55
+ * @param ctx - The {@link AztecHandlerContext} containing the `wallet` instance.
56
+ * @param paramsTuple - A tuple containing the contract artifact.
57
+ * Defined by {@link AztecWalletMethodMap.aztec_registerContractClass.params}.
58
+ * @param paramsTuple.0 - The {@link ContractArtifact} to register.
59
+ * @returns A promise that resolves to `true` if the registration was successful.
60
+ * @throws {Error} If the `artifact` parameter is missing or invalid,
61
+ * though type checking and serializer validation should catch this earlier.
62
+ */
63
+ aztec_registerContractClass: async (ctx, paramsTuple) => {
64
+ const [artifact] = paramsTuple;
65
+ logger.debug(`[HANDLER] aztec_registerContractClass: artifact name = ${artifact?.name}`);
66
+ // Artifact is not optional in the tuple type.
67
+ await ctx.wallet.registerContractClass(artifact);
68
+ return true;
69
+ },
70
+ /**
71
+ * Handles the "aztec_getContractMetadata" JSON-RPC method.
72
+ * Retrieves {@link ContractMetadata} for a deployed contract at a given {@link AztecAddress},
73
+ * using the {@link AccountWallet} in the context.
74
+ *
75
+ * Contract metadata typically includes information about the contract's instance,
76
+ * initialization status, and public deployment status.
77
+ *
78
+ * @param ctx - The {@link AztecHandlerContext} containing the `wallet` instance.
79
+ * @param paramsTuple - A tuple containing the contract address.
80
+ * Defined by {@link AztecWalletMethodMap.aztec_getContractMetadata.params}.
81
+ * @param paramsTuple.0 - The {@link AztecAddress} of the contract.
82
+ * @returns A promise that resolves to the {@link ContractMetadata}.
83
+ * @throws {Error} If the `address` parameter is missing or invalid, or if metadata is not found.
84
+ */
85
+ aztec_getContractMetadata: async (ctx, paramsTuple) => {
86
+ const [address] = paramsTuple;
87
+ logger.debug(`[HANDLER] aztec_getContractMetadata: address = ${address?.toString()}`);
88
+ // Address is not optional in the tuple type.
89
+ // Add runtime check for robustness if needed, though TS should catch it.
90
+ if (!address || typeof address.toString !== 'function') {
91
+ // Basic check
92
+ throw new Error('Invalid address parameter received in tuple');
93
+ }
94
+ const metadata = await ctx.wallet.getContractMetadata(address);
95
+ if (!metadata) {
96
+ throw new Error(`Contract metadata not found for address: ${address.toString()}`);
97
+ }
98
+ return metadata;
99
+ },
100
+ /**
101
+ * Handles the "aztec_getContracts" JSON-RPC method.
102
+ * Retrieves a list of {@link AztecAddress}es for all contracts known to the {@link PXE}
103
+ * instance in the current context. This typically includes contracts that have been
104
+ * registered or deployed through this PXE.
105
+ *
106
+ * @param ctx - The {@link AztecHandlerContext} containing the `pxe` instance.
107
+ * @param _paramsTuple - Parameters for this method (expected to be an empty array).
108
+ * Defined by {@link AztecWalletMethodMap.aztec_getContracts.params}.
109
+ * @returns A promise that resolves to an array of {@link AztecAddress} objects.
110
+ * Type defined by {@link AztecWalletMethodMap.aztec_getContracts.result}.
111
+ */
112
+ aztec_getContracts: async (ctx, _paramsTuple) => {
113
+ logger.debug('[HANDLER] aztec_getContracts');
114
+ return await ctx.pxe.getContracts();
115
+ },
116
+ /**
117
+ * Handles the "aztec_getContractClassMetadata" JSON-RPC method.
118
+ * Retrieves {@link ContractClassMetadata} for a contract class identified by its {@link Fr} ID,
119
+ * using the {@link AccountWallet} in the context.
120
+ *
121
+ * Contract class metadata provides information about a registered contract class,
122
+ * potentially including its artifact if requested.
123
+ *
124
+ * @param ctx - The {@link AztecHandlerContext} containing the `wallet` instance.
125
+ * @param paramsTuple - A tuple containing the class ID and an optional flag to include the artifact.
126
+ * Defined by {@link AztecWalletMethodMap.aztec_getContractClassMetadata.params}.
127
+ * @param paramsTuple.0 - The {@link Fr} ID of the contract class.
128
+ * @param paramsTuple.1 - Optional: A boolean indicating whether to include the full {@link ContractArtifact}
129
+ * in the returned metadata. Defaults to `false`.
130
+ * @returns A promise that resolves to the {@link ContractClassMetadata}.
131
+ * @throws {Error} If the `id` parameter is missing or invalid.
132
+ */
133
+ aztec_getContractClassMetadata: async (ctx, paramsTuple) => {
134
+ const [id, includeArtifactInput] = paramsTuple;
135
+ const includeArtifact = includeArtifactInput === undefined ? false : includeArtifactInput; // Default for optional
136
+ logger.debug(`[HANDLER] aztec_getContractClassMetadata: id = ${id?.toString()}, includeArtifact = ${includeArtifact}`);
137
+ // Id is not optional in the tuple type.
138
+ if (!id || typeof id.toString !== 'function') {
139
+ // Basic check for Fr-like object
140
+ throw new Error('Invalid id parameter received in tuple');
141
+ }
142
+ return await ctx.wallet.getContractClassMetadata(id, includeArtifact);
143
+ },
144
+ };
145
+ }
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2FsbGV0L2hhbmRsZXJzL2NvbnRyYWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUV6RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCO0lBQ3BDLE9BQU87UUFDTDs7Ozs7Ozs7Ozs7Ozs7V0FjRztRQUNILHNCQUFzQixFQUFFLEtBQUssRUFDM0IsR0FBd0IsRUFDeEIsV0FBcUUsRUFDRixFQUFFO1lBQ3JFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxLQUFLLENBQ1YsZ0RBQWdELFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixDQUFDLENBQUMsUUFBUSxFQUFFLENBQ25ILENBQUM7WUFDRixpR0FBaUc7WUFDakcsd0RBQXdEO1lBQ3hELGtJQUFrSTtZQUNsSSx1REFBdUQ7WUFDdkQsTUFBTSxrQkFBa0IsR0FBMkU7Z0JBQ2pHLFFBQVE7YUFDVCxDQUFDO1lBQ0YsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pDLENBQUM7WUFDRCxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUN0RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRDs7Ozs7Ozs7Ozs7OztXQWFHO1FBQ0gsMkJBQTJCLEVBQUUsS0FBSyxFQUNoQyxHQUF3QixFQUN4QixXQUEwRSxFQUNGLEVBQUU7WUFDMUUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUMvQixNQUFNLENBQUMsS0FBSyxDQUFDLDBEQUEwRCxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN6Riw4Q0FBOEM7WUFDOUMsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVEOzs7Ozs7Ozs7Ozs7OztXQWNHO1FBQ0gseUJBQXlCLEVBQUUsS0FBSyxFQUM5QixHQUF3QixFQUN4QixXQUF3RSxFQUNGLEVBQUU7WUFDeEUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFdBQVcsQ0FBQztZQUM5QixNQUFNLENBQUMsS0FBSyxDQUFDLGtEQUFrRCxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RGLDZDQUE2QztZQUM3Qyx5RUFBeUU7WUFDekUsSUFBSSxDQUFDLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQ3ZELGNBQWM7Z0JBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEYsQ0FBQztZQUNELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7UUFFRDs7Ozs7Ozs7Ozs7V0FXRztRQUNILGtCQUFrQixFQUFFLEtBQUssRUFDdkIsR0FBd0IsRUFDeEIsWUFBa0UsRUFDSCxFQUFFO1lBQ2pFLE1BQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUM3QyxPQUFPLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QyxDQUFDO1FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7V0FnQkc7UUFDSCw4QkFBOEIsRUFBRSxLQUFLLEVBQ25DLEdBQXdCLEVBQ3hCLFdBQTZFLEVBQ0YsRUFBRTtZQUM3RSxNQUFNLENBQUMsRUFBRSxFQUFFLG9CQUFvQixDQUFDLEdBQUcsV0FBVyxDQUFDO1lBQy9DLE1BQU0sZUFBZSxHQUFHLG9CQUFvQixLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLHVCQUF1QjtZQUNsSCxNQUFNLENBQUMsS0FBSyxDQUNWLGtEQUFrRCxFQUFFLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixlQUFlLEVBQUUsQ0FDekcsQ0FBQztZQUNGLHdDQUF3QztZQUN4QyxJQUFJLENBQUMsRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDN0MsaUNBQWlDO2dCQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQUNELE9BQU8sTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUN4RSxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMifQ==
@@ -0,0 +1,62 @@
1
+ import type { AztecHandlerContext } from './index.js';
2
+ import type { AztecWalletMethodMap } from '../../types.js';
3
+ /**
4
+ * Creates handlers for event-related Aztec wallet JSON-RPC methods.
5
+ * These handlers are responsible for querying private (encrypted) and public
6
+ * (unencrypted) events emitted by Aztec contracts.
7
+ *
8
+ * Each handler function receives an {@link AztecHandlerContext} which provides access
9
+ * to the {@link PXE} client, essential for event retrieval.
10
+ *
11
+ * @returns An object where keys are event-related method names
12
+ * (e.g., "aztec_getPrivateEvents", "aztec_getPublicEvents") and values are
13
+ * their corresponding handler functions.
14
+ * @see {@link AztecWalletMethodMap} for method definitions.
15
+ */
16
+ export declare function createEventHandlers(): {
17
+ /**
18
+ * Handles the "aztec_getPrivateEvents" JSON-RPC method.
19
+ * Retrieves encrypted private events emitted by a specific contract within a given
20
+ * block range, for a specified set of recipients.
21
+ *
22
+ * Private events are decrypted by the {@link PXE} using the viewing keys
23
+ * associated with the recipient addresses.
24
+ *
25
+ * @param ctx - The {@link AztecHandlerContext} containing the `pxe` instance.
26
+ * @param paramsTuple - A tuple containing parameters for querying private events.
27
+ * Defined by {@link AztecWalletMethodMap.aztec_getPrivateEvents.params}.
28
+ * @param paramsTuple.0 - The {@link AztecAddress} of the contract that emitted the events.
29
+ * @param paramsTuple.1 - The {@link EventMetadataDefinition} describing the event structure.
30
+ * @param paramsTuple.2 - The starting block number (inclusive) from which to query.
31
+ * @param paramsTuple.3 - The number of blocks to scan from the `from` block.
32
+ * @param paramsTuple.4 - An array of {@link AztecAddress} recipients whose events are to be fetched and decrypted.
33
+ * @returns A promise that resolves to an array of decoded private event data. The specific type
34
+ * of the event data depends on the `eventMetadata`.
35
+ * Type defined by {@link AztecWalletMethodMap.aztec_getPrivateEvents.result}.
36
+ * @throws {Error} If any required parameters are missing or invalid, though type checking
37
+ * and serializer validation should catch this earlier.
38
+ */
39
+ aztec_getPrivateEvents: (ctx: AztecHandlerContext, paramsTuple: AztecWalletMethodMap["aztec_getPrivateEvents"]["params"]) => Promise<AztecWalletMethodMap["aztec_getPrivateEvents"]["result"]>;
40
+ /**
41
+ * Handles the "aztec_getPublicEvents" JSON-RPC method.
42
+ * Retrieves unencrypted public events matching a specific {@link EventMetadataDefinition}
43
+ * starting from a given block number, up to a specified limit.
44
+ *
45
+ * Public events are visible to all network participants and are typically used for
46
+ * information that does not require privacy.
47
+ *
48
+ * @param ctx - The {@link AztecHandlerContext} containing the `pxe` instance.
49
+ * @param paramsTuple - A tuple containing parameters for querying public events.
50
+ * Defined by {@link AztecWalletMethodMap.aztec_getPublicEvents.params}.
51
+ * @param paramsTuple.0 - The {@link EventMetadataDefinition} describing the event structure.
52
+ * @param paramsTuple.1 - The starting block number (inclusive) from which to query.
53
+ * @param paramsTuple.2 - The maximum number of events to return.
54
+ * @returns A promise that resolves to an array of decoded public event data. The specific type
55
+ * of the event data depends on the `eventMetadata`.
56
+ * Type defined by {@link AztecWalletMethodMap.aztec_getPublicEvents.result}.
57
+ * @throws {Error} If any required parameters are missing or invalid, though type checking
58
+ * and serializer validation should catch this earlier.
59
+ */
60
+ aztec_getPublicEvents: (ctx: AztecHandlerContext, paramsTuple: AztecWalletMethodMap["aztec_getPublicEvents"]["params"]) => Promise<AztecWalletMethodMap["aztec_getPublicEvents"]["result"]>;
61
+ };
62
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/wallet/handlers/event.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAK3D;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB;IAE/B;;;;;;;;;;;;;;;;;;;;;OAqBG;kCAEI,mBAAmB,eACX,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,KACpE,OAAO,CAAC,oBAAoB,CAAC,wBAAwB,CAAC,CAAC,QAAQ,CAAC,CAAC;IAmBpE;;;;;;;;;;;;;;;;;;;OAmBG;iCAEI,mBAAmB,eACX,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,KACnE,OAAO,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,CAAC;EAUtE"}
@@ -0,0 +1,85 @@
1
+ import { createLogger } from '@aztec/foundation/log';
2
+ const logger = createLogger('aztec-rpc-wallet:event');
3
+ /**
4
+ * Creates handlers for event-related Aztec wallet JSON-RPC methods.
5
+ * These handlers are responsible for querying private (encrypted) and public
6
+ * (unencrypted) events emitted by Aztec contracts.
7
+ *
8
+ * Each handler function receives an {@link AztecHandlerContext} which provides access
9
+ * to the {@link PXE} client, essential for event retrieval.
10
+ *
11
+ * @returns An object where keys are event-related method names
12
+ * (e.g., "aztec_getPrivateEvents", "aztec_getPublicEvents") and values are
13
+ * their corresponding handler functions.
14
+ * @see {@link AztecWalletMethodMap} for method definitions.
15
+ */
16
+ export function createEventHandlers() {
17
+ return {
18
+ /**
19
+ * Handles the "aztec_getPrivateEvents" JSON-RPC method.
20
+ * Retrieves encrypted private events emitted by a specific contract within a given
21
+ * block range, for a specified set of recipients.
22
+ *
23
+ * Private events are decrypted by the {@link PXE} using the viewing keys
24
+ * associated with the recipient addresses.
25
+ *
26
+ * @param ctx - The {@link AztecHandlerContext} containing the `pxe` instance.
27
+ * @param paramsTuple - A tuple containing parameters for querying private events.
28
+ * Defined by {@link AztecWalletMethodMap.aztec_getPrivateEvents.params}.
29
+ * @param paramsTuple.0 - The {@link AztecAddress} of the contract that emitted the events.
30
+ * @param paramsTuple.1 - The {@link EventMetadataDefinition} describing the event structure.
31
+ * @param paramsTuple.2 - The starting block number (inclusive) from which to query.
32
+ * @param paramsTuple.3 - The number of blocks to scan from the `from` block.
33
+ * @param paramsTuple.4 - An array of {@link AztecAddress} recipients whose events are to be fetched and decrypted.
34
+ * @returns A promise that resolves to an array of decoded private event data. The specific type
35
+ * of the event data depends on the `eventMetadata`.
36
+ * Type defined by {@link AztecWalletMethodMap.aztec_getPrivateEvents.result}.
37
+ * @throws {Error} If any required parameters are missing or invalid, though type checking
38
+ * and serializer validation should catch this earlier.
39
+ */
40
+ aztec_getPrivateEvents: async (ctx, paramsTuple) => {
41
+ const [contractAddress, eventMetadata, from, numBlocks, recipients] = paramsTuple;
42
+ logger.debug(`[HANDLER] aztec_getPrivateEvents: contractAddress = ${contractAddress?.toString()}, from = ${from}, numBlocks = ${numBlocks}`);
43
+ // All parameters are mandatory in the tuple type definition.
44
+ // Add runtime checks if there's any doubt about them being undefined, though TS should catch.
45
+ if (!contractAddress ||
46
+ !eventMetadata ||
47
+ from === undefined ||
48
+ numBlocks === undefined ||
49
+ !recipients) {
50
+ throw new Error('Invalid parameters received in tuple for aztec_getPrivateEvents');
51
+ }
52
+ return await ctx.pxe.getPrivateEvents(contractAddress, eventMetadata, from, numBlocks, recipients);
53
+ },
54
+ /**
55
+ * Handles the "aztec_getPublicEvents" JSON-RPC method.
56
+ * Retrieves unencrypted public events matching a specific {@link EventMetadataDefinition}
57
+ * starting from a given block number, up to a specified limit.
58
+ *
59
+ * Public events are visible to all network participants and are typically used for
60
+ * information that does not require privacy.
61
+ *
62
+ * @param ctx - The {@link AztecHandlerContext} containing the `pxe` instance.
63
+ * @param paramsTuple - A tuple containing parameters for querying public events.
64
+ * Defined by {@link AztecWalletMethodMap.aztec_getPublicEvents.params}.
65
+ * @param paramsTuple.0 - The {@link EventMetadataDefinition} describing the event structure.
66
+ * @param paramsTuple.1 - The starting block number (inclusive) from which to query.
67
+ * @param paramsTuple.2 - The maximum number of events to return.
68
+ * @returns A promise that resolves to an array of decoded public event data. The specific type
69
+ * of the event data depends on the `eventMetadata`.
70
+ * Type defined by {@link AztecWalletMethodMap.aztec_getPublicEvents.result}.
71
+ * @throws {Error} If any required parameters are missing or invalid, though type checking
72
+ * and serializer validation should catch this earlier.
73
+ */
74
+ aztec_getPublicEvents: async (ctx, paramsTuple) => {
75
+ const [eventMetadata, from, limit] = paramsTuple;
76
+ logger.debug(`[HANDLER] aztec_getPublicEvents: from = ${from}, limit = ${limit}`);
77
+ // All parameters are mandatory in the tuple type definition.
78
+ if (!eventMetadata || from === undefined || limit === undefined) {
79
+ throw new Error('Invalid parameters received in tuple for aztec_getPublicEvents');
80
+ }
81
+ return await ctx.pxe.getPublicEvents(eventMetadata, from, limit);
82
+ },
83
+ };
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd2FsbGV0L2hhbmRsZXJzL2V2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVyRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztBQUV0RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CO0lBQ2pDLE9BQU87UUFDTDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBcUJHO1FBQ0gsc0JBQXNCLEVBQUUsS0FBSyxFQUMzQixHQUF3QixFQUN4QixXQUFxRSxFQUNGLEVBQUU7WUFDckUsTUFBTSxDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDbEYsTUFBTSxDQUFDLEtBQUssQ0FDVix1REFBdUQsZUFBZSxFQUFFLFFBQVEsRUFBRSxZQUFZLElBQUksaUJBQWlCLFNBQVMsRUFBRSxDQUMvSCxDQUFDO1lBQ0YsNkRBQTZEO1lBQzdELDhGQUE4RjtZQUM5RixJQUNFLENBQUMsZUFBZTtnQkFDaEIsQ0FBQyxhQUFhO2dCQUNkLElBQUksS0FBSyxTQUFTO2dCQUNsQixTQUFTLEtBQUssU0FBUztnQkFDdkIsQ0FBQyxVQUFVLEVBQ1gsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGlFQUFpRSxDQUFDLENBQUM7WUFDckYsQ0FBQztZQUNELE9BQU8sTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNyRyxDQUFDO1FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FtQkc7UUFDSCxxQkFBcUIsRUFBRSxLQUFLLEVBQzFCLEdBQXdCLEVBQ3hCLFdBQW9FLEVBQ0YsRUFBRTtZQUNwRSxNQUFNLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxXQUFXLENBQUM7WUFDakQsTUFBTSxDQUFDLEtBQUssQ0FBQywyQ0FBMkMsSUFBSSxhQUFhLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDbEYsNkRBQTZEO1lBQzdELElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0VBQWdFLENBQUMsQ0FBQztZQUNwRixDQUFDO1lBQ0QsT0FBTyxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDbkUsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIn0=