@manahippo/aptos-wallet-adapter 0.4.3 → 0.4.5

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 (40) hide show
  1. package/README.md +5 -2
  2. package/dist/WalletAdapters/AptosSnap.d.ts +42 -0
  3. package/dist/WalletAdapters/AptosSnap.d.ts.map +1 -0
  4. package/dist/WalletAdapters/AptosSnap.js +185 -0
  5. package/dist/WalletAdapters/AptosSnap.js.map +1 -0
  6. package/dist/WalletAdapters/FletchWallet.d.ts +57 -0
  7. package/dist/WalletAdapters/FletchWallet.d.ts.map +1 -0
  8. package/dist/WalletAdapters/FletchWallet.js +178 -0
  9. package/dist/WalletAdapters/FletchWallet.js.map +1 -0
  10. package/dist/WalletAdapters/NightlyWallet.d.ts +52 -0
  11. package/dist/WalletAdapters/NightlyWallet.d.ts.map +1 -1
  12. package/dist/WalletAdapters/NightlyWallet.js +270 -230
  13. package/dist/WalletAdapters/NightlyWallet.js.map +1 -1
  14. package/dist/WalletAdapters/PetraWallet.d.ts.map +1 -1
  15. package/dist/WalletAdapters/PetraWallet.js +1 -1
  16. package/dist/WalletAdapters/PetraWallet.js.map +1 -1
  17. package/dist/WalletAdapters/PontemWallet.d.ts +4 -6
  18. package/dist/WalletAdapters/PontemWallet.d.ts.map +1 -1
  19. package/dist/WalletAdapters/PontemWallet.js +4 -5
  20. package/dist/WalletAdapters/PontemWallet.js.map +1 -1
  21. package/dist/WalletAdapters/RiseWallet.d.ts +3 -5
  22. package/dist/WalletAdapters/RiseWallet.d.ts.map +1 -1
  23. package/dist/WalletAdapters/RiseWallet.js +7 -5
  24. package/dist/WalletAdapters/RiseWallet.js.map +1 -1
  25. package/dist/WalletAdapters/index.d.ts +3 -0
  26. package/dist/WalletAdapters/index.d.ts.map +1 -1
  27. package/dist/WalletAdapters/index.js +3 -1
  28. package/dist/WalletAdapters/index.js.map +1 -1
  29. package/dist/WalletProviders/WalletProvider.d.ts.map +1 -1
  30. package/dist/WalletProviders/WalletProvider.js +12 -5
  31. package/dist/WalletProviders/WalletProvider.js.map +1 -1
  32. package/package.json +5 -3
  33. package/src/WalletAdapters/AptosSnap.ts +235 -0
  34. package/src/WalletAdapters/FletchWallet.ts +223 -0
  35. package/src/WalletAdapters/NightlyWallet.ts +285 -260
  36. package/src/WalletAdapters/PetraWallet.ts +2 -1
  37. package/src/WalletAdapters/PontemWallet.ts +8 -9
  38. package/src/WalletAdapters/RiseWallet.ts +10 -7
  39. package/src/WalletAdapters/index.ts +3 -1
  40. package/src/WalletProviders/WalletProvider.tsx +14 -7
