@manahippo/aptos-wallet-adapter 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
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
  }