@depay/web3-wallets-evm 15.12.3 → 15.14.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/README.md CHANGED
@@ -36,30 +36,14 @@ This library supports the following blockchains:
36
36
  - [Polygon](https://polygon.technology)
37
37
  - [Solana](https://solana.com)
38
38
  - [Fantom](https://fantom.foundation)
39
- - [Velas](https://velas.com)
40
-
41
- This library supports the following wallets:
42
-
43
- - [MetaMask](https://metamask.io)
44
- - [Coinbase Wallet](https://wallet.coinbase.com)
45
- - [Phantom](https://phantom.app)
46
- - [WalletConnect](https://walletconnect.org)
47
-
48
- 100+ different wallets via [WalletConnect](https://walletconnect.org), such as:
49
- - [Trust Wallet](https://trustwallet.com)
50
- - [DeFi Wallet by crypto.com](https://crypto.com/defi-wallet)
51
- - [1inch Wallet](https://1inch.io/wallet/)
52
- - [imToken Wallet](https://www.token.im)
53
- - [TokenPocket](https://www.tokenpocket.pro/en)
54
- - [Pillar](https://www.pillar.fi/)
55
- - [Math Wallet](https://mathwallet.org/)
56
- - [Ledger Live](https://www.ledger.com/ledger-live)
57
- - [Argent Wallet](https://www.argent.xyz)
58
- - [AlphaWallet](https://alphawallet.com/)
59
- - [Unstoppable Wallet](https://unstoppable.money)
60
- - [Atomic Wallet](https://atomicwallet.io)
61
- - [Rainbow](https://rainbow.me/)
62
- - and more...
39
+ - [Arbitrum](https://arbitrum.io)
40
+ - [Avalanche](https://www.avax.network)
41
+ - [Gnosis](https://gnosis.io)
42
+ - [Optimism](https://www.optimism.io)
43
+
44
+ This library supports most crypto wallets:
45
+
46
+ See https://depay.com/wallets for more details
63
47
 
64
48
  ## Platform specific packaging
65
49
 
@@ -354,7 +338,7 @@ let sentTransaction = await wallet.sendTransaction({
354
338
  e.g. Send 1 USDC:
355
339
 
356
340
  ```javascript
357
- import { Token } from '@depay/web3-tokens'
341
+ import Token from '@depay/web3-tokens'
358
342
 
359
343
  let sentTransaction = await wallet.sendTransaction({
360
344
  blockchain: 'solana',
@@ -380,7 +364,7 @@ you can pass `signers` as part of the transaction passed to `sendTransaction`:
380
364
 
381
365
  ```javascript
382
366
  import { getProvider } from '@depay/web3-client'
383
- import { Token } from '@depay/web3-tokens'
367
+ import Token from '@depay/web3-tokens'
384
368
  import { PublicKey, SystemProgram, Keypair } from '@depay/solana-web3.js'
385
369
 
386
370
  const wallets = await getWallets()
@@ -417,7 +401,7 @@ you can pass `alts` as part of the transaction passed to `sendTransaction`:
417
401
 
418
402
  ```javascript
419
403
  import { getProvider } from '@depay/web3-client'
420
- import { Token } from '@depay/web3-tokens'
404
+ import Token from '@depay/web3-tokens'
421
405
  import { PublicKey, SystemProgram, Keypair } from '@depay/solana-web3.js'
422
406
 
423
407
  const wallets = await getWallets()
@@ -42210,12 +42210,19 @@ class Transaction {
42210
42210
  async getData() {
42211
42211
  let contractArguments = this.getContractArguments();
42212
42212
  let populatedTransaction;
42213
+ let method = this.method;
42214
+ if(this.getContract()[method] === undefined){
42215
+ let fragment = this.getContract().interface.fragments.find((fragment) => {
42216
+ return fragment.name == this.method
42217
+ });
42218
+ method = `${method}(${fragment.inputs.map((input)=>input.type).join(',')})`;
42219
+ }
42213
42220
  if(contractArguments) {
42214
- populatedTransaction = await this.getContract().populateTransaction[this.method].apply(
42221
+ populatedTransaction = await this.getContract().populateTransaction[method].apply(
42215
42222
  null, contractArguments
42216
42223
  );
42217
42224
  } else {
42218
- populatedTransaction = await this.getContract().populateTransaction[this.method].apply(null);
42225
+ populatedTransaction = await this.getContract().populateTransaction[method].apply(null);
42219
42226
  }
42220
42227
 
42221
42228
  return populatedTransaction.data
@@ -42363,8 +42370,8 @@ const submitInstructions = async ({ transaction, wallet })=> {
42363
42370
  return wallet._sendTransaction(transactionV0)
42364
42371
  };
42365
42372
 
42366
- let supported$2 = ['ethereum', 'bsc', 'polygon', 'fantom', 'velas'];
42367
- supported$2.evm = ['ethereum', 'bsc', 'polygon', 'fantom', 'velas'];
42373
+ let supported$2 = ['ethereum', 'bsc', 'polygon', 'fantom', 'arbitrum', 'avalanche', 'gnosis', 'optimism'];
42374
+ supported$2.evm = ['ethereum', 'bsc', 'polygon', 'fantom', 'arbitrum', 'avalanche', 'gnosis', 'optimism'];
42368
42375
  supported$2.solana = [];
42369
42376
 
42370
42377
  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; }
@@ -42728,35 +42735,39 @@ class StaticJsonRpcSequentialProvider extends Connection {
42728
42735
 
42729
42736
  const batch = chunk.map((inflight) => inflight.request);
42730
42737
 
42731
- return this._provider._rpcBatchRequest(batch)
42732
- .then((result) => {
42733
- // For each result, feed it to the correct Promise, depending
42734
- // on whether it was a success or error
42735
- chunk.forEach((inflightRequest, index) => {
42736
- const payload = result[index];
42737
- if (payload.error) {
42738
- const error = new Error(payload.error.message);
42739
- error.code = payload.error.code;
42740
- error.data = payload.error.data;
42741
- inflightRequest.reject(error);
42742
- } else {
42743
- inflightRequest.resolve(payload);
42744
- }
42738
+ const handleError = (error)=>{
42739
+ if(error && [
42740
+ 'Failed to fetch', 'limit reached', '504', '503', '502', '500', '429', '426', '422', '413', '409', '408', '406', '405', '404', '403', '402', '401', '400'
42741
+ ].some((errorType)=>error.toString().match(errorType))) {
42742
+ const index = this._endpoints.indexOf(this._endpoint)+1;
42743
+ this._endpoint = index >= this._endpoints.length ? this._endpoints[0] : this._endpoints[index];
42744
+ this._provider = new Connection(this._endpoint);
42745
+ this.requestChunk(chunk);
42746
+ } else {
42747
+ chunk.forEach((inflightRequest) => {
42748
+ inflightRequest.reject(error);
42745
42749
  });
42746
- }).catch((error) => {
42747
- if(error && [
42748
- 'Failed to fetch', '504', '503', '502', '500', '429', '426', '422', '413', '409', '408', '406', '405', '404', '403', '402', '401', '400'
42749
- ].some((errorType)=>error.toString().match(errorType))) {
42750
- const index = this._endpoints.indexOf(this._endpoint)+1;
42751
- this._endpoint = index >= this._endpoints.length ? this._endpoints[0] : this._endpoints[index];
42752
- this._provider = new Connection(this._endpoint);
42753
- this.requestChunk(chunk);
42754
- } else {
42755
- chunk.forEach((inflightRequest) => {
42756
- inflightRequest.reject(error);
42750
+ }
42751
+ };
42752
+
42753
+ try {
42754
+ return this._provider._rpcBatchRequest(batch)
42755
+ .then((result) => {
42756
+ // For each result, feed it to the correct Promise, depending
42757
+ // on whether it was a success or error
42758
+ chunk.forEach((inflightRequest, index) => {
42759
+ const payload = result[index];
42760
+ if (payload.error) {
42761
+ const error = new Error(payload.error.message);
42762
+ error.code = payload.error.code;
42763
+ error.data = payload.error.data;
42764
+ inflightRequest.reject(error);
42765
+ } else {
42766
+ inflightRequest.resolve(payload);
42767
+ }
42757
42768
  });
42758
- }
42759
- })
42769
+ }).catch(handleError)
42770
+ } catch (error){ return handleError(error) }
42760
42771
  }
42761
42772
 
42762
42773
  _rpcRequestReplacement(methodName, args) {
@@ -42909,8 +42920,8 @@ var Solana = {
42909
42920
  setProvider: setProvider$1,
42910
42921
  };
42911
42922
 
42912
- let supported$1 = ['ethereum', 'bsc', 'polygon', 'solana', 'fantom', 'velas'];
42913
- supported$1.evm = ['ethereum', 'bsc', 'polygon', 'fantom', 'velas'];
42923
+ let supported$1 = ['ethereum', 'bsc', 'polygon', 'solana', 'fantom', 'arbitrum', 'avalanche', 'gnosis', 'optimism'];
42924
+ supported$1.evm = ['ethereum', 'bsc', 'polygon', 'fantom', 'arbitrum', 'avalanche', 'gnosis', 'optimism'];
42914
42925
  supported$1.solana = ['solana'];
42915
42926
 
42916
42927
  function _optionalChain$1$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; }
@@ -43026,9 +43037,17 @@ let paramsToContractArgs = ({ contract, method, params }) => {
43026
43037
  };
43027
43038
 
43028
43039
  const contractCall = ({ address, api, method, params, provider, block }) => {
43029
- let contract = new ethers.Contract(address, api, provider);
43030
- let args = paramsToContractArgs({ contract, method, params });
43031
- return contract[method](...args, { blockTag: block })
43040
+ const contract = new ethers.Contract(address, api, provider);
43041
+ const args = paramsToContractArgs({ contract, method, params });
43042
+ const fragment = contract.interface.fragments.find((fragment)=>fragment.name === method);
43043
+ if(contract[method] === undefined) {
43044
+ method = `${method}(${fragment.inputs.map((input)=>input.type).join(',')})`;
43045
+ }
43046
+ if(fragment && fragment.stateMutability === 'nonpayable') {
43047
+ return contract.callStatic[method](...args, { blockTag: block })
43048
+ } else {
43049
+ return contract[method](...args, { blockTag: block })
43050
+ }
43032
43051
  };
43033
43052
 
43034
43053
  const balance$1 = ({ address, provider }) => {
@@ -43058,17 +43077,25 @@ var requestEVM = async ({ blockchain, address, api, method, params, block, timeo
43058
43077
 
43059
43078
  if(strategy === 'fastest') {
43060
43079
 
43061
- return Promise.race((await EVM.getProviders(blockchain)).map((provider)=>{
43080
+ const providers = await EVM.getProviders(blockchain);
43081
+
43082
+ let allRequestsFailed = [];
43062
43083
 
43063
- const request = singleRequest$1({ blockchain, address, api, method, params, block, provider });
43084
+ const allRequestsInParallel = providers.map((provider)=>{
43085
+ return new Promise((resolve)=>{
43086
+ allRequestsFailed.push(
43087
+ singleRequest$1({ blockchain, address, api, method, params, block, provider }).then(resolve)
43088
+ );
43089
+ })
43090
+ });
43064
43091
 
43065
- if(timeout) {
43066
- const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout));
43067
- return Promise.race([request, timeoutPromise])
43068
- } else {
43069
- return request
43070
- }
43071
- }))
43092
+ const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000));
43093
+
43094
+ allRequestsFailed = Promise.all(allRequestsFailed.map((request)=>{
43095
+ return new Promise((resolve)=>{ request.catch(resolve); })
43096
+ })).then(()=>{ return });
43097
+
43098
+ return Promise.race([...allRequestsInParallel, timeoutPromise, allRequestsFailed])
43072
43099
 
43073
43100
  } else { // failover
43074
43101
 
@@ -43086,6 +43113,7 @@ var requestEVM = async ({ blockchain, address, api, method, params, block, timeo
43086
43113
 
43087
43114
  const accountInfo = async ({ address, api, method, params, provider, block }) => {
43088
43115
  const info = await provider.getAccountInfo(new PublicKey$1(address));
43116
+ if(!info || !info.data) { return }
43089
43117
  return api.decode(info.data)
43090
43118
  };
43091
43119
 
@@ -43116,14 +43144,14 @@ const singleRequest = async({ blockchain, address, api, method, params, block, p
43116
43144
  } else if(method === 'getTokenAccountBalance') {
43117
43145
  return await provider.getTokenAccountBalance(new PublicKey$1(address))
43118
43146
  } else if (method === 'latestBlockNumber') {
43119
- return await provider.getBlockHeight()
43147
+ return await provider.getSlot(params ? params : undefined)
43120
43148
  } else if (method === 'balance') {
43121
43149
  return await balance({ address, provider })
43122
43150
  }
43123
43151
 
43124
43152
  } catch (error){
43125
43153
  if(providers && error && [
43126
- 'Failed to fetch', '504', '503', '502', '500', '429', '426', '422', '413', '409', '408', '406', '405', '404', '403', '402', '401', '400'
43154
+ 'Failed to fetch', 'limit reached', '504', '503', '502', '500', '429', '426', '422', '413', '409', '408', '406', '405', '404', '403', '402', '401', '400'
43127
43155
  ].some((errorType)=>error.toString().match(errorType))) {
43128
43156
  let nextProvider = providers[providers.indexOf(provider)+1] || providers[0];
43129
43157
  return singleRequest({ blockchain, address, api, method, params, block, provider: nextProvider, providers })
@@ -43142,17 +43170,24 @@ var requestSolana = async ({ blockchain, address, api, method, params, block, ti
43142
43170
 
43143
43171
  if(strategy === 'fastest') {
43144
43172
 
43145
- return Promise.race(providers.map((provider)=>{
43173
+ let allRequestsFailed = [];
43146
43174
 
43147
- const succeedingRequest = new Promise((resolve)=>{
43148
- singleRequest({ blockchain, address, api, method, params, block, provider }).then(resolve);
43149
- }); // failing requests are ignored during race/fastest
43150
-
43151
- const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000));
43152
-
43153
- return Promise.race([succeedingRequest, timeoutPromise])
43154
- }))
43175
+ const allRequestsInParallel = providers.map((provider)=>{
43176
+ return new Promise((resolve)=>{
43177
+ allRequestsFailed.push(
43178
+ singleRequest({ blockchain, address, api, method, params, block, provider }).then(resolve)
43179
+ );
43180
+ })
43181
+ });
43155
43182
 
43183
+ const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000));
43184
+
43185
+ allRequestsFailed = Promise.all(allRequestsFailed.map((request)=>{
43186
+ return new Promise((resolve)=>{ request.catch(resolve); })
43187
+ })).then(()=>{ return });
43188
+
43189
+ return Promise.race([...allRequestsInParallel, timeoutPromise, allRequestsFailed])
43190
+
43156
43191
  } else { // failover
43157
43192
 
43158
43193
  const provider = await Solana.getProvider(blockchain);
@@ -43197,11 +43232,11 @@ var parseUrl = (url) => {
43197
43232
  const request = async function (url, options) {
43198
43233
 
43199
43234
  const { blockchain, address, method } = parseUrl(url);
43200
- const { api, params, cache: cache$1, block, timeout, strategy } = (typeof(url) == 'object' ? url : options) || {};
43235
+ const { api, params, cache: cache$1, block, timeout, strategy, cacheKey } = (typeof(url) == 'object' ? url : options) || {};
43201
43236
 
43202
43237
  return await cache({
43203
43238
  expires: cache$1 || 0,
43204
- key: [blockchain, address, method, params, block],
43239
+ key: cacheKey || [blockchain, address, method, params, block],
43205
43240
  call: async()=>{
43206
43241
  if(supported$1.evm.includes(blockchain)) {
43207
43242
 
@@ -43401,6 +43436,7 @@ class WindowEthereum {
43401
43436
 
43402
43437
  async connectedTo(input) {
43403
43438
  const blockchain = Blockchains.findById(await this.getProvider().request({ method: 'eth_chainId' }));
43439
+ if(!blockchain) { return false }
43404
43440
  if(input) {
43405
43441
  return input === blockchain.name
43406
43442
  } else {
@@ -43587,7 +43623,7 @@ class Phantom extends WindowSolana {
43587
43623
 
43588
43624
  static __initStatic() {this.info = {
43589
43625
  name: 'Phantom',
43590
- logo: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMjggMTI4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwMjU0MzQ3Mjk4MTg1NjMwMDE0MzAwMDAwMDA4MDkyOTcxNTA5NTE0Njc2NTdfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNjQiIHkxPSIxMTguNTk1NCIgeDI9IjY0IiB5Mj0iMTMuNDA0NiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDEzMCkiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzUzNEJCMSIvPgoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzU1MUJGOSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2lyY2xlIGNsYXNzPSJzdDAiIGN4PSI2NCIgY3k9IjY0IiByPSI1Mi42Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxODAzNTkzNjMzODg0OTQyMDMyNTAwMDAwMDQyNDUxODUwMjI4NDM0OTI3NDlfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjY1LjIzMjYiIHkxPSI5OS42OTQiIHgyPSI2NS4yMzI2IiB5Mj0iMjkuODQwNiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDEzMCkiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRiIvPgoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRjtzdG9wLW9wYWNpdHk6MC44MiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTgwMzU5MzYzMzg4NDk0MjAzMjUwMDAwMDA0MjQ1MTg1MDIyODQzNDkyNzQ5Xyk7IiBkPSJNMTAyLjMsNjQuOGgtOS40YzAtMTktMTUuNi0zNC40LTM0LjgtMzQuNAoJYy0xOSwwLTM0LjQsMTUtMzQuOCwzMy43Yy0wLjQsMTkuMywxNy45LDM2LjEsMzcuNSwzNi4xaDIuNWMxNy4yLDAsNDAuMy0xMy4zLDQzLjktMjkuNkMxMDcuOCw2Ny42LDEwNS40LDY0LjgsMTAyLjMsNjQuOHoKCSBNNDQuMSw2NS42YzAsMi41LTIuMSw0LjYtNC43LDQuNnMtNC43LTIuMS00LjctNC42di03LjVjMC0yLjUsMi4xLTQuNiw0LjctNC42czQuNywyLjEsNC43LDQuNlY2NS42eiBNNjAuMyw2NS42CgljMCwyLjUtMi4xLDQuNi00LjcsNC42Yy0yLjYsMC00LjctMi4xLTQuNy00LjZ2LTcuNWMwLTIuNSwyLjEtNC42LDQuNy00LjZjMi42LDAsNC43LDIuMSw0LjcsNC42VjY1LjZ6Ii8+Cjwvc3ZnPgo=',
43626
+ logo: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMjggMTI4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0FCOUZGMjt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMy43LDEwOWMxMy42LDAsMjMuOS0xMS45LDMwLTIxLjJjLTAuNywyLjEtMS4yLDQuMS0xLjIsNi4xYzAsNS41LDMuMSw5LjQsOS4zLDkuNGM4LjUsMCwxNy42LTcuNSwyMi4zLTE1LjUKCWMtMC4zLDEuMi0wLjUsMi4yLTAuNSwzLjJjMCwzLjgsMi4xLDYuMiw2LjUsNi4yYzEzLjgsMCwyNy43LTI0LjUsMjcuNy00NS45YzAtMTYuNy04LjQtMzEuNC0yOS42LTMxLjQKCWMtMzcuMiwwLTc3LjMsNDUuNS03Ny4zLDc0LjhDMTEuMSwxMDYuMywxNy4zLDEwOSwyMy43LDEwOXogTTc1LjUsNDkuNWMwLTQuMSwyLjMtNy4xLDUuNy03LjFjMy4zLDAsNS42LDIuOSw1LjYsNy4xCgljMCw0LjEtMi4zLDcuMS01LjYsNy4xQzc3LjgsNTYuNyw3NS41LDUzLjcsNzUuNSw0OS41eiBNOTMuMiw0OS41YzAtNC4xLDIuMy03LjEsNS43LTcuMWMzLjMsMCw1LjYsMi45LDUuNiw3LjEKCWMwLDQuMS0yLjMsNy4xLTUuNiw3LjFDOTUuNSw1Ni43LDkzLjIsNTMuNyw5My4yLDQ5LjV6Ii8+Cjwvc3ZnPgo=',
43591
43627
  blockchains: ['solana']
43592
43628
  };}
43593
43629
 
@@ -44158,6 +44194,7 @@ class WalletConnectV1 {
44158
44194
  async connectedTo(input) {
44159
44195
  let chainId = await this.connector.sendCustomRequest({ method: 'eth_chainId' });
44160
44196
  const blockchain = Blockchains.findById(chainId);
44197
+ if(!blockchain) { return false }
44161
44198
  if(input) {
44162
44199
  return input === blockchain.name
44163
44200
  } else {
@@ -44401,6 +44438,7 @@ class WalletLink {
44401
44438
  async connectedTo(input) {
44402
44439
  let chainId = await this.connector.getChainId();
44403
44440
  const blockchain = Blockchains.findByNetworkId(chainId);
44441
+ if(!blockchain) { return false }
44404
44442
  if(input) {
44405
44443
  return input === blockchain.name
44406
44444
  } else {
package/dist/esm/index.js CHANGED
@@ -81,12 +81,19 @@ class Transaction {
81
81
  async getData() {
82
82
  let contractArguments = this.getContractArguments();
83
83
  let populatedTransaction;
84
+ let method = this.method;
85
+ if(this.getContract()[method] === undefined){
86
+ let fragment = this.getContract().interface.fragments.find((fragment) => {
87
+ return fragment.name == this.method
88
+ });
89
+ method = `${method}(${fragment.inputs.map((input)=>input.type).join(',')})`;
90
+ }
84
91
  if(contractArguments) {
85
- populatedTransaction = await this.getContract().populateTransaction[this.method].apply(
92
+ populatedTransaction = await this.getContract().populateTransaction[method].apply(
86
93
  null, contractArguments
87
94
  );
88
95
  } else {
89
- populatedTransaction = await this.getContract().populateTransaction[this.method].apply(null);
96
+ populatedTransaction = await this.getContract().populateTransaction[method].apply(null);
90
97
  }
91
98
 
92
99
  return populatedTransaction.data
@@ -234,8 +241,8 @@ const submitInstructions = async ({ transaction, wallet })=> {
234
241
  return wallet._sendTransaction(transactionV0)
235
242
  };
236
243
 
237
- let supported$1 = ['ethereum', 'bsc', 'polygon', 'solana', 'fantom', 'velas'];
238
- supported$1.evm = ['ethereum', 'bsc', 'polygon', 'fantom', 'velas'];
244
+ let supported$1 = ['ethereum', 'bsc', 'polygon', 'solana', 'fantom', 'arbitrum', 'avalanche', 'gnosis', 'optimism'];
245
+ supported$1.evm = ['ethereum', 'bsc', 'polygon', 'fantom', 'arbitrum', 'avalanche', 'gnosis', 'optimism'];
239
246
  supported$1.solana = ['solana'];
240
247
 
241
248
  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; }
@@ -531,6 +538,7 @@ class WindowEthereum {
531
538
 
532
539
  async connectedTo(input) {
533
540
  const blockchain = Blockchains.findById(await this.getProvider().request({ method: 'eth_chainId' }));
541
+ if(!blockchain) { return false }
534
542
  if(input) {
535
543
  return input === blockchain.name
536
544
  } else {
@@ -717,7 +725,7 @@ class Phantom extends WindowSolana {
717
725
 
718
726
  static __initStatic() {this.info = {
719
727
  name: 'Phantom',
720
- logo: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMjggMTI4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6dXJsKCNTVkdJRF8xXyk7fQoJLnN0MXtmaWxsOnVybCgjU1ZHSURfMDAwMDAwMjU0MzQ3Mjk4MTg1NjMwMDE0MzAwMDAwMDA4MDkyOTcxNTA5NTE0Njc2NTdfKTt9Cjwvc3R5bGU+CjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNjQiIHkxPSIxMTguNTk1NCIgeDI9IjY0IiB5Mj0iMTMuNDA0NiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDEzMCkiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6IzUzNEJCMSIvPgoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6IzU1MUJGOSIvPgo8L2xpbmVhckdyYWRpZW50Pgo8Y2lyY2xlIGNsYXNzPSJzdDAiIGN4PSI2NCIgY3k9IjY0IiByPSI1Mi42Ii8+CjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMDAwMDAxODAzNTkzNjMzODg0OTQyMDMyNTAwMDAwMDQyNDUxODUwMjI4NDM0OTI3NDlfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjY1LjIzMjYiIHkxPSI5OS42OTQiIHgyPSI2NS4yMzI2IiB5Mj0iMjkuODQwNiIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxIDAgMCAtMSAwIDEzMCkiPgoJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRiIvPgoJPHN0b3AgIG9mZnNldD0iMSIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRkZGRjtzdG9wLW9wYWNpdHk6MC44MiIvPgo8L2xpbmVhckdyYWRpZW50Pgo8cGF0aCBzdHlsZT0iZmlsbDp1cmwoI1NWR0lEXzAwMDAwMTgwMzU5MzYzMzg4NDk0MjAzMjUwMDAwMDA0MjQ1MTg1MDIyODQzNDkyNzQ5Xyk7IiBkPSJNMTAyLjMsNjQuOGgtOS40YzAtMTktMTUuNi0zNC40LTM0LjgtMzQuNAoJYy0xOSwwLTM0LjQsMTUtMzQuOCwzMy43Yy0wLjQsMTkuMywxNy45LDM2LjEsMzcuNSwzNi4xaDIuNWMxNy4yLDAsNDAuMy0xMy4zLDQzLjktMjkuNkMxMDcuOCw2Ny42LDEwNS40LDY0LjgsMTAyLjMsNjQuOHoKCSBNNDQuMSw2NS42YzAsMi41LTIuMSw0LjYtNC43LDQuNnMtNC43LTIuMS00LjctNC42di03LjVjMC0yLjUsMi4xLTQuNiw0LjctNC42czQuNywyLjEsNC43LDQuNlY2NS42eiBNNjAuMyw2NS42CgljMCwyLjUtMi4xLDQuNi00LjcsNC42Yy0yLjYsMC00LjctMi4xLTQuNy00LjZ2LTcuNWMwLTIuNSwyLjEtNC42LDQuNy00LjZjMi42LDAsNC43LDIuMSw0LjcsNC42VjY1LjZ6Ii8+Cjwvc3ZnPgo=',
728
+ logo: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI3LjIuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAxMjggMTI4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjggMTI4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+Cgkuc3Qwe2ZpbGw6I0FCOUZGMjt9Cjwvc3R5bGU+CjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0yMy43LDEwOWMxMy42LDAsMjMuOS0xMS45LDMwLTIxLjJjLTAuNywyLjEtMS4yLDQuMS0xLjIsNi4xYzAsNS41LDMuMSw5LjQsOS4zLDkuNGM4LjUsMCwxNy42LTcuNSwyMi4zLTE1LjUKCWMtMC4zLDEuMi0wLjUsMi4yLTAuNSwzLjJjMCwzLjgsMi4xLDYuMiw2LjUsNi4yYzEzLjgsMCwyNy43LTI0LjUsMjcuNy00NS45YzAtMTYuNy04LjQtMzEuNC0yOS42LTMxLjQKCWMtMzcuMiwwLTc3LjMsNDUuNS03Ny4zLDc0LjhDMTEuMSwxMDYuMywxNy4zLDEwOSwyMy43LDEwOXogTTc1LjUsNDkuNWMwLTQuMSwyLjMtNy4xLDUuNy03LjFjMy4zLDAsNS42LDIuOSw1LjYsNy4xCgljMCw0LjEtMi4zLDcuMS01LjYsNy4xQzc3LjgsNTYuNyw3NS41LDUzLjcsNzUuNSw0OS41eiBNOTMuMiw0OS41YzAtNC4xLDIuMy03LjEsNS43LTcuMWMzLjMsMCw1LjYsMi45LDUuNiw3LjEKCWMwLDQuMS0yLjMsNy4xLTUuNiw3LjFDOTUuNSw1Ni43LDkzLjIsNTMuNyw5My4yLDQ5LjV6Ii8+Cjwvc3ZnPgo=',
721
729
  blockchains: ['solana']
722
730
  };}
723
731
 
@@ -1290,6 +1298,7 @@ class WalletConnectV1 {
1290
1298
  async connectedTo(input) {
1291
1299
  let chainId = await this.connector.sendCustomRequest({ method: 'eth_chainId' });
1292
1300
  const blockchain = Blockchains.findById(chainId);
1301
+ if(!blockchain) { return false }
1293
1302
  if(input) {
1294
1303
  return input === blockchain.name
1295
1304
  } else {
@@ -1533,6 +1542,7 @@ class WalletLink {
1533
1542
  async connectedTo(input) {
1534
1543
  let chainId = await this.connector.getChainId();
1535
1544
  const blockchain = Blockchains.findByNetworkId(chainId);
1545
+ if(!blockchain) { return false }
1536
1546
  if(input) {
1537
1547
  return input === blockchain.name
1538
1548
  } else {