@@ -0,0 +1,223 @@
1
+ import { HexEncodedBytes, TransactionPayload } from 'aptos/src/generated';
2
+ import {
3
+ WalletDisconnectionError,
4
+ WalletNotConnectedError,
5
+ WalletNotReadyError,
6
+ WalletSignAndSubmitMessageError,
7
+ WalletSignMessageError,
8
+ WalletSignTransactionError
9
+ } from '../WalletProviders/errors';
10
+ import {
11
+ AccountKeys,
12
+ BaseWalletAdapter,
13
+ scopePollingDetectionStrategy,
14
+ SignMessagePayload,
15
+ SignMessageResponse,
16
+ WalletName,
17
+ WalletReadyState
18
+ } from './BaseAdapter';
19
+
20
+ interface IFletchWallet {
21
+ connect: () => Promise<{ Address: string; PublicKey: string, code: number, error?: any }>;
22
+ account: () => Promise<string>;
23
+ isConnected: () => Promise<boolean>;
24
+ signAndSubmitTransaction(transaction: any): Promise<{ code: number, error?: any, hash: string }>;
25
+ signTransaction(payload: any): Promise<{ code: number, error?: any, tx: Uint8Array }>;
26
+ signMessage(message: SignMessagePayload): Promise<{ code: number, error?: any, signedMessage: SignMessageResponse }>;
27
+ disconnect(): Promise<void>;
28
+ }
29
+
30
+ interface AptosWindow extends Window {
31
+ fletch?: IFletchWallet;
32
+ }
33
+
34
+ declare const window: AptosWindow;
35
+
36
+ export const FletchWalletName = 'Fletch' as WalletName<'Fletch'>;
37
+
38
+ export interface FletchWalletAdapterConfig {
39
+ provider?: IFletchWallet;
40
+ // network?: WalletAdapterNetwork;
41
+ timeout?: number;
42
+ }
43
+
44
+ export class FletchWalletAdapter extends BaseWalletAdapter {
45
+ name = FletchWalletName;
46
+
47
+ url = 'http://fletchwallet.io';
48
+
49
+ icon = 'http://fletchwallet.io/img/fletch-white.svg';
50
+
51
+ protected _provider: IFletchWallet;
52
+
53
+ // protected _network: WalletAdapterNetwork;
54
+ protected _timeout: number;
55
+
56
+ protected _readyState: WalletReadyState =
57
+ typeof window === 'undefined' || typeof document === 'undefined'
58
+ ? WalletReadyState.Unsupported
59
+ : WalletReadyState.NotDetected;
60
+
61
+ protected _connecting: boolean;
62
+
63
+ protected _wallet: any | null;
64
+
65
+ constructor({
66
+ // provider,
67
+ // network = WalletAdapterNetwork.Mainnet,
68
+ timeout = 10000
69
+ }: FletchWalletAdapterConfig = {}) {
70
+ super();
71
+
72
+ this._provider = typeof window !== 'undefined' ? window.fletch : undefined;
73
+ // this._network = network;
74
+ this._timeout = timeout;
75
+ this._connecting = false;
76
+ this._wallet = null;
77
+
78
+ if (typeof window !== 'undefined' && this._readyState !== WalletReadyState.Unsupported) {
79
+ scopePollingDetectionStrategy(() => {
80
+ if (window.fletch) {
81
+ this._readyState = WalletReadyState.Installed;
82
+ this.emit('readyStateChange', this._readyState);
83
+ return true;
84
+ }
85
+ return false;
86
+ });
87
+ }
88
+ }
89
+
90
+ get publicAccount(): AccountKeys {
91
+ return {
92
+ publicKey: this._wallet?.publicKey || null,
93
+ address: this._wallet?.address || null,
94
+ authKey: this._wallet?.authKey || null
95
+ };
96
+ }
97
+
98
+ get connecting(): boolean {
99
+ return this._connecting;
100
+ }
101
+
102
+ get connected(): boolean {
103
+ return !!this._wallet?.isConnected;
104
+ }
105
+
106
+ get readyState(): WalletReadyState {
107
+ return this._readyState;
108
+ }
109
+
110
+ async connect(): Promise<void> {
111
+ try {
112
+ if (this.connected || this.connecting) return;
113
+ if (
114
+ !(
115
+ this._readyState === WalletReadyState.Loadable ||
116
+ this._readyState === WalletReadyState.Installed
117
+ )
118
+ )
119
+ throw new WalletNotReadyError();
120
+ this._connecting = true;
121
+
122
+ const provider = this._provider || window.fletch;
123
+ const isConnected = await this._provider?.isConnected();
124
+ if (isConnected === true) {
125
+ await provider?.disconnect();
126
+ }
127
+
128
+ const response = await provider?.connect();
129
+ if (response.code != 200) {
130
+ throw response.error
131
+ }
132
+ this._wallet = {
133
+ address: response?.Address,
134
+ publicKey: response?.PublicKey,
135
+ isConnected: true
136
+ };
137
+
138
+ this.emit('connect', this._wallet.publicKey);
139
+ } catch (error: any) {
140
+ this.emit('error', error);
141
+ throw error;
142
+ } finally {
143
+ this._connecting = false;
144
+ }
145
+ }
146
+
147
+ async disconnect(): Promise<void> {
148
+ const wallet = this._wallet;
149
+ const provider = this._provider || window.fletch;
150
+ if (wallet) {
151
+ this._wallet = null;
152
+
153
+ try {
154
+ await provider?.disconnect();
155
+ } catch (error: any) {
156
+ this.emit('error', new WalletDisconnectionError(error?.message, error));
157
+ }
158
+ }
159
+
160
+ this.emit('disconnect');
161
+ }
162
+
163
+ async signTransaction(transaction: TransactionPayload): Promise<Uint8Array> {
164
+ try {
165
+ const wallet = this._wallet;
166
+ const provider = this._provider || window.fletch;
167
+ if (!wallet || !provider) throw new WalletNotConnectedError();
168
+
169
+ const response = await provider.signTransaction(transaction);
170
+ if (response.code != 200) {
171
+ throw response.error
172
+ }
173
+ return response.tx;
174
+ } catch (error: any) {
175
+ const errMsg = error.message;
176
+ this.emit('error', new WalletSignTransactionError(errMsg));
177
+ throw error;
178
+ }
179
+ }
180
+
181
+ async signAndSubmitTransaction(
182
+ transaction: TransactionPayload
183
+ ): Promise<{ hash: HexEncodedBytes }> {
184
+ try {
185
+ const wallet = this._wallet;
186
+ const provider = this._provider || window.fletch;
187
+ if (!wallet || !provider) throw new WalletNotConnectedError();
188
+ const response = await provider.signAndSubmitTransaction(transaction);
189
+ if (response.code == 200) {
190
+ return { hash: response.hash };
191
+ }
192
+
193
+ throw response.error
194
+
195
+ } catch (error: any) {
196
+ const errMsg = error.message;
197
+ this.emit('error', new WalletSignAndSubmitMessageError(errMsg));
198
+ throw error;
199
+ }
200
+ }
201
+
202
+ async signMessage(msgPayload: SignMessagePayload): Promise<SignMessageResponse> {
203
+ try {
204
+ const wallet = this._wallet;
205
+ const provider = this._provider || window.fletch;
206
+ if (!wallet || !provider) throw new WalletNotConnectedError();
207
+ if (typeof msgPayload !== 'object' || !msgPayload.nonce) {
208
+ throw new WalletSignMessageError('Invalid signMessage Payload');
209
+ }
210
+
211
+ const response = await provider?.signMessage(msgPayload);
212
+ if (response.code == 200) {
213
+ return response.signedMessage;
214
+ }
215
+
216
+ throw response.error
217
+ } catch (error: any) {
218
+ const errMsg = error.message;
219
+ this.emit('error', new WalletSignMessageError(errMsg));
220
+ throw error;
221
+ }
222
+ }
223
+ }