@walletmesh/aztec-rpc-wallet 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/aztecRemoteWallet.d.ts +4 -8
  4. package/dist/aztecRemoteWallet.d.ts.map +1 -1
  5. package/dist/aztecRemoteWallet.js +5 -29
  6. package/dist/contractArtifactCache.d.ts.map +1 -1
  7. package/dist/contractArtifactCache.js +20 -9
  8. package/dist/handlers/aztecAccountWallet.d.ts.map +1 -1
  9. package/dist/handlers/aztecAccountWallet.js +11 -44
  10. package/dist/serializers/account.d.ts +16 -16
  11. package/dist/serializers/account.d.ts.map +1 -1
  12. package/dist/serializers/account.js +43 -43
  13. package/dist/serializers/contract.d.ts +22 -76
  14. package/dist/serializers/contract.d.ts.map +1 -1
  15. package/dist/serializers/contract.js +68 -120
  16. package/dist/serializers/index.d.ts +0 -4
  17. package/dist/serializers/index.d.ts.map +1 -1
  18. package/dist/serializers/index.js +15 -20
  19. package/dist/serializers/log.d.ts +16 -16
  20. package/dist/serializers/log.d.ts.map +1 -1
  21. package/dist/serializers/log.js +43 -43
  22. package/dist/serializers/note.d.ts +12 -12
  23. package/dist/serializers/note.d.ts.map +1 -1
  24. package/dist/serializers/note.js +32 -32
  25. package/dist/serializers/transaction.d.ts +25 -26
  26. package/dist/serializers/transaction.d.ts.map +1 -1
  27. package/dist/serializers/transaction.js +92 -44
  28. package/dist/types.d.ts +7 -30
  29. package/dist/types.d.ts.map +1 -1
  30. package/dist/types.js +1 -1
  31. package/docs/README.md +264 -0
  32. package/docs/classes/AztecChainProvider.md +553 -0
  33. package/docs/classes/AztecChainWallet.md +409 -0
  34. package/docs/classes/AztecProvider.md +1112 -0
  35. package/docs/classes/AztecWalletError.md +213 -0
  36. package/docs/classes/ContractArtifactCache.md +81 -0
  37. package/docs/globals.md +34 -0
  38. package/docs/interfaces/AztecWalletBaseMethodMap.md +135 -0
  39. package/docs/interfaces/AztecWalletEventMap.md +17 -0
  40. package/docs/interfaces/AztecWalletMethodMap.md +1012 -0
  41. package/docs/type-aliases/AztecChainId.md +11 -0
  42. package/docs/type-aliases/AztecChainWalletMiddleware.md +13 -0
  43. package/docs/type-aliases/AztecWalletContext.md +29 -0
  44. package/docs/type-aliases/AztecWalletMethodHandler.md +37 -0
  45. package/docs/type-aliases/AztecWalletMiddleware.md +13 -0
  46. package/docs/type-aliases/AztecWalletRouterClient.md +13 -0
  47. package/docs/type-aliases/TransactionFunctionCall.md +33 -0
  48. package/docs/type-aliases/TransactionParams.md +27 -0
  49. package/docs/variables/AztecWalletErrorMap.md +13 -0
  50. package/package.json +9 -9
  51. package/src/aztecRemoteWallet.test.ts +22 -61
  52. package/src/aztecRemoteWallet.ts +8 -35
  53. package/src/chainProvider.test.ts +117 -38
  54. package/src/contractArtifactCache.test.ts +28 -45
  55. package/src/contractArtifactCache.ts +20 -10
  56. package/src/handlers/aztecAccountWallet.test.ts +12 -86
  57. package/src/handlers/aztecAccountWallet.ts +19 -77
  58. package/src/provider.test.ts +0 -2
  59. package/src/serializers/account.test.ts +19 -20
  60. package/src/serializers/account.ts +52 -52
  61. package/src/serializers/contract.test.ts +4 -140
  62. package/src/serializers/contract.ts +93 -166
  63. package/src/serializers/index.test.ts +30 -28
  64. package/src/serializers/index.ts +15 -21
  65. package/src/serializers/log.test.ts +42 -48
  66. package/src/serializers/log.ts +54 -54
  67. package/src/serializers/note.test.ts +43 -16
  68. package/src/serializers/note.ts +39 -39
  69. package/src/serializers/transaction.test.ts +48 -41
  70. package/src/serializers/transaction.ts +146 -58
  71. package/src/types.ts +7 -7
  72. package/src/wallet.test.ts +3 -3
  73. package/dist/serializers/transaction-utils.d.ts +0 -51
  74. package/dist/serializers/transaction-utils.d.ts.map +0 -1
  75. package/dist/serializers/transaction-utils.js +0 -103
  76. package/src/serializers/transaction-utils.ts +0 -174
