@walletmesh/aztec-rpc-wallet 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +201 -0
  3. package/README.md +260 -0
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/aztecRemoteWallet.d.ts +73 -0
  6. package/dist/aztecRemoteWallet.d.ts.map +1 -0
  7. package/dist/aztecRemoteWallet.js +354 -0
  8. package/dist/chainProvider.d.ts +56 -0
  9. package/dist/chainProvider.d.ts.map +1 -0
  10. package/dist/chainProvider.js +98 -0
  11. package/dist/contractArtifactCache.d.ts +50 -0
  12. package/dist/contractArtifactCache.d.ts.map +1 -0
  13. package/dist/contractArtifactCache.js +66 -0
  14. package/dist/errors.d.ts +50 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +62 -0
  17. package/dist/handlers/aztecAccountWallet.d.ts +4 -0
  18. package/dist/handlers/aztecAccountWallet.d.ts.map +1 -0
  19. package/dist/handlers/aztecAccountWallet.js +329 -0
  20. package/dist/handlers/transactions.d.ts +21 -0
  21. package/dist/handlers/transactions.d.ts.map +1 -0
  22. package/dist/handlers/transactions.js +90 -0
  23. package/dist/handlers.d.ts +27 -0
  24. package/dist/handlers.d.ts.map +1 -0
  25. package/dist/handlers.js +55 -0
  26. package/dist/index.d.ts +58 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +33 -0
  29. package/dist/provider.d.ts +105 -0
  30. package/dist/provider.d.ts.map +1 -0
  31. package/dist/provider.js +160 -0
  32. package/dist/serializers/account.d.ts +167 -0
  33. package/dist/serializers/account.d.ts.map +1 -0
  34. package/dist/serializers/account.js +245 -0
  35. package/dist/serializers/contract-utils.d.ts +40 -0
  36. package/dist/serializers/contract-utils.d.ts.map +1 -0
  37. package/dist/serializers/contract-utils.js +102 -0
  38. package/dist/serializers/contract.d.ts +168 -0
  39. package/dist/serializers/contract.d.ts.map +1 -0
  40. package/dist/serializers/contract.js +268 -0
  41. package/dist/serializers/core.d.ts +110 -0
  42. package/dist/serializers/core.d.ts.map +1 -0
  43. package/dist/serializers/core.js +130 -0
  44. package/dist/serializers/index.d.ts +28 -0
  45. package/dist/serializers/index.d.ts.map +1 -0
  46. package/dist/serializers/index.js +159 -0
  47. package/dist/serializers/log.d.ts +113 -0
  48. package/dist/serializers/log.d.ts.map +1 -0
  49. package/dist/serializers/log.js +231 -0
  50. package/dist/serializers/note.d.ts +127 -0
  51. package/dist/serializers/note.d.ts.map +1 -0
  52. package/dist/serializers/note.js +182 -0
  53. package/dist/serializers/transaction-utils.d.ts +107 -0
  54. package/dist/serializers/transaction-utils.d.ts.map +1 -0
  55. package/dist/serializers/transaction-utils.js +130 -0
  56. package/dist/serializers/transaction.d.ts +103 -0
  57. package/dist/serializers/transaction.d.ts.map +1 -0
  58. package/dist/serializers/transaction.js +238 -0
  59. package/dist/serializers/types.d.ts +49 -0
  60. package/dist/serializers/types.d.ts.map +1 -0
  61. package/dist/serializers/types.js +22 -0
  62. package/dist/types.d.ts +391 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +8 -0
  65. package/dist/wallet.d.ts +62 -0
  66. package/dist/wallet.d.ts.map +1 -0
  67. package/dist/wallet.js +77 -0
  68. package/package.json +44 -0
  69. package/src/aztecRemoteWallet.test.ts +542 -0
  70. package/src/aztecRemoteWallet.ts +484 -0
  71. package/src/chainProvider.test.ts +322 -0
  72. package/src/chainProvider.ts +122 -0
  73. package/src/contractArtifactCache.test.ts +126 -0
  74. package/src/contractArtifactCache.ts +75 -0
  75. package/src/errors.ts +71 -0
  76. package/src/handlers/aztecAccountWallet.test.ts +720 -0
  77. package/src/handlers/aztecAccountWallet.ts +593 -0
  78. package/src/handlers/transactions.ts +110 -0
  79. package/src/handlers.test.ts +270 -0
  80. package/src/handlers.ts +70 -0
  81. package/src/index.test.ts +23 -0
  82. package/src/index.ts +64 -0
  83. package/src/provider.test.ts +276 -0
  84. package/src/provider.ts +189 -0
  85. package/src/serializers/account.test.ts +125 -0
  86. package/src/serializers/account.ts +319 -0
  87. package/src/serializers/contract-utils.ts +104 -0
  88. package/src/serializers/contract.test.ts +162 -0
  89. package/src/serializers/contract.ts +350 -0
  90. package/src/serializers/core.test.ts +56 -0
  91. package/src/serializers/core.ts +141 -0
  92. package/src/serializers/index.test.ts +122 -0
  93. package/src/serializers/index.ts +213 -0
  94. package/src/serializers/log.test.ts +119 -0
  95. package/src/serializers/log.ts +283 -0
  96. package/src/serializers/note.test.ts +100 -0
  97. package/src/serializers/note.ts +227 -0
  98. package/src/serializers/transaction-utils.ts +237 -0
  99. package/src/serializers/transaction.test.ts +153 -0
  100. package/src/serializers/transaction.ts +342 -0
  101. package/src/serializers/types.ts +58 -0
  102. package/src/types.ts +295 -0
  103. package/src/wallet.test.ts +275 -0
  104. package/src/wallet.ts +94 -0
  105. package/tsconfig.build.json +6 -0
  106. package/tsconfig.json +11 -0
  107. package/typedoc.json +15 -0
  108. package/vitest.config.ts +10 -0
