@walletmesh/aztec-rpc-wallet 0.4.0 → 0.5.0

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 (94) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/client/aztec-dapp-wallet.d.ts +6 -6
  4. package/dist/client/aztec-dapp-wallet.d.ts.map +1 -1
  5. package/dist/client/aztec-dapp-wallet.js +7 -7
  6. package/dist/client/aztec-router-provider.d.ts +1 -1
  7. package/dist/client/aztec-router-provider.d.ts.map +1 -1
  8. package/dist/client/aztec-router-provider.js +1 -1
  9. package/dist/client/helpers.d.ts.map +1 -1
  10. package/dist/client/helpers.js +2 -2
  11. package/dist/client/register-serializers.js +1 -1
  12. package/dist/index.d.ts +18 -18
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +8 -8
  15. package/dist/types.d.ts +11 -9
  16. package/dist/types.d.ts.map +1 -1
  17. package/dist/types.js +1 -1
  18. package/dist/wallet/create-node.d.ts +1 -1
  19. package/dist/wallet/create-node.d.ts.map +1 -1
  20. package/dist/wallet/create-node.js +1 -1
  21. package/dist/wallet/handlers/account.d.ts +1 -1
  22. package/dist/wallet/handlers/account.d.ts.map +1 -1
  23. package/dist/wallet/handlers/account.js +1 -1
  24. package/dist/wallet/handlers/contract-interaction.d.ts +1 -1
  25. package/dist/wallet/handlers/contract-interaction.d.ts.map +1 -1
  26. package/dist/wallet/handlers/contract-interaction.js +4 -4
  27. package/dist/wallet/handlers/contract.d.ts.map +1 -1
  28. package/dist/wallet/handlers/contract.js +1 -1
  29. package/dist/wallet/handlers/event.d.ts +1 -1
  30. package/dist/wallet/handlers/event.d.ts.map +1 -1
  31. package/dist/wallet/handlers/event.js +1 -1
  32. package/dist/wallet/handlers/index.d.ts.map +1 -1
  33. package/dist/wallet/handlers/index.js +2 -2
  34. package/dist/wallet/handlers/node.d.ts +1 -1
  35. package/dist/wallet/handlers/node.d.ts.map +1 -1
  36. package/dist/wallet/handlers/node.js +1 -1
  37. package/dist/wallet/handlers/senders.d.ts +1 -1
  38. package/dist/wallet/handlers/senders.d.ts.map +1 -1
  39. package/dist/wallet/handlers/senders.js +1 -1
  40. package/dist/wallet/handlers/transaction.d.ts +5 -4
  41. package/dist/wallet/handlers/transaction.d.ts.map +1 -1
  42. package/dist/wallet/handlers/transaction.js +9 -6
  43. package/dist/wallet/serializers.d.ts +1 -1
  44. package/dist/wallet/serializers.d.ts.map +1 -1
  45. package/dist/wallet/serializers.js +25 -25
  46. package/docs/README.md +1 -1
  47. package/docs/classes/AztecDappWallet.md +47 -47
  48. package/docs/classes/AztecRouterProvider.md +4 -4
  49. package/docs/classes/AztecWalletError.md +31 -7
  50. package/docs/classes/ContractArtifactCache.md +4 -4
  51. package/docs/functions/connectAztec.md +2 -2
  52. package/docs/functions/createAztecWallet.md +2 -2
  53. package/docs/functions/createAztecWalletNode.md +2 -2
  54. package/docs/functions/registerAztecSerializers.md +2 -2
  55. package/docs/functions/registerWalletAztecSerializers.md +2 -2
  56. package/docs/globals.md +2 -2
  57. package/docs/interfaces/AztecHandlerContext.md +5 -5
  58. package/docs/interfaces/AztecWalletContext.md +5 -5
  59. package/docs/interfaces/AztecWalletMethodMap.md +41 -37
  60. package/docs/type-aliases/AztecChainId.md +2 -2
  61. package/docs/variables/ALL_AZTEC_METHODS.md +2 -2
  62. package/docs/variables/AztecWalletErrorMap.md +2 -2
  63. package/docs/variables/AztecWalletSerializer.md +2 -2
  64. package/package.json +11 -9
  65. package/src/client/aztec-dapp-wallet.test.ts +8 -6
  66. package/src/client/aztec-dapp-wallet.ts +15 -14
  67. package/src/client/aztec-router-provider.test.ts +2 -2
  68. package/src/client/aztec-router-provider.ts +1 -1
  69. package/src/client/helpers.test.ts +3 -3
  70. package/src/client/helpers.ts +1 -2
  71. package/src/client/register-serializers.ts +1 -1
  72. package/src/contractArtifactCache.test.ts +1 -1
  73. package/src/index.test.ts +1 -1
  74. package/src/index.ts +21 -28
  75. package/src/types.ts +20 -20
  76. package/src/wallet/create-node.test.ts +3 -3
  77. package/src/wallet/create-node.ts +3 -4
  78. package/src/wallet/handlers/account.test.ts +6 -6
  79. package/src/wallet/handlers/account.ts +2 -2
  80. package/src/wallet/handlers/contract-interaction.test.ts +6 -7
  81. package/src/wallet/handlers/contract-interaction.ts +7 -7
  82. package/src/wallet/handlers/contract.test.ts +5 -5
  83. package/src/wallet/handlers/contract.ts +1 -1
  84. package/src/wallet/handlers/event.test.ts +4 -4
  85. package/src/wallet/handlers/event.ts +2 -2
  86. package/src/wallet/handlers/index.ts +1 -1
  87. package/src/wallet/handlers/node.test.ts +5 -6
  88. package/src/wallet/handlers/node.ts +2 -2
  89. package/src/wallet/handlers/senders.test.ts +4 -4
  90. package/src/wallet/handlers/senders.ts +2 -2
  91. package/src/wallet/handlers/transaction.test.ts +22 -13
  92. package/src/wallet/handlers/transaction.ts +10 -7
  93. package/src/wallet/serializers.test.ts +4 -6
  94. package/src/wallet/serializers.ts +44 -42
