@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.
- package/CHANGELOG.md +6 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/aztecRemoteWallet.d.ts +7 -6
- package/dist/aztecRemoteWallet.d.ts.map +1 -1
- package/dist/aztecRemoteWallet.js +15 -9
- package/dist/handlers/aztecAccountWallet.d.ts.map +1 -1
- package/dist/handlers/aztecAccountWallet.js +22 -22
- package/dist/serializers/account.d.ts +4 -7
- package/dist/serializers/account.d.ts.map +1 -1
- package/dist/serializers/account.js +28 -29
- package/dist/serializers/contract.d.ts +4 -56
- package/dist/serializers/contract.d.ts.map +1 -1
- package/dist/serializers/contract.js +62 -148
- package/dist/serializers/index.d.ts +1 -4
- package/dist/serializers/index.d.ts.map +1 -1
- package/dist/serializers/index.js +12 -12
- package/dist/serializers/log.d.ts +36 -83
- package/dist/serializers/log.d.ts.map +1 -1
- package/dist/serializers/log.js +96 -107
- package/dist/serializers/note.d.ts +14 -17
- package/dist/serializers/note.d.ts.map +1 -1
- package/dist/serializers/note.js +52 -29
- package/dist/serializers/transaction-utils.d.ts +44 -100
- package/dist/serializers/transaction-utils.d.ts.map +1 -1
- package/dist/serializers/transaction-utils.js +82 -118
- package/dist/serializers/transaction.d.ts +3 -6
- package/dist/serializers/transaction.d.ts.map +1 -1
- package/dist/serializers/transaction.js +39 -50
- package/dist/types.d.ts +8 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/package.json +5 -5
- package/src/aztecRemoteWallet.test.ts +33 -29
- package/src/aztecRemoteWallet.ts +25 -14
- package/src/handlers/aztecAccountWallet.test.ts +78 -75
- package/src/handlers/aztecAccountWallet.ts +32 -35
- package/src/serializers/account.test.ts +18 -17
- package/src/serializers/account.ts +31 -49
- package/src/serializers/contract.test.ts +14 -16
- package/src/serializers/contract.ts +75 -164
- package/src/serializers/index.test.ts +20 -8
- package/src/serializers/index.ts +16 -20
- package/src/serializers/log.test.ts +201 -28
- package/src/serializers/log.ts +153 -146
- package/src/serializers/note.test.ts +26 -28
- package/src/serializers/note.ts +60 -36
- package/src/serializers/transaction-utils.ts +135 -211
- package/src/serializers/transaction.test.ts +190 -30
- package/src/serializers/transaction.ts +51 -72
- package/src/types.ts +9 -8
- package/vitest.config.ts +1 -1
- package/dist/serializers/contract-utils.d.ts +0 -40
- package/dist/serializers/contract-utils.d.ts.map +0 -1
- package/dist/serializers/contract-utils.js +0 -102
- package/dist/serializers/core.d.ts +0 -110
- package/dist/serializers/core.d.ts.map +0 -1
- package/dist/serializers/core.js +0 -130
- package/dist/serializers/types.d.ts +0 -49
- package/dist/serializers/types.d.ts.map +0 -1
- package/dist/serializers/types.js +0 -22
- package/src/serializers/contract-utils.ts +0 -104
- package/src/serializers/core.test.ts +0 -56
- package/src/serializers/core.ts +0 -141
- 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
|
-
|
7
|
-
type
|
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
|
-
|
14
|
-
|
15
|
-
|
14
|
+
aztecGetPublicLogsSerializer,
|
15
|
+
aztecGetPrivateEventsSerializer,
|
16
|
+
aztecGetPublicEventsSerializer,
|
17
|
+
aztecGetContractClassLogsSerializer,
|
16
18
|
} from './log.js';
|
17
19
|
|
18
20
|
describe('Log Serializers', () => {
|
19
|
-
|
20
|
-
const
|
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 =
|
39
|
+
const serialized = aztecGetPublicLogsSerializer.params.serialize(METHOD, params);
|
34
40
|
expect(serialized.method).toBe(METHOD);
|
35
41
|
|
36
|
-
const deserialized =
|
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
|
46
|
-
|
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 =
|
57
|
+
const serialized = aztecGetPublicLogsSerializer.result.serialize(METHOD, result);
|
51
58
|
expect(serialized.method).toBe(METHOD);
|
52
59
|
|
53
|
-
const deserialized =
|
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('
|
61
|
-
const METHOD = '
|
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 =
|
85
|
+
const serialized = aztecGetPrivateEventsSerializer.params.serialize(METHOD, params);
|
79
86
|
expect(serialized.method).toBe(METHOD);
|
80
87
|
|
81
|
-
const deserialized =
|
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('
|
92
|
-
const METHOD = '
|
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 =
|
115
|
+
const serialized = aztecGetPublicEventsSerializer.params.serialize(METHOD, params);
|
109
116
|
expect(serialized.method).toBe(METHOD);
|
110
117
|
|
111
|
-
const deserialized =
|
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
|
});
|