@manahippo/aptos-wallet-adapter 0.4.5 → 0.4.6
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 +4 -2
- package/dist/WalletAdapters/AptosSnap.d.ts +15 -9
- package/dist/WalletAdapters/AptosSnap.d.ts.map +1 -1
- package/dist/WalletAdapters/AptosSnap.js +41 -2
- package/dist/WalletAdapters/AptosSnap.js.map +1 -1
- package/dist/WalletAdapters/BaseAdapter.d.ts +25 -8
- package/dist/WalletAdapters/BaseAdapter.d.ts.map +1 -1
- package/dist/WalletAdapters/BaseAdapter.js +7 -1
- package/dist/WalletAdapters/BaseAdapter.js.map +1 -1
- package/dist/WalletAdapters/FewchaWallet.d.ts +11 -5
- package/dist/WalletAdapters/FewchaWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/FewchaWallet.js +54 -3
- package/dist/WalletAdapters/FewchaWallet.js.map +1 -1
- package/dist/WalletAdapters/FletchWallet.d.ts +11 -5
- package/dist/WalletAdapters/FletchWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/FletchWallet.js +41 -2
- package/dist/WalletAdapters/FletchWallet.js.map +1 -1
- package/dist/WalletAdapters/HippoExtensionWallet.d.ts +11 -6
- package/dist/WalletAdapters/HippoExtensionWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/HippoExtensionWallet.js +41 -2
- package/dist/WalletAdapters/HippoExtensionWallet.js.map +1 -1
- package/dist/WalletAdapters/HippoWallet.d.ts +11 -6
- package/dist/WalletAdapters/HippoWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/HippoWallet.js +33 -2
- package/dist/WalletAdapters/HippoWallet.js.map +1 -1
- package/dist/WalletAdapters/HyperPayWallet.d.ts +13 -8
- package/dist/WalletAdapters/HyperPayWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/HyperPayWallet.js +39 -0
- package/dist/WalletAdapters/HyperPayWallet.js.map +1 -1
- package/dist/WalletAdapters/MartianWallet.d.ts +19 -8
- package/dist/WalletAdapters/MartianWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/MartianWallet.js +63 -2
- package/dist/WalletAdapters/MartianWallet.js.map +1 -1
- package/dist/WalletAdapters/NightlyWallet.d.ts +7 -1
- package/dist/WalletAdapters/NightlyWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/NightlyWallet.js +41 -2
- package/dist/WalletAdapters/NightlyWallet.js.map +1 -1
- package/dist/WalletAdapters/PetraWallet.d.ts +25 -11
- package/dist/WalletAdapters/PetraWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/PetraWallet.js +66 -2
- package/dist/WalletAdapters/PetraWallet.js.map +1 -1
- package/dist/WalletAdapters/PontemWallet.d.ts +17 -9
- package/dist/WalletAdapters/PontemWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/PontemWallet.js +65 -2
- package/dist/WalletAdapters/PontemWallet.js.map +1 -1
- package/dist/WalletAdapters/RiseWallet.d.ts +12 -7
- package/dist/WalletAdapters/RiseWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/RiseWallet.js +41 -2
- package/dist/WalletAdapters/RiseWallet.js.map +1 -1
- package/dist/WalletAdapters/SpikaWallet.d.ts +12 -6
- package/dist/WalletAdapters/SpikaWallet.d.ts.map +1 -1
- package/dist/WalletAdapters/SpikaWallet.js +41 -2
- package/dist/WalletAdapters/SpikaWallet.js.map +1 -1
- package/dist/WalletProviders/WalletProvider.d.ts.map +1 -1
- package/dist/WalletProviders/WalletProvider.js +45 -6
- package/dist/WalletProviders/WalletProvider.js.map +1 -1
- package/dist/WalletProviders/errors.d.ts +9 -0
- package/dist/WalletProviders/errors.d.ts.map +1 -1
- package/dist/WalletProviders/errors.js +22 -1
- package/dist/WalletProviders/errors.js.map +1 -1
- package/dist/WalletProviders/useWallet.d.ts +6 -5
- package/dist/WalletProviders/useWallet.d.ts.map +1 -1
- package/dist/WalletProviders/useWallet.js.map +1 -1
- package/dist/utilities/util.d.ts +2 -2
- package/dist/utilities/util.d.ts.map +1 -1
- package/dist/utilities/util.js.map +1 -1
- package/package.json +2 -2
- package/src/WalletAdapters/AptosSnap.ts +58 -20
- package/src/WalletAdapters/BaseAdapter.ts +29 -8
- package/src/WalletAdapters/FewchaWallet.ts +72 -10
- package/src/WalletAdapters/FletchWallet.ts +226 -182
- package/src/WalletAdapters/HippoExtensionWallet.ts +50 -8
- package/src/WalletAdapters/HippoWallet.ts +51 -10
- package/src/WalletAdapters/HyperPayWallet.ts +53 -8
- package/src/WalletAdapters/MartianWallet.ts +86 -10
- package/src/WalletAdapters/NightlyWallet.ts +46 -3
- package/src/WalletAdapters/PetraWallet.ts +91 -11
- package/src/WalletAdapters/PontemWallet.ts +87 -11
- package/src/WalletAdapters/RiseWallet.ts +51 -9
- package/src/WalletAdapters/SpikaWallet.ts +54 -8
- package/src/WalletProviders/WalletProvider.tsx +57 -8
- package/src/WalletProviders/errors.ts +11 -0
- package/src/WalletProviders/useWallet.ts +6 -4
- package/src/utilities/util.ts +3 -3
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import { MaybeHexString } from 'aptos';
|
|
2
|
-
import { TransactionPayload, HexEncodedBytes } from 'aptos/src/generated';
|
|
1
|
+
import { MaybeHexString, Types } from 'aptos';
|
|
3
2
|
import { WEBWALLET_URL } from '../config/aptosConstants';
|
|
4
3
|
import {
|
|
4
|
+
WalletAccountChangeError,
|
|
5
|
+
WalletNetworkChangeError,
|
|
5
6
|
WalletNotConnectedError,
|
|
6
7
|
WalletNotReadyError,
|
|
7
8
|
WalletSignAndSubmitMessageError
|
|
8
9
|
} from '../WalletProviders/errors';
|
|
9
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
AccountKeys,
|
|
12
|
+
BaseWalletAdapter,
|
|
13
|
+
NetworkInfo,
|
|
14
|
+
WalletAdapterNetwork,
|
|
15
|
+
WalletName,
|
|
16
|
+
WalletReadyState
|
|
17
|
+
} from './BaseAdapter';
|
|
10
18
|
|
|
11
19
|
export const HippoWalletName = 'Hippo Web' as WalletName<'Hippo Web'>;
|
|
12
20
|
|
|
@@ -25,7 +33,12 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
|
25
33
|
|
|
26
34
|
protected _provider: string | undefined;
|
|
27
35
|
|
|
28
|
-
|
|
36
|
+
protected _network: WalletAdapterNetwork;
|
|
37
|
+
|
|
38
|
+
protected _chainId: string;
|
|
39
|
+
|
|
40
|
+
protected _api: string;
|
|
41
|
+
|
|
29
42
|
protected _timeout: number;
|
|
30
43
|
|
|
31
44
|
protected _readyState: WalletReadyState = WalletReadyState.Installed;
|
|
@@ -36,13 +49,13 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
|
36
49
|
|
|
37
50
|
constructor({
|
|
38
51
|
// provider = WEBWALLET_URL,
|
|
39
|
-
// network = WalletAdapterNetwork.
|
|
52
|
+
// network = WalletAdapterNetwork.Testnet,
|
|
40
53
|
timeout = 10000
|
|
41
54
|
}: HippoWalletAdapterConfig = {}) {
|
|
42
55
|
super();
|
|
43
56
|
|
|
44
57
|
this._provider = WEBWALLET_URL || 'https://hippo-wallet-test.web.app';
|
|
45
|
-
|
|
58
|
+
this._network = undefined;
|
|
46
59
|
this._timeout = timeout;
|
|
47
60
|
this._connecting = false;
|
|
48
61
|
this._wallet = null;
|
|
@@ -57,6 +70,14 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
|
57
70
|
};
|
|
58
71
|
}
|
|
59
72
|
|
|
73
|
+
get network(): NetworkInfo {
|
|
74
|
+
return {
|
|
75
|
+
name: this._network,
|
|
76
|
+
api: this._api,
|
|
77
|
+
chainId: this._chainId
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
|
|
60
81
|
get connecting(): boolean {
|
|
61
82
|
return this._connecting;
|
|
62
83
|
}
|
|
@@ -137,7 +158,7 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
|
137
158
|
this.emit('disconnect');
|
|
138
159
|
}
|
|
139
160
|
|
|
140
|
-
async signTransaction(transaction: TransactionPayload): Promise<Uint8Array> {
|
|
161
|
+
async signTransaction(transaction: Types.TransactionPayload): Promise<Uint8Array> {
|
|
141
162
|
try {
|
|
142
163
|
const request = new URLSearchParams({
|
|
143
164
|
request: JSON.stringify({
|
|
@@ -165,8 +186,8 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
|
165
186
|
}
|
|
166
187
|
|
|
167
188
|
async signAndSubmitTransaction(
|
|
168
|
-
transaction: TransactionPayload
|
|
169
|
-
): Promise<{ hash: HexEncodedBytes }> {
|
|
189
|
+
transaction: Types.TransactionPayload
|
|
190
|
+
): Promise<{ hash: Types.HexEncodedBytes }> {
|
|
170
191
|
try {
|
|
171
192
|
const request = new URLSearchParams({
|
|
172
193
|
request: JSON.stringify({
|
|
@@ -185,7 +206,7 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
|
185
206
|
this.once('success', resolve);
|
|
186
207
|
this.once('error', reject);
|
|
187
208
|
});
|
|
188
|
-
return promise as { hash: HexEncodedBytes };
|
|
209
|
+
return promise as { hash: Types.HexEncodedBytes };
|
|
189
210
|
} catch (error: any) {
|
|
190
211
|
this.emit('error', error);
|
|
191
212
|
throw error;
|
|
@@ -218,6 +239,26 @@ export class HippoWalletAdapter extends BaseWalletAdapter {
|
|
|
218
239
|
}
|
|
219
240
|
}
|
|
220
241
|
|
|
242
|
+
async onAccountChange(): Promise<void> {
|
|
243
|
+
try {
|
|
244
|
+
//To be implemented
|
|
245
|
+
} catch (error: any) {
|
|
246
|
+
const errMsg = error.message;
|
|
247
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
|
248
|
+
throw error;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
async onNetworkChange(): Promise<void> {
|
|
253
|
+
try {
|
|
254
|
+
//To be implemented
|
|
255
|
+
} catch (error: any) {
|
|
256
|
+
const errMsg = error.message;
|
|
257
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
221
262
|
private _beforeUnload = (): void => {
|
|
222
263
|
void this.disconnect();
|
|
223
264
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { MaybeHexString } from 'aptos';
|
|
2
|
-
import { TransactionPayload, HexEncodedBytes } from 'aptos/src/generated';
|
|
1
|
+
import { MaybeHexString, Types } from 'aptos';
|
|
3
2
|
import {
|
|
3
|
+
WalletAccountChangeError,
|
|
4
4
|
WalletDisconnectionError,
|
|
5
|
+
WalletNetworkChangeError,
|
|
5
6
|
WalletNotConnectedError,
|
|
6
7
|
WalletNotReadyError,
|
|
7
8
|
WalletSignAndSubmitMessageError,
|
|
@@ -11,7 +12,9 @@ import {
|
|
|
11
12
|
import {
|
|
12
13
|
AccountKeys,
|
|
13
14
|
BaseWalletAdapter,
|
|
15
|
+
NetworkInfo,
|
|
14
16
|
scopePollingDetectionStrategy,
|
|
17
|
+
WalletAdapterNetwork,
|
|
15
18
|
WalletName,
|
|
16
19
|
WalletReadyState
|
|
17
20
|
} from './BaseAdapter';
|
|
@@ -34,8 +37,8 @@ interface IHyperPayWallet {
|
|
|
34
37
|
account(): Promise<HyperPayAccount>;
|
|
35
38
|
isConnected(): Promise<boolean>;
|
|
36
39
|
generateTransaction(sender: MaybeHexString, payload: any, options?: any): Promise<any>;
|
|
37
|
-
signAndSubmitTransaction(transaction: TransactionPayload): Promise<HexEncodedBytes>;
|
|
38
|
-
signTransaction(transaction: TransactionPayload): Promise<Uint8Array>;
|
|
40
|
+
signAndSubmitTransaction(transaction: Types.TransactionPayload): Promise<Types.HexEncodedBytes>;
|
|
41
|
+
signTransaction(transaction: Types.TransactionPayload): Promise<Uint8Array>;
|
|
39
42
|
signMessage(message: string): Promise<{ signature: string }>;
|
|
40
43
|
disconnect(): Promise<void>;
|
|
41
44
|
}
|
|
@@ -64,7 +67,12 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
|
64
67
|
|
|
65
68
|
protected _provider: IHyperPayWallet | undefined;
|
|
66
69
|
|
|
67
|
-
|
|
70
|
+
protected _network: WalletAdapterNetwork;
|
|
71
|
+
|
|
72
|
+
protected _chainId: string;
|
|
73
|
+
|
|
74
|
+
protected _api: string;
|
|
75
|
+
|
|
68
76
|
protected _timeout: number;
|
|
69
77
|
|
|
70
78
|
protected _readyState: WalletReadyState =
|
|
@@ -109,6 +117,14 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
|
109
117
|
};
|
|
110
118
|
}
|
|
111
119
|
|
|
120
|
+
get network(): NetworkInfo {
|
|
121
|
+
return {
|
|
122
|
+
name: this._network,
|
|
123
|
+
api: this._api,
|
|
124
|
+
chainId: this._chainId
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
|
|
112
128
|
get connecting(): boolean {
|
|
113
129
|
return this._connecting;
|
|
114
130
|
}
|
|
@@ -176,7 +192,10 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
|
176
192
|
this.emit('disconnect');
|
|
177
193
|
}
|
|
178
194
|
|
|
179
|
-
async signTransaction(
|
|
195
|
+
async signTransaction(
|
|
196
|
+
transactionPyld: Types.TransactionPayload,
|
|
197
|
+
options?: any
|
|
198
|
+
): Promise<Uint8Array> {
|
|
180
199
|
try {
|
|
181
200
|
const wallet = this._wallet;
|
|
182
201
|
const provider = this._provider || window.hyperpay;
|
|
@@ -196,9 +215,9 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
|
196
215
|
}
|
|
197
216
|
|
|
198
217
|
async signAndSubmitTransaction(
|
|
199
|
-
transactionPyld: TransactionPayload,
|
|
218
|
+
transactionPyld: Types.TransactionPayload,
|
|
200
219
|
options?: any
|
|
201
|
-
): Promise<{ hash: HexEncodedBytes }> {
|
|
220
|
+
): Promise<{ hash: Types.HexEncodedBytes }> {
|
|
202
221
|
try {
|
|
203
222
|
const wallet = this._wallet;
|
|
204
223
|
const provider = this._provider || window.hyperpay;
|
|
@@ -234,4 +253,30 @@ export class HyperPayWalletAdapter extends BaseWalletAdapter {
|
|
|
234
253
|
throw error;
|
|
235
254
|
}
|
|
236
255
|
}
|
|
256
|
+
|
|
257
|
+
async onAccountChange(): Promise<void> {
|
|
258
|
+
try {
|
|
259
|
+
const wallet = this._wallet;
|
|
260
|
+
const provider = this._provider || window.hyperpay;
|
|
261
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
|
262
|
+
//To be implemented
|
|
263
|
+
} catch (error: any) {
|
|
264
|
+
const errMsg = error.message;
|
|
265
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
|
266
|
+
throw error;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
async onNetworkChange(): Promise<void> {
|
|
271
|
+
try {
|
|
272
|
+
const wallet = this._wallet;
|
|
273
|
+
const provider = this._provider || window.hyperpay;
|
|
274
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
|
275
|
+
//To be implemented
|
|
276
|
+
} catch (error: any) {
|
|
277
|
+
const errMsg = error.message;
|
|
278
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
|
279
|
+
throw error;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
237
282
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { MaybeHexString } from 'aptos';
|
|
2
|
-
import { TransactionPayload, HexEncodedBytes } from 'aptos/src/generated';
|
|
1
|
+
import { MaybeHexString, Types } from 'aptos';
|
|
3
2
|
import {
|
|
3
|
+
WalletAccountChangeError,
|
|
4
4
|
WalletDisconnectionError,
|
|
5
|
+
WalletGetNetworkError,
|
|
6
|
+
WalletNetworkChangeError,
|
|
5
7
|
WalletNotConnectedError,
|
|
6
8
|
WalletNotReadyError,
|
|
7
9
|
WalletSignAndSubmitMessageError,
|
|
@@ -11,9 +13,11 @@ import {
|
|
|
11
13
|
import {
|
|
12
14
|
AccountKeys,
|
|
13
15
|
BaseWalletAdapter,
|
|
16
|
+
NetworkInfo,
|
|
14
17
|
scopePollingDetectionStrategy,
|
|
15
18
|
SignMessagePayload,
|
|
16
19
|
SignMessageResponse,
|
|
20
|
+
WalletAdapterNetwork,
|
|
17
21
|
WalletName,
|
|
18
22
|
WalletReadyState
|
|
19
23
|
} from './BaseAdapter';
|
|
@@ -36,10 +40,14 @@ interface IMartianWallet {
|
|
|
36
40
|
account(): Promise<MartianAccount>;
|
|
37
41
|
isConnected(): Promise<boolean>;
|
|
38
42
|
generateTransaction(sender: MaybeHexString, payload: any, options?: any): Promise<any>;
|
|
39
|
-
signAndSubmitTransaction(transaction: TransactionPayload): Promise<HexEncodedBytes>;
|
|
40
|
-
signTransaction(transaction: TransactionPayload): Promise<Uint8Array>;
|
|
43
|
+
signAndSubmitTransaction(transaction: Types.TransactionPayload): Promise<Types.HexEncodedBytes>;
|
|
44
|
+
signTransaction(transaction: Types.TransactionPayload): Promise<Uint8Array>;
|
|
41
45
|
signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;
|
|
42
46
|
disconnect(): Promise<void>;
|
|
47
|
+
getChainId(): Promise<{ chainId: number }>;
|
|
48
|
+
network(): Promise<WalletAdapterNetwork>;
|
|
49
|
+
onAccountChange: (listenr: (newAddress: string) => void) => void;
|
|
50
|
+
onNetworkChange: (listenr: (network: string) => void) => void;
|
|
43
51
|
}
|
|
44
52
|
|
|
45
53
|
interface MartianWindow extends Window {
|
|
@@ -66,7 +74,12 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
|
66
74
|
|
|
67
75
|
protected _provider: IMartianWallet | undefined;
|
|
68
76
|
|
|
69
|
-
|
|
77
|
+
protected _network: WalletAdapterNetwork;
|
|
78
|
+
|
|
79
|
+
protected _chainId: string;
|
|
80
|
+
|
|
81
|
+
protected _api: string;
|
|
82
|
+
|
|
70
83
|
protected _timeout: number;
|
|
71
84
|
|
|
72
85
|
protected _readyState: WalletReadyState =
|
|
@@ -80,13 +93,13 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
|
80
93
|
|
|
81
94
|
constructor({
|
|
82
95
|
// provider,
|
|
83
|
-
// network = WalletAdapterNetwork.
|
|
96
|
+
// network = WalletAdapterNetwork.Testnet,
|
|
84
97
|
timeout = 10000
|
|
85
98
|
}: MartianWalletAdapterConfig = {}) {
|
|
86
99
|
super();
|
|
87
100
|
|
|
88
101
|
this._provider = typeof window !== 'undefined' ? window.martian : undefined;
|
|
89
|
-
|
|
102
|
+
this._network = undefined;
|
|
90
103
|
this._timeout = timeout;
|
|
91
104
|
this._connecting = false;
|
|
92
105
|
this._wallet = null;
|
|
@@ -111,6 +124,14 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
|
111
124
|
};
|
|
112
125
|
}
|
|
113
126
|
|
|
127
|
+
get network(): NetworkInfo {
|
|
128
|
+
return {
|
|
129
|
+
name: this._network,
|
|
130
|
+
api: this._api,
|
|
131
|
+
chainId: this._chainId
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
114
135
|
get connecting(): boolean {
|
|
115
136
|
return this._connecting;
|
|
116
137
|
}
|
|
@@ -152,6 +173,20 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
|
152
173
|
...walletAccount,
|
|
153
174
|
isConnected: true
|
|
154
175
|
};
|
|
176
|
+
|
|
177
|
+
try {
|
|
178
|
+
const name = await provider?.network();
|
|
179
|
+
const { chainId } = await provider?.getChainId();
|
|
180
|
+
const api = null;
|
|
181
|
+
|
|
182
|
+
this._network = name;
|
|
183
|
+
this._chainId = chainId.toString();
|
|
184
|
+
this._api = api;
|
|
185
|
+
} catch (error: any) {
|
|
186
|
+
const errMsg = error.message;
|
|
187
|
+
this.emit('error', new WalletGetNetworkError(errMsg));
|
|
188
|
+
throw error;
|
|
189
|
+
}
|
|
155
190
|
}
|
|
156
191
|
this.emit('connect', this._wallet?.address || '');
|
|
157
192
|
} catch (error: any) {
|
|
@@ -178,7 +213,10 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
|
178
213
|
this.emit('disconnect');
|
|
179
214
|
}
|
|
180
215
|
|
|
181
|
-
async signTransaction(
|
|
216
|
+
async signTransaction(
|
|
217
|
+
transactionPyld: Types.TransactionPayload,
|
|
218
|
+
options?: any
|
|
219
|
+
): Promise<Uint8Array> {
|
|
182
220
|
try {
|
|
183
221
|
const wallet = this._wallet;
|
|
184
222
|
const provider = this._provider || window.martian;
|
|
@@ -198,9 +236,9 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
|
198
236
|
}
|
|
199
237
|
|
|
200
238
|
async signAndSubmitTransaction(
|
|
201
|
-
transactionPyld: TransactionPayload,
|
|
239
|
+
transactionPyld: Types.TransactionPayload,
|
|
202
240
|
options?: any
|
|
203
|
-
): Promise<{ hash: HexEncodedBytes }> {
|
|
241
|
+
): Promise<{ hash: Types.HexEncodedBytes }> {
|
|
204
242
|
try {
|
|
205
243
|
const wallet = this._wallet;
|
|
206
244
|
const provider = this._provider || window.martian;
|
|
@@ -239,4 +277,42 @@ export class MartianWalletAdapter extends BaseWalletAdapter {
|
|
|
239
277
|
throw error;
|
|
240
278
|
}
|
|
241
279
|
}
|
|
280
|
+
|
|
281
|
+
async onAccountChange(): Promise<void> {
|
|
282
|
+
try {
|
|
283
|
+
const wallet = this._wallet;
|
|
284
|
+
const provider = this._provider || window.martian;
|
|
285
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
|
286
|
+
await provider?.onAccountChange((newAccount: string) => {
|
|
287
|
+
console.log('account Changed >>>', newAccount);
|
|
288
|
+
this._wallet = {
|
|
289
|
+
...this._wallet,
|
|
290
|
+
address: newAccount
|
|
291
|
+
};
|
|
292
|
+
this.emit('accountChange', newAccount);
|
|
293
|
+
});
|
|
294
|
+
} catch (error: any) {
|
|
295
|
+
const errMsg = error.message;
|
|
296
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
|
297
|
+
throw error;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
async onNetworkChange(): Promise<void> {
|
|
302
|
+
try {
|
|
303
|
+
const wallet = this._wallet;
|
|
304
|
+
const provider = this._provider || window.martian;
|
|
305
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
|
306
|
+
const handleNetworkChange = async (newNetwork: WalletAdapterNetwork) => {
|
|
307
|
+
console.log('network Changed >>>', newNetwork);
|
|
308
|
+
this._network = newNetwork;
|
|
309
|
+
this.emit('networkChange', this._network);
|
|
310
|
+
};
|
|
311
|
+
await provider?.onNetworkChange(handleNetworkChange);
|
|
312
|
+
} catch (error: any) {
|
|
313
|
+
const errMsg = error.message;
|
|
314
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
|
315
|
+
throw error;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
242
318
|
}
|
|
@@ -4,7 +4,9 @@ import { PendingTransaction, TransactionPayload } from 'aptos/src/generated';
|
|
|
4
4
|
import * as SHA3 from 'js-sha3';
|
|
5
5
|
import { aptosClient } from '../config/aptosConstants';
|
|
6
6
|
import {
|
|
7
|
+
WalletAccountChangeError,
|
|
7
8
|
WalletDisconnectionError,
|
|
9
|
+
WalletNetworkChangeError,
|
|
8
10
|
WalletNotConnectedError,
|
|
9
11
|
WalletNotReadyError,
|
|
10
12
|
WalletSignMessageError,
|
|
@@ -13,7 +15,9 @@ import {
|
|
|
13
15
|
import {
|
|
14
16
|
AccountKeys,
|
|
15
17
|
BaseWalletAdapter,
|
|
18
|
+
NetworkInfo,
|
|
16
19
|
scopePollingDetectionStrategy,
|
|
20
|
+
WalletAdapterNetwork,
|
|
17
21
|
WalletName,
|
|
18
22
|
WalletReadyState
|
|
19
23
|
} from './BaseAdapter';
|
|
@@ -88,7 +92,12 @@ export class NightlyWalletAdapter extends BaseWalletAdapter {
|
|
|
88
92
|
|
|
89
93
|
protected _provider: AptosNightly | undefined;
|
|
90
94
|
|
|
91
|
-
|
|
95
|
+
protected _network: WalletAdapterNetwork;
|
|
96
|
+
|
|
97
|
+
protected _chainId: string;
|
|
98
|
+
|
|
99
|
+
protected _api: string;
|
|
100
|
+
|
|
92
101
|
protected _timeout: number;
|
|
93
102
|
|
|
94
103
|
protected _readyState: WalletReadyState =
|
|
@@ -107,13 +116,13 @@ export class NightlyWalletAdapter extends BaseWalletAdapter {
|
|
|
107
116
|
|
|
108
117
|
constructor({
|
|
109
118
|
// provider,
|
|
110
|
-
// network = WalletAdapterNetwork.
|
|
119
|
+
// network = WalletAdapterNetwork.Testnet,
|
|
111
120
|
timeout = 10000
|
|
112
121
|
}: NightlyWalletAdapterConfig = {}) {
|
|
113
122
|
super();
|
|
114
123
|
|
|
115
124
|
this._provider = window.nightly?.aptos;
|
|
116
|
-
|
|
125
|
+
this._network = undefined;
|
|
117
126
|
this._timeout = timeout;
|
|
118
127
|
this._connecting = false;
|
|
119
128
|
this._wallet = null;
|
|
@@ -138,6 +147,14 @@ export class NightlyWalletAdapter extends BaseWalletAdapter {
|
|
|
138
147
|
};
|
|
139
148
|
}
|
|
140
149
|
|
|
150
|
+
get network(): NetworkInfo {
|
|
151
|
+
return {
|
|
152
|
+
name: this._network,
|
|
153
|
+
api: this._api,
|
|
154
|
+
chainId: this._chainId
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
|
|
141
158
|
get connecting(): boolean {
|
|
142
159
|
return this._connecting;
|
|
143
160
|
}
|
|
@@ -283,4 +300,30 @@ export class NightlyWalletAdapter extends BaseWalletAdapter {
|
|
|
283
300
|
throw error;
|
|
284
301
|
}
|
|
285
302
|
}
|
|
303
|
+
|
|
304
|
+
async onAccountChange(): Promise<void> {
|
|
305
|
+
try {
|
|
306
|
+
const wallet = this._wallet;
|
|
307
|
+
const provider = this._provider || window.nightly.aptos;
|
|
308
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
|
309
|
+
//To be implemented
|
|
310
|
+
} catch (error: any) {
|
|
311
|
+
const errMsg = error.message;
|
|
312
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
|
313
|
+
throw error;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
async onNetworkChange(): Promise<void> {
|
|
318
|
+
try {
|
|
319
|
+
const wallet = this._wallet;
|
|
320
|
+
const provider = this._provider || window.nightly.aptos;
|
|
321
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
|
322
|
+
//To be implemented
|
|
323
|
+
} catch (error: any) {
|
|
324
|
+
const errMsg = error.message;
|
|
325
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
|
326
|
+
throw error;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
286
329
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Types } from 'aptos';
|
|
2
2
|
import {
|
|
3
|
+
WalletAccountChangeError,
|
|
3
4
|
WalletDisconnectionError,
|
|
5
|
+
WalletGetNetworkError,
|
|
6
|
+
WalletNetworkChangeError,
|
|
4
7
|
WalletNotConnectedError,
|
|
5
8
|
WalletNotReadyError,
|
|
6
9
|
WalletSignAndSubmitMessageError,
|
|
@@ -10,9 +13,11 @@ import {
|
|
|
10
13
|
import {
|
|
11
14
|
AccountKeys,
|
|
12
15
|
BaseWalletAdapter,
|
|
16
|
+
NetworkInfo,
|
|
13
17
|
scopePollingDetectionStrategy,
|
|
14
18
|
SignMessagePayload,
|
|
15
19
|
SignMessageResponse,
|
|
20
|
+
WalletAdapterNetwork,
|
|
16
21
|
WalletName,
|
|
17
22
|
WalletReadyState
|
|
18
23
|
} from './BaseAdapter';
|
|
@@ -23,17 +28,23 @@ interface IApotsErrorResult {
|
|
|
23
28
|
message: string;
|
|
24
29
|
}
|
|
25
30
|
|
|
31
|
+
type AddressInfo = { address: string; publicKey: string; authKey?: string };
|
|
32
|
+
|
|
26
33
|
interface IAptosWallet {
|
|
27
|
-
connect: () => Promise<
|
|
28
|
-
account: () => Promise<
|
|
34
|
+
connect: () => Promise<AddressInfo>;
|
|
35
|
+
account: () => Promise<AddressInfo>;
|
|
29
36
|
isConnected: () => Promise<boolean>;
|
|
30
37
|
signAndSubmitTransaction(
|
|
31
38
|
transaction: any,
|
|
32
39
|
options?: any
|
|
33
|
-
): Promise<{ hash: HexEncodedBytes } | IApotsErrorResult>;
|
|
40
|
+
): Promise<{ hash: Types.HexEncodedBytes } | IApotsErrorResult>;
|
|
34
41
|
signTransaction(transaction: any, options?: any): Promise<Uint8Array | IApotsErrorResult>;
|
|
35
42
|
signMessage(message: SignMessagePayload): Promise<SignMessageResponse>;
|
|
36
43
|
disconnect(): Promise<void>;
|
|
44
|
+
network(): Promise<WalletAdapterNetwork>;
|
|
45
|
+
requestId: Promise<number>;
|
|
46
|
+
onAccountChange: (listener: (newAddress: AddressInfo) => void) => void;
|
|
47
|
+
onNetworkChange: (listener: (network: { networkName: string }) => void) => void;
|
|
37
48
|
}
|
|
38
49
|
|
|
39
50
|
interface AptosWindow extends Window {
|
|
@@ -60,7 +71,12 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
|
60
71
|
|
|
61
72
|
protected _provider: IAptosWallet | undefined;
|
|
62
73
|
|
|
63
|
-
|
|
74
|
+
protected _network: WalletAdapterNetwork;
|
|
75
|
+
|
|
76
|
+
protected _chainId: string;
|
|
77
|
+
|
|
78
|
+
protected _api: string;
|
|
79
|
+
|
|
64
80
|
protected _timeout: number;
|
|
65
81
|
|
|
66
82
|
protected _readyState: WalletReadyState =
|
|
@@ -74,13 +90,13 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
|
74
90
|
|
|
75
91
|
constructor({
|
|
76
92
|
// provider,
|
|
77
|
-
// network = WalletAdapterNetwork.
|
|
93
|
+
// network = WalletAdapterNetwork.Testnet,
|
|
78
94
|
timeout = 10000
|
|
79
95
|
}: AptosWalletAdapterConfig = {}) {
|
|
80
96
|
super();
|
|
81
97
|
|
|
82
98
|
this._provider = typeof window !== 'undefined' ? window.aptos : undefined;
|
|
83
|
-
|
|
99
|
+
this._network = undefined;
|
|
84
100
|
this._timeout = timeout;
|
|
85
101
|
this._connecting = false;
|
|
86
102
|
this._wallet = null;
|
|
@@ -105,6 +121,14 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
|
105
121
|
};
|
|
106
122
|
}
|
|
107
123
|
|
|
124
|
+
get network(): NetworkInfo {
|
|
125
|
+
return {
|
|
126
|
+
name: this._network,
|
|
127
|
+
api: this._api,
|
|
128
|
+
chainId: this._chainId
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
|
|
108
132
|
get connecting(): boolean {
|
|
109
133
|
return this._connecting;
|
|
110
134
|
}
|
|
@@ -142,6 +166,20 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
|
142
166
|
isConnected: true
|
|
143
167
|
};
|
|
144
168
|
|
|
169
|
+
try {
|
|
170
|
+
const name = await provider?.network();
|
|
171
|
+
const chainId = null;
|
|
172
|
+
const api = null;
|
|
173
|
+
|
|
174
|
+
this._network = name;
|
|
175
|
+
this._chainId = chainId;
|
|
176
|
+
this._api = api;
|
|
177
|
+
} catch (error: any) {
|
|
178
|
+
const errMsg = error.message;
|
|
179
|
+
this.emit('error', new WalletGetNetworkError(errMsg));
|
|
180
|
+
throw error;
|
|
181
|
+
}
|
|
182
|
+
|
|
145
183
|
this.emit('connect', this._wallet.publicKey);
|
|
146
184
|
} catch (error: any) {
|
|
147
185
|
this.emit('error', error);
|
|
@@ -167,7 +205,7 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
|
167
205
|
this.emit('disconnect');
|
|
168
206
|
}
|
|
169
207
|
|
|
170
|
-
async signTransaction(transaction: TransactionPayload, options?: any): Promise<Uint8Array> {
|
|
208
|
+
async signTransaction(transaction: Types.TransactionPayload, options?: any): Promise<Uint8Array> {
|
|
171
209
|
try {
|
|
172
210
|
const wallet = this._wallet;
|
|
173
211
|
const provider = this._provider || window.aptos;
|
|
@@ -186,9 +224,9 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
|
186
224
|
}
|
|
187
225
|
|
|
188
226
|
async signAndSubmitTransaction(
|
|
189
|
-
transaction: TransactionPayload,
|
|
227
|
+
transaction: Types.TransactionPayload,
|
|
190
228
|
options?: any
|
|
191
|
-
): Promise<{ hash: HexEncodedBytes }> {
|
|
229
|
+
): Promise<{ hash: Types.HexEncodedBytes }> {
|
|
192
230
|
try {
|
|
193
231
|
const wallet = this._wallet;
|
|
194
232
|
const provider = this._provider || window.aptos;
|
|
@@ -198,7 +236,7 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
|
198
236
|
if ((response as IApotsErrorResult).code) {
|
|
199
237
|
throw new Error((response as IApotsErrorResult).message);
|
|
200
238
|
}
|
|
201
|
-
return response as { hash: HexEncodedBytes };
|
|
239
|
+
return response as { hash: Types.HexEncodedBytes };
|
|
202
240
|
} catch (error: any) {
|
|
203
241
|
const errMsg = error.message;
|
|
204
242
|
this.emit('error', new WalletSignAndSubmitMessageError(errMsg));
|
|
@@ -226,4 +264,46 @@ export class AptosWalletAdapter extends BaseWalletAdapter {
|
|
|
226
264
|
throw error;
|
|
227
265
|
}
|
|
228
266
|
}
|
|
267
|
+
|
|
268
|
+
async onAccountChange(): Promise<void> {
|
|
269
|
+
try {
|
|
270
|
+
const wallet = this._wallet;
|
|
271
|
+
const provider = this._provider || window.aptos;
|
|
272
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
|
273
|
+
const handleAccountChange = async (newAccount: AddressInfo) => {
|
|
274
|
+
console.log('account Changed >>>', newAccount);
|
|
275
|
+
// Petra extension currently didn't return the new Account
|
|
276
|
+
this._wallet = {
|
|
277
|
+
...this._wallet,
|
|
278
|
+
publicKey: newAccount.publicKey || this._wallet?.publicKey,
|
|
279
|
+
authKey: newAccount.authKey || this._wallet?.authKey,
|
|
280
|
+
address: newAccount.address || this._wallet?.address
|
|
281
|
+
};
|
|
282
|
+
this.emit('accountChange', newAccount.publicKey);
|
|
283
|
+
};
|
|
284
|
+
await provider?.onAccountChange(handleAccountChange);
|
|
285
|
+
} catch (error: any) {
|
|
286
|
+
const errMsg = error.message;
|
|
287
|
+
this.emit('error', new WalletAccountChangeError(errMsg));
|
|
288
|
+
throw error;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
async onNetworkChange(): Promise<void> {
|
|
293
|
+
try {
|
|
294
|
+
const wallet = this._wallet;
|
|
295
|
+
const provider = this._provider || window.aptos;
|
|
296
|
+
if (!wallet || !provider) throw new WalletNotConnectedError();
|
|
297
|
+
const handleNetworkChange = async (newNetwork: { networkName: WalletAdapterNetwork }) => {
|
|
298
|
+
console.log('network Changed >>>', newNetwork);
|
|
299
|
+
this._network = newNetwork.networkName;
|
|
300
|
+
this.emit('networkChange', this._network);
|
|
301
|
+
};
|
|
302
|
+
await provider?.onNetworkChange(handleNetworkChange);
|
|
303
|
+
} catch (error: any) {
|
|
304
|
+
const errMsg = error.message;
|
|
305
|
+
this.emit('error', new WalletNetworkChangeError(errMsg));
|
|
306
|
+
throw error;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
229
309
|
}
|