@walletmesh/aztec-rpc-wallet 0.3.0 → 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 +26 -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 -268
  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 +471 -470
  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 -296
  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 -504
  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 -649
  166. package/src/handlers/aztecAccountWallet.ts +0 -532
  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 -274
  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
@@ -1,532 +0,0 @@
1
- import type { AccountWallet, PXE } from '@aztec/aztec.js';
2
- import { AztecWalletError } from '../errors.js';
3
- import type { AztecWalletContext, AztecWalletMethodMap } from '../types.js';
4
-
5
- export const AZTEC_WALLET_METHODS: (keyof AztecWalletMethodMap)[] = [
6
- 'aztec_getBlock',
7
- 'aztec_getBlockNumber',
8
- 'aztec_getChainId',
9
- 'aztec_getVersion',
10
- 'aztec_getNodeInfo',
11
- 'aztec_getCurrentBaseFees',
12
- 'aztec_setScopes',
13
- 'aztec_getScopes',
14
- 'aztec_isL1ToL2MessageSynced',
15
- 'aztec_getL1ToL2MembershipWitness',
16
- 'aztec_addCapsule',
17
- 'aztec_getAddress',
18
- 'aztec_getCompleteAddress',
19
- 'aztec_registerAccount',
20
- 'aztec_getRegisteredAccounts',
21
- 'aztec_addAuthWitness',
22
- 'aztec_getAuthWitness',
23
- 'aztec_createAuthWit',
24
- 'aztec_registerSender',
25
- 'aztec_getSenders',
26
- 'aztec_removeSender',
27
- 'aztec_getContracts',
28
- 'aztec_registerContract',
29
- 'aztec_registerContractClass',
30
- 'aztec_getContractMetadata',
31
- 'aztec_getContractClassMetadata',
32
- 'aztec_getPublicStorageAt',
33
- 'aztec_createTxExecutionRequest',
34
- 'aztec_proveTx',
35
- 'aztec_sendTx',
36
- 'aztec_getTxEffect',
37
- 'aztec_getTxReceipt',
38
- 'aztec_simulateTx',
39
- 'aztec_simulateUnconstrained',
40
- 'aztec_getNotes',
41
- 'aztec_addNote',
42
- 'aztec_addNullifiedNote',
43
- 'aztec_getPublicLogs',
44
- 'aztec_getContractClassLogs',
45
- 'aztec_getPrivateEvents',
46
- 'aztec_getPublicEvents',
47
- ] as const;
48
-
49
- // Handler functions with proper type safety
50
- async function handleGetBlock(
51
- wallet: AccountWallet,
52
- params: AztecWalletMethodMap['aztec_getBlock']['params'],
53
- ): Promise<AztecWalletMethodMap['aztec_getBlock']['result']> {
54
- const block = await wallet.getBlock(params.number);
55
- if (!block) throw new AztecWalletError('blockNotFound', 'aztec_getBlock');
56
- return block;
57
- }
58
-
59
- async function handleGetBlockNumber(
60
- wallet: AccountWallet,
61
- ): Promise<AztecWalletMethodMap['aztec_getBlockNumber']['result']> {
62
- return await wallet.getBlockNumber();
63
- }
64
-
65
- async function handleGetChainId(
66
- wallet: AccountWallet,
67
- ): Promise<AztecWalletMethodMap['aztec_getChainId']['result']> {
68
- return Number(wallet.getChainId());
69
- }
70
-
71
- async function handleGetVersion(
72
- wallet: AccountWallet,
73
- ): Promise<AztecWalletMethodMap['aztec_getVersion']['result']> {
74
- return Number(wallet.getVersion());
75
- }
76
-
77
- async function handleGetNodeInfo(
78
- wallet: AccountWallet,
79
- ): Promise<AztecWalletMethodMap['aztec_getNodeInfo']['result']> {
80
- return await wallet.getNodeInfo();
81
- }
82
-
83
- async function handleGetCurrentBaseFees(
84
- wallet: AccountWallet,
85
- ): Promise<AztecWalletMethodMap['aztec_getCurrentBaseFees']['result']> {
86
- return await wallet.getCurrentBaseFees();
87
- }
88
-
89
- async function handleSetScopes(
90
- wallet: AccountWallet,
91
- params: AztecWalletMethodMap['aztec_setScopes']['params'],
92
- ): Promise<AztecWalletMethodMap['aztec_setScopes']['result']> {
93
- await wallet.setScopes(params.scopes);
94
- return true;
95
- }
96
-
97
- async function handleGetScopes(
98
- wallet: AccountWallet,
99
- ): Promise<AztecWalletMethodMap['aztec_getScopes']['result']> {
100
- const scopes = await wallet.getScopes();
101
- return scopes ?? [];
102
- }
103
-
104
- async function handleAddCapsule(
105
- wallet: AccountWallet,
106
- params: AztecWalletMethodMap['aztec_addCapsule']['params'],
107
- ): Promise<AztecWalletMethodMap['aztec_addCapsule']['result']> {
108
- await wallet.addCapsule(params.capsule);
109
- return true;
110
- }
111
-
112
- async function handleGetAddress(
113
- wallet: AccountWallet,
114
- ): Promise<AztecWalletMethodMap['aztec_getAddress']['result']> {
115
- return wallet.getAddress();
116
- }
117
-
118
- async function handleGetCompleteAddress(
119
- wallet: AccountWallet,
120
- ): Promise<AztecWalletMethodMap['aztec_getCompleteAddress']['result']> {
121
- return wallet.getCompleteAddress();
122
- }
123
-
124
- async function handleRegisterAccount(
125
- wallet: AccountWallet,
126
- params: AztecWalletMethodMap['aztec_registerAccount']['params'],
127
- ): Promise<AztecWalletMethodMap['aztec_registerAccount']['result']> {
128
- return await wallet.registerAccount(params.secretKey, params.partialAddress);
129
- }
130
-
131
- async function handleGetRegisteredAccounts(
132
- wallet: AccountWallet,
133
- ): Promise<AztecWalletMethodMap['aztec_getRegisteredAccounts']['result']> {
134
- return await wallet.getRegisteredAccounts();
135
- }
136
-
137
- async function handleRegisterSender(
138
- wallet: AccountWallet,
139
- params: AztecWalletMethodMap['aztec_registerSender']['params'],
140
- ): Promise<AztecWalletMethodMap['aztec_registerSender']['result']> {
141
- return await wallet.registerSender(params.sender);
142
- }
143
-
144
- async function handleGetSenders(
145
- wallet: AccountWallet,
146
- ): Promise<AztecWalletMethodMap['aztec_getSenders']['result']> {
147
- return await wallet.getSenders();
148
- }
149
-
150
- async function handleRemoveSender(
151
- wallet: AccountWallet,
152
- params: AztecWalletMethodMap['aztec_removeSender']['params'],
153
- ): Promise<AztecWalletMethodMap['aztec_removeSender']['result']> {
154
- await wallet.removeSender(params.sender);
155
- return true;
156
- }
157
-
158
- async function handleAddAuthWitness(
159
- wallet: AccountWallet,
160
- params: AztecWalletMethodMap['aztec_addAuthWitness']['params'],
161
- ): Promise<AztecWalletMethodMap['aztec_addAuthWitness']['result']> {
162
- await wallet.addAuthWitness(params.authWitness);
163
- return true;
164
- }
165
-
166
- async function handleGetAuthWitness(
167
- wallet: AccountWallet,
168
- params: AztecWalletMethodMap['aztec_getAuthWitness']['params'],
169
- ): Promise<AztecWalletMethodMap['aztec_getAuthWitness']['result']> {
170
- const witness = await wallet.getAuthWitness(params.messageHash);
171
- if (!witness) throw new AztecWalletError('authWitnessNotFound', 'aztec_getAuthWitness');
172
- return witness;
173
- }
174
-
175
- async function handleCreateAuthWit(
176
- wallet: AccountWallet,
177
- params: AztecWalletMethodMap['aztec_createAuthWit']['params'],
178
- ): Promise<AztecWalletMethodMap['aztec_createAuthWit']['result']> {
179
- return await wallet.createAuthWit(params.intent);
180
- }
181
-
182
- async function handleL1ToL2MessageSynced(
183
- wallet: AccountWallet,
184
- params: AztecWalletMethodMap['aztec_isL1ToL2MessageSynced']['params'],
185
- ): Promise<AztecWalletMethodMap['aztec_isL1ToL2MessageSynced']['result']> {
186
- return await wallet.isL1ToL2MessageSynced(params.l1ToL2Message);
187
- }
188
-
189
- async function handleGetContracts(
190
- wallet: AccountWallet,
191
- ): Promise<AztecWalletMethodMap['aztec_getContracts']['result']> {
192
- return await wallet.getContracts();
193
- }
194
-
195
- async function handleGetContractMetadata(
196
- pxe: PXE,
197
- params: AztecWalletMethodMap['aztec_getContractMetadata']['params'],
198
- ): Promise<AztecWalletMethodMap['aztec_getContractMetadata']['result']> {
199
- return await pxe.getContractMetadata(params.address);
200
- }
201
-
202
- async function handleGetContractClassMetadata(
203
- pxe: PXE,
204
- params: AztecWalletMethodMap['aztec_getContractClassMetadata']['params'],
205
- ): Promise<AztecWalletMethodMap['aztec_getContractClassMetadata']['result']> {
206
- return await pxe.getContractClassMetadata(params.id, params.includeArtifact);
207
- }
208
-
209
- async function handleRegisterContract(
210
- wallet: AccountWallet,
211
- params: AztecWalletMethodMap['aztec_registerContract']['params'],
212
- ): Promise<AztecWalletMethodMap['aztec_registerContract']['result']> {
213
- const { instance, artifact } = params;
214
- await wallet.registerContract({ instance, ...(artifact && { artifact }) });
215
- return true;
216
- }
217
-
218
- async function handleRegisterContractClass(
219
- wallet: AccountWallet,
220
- params: AztecWalletMethodMap['aztec_registerContractClass']['params'],
221
- ): Promise<AztecWalletMethodMap['aztec_registerContractClass']['result']> {
222
- const { artifact } = params;
223
- await wallet.registerContractClass(artifact);
224
- return true;
225
- }
226
-
227
- async function handleGetTxReceipt(
228
- wallet: AccountWallet,
229
- params: AztecWalletMethodMap['aztec_getTxReceipt']['params'],
230
- ): Promise<AztecWalletMethodMap['aztec_getTxReceipt']['result']> {
231
- const receipt = await wallet.getTxReceipt(params.txHash);
232
- if (!receipt) throw new AztecWalletError('transactionNotFound', 'aztec_getTxReceipt');
233
- return receipt;
234
- }
235
-
236
- async function handleSimulateTx(
237
- wallet: AccountWallet,
238
- params: AztecWalletMethodMap['aztec_simulateTx']['params'],
239
- ): Promise<AztecWalletMethodMap['aztec_simulateTx']['result']> {
240
- const { txRequest, simulatePublic, msgSender, skipTxValidation, enforceFeePayment, profile } = params;
241
- return await wallet.simulateTx(
242
- txRequest,
243
- simulatePublic,
244
- msgSender,
245
- skipTxValidation,
246
- enforceFeePayment,
247
- profile,
248
- );
249
- }
250
-
251
- async function handleSimulateUnconstrained(
252
- wallet: AccountWallet,
253
- params: AztecWalletMethodMap['aztec_simulateUnconstrained']['params'],
254
- ): Promise<AztecWalletMethodMap['aztec_simulateUnconstrained']['result']> {
255
- const { functionName, args, to, from } = params;
256
- return await wallet.simulateUnconstrained(functionName, args, to, from);
257
- }
258
-
259
- async function handleCreateTxExecutionRequest(
260
- wallet: AccountWallet,
261
- params: AztecWalletMethodMap['aztec_createTxExecutionRequest']['params'],
262
- ): Promise<AztecWalletMethodMap['aztec_createTxExecutionRequest']['result']> {
263
- return await wallet.createTxExecutionRequest(params.exec);
264
- }
265
-
266
- async function handleProveTx(
267
- wallet: AccountWallet,
268
- params: AztecWalletMethodMap['aztec_proveTx']['params'],
269
- ): Promise<AztecWalletMethodMap['aztec_proveTx']['result']> {
270
- return await wallet.proveTx(params.txRequest, params.privateExecutionResult);
271
- }
272
-
273
- async function handleSendTx(
274
- wallet: AccountWallet,
275
- params: AztecWalletMethodMap['aztec_sendTx']['params'],
276
- ): Promise<AztecWalletMethodMap['aztec_sendTx']['result']> {
277
- return await wallet.sendTx(params.tx);
278
- }
279
-
280
- async function handleGetTxEffect(
281
- wallet: AccountWallet,
282
- params: AztecWalletMethodMap['aztec_getTxEffect']['params'],
283
- ): Promise<AztecWalletMethodMap['aztec_getTxEffect']['result']> {
284
- const effect = await wallet.getTxEffect(params.txHash);
285
- if (!effect) throw new AztecWalletError('transactionNotFound', 'aztec_getTxEffect');
286
- return effect;
287
- }
288
-
289
- async function handleGetPublicStorageAt(
290
- wallet: AccountWallet,
291
- params: AztecWalletMethodMap['aztec_getPublicStorageAt']['params'],
292
- ): Promise<AztecWalletMethodMap['aztec_getPublicStorageAt']['result']> {
293
- return await wallet.getPublicStorageAt(params.contract, params.storageSlot);
294
- }
295
-
296
- async function handleGetNotes(
297
- wallet: AccountWallet,
298
- params: AztecWalletMethodMap['aztec_getNotes']['params'],
299
- ): Promise<AztecWalletMethodMap['aztec_getNotes']['result']> {
300
- return await wallet.getNotes(params.filter);
301
- }
302
-
303
- async function handleAddNote(
304
- wallet: AccountWallet,
305
- params: AztecWalletMethodMap['aztec_addNote']['params'],
306
- ): Promise<AztecWalletMethodMap['aztec_addNote']['result']> {
307
- await wallet.addNote(params.note);
308
- return true;
309
- }
310
-
311
- async function handleAddNullifiedNote(
312
- wallet: AccountWallet,
313
- params: AztecWalletMethodMap['aztec_addNullifiedNote']['params'],
314
- ): Promise<AztecWalletMethodMap['aztec_addNullifiedNote']['result']> {
315
- await wallet.addNullifiedNote(params.note);
316
- return true;
317
- }
318
-
319
- async function handleGetPublicLogs(
320
- wallet: AccountWallet,
321
- params: AztecWalletMethodMap['aztec_getPublicLogs']['params'],
322
- ): Promise<AztecWalletMethodMap['aztec_getPublicLogs']['result']> {
323
- return await wallet.getPublicLogs(params.filter);
324
- }
325
-
326
- async function handleGetContractClassLogs(
327
- wallet: AccountWallet,
328
- params: AztecWalletMethodMap['aztec_getContractClassLogs']['params'],
329
- ): Promise<AztecWalletMethodMap['aztec_getContractClassLogs']['result']> {
330
- return await wallet.getContractClassLogs(params.filter);
331
- }
332
-
333
- async function handleGetPrivateEvents(
334
- wallet: AccountWallet,
335
- params: AztecWalletMethodMap['aztec_getPrivateEvents']['params'],
336
- ): Promise<AztecWalletMethodMap['aztec_getPrivateEvents']['result']> {
337
- const { event, from, limit, vpks } = params;
338
- return await wallet.getPrivateEvents(event, from, limit, vpks);
339
- }
340
-
341
- async function handleGetPublicEvents(
342
- wallet: AccountWallet,
343
- params: AztecWalletMethodMap['aztec_getPublicEvents']['params'],
344
- ): Promise<AztecWalletMethodMap['aztec_getPublicEvents']['result']> {
345
- const { event, from, limit } = params;
346
- return await wallet.getPublicEvents(event, from, limit);
347
- }
348
-
349
- async function handleL1ToL2MembershipWitness(
350
- wallet: AccountWallet,
351
- params: AztecWalletMethodMap['aztec_getL1ToL2MembershipWitness']['params'],
352
- ): Promise<AztecWalletMethodMap['aztec_getL1ToL2MembershipWitness']['result']> {
353
- const { contractAddress, messageHash, secret } = params;
354
- return await wallet.getL1ToL2MembershipWitness(contractAddress, messageHash, secret);
355
- }
356
-
357
- export async function aztecWalletHandler<M extends keyof AztecWalletMethodMap>(
358
- context: AztecWalletContext,
359
- method: M,
360
- params: AztecWalletMethodMap[M]['params'],
361
- ): Promise<AztecWalletMethodMap[M]['result']> {
362
- switch (method) {
363
- // Chain methods
364
- case 'aztec_getBlock':
365
- return handleGetBlock(context.wallet, params as AztecWalletMethodMap['aztec_getBlock']['params']);
366
- case 'aztec_getBlockNumber':
367
- return handleGetBlockNumber(context.wallet);
368
- case 'aztec_getChainId':
369
- return handleGetChainId(context.wallet);
370
- case 'aztec_getVersion':
371
- return handleGetVersion(context.wallet);
372
- case 'aztec_getNodeInfo':
373
- return handleGetNodeInfo(context.wallet);
374
- case 'aztec_getCurrentBaseFees':
375
- return handleGetCurrentBaseFees(context.wallet);
376
-
377
- // Scopes methods
378
- case 'aztec_setScopes':
379
- return handleSetScopes(context.wallet, params as AztecWalletMethodMap['aztec_setScopes']['params']);
380
- case 'aztec_getScopes':
381
- return handleGetScopes(context.wallet);
382
-
383
- // L1->L2 Messages methods
384
- case 'aztec_isL1ToL2MessageSynced':
385
- return handleL1ToL2MessageSynced(
386
- context.wallet,
387
- params as AztecWalletMethodMap['aztec_isL1ToL2MessageSynced']['params'],
388
- );
389
- case 'aztec_getL1ToL2MembershipWitness':
390
- return handleL1ToL2MembershipWitness(
391
- context.wallet,
392
- params as AztecWalletMethodMap['aztec_getL1ToL2MembershipWitness']['params'],
393
- );
394
-
395
- // Capsules methods
396
- case 'aztec_addCapsule':
397
- return handleAddCapsule(context.wallet, params as AztecWalletMethodMap['aztec_addCapsule']['params']);
398
-
399
- // Accounts methods
400
- case 'aztec_getAddress':
401
- return handleGetAddress(context.wallet);
402
- case 'aztec_getCompleteAddress':
403
- return handleGetCompleteAddress(context.wallet);
404
- case 'aztec_registerAccount':
405
- return handleRegisterAccount(
406
- context.wallet,
407
- params as AztecWalletMethodMap['aztec_registerAccount']['params'],
408
- );
409
- case 'aztec_getRegisteredAccounts':
410
- return handleGetRegisteredAccounts(context.wallet);
411
-
412
- // AuthWitness methods
413
- case 'aztec_addAuthWitness':
414
- return handleAddAuthWitness(
415
- context.wallet,
416
- params as AztecWalletMethodMap['aztec_addAuthWitness']['params'],
417
- );
418
- case 'aztec_getAuthWitness':
419
- return handleGetAuthWitness(
420
- context.wallet,
421
- params as AztecWalletMethodMap['aztec_getAuthWitness']['params'],
422
- );
423
- case 'aztec_createAuthWit':
424
- return handleCreateAuthWit(
425
- context.wallet,
426
- params as AztecWalletMethodMap['aztec_createAuthWit']['params'],
427
- );
428
-
429
- // Senders methods
430
- case 'aztec_registerSender':
431
- return handleRegisterSender(
432
- context.wallet,
433
- params as AztecWalletMethodMap['aztec_registerSender']['params'],
434
- );
435
- case 'aztec_getSenders':
436
- return handleGetSenders(context.wallet);
437
- case 'aztec_removeSender':
438
- return handleRemoveSender(
439
- context.wallet,
440
- params as AztecWalletMethodMap['aztec_removeSender']['params'],
441
- );
442
-
443
- // Contracts methods
444
- case 'aztec_getContracts':
445
- return handleGetContracts(context.wallet);
446
- case 'aztec_getContractMetadata':
447
- return handleGetContractMetadata(
448
- context.wallet,
449
- params as AztecWalletMethodMap['aztec_getContractMetadata']['params'],
450
- );
451
- case 'aztec_getContractClassMetadata':
452
- return handleGetContractClassMetadata(
453
- context.wallet,
454
- params as AztecWalletMethodMap['aztec_getContractClassMetadata']['params'],
455
- );
456
- case 'aztec_registerContract':
457
- return handleRegisterContract(
458
- context.wallet,
459
- params as AztecWalletMethodMap['aztec_registerContract']['params'],
460
- );
461
- case 'aztec_registerContractClass':
462
- return handleRegisterContractClass(
463
- context.wallet,
464
- params as AztecWalletMethodMap['aztec_registerContractClass']['params'],
465
- );
466
- case 'aztec_getPublicStorageAt':
467
- return handleGetPublicStorageAt(
468
- context.wallet,
469
- params as AztecWalletMethodMap['aztec_getPublicStorageAt']['params'],
470
- );
471
-
472
- // Transactions methods
473
- case 'aztec_createTxExecutionRequest':
474
- return handleCreateTxExecutionRequest(
475
- context.wallet,
476
- params as AztecWalletMethodMap['aztec_createTxExecutionRequest']['params'],
477
- );
478
- case 'aztec_proveTx':
479
- return handleProveTx(context.wallet, params as AztecWalletMethodMap['aztec_proveTx']['params']);
480
- case 'aztec_sendTx':
481
- return handleSendTx(context.wallet, params as AztecWalletMethodMap['aztec_sendTx']['params']);
482
- case 'aztec_getTxEffect':
483
- return handleGetTxEffect(context.wallet, params as AztecWalletMethodMap['aztec_getTxEffect']['params']);
484
- case 'aztec_getTxReceipt':
485
- return handleGetTxReceipt(
486
- context.wallet,
487
- params as AztecWalletMethodMap['aztec_getTxReceipt']['params'],
488
- );
489
- case 'aztec_simulateTx':
490
- return handleSimulateTx(context.wallet, params as AztecWalletMethodMap['aztec_simulateTx']['params']);
491
- case 'aztec_simulateUnconstrained':
492
- return handleSimulateUnconstrained(
493
- context.wallet,
494
- params as AztecWalletMethodMap['aztec_simulateUnconstrained']['params'],
495
- );
496
-
497
- // Notes methods
498
- case 'aztec_getNotes':
499
- return handleGetNotes(context.wallet, params as AztecWalletMethodMap['aztec_getNotes']['params']);
500
- case 'aztec_addNote':
501
- return handleAddNote(context.wallet, params as AztecWalletMethodMap['aztec_addNote']['params']);
502
- case 'aztec_addNullifiedNote':
503
- return handleAddNullifiedNote(
504
- context.wallet,
505
- params as AztecWalletMethodMap['aztec_addNullifiedNote']['params'],
506
- );
507
-
508
- // Logs and Events methods
509
- case 'aztec_getPublicLogs':
510
- return handleGetPublicLogs(
511
- context.wallet,
512
- params as AztecWalletMethodMap['aztec_getPublicLogs']['params'],
513
- );
514
- case 'aztec_getContractClassLogs':
515
- return handleGetContractClassLogs(
516
- context.wallet,
517
- params as AztecWalletMethodMap['aztec_getContractClassLogs']['params'],
518
- );
519
- case 'aztec_getPrivateEvents':
520
- return handleGetPrivateEvents(
521
- context.wallet,
522
- params as AztecWalletMethodMap['aztec_getPrivateEvents']['params'],
523
- );
524
- case 'aztec_getPublicEvents':
525
- return handleGetPublicEvents(
526
- context.wallet,
527
- params as AztecWalletMethodMap['aztec_getPublicEvents']['params'],
528
- );
529
- default:
530
- throw new AztecWalletError('invalidRequest', `Method not supported: ${String(method)}`);
531
- }
532
- }
@@ -1,124 +0,0 @@
1
- import {
2
- AuthWitness,
3
- AztecAddress,
4
- Contract,
5
- NoFeePaymentMethod,
6
- type ContractArtifact,
7
- } from '@aztec/aztec.js';
8
-
9
- import { GasSettings } from '@aztec/circuits.js';
10
- import type { ExecutionRequestInit } from '@aztec/aztec.js/entrypoint';
11
-
12
- import type { AztecWalletContext, TransactionFunctionCall, TransactionParams } from '../types.js';
13
- import { AztecWalletError } from '../errors.js';
14
-
15
- /**
16
- * Handles the 'aztec_sendTransaction' JSON-RPC method.
17
- * Sends transactions to the Aztec network and returns the transaction hash.
18
- * @param params - The transaction parameters
19
- * @param params.functionCalls - Array of function calls to execute
20
- * @param params.authwits - Optional array of authorization witnesses for the transaction
21
- * @returns A Promise that resolves to the transaction hash string
22
- */
23
- export async function sendTransaction(
24
- context: AztecWalletContext,
25
- params: TransactionParams,
26
- ): Promise<string> {
27
- try {
28
- // Setup the execution request without the calls for now
29
- const executionRequestInit: ExecutionRequestInit = {
30
- calls: [],
31
- authWitnesses: params.authwits?.map(AuthWitness.fromString) ?? [],
32
- // TODO: Figure out what we should be doing with this fee parameter
33
- fee: {
34
- paymentMethod: new NoFeePaymentMethod(),
35
- gasSettings: GasSettings.default({ maxFeesPerGas: await context.wallet.getCurrentBaseFees() }),
36
- },
37
- };
38
-
39
- // Get artifacts and contracts first
40
- const contractMap = new Map<string, { contract: Contract; artifact: ContractArtifact }>();
41
- for (const c of params.functionCalls) {
42
- const contractAddress = AztecAddress.fromString(c.contractAddress);
43
- if (!contractMap.has(c.contractAddress)) {
44
- const artifact = await context.contractArtifactCache.getContractArtifact(contractAddress);
45
- const contract = await Contract.at(contractAddress, artifact, context.wallet);
46
- contractMap.set(c.contractAddress, { contract, artifact });
47
- }
48
- }
49
-
50
- // Now build the execution request
51
- for (const c of params.functionCalls) {
52
- // biome-ignore lint/style/noNonNullAssertion: we know the contract is in the map
53
- const { contract } = contractMap.get(c.contractAddress)!;
54
- const method = contract.methods[c.functionName];
55
- if (!method) {
56
- throw new AztecWalletError(
57
- 'invalidParams',
58
- `Unknown function for contract ${c.contractAddress}: ${c.functionName}`,
59
- );
60
- }
61
- const functionCall = method(...c.args);
62
- executionRequestInit.calls.push(await functionCall.request());
63
- }
64
- const txExecutionRequest = await context.wallet.createTxExecutionRequest(executionRequestInit);
65
- const simulatedTx = await context.wallet.simulateTx(txExecutionRequest, true /* simulatePublic */);
66
- const txProvingResult = await context.wallet.proveTx(
67
- txExecutionRequest,
68
- simulatedTx.privateExecutionResult,
69
- );
70
- const txHash = await context.wallet.sendTx(txProvingResult.toTx());
71
- return txHash.toString();
72
- } catch (error) {
73
- throw new AztecWalletError('unknownInternalError');
74
- }
75
- }
76
-
77
- /**
78
- * Handles the 'aztec_simulateTransaction' JSON-RPC method.
79
- * Simulates a transaction without submitting it to the network.
80
- * @param params - The transaction parameters to simulate
81
- * @param params.contractAddress - The target contract address
82
- * @param params.functionName - The contract function to call
83
- * @param params.args - The function arguments
84
- * @returns A Promise that resolves to the simulation result
85
- */
86
- export async function simulateTransaction(
87
- context: AztecWalletContext,
88
- params: TransactionFunctionCall,
89
- ): Promise<unknown> {
90
- try {
91
- const { contractAddress, functionName, args } = params;
92
- const addr = AztecAddress.fromString(contractAddress);
93
- const artifact = await context.contractArtifactCache.getContractArtifact(addr);
94
- const contract = await Contract.at(addr, artifact, context.wallet);
95
- const method = contract.methods[functionName];
96
- if (!method) {
97
- throw new AztecWalletError(
98
- 'invalidParams',
99
- `Unknown function for contract ${contractAddress}: ${functionName}`,
100
- );
101
- }
102
- const result = await method(...args).simulate();
103
- // TODO: Is this sufficient for serializing the result?
104
- switch (typeof result) {
105
- case 'string':
106
- return result;
107
- case 'bigint':
108
- return result.toString();
109
- case 'object':
110
- if (result instanceof Uint8Array) {
111
- return Buffer.from(result).toString('hex');
112
- }
113
- return result;
114
- default:
115
- return result;
116
- }
117
- } catch (error) {
118
- if (error instanceof AztecWalletError) {
119
- throw error;
120
- }
121
- console.error('Error simulating transaction:', error);
122
- throw new AztecWalletError('unknownInternalError', 'aztec_simulateTransaction');
123
- }
124
- }