@@ -1,17 +1,40 @@
1
1
  import type { AztecWalletMethodMap } from '../types.js';
2
2
  import type { JSONRPCSerializedData, JSONRPCSerializer } from '@walletmesh/jsonrpc';
3
- import { TxProvingResult } from '@aztec/circuit-types';
4
3
  import {
4
+ FunctionCall,
5
5
  PrivateExecutionResult,
6
6
  TxEffect,
7
7
  TxSimulationResult,
8
8
  inBlockSchemaFor,
9
9
  TxHash,
10
+ TxProvingResult,
10
11
  } from '@aztec/circuit-types';
11
- import { TxExecutionRequest, TxReceipt, Tx, AztecAddress } from '@aztec/aztec.js';
12
- import { serializeExecutionRequestInit, deserializeExecutionRequestInit } from './transaction-utils.js';
12
+ import { GasSettings } from '@aztec/circuits.js';
13
+ import {
14
+ AuthWitness,
15
+ AztecAddress,
16
+ Fr,
17
+ FunctionSelector,
18
+ HashedValues,
19
+ NoFeePaymentMethod,
20
+ TxExecutionRequest,
21
+ TxReceipt,
22
+ Tx,
23
+ } from '@aztec/aztec.js';
24
+ import { AbiTypeSchema, type FunctionType } from '@aztec/foundation/abi';
13
25
 
14
26
  import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
27
+ import type { ExecutionRequestInit, FeeOptions } from '@aztec/aztec.js/entrypoint';
28
+
29
+ interface SerializedFunctionCall {
30
+ name: string;
31
+ to: string;
32
+ selector: string;
33
+ type: string;
34
+ isStatic: boolean;
35
+ args: string[];
36
+ returnTypes: string[];
37
+ }
15
38
 
