@walletmesh/aztec-rpc-wallet 0.1.0 → 0.1.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 (64) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/aztecRemoteWallet.d.ts +7 -6
  4. package/dist/aztecRemoteWallet.d.ts.map +1 -1
  5. package/dist/aztecRemoteWallet.js +15 -9
  6. package/dist/handlers/aztecAccountWallet.d.ts.map +1 -1
  7. package/dist/handlers/aztecAccountWallet.js +22 -22
  8. package/dist/serializers/account.d.ts +4 -7
  9. package/dist/serializers/account.d.ts.map +1 -1
  10. package/dist/serializers/account.js +28 -29
  11. package/dist/serializers/contract.d.ts +4 -56
  12. package/dist/serializers/contract.d.ts.map +1 -1
  13. package/dist/serializers/contract.js +62 -148
  14. package/dist/serializers/index.d.ts +1 -4
  15. package/dist/serializers/index.d.ts.map +1 -1
  16. package/dist/serializers/index.js +12 -12
  17. package/dist/serializers/log.d.ts +36 -83
  18. package/dist/serializers/log.d.ts.map +1 -1
  19. package/dist/serializers/log.js +96 -107
  20. package/dist/serializers/note.d.ts +14 -17
  21. package/dist/serializers/note.d.ts.map +1 -1
  22. package/dist/serializers/note.js +52 -29
  23. package/dist/serializers/transaction-utils.d.ts +44 -100
  24. package/dist/serializers/transaction-utils.d.ts.map +1 -1
  25. package/dist/serializers/transaction-utils.js +82 -118
  26. package/dist/serializers/transaction.d.ts +3 -6
  27. package/dist/serializers/transaction.d.ts.map +1 -1
  28. package/dist/serializers/transaction.js +39 -50
  29. package/dist/types.d.ts +8 -8
  30. package/dist/types.d.ts.map +1 -1
  31. package/dist/types.js +1 -1
  32. package/package.json +5 -5
  33. package/src/aztecRemoteWallet.test.ts +33 -29
  34. package/src/aztecRemoteWallet.ts +25 -14
  35. package/src/handlers/aztecAccountWallet.test.ts +78 -75
  36. package/src/handlers/aztecAccountWallet.ts +32 -35
  37. package/src/serializers/account.test.ts +18 -17
  38. package/src/serializers/account.ts +31 -49
  39. package/src/serializers/contract.test.ts +14 -16
  40. package/src/serializers/contract.ts +75 -164
  41. package/src/serializers/index.test.ts +20 -8
  42. package/src/serializers/index.ts +16 -20
  43. package/src/serializers/log.test.ts +201 -28
  44. package/src/serializers/log.ts +153 -146
  45. package/src/serializers/note.test.ts +26 -28
  46. package/src/serializers/note.ts +60 -36
  47. package/src/serializers/transaction-utils.ts +135 -211
  48. package/src/serializers/transaction.test.ts +190 -30
  49. package/src/serializers/transaction.ts +51 -72
  50. package/src/types.ts +9 -8
  51. package/vitest.config.ts +1 -1
  52. package/dist/serializers/contract-utils.d.ts +0 -40
  53. package/dist/serializers/contract-utils.d.ts.map +0 -1
  54. package/dist/serializers/contract-utils.js +0 -102
  55. package/dist/serializers/core.d.ts +0 -110
  56. package/dist/serializers/core.d.ts.map +0 -1
  57. package/dist/serializers/core.js +0 -130
  58. package/dist/serializers/types.d.ts +0 -49
  59. package/dist/serializers/types.d.ts.map +0 -1
  60. package/dist/serializers/types.js +0 -22
  61. package/src/serializers/contract-utils.ts +0 -104
  62. package/src/serializers/core.test.ts +0 -56
  63. package/src/serializers/core.ts +0 -141
  64. package/src/serializers/types.ts +0 -58
@@ -3,37 +3,43 @@ import { Point, AztecAddress } from '@aztec/aztec.js';
3
3
  import { EventSelector } from '@aztec/foundation/abi';
4
4
  import type { AbiType } from '@aztec/foundation/abi';
5
5
  import {
6
- ExtendedUnencryptedL2Log,
7
- type GetUnencryptedLogsResponse,
6
+ ExtendedPublicLog,
7
+ type GetPublicLogsResponse,
8
+ type GetContractClassLogsResponse,
8
9
  type LogFilter,
9
10
  LogId,
10
11
  TxHash,
11
12
  } from '@aztec/circuit-types';
