@walletmesh/aztec-rpc-wallet 0.1.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 (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
+ }