@@ -0,0 +1,484 @@
1
+ import type {
2
+ AuthWitness,
3
+ AztecAddress,
4
+ ContractArtifact,
5
+ ContractClassWithId,
6
+ ContractInstanceWithAddress,
7
+ ExtendedNote,
8
+ TxExecutionRequest,
9
+ TxHash,
10
+ TxReceipt,
11
+ L2Block,
12
+ LogFilter,
13
+ Point,
14
+ SiblingPath,
15
+ PartialAddress,
16
+ CompleteAddress,
17
+ NodeInfo,
18
+ Tx,
19
+ Wallet,
20
+ } from '@aztec/aztec.js';
21
+
22
+ import type { IntentAction, IntentInnerHash } from '@aztec/aztec.js/utils';
23
+ import type { ExecutionRequestInit } from '@aztec/aztec.js/entrypoint';
24
+ import type { AbiDecoded } from '@aztec/foundation/abi';
25
+ import type {
26
+ IncomingNotesFilter,
27
+ EventMetadataDefinition,
28
+ PrivateExecutionResult,
29
+ TxProvingResult,
30
+ UniqueNote,
31
+ GetUnencryptedLogsResponse,
32
+ PXEInfo,
33
+ TxSimulationResult,
34
+ InBlock,
35
+ TxEffect,
36
+ } from '@aztec/circuit-types';
37
+ import type { GasFees, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
38
+
39
+ import { Fr } from '@aztec/aztec.js';
40
+
41
+ import type { JSONRPCTransport } from '@walletmesh/jsonrpc';
42
+ import { AztecProvider } from './provider.js';
43
+ import type { AztecChainId, AztecWalletMethodMap } from './types.js';
44
+
45
+ export class AztecRemoteWallet implements Wallet {
46
+ private _address: AztecAddress | undefined;
47
+ private _completeAddress: CompleteAddress | undefined;
48
+ private _chainId: Fr | undefined;
49
+ private _version: Fr | undefined;
50
+ private _scopes: AztecAddress[] | undefined;
51
+
52
+ constructor(
53
+ private _provider: AztecProvider,
54
+ private _providerChainId: AztecChainId,
55
+ ) {}
56
+
57
+ async isL1ToL2MessageSynced(l1ToL2Message: Fr): Promise<boolean> {
58
+ return this._provider
59
+ .chain(this._providerChainId)
60
+ .call('aztec_isL1ToL2MessageSynced', { l1ToL2Message })
61
+ .execute() as Promise<AztecWalletMethodMap['aztec_isL1ToL2MessageSynced']['result']>;
62
+ }
63
+
64
+ getAddress(): AztecAddress {
65
+ if (!this._address) {
66
+ this._provider
67
+ .chain(this._providerChainId)
68
+ .call('aztec_getAddress')
69
+ .execute()
70
+ .then((result) => {
71
+ this._address = result as AztecWalletMethodMap['aztec_getAddress']['result'];
72
+ });
73
+ throw new Error('Address not yet available');
74
+ }
75
+ return this._address;
76
+ }
77
+
78
+ getCompleteAddress(): CompleteAddress {
79
+ if (!this._completeAddress) {
80
+ this._provider
81
+ .chain(this._providerChainId)
82
+ .call('aztec_getCompleteAddress')
83
+ .execute()
84
+ .then((result) => {
85
+ this._completeAddress = result as AztecWalletMethodMap['aztec_getCompleteAddress']['result'];
86
+ });
87
+ throw new Error('Complete address not yet available');
88
+ }
89
+ return this._completeAddress;
90
+ }
91
+
92
+ getChainId(): Fr {
93
+ if (!this._chainId) {
94
+ this._provider
95
+ .chain(this._providerChainId)
96
+ .call('aztec_getChainId')
97
+ .execute()
98
+ .then((result) => {
99
+ const chainId = result as AztecWalletMethodMap['aztec_getChainId']['result'];
100
+ this._chainId = Fr.fromString(chainId.toString(10));
101
+ });
102
+ throw new Error('Chain ID not yet available');
103
+ }
104
+ return this._chainId;
105
+ }
106
+
107
+ getVersion(): Fr {
108
+ if (!this._version) {
109
+ this._provider
110
+ .chain(this._providerChainId)
111
+ .call('aztec_getVersion')
112
+ .execute()
113
+ .then((result) => {
114
+ const version = result as AztecWalletMethodMap['aztec_getVersion']['result'];
115
+ this._version = Fr.fromString(version.toString(10));
116
+ });
117
+ throw new Error('Version not yet available');
118
+ }
119
+ return this._version;
120
+ }
121
+
122
+ async createTxExecutionRequest(exec: ExecutionRequestInit): Promise<TxExecutionRequest> {
123
+ return this._provider
124
+ .chain(this._providerChainId)
125
+ .call('aztec_createTxExecutionRequest', { exec })
126
+ .execute() as Promise<AztecWalletMethodMap['aztec_createTxExecutionRequest']['result']>;
127
+ }
128
+
129
+ async createAuthWit(intent: Fr | Buffer | IntentAction | IntentInnerHash): Promise<AuthWitness> {
130
+ return this._provider
131
+ .chain(this._providerChainId)
132
+ .call('aztec_createAuthWit', { intent })
133
+ .execute() as Promise<AztecWalletMethodMap['aztec_createAuthWit']['result']>;
134
+ }
135
+
136
+ setScopes(scopes: AztecAddress[]): void {
137
+ // TODO: would be nice to return a promise here
138
+ this._scopes = scopes;
139
+ this._provider
140
+ .chain(this._providerChainId)
141
+ .call('aztec_setScopes', { scopes })
142
+ .execute()
143
+ .then((result) => {
144
+ const success = result as AztecWalletMethodMap['aztec_setScopes']['result'];
145
+ console.debug(`setScopes(${scopes}) result: ${success}`);
146
+ });
147
+ }
148
+
149
+ getScopes(): AztecAddress[] {
150
+ // TODO: would be nice to return a promise here
151
+ if (!this._scopes) {
152
+ this._provider
153
+ .chain(this._providerChainId)
154
+ .call('aztec_getScopes')
155
+ .execute()
156
+ .then((result) => {
157
+ this._scopes = result as AztecWalletMethodMap['aztec_getScopes']['result'];
158
+ });
159
+ throw new Error('Scopes not yet available');
160
+ }
161
+ return this._scopes;
162
+ }
163
+
164
+ async getScopesAsync(): Promise<AztecAddress[]> {
165
+ const scopes = (await this._provider
166
+ .chain(this._providerChainId)
167
+ .call('aztec_getScopes')
168
+ .execute()) as AztecWalletMethodMap['aztec_getScopes']['result'];
169
+ this._scopes = scopes;
170
+ return scopes;
171
+ }
172
+
173
+ async getContractInstance(address: AztecAddress): Promise<ContractInstanceWithAddress | undefined> {
174
+ return this._provider
175
+ .chain(this._providerChainId)
176
+ .call('aztec_getContractInstance', { address })
177
+ .execute() as Promise<AztecWalletMethodMap['aztec_getContractInstance']['result']>;
178
+ }
179
+
180
+ async getContractClass(id: Fr): Promise<ContractClassWithId | undefined> {
181
+ return this._provider
182
+ .chain(this._providerChainId)
183
+ .call('aztec_getContractClass', { id })
184
+ .execute() as Promise<AztecWalletMethodMap['aztec_getContractClass']['result']>;
185
+ }
186
+
187
+ async getContractArtifact(id: Fr): Promise<ContractArtifact | undefined> {
188
+ return this._provider
189
+ .chain(this._providerChainId)
190
+ .call('aztec_getContractArtifact', { id })
191
+ .execute() as Promise<AztecWalletMethodMap['aztec_getContractArtifact']['result']>;
192
+ }
193
+
194
+ async addCapsule(capsule: Fr[]): Promise<void> {
195
+ const result = (await this._provider
196
+ .chain(this._providerChainId)
197
+ .call('aztec_addCapsule', { capsule })
198
+ .execute()) as AztecWalletMethodMap['aztec_addCapsule']['result'];
199
+ if (!result) throw new Error('Failed to add capsule');
200
+ }
201
+
202
+ async registerAccount(secretKey: Fr, partialAddress: PartialAddress): Promise<CompleteAddress> {
203
+ return this._provider
204
+ .chain(this._providerChainId)
205
+ .call('aztec_registerAccount', { secretKey, partialAddress })
206
+ .execute() as Promise<AztecWalletMethodMap['aztec_registerAccount']['result']>;
207
+ }
208
+
209
+ async getRegisteredAccounts(): Promise<CompleteAddress[]> {
210
+ return this._provider
211
+ .chain(this._providerChainId)
212
+ .call('aztec_getRegisteredAccounts')
213
+ .execute() as Promise<AztecWalletMethodMap['aztec_getRegisteredAccounts']['result']>;
214
+ }
215
+
216
+ async registerSender(address: AztecAddress): Promise<AztecAddress> {
217
+ return this._provider
218
+ .chain(this._providerChainId)
219
+ .call('aztec_registerSender', { sender: address })
220
+ .execute() as Promise<AztecWalletMethodMap['aztec_registerSender']['result']>;
221
+ }
222
+
223
+ async getSenders(): Promise<AztecAddress[]> {
224
+ return this._provider.chain(this._providerChainId).call('aztec_getSenders').execute() as Promise<
225
+ AztecWalletMethodMap['aztec_getSenders']['result']
226
+ >;
227
+ }
228
+
229
+ async removeSender(address: AztecAddress): Promise<void> {
230
+ const result = (await this._provider
231
+ .chain(this._providerChainId)
232
+ .call('aztec_removeSender', { sender: address })
233
+ .execute()) as AztecWalletMethodMap['aztec_removeSender']['result'];
234
+ if (!result) throw new Error('Failed to remove sender');
235
+ }
236
+
237
+ async registerContract(contract: {
238
+ instance: ContractInstanceWithAddress;
239
+ artifact?: ContractArtifact;
240
+ }): Promise<void> {
241
+ const result = (await this._provider
242
+ .chain(this._providerChainId)
243
+ .call('aztec_registerContract', { instance: contract.instance, artifact: contract.artifact })
244
+ .execute()) as AztecWalletMethodMap['aztec_registerContract']['result'];
245
+ if (!result) throw new Error('Failed to register contract');
246
+ }
247
+
248
+ async registerContractClass(artifact: ContractArtifact): Promise<void> {
249
+ const result = (await this._provider
250
+ .chain(this._providerChainId)
251
+ .call('aztec_registerContractClass', { artifact })
252
+ .execute()) as AztecWalletMethodMap['aztec_registerContractClass']['result'];
253
+ if (!result) throw new Error('Failed to register contract class');
254
+ }
255
+
256
+ async getContracts(): Promise<AztecAddress[]> {
257
+ return this._provider.chain(this._providerChainId).call('aztec_getContracts').execute() as Promise<
258
+ AztecWalletMethodMap['aztec_getContracts']['result']
259
+ >;
260
+ }
261
+
262
+ async proveTx(
263
+ txRequest: TxExecutionRequest,
264
+ privateExecutionResult: PrivateExecutionResult,
265
+ ): Promise<TxProvingResult> {
266
+ return this._provider
267
+ .chain(this._providerChainId)
268
+ .call('aztec_proveTx', { txRequest, privateExecutionResult })
269
+ .execute() as Promise<AztecWalletMethodMap['aztec_proveTx']['result']>;
270
+ }
271
+
272
+ async simulateTx(
273
+ txRequest: TxExecutionRequest,
274
+ simulatePublic: boolean,
275
+ msgSender?: AztecAddress,
276
+ skipTxValidation?: boolean,
277
+ enforceFeePayment?: boolean,
278
+ profile?: boolean,
279
+ ): Promise<TxSimulationResult> {
280
+ const scopes = await this.getScopesAsync();
281
+ return this._provider
282
+ .chain(this._providerChainId)
283
+ .call('aztec_simulateTx', {
284
+ txRequest,
285
+ simulatePublic,
286
+ msgSender,
287
+ skipTxValidation,
288
+ enforceFeePayment,
289
+ profile,
290
+ })
291
+ .execute() as Promise<AztecWalletMethodMap['aztec_simulateTx']['result']>;
292
+ }
293
+
294
+ async sendTx(tx: Tx): Promise<TxHash> {
295
+ return this._provider.chain(this._providerChainId).call('aztec_sendTx', { tx }).execute() as Promise<
296
+ AztecWalletMethodMap['aztec_sendTx']['result']
297
+ >;
298
+ }
299
+
300
+ async getTxEffect(txHash: TxHash): Promise<InBlock<TxEffect>> {
301
+ return this._provider
302
+ .chain(this._providerChainId)
303
+ .call('aztec_getTxEffect', { txHash })
304
+ .execute() as Promise<AztecWalletMethodMap['aztec_getTxEffect']['result']>;
305
+ }
306
+
307
+ async getTxReceipt(txHash: TxHash): Promise<TxReceipt> {
308
+ return this._provider
309
+ .chain(this._providerChainId)
310
+ .call('aztec_getTxReceipt', { txHash })
311
+ .execute() as Promise<AztecWalletMethodMap['aztec_getTxReceipt']['result']>;
312
+ }
313
+
314
+ async getIncomingNotes(filter: IncomingNotesFilter): Promise<UniqueNote[]> {
315
+ return this._provider
316
+ .chain(this._providerChainId)
317
+ .call('aztec_getIncomingNotes', { filter })
318
+ .execute() as Promise<AztecWalletMethodMap['aztec_getIncomingNotes']['result']>;
319
+ }
320
+
321
+ async getPublicStorageAt(contract: AztecAddress, storageSlot: Fr): Promise<Fr> {
322
+ return this._provider
323
+ .chain(this._providerChainId)
324
+ .call('aztec_getPublicStorageAt', { contract, storageSlot })
325
+ .execute() as Promise<AztecWalletMethodMap['aztec_getPublicStorageAt']['result']>;
326
+ }
327
+
328
+ async addNote(note: ExtendedNote): Promise<void> {
329
+ const result = (await this._provider
330
+ .chain(this._providerChainId)
331
+ .call('aztec_addNote', { note })
332
+ .execute()) as AztecWalletMethodMap['aztec_addNote']['result'];
333
+ if (!result) throw new Error('Failed to add note');
334
+ }
335
+
336
+ async addNullifiedNote(note: ExtendedNote): Promise<void> {
337
+ const result = (await this._provider
338
+ .chain(this._providerChainId)
339
+ .call('aztec_addNullifiedNote', { note })
340
+ .execute()) as AztecWalletMethodMap['aztec_addNullifiedNote']['result'];
341
+ if (!result) throw new Error('Failed to add nullified note');
342
+ }
343
+
344
+ async getBlock(number: number): Promise<L2Block | undefined> {
345
+ return this._provider
346
+ .chain(this._providerChainId)
347
+ .call('aztec_getBlock', { number })
348
+ .execute() as Promise<AztecWalletMethodMap['aztec_getBlock']['result']>;
349
+ }
350
+
351
+ async getCurrentBaseFees(): Promise<GasFees> {
352
+ return this._provider.chain(this._providerChainId).call('aztec_getCurrentBaseFees').execute() as Promise<
353
+ AztecWalletMethodMap['aztec_getCurrentBaseFees']['result']
354
+ >;
355
+ }
356
+
357
+ async simulateUnconstrained(
358
+ functionName: string,
359
+ args: unknown[],
360
+ to: AztecAddress,
361
+ from?: AztecAddress,
362
+ ): Promise<AbiDecoded> {
363
+ return this._provider
364
+ .chain(this._providerChainId)
365
+ .call('aztec_simulateUnconstrained', { functionName, args, to, from })
366
+ .execute() as Promise<AztecWalletMethodMap['aztec_simulateUnconstrained']['result']>;
367
+ }
368
+
369
+ async getUnencryptedLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse> {
370
+ return this._provider
371
+ .chain(this._providerChainId)
372
+ .call('aztec_getUnencryptedLogs', { filter })
373
+ .execute() as Promise<AztecWalletMethodMap['aztec_getUnencryptedLogs']['result']>;
374
+ }
375
+
376
+ async getContractClassLogs(filter: LogFilter): Promise<GetUnencryptedLogsResponse> {
377
+ return this._provider
378
+ .chain(this._providerChainId)
379
+ .call('aztec_getContractClassLogs', { filter })
380
+ .execute() as Promise<AztecWalletMethodMap['aztec_getContractClassLogs']['result']>;
381
+ }
382
+
383
+ async getBlockNumber(): Promise<number> {
384
+ return this._provider.chain(this._providerChainId).call('aztec_getBlockNumber').execute() as Promise<
385
+ AztecWalletMethodMap['aztec_getBlockNumber']['result']
386
+ >;
387
+ }
388
+
389
+ async getProvenBlockNumber(): Promise<number> {
390
+ return this._provider
391
+ .chain(this._providerChainId)
392
+ .call('aztec_getProvenBlockNumber')
393
+ .execute() as Promise<AztecWalletMethodMap['aztec_getProvenBlockNumber']['result']>;
394
+ }
395
+
396
+ async getNodeInfo(): Promise<NodeInfo> {
397
+ return this._provider.chain(this._providerChainId).call('aztec_getNodeInfo').execute() as Promise<
398
+ AztecWalletMethodMap['aztec_getNodeInfo']['result']
399
+ >;
400
+ }
401
+
402
+ async addAuthWitness(authWitness: AuthWitness): Promise<void> {
403
+ const result = (await this._provider
404
+ .chain(this._providerChainId)
405
+ .call('aztec_addAuthWitness', { authWitness })
406
+ .execute()) as AztecWalletMethodMap['aztec_addAuthWitness']['result'];
407
+ if (!result) throw new Error('Failed to add auth witness');
408
+ }
409
+
410
+ async getAuthWitness(messageHash: Fr): Promise<Fr[]> {
411
+ return (await this._provider
412
+ .chain(this._providerChainId)
413
+ .call('aztec_getAuthWitness', { messageHash })
414
+ .execute()) as Promise<AztecWalletMethodMap['aztec_getAuthWitness']['result']>;
415
+ }
416
+
417
+ async isContractClassPubliclyRegistered(id: Fr): Promise<boolean> {
418
+ return this._provider
419
+ .chain(this._providerChainId)
420
+ .call('aztec_isContractClassPubliclyRegistered', { id })
421
+ .execute() as Promise<AztecWalletMethodMap['aztec_isContractClassPubliclyRegistered']['result']>;
422
+ }
423
+
424
+ async isContractPubliclyDeployed(address: AztecAddress): Promise<boolean> {
425
+ return this._provider
426
+ .chain(this._providerChainId)
427
+ .call('aztec_isContractPubliclyDeployed', { address })
428
+ .execute() as Promise<AztecWalletMethodMap['aztec_isContractPubliclyDeployed']['result']>;
429
+ }
430
+
431
+ async isContractInitialized(address: AztecAddress): Promise<boolean> {
432
+ return this._provider
433
+ .chain(this._providerChainId)
434
+ .call('aztec_isContractInitialized', { address })
435
+ .execute() as Promise<AztecWalletMethodMap['aztec_isContractInitialized']['result']>;
436
+ }
437
+
438
+ async getPXEInfo(): Promise<PXEInfo> {
439
+ return this._provider.chain(this._providerChainId).call('aztec_getPXEInfo').execute() as Promise<
440
+ AztecWalletMethodMap['aztec_getPXEInfo']['result']
441
+ >;
442
+ }
443
+
444
+ getEncryptedEvents<T>(
445
+ event: EventMetadataDefinition,
446
+ from: number,
447
+ limit: number,
448
+ vpks: Point[] = [],
449
+ ): Promise<T[]> {
450
+ const completeAddress = this.getCompleteAddress();
451
+ return this._provider
452
+ .chain(this._providerChainId)
453
+ .call('aztec_getEncryptedEvents', {
454
+ event,
455
+ from,
456
+ limit,
457
+ vpks: vpks.length ? vpks : [completeAddress.publicKeys.masterIncomingViewingPublicKey],
458
+ })
459
+ .execute() as Promise<T[]>;
460
+ }
461
+
462
+ getUnencryptedEvents<T>(event: EventMetadataDefinition, from: number, limit: number): Promise<T[]> {
463
+ return this._provider
464
+ .chain(this._providerChainId)
465
+ .call('aztec_getUnencryptedEvents', { event, from, limit })
466
+ .execute() as Promise<T[]>;
467
+ }
468
+
469
+ async getL1ToL2MembershipWitness(
470
+ contractAddress: AztecAddress,
471
+ messageHash: Fr,
472
+ secret: Fr,
473
+ ): Promise<[bigint, SiblingPath<typeof L1_TO_L2_MSG_TREE_HEIGHT>]> {
474
+ return this._provider
475
+ .chain(this._providerChainId)
476
+ .call('aztec_getL1ToL2MembershipWitness', { contractAddress, messageHash, secret })
477
+ .execute() as Promise<AztecWalletMethodMap['aztec_getL1ToL2MembershipWitness']['result']>;
478
+ }
479
+ }
480
+
481
+ export function createAztecRPCWallet(transport: JSONRPCTransport, chainId: AztecChainId): AztecRemoteWallet {
482
+ const provider = new AztecProvider(transport);
483
+ return new AztecRemoteWallet(provider, chainId);
484
+ }