16
39
  /**
17
40
  * Serializer for the aztec_createTxExecutionRequest RPC method.
@@ -25,34 +48,96 @@ export class AztecCreateTxExecutionRequestSerializer
25
48
  >
26
49
  {
27
50
  params = {
28
- serialize: (
51
+ serialize: async (
29
52
  method: string,
30
53
  value: AztecWalletMethodMap['aztec_createTxExecutionRequest']['params'],
31
- ): JSONRPCSerializedData => {
54
+ ): Promise<JSONRPCSerializedData> => {
32
55
  const { exec } = value;
56
+
57
+ const calls = exec.calls.map((call: FunctionCall) => {
58
+ return {
59
+ name: call.name,
60
+ to: jsonStringify(call.to),
61
+ selector: jsonStringify(call.selector),
62
+ type: call.type,
63
+ isStatic: call.isStatic,
64
+ args: call.args.map((arg) => jsonStringify(arg)),
65
+ returnTypes: call.returnTypes.map((r) => jsonStringify(r)),
66
+ };
67
+ });
68
+ const authWitnesses = exec.authWitnesses ? exec.authWitnesses.map((w) => jsonStringify(w)) : undefined;
69
+ const hashedArguments = exec.hashedArguments
70
+ ? exec.hashedArguments.map((h) => jsonStringify(h))
71
+ : undefined;
72
+ const fee = { gasSettings: jsonStringify(exec.fee.gasSettings) };
73
+ const nonce = exec.nonce ? jsonStringify(exec.nonce) : undefined;
74
+
33
75
  return {
34
76
  method,
35
- serialized: serializeExecutionRequestInit(exec),
77
+ serialized: JSON.stringify({
78
+ calls,
79
+ fee,
80
+ authWitnesses,
81
+ hashedArguments,
82
+ nonce,
83
+ cancellable: exec.cancellable,
84
+ }),
36
85
  };
37
86
  },
38
- deserialize: (
87
+ deserialize: async (
39
88
  _method: string,
40
89
  data: JSONRPCSerializedData,
41
- ): AztecWalletMethodMap['aztec_createTxExecutionRequest']['params'] => {
42
- const exec = deserializeExecutionRequestInit(data.serialized);
90
+ ): Promise<AztecWalletMethodMap['aztec_createTxExecutionRequest']['params']> => {
91
+ const parsed = JSON.parse(data.serialized);
92
+
93
+ const calls: FunctionCall[] = await Promise.all(
94
+ parsed.calls.map(async (call: SerializedFunctionCall) => {
95
+ return new FunctionCall(
96
+ call.name,
97
+ await jsonParseWithSchema(call.to, AztecAddress.schema),
98
+ await jsonParseWithSchema(call.selector, FunctionSelector.schema),
99
+ call.type as FunctionType,
100
+ call.isStatic,
101
+ await Promise.all(call.args.map(async (arg: string) => jsonParseWithSchema(arg, Fr.schema))),
102
+ await Promise.all(
103
+ call.returnTypes.map(async (t: string) => jsonParseWithSchema(t, AbiTypeSchema)),
104
+ ),
105
+ );
106
+ }),
107
+ );
108
+ const authWitnesses = parsed.authWitnesses
109
+ ? parsed.authWitnesses.map(async (w: string) => await jsonParseWithSchema(w, AuthWitness.schema))
110
+ : undefined;
111
+ const hashedArguments = parsed.hashedArguments
112
+ ? parsed.hashedArguments.map(async (h: string) => await jsonParseWithSchema(h, HashedValues.schema))
113
+ : undefined;
114
+ const cancellable = parsed.cancellable;
115
+ const nonce = parsed.nonce ? await jsonParseWithSchema(parsed.nonce, Fr.schema) : undefined;
116
+
117
+ const fee: FeeOptions = {
118
+ paymentMethod: new NoFeePaymentMethod(), // Default, caller should override
119
+ gasSettings: await jsonParseWithSchema(parsed.fee.gasSettings, GasSettings.schema),
120
+ };
121
+
122
+ const exec: ExecutionRequestInit = { calls, fee };
123
+ if (authWitnesses) exec.authWitnesses = authWitnesses;
124
+ if (hashedArguments) exec.hashedArguments = hashedArguments;
125
+ if (nonce) exec.nonce = nonce;
126
+ if (cancellable) exec.cancellable = cancellable;
127
+
43
128
  return { exec };
44
129
  },
45
130
  };
46
131
 
47
132
  result = {
48
- serialize: (method: string, value: TxExecutionRequest): JSONRPCSerializedData => {
133
+ serialize: async (method: string, value: TxExecutionRequest): Promise<JSONRPCSerializedData> => {
49
134
  return {
50
135
  method,
51
136
  serialized: jsonStringify(value),
52
137
  };
53
138
  },
54
- deserialize: (_method: string, data: JSONRPCSerializedData): TxExecutionRequest => {
55
- return jsonParseWithSchema(data.serialized, TxExecutionRequest.schema);
139
+ deserialize: async (_method: string, data: JSONRPCSerializedData): Promise<TxExecutionRequest> => {
140
+ return await jsonParseWithSchema(data.serialized, TxExecutionRequest.schema);
56
141
  },
57
142
  };
58
143
  }
@@ -69,10 +154,10 @@ export class AztecProveTxSerializer
69
154
  >
70
155
  {
71
156
  params = {
72
- serialize: (
157
+ serialize: async (
73
158
  method: string,
74
159
  value: AztecWalletMethodMap['aztec_proveTx']['params'],
75
- ): JSONRPCSerializedData => {
160
+ ): Promise<JSONRPCSerializedData> => {
76
161
  const { txRequest, privateExecutionResult } = value;
77
162
  return {
78
163
  method,
@@ -82,27 +167,30 @@ export class AztecProveTxSerializer
82
167
  }),
83
168
  };
84
169
  },
85
- deserialize: (
170
+ deserialize: async (
86
171
  _method: string,
87
172
  data: JSONRPCSerializedData,
88
- ): AztecWalletMethodMap['aztec_proveTx']['params'] => {
173
+ ): Promise<AztecWalletMethodMap['aztec_proveTx']['params']> => {
89
174
  const { txRequest, privateExecutionResult } = JSON.parse(data.serialized);
90
175
  return {
91
- txRequest: jsonParseWithSchema(txRequest, TxExecutionRequest.schema),
92
- privateExecutionResult: jsonParseWithSchema(privateExecutionResult, PrivateExecutionResult.schema),
176
+ txRequest: await jsonParseWithSchema(txRequest, TxExecutionRequest.schema),
177
+ privateExecutionResult: await jsonParseWithSchema(
178
+ privateExecutionResult,
179
+ PrivateExecutionResult.schema,
180
+ ),
93
181
  };
94
182
  },
95
183
  };
96
184
 
97
185
  result = {
98
- serialize: (method: string, value: TxProvingResult): JSONRPCSerializedData => {
186
+ serialize: async (method: string, value: TxProvingResult): Promise<JSONRPCSerializedData> => {
99
187
  return {
100
188
  method,
101
189
  serialized: jsonStringify(value),
102
190
  };
103
191
  },
104
- deserialize: (_method: string, data: JSONRPCSerializedData): TxProvingResult => {
105
- return jsonParseWithSchema(data.serialized, TxProvingResult.schema);
192
+ deserialize: async (_method: string, data: JSONRPCSerializedData): Promise<TxProvingResult> => {
193
+ return await jsonParseWithSchema(data.serialized, TxProvingResult.schema);
106
194
  },
107
195
  };
108
196
  }
@@ -119,39 +207,39 @@ export class AztecSendTxSerializer
119
207
  >
120
208
  {
121
209
  params = {
122
- serialize: (
210
+ serialize: async (
123
211
  method: string,
124
212
  value: AztecWalletMethodMap['aztec_sendTx']['params'],
125
- ): JSONRPCSerializedData => {
213
+ ): Promise<JSONRPCSerializedData> => {
126
214
  const { tx } = value;
127
215
  return {
128
216
  method,
129
217
  serialized: jsonStringify(tx),
130
218
  };
131
219
  },
132
- deserialize: (
220
+ deserialize: async (
133
221
  _method: string,
134
222
  data: JSONRPCSerializedData,
135
- ): AztecWalletMethodMap['aztec_sendTx']['params'] => {
136
- return { tx: jsonParseWithSchema(data.serialized, Tx.schema) };
223
+ ): Promise<AztecWalletMethodMap['aztec_sendTx']['params']> => {
224
+ return { tx: await jsonParseWithSchema(data.serialized, Tx.schema) };
137
225
  },
138
226
  };
139
227
 
140
228
  result = {
141
- serialize: (
229
+ serialize: async (
142
230
  method: string,
143
231
  value: AztecWalletMethodMap['aztec_sendTx']['result'],
144
- ): JSONRPCSerializedData => {
232
+ ): Promise<JSONRPCSerializedData> => {
145
233
  return {
146
234
  method,
147
235
  serialized: jsonStringify(value),
148
236
  };
149
237
  },
150
- deserialize: (
238
+ deserialize: async (
151
239
  _method: string,
152
240
  data: JSONRPCSerializedData,
153
- ): AztecWalletMethodMap['aztec_sendTx']['result'] => {
154
- return jsonParseWithSchema(data.serialized, TxHash.schema);
241
+ ): Promise<AztecWalletMethodMap['aztec_sendTx']['result']> => {
242
+ return await jsonParseWithSchema(data.serialized, TxHash.schema);
155
243
  },
156
244
  };
157
245
  }
@@ -168,40 +256,40 @@ export class AztecGetTxEffectSerializer
168
256
  >
169
257
  {
170
258
  params = {
171
- serialize: (
259
+ serialize: async (
172
260
  method: string,
173
261
  value: AztecWalletMethodMap['aztec_getTxEffect']['params'],
174
- ): JSONRPCSerializedData => {
262
+ ): Promise<JSONRPCSerializedData> => {
175
263
  const { txHash } = value;
176
264
  return {
177
265
  method,
178
266
  serialized: jsonStringify(txHash),
179
267
  };
180
268
  },
181
- deserialize: (
269
+ deserialize: async (
182
270
  _method: string,
183
271
  data: JSONRPCSerializedData,
184
- ): AztecWalletMethodMap['aztec_getTxEffect']['params'] => {
185
- const txHash = jsonParseWithSchema(data.serialized, TxHash.schema);
272
+ ): Promise<AztecWalletMethodMap['aztec_getTxEffect']['params']> => {
273
+ const txHash = await jsonParseWithSchema(data.serialized, TxHash.schema);
186
274
  return { txHash };
187
275
  },
188
276
  };
189
277
 
190
278
  result = {
191
- serialize: (
279
+ serialize: async (
192
280
  method: string,
193
281
  value: AztecWalletMethodMap['aztec_getTxEffect']['result'],
194
- ): JSONRPCSerializedData => {
282
+ ): Promise<JSONRPCSerializedData> => {
195
283
  return {
196
284
  method,
197
285
  serialized: jsonStringify(value),
198
286
  };
199
287
  },
200
- deserialize: (
288
+ deserialize: async (
201
289
  _method: string,
202
290
  data: JSONRPCSerializedData,
203
- ): AztecWalletMethodMap['aztec_getTxEffect']['result'] => {
204
- return jsonParseWithSchema(data.serialized, inBlockSchemaFor(TxEffect.schema));
291
+ ): Promise<AztecWalletMethodMap['aztec_getTxEffect']['result']> => {
292
+ return await jsonParseWithSchema(data.serialized, inBlockSchemaFor(TxEffect.schema));
205
293
  },
206
294
  };
207
295
  }
@@ -218,34 +306,34 @@ export class AztecGetTxReceiptSerializer
218
306
  >
219
307
  {
220
308
  params = {
221
- serialize: (
309
+ serialize: async (
222
310
  method: string,
223
311
  value: AztecWalletMethodMap['aztec_getTxReceipt']['params'],
224
- ): JSONRPCSerializedData => {
312
+ ): Promise<JSONRPCSerializedData> => {
225
313
  const { txHash } = value;
226
314
  return {
227
315
  method,
228
316
  serialized: jsonStringify(txHash),
229
317
  };
230
318
  },
231
- deserialize: (
319
+ deserialize: async (
232
320
  _method: string,
233
321
  data: JSONRPCSerializedData,
234
- ): AztecWalletMethodMap['aztec_getTxReceipt']['params'] => {
235
- const txHash = jsonParseWithSchema(data.serialized, TxHash.schema);
322
+ ): Promise<AztecWalletMethodMap['aztec_getTxReceipt']['params']> => {
323
+ const txHash = await jsonParseWithSchema(data.serialized, TxHash.schema);
236
324
  return { txHash };
237
325
  },
238
326
  };
239
327
 
240
328
  result = {
241
- serialize: (method: string, value: TxReceipt): JSONRPCSerializedData => {
329
+ serialize: async (method: string, value: TxReceipt): Promise<JSONRPCSerializedData> => {
242
330
  return {
243
331
  method,
244
332
  serialized: jsonStringify(value),
245
333
  };
246
334
  },
247
- deserialize: (_method: string, data: JSONRPCSerializedData): TxReceipt => {
248
- return jsonParseWithSchema(data.serialized, TxReceipt.schema);
335
+ deserialize: async (_method: string, data: JSONRPCSerializedData): Promise<TxReceipt> => {
336
+ return await jsonParseWithSchema(data.serialized, TxReceipt.schema);
249
337
  },
250
338
  };
251
339
  }
@@ -262,10 +350,10 @@ export class AztecSimulateTxSerializer
262
350
  >
263
351
  {
264
352
  params = {
265
- serialize: (
353
+ serialize: async (
266
354
  method: string,
267
355
  value: AztecWalletMethodMap['aztec_simulateTx']['params'],
268
- ): JSONRPCSerializedData => {
356
+ ): Promise<JSONRPCSerializedData> => {
269
357
  const { txRequest, simulatePublic, msgSender, skipTxValidation, enforceFeePayment, profile } = value;
270
358
  return {
271
359
  method,
@@ -279,16 +367,16 @@ export class AztecSimulateTxSerializer
279
367
  }),
280
368
  };
281
369
  },
282
- deserialize: (
370
+ deserialize: async (
283
371
  _method: string,
284
372
  data: JSONRPCSerializedData,
285
- ): AztecWalletMethodMap['aztec_simulateTx']['params'] => {
373
+ ): Promise<AztecWalletMethodMap['aztec_simulateTx']['params']> => {
286
374
  const { txRequest, simulatePublic, msgSender, skipTxValidation, enforceFeePayment, profile } =
287
375
  JSON.parse(data.serialized);
288
376
  return {
289
- txRequest: jsonParseWithSchema(txRequest, TxExecutionRequest.schema),
377
+ txRequest: await jsonParseWithSchema(txRequest, TxExecutionRequest.schema),
290
378
  simulatePublic,
291
- msgSender: jsonParseWithSchema(msgSender, AztecAddress.schema),
379
+ msgSender: await jsonParseWithSchema(msgSender, AztecAddress.schema),
292
380
  skipTxValidation,
293
381
  enforceFeePayment,
294
382
  profile,
@@ -297,14 +385,14 @@ export class AztecSimulateTxSerializer
297
385
  };
298
386
 
299
387
  result = {
300
- serialize: (method: string, value: TxSimulationResult): JSONRPCSerializedData => {
388
+ serialize: async (method: string, value: TxSimulationResult): Promise<JSONRPCSerializedData> => {
301
389
  return {
302
390
  method,
303
391
  serialized: jsonStringify(value),
304
392
  };
305
393
  },
306
- deserialize: (_method: string, data: JSONRPCSerializedData): TxSimulationResult => {
307
- return jsonParseWithSchema(data.serialized, TxSimulationResult.schema);
394
+ deserialize: async (_method: string, data: JSONRPCSerializedData): Promise<TxSimulationResult> => {
395
+ return await jsonParseWithSchema(data.serialized, TxSimulationResult.schema);
308
396
  },
309
397
  };
310
398
  }
package/src/types.ts CHANGED
@@ -2,7 +2,6 @@ import type {
2
2
  AuthWitness,
3
3
  AztecAddress,
4
4
  ContractArtifact,
5
- ContractClassWithId,
6
5
  ContractInstanceWithAddress,
7
6
  ExtendedNote,
8
7
  Fr,
@@ -35,6 +34,8 @@ import type {
35
34
  TxSimulationResult,
36
35
  GetPublicLogsResponse,
37
36
  GetContractClassLogsResponse,
37
+ ContractMetadata,
38
+ ContractClassMetadata,
38
39
  } from '@aztec/circuit-types';
39
40
  import type { GasFees, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
40
41
  import type { JSONRPCEventMap, JSONRPCMiddleware } from '@walletmesh/jsonrpc';
@@ -213,12 +214,11 @@ export interface AztecWalletMethodMap extends AztecWalletBaseMethodMap {
213
214
  /* Contracts */
