@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.
Files changed (84) hide show
  1. package/README.md +4 -2
  2. package/dist/WalletAdapters/AptosSnap.d.ts +15 -9
  3. package/dist/WalletAdapters/AptosSnap.d.ts.map +1 -1
  4. package/dist/WalletAdapters/AptosSnap.js +41 -2
  5. package/dist/WalletAdapters/AptosSnap.js.map +1 -1
  6. package/dist/WalletAdapters/BaseAdapter.d.ts +25 -8
  7. package/dist/WalletAdapters/BaseAdapter.d.ts.map +1 -1
  8. package/dist/WalletAdapters/BaseAdapter.js +7 -1
  9. package/dist/WalletAdapters/BaseAdapter.js.map +1 -1
  10. package/dist/WalletAdapters/FewchaWallet.d.ts +11 -5
  11. package/dist/WalletAdapters/FewchaWallet.d.ts.map +1 -1
  12. package/dist/WalletAdapters/FewchaWallet.js +54 -3
  13. package/dist/WalletAdapters/FewchaWallet.js.map +1 -1
  14. package/dist/WalletAdapters/FletchWallet.d.ts +11 -5
  15. package/dist/WalletAdapters/FletchWallet.d.ts.map +1 -1
  16. package/dist/WalletAdapters/FletchWallet.js +41 -2
  17. package/dist/WalletAdapters/FletchWallet.js.map +1 -1
  18. package/dist/WalletAdapters/HippoExtensionWallet.d.ts +11 -6
  19. package/dist/WalletAdapters/HippoExtensionWallet.d.ts.map +1 -1
  20. package/dist/WalletAdapters/HippoExtensionWallet.js +41 -2
  21. package/dist/WalletAdapters/HippoExtensionWallet.js.map +1 -1
  22. package/dist/WalletAdapters/HippoWallet.d.ts +11 -6
  23. package/dist/WalletAdapters/HippoWallet.d.ts.map +1 -1
  24. package/dist/WalletAdapters/HippoWallet.js +33 -2
  25. package/dist/WalletAdapters/HippoWallet.js.map +1 -1
  26. package/dist/WalletAdapters/HyperPayWallet.d.ts +13 -8
  27. package/dist/WalletAdapters/HyperPayWallet.d.ts.map +1 -1
  28. package/dist/WalletAdapters/HyperPayWallet.js +39 -0
  29. package/dist/WalletAdapters/HyperPayWallet.js.map +1 -1
  30. package/dist/WalletAdapters/MartianWallet.d.ts +19 -8
  31. package/dist/WalletAdapters/MartianWallet.d.ts.map +1 -1
  32. package/dist/WalletAdapters/MartianWallet.js +63 -2
  33. package/dist/WalletAdapters/MartianWallet.js.map +1 -1
  34. package/dist/WalletAdapters/NightlyWallet.d.ts +7 -1
  35. package/dist/WalletAdapters/NightlyWallet.d.ts.map +1 -1
  36. package/dist/WalletAdapters/NightlyWallet.js +41 -2
  37. package/dist/WalletAdapters/NightlyWallet.js.map +1 -1
  38. package/dist/WalletAdapters/PetraWallet.d.ts +25 -11
  39. package/dist/WalletAdapters/PetraWallet.d.ts.map +1 -1
  40. package/dist/WalletAdapters/PetraWallet.js +66 -2
  41. package/dist/WalletAdapters/PetraWallet.js.map +1 -1
  42. package/dist/WalletAdapters/PontemWallet.d.ts +17 -9
  43. package/dist/WalletAdapters/PontemWallet.d.ts.map +1 -1
  44. package/dist/WalletAdapters/PontemWallet.js +65 -2
  45. package/dist/WalletAdapters/PontemWallet.js.map +1 -1
  46. package/dist/WalletAdapters/RiseWallet.d.ts +12 -7
  47. package/dist/WalletAdapters/RiseWallet.d.ts.map +1 -1
  48. package/dist/WalletAdapters/RiseWallet.js +41 -2
  49. package/dist/WalletAdapters/RiseWallet.js.map +1 -1
  50. package/dist/WalletAdapters/SpikaWallet.d.ts +12 -6
  51. package/dist/WalletAdapters/SpikaWallet.d.ts.map +1 -1
  52. package/dist/WalletAdapters/SpikaWallet.js +41 -2
  53. package/dist/WalletAdapters/SpikaWallet.js.map +1 -1
  54. package/dist/WalletProviders/WalletProvider.d.ts.map +1 -1
  55. package/dist/WalletProviders/WalletProvider.js +45 -6
  56. package/dist/WalletProviders/WalletProvider.js.map +1 -1
  57. package/dist/WalletProviders/errors.d.ts +9 -0
  58. package/dist/WalletProviders/errors.d.ts.map +1 -1
  59. package/dist/WalletProviders/errors.js +22 -1
  60. package/dist/WalletProviders/errors.js.map +1 -1
  61. package/dist/WalletProviders/useWallet.d.ts +6 -5
  62. package/dist/WalletProviders/useWallet.d.ts.map +1 -1
  63. package/dist/WalletProviders/useWallet.js.map +1 -1
  64. package/dist/utilities/util.d.ts +2 -2
  65. package/dist/utilities/util.d.ts.map +1 -1
  66. package/dist/utilities/util.js.map +1 -1
  67. package/package.json +2 -2
  68. package/src/WalletAdapters/AptosSnap.ts +58 -20
  69. package/src/WalletAdapters/BaseAdapter.ts +29 -8
  70. package/src/WalletAdapters/FewchaWallet.ts +72 -10
  71. package/src/WalletAdapters/FletchWallet.ts +226 -182
  72. package/src/WalletAdapters/HippoExtensionWallet.ts +50 -8
  73. package/src/WalletAdapters/HippoWallet.ts +51 -10
  74. package/src/WalletAdapters/HyperPayWallet.ts +53 -8
  75. package/src/WalletAdapters/MartianWallet.ts +86 -10
  76. package/src/WalletAdapters/NightlyWallet.ts +46 -3
  77. package/src/WalletAdapters/PetraWallet.ts +91 -11
  78. package/src/WalletAdapters/PontemWallet.ts +87 -11
  79. package/src/WalletAdapters/RiseWallet.ts +51 -9
  80. package/src/WalletAdapters/SpikaWallet.ts +54 -8
  81. package/src/WalletProviders/WalletProvider.tsx +57 -8
  82. package/src/WalletProviders/errors.ts +11 -0
  83. package/src/WalletProviders/useWallet.ts +6 -4
  84. 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 { AccountKeys, BaseWalletAdapter, WalletName, WalletReadyState } from './BaseAdapter';
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
- // protected _network: WalletAdapterNetwork;
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.Mainnet,
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
- // this._network = network;
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
- // protected _network: WalletAdapterNetwork;
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(transactionPyld: TransactionPayload, options?: any): Promise<Uint8Array> {
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
- // protected _network: WalletAdapterNetwork;
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.Mainnet,
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
- // this._network = network;
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(transactionPyld: TransactionPayload, options?: any): Promise<Uint8Array> {
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
- // protected _network: WalletAdapterNetwork;
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.Mainnet,
119
+ // network = WalletAdapterNetwork.Testnet,
111
120
  timeout = 10000
112
121
  }: NightlyWalletAdapterConfig = {}) {
113
122
  super();
114
123
 
115
124
  this._provider = window.nightly?.aptos;
116
- // this._network = network;
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 { HexEncodedBytes, TransactionPayload } from 'aptos/src/generated';
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<{ address: string; publicKey: string }>;
28
- account: () => Promise<string>;
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
- // protected _network: WalletAdapterNetwork;
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.Mainnet,
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
- // this._network = network;
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
  }