@depay/web3-wallets-evm 12.3.3
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/LICENSE +21 -0
- package/README.md +365 -0
- package/dist/umd/index.evm.js +22699 -0
- package/package.json +80 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 DePay
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
## Quickstart
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
yarn add @depay/web3-wallets
|
|
5
|
+
```
|
|
6
|
+
|
|
7
|
+
or
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
npm install --save @depay/web3-wallets
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```javascript
|
|
14
|
+
import { getWallets } from '@depay/web3-wallets'
|
|
15
|
+
|
|
16
|
+
let wallets = getWallets()
|
|
17
|
+
let wallet = wallets[0]
|
|
18
|
+
|
|
19
|
+
wallet.name // MetaMask
|
|
20
|
+
wallet.connect()
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Demo
|
|
24
|
+
|
|
25
|
+
https://depayfi.github.io/web3-wallets/demo.html
|
|
26
|
+
|
|
27
|
+
## Support
|
|
28
|
+
|
|
29
|
+
This library supports the following blockchains:
|
|
30
|
+
|
|
31
|
+
- [Ethereum](https://ethereum.org)
|
|
32
|
+
- [BNB Smart Chain](https://www.binance.org/smartChain)
|
|
33
|
+
- [Polygon](https://polygon.technology)
|
|
34
|
+
- [Solana](https://solana.com)
|
|
35
|
+
- [Velas](https://velas.com)
|
|
36
|
+
|
|
37
|
+
This library supports the following wallets:
|
|
38
|
+
|
|
39
|
+
- [MetaMask](https://metamask.io)
|
|
40
|
+
- [Coinbase Wallet](https://wallet.coinbase.com)
|
|
41
|
+
- [Phantom](https://phantom.app)
|
|
42
|
+
- [WalletConnect](https://walletconnect.org)
|
|
43
|
+
|
|
44
|
+
100+ different wallets via [WalletConnect](https://walletconnect.org), such as:
|
|
45
|
+
- [Trust Wallet](https://trustwallet.com)
|
|
46
|
+
- [DeFi Wallet by crypto.com](https://crypto.com/defi-wallet)
|
|
47
|
+
- [1inch Wallet](https://1inch.io/wallet/)
|
|
48
|
+
- [imToken Wallet](https://www.token.im)
|
|
49
|
+
- [TokenPocket](https://www.tokenpocket.pro/en)
|
|
50
|
+
- [Pillar](https://www.pillar.fi/)
|
|
51
|
+
- [Math Wallet](https://mathwallet.org/)
|
|
52
|
+
- [Ledger Live](https://www.ledger.com/ledger-live)
|
|
53
|
+
- [Argent Wallet](https://www.argent.xyz)
|
|
54
|
+
- [AlphaWallet](https://alphawallet.com/)
|
|
55
|
+
- [Unstoppable Wallet](https://unstoppable.money)
|
|
56
|
+
- [Atomic Wallet](https://atomicwallet.io)
|
|
57
|
+
- [Rainbow](https://rainbow.me/)
|
|
58
|
+
- and more...
|
|
59
|
+
|
|
60
|
+
## Functionalities
|
|
61
|
+
|
|
62
|
+
### getWallets
|
|
63
|
+
|
|
64
|
+
`getWallets`: Returns an array of available/connectable wallets.
|
|
65
|
+
|
|
66
|
+
```javascript
|
|
67
|
+
let wallets = getWallets();
|
|
68
|
+
// [<Wallet name='MetaMask'>, <Wallet name='Phantom'>]
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```javascript
|
|
72
|
+
let wallets = getWallets();
|
|
73
|
+
// [] no wallets detected. (you can still try WalletConnect or WalletLink)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
```javascript
|
|
77
|
+
{ getWallets, wallets } from "@depay/web3-wallets"
|
|
78
|
+
|
|
79
|
+
let foundWallets = getWallets()
|
|
80
|
+
|
|
81
|
+
let wallet
|
|
82
|
+
if(foundWallets.length == 1) {
|
|
83
|
+
wallet = foundWallets[0]
|
|
84
|
+
} else if(foundWallets.length > 1) {
|
|
85
|
+
wallet = foundWallets[parseInt(prompt('Which wallet do you want to connect?'), 10)]
|
|
86
|
+
} else {
|
|
87
|
+
// Let the user choose:
|
|
88
|
+
// you can still try to connect via wallets.WalletConnect.connect()
|
|
89
|
+
// or wallets.WalletLink.connect()
|
|
90
|
+
wallet = wallets.WalletLink
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Name
|
|
95
|
+
|
|
96
|
+
`name:string`: Returns the name of the wallet.
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
wallet.name // 'MetaMask'
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Logo
|
|
103
|
+
|
|
104
|
+
`logo:string`: Returns the logo of the wallet as PNG base64-encoded.
|
|
105
|
+
|
|
106
|
+
```javascript
|
|
107
|
+
wallet.logo // 'data:image/png;base64,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'
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Account
|
|
111
|
+
|
|
112
|
+
`async account():string`: Gets the currently connected and active account (without prompting a connect screen). Returns `undefined` if no account is connected.
|
|
113
|
+
|
|
114
|
+
```javascript
|
|
115
|
+
await wallet.account() // '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Connect an account
|
|
119
|
+
|
|
120
|
+
`async connect():array`: Connects accounts. Potentially opens wallet connect screen. Provides connected accounts in async return. If wallet fails to connect, also returns an empty array `[]`.
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
await wallet.connect() // '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Supported Blockchains
|
|
127
|
+
|
|
128
|
+
`blockchains:Array`: Array containing the names of supported blockchains
|
|
129
|
+
|
|
130
|
+
```javascript
|
|
131
|
+
wallet.name // MetaMask
|
|
132
|
+
wallet.blockchains // ['ethereum', 'bsc', 'polygon']
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Check if wallet is connected to a specific blockchain
|
|
136
|
+
|
|
137
|
+
`async connectedTo(blockchain):Boolean`: Checks if wallet is connected to a specific blockchain.
|
|
138
|
+
|
|
139
|
+
```javascript
|
|
140
|
+
await wallet.connectedTo('ethereum') // true
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
If no param is given it well tell you to which blockchain the wallet is connected to:
|
|
144
|
+
|
|
145
|
+
```javascript
|
|
146
|
+
await wallet.connectedTo() // 'bsc'
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Receive wallet events
|
|
150
|
+
|
|
151
|
+
`on(string, function):undefined`: Register a callback function for given events.
|
|
152
|
+
|
|
153
|
+
```javascript
|
|
154
|
+
wallet.on('account', (newAccount)=>{
|
|
155
|
+
doSomething(newAccount)
|
|
156
|
+
})
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
#### Events
|
|
160
|
+
|
|
161
|
+
`on('account', (newAccount)=>{})`: Triggers when user changes the connected/active wallet account.
|
|
162
|
+
|
|
163
|
+
#### Deregister wallet events
|
|
164
|
+
|
|
165
|
+
`.on` returns a callback function that needs to be passed to `.off` if you want to deregister the event listener:
|
|
166
|
+
|
|
167
|
+
```javascript
|
|
168
|
+
let callback = wallet.on('account', (newAccount)=>{
|
|
169
|
+
doSomething(newAccount)
|
|
170
|
+
})
|
|
171
|
+
|
|
172
|
+
//...
|
|
173
|
+
|
|
174
|
+
wallet.off('account', callback) // removes listener
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Switch blockchain/network
|
|
178
|
+
|
|
179
|
+
`async switchTo(blockchain)`: Changes wallet connection to a specific network (adds it to the wallet in case it's missing)
|
|
180
|
+
|
|
181
|
+
```javascript
|
|
182
|
+
await wallet.switchTo('bsc')
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Transaction
|
|
186
|
+
|
|
187
|
+
### sendTransaction
|
|
188
|
+
|
|
189
|
+
#### EVM: sendTransaction
|
|
190
|
+
|
|
191
|
+
Available arguments for EVM blockchains:
|
|
192
|
+
|
|
193
|
+
`blockchain: String`: Name of the blockchain e.g. 'ethereum'.
|
|
194
|
+
|
|
195
|
+
`to String`: Address of the contract to be transacted with.
|
|
196
|
+
|
|
197
|
+
`api: Array`: Api of the contract (e.g. abi for Ethereum).
|
|
198
|
+
|
|
199
|
+
`method: String`: Name of the contract method to be called.
|
|
200
|
+
|
|
201
|
+
`params: Object or Array`: Parameters passed to the method.
|
|
202
|
+
|
|
203
|
+
`value: Number or BigNumber as String`: Value of the transaction (amount of the native blockchain currency sent along with the transaction).
|
|
204
|
+
|
|
205
|
+
`sent: Function (transaction)=>{}`: Callback to be executed if transaction has been sent to the network.
|
|
206
|
+
|
|
207
|
+
`succeeded: Function (transaction)=>{}`: Callback to be executed if transaction was successful and has been confirmed once by the network.
|
|
208
|
+
|
|
209
|
+
`failed: Function (transaction, error)=>{}`: Callback to be executed if transaction failed (e.g. reverted).
|
|
210
|
+
|
|
211
|
+
##### EVM: Simple value transfer
|
|
212
|
+
|
|
213
|
+
e.g. sending 0.01 ETH on Ethereum:
|
|
214
|
+
|
|
215
|
+
```javascript
|
|
216
|
+
|
|
217
|
+
let sentTransaction = await wallet.sendTransaction({
|
|
218
|
+
blockchain: 'ethereum',
|
|
219
|
+
to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',
|
|
220
|
+
value: 0.01,
|
|
221
|
+
sent: function(transaction){},
|
|
222
|
+
succeeded: function(transaction){},
|
|
223
|
+
failed: function(transaction, error){}
|
|
224
|
+
})
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
##### EVM: Smart contract interaction
|
|
228
|
+
|
|
229
|
+
```javascript
|
|
230
|
+
let sentTransaction = await wallet.sendTransaction({
|
|
231
|
+
blockchain: 'ethereum',
|
|
232
|
+
to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',
|
|
233
|
+
api: [{"inputs":[{"internalType":"address","name":"_configuration","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"configuration","outputs":[{"internalType":"contract DePayRouterV1Configuration","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pluginAddress","type":"address"}],"name":"isApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"address[]","name":"plugins","type":"address[]"},{"internalType":"string[]","name":"data","type":"string[]"}],"name":"route","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],
|
|
234
|
+
method: 'route',
|
|
235
|
+
params: {
|
|
236
|
+
path: ["0xb056c38f6b7Dc4064367403E26424CD2c60655e1","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb"],
|
|
237
|
+
amounts: ["11275067000000000000000","100000000000000000000", "1632063302"],
|
|
238
|
+
addresses: ["0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d", "0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d"],
|
|
239
|
+
plugins: ["0xe04b08Dfc6CaA0F4Ec523a3Ae283Ece7efE00019", "0x99F3F4685a7178F26EB4F4Ca8B75a1724F1577B9"],
|
|
240
|
+
data: []
|
|
241
|
+
},
|
|
242
|
+
value: "0",
|
|
243
|
+
sent: function(transaction){},
|
|
244
|
+
succeeded: function(transaction){},
|
|
245
|
+
failed: function(transaction, error){}
|
|
246
|
+
})
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
#### Solana: sendTransaction
|
|
250
|
+
|
|
251
|
+
Available arguments for Solana blockchains:
|
|
252
|
+
|
|
253
|
+
`blockchain: String`: Name of the blockchain e.g. 'solana'.
|
|
254
|
+
|
|
255
|
+
`sent: Function (transaction)=>{}`: Callback to be executed if transaction has been sent to the network.
|
|
256
|
+
|
|
257
|
+
`succeeded: Function (transaction)=>{}`: Callback to be executed if transaction was successful and has been confirmed once by the network.
|
|
258
|
+
|
|
259
|
+
`failed: Function (transaction, error)=>{}`: Callback to be executed if transaction failed (e.g. reverted).
|
|
260
|
+
|
|
261
|
+
##### Solana: Simple value transfer
|
|
262
|
+
|
|
263
|
+
e.g. send 0.01 SOL on Solana:
|
|
264
|
+
|
|
265
|
+
`to String`: Address of the receiver.
|
|
266
|
+
|
|
267
|
+
`value: Number or BigNumber as String`: Value of the transaction (only needed for simple SOL transfers).
|
|
268
|
+
|
|
269
|
+
```javascript
|
|
270
|
+
|
|
271
|
+
let sentTransaction = await wallet.sendTransaction({
|
|
272
|
+
blockchain: 'solana',
|
|
273
|
+
to: '2UgCJaHU5y8NC4uWQcZYeV9a5RyYLF7iKYCybCsdFFD1',
|
|
274
|
+
value: 0.01,
|
|
275
|
+
sent: function(transaction){},
|
|
276
|
+
succeeded: function(transaction){},
|
|
277
|
+
failed: function(transaction, error){}
|
|
278
|
+
})
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
##### Solana: Sign and send instructions
|
|
282
|
+
|
|
283
|
+
`instructions Array`: A set of TransactionInstructions
|
|
284
|
+
|
|
285
|
+
e.g. Send 1 USDC:
|
|
286
|
+
|
|
287
|
+
```javascript
|
|
288
|
+
import { Token } from '@depay/web3-tokens'
|
|
289
|
+
|
|
290
|
+
let sentTransaction = await wallet.sendTransaction({
|
|
291
|
+
blockchain: 'solana',
|
|
292
|
+
instructions: [
|
|
293
|
+
await Token.solana.createTransferInstructions({
|
|
294
|
+
token: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
295
|
+
amount: '1000000',
|
|
296
|
+
from: await wallet.account(),
|
|
297
|
+
to: '5AcFMJZkXo14r3Hj99iYd1HScPiM4hAcLZf552DfZkxas'
|
|
298
|
+
})
|
|
299
|
+
],
|
|
300
|
+
sent: function(transaction){},
|
|
301
|
+
succeeded: function(transaction){},
|
|
302
|
+
failed: function(transaction, error){}
|
|
303
|
+
})
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
#### value
|
|
307
|
+
|
|
308
|
+
If value is passed as a number it's gonna be converted into a big number applying the individual blockhain's default decimals:
|
|
309
|
+
|
|
310
|
+
```javascript
|
|
311
|
+
let transaction = new Transaction({
|
|
312
|
+
...,
|
|
313
|
+
value: 1
|
|
314
|
+
})
|
|
315
|
+
|
|
316
|
+
transaction.value // '1000000000000000000'
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
If value is passed as a string or as a BigNumber, value is used just as provided:
|
|
320
|
+
|
|
321
|
+
```javascript
|
|
322
|
+
let transaction = new Transaction({
|
|
323
|
+
...,
|
|
324
|
+
value: '1000000000000000000'
|
|
325
|
+
})
|
|
326
|
+
|
|
327
|
+
transaction.value // '1000000000000000000'
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
#### wrong network
|
|
331
|
+
|
|
332
|
+
`sendTransaction` rejects with:
|
|
333
|
+
|
|
334
|
+
```javascript
|
|
335
|
+
{ code: 'WRONG_NETWORK' }
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
in case wallet is connected to the wrong network and network cant be switched automatically.
|
|
339
|
+
|
|
340
|
+
### Sign messages
|
|
341
|
+
|
|
342
|
+
```javascript
|
|
343
|
+
let signature = await wallet.sign("This is a message to be signed")
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Logos
|
|
347
|
+
|
|
348
|
+
### Conversion
|
|
349
|
+
|
|
350
|
+
Use https://codebeautify.org
|
|
351
|
+
|
|
352
|
+
## Development
|
|
353
|
+
|
|
354
|
+
### Get started
|
|
355
|
+
|
|
356
|
+
```
|
|
357
|
+
yarn install
|
|
358
|
+
yarn dev
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### Release
|
|
362
|
+
|
|
363
|
+
```
|
|
364
|
+
npm publish
|
|
365
|
+
```
|