@depay/web3-wallets-svm 18.0.0
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 +519 -0
- package/dist/esm/index.evm.js +1941 -0
- package/dist/esm/index.js +2564 -0
- package/dist/esm/index.svm.js +839 -0
- package/dist/umd/index.evm.js +1950 -0
- package/dist/umd/index.js +2572 -0
- package/dist/umd/index.svm.js +850 -0
- package/package.json +40 -0
|
@@ -0,0 +1,1941 @@
|
|
|
1
|
+
import { request, estimate, getProvider } from '@depay/web3-client-evm';
|
|
2
|
+
import Blockchains from '@depay/web3-blockchains';
|
|
3
|
+
import { ethers } from 'ethers';
|
|
4
|
+
import { SignClient } from '@depay/walletconnect-v2';
|
|
5
|
+
import { CoinbaseWalletSDK } from '@depay/coinbase-wallet-sdk';
|
|
6
|
+
import { MiniKit, ResponseEvent } from '@depay/worldcoin-precompiled';
|
|
7
|
+
|
|
8
|
+
let supported$1 = ['ethereum', 'bsc', 'polygon', 'fantom', 'arbitrum', 'avalanche', 'gnosis', 'optimism', 'base', 'worldchain'];
|
|
9
|
+
supported$1.evm = ['ethereum', 'bsc', 'polygon', 'fantom', 'arbitrum', 'avalanche', 'gnosis', 'optimism', 'base', 'worldchain'];
|
|
10
|
+
supported$1.svm = [];
|
|
11
|
+
|
|
12
|
+
function _optionalChain$p(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
13
|
+
class Transaction {
|
|
14
|
+
|
|
15
|
+
constructor({
|
|
16
|
+
blockchain,
|
|
17
|
+
from,
|
|
18
|
+
to,
|
|
19
|
+
value,
|
|
20
|
+
api,
|
|
21
|
+
method,
|
|
22
|
+
params,
|
|
23
|
+
instructions,
|
|
24
|
+
signers,
|
|
25
|
+
alts,
|
|
26
|
+
sent,
|
|
27
|
+
succeeded,
|
|
28
|
+
failed,
|
|
29
|
+
accepted,
|
|
30
|
+
}) {
|
|
31
|
+
|
|
32
|
+
// required
|
|
33
|
+
this.blockchain = blockchain;
|
|
34
|
+
this.from = (from && from.match('0x')) ? ethers.utils.getAddress(from) : from;
|
|
35
|
+
this.to = (to && to.match('0x')) ? ethers.utils.getAddress(to) : to;
|
|
36
|
+
|
|
37
|
+
// optional
|
|
38
|
+
this.value = _optionalChain$p([Transaction, 'access', _ => _.bigNumberify, 'call', _2 => _2(value, blockchain), 'optionalAccess', _3 => _3.toString, 'call', _4 => _4()]);
|
|
39
|
+
this.api = api;
|
|
40
|
+
this.method = method;
|
|
41
|
+
this.params = params;
|
|
42
|
+
this.accepted = accepted;
|
|
43
|
+
this.sent = sent;
|
|
44
|
+
this.succeeded = succeeded;
|
|
45
|
+
this.failed = failed;
|
|
46
|
+
this.instructions = instructions;
|
|
47
|
+
this.signers = signers;
|
|
48
|
+
this.alts = alts;
|
|
49
|
+
|
|
50
|
+
// internal
|
|
51
|
+
this._succeeded = false;
|
|
52
|
+
this._failed = false;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async prepare({ wallet }) {
|
|
56
|
+
this.from = await wallet.account(this.blockchain);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static bigNumberify(value, blockchain) {
|
|
60
|
+
if (typeof value === 'number') {
|
|
61
|
+
return ethers.utils.parseUnits(value.toString(), Blockchains[blockchain].currency.decimals)
|
|
62
|
+
} else if (value && value.toString) {
|
|
63
|
+
return ethers.BigNumber.from(value.toString())
|
|
64
|
+
} else {
|
|
65
|
+
return value
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
findFragment() {
|
|
70
|
+
return this.getContract().interface.fragments.find((fragment) => {
|
|
71
|
+
return(
|
|
72
|
+
fragment.name == this.method &&
|
|
73
|
+
(fragment.inputs && this.params && typeof(this.params) === 'object' ? fragment.inputs.length == Object.keys(this.params).length : true)
|
|
74
|
+
)
|
|
75
|
+
})
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
getParamType(param) {
|
|
79
|
+
if(_optionalChain$p([param, 'optionalAccess', _5 => _5.components, 'optionalAccess', _6 => _6.length])) {
|
|
80
|
+
return `(${param.components.map((param)=>this.getParamType(param)).join(',')})`
|
|
81
|
+
} else {
|
|
82
|
+
return param.type
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
getMethodNameWithSignature() {
|
|
87
|
+
let fragment = this.findFragment();
|
|
88
|
+
if(fragment.inputs) {
|
|
89
|
+
return `${this.method}(${fragment.inputs.map((param)=>this.getParamType(param)).join(',')})`
|
|
90
|
+
} else {
|
|
91
|
+
return this.method
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
getContractArguments() {
|
|
96
|
+
if(this.params instanceof Array) {
|
|
97
|
+
return this.params
|
|
98
|
+
} else if (this.params instanceof Object) {
|
|
99
|
+
let fragment = this.findFragment();
|
|
100
|
+
|
|
101
|
+
return fragment.inputs.map((input) => {
|
|
102
|
+
return this.params[input.name]
|
|
103
|
+
})
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
getContract() {
|
|
108
|
+
return new ethers.Contract(this.to, this.api)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
async getData() {
|
|
112
|
+
let contractArguments = this.getContractArguments();
|
|
113
|
+
let populatedTransaction;
|
|
114
|
+
if(contractArguments) {
|
|
115
|
+
populatedTransaction = await this.getContract().populateTransaction[this.getMethodNameWithSignature()].apply(
|
|
116
|
+
null, contractArguments
|
|
117
|
+
);
|
|
118
|
+
} else {
|
|
119
|
+
populatedTransaction = await this.getContract().populateTransaction[this.getMethodNameWithSignature()].apply(null);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return populatedTransaction.data
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
success() {
|
|
126
|
+
if (this._succeeded) {
|
|
127
|
+
return Promise.resolve(this)
|
|
128
|
+
}
|
|
129
|
+
return new Promise((resolve, reject) => {
|
|
130
|
+
let originalSucceeded = this.succeeded;
|
|
131
|
+
this.succeeded = (transaction) => {
|
|
132
|
+
if (originalSucceeded) originalSucceeded(transaction);
|
|
133
|
+
resolve(transaction);
|
|
134
|
+
};
|
|
135
|
+
})
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
failure() {
|
|
139
|
+
if (this._failed) {
|
|
140
|
+
return Promise.resolve(this)
|
|
141
|
+
}
|
|
142
|
+
return new Promise((resolve, reject) => {
|
|
143
|
+
let originalFailed = this.failed;
|
|
144
|
+
this.failed = (transaction, reason) => {
|
|
145
|
+
if (originalFailed) originalFailed(transaction, reason);
|
|
146
|
+
resolve(transaction, reason);
|
|
147
|
+
};
|
|
148
|
+
})
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function _optionalChain$o(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
153
|
+
|
|
154
|
+
const sendTransaction$2 = async ({ transaction, wallet })=> {
|
|
155
|
+
transaction = new Transaction(transaction);
|
|
156
|
+
if((await wallet.connectedTo(transaction.blockchain)) == false) {
|
|
157
|
+
await wallet.switchTo(transaction.blockchain);
|
|
158
|
+
}
|
|
159
|
+
if((await wallet.connectedTo(transaction.blockchain)) == false) {
|
|
160
|
+
throw({ code: 'WRONG_NETWORK' })
|
|
161
|
+
}
|
|
162
|
+
await transaction.prepare({ wallet });
|
|
163
|
+
let transactionCount = await request({ blockchain: transaction.blockchain, method: 'transactionCount', address: transaction.from });
|
|
164
|
+
transaction.nonce = transactionCount;
|
|
165
|
+
let provider = new ethers.providers.Web3Provider(wallet.getProvider(), 'any');
|
|
166
|
+
let signer = provider.getSigner(0);
|
|
167
|
+
await submit$2({ transaction, provider, signer }).then((sentTransaction)=>{
|
|
168
|
+
if (sentTransaction) {
|
|
169
|
+
transaction.id = sentTransaction.hash;
|
|
170
|
+
transaction.nonce = sentTransaction.nonce || transactionCount;
|
|
171
|
+
transaction.url = Blockchains.findByName(transaction.blockchain).explorerUrlFor({ transaction });
|
|
172
|
+
if (transaction.sent) transaction.sent(transaction);
|
|
173
|
+
retrieveConfirmedTransaction$2(sentTransaction).then(() => {
|
|
174
|
+
transaction._succeeded = true;
|
|
175
|
+
if (transaction.succeeded) transaction.succeeded(transaction);
|
|
176
|
+
}).catch((error)=>{
|
|
177
|
+
if(error && error.code && error.code == 'TRANSACTION_REPLACED') {
|
|
178
|
+
if(error.replacement && error.replacement.hash) {
|
|
179
|
+
transaction.id = error.replacement.hash;
|
|
180
|
+
transaction.url = Blockchains.findByName(transaction.blockchain).explorerUrlFor({ transaction });
|
|
181
|
+
}
|
|
182
|
+
if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 1) {
|
|
183
|
+
transaction._succeeded = true;
|
|
184
|
+
if (transaction.succeeded) transaction.succeeded(transaction);
|
|
185
|
+
} else if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 0) {
|
|
186
|
+
transaction._failed = true;
|
|
187
|
+
if(transaction.failed) transaction.failed(transaction, error);
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
transaction._failed = true;
|
|
191
|
+
if(transaction.failed) transaction.failed(transaction, error);
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
} else {
|
|
195
|
+
throw('Submitting transaction failed!')
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
return transaction
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
const retrieveConfirmedTransaction$2 = (sentTransaction)=>{
|
|
202
|
+
return new Promise((resolve, reject)=>{
|
|
203
|
+
try {
|
|
204
|
+
sentTransaction.wait(1).then(resolve).catch((error)=>{
|
|
205
|
+
if(
|
|
206
|
+
(error && _optionalChain$o([error, 'optionalAccess', _ => _.stack, 'optionalAccess', _2 => _2.match, 'call', _3 => _3('JSON-RPC error')])) ||
|
|
207
|
+
(error && error.toString().match('undefined'))
|
|
208
|
+
) {
|
|
209
|
+
setTimeout(()=>{
|
|
210
|
+
retrieveConfirmedTransaction$2(sentTransaction)
|
|
211
|
+
.then(resolve)
|
|
212
|
+
.catch(reject);
|
|
213
|
+
}, 500);
|
|
214
|
+
} else {
|
|
215
|
+
reject(error);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
} catch(error) {
|
|
219
|
+
if(
|
|
220
|
+
(error && _optionalChain$o([error, 'optionalAccess', _4 => _4.stack, 'optionalAccess', _5 => _5.match, 'call', _6 => _6('JSON-RPC error')])) ||
|
|
221
|
+
(error && error.toString().match('undefined'))
|
|
222
|
+
) {
|
|
223
|
+
setTimeout(()=>{
|
|
224
|
+
retrieveConfirmedTransaction$2(sentTransaction)
|
|
225
|
+
.then(resolve)
|
|
226
|
+
.catch(reject);
|
|
227
|
+
}, 500);
|
|
228
|
+
} else {
|
|
229
|
+
reject(error);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
})
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
const submit$2 = ({ transaction, provider, signer }) => {
|
|
236
|
+
if(transaction.method) {
|
|
237
|
+
return submitContractInteraction$2({ transaction, signer, provider })
|
|
238
|
+
} else {
|
|
239
|
+
return submitSimpleTransfer$2({ transaction, signer })
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
const submitContractInteraction$2 = async ({ transaction, signer, provider })=>{
|
|
244
|
+
let contract = new ethers.Contract(transaction.to, transaction.api, provider);
|
|
245
|
+
let contractArguments = transaction.getContractArguments({ contract });
|
|
246
|
+
let method = contract.connect(signer)[transaction.getMethodNameWithSignature()];
|
|
247
|
+
let gas;
|
|
248
|
+
try {
|
|
249
|
+
gas = await estimate(transaction);
|
|
250
|
+
gas = gas.add(gas.div(10));
|
|
251
|
+
} catch (e) {}
|
|
252
|
+
if(contractArguments) {
|
|
253
|
+
return await method(...contractArguments, {
|
|
254
|
+
value: Transaction.bigNumberify(transaction.value, transaction.blockchain),
|
|
255
|
+
gasLimit: _optionalChain$o([gas, 'optionalAccess', _7 => _7.toHexString, 'call', _8 => _8()])
|
|
256
|
+
})
|
|
257
|
+
} else {
|
|
258
|
+
return await method({
|
|
259
|
+
value: Transaction.bigNumberify(transaction.value, transaction.blockchain),
|
|
260
|
+
gasLimit: _optionalChain$o([gas, 'optionalAccess', _9 => _9.toHexString, 'call', _10 => _10()])
|
|
261
|
+
})
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
const submitSimpleTransfer$2 = ({ transaction, signer })=>{
|
|
266
|
+
return signer.sendTransaction({
|
|
267
|
+
to: transaction.to,
|
|
268
|
+
value: Transaction.bigNumberify(transaction.value, transaction.blockchain)
|
|
269
|
+
})
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
function _optionalChain$n(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
273
|
+
|
|
274
|
+
class WindowEthereum {
|
|
275
|
+
|
|
276
|
+
static __initStatic() {this.info = {
|
|
277
|
+
name: 'Ethereum Wallet',
|
|
278
|
+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI2LjAuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA0NDYuNCAzNzYuOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNDQ2LjQgMzc2Ljg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojODI4NDg3O30KCS5zdDF7ZmlsbDojMzQzNDM0O30KCS5zdDJ7ZmlsbDojOEM4QzhDO30KCS5zdDN7ZmlsbDojM0MzQzNCO30KCS5zdDR7ZmlsbDojMTQxNDE0O30KCS5zdDV7ZmlsbDojMzkzOTM5O30KPC9zdHlsZT4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTM4MS43LDExMC4yaDY0LjdWNDYuNWMwLTI1LjctMjAuOC00Ni41LTQ2LjUtNDYuNUg0Ni41QzIwLjgsMCwwLDIwLjgsMCw0Ni41djY1LjFoMzUuN2wyNi45LTI2LjkKCWMxLjUtMS41LDMuNi0yLjUsNS43LTIuN2wwLDBoMC40aDc4LjZjNS4zLTI1LjUsMzAuMi00Miw1NS43LTM2LjdjMjUuNSw1LjMsNDIsMzAuMiwzNi43LDU1LjdjLTEuNiw3LjUtNC45LDE0LjYtOS44LDIwLjUKCWMtMC45LDEuMS0xLjksMi4yLTMsMy4zYy0xLjEsMS4xLTIuMiwyLjEtMy4zLDNjLTIwLjEsMTYuNi00OS45LDEzLjgtNjYuNS02LjNjLTQuOS01LjktOC4zLTEzLTkuOC0yMC42SDczLjJsLTI2LjksMjYuOAoJYy0xLjUsMS41LTMuNiwyLjUtNS43LDIuN2wwLDBoLTAuNGgtMC4xaC0wLjVIMHY3NGgyOC44bDE4LjItMTguMmMxLjUtMS42LDMuNi0yLjUsNS43LTIuN2wwLDBoMC40aDI5LjkKCWM1LjItMjUuNSwzMC4yLTQxLjksNTUuNy0zNi43czQxLjksMzAuMiwzNi43LDU1LjdzLTMwLjIsNDEuOS01NS43LDM2LjdjLTE4LjUtMy44LTMyLjktMTguMi0zNi43LTM2LjdINTcuN2wtMTguMiwxOC4zCgljLTEuNSwxLjUtMy42LDIuNS01LjcsMi43bDAsMGgtMC40SDB2MzQuMmg1Ni4zYzAuMiwwLDAuMywwLDAuNSwwaDAuMWgwLjRsMCwwYzIuMiwwLjIsNC4yLDEuMiw1LjgsMi44bDI4LDI4aDU3LjcKCWM1LjMtMjUuNSwzMC4yLTQyLDU1LjctMzYuN3M0MiwzMC4yLDM2LjcsNTUuN2MtMS43LDguMS01LjUsMTUuNy0xMSwyMS45Yy0wLjYsMC43LTEuMiwxLjMtMS45LDJzLTEuMywxLjMtMiwxLjkKCWMtMTkuNSwxNy4zLTQ5LjMsMTUuNi02Ni43LTMuOWMtNS41LTYuMi05LjMtMTMuNy0xMS0yMS45SDg3LjFjLTEuMSwwLTIuMS0wLjItMy4xLTAuNWgtMC4xbC0wLjMtMC4xbC0wLjItMC4xbC0wLjItMC4xbC0wLjMtMC4xCgloLTAuMWMtMC45LTAuNS0xLjgtMS4xLTIuNi0xLjhsLTI4LTI4SDB2NTMuNWMwLjEsMjUuNywyMC45LDQ2LjQsNDYuNSw0Ni40aDM1My4zYzI1LjcsMCw0Ni41LTIwLjgsNDYuNS00Ni41di02My42aC02NC43CgljLTQzLjIsMC03OC4yLTM1LTc4LjItNzguMmwwLDBDMzAzLjUsMTQ1LjIsMzM4LjUsMTEwLjIsMzgxLjcsMTEwLjJ6Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMjAuOSwyOTguMWMwLTE0LjQtMTEuNi0yNi0yNi0yNnMtMjYsMTEuNi0yNiwyNnMxMS42LDI2LDI2LDI2UzIyMC45LDMxMi40LDIyMC45LDI5OC4xTDIyMC45LDI5OC4xeiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjE5LjYsOTEuNWMwLTE0LjQtMTEuNi0yNi0yNi0yNnMtMjYsMTEuNi0yNiwyNnMxMS42LDI2LDI2LDI2UzIxOS42LDEwNS44LDIxOS42LDkxLjV6Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zODIuMiwxMjguOGgtMC41Yy0zMi45LDAtNTkuNiwyNi43LTU5LjYsNTkuNmwwLDBsMCwwYzAsMzIuOSwyNi43LDU5LjYsNTkuNiw1OS42bDAsMGgwLjUKCWMzMi45LDAsNTkuNi0yNi43LDU5LjYtNTkuNmwwLDBDNDQxLjgsMTU1LjQsNDE1LjEsMTI4LjgsMzgyLjIsMTI4Ljh6IE0zOTYuNiwyMTkuNGgtMzFsOC45LTMyLjVjLTcuNy0zLjctMTEtMTIuOS03LjQtMjAuNgoJYzMuNy03LjcsMTIuOS0xMSwyMC42LTcuNGM3LjcsMy43LDExLDEyLjksNy40LDIwLjZjLTEuNSwzLjItNC4xLDUuOC03LjQsNy40TDM5Ni42LDIxOS40eiIvPgo8ZyBpZD0iTGF5ZXJfeDAwMjBfMSI+Cgk8ZyBpZD0iXzE0MjEzOTQzNDI0MDAiPgoJCTxnPgoJCQk8cG9seWdvbiBjbGFzcz0ic3QxIiBwb2ludHM9IjEyOSwxNjYuMiAxMjguNywxNjcuMyAxMjguNywyMDEuNCAxMjksMjAxLjcgMTQ0LjgsMTkyLjQgCQkJIi8+CgkJCTxwb2x5Z29uIGNsYXNzPSJzdDIiIHBvaW50cz0iMTI5LDE2Ni4yIDExMy4yLDE5Mi40IDEyOSwyMDEuNyAxMjksMTg1LjIgCQkJIi8+CgkJCTxwb2x5Z29uIGNsYXNzPSJzdDMiIHBvaW50cz0iMTI5LDIwNC43IDEyOC44LDIwNC45IDEyOC44LDIxNyAxMjksMjE3LjYgMTQ0LjgsMTk1LjQgCQkJIi8+CgkJCTxwb2x5Z29uIGNsYXNzPSJzdDIiIHBvaW50cz0iMTI5LDIxNy42IDEyOSwyMDQuNyAxMTMuMiwxOTUuNCAJCQkiLz4KCQkJPHBvbHlnb24gY2xhc3M9InN0NCIgcG9pbnRzPSIxMjksMjAxLjcgMTQ0LjgsMTkyLjQgMTI5LDE4NS4yIAkJCSIvPgoJCQk8cG9seWdvbiBjbGFzcz0ic3Q1IiBwb2ludHM9IjExMy4yLDE5Mi40IDEyOSwyMDEuNyAxMjksMTg1LjIgCQkJIi8+CgkJPC9nPgoJPC9nPgo8L2c+Cjwvc3ZnPgo=",
|
|
279
|
+
blockchains: supported$1.evm
|
|
280
|
+
};}
|
|
281
|
+
|
|
282
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
283
|
+
return (
|
|
284
|
+
_optionalChain$n([window, 'optionalAccess', _38 => _38.ethereum]) &&
|
|
285
|
+
// not MetaMask
|
|
286
|
+
!(_optionalChain$n([window, 'optionalAccess', _39 => _39.ethereum, 'optionalAccess', _40 => _40.isMetaMask]) && Object.keys(window.ethereum).filter((key)=>key.match(/^is(?!Connected)(?!PocketUniverse)(?!RevokeCash)/)).length == 1) &&
|
|
287
|
+
// not Coin98
|
|
288
|
+
!_optionalChain$n([window, 'optionalAccess', _41 => _41.coin98]) &&
|
|
289
|
+
// not Trust Wallet
|
|
290
|
+
!(_optionalChain$n([window, 'optionalAccess', _42 => _42.ethereum, 'optionalAccess', _43 => _43.isTrust]) || _optionalChain$n([window, 'optionalAccess', _44 => _44.ethereum, 'optionalAccess', _45 => _45.isTrustWallet])) &&
|
|
291
|
+
// not crypto.com
|
|
292
|
+
!_optionalChain$n([window, 'optionalAccess', _46 => _46.ethereum, 'optionalAccess', _47 => _47.isDeficonnectProvider]) &&
|
|
293
|
+
// not HyperPay
|
|
294
|
+
!_optionalChain$n([window, 'optionalAccess', _48 => _48.ethereum, 'optionalAccess', _49 => _49.isHyperPay]) &&
|
|
295
|
+
// not Phantom
|
|
296
|
+
!(window.phantom && !window.glow && !_optionalChain$n([window, 'optionalAccess', _50 => _50.solana, 'optionalAccess', _51 => _51.isGlow]) && !['isBitKeep'].some((identifier)=>window.solana && window.solana[identifier])) &&
|
|
297
|
+
// not Rabby
|
|
298
|
+
!_optionalChain$n([window, 'optionalAccess', _52 => _52.ethereum, 'optionalAccess', _53 => _53.isRabby]) &&
|
|
299
|
+
// not Backpack
|
|
300
|
+
!_optionalChain$n([window, 'optionalAccess', _54 => _54.backpack, 'optionalAccess', _55 => _55.isBackpack]) &&
|
|
301
|
+
// not TokenPocket
|
|
302
|
+
!_optionalChain$n([window, 'optionalAccess', _56 => _56.ethereum, 'optionalAccess', _57 => _57.isTokenPocket]) &&
|
|
303
|
+
// not BitKeep
|
|
304
|
+
!_optionalChain$n([window, 'optionalAccess', _58 => _58.ethereum, 'optionalAccess', _59 => _59.isBitKeep]) &&
|
|
305
|
+
// not Coinbase
|
|
306
|
+
!(_optionalChain$n([window, 'optionalAccess', _60 => _60.ethereum, 'optionalAccess', _61 => _61.isCoinbaseWallet]) || _optionalChain$n([window, 'optionalAccess', _62 => _62.ethereum, 'optionalAccess', _63 => _63.isWalletLink])) &&
|
|
307
|
+
// MetaMask through ProviderMap
|
|
308
|
+
!_optionalChain$n([window, 'optionalAccess', _64 => _64.ethereum, 'optionalAccess', _65 => _65.providerMap, 'optionalAccess', _66 => _66.has, 'call', _67 => _67('MetaMask')]) &&
|
|
309
|
+
// Brave Wallet
|
|
310
|
+
!_optionalChain$n([window, 'optionalAccess', _68 => _68.ethereum, 'optionalAccess', _69 => _69.isBraveWallet]) &&
|
|
311
|
+
// Uniswap Wallet
|
|
312
|
+
!_optionalChain$n([window, 'optionalAccess', _70 => _70.ethereum, 'optionalAccess', _71 => _71.isUniswapWallet]) &&
|
|
313
|
+
// Rainbow
|
|
314
|
+
!_optionalChain$n([window, 'optionalAccess', _72 => _72.ethereum, 'optionalAccess', _73 => _73.isRainbow]) &&
|
|
315
|
+
// OKX Wallet
|
|
316
|
+
!_optionalChain$n([window, 'optionalAccess', _74 => _74.okxwallet])
|
|
317
|
+
)
|
|
318
|
+
};}
|
|
319
|
+
|
|
320
|
+
constructor () {
|
|
321
|
+
this.name = this.constructor.info.name;
|
|
322
|
+
this.logo = this.constructor.info.logo;
|
|
323
|
+
this.blockchains = this.constructor.info.blockchains;
|
|
324
|
+
this.sendTransaction = (transaction)=>{
|
|
325
|
+
return sendTransaction$2({
|
|
326
|
+
wallet: this,
|
|
327
|
+
transaction
|
|
328
|
+
})
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
getProvider() { return window.ethereum }
|
|
333
|
+
|
|
334
|
+
async account() {
|
|
335
|
+
if(!this.getProvider()) { return undefined }
|
|
336
|
+
const accounts = (await this.getProvider().request({ method: 'eth_accounts' })).map((address)=>ethers.utils.getAddress(address));
|
|
337
|
+
return accounts[0]
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
async connect() {
|
|
341
|
+
if(!this.getProvider()) { return undefined }
|
|
342
|
+
const accounts = (await this.getProvider().request({ method: 'eth_requestAccounts' })).map((address)=>ethers.utils.getAddress(address));
|
|
343
|
+
return accounts[0]
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
on(event, callback) {
|
|
347
|
+
let internalCallback;
|
|
348
|
+
switch (event) {
|
|
349
|
+
case 'account':
|
|
350
|
+
internalCallback = (accounts) => callback(ethers.utils.getAddress(accounts[0]));
|
|
351
|
+
this.getProvider().on('accountsChanged', internalCallback);
|
|
352
|
+
break
|
|
353
|
+
}
|
|
354
|
+
return internalCallback
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
off(event, internalCallback) {
|
|
358
|
+
switch (event) {
|
|
359
|
+
case 'account':
|
|
360
|
+
this.getProvider().removeListener('accountsChanged', internalCallback);
|
|
361
|
+
break
|
|
362
|
+
}
|
|
363
|
+
return internalCallback
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
async connectedTo(input) {
|
|
367
|
+
const blockchain = Blockchains.findById(await this.getProvider().request({ method: 'eth_chainId' }));
|
|
368
|
+
if(!blockchain) { return false }
|
|
369
|
+
if(input) {
|
|
370
|
+
return input === blockchain.name
|
|
371
|
+
} else {
|
|
372
|
+
return blockchain.name
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
addNetwork(blockchainName) {
|
|
377
|
+
return new Promise((resolve, reject)=>{
|
|
378
|
+
const blockchain = Blockchains.findByName(blockchainName);
|
|
379
|
+
this.getProvider().request({
|
|
380
|
+
method: 'wallet_addEthereumChain',
|
|
381
|
+
params: [{
|
|
382
|
+
chainId: blockchain.id,
|
|
383
|
+
chainName: blockchain.fullName,
|
|
384
|
+
nativeCurrency: {
|
|
385
|
+
name: blockchain.currency.name,
|
|
386
|
+
symbol: blockchain.currency.symbol,
|
|
387
|
+
decimals: blockchain.currency.decimals
|
|
388
|
+
},
|
|
389
|
+
rpcUrls: [blockchain.rpc],
|
|
390
|
+
blockExplorerUrls: [blockchain.explorer],
|
|
391
|
+
iconUrls: [blockchain.logo]
|
|
392
|
+
}],
|
|
393
|
+
}).then(resolve).catch(reject);
|
|
394
|
+
})
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
switchTo(blockchainName) {
|
|
398
|
+
return new Promise((resolve, reject)=>{
|
|
399
|
+
const blockchain = Blockchains.findByName(blockchainName);
|
|
400
|
+
this.getProvider().request({
|
|
401
|
+
method: 'wallet_switchEthereumChain',
|
|
402
|
+
params: [{ chainId: blockchain.id }],
|
|
403
|
+
}).then(resolve).catch((error)=> {
|
|
404
|
+
if(error.code === 4902){ // chain not yet added
|
|
405
|
+
this.addNetwork(blockchainName)
|
|
406
|
+
.then(()=>this.switchTo(blockchainName).then(resolve))
|
|
407
|
+
.catch(reject);
|
|
408
|
+
} else {
|
|
409
|
+
reject(error);
|
|
410
|
+
}
|
|
411
|
+
});
|
|
412
|
+
})
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
transactionCount({ blockchain, address }) {
|
|
416
|
+
return request({ blockchain, method: 'transactionCount', address })
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
async sign(message) {
|
|
420
|
+
if(typeof message === 'object') {
|
|
421
|
+
let provider = this.getProvider();
|
|
422
|
+
let account = await this.account();
|
|
423
|
+
if((await this.connectedTo(Blockchains.findByNetworkId(message.domain.chainId).name)) === false) {
|
|
424
|
+
throw({ code: 'WRONG_NETWORK' })
|
|
425
|
+
}
|
|
426
|
+
let signature = await provider.request({
|
|
427
|
+
method: 'eth_signTypedData_v4',
|
|
428
|
+
params: [account, message],
|
|
429
|
+
from: account,
|
|
430
|
+
});
|
|
431
|
+
return signature
|
|
432
|
+
} else if (typeof message === 'string') {
|
|
433
|
+
await this.account();
|
|
434
|
+
let provider = new ethers.providers.Web3Provider(this.getProvider(), 'any');
|
|
435
|
+
let signer = provider.getSigner(0);
|
|
436
|
+
let signature = await signer.signMessage(message);
|
|
437
|
+
return signature
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
} WindowEthereum.__initStatic(); WindowEthereum.__initStatic2();
|
|
441
|
+
|
|
442
|
+
function _optionalChain$m(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
443
|
+
class Binance extends WindowEthereum {
|
|
444
|
+
|
|
445
|
+
static __initStatic() {this.info = {
|
|
446
|
+
name: 'Binance Wallet',
|
|
447
|
+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTIgMTkzLjY4Ij48cmVjdCB3aWR0aD0iMTkyIiBoZWlnaHQ9IjE5My42OCIgZmlsbD0iIzFlMjAyNCIvPjxwYXRoIGQ9Im01Ni45Miw0Ni41M2wzOS4wOC0yMi41NCwzOS4wOCwyMi41NC0xNC4zNSw4LjM2LTI0LjczLTE0LjE4LTI0LjczLDE0LjE4LTE0LjM1LTguMzZabTc4LjE3LDI4LjUzbC0xNC4zNS04LjM2LTI0LjczLDE0LjI3LTI0LjczLTE0LjI3LTE0LjM1LDguMzZ2MTYuNzFsMjQuNzMsMTQuMTh2MjguNDVsMTQuMzUsOC4zNiwxNC4zNS04LjM2di0yOC40NWwyNC43My0xNC4yN3YtMTYuNjNabTAsNDUuMTZ2LTE2LjcxbC0xNC4zNSw4LjM2djE2LjcxbDE0LjM1LTguMzZabTEwLjIxLDUuODJsLTI0LjczLDE0LjI3djE2LjcxbDM5LjA4LTIyLjU0di00NS4yNWwtMTQuMzUsOC4zNnYyOC40NVptLTE0LjM1LTY1LjI1bDE0LjM1LDguMzZ2MTYuNzFsMTQuMzUtOC4zNnYtMTYuNzFsLTE0LjM1LTguMzYtMTQuMzUsOC4zNlptLTQ5LjMsODUuNnYxNi43MWwxNC4zNSw4LjM2LDE0LjM1LTguMzZ2LTE2LjcxbC0xNC4zNSw4LjM2LTE0LjM1LTguMzZabS0yNC43My0yNi4xN2wxNC4zNSw4LjM2di0xNi43MWwtMTQuMzUtOC4zNnYxNi43MVptMjQuNzMtNTkuNDNsMTQuMzUsOC4zNiwxNC4zNS04LjM2LTE0LjM1LTguMzYtMTQuMzUsOC4zNlptLTM0Ljk1LDguMzZsMTQuMzUtOC4zNi0xNC4zNS04LjM2LTE0LjM1LDguMzZ2MTYuNzFsMTQuMzUsOC4zNnYtMTYuNzFabTAsMjguNDVsLTE0LjM1LTguMzZ2NDUuMTZsMzkuMDgsMjIuNTR2LTE2LjcxbC0yNC43My0xNC4yN3MwLTI4LjM2LDAtMjguMzZaIiBmaWxsPSIjZjBiOTBiIi8+PC9zdmc+",
|
|
448
|
+
blockchains: supported$1.evm
|
|
449
|
+
};}
|
|
450
|
+
|
|
451
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
452
|
+
return _optionalChain$m([window, 'optionalAccess', _2 => _2.BinanceChain]) &&
|
|
453
|
+
!window.coin98 &&
|
|
454
|
+
!window.trustwallet
|
|
455
|
+
};}
|
|
456
|
+
|
|
457
|
+
getProvider() { return window.BinanceChain }
|
|
458
|
+
|
|
459
|
+
} Binance.__initStatic(); Binance.__initStatic2();
|
|
460
|
+
|
|
461
|
+
var logos = {
|
|
462
|
+
exodus: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yOTguMjAzIDgzLjc2NDVMMTcwLjQ0OSAwVjQ2LjgzMzJMMjUyLjQwNSAxMDAuMDg5TDI0Mi43NjMgMTMwLjU5OEgxNzAuNDQ5VjE2OS40MDJIMjQyLjc2M0wyNTIuNDA1IDE5OS45MTFMMTcwLjQ0OSAyNTMuMTY3VjMwMEwyOTguMjAzIDIxNi41MDNMMjc3LjMxMyAxNTAuMTM0TDI5OC4yMDMgODMuNzY0NVoiIGZpbGw9InVybCgjcGFpbnQwX2xpbmVhcl8xNjYxXzI5NSkiLz4KPHBhdGggZD0iTTU5LjMwMDcgMTY5LjQwMkgxMzEuMzQ2VjEzMC41OThINTkuMDMyOUw0OS42NTg5IDEwMC4wODlMMTMxLjM0NiA0Ni44MzMyVjBMMy41OTI1MyA4My43NjQ1TDI0LjQ4MzEgMTUwLjEzNEwzLjU5MjUzIDIxNi41MDNMMTMxLjYxNCAzMDBWMjUzLjE2N0w0OS42NTg5IDE5OS45MTFMNTkuMzAwNyAxNjkuNDAyWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzE2NjFfMjk1KSIvPgo8bWFzayBpZD0ibWFzazBfMTY2MV8yOTUiIHN0eWxlPSJtYXNrLXR5cGU6YWxwaGEiIG1hc2tVbml0cz0idXNlclNwYWNlT25Vc2UiIHg9IjMiIHk9IjAiIHdpZHRoPSIyOTYiIGhlaWdodD0iMzAwIj4KPHBhdGggZD0iTTI5OC4yMDQgODMuNzY0NUwxNzAuNDUgMFY0Ni44MzMyTDI1Mi40MDUgMTAwLjA4OUwyNDIuNzYzIDEzMC41OThIMTcwLjQ1VjE2OS40MDJIMjQyLjc2M0wyNTIuNDA1IDE5OS45MTFMMTcwLjQ1IDI1My4xNjdWMzAwTDI5OC4yMDQgMjE2LjUwM0wyNzcuMzEzIDE1MC4xMzRMMjk4LjIwNCA4My43NjQ1WiIgZmlsbD0idXJsKCNwYWludDJfbGluZWFyXzE2NjFfMjk1KSIvPgo8cGF0aCBkPSJNNTkuMzAxIDE2OS40MDJIMTMxLjM0N1YxMzAuNTk4SDU5LjAzMzJMNDkuNjU5MiAxMDAuMDg5TDEzMS4zNDcgNDYuODMzMlYwTDMuNTkyNzcgODMuNzY0NUwyNC40ODM0IDE1MC4xMzRMMy41OTI3NyAyMTYuNTAzTDEzMS42MTUgMzAwVjI1My4xNjdMNDkuNjU5MiAxOTkuOTExTDU5LjMwMSAxNjkuNDAyWiIgZmlsbD0idXJsKCNwYWludDNfbGluZWFyXzE2NjFfMjk1KSIvPgo8L21hc2s+CjxnIG1hc2s9InVybCgjbWFzazBfMTY2MV8yOTUpIj4KPHJlY3QgeD0iMy43NTAyNCIgd2lkdGg9IjI5Mi41IiBoZWlnaHQ9IjMwMCIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzE2NjFfMjk1KSIvPgo8L2c+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfMTY2MV8yOTUiIHgxPSIyNTYuODc1IiB5MT0iMzIwLjYyNSIgeDI9IjE3MS4zIiB5Mj0iLTMyLjk0NTkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzBCNDZGOSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNCQkZCRTAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDFfbGluZWFyXzE2NjFfMjk1IiB4MT0iMjU2Ljg3NSIgeTE9IjMyMC42MjUiIHgyPSIxNzEuMyIgeTI9Ii0zMi45NDU5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwQjQ2RjkiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkJGQkUwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhcl8xNjYxXzI5NSIgeDE9IjI1Ni44NzUiIHkxPSIzMjAuNjI1IiB4Mj0iMTcxLjMiIHkyPSItMzIuOTQ1OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMEI0NkY5Ii8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0JCRkJFMCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50M19saW5lYXJfMTY2MV8yOTUiIHgxPSIyNTYuODc1IiB5MT0iMzIwLjYyNSIgeDI9IjE3MS4zIiB5Mj0iLTMyLjk0NTkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iIzBCNDZGOSIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNCQkZCRTAiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDRfbGluZWFyXzE2NjFfMjk1IiB4MT0iMjIuNTAwMiIgeTE9IjY3LjUiIHgyPSIxNzAuNjI1IiB5Mj0iMTc4LjEyNSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBvZmZzZXQ9IjAuMTE5NzkyIiBzdG9wLWNvbG9yPSIjODk1MkZGIiBzdG9wLW9wYWNpdHk9IjAuODciLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjREFCREZGIiBzdG9wLW9wYWNpdHk9IjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPC9kZWZzPgo8L3N2Zz4K",
|
|
463
|
+
phantom: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMjggMTI4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0FCOUZGMjt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMy43LDEwOWMxMy42LDAsMjMuOS0xMS45LDMwLTIxLjJjLTAuNywyLjEtMS4yLDQuMS0xLjIsNi4xYzAsNS41LDMuMSw5LjQsOS4zLDkuNGM4LjUsMCwxNy42LTcuNSwyMi4zLTE1LjUKCWMtMC4zLDEuMi0wLjUsMi4yLTAuNSwzLjJjMCwzLjgsMi4xLDYuMiw2LjUsNi4yYzEzLjgsMCwyNy43LTI0LjUsMjcuNy00NS45YzAtMTYuNy04LjQtMzEuNC0yOS42LTMxLjQKCWMtMzcuMiwwLTc3LjMsNDUuNS03Ny4zLDc0LjhDMTEuMSwxMDYuMywxNy4zLDEwOSwyMy43LDEwOXogTTc1LjUsNDkuNWMwLTQuMSwyLjMtNy4xLDUuNy03LjFjMy4zLDAsNS42LDIuOSw1LjYsNy4xCgljMCw0LjEtMi4zLDcuMS01LjYsNy4xQzc3LjgsNTYuNyw3NS41LDUzLjcsNzUuNSw0OS41eiBNOTMuMiw0OS41YzAtNC4xLDIuMy03LjEsNS43LTcuMWMzLjMsMCw1LjYsMi45LDUuNiw3LjEKCWMwLDQuMS0yLjMsNy4xLTUuNiw3LjFDOTUuNSw1Ni43LDkzLjIsNTMuNyw5My4yLDQ5LjV6Ii8+Cjwvc3ZnPgo=",
|
|
464
|
+
coin98: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0MC43IDQwIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA0MC43IDQwIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsPSIjRDlCNDMyIiBkPSJtMzMuMyAwaC0yNS45Yy00LjEgMC03LjQgMy4zLTcuNCA3LjN2MjUuNGMwIDQgMy4zIDcuMyA3LjQgNy4zaDI1LjljNC4xIDAgNy40LTMuMyA3LjQtNy4zdi0yNS40YzAtNC0zLjMtNy4zLTcuNC03LjN6Ii8+CjxwYXRoIGZpbGw9IiMyNTI1MjUiIGQ9Im0zMy4zIDBoLTI1LjljLTQuMSAwLTcuNCAzLjMtNy40IDcuM3YyNS40YzAgNCAzLjMgNy4zIDcuNCA3LjNoMjUuOWM0LjEgMCA3LjQtMy4zIDcuNC03LjN2LTI1LjRjMC00LTMuMy03LjMtNy40LTcuM3ptLTYuMyAxMGMzIDAgNS41IDIuNCA1LjUgNS40IDAgMC45LTAuMiAxLjgtMC42IDIuNi0wLjctMC41LTEuNS0xLTIuMy0xLjMgMC4yLTAuNCAwLjMtMC45IDAuMy0xLjMgMC0xLjUtMS4zLTIuOC0yLjgtMi44LTEuNiAwLTIuOCAxLjMtMi44IDIuOCAwIDAuNSAwLjEgMC45IDAuMyAxLjMtMC44IDAuMy0xLjYgMC43LTIuMyAxLjMtMC41LTAuOC0wLjYtMS43LTAuNi0yLjYtMC4xLTMgMi4zLTUuNCA1LjMtNS40em0tMTMuMyAyMGMtMyAwLTUuNS0yLjQtNS41LTUuNGgyLjZjMCAxLjUgMS4zIDIuOCAyLjggMi44czIuOC0xLjMgMi44LTIuOGgyLjZjMC4yIDMtMi4zIDUuNC01LjMgNS40em0wLTcuNWMtMy41IDAtNi4zLTIuOC02LjMtNi4yczIuOC02LjMgNi4zLTYuMyA2LjQgMi44IDYuNCA2LjNjMCAzLjQtMi45IDYuMi02LjQgNi4yem0xMy4zIDcuNWMtMy41IDAtNi40LTIuOC02LjQtNi4yIDAtMy41IDIuOC02LjMgNi40LTYuMyAzLjUgMCA2LjMgMi44IDYuMyA2LjMgMC4xIDMuNC0yLjggNi4yLTYuMyA2LjJ6bTMuOC02LjNjMCAyLjEtMS43IDMuNy0zLjggMy43cy0zLjgtMS43LTMuOC0zLjdjMC0yLjEgMS43LTMuNyAzLjgtMy43IDIuMSAwLjEgMy44IDEuNyAzLjggMy43em0tMTMuNC03LjRjMCAyLjEtMS43IDMuNy0zLjggMy43cy0zLjgtMS43LTMuOC0zLjdjMC0yLjEgMS43LTMuNyAzLjgtMy43IDIuMiAwIDMuOCAxLjYgMy44IDMuN3oiLz4KPC9zdmc+Cg==",
|
|
465
|
+
coinbase: "data:image/svg+xml;base64,PHN2ZyBpZD0nTGF5ZXJfMScgZGF0YS1uYW1lPSdMYXllciAxJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHhtbG5zOnhsaW5rPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJyB2aWV3Qm94PScwIDAgNDg4Ljk2IDQ4OC45Nic+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50KTt9LmNscy0ye2ZpbGw6IzQzNjFhZDt9PC9zdHlsZT48bGluZWFyR3JhZGllbnQgaWQ9J2xpbmVhci1ncmFkaWVudCcgeDE9JzI1MCcgeTE9JzcuMzUnIHgyPScyNTAnIHkyPSc0OTYuMzInIGdyYWRpZW50VHJhbnNmb3JtPSdtYXRyaXgoMSwgMCwgMCwgLTEsIDAsIDUwMiknIGdyYWRpZW50VW5pdHM9J3VzZXJTcGFjZU9uVXNlJz48c3RvcCBvZmZzZXQ9JzAnIHN0b3AtY29sb3I9JyMzZDViYTknLz48c3RvcCBvZmZzZXQ9JzEnIHN0b3AtY29sb3I9JyM0ODY4YjEnLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cGF0aCBjbGFzcz0nY2xzLTEnIGQ9J00yNTAsNS42OEMxMTQuODcsNS42OCw1LjUyLDExNSw1LjUyLDI1MC4xN1MxMTQuODcsNDk0LjY1LDI1MCw0OTQuNjUsNDk0LjQ4LDM4NS4yOSw0OTQuNDgsMjUwLjE3LDM4NS4xMyw1LjY4LDI1MCw1LjY4Wm0wLDM4Ny41NEExNDMuMDYsMTQzLjA2LDAsMSwxLDM5My4wNSwyNTAuMTcsMTQzLjExLDE0My4xMSwwLDAsMSwyNTAsMzkzLjIyWicgdHJhbnNmb3JtPSd0cmFuc2xhdGUoLTUuNTIgLTUuNjgpJy8+PHBhdGggY2xhc3M9J2Nscy0yJyBkPSdNMjg0LjY5LDI5Ni4wOUgyMTUuMzFhMTEsMTEsMCwwLDEtMTAuOS0xMC45VjIxNS40OGExMSwxMSwwLDAsMSwxMC45LTEwLjkxSDI4NWExMSwxMSwwLDAsMSwxMC45LDEwLjkxdjY5LjcxQTExLjA3LDExLjA3LDAsMCwxLDI4NC42OSwyOTYuMDlaJyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSgtNS41MiAtNS42OCknLz48L3N2Zz4=",
|
|
466
|
+
trust: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI4LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzOTkuOCA0MTUuMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzk5LjggNDE1LjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojMDUwMEZGO30KCS5zdDF7ZmlsbDp1cmwoI1NWR0lEXzFfKTt9Cjwvc3R5bGU+CjxnPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTU1LjUsOTJsMTQ0LjQtNDd2MzI1Qzk2LjcsMzI2LjcsNTUuNSwyNDMuNiw1NS41LDE5Ni43TDU1LjUsOTJMNTUuNSw5MnoiLz4KCQoJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMzA1Ljk5NTMiIHkxPSIxODQ2LjAwMDIiIHgyPSIxOTYuODc1MiIgeTI9IjIxODkuMzQwMyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgLTE4MjMuNzM5NykiPgoJCTxzdG9wICBvZmZzZXQ9IjIuMDAwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6IzAwMDBGRiIvPgoJCTxzdG9wICBvZmZzZXQ9IjguMDAwMDAwZS0wMiIgc3R5bGU9InN0b3AtY29sb3I6IzAwOTRGRiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuMTYiIHN0eWxlPSJzdG9wLWNvbG9yOiM0OEZGOTEiLz4KCQk8c3RvcCAgb2Zmc2V0PSIwLjQyIiBzdHlsZT0ic3RvcC1jb2xvcjojMDA5NEZGIi8+CgkJPHN0b3AgIG9mZnNldD0iMC42OCIgc3R5bGU9InN0b3AtY29sb3I6IzAwMzhGRiIvPgoJCTxzdG9wICBvZmZzZXQ9IjAuOSIgc3R5bGU9InN0b3AtY29sb3I6IzA1MDBGRiIvPgoJPC9saW5lYXJHcmFkaWVudD4KCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zNDQuNCw5MkwxOTkuOSw0NXYzMjVjMTAzLjItNDMuMywxNDQuNS0xMjYuNCwxNDQuNS0xNzMuM1Y5MkwzNDQuNCw5MnoiLz4KPC9nPgo8L3N2Zz4K",
|
|
467
|
+
brave: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNTYgMzAxIiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyNTYgMzAxIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgoKCTxwYXRoIGZpbGw9IiNGMTVBMjIiIGQ9Im0yMzYgMTA1LjQtNy44LTIxLjIgNS40LTEyLjJjMC43LTEuNiAwLjMtMy40LTAuOC00LjZsLTE0LjgtMTQuOWMtNi41LTYuNS0xNi4xLTguOC0yNC44LTUuN2wtNC4xIDEuNC0yMi42LTI0LjUtMzguMi0wLjNoLTAuM2wtMzguNSAwLjMtMjIuNiAyNC43LTQtMS40Yy04LjgtMy4xLTE4LjUtMC44LTI1IDUuOGwtMTUgMTUuMmMtMSAxLTEuMyAyLjQtMC44IDMuN2w1LjcgMTIuNy03LjggMjEuMiA1LjEgMTkuMiAyMyA4Ny4yYzIuNiAxMCA4LjcgMTguOCAxNy4yIDI0LjkgMCAwIDI3LjggMTkuNyA1NS4zIDM3LjUgMi40IDEuNiA1IDIuNyA3LjcgMi43czUuMi0xLjEgNy43LTIuN2MzMC45LTIwLjIgNTUuMy0zNy41IDU1LjMtMzcuNSA4LjQtNi4xIDE0LjUtMTQuOCAxNy4xLTI0LjlsMjIuOC04Ny4yIDQuOC0xOS40eiIvPgoJPHBhdGggZmlsbD0iI0ZGRkZGRiIgZD0ibTEzMy4xIDE3OS40Yy0xLTAuNC0yLjEtMC44LTIuNC0wLjhoLTIuN2MtMC4zIDAtMS40IDAuMy0yLjQgMC44bC0xMSA0LjZjLTEgMC40LTIuNyAxLjItMy43IDEuN2wtMTYuNSA4LjZjLTEgMC41LTEuMSAxLjQtMC4yIDIuMWwxNC42IDEwLjNjMC45IDAuNyAyLjQgMS44IDMuMiAyLjVsNi41IDUuNmMwLjggMC44IDIuMiAxLjkgMyAyLjdsNi4yIDUuNmMwLjggMC44IDIuMiAwLjggMyAwbDYuNC01LjZjMC44LTAuOCAyLjItMS45IDMtMi43bDYuNS01LjdjMC44LTAuOCAyLjMtMS45IDMuMi0yLjVsMTQuNi0xMC40YzAuOS0wLjcgMC44LTEuNi0wLjItMi4xbC0xNi41LTguNGMtMS0wLjUtMi43LTEuMy0zLjctMS43bC0xMC45LTQuNnoiLz4KCTxwYXRoIGZpbGw9IiNGRkZGRkYiIGQ9Im0yMTIuMiAxMDkuMmMwLjMtMS4xIDAuMy0xLjUgMC4zLTEuNSAwLTEuMS0wLjEtMy0wLjMtNGwtMC44LTIuNGMtMC41LTEtMS40LTIuNi0yLTMuNWwtOS41LTE0LjFjLTAuNi0wLjktMS43LTIuNC0yLjQtMy4zbC0xMi4zLTE1LjRjLTAuNy0wLjgtMS40LTEuNi0xLjQtMS41aC0wLjJzLTAuOSAwLjItMiAwLjNsLTE4LjggMy43Yy0xLjEgMC4zLTIuOSAwLjYtNCAwLjhsLTAuMyAwLjFjLTEuMSAwLjItMi45IDAuMS00LTAuM2wtMTUuOC01LjFjLTEuMS0wLjMtMi45LTAuOC0zLjktMS4xIDAgMC0zLjItMC44LTUuOC0wLjctMi42IDAtNS44IDAuNy01LjggMC43LTEuMSAwLjMtMi45IDAuOC0zLjkgMS4xbC0xNS44IDUuMWMtMS4xIDAuMy0yLjkgMC40LTQgMC4zbC0wLjMtMC4xYy0xLjEtMC4yLTIuOS0wLjYtNC0wLjhsLTE5LTMuNWMtMS4xLTAuMy0yLTAuMy0yLTAuM2gtMC4yYy0wLjEgMC0wLjggMC43LTEuNCAxLjVsLTEyLjMgMTUuMmMtMC43IDAuOC0xLjggMi40LTIuNCAzLjNsLTkuNSAxNC4xYy0wLjYgMC45LTEuNSAyLjUtMiAzLjVsLTAuOCAyLjRjLTAuMiAxLjEtMC4zIDMtMC4zIDQuMSAwIDAgMCAwLjMgMC4zIDEuNSAwLjYgMiAyIDMuOSAyIDMuOSAwLjcgMC44IDEuOSAyLjMgMi43IDNsMjcuOSAyOS43YzAuOCAwLjggMSAyLjQgMC42IDMuNGwtNS44IDEzLjhjLTAuNCAxLTAuNSAyLjctMC4xIDMuOGwxLjYgNC4zYzEuMyAzLjYgMy42IDYuOCA2LjcgOS4zbDUuNyA0LjZjMC44IDAuNyAyLjQgMC45IDMuNCAwLjRsMTcuOS04LjVjMS0wLjUgMi41LTEuNSAzLjQtMi4zbDEyLjgtMTEuNmMxLjktMS43IDEuOS00LjYgMC4zLTYuNGwtMjYuOS0xOC4xYy0wLjktMC42LTEuMy0xLjktMC44LTNsMTEuOC0yMi4zYzAuNS0xIDAuNi0yLjYgMC4yLTMuNmwtMS40LTMuM2MtMC40LTEtMS43LTIuMi0yLjctMi42bC0zNC45LTEzYy0xLTAuNC0xLTAuOCAwLjEtMC45bDIyLjQtMi4xYzEuMS0wLjEgMi45IDAuMSA0IDAuM2wxOS45IDUuNmMxLjEgMC4zIDEuOCAxLjQgMS42IDIuNWwtNyAzNy44Yy0wLjIgMS4xLTAuMiAyLjYgMC4xIDMuNXMxLjMgMS42IDIuNCAxLjlsMTMuOCAzYzEuMSAwLjMgMi45IDAuMyA0IDBsMTIuOS0zYzEuMS0wLjMgMi4yLTEuMSAyLjQtMS45IDAuMy0wLjggMC4zLTIuNCAwLjEtMy41bC02LjgtMzcuOWMtMC4yLTEuMSAwLjUtMi4zIDEuNi0yLjVsMTkuOS01LjZjMS4xLTAuMyAyLjktMC40IDQtMC4zbDIyLjQgMi4xYzEuMSAwLjEgMS4yIDAuNSAwLjEgMC45bC0zNC43IDEzLjJjLTEgMC40LTIuMyAxLjUtMi43IDIuNmwtMS40IDMuM2MtMC40IDEtMC40IDIuNyAwLjIgMy42bDExLjkgMjIuM2MwLjUgMSAwLjIgMi4zLTAuOCAzbC0yNi45IDE4LjJjLTEuOCAxLjgtMS42IDQuNyAwLjMgNi40bDEyLjggMTEuNmMwLjggMC44IDIuNCAxLjggMy40IDIuMmwxOCA4LjVjMSAwLjUgMi41IDAuMyAzLjQtMC40bDUuNy00LjZjMy0yLjQgNS4zLTUuNyA2LjYtOS4zbDEuNi00LjNjMC40LTEgMC4zLTIuOC0wLjEtMy44bC01LjgtMTMuOGMtMC40LTEtMC4yLTIuNSAwLjYtMy40bDI3LjktMjkuN2MwLjgtMC44IDEuOS0yLjIgMi43LTMtMC40LTAuMyAxLjEtMi4xIDEuNi00LjF6Ii8+Cgo8L3N2Zz4K",
|
|
468
|
+
magicEden: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjAwIDIwMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjAwIDIwMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8cmVjdCB4PSIwIiBmaWxsPSIjRTQyNTc1IiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCIvPgo8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMTMxLjgsNzcuNWw4LjksMTAuNWMxLDEuMiwxLjksMi4xLDIuMywyLjdjMi43LDIuNyw0LjIsNi4yLDQuMiwxMGMtMC4zLDQuNC0zLjEsNy40LTUuOCwxMC42bC02LjMsNy4zCglsLTMuMywzLjhjLTAuMSwwLjEtMC4yLDAuMy0wLjIsMC41YzAsMC4yLDAsMC4zLDAuMSwwLjVjMC4xLDAuMiwwLjIsMC4zLDAuMywwLjRjMC4yLDAuMSwwLjMsMC4xLDAuNSwwLjFoMzIuNgoJYzUsMCwxMS4zLDQuMiwxMC45LDEwLjVjMCwyLjktMS4yLDUuNy0zLjMsNy43Yy0yLjEsMi00LjksMy4yLTcuOCwzLjJIMTE0Yy0zLjQsMC0xMi40LDAuNC0xNC45LTcuM2MtMC41LTEuNi0wLjYtMy4zLTAuMi01CgljMC43LTIuNCwxLjktNC43LDMuNC02LjhjMi42LTMuOCw1LjMtNy42LDguMS0xMS4zYzMuNS00LjgsNy4yLTkuNSwxMC43LTE0LjRjMC4xLTAuMiwwLjItMC40LDAuMi0wLjZjMC0wLjItMC4xLTAuNC0wLjItMC42CglsLTEzLTE1LjJjLTAuMS0wLjEtMC4yLTAuMi0wLjMtMC4zYy0wLjEtMC4xLTAuMy0wLjEtMC40LTAuMWMtMC4xLDAtMC4zLDAtMC40LDAuMWMtMC4xLDAuMS0wLjIsMC4yLTAuMywwLjMKCWMtMy41LDQuNi0xOC43LDI1LjEtMjEuOSwyOS4yYy0zLjIsNC4xLTExLjIsNC40LTE1LjcsMEw0OC44LDkzLjRjLTAuMS0wLjEtMC4zLTAuMi0wLjUtMC4zYy0wLjIsMC0wLjQsMC0wLjUsMC4xCgljLTAuMiwwLjEtMC4zLDAuMi0wLjQsMC4zYy0wLjEsMC4yLTAuMiwwLjMtMC4yLDAuNXYzOC42YzAsMi43LTAuOCw1LjQtMi40LDcuN2MtMS42LDIuMy0zLjgsNC02LjQsNC45Yy0xLjcsMC42LTMuNSwwLjctNS4yLDAuNQoJYy0xLjgtMC4yLTMuNC0wLjktNC45LTEuOWMtMS40LTEtMi42LTIuMy0zLjQtMy45Yy0wLjgtMS41LTEuMi0zLjMtMS4yLTVWNjUuNWMwLjEtMi41LDEtNC45LDIuNi02LjljMS42LTIsMy43LTMuNCw2LjItNC4xCgljMi4xLTAuNiw0LjMtMC41LDYuNCwwYzIuMSwwLjYsNCwxLjcsNS41LDMuMmwzMS4yLDMwLjhjMC4xLDAuMSwwLjIsMC4yLDAuMywwLjJjMC4xLDAsMC4zLDAuMSwwLjQsMC4xYzAuMSwwLDAuMy0wLjEsMC40LTAuMQoJYzAuMS0wLjEsMC4yLTAuMiwwLjMtMC4zbDIyLjItMzAuMmMxLTEuMiwyLjMtMi4yLDMuOC0yLjljMS41LTAuNywzLTEuMSw0LjctMS4xaDU3LjZjMS42LDAsMy4xLDAuMyw0LjYsMXMyLjcsMS42LDMuOCwyLjgKCWMxLDEuMiwxLjgsMi41LDIuMyw0YzAuNSwxLjUsMC42LDMuMSwwLjQsNC42Yy0wLjQsMi43LTEuOCw1LjEtMy45LDYuOXMtNC44LDIuNy03LjUsMi43aC0zMi4zYy0wLjIsMC0wLjMsMC4xLTAuNSwwLjEKCWMtMC4xLDAuMS0wLjIsMC4yLTAuMywwLjNjLTAuMSwwLjEtMC4xLDAuMy0wLjEsMC41UzEzMS43LDc3LjQsMTMxLjgsNzcuNXoiLz4KPC9zdmc+Cg==",
|
|
469
|
+
okx: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI4LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMzYuMSAzMzYuMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzM2LjEgMzM2LjE7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRkZGRkZGO30KPC9zdHlsZT4KPHBhdGggZD0iTTMxMy43LDBIMjIuNEMxMCwwLDAsMTAsMCwyMi40djI5MS4zYzAsMTIuNCwxMCwyMi40LDIyLjQsMjIuNGgyOTEuM2MxMi40LDAsMjIuNC0xMCwyMi40LTIyLjRWMjIuNAoJQzMzNi4xLDEwLDMyNi4xLDAsMzEzLjcsMHoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTIwNC41LDEzMC43aC02NC43Yy0yLjcsMC01LDIuMi01LDV2NjQuN2MwLDIuNywyLjIsNSw1LDVoNjQuN2MyLjcsMCw1LTIuMiw1LTV2LTY0LjcKCUMyMDkuNSwxMzIuOSwyMDcuMiwxMzAuNywyMDQuNSwxMzAuN3oiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyOS44LDU2LjFINjUuMWMtMi43LDAtNSwyLjItNSw1djY0LjdjMCwyLjcsMi4yLDUsNSw1aDY0LjdjMi44LDAsNS0yLjIsNS01VjYxCglDMTM0LjgsNTguMywxMzIuNSw1Ni4xLDEyOS44LDU2LjF6Ii8+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yNzkuMSw1Ni4xaC02NC43Yy0yLjcsMC01LDIuMi01LDV2NjQuN2MwLDIuNywyLjIsNSw1LDVoNjQuN2MyLjcsMCw1LTIuMiw1LTVWNjEKCUMyODQuMSw1OC4zLDI4MS45LDU2LjEsMjc5LjEsNTYuMXoiLz4KPHBhdGggY2xhc3M9InN0MCIgZD0iTTEyOS44LDIwNS40SDY1LjFjLTIuNywwLTUsMi4yLTUsNXY2NC43YzAsMi43LDIuMiw1LDUsNWg2NC43YzIuOCwwLDUtMi4yLDUtNXYtNjQuNwoJQzEzNC44LDIwNy42LDEzMi41LDIwNS40LDEyOS44LDIwNS40eiIvPgo8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMjc5LjEsMjA1LjRoLTY0LjdjLTIuNywwLTUsMi4yLTUsNXY2NC43YzAsMi43LDIuMiw1LDUsNWg2NC43YzIuNywwLDUtMi4yLDUtNXYtNjQuNwoJQzI4NC4xLDIwNy42LDI4MS45LDIwNS40LDI3OS4xLDIwNS40eiIvPgo8L3N2Zz4K",
|
|
470
|
+
};
|
|
471
|
+
|
|
472
|
+
function _optionalChain$l(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
473
|
+
class BraveEVM extends WindowEthereum {
|
|
474
|
+
|
|
475
|
+
static __initStatic() {this.info = {
|
|
476
|
+
name: 'Brave',
|
|
477
|
+
logo: logos.brave,
|
|
478
|
+
blockchains: supported$1.evm,
|
|
479
|
+
platform: 'evm',
|
|
480
|
+
};}
|
|
481
|
+
|
|
482
|
+
static __initStatic2() {this.isAvailable = async()=>{ return _optionalChain$l([window, 'optionalAccess', _3 => _3.ethereum, 'optionalAccess', _4 => _4.isBraveWallet]) };}
|
|
483
|
+
|
|
484
|
+
getProvider() {
|
|
485
|
+
return window.ethereum
|
|
486
|
+
}
|
|
487
|
+
} BraveEVM.__initStatic(); BraveEVM.__initStatic2();
|
|
488
|
+
|
|
489
|
+
function _optionalChain$k(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
490
|
+
class Coin98EVM extends WindowEthereum {
|
|
491
|
+
|
|
492
|
+
static __initStatic() {this.info = {
|
|
493
|
+
name: 'Coin98',
|
|
494
|
+
logo: logos.coin98,
|
|
495
|
+
blockchains: supported$1.evm,
|
|
496
|
+
platform: 'evm',
|
|
497
|
+
};}
|
|
498
|
+
|
|
499
|
+
static __initStatic2() {this.isAvailable = async()=>{ return _optionalChain$k([window, 'optionalAccess', _2 => _2.coin98]) };}
|
|
500
|
+
|
|
501
|
+
getProvider() { return window.coin98.provider }
|
|
502
|
+
|
|
503
|
+
} Coin98EVM.__initStatic(); Coin98EVM.__initStatic2();
|
|
504
|
+
|
|
505
|
+
function _optionalChain$j(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
506
|
+
class CoinbaseEVM extends WindowEthereum {
|
|
507
|
+
|
|
508
|
+
static __initStatic() {this.info = {
|
|
509
|
+
name: 'Coinbase',
|
|
510
|
+
logo: logos.coinbase,
|
|
511
|
+
blockchains: supported$1.evm,
|
|
512
|
+
platform: 'evm',
|
|
513
|
+
};}
|
|
514
|
+
|
|
515
|
+
getProvider() {
|
|
516
|
+
if(_optionalChain$j([window, 'optionalAccess', _9 => _9.ethereum, 'optionalAccess', _10 => _10.providerMap, 'optionalAccess', _11 => _11.has, 'call', _12 => _12('CoinbaseWallet')])) {
|
|
517
|
+
return _optionalChain$j([window, 'optionalAccess', _13 => _13.ethereum, 'optionalAccess', _14 => _14.providerMap, 'optionalAccess', _15 => _15.get, 'call', _16 => _16('CoinbaseWallet')])
|
|
518
|
+
} else {
|
|
519
|
+
return window.ethereum
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
524
|
+
return(
|
|
525
|
+
(
|
|
526
|
+
_optionalChain$j([window, 'optionalAccess', _17 => _17.ethereum, 'optionalAccess', _18 => _18.isCoinbaseWallet]) || _optionalChain$j([window, 'optionalAccess', _19 => _19.ethereum, 'optionalAccess', _20 => _20.isWalletLink])
|
|
527
|
+
) || (
|
|
528
|
+
_optionalChain$j([window, 'optionalAccess', _21 => _21.ethereum, 'optionalAccess', _22 => _22.providerMap, 'optionalAccess', _23 => _23.has, 'call', _24 => _24('CoinbaseWallet')])
|
|
529
|
+
)
|
|
530
|
+
)
|
|
531
|
+
};}
|
|
532
|
+
} CoinbaseEVM.__initStatic(); CoinbaseEVM.__initStatic2();
|
|
533
|
+
|
|
534
|
+
function _optionalChain$i(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
535
|
+
class CryptoCom extends WindowEthereum {
|
|
536
|
+
|
|
537
|
+
static __initStatic() {this.info = {
|
|
538
|
+
name: 'Crypto.com | DeFi Wallet',
|
|
539
|
+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA4OS45IDEwMi44IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA4OS45IDEwMi44IiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiNGRkZGRkY7fQoJLnN0MXtmaWxsOiMwMzMxNkM7fQo8L3N0eWxlPgoKPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuMzc1MSAtMTEzLjYxKSI+Cgk8ZyB0cmFuc2Zvcm09Im1hdHJpeCguMzE3OTQgMCAwIC4zMTQ2NSAtMS4wNDczIDMwLjQ0NykiPgoJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Im0xNjEuNiAyNjQuMy0xNDEuNCA4MS42djE2My4zbDE0MS40IDgxLjYgMTQxLjQtODEuNnYtMTYzLjNsLTE0MS40LTgxLjZ6bTAgMC0xNDEuNCA4MS42djE2My4zbDE0MS40IDgxLjYgMTQxLjQtODEuNnYtMTYzLjNsLTE0MS40LTgxLjZ6Ii8+CgkJPHBhdGggY2xhc3M9InN0MSIgZD0ibTIxNy41IDUyNy4xaC0yMC4xbC0yNC4xLTIyLjF2LTExLjNsMjQuOS0yMy44di0zNy43bDMyLjYtMjEuMyAzNy4xIDI4LjEtNTAuNCA4OC4xem0tODMuMy01OS42IDMuNy0zNS40LTEyLjItMzEuN2g3MmwtMTEuOSAzMS43IDMuNCAzNS40aC01NXptMTYuNCAzNy41LTI0LjEgMjIuNGgtMjAuNGwtNTAuNy04OC40IDM3LjQtMjcuOCAzMi45IDIxdjM3LjdsMjQuOSAyMy44djExLjN6bS00NC44LTE3MC4xaDExMS40bDEzLjMgNTYuN2gtMTM3LjdsMTMtNTYuN3ptNTUuOC03MC42LTE0MS40IDgxLjZ2MTYzLjNsMTQxLjQgODEuNiAxNDEuNC04MS42di0xNjMuM2wtMTQxLjQtODEuNnoiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K",
|
|
540
|
+
blockchains: supported$1.evm
|
|
541
|
+
};}
|
|
542
|
+
|
|
543
|
+
static __initStatic2() {this.isAvailable = async()=>{ return _optionalChain$i([window, 'optionalAccess', _3 => _3.ethereum, 'optionalAccess', _4 => _4.isDeficonnectProvider]) };}
|
|
544
|
+
} CryptoCom.__initStatic(); CryptoCom.__initStatic2();
|
|
545
|
+
|
|
546
|
+
function _optionalChain$h(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
547
|
+
class ExodusEVM extends WindowEthereum {
|
|
548
|
+
|
|
549
|
+
static __initStatic() {this.info = {
|
|
550
|
+
name: 'Exodus',
|
|
551
|
+
logo: logos.exodus,
|
|
552
|
+
blockchains: supported$1.evm,
|
|
553
|
+
platform: 'evm',
|
|
554
|
+
};}
|
|
555
|
+
|
|
556
|
+
static __initStatic2() {this.isAvailable = async()=>{ return _optionalChain$h([window, 'optionalAccess', _3 => _3.ethereum, 'optionalAccess', _4 => _4.isExodus]) };}
|
|
557
|
+
} ExodusEVM.__initStatic(); ExodusEVM.__initStatic2();
|
|
558
|
+
|
|
559
|
+
function _optionalChain$g(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
560
|
+
class HyperPay extends WindowEthereum {
|
|
561
|
+
|
|
562
|
+
static __initStatic() {this.info = {
|
|
563
|
+
name: 'HyperPay',
|
|
564
|
+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjA0LjcgMjAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMDQuNyAyMDA7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHBhdGggZmlsbD0iIzFBNzJGRSIgZD0iTTEwMi41LDUuMkM1MC44LDUuMiw4LjgsNDcuMiw4LjgsOTlzNDIsOTMuNSw5My44LDkzLjVzOTMuOC00Miw5My44LTkzLjhTMTU0LjIsNS4yLDEwMi41LDUuMnogTTEyNy4yLDExOS4yCgljLTYuMiwwLTIxLjcsMC4zLTIxLjcsMC4zbC03LDI3aC0yOWw2LjgtMjYuNUgzMWw3LjItMjEuOGMwLDAsNzguOCwwLjIsODUuMiwwYzYuNS0wLjIsMTYuNS0xLjgsMTYuOC0xNC44YzAuMy0xNy44LTI3LTE2LjgtMjkuMi0xCgljLTEuNSwxMC0xLjUsMTIuNS0xLjUsMTIuNUg4My44bDUtMjMuNUg0N2w2LjMtMjJjMCwwLDYxLjIsMC4yLDcyLjgsMC4yczQyLjIsMyw0Mi4yLDMxLjJDMTY4LjIsMTEyLDEzOC41LDExOS4zLDEyNy4yLDExOS4yCglMMTI3LjIsMTE5LjJ6Ii8+Cjwvc3ZnPgo=",
|
|
565
|
+
blockchains: supported$1.evm
|
|
566
|
+
};}
|
|
567
|
+
|
|
568
|
+
static __initStatic2() {this.isAvailable = async()=>{ return _optionalChain$g([window, 'optionalAccess', _3 => _3.ethereum, 'optionalAccess', _4 => _4.isHyperPay]) };}
|
|
569
|
+
} HyperPay.__initStatic(); HyperPay.__initStatic2();
|
|
570
|
+
|
|
571
|
+
function _optionalChain$f(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
572
|
+
class MagicEdenEVM extends WindowEthereum {
|
|
573
|
+
|
|
574
|
+
static __initStatic() {this.info = {
|
|
575
|
+
name: 'Magic Eden',
|
|
576
|
+
logo: logos.magicEden,
|
|
577
|
+
blockchains: ['ethereum', 'polygon'],
|
|
578
|
+
platform: 'evm',
|
|
579
|
+
};}
|
|
580
|
+
|
|
581
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
582
|
+
return (
|
|
583
|
+
_optionalChain$f([window, 'optionalAccess', _3 => _3.ethereum, 'optionalAccess', _4 => _4.isMagicEden])
|
|
584
|
+
)
|
|
585
|
+
};}
|
|
586
|
+
} MagicEdenEVM.__initStatic(); MagicEdenEVM.__initStatic2();
|
|
587
|
+
|
|
588
|
+
function _optionalChain$e(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
589
|
+
class MetaMask extends WindowEthereum {
|
|
590
|
+
|
|
591
|
+
static __initStatic() {this.info = {
|
|
592
|
+
name: 'MetaMask',
|
|
593
|
+
logo: "data:image/svg+xml;base64,PHN2ZyBpZD0nTGF5ZXJfMScgZGF0YS1uYW1lPSdMYXllciAxJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCA0ODUuOTMgNDUwLjU2Jz48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzgyODQ4Nzt9LmNscy0ye2ZpbGw6I2UyNzcyNjtzdHJva2U6I2UyNzcyNjt9LmNscy0xMCwuY2xzLTExLC5jbHMtMiwuY2xzLTMsLmNscy00LC5jbHMtNSwuY2xzLTYsLmNscy03LC5jbHMtOCwuY2xzLTl7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO30uY2xzLTN7ZmlsbDojZTM3NzI1O3N0cm9rZTojZTM3NzI1O30uY2xzLTR7ZmlsbDojZDZjMGIzO3N0cm9rZTojZDZjMGIzO30uY2xzLTV7ZmlsbDojMjQzNDQ3O3N0cm9rZTojMjQzNDQ3O30uY2xzLTZ7ZmlsbDojY2Q2MzI4O3N0cm9rZTojY2Q2MzI4O30uY2xzLTd7ZmlsbDojZTM3NTI1O3N0cm9rZTojZTM3NTI1O30uY2xzLTh7ZmlsbDojZjY4NTFmO3N0cm9rZTojZjY4NTFmO30uY2xzLTl7ZmlsbDojYzFhZTllO3N0cm9rZTojYzFhZTllO30uY2xzLTEwe2ZpbGw6IzE3MTcxNztzdHJva2U6IzE3MTcxNzt9LmNscy0xMXtmaWxsOiM3NjNlMWE7c3Ryb2tlOiM3NjNlMWE7fTwvc3R5bGU+PC9kZWZzPjxwYXRoIGNsYXNzPSdjbHMtMScgZD0nTTI0Ny45MSwzNTYuMjlhMjYsMjYsMCwxLDAtMjYsMjZBMjYsMjYsMCwwLDAsMjQ3LjkxLDM1Ni4yOVonIHRyYW5zZm9ybT0ndHJhbnNsYXRlKC03Ljk3IC0yMS4zMyknLz48cGF0aCBjbGFzcz0nY2xzLTEnIGQ9J00yNDYuNTUsMTQ5LjcxYTI2LDI2LDAsMSwwLTI2LDI2QTI2LDI2LDAsMCwwLDI0Ni41NSwxNDkuNzFaJyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSgtNy45NyAtMjEuMzMpJy8+PGNpcmNsZSBjbGFzcz0nY2xzLTEnIGN4PScxNDguNCcgY3k9JzIzMC4wNScgcj0nMjUuOTknLz48cG9seWdvbiBjbGFzcz0nY2xzLTInIHBvaW50cz0nNDYxLjI4IDAuNSAyNzIuMDYgMTQxLjAzIDMwNy4wNSA1OC4xMiA0NjEuMjggMC41Jy8+PHBvbHlnb24gY2xhc3M9J2Nscy0zJyBwb2ludHM9JzI0LjQ2IDAuNSAyMTIuMTYgMTQyLjM3IDE3OC44OCA1OC4xMiAyNC40NiAwLjUnLz48cG9seWdvbiBjbGFzcz0nY2xzLTMnIHBvaW50cz0nMzkzLjIgMzI2LjI2IDM0Mi44MSA0MDMuNDcgNDUwLjYzIDQzMy4xNCA0ODEuNjMgMzI3Ljk3IDM5My4yIDMyNi4yNicvPjxwb2x5Z29uIGNsYXNzPSdjbHMtMycgcG9pbnRzPSc0LjQ5IDMyNy45NyAzNS4zIDQzMy4xNCAxNDMuMTMgNDAzLjQ3IDkyLjczIDMyNi4yNiA0LjQ5IDMyNy45NycvPjxwb2x5Z29uIGNsYXNzPSdjbHMtMycgcG9pbnRzPScxMzcuMDQgMTk1LjggMTA3IDI0MS4yNSAyMTQuMDYgMjQ2LjAxIDIxMC4yNiAxMzAuOTYgMTM3LjA0IDE5NS44Jy8+PHBvbHlnb24gY2xhc3M9J2Nscy0zJyBwb2ludHM9JzM0OC43IDE5NS44IDI3NC41MyAxMjkuNjMgMjcyLjA2IDI0Ni4wMSAzNzguOTQgMjQxLjI1IDM0OC43IDE5NS44Jy8+PHBvbHlnb24gY2xhc3M9J2Nscy0zJyBwb2ludHM9JzE0My4xMyA0MDMuNDcgMjA3LjQxIDM3Mi4wOSAxNTEuODggMzI4LjczIDE0My4xMyA0MDMuNDcnLz48cG9seWdvbiBjbGFzcz0nY2xzLTMnIHBvaW50cz0nMjc4LjM0IDM3Mi4wOSAzNDIuODEgNDAzLjQ3IDMzMy44NyAzMjguNzMgMjc4LjM0IDM3Mi4wOScvPjxwb2x5Z29uIGNsYXNzPSdjbHMtNCcgcG9pbnRzPSczNDIuODEgNDAzLjQ3IDI3OC4zNCAzNzIuMDkgMjgzLjQ3IDQxNC4xMiAyODIuOSA0MzEuODEgMzQyLjgxIDQwMy40NycvPjxwb2x5Z29uIGNsYXNzPSdjbHMtNCcgcG9pbnRzPScxNDMuMTMgNDAzLjQ3IDIwMy4wMyA0MzEuODEgMjAyLjY1IDQxNC4xMiAyMDcuNDEgMzcyLjA5IDE0My4xMyA0MDMuNDcnLz48cG9seWdvbiBjbGFzcz0nY2xzLTUnIHBvaW50cz0nMjAzLjk4IDMwMC45NyAxNTAuMzUgMjg1LjE4IDE4OC4yIDI2Ny44OCAyMDMuOTggMzAwLjk3Jy8+PHBvbHlnb24gY2xhc3M9J2Nscy01JyBwb2ludHM9JzI4MS43NiAzMDAuOTcgMjk3LjU1IDI2Ny44OCAzMzUuNTggMjg1LjE4IDI4MS43NiAzMDAuOTcnLz48cG9seWdvbiBjbGFzcz0nY2xzLTYnIHBvaW50cz0nMTQzLjEzIDQwMy40NyAxNTIuMjUgMzI2LjI2IDkyLjczIDMyNy45NyAxNDMuMTMgNDAzLjQ3Jy8+PHBvbHlnb24gY2xhc3M9J2Nscy02JyBwb2ludHM9JzMzMy42OCAzMjYuMjYgMzQyLjgxIDQwMy40NyAzOTMuMiAzMjcuOTcgMzMzLjY4IDMyNi4yNicvPjxwb2x5Z29uIGNsYXNzPSdjbHMtNicgcG9pbnRzPSczNzguOTQgMjQxLjI1IDI3Mi4wNiAyNDYuMDEgMjgxLjk1IDMwMC45NyAyOTcuNzQgMjY3Ljg4IDMzNS43NyAyODUuMTggMzc4Ljk0IDI0MS4yNScvPjxwb2x5Z29uIGNsYXNzPSdjbHMtNicgcG9pbnRzPScxNTAuMzUgMjg1LjE4IDE4OC4zOSAyNjcuODggMjAzLjk4IDMwMC45NyAyMTQuMDYgMjQ2LjAxIDEwNyAyNDEuMjUgMTUwLjM1IDI4NS4xOCcvPjxwb2x5Z29uIGNsYXNzPSdjbHMtNycgcG9pbnRzPScxMDcgMjQxLjI1IDE1MS44OCAzMjguNzMgMTUwLjM1IDI4NS4xOCAxMDcgMjQxLjI1Jy8+PHBvbHlnb24gY2xhc3M9J2Nscy03JyBwb2ludHM9JzMzNS43NyAyODUuMTggMzMzLjg3IDMyOC43MyAzNzguOTQgMjQxLjI1IDMzNS43NyAyODUuMTgnLz48cG9seWdvbiBjbGFzcz0nY2xzLTcnIHBvaW50cz0nMjE0LjA2IDI0Ni4wMSAyMDMuOTggMzAwLjk3IDIxNi41MyAzNjUuODIgMjE5LjM4IDI4MC40MyAyMTQuMDYgMjQ2LjAxJy8+PHBvbHlnb24gY2xhc3M9J2Nscy03JyBwb2ludHM9JzI3Mi4wNiAyNDYuMDEgMjY2LjkzIDI4MC4yNCAyNjkuMjEgMzY1LjgyIDI4MS45NSAzMDAuOTcgMjcyLjA2IDI0Ni4wMScvPjxwb2x5Z29uIGNsYXNzPSdjbHMtOCcgcG9pbnRzPScyODEuOTUgMzAwLjk3IDI2OS4yMSAzNjUuODIgMjc4LjM0IDM3Mi4wOSAzMzMuODcgMzI4LjczIDMzNS43NyAyODUuMTggMjgxLjk1IDMwMC45NycvPjxwb2x5Z29uIGNsYXNzPSdjbHMtOCcgcG9pbnRzPScxNTAuMzUgMjg1LjE4IDE1MS44OCAzMjguNzMgMjA3LjQxIDM3Mi4wOSAyMTYuNTMgMzY1LjgyIDIwMy45OCAzMDAuOTcgMTUwLjM1IDI4NS4xOCcvPjxwb2x5Z29uIGNsYXNzPSdjbHMtOScgcG9pbnRzPScyODIuOSA0MzEuODEgMjgzLjQ3IDQxNC4xMiAyNzguNzIgNDA5Ljk0IDIwNy4wMiA0MDkuOTQgMjAyLjY1IDQxNC4xMiAyMDMuMDMgNDMxLjgxIDE0My4xMyA0MDMuNDcgMTY0LjA1IDQyMC41OCAyMDYuNDUgNDUwLjA2IDI3OS4yOSA0NTAuMDYgMzIxLjg5IDQyMC41OCAzNDIuODEgNDAzLjQ3IDI4Mi45IDQzMS44MScvPjxwb2x5Z29uIGNsYXNzPSdjbHMtMTAnIHBvaW50cz0nMjc4LjM0IDM3Mi4wOSAyNjkuMjEgMzY1LjgyIDIxNi41MyAzNjUuODIgMjA3LjQxIDM3Mi4wOSAyMDIuNjUgNDE0LjEyIDIwNy4wMiA0MDkuOTQgMjc4LjcyIDQwOS45NCAyODMuNDcgNDE0LjEyIDI3OC4zNCAzNzIuMDknLz48cG9seWdvbiBjbGFzcz0nY2xzLTExJyBwb2ludHM9JzQ2OS4yNyAxNTAuMTYgNDg1LjQzIDcyLjU3IDQ2MS4yOCAwLjUgMjc4LjM0IDEzNi4yOCAzNDguNyAxOTUuOCA0NDguMTYgMjI0LjkgNDcwLjIyIDE5OS4yMyA0NjAuNzEgMTkyLjM4IDQ3NS45MiAxNzguNSA0NjQuMTMgMTY5LjM3IDQ3OS4zNSAxNTcuNzcgNDY5LjI3IDE1MC4xNicvPjxwb2x5Z29uIGNsYXNzPSdjbHMtMTEnIHBvaW50cz0nMC41IDcyLjU3IDE2LjY2IDE1MC4xNiA2LjM5IDE1Ny43NyAyMS42MSAxNjkuMzcgMTAuMDEgMTc4LjUgMjUuMjIgMTkyLjM4IDE1LjcxIDE5OS4yMyAzNy41OCAyMjQuOSAxMzcuMDQgMTk1LjggMjA3LjQxIDEzNi4yOCAyNC40NiAwLjUgMC41IDcyLjU3Jy8+PHBvbHlnb24gY2xhc3M9J2Nscy04JyBwb2ludHM9JzQ0OC4xNiAyMjQuOSAzNDguNyAxOTUuOCAzNzguOTQgMjQxLjI1IDMzMy44NyAzMjguNzMgMzkzLjIgMzI3Ljk3IDQ4MS42MyAzMjcuOTcgNDQ4LjE2IDIyNC45Jy8+PHBvbHlnb24gY2xhc3M9J2Nscy04JyBwb2ludHM9JzEzNy4wNCAxOTUuOCAzNy41OCAyMjQuOSA0LjQ5IDMyNy45NyA5Mi43MyAzMjcuOTcgMTUxLjg4IDMyOC43MyAxMDcgMjQxLjI1IDEzNy4wNCAxOTUuOCcvPjxwb2x5Z29uIGNsYXNzPSdjbHMtOCcgcG9pbnRzPScyNzIuMDYgMjQ2LjAxIDI3OC4zNCAxMzYuMjggMzA3LjI0IDU4LjEyIDE3OC44OCA1OC4xMiAyMDcuNDEgMTM2LjI4IDIxNC4wNiAyNDYuMDEgMjE2LjM0IDI4MC42MiAyMTYuNTMgMzY1LjgyIDI2OS4yMSAzNjUuODIgMjY5LjU5IDI4MC42MiAyNzIuMDYgMjQ2LjAxJy8+PC9zdmc+",
|
|
594
|
+
blockchains: supported$1.evm
|
|
595
|
+
};}
|
|
596
|
+
|
|
597
|
+
static __initStatic2() {this.isMetaMask = (provider)=> {
|
|
598
|
+
return(
|
|
599
|
+
_optionalChain$e([provider, 'optionalAccess', _3 => _3.isMetaMask]) &&
|
|
600
|
+
Object.keys(provider).filter((key)=>key.match(/^is(?!Connected)(?!PocketUniverse)(?!WalletGuard)(?!RevokeCash)/)).length == 1
|
|
601
|
+
)
|
|
602
|
+
};}
|
|
603
|
+
|
|
604
|
+
static __initStatic3() {this.getEip6963Provider = ()=>{
|
|
605
|
+
return window['_eip6963Providers'] ? Object.values(window['_eip6963Providers']).find((provider)=>{
|
|
606
|
+
return MetaMask.isMetaMask(provider)
|
|
607
|
+
}) : undefined
|
|
608
|
+
};}
|
|
609
|
+
|
|
610
|
+
static __initStatic4() {this.isAvailable = async()=>{
|
|
611
|
+
return(
|
|
612
|
+
MetaMask.getEip6963Provider() ||
|
|
613
|
+
MetaMask.isMetaMask(_optionalChain$e([window, 'optionalAccess', _4 => _4.ethereum]))
|
|
614
|
+
)
|
|
615
|
+
};}
|
|
616
|
+
|
|
617
|
+
getProvider() {
|
|
618
|
+
return MetaMask.getEip6963Provider() || (MetaMask.isMetaMask(_optionalChain$e([window, 'optionalAccess', _5 => _5.ethereum])) && _optionalChain$e([window, 'optionalAccess', _6 => _6.ethereum]))
|
|
619
|
+
}
|
|
620
|
+
} MetaMask.__initStatic(); MetaMask.__initStatic2(); MetaMask.__initStatic3(); MetaMask.__initStatic4();
|
|
621
|
+
|
|
622
|
+
function _optionalChain$d(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
623
|
+
class OKXEVM extends WindowEthereum {
|
|
624
|
+
|
|
625
|
+
static __initStatic() {this.info = {
|
|
626
|
+
name: 'OKX',
|
|
627
|
+
logo: logos.okx,
|
|
628
|
+
blockchains: supported$1.evm,
|
|
629
|
+
platform: 'evm',
|
|
630
|
+
};}
|
|
631
|
+
|
|
632
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
633
|
+
return (
|
|
634
|
+
_optionalChain$d([window, 'optionalAccess', _2 => _2.okxwallet])
|
|
635
|
+
)
|
|
636
|
+
};}
|
|
637
|
+
} OKXEVM.__initStatic(); OKXEVM.__initStatic2();
|
|
638
|
+
|
|
639
|
+
function _optionalChain$c(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
640
|
+
class Opera extends WindowEthereum {
|
|
641
|
+
|
|
642
|
+
static __initStatic() {this.info = {
|
|
643
|
+
name: 'Opera',
|
|
644
|
+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA3NS42IDc1LjYiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIHRyYW5zZm9ybT0ibWF0cml4KDEuMzMzMyAwIDAgLTEuMzMzMyAwIDEwNy4yKSI+CiAgCiAgPGxpbmVhckdyYWRpZW50IGlkPSJvcGVyYUxvZ28wMDAwMDAxMjM1MTEiIHgxPSItMTA3LjM0IiB4Mj0iLTEwNi4zNCIgeTE9Ii0xMzcuODUiIHkyPSItMTM3Ljg1IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDAgLTczLjI1NyAtNzMuMjU3IDAgLTEwMDc1IC03Nzg0LjEpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkYxQjJEIiBvZmZzZXQ9IjAiLz4KICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRjFCMkQiIG9mZnNldD0iLjMiLz4KICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRjFCMkQiIG9mZnNldD0iLjYxNCIvPgogICAgPHN0b3Agc3RvcC1jb2xvcj0iI0E3MDAxNCIgb2Zmc2V0PSIxIi8+CiAgPC9saW5lYXJHcmFkaWVudD4KICAKICA8cGF0aCBmaWxsPSJ1cmwoI29wZXJhTG9nbzAwMDAwMDEyMzUxMSkiIGQ9Im0yOC4zIDgwLjRjLTE1LjYgMC0yOC4zLTEyLjctMjguMy0yOC4zIDAtMTUuMiAxMi0yNy42IDI3LTI4LjNoMS40YzcuMyAwIDEzLjkgMi43IDE4LjkgNy4yLTMuMy0yLjItNy4yLTMuNS0xMS40LTMuNS02LjggMC0xMi44IDMuMy0xNi45IDguNi0zLjEgMy43LTUuMiA5LjItNS4zIDE1LjN2MS4zYzAuMSA2LjEgMi4yIDExLjYgNS4zIDE1LjMgNC4xIDUuMyAxMC4xIDguNiAxNi45IDguNiA0LjIgMCA4LTEuMyAxMS40LTMuNS01IDQuNS0xMS42IDcuMi0xOC44IDcuMi0wLjEgMC4xLTAuMSAwLjEtMC4yIDAuMXoiLz4KICAKICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9Ii0xMDcuMDYiIHgyPSItMTA2LjA2IiB5MT0iLTEzOC4wNCIgeTI9Ii0xMzguMDQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMCAtNjQuNzkyIC02NC43OTIgMCAtODkwNi4yIC02ODYwLjQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICA8c3RvcCBzdG9wLWNvbG9yPSIjOUMwMDAwIiBvZmZzZXQ9IjAiLz4KICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRjRCNEIiIG9mZnNldD0iLjciLz4KICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRjRCNEIiIG9mZnNldD0iMSIvPgogIDwvbGluZWFyR3JhZGllbnQ+CiAgPHBhdGggZD0ibTE5IDY4YzIuNiAzLjEgNiA0LjkgOS42IDQuOSA4LjMgMCAxNC45LTkuNCAxNC45LTIwLjlzLTYuNy0yMC45LTE0LjktMjAuOWMtMy43IDAtNyAxLjktOS42IDQuOSA0LjEtNS4zIDEwLjEtOC42IDE2LjktOC42IDQuMiAwIDggMS4zIDExLjQgMy41IDUuOCA1LjIgOS41IDEyLjcgOS41IDIxLjFzLTMuNyAxNS45LTkuNSAyMS4xYy0zLjMgMi4yLTcuMiAzLjUtMTEuNCAzLjUtNi44IDAuMS0xMi44LTMuMy0xNi45LTguNiIgZmlsbD0idXJsKCNiKSIvPgo8L2c+Cjwvc3ZnPgo=",
|
|
645
|
+
blockchains: supported$1.evm
|
|
646
|
+
};}
|
|
647
|
+
|
|
648
|
+
static __initStatic2() {this.isAvailable = async()=>{ return _optionalChain$c([window, 'optionalAccess', _3 => _3.ethereum, 'optionalAccess', _4 => _4.isOpera]) };}
|
|
649
|
+
} Opera.__initStatic(); Opera.__initStatic2();
|
|
650
|
+
|
|
651
|
+
function _optionalChain$b(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
652
|
+
class PhantomEVM extends WindowEthereum {
|
|
653
|
+
|
|
654
|
+
static __initStatic() {this.info = {
|
|
655
|
+
name: 'Phantom',
|
|
656
|
+
logo: logos.phantom,
|
|
657
|
+
blockchains: ['ethereum', 'polygon'],
|
|
658
|
+
platform: 'evm',
|
|
659
|
+
};}
|
|
660
|
+
|
|
661
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
662
|
+
return (
|
|
663
|
+
window.phantom &&
|
|
664
|
+
window.phantom.ethereum &&
|
|
665
|
+
! _optionalChain$b([window, 'optionalAccess', _4 => _4.ethereum, 'optionalAccess', _5 => _5.isMagicEden]) &&
|
|
666
|
+
! _optionalChain$b([window, 'optionalAccess', _6 => _6.okxwallet])
|
|
667
|
+
)
|
|
668
|
+
};}
|
|
669
|
+
|
|
670
|
+
getProvider() {
|
|
671
|
+
return _optionalChain$b([window, 'optionalAccess', _7 => _7.phantom, 'optionalAccess', _8 => _8.ethereum]) || window.ethereum
|
|
672
|
+
}
|
|
673
|
+
} PhantomEVM.__initStatic(); PhantomEVM.__initStatic2();
|
|
674
|
+
|
|
675
|
+
function _optionalChain$a(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
676
|
+
class Rabby extends WindowEthereum {
|
|
677
|
+
|
|
678
|
+
static __initStatic() {this.info = {
|
|
679
|
+
name: 'Rabby',
|
|
680
|
+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9ImthdG1hbl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIKCSB2aWV3Qm94PSIwIDAgMjA0IDE1MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMjA0IDE1MjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOnVybCgjU1ZHSURfMV8pO30KCS5zdDF7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTE4MzY5MTkwNjY5MjcyNDcwNjgwMDAwMDE1NjE0NDY3MTMxNjE1Mjc5NDkxXyk7fQoJLnN0MntmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtmaWxsOnVybCgjU1ZHSURfMDAwMDAwNjU3Nzc0NTQ3NDc4MDEzNzcwNTAwMDAwMDcwMDM5OTUyODQ2NDY5NTk3NzVfKTt9Cgkuc3Qze2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDA5MTY5NjU3NTkzMjA0MzQxNTM5MDAwMDAwMTAyMTU2NDM5MjA1MDA3ODg1Nl8pO30KPC9zdHlsZT4KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI3MS4zNDE4IiB5MT0iNDE5LjA4NjkiIHgyPSIxNzUuMjg4MSIgeTI9IjQ0OC41NjQxIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDEgMCAwIDEgMCAtMzQ2KSI+Cgk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojODc5N0ZGIi8+Cgk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojQUFBOEZGIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNzYuNCw4NS40YzUuOS0xMy4yLTIzLjMtNTAuMS01MS4yLTY1LjNDMTA3LjUsOC4xLDg5LjMsOS43LDg1LjUsMTVjLTguMSwxMS40LDI3LDIxLjMsNTAuNCwzMi41CgljLTUuMSwyLjItOS44LDYuMi0xMi41LDExLjFDMTE0LjcsNDksOTUuNSw0MC44LDczLDQ3LjVjLTE1LjIsNC40LTI3LjgsMTUuMS0zMi43LDMwLjljLTEuMS0wLjUtMi41LTAuOC0zLjgtMC44CgljLTUuMiwwLTkuNSw0LjMtOS41LDkuNWMwLDUuMiw0LjMsOS41LDkuNSw5LjVjMSwwLDQtMC42LDQtMC42bDQ4LjgsMC4zYy0xOS41LDMxLjEtMzUsMzUuNS0zNSw0MC45czE0LjcsNCwyMC4zLDEuOQoJYzI2LjYtOS41LDU1LjItMzkuNSw2MC4xLTQ4LjFDMTU1LjMsOTMuOCwxNzIuNSw5My45LDE3Ni40LDg1LjR6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAwMzg0MDY0NTAzNDY5MjQ4NjkzNTAwMDAwMDA5NDQzOTczMDQwMTQ3OTk1NDdfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE1My45OTAyIiB5MT0iNDIxLjM0NzQiIHgyPSI3OC45ODgzIiB5Mj0iMzQ2LjE2MTgiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMSAwIDAgMSAwIC0zNDYpIj4KCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiMzQjIyQTAiLz4KCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiM1MTU2RDg7c3RvcC1vcGFjaXR5OjAiLz4KPC9saW5lYXJHcmFkaWVudD4KPHBhdGggc3R5bGU9ImZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6dXJsKCNTVkdJRF8wMDAwMDAzODQwNjQ1MDM0NjkyNDg2OTM1MDAwMDAwMDk0NDM5NzMwNDAxNDc5OTU0N18pOyIgZD0iCglNMTM2LjEsNDcuNUwxMzYuMSw0Ny41YzEuMS0wLjUsMS0yLjEsMC42LTMuM2MtMC42LTIuOS0xMi41LTE0LjYtMjMuNi0xOS44Yy0xNS4yLTcuMS0yNi4zLTYuOC0yNy45LTMuNWMzLDYuMywxNy40LDEyLjIsMzIuNCwxOC42CglDMTIzLjcsNDEuOSwxMzAuMiw0NC42LDEzNi4xLDQ3LjVMMTM2LjEsNDcuNXoiLz4KPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8wMDAwMDE0NzIyMDY3MjYxNTU0Nzk0MjI0MDAwMDAxMTg5NDM0ODEwNDAwNzM1NDA0NF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMTE4Ljc4NjUiIHkxPSI0NTkuOTQ1OSIgeDI9IjQ2LjczODgiIHkyPSI0MTguNTIzNiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgLTM0NikiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzNCMUU4RiIvPgoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzZBNkZGQjtzdG9wLW9wYWNpdHk6MCIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTQ3MjIwNjcyNjE1NTQ3OTQyMjQwMDAwMDExODk0MzQ4MTA0MDA3MzU0MDQ0Xyk7IiBkPSIKCU0xMTYuNywxMTEuMmMtMy0xLjEtNi41LTIuMi0xMC41LTMuMmM0LjEtNy41LDUuMS0xOC43LDEuMS0yNS43Yy01LjYtOS44LTEyLjUtMTUuMS0yOC45LTE1LjFjLTguOSwwLTMzLDMtMzMuNSwyMy4yCgljMCwyLjEsMCw0LDAuMiw1LjlsNDQuMSwwYy01LjksOS40LTExLjQsMTYuMy0xNi4zLDIxLjZjNS45LDEuNCwxMC42LDIuNywxNS4xLDRjNC4xLDEuMSw4LjEsMi4xLDEyLjEsMy4yCglDMTA2LjEsMTIwLjYsMTExLjgsMTE1LjgsMTE2LjcsMTExLjJ6Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxMjg0NzQ1MTgwNjUxMjc5MDc2OTAwMDAwMDg3OTM1NDY5MjM0OTg1OTA4NjFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjY2LjM2MDQiIHkxPSI0MjcuNjAyIiB4Mj0iMTE1LjA1OTMiIHkyPSI0ODkuNDc5MiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAxIDAgLTM0NikiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6Izg4OThGRiIvPgoJPHN0b3AgIG9mZnNldD0iMC45ODM5IiBzdHlsZT0ic3RvcC1jb2xvcjojNUY0N0YxIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxwYXRoIHN0eWxlPSJmaWxsOnVybCgjU1ZHSURfMDAwMDAxMjg0NzQ1MTgwNjUxMjc5MDc2OTAwMDAwMDg3OTM1NDY5MjM0OTg1OTA4NjFfKTsiIGQ9Ik0zOS43LDkzLjljMS43LDE1LjIsMTAuNSwyMS4zLDI4LjIsMjMKCWMxNy44LDEuNywyNy45LDAuNiw0MS40LDEuN2MxMS4zLDEsMjEuNCw2LjgsMjUuMSw0LjhjMy4zLTEuNywxLjQtOC4yLTMtMTIuNGMtNS45LTUuNC0xNC05LTI4LjEtMTAuNWMyLjktNy44LDIuMS0xOC43LTIuNC0yNC42CgljLTYuMy04LjYtMTguMS0xMi40LTMzLTEwLjhDNTIuMyw2Ny4xLDM3LjQsNzQuOSwzOS43LDkzLjl6Ii8+Cjwvc3ZnPgo=",
|
|
681
|
+
blockchains: supported$1.evm
|
|
682
|
+
};}
|
|
683
|
+
|
|
684
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
685
|
+
return(
|
|
686
|
+
_optionalChain$a([window, 'optionalAccess', _3 => _3.ethereum, 'optionalAccess', _4 => _4.isRabby])
|
|
687
|
+
)
|
|
688
|
+
};}
|
|
689
|
+
} Rabby.__initStatic(); Rabby.__initStatic2();
|
|
690
|
+
|
|
691
|
+
function _optionalChain$9(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
692
|
+
class Rainbow extends WindowEthereum {
|
|
693
|
+
|
|
694
|
+
static __initStatic() {this.info = {
|
|
695
|
+
name: 'Rainbow',
|
|
696
|
+
logo: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMCIgdmlld0JveD0iMCAwIDEyMCAxMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMjAiIGhlaWdodD0iMTIwIiBmaWxsPSJ1cmwoI3BhaW50MF9saW5lYXJfNjJfMzI5KSIvPgo8cGF0aCBkPSJNMjAgMzhIMjZDNTYuOTI3OSAzOCA4MiA2My4wNzIxIDgyIDk0VjEwMEg5NEM5Ny4zMTM3IDEwMCAxMDAgOTcuMzEzNyAxMDAgOTRDMTAwIDUzLjEzMDkgNjYuODY5MSAyMCAyNiAyMEMyMi42ODYzIDIwIDIwIDIyLjY4NjMgMjAgMjZWMzhaIiBmaWxsPSJ1cmwoI3BhaW50MV9yYWRpYWxfNjJfMzI5KSIvPgo8cGF0aCBkPSJNODQgOTRIMTAwQzEwMCA5Ny4zMTM3IDk3LjMxMzcgMTAwIDk0IDEwMEg4NFY5NFoiIGZpbGw9InVybCgjcGFpbnQyX2xpbmVhcl82Ml8zMjkpIi8+CjxwYXRoIGQ9Ik0yNiAyMEwyNiAzNkgyMEwyMCAyNkMyMCAyMi42ODYzIDIyLjY4NjMgMjAgMjYgMjBaIiBmaWxsPSJ1cmwoI3BhaW50M19saW5lYXJfNjJfMzI5KSIvPgo8cGF0aCBkPSJNMjAgMzZIMjZDNTguMDMyNSAzNiA4NCA2MS45Njc1IDg0IDk0VjEwMEg2NlY5NEM2NiA3MS45MDg2IDQ4LjA5MTQgNTQgMjYgNTRIMjBWMzZaIiBmaWxsPSJ1cmwoI3BhaW50NF9yYWRpYWxfNjJfMzI5KSIvPgo8cGF0aCBkPSJNNjggOTRIODRWMTAwSDY4Vjk0WiIgZmlsbD0idXJsKCNwYWludDVfbGluZWFyXzYyXzMyOSkiLz4KPHBhdGggZD0iTTIwIDUyTDIwIDM2TDI2IDM2TDI2IDUySDIwWiIgZmlsbD0idXJsKCNwYWludDZfbGluZWFyXzYyXzMyOSkiLz4KPHBhdGggZD0iTTIwIDYyQzIwIDY1LjMxMzcgMjIuNjg2MyA2OCAyNiA2OEM0MC4zNTk0IDY4IDUyIDc5LjY0MDYgNTIgOTRDNTIgOTcuMzEzNyA1NC42ODYzIDEwMCA1OCAxMDBINjhWOTRDNjggNzAuODA0IDQ5LjE5NiA1MiAyNiA1MkgyMFY2MloiIGZpbGw9InVybCgjcGFpbnQ3X3JhZGlhbF82Ml8zMjkpIi8+CjxwYXRoIGQ9Ik01MiA5NEg2OFYxMDBINThDNTQuNjg2MyAxMDAgNTIgOTcuMzEzNyA1MiA5NFoiIGZpbGw9InVybCgjcGFpbnQ4X3JhZGlhbF82Ml8zMjkpIi8+CjxwYXRoIGQ9Ik0yNiA2OEMyMi42ODYzIDY4IDIwIDY1LjMxMzcgMjAgNjJMMjAgNTJMMjYgNTJMMjYgNjhaIiBmaWxsPSJ1cmwoI3BhaW50OV9yYWRpYWxfNjJfMzI5KSIvPgo8ZGVmcz4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDBfbGluZWFyXzYyXzMyOSIgeDE9IjYwIiB5MT0iMCIgeDI9IjYwIiB5Mj0iMTIwIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiMxNzQyOTkiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDAxRTU5Ii8+CjwvbGluZWFyR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQxX3JhZGlhbF82Ml8zMjkiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjYgOTQpIHJvdGF0ZSgtOTApIHNjYWxlKDc0KSI+CjxzdG9wIG9mZnNldD0iMC43NzAyNzciIHN0b3AtY29sb3I9IiNGRjQwMDAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjODc1NEM5Ii8+CjwvcmFkaWFsR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQyX2xpbmVhcl82Ml8zMjkiIHgxPSI4MyIgeTE9Ijk3IiB4Mj0iMTAwIiB5Mj0iOTciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KPC9saW5lYXJHcmFkaWVudD4KPGxpbmVhckdyYWRpZW50IGlkPSJwYWludDNfbGluZWFyXzYyXzMyOSIgeDE9IjIzIiB5MT0iMjAiIHgyPSIyMyIgeTI9IjM3IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CjxzdG9wIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY0MDAwIi8+CjwvbGluZWFyR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ0X3JhZGlhbF82Ml8zMjkiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjYgOTQpIHJvdGF0ZSgtOTApIHNjYWxlKDU4KSI+CjxzdG9wIG9mZnNldD0iMC43MjM5MjkiIHN0b3AtY29sb3I9IiNGRkY3MDAiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY5OTAxIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ1X2xpbmVhcl82Ml8zMjkiIHgxPSI2OCIgeTE9Ijk3IiB4Mj0iODQiIHkyPSI5NyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgo8c3RvcCBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Nl9saW5lYXJfNjJfMzI5IiB4MT0iMjMiIHkxPSI1MiIgeDI9IjIzIiB5Mj0iMzYiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0iI0ZGRjcwMCIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjk5MDEiLz4KPC9saW5lYXJHcmFkaWVudD4KPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDdfcmFkaWFsXzYyXzMyOSIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgyNiA5NCkgcm90YXRlKC05MCkgc2NhbGUoNDIpIj4KPHN0b3Agb2Zmc2V0PSIwLjU5NTEzIiBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50OF9yYWRpYWxfNjJfMzI5IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDUxIDk3KSBzY2FsZSgxNyA0NS4zMzMzKSI+CjxzdG9wIHN0b3AtY29sb3I9IiMwMEFBRkYiLz4KPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDFEQTQwIi8+CjwvcmFkaWFsR3JhZGllbnQ+CjxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ5X3JhZGlhbF82Ml8zMjkiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjMgNjkpIHJvdGF0ZSgtOTApIHNjYWxlKDE3IDMyMi4zNykiPgo8c3RvcCBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgo8L3JhZGlhbEdyYWRpZW50Pgo8L2RlZnM+Cjwvc3ZnPgo=",
|
|
697
|
+
blockchains: supported$1.evm
|
|
698
|
+
};}
|
|
699
|
+
|
|
700
|
+
static __initStatic2() {this.getEip6963Provider = ()=>{
|
|
701
|
+
return window['_eip6963Providers'] ? Object.values(window['_eip6963Providers']).find((provider)=>{
|
|
702
|
+
return _optionalChain$9([provider, 'optionalAccess', _4 => _4.isRainbow])
|
|
703
|
+
}) : undefined
|
|
704
|
+
};}
|
|
705
|
+
|
|
706
|
+
static __initStatic3() {this.isAvailable = async()=>{
|
|
707
|
+
return(
|
|
708
|
+
Rainbow.getEip6963Provider() ||
|
|
709
|
+
_optionalChain$9([window, 'optionalAccess', _5 => _5.rainbow, 'optionalAccess', _6 => _6.isRainbow])
|
|
710
|
+
)
|
|
711
|
+
};}
|
|
712
|
+
|
|
713
|
+
getProvider() {
|
|
714
|
+
return Rainbow.getEip6963Provider() || _optionalChain$9([window, 'optionalAccess', _7 => _7.rainbow])
|
|
715
|
+
}
|
|
716
|
+
|
|
717
|
+
} Rainbow.__initStatic(); Rainbow.__initStatic2(); Rainbow.__initStatic3();
|
|
718
|
+
|
|
719
|
+
function _optionalChain$8(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
720
|
+
class TokenPocket extends WindowEthereum {
|
|
721
|
+
|
|
722
|
+
static __initStatic() {this.info = {
|
|
723
|
+
name: 'TP Wallet (TokenPocket)',
|
|
724
|
+
logo: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWFzayBpZD0ibWFzazBfNDA4XzIyNSIgc3R5bGU9Im1hc2stdHlwZTphbHBoYSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMjQiIGhlaWdodD0iMTAyNCI+CjxyZWN0IHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjEwMjQiIGZpbGw9IiNDNEM0QzQiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzQwOF8yMjUpIj4KPHBhdGggZD0iTTEwNDEuNTIgMEgtMjdWMTAyNEgxMDQxLjUyVjBaIiBmaWxsPSIjMjk4MEZFIi8+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF80MDhfMjI1KSI+CjxwYXRoIGQ9Ik00MDYuNzk2IDQzOC42NDNINDA2LjkyN0M0MDYuNzk2IDQzNy44NTcgNDA2Ljc5NiA0MzYuOTQgNDA2Ljc5NiA0MzYuMTU0VjQzOC42NDNaIiBmaWxsPSIjMjlBRUZGIi8+CjxwYXRoIGQ9Ik02NjcuNjAyIDQ2My41MzNINTIzLjI0OVY3MjQuMDc2QzUyMy4yNDkgNzM2LjM4OSA1MzMuMjA0IDc0Ni4zNDUgNTQ1LjUxNyA3NDYuMzQ1SDY0NS4zMzNDNjU3LjY0NyA3NDYuMzQ1IDY2Ny42MDIgNzM2LjM4OSA2NjcuNjAyIDcyNC4wNzZWNDYzLjUzM1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik00NTMuNTYzIDI3N0g0NDguNzE2SDE5MC4yNjlDMTc3Ljk1NSAyNzcgMTY4IDI4Ni45NTUgMTY4IDI5OS4yNjlWMzg5LjY1M0MxNjggNDAxLjk2NyAxNzcuOTU1IDQxMS45MjIgMTkwLjI2OSA0MTEuOTIySDI1MC45MThIMjc1LjAyMVY0MzguNjQ0VjcyNC43MzFDMjc1LjAyMSA3MzcuMDQ1IDI4NC45NzYgNzQ3IDI5Ny4yODkgNzQ3SDM5Mi4xMjhDNDA0LjQ0MSA3NDcgNDE0LjM5NiA3MzcuMDQ1IDQxNC4zOTYgNzI0LjczMVY0MzguNjQ0VjQzNi4xNTZWNDExLjkyMkg0MzguNDk5SDQ0OC4zMjNINDUzLjE3QzQ5MC4zNzIgNDExLjkyMiA1MjAuNjMxIDM4MS42NjMgNTIwLjYzMSAzNDQuNDYxQzUyMS4wMjQgMzA3LjI1OSA0OTAuNzY1IDI3NyA0NTMuNTYzIDI3N1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik02NjcuNzM1IDQ2My41MzNWNjQ1LjM1QzY3Mi43MTMgNjQ2LjUyOSA2NzcuODIxIDY0Ny40NDYgNjgzLjA2MSA2NDguMjMyQzY5MC4zOTcgNjQ5LjI4IDY5Ny45OTQgNjQ5LjkzNSA3MDUuNTkyIDY1MC4wNjZDNzA1Ljk4NSA2NTAuMDY2IDcwNi4zNzggNjUwLjA2NiA3MDYuOTAyIDY1MC4wNjZWNTA1LjQ1QzY4NS4wMjYgNTA0LjAwOSA2NjcuNzM1IDQ4NS44MDEgNjY3LjczNSA0NjMuNTMzWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzQwOF8yMjUpIi8+CjxwYXRoIGQ9Ik03MDkuNzgxIDI3N0M2MDYuODIyIDI3NyA1MjMuMjQ5IDM2MC41NzMgNTIzLjI0OSA0NjMuNTMzQzUyMy4yNDkgNTUyLjA4NCA1ODQuOTQ2IDYyNi4yMjUgNjY3LjczMyA2NDUuMzVWNDYzLjUzM0M2NjcuNzMzIDQ0MC4zNDcgNjg2LjU5NiA0MjEuNDg0IDcwOS43ODEgNDIxLjQ4NEM3MzIuOTY3IDQyMS40ODQgNzUxLjgzIDQ0MC4zNDcgNzUxLjgzIDQ2My41MzNDNzUxLjgzIDQ4My4wNTEgNzM4LjYgNDk5LjQyNSA3MjAuNTIzIDUwNC4xNEM3MTcuMTE3IDUwNS4wNTcgNzEzLjQ0OSA1MDUuNTgxIDcwOS43ODEgNTA1LjU4MVY2NTAuMDY2QzcxMy40NDkgNjUwLjA2NiA3MTYuOTg2IDY0OS45MzUgNzIwLjUyMyA2NDkuODA0QzgxOC41MDUgNjQ0LjE3MSA4OTYuMzE0IDU2Mi45NTYgODk2LjMxNCA0NjMuNTMzQzg5Ni40NDUgMzYwLjU3MyA4MTIuODcyIDI3NyA3MDkuNzgxIDI3N1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik03MDkuNzggNjUwLjA2NlY1MDUuNTgxQzcwOC43MzMgNTA1LjU4MSA3MDcuODE2IDUwNS41ODEgNzA2Ljc2OCA1MDUuNDVWNjUwLjA2NkM3MDcuODE2IDY1MC4wNjYgNzA4Ljg2NCA2NTAuMDY2IDcwOS43OCA2NTAuMDY2WiIgZmlsbD0id2hpdGUiLz4KPC9nPgo8L2c+CjxkZWZzPgo8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MF9saW5lYXJfNDA4XzIyNSIgeDE9IjcwOS44NDQiIHkxPSI1NTYuODI3IiB4Mj0iNjY3Ljc1MyIgeTI9IjU1Ni44MjciIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KPHN0b3Agc3RvcC1jb2xvcj0id2hpdGUiLz4KPHN0b3Agb2Zmc2V0PSIwLjk2NjciIHN0b3AtY29sb3I9IndoaXRlIiBzdG9wLW9wYWNpdHk9IjAuMzIzMyIvPgo8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IndoaXRlIiBzdG9wLW9wYWNpdHk9IjAuMyIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2xpcFBhdGggaWQ9ImNsaXAwXzQwOF8yMjUiPgo8cmVjdCB3aWR0aD0iNzI4LjQ0OCIgaGVpZ2h0PSI0NzAiIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjggMjc3KSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo=",
|
|
725
|
+
blockchains: supported$1.evm
|
|
726
|
+
};}
|
|
727
|
+
|
|
728
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
729
|
+
return (
|
|
730
|
+
_optionalChain$8([window, 'optionalAccess', _3 => _3.ethereum, 'optionalAccess', _4 => _4.isTokenPocket])
|
|
731
|
+
)
|
|
732
|
+
};}
|
|
733
|
+
} TokenPocket.__initStatic(); TokenPocket.__initStatic2();
|
|
734
|
+
|
|
735
|
+
function _optionalChain$7(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
736
|
+
class TrustEVM extends WindowEthereum {
|
|
737
|
+
|
|
738
|
+
static __initStatic() {this.info = {
|
|
739
|
+
name: 'Trust Wallet',
|
|
740
|
+
logo: logos.trust,
|
|
741
|
+
blockchains: supported$1.evm,
|
|
742
|
+
platform: 'evm',
|
|
743
|
+
};}
|
|
744
|
+
|
|
745
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
746
|
+
return (
|
|
747
|
+
(_optionalChain$7([window, 'optionalAccess', _5 => _5.ethereum, 'optionalAccess', _6 => _6.isTrust]) || _optionalChain$7([window, 'optionalAccess', _7 => _7.ethereum, 'optionalAccess', _8 => _8.isTrustWallet])) &&
|
|
748
|
+
Object.keys(window.ethereum).filter((key)=>key.match(/^is(?!Connected)(?!Debug)(?!TrustWallet)(?!MetaMask)(?!PocketUniverse)(?!RevokeCash)/)).length == 1
|
|
749
|
+
)
|
|
750
|
+
};}
|
|
751
|
+
} TrustEVM.__initStatic(); TrustEVM.__initStatic2();
|
|
752
|
+
|
|
753
|
+
function _optionalChain$6(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
754
|
+
class Uniswap extends WindowEthereum {
|
|
755
|
+
|
|
756
|
+
static __initStatic() {this.info = {
|
|
757
|
+
name: 'Uniswap',
|
|
758
|
+
logo: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjQxIiBoZWlnaHQ9IjY0MCIgdmlld0JveD0iMCAwIDY0MSA2NDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yMjQuNTM0IDEyMy4yMjZDMjE4LjY5MiAxMjIuMzIgMjE4LjQ0NSAxMjIuMjEzIDIyMS4xOTUgMTIxLjc5MUMyMjYuNDY0IDEyMC45OCAyMzguOTA1IDEyMi4wODUgMjQ3LjQ3OSAxMjQuMTIzQzI2Ny40OTQgMTI4Ljg4MSAyODUuNzA3IDE0MS4wNjkgMzA1LjE0OCAxNjIuNzE0TDMxMC4zMTMgMTY4LjQ2NUwzMTcuNzAxIDE2Ny4yNzdDMzQ4LjgyOCAxNjIuMjc1IDM4MC40OTMgMTY2LjI1IDQwNi45NzggMTc4LjQ4NUM0MTQuMjY0IDE4MS44NTEgNDI1Ljc1MiAxODguNTUyIDQyNy4xODcgMTkwLjI3NEM0MjcuNjQ1IDE5MC44MjIgNDI4LjQ4NSAxOTQuMzU1IDQyOS4wNTMgMTk4LjEyNEM0MzEuMDIgMjExLjE2NCA0MzAuMDM2IDIyMS4xNiA0MjYuMDQ3IDIyOC42MjVDNDIzLjg3NyAyMzIuNjg4IDQyMy43NTYgMjMzLjk3NSA0MjUuMjE1IDIzNy40NTJDNDI2LjM4IDI0MC4yMjcgNDI5LjYyNyAyNDIuMjggNDMyLjg0MyAyNDIuMjc2QzQzOS40MjUgMjQyLjI2NyA0NDYuNTA5IDIzMS42MjcgNDQ5Ljc5MSAyMTYuODIzTDQ1MS4wOTUgMjEwLjk0M0w0NTMuNjc4IDIxMy44NjhDNDY3Ljg0NiAyMjkuOTIgNDc4Ljk3NCAyNTEuODExIDQ4MC44ODUgMjY3LjM5M0w0ODEuMzgzIDI3MS40NTVMNDc5LjAwMiAyNjcuNzYyQzQ3NC45MDMgMjYxLjQwNyA0NzAuNzg1IDI1Ny4wOCA0NjUuNTEyIDI1My41OTFDNDU2LjAwNiAyNDcuMzAxIDQ0NS45NTUgMjQ1LjE2MSA0MTkuMzM3IDI0My43NThDMzk1LjI5NiAyNDIuNDkxIDM4MS42OSAyNDAuNDM4IDM2OC4xOTggMjM2LjAzOEMzNDUuMjQ0IDIyOC41NTQgMzMzLjY3MiAyMTguNTg3IDMwNi40MDUgMTgyLjgxMkMyOTQuMjk0IDE2Ni45MjMgMjg2LjgwOCAxNTguMTMxIDI3OS4zNjIgMTUxLjA1MUMyNjIuNDQyIDEzNC45NjQgMjQ1LjgxNiAxMjYuNTI3IDIyNC41MzQgMTIzLjIyNloiIGZpbGw9IiNGRjAwN0EiLz4KPHBhdGggZD0iTTQzMi42MSAxNTguNzA0QzQzMy4yMTUgMTQ4LjA1NyA0MzQuNjU5IDE0MS4wMzMgNDM3LjU2MiAxMzQuNjJDNDM4LjcxMSAxMzIuMDgxIDQzOS43ODggMTMwLjAwMyA0MzkuOTU0IDEzMC4wMDNDNDQwLjEyIDEzMC4wMDMgNDM5LjYyMSAxMzEuODc3IDQzOC44NDQgMTM0LjE2N0M0MzYuNzMzIDE0MC4zOTIgNDM2LjM4NyAxNDguOTA1IDQzNy44NCAxNTguODExQzQzOS42ODYgMTcxLjM3OSA0NDAuNzM1IDE3My4xOTIgNDU0LjAxOSAxODYuNzY5QzQ2MC4yNSAxOTMuMTM3IDQ2Ny40OTcgMjAxLjE2OCA0NzAuMTI0IDIwNC42MTZMNDc0LjkwMSAyMTAuODg2TDQ3MC4xMjQgMjA2LjQwNUM0NjQuMjgyIDIwMC45MjYgNDUwLjg0NyAxOTAuMjQgNDQ3Ljg3OSAxODguNzEyQzQ0NS44OSAxODcuNjg4IDQ0NS41OTQgMTg3LjcwNSA0NDQuMzY2IDE4OC45MjdDNDQzLjIzNSAxOTAuMDUzIDQ0Mi45OTcgMTkxLjc0NCA0NDIuODQgMTk5Ljc0MUM0NDIuNTk2IDIxMi4yMDQgNDQwLjg5NyAyMjAuMjA0IDQzNi43OTcgMjI4LjIwM0M0MzQuNTggMjMyLjUyOSA0MzQuMjMgMjMxLjYwNiA0MzYuMjM3IDIyNi43MjNDNDM3LjczNSAyMjMuMDc3IDQzNy44ODcgMjIxLjQ3NCA0MzcuODc2IDIwOS40MDhDNDM3Ljg1MyAxODUuMTY3IDQzNC45NzUgMTc5LjMzOSA0MTguMDk3IDE2OS4zNTVDNDEzLjgyMSAxNjYuODI2IDQwNi43NzYgMTYzLjE3OCA0MDIuNDQyIDE2MS4yNDlDMzk4LjEwNyAxNTkuMzIgMzk0LjY2NCAxNTcuNjM5IDM5NC43ODkgMTU3LjUxNEMzOTUuMjY3IDE1Ny4wMzggNDExLjcyNyAxNjEuODQyIDQxOC4zNTIgMTY0LjM5QzQyOC4yMDYgMTY4LjE4MSA0MjkuODMzIDE2OC42NzIgNDMxLjAzIDE2OC4yMTVDNDMxLjgzMiAxNjcuOTA5IDQzMi4yMiAxNjUuNTcyIDQzMi42MSAxNTguNzA0WiIgZmlsbD0iI0ZGMDA3QSIvPgo8cGF0aCBkPSJNMjM1Ljg4MyAyMDAuMTc1QzIyNC4wMjIgMTgzLjg0NiAyMTYuNjg0IDE1OC44MDkgMjE4LjI3MiAxNDAuMDkzTDIxOC43NjQgMTM0LjMwMUwyMjEuNDYzIDEzNC43OTRDMjI2LjUzNCAxMzUuNzE5IDIzNS4yNzUgMTM4Ljk3MyAyMzkuMzY5IDE0MS40NTlDMjUwLjYwMiAxNDguMjgxIDI1NS40NjUgMTU3LjI2MyAyNjAuNDEzIDE4MC4zMjhDMjYxLjg2MiAxODcuMDgzIDI2My43NjMgMTk0LjcyOCAyNjQuNjM4IDE5Ny4zMTdDMjY2LjA0NyAyMDEuNDgzIDI3MS4zNjkgMjExLjIxNCAyNzUuNjk2IDIxNy41MzRDMjc4LjgxMyAyMjIuMDg1IDI3Ni43NDMgMjI0LjI0MiAyNjkuODUzIDIyMy42MkMyNTkuMzMxIDIyMi42NyAyNDUuMDc4IDIxMi44MzQgMjM1Ljg4MyAyMDAuMTc1WiIgZmlsbD0iI0ZGMDA3QSIvPgo8cGF0aCBkPSJNNDE4LjIyMyAzMjEuNzA3QzM2Mi43OTMgMjk5LjM4OSAzNDMuMjcxIDI4MC4wMTcgMzQzLjI3MSAyNDcuMzMxQzM0My4yNzEgMjQyLjUyMSAzNDMuNDM3IDIzOC41ODUgMzQzLjYzOCAyMzguNTg1QzM0My44NCAyMzguNTg1IDM0NS45ODUgMjQwLjE3MyAzNDguNDA0IDI0Mi4xMTNDMzU5LjY0NCAyNTEuMTI4IDM3Mi4yMzEgMjU0Ljk3OSA0MDcuMDc2IDI2MC4wNjJDNDI3LjU4IDI2My4wNTQgNDM5LjExOSAyNjUuNDcgNDQ5Ljc2MyAyNjlDNDgzLjU5NSAyODAuMjIgNTA0LjUyNyAzMDIuOTkgNTA5LjUxOCAzMzQuMDA0QzUxMC45NjkgMzQzLjAxNiA1MTAuMTE4IDM1OS45MTUgNTA3Ljc2NiAzNjguODIyQzUwNS45MSAzNzUuODU3IDUwMC4yNDUgMzg4LjUzNyA0OTguNzQyIDM4OS4wMjNDNDk4LjMyNSAzODkuMTU4IDQ5Ny45MTcgMzg3LjU2MiA0OTcuODEgMzg1LjM4OUM0OTcuMjQgMzczLjc0NCA0OTEuMzU1IDM2Mi40MDYgNDgxLjQ3MiAzNTMuOTEzQzQ3MC4yMzUgMzQ0LjI1NyA0NTUuMTM3IDMzNi41NjkgNDE4LjIyMyAzMjEuNzA3WiIgZmlsbD0iI0ZGMDA3QSIvPgo8cGF0aCBkPSJNMzc5LjMxIDMzMC45NzhDMzc4LjYxNSAzMjYuODQ2IDM3Ny40MTEgMzIxLjU2OCAzNzYuNjMzIDMxOS4yNUwzNzUuMjE5IDMxNS4wMzZMMzc3Ljg0NiAzMTcuOTg1QzM4MS40ODEgMzIyLjA2NSAzODQuMzU0IDMyNy4yODcgMzg2Ljc4OSAzMzQuMjQxQzM4OC42NDcgMzM5LjU0OSAzODguODU2IDM0MS4xMjcgMzg4Ljg0MiAzNDkuNzUzQzM4OC44MjggMzU4LjIyMSAzODguNTk2IDM1OS45OTYgMzg2Ljg4IDM2NC43NzNDMzg0LjE3NCAzNzIuMzA3IDM4MC44MTYgMzc3LjY0OSAzNzUuMTgxIDM4My4zODNDMzY1LjA1NiAzOTMuNjg4IDM1Mi4wMzggMzk5LjM5MyAzMzMuMjUzIDQwMS43NkMzMjkuOTg3IDQwMi4xNzEgMzIwLjQ3IDQwMi44NjQgMzEyLjEwMyA0MDMuMjk5QzI5MS4wMTYgNDA0LjM5NSAyNzcuMTM4IDQwNi42NjEgMjY0LjY2OCA0MTEuMDRDMjYyLjg3NSA0MTEuNjcgMjYxLjI3NCA0MTIuMDUyIDI2MS4xMTIgNDExLjg5QzI2MC42MDcgNDExLjM4OCAyNjkuMDk4IDQwNi4zMjYgMjc2LjExMSA0MDIuOTQ4QzI4NS45OTkgMzk4LjE4NSAyOTUuODQyIDM5NS41ODYgMzE3Ljg5NyAzOTEuOTEzQzMyOC43OTIgMzkwLjA5OCAzNDAuMDQzIDM4Ny44OTcgMzQyLjkgMzg3LjAyMUMzNjkuODggMzc4Ljc0OSAzODMuNzQ4IDM1Ny40MDIgMzc5LjMxIDMzMC45NzhaIiBmaWxsPSIjRkYwMDdBIi8+CjxwYXRoIGQ9Ik00MDQuNzE5IDM3Ni4xMDVDMzk3LjM1NSAzNjAuMjczIDM5NS42NjQgMzQ0Ljk4OCAzOTkuNjk4IDMzMC43MzJDNDAwLjEzIDMyOS4yMDkgNDAwLjgyNCAzMjcuOTYyIDQwMS4yNDIgMzI3Ljk2MkM0MDEuNjU5IDMyNy45NjIgNDAzLjM5NyAzMjguOTAyIDQwNS4xMDMgMzMwLjA1QzQwOC40OTcgMzMyLjMzNSA0MTUuMzAzIDMzNi4xODIgNDMzLjQzNyAzNDYuMDY5QzQ1Ni4wNjUgMzU4LjQwNiA0NjguOTY2IDM2Ny45NTkgNDc3Ljc0IDM3OC44NzNDNDg1LjQyMyAzODguNDMyIDQ5MC4xNzggMzk5LjMxOCA0OTIuNDY3IDQxMi41OTNDNDkzLjc2MiA0MjAuMTEzIDQ5My4wMDMgNDM4LjIwNiA0OTEuMDc0IDQ0NS43NzhDNDg0Ljk5IDQ2OS42NTMgNDcwLjg1IDQ4OC40MDYgNDUwLjY4MiA0OTkuMzQ5QzQ0Ny43MjcgNTAwLjk1MiA0NDUuMDc1IDUwMi4yNjkgNDQ0Ljc4OCA1MDIuMjc1QzQ0NC41MDEgNTAyLjI4IDQ0NS41NzcgNDk5LjU0MyA0NDcuMTggNDk2LjE5MUM0NTMuOTY1IDQ4Mi4wMDkgNDU0LjczNyA0NjguMjE0IDQ0OS42MDggNDUyLjg1OUM0NDYuNDY3IDQ0My40NTcgNDQwLjA2NCA0MzEuOTg1IDQyNy4xMzUgNDEyLjU5NkM0MTIuMTAzIDM5MC4wNTQgNDA4LjQxNyAzODQuMDU0IDQwNC43MTkgMzc2LjEwNVoiIGZpbGw9IiNGRjAwN0EiLz4KPHBhdGggZD0iTTE5Ni41MTkgNDYxLjUyNUMyMTcuMDg5IDQ0NC4xNTcgMjQyLjY4MiA0MzEuODE5IDI2NS45OTYgNDI4LjAzMkMyNzYuMDQzIDQyNi4zOTkgMjkyLjc4IDQyNy4wNDcgMzAyLjA4NCA0MjkuNDI4QzMxNi45OTggNDMzLjI0NSAzMzAuMzM4IDQ0MS43OTMgMzM3LjI3NiA0NTEuOTc4QzM0NC4wNTcgNDYxLjkzMiAzNDYuOTY2IDQ3MC42MDYgMzQ5Ljk5NSA0ODkuOTA2QzM1MS4xODkgNDk3LjUxOSAzNTIuNDg5IDUwNS4xNjQgMzUyLjg4MiA1MDYuODk1QzM1NS4xNTYgNTE2Ljg5NyAzNTkuNTgzIDUyNC44OTIgMzY1LjA2NyA1MjguOTA3QzM3My43NzkgNTM1LjI4MyAzODguNzggNTM1LjY4IDQwMy41MzYgNTI5LjkyNEM0MDYuMDQxIDUyOC45NDcgNDA4LjIxNSA1MjguMjcxIDQwOC4zNjggNTI4LjQyNEM0MDguOTAzIDUyOC45NTUgNDAxLjQ3MyA1MzMuOTMgMzk2LjIzIDUzNi41NDhDMzg5LjE3NyA1NDAuMDcxIDM4My41NjggNTQxLjQzNCAzNzYuMTE1IDU0MS40MzRDMzYyLjYgNTQxLjQzNCAzNTEuMzc5IDUzNC41NTggMzQyLjAxNiA1MjAuNTM5QzM0MC4xNzQgNTE3Ljc4IDMzNi4wMzIgNTA5LjUxNiAzMzIuODEzIDUwMi4xNzZDMzIyLjkyOCA0NzkuNjI4IDMxOC4wNDYgNDcyLjc1OSAzMDYuNTY4IDQ2NS4yNDJDMjk2LjU3OSA0NTguNzAxIDI4My42OTcgNDU3LjUzIDI3NC4wMDYgNDYyLjI4MkMyNjEuMjc2IDQ2OC41MjMgMjU3LjcyNCA0ODQuNzkxIDI2Ni44NDIgNDk1LjEwMUMyNzAuNDY1IDQ5OS4xOTggMjc3LjIyMyA1MDIuNzMyIDI4Mi43NDkgNTAzLjQxOUMyOTMuMDg2IDUwNC43MDUgMzAxLjk3IDQ5Ni44NDEgMzAxLjk3IDQ4Ni40MDRDMzAxLjk3IDQ3OS42MjcgMjk5LjM2NSA0NzUuNzYgMjkyLjgwOCA0NzIuODAxQzI4My44NTIgNDY4Ljc2IDI3NC4yMjYgNDczLjQ4MyAyNzQuMjcyIDQ4MS44OTdDMjc0LjI5MiA0ODUuNDg0IDI3NS44NTQgNDg3LjczNyAyNzkuNDUgNDg5LjM2NEMyODEuNzU3IDQ5MC40MDggMjgxLjgxMSA0OTAuNDkxIDI3OS45MjkgNDkwLjFDMjcxLjcxMiA0ODguMzk2IDI2OS43ODcgNDc4LjQ5IDI3Ni4zOTQgNDcxLjkxM0MyODQuMzI2IDQ2NC4wMTggMzAwLjcyOSA0NjcuNTAyIDMwNi4zNjIgNDc4LjI3OUMzMDguNzI4IDQ4Mi44MDUgMzA5LjAwMyA0OTEuODIgMzA2Ljk0IDQ5Ny4yNjRDMzAyLjMyMiA1MDkuNDQ4IDI4OC44NTkgNTE1Ljg1NSAyNzUuMjAxIDUxMi4zNjhDMjY1LjkwMyA1MDkuOTk0IDI2Mi4xMTcgNTA3LjQyNCAyNTAuOTA2IDQ5NS44NzZDMjMxLjQyNSA0NzUuODA5IDIyMy44NjIgNDcxLjkyIDE5NS43NzcgNDY3LjUzNkwxOTAuMzk1IDQ2Ni42OTZMMTk2LjUxOSA0NjEuNTI1WiIgZmlsbD0iI0ZGMDA3QSIvPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTQ5LjYyMDIgMTIuMDAzMUMxMTQuNjc4IDkwLjk2MzggMjE0Ljk3NyAyMTMuOTAxIDIxOS45NTcgMjIwLjc4NEMyMjQuMDY4IDIyNi40NjcgMjIyLjUyMSAyMzEuNTc2IDIxNS40NzggMjM1LjU4QzIxMS41NjEgMjM3LjgwNyAyMDMuNTA4IDI0MC4wNjMgMTk5LjQ3NiAyNDAuMDYzQzE5NC45MTYgMjQwLjA2MyAxODkuNzc5IDIzNy44NjcgMTg2LjAzOCAyMzQuMzE4QzE4My4zOTMgMjMxLjgxIDE3Mi43MjEgMjE1Ljg3NCAxNDguMDg0IDE3Ny42NDZDMTI5LjIzMyAxNDguMzk2IDExMy40NTcgMTI0LjEzMSAxMTMuMDI3IDEyMy43MjVDMTEyLjAzMiAxMjIuNzg1IDExMi4wNDkgMTIyLjgxNyAxNDYuMTYyIDE4My44NTRDMTY3LjU4MiAyMjIuMTgxIDE3NC44MTMgMjM1LjczMSAxNzQuODEzIDIzNy41NDNDMTc0LjgxMyAyNDEuMjI5IDE3My44MDggMjQzLjE2NiAxNjkuMjYxIDI0OC4yMzhDMTYxLjY4MSAyNTYuNjk0IDE1OC4yOTMgMjY2LjE5NSAxNTUuODQ3IDI4NS44NTlDMTUzLjEwNCAzMDcuOTAyIDE0NS4zOTQgMzIzLjQ3MyAxMjQuMDI2IDM1MC4xMjJDMTExLjUxOCAzNjUuNzIyIDEwOS40NzEgMzY4LjU4MSAxMDYuMzE1IDM3NC44NjlDMTAyLjMzOSAzODIuNzg2IDEwMS4yNDYgMzg3LjIyMSAxMDAuODAzIDM5Ny4yMTlDMTAwLjMzNSA0MDcuNzkgMTAxLjI0NyA0MTQuNjE5IDEwNC40NzcgNDI0LjcyNkMxMDcuMzA0IDQzMy41NzUgMTEwLjI1NSA0MzkuNDE3IDExNy44IDQ1MS4xMDRDMTI0LjMxMSA0NjEuMTg4IDEyOC4wNjEgNDY4LjY4MyAxMjguMDYxIDQ3MS42MTRDMTI4LjA2MSA0NzMuOTQ3IDEyOC41MDYgNDczLjk1IDEzOC41OTYgNDcxLjY3MkMxNjIuNzQxIDQ2Ni4yMTkgMTgyLjM0OCA0NTYuNjI5IDE5My4zNzUgNDQ0Ljg3N0MyMDAuMTk5IDQzNy42MDMgMjAxLjgwMSA0MzMuNTg2IDIwMS44NTMgNDIzLjYxOEMyMDEuODg3IDQxNy4wOTggMjAxLjY1OCA0MTUuNzMzIDE5OS44OTYgNDExLjk4MkMxOTcuMDI3IDQwNS44NzcgMTkxLjgwNCA0MDAuODAxIDE4MC4yOTIgMzkyLjkzMkMxNjUuMjA5IDM4Mi42MjEgMTU4Ljc2NyAzNzQuMzIgMTU2Ljk4NyAzNjIuOTA0QzE1NS41MjcgMzUzLjUzNyAxNTcuMjIxIDM0Ni45MjggMTY1LjU2NSAzMjkuNDRDMTc0LjIwMiAzMTEuMzM4IDE3Ni4zNDIgMzAzLjYyNCAxNzcuNzkgMjg1LjM3OEMxNzguNzI1IDI3My41ODkgMTgwLjAyIDI2OC45NCAxODMuNDA3IDI2NS4yMDlDMTg2LjkzOSAyNjEuMzE3IDE5MC4xMTkgMjYwIDE5OC44NjEgMjU4LjgwNUMyMTMuMTEzIDI1Ni44NTggMjIyLjE4OCAyNTMuMTcxIDIyOS42NDggMjQ2LjI5N0MyMzYuMTE5IDI0MC4zMzQgMjM4LjgyNyAyMzQuNTg4IDIzOS4yNDMgMjI1LjkzOEwyMzkuNTU4IDIxOS4zODJMMjM1Ljk0MiAyMTUuMTY2QzIyMi44NDYgMTk5Ljg5NiA0MC44NSAwIDQwLjA0NCAwQzM5Ljg3MTkgMCA0NC4xODEzIDUuNDAxNzggNDkuNjIwMiAxMi4wMDMxWk0xMzUuNDEyIDQwOS4xOEMxMzguMzczIDQwMy45MzcgMTM2LjggMzk3LjE5NSAxMzEuODQ3IDM5My45MDJDMTI3LjE2NyAzOTAuNzkgMTE5Ljg5NyAzOTIuMjU2IDExOS44OTcgMzk2LjMxMUMxMTkuODk3IDM5Ny41NDggMTIwLjU4MiAzOTguNDQ5IDEyMi4xMjQgMzk5LjI0M0MxMjQuNzIgNDAwLjU3OSAxMjQuOTA5IDQwMi4wODEgMTIyLjg2NiA0MDUuMTUyQzEyMC43OTcgNDA4LjI2MiAxMjAuOTY0IDQxMC45OTYgMTIzLjMzNyA0MTIuODU0QzEyNy4xNjIgNDE1Ljg0OSAxMzIuNTc2IDQxNC4yMDIgMTM1LjQxMiA0MDkuMThaIiBmaWxsPSIjRkYwMDdBIi8+CjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMjQ4LjU1MiAyNjIuMjQ0QzI0MS44NjIgMjY0LjI5OSAyMzUuMzU4IDI3MS4zOSAyMzMuMzQ0IDI3OC44MjZDMjMyLjExNiAyODMuMzYyIDIzMi44MTMgMjkxLjMxOSAyMzQuNjUzIDI5My43NzZDMjM3LjYyNSAyOTcuNzQ1IDI0MC40OTkgMjk4Ljc5MSAyNDguMjgyIDI5OC43MzZDMjYzLjUxOCAyOTguNjMgMjc2Ljc2NCAyOTIuMDk1IDI3OC4zMDQgMjgzLjkyNUMyNzkuNTY3IDI3Ny4yMjkgMjczLjc0OSAyNjcuOTQ4IDI2NS43MzYgMjYzLjg3NEMyNjEuNjAxIDI2MS43NzIgMjUyLjgwNyAyNjAuOTM4IDI0OC41NTIgMjYyLjI0NFpNMjY2LjM2NCAyNzYuMTcyQzI2OC43MTQgMjcyLjgzNCAyNjcuNjg2IDI2OS4yMjUgMjYzLjY5IDI2Ni43ODVDMjU2LjA4IDI2Mi4xMzggMjQ0LjU3MSAyNjUuOTgzIDI0NC41NzEgMjczLjE3M0MyNDQuNTcxIDI3Ni43NTIgMjUwLjU3MiAyODAuNjU2IDI1Ni4wNzQgMjgwLjY1NkMyNTkuNzM1IDI4MC42NTYgMjY0Ljc0NiAyNzguNDczIDI2Ni4zNjQgMjc2LjE3MloiIGZpbGw9IiNGRjAwN0EiLz4KPC9zdmc+Cg==",
|
|
759
|
+
blockchains: supported$1.evm
|
|
760
|
+
};}
|
|
761
|
+
|
|
762
|
+
static __initStatic2() {this.getEip6963Provider = ()=>{
|
|
763
|
+
return window['_eip6963Providers'] ? Object.values(window['_eip6963Providers']).find((provider)=>{
|
|
764
|
+
return _optionalChain$6([provider, 'optionalAccess', _4 => _4.isUniswapWallet])
|
|
765
|
+
}) : undefined
|
|
766
|
+
};}
|
|
767
|
+
|
|
768
|
+
static __initStatic3() {this.isAvailable = async()=>{
|
|
769
|
+
return(
|
|
770
|
+
Uniswap.getEip6963Provider() ||
|
|
771
|
+
_optionalChain$6([window, 'optionalAccess', _5 => _5.ethereum, 'optionalAccess', _6 => _6.isUniswapWallet])
|
|
772
|
+
)
|
|
773
|
+
};}
|
|
774
|
+
|
|
775
|
+
getProvider() {
|
|
776
|
+
return Uniswap.getEip6963Provider() || (_optionalChain$6([window, 'optionalAccess', _7 => _7.ethereum, 'optionalAccess', _8 => _8.isUniswapWallet]) && _optionalChain$6([window, 'optionalAccess', _9 => _9.ethereum]))
|
|
777
|
+
}
|
|
778
|
+
} Uniswap.__initStatic(); Uniswap.__initStatic2(); Uniswap.__initStatic3();
|
|
779
|
+
|
|
780
|
+
const transactionApiBlockchainNames = {
|
|
781
|
+
'ethereum': 'mainnet',
|
|
782
|
+
'bsc': 'bsc',
|
|
783
|
+
'polygon': 'polygon',
|
|
784
|
+
'arbitrum': 'arbitrum',
|
|
785
|
+
'base': 'base',
|
|
786
|
+
'avalanche': 'avalanche',
|
|
787
|
+
'gnosis': 'gnosis-chain',
|
|
788
|
+
'optimism': 'optimism',
|
|
789
|
+
'worldchain': 'optimism',
|
|
790
|
+
};
|
|
791
|
+
|
|
792
|
+
const explorerBlockchainNames = {
|
|
793
|
+
'ethereum': 'eth',
|
|
794
|
+
'bsc': 'bnb',
|
|
795
|
+
'polygon': 'matic',
|
|
796
|
+
'arbitrum': 'arb1',
|
|
797
|
+
'base': 'base',
|
|
798
|
+
'avalanche': 'avax',
|
|
799
|
+
'gnosis': 'gno',
|
|
800
|
+
'optimism': 'oeth',
|
|
801
|
+
'worldchain': 'oeth',
|
|
802
|
+
};
|
|
803
|
+
|
|
804
|
+
class Safe {
|
|
805
|
+
|
|
806
|
+
constructor ({ address, blockchain }) {
|
|
807
|
+
this.address = address;
|
|
808
|
+
this.blockchain = blockchain;
|
|
809
|
+
}
|
|
810
|
+
|
|
811
|
+
async transactionCount() {
|
|
812
|
+
let transactionCount;
|
|
813
|
+
let jsonResult = await fetch(`https://safe-transaction-${transactionApiBlockchainNames[this.blockchain]}.safe.global/api/v1/safes/${this.address}/all-transactions/`)
|
|
814
|
+
.then((response) => response.json())
|
|
815
|
+
.catch((error) => { console.error('Error:', error); });
|
|
816
|
+
if(jsonResult && jsonResult.results && jsonResult.results.length) {
|
|
817
|
+
transactionCount = jsonResult.results[0].nonce + 1;
|
|
818
|
+
} else {
|
|
819
|
+
transactionCount = parseInt((await request({
|
|
820
|
+
blockchain: this.blockchain,
|
|
821
|
+
address: this.address,
|
|
822
|
+
api: [{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],
|
|
823
|
+
method: 'nonce',
|
|
824
|
+
})).toString(), 10);
|
|
825
|
+
}
|
|
826
|
+
return transactionCount
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
async retrieveTransaction({ blockchain, tx }) {
|
|
830
|
+
const provider = await getProvider(blockchain);
|
|
831
|
+
let jsonResult = await fetch(`https://safe-transaction-${transactionApiBlockchainNames[blockchain]}.safe.global/api/v1/multisig-transactions/${tx}/`)
|
|
832
|
+
.then((response) => response.json())
|
|
833
|
+
.catch((error) => { console.error('Error:', error); });
|
|
834
|
+
if(jsonResult && jsonResult.isExecuted && jsonResult.transactionHash) {
|
|
835
|
+
return await provider.getTransaction(jsonResult.transactionHash)
|
|
836
|
+
} else {
|
|
837
|
+
return undefined
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
explorerUrlFor({ transaction }) {
|
|
842
|
+
if(transaction) {
|
|
843
|
+
return `https://app.safe.global/${explorerBlockchainNames[transaction.blockchain]}:${transaction.from}/transactions/tx?id=multisig_${transaction.from}_${transaction.id}`
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
|
|
848
|
+
const isSmartContractWallet = async(blockchain, address)=>{
|
|
849
|
+
const provider = await getProvider(blockchain);
|
|
850
|
+
const code = await provider.getCode(address);
|
|
851
|
+
return (code != '0x')
|
|
852
|
+
};
|
|
853
|
+
|
|
854
|
+
const identifySmartContractWallet = async (blockchain, address)=>{
|
|
855
|
+
let name;
|
|
856
|
+
try {
|
|
857
|
+
name = await request({
|
|
858
|
+
blockchain,
|
|
859
|
+
address,
|
|
860
|
+
api: [{ "constant": true, "inputs": [], "name": "NAME", "outputs": [{ "internalType": "string", "name": "", "type": "string" }], "payable": false, "stateMutability": "view", "type": "function"}],
|
|
861
|
+
method: 'NAME'
|
|
862
|
+
});
|
|
863
|
+
} catch (e) {}
|
|
864
|
+
if(name == 'Default Callback Handler') { return 'Safe' }
|
|
865
|
+
|
|
866
|
+
};
|
|
867
|
+
|
|
868
|
+
const getSmartContractWallet = async(blockchain, address)=> {
|
|
869
|
+
if(!await isSmartContractWallet(blockchain, address)){ return }
|
|
870
|
+
|
|
871
|
+
const type = await identifySmartContractWallet(blockchain, address);
|
|
872
|
+
if(type == 'Safe') {
|
|
873
|
+
return new Safe({ blockchain, address })
|
|
874
|
+
} else if(type == 'Argent') {
|
|
875
|
+
return new Argent({ blockchain, address })
|
|
876
|
+
} else {
|
|
877
|
+
if(smartContractWallet){ throw({ message: 'Unrecognized smart contract wallet not supported!', code: "SMART_CONTRACT_WALLET_NOT_SUPPORTED" }) }
|
|
878
|
+
}
|
|
879
|
+
};
|
|
880
|
+
|
|
881
|
+
function _optionalChain$5(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
882
|
+
|
|
883
|
+
const sendTransaction$1 = async ({ transaction, wallet })=> {
|
|
884
|
+
transaction = new Transaction(transaction);
|
|
885
|
+
await transaction.prepare({ wallet });
|
|
886
|
+
let transactionCount = await request({ blockchain: transaction.blockchain, method: 'transactionCount', address: transaction.from });
|
|
887
|
+
transaction.nonce = transactionCount;
|
|
888
|
+
await submit$1({ transaction, wallet }).then(async (response)=>{
|
|
889
|
+
if(typeof response == 'string') {
|
|
890
|
+
let blockchain = Blockchains[transaction.blockchain];
|
|
891
|
+
transaction.id = response;
|
|
892
|
+
transaction.url = blockchain.explorerUrlFor({ transaction });
|
|
893
|
+
if (transaction.sent) transaction.sent(transaction);
|
|
894
|
+
let sentTransaction = await retrieveTransaction(transaction.id, transaction.blockchain);
|
|
895
|
+
transaction.nonce = sentTransaction.nonce || transactionCount;
|
|
896
|
+
if(!sentTransaction) {
|
|
897
|
+
transaction._failed = true;
|
|
898
|
+
if(transaction.failed) transaction.failed(transaction, 'Error retrieving transaction');
|
|
899
|
+
} else {
|
|
900
|
+
retrieveConfirmedTransaction$1(sentTransaction).then(() => {
|
|
901
|
+
transaction._succeeded = true;
|
|
902
|
+
if (transaction.succeeded) transaction.succeeded(transaction);
|
|
903
|
+
}).catch((error)=>{
|
|
904
|
+
if(error && error.code && error.code == 'TRANSACTION_REPLACED') {
|
|
905
|
+
if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 1) {
|
|
906
|
+
transaction.id = error.replacement.hash;
|
|
907
|
+
transaction._succeeded = true;
|
|
908
|
+
if (transaction.succeeded) transaction.succeeded(transaction);
|
|
909
|
+
} else if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 0) {
|
|
910
|
+
transaction.id = error.replacement.hash;
|
|
911
|
+
transaction._failed = true;
|
|
912
|
+
if(transaction.failed) transaction.failed(transaction, error);
|
|
913
|
+
}
|
|
914
|
+
} else {
|
|
915
|
+
transaction._failed = true;
|
|
916
|
+
if(transaction.failed) transaction.failed(transaction, error);
|
|
917
|
+
}
|
|
918
|
+
});
|
|
919
|
+
}
|
|
920
|
+
} else {
|
|
921
|
+
throw(response)
|
|
922
|
+
}
|
|
923
|
+
});
|
|
924
|
+
return transaction
|
|
925
|
+
};
|
|
926
|
+
|
|
927
|
+
const retrieveConfirmedTransaction$1 = (sentTransaction)=>{
|
|
928
|
+
return new Promise((resolve, reject)=>{
|
|
929
|
+
try {
|
|
930
|
+
sentTransaction.wait(1).then(resolve).catch((error)=>{
|
|
931
|
+
if(
|
|
932
|
+
(error && _optionalChain$5([error, 'optionalAccess', _ => _.stack, 'optionalAccess', _2 => _2.match, 'call', _3 => _3('JSON-RPC error')])) ||
|
|
933
|
+
(error && error.toString().match('undefined'))
|
|
934
|
+
) {
|
|
935
|
+
setTimeout(()=>{
|
|
936
|
+
retrieveConfirmedTransaction$1(sentTransaction)
|
|
937
|
+
.then(resolve)
|
|
938
|
+
.catch(reject);
|
|
939
|
+
}, 500);
|
|
940
|
+
} else {
|
|
941
|
+
reject(error);
|
|
942
|
+
}
|
|
943
|
+
});
|
|
944
|
+
} catch (error) {
|
|
945
|
+
if(
|
|
946
|
+
(error && _optionalChain$5([error, 'optionalAccess', _4 => _4.stack, 'optionalAccess', _5 => _5.match, 'call', _6 => _6('JSON-RPC error')])) ||
|
|
947
|
+
(error && error.toString().match('undefined'))
|
|
948
|
+
) {
|
|
949
|
+
setTimeout(()=>{
|
|
950
|
+
retrieveConfirmedTransaction$1(sentTransaction)
|
|
951
|
+
.then(resolve)
|
|
952
|
+
.catch(reject);
|
|
953
|
+
}, 500);
|
|
954
|
+
} else {
|
|
955
|
+
reject(error);
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
})
|
|
959
|
+
};
|
|
960
|
+
|
|
961
|
+
const retrieveTransaction = (tx, blockchain)=>{
|
|
962
|
+
return new Promise(async(resolve, reject)=>{
|
|
963
|
+
try {
|
|
964
|
+
let sentTransaction;
|
|
965
|
+
const provider = await getProvider(blockchain);
|
|
966
|
+
sentTransaction = await provider.getTransaction(tx);
|
|
967
|
+
const maxRetries = 120;
|
|
968
|
+
let attempt = 1;
|
|
969
|
+
while (attempt <= maxRetries && !sentTransaction) {
|
|
970
|
+
sentTransaction = await provider.getTransaction(tx);
|
|
971
|
+
await (new Promise((resolve)=>setTimeout(resolve, 5000)));
|
|
972
|
+
attempt++;
|
|
973
|
+
}
|
|
974
|
+
resolve(sentTransaction);
|
|
975
|
+
} catch (error) {
|
|
976
|
+
if(
|
|
977
|
+
(error && _optionalChain$5([error, 'optionalAccess', _7 => _7.stack, 'optionalAccess', _8 => _8.match, 'call', _9 => _9('JSON-RPC error')])) ||
|
|
978
|
+
(error && error.toString().match('undefined'))
|
|
979
|
+
) {
|
|
980
|
+
setTimeout(()=>{
|
|
981
|
+
retrieveTransaction(tx, blockchain)
|
|
982
|
+
.then(resolve)
|
|
983
|
+
.catch(reject);
|
|
984
|
+
}, 500);
|
|
985
|
+
} else {
|
|
986
|
+
reject(error);
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
})
|
|
990
|
+
};
|
|
991
|
+
|
|
992
|
+
const submit$1 = ({ transaction, wallet }) => {
|
|
993
|
+
if(transaction.method) {
|
|
994
|
+
return submitContractInteraction$1({ transaction, wallet })
|
|
995
|
+
} else {
|
|
996
|
+
return submitSimpleTransfer$1({ transaction, wallet })
|
|
997
|
+
}
|
|
998
|
+
};
|
|
999
|
+
|
|
1000
|
+
const submitContractInteraction$1 = async ({ transaction, wallet })=>{
|
|
1001
|
+
const provider = await getProvider(transaction.blockchain);
|
|
1002
|
+
const blockchain = Blockchains[transaction.blockchain];
|
|
1003
|
+
let gas;
|
|
1004
|
+
try {
|
|
1005
|
+
gas = await estimate(transaction);
|
|
1006
|
+
gas = gas.add(gas.div(10));
|
|
1007
|
+
} catch (e2) {}
|
|
1008
|
+
const gasPrice = await provider.getGasPrice();
|
|
1009
|
+
return wallet.signClient.request({
|
|
1010
|
+
topic: wallet.session.topic,
|
|
1011
|
+
chainId: `${blockchain.namespace}:${blockchain.networkId}`,
|
|
1012
|
+
request: {
|
|
1013
|
+
method: 'eth_sendTransaction',
|
|
1014
|
+
params: [{
|
|
1015
|
+
from: transaction.from,
|
|
1016
|
+
to: transaction.to,
|
|
1017
|
+
value: transaction.value ? ethers.BigNumber.from(transaction.value.toString()).toHexString() : undefined,
|
|
1018
|
+
data: await transaction.getData(),
|
|
1019
|
+
gas: _optionalChain$5([gas, 'optionalAccess', _10 => _10.toHexString, 'call', _11 => _11()]),
|
|
1020
|
+
gasLimit: _optionalChain$5([gas, 'optionalAccess', _12 => _12.toHexString, 'call', _13 => _13()]),
|
|
1021
|
+
gasPrice: gasPrice.toHexString(),
|
|
1022
|
+
nonce: ethers.utils.hexlify(transaction.nonce),
|
|
1023
|
+
}]
|
|
1024
|
+
}
|
|
1025
|
+
}).catch((e)=>{console.log('ERROR', e);})
|
|
1026
|
+
};
|
|
1027
|
+
|
|
1028
|
+
const submitSimpleTransfer$1 = async ({ transaction, wallet })=>{
|
|
1029
|
+
const provider = await getProvider(transaction.blockchain);
|
|
1030
|
+
let blockchain = Blockchains[transaction.blockchain];
|
|
1031
|
+
let gas;
|
|
1032
|
+
try {
|
|
1033
|
+
gas = await estimate(transaction);
|
|
1034
|
+
gas = gas.add(gas.div(10));
|
|
1035
|
+
} catch (e3) {}
|
|
1036
|
+
const gasPrice = await provider.getGasPrice();
|
|
1037
|
+
return wallet.signClient.request({
|
|
1038
|
+
topic: wallet.session.topic,
|
|
1039
|
+
chainId: `${blockchain.namespace}:${blockchain.networkId}`,
|
|
1040
|
+
request: {
|
|
1041
|
+
method: 'eth_sendTransaction',
|
|
1042
|
+
params: [{
|
|
1043
|
+
from: transaction.from,
|
|
1044
|
+
to: transaction.to,
|
|
1045
|
+
value: transaction.value ? ethers.BigNumber.from(transaction.value.toString()).toHexString() : undefined,
|
|
1046
|
+
data: '0x0',
|
|
1047
|
+
gas: _optionalChain$5([gas, 'optionalAccess', _14 => _14.toHexString, 'call', _15 => _15()]),
|
|
1048
|
+
gasLimit: _optionalChain$5([gas, 'optionalAccess', _16 => _16.toHexString, 'call', _17 => _17()]),
|
|
1049
|
+
gasPrice: _optionalChain$5([gasPrice, 'optionalAccess', _18 => _18.toHexString, 'call', _19 => _19()]),
|
|
1050
|
+
nonce: ethers.utils.hexlify(transaction.nonce)
|
|
1051
|
+
}]
|
|
1052
|
+
}
|
|
1053
|
+
}).catch((e)=>{console.log('ERROR', e);})
|
|
1054
|
+
};
|
|
1055
|
+
|
|
1056
|
+
function _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1057
|
+
|
|
1058
|
+
const KEY = 'depay:wallets:wc2';
|
|
1059
|
+
|
|
1060
|
+
const DEFAULT_CONFIGURATION = {
|
|
1061
|
+
events: ['accountsChanged'],
|
|
1062
|
+
methods: [
|
|
1063
|
+
"eth_sendTransaction",
|
|
1064
|
+
"personal_sign",
|
|
1065
|
+
"eth_signTypedData",
|
|
1066
|
+
"eth_signTypedData_v4",
|
|
1067
|
+
]
|
|
1068
|
+
};
|
|
1069
|
+
|
|
1070
|
+
const getConnectedInstance$1 = async()=>{
|
|
1071
|
+
if(await WalletConnectV2.isAvailable()) { return new WalletConnectV2() }
|
|
1072
|
+
};
|
|
1073
|
+
|
|
1074
|
+
const getLastSession = async(walletName)=>{
|
|
1075
|
+
if(!localStorage[KEY+":projectId"]) { return }
|
|
1076
|
+
if(walletName !== localStorage[KEY+":lastSessionWalletName"]) { return }
|
|
1077
|
+
let signClient = await getSignClient();
|
|
1078
|
+
let existingSessions;
|
|
1079
|
+
try { existingSessions = signClient.find(getWalletConnectV2Config(walletName)); } catch (e) {}
|
|
1080
|
+
const lastSession = existingSessions ? existingSessions[existingSessions.length-1] : undefined;
|
|
1081
|
+
if(lastSession && localStorage[KEY+":lastExpiredSessionTopic"] !== lastSession.topic && lastSession.expiry > Math.ceil(Date.now()/1000)) {
|
|
1082
|
+
const result = await Promise.race([signClient.ping({ topic: lastSession.topic }), new Promise((resolve)=>setTimeout(resolve, 1500))]);
|
|
1083
|
+
if(result) {
|
|
1084
|
+
return lastSession
|
|
1085
|
+
} else {
|
|
1086
|
+
localStorage[KEY+":lastExpiredSessionTopic"] = lastSession.topic;
|
|
1087
|
+
return
|
|
1088
|
+
}
|
|
1089
|
+
}
|
|
1090
|
+
};
|
|
1091
|
+
|
|
1092
|
+
const getWalletConnectV2Config = (walletName)=>{
|
|
1093
|
+
const methods = DEFAULT_CONFIGURATION.methods;
|
|
1094
|
+
const events = DEFAULT_CONFIGURATION.events;
|
|
1095
|
+
|
|
1096
|
+
let requiredNamespaces = {};
|
|
1097
|
+
requiredNamespaces['eip155'] = {
|
|
1098
|
+
chains: [`eip155:1`],
|
|
1099
|
+
};
|
|
1100
|
+
if(requiredNamespaces['eip155']) {
|
|
1101
|
+
requiredNamespaces['eip155'].methods = methods;
|
|
1102
|
+
requiredNamespaces['eip155'].events = events;
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
let optionalNamespaces = {};
|
|
1106
|
+
optionalNamespaces['eip155'] = {
|
|
1107
|
+
chains: supported$1.evm.map((blockchain)=>`${Blockchains[blockchain].namespace}:${Blockchains[blockchain].networkId}`),
|
|
1108
|
+
};
|
|
1109
|
+
if(_optionalChain$4([optionalNamespaces, 'optionalAccess', _ => _.eip155]) && _optionalChain$4([optionalNamespaces, 'optionalAccess', _2 => _2.eip155, 'optionalAccess', _3 => _3.chains, 'optionalAccess', _4 => _4.length])) {
|
|
1110
|
+
optionalNamespaces['eip155'].methods = methods;
|
|
1111
|
+
optionalNamespaces['eip155'].events = events;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
return { requiredNamespaces, optionalNamespaces }
|
|
1115
|
+
};
|
|
1116
|
+
|
|
1117
|
+
const getSignClient = ()=>{
|
|
1118
|
+
if(window.getSignClientPromise) { return window.getSignClientPromise }
|
|
1119
|
+
window.getSignClientPromise = new Promise(async(resolve)=>{
|
|
1120
|
+
const signClient = await SignClient.init({
|
|
1121
|
+
projectId: localStorage[KEY+":projectId"],
|
|
1122
|
+
metadata: {
|
|
1123
|
+
name: document.title || 'dApp',
|
|
1124
|
+
description: _optionalChain$4([document, 'access', _5 => _5.querySelector, 'call', _6 => _6('meta[name="description"]'), 'optionalAccess', _7 => _7.getAttribute, 'call', _8 => _8('content')]) || document.title || 'dApp',
|
|
1125
|
+
url: location.href,
|
|
1126
|
+
icons: [_optionalChain$4([document, 'access', _9 => _9.querySelector, 'call', _10 => _10("link[rel~='icon'], link[rel~='shortcut icon']"), 'optionalAccess', _11 => _11.href]) || `${location.origin}/favicon.ico`]
|
|
1127
|
+
}
|
|
1128
|
+
});
|
|
1129
|
+
resolve(signClient);
|
|
1130
|
+
});
|
|
1131
|
+
|
|
1132
|
+
return window.getSignClientPromise
|
|
1133
|
+
};
|
|
1134
|
+
|
|
1135
|
+
class WalletConnectV2 {
|
|
1136
|
+
|
|
1137
|
+
static __initStatic() {this.info = {
|
|
1138
|
+
name: 'WalletConnect V2',
|
|
1139
|
+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz48IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMjUuNC4xLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAtLT48c3ZnIHZlcnNpb249JzEuMScgaWQ9J0xheWVyXzEnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgeG1sbnM6eGxpbms9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsnIHg9JzBweCcgeT0nMHB4JyB2aWV3Qm94PScwIDAgNTAwIDUwMCcgc3R5bGU9J2VuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTAwIDUwMDsnIHhtbDpzcGFjZT0ncHJlc2VydmUnPjxzdHlsZSB0eXBlPSd0ZXh0L2Nzcyc+IC5zdDB7ZmlsbDojNTk5MUNEO30KPC9zdHlsZT48ZyBpZD0nUGFnZS0xJz48ZyBpZD0nd2FsbGV0Y29ubmVjdC1sb2dvLWFsdCc+PHBhdGggaWQ9J1dhbGxldENvbm5lY3QnIGNsYXNzPSdzdDAnIGQ9J00xMDIuNywxNjJjODEuNS03OS44LDIxMy42LTc5LjgsMjk1LjEsMGw5LjgsOS42YzQuMSw0LDQuMSwxMC41LDAsMTQuNEwzNzQsMjE4LjkgYy0yLDItNS4zLDItNy40LDBsLTEzLjUtMTMuMmMtNTYuOC01NS43LTE0OS01NS43LTIwNS44LDBsLTE0LjUsMTQuMWMtMiwyLTUuMywyLTcuNCwwTDkxLjksMTg3Yy00LjEtNC00LjEtMTAuNSwwLTE0LjQgTDEwMi43LDE2MnogTTQ2Ny4xLDIyOS45bDI5LjksMjkuMmM0LjEsNCw0LjEsMTAuNSwwLDE0LjRMMzYyLjMsNDA1LjRjLTQuMSw0LTEwLjcsNC0xNC44LDBjMCwwLDAsMCwwLDBMMjUyLDMxMS45IGMtMS0xLTIuNy0xLTMuNywwaDBsLTk1LjUsOTMuNWMtNC4xLDQtMTAuNyw0LTE0LjgsMGMwLDAsMCwwLDAsMEwzLjQsMjczLjZjLTQuMS00LTQuMS0xMC41LDAtMTQuNGwyOS45LTI5LjIgYzQuMS00LDEwLjctNCwxNC44LDBsOTUuNSw5My41YzEsMSwyLjcsMSwzLjcsMGMwLDAsMCwwLDAsMGw5NS41LTkzLjVjNC4xLTQsMTAuNy00LDE0LjgsMGMwLDAsMCwwLDAsMGw5NS41LDkzLjUgYzEsMSwyLjcsMSwzLjcsMGw5NS41LTkzLjVDNDU2LjQsMjI1LjksNDYzLDIyNS45LDQ2Ny4xLDIyOS45eicvPjwvZz48L2c+PC9zdmc+Cg==",
|
|
1140
|
+
blockchains: supported$1.evm
|
|
1141
|
+
};}
|
|
1142
|
+
|
|
1143
|
+
static __initStatic2() {this.isAvailable = async(options)=>{
|
|
1144
|
+
return !! await getLastSession(_optionalChain$4([options, 'optionalAccess', _13 => _13.walletName]))
|
|
1145
|
+
};}
|
|
1146
|
+
|
|
1147
|
+
constructor() {
|
|
1148
|
+
this.name = (localStorage[KEY+':name'] && localStorage[KEY+':name'] != undefined) ? localStorage[KEY+':name'] : this.constructor.info.name;
|
|
1149
|
+
this.logo = (localStorage[KEY+':logo'] && localStorage[KEY+':logo'] != undefined) ? localStorage[KEY+':logo'] : this.constructor.info.logo;
|
|
1150
|
+
this.sendTransaction = (transaction)=>{
|
|
1151
|
+
return sendTransaction$1({
|
|
1152
|
+
wallet: this,
|
|
1153
|
+
transaction
|
|
1154
|
+
})
|
|
1155
|
+
};
|
|
1156
|
+
}
|
|
1157
|
+
|
|
1158
|
+
async account() {
|
|
1159
|
+
if(_optionalChain$4([this, 'access', _14 => _14.session, 'optionalAccess', _15 => _15.namespaces, 'optionalAccess', _16 => _16.eip155, 'optionalAccess', _17 => _17.accounts, 'optionalAccess', _18 => _18.length])) {
|
|
1160
|
+
return this.session.namespaces.eip155.accounts[0].split(':')[2]
|
|
1161
|
+
}
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
async setSessionBlockchains() {
|
|
1165
|
+
if(!this.session || (!_optionalChain$4([this, 'access', _19 => _19.session, 'optionalAccess', _20 => _20.namespaces, 'optionalAccess', _21 => _21.eip155]) && !_optionalChain$4([this, 'access', _22 => _22.session, 'optionalAccess', _23 => _23.optionalNamespaces, 'optionalAccess', _24 => _24.eip155]))) { return }
|
|
1166
|
+
if(this.session.namespaces.eip155.chains) {
|
|
1167
|
+
this.blockchains = this.session.namespaces.eip155.chains.map((chainIdentifier)=>_optionalChain$4([Blockchains, 'access', _25 => _25.findByNetworkId, 'call', _26 => _26(chainIdentifier.split(':')[1]), 'optionalAccess', _27 => _27.name])).filter(Boolean);
|
|
1168
|
+
} else if(this.session.namespaces.eip155.accounts) {
|
|
1169
|
+
this.blockchains = this.session.namespaces.eip155.accounts.map((accountIdentifier)=>_optionalChain$4([Blockchains, 'access', _28 => _28.findByNetworkId, 'call', _29 => _29(accountIdentifier.split(':')[1]), 'optionalAccess', _30 => _30.name])).filter(Boolean);
|
|
1170
|
+
}
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
async connect(options) {
|
|
1174
|
+
|
|
1175
|
+
let connect = (options && options.connect) ? options.connect : ({uri})=>{};
|
|
1176
|
+
|
|
1177
|
+
try {
|
|
1178
|
+
|
|
1179
|
+
this.walletName = _optionalChain$4([options, 'optionalAccess', _31 => _31.name]);
|
|
1180
|
+
|
|
1181
|
+
// delete localStorage[`wc@2:client:0.3//session`] // DELETE WC SESSIONS
|
|
1182
|
+
this.signClient = await getSignClient();
|
|
1183
|
+
|
|
1184
|
+
this.signClient.on("session_delete", (session)=> {
|
|
1185
|
+
if(_optionalChain$4([session, 'optionalAccess', _32 => _32.topic]) === _optionalChain$4([this, 'access', _33 => _33.session, 'optionalAccess', _34 => _34.topic])) {
|
|
1186
|
+
localStorage[KEY+':name'] = undefined;
|
|
1187
|
+
localStorage[KEY+':logo'] = undefined;
|
|
1188
|
+
this.signClient = undefined;
|
|
1189
|
+
this.session = undefined;
|
|
1190
|
+
}
|
|
1191
|
+
});
|
|
1192
|
+
|
|
1193
|
+
this.signClient.on("session_update", async(session)=> {
|
|
1194
|
+
if(_optionalChain$4([session, 'optionalAccess', _35 => _35.topic]) === _optionalChain$4([this, 'access', _36 => _36.session, 'optionalAccess', _37 => _37.topic])) {
|
|
1195
|
+
this.session = this.signClient.session.get(session.topic);
|
|
1196
|
+
await this.setSessionBlockchains();
|
|
1197
|
+
}
|
|
1198
|
+
});
|
|
1199
|
+
|
|
1200
|
+
this.signClient.on("session_event", (event)=> {
|
|
1201
|
+
if(_optionalChain$4([event, 'optionalAccess', _38 => _38.topic]) === _optionalChain$4([this, 'access', _39 => _39.session, 'optionalAccess', _40 => _40.topic])) {}
|
|
1202
|
+
});
|
|
1203
|
+
|
|
1204
|
+
const connectWallet = async()=>{
|
|
1205
|
+
const { uri, approval } = await this.signClient.connect(getWalletConnectV2Config(this.walletName));
|
|
1206
|
+
await connect({ uri });
|
|
1207
|
+
this.session = await approval();
|
|
1208
|
+
localStorage[KEY+":lastSessionWalletName"] = this.walletName;
|
|
1209
|
+
await new Promise(resolve=>setTimeout(resolve, 500)); // to prevent race condition within WalletConnect
|
|
1210
|
+
};
|
|
1211
|
+
|
|
1212
|
+
const lastSession = _optionalChain$4([this, 'optionalAccess', _41 => _41.walletName, 'optionalAccess', _42 => _42.length]) ? await getLastSession(this.walletName) : undefined;
|
|
1213
|
+
if(lastSession) {
|
|
1214
|
+
this.session = lastSession;
|
|
1215
|
+
} else {
|
|
1216
|
+
await connectWallet();
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
let meta = _optionalChain$4([this, 'access', _43 => _43.session, 'optionalAccess', _44 => _44.peer, 'optionalAccess', _45 => _45.metadata]);
|
|
1220
|
+
if(meta && meta.name) {
|
|
1221
|
+
this.name = meta.name;
|
|
1222
|
+
localStorage[KEY+':name'] = meta.name;
|
|
1223
|
+
if(_optionalChain$4([meta, 'optionalAccess', _46 => _46.icons]) && meta.icons.length) {
|
|
1224
|
+
this.logo = meta.icons[0];
|
|
1225
|
+
localStorage[KEY+':logo'] = this.logo;
|
|
1226
|
+
}
|
|
1227
|
+
}
|
|
1228
|
+
if(_optionalChain$4([options, 'optionalAccess', _47 => _47.name])) { localStorage[KEY+':name'] = this.name = options.name; }
|
|
1229
|
+
if(_optionalChain$4([options, 'optionalAccess', _48 => _48.logo])) { localStorage[KEY+':logo'] = this.logo = options.logo; }
|
|
1230
|
+
|
|
1231
|
+
await this.setSessionBlockchains();
|
|
1232
|
+
|
|
1233
|
+
return await this.account()
|
|
1234
|
+
|
|
1235
|
+
} catch (error) {
|
|
1236
|
+
console.log('WALLETCONNECT ERROR', error);
|
|
1237
|
+
}
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
async connectedTo(input) {
|
|
1241
|
+
if(input) {
|
|
1242
|
+
return this.blockchains.indexOf(input) > -1
|
|
1243
|
+
} else {
|
|
1244
|
+
return this.blockchains
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
|
|
1248
|
+
getValidChainId() {
|
|
1249
|
+
return `eip155:${Blockchains[this.blockchains[0]].networkId}`
|
|
1250
|
+
}
|
|
1251
|
+
|
|
1252
|
+
switchTo(blockchainName) {
|
|
1253
|
+
return new Promise((resolve, reject)=>{
|
|
1254
|
+
reject({ code: 'NOT_SUPPORTED' });
|
|
1255
|
+
})
|
|
1256
|
+
}
|
|
1257
|
+
|
|
1258
|
+
addNetwork(blockchainName) {
|
|
1259
|
+
return new Promise((resolve, reject)=>{
|
|
1260
|
+
reject({ code: 'NOT_SUPPORTED' });
|
|
1261
|
+
})
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
on(event, callback) {
|
|
1265
|
+
let internalCallback;
|
|
1266
|
+
switch (event) {
|
|
1267
|
+
case 'account':
|
|
1268
|
+
internalCallback = async(event)=> {
|
|
1269
|
+
if(_optionalChain$4([event, 'optionalAccess', _49 => _49.topic]) === _optionalChain$4([this, 'access', _50 => _50.session, 'optionalAccess', _51 => _51.topic]) && event.params.event.name === 'accountsChanged') {
|
|
1270
|
+
callback(await this.account());
|
|
1271
|
+
}
|
|
1272
|
+
};
|
|
1273
|
+
this.signClient.on("session_event", internalCallback);
|
|
1274
|
+
break
|
|
1275
|
+
}
|
|
1276
|
+
return internalCallback
|
|
1277
|
+
}
|
|
1278
|
+
|
|
1279
|
+
off(event, callback) {
|
|
1280
|
+
switch (event) {
|
|
1281
|
+
case 'account':
|
|
1282
|
+
this.signClient.off("session_event", callback);
|
|
1283
|
+
break
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
|
|
1287
|
+
async transactionCount({ blockchain, address }) {
|
|
1288
|
+
const smartContractWallet = await getSmartContractWallet(blockchain, address);
|
|
1289
|
+
if(smartContractWallet) {
|
|
1290
|
+
return await smartContractWallet.transactionCount()
|
|
1291
|
+
} else {
|
|
1292
|
+
return await request({ blockchain, method: 'transactionCount', address })
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
async sign(message) {
|
|
1297
|
+
if(typeof message === 'object') {
|
|
1298
|
+
let account = await this.account();
|
|
1299
|
+
let signature = await this.signClient.request({
|
|
1300
|
+
topic: this.session.topic,
|
|
1301
|
+
chainId: this.getValidChainId(),
|
|
1302
|
+
request:{
|
|
1303
|
+
method: 'eth_signTypedData_v4',
|
|
1304
|
+
params: [account, JSON.stringify(message)],
|
|
1305
|
+
}
|
|
1306
|
+
});
|
|
1307
|
+
return signature
|
|
1308
|
+
} else if (typeof message === 'string') {
|
|
1309
|
+
const address = await this.account();
|
|
1310
|
+
const params = [ethers.utils.hexlify(ethers.utils.toUtf8Bytes(message)), address];
|
|
1311
|
+
let signature = await this.signClient.request({
|
|
1312
|
+
topic: this.session.topic,
|
|
1313
|
+
chainId: this.getValidChainId(),
|
|
1314
|
+
request:{
|
|
1315
|
+
method: 'personal_sign',
|
|
1316
|
+
params
|
|
1317
|
+
}
|
|
1318
|
+
});
|
|
1319
|
+
if(typeof signature == 'object') {
|
|
1320
|
+
signature = ethers.utils.hexlify(signature);
|
|
1321
|
+
}
|
|
1322
|
+
return signature
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
} WalletConnectV2.__initStatic(); WalletConnectV2.__initStatic2();
|
|
1326
|
+
|
|
1327
|
+
WalletConnectV2.getConnectedInstance = getConnectedInstance$1;
|
|
1328
|
+
|
|
1329
|
+
function _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1330
|
+
const sendTransaction = async ({ transaction, wallet })=> {
|
|
1331
|
+
transaction = new Transaction(transaction);
|
|
1332
|
+
if((await wallet.connectedTo(transaction.blockchain)) == false) {
|
|
1333
|
+
await wallet.switchTo(transaction.blockchain);
|
|
1334
|
+
}
|
|
1335
|
+
if((await wallet.connectedTo(transaction.blockchain)) == false) {
|
|
1336
|
+
throw({ code: 'WRONG_NETWORK' })
|
|
1337
|
+
}
|
|
1338
|
+
await transaction.prepare({ wallet });
|
|
1339
|
+
let provider = new ethers.providers.Web3Provider(wallet.connector, 'any');
|
|
1340
|
+
let signer = provider.getSigner(0);
|
|
1341
|
+
await submit({ transaction, provider, signer }).then((sentTransaction)=>{
|
|
1342
|
+
if (sentTransaction) {
|
|
1343
|
+
transaction.id = sentTransaction.hash;
|
|
1344
|
+
transaction.nonce = sentTransaction.nonce;
|
|
1345
|
+
transaction.url = Blockchains.findByName(transaction.blockchain).explorerUrlFor({ transaction });
|
|
1346
|
+
if (transaction.sent) transaction.sent(transaction);
|
|
1347
|
+
retrieveConfirmedTransaction(sentTransaction).then(() => {
|
|
1348
|
+
transaction._succeeded = true;
|
|
1349
|
+
if (transaction.succeeded) transaction.succeeded(transaction);
|
|
1350
|
+
}).catch((error)=>{
|
|
1351
|
+
if(error && error.code && error.code == 'TRANSACTION_REPLACED') {
|
|
1352
|
+
if(error.replacement && error.replacement.hash) {
|
|
1353
|
+
transaction.id = error.replacement.hash;
|
|
1354
|
+
transaction.url = Blockchains.findByName(transaction.blockchain).explorerUrlFor({ transaction });
|
|
1355
|
+
}
|
|
1356
|
+
if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 1) {
|
|
1357
|
+
transaction._succeeded = true;
|
|
1358
|
+
if (transaction.succeeded) transaction.succeeded(transaction);
|
|
1359
|
+
} else if(error.replacement && error.replacement.hash && error.receipt && error.receipt.status == 0) {
|
|
1360
|
+
transaction._failed = true;
|
|
1361
|
+
if(transaction.failed) transaction.failed(transaction, error);
|
|
1362
|
+
}
|
|
1363
|
+
} else {
|
|
1364
|
+
transaction._failed = true;
|
|
1365
|
+
if(transaction.failed) transaction.failed(transaction, error);
|
|
1366
|
+
}
|
|
1367
|
+
});
|
|
1368
|
+
} else {
|
|
1369
|
+
throw('Submitting transaction failed!')
|
|
1370
|
+
}
|
|
1371
|
+
});
|
|
1372
|
+
return transaction
|
|
1373
|
+
};
|
|
1374
|
+
|
|
1375
|
+
const retrieveConfirmedTransaction = (sentTransaction)=>{
|
|
1376
|
+
return new Promise((resolve, reject)=>{
|
|
1377
|
+
try {
|
|
1378
|
+
|
|
1379
|
+
sentTransaction.wait(1).then(resolve).catch((error)=>{
|
|
1380
|
+
if(
|
|
1381
|
+
(error && _optionalChain$3([error, 'optionalAccess', _ => _.stack, 'optionalAccess', _2 => _2.match, 'call', _3 => _3('JSON-RPC error')])) ||
|
|
1382
|
+
(error && error.toString().match('undefined'))
|
|
1383
|
+
) {
|
|
1384
|
+
setTimeout(()=>{
|
|
1385
|
+
retrieveConfirmedTransaction(sentTransaction)
|
|
1386
|
+
.then(resolve)
|
|
1387
|
+
.catch(reject);
|
|
1388
|
+
}, 500);
|
|
1389
|
+
} else {
|
|
1390
|
+
reject(error);
|
|
1391
|
+
}
|
|
1392
|
+
});
|
|
1393
|
+
} catch(error) {
|
|
1394
|
+
if(
|
|
1395
|
+
(error && _optionalChain$3([error, 'optionalAccess', _4 => _4.stack, 'optionalAccess', _5 => _5.match, 'call', _6 => _6('JSON-RPC error')])) ||
|
|
1396
|
+
(error && error.toString().match('undefined'))
|
|
1397
|
+
) {
|
|
1398
|
+
setTimeout(()=>{
|
|
1399
|
+
retrieveConfirmedTransaction(sentTransaction)
|
|
1400
|
+
.then(resolve)
|
|
1401
|
+
.catch(reject);
|
|
1402
|
+
}, 500);
|
|
1403
|
+
} else {
|
|
1404
|
+
reject(error);
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
})
|
|
1408
|
+
};
|
|
1409
|
+
|
|
1410
|
+
const submit = ({ transaction, provider, signer }) => {
|
|
1411
|
+
if(transaction.method) {
|
|
1412
|
+
return submitContractInteraction({ transaction, signer, provider })
|
|
1413
|
+
} else {
|
|
1414
|
+
return submitSimpleTransfer({ transaction, signer })
|
|
1415
|
+
}
|
|
1416
|
+
};
|
|
1417
|
+
|
|
1418
|
+
const submitContractInteraction = ({ transaction, signer, provider })=>{
|
|
1419
|
+
let contract = new ethers.Contract(transaction.to, transaction.api, provider);
|
|
1420
|
+
let contractArguments = transaction.getContractArguments({ contract });
|
|
1421
|
+
let method = contract.connect(signer)[transaction.getMethodNameWithSignature()];
|
|
1422
|
+
if(contractArguments) {
|
|
1423
|
+
return method(...contractArguments, {
|
|
1424
|
+
value: Transaction.bigNumberify(transaction.value, transaction.blockchain)
|
|
1425
|
+
})
|
|
1426
|
+
} else {
|
|
1427
|
+
return method({
|
|
1428
|
+
value: Transaction.bigNumberify(transaction.value, transaction.blockchain)
|
|
1429
|
+
})
|
|
1430
|
+
}
|
|
1431
|
+
};
|
|
1432
|
+
|
|
1433
|
+
const submitSimpleTransfer = ({ transaction, signer })=>{
|
|
1434
|
+
return signer.sendTransaction({
|
|
1435
|
+
to: transaction.to,
|
|
1436
|
+
value: Transaction.bigNumberify(transaction.value, transaction.blockchain)
|
|
1437
|
+
})
|
|
1438
|
+
};
|
|
1439
|
+
|
|
1440
|
+
function _optionalChain$2(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1441
|
+
|
|
1442
|
+
const getConnectedInstance = ()=>{
|
|
1443
|
+
return window._connectedWalletLinkInstance
|
|
1444
|
+
};
|
|
1445
|
+
|
|
1446
|
+
const setConnectedInstance = (value)=>{
|
|
1447
|
+
window._connectedWalletLinkInstance = value;
|
|
1448
|
+
};
|
|
1449
|
+
|
|
1450
|
+
class WalletLink {
|
|
1451
|
+
|
|
1452
|
+
static __initStatic() {this.info = {
|
|
1453
|
+
name: 'Coinbase',
|
|
1454
|
+
logo: logos.coinbase,
|
|
1455
|
+
blockchains: supported$1.evm
|
|
1456
|
+
};}
|
|
1457
|
+
|
|
1458
|
+
static __initStatic2() {this.isAvailable = async()=>{ return getConnectedInstance() != undefined };}
|
|
1459
|
+
|
|
1460
|
+
constructor() {
|
|
1461
|
+
this.name = this.constructor.info.name;
|
|
1462
|
+
this.logo = this.constructor.info.logo;
|
|
1463
|
+
this.blockchains = this.constructor.info.blockchains;
|
|
1464
|
+
// RESET WalletLink (do not recover connections!)
|
|
1465
|
+
Object.keys(localStorage).forEach((key)=>{
|
|
1466
|
+
if(key.match("-walletlink:https://www.walletlink.org")) {
|
|
1467
|
+
delete localStorage[key];
|
|
1468
|
+
}
|
|
1469
|
+
});
|
|
1470
|
+
this.connector = WalletLink.instance || this.newWalletLinkInstance();
|
|
1471
|
+
this.sendTransaction = (transaction)=>{
|
|
1472
|
+
return sendTransaction({
|
|
1473
|
+
wallet: this,
|
|
1474
|
+
transaction
|
|
1475
|
+
})
|
|
1476
|
+
};
|
|
1477
|
+
}
|
|
1478
|
+
|
|
1479
|
+
newWalletLinkInstance() {
|
|
1480
|
+
let instance = new CoinbaseWalletSDK({}).makeWeb3Provider();
|
|
1481
|
+
return instance
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1484
|
+
async account() {
|
|
1485
|
+
if(this.connectedAccounts == undefined) { return }
|
|
1486
|
+
return ethers.utils.getAddress(this.connectedAccounts[0])
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
async connect(options) {
|
|
1490
|
+
|
|
1491
|
+
let connect = (options && options.connect) ? options.connect : ({uri})=>{};
|
|
1492
|
+
await connect({ uri: this.connector.qrUrl });
|
|
1493
|
+
|
|
1494
|
+
_optionalChain$2([document, 'access', _ => _.querySelector, 'call', _2 => _2('.-cbwsdk-css-reset'), 'optionalAccess', _3 => _3.setAttribute, 'call', _4 => _4('style', 'display: none;')]);
|
|
1495
|
+
_optionalChain$2([document, 'access', _5 => _5.querySelector, 'call', _6 => _6('.-cbwsdk-extension-dialog-container'), 'optionalAccess', _7 => _7.setAttribute, 'call', _8 => _8('style', 'display: none;')]);
|
|
1496
|
+
setTimeout(()=>{
|
|
1497
|
+
if(_optionalChain$2([this, 'optionalAccess', _9 => _9.connector, 'optionalAccess', _10 => _10._relay, 'optionalAccess', _11 => _11.ui, 'optionalAccess', _12 => _12.linkFlow, 'optionalAccess', _13 => _13.isOpen])){
|
|
1498
|
+
this.connector._relay.ui.linkFlow.isOpen = false;
|
|
1499
|
+
}
|
|
1500
|
+
}, 10);
|
|
1501
|
+
|
|
1502
|
+
let relay = await this.connector._relayProvider();
|
|
1503
|
+
relay.setConnectDisabled(false);
|
|
1504
|
+
|
|
1505
|
+
let accounts = await this.connector.enable();
|
|
1506
|
+
if(accounts instanceof Array && accounts.length) {
|
|
1507
|
+
setConnectedInstance(this);
|
|
1508
|
+
}
|
|
1509
|
+
accounts = accounts.map((account)=>ethers.utils.getAddress(account));
|
|
1510
|
+
this.connectedAccounts = accounts;
|
|
1511
|
+
this.connectedChainId = await this.connector.getChainId();
|
|
1512
|
+
return accounts[0]
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1515
|
+
async connectedTo(input) {
|
|
1516
|
+
let chainId = await this.connector.getChainId();
|
|
1517
|
+
const blockchain = Blockchains.findByNetworkId(chainId);
|
|
1518
|
+
if(!blockchain) { return false }
|
|
1519
|
+
if(input) {
|
|
1520
|
+
return input === blockchain.name
|
|
1521
|
+
} else {
|
|
1522
|
+
return blockchain.name
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
|
|
1526
|
+
switchTo(blockchainName) {
|
|
1527
|
+
return new Promise((resolve, reject)=>{
|
|
1528
|
+
const blockchain = Blockchains.findByName(blockchainName);
|
|
1529
|
+
this.connector.request({
|
|
1530
|
+
method: 'wallet_switchEthereumChain',
|
|
1531
|
+
params: [{ chainId: blockchain.id }],
|
|
1532
|
+
}).then(resolve).catch((error)=> {
|
|
1533
|
+
if(error.code === 4902){ // chain not yet added
|
|
1534
|
+
this.addNetwork(blockchainName)
|
|
1535
|
+
.then(()=>this.switchTo(blockchainName).then(resolve))
|
|
1536
|
+
.catch(reject);
|
|
1537
|
+
} else {
|
|
1538
|
+
reject(error);
|
|
1539
|
+
}
|
|
1540
|
+
});
|
|
1541
|
+
})
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
addNetwork(blockchainName) {
|
|
1545
|
+
return new Promise((resolve, reject)=>{
|
|
1546
|
+
const blockchain = Blockchains.findByName(blockchainName);
|
|
1547
|
+
this.connector.request({
|
|
1548
|
+
method: 'wallet_addEthereumChain',
|
|
1549
|
+
params: [{
|
|
1550
|
+
chainId: blockchain.id,
|
|
1551
|
+
chainName: blockchain.fullName,
|
|
1552
|
+
nativeCurrency: {
|
|
1553
|
+
name: blockchain.currency.name,
|
|
1554
|
+
symbol: blockchain.currency.symbol,
|
|
1555
|
+
decimals: blockchain.currency.decimals
|
|
1556
|
+
},
|
|
1557
|
+
rpcUrls: [blockchain.rpc],
|
|
1558
|
+
blockExplorerUrls: [blockchain.explorer],
|
|
1559
|
+
iconUrls: [blockchain.logo]
|
|
1560
|
+
}],
|
|
1561
|
+
}).then(resolve).catch(reject);
|
|
1562
|
+
})
|
|
1563
|
+
}
|
|
1564
|
+
|
|
1565
|
+
on(event, callback) {
|
|
1566
|
+
let internalCallback;
|
|
1567
|
+
switch (event) {
|
|
1568
|
+
case 'account':
|
|
1569
|
+
internalCallback = (accounts) => callback(ethers.utils.getAddress(accounts[0]));
|
|
1570
|
+
this.connector.on('accountsChanged', internalCallback);
|
|
1571
|
+
break
|
|
1572
|
+
}
|
|
1573
|
+
return internalCallback
|
|
1574
|
+
}
|
|
1575
|
+
|
|
1576
|
+
off(event, internalCallback) {
|
|
1577
|
+
switch (event) {
|
|
1578
|
+
case 'account':
|
|
1579
|
+
this.connector.removeListener('accountsChanged', internalCallback);
|
|
1580
|
+
break
|
|
1581
|
+
}
|
|
1582
|
+
return internalCallback
|
|
1583
|
+
}
|
|
1584
|
+
|
|
1585
|
+
transactionCount({ blockchain, address }) {
|
|
1586
|
+
return request({ blockchain, method: 'transactionCount', address })
|
|
1587
|
+
}
|
|
1588
|
+
|
|
1589
|
+
async sign(message) {
|
|
1590
|
+
if(typeof message === 'object') {
|
|
1591
|
+
let provider = this.connector;
|
|
1592
|
+
let account = await this.account();
|
|
1593
|
+
if((await this.connectedTo(Blockchains.findByNetworkId(message.domain.chainId).name)) === false) {
|
|
1594
|
+
throw({ code: 'WRONG_NETWORK' })
|
|
1595
|
+
}
|
|
1596
|
+
let signature = await provider.request({
|
|
1597
|
+
method: 'eth_signTypedData_v4',
|
|
1598
|
+
params: [account, message],
|
|
1599
|
+
from: account,
|
|
1600
|
+
});
|
|
1601
|
+
return signature
|
|
1602
|
+
} else if (typeof message === 'string') {
|
|
1603
|
+
await this.account();
|
|
1604
|
+
let provider = new ethers.providers.Web3Provider(this.connector, 'any');
|
|
1605
|
+
let signer = provider.getSigner(0);
|
|
1606
|
+
let signature = await signer.signMessage(message);
|
|
1607
|
+
return signature
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
} WalletLink.__initStatic(); WalletLink.__initStatic2();
|
|
1611
|
+
|
|
1612
|
+
WalletLink.getConnectedInstance = getConnectedInstance;
|
|
1613
|
+
WalletLink.setConnectedInstance = setConnectedInstance;
|
|
1614
|
+
|
|
1615
|
+
function _optionalChain$1(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1616
|
+
|
|
1617
|
+
class WorldApp {
|
|
1618
|
+
|
|
1619
|
+
static __initStatic() {this.info = {
|
|
1620
|
+
name: 'World App',
|
|
1621
|
+
logo: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMzIDMyIj4KICA8Zz4KICAgIDxnPgogICAgICA8cmVjdCBmaWxsPSIjMDAwMDAwIiB3aWR0aD0iMzMiIGhlaWdodD0iMzIiLz4KICAgIDwvZz4KICAgIDxnPgogICAgICA8cGF0aCBmaWxsPSIjRkZGRkZGIiBkPSJNMjQuNywxMi41Yy0uNS0xLjEtMS4xLTItMS45LTIuOHMtMS44LTEuNS0yLjgtMS45Yy0xLjEtLjUtMi4zLS43LTMuNS0uN3MtMi40LjItMy41LjdjLTEuMS41LTIsMS4xLTIuOCwxLjlzLTEuNSwxLjgtMS45LDIuOGMtLjUsMS4xLS43LDIuMy0uNywzLjVzLjIsMi40LjcsMy41LDEuMSwyLDEuOSwyLjhjLjguOCwxLjgsMS41LDIuOCwxLjksMS4xLjUsMi4zLjcsMy41LjdzMi40LS4yLDMuNS0uNywyLTEuMSwyLjgtMS45LDEuNS0xLjgsMS45LTIuOGMuNS0xLjEuNy0yLjMuNy0zLjVzLS4yLTIuNC0uNy0zLjVaTTEzLjUsMTUuMmMuNC0xLjQsMS43LTIuNSwzLjItMi41aDYuMmMuNC44LjcsMS42LjcsMi41aC0xMC4xWk0yMy43LDE2LjhjMCwuOS0uNCwxLjctLjcsMi41aC02LjJjLTEuNSwwLTIuOC0xLjEtMy4yLTIuNWgxMC4xWk0xMS40LDEwLjljMS40LTEuNCwzLjItMi4xLDUuMS0yLjFzMy44LjcsNS4xLDIuMWguMWMwLC4xLTUsLjEtNSwuMS0xLjMsMC0yLjYuNS0zLjUsMS41LS43LjctMS4yLDEuNy0xLjQsMi43aC0yLjVjLjItMS42LjktMy4xLDIuMS00LjNaTTE2LjUsMjMuMmMtMS45LDAtMy44LS43LTUuMS0yLjEtMS4yLTEuMi0xLjktMi43LTIuMS00LjNoMi41Yy4yLDEsLjcsMS45LDEuNCwyLjcuOS45LDIuMiwxLjUsMy41LDEuNWg1LS4xYy0xLjQsMS41LTMuMiwyLjItNS4xLDIuMloiLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=",
|
|
1622
|
+
blockchains: ["worldchain"]
|
|
1623
|
+
};}
|
|
1624
|
+
|
|
1625
|
+
static __initStatic2() {this.isAvailable = async()=>{
|
|
1626
|
+
return Boolean(
|
|
1627
|
+
_optionalChain$1([window, 'optionalAccess', _2 => _2.WorldApp])
|
|
1628
|
+
)
|
|
1629
|
+
};}
|
|
1630
|
+
|
|
1631
|
+
constructor () {
|
|
1632
|
+
MiniKit.install();
|
|
1633
|
+
this.name = this.constructor.info.name;
|
|
1634
|
+
this.logo = this.constructor.info.logo;
|
|
1635
|
+
this.blockchains = this.constructor.info.blockchains;
|
|
1636
|
+
this.sendTransaction = this.sendTransaction;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
sendTransaction(transaction) {
|
|
1640
|
+
console.log('sendTransaction', transaction);
|
|
1641
|
+
transaction = new Transaction(transaction);
|
|
1642
|
+
console.log('after transaction wrapping transaction.sent', transaction.sent);
|
|
1643
|
+
console.log('after transaction wrapping transaction.succeeded', transaction.succeeded);
|
|
1644
|
+
console.log('after transaction wrapping transaction.failed', transaction.failed);
|
|
1645
|
+
|
|
1646
|
+
return new Promise(async(resolve, reject)=>{
|
|
1647
|
+
await transaction.prepare({ wallet: this });
|
|
1648
|
+
console.log('after prepare transaction', transaction);
|
|
1649
|
+
transaction.nonce = (await this.transactionCount({ blockchain: 'worldchain', address: transaction.from })).toString();
|
|
1650
|
+
console.log('after nonce transaction', transaction);
|
|
1651
|
+
|
|
1652
|
+
console.log('before MiniKit.subscribe');
|
|
1653
|
+
MiniKit.subscribe(ResponseEvent.MiniAppSendTransaction, (payload)=> {
|
|
1654
|
+
console.log('payload', payload);
|
|
1655
|
+
if (payload.status == "success") {
|
|
1656
|
+
console.log('before transaction.accepted', transaction);
|
|
1657
|
+
if (transaction.accepted) { transaction.accepted(); }
|
|
1658
|
+
console.log('after transaction.accepted', transaction);
|
|
1659
|
+
this.fetchTransaction(transaction, payload).then((transactionHash)=>{
|
|
1660
|
+
if(transactionHash) {
|
|
1661
|
+
resolve(transaction);
|
|
1662
|
+
} else {
|
|
1663
|
+
reject('Fetching transaction failed!');
|
|
1664
|
+
}
|
|
1665
|
+
}).catch(reject);
|
|
1666
|
+
} else {
|
|
1667
|
+
reject('Submitting transaction failed!');
|
|
1668
|
+
}
|
|
1669
|
+
});
|
|
1670
|
+
console.log('after MiniKit.subscribe');
|
|
1671
|
+
|
|
1672
|
+
console.log('before MiniKit.commands.sendTransaction', {
|
|
1673
|
+
transaction: [
|
|
1674
|
+
{
|
|
1675
|
+
address: transaction.to,
|
|
1676
|
+
abi: _optionalChain$1([transaction, 'access', _3 => _3.api, 'optionalAccess', _4 => _4.filter, 'call', _5 => _5((fragment)=>fragment.name === transaction.method && _optionalChain$1([fragment, 'optionalAccess', _6 => _6.inputs, 'optionalAccess', _7 => _7.length]) === _optionalChain$1([transaction, 'access', _8 => _8.params, 'optionalAccess', _9 => _9.args, 'optionalAccess', _10 => _10.length]))]),
|
|
1677
|
+
functionName: transaction.method,
|
|
1678
|
+
args: _optionalChain$1([transaction, 'access', _11 => _11.params, 'optionalAccess', _12 => _12.args])
|
|
1679
|
+
},
|
|
1680
|
+
],
|
|
1681
|
+
permit2: [_optionalChain$1([transaction, 'access', _13 => _13.params, 'optionalAccess', _14 => _14.permit2])]
|
|
1682
|
+
});
|
|
1683
|
+
MiniKit.commands.sendTransaction({
|
|
1684
|
+
transaction: [
|
|
1685
|
+
{
|
|
1686
|
+
address: transaction.to,
|
|
1687
|
+
abi: _optionalChain$1([transaction, 'access', _15 => _15.api, 'optionalAccess', _16 => _16.filter, 'call', _17 => _17((fragment)=>fragment.name === transaction.method && _optionalChain$1([fragment, 'optionalAccess', _18 => _18.inputs, 'optionalAccess', _19 => _19.length]) === _optionalChain$1([transaction, 'access', _20 => _20.params, 'optionalAccess', _21 => _21.args, 'optionalAccess', _22 => _22.length]))]),
|
|
1688
|
+
functionName: transaction.method,
|
|
1689
|
+
args: _optionalChain$1([transaction, 'access', _23 => _23.params, 'optionalAccess', _24 => _24.args])
|
|
1690
|
+
},
|
|
1691
|
+
],
|
|
1692
|
+
permit2: [_optionalChain$1([transaction, 'access', _25 => _25.params, 'optionalAccess', _26 => _26.permit2])]
|
|
1693
|
+
});
|
|
1694
|
+
console.log('after MiniKit.commands.sendTransaction');
|
|
1695
|
+
})
|
|
1696
|
+
}
|
|
1697
|
+
|
|
1698
|
+
retryFetchTransaction(transaction, payload, attempt) {
|
|
1699
|
+
console.log('Retry Fetch transaction', attempt);
|
|
1700
|
+
return new Promise((resolve, reject)=>{
|
|
1701
|
+
setTimeout(()=>{
|
|
1702
|
+
this.fetchTransaction(transaction, payload, attempt+1).then(resolve).catch(reject);
|
|
1703
|
+
}, (attempt < 30 ? 500 : 1000));
|
|
1704
|
+
})
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
fetchTransaction(transaction, payload, attempt = 1) {
|
|
1708
|
+
return new Promise((resolve, reject)=>{
|
|
1709
|
+
console.log('Before fetch');
|
|
1710
|
+
fetch(`https://public.depay.com/transactions/worldchain/${payload.transaction_id}`, {
|
|
1711
|
+
headers: { "Content-Type": "application/json" },
|
|
1712
|
+
}).then((response)=>{
|
|
1713
|
+
console.log('After fetch', response);
|
|
1714
|
+
if(response.ok) {
|
|
1715
|
+
console.log('Before json');
|
|
1716
|
+
response.json().then((transactionJSON)=>{
|
|
1717
|
+
console.log('After json', transactionJSON);
|
|
1718
|
+
if(_optionalChain$1([transactionJSON, 'optionalAccess', _27 => _27.external_id])) {
|
|
1719
|
+
transaction.id = _optionalChain$1([transactionJSON, 'optionalAccess', _28 => _28.external_id]);
|
|
1720
|
+
transaction.url = Blockchains['worldchain'].explorerUrlFor({ transaction });
|
|
1721
|
+
console.log('before transaction.sent', transaction.sent);
|
|
1722
|
+
if (transaction.sent) { transaction.sent(transaction); }
|
|
1723
|
+
console.log('Before provider');
|
|
1724
|
+
getProvider('worldchain').then((provider)=>{
|
|
1725
|
+
console.log('After provider', provider);
|
|
1726
|
+
console.log('Before wait transaction', transactionJSON.external_id);
|
|
1727
|
+
provider.waitForTransaction(transactionJSON.external_id).then((receipt)=>{
|
|
1728
|
+
console.log('After receipt', receipt);
|
|
1729
|
+
if(receipt && receipt.status == 1) {
|
|
1730
|
+
transaction._succeeded = true;
|
|
1731
|
+
console.log('before transaction.succeeded', transaction.succeeded);
|
|
1732
|
+
if (transaction.succeeded) { transaction.succeeded(transaction); }
|
|
1733
|
+
resolve(transaction);
|
|
1734
|
+
} else {
|
|
1735
|
+
if (transaction.failed) { transaction.failed(transaction, 'Transaction failed'); }
|
|
1736
|
+
}
|
|
1737
|
+
}).catch(reject);
|
|
1738
|
+
}).catch(reject);
|
|
1739
|
+
} else {
|
|
1740
|
+
this.retryFetchTransaction(transaction, payload, attempt).then(resolve).catch(reject);
|
|
1741
|
+
}
|
|
1742
|
+
}).catch(()=>this.retryFetchTransaction(transaction, payload, attempt).then(resolve).catch(reject));
|
|
1743
|
+
} else {
|
|
1744
|
+
this.retryFetchTransaction(transaction, payload, attempt).then(resolve).catch(reject);
|
|
1745
|
+
}
|
|
1746
|
+
}).catch(()=>this.retryFetchTransaction(transaction, payload, attempt).then(resolve).catch(reject));
|
|
1747
|
+
})
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1750
|
+
getProvider() {
|
|
1751
|
+
return this
|
|
1752
|
+
}
|
|
1753
|
+
|
|
1754
|
+
async account() {
|
|
1755
|
+
if(!this.getProvider()) { return undefined }
|
|
1756
|
+
return MiniKit.walletAddress
|
|
1757
|
+
}
|
|
1758
|
+
|
|
1759
|
+
connect() {
|
|
1760
|
+
|
|
1761
|
+
return new Promise( async(resolve, reject)=>{
|
|
1762
|
+
|
|
1763
|
+
if(MiniKit.walletAddress) {
|
|
1764
|
+
return resolve(MiniKit.walletAddress)
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
MiniKit.subscribe(ResponseEvent.MiniAppWalletAuth, async (payload) => {
|
|
1768
|
+
if (payload.status === "error") {
|
|
1769
|
+
return reject(payload.message)
|
|
1770
|
+
} else {
|
|
1771
|
+
return resolve(MiniKit.walletAddress || _optionalChain$1([window, 'access', _29 => _29.MiniKit, 'optionalAccess', _30 => _30.walletAddress]))
|
|
1772
|
+
}
|
|
1773
|
+
});
|
|
1774
|
+
|
|
1775
|
+
const { finalPayload } = await MiniKit.commandsAsync.walletAuth({
|
|
1776
|
+
nonce: crypto.randomUUID().replace(/-/g, ""),
|
|
1777
|
+
expirationTime: new Date(new Date().getTime() + 7 * 24 * 60 * 60 * 1000),
|
|
1778
|
+
notBefore: new Date(new Date().getTime() - 24 * 60 * 60 * 1000),
|
|
1779
|
+
statement: "Connect World App (v17.6.2)"
|
|
1780
|
+
});
|
|
1781
|
+
|
|
1782
|
+
if(finalPayload.status == 'error') {
|
|
1783
|
+
return reject(finalPayload.message)
|
|
1784
|
+
} else {
|
|
1785
|
+
return resolve(MiniKit.walletAddress || _optionalChain$1([window, 'access', _31 => _31.MiniKit, 'optionalAccess', _32 => _32.walletAddress]))
|
|
1786
|
+
}
|
|
1787
|
+
})
|
|
1788
|
+
}
|
|
1789
|
+
|
|
1790
|
+
on(event, callback) {}
|
|
1791
|
+
|
|
1792
|
+
off(event, internalCallback) {}
|
|
1793
|
+
|
|
1794
|
+
async connectedTo(input) {
|
|
1795
|
+
if(input) {
|
|
1796
|
+
return input === 'worldchain'
|
|
1797
|
+
} else {
|
|
1798
|
+
return 'worldchain'
|
|
1799
|
+
}
|
|
1800
|
+
}
|
|
1801
|
+
|
|
1802
|
+
addNetwork(blockchainName) {
|
|
1803
|
+
return new Promise((resolve, reject)=>{
|
|
1804
|
+
reject({ code: 'NOT_SUPPORTED' });
|
|
1805
|
+
})
|
|
1806
|
+
}
|
|
1807
|
+
|
|
1808
|
+
switchTo(blockchainName) {
|
|
1809
|
+
return new Promise((resolve, reject)=>{
|
|
1810
|
+
reject({ code: 'NOT_SUPPORTED' });
|
|
1811
|
+
})
|
|
1812
|
+
}
|
|
1813
|
+
|
|
1814
|
+
async transactionCount({ blockchain, address }) {
|
|
1815
|
+
if(!_optionalChain$1([MiniKit, 'optionalAccess', _33 => _33.walletAddress])) {
|
|
1816
|
+
return 0
|
|
1817
|
+
} else {
|
|
1818
|
+
return request({
|
|
1819
|
+
blockchain: 'worldchain',
|
|
1820
|
+
address: _optionalChain$1([MiniKit, 'optionalAccess', _34 => _34.walletAddress]),
|
|
1821
|
+
api: [{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"AddedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"approvedHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"owner","type":"address"}],"name":"ApproveHash","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"handler","type":"address"}],"name":"ChangedFallbackHandler","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guard","type":"address"}],"name":"ChangedGuard","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"}],"name":"ChangedThreshold","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"module","type":"address"}],"name":"DisabledModule","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"module","type":"address"}],"name":"EnabledModule","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payment","type":"uint256"}],"name":"ExecutionFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"module","type":"address"}],"name":"ExecutionFromModuleFailure","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"module","type":"address"}],"name":"ExecutionFromModuleSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"txHash","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"payment","type":"uint256"}],"name":"ExecutionSuccess","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"RemovedOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"SafeReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"initiator","type":"address"},{"indexed":false,"internalType":"address[]","name":"owners","type":"address[]"},{"indexed":false,"internalType":"uint256","name":"threshold","type":"uint256"},{"indexed":false,"internalType":"address","name":"initializer","type":"address"},{"indexed":false,"internalType":"address","name":"fallbackHandler","type":"address"}],"name":"SafeSetup","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"msgHash","type":"bytes32"}],"name":"SignMsg","type":"event"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"addOwnerWithThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"hashToApprove","type":"bytes32"}],"name":"approveHash","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"approvedHashes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"changeThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"dataHash","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signatures","type":"bytes"},{"internalType":"uint256","name":"requiredSignatures","type":"uint256"}],"name":"checkNSignatures","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"dataHash","type":"bytes32"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"bytes","name":"signatures","type":"bytes"}],"name":"checkSignatures","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"prevModule","type":"address"},{"internalType":"address","name":"module","type":"address"}],"name":"disableModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"domainSeparator","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"enableModule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enumEnum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"safeTxGas","type":"uint256"},{"internalType":"uint256","name":"baseGas","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"address","name":"gasToken","type":"address"},{"internalType":"address","name":"refundReceiver","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"encodeTransactionData","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enumEnum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"safeTxGas","type":"uint256"},{"internalType":"uint256","name":"baseGas","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"address","name":"gasToken","type":"address"},{"internalType":"addresspayable","name":"refundReceiver","type":"address"},{"internalType":"bytes","name":"signatures","type":"bytes"}],"name":"execTransaction","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enumEnum.Operation","name":"operation","type":"uint8"}],"name":"execTransactionFromModule","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enumEnum.Operation","name":"operation","type":"uint8"}],"name":"execTransactionFromModuleReturnData","outputs":[{"internalType":"bool","name":"success","type":"bool"},{"internalType":"bytes","name":"returnData","type":"bytes"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"start","type":"address"},{"internalType":"uint256","name":"pageSize","type":"uint256"}],"name":"getModulesPaginated","outputs":[{"internalType":"address[]","name":"array","type":"address[]"},{"internalType":"address","name":"next","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwners","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"offset","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"name":"getStorageAt","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enumEnum.Operation","name":"operation","type":"uint8"},{"internalType":"uint256","name":"safeTxGas","type":"uint256"},{"internalType":"uint256","name":"baseGas","type":"uint256"},{"internalType":"uint256","name":"gasPrice","type":"uint256"},{"internalType":"address","name":"gasToken","type":"address"},{"internalType":"address","name":"refundReceiver","type":"address"},{"internalType":"uint256","name":"_nonce","type":"uint256"}],"name":"getTransactionHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"module","type":"address"}],"name":"isModuleEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"prevOwner","type":"address"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"_threshold","type":"uint256"}],"name":"removeOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"enumEnum.Operation","name":"operation","type":"uint8"}],"name":"requiredTxGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"handler","type":"address"}],"name":"setFallbackHandler","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"guard","type":"address"}],"name":"setGuard","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"address","name":"fallbackHandler","type":"address"},{"internalType":"address","name":"paymentToken","type":"address"},{"internalType":"uint256","name":"payment","type":"uint256"},{"internalType":"addresspayable","name":"paymentReceiver","type":"address"}],"name":"setup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"signedMessages","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"targetContract","type":"address"},{"internalType":"bytes","name":"calldataPayload","type":"bytes"}],"name":"simulateAndRevert","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"prevOwner","type":"address"},{"internalType":"address","name":"oldOwner","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"swapOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],
|
|
1822
|
+
method: 'nonce'
|
|
1823
|
+
})
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
|
|
1827
|
+
async sign(message) {
|
|
1828
|
+
|
|
1829
|
+
return new Promise((resolve, reject)=>{
|
|
1830
|
+
|
|
1831
|
+
MiniKit.subscribe(ResponseEvent.MiniAppSignMessage, async (payload) => {
|
|
1832
|
+
if (payload.status === "error") {
|
|
1833
|
+
return reject()
|
|
1834
|
+
} else {
|
|
1835
|
+
return resolve(payload.signature)
|
|
1836
|
+
}
|
|
1837
|
+
});
|
|
1838
|
+
|
|
1839
|
+
MiniKit.commands.signMessage({ message });
|
|
1840
|
+
|
|
1841
|
+
})
|
|
1842
|
+
}
|
|
1843
|
+
} WorldApp.__initStatic(); WorldApp.__initStatic2();
|
|
1844
|
+
|
|
1845
|
+
var wallets = {
|
|
1846
|
+
MetaMask,
|
|
1847
|
+
CoinbaseEVM,
|
|
1848
|
+
Binance,
|
|
1849
|
+
TrustEVM,
|
|
1850
|
+
Rabby,
|
|
1851
|
+
Uniswap,
|
|
1852
|
+
Rainbow,
|
|
1853
|
+
BraveEVM,
|
|
1854
|
+
Opera,
|
|
1855
|
+
MagicEdenEVM,
|
|
1856
|
+
OKXEVM,
|
|
1857
|
+
Coin98EVM,
|
|
1858
|
+
CryptoCom,
|
|
1859
|
+
HyperPay,
|
|
1860
|
+
TokenPocket,
|
|
1861
|
+
ExodusEVM,
|
|
1862
|
+
PhantomEVM,
|
|
1863
|
+
WorldApp,
|
|
1864
|
+
|
|
1865
|
+
// standards
|
|
1866
|
+
WindowEthereum,
|
|
1867
|
+
WalletConnectV2,
|
|
1868
|
+
WalletLink
|
|
1869
|
+
};
|
|
1870
|
+
|
|
1871
|
+
function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
1872
|
+
const getWallets = async(args)=>{
|
|
1873
|
+
|
|
1874
|
+
let drip = (args && typeof args.drip === 'function') ? args.drip : undefined;
|
|
1875
|
+
|
|
1876
|
+
// eip6963
|
|
1877
|
+
window['_eip6963Providers'] = {};
|
|
1878
|
+
const announceProvider = (event)=>{
|
|
1879
|
+
if(_optionalChain([event, 'optionalAccess', _ => _.detail, 'optionalAccess', _2 => _2.info, 'optionalAccess', _3 => _3.uuid])) {
|
|
1880
|
+
window['_eip6963Providers'][_optionalChain([event, 'optionalAccess', _4 => _4.detail, 'optionalAccess', _5 => _5.info, 'optionalAccess', _6 => _6.uuid])] = event.detail.provider;
|
|
1881
|
+
}
|
|
1882
|
+
};
|
|
1883
|
+
window.addEventListener("eip6963:announceProvider", announceProvider);
|
|
1884
|
+
window.dispatchEvent(new Event("eip6963:requestProvider"));
|
|
1885
|
+
window.removeEventListener("eip6963:announceProvider", announceProvider);
|
|
1886
|
+
|
|
1887
|
+
let availableWallets = await Promise.all(
|
|
1888
|
+
|
|
1889
|
+
Object.keys(wallets).map(
|
|
1890
|
+
|
|
1891
|
+
async(key)=>{
|
|
1892
|
+
|
|
1893
|
+
let wallet = wallets[key];
|
|
1894
|
+
|
|
1895
|
+
if(await wallet.isAvailable()) {
|
|
1896
|
+
let instance;
|
|
1897
|
+
|
|
1898
|
+
if(wallet.getConnectedInstance) {
|
|
1899
|
+
instance = await wallet.getConnectedInstance();
|
|
1900
|
+
if(drip && instance) { drip(instance); }
|
|
1901
|
+
return instance
|
|
1902
|
+
} else {
|
|
1903
|
+
if(drip && wallet) { drip(wallet); }
|
|
1904
|
+
return new wallet
|
|
1905
|
+
}
|
|
1906
|
+
}
|
|
1907
|
+
}
|
|
1908
|
+
)
|
|
1909
|
+
);
|
|
1910
|
+
|
|
1911
|
+
return availableWallets.filter(Boolean)
|
|
1912
|
+
};
|
|
1913
|
+
|
|
1914
|
+
const supported = [
|
|
1915
|
+
wallets.MetaMask,
|
|
1916
|
+
wallets.CoinbaseEVM,
|
|
1917
|
+
wallets.Binance,
|
|
1918
|
+
wallets.TrustEVM,
|
|
1919
|
+
wallets.Rabby,
|
|
1920
|
+
wallets.Uniswap,
|
|
1921
|
+
wallets.Rainbow,
|
|
1922
|
+
wallets.PhantomEVM,
|
|
1923
|
+
wallets.BraveEVM,
|
|
1924
|
+
wallets.OKXEvm,
|
|
1925
|
+
wallets.MagicEdenEVM,
|
|
1926
|
+
wallets.Opera,
|
|
1927
|
+
wallets.Coin98EVM,
|
|
1928
|
+
wallets.Coin98SVM,
|
|
1929
|
+
wallets.CryptoCom,
|
|
1930
|
+
wallets.HyperPay,
|
|
1931
|
+
wallets.TokenPocket,
|
|
1932
|
+
wallets.ExodusEVM,
|
|
1933
|
+
wallets.WorldApp,
|
|
1934
|
+
|
|
1935
|
+
// standards
|
|
1936
|
+
wallets.WalletConnectV2,
|
|
1937
|
+
wallets.WalletLink,
|
|
1938
|
+
wallets.WindowEthereum,
|
|
1939
|
+
];
|
|
1940
|
+
|
|
1941
|
+
export { getWallets, supported, wallets };
|