@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
@@ -0,0 +1,253 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { AztecAddress, Fr, AuthWitness } from '@aztec/aztec.js';
3
+ 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';
7
+ import { ExecutionPayload } from '@aztec/entrypoints/payload';
8
+ import { AztecWalletSerializer } from './serializers.js';
9
+ import { FunctionCall } from '@aztec/stdlib/abi';
10
+
11
+ describe('ExecutionPayload Serialization', () => {
12
+ it('should serialize and deserialize ExecutionPayload correctly', async () => {
13
+ // Create test data for FunctionCall
14
+ const functionCall = new FunctionCall(
15
+ 'transfer',
16
+ AztecAddress.fromString('0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'),
17
+ FunctionSelector.fromField(new Fr(0x12345678)), // Use a valid 4-byte value
18
+ FunctionType.PRIVATE,
19
+ false,
20
+ [Fr.random(), Fr.random()],
21
+ [],
22
+ );
23
+
24
+ // Create test data for ExecutionPayload
25
+ const executionPayload = new ExecutionPayload(
26
+ [functionCall],
27
+ [AuthWitness.random()],
28
+ [
29
+ new Capsule(
30
+ AztecAddress.fromString('0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890'),
31
+ Fr.random(),
32
+ [Fr.random()],
33
+ ),
34
+ ],
35
+ [HashedValues.random()],
36
+ );
37
+
38
+ // Test params serialization - simulate the actual parameter structure
39
+ const params = { executionPayload };
40
+ const serializedParams = await AztecWalletSerializer.params.serialize('aztec_wmExecuteTx', params);
41
+
42
+ // Test params deserialization
43
+ const deserializedParams = await AztecWalletSerializer.params.deserialize(
44
+ 'aztec_wmExecuteTx',
45
+ serializedParams,
46
+ );
47
+
48
+ expect(deserializedParams).toBeDefined();
49
+ expect(Array.isArray(deserializedParams)).toBe(true);
50
+ const paramsArray = deserializedParams as unknown[];
51
+ expect(paramsArray).toHaveLength(1);
52
+ const result = paramsArray[0] as ExecutionPayload;
53
+
54
+ // Verify the structure is preserved
55
+ expect(result).toBeDefined();
56
+ expect(result.calls).toHaveLength(1);
57
+ expect(result.authWitnesses).toHaveLength(1);
58
+ expect(result.capsules).toHaveLength(1);
59
+ expect(result.extraHashedArgs).toHaveLength(1);
60
+
61
+ // Verify the function call data
62
+ const deserializedCall = result.calls[0];
63
+ expect(deserializedCall).toBeDefined();
64
+ if (deserializedCall) {
65
+ expect(deserializedCall.name).toBe(functionCall.name);
66
+ expect(deserializedCall.type).toBe(functionCall.type);
67
+ expect(deserializedCall.isStatic).toBe(functionCall.isStatic);
68
+ expect(deserializedCall.args).toHaveLength(2);
69
+ }
70
+ });
71
+
72
+ it('should handle ExecutionPayload with empty extraHashedArgs', async () => {
73
+ const executionPayload = new ExecutionPayload(
74
+ [],
75
+ [],
76
+ [],
77
+ // Note: extraHashedArgs is optional and defaults to []
78
+ );
79
+
80
+ // Test params serialization - simulate the actual parameter structure
81
+ const params = { executionPayload };
82
+ const serializedParams = await AztecWalletSerializer.params.serialize('aztec_wmExecuteTx', params);
83
+
84
+ const deserializedParams = await AztecWalletSerializer.params.deserialize(
85
+ 'aztec_wmExecuteTx',
86
+ serializedParams,
87
+ );
88
+
89
+ expect(deserializedParams).toBeDefined();
90
+ expect(Array.isArray(deserializedParams)).toBe(true);
91
+ const paramsArray = deserializedParams as unknown[];
92
+ const result = paramsArray[0] as ExecutionPayload;
93
+ expect(result.extraHashedArgs).toEqual([]);
94
+ });
95
+ });
96
+
97
+ describe('DeployContract Serialization', () => {
98
+ it('should serialize and deserialize aztec_wmDeployContract params correctly', async () => {
99
+ // Create a minimal valid ContractArtifact
100
+ const artifact: ContractArtifact = {
101
+ name: 'TestContract',
102
+ functions: [
103
+ {
104
+ name: 'constructor',
105
+ functionType: FunctionType.PRIVATE,
106
+ isInternal: false,
107
+ isStatic: false,
108
+ isInitializer: true,
109
+ parameters: [
110
+ {
111
+ name: 'owner',
112
+ type: { kind: 'field' },
113
+ visibility: 'private',
114
+ },
115
+ ],
116
+ returnTypes: [],
117
+ errorTypes: {},
118
+ bytecode: Buffer.from('test'),
119
+ debugSymbols: '',
120
+ },
121
+ ],
122
+ nonDispatchPublicFunctions: [],
123
+ outputs: {
124
+ structs: {},
125
+ globals: {},
126
+ },
127
+ storageLayout: {},
128
+ notes: {},
129
+ fileMap: {},
130
+ };
131
+
132
+ const args = [AztecAddress.random().toString(), '12345'];
133
+ const constructorName = 'constructor';
134
+
135
+ // Test params serialization
136
+ const params = { artifact, args, constructorName };
137
+ const serializedParams = await AztecWalletSerializer.params.serialize('aztec_wmDeployContract', params);
138
+
139
+ // Test params deserialization
140
+ const deserializedParams = await AztecWalletSerializer.params.deserialize(
141
+ 'aztec_wmDeployContract',
142
+ serializedParams,
143
+ );
144
+
145
+ expect(deserializedParams).toBeDefined();
146
+ expect(Array.isArray(deserializedParams)).toBe(true);
147
+ const paramsArray = deserializedParams as unknown[];
148
+ expect(paramsArray).toHaveLength(1);
149
+
150
+ const result = paramsArray[0] as {
151
+ artifact: ContractArtifact;
152
+ args: unknown[];
153
+ constructorName?: string;
154
+ };
155
+
156
+ // Verify the artifact structure
157
+ expect(result.artifact).toBeDefined();
158
+ expect(result.artifact.name).toBe('TestContract');
159
+ expect(result.artifact.functions).toHaveLength(1);
160
+ expect(result.artifact.functions[0]?.name).toBe('constructor');
161
+ expect(result.artifact.functions[0]?.isInitializer).toBe(true);
162
+
163
+ // Verify args
164
+ expect(result.args).toEqual(args);
165
+
166
+ // Verify constructorName
167
+ expect(result.constructorName).toBe(constructorName);
168
+ });
169
+
170
+ it('should handle aztec_wmDeployContract without constructorName', async () => {
171
+ const artifact: ContractArtifact = {
172
+ name: 'TestContract',
173
+ functions: [],
174
+ nonDispatchPublicFunctions: [],
175
+ outputs: {
176
+ structs: {},
177
+ globals: {},
178
+ },
179
+ storageLayout: {},
180
+ notes: {},
181
+ fileMap: {},
182
+ };
183
+
184
+ const args: unknown[] = [];
185
+
186
+ // Test without constructorName
187
+ const params = { artifact, args };
188
+ const serializedParams = await AztecWalletSerializer.params.serialize('aztec_wmDeployContract', params);
189
+
190
+ const deserializedParams = await AztecWalletSerializer.params.deserialize(
191
+ 'aztec_wmDeployContract',
192
+ serializedParams,
193
+ );
194
+
195
+ const paramsArray = deserializedParams as unknown[];
196
+ const result = paramsArray[0] as {
197
+ artifact: ContractArtifact;
198
+ args: unknown[];
199
+ constructorName?: string;
200
+ };
201
+
202
+ expect(result.constructorName).toBeUndefined();
203
+ expect(result.args).toEqual([]);
204
+ });
205
+
206
+ it('should throw error for invalid ContractArtifact in aztec_wmDeployContract', async () => {
207
+ const invalidArtifact = {
208
+ // Missing required fields like 'name'
209
+ functions: [],
210
+ };
211
+
212
+ const args: unknown[] = [];
213
+ const params = { artifact: invalidArtifact, args };
214
+ const serializedParams = await AztecWalletSerializer.params.serialize('aztec_wmDeployContract', params);
215
+
216
+ // Should throw when deserializing with invalid artifact
217
+ await expect(
218
+ AztecWalletSerializer.params.deserialize('aztec_wmDeployContract', serializedParams),
219
+ ).rejects.toThrow();
220
+ });
221
+
222
+ it('should validate args array in aztec_wmDeployContract', async () => {
223
+ const artifact: ContractArtifact = {
224
+ name: 'TestContract',
225
+ functions: [],
226
+ nonDispatchPublicFunctions: [],
227
+ outputs: {
228
+ structs: {},
229
+ globals: {},
230
+ },
231
+ storageLayout: {},
232
+ notes: {},
233
+ fileMap: {},
234
+ };
235
+
236
+ // Test with various types in args array
237
+ const args = ['string value', 123, true, { nested: 'object' }, ['array', 'of', 'values'], null];
238
+
239
+ const params = { artifact, args };
240
+ const serializedParams = await AztecWalletSerializer.params.serialize('aztec_wmDeployContract', params);
241
+
242
+ const deserializedParams = await AztecWalletSerializer.params.deserialize(
243
+ 'aztec_wmDeployContract',
244
+ serializedParams,
245
+ );
246
+
247
+ const paramsArray = deserializedParams as unknown[];
248
+ const result = paramsArray[0] as { artifact: ContractArtifact; args: unknown[] };
249
+
250
+ // z.array(z.any()) should accept any values
251
+ expect(result.args).toEqual(args);
252
+ });
253
+ });