@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.
- package/CHANGELOG.md +26 -0
- package/README.md +290 -228
- package/dist/.tsbuildinfo +1 -1
- package/dist/client/aztec-dapp-wallet.d.ts +401 -0
- package/dist/client/aztec-dapp-wallet.d.ts.map +1 -0
- package/dist/client/aztec-dapp-wallet.js +705 -0
- package/dist/client/aztec-router-provider.d.ts +58 -0
- package/dist/client/aztec-router-provider.d.ts.map +1 -0
- package/dist/client/aztec-router-provider.js +62 -0
- package/dist/client/helpers.d.ts +44 -0
- package/dist/client/helpers.d.ts.map +1 -0
- package/dist/client/helpers.js +79 -0
- package/dist/client/register-serializers.d.ts +41 -0
- package/dist/client/register-serializers.d.ts.map +1 -0
- package/dist/client/register-serializers.js +97 -0
- package/dist/contractArtifactCache.d.ts +49 -32
- package/dist/contractArtifactCache.d.ts.map +1 -1
- package/dist/contractArtifactCache.js +47 -34
- package/dist/errors.d.ts +50 -8
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +50 -10
- package/dist/index.d.ts +53 -40
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -17
- package/dist/types.d.ts +345 -268
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +10 -8
- package/dist/wallet/create-node.d.ts +73 -0
- package/dist/wallet/create-node.d.ts.map +1 -0
- package/dist/wallet/create-node.js +99 -0
- package/dist/wallet/handlers/account.d.ts +67 -0
- package/dist/wallet/handlers/account.d.ts.map +1 -0
- package/dist/wallet/handlers/account.js +85 -0
- package/dist/wallet/handlers/contract-interaction.d.ts +77 -0
- package/dist/wallet/handlers/contract-interaction.d.ts.map +1 -0
- package/dist/wallet/handlers/contract-interaction.js +219 -0
- package/dist/wallet/handlers/contract.d.ts +96 -0
- package/dist/wallet/handlers/contract.d.ts.map +1 -0
- package/dist/wallet/handlers/contract.js +146 -0
- package/dist/wallet/handlers/event.d.ts +62 -0
- package/dist/wallet/handlers/event.d.ts.map +1 -0
- package/dist/wallet/handlers/event.js +85 -0
- package/dist/wallet/handlers/index.d.ts +88 -0
- package/dist/wallet/handlers/index.d.ts.map +1 -0
- package/dist/wallet/handlers/index.js +47 -0
- package/dist/wallet/handlers/node.d.ts +117 -0
- package/dist/wallet/handlers/node.d.ts.map +1 -0
- package/dist/wallet/handlers/node.js +196 -0
- package/dist/wallet/handlers/senders.d.ts +70 -0
- package/dist/wallet/handlers/senders.d.ts.map +1 -0
- package/dist/wallet/handlers/senders.js +92 -0
- package/dist/wallet/handlers/transaction.d.ts +123 -0
- package/dist/wallet/handlers/transaction.d.ts.map +1 -0
- package/dist/wallet/handlers/transaction.js +191 -0
- package/dist/wallet/serializers.d.ts +75 -0
- package/dist/wallet/serializers.d.ts.map +1 -0
- package/dist/wallet/serializers.js +501 -0
- package/docs/README.md +290 -229
- package/docs/classes/AztecDappWallet.md +1304 -0
- package/docs/classes/AztecRouterProvider.md +1058 -0
- package/docs/classes/AztecWalletError.md +124 -47
- package/docs/classes/ContractArtifactCache.md +48 -31
- package/docs/functions/connectAztec.md +62 -0
- package/docs/functions/createAztecWallet.md +46 -0
- package/docs/functions/createAztecWalletNode.md +96 -0
- package/docs/functions/registerAztecSerializers.md +61 -0
- package/docs/functions/registerWalletAztecSerializers.md +39 -0
- package/docs/globals.md +16 -14
- package/docs/interfaces/AztecHandlerContext.md +54 -0
- package/docs/interfaces/AztecWalletContext.md +50 -0
- package/docs/interfaces/AztecWalletMethodMap.md +471 -470
- package/docs/type-aliases/AztecChainId.md +16 -3
- package/docs/variables/ALL_AZTEC_METHODS.md +20 -0
- package/docs/variables/AztecWalletErrorMap.md +9 -4
- package/docs/variables/AztecWalletSerializer.md +45 -0
- package/package.json +9 -9
- package/src/client/aztec-dapp-wallet.test.ts +628 -0
- package/src/client/aztec-dapp-wallet.ts +879 -0
- package/src/client/aztec-router-provider.test.ts +235 -0
- package/src/client/aztec-router-provider.ts +64 -0
- package/src/client/helpers.test.ts +187 -0
- package/src/client/helpers.ts +91 -0
- package/src/client/register-serializers.ts +108 -0
- package/src/contractArtifactCache.test.ts +21 -10
- package/src/contractArtifactCache.ts +54 -35
- package/src/errors.ts +58 -10
- package/src/index.test.ts +2 -6
- package/src/index.ts +73 -37
- package/src/types.ts +379 -217
- package/src/wallet/create-node.test.ts +332 -0
- package/src/wallet/create-node.ts +120 -0
- package/src/wallet/handlers/account.test.ts +172 -0
- package/src/wallet/handlers/account.ts +99 -0
- package/src/wallet/handlers/contract-interaction.test.ts +248 -0
- package/src/wallet/handlers/contract-interaction.ts +269 -0
- package/src/wallet/handlers/contract.test.ts +245 -0
- package/src/wallet/handlers/contract.ts +174 -0
- package/src/wallet/handlers/event.test.ts +216 -0
- package/src/wallet/handlers/event.ts +99 -0
- package/src/wallet/handlers/index.ts +84 -0
- package/src/wallet/handlers/node.test.ts +304 -0
- package/src/wallet/handlers/node.ts +230 -0
- package/src/wallet/handlers/senders.test.ts +172 -0
- package/src/wallet/handlers/senders.ts +106 -0
- package/src/wallet/handlers/transaction.test.ts +371 -0
- package/src/wallet/handlers/transaction.ts +239 -0
- package/src/wallet/serializers.test.ts +253 -0
- package/src/wallet/serializers.ts +586 -0
- package/typedoc.json +23 -1
- package/dist/aztecRemoteWallet.d.ts +0 -70
- package/dist/aztecRemoteWallet.d.ts.map +0 -1
- package/dist/aztecRemoteWallet.js +0 -335
- package/dist/chainProvider.d.ts +0 -56
- package/dist/chainProvider.d.ts.map +0 -1
- package/dist/chainProvider.js +0 -98
- package/dist/handlers/aztecAccountWallet.d.ts +0 -4
- package/dist/handlers/aztecAccountWallet.d.ts.map +0 -1
- package/dist/handlers/aztecAccountWallet.js +0 -296
- package/dist/handlers/transactions.d.ts +0 -21
- package/dist/handlers/transactions.d.ts.map +0 -1
- package/dist/handlers/transactions.js +0 -98
- package/dist/handlers.d.ts +0 -27
- package/dist/handlers.d.ts.map +0 -1
- package/dist/handlers.js +0 -55
- package/dist/provider.d.ts +0 -105
- package/dist/provider.d.ts.map +0 -1
- package/dist/provider.js +0 -160
- package/dist/serializers/account.d.ts +0 -164
- package/dist/serializers/account.d.ts.map +0 -1
- package/dist/serializers/account.js +0 -244
- package/dist/serializers/contract.d.ts +0 -62
- package/dist/serializers/contract.d.ts.map +0 -1
- package/dist/serializers/contract.js +0 -130
- package/dist/serializers/index.d.ts +0 -21
- package/dist/serializers/index.d.ts.map +0 -1
- package/dist/serializers/index.js +0 -154
- package/dist/serializers/log.d.ts +0 -66
- package/dist/serializers/log.d.ts.map +0 -1
- package/dist/serializers/log.js +0 -222
- package/dist/serializers/note.d.ts +0 -124
- package/dist/serializers/note.d.ts.map +0 -1
- package/dist/serializers/note.js +0 -208
- package/dist/serializers/transaction.d.ts +0 -99
- package/dist/serializers/transaction.d.ts.map +0 -1
- package/dist/serializers/transaction.js +0 -275
- package/dist/wallet.d.ts +0 -62
- package/dist/wallet.d.ts.map +0 -1
- package/dist/wallet.js +0 -77
- package/docs/classes/AztecChainProvider.md +0 -553
- package/docs/classes/AztecChainWallet.md +0 -409
- package/docs/classes/AztecProvider.md +0 -1112
- package/docs/interfaces/AztecWalletBaseMethodMap.md +0 -135
- package/docs/interfaces/AztecWalletEventMap.md +0 -17
- package/docs/type-aliases/AztecChainWalletMiddleware.md +0 -13
- package/docs/type-aliases/AztecWalletContext.md +0 -29
- package/docs/type-aliases/AztecWalletMethodHandler.md +0 -37
- package/docs/type-aliases/AztecWalletMiddleware.md +0 -13
- package/docs/type-aliases/AztecWalletRouterClient.md +0 -13
- package/docs/type-aliases/TransactionFunctionCall.md +0 -33
- package/docs/type-aliases/TransactionParams.md +0 -27
- package/src/aztecRemoteWallet.test.ts +0 -504
- package/src/aztecRemoteWallet.ts +0 -467
- package/src/chainProvider.test.ts +0 -401
- package/src/chainProvider.ts +0 -116
- package/src/handlers/aztecAccountWallet.test.ts +0 -649
- package/src/handlers/aztecAccountWallet.ts +0 -532
- package/src/handlers/transactions.ts +0 -124
- package/src/handlers.test.ts +0 -270
- package/src/handlers.ts +0 -70
- package/src/provider.test.ts +0 -274
- package/src/provider.ts +0 -189
- package/src/serializers/account.test.ts +0 -125
- package/src/serializers/account.ts +0 -301
- package/src/serializers/contract.test.ts +0 -24
- package/src/serializers/contract.ts +0 -183
- package/src/serializers/index.test.ts +0 -136
- package/src/serializers/index.ts +0 -191
- package/src/serializers/log.test.ts +0 -286
- package/src/serializers/log.ts +0 -292
- package/src/serializers/note.test.ts +0 -125
- package/src/serializers/note.ts +0 -250
- package/src/serializers/transaction.test.ts +0 -320
- package/src/serializers/transaction.ts +0 -409
- package/src/wallet.test.ts +0 -275
- package/src/wallet.ts +0 -94
@@ -1,401 +0,0 @@
|
|
1
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
2
|
-
import type { JSONRPCRequest } from '@walletmesh/jsonrpc';
|
3
|
-
import { AztecChainProvider } from './chainProvider.js';
|
4
|
-
import { AztecWalletError } from './errors.js';
|
5
|
-
import type { ContractInstanceWithAddress, ContractArtifact, AztecAddress } from '@aztec/aztec.js';
|
6
|
-
import type { AztecWalletMethodMap } from './types.js';
|
7
|
-
|
8
|
-
const createMockTransport = () => ({
|
9
|
-
send: vi
|
10
|
-
.fn()
|
11
|
-
.mockImplementation(
|
12
|
-
async (_request: JSONRPCRequest<AztecWalletMethodMap, keyof AztecWalletMethodMap>) => {
|
13
|
-
// Default mock implementation that records the call but returns undefined
|
14
|
-
return undefined;
|
15
|
-
},
|
16
|
-
),
|
17
|
-
});
|
18
|
-
|
19
|
-
describe('AztecChainProvider', () => {
|
20
|
-
let provider: AztecChainProvider;
|
21
|
-
let mockTransport: ReturnType<typeof createMockTransport>;
|
22
|
-
|
23
|
-
beforeEach(() => {
|
24
|
-
mockTransport = createMockTransport();
|
25
|
-
provider = new AztecChainProvider(mockTransport);
|
26
|
-
});
|
27
|
-
|
28
|
-
afterEach(() => {
|
29
|
-
vi.clearAllMocks();
|
30
|
-
});
|
31
|
-
|
32
|
-
describe('getAccount', () => {
|
33
|
-
it('returns account address on success', async () => {
|
34
|
-
const expectedAddress = '0x1234567890abcdef';
|
35
|
-
const promise = provider.getAccount();
|
36
|
-
|
37
|
-
// Wait for the async operation to complete
|
38
|
-
await Promise.resolve();
|
39
|
-
|
40
|
-
// Get the request ID from the sent message
|
41
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
42
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
43
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
44
|
-
const request = firstCall[0];
|
45
|
-
if (!request) throw new Error('Expected request to be defined');
|
46
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_getAccount'>;
|
47
|
-
expect(sentRequest).toEqual({
|
48
|
-
jsonrpc: '2.0',
|
49
|
-
id: expect.any(String),
|
50
|
-
method: 'aztec_getAccount',
|
51
|
-
});
|
52
|
-
|
53
|
-
// Simulate response
|
54
|
-
await provider.receiveMessage({
|
55
|
-
jsonrpc: '2.0',
|
56
|
-
result: expectedAddress,
|
57
|
-
id: sentRequest.id,
|
58
|
-
});
|
59
|
-
|
60
|
-
const result = await promise;
|
61
|
-
expect(result).toBe(expectedAddress);
|
62
|
-
});
|
63
|
-
|
64
|
-
it('throws on invalid response', async () => {
|
65
|
-
const promise = provider.getAccount();
|
66
|
-
|
67
|
-
// Wait for the async operation to complete
|
68
|
-
await Promise.resolve();
|
69
|
-
|
70
|
-
// Get the request ID
|
71
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
72
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
73
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
74
|
-
const request = firstCall[0];
|
75
|
-
if (!request) throw new Error('Expected request to be defined');
|
76
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_getAccount'>;
|
77
|
-
|
78
|
-
// Simulate error response
|
79
|
-
await provider.receiveMessage({
|
80
|
-
jsonrpc: '2.0',
|
81
|
-
result: null,
|
82
|
-
id: sentRequest.id,
|
83
|
-
});
|
84
|
-
|
85
|
-
await expect(promise).rejects.toThrow(AztecWalletError);
|
86
|
-
});
|
87
|
-
});
|
88
|
-
|
89
|
-
describe('sendTransaction', () => {
|
90
|
-
const txParams = {
|
91
|
-
functionCalls: [
|
92
|
-
{
|
93
|
-
contractAddress: '0x1234',
|
94
|
-
functionName: 'transfer',
|
95
|
-
args: ['0x5678', 100],
|
96
|
-
},
|
97
|
-
],
|
98
|
-
};
|
99
|
-
|
100
|
-
it('returns transaction hash on success', async () => {
|
101
|
-
const expectedHash = '0xabcd';
|
102
|
-
const promise = provider.sendTransaction(txParams);
|
103
|
-
|
104
|
-
// Wait for the async operation to complete
|
105
|
-
await Promise.resolve();
|
106
|
-
|
107
|
-
// Get the request ID
|
108
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
109
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
110
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
111
|
-
const request = firstCall[0];
|
112
|
-
if (!request) throw new Error('Expected request to be defined');
|
113
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_sendTransaction'>;
|
114
|
-
expect(sentRequest).toEqual({
|
115
|
-
jsonrpc: '2.0',
|
116
|
-
id: expect.any(String),
|
117
|
-
method: 'aztec_sendTransaction',
|
118
|
-
params: txParams,
|
119
|
-
});
|
120
|
-
|
121
|
-
// Simulate response
|
122
|
-
await provider.receiveMessage({
|
123
|
-
jsonrpc: '2.0',
|
124
|
-
result: expectedHash,
|
125
|
-
id: sentRequest.id,
|
126
|
-
});
|
127
|
-
|
128
|
-
const result = await promise;
|
129
|
-
expect(result).toBe(expectedHash);
|
130
|
-
});
|
131
|
-
|
132
|
-
it('throws on invalid response', async () => {
|
133
|
-
const promise = provider.sendTransaction(txParams);
|
134
|
-
|
135
|
-
// Wait for the async operation to complete
|
136
|
-
await Promise.resolve();
|
137
|
-
|
138
|
-
// Get the request ID
|
139
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
140
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
141
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
142
|
-
const request = firstCall[0];
|
143
|
-
if (!request) throw new Error('Expected request to be defined');
|
144
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_sendTransaction'>;
|
145
|
-
|
146
|
-
// Simulate error response
|
147
|
-
await provider.receiveMessage({
|
148
|
-
jsonrpc: '2.0',
|
149
|
-
result: null,
|
150
|
-
id: sentRequest.id,
|
151
|
-
});
|
152
|
-
|
153
|
-
await expect(promise).rejects.toThrow(AztecWalletError);
|
154
|
-
});
|
155
|
-
});
|
156
|
-
|
157
|
-
describe('simulateTransaction', () => {
|
158
|
-
const txParams = {
|
159
|
-
contractAddress: '0x1234',
|
160
|
-
functionName: 'transfer',
|
161
|
-
args: ['0x5678', 100],
|
162
|
-
};
|
163
|
-
|
164
|
-
it('returns simulation result on success', async () => {
|
165
|
-
const expectedResult = { success: true, data: 'test' };
|
166
|
-
const promise = provider.simulateTransaction(txParams);
|
167
|
-
|
168
|
-
// Wait for the async operation to complete
|
169
|
-
await Promise.resolve();
|
170
|
-
|
171
|
-
// Get the request ID
|
172
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
173
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
174
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
175
|
-
const request = firstCall[0];
|
176
|
-
if (!request) throw new Error('Expected request to be defined');
|
177
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_simulateTransaction'>;
|
178
|
-
expect(sentRequest).toEqual({
|
179
|
-
jsonrpc: '2.0',
|
180
|
-
id: expect.any(String),
|
181
|
-
method: 'aztec_simulateTransaction',
|
182
|
-
params: txParams,
|
183
|
-
});
|
184
|
-
|
185
|
-
// Simulate response
|
186
|
-
await provider.receiveMessage({
|
187
|
-
jsonrpc: '2.0',
|
188
|
-
result: expectedResult,
|
189
|
-
id: sentRequest.id,
|
190
|
-
});
|
191
|
-
|
192
|
-
const result = await promise;
|
193
|
-
expect(result).toEqual(expectedResult);
|
194
|
-
});
|
195
|
-
|
196
|
-
it('throws on invalid response', async () => {
|
197
|
-
const promise = provider.simulateTransaction(txParams);
|
198
|
-
|
199
|
-
// Wait for the async operation to complete
|
200
|
-
await Promise.resolve();
|
201
|
-
|
202
|
-
// Get the request ID
|
203
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
204
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
205
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
206
|
-
const request = firstCall[0];
|
207
|
-
if (!request) throw new Error('Expected request to be defined');
|
208
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_simulateTransaction'>;
|
209
|
-
|
210
|
-
// Simulate error response
|
211
|
-
await provider.receiveMessage({
|
212
|
-
jsonrpc: '2.0',
|
213
|
-
result: null,
|
214
|
-
id: sentRequest.id,
|
215
|
-
});
|
216
|
-
|
217
|
-
await expect(promise).rejects.toThrow(AztecWalletError);
|
218
|
-
});
|
219
|
-
});
|
220
|
-
|
221
|
-
describe('registerContract', () => {
|
222
|
-
const contractParams = {
|
223
|
-
instance: { address: '0x1234' as unknown as AztecAddress } as ContractInstanceWithAddress,
|
224
|
-
artifact: { name: 'TestContract' } as ContractArtifact,
|
225
|
-
};
|
226
|
-
|
227
|
-
it('succeeds on valid response', async () => {
|
228
|
-
const promise = provider.registerContract(contractParams);
|
229
|
-
|
230
|
-
// Wait for the async operation to complete
|
231
|
-
await Promise.resolve();
|
232
|
-
|
233
|
-
// Get the request ID
|
234
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
235
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
236
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
237
|
-
const request = firstCall[0];
|
238
|
-
if (!request) throw new Error('Expected request to be defined');
|
239
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerContract'>;
|
240
|
-
expect(sentRequest).toEqual({
|
241
|
-
jsonrpc: '2.0',
|
242
|
-
id: expect.any(String),
|
243
|
-
method: 'aztec_registerContract',
|
244
|
-
params: contractParams,
|
245
|
-
});
|
246
|
-
|
247
|
-
// Simulate response
|
248
|
-
await provider.receiveMessage({
|
249
|
-
jsonrpc: '2.0',
|
250
|
-
result: true,
|
251
|
-
id: sentRequest.id,
|
252
|
-
});
|
253
|
-
|
254
|
-
await expect(promise).resolves.toBeUndefined();
|
255
|
-
});
|
256
|
-
|
257
|
-
it('throws on invalid response', async () => {
|
258
|
-
const promise = provider.registerContract(contractParams);
|
259
|
-
|
260
|
-
// Wait for the async operation to complete
|
261
|
-
await Promise.resolve();
|
262
|
-
|
263
|
-
// Get the request ID
|
264
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
265
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
266
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
267
|
-
const request = firstCall[0];
|
268
|
-
if (!request) throw new Error('Expected request to be defined');
|
269
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerContract'>;
|
270
|
-
|
271
|
-
// Simulate error response
|
272
|
-
await provider.receiveMessage({
|
273
|
-
jsonrpc: '2.0',
|
274
|
-
result: false,
|
275
|
-
id: sentRequest.id,
|
276
|
-
});
|
277
|
-
|
278
|
-
await expect(promise).rejects.toThrow(AztecWalletError);
|
279
|
-
});
|
280
|
-
});
|
281
|
-
|
282
|
-
describe('registerContractClass', () => {
|
283
|
-
const classParams = {
|
284
|
-
artifact: { name: 'TestContract' } as ContractArtifact,
|
285
|
-
};
|
286
|
-
|
287
|
-
it('succeeds on valid response', async () => {
|
288
|
-
const promise = provider.registerContractClass(classParams);
|
289
|
-
|
290
|
-
// Wait for the async operation to complete
|
291
|
-
await Promise.resolve();
|
292
|
-
|
293
|
-
// Get the request ID
|
294
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
295
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
296
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
297
|
-
const request = firstCall[0];
|
298
|
-
if (!request) throw new Error('Expected request to be defined');
|
299
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerContractClass'>;
|
300
|
-
expect(sentRequest).toEqual({
|
301
|
-
jsonrpc: '2.0',
|
302
|
-
id: expect.any(String),
|
303
|
-
method: 'aztec_registerContractClass',
|
304
|
-
params: classParams,
|
305
|
-
});
|
306
|
-
|
307
|
-
// Simulate response
|
308
|
-
await provider.receiveMessage({
|
309
|
-
jsonrpc: '2.0',
|
310
|
-
result: true,
|
311
|
-
id: sentRequest.id,
|
312
|
-
});
|
313
|
-
|
314
|
-
await expect(promise).resolves.toBeUndefined();
|
315
|
-
});
|
316
|
-
|
317
|
-
it('throws on invalid response', async () => {
|
318
|
-
const promise = provider.registerContractClass(classParams);
|
319
|
-
|
320
|
-
// Wait for the async operation to complete
|
321
|
-
await Promise.resolve();
|
322
|
-
|
323
|
-
// Get the request ID
|
324
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
325
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
326
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
327
|
-
const request = firstCall[0];
|
328
|
-
if (!request) throw new Error('Expected request to be defined');
|
329
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerContractClass'>;
|
330
|
-
|
331
|
-
// Simulate error response
|
332
|
-
await provider.receiveMessage({
|
333
|
-
jsonrpc: '2.0',
|
334
|
-
result: false,
|
335
|
-
id: sentRequest.id,
|
336
|
-
});
|
337
|
-
|
338
|
-
await expect(promise).rejects.toThrow(AztecWalletError);
|
339
|
-
});
|
340
|
-
});
|
341
|
-
|
342
|
-
describe('registerSender', () => {
|
343
|
-
const senderParams = {
|
344
|
-
sender: '0x1234' as unknown as AztecAddress,
|
345
|
-
};
|
346
|
-
|
347
|
-
it('succeeds on valid response', async () => {
|
348
|
-
const promise = provider.registerSender(senderParams);
|
349
|
-
|
350
|
-
// Wait for the async operation to complete
|
351
|
-
await Promise.resolve();
|
352
|
-
|
353
|
-
// Get the request ID
|
354
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
355
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
356
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
357
|
-
const request = firstCall[0];
|
358
|
-
if (!request) throw new Error('Expected request to be defined');
|
359
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerSender'>;
|
360
|
-
expect(sentRequest).toEqual({
|
361
|
-
jsonrpc: '2.0',
|
362
|
-
id: expect.any(String),
|
363
|
-
method: 'aztec_registerSender',
|
364
|
-
params: senderParams,
|
365
|
-
});
|
366
|
-
|
367
|
-
// Simulate response
|
368
|
-
await provider.receiveMessage({
|
369
|
-
jsonrpc: '2.0',
|
370
|
-
result: '0x1234',
|
371
|
-
id: sentRequest.id,
|
372
|
-
});
|
373
|
-
|
374
|
-
await expect(promise).resolves.toBeUndefined();
|
375
|
-
});
|
376
|
-
|
377
|
-
it('throws on invalid response', async () => {
|
378
|
-
const promise = provider.registerSender(senderParams);
|
379
|
-
|
380
|
-
// Wait for the async operation to complete
|
381
|
-
await Promise.resolve();
|
382
|
-
|
383
|
-
// Get the request ID
|
384
|
-
expect(mockTransport.send).toHaveBeenCalledTimes(1);
|
385
|
-
const firstCall = mockTransport.send.mock.calls[0];
|
386
|
-
if (!firstCall) throw new Error('Expected mock to be called');
|
387
|
-
const request = firstCall[0];
|
388
|
-
if (!request) throw new Error('Expected request to be defined');
|
389
|
-
const sentRequest = request as JSONRPCRequest<AztecWalletMethodMap, 'aztec_registerSender'>;
|
390
|
-
|
391
|
-
// Simulate error response
|
392
|
-
await provider.receiveMessage({
|
393
|
-
jsonrpc: '2.0',
|
394
|
-
result: null,
|
395
|
-
id: sentRequest.id,
|
396
|
-
});
|
397
|
-
|
398
|
-
await expect(promise).rejects.toThrow(AztecWalletError);
|
399
|
-
});
|
400
|
-
});
|
401
|
-
});
|
package/src/chainProvider.ts
DELETED
@@ -1,116 +0,0 @@
|
|
1
|
-
import { JSONRPCNode } from '@walletmesh/jsonrpc';
|
2
|
-
import { AztecWalletError, AztecWalletErrorType } from './errors.js';
|
3
|
-
import type { AztecWalletMethodMap, TransactionParams, TransactionFunctionCall } from './types.js';
|
4
|
-
import type { ContractInstanceWithAddress, ContractArtifact } from '@aztec/aztec.js';
|
5
|
-
|
6
|
-
/**
|
7
|
-
* Provider for directly interacting with an Aztec chain wallet.
|
8
|
-
* This is a minimal implementation that supports core Aztec operations
|
9
|
-
* without the complexity of multi-chain routing.
|
10
|
-
*/
|
11
|
-
export class AztecChainProvider extends JSONRPCNode<AztecWalletMethodMap> {
|
12
|
-
protected async makeRequest<M extends keyof AztecWalletMethodMap>(
|
13
|
-
method: M,
|
14
|
-
params?: AztecWalletMethodMap[M]['params'],
|
15
|
-
): Promise<AztecWalletMethodMap[M]['result']> {
|
16
|
-
try {
|
17
|
-
return await this.callMethod(method, params);
|
18
|
-
} catch (error) {
|
19
|
-
throw new AztecWalletError(
|
20
|
-
AztecWalletErrorType.invalidResponse,
|
21
|
-
error instanceof Error ? error.message : 'Invalid response received',
|
22
|
-
);
|
23
|
-
}
|
24
|
-
}
|
25
|
-
|
26
|
-
public async connect(): Promise<boolean> {
|
27
|
-
try {
|
28
|
-
await this.makeRequest('aztec_connect');
|
29
|
-
return true;
|
30
|
-
} catch (error) {
|
31
|
-
return false;
|
32
|
-
}
|
33
|
-
}
|
34
|
-
|
35
|
-
/**
|
36
|
-
* Gets the account address from the wallet.
|
37
|
-
* @returns The account address as a string
|
38
|
-
* @throws {AztecWalletError} If response is invalid
|
39
|
-
*/
|
40
|
-
public async getAccount(): Promise<string> {
|
41
|
-
const result = await this.makeRequest('aztec_getAccount');
|
42
|
-
if (typeof result !== 'string' || !result) {
|
43
|
-
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid account address returned');
|
44
|
-
}
|
45
|
-
return result;
|
46
|
-
}
|
47
|
-
|
48
|
-
/**
|
49
|
-
* Sends a transaction to the chain.
|
50
|
-
* @param params - Transaction parameters including function calls
|
51
|
-
* @returns Transaction hash
|
52
|
-
* @throws {AztecWalletError} If transaction fails or response invalid
|
53
|
-
*/
|
54
|
-
public async sendTransaction(params: TransactionParams): Promise<string> {
|
55
|
-
const result = await this.makeRequest('aztec_sendTransaction', params);
|
56
|
-
if (typeof result !== 'string' || !result) {
|
57
|
-
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid transaction hash returned');
|
58
|
-
}
|
59
|
-
return result;
|
60
|
-
}
|
61
|
-
|
62
|
-
/**
|
63
|
-
* Simulates a transaction without submitting it.
|
64
|
-
* @param params - Transaction parameters to simulate
|
65
|
-
* @returns Simulation result
|
66
|
-
* @throws {AztecWalletError} If simulation fails
|
67
|
-
*/
|
68
|
-
public async simulateTransaction(params: TransactionFunctionCall): Promise<unknown> {
|
69
|
-
const result = await this.makeRequest('aztec_simulateTransaction', params);
|
70
|
-
if (result === undefined || result === null) {
|
71
|
-
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Invalid simulation result returned');
|
72
|
-
}
|
73
|
-
return result;
|
74
|
-
}
|
75
|
-
|
76
|
-
/**
|
77
|
-
* Registers a contract instance with the wallet.
|
78
|
-
* @param params - Contract registration parameters
|
79
|
-
* @throws {AztecWalletError} If registration fails
|
80
|
-
*/
|
81
|
-
public async registerContract(params: {
|
82
|
-
instance: ContractInstanceWithAddress;
|
83
|
-
artifact?: ContractArtifact;
|
84
|
-
}): Promise<void> {
|
85
|
-
const result = await this.makeRequest('aztec_registerContract', params);
|
86
|
-
if (result !== true) {
|
87
|
-
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Contract registration failed');
|
88
|
-
}
|
89
|
-
}
|
90
|
-
|
91
|
-
/**
|
92
|
-
* Registers a contract class with the wallet.
|
93
|
-
* @param params - Contract class registration parameters
|
94
|
-
* @throws {AztecWalletError} If registration fails
|
95
|
-
*/
|
96
|
-
public async registerContractClass(params: {
|
97
|
-
artifact: ContractArtifact;
|
98
|
-
}): Promise<void> {
|
99
|
-
const result = await this.makeRequest('aztec_registerContractClass', params);
|
100
|
-
if (result !== true) {
|
101
|
-
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Contract class registration failed');
|
102
|
-
}
|
103
|
-
}
|
104
|
-
|
105
|
-
/**
|
106
|
-
* Registers a sender with the wallet.
|
107
|
-
* @param params - Sender registration parameters
|
108
|
-
* @throws {AztecWalletError} If registration fails
|
109
|
-
*/
|
110
|
-
public async registerSender(params: AztecWalletMethodMap['aztec_registerSender']['params']): Promise<void> {
|
111
|
-
const result = await this.makeRequest('aztec_registerSender', params);
|
112
|
-
if (!result) {
|
113
|
-
throw new AztecWalletError(AztecWalletErrorType.invalidResponse, 'Sender registration failed');
|
114
|
-
}
|
115
|
-
}
|
116
|
-
}
|