214
215
 
215
216
  aztec_getContracts: { result: AztecAddress[] };
216
- aztec_getContractInstance: { params: { address: AztecAddress }; result: ContractInstanceWithAddress };
217
- aztec_getContractClass: { params: { id: Fr }; result: ContractClassWithId };
218
- aztec_getContractArtifact: { params: { id: Fr }; result: ContractArtifact };
219
- aztec_isContractClassPubliclyRegistered: { params: { id: Fr }; result: boolean };
220
- aztec_isContractPubliclyDeployed: { params: { address: AztecAddress }; result: boolean };
221
- aztec_isContractInitialized: { params: { address: AztecAddress }; result: boolean };
217
+ aztec_getContractMetadata: { params: { address: AztecAddress }; result: ContractMetadata };
218
+ aztec_getContractClassMetadata: {
219
+ params: { id: Fr; includeArtifact?: boolean };
220
+ result: ContractClassMetadata;
221
+ };
222
222
 
223
223
  /**
224
224
  * Registers a contract instance in the user's PXE.
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it, vi, beforeEach } from 'vitest';
2
- import type { AccountWallet, PXE, TxHash } from '@aztec/aztec.js';
2
+ import type { AccountWallet, PXE } from '@aztec/aztec.js';
3
3
  import { JSONRPCWalletClient } from '@walletmesh/router';
4
4
  import { AztecChainWallet } from './wallet.js';
5
5
  import { ContractArtifactCache } from './contractArtifactCache.js';
@@ -36,7 +36,7 @@ describe('AztecChainWallet', () => {
36
36
  aztecWallet = new AztecChainWallet(pxe, wallet, transport);
37
37
 
38
38
  // Setup fallback handler and serializer
39
- const mockHandler = vi.fn().mockImplementation(async (context, method, params) => {
39
+ const mockHandler = vi.fn().mockImplementation(async (context, method, _params) => {
40
40
  if (!isAztecWalletContext(context)) {
41
41
  throw new AztecWalletError('unknownInternalError', 'Invalid context');
42
42
  }
@@ -249,7 +249,7 @@ describe('AztecChainWallet', () => {
249
249
  };
250
250
 
251
251
  // Setup request handler to throw error for invalid method
252
- const handleRequest = async (msg: unknown) => {
252
+ const handleRequest = async (_msg: unknown) => {
253
253
  throw new AztecWalletError('invalidRequest', 'Invalid method');
254
254
  };
255
255
 
@@ -1,51 +0,0 @@
1
- /**
2
- * @module transaction-utils
3
- * Utilities for serializing and deserializing Aztec transaction execution requests.
4
- * These utilities handle the conversion between native Aztec types and JSON-RPC compatible formats.
5
- */
6
- import type { ExecutionRequestInit } from '@aztec/aztec.js/entrypoint';
7
- /**
8
- * Serializes an ExecutionRequestInit object to a string for JSON-RPC transport.
9
- * This function converts a native Aztec transaction execution request into a format
10
- * that can be safely transmitted over JSON-RPC, handling the conversion of complex
11
- * types like addresses, field elements, and function selectors to strings.
12
- *
13
- * Note: The fee payment method is not serialized as it contains async methods.
14
- * The deserializer will use a default NoFeePaymentMethod which should be replaced
15
- * by the caller with an appropriate implementation.
16
- *
17
- * @param init - The ExecutionRequestInit object to serialize, containing:
18
- * - calls: Array of function calls to execute
19
- * - fee: Gas settings and payment method
20
- * - authWitnesses: Optional authentication proofs
21
- * - hashedArguments: Optional pre-hashed arguments
22
- * - nonce: Optional transaction nonce
23
- * - cancellable: Optional cancellation flag
24
- * @returns A JSON string representation of the serialized data, with all complex
25
- * Aztec types converted to string representations
26
- * @throws If any of the complex types cannot be serialized
27
- */
28
- export declare function serializeExecutionRequestInit(init: ExecutionRequestInit): string;
29
- /**
30
- * Deserializes a string into an ExecutionRequestInit object for use in the Aztec protocol.
31
- * This function reconstructs a native Aztec transaction execution request from its
32
- * JSON-RPC serialized form, converting string representations back into their
33
- * appropriate Aztec types.
34
- *
35
- * Note: A default NoFeePaymentMethod is used for the fee payment method.
36
- * The caller should override this with the appropriate implementation based on
37
- * their fee payment requirements.
38
- *
39
- * @param data - The serialized string data containing:
40
- * - calls: Array of serialized function calls
41
- * - fee: Serialized gas settings
42
- * - authWitnesses: Optional serialized authentication proofs
43
- * - hashedArguments: Optional serialized hashed arguments
44
- * - nonce: Optional serialized nonce
45
- * - cancellable: Optional cancellation flag
46
- * @returns The deserialized ExecutionRequestInit object with all string representations
47
- * converted back to their native Aztec types
48
- * @throws If any of the serialized data cannot be properly deserialized into valid Aztec types
49
- */
50
- export declare function deserializeExecutionRequestInit(data: string): ExecutionRequestInit;
51
- //# sourceMappingURL=transaction-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction-utils.d.ts","sourceRoot":"","sources":["../../src/serializers/transaction-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAiDvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAiChF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAsClF"}
@@ -1,103 +0,0 @@
1
- /**
2
- * @module transaction-utils
3
- * Utilities for serializing and deserializing Aztec transaction execution requests.
4
- * These utilities handle the conversion between native Aztec types and JSON-RPC compatible formats.
5
- */
6
- import { HashedValues, FunctionCall, AuthWitness } from '@aztec/circuit-types';
7
- import { AztecAddress, Fr, FunctionSelector, GasSettings } from '@aztec/circuits.js';
8
- import { NoFeePaymentMethod } from '@aztec/aztec.js';
9
- /**
10
- * Serializes an ExecutionRequestInit object to a string for JSON-RPC transport.
11
- * This function converts a native Aztec transaction execution request into a format
12
- * that can be safely transmitted over JSON-RPC, handling the conversion of complex
13
- * types like addresses, field elements, and function selectors to strings.
14
- *
15
- * Note: The fee payment method is not serialized as it contains async methods.
16
- * The deserializer will use a default NoFeePaymentMethod which should be replaced
17
- * by the caller with an appropriate implementation.
18
- *
19
- * @param init - The ExecutionRequestInit object to serialize, containing:
20
- * - calls: Array of function calls to execute
21
- * - fee: Gas settings and payment method
22
- * - authWitnesses: Optional authentication proofs
23
- * - hashedArguments: Optional pre-hashed arguments
24
- * - nonce: Optional transaction nonce
25
- * - cancellable: Optional cancellation flag
26
- * @returns A JSON string representation of the serialized data, with all complex
27
- * Aztec types converted to string representations
28
- * @throws If any of the complex types cannot be serialized
29
- */
30
- export function serializeExecutionRequestInit(init) {
31
- const serialized = {
32
- calls: init.calls.map((call) => ({
33
- name: call.name,
34
- to: call.to.toString(),
35
- selector: call.selector.toString(),
36
- type: call.type,
37
- isStatic: call.isStatic,
38
- args: call.args.map((arg) => arg.toString()),
39
- returnTypes: call.returnTypes,
40
- })),
41
- fee: {
42
- gasSettings: init.fee.gasSettings.toBuffer().toString('base64'),
43
- },
44
- };
45
- if (init.authWitnesses) {
46
- serialized.authWitnesses = init.authWitnesses.map((w) => w.toString());
47
- }
48
- if (init.hashedArguments) {
49
- serialized.hashedArguments = init.hashedArguments.map((ha) => ha.toBuffer().toString('base64'));
50
- }
51
- if (init.nonce) {
52
- serialized.nonce = init.nonce.toString();
53
- }
54
- if (init.cancellable !== undefined) {
55
- serialized.cancellable = init.cancellable;
56
- }
57
- return JSON.stringify(serialized);
58
- }
59
- /**
60
- * Deserializes a string into an ExecutionRequestInit object for use in the Aztec protocol.
61
- * This function reconstructs a native Aztec transaction execution request from its
62
- * JSON-RPC serialized form, converting string representations back into their
63
- * appropriate Aztec types.
64
- *
65
- * Note: A default NoFeePaymentMethod is used for the fee payment method.
66
- * The caller should override this with the appropriate implementation based on
67
- * their fee payment requirements.
68
- *
69
- * @param data - The serialized string data containing:
70
- * - calls: Array of serialized function calls
71
- * - fee: Serialized gas settings
72
- * - authWitnesses: Optional serialized authentication proofs
73
- * - hashedArguments: Optional serialized hashed arguments
74
- * - nonce: Optional serialized nonce
75
- * - cancellable: Optional cancellation flag
76
- * @returns The deserialized ExecutionRequestInit object with all string representations
77
- * converted back to their native Aztec types
78
- * @throws If any of the serialized data cannot be properly deserialized into valid Aztec types
79
- */
80
- export function deserializeExecutionRequestInit(data) {
81
- const parsed = JSON.parse(data);
82
- const result = {
83
- calls: parsed.calls.map((call) => new FunctionCall(call.name, AztecAddress.fromString(call.to), FunctionSelector.fromString(call.selector), call.type, call.isStatic, call.args.map((arg) => Fr.fromString(arg)), call.returnTypes)),
84
- fee: {
85
- gasSettings: GasSettings.fromBuffer(Buffer.from(parsed.fee.gasSettings, 'base64')),
86
- paymentMethod: new NoFeePaymentMethod(), // Default, caller should override
87
- },
88
- };
89
- if (parsed.authWitnesses) {
90
- result.authWitnesses = parsed.authWitnesses.map((w) => AuthWitness.fromString(w));
91
- }
92
- if (parsed.hashedArguments) {
93
- result.hashedArguments = parsed.hashedArguments.map((ha) => HashedValues.fromBuffer(Buffer.from(ha, 'base64')));
94
- }
95
- if (parsed.nonce) {
96
- result.nonce = Fr.fromString(parsed.nonce);
97
- }
98
- if (parsed.cancellable !== undefined) {
99
- result.cancellable = parsed.cancellable;
100
- }
101
- return result;
102
- }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplcnMvdHJhbnNhY3Rpb24tdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUVILE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR3JGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBZ0RyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsSUFBMEI7SUFDdEUsTUFBTSxVQUFVLEdBQW1DO1FBQ2pELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDdEIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO1lBQ2xDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM1QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDOUIsQ0FBQyxDQUFDO1FBQ0gsR0FBRyxFQUFFO1lBQ0gsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFB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