@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,504 +0,0 @@
1
- import { describe, expect, it, vi, beforeEach } from 'vitest';
2
- import { Fr, getContractClassFromArtifact } from '@aztec/aztec.js';
3
- import type {
4
- AztecAddress,
5
- TxExecutionRequest,
6
- ContractInstanceWithAddress,
7
- ContractClassWithId,
8
- ContractArtifact,
9
- ExtendedNote,
10
- TxHash,
11
- L2Block,
12
- Point,
13
- TxReceipt,
14
- Tx,
15
- CompleteAddress,
16
- PartialAddress,
17
- AuthWitness,
18
- } from '@aztec/aztec.js';
19
- import type {
20
- PrivateExecutionResult,
21
- TxProvingResult,
22
- TxSimulationResult,
23
- InBlock,
24
- TxEffect,
25
- EventMetadataDefinition,
26
- PXEInfo,
27
- NotesFilter,
28
- UniqueNote,
29
- } from '@aztec/circuit-types';
30
- import { randomDeployedContract } from '@aztec/circuit-types';
31
-
32
- import type { ExecutionRequestInit } from '@aztec/aztec.js/entrypoint';
33
- import type { GasFees } from '@aztec/circuits.js';
34
- import { AztecRemoteWallet, createAztecRPCWallet } from './aztecRemoteWallet.js';
35
- import type { AztecProvider } from './provider.js';
36
- import type { JSONRPCTransport } from '@walletmesh/jsonrpc';
37
-
38
- describe('AztecRemoteWallet', () => {
39
- let provider: AztecProvider;
40
- let wallet: AztecRemoteWallet;
41
- let mockChainBuilder: { call: ReturnType<typeof vi.fn>; execute: ReturnType<typeof vi.fn> };
42
- const chainId = 'aztec:testnet';
43
- const mockAddress = { toString: () => '0x1234' } as unknown as AztecAddress;
44
- const mockChainIdFr = Fr.fromString('1');
45
- const mockVersionFr = Fr.fromString('1');
46
-
47
- beforeEach(() => {
48
- // Mock provider and chain builder
49
- mockChainBuilder = {
50
- call: vi.fn().mockReturnThis(),
51
- execute: vi.fn().mockResolvedValue(undefined),
52
- };
53
- provider = {
54
- chain: vi.fn().mockReturnValue(mockChainBuilder),
55
- } as unknown as AztecProvider;
56
-
57
- wallet = new AztecRemoteWallet(provider, chainId);
58
- });
59
-
60
- describe('core operations', () => {
61
- it('gets address', async () => {
62
- mockChainBuilder.execute.mockResolvedValueOnce(mockAddress);
63
-
64
- // First call should throw and trigger async load
65
- expect(() => wallet.getAddress()).toThrow('Address not yet available');
66
-
67
- // Wait for promise to resolve
68
- await new Promise(process.nextTick);
69
-
70
- // Second call should return cached value
71
- expect(wallet.getAddress()).toBe(mockAddress);
72
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getAddress');
73
- });
74
-
75
- it('gets complete address', async () => {
76
- const mockCompleteAddress = { toString: () => '0x1234' } as unknown as CompleteAddress;
77
- mockChainBuilder.execute.mockResolvedValueOnce(mockCompleteAddress);
78
-
79
- expect(() => wallet.getCompleteAddress()).toThrow('Complete address not yet available');
80
- await new Promise(process.nextTick);
81
- expect(wallet.getCompleteAddress()).toBe(mockCompleteAddress);
82
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getCompleteAddress');
83
- });
84
-
85
- it('gets chain ID', async () => {
86
- mockChainBuilder.execute.mockResolvedValueOnce(mockChainIdFr);
87
-
88
- expect(() => wallet.getChainId()).toThrow('Chain ID not yet available');
89
- await new Promise(process.nextTick);
90
- expect(wallet.getChainId()).toStrictEqual(mockChainIdFr);
91
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getChainId');
92
- });
93
-
94
- it('gets version', async () => {
95
- mockChainBuilder.execute.mockResolvedValueOnce(mockVersionFr);
96
-
97
- expect(() => wallet.getVersion()).toThrow('Version not yet available');
98
- await new Promise(process.nextTick);
99
- expect(wallet.getVersion()).toStrictEqual(mockVersionFr);
100
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getVersion');
101
- });
102
-
103
- it('gets scopes', async () => {
104
- const mockScopes = [mockAddress];
105
- mockChainBuilder.execute.mockResolvedValueOnce(mockScopes);
106
-
107
- expect(() => wallet.getScopes()).toThrow('Scopes not yet available');
108
- await new Promise(process.nextTick);
109
- expect(wallet.getScopes()).toBe(mockScopes);
110
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getScopes');
111
- });
112
-
113
- it('gets scopes async', async () => {
114
- const mockScopes = [mockAddress];
115
- mockChainBuilder.execute.mockResolvedValueOnce(mockScopes);
116
-
117
- const result = await wallet.getScopesAsync();
118
- expect(result).toBe(mockScopes);
119
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getScopes');
120
- });
121
-
122
- it('checks if L1 to L2 message is synced', async () => {
123
- const mockL1ToL2Message = Fr.fromString('1');
124
- const mockResult = true;
125
- mockChainBuilder.execute.mockResolvedValueOnce(mockResult);
126
-
127
- const result = await wallet.isL1ToL2MessageSynced(mockL1ToL2Message);
128
- expect(result).toBe(mockResult);
129
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_isL1ToL2MessageSynced', {
130
- l1ToL2Message: mockL1ToL2Message,
131
- });
132
- });
133
-
134
- it('creates tx execution request', async () => {
135
- const mockExec = { someParam: 'value' } as unknown as ExecutionRequestInit;
136
- const mockRequest = { id: '123' } as unknown as TxExecutionRequest;
137
- mockChainBuilder.execute.mockResolvedValueOnce(mockRequest);
138
-
139
- const result = await wallet.createTxExecutionRequest(mockExec);
140
- expect(result).toBe(mockRequest);
141
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_createTxExecutionRequest', {
142
- exec: mockExec,
143
- });
144
- });
145
-
146
- it('creates auth wit', async () => {
147
- const mockIntent = Fr.fromString('1');
148
- const mockAuthWitness = { witness: '0x1234' } as unknown as AuthWitness;
149
- mockChainBuilder.execute.mockResolvedValueOnce(mockAuthWitness);
150
-
151
- const result = await wallet.createAuthWit(mockIntent);
152
- expect(result).toBe(mockAuthWitness);
153
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_createAuthWit', { intent: mockIntent });
154
- });
155
-
156
- it('sets scopes', async () => {
157
- const mockScopes = [mockAddress];
158
- const mockResult = true;
159
- mockChainBuilder.execute.mockResolvedValueOnce(mockResult);
160
-
161
- wallet.setScopes(mockScopes);
162
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_setScopes', { scopes: mockScopes });
163
- });
164
-
165
- it('adds capsule', async () => {
166
- const mockCapsule = [Fr.fromString('1')];
167
- mockChainBuilder.execute.mockResolvedValueOnce(true);
168
- await wallet.addCapsule(mockCapsule);
169
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_addCapsule', { capsule: mockCapsule });
170
- });
171
-
172
- it('registers account', async () => {
173
- const mockSecretKey = Fr.fromString('1');
174
- const mockPartialAddress = {} as PartialAddress;
175
- const mockCompleteAddress = {} as CompleteAddress;
176
- mockChainBuilder.execute.mockResolvedValueOnce(mockCompleteAddress);
177
-
178
- const result = await wallet.registerAccount(mockSecretKey, mockPartialAddress);
179
- expect(result).toBe(mockCompleteAddress);
180
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_registerAccount', {
181
- secretKey: mockSecretKey,
182
- partialAddress: mockPartialAddress,
183
- });
184
- });
185
-
186
- it('gets registered accounts', async () => {
187
- const mockAccounts = [{} as CompleteAddress];
188
- mockChainBuilder.execute.mockResolvedValueOnce(mockAccounts);
189
-
190
- const result = await wallet.getRegisteredAccounts();
191
- expect(result).toBe(mockAccounts);
192
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getRegisteredAccounts');
193
- });
194
- });
195
-
196
- describe('contract operations', () => {
197
- let mockContract: { instance: ContractInstanceWithAddress; artifact: ContractArtifact };
198
- let contractClass: ContractClassWithId;
199
-
200
- beforeEach(async () => {
201
- mockContract = await randomDeployedContract();
202
- contractClass = await getContractClassFromArtifact(mockContract.artifact);
203
- });
204
-
205
- it('registers contract', async () => {
206
- mockChainBuilder.execute.mockResolvedValueOnce(true);
207
- await wallet.registerContract({ instance: mockContract.instance, artifact: mockContract.artifact });
208
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_registerContract', {
209
- instance: mockContract.instance,
210
- artifact: mockContract.artifact,
211
- });
212
- });
213
-
214
- it('registers contract class', async () => {
215
- mockChainBuilder.execute.mockResolvedValueOnce(true);
216
- await wallet.registerContractClass(mockContract.artifact);
217
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_registerContractClass', {
218
- artifact: mockContract.artifact,
219
- });
220
- });
221
-
222
- it('gets contracts', async () => {
223
- const mockContracts = [mockContract.instance.address];
224
- mockChainBuilder.execute.mockResolvedValueOnce(mockContracts);
225
-
226
- const result = await wallet.getContracts();
227
- expect(result).toBe(mockContracts);
228
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getContracts');
229
- });
230
-
231
- it('gets contract metadata', async () => {
232
- const mockMetadata = { contractInstance: mockContract.instance };
233
- mockChainBuilder.execute.mockResolvedValueOnce(mockMetadata);
234
-
235
- const result = await wallet.getContractMetadata(mockContract.instance.address);
236
- expect(result).toBe(mockMetadata);
237
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getContractMetadata', {
238
- address: mockContract.instance.address,
239
- });
240
- });
241
-
242
- it('gets contract class metadata', async () => {
243
- const mockMetadata = { artifact: mockContract.artifact };
244
- mockChainBuilder.execute.mockResolvedValueOnce(mockMetadata);
245
-
246
- const result = await wallet.getContractClassMetadata(contractClass.id);
247
- expect(result).toBe(mockMetadata);
248
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getContractClassMetadata', {
249
- id: contractClass.id,
250
- });
251
- });
252
- });
253
-
254
- describe('auth witness operations', () => {
255
- const mockAuthWitness = { witness: '0x1234' } as unknown as AuthWitness;
256
- const mockMessageHash = Fr.fromString('1');
257
-
258
- it('adds auth witness', async () => {
259
- mockChainBuilder.execute.mockResolvedValueOnce(true);
260
- await wallet.addAuthWitness(mockAuthWitness);
261
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_addAuthWitness', {
262
- authWitness: mockAuthWitness,
263
- });
264
- });
265
-
266
- it('gets auth witness', async () => {
267
- const mockWitness = [Fr.fromString('1')];
268
- mockChainBuilder.execute.mockResolvedValueOnce(mockWitness);
269
- const result = await wallet.getAuthWitness(mockMessageHash);
270
- expect(result).toBe(mockWitness);
271
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getAuthWitness', {
272
- messageHash: mockMessageHash,
273
- });
274
- });
275
- });
276
-
277
- describe('transaction operations', () => {
278
- const mockTxRequest = {} as TxExecutionRequest;
279
- const mockPrivateExecutionResult = {} as PrivateExecutionResult;
280
- const mockTxHash = {} as TxHash;
281
- const mockTx = {} as Tx;
282
- const mockTxEffect = {} as InBlock<TxEffect>;
283
- const mockTxReceipt = {} as TxReceipt;
284
- const mockSimulationResult = {} as TxSimulationResult;
285
- const mockProvingResult = {} as TxProvingResult;
286
-
287
- it('simulates tx', async () => {
288
- const mockScopes = [mockAddress];
289
- mockChainBuilder.execute.mockResolvedValueOnce(mockScopes).mockResolvedValueOnce(mockSimulationResult);
290
-
291
- await wallet.simulateTx(mockTxRequest, true);
292
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_simulateTx', {
293
- txRequest: mockTxRequest,
294
- simulatePublic: true,
295
- msgSender: undefined,
296
- skipTxValidation: undefined,
297
- enforceFeePayment: undefined,
298
- profile: undefined,
299
- });
300
- });
301
-
302
- it('proves tx', async () => {
303
- mockChainBuilder.execute.mockResolvedValueOnce(mockProvingResult);
304
-
305
- const result = await wallet.proveTx(mockTxRequest, mockPrivateExecutionResult);
306
- expect(result).toBe(mockProvingResult);
307
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_proveTx', {
308
- txRequest: mockTxRequest,
309
- privateExecutionResult: mockPrivateExecutionResult,
310
- });
311
- });
312
-
313
- it('sends tx', async () => {
314
- mockChainBuilder.execute.mockResolvedValueOnce(mockTxHash);
315
-
316
- const result = await wallet.sendTx(mockTx);
317
- expect(result).toBe(mockTxHash);
318
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_sendTx', { tx: mockTx });
319
- });
320
-
321
- it('gets tx effect', async () => {
322
- mockChainBuilder.execute.mockResolvedValueOnce(mockTxEffect);
323
-
324
- const result = await wallet.getTxEffect(mockTxHash);
325
- expect(result).toBe(mockTxEffect);
326
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getTxEffect', { txHash: mockTxHash });
327
- });
328
-
329
- it('gets tx receipt', async () => {
330
- mockChainBuilder.execute.mockResolvedValueOnce(mockTxReceipt);
331
-
332
- const result = await wallet.getTxReceipt(mockTxHash);
333
- expect(result).toBe(mockTxReceipt);
334
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getTxReceipt', { txHash: mockTxHash });
335
- });
336
- });
337
-
338
- describe('storage and block operations', () => {
339
- const mockStorageSlot = Fr.fromString('1');
340
- const mockStorageValue = Fr.fromString('2');
341
- const mockBlock = {} as L2Block;
342
- const mockGasFees = {} as GasFees;
343
- const mockBlockNumber = 123;
344
-
345
- it('gets public storage at', async () => {
346
- mockChainBuilder.execute.mockResolvedValueOnce(mockStorageValue);
347
-
348
- const result = await wallet.getPublicStorageAt(mockAddress, mockStorageSlot);
349
- expect(result).toBe(mockStorageValue);
350
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getPublicStorageAt', {
351
- contract: mockAddress,
352
- storageSlot: mockStorageSlot,
353
- });
354
- });
355
-
356
- it('gets block', async () => {
357
- mockChainBuilder.execute.mockResolvedValueOnce(mockBlock);
358
-
359
- const result = await wallet.getBlock(mockBlockNumber);
360
- expect(result).toBe(mockBlock);
361
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getBlock', { number: mockBlockNumber });
362
- });
363
-
364
- it('gets current base fees', async () => {
365
- mockChainBuilder.execute.mockResolvedValueOnce(mockGasFees);
366
-
367
- const result = await wallet.getCurrentBaseFees();
368
- expect(result).toBe(mockGasFees);
369
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getCurrentBaseFees');
370
- });
371
-
372
- it('gets block number', async () => {
373
- mockChainBuilder.execute.mockResolvedValueOnce(mockBlockNumber);
374
-
375
- const result = await wallet.getBlockNumber();
376
- expect(result).toBe(mockBlockNumber);
377
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getBlockNumber');
378
- });
379
-
380
- it('gets proven block number', async () => {
381
- mockChainBuilder.execute.mockResolvedValueOnce(mockBlockNumber);
382
-
383
- const result = await wallet.getProvenBlockNumber();
384
- expect(result).toBe(mockBlockNumber);
385
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getProvenBlockNumber');
386
- });
387
- });
388
-
389
- describe('PXE operations', () => {
390
- it('gets PXE info', async () => {
391
- const mockInfo = { version: '1.0.0' } as unknown as PXEInfo;
392
- mockChainBuilder.execute.mockResolvedValueOnce(mockInfo);
393
- const result = await wallet.getPXEInfo();
394
- expect(result).toBe(mockInfo);
395
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getPXEInfo');
396
- });
397
- });
398
-
399
- describe('note operations', () => {
400
- const mockNote = {} as ExtendedNote;
401
- const mockFilter = {} as NotesFilter;
402
-
403
- it('adds note', async () => {
404
- mockChainBuilder.execute.mockResolvedValueOnce(true);
405
- await wallet.addNote(mockNote);
406
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_addNote', { note: mockNote });
407
- });
408
-
409
- it('adds nullified note', async () => {
410
- mockChainBuilder.execute.mockResolvedValueOnce(true);
411
- await wallet.addNullifiedNote(mockNote);
412
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_addNullifiedNote', { note: mockNote });
413
- });
414
-
415
- it('gets notes', async () => {
416
- const mockNotes = [{}] as UniqueNote[];
417
- mockChainBuilder.execute.mockResolvedValueOnce(mockNotes);
418
- const result = await wallet.getNotes(mockFilter);
419
- expect(result).toBe(mockNotes);
420
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getNotes', { filter: mockFilter });
421
- });
422
- });
423
-
424
- describe('event operations', () => {
425
- const mockEvent = {
426
- eventSelector: Fr.fromString('1') as unknown as Fr & { _branding: 'EventSelector' },
427
- abiType: 'array',
428
- fieldNames: ['field1', 'field2'],
429
- } as unknown as EventMetadataDefinition;
430
- const mockVpks = [{}] as Point[];
431
- const mockCompleteAddress = { publicKeys: { masterIncomingViewingPublicKey: {} } } as CompleteAddress;
432
-
433
- it('gets private events with default vpks', async () => {
434
- const mockEvents = [{ data: '0x1234' }];
435
- mockChainBuilder.execute.mockResolvedValueOnce(mockCompleteAddress).mockResolvedValueOnce(mockEvents);
436
-
437
- // Initialize complete address
438
- try {
439
- wallet.getCompleteAddress();
440
- } catch (e) {
441
- // Expected error
442
- }
443
-
444
- // Wait for promise to resolve
445
- await new Promise(process.nextTick);
446
-
447
- const result = await wallet.getPrivateEvents(mockEvent, 0, 10);
448
- expect(result).toBe(mockEvents);
449
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getPrivateEvents', {
450
- event: mockEvent,
451
- from: 0,
452
- limit: 10,
453
- vpks: [mockCompleteAddress.publicKeys.masterIncomingViewingPublicKey],
454
- });
455
- });
456
-
457
- it('gets private events with custom vpks', async () => {
458
- const mockEvents = [{ data: '0x1234' }];
459
- mockChainBuilder.execute.mockResolvedValueOnce(mockCompleteAddress).mockResolvedValueOnce(mockEvents);
460
-
461
- // Initialize complete address
462
- try {
463
- wallet.getCompleteAddress();
464
- } catch (e) {
465
- // Expected error
466
- }
467
-
468
- // Wait for promise to resolve
469
- await new Promise(process.nextTick);
470
-
471
- const result = await wallet.getPrivateEvents(mockEvent, 0, 10, mockVpks);
472
- expect(result).toBe(mockEvents);
473
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getPrivateEvents', {
474
- event: mockEvent,
475
- from: 0,
476
- limit: 10,
477
- vpks: mockVpks,
478
- });
479
- });
480
-
481
- it('gets public events', async () => {
482
- const mockEvents = [{ data: '0x1234' }];
483
- mockChainBuilder.execute.mockResolvedValueOnce(mockEvents);
484
- const result = await wallet.getPublicEvents(mockEvent, 0, 10);
485
- expect(result).toBe(mockEvents);
486
- expect(mockChainBuilder.call).toHaveBeenCalledWith('aztec_getPublicEvents', {
487
- event: mockEvent,
488
- from: 0,
489
- limit: 10,
490
- });
491
- });
492
- });
493
- });
494
-
495
- describe('createAztecRPCWallet', () => {
496
- it('creates wallet instance with transport and chain ID', () => {
497
- const transport = {} as JSONRPCTransport;
498
- const chainId = 'aztec:testnet';
499
-
500
- const wallet = createAztecRPCWallet(transport, chainId);
501
-
502
- expect(wallet).toBeInstanceOf(AztecRemoteWallet);
503
- });
504
- });