@aztec/wallet-sdk 0.0.1-commit.d1f2d6c → 0.0.1-commit.d431d1c
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/README.md +294 -217
- package/dest/base-wallet/base_wallet.d.ts +4 -4
- package/dest/base-wallet/base_wallet.d.ts.map +1 -1
- package/dest/base-wallet/base_wallet.js +4 -9
- package/dest/crypto.d.ts +50 -59
- package/dest/crypto.d.ts.map +1 -1
- package/dest/crypto.js +108 -202
- package/dest/manager/index.d.ts +8 -2
- package/dest/manager/index.d.ts.map +1 -1
- package/dest/manager/index.js +6 -0
- package/dest/manager/types.d.ts +6 -88
- package/dest/manager/types.d.ts.map +1 -1
- package/dest/manager/types.js +1 -17
- package/dest/manager/wallet_manager.d.ts +7 -50
- package/dest/manager/wallet_manager.d.ts.map +1 -1
- package/dest/manager/wallet_manager.js +44 -174
- package/dest/providers/extension/extension_provider.d.ts +63 -0
- package/dest/providers/extension/extension_provider.d.ts.map +1 -0
- package/dest/providers/extension/extension_provider.js +124 -0
- package/dest/providers/extension/extension_wallet.d.ts +155 -0
- package/dest/providers/extension/extension_wallet.d.ts.map +1 -0
- package/dest/{extension/provider → providers/extension}/extension_wallet.js +95 -48
- package/dest/providers/extension/index.d.ts +6 -0
- package/dest/providers/extension/index.d.ts.map +1 -0
- package/dest/{extension/provider → providers/extension}/index.js +2 -0
- package/dest/types.d.ts +12 -43
- package/dest/types.d.ts.map +1 -1
- package/dest/types.js +2 -3
- package/package.json +9 -10
- package/src/base-wallet/base_wallet.ts +8 -15
- package/src/crypto.ts +113 -237
- package/src/manager/index.ts +10 -2
- package/src/manager/types.ts +5 -91
- package/src/manager/wallet_manager.ts +46 -192
- package/src/providers/extension/extension_provider.ts +167 -0
- package/src/{extension/provider → providers/extension}/extension_wallet.ts +110 -52
- package/src/providers/extension/index.ts +5 -0
- package/src/types.ts +10 -44
- package/dest/emoji_alphabet.d.ts +0 -35
- package/dest/emoji_alphabet.d.ts.map +0 -1
- package/dest/emoji_alphabet.js +0 -299
- package/dest/extension/handlers/background_connection_handler.d.ts +0 -158
- package/dest/extension/handlers/background_connection_handler.d.ts.map +0 -1
- package/dest/extension/handlers/background_connection_handler.js +0 -258
- package/dest/extension/handlers/content_script_connection_handler.d.ts +0 -56
- package/dest/extension/handlers/content_script_connection_handler.d.ts.map +0 -1
- package/dest/extension/handlers/content_script_connection_handler.js +0 -174
- package/dest/extension/handlers/index.d.ts +0 -12
- package/dest/extension/handlers/index.d.ts.map +0 -1
- package/dest/extension/handlers/index.js +0 -10
- package/dest/extension/handlers/internal_message_types.d.ts +0 -63
- package/dest/extension/handlers/internal_message_types.d.ts.map +0 -1
- package/dest/extension/handlers/internal_message_types.js +0 -22
- package/dest/extension/provider/extension_provider.d.ts +0 -107
- package/dest/extension/provider/extension_provider.d.ts.map +0 -1
- package/dest/extension/provider/extension_provider.js +0 -160
- package/dest/extension/provider/extension_wallet.d.ts +0 -131
- package/dest/extension/provider/extension_wallet.d.ts.map +0 -1
- package/dest/extension/provider/index.d.ts +0 -3
- package/dest/extension/provider/index.d.ts.map +0 -1
- package/src/emoji_alphabet.ts +0 -317
- package/src/extension/handlers/background_connection_handler.ts +0 -423
- package/src/extension/handlers/content_script_connection_handler.ts +0 -246
- package/src/extension/handlers/index.ts +0 -25
- package/src/extension/handlers/internal_message_types.ts +0 -69
- package/src/extension/provider/extension_provider.ts +0 -233
- package/src/extension/provider/index.ts +0 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension_wallet.d.ts","sourceRoot":"","sources":["../../../src/providers/extension/extension_wallet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,wBAAwB,CAAC;AAOnE,OAAO,EAAE,KAAK,UAAU,EAA8D,MAAM,gBAAgB,CAAC;AAa7G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,eAAe;IAexB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,SAAS;IAlBnB,sEAAsE;IACtE,OAAO,CAAC,QAAQ,CAAoD;IACpE,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,mBAAmB,CAA4B;IAEvD;;;;;;;OAOG;IACH,OAAO,eAMH;IAEJ,mCAAmC;IACnC,OAAO,CAAC,WAAW,CAAuB;IAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,MAAM,CAAC,MAAM,CACX,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,MAAM,GACZ,eAAe,CAWjB;IAED;;;;;;;;;;;;;;OAcG;IACH,SAAS,IAAI,MAAM,CAuBlB;YAUa,uBAAuB;YA0DvB,WAAW;IA2BzB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAQrD;IAED;;;;OAIG;IACH,cAAc,IAAI,OAAO,CAExB;IAED;;;;;;;;;;;;;OAaG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BhC;CACF"}
|
|
@@ -6,30 +6,30 @@ import { decrypt, encrypt } from '../../crypto.js';
|
|
|
6
6
|
import { WalletMessageType } from '../../types.js';
|
|
7
7
|
/**
|
|
8
8
|
* A wallet implementation that communicates with browser extension wallets
|
|
9
|
-
* using
|
|
9
|
+
* using a secure encrypted MessageChannel.
|
|
10
10
|
*
|
|
11
|
-
* This class uses a secure channel
|
|
11
|
+
* This class uses a pre-established secure channel from the discovery phase:
|
|
12
12
|
*
|
|
13
|
-
* 1. **MessageChannel**:
|
|
14
|
-
*
|
|
13
|
+
* 1. **MessageChannel**: A private communication channel created during discovery,
|
|
14
|
+
* not visible to other scripts on the page (unlike window.postMessage).
|
|
15
15
|
*
|
|
16
|
-
* 2. **ECDH Key Exchange**: The shared secret was derived
|
|
17
|
-
* Elliptic Curve Diffie-Hellman key exchange
|
|
16
|
+
* 2. **ECDH Key Exchange**: The shared secret was derived during discovery using
|
|
17
|
+
* Elliptic Curve Diffie-Hellman key exchange.
|
|
18
18
|
*
|
|
19
19
|
* 3. **AES-GCM Encryption**: All messages are encrypted using AES-256-GCM,
|
|
20
|
-
* providing both confidentiality and authenticity.
|
|
20
|
+
* providing both confidentiality and authenticity.
|
|
21
21
|
*
|
|
22
22
|
* @example
|
|
23
23
|
* ```typescript
|
|
24
|
-
* //
|
|
25
|
-
* const
|
|
26
|
-
* const
|
|
24
|
+
* // Discovery returns wallets with secure channel components
|
|
25
|
+
* const wallets = await ExtensionProvider.discoverExtensions(chainInfo);
|
|
26
|
+
* const { info, port, sharedKey } = wallets[0];
|
|
27
27
|
*
|
|
28
28
|
* // User can verify emoji if desired
|
|
29
|
-
* console.log('Verify:', hashToEmoji(
|
|
29
|
+
* console.log('Verify:', hashToEmoji(info.verificationHash!));
|
|
30
30
|
*
|
|
31
|
-
* // Create wallet using the
|
|
32
|
-
* const wallet = ExtensionWallet.create(
|
|
31
|
+
* // Create wallet using the discovered components
|
|
32
|
+
* const wallet = await ExtensionWallet.create(info, chainInfo, port, sharedKey, 'my-dapp');
|
|
33
33
|
*
|
|
34
34
|
* // All subsequent calls are encrypted
|
|
35
35
|
* const accounts = await wallet.getAccounts();
|
|
@@ -59,47 +59,68 @@ import { WalletMessageType } from '../../types.js';
|
|
|
59
59
|
this.inFlight = new Map();
|
|
60
60
|
this.disconnected = false;
|
|
61
61
|
this.disconnectCallbacks = [];
|
|
62
|
+
this.walletProxy = null;
|
|
62
63
|
}
|
|
64
|
+
/** Cached Wallet proxy instance */ walletProxy;
|
|
63
65
|
/**
|
|
64
|
-
* Creates
|
|
66
|
+
* Creates an ExtensionWallet instance that communicates with a browser extension
|
|
65
67
|
* over a secure encrypted MessageChannel.
|
|
66
68
|
*
|
|
67
|
-
* @param
|
|
68
|
-
* @param port - The MessagePort for encrypted communication with the wallet
|
|
69
|
-
* @param sharedKey - The derived AES-256-GCM shared key for encryption
|
|
69
|
+
* @param walletInfo - The wallet info from ExtensionProvider.discoverExtensions()
|
|
70
70
|
* @param chainInfo - The chain information (chainId and version) for request context
|
|
71
|
+
* @param port - The MessagePort for private communication with the wallet
|
|
72
|
+
* @param sharedKey - The derived AES-256-GCM shared key for encryption
|
|
71
73
|
* @param appId - Application identifier used to identify the requesting dApp to the wallet
|
|
72
|
-
* @returns
|
|
74
|
+
* @returns The ExtensionWallet instance. Use {@link getWallet} to get the Wallet interface.
|
|
73
75
|
*
|
|
74
76
|
* @example
|
|
75
77
|
* ```typescript
|
|
76
|
-
* const
|
|
77
|
-
* const
|
|
78
|
-
* const
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
78
|
+
* const wallets = await ExtensionProvider.discoverExtensions(chainInfo);
|
|
79
|
+
* const { info, port, sharedKey } = wallets[0];
|
|
80
|
+
* const extensionWallet = ExtensionWallet.create(
|
|
81
|
+
* info,
|
|
82
|
+
* { chainId: Fr(31337), version: Fr(0) },
|
|
83
|
+
* port,
|
|
84
|
+
* sharedKey,
|
|
83
85
|
* 'my-defi-app'
|
|
84
86
|
* );
|
|
85
87
|
*
|
|
88
|
+
* // Register disconnect handler
|
|
89
|
+
* extensionWallet.onDisconnect(() => console.log('Disconnected!'));
|
|
90
|
+
*
|
|
91
|
+
* // Get the Wallet interface for dApp usage
|
|
92
|
+
* const wallet = extensionWallet.getWallet();
|
|
86
93
|
* const accounts = await wallet.getAccounts();
|
|
87
94
|
* ```
|
|
88
|
-
*/ static create(
|
|
89
|
-
const wallet = new ExtensionWallet(chainInfo, appId,
|
|
90
|
-
// Set up message handler
|
|
95
|
+
*/ static create(walletInfo, chainInfo, port, sharedKey, appId) {
|
|
96
|
+
const wallet = new ExtensionWallet(chainInfo, appId, walletInfo.id, port, sharedKey);
|
|
97
|
+
// Set up message handler - all messages are now encrypted
|
|
91
98
|
wallet.port.onmessage = (event)=>{
|
|
92
|
-
|
|
93
|
-
// Check for unencrypted disconnect notification
|
|
94
|
-
if (data && typeof data === 'object' && 'type' in data && data.type === WalletMessageType.DISCONNECT) {
|
|
95
|
-
wallet.handleDisconnect();
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
// Otherwise treat as encrypted payload
|
|
99
|
-
void wallet.handleEncryptedResponse(data);
|
|
99
|
+
void wallet.handleEncryptedResponse(event.data);
|
|
100
100
|
};
|
|
101
101
|
wallet.port.start();
|
|
102
|
-
return
|
|
102
|
+
return wallet;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Returns a Wallet interface that proxies all method calls through the secure channel.
|
|
106
|
+
*
|
|
107
|
+
* The returned Wallet can be used directly by dApps - all method calls are automatically
|
|
108
|
+
* encrypted and sent to the wallet extension.
|
|
109
|
+
*
|
|
110
|
+
* @returns A Wallet implementation that encrypts all communication
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* const extensionWallet = ExtensionWallet.create(info, chainInfo, port, sharedKey, 'my-app');
|
|
115
|
+
* const wallet = extensionWallet.getWallet();
|
|
116
|
+
* const accounts = await wallet.getAccounts();
|
|
117
|
+
* ```
|
|
118
|
+
*/ getWallet() {
|
|
119
|
+
if (this.walletProxy) {
|
|
120
|
+
return this.walletProxy;
|
|
121
|
+
}
|
|
122
|
+
// Create a Proxy that intercepts wallet method calls and forwards them to the extension
|
|
123
|
+
this.walletProxy = new Proxy(this, {
|
|
103
124
|
get: (target, prop)=>{
|
|
104
125
|
if (schemaHasMethod(WalletSchema, prop.toString())) {
|
|
105
126
|
return async (...args)=>{
|
|
@@ -114,6 +135,7 @@ import { WalletMessageType } from '../../types.js';
|
|
|
114
135
|
}
|
|
115
136
|
}
|
|
116
137
|
});
|
|
138
|
+
return this.walletProxy;
|
|
117
139
|
}
|
|
118
140
|
/**
|
|
119
141
|
* Handles an encrypted response received from the wallet extension.
|
|
@@ -129,6 +151,12 @@ import { WalletMessageType } from '../../types.js';
|
|
|
129
151
|
try {
|
|
130
152
|
const response = await decrypt(this.sharedKey, encrypted);
|
|
131
153
|
const { messageId, result, error, walletId: responseWalletId } = response;
|
|
154
|
+
// Check for disconnect notification from the wallet backend
|
|
155
|
+
// This is sent as an encrypted error response with a special type
|
|
156
|
+
if (error && typeof error === 'object' && 'type' in error && error.type === WalletMessageType.SESSION_DISCONNECTED) {
|
|
157
|
+
this.handleDisconnect();
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
132
160
|
if (!messageId || !responseWalletId) {
|
|
133
161
|
return;
|
|
134
162
|
}
|
|
@@ -175,7 +203,8 @@ import { WalletMessageType } from '../../types.js';
|
|
|
175
203
|
appId: this.appId,
|
|
176
204
|
walletId: this.extensionId
|
|
177
205
|
};
|
|
178
|
-
|
|
206
|
+
// Encrypt the message and send over the private MessageChannel
|
|
207
|
+
const encrypted = await encrypt(this.sharedKey, message);
|
|
179
208
|
this.port.postMessage(encrypted);
|
|
180
209
|
const { promise, resolve, reject } = promiseWithResolvers();
|
|
181
210
|
this.inFlight.set(messageId, {
|
|
@@ -194,20 +223,25 @@ import { WalletMessageType } from '../../types.js';
|
|
|
194
223
|
return;
|
|
195
224
|
}
|
|
196
225
|
this.disconnected = true;
|
|
226
|
+
// Close the port to prevent any further messages
|
|
197
227
|
if (this.port) {
|
|
198
228
|
this.port.onmessage = null;
|
|
199
229
|
this.port.close();
|
|
200
230
|
}
|
|
231
|
+
// Reject all pending requests
|
|
232
|
+
// Note: These rejections should be caught by the callers, but we log them
|
|
233
|
+
// here to help with debugging if they become unhandled
|
|
201
234
|
const error = new Error('Wallet disconnected');
|
|
202
235
|
for (const { reject } of this.inFlight.values()){
|
|
203
236
|
reject(error);
|
|
204
237
|
}
|
|
205
238
|
this.inFlight.clear();
|
|
239
|
+
// Notify registered callbacks
|
|
206
240
|
for (const callback of this.disconnectCallbacks){
|
|
207
241
|
try {
|
|
208
242
|
callback();
|
|
209
243
|
} catch {
|
|
210
|
-
// Ignore errors
|
|
244
|
+
// Ignore errors in callbacks
|
|
211
245
|
}
|
|
212
246
|
}
|
|
213
247
|
}
|
|
@@ -251,21 +285,34 @@ import { WalletMessageType } from '../../types.js';
|
|
|
251
285
|
*
|
|
252
286
|
* @example
|
|
253
287
|
* ```typescript
|
|
254
|
-
* const
|
|
288
|
+
* const wallet = await provider.connect('my-app');
|
|
255
289
|
* // ... use wallet ...
|
|
256
|
-
* await
|
|
290
|
+
* await wallet.disconnect(); // Clean disconnect when done
|
|
257
291
|
* ```
|
|
258
|
-
*/
|
|
259
|
-
async disconnect() {
|
|
292
|
+
*/ async disconnect() {
|
|
260
293
|
if (this.disconnected) {
|
|
261
294
|
return;
|
|
262
295
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
296
|
+
// Send disconnect message to extension before closing
|
|
297
|
+
if (this.port && this.sharedKey) {
|
|
298
|
+
try {
|
|
299
|
+
const message = {
|
|
300
|
+
type: WalletMessageType.DISCONNECT,
|
|
301
|
+
messageId: globalThis.crypto.randomUUID(),
|
|
302
|
+
chainInfo: this.chainInfo,
|
|
303
|
+
appId: this.appId,
|
|
304
|
+
walletId: this.extensionId,
|
|
305
|
+
args: []
|
|
306
|
+
};
|
|
307
|
+
const encrypted = await encrypt(this.sharedKey, message);
|
|
308
|
+
this.port.postMessage(encrypted);
|
|
309
|
+
} catch {
|
|
310
|
+
// Ignore errors sending disconnect message
|
|
311
|
+
}
|
|
268
312
|
}
|
|
269
313
|
this.handleDisconnect();
|
|
314
|
+
if (this.port) {
|
|
315
|
+
this.port.close();
|
|
316
|
+
}
|
|
270
317
|
}
|
|
271
318
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ExtensionWallet, type DisconnectCallback } from './extension_wallet.js';
|
|
2
|
+
export { ExtensionProvider, type DiscoveredWallet } from './extension_provider.js';
|
|
3
|
+
export * from '../../crypto.js';
|
|
4
|
+
export { WalletMessageType } from '../../types.js';
|
|
5
|
+
export type { WalletInfo, WalletMessage, WalletResponse, DiscoveryRequest, DiscoveryResponse } from '../../types.js';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvZXh0ZW5zaW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsS0FBSyxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxLQUFLLGdCQUFnQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkYsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxZQUFZLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/extension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACnF,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dest/types.d.ts
CHANGED
|
@@ -9,16 +9,13 @@ export declare enum WalletMessageType {
|
|
|
9
9
|
DISCOVERY = "aztec-wallet-discovery",
|
|
10
10
|
/** Discovery response from a wallet */
|
|
11
11
|
DISCOVERY_RESPONSE = "aztec-wallet-discovery-response",
|
|
12
|
-
/**
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
|
|
16
|
-
/** Key exchange response sent over MessageChannel */
|
|
17
|
-
KEY_EXCHANGE_RESPONSE = "aztec-wallet-key-exchange-response"
|
|
12
|
+
/** Session disconnected notification (unencrypted control message) */
|
|
13
|
+
SESSION_DISCONNECTED = "aztec-wallet-session-disconnected",
|
|
14
|
+
/** Explicit disconnect request from dApp */
|
|
15
|
+
DISCONNECT = "aztec-wallet-disconnect"
|
|
18
16
|
}
|
|
19
17
|
/**
|
|
20
|
-
* Information about an installed Aztec wallet
|
|
21
|
-
* Used during discovery phase before key exchange.
|
|
18
|
+
* Information about an installed Aztec wallet
|
|
22
19
|
*/
|
|
23
20
|
export interface WalletInfo {
|
|
24
21
|
/** Unique identifier for the wallet */
|
|
@@ -29,16 +26,10 @@ export interface WalletInfo {
|
|
|
29
26
|
icon?: string;
|
|
30
27
|
/** Wallet version */
|
|
31
28
|
version: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Full information about a connected Aztec wallet including crypto material.
|
|
35
|
-
* Available after key exchange completes.
|
|
36
|
-
*/
|
|
37
|
-
export interface ConnectedWalletInfo extends WalletInfo {
|
|
38
29
|
/** Wallet's ECDH public key for secure channel establishment */
|
|
39
30
|
publicKey: ExportedPublicKey;
|
|
40
31
|
/**
|
|
41
|
-
*
|
|
32
|
+
* Hash of the shared secret for anti-MITM verification.
|
|
42
33
|
* Both dApp and wallet independently compute this from the ECDH shared secret.
|
|
43
34
|
* Use {@link hashToEmoji} to convert to a visual representation for user verification.
|
|
44
35
|
*/
|
|
@@ -75,49 +66,27 @@ export interface WalletResponse {
|
|
|
75
66
|
walletId: string;
|
|
76
67
|
}
|
|
77
68
|
/**
|
|
78
|
-
* Discovery message for finding installed wallets (public, unencrypted)
|
|
69
|
+
* Discovery message for finding installed wallets (public, unencrypted)
|
|
79
70
|
*/
|
|
80
71
|
export interface DiscoveryRequest {
|
|
81
72
|
/** Message type for discovery */
|
|
82
73
|
type: WalletMessageType.DISCOVERY;
|
|
83
74
|
/** Request ID */
|
|
84
75
|
requestId: string;
|
|
85
|
-
/** Application ID making the request */
|
|
86
|
-
appId: string;
|
|
87
76
|
/** Chain information to check if wallet supports this network */
|
|
88
77
|
chainInfo: ChainInfo;
|
|
78
|
+
/** dApp's ECDH public key for deriving shared secret */
|
|
79
|
+
publicKey: ExportedPublicKey;
|
|
89
80
|
}
|
|
90
81
|
/**
|
|
91
|
-
* Discovery response from a wallet (public, unencrypted)
|
|
82
|
+
* Discovery response from a wallet (public, unencrypted)
|
|
92
83
|
*/
|
|
93
84
|
export interface DiscoveryResponse {
|
|
94
85
|
/** Message type for discovery response */
|
|
95
86
|
type: WalletMessageType.DISCOVERY_RESPONSE;
|
|
96
87
|
/** Request ID matching the discovery request */
|
|
97
88
|
requestId: string;
|
|
98
|
-
/**
|
|
89
|
+
/** Wallet information */
|
|
99
90
|
walletInfo: WalletInfo;
|
|
100
91
|
}
|
|
101
|
-
|
|
102
|
-
* Key exchange request sent over MessageChannel after discovery approval.
|
|
103
|
-
*/
|
|
104
|
-
export interface KeyExchangeRequest {
|
|
105
|
-
/** Message type */
|
|
106
|
-
type: WalletMessageType.KEY_EXCHANGE_REQUEST;
|
|
107
|
-
/** Request ID matching the discovery request */
|
|
108
|
-
requestId: string;
|
|
109
|
-
/** dApp's ECDH public key for deriving shared secret */
|
|
110
|
-
publicKey: ExportedPublicKey;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Key exchange response sent over MessageChannel.
|
|
114
|
-
*/
|
|
115
|
-
export interface KeyExchangeResponse {
|
|
116
|
-
/** Message type */
|
|
117
|
-
type: WalletMessageType.KEY_EXCHANGE_RESPONSE;
|
|
118
|
-
/** Request ID matching the discovery request */
|
|
119
|
-
requestId: string;
|
|
120
|
-
/** Wallet's ECDH public key for deriving shared secret */
|
|
121
|
-
publicKey: ExportedPublicKey;
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRDs7O0dBR0c7QUFDSCxvQkFBWSxpQkFBaUI7SUFDM0Isa0RBQWtEO0lBQ2xELFNBQVMsMkJBQTJCO0lBQ3BDLHVDQUF1QztJQUN2QyxrQkFBa0Isb0NBQW9DO0lBQ3RELHNFQUFzRTtJQUN0RSxVQUFVLDRCQUE0QjtJQUN0QyxvREFBb0Q7SUFDcEQsb0JBQW9CLHNDQUFzQztJQUMxRCxxREFBcUQ7SUFDckQscUJBQXFCLHVDQUF1QztDQUM3RDtBQUVEOzs7R0FHRztBQUNILE1BQU0sV0FBVyxVQUFVO0lBQ3pCLHVDQUF1QztJQUN2QyxFQUFFLEVBQUUsTUFBTSxDQUFDO0lBQ1gsaUNBQWlDO0lBQ2pDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYiwrQkFBK0I7SUFDL0IsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2QscUJBQXFCO0lBQ3JCLE9BQU8sRUFBRSxNQUFNLENBQUM7Q0FDakI7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFdBQVcsbUJBQW9CLFNBQVEsVUFBVTtJQUNyRCxnRUFBZ0U7SUFDaEUsU0FBUyxFQUFFLGlCQUFpQixDQUFDO0lBQzdCOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUMzQjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLGFBQWE7SUFDNUIsK0NBQStDO0lBQy9DLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0NBQWdDO0lBQ2hDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYiwrQkFBK0I7SUFDL0IsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hCLHdCQUF3QjtJQUN4QixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLHdDQUF3QztJQUN4QyxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQ2QsNENBQTRDO0lBQzVDLFFBQVEsRUFBRSxNQUFNLENBQUM7Q0FDbEI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxjQUFjO0lBQzdCLHNDQUFzQztJQUN0QyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGtDQUFrQztJQUNsQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDakIsNkJBQTZCO0lBQzdCLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUNoQix1Q0FBdUM7SUFDdkMsUUFBUSxFQUFFLE1BQU0sQ0FBQztDQUNsQjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLGdCQUFnQjtJQUMvQixpQ0FBaUM7SUFDakMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztJQUNsQyxpQkFBaUI7SUFDakIsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQix3Q0FBd0M7SUFDeEMsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUNkLGlFQUFpRTtJQUNqRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0NBQ3RCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsaUJBQWlCO0lBQ2hDLDBDQUEwQztJQUMxQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsa0JBQWtCLENBQUM7SUFDM0MsZ0RBQWdEO0lBQ2hELFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsK0JBQStCO0lBQy9CLFVBQVUsRUFBRSxVQUFVLENBQUM7Q0FDeEI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxrQkFBa0I7SUFDakMsbUJBQW1CO0lBQ25CLElBQUksRUFBRSxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQztJQUM3QyxnREFBZ0Q7SUFDaEQsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQix3REFBd0Q7SUFDeEQsU0FBUyxFQUFFLGlCQUFpQixDQUFDO0NBQzlCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsbUJBQW1CO0lBQ2xDLG1CQUFtQjtJQUNuQixJQUFJLEVBQUUsaUJBQWlCLENBQUMscUJBQXFCLENBQUM7SUFDOUMsZ0RBQWdEO0lBQ2hELFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsMERBQTBEO0lBQzFELFNBQVMsRUFBRSxpQkFBaUIsQ0FBQztDQUM5QiJ9
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVyRDs7O0dBR0c7QUFDSCxvQkFBWSxpQkFBaUI7SUFDM0Isa0RBQWtEO0lBQ2xELFNBQVMsMkJBQTJCO0lBQ3BDLHVDQUF1QztJQUN2QyxrQkFBa0Isb0NBQW9DO0lBQ3RELHNFQUFzRTtJQUN0RSxvQkFBb0Isc0NBQXNDO0lBQzFELDRDQUE0QztJQUM1QyxVQUFVLDRCQUE0QjtDQUN2QztBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLFVBQVU7SUFDekIsdUNBQXVDO0lBQ3ZDLEVBQUUsRUFBRSxNQUFNLENBQUM7SUFDWCxpQ0FBaUM7SUFDakMsSUFBSSxFQUFFLE1BQU0sQ0FBQztJQUNiLCtCQUErQjtJQUMvQixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDZCxxQkFBcUI7SUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQztJQUNoQixnRUFBZ0U7SUFDaEUsU0FBUyxFQUFFLGlCQUFpQixDQUFDO0lBQzdCOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUMzQjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLGFBQWE7SUFDNUIsK0NBQStDO0lBQy9DLFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsZ0NBQWdDO0lBQ2hDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDYiwrQkFBK0I7SUFDL0IsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hCLHdCQUF3QjtJQUN4QixTQUFTLEVBQUUsU0FBUyxDQUFDO0lBQ3JCLHdDQUF3QztJQUN4QyxLQUFLLEVBQUUsTUFBTSxDQUFDO0lBQ2QsNENBQTRDO0lBQzVDLFFBQVEsRUFBRSxNQUFNLENBQUM7Q0FDbEI7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxjQUFjO0lBQzdCLHNDQUFzQztJQUN0QyxTQUFTLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGtDQUFrQztJQUNsQyxNQUFNLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDakIsNkJBQTZCO0lBQzdCLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUNoQix1Q0FBdUM7SUFDdkMsUUFBUSxFQUFFLE1BQU0sQ0FBQztDQUNsQjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxXQUFXLGdCQUFnQjtJQUMvQixpQ0FBaUM7SUFDakMsSUFBSSxFQUFFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQztJQUNsQyxpQkFBaUI7SUFDakIsU0FBUyxFQUFFLE1BQU0sQ0FBQztJQUNsQixpRUFBaUU7SUFDakUsU0FBUyxFQUFFLFNBQVMsQ0FBQztJQUNyQix3REFBd0Q7SUFDeEQsU0FBUyxFQUFFLGlCQUFpQixDQUFDO0NBQzlCO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcsaUJBQWlCO0lBQ2hDLDBDQUEwQztJQUMxQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsa0JBQWtCLENBQUM7SUFDM0MsZ0RBQWdEO0lBQ2hELFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIseUJBQXlCO0lBQ3pCLFVBQVUsRUFBRSxVQUFVLENBQUM7Q0FDeEIifQ==
|
package/dest/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,kDAAkD;IAClD,SAAS,2BAA2B;IACpC,uCAAuC;IACvC,kBAAkB,oCAAoC;IACtD,sEAAsE;IACtE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;GAGG;AACH,oBAAY,iBAAiB;IAC3B,kDAAkD;IAClD,SAAS,2BAA2B;IACpC,uCAAuC;IACvC,kBAAkB,oCAAoC;IACtD,sEAAsE;IACtE,oBAAoB,sCAAsC;IAC1D,4CAA4C;IAC5C,UAAU,4BAA4B;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,gEAAgE;IAChE,SAAS,EAAE,iBAAiB,CAAC;IAC7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,wBAAwB;IACxB,SAAS,EAAE,SAAS,CAAC;IACrB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,sCAAsC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,iCAAiC;IACjC,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC;IAClC,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,SAAS,EAAE,SAAS,CAAC;IACrB,wDAAwD;IACxD,SAAS,EAAE,iBAAiB,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,IAAI,EAAE,iBAAiB,CAAC,kBAAkB,CAAC;IAC3C,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC;CACxB"}
|
package/dest/types.js
CHANGED
|
@@ -4,8 +4,7 @@
|
|
|
4
4
|
*/ export var WalletMessageType = /*#__PURE__*/ function(WalletMessageType) {
|
|
5
5
|
/** Discovery request to find installed wallets */ WalletMessageType["DISCOVERY"] = "aztec-wallet-discovery";
|
|
6
6
|
/** Discovery response from a wallet */ WalletMessageType["DISCOVERY_RESPONSE"] = "aztec-wallet-discovery-response";
|
|
7
|
-
/**
|
|
8
|
-
/**
|
|
9
|
-
/** Key exchange response sent over MessageChannel */ WalletMessageType["KEY_EXCHANGE_RESPONSE"] = "aztec-wallet-key-exchange-response";
|
|
7
|
+
/** Session disconnected notification (unencrypted control message) */ WalletMessageType["SESSION_DISCONNECTED"] = "aztec-wallet-session-disconnected";
|
|
8
|
+
/** Explicit disconnect request from dApp */ WalletMessageType["DISCONNECT"] = "aztec-wallet-disconnect";
|
|
10
9
|
return WalletMessageType;
|
|
11
10
|
}({});
|
package/package.json
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aztec/wallet-sdk",
|
|
3
3
|
"homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/yarn-project/wallet-sdk",
|
|
4
|
-
"version": "0.0.1-commit.
|
|
4
|
+
"version": "0.0.1-commit.d431d1c",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
7
7
|
"./base-wallet": "./dest/base-wallet/index.js",
|
|
8
|
-
"./extension
|
|
9
|
-
"./extension/provider": "./dest/extension/provider/index.js",
|
|
8
|
+
"./providers/extension": "./dest/providers/extension/index.js",
|
|
10
9
|
"./crypto": "./dest/crypto.js",
|
|
11
10
|
"./types": "./dest/types.js",
|
|
12
11
|
"./manager": "./dest/manager/index.js"
|
|
@@ -65,15 +64,15 @@
|
|
|
65
64
|
]
|
|
66
65
|
},
|
|
67
66
|
"dependencies": {
|
|
68
|
-
"@aztec/aztec.js": "0.0.1-commit.
|
|
69
|
-
"@aztec/constants": "0.0.1-commit.
|
|
70
|
-
"@aztec/entrypoints": "0.0.1-commit.
|
|
71
|
-
"@aztec/foundation": "0.0.1-commit.
|
|
72
|
-
"@aztec/pxe": "0.0.1-commit.
|
|
73
|
-
"@aztec/stdlib": "0.0.1-commit.
|
|
67
|
+
"@aztec/aztec.js": "0.0.1-commit.d431d1c",
|
|
68
|
+
"@aztec/constants": "0.0.1-commit.d431d1c",
|
|
69
|
+
"@aztec/entrypoints": "0.0.1-commit.d431d1c",
|
|
70
|
+
"@aztec/foundation": "0.0.1-commit.d431d1c",
|
|
71
|
+
"@aztec/pxe": "0.0.1-commit.d431d1c",
|
|
72
|
+
"@aztec/stdlib": "0.0.1-commit.d431d1c"
|
|
74
73
|
},
|
|
75
74
|
"devDependencies": {
|
|
76
|
-
"@aztec/noir-contracts.js": "0.0.1-commit.
|
|
75
|
+
"@aztec/noir-contracts.js": "0.0.1-commit.d431d1c",
|
|
77
76
|
"@jest/globals": "^30.0.0",
|
|
78
77
|
"@types/jest": "^30.0.0",
|
|
79
78
|
"@types/node": "^22.15.17",
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { Account } from '@aztec/aztec.js/account';
|
|
2
2
|
import type { CallIntent, IntentInnerHash } from '@aztec/aztec.js/authorization';
|
|
3
|
-
import { type InteractionWaitOptions, NO_WAIT, type SendReturn } from '@aztec/aztec.js/contracts';
|
|
4
3
|
import type { FeePaymentMethod } from '@aztec/aztec.js/fee';
|
|
5
|
-
import { waitForTx } from '@aztec/aztec.js/node';
|
|
6
4
|
import type {
|
|
7
5
|
Aliased,
|
|
8
6
|
BatchResults,
|
|
@@ -45,7 +43,9 @@ import { siloNullifier } from '@aztec/stdlib/hash';
|
|
|
45
43
|
import type { AztecNode } from '@aztec/stdlib/interfaces/client';
|
|
46
44
|
import type {
|
|
47
45
|
TxExecutionRequest,
|
|
46
|
+
TxHash,
|
|
48
47
|
TxProfileResult,
|
|
48
|
+
TxReceipt,
|
|
49
49
|
TxSimulationResult,
|
|
50
50
|
UtilitySimulationResult,
|
|
51
51
|
} from '@aztec/stdlib/tx';
|
|
@@ -282,10 +282,7 @@ export abstract class BaseWallet implements Wallet {
|
|
|
282
282
|
return this.pxe.profileTx(txRequest, opts.profileMode, opts.skipProofGeneration ?? true);
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
|
|
286
|
-
executionPayload: ExecutionPayload,
|
|
287
|
-
opts: SendOptions<W>,
|
|
288
|
-
): Promise<SendReturn<W>> {
|
|
285
|
+
async sendTx(executionPayload: ExecutionPayload, opts: SendOptions): Promise<TxHash> {
|
|
289
286
|
const feeOptions = await this.completeFeeOptions(opts.from, executionPayload.feePayer, opts.fee?.gasSettings);
|
|
290
287
|
const txRequest = await this.createTxExecutionRequestFromPayloadAndFee(executionPayload, opts.from, feeOptions);
|
|
291
288
|
const provenTx = await this.pxe.proveTx(txRequest);
|
|
@@ -299,15 +296,7 @@ export abstract class BaseWallet implements Wallet {
|
|
|
299
296
|
throw this.contextualizeError(err, inspect(tx));
|
|
300
297
|
});
|
|
301
298
|
this.log.info(`Sent transaction ${txHash}`);
|
|
302
|
-
|
|
303
|
-
// If wait is NO_WAIT, return txHash immediately
|
|
304
|
-
if (opts.wait === NO_WAIT) {
|
|
305
|
-
return txHash as SendReturn<W>;
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
// Otherwise, wait for the full receipt (default behavior on wait: undefined)
|
|
309
|
-
const waitOpts = typeof opts.wait === 'object' ? opts.wait : undefined;
|
|
310
|
-
return (await waitForTx(this.aztecNode, txHash, waitOpts)) as SendReturn<W>;
|
|
299
|
+
return txHash;
|
|
311
300
|
}
|
|
312
301
|
|
|
313
302
|
protected contextualizeError(err: Error, ...context: string[]): Error {
|
|
@@ -328,6 +317,10 @@ export abstract class BaseWallet implements Wallet {
|
|
|
328
317
|
return this.pxe.simulateUtility(call, authwits);
|
|
329
318
|
}
|
|
330
319
|
|
|
320
|
+
getTxReceipt(txHash: TxHash): Promise<TxReceipt> {
|
|
321
|
+
return this.aztecNode.getTxReceipt(txHash);
|
|
322
|
+
}
|
|
323
|
+
|
|
331
324
|
async getPrivateEvents<T>(
|
|
332
325
|
eventDef: EventMetadataDefinition,
|
|
333
326
|
eventFilter: PrivateEventFilter,
|