@@ -1,12 +1,10 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { AztecAddress, Fr, AuthWitness } from '@aztec/aztec.js';
3
1
  import type { ContractArtifact } from '@aztec/aztec.js';
4
- import { FunctionSelector } from '@aztec/stdlib/abi';
5
- import { FunctionType } from '@aztec/stdlib/abi';
6
- import { Capsule, HashedValues } from '@aztec/stdlib/tx';
2
+ import { AuthWitness, AztecAddress, Fr } from '@aztec/aztec.js';
7
3
  import { ExecutionPayload } from '@aztec/entrypoints/payload';
4
+ import { FunctionCall, FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
5
+ import { Capsule, HashedValues } from '@aztec/stdlib/tx';
6
+ import { describe, expect, it } from 'vitest';
8
7
  import { AztecWalletSerializer } from './serializers.js';
9
- import { FunctionCall } from '@aztec/stdlib/abi';
10
8
 
11
9
  describe('ExecutionPayload Serialization', () => {
12
10
  it('should serialize and deserialize ExecutionPayload correctly', async () => {
@@ -19,33 +19,23 @@
19
19
  * to reconstruct complex Aztec objects from their JSON representations.
20
20
  */
21
21
 
22
- import type { AztecWalletMethodMap } from '../types.js';
23
-
24
- import type {
25
- JSONRPCNode,
26
- JSONRPCSerializer,
27
- JSONRPCSerializedData,
28
- JSONRPCParams,
29
- } from '@walletmesh/jsonrpc';
30
- import { JSONRPCError } from '@walletmesh/jsonrpc';
31
-
22
+ import type { NodeInfo } from '@aztec/aztec.js';
32
23
  import {
24
+ AuthWitness,
33
25
  AztecAddress,
34
26
  CompleteAddress,
35
- TxExecutionRequest,
36
27
  Fr,
37
28
  Tx,
29
+ TxExecutionRequest,
38
30
  TxHash,
39
- AuthWitness,
40
31
  } from '@aztec/aztec.js';
41
- import type { NodeInfo } from '@aztec/aztec.js';
42
-
43
32
  import type { IntentAction, IntentInnerHash } from '@aztec/aztec.js/utils';
33
+ import { jsonStringify } from '@aztec/foundation/json-rpc';
34
+ import { createLogger } from '@aztec/foundation/log';
35
+ import type { ZodFor } from '@aztec/foundation/schemas';
44
36
 
45
37
  import { AbiTypeSchema, ContractArtifactSchema, FunctionSelector, FunctionType } from '@aztec/stdlib/abi';
46
- import { schemas } from '@aztec/stdlib/schemas';
47
-
48
- import type { PXEInfo, ContractMetadata, ContractClassMetadata } from '@aztec/stdlib/interfaces/client';
38
+ import { L2Block } from '@aztec/stdlib/block';
49
39
  import {
50
40
  ContractClassWithIdSchema,
51
41
  ContractInstanceWithAddressSchema,
@@ -53,7 +43,8 @@ import {
53
43
  ProtocolContractAddressesSchema,
54
44
  } from '@aztec/stdlib/contract';
55
45
  import { GasFees } from '@aztec/stdlib/gas';
56
- import { L2Block } from '@aztec/stdlib/block';
46
+ import type { ContractClassMetadata, ContractMetadata, PXEInfo } from '@aztec/stdlib/interfaces/client';
47
+ import { schemas } from '@aztec/stdlib/schemas';
57
48
  import {
58
49
  Capsule,
59
50
  HashedValues,
@@ -64,12 +55,15 @@ import {
64
55
  TxSimulationResult,
65
56
  UtilitySimulationResult,
66
57
  } from '@aztec/stdlib/tx';
67
-
68
- import { jsonStringify, jsonParseWithSchema } from '@aztec/foundation/json-rpc';
69
- import { createLogger } from '@aztec/foundation/log';
70
- import type { ZodFor } from '@aztec/foundation/schemas';
71
-
72
- import { z, type ZodTypeAny } from 'zod';
58
+ import type {
59
+ JSONRPCNode,
60
+ JSONRPCParams,
61
+ JSONRPCSerializedData,
62
+ JSONRPCSerializer,
63
+ } from '@walletmesh/jsonrpc';
64
+ import { JSONRPCError } from '@walletmesh/jsonrpc';
65
+ import { type ZodTypeAny, z } from 'zod';
66
+ import type { AztecWalletMethodMap } from '../types.js';
73
67
 
74
68
  // These aren't exported by @aztec/stdlib/interfaces/client, we've copied them here
75
69
  const ContractMetadataSchema = z.object({
@@ -128,13 +122,17 @@ const DeployContractResultSchema = z.object({
128
122
 
129
123
  const logger = createLogger('aztec-rpc-wallet:serializers');
130
124
 
125
+ async function jsonParseWithSchemaAsync<T>(json: string, schema: ZodTypeAny): Promise<T> {
126
+ return schema.parseAsync(JSON.parse(json));
127
+ }
128
+
131
129
  function createResultSerializer<R>(resultSchema?: ZodTypeAny): Pick<JSONRPCSerializer<unknown, R>, 'result'> {
132
130
  return {
133
131
  result: {
134
132
  serialize: async (method: string, value: R) => ({ method, serialized: jsonStringify(value) }),
135
133
  deserialize: async (method: string, data: JSONRPCSerializedData) => {
136
134
  if (resultSchema) {
137
- return await jsonParseWithSchema(data.serialized, resultSchema);
135
+ return await jsonParseWithSchemaAsync(data.serialized, resultSchema);
138
136
  }
139
137
  // If no schema is provided, parse as JSON
140
138
  logger.debug(`Deserializing result for method without schema: ${method}`);
@@ -348,14 +346,12 @@ export const AztecWalletSerializer: JSONRPCSerializer<JSONRPCParams, unknown> =
348
346
  return [];
349
347
  case 'aztec_createAuthWit': {
350
348
  const intentRaw = ensureParam<unknown>(dAppParams, 'intent');
351
- let intentInput: Fr | Buffer | IntentAction | IntentInnerHash;
349
+ let intentInput: Fr | IntentAction | IntentInnerHash;
352
350
  if (
353
351
  typeof intentRaw === 'string' &&
354
352
  (intentRaw.startsWith('0x') || !Number.isNaN(Number(intentRaw)))
355
353
  ) {
356
354
  intentInput = Fr.fromString(intentRaw);
357
- } else if (intentRaw instanceof Buffer) {
358
- intentInput = intentRaw;
359
355
  } else if (typeof intentRaw === 'object' && intentRaw !== null) {
360
356
  intentInput = intentRaw as
361
357
  | import('@aztec/aztec.js/utils').IntentAction
@@ -385,13 +381,13 @@ export const AztecWalletSerializer: JSONRPCSerializer<JSONRPCParams, unknown> =
385
381
  case 'aztec_registerContract': {
386
382
  const instanceRaw = ensureParam<Record<string, unknown>>(dAppParams, 'instance');
387
383
  const artifactRaw = getOptionalParam<Record<string, unknown>>(dAppParams, 'artifact');
388
- const instance = ContractInstanceWithAddressSchema.parse(instanceRaw);
389
- const artifact = artifactRaw ? ContractArtifactSchema.parse(artifactRaw) : undefined;
384
+ const instance = await ContractInstanceWithAddressSchema.parseAsync(instanceRaw);
385
+ const artifact = artifactRaw ? await ContractArtifactSchema.parseAsync(artifactRaw) : undefined;
390
386
  return [instance, artifact];
391
387
  }
392
388
  case 'aztec_registerContractClass': {
393
389
  const artifactRaw = ensureParam<Record<string, unknown>>(dAppParams, 'artifact');
394
- const artifact = ContractArtifactSchema.parse(artifactRaw);
390
+ const artifact = await ContractArtifactSchema.parseAsync(artifactRaw);
395
391
  return [artifact];
396
392
  }
397
393
  case 'aztec_proveTx': {
@@ -402,16 +398,16 @@ export const AztecWalletSerializer: JSONRPCSerializer<JSONRPCParams, unknown> =
402
398
  dAppParams,
403
399
  'privateExecutionResult',
404
400
  );
405
- const txRequest = TxExecutionRequest.schema.parse(txRequestRaw);
401
+ const txRequest = await TxExecutionRequest.schema.parseAsync(txRequestRaw);
406
402
  // Conditionally parse if privateExecutionResultRaw is present
407
403
  const privateExecutionResult = privateExecutionResultRaw
408
- ? PrivateExecutionResult.schema.parse(privateExecutionResultRaw)
404
+ ? await PrivateExecutionResult.schema.parseAsync(privateExecutionResultRaw)
409
405
  : undefined;
410
406
  return [txRequest, privateExecutionResult];
411
407
  }
412
408
  case 'aztec_sendTx': {
413
409
  const txRaw = ensureParam<Record<string, unknown>>(dAppParams, 'tx');
414
- const tx = Tx.schema.parse(txRaw);
410
+ const tx = await Tx.schema.parseAsync(txRaw);
415
411
  return [tx];
416
412
  }
417
413
  case 'aztec_getTxReceipt': {
@@ -421,7 +417,7 @@ export const AztecWalletSerializer: JSONRPCSerializer<JSONRPCParams, unknown> =
421
417
  }
422
418
  case 'aztec_simulateTx': {
423
419
  const txRequestRaw = ensureParam<Record<string, unknown>>(dAppParams, 'txRequest');
424
- const txRequest = TxExecutionRequest.schema.parse(txRequestRaw);
420
+ const txRequest = await TxExecutionRequest.schema.parseAsync(txRequestRaw);
425
421
  const simulatePublic = getOptionalParam<boolean>(dAppParams, 'simulatePublic', 'boolean');
426
422
  const msgSenderStr = getOptionalParam<string>(dAppParams, 'msgSender', 'string');
427
423
  const msgSender = msgSenderStr ? AztecAddress.fromString(msgSenderStr) : undefined;
@@ -433,7 +429,7 @@ export const AztecWalletSerializer: JSONRPCSerializer<JSONRPCParams, unknown> =
433
429
  }
434
430
  case 'aztec_profileTx': {
435
431
  const txRequestRaw = ensureParam<Record<string, unknown>>(dAppParams, 'txRequest');
436
- const txRequest = TxExecutionRequest.schema.parse(txRequestRaw);
432
+ const txRequest = await TxExecutionRequest.schema.parseAsync(txRequestRaw);
437
433
  const profileMode = getOptionalParam<'gates' | 'execution-steps' | 'full'>(
438
434
  dAppParams,
439
435
  'profileMode',
@@ -450,7 +446,7 @@ export const AztecWalletSerializer: JSONRPCSerializer<JSONRPCParams, unknown> =
450
446
  const toStr = ensureParam<string>(dAppParams, 'to', 'string');
451
447
  const to = AztecAddress.fromString(toStr);
452
448
  const authWitsRaw = getOptionalParam<Record<string, unknown>[]>(dAppParams, 'authWits');
453
- const authWits = authWitsRaw?.map((aw) => AuthWitness.schema.parse(aw)); // Use AuthWitness from @aztec/aztec.js
449
+ const authWits = await authWitsRaw?.map((aw) => AuthWitness.schema.parseAsync(aw)); // Use AuthWitness from @aztec/aztec.js
454
450
  const fromStr = getOptionalParam<string>(dAppParams, 'from', 'string');
455
451
  const from = fromStr ? AztecAddress.fromString(fromStr) : undefined;
456
452
  return [functionName, args, to, authWits, from];
@@ -459,7 +455,10 @@ export const AztecWalletSerializer: JSONRPCSerializer<JSONRPCParams, unknown> =
459
455
  const contractAddressStr = ensureParam<string>(dAppParams, 'contractAddress', 'string');
460
456
  const contractAddress = AztecAddress.fromString(contractAddressStr);
461
457
  const eventMetadataRaw = ensureParam<string>(dAppParams, 'eventMetadata');
462
- const eventMetadata = jsonParseWithSchema(eventMetadataRaw, EventMetadataDefinitionSchema);
458
+ const eventMetadata = await jsonParseWithSchemaAsync(
459
+ eventMetadataRaw,
460
+ EventMetadataDefinitionSchema,
461
+ );
463
462
  const fromBlock = ensureParam<number>(dAppParams, 'from', 'number');
464
463
  const numBlocks = ensureParam<number>(dAppParams, 'numBlocks', 'number');
465
464
  const recipientsRaw = ensureParam<string[]>(dAppParams, 'recipients');
@@ -468,23 +467,26 @@ export const AztecWalletSerializer: JSONRPCSerializer<JSONRPCParams, unknown> =
468
467
  }
469
468
  case 'aztec_getPublicEvents': {
470
469
  const eventMetadataRaw = ensureParam<string>(dAppParams, 'eventMetadata');
471
- const eventMetadata = jsonParseWithSchema(eventMetadataRaw, EventMetadataDefinitionSchema);
470
+ const eventMetadata = await jsonParseWithSchemaAsync(
471
+ eventMetadataRaw,
472
+ EventMetadataDefinitionSchema,
473
+ );
472
474
  const fromBlock = ensureParam<number>(dAppParams, 'from', 'number');
473
475
  const limit = ensureParam<number>(dAppParams, 'limit', 'number');
474
476
  return [eventMetadata, fromBlock, limit];
475
477
  }
476
478
  case 'aztec_wmExecuteTx': {
477
479
  const executionPayloadRaw = ensureParam<Record<string, unknown>>(dAppParams, 'executionPayload');
478
- const executionPayload = ExecutionPayloadSchema.parse(executionPayloadRaw);
480
+ const executionPayload = await ExecutionPayloadSchema.parseAsync(executionPayloadRaw);
479
481
  return [executionPayload];
480
482
  }
481
483
  case 'aztec_wmSimulateTx': {
482
484
  const executionPayloadRaw = ensureParam<Record<string, unknown>>(dAppParams, 'executionPayload');
483
- const executionPayload = ExecutionPayloadSchema.parse(executionPayloadRaw);
485
+ const executionPayload = await ExecutionPayloadSchema.parseAsync(executionPayloadRaw);
484
486
  return [executionPayload];
485
487
  }
486
488
  case 'aztec_wmDeployContract': {
487
- const deployParams = DeployContractParamsSchema.parse(dAppParams);
489
+ const deployParams = await DeployContractParamsSchema.parseAsync(dAppParams);
488
490
  return [deployParams];
489
491
  }
490
492
  case 'wm_getSupportedMethods':