@walletmesh/aztec-rpc-wallet 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
  });