@walletmesh/aztec-rpc-wallet 0.3.1 → 0.4.1

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 -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 +498 -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 +11 -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 +584 -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
@@ -1,401 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
- import type { JSONRPCRequest } from '@walletmesh/jsonrpc';
3
- import { AztecChainProvider } from './chainProvider.js';
4
- import { AztecWalletError } from './errors.js';
5
- import type { ContractInstanceWithAddress, ContractArtifact, AztecAddress } from '@aztec/aztec.js';
6
- import type { AztecWalletMethodMap } from './types.js';
7
-
8
- const createMockTransport = () => ({
9
- send: vi
10
- .fn()
11
- .mockImplementation(
12
- async (_request: JSONRPCRequest<AztecWalletMethodMap, keyof AztecWalletMethodMap>) => {
13
- // Default mock implementation that records the call but returns undefined
14
- return undefined;
15
- },
16
- ),
17
- });
18
-
19
- describe('AztecChainProvider', () => {
20
- let provider: AztecChainProvider;
21
- let mockTransport: ReturnType<typeof createMockTransport>;
22
-
23
- beforeEach(() => {
24
- mockTransport = createMockTransport();
25
- provider = new AztecChainProvider(mockTransport);
26
- });
27
-
28
- afterEach(() => {
29
- vi.clearAllMocks();
30
- });
31
-
32
- describe('getAccount', () => {
33
- it('returns account address on success', async () => {
34
- const expectedAddress = '0x1234567890abcdef';
35
- const promise = provider.getAccount();
36
-
37
- // Wait for the async operation to complete
38
- await Promise.resolve();
39
-
40
- // Get the request ID from the sent message
41
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
42
- const firstCall = mockTransport.send.mock.calls[0];
43
- if (!firstCall) throw new Error('Expected mock to be called');
44
- const request = firstCall[0];
45
- if (!request) throw new Error('Expected request to be defined');
46
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_getAccount'>;
47
- expect(sentRequest).toEqual({
48
- jsonrpc: '2.0',
49
- id: expect.any(String),
50
- method: 'aztec_getAccount',
51
- });
52
-
53
- // Simulate response
54
- await provider.receiveMessage({
55
- jsonrpc: '2.0',
56
- result: expectedAddress,
57
- id: sentRequest.id,
58
- });
59
-
60
- const result = await promise;
61
- expect(result).toBe(expectedAddress);
62
- });
63
-
64
- it('throws on invalid response', async () => {
65
- const promise = provider.getAccount();
66
-
67
- // Wait for the async operation to complete
68
- await Promise.resolve();
69
-
70
- // Get the request ID
71
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
72
- const firstCall = mockTransport.send.mock.calls[0];
73
- if (!firstCall) throw new Error('Expected mock to be called');
74
- const request = firstCall[0];
75
- if (!request) throw new Error('Expected request to be defined');
76
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_getAccount'>;
77
-
78
- // Simulate error response
79
- await provider.receiveMessage({
80
- jsonrpc: '2.0',
81
- result: null,
82
- id: sentRequest.id,
83
- });
84
-
85
- await expect(promise).rejects.toThrow(AztecWalletError);
86
- });
87
- });
88
-
89
- describe('sendTransaction', () => {
90
- const txParams = {
91
- functionCalls: [
92
- {
93
- contractAddress: '0x1234',
94
- functionName: 'transfer',
95
- args: ['0x5678', 100],
96
- },
97
- ],
98
- };
99
-
100
- it('returns transaction hash on success', async () => {
101
- const expectedHash = '0xabcd';
102
- const promise = provider.sendTransaction(txParams);
103
-
104
- // Wait for the async operation to complete
105
- await Promise.resolve();
106
-
107
- // Get the request ID
108
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
109
- const firstCall = mockTransport.send.mock.calls[0];
110
- if (!firstCall) throw new Error('Expected mock to be called');
111
- const request = firstCall[0];
112
- if (!request) throw new Error('Expected request to be defined');
113
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_sendTransaction'>;
114
- expect(sentRequest).toEqual({
115
- jsonrpc: '2.0',
116
- id: expect.any(String),
117
- method: 'aztec_sendTransaction',
118
- params: txParams,
119
- });
120
-
121
- // Simulate response
122
- await provider.receiveMessage({
123
- jsonrpc: '2.0',
124
- result: expectedHash,
125
- id: sentRequest.id,
126
- });
127
-
128
- const result = await promise;
129
- expect(result).toBe(expectedHash);
130
- });
131
-
132
- it('throws on invalid response', async () => {
133
- const promise = provider.sendTransaction(txParams);
134
-
135
- // Wait for the async operation to complete
136
- await Promise.resolve();
137
-
138
- // Get the request ID
139
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
140
- const firstCall = mockTransport.send.mock.calls[0];
141
- if (!firstCall) throw new Error('Expected mock to be called');
142
- const request = firstCall[0];
143
- if (!request) throw new Error('Expected request to be defined');
144
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_sendTransaction'>;
145
-
146
- // Simulate error response
147
- await provider.receiveMessage({
148
- jsonrpc: '2.0',
149
- result: null,
150
- id: sentRequest.id,
151
- });
152
-
153
- await expect(promise).rejects.toThrow(AztecWalletError);
154
- });
155
- });
156
-
157
- describe('simulateTransaction', () => {
158
- const txParams = {
159
- contractAddress: '0x1234',
160
- functionName: 'transfer',
161
- args: ['0x5678', 100],
162
- };
163
-
164
- it('returns simulation result on success', async () => {
165
- const expectedResult = { success: true, data: 'test' };
166
- const promise = provider.simulateTransaction(txParams);
167
-
168
- // Wait for the async operation to complete
169
- await Promise.resolve();
170
-
171
- // Get the request ID
172
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
173
- const firstCall = mockTransport.send.mock.calls[0];
174
- if (!firstCall) throw new Error('Expected mock to be called');
175
- const request = firstCall[0];
176
- if (!request) throw new Error('Expected request to be defined');
177
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_simulateTransaction'>;
178
- expect(sentRequest).toEqual({
179
- jsonrpc: '2.0',
180
- id: expect.any(String),
181
- method: 'aztec_simulateTransaction',
182
- params: txParams,
183
- });
184
-
185
- // Simulate response
186
- await provider.receiveMessage({
187
- jsonrpc: '2.0',
188
- result: expectedResult,
189
- id: sentRequest.id,
190
- });
191
-
192
- const result = await promise;
193
- expect(result).toEqual(expectedResult);
194
- });
195
-
196
- it('throws on invalid response', async () => {
197
- const promise = provider.simulateTransaction(txParams);
198
-
199
- // Wait for the async operation to complete
200
- await Promise.resolve();
201
-
202
- // Get the request ID
203
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
204
- const firstCall = mockTransport.send.mock.calls[0];
205
- if (!firstCall) throw new Error('Expected mock to be called');
206
- const request = firstCall[0];
207
- if (!request) throw new Error('Expected request to be defined');
208
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_simulateTransaction'>;
209
-
210
- // Simulate error response
211
- await provider.receiveMessage({
212
- jsonrpc: '2.0',
213
- result: null,
214
- id: sentRequest.id,
215
- });
216
-
217
- await expect(promise).rejects.toThrow(AztecWalletError);
218
- });
219
- });
220
-
221
- describe('registerContract', () => {
222
- const contractParams = {
223
- instance: { address: '0x1234' as unknown as AztecAddress } as ContractInstanceWithAddress,
224
- artifact: { name: 'TestContract' } as ContractArtifact,
225
- };
226
-
227
- it('succeeds on valid response', async () => {
228
- const promise = provider.registerContract(contractParams);
229
-
230
- // Wait for the async operation to complete
231
- await Promise.resolve();
232
-
233
- // Get the request ID
234
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
235
- const firstCall = mockTransport.send.mock.calls[0];
236
- if (!firstCall) throw new Error('Expected mock to be called');
237
- const request = firstCall[0];
238
- if (!request) throw new Error('Expected request to be defined');
239
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerContract'>;
240
- expect(sentRequest).toEqual({
241
- jsonrpc: '2.0',
242
- id: expect.any(String),
243
- method: 'aztec_registerContract',
244
- params: contractParams,
245
- });
246
-
247
- // Simulate response
248
- await provider.receiveMessage({
249
- jsonrpc: '2.0',
250
- result: true,
251
- id: sentRequest.id,
252
- });
253
-
254
- await expect(promise).resolves.toBeUndefined();
255
- });
256
-
257
- it('throws on invalid response', async () => {
258
- const promise = provider.registerContract(contractParams);
259
-
260
- // Wait for the async operation to complete
261
- await Promise.resolve();
262
-
263
- // Get the request ID
264
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
265
- const firstCall = mockTransport.send.mock.calls[0];
266
- if (!firstCall) throw new Error('Expected mock to be called');
267
- const request = firstCall[0];
268
- if (!request) throw new Error('Expected request to be defined');
269
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerContract'>;
270
-
271
- // Simulate error response
272
- await provider.receiveMessage({
273
- jsonrpc: '2.0',
274
- result: false,
275
- id: sentRequest.id,
276
- });
277
-
278
- await expect(promise).rejects.toThrow(AztecWalletError);
279
- });
280
- });
281
-
282
- describe('registerContractClass', () => {
283
- const classParams = {
284
- artifact: { name: 'TestContract' } as ContractArtifact,
285
- };
286
-
287
- it('succeeds on valid response', async () => {
288
- const promise = provider.registerContractClass(classParams);
289
-
290
- // Wait for the async operation to complete
291
- await Promise.resolve();
292
-
293
- // Get the request ID
294
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
295
- const firstCall = mockTransport.send.mock.calls[0];
296
- if (!firstCall) throw new Error('Expected mock to be called');
297
- const request = firstCall[0];
298
- if (!request) throw new Error('Expected request to be defined');
299
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerContractClass'>;
300
- expect(sentRequest).toEqual({
301
- jsonrpc: '2.0',
302
- id: expect.any(String),
303
- method: 'aztec_registerContractClass',
304
- params: classParams,
305
- });
306
-
307
- // Simulate response
308
- await provider.receiveMessage({
309
- jsonrpc: '2.0',
310
- result: true,
311
- id: sentRequest.id,
312
- });
313
-
314
- await expect(promise).resolves.toBeUndefined();
315
- });
316
-
317
- it('throws on invalid response', async () => {
318
- const promise = provider.registerContractClass(classParams);
319
-
320
- // Wait for the async operation to complete
321
- await Promise.resolve();
322
-
323
- // Get the request ID
324
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
325
- const firstCall = mockTransport.send.mock.calls[0];
326
- if (!firstCall) throw new Error('Expected mock to be called');
327
- const request = firstCall[0];
328
- if (!request) throw new Error('Expected request to be defined');
329
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerContractClass'>;
330
-
331
- // Simulate error response
332
- await provider.receiveMessage({
333
- jsonrpc: '2.0',
334
- result: false,
335
- id: sentRequest.id,
336
- });
337
-
338
- await expect(promise).rejects.toThrow(AztecWalletError);
339
- });
340
- });
341
-
342
- describe('registerSender', () => {
343
- const senderParams = {
344
- sender: '0x1234' as unknown as AztecAddress,
345
- };
346
-
347
- it('succeeds on valid response', async () => {
348
- const promise = provider.registerSender(senderParams);
349
-
350
- // Wait for the async operation to complete
351
- await Promise.resolve();
352
-
353
- // Get the request ID
354
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
355
- const firstCall = mockTransport.send.mock.calls[0];
356
- if (!firstCall) throw new Error('Expected mock to be called');
357
- const request = firstCall[0];
358
- if (!request) throw new Error('Expected request to be defined');
359
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerSender'>;
360
- expect(sentRequest).toEqual({
361
- jsonrpc: '2.0',
362
- id: expect.any(String),
363
- method: 'aztec_registerSender',
364
- params: senderParams,
365
- });
366
-
367
- // Simulate response
368
- await provider.receiveMessage({
369
- jsonrpc: '2.0',
370
- result: '0x1234',
371
- id: sentRequest.id,
372
- });
373
-
374
- await expect(promise).resolves.toBeUndefined();
375
- });
376
-
377
- it('throws on invalid response', async () => {
378
- const promise = provider.registerSender(senderParams);
379
-
380
- // Wait for the async operation to complete
381
- await Promise.resolve();
382
-
383
- // Get the request ID
384
- expect(mockTransport.send).toHaveBeenCalledTimes(1);
385
- const firstCall = mockTransport.send.mock.calls[0];
386
- if (!firstCall) throw new Error('Expected mock to be called');
387
- const request = firstCall[0];
388
- if (!request) throw new Error('Expected request to be defined');
389
- const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerSender'>;
390
-
391
- // Simulate error response
392
- await provider.receiveMessage({
393
- jsonrpc: '2.0',
394
- result: null,
395
- id: sentRequest.id,
396
- });
397
-
398
- await expect(promise).rejects.toThrow(AztecWalletError);
399
- });
400
- });
401
- });
@@ -1,116 +0,0 @@
1
- import { JSONRPCNode } from '@walletmesh/jsonrpc';
2
- import { AztecWalletError, AztecWalletErrorType } from './errors.js';
3
- import type { AztecWalletMethodMap, TransactionParams, TransactionFunctionCall } from './types.js';
4
- import type { ContractInstanceWithAddress, ContractArtifact } from '@aztec/aztec.js';
5
-
6
- /**
7
- * Provider for directly interacting with an Aztec chain wallet.
8
- * This is a minimal implementation that supports core Aztec operations
9
- * without the complexity of multi-chain routing.
10
- */
11
- export class AztecChainProvider extends JSONRPCNode<AztecWalletMethodMap> {
12
- protected async makeRequest<M extends keyof AztecWalletMethodMap>(
13
- method: M,
14
- params?: AztecWalletMethodMap[M]['params'],
15
- ): Promise<AztecWalletMethodMap[M]['result']> {
16
- try {
17
- return await this.callMethod(method, params);
18
- } catch (error) {
19
- throw new AztecWalletError(
20
- AztecWalletErrorType.invalidResponse,
21
- error instanceof Error ? error.message : 'Invalid response received',
22
- );
23
- }
24
- }
25
-
26
- public async connect(): Promise<boolean> {
27
- try {
28
- await this.makeRequest('aztec_connect');
29
- return true;
30
- } catch (error) {
31
- return false;
32
- }
33
- }
34
-
35
- /**
36
- * Gets the account address from the wallet.
37
- * @returns The account address as a string
38
- * @throws {AztecWalletError} If response is invalid
39
- */
40
- public async getAccount(): Promise<string> {
41
- const result = await this.makeRequest('aztec_getAccount');
42
- if (typeof result !== 'string' || !result) {
43
- throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid account address returned');
44
- }
45
- return result;
46
- }
47
-
48
- /**
49
- * Sends a transaction to the chain.
50
- * @param params - Transaction parameters including function calls
51
- * @returns Transaction hash
52
- * @throws {AztecWalletError} If transaction fails or response invalid
53
- */
54
- public async sendTransaction(params: TransactionParams): Promise<string> {
55
- const result = await this.makeRequest('aztec_sendTransaction', params);
56
- if (typeof result !== 'string' || !result) {
57
- throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid transaction hash returned');
58
- }
59
- return result;
60
- }
61
-
62
- /**
63
- * Simulates a transaction without submitting it.
64
- * @param params - Transaction parameters to simulate
65
- * @returns Simulation result
66
- * @throws {AztecWalletError} If simulation fails
67
- */
68
- public async simulateTransaction(params: TransactionFunctionCall): Promise<unknown> {
69
- const result = await this.makeRequest('aztec_simulateTransaction', params);
70
- if (result === undefined || result === null) {
71
- throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid simulation result returned');
72
- }
73
- return result;
74
- }
75
-
76
- /**
77
- * Registers a contract instance with the wallet.
78
- * @param params - Contract registration parameters
79
- * @throws {AztecWalletError} If registration fails
80
- */
81
- public async registerContract(params: {
82
- instance: ContractInstanceWithAddress;
83
- artifact?: ContractArtifact;
84
- }): Promise<void> {
85
- const result = await this.makeRequest('aztec_registerContract', params);
86
- if (result !== true) {
87
- throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Contract registration failed');
88
- }
89
- }
90
-
91
- /**
92
- * Registers a contract class with the wallet.
93
- * @param params - Contract class registration parameters
94
- * @throws {AztecWalletError} If registration fails
95
- */
96
- public async registerContractClass(params: {
97
- artifact: ContractArtifact;
98
- }): Promise<void> {
99
- const result = await this.makeRequest('aztec_registerContractClass', params);
100
- if (result !== true) {
101
- throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Contract class registration failed');
102
- }
103
- }
104
-
105
- /**
106
- * Registers a sender with the wallet.
107
- * @param params - Sender registration parameters
108
- * @throws {AztecWalletError} If registration fails
109
- */
110
- public async registerSender(params: AztecWalletMethodMap['aztec_registerSender']['params']): Promise<void> {
111
- const result = await this.makeRequest('aztec_registerSender', params);
112
- if (!result) {
113
- throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Sender registration failed');
114
- }
115
- }
116
- }