@walletmesh/aztec-rpc-wallet 0.3.0 → 0.4.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 (185) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +290 -228
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/client/aztec-dapp-wallet.d.ts +401 -0
  5. package/dist/client/aztec-dapp-wallet.d.ts.map +1 -0
  6. package/dist/client/aztec-dapp-wallet.js +705 -0
  7. package/dist/client/aztec-router-provider.d.ts +58 -0
  8. package/dist/client/aztec-router-provider.d.ts.map +1 -0
  9. package/dist/client/aztec-router-provider.js +62 -0
  10. package/dist/client/helpers.d.ts +44 -0
  11. package/dist/client/helpers.d.ts.map +1 -0
  12. package/dist/client/helpers.js +79 -0
  13. package/dist/client/register-serializers.d.ts +41 -0
  14. package/dist/client/register-serializers.d.ts.map +1 -0
  15. package/dist/client/register-serializers.js +97 -0
  16. package/dist/contractArtifactCache.d.ts +49 -32
  17. package/dist/contractArtifactCache.d.ts.map +1 -1
  18. package/dist/contractArtifactCache.js +47 -34
  19. package/dist/errors.d.ts +50 -8
  20. package/dist/errors.d.ts.map +1 -1
  21. package/dist/errors.js +50 -10
  22. package/dist/index.d.ts +53 -40
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +52 -17
  25. package/dist/types.d.ts +345 -268
  26. package/dist/types.d.ts.map +1 -1
  27. package/dist/types.js +10 -8
  28. package/dist/wallet/create-node.d.ts +73 -0
  29. package/dist/wallet/create-node.d.ts.map +1 -0
  30. package/dist/wallet/create-node.js +99 -0
  31. package/dist/wallet/handlers/account.d.ts +67 -0
  32. package/dist/wallet/handlers/account.d.ts.map +1 -0
  33. package/dist/wallet/handlers/account.js +85 -0
  34. package/dist/wallet/handlers/contract-interaction.d.ts +77 -0
  35. package/dist/wallet/handlers/contract-interaction.d.ts.map +1 -0
  36. package/dist/wallet/handlers/contract-interaction.js +219 -0
  37. package/dist/wallet/handlers/contract.d.ts +96 -0
  38. package/dist/wallet/handlers/contract.d.ts.map +1 -0
  39. package/dist/wallet/handlers/contract.js +146 -0
  40. package/dist/wallet/handlers/event.d.ts +62 -0
  41. package/dist/wallet/handlers/event.d.ts.map +1 -0
  42. package/dist/wallet/handlers/event.js +85 -0
  43. package/dist/wallet/handlers/index.d.ts +88 -0
  44. package/dist/wallet/handlers/index.d.ts.map +1 -0
  45. package/dist/wallet/handlers/index.js +47 -0
  46. package/dist/wallet/handlers/node.d.ts +117 -0
  47. package/dist/wallet/handlers/node.d.ts.map +1 -0
  48. package/dist/wallet/handlers/node.js +196 -0
  49. package/dist/wallet/handlers/senders.d.ts +70 -0
  50. package/dist/wallet/handlers/senders.d.ts.map +1 -0
  51. package/dist/wallet/handlers/senders.js +92 -0
  52. package/dist/wallet/handlers/transaction.d.ts +123 -0
  53. package/dist/wallet/handlers/transaction.d.ts.map +1 -0
  54. package/dist/wallet/handlers/transaction.js +191 -0
  55. package/dist/wallet/serializers.d.ts +75 -0
  56. package/dist/wallet/serializers.d.ts.map +1 -0
  57. package/dist/wallet/serializers.js +501 -0
  58. package/docs/README.md +290 -229
  59. package/docs/classes/AztecDappWallet.md +1304 -0
  60. package/docs/classes/AztecRouterProvider.md +1058 -0
  61. package/docs/classes/AztecWalletError.md +124 -47
  62. package/docs/classes/ContractArtifactCache.md +48 -31
  63. package/docs/functions/connectAztec.md +62 -0
  64. package/docs/functions/createAztecWallet.md +46 -0
  65. package/docs/functions/createAztecWalletNode.md +96 -0
  66. package/docs/functions/registerAztecSerializers.md +61 -0
  67. package/docs/functions/registerWalletAztecSerializers.md +39 -0
  68. package/docs/globals.md +16 -14
  69. package/docs/interfaces/AztecHandlerContext.md +54 -0
  70. package/docs/interfaces/AztecWalletContext.md +50 -0
  71. package/docs/interfaces/AztecWalletMethodMap.md +471 -470
  72. package/docs/type-aliases/AztecChainId.md +16 -3
  73. package/docs/variables/ALL_AZTEC_METHODS.md +20 -0
  74. package/docs/variables/AztecWalletErrorMap.md +9 -4
  75. package/docs/variables/AztecWalletSerializer.md +45 -0
  76. package/package.json +9 -9
  77. package/src/client/aztec-dapp-wallet.test.ts +628 -0
  78. package/src/client/aztec-dapp-wallet.ts +879 -0
  79. package/src/client/aztec-router-provider.test.ts +235 -0
  80. package/src/client/aztec-router-provider.ts +64 -0
  81. package/src/client/helpers.test.ts +187 -0
  82. package/src/client/helpers.ts +91 -0
  83. package/src/client/register-serializers.ts +108 -0
  84. package/src/contractArtifactCache.test.ts +21 -10
  85. package/src/contractArtifactCache.ts +54 -35
  86. package/src/errors.ts +58 -10
  87. package/src/index.test.ts +2 -6
  88. package/src/index.ts +73 -37
  89. package/src/types.ts +379 -217
  90. package/src/wallet/create-node.test.ts +332 -0
  91. package/src/wallet/create-node.ts +120 -0
  92. package/src/wallet/handlers/account.test.ts +172 -0
  93. package/src/wallet/handlers/account.ts +99 -0
  94. package/src/wallet/handlers/contract-interaction.test.ts +248 -0
  95. package/src/wallet/handlers/contract-interaction.ts +269 -0
  96. package/src/wallet/handlers/contract.test.ts +245 -0
  97. package/src/wallet/handlers/contract.ts +174 -0
  98. package/src/wallet/handlers/event.test.ts +216 -0
  99. package/src/wallet/handlers/event.ts +99 -0
  100. package/src/wallet/handlers/index.ts +84 -0
  101. package/src/wallet/handlers/node.test.ts +304 -0
  102. package/src/wallet/handlers/node.ts +230 -0
  103. package/src/wallet/handlers/senders.test.ts +172 -0
  104. package/src/wallet/handlers/senders.ts +106 -0
  105. package/src/wallet/handlers/transaction.test.ts +371 -0
  106. package/src/wallet/handlers/transaction.ts +239 -0
  107. package/src/wallet/serializers.test.ts +253 -0
  108. package/src/wallet/serializers.ts +586 -0
  109. package/typedoc.json +23 -1
  110. package/dist/aztecRemoteWallet.d.ts +0 -70
  111. package/dist/aztecRemoteWallet.d.ts.map +0 -1
  112. package/dist/aztecRemoteWallet.js +0 -335
  113. package/dist/chainProvider.d.ts +0 -56
  114. package/dist/chainProvider.d.ts.map +0 -1
  115. package/dist/chainProvider.js +0 -98
  116. package/dist/handlers/aztecAccountWallet.d.ts +0 -4
  117. package/dist/handlers/aztecAccountWallet.d.ts.map +0 -1
  118. package/dist/handlers/aztecAccountWallet.js +0 -296
  119. package/dist/handlers/transactions.d.ts +0 -21
  120. package/dist/handlers/transactions.d.ts.map +0 -1
  121. package/dist/handlers/transactions.js +0 -98
  122. package/dist/handlers.d.ts +0 -27
  123. package/dist/handlers.d.ts.map +0 -1
  124. package/dist/handlers.js +0 -55
  125. package/dist/provider.d.ts +0 -105
  126. package/dist/provider.d.ts.map +0 -1
  127. package/dist/provider.js +0 -160
  128. package/dist/serializers/account.d.ts +0 -164
  129. package/dist/serializers/account.d.ts.map +0 -1
  130. package/dist/serializers/account.js +0 -244
  131. package/dist/serializers/contract.d.ts +0 -62
  132. package/dist/serializers/contract.d.ts.map +0 -1
  133. package/dist/serializers/contract.js +0 -130
  134. package/dist/serializers/index.d.ts +0 -21
  135. package/dist/serializers/index.d.ts.map +0 -1
  136. package/dist/serializers/index.js +0 -154
  137. package/dist/serializers/log.d.ts +0 -66
  138. package/dist/serializers/log.d.ts.map +0 -1
  139. package/dist/serializers/log.js +0 -222
  140. package/dist/serializers/note.d.ts +0 -124
  141. package/dist/serializers/note.d.ts.map +0 -1
  142. package/dist/serializers/note.js +0 -208
  143. package/dist/serializers/transaction.d.ts +0 -99
  144. package/dist/serializers/transaction.d.ts.map +0 -1
  145. package/dist/serializers/transaction.js +0 -275
  146. package/dist/wallet.d.ts +0 -62
  147. package/dist/wallet.d.ts.map +0 -1
  148. package/dist/wallet.js +0 -77
  149. package/docs/classes/AztecChainProvider.md +0 -553
  150. package/docs/classes/AztecChainWallet.md +0 -409
  151. package/docs/classes/AztecProvider.md +0 -1112
  152. package/docs/interfaces/AztecWalletBaseMethodMap.md +0 -135
  153. package/docs/interfaces/AztecWalletEventMap.md +0 -17
  154. package/docs/type-aliases/AztecChainWalletMiddleware.md +0 -13
  155. package/docs/type-aliases/AztecWalletContext.md +0 -29
  156. package/docs/type-aliases/AztecWalletMethodHandler.md +0 -37
  157. package/docs/type-aliases/AztecWalletMiddleware.md +0 -13
  158. package/docs/type-aliases/AztecWalletRouterClient.md +0 -13
  159. package/docs/type-aliases/TransactionFunctionCall.md +0 -33
  160. package/docs/type-aliases/TransactionParams.md +0 -27
  161. package/src/aztecRemoteWallet.test.ts +0 -504
  162. package/src/aztecRemoteWallet.ts +0 -467
  163. package/src/chainProvider.test.ts +0 -401
  164. package/src/chainProvider.ts +0 -116
  165. package/src/handlers/aztecAccountWallet.test.ts +0 -649
  166. package/src/handlers/aztecAccountWallet.ts +0 -532
  167. package/src/handlers/transactions.ts +0 -124
  168. package/src/handlers.test.ts +0 -270
  169. package/src/handlers.ts +0 -70
  170. package/src/provider.test.ts +0 -274
  171. package/src/provider.ts +0 -189
  172. package/src/serializers/account.test.ts +0 -125
  173. package/src/serializers/account.ts +0 -301
  174. package/src/serializers/contract.test.ts +0 -24
  175. package/src/serializers/contract.ts +0 -183
  176. package/src/serializers/index.test.ts +0 -136
  177. package/src/serializers/index.ts +0 -191
  178. package/src/serializers/log.test.ts +0 -286
  179. package/src/serializers/log.ts +0 -292
  180. package/src/serializers/note.test.ts +0 -125
  181. package/src/serializers/note.ts +0 -250
  182. package/src/serializers/transaction.test.ts +0 -320
  183. package/src/serializers/transaction.ts +0 -409
  184. package/src/wallet.test.ts +0 -275
  185. package/src/wallet.ts +0 -94