12
13
  import {
13
- aztecGetUnencryptedLogsSerializer,
14
- aztecGetEncryptedEventsSerializer,
15
- aztecGetUnencryptedEventsSerializer,
14
+ aztecGetPublicLogsSerializer,
15
+ aztecGetPrivateEventsSerializer,
16
+ aztecGetPublicEventsSerializer,
17
+ aztecGetContractClassLogsSerializer,
16
18
  } from './log.js';
17
19
 
18
20
  describe('Log Serializers', () => {
19
- describe('aztec_getUnencryptedLogs', () => {
20
- const METHOD = 'aztec_getUnencryptedLogs';
21
+ const createRandomLog = async () => {
22
+ const log = await ExtendedPublicLog.random();
23
+ return log;
24
+ };
25
+ describe('aztec_getPublicLogs', () => {
26
+ const METHOD = 'aztec_getPublicLogs';
21
27
 
22
- it('should serialize and deserialize params', () => {
28
+ it('should serialize and deserialize params', async () => {
23
29
  const filter: LogFilter = {
24
- txHash: TxHash.random(),
30
+ txHash: await TxHash.random(),
25
31
  fromBlock: 0,
26
32
  toBlock: 100,
27
- afterLog: LogId.random(),
28
- contractAddress: AztecAddress.random(),
33
+ afterLog: await LogId.random(),
34
+ contractAddress: await AztecAddress.random(),
29
35
  };
30
36
 
31
37
  const params = { filter };
32
38
 
33
- const serialized = aztecGetUnencryptedLogsSerializer.params.serialize(METHOD, params);
39
+ const serialized = aztecGetPublicLogsSerializer.params.serialize(METHOD, params);
34
40
  expect(serialized.method).toBe(METHOD);
35
41
 
36
- const deserialized = aztecGetUnencryptedLogsSerializer.params.deserialize(METHOD, serialized);
42
+ const deserialized = aztecGetPublicLogsSerializer.params.deserialize(METHOD, serialized);
37
43
  expect(deserialized.filter.contractAddress?.toString()).toBe(filter.contractAddress?.toString());
38
44
  expect(deserialized.filter.txHash?.toString()).toBe(filter.txHash?.toString());
39
45
  expect(deserialized.filter.fromBlock).toBe(filter.fromBlock);
@@ -41,26 +47,27 @@ describe('Log Serializers', () => {
41
47
  expect(deserialized.filter.afterLog?.toString()).toBe(filter.afterLog?.toString());
42
48
  });
43
49
 
44
- it('should serialize and deserialize result', () => {
45
- const result: GetUnencryptedLogsResponse = {
46
- logs: [ExtendedUnencryptedL2Log.random()],
50
+ it('should serialize and deserialize result', async () => {
51
+ const log = await ExtendedPublicLog.random();
52
+ const result: GetPublicLogsResponse = {
53
+ logs: [log],
47
54
  maxLogsHit: false,
48
55
  };
49
56
 
50
- const serialized = aztecGetUnencryptedLogsSerializer.result.serialize(METHOD, result);
57
+ const serialized = aztecGetPublicLogsSerializer.result.serialize(METHOD, result);
51
58
  expect(serialized.method).toBe(METHOD);
52
59
 
53
- const deserialized = aztecGetUnencryptedLogsSerializer.result.deserialize(METHOD, serialized);
60
+ const deserialized = aztecGetPublicLogsSerializer.result.deserialize(METHOD, serialized);
54
61
  expect(deserialized.logs[0].toString()).toBe(result.logs[0].toString());
55
62
  expect(deserialized.logs.length).toBe(result.logs.length);
56
63
  expect(deserialized.maxLogsHit).toBe(result.maxLogsHit);
57
64
  });
58
65
  });
59
66
 
60
- describe('aztec_getEncryptedEvents', () => {
61
- const METHOD = 'aztec_getEncryptedEvents';
67
+ describe('aztec_getPrivateEvents', () => {
68
+ const METHOD = 'aztec_getPrivateEvents';
62
69
 
63
- it('should serialize and deserialize params', () => {
70
+ it('should serialize and deserialize params', async () => {
64
71
  const event = {
65
72
  eventSelector: EventSelector.fromString('0x12345678'),
66
73
  abiType: {
@@ -72,13 +79,13 @@ describe('Log Serializers', () => {
72
79
  event,
73
80
  from: 0,
74
81
  limit: 10,
75
- vpks: [Point.random(), Point.random()],
82
+ vpks: [await Point.random(), await Point.random()],
76
83
  };
77
84
 
78
- const serialized = aztecGetEncryptedEventsSerializer.params.serialize(METHOD, params);
85
+ const serialized = aztecGetPrivateEventsSerializer.params.serialize(METHOD, params);
79
86
  expect(serialized.method).toBe(METHOD);
80
87
 
81
- const deserialized = aztecGetEncryptedEventsSerializer.params.deserialize(METHOD, serialized);
88
+ const deserialized = aztecGetPrivateEventsSerializer.params.deserialize(METHOD, serialized);
82
89
  expect(deserialized.event.eventSelector.toString()).toBe(event.eventSelector.toString());
83
90
  expect(deserialized.event.abiType).toEqual(event.abiType);
84
91
  expect(deserialized.event.fieldNames).toEqual(event.fieldNames);
@@ -88,8 +95,8 @@ describe('Log Serializers', () => {
88
95
  });
89
96
  });
90
97
 
91
- describe('aztec_getUnencryptedEvents', () => {
92
- const METHOD = 'aztec_getUnencryptedEvents';
98
+ describe('aztec_getPublicEvents', () => {
99
+ const METHOD = 'aztec_getPublicEvents';
93
100
 
94
101
  it('should serialize and deserialize params', () => {
95
102
  const event = {
@@ -105,10 +112,10 @@ describe('Log Serializers', () => {
105
112
  limit: 10,
106
113
  };
107
114
 
108
- const serialized = aztecGetUnencryptedEventsSerializer.params.serialize(METHOD, params);
115
+ const serialized = aztecGetPublicEventsSerializer.params.serialize(METHOD, params);
109
116
  expect(serialized.method).toBe(METHOD);
110
117
 
111
- const deserialized = aztecGetUnencryptedEventsSerializer.params.deserialize(METHOD, serialized);
118
+ const deserialized = aztecGetPublicEventsSerializer.params.deserialize(METHOD, serialized);
112
119
  expect(deserialized.event.eventSelector.toString()).toBe(event.eventSelector.toString());
113
120
  expect(deserialized.event.abiType).toEqual(event.abiType);
114
121
  expect(deserialized.event.fieldNames).toEqual(event.fieldNames);
@@ -116,4 +123,170 @@ describe('Log Serializers', () => {
116
123
  expect(deserialized.limit).toBe(params.limit);
117
124
  });
118
125
  });
126
+
127
+ describe('aztec_getContractClassLogs', () => {
128
+ const METHOD = 'aztec_getContractClassLogs';
129
+
130
+ it('should serialize and deserialize params with complete filter', async () => {
131
+ const txHash = await TxHash.random();
132
+ const contractAddress = await AztecAddress.random();
133
+ const afterLog = await LogId.random();
134
+
135
+ const filter: LogFilter = {
136
+ txHash,
137
+ fromBlock: 0,
138
+ toBlock: 100,
139
+ afterLog,
140
+ contractAddress,
141
+ };
142
+
143
+ const params = { filter };
144
+ const serialized = aztecGetContractClassLogsSerializer.params.serialize(METHOD, params);
145
+ expect(serialized.method).toBe(METHOD);
146
+
147
+ const deserialized = aztecGetContractClassLogsSerializer.params.deserialize(METHOD, serialized);
148
+ expect(deserialized.filter.contractAddress?.toString()).toBe(filter.contractAddress?.toString());
149
+ expect(deserialized.filter.txHash?.toString()).toBe(filter.txHash?.toString());
150
+ expect(deserialized.filter.fromBlock).toBe(filter.fromBlock);
151
+ expect(deserialized.filter.toBlock).toBe(filter.toBlock);
152
+ expect(deserialized.filter.afterLog?.toString()).toBe(filter.afterLog?.toString());
153
+ });
154
+
155
+ it('should serialize and deserialize params with minimal filter', () => {
156
+ const filter: LogFilter = {
157
+ fromBlock: 0,
158
+ toBlock: 100,
159
+ };
160
+
161
+ const params = { filter };
162
+ const serialized = aztecGetContractClassLogsSerializer.params.serialize(METHOD, params);
163
+ expect(serialized.method).toBe(METHOD);
164
+
165
+ const deserialized = aztecGetContractClassLogsSerializer.params.deserialize(METHOD, serialized);
166
+ expect(deserialized.filter.contractAddress).toBeUndefined();
167
+ expect(deserialized.filter.txHash).toBeUndefined();
168
+ expect(deserialized.filter.fromBlock).toBe(filter.fromBlock);
169
+ expect(deserialized.filter.toBlock).toBe(filter.toBlock);
170
+ expect(deserialized.filter.afterLog).toBeUndefined();
171
+ });
172
+
173
+ it('should serialize and deserialize result', async () => {
174
+ // Create a mock response that matches the schema
175
+ const result: GetContractClassLogsResponse = {
176
+ logs: [],
177
+ maxLogsHit: false,
178
+ };
179
+
180
+ const serialized = aztecGetContractClassLogsSerializer.result.serialize(METHOD, result);
181
+ expect(serialized.method).toBe(METHOD);
182
+
183
+ const deserialized = aztecGetContractClassLogsSerializer.result.deserialize(METHOD, serialized);
184
+ expect(deserialized.logs).toEqual([]);
185
+ expect(deserialized.maxLogsHit).toBe(result.maxLogsHit);
186
+ });
187
+ });
188
+
189
+ describe('aztec_getPrivateEvents result handling', () => {
190
+ const METHOD = 'aztec_getPrivateEvents';
191
+
192
+ it('should serialize and deserialize empty result array', () => {
193
+ const result: unknown[] = [];
194
+ const serialized = aztecGetPrivateEventsSerializer.result.serialize(METHOD, result);
195
+ expect(serialized.method).toBe(METHOD);
196
+
197
+ const deserialized = aztecGetPrivateEventsSerializer.result.deserialize(METHOD, serialized);
198
+ expect(deserialized).toEqual([]);
199
+ });
200
+
201
+ it('should serialize and deserialize result with multiple events', () => {
202
+ const result = [
203
+ { id: 1, data: 'event1' },
204
+ { id: 2, data: 'event2' },
205
+ { id: 3, data: 'event3' },
206
+ ];
207
+
208
+ const serialized = aztecGetPrivateEventsSerializer.result.serialize(METHOD, result);
209
+ expect(serialized.method).toBe(METHOD);
210
+
211
+ const deserialized = aztecGetPrivateEventsSerializer.result.deserialize(METHOD, serialized);
212
+ expect(deserialized).toEqual(result);
213
+ });
214
+ });
215
+
216
+ describe('aztec_getPublicEvents result handling', () => {
217
+ const METHOD = 'aztec_getPublicEvents';
218
+
219
+ it('should serialize and deserialize empty result array', () => {
220
+ const result: unknown[] = [];
221
+ const serialized = aztecGetPublicEventsSerializer.result.serialize(METHOD, result);
222
+ expect(serialized.method).toBe(METHOD);
223
+
224
+ const deserialized = aztecGetPublicEventsSerializer.result.deserialize(METHOD, serialized);
225
+ expect(deserialized).toEqual([]);
226
+ });
227
+
228
+ it('should serialize and deserialize result with multiple events', () => {
229
+ const result = [
230
+ { id: 1, data: 'event1' },
231
+ { id: 2, data: 'event2' },
232
+ { id: 3, data: 'event3' },
233
+ ];
234
+
235
+ const serialized = aztecGetPublicEventsSerializer.result.serialize(METHOD, result);
236
+ expect(serialized.method).toBe(METHOD);
237
+
238
+ const deserialized = aztecGetPublicEventsSerializer.result.deserialize(METHOD, serialized);
239
+ expect(deserialized).toEqual(result);
240
+ });
241
+ });
242
+
243
+ describe('Edge Cases', () => {
244
+ it('should handle invalid JSON in deserialization', () => {
245
+ const METHOD = 'aztec_getPublicLogs';
246
+ const invalidData = { method: METHOD, serialized: 'invalid json' };
247
+
248
+ expect(() => {
249
+ aztecGetPublicLogsSerializer.params.deserialize(METHOD, invalidData);
250
+ }).toThrow();
251
+ });
252
+
253
+ it('should handle malformed event selector', () => {
254
+ const METHOD = 'aztec_getPublicEvents';
255
+ const params = {
256
+ event: {
257
+ // Create an invalid event selector by extending a valid one
258
+ eventSelector: Object.create(EventSelector.fromString('0x12345678'), {
259
+ toString: {
260
+ value: () => {
261
+ throw new Error('Invalid selector');
262
+ },
263
+ },
264
+ }),
265
+ abiType: { kind: 'field' } as AbiType,
266
+ fieldNames: ['field1'],
267
+ },
268
+ from: 0,
269
+ limit: 10,
270
+ };
271
+
272
+ expect(() => {
273
+ aztecGetPublicEventsSerializer.params.serialize(METHOD, params);
274
+ }).toThrow();
275
+ });
276
+
277
+ it('should handle undefined filter fields', async () => {
278
+ const METHOD = 'aztec_getPublicLogs';
279
+ const filter: LogFilter = {
280
+ fromBlock: undefined,
281
+ toBlock: undefined,
282
+ };
283
+
284
+ const params = { filter };
285
+ const serialized = aztecGetPublicLogsSerializer.params.serialize(METHOD, params);
286
+ const deserialized = aztecGetPublicLogsSerializer.params.deserialize(METHOD, serialized);
287
+
288
+ expect(deserialized.filter.fromBlock).toBeUndefined();
289
+ expect(deserialized.filter.toBlock).toBeUndefined();
290
+ });
291
+ });
119
292
  });