@@ -1,183 +0,0 @@
1
- import type { AztecWalletMethodMap } from '../types.js';
2
- import type { JSONRPCSerializedData, JSONRPCSerializer } from '@walletmesh/jsonrpc';
3
- import { ContractClassWithIdSchema, ContractInstanceWithAddressSchema } from '@aztec/circuits.js';
4
- import { ContractArtifactSchema } from '@aztec/foundation/abi';
5
- import { AztecAddress, Fr } from '@aztec/aztec.js';
6
- import { jsonStringify, jsonParseWithSchema } from '@aztec/foundation/json-rpc';
7
- import type { ZodFor } from '@aztec/foundation/schemas';
8
- import type { ContractMetadata, ContractClassMetadata } from '@aztec/circuit-types';
9
- import { z } from 'zod';
10
-
11
- // Zod schemas for contract metadata serialization.
12
- // These are copied from @aztec/circuit-types because they are not exported.
13
- const ContractMetadataSchema = z.object({
14
- contractInstance: z.union([ContractInstanceWithAddressSchema, z.undefined()]),
15
- isContractInitialized: z.boolean(),
16
- isContractPubliclyDeployed: z.boolean(),
17
- }) satisfies ZodFor<ContractMetadata>;
18
-
19
- const ContractClassMetadataSchema = z.object({
20
- contractClass: z.union([ContractClassWithIdSchema, z.undefined()]),
21
- isContractClassPubliclyRegistered: z.boolean(),
22
- artifact: z.union([ContractArtifactSchema, z.undefined()]),
23
- }) satisfies ZodFor<ContractClassMetadata>;
24
-
25
- /**
26
- * Serializer for the aztec_getContractClassMetadata RPC method.
27
- * Handles serialization of contract class metadata queries and results between JSON-RPC format and native Aztec types.
28
- */
29
- export class AztecGetContractClassMetadataSerializer
30
- implements
31
- JSONRPCSerializer<
32
- AztecWalletMethodMap['aztec_getContractClassMetadata']['params'],
33
- AztecWalletMethodMap['aztec_getContractClassMetadata']['result']
34
- >
35
- {
36
- params = {
37
- /**
38
- * Serializes contract class metadata query parameters for RPC transport.
39
- * @param method - The RPC method name
40
- * @param value - The parameters containing the class ID and artifact inclusion flag
41
- * @returns Serialized query parameters
42
- */
43
- serialize: async (
44
- method: string,
45
- value: AztecWalletMethodMap['aztec_getContractClassMetadata']['params'],
46
- ): Promise<JSONRPCSerializedData> =>
47
- Promise.resolve({
48
- method,
49
- serialized: JSON.stringify({
50
- id: value.id.toString(),
51
- includeArtifact: value.includeArtifact,
52
- }),
53
- }),
54
- deserialize: async (
55
- _method: string,
56
- data: JSONRPCSerializedData,
57
- ): Promise<AztecWalletMethodMap['aztec_getContractClassMetadata']['params']> => {
58
- const { id, includeArtifact } = JSON.parse(data.serialized);
59
- return {
60
- id: Fr.fromString(id),
61
- includeArtifact,
62
- };
63
- },
64
- };
65
- result = {
66
- /**
67
- * Serializes the contract class metadata query result.
68
- * @param method - The RPC method name
69
- * @param value - The contract class metadata including class definition and registration status
70
- * @returns Serialized contract class metadata
71
- */
72
- serialize: async (
73
- method: string,
74
- value: AztecWalletMethodMap['aztec_getContractClassMetadata']['result'],
75
- ): Promise<JSONRPCSerializedData> => {
76
- return {
77
- method,
78
- serialized: jsonStringify(value),
79
- };
80
- },
81
- deserialize: async (
82
- _method: string,
83
- data: JSONRPCSerializedData,
84
- ): Promise<AztecWalletMethodMap['aztec_getContractClassMetadata']['result']> => {
85
- return await jsonParseWithSchema(data.serialized, ContractClassMetadataSchema);
86
- },
87
- };
88
- }
89
-
90
- export class AztecGetContractMetadataSerializer
91
- implements
92
- JSONRPCSerializer<
93
- AztecWalletMethodMap['aztec_getContractMetadata']['params'],
94
- AztecWalletMethodMap['aztec_getContractMetadata']['result']
95
- >
96
- {
97
- params = {
98
- serialize: async (
99
- method: string,
100
- value: AztecWalletMethodMap['aztec_getContractMetadata']['params'],
101
- ): Promise<JSONRPCSerializedData> => {
102
- return {
103
- method,
104
- serialized: jsonStringify(value.address),
105
- };
106
- },
107
- deserialize: async (
108
- _method: string,
109
- data: JSONRPCSerializedData,
110
- ): Promise<AztecWalletMethodMap['aztec_getContractMetadata']['params']> => {
111
- return {
112
- address: await jsonParseWithSchema(data.serialized, AztecAddress.schema),
113
- };
114
- },
115
- };
116
-
117
- result = {
118
- serialize: async (
119
- method: string,
120
- contractMetadata: AztecWalletMethodMap['aztec_getContractMetadata']['result'],
121
- ): Promise<JSONRPCSerializedData> => {
122
- return {
123
- method,
124
- serialized: jsonStringify(contractMetadata),
125
- };
126
- },
127
- deserialize: async (
128
- _method: string,
129
- data: JSONRPCSerializedData,
130
- ): Promise<AztecWalletMethodMap['aztec_getContractMetadata']['result']> => {
131
- return await jsonParseWithSchema(data.serialized, ContractMetadataSchema);
132
- },
133
- };
134
- }
135
-
136
- /**
137
- * Serializer for the aztec_registerContract RPC method.
138
- * Handles serialization of contract registration requests between JSON-RPC format and native Aztec types.
139
- */
140
- export class AztecRegisterContractSerializer
141
- implements
142
- JSONRPCSerializer<
143
- AztecWalletMethodMap['aztec_registerContract']['params'],
144
- AztecWalletMethodMap['aztec_registerContract']['result']
145
- >
146
- {
147
- params = {
148
- /**
149
- * Serializes contract registration parameters for RPC transport.
150
- * @param method - The RPC method name
151
- * @param value - The parameters containing contract instance and optional artifact
152
- * @returns Serialized registration data
153
- */
154
- serialize: async (
155
- method: string,
156
- value: AztecWalletMethodMap['aztec_registerContract']['params'],
157
- ): Promise<JSONRPCSerializedData> => ({
158
- method,
159
- serialized: JSON.stringify({
160
- instance: jsonStringify(value.instance),
161
- artifact: value.artifact ? jsonStringify(value.artifact) : undefined,
162
- }),
163
- }),
164
- deserialize: async (
165
- _method: string,
166
- data: JSONRPCSerializedData,
167
- ): Promise<AztecWalletMethodMap['aztec_registerContract']['params']> => {
168
- const { instance, artifact } = JSON.parse(data.serialized);
169
- return {
170
- instance: await jsonParseWithSchema(instance, ContractInstanceWithAddressSchema),
171
- artifact: artifact ? await jsonParseWithSchema(artifact, ContractArtifactSchema) : undefined,
172
- };
173
- },
174
- };
175
- }
176
-
177
- /**
178
- * Pre-instantiated serializer instances for Aztec contract-related RPC methods.
179
- * These instances can be used directly by the RPC handler implementation.
180
- */
181
- export const aztecRegisterContractSerializer = new AztecRegisterContractSerializer();
182
- export const aztecGetContractClassMetadataSerializer = new AztecGetContractClassMetadataSerializer();
183
- export const aztecGetContractMetadataSerializer = new AztecGetContractMetadataSerializer();
@@ -1,136 +0,0 @@
1
- import { describe, expect, it, beforeEach } from 'vitest';
2
- import { AztecWalletSerializer } from './index.js';
3
- import { AztecAddress, Tx } from '@aztec/aztec.js';
4
- import type { JSONRPCSerializer } from '@walletmesh/jsonrpc';
5
- import type { AztecWalletMethodMap } from '../types.js';
6
-
7
- describe('AztecWalletSerializer', () => {
8
- // Test known method (using aztec_setScopes as an example)
9
- const knownMethod = 'aztec_setScopes';
10
-
11
- // Test unknown method
12
- const unknownMethod = 'unknown_method';
13
-
14
- // Type assertion since we verify result exists in beforeEach
15
- const resultSerializer = (AztecWalletSerializer as Required<JSONRPCSerializer<unknown, unknown>>).result;
16
-
17
- describe('params', () => {
18
- it('should serialize params for known methods', async () => {
19
- const params = { scopes: [await AztecAddress.random()] };
20
- const result = await AztecWalletSerializer.params.serialize(knownMethod, params);
21
- expect(result).toBeDefined();
22
- expect(result.method).toBe(knownMethod);
23
- expect(typeof result.serialized).toBe('string');
24
- });
25
-
26
- it('should wrap unknown method params in JSONRPCSerializedData format', async () => {
27
- const params = { someParam: 'value' };
28
- const result = await AztecWalletSerializer.params.serialize(unknownMethod, params);
29
- expect(result).toBeDefined();
30
- expect(result.method).toBe(unknownMethod);
31
- expect(typeof result.serialized).toBe('string');
32
- });
33
-
34
- it('should pass through serialized data for unknown methods', async () => {
35
- const serializedData = { serialized: 'base64data', method: unknownMethod };
36
- const result = await AztecWalletSerializer.params.deserialize(unknownMethod, serializedData);
37
- expect(result).toEqual(serializedData);
38
- });
39
-
40
- it('should throw error when params serializer fails', async () => {
41
- const params = { scopes: undefined }; // Invalid - scopes must be an array
42
- await expect(AztecWalletSerializer.params.serialize(knownMethod, params)).rejects.toThrow(
43
- /Failed to serialize params/,
44
- );
45
- });
46
-
47
- it('should throw error when params deserializer fails', async () => {
48
- const serializedData = { serialized: 'invalid-data', method: knownMethod };
49
- await expect(AztecWalletSerializer.params.deserialize(knownMethod, serializedData)).rejects.toThrow(
50
- /Failed to deserialize params/,
51
- );
52
- });
53
- });
54
-
55
- describe('result', () => {
56
- beforeEach(() => {
57
- // Ensure result serializer exists
58
- expect(resultSerializer).toBeDefined();
59
- });
60
-
61
- it('should serialize result for known methods', async () => {
62
- const value = true;
63
- const result = await resultSerializer.serialize(knownMethod, value);
64
- expect(result).toBeDefined();
65
- expect(result.method).toBe(knownMethod);
66
- expect(typeof result.serialized).toBe('string');
67
- });
68
-
69
- it('should wrap unknown method result in JSONRPCSerializedData format', async () => {
70
- const testResult = { someResult: 'value' };
71
- const result = await resultSerializer.serialize(unknownMethod, testResult);
72
- expect(result).toBeDefined();
73
- expect(result.method).toBe(unknownMethod);
74
- expect(typeof result.serialized).toBe('string');
75
- });
76
-
77
- it('should pass through serialized data for unknown methods', async () => {
78
- const serializedData = { serialized: 'base64data', method: unknownMethod };
79
- const result = await resultSerializer.deserialize(unknownMethod, serializedData);
80
- expect(result).toEqual(serializedData);
81
- });
82
-
83
- it('should throw error when result serializer fails', async () => {
84
- interface CircularRef {
85
- ref: CircularRef | null;
86
- }
87
- const circular: CircularRef = { ref: null };
88
- circular.ref = circular; // Create circular reference which can't be JSON stringified
89
- await expect(resultSerializer.serialize(knownMethod, circular)).rejects.toThrow(
90
- /Failed to serialize result/,
91
- );
92
- });
93
-
94
- it('should throw error when result deserializer fails', async () => {
95
- const serializedData = { serialized: 'invalid-data', method: knownMethod };
96
- await expect(resultSerializer.deserialize(knownMethod, serializedData)).rejects.toThrow(
97
- /Failed to deserialize result/,
98
- );
99
- });
100
- });
101
-
102
- describe('integration', () => {
103
- it('should handle contract methods', async () => {
104
- const method = 'aztec_getContractMetadata';
105
- const params = { address: await AztecAddress.random() };
106
-
107
- const serializedParams = await AztecWalletSerializer.params.serialize(method, params);
108
- expect(serializedParams).toBeDefined();
109
- expect(serializedParams.method).toBe(method);
110
- expect(typeof serializedParams.serialized).toBe('string');
111
-
112
- const deserializedParams = (await AztecWalletSerializer.params.deserialize(
113
- method,
114
- serializedParams,
115
- )) as AztecWalletMethodMap['aztec_getContractMetadata']['params'];
116
- expect(deserializedParams.address.toString()).toBe(params.address.toString());
117
- });
118
-
119
- it('should handle transaction methods', async () => {
120
- const method = 'aztec_sendTx';
121
- const tx = await Tx.random();
122
- const params = { tx };
123
-
124
- const serializedParams = await AztecWalletSerializer.params.serialize(method, params);
125
- expect(serializedParams).toBeDefined();
126
- expect(serializedParams.method).toBe(method);
127
- expect(typeof serializedParams.serialized).toBe('string');
128
-
129
- const deserializedParams = (await AztecWalletSerializer.params.deserialize(
130
- method,
131
- serializedParams,
132
- )) as AztecWalletMethodMap['aztec_sendTx']['params'];
133
- expect(deserializedParams.tx.toBuffer().toString('hex')).toBe(tx.toBuffer().toString('hex'));
134
- });
135
- });
136
- });
@@ -1,191 +0,0 @@
1
- import type { AztecWalletMethodMap } from '../types.js';
2
- import type { JSONRPCSerializedData, JSONRPCSerializer } from '@walletmesh/jsonrpc';
3
-
4
- /**
5
- * Re-export all serializer types and implementations.
6
- * This provides a single entry point for importing any serializer functionality.
7
- */
8
- export * from './account.js';
9
- export * from './contract.js';
10
- export * from './transaction.js';
11
- export * from './note.js';
12
- export * from './log.js';
13
-
14
- // Import all serializer instances
15
- import {
16
- aztecSetScopesSerializer,
17
- aztecRegisterAccountSerializer,
18
- aztecAddAuthWitnessSerializer,
19
- aztecGetAuthWitnessSerializer,
20
- } from './account.js';
21
- import {
22
- aztecGetContractMetadataSerializer,
23
- aztecGetContractClassMetadataSerializer,
24
- aztecRegisterContractSerializer,
25
- } from './contract.js';
26
- import {
27
- aztecCreateTxExecutionRequestSerializer,
28
- aztecProveTxSerializer,
29
- aztecSendTxSerializer,
30
- aztecGetTxReceiptSerializer,
31
- aztecGetTxEffectSerializer,
32
- aztecSimulateTxSerializer,
33
- } from './transaction.js';
34
- import { aztecGetNotesSerializer, aztecAddNoteSerializer, aztecAddNullifiedNoteSerializer } from './note.js';
35
- import {
36
- aztecGetPublicLogsSerializer,
37
- aztecGetContractClassLogsSerializer,
38
- aztecGetPrivateEventsSerializer,
39
- aztecGetPublicEventsSerializer,
40
- } from './log.js';
41
-
42
- /**
43
- * Type alias for Aztec RPC method names.
44
- * Represents all available methods in the Aztec wallet RPC interface.
45
- */
46
- type AztecMethodName = keyof AztecWalletMethodMap;
47
-
48
- /**
49
- * Registry of all available method serializers.
50
- * Maps each RPC method name to its corresponding serializer implementation.
51
- * This mapping is used by the main AztecWalletSerializer to route method calls
52
- * to the appropriate specialized serializer.
53
- */
54
- const methodSerializers: Record<AztecMethodName, JSONRPCSerializer<unknown, unknown>> = {
55
- // Account methods
56
- aztec_setScopes: aztecSetScopesSerializer,
57
- aztec_registerAccount: aztecRegisterAccountSerializer,
58
- aztec_addAuthWitness: aztecAddAuthWitnessSerializer,
59
- aztec_getAuthWitness: aztecGetAuthWitnessSerializer,
60
-
61
- // Contract methods
62
- aztec_getContractMetadata: aztecGetContractMetadataSerializer,
63
- aztec_getContractClassMetadata: aztecGetContractClassMetadataSerializer,
64
- aztec_registerContract: aztecRegisterContractSerializer,
65
-
66
- // Transaction methods
67
- aztec_createTxExecutionRequest: aztecCreateTxExecutionRequestSerializer,
68
- aztec_proveTx: aztecProveTxSerializer,
69
- aztec_sendTx: aztecSendTxSerializer,
70
- aztec_getTxReceipt: aztecGetTxReceiptSerializer,
71
- aztec_getTxEffect: aztecGetTxEffectSerializer,
72
- aztec_simulateTx: aztecSimulateTxSerializer,
73
-
74
- // Note methods
75
- aztec_getNotes: aztecGetNotesSerializer,
76
- aztec_addNote: aztecAddNoteSerializer,
77
- aztec_addNullifiedNote: aztecAddNullifiedNoteSerializer,
78
-
79
- // Log methods
80
- aztec_getPublicLogs: aztecGetPublicLogsSerializer,
81
- aztec_getContractClassLogs: aztecGetContractClassLogsSerializer,
82
- aztec_getPrivateEvents: aztecGetPrivateEventsSerializer,
83
- aztec_getPublicEvents: aztecGetPublicEventsSerializer,
84
- };
85
-
86
- /**
87
- * Helper function to wrap unknown values in a standard JSON-RPC format.
88
- * Used as a fallback when no specific serializer is available for a method.
89
- *
90
- * @param method - The RPC method name
91
- * @param value - The value to wrap
92
- * @returns Standardized JSON-RPC data structure
93
- */
94
- async function wrapUnknownValue(method: string, value: unknown): Promise<JSONRPCSerializedData> {
95
- return Promise.resolve({
96
- method,
97
- serialized: JSON.stringify(value),
98
- });
99
- }
100
-
101
- /**
102
- * Main serializer for the Aztec wallet RPC interface.
103
- * Provides a unified interface for serializing all supported RPC methods.
104
- *
105
- * This serializer:
106
- * 1. Routes each method call to its specialized serializer from methodSerializers
107
- * 2. Provides fallback handling for unknown methods
108
- * 3. Wraps all serialization operations in proper error handling
109
- */
110
- export const AztecWalletSerializer: JSONRPCSerializer<unknown, unknown> = {
111
- params: {
112
- /**
113
- * Serializes RPC method parameters using the appropriate method serializer.
114
- * @param method - The RPC method name
115
- * @param value - The parameters to serialize
116
- * @returns Serialized parameter data
117
- * @throws If serialization fails or encounters an error
118
- */
119
- serialize: async (method: string, value: unknown): Promise<JSONRPCSerializedData> => {
120
- const serializer = methodSerializers[method as AztecMethodName];
121
- if (!serializer?.params) {
122
- return wrapUnknownValue(method, value);
123
- }
124
-
125
- try {
126
- return await serializer.params.serialize(method, value);
127
- } catch (error) {
128
- throw new Error(`Failed to serialize params for method ${method}: ${error}`);
129
- }
130
- },
131
- /**
132
- * Deserializes RPC method parameters using the appropriate method serializer.
133
- * @param method - The RPC method name
134
- * @param data - The serialized parameter data
135
- * @returns Deserialized parameters
136
- * @throws If deserialization fails or encounters an error
137
- */
138
- deserialize: async (method: string, data: JSONRPCSerializedData): Promise<unknown> => {
139
- const serializer = methodSerializers[method as AztecMethodName];
140
- if (!serializer?.params) {
141
- return data;
142
- }
143
-
144
- try {
145
- return await serializer.params.deserialize(method, data);
146
- } catch (error) {
147
- throw new Error(`Failed to deserialize params for method ${method}: ${error}`);
148
- }
149
- },
150
- },
151
- result: {
152
- /**
153
- * Serializes RPC method results using the appropriate method serializer.
154
- * @param method - The RPC method name
155
- * @param value - The result to serialize
156
- * @returns Serialized result data
157
- * @throws If serialization fails or encounters an error
158
- */
159
- serialize: async (method: string, value: unknown): Promise<JSONRPCSerializedData> => {
160
- const serializer = methodSerializers[method as AztecMethodName];
161
- if (!serializer?.result) {
162
- return wrapUnknownValue(method, value);
163
- }
164
-
165
- try {
166
- return await serializer.result.serialize(method, value);
167
- } catch (error) {
168
- throw new Error(`Failed to serialize result for method ${method}: ${error}`);
169
- }
170
- },
171
- /**
172
- * Deserializes RPC method results using the appropriate method serializer.
173
- * @param method - The RPC method name
174
- * @param data - The serialized result data
175
- * @returns Deserialized result
176
- * @throws If deserialization fails or encounters an error
177
- */
178
- deserialize: async (method: string, data: JSONRPCSerializedData): Promise<unknown> => {
179
- const serializer = methodSerializers[method as AztecMethodName];
180
- if (!serializer?.result) {
181
- return data;
182
- }
183
-
184
- try {
185
- return await serializer.result.deserialize(method, data);
186
- } catch (error) {
187
- throw new Error(`Failed to deserialize result for method ${method}: ${error}`);
188
- }
189
- },
190
- },
191
- };