@rango-dev/provider-metamask 0.30.0 → 0.30.1-next.1

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/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # [0.30.0](https://github.com/rango-exchange/rango-client/compare/provider-metamask@0.29.0...provider-metamask@0.30.0) (2024-04-09)
2
+
3
+
4
+
1
5
  # [0.29.0](https://github.com/rango-exchange/rango-client/compare/provider-metamask@0.28.0...provider-metamask@0.29.0) (2024-03-12)
2
6
 
3
7
 
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,QAcvB"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAqEA,wBAAgB,QAAQ,QAyBvB"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var c=Object.defineProperty;var o=(t,e)=>c(t,"name",{value:e,configurable:!0});import{canEagerlyConnectToEvm as g,canSwitchNetworkToEvm as p,getEvmAccounts as h,subscribeToEvm as k,switchNetworkForEvm as f,WalletTypes as w}from"@rango-dev/wallets-shared";import{evmBlockchains as d}from"rango-types";import{getCoinbaseInstance as a}from"@rango-dev/wallets-shared";function r(){let t=!!a(),{ethereum:e}=window;return t?a("metamask"):e&&e.isMetaMask?e:null}o(r,"metamask");import{DefaultEvmSigner as i}from"@rango-dev/signer-evm";import{DefaultSignerFactory as m,TransactionType as l}from"rango-types";function n(t){let e=new m;return e.registerSigner(l.EVM,new i(t)),e}o(n,"getSigners");var b=w.META_MASK,W={type:b},B=r,D=o(async({instance:t})=>{let{accounts:e,chainId:s}=await h(t);return{accounts:e,chainId:s}},"connect"),L=k,R=f,U=p,j=n,O=g,V=o(t=>{let e=d(t);return{name:"MetaMask",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/metamask/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en",BRAVE:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en",FIREFOX:"https://addons.mozilla.org/en-US/firefox/addon/ether-metamask",EDGE:"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US",DEFAULT:"https://metamask.io/download/"},color:"#dac7ae",supportedChains:e}},"getWalletInfo");export{O as canEagerConnect,U as canSwitchNetworkTo,W as config,D as connect,B as getInstance,j as getSigners,V as getWalletInfo,L as subscribe,R as switchNetwork};
1
+ var s=Object.defineProperty;var a=(t,e)=>s(t,"name",{value:e,configurable:!0});import{canEagerlyConnectToEvm as p,canSwitchNetworkToEvm as g,getEvmAccounts as k,subscribeToEvm as m,switchNetworkForEvm as d,WalletTypes as w}from"@rango-dev/wallets-shared";import{evmBlockchains as v}from"rango-types";function i(t){return!(!!!t?.isMetaMask||t.isBraveWallet&&!t._events&&!t._state||t.isApexWallet||t.isAvalanche||t.isBitKeep||t.isBlockWallet||t.isCoin98||t.isFordefi||t.__XDEFI||t.isMathWallet||t.isOkxWallet||t.isOKExWallet||t.isOneInchIOSWallet||t.isOneInchAndroidWallet||t.isOpera||t.isPortal||t.isRabby||t.isDefiant||t.isTokenPocket||t.isTokenary||t.isZeal||t.isZerion)}a(i,"isMetamaskProvider");function o(){let{ethereum:t}=window;if(Array.isArray(t?.providers)){let e=t.providers;e.length>0&&Array.isArray(t.providers[0]?.providers)&&e[0]?.providers.length>0&&(e=e[0]?.providers);let n=e.find(i);if(n)return n}return t?.isMetaMask?t:null}a(o,"metamask");import{DefaultEvmSigner as l}from"@rango-dev/signer-evm";import{DefaultSignerFactory as c,TransactionType as f}from"rango-types";function r(t){let e=new c;return e.registerSigner(f.EVM,new l(t)),e}a(r,"getSigners");var y=w.META_MASK,I={type:y},B=o,N=a(async({instance:t})=>{let{accounts:e,chainId:n}=await k(t);return{accounts:e,chainId:n}},"connect"),O=m,D=d,_=g,L=r,P=p,R=a(t=>{let e=v(t);return{name:"MetaMask",img:"https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/metamask/icon.svg",installLink:{CHROME:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en",BRAVE:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en",FIREFOX:"https://addons.mozilla.org/en-US/firefox/addon/ether-metamask",EDGE:"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US",DEFAULT:"https://metamask.io/download/"},color:"#dac7ae",supportedChains:e}},"getWalletInfo");export{P as canEagerConnect,_ as canSwitchNetworkTo,I as config,N as connect,B as getInstance,L as getSigners,R as getWalletInfo,O as subscribe,D as switchNetwork};
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts", "../src/helpers.ts", "../src/signer.ts"],
4
- "sourcesContent": ["import type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains } from 'rango-types';\n\nimport { metamask as metamask_instance } from './helpers';\nimport signer from './signer';\n\nconst WALLET = WalletTypes.META_MASK;\n\nexport const config = {\n type: WALLET,\n};\n\nexport const getInstance = metamask_instance;\nexport const connect: Connect = async ({ instance }) => {\n /*\n * Note: We need to get `chainId` here, because for the first time\n * after opening the browser, wallet is locked, and don't give us accounts and chainId\n * on `check` phase, so `network` will be null. For this case we need to get chainId\n * whenever we are requesting accounts.\n */\n const { accounts, chainId } = await getEvmAccounts(instance);\n\n return {\n accounts,\n chainId,\n };\n};\n\nexport const subscribe: Subscribe = subscribeToEvm;\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: any) => SignerFactory = signer;\n\nexport const canEagerConnect: CanEagerConnect = canEagerlyConnectToEvm;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n return {\n name: 'MetaMask',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/metamask/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en',\n\n FIREFOX: 'https://addons.mozilla.org/en-US/firefox/addon/ether-metamask',\n EDGE: 'https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US',\n DEFAULT: 'https://metamask.io/download/',\n },\n color: '#dac7ae',\n supportedChains: evms,\n };\n};\n", "import { getCoinbaseInstance } from '@rango-dev/wallets-shared';\n\nexport function metamask() {\n const isCoinbaseWalletAvailable = !!getCoinbaseInstance();\n const { ethereum } = window;\n\n // Some wallets overriding the metamask. So we need to get it properly.\n if (isCoinbaseWalletAvailable) {\n // Getting intance from overrided structure from coinbase.\n return getCoinbaseInstance('metamask');\n } else {\n if (!!ethereum && ethereum.isMetaMask) {\n return ethereum;\n }\n }\n return null;\n}\n", "import { DefaultEvmSigner } from '@rango-dev/signer-evm';\nimport {\n DefaultSignerFactory,\n SignerFactory,\n TransactionType as TxType,\n} from 'rango-types';\n\nexport default function getSigners(provider: any): SignerFactory {\n const signers = new DefaultSignerFactory();\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(provider));\n return signers;\n}\n"],
5
- "mappings": "+EAUA,OACE,0BAAAA,EACA,yBAAAC,EACA,kBAAAC,EACA,kBAAAC,EACA,uBAAAC,EACA,eAAAC,MACK,4BACP,OAAS,kBAAAC,MAAsB,cClB/B,OAAS,uBAAAC,MAA2B,4BAE7B,SAASC,GAAW,CACzB,IAAMC,EAA4B,CAAC,CAACC,EAAoB,EAClD,CAAE,SAAAC,CAAS,EAAI,OAGrB,OAAIF,EAEKC,EAAoB,UAAU,EAE/BC,GAAYA,EAAS,WAClBA,EAGJ,IACT,CAdgBC,EAAAJ,EAAA,YCFhB,OAAS,oBAAAK,MAAwB,wBACjC,OACE,wBAAAC,EAEA,mBAAmBC,MACd,cAEQ,SAARC,EAA4BC,EAA8B,CAC/D,IAAMC,EAAU,IAAIC,EACpB,OAAAD,EAAQ,eAAeE,EAAO,IAAK,IAAIC,EAAiBJ,CAAQ,CAAC,EAC1DC,CACT,CAJwBI,EAAAN,EAAA,cFgBxB,IAAMO,EAASC,EAAY,UAEdC,EAAS,CACpB,KAAMF,CACR,EAEaG,EAAcC,EACdC,EAAmBC,EAAA,MAAO,CAAE,SAAAC,CAAS,IAAM,CAOtD,GAAM,CAAE,SAAAC,EAAU,QAAAC,CAAQ,EAAI,MAAMC,EAAeH,CAAQ,EAE3D,MAAO,CACL,SAAAC,EACA,QAAAC,CACF,CACF,EAbgC,WAenBE,EAAuBC,EAEvBC,EAA+BC,EAE/BC,EAAuCC,EAEvCC,EAA+CA,EAE/CC,EAAmCC,EAEnCC,EAAkEd,EAC7Ee,GACG,CACH,IAAMC,EAAOC,EAAeF,CAAc,EAC1C,MAAO,CACL,KAAM,WACN,IAAK,yFACL,YAAa,CACX,OACE,4FACF,MACE,4FAEF,QAAS,gEACT,KAAM,uGACN,QAAS,+BACX,EACA,MAAO,UACP,gBAAiBC,CACnB,CACF,EApB+E",
6
- "names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "getCoinbaseInstance", "metamask", "isCoinbaseWalletAvailable", "getCoinbaseInstance", "ethereum", "__name", "DefaultEvmSigner", "DefaultSignerFactory", "TxType", "getSigners", "provider", "signers", "DefaultSignerFactory", "TxType", "DefaultEvmSigner", "__name", "WALLET", "WalletTypes", "config", "getInstance", "metamask", "connect", "__name", "instance", "accounts", "chainId", "getEvmAccounts", "subscribe", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains"]
4
+ "sourcesContent": ["import type {\n CanEagerConnect,\n CanSwitchNetwork,\n Connect,\n Subscribe,\n SwitchNetwork,\n WalletInfo,\n} from '@rango-dev/wallets-shared';\nimport type { BlockchainMeta, SignerFactory } from 'rango-types';\n\nimport {\n canEagerlyConnectToEvm,\n canSwitchNetworkToEvm,\n getEvmAccounts,\n subscribeToEvm,\n switchNetworkForEvm,\n WalletTypes,\n} from '@rango-dev/wallets-shared';\nimport { evmBlockchains } from 'rango-types';\n\nimport { metamask as metamask_instance } from './helpers';\nimport signer from './signer';\n\nconst WALLET = WalletTypes.META_MASK;\n\nexport const config = {\n type: WALLET,\n};\n\nexport const getInstance = metamask_instance;\nexport const connect: Connect = async ({ instance }) => {\n /*\n * Note: We need to get `chainId` here, because for the first time\n * after opening the browser, wallet is locked, and don't give us accounts and chainId\n * on `check` phase, so `network` will be null. For this case we need to get chainId\n * whenever we are requesting accounts.\n */\n const { accounts, chainId } = await getEvmAccounts(instance);\n\n return {\n accounts,\n chainId,\n };\n};\n\nexport const subscribe: Subscribe = subscribeToEvm;\n\nexport const switchNetwork: SwitchNetwork = switchNetworkForEvm;\n\nexport const canSwitchNetworkTo: CanSwitchNetwork = canSwitchNetworkToEvm;\n\nexport const getSigners: (provider: any) => SignerFactory = signer;\n\nexport const canEagerConnect: CanEagerConnect = canEagerlyConnectToEvm;\n\nexport const getWalletInfo: (allBlockChains: BlockchainMeta[]) => WalletInfo = (\n allBlockChains\n) => {\n const evms = evmBlockchains(allBlockChains);\n return {\n name: 'MetaMask',\n img: 'https://raw.githubusercontent.com/rango-exchange/assets/main/wallets/metamask/icon.svg',\n installLink: {\n CHROME:\n 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en',\n BRAVE:\n 'https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn?hl=en',\n\n FIREFOX: 'https://addons.mozilla.org/en-US/firefox/addon/ether-metamask',\n EDGE: 'https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm?hl=en-US',\n DEFAULT: 'https://metamask.io/download/',\n },\n color: '#dac7ae',\n supportedChains: evms,\n };\n};\n", "function isMetamaskProvider(ethereum: any): boolean {\n const isMetamask = !!ethereum?.isMetaMask;\n if (!isMetamask) {\n return false;\n }\n /*\n * Brave tries to make itself look like MetaMask\n * Could also try RPC `web3_clientVersion` if following is unreliable\n */\n if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state) {\n return false;\n }\n if (ethereum.isApexWallet) {\n return false;\n }\n if (ethereum.isAvalanche) {\n return false;\n }\n if (ethereum.isBitKeep) {\n return false;\n }\n if (ethereum.isBlockWallet) {\n return false;\n }\n if (ethereum.isCoin98) {\n return false;\n }\n if (ethereum.isFordefi) {\n return false;\n }\n if (ethereum.__XDEFI) {\n return false;\n }\n if (ethereum.isMathWallet) {\n return false;\n }\n if (ethereum.isOkxWallet || ethereum.isOKExWallet) {\n return false;\n }\n if (ethereum.isOneInchIOSWallet || ethereum.isOneInchAndroidWallet) {\n return false;\n }\n if (ethereum.isOpera) {\n return false;\n }\n if (ethereum.isPortal) {\n return false;\n }\n if (ethereum.isRabby) {\n return false;\n }\n if (ethereum.isDefiant) {\n return false;\n }\n if (ethereum.isTokenPocket) {\n return false;\n }\n if (ethereum.isTokenary) {\n return false;\n }\n if (ethereum.isZeal) {\n return false;\n }\n if (ethereum.isZerion) {\n return false;\n }\n return true;\n}\n\nexport function metamask() {\n const { ethereum } = window;\n\n if (Array.isArray(ethereum?.providers)) {\n /*\n * When alternative EVM wallets are enabled and take precedence over MetaMask,\n * they append MetaMask or other EVM wallets to the ethereum.providers array.\n * example: 'Core' wallet\n */\n let providers = ethereum.providers;\n //Exceptions exist, such as when only 'MetaMask' and 'Coinbase' are enabled.\n if (\n providers.length > 0 &&\n Array.isArray(ethereum.providers[0]?.providers) &&\n providers[0]?.providers.length > 0\n ) {\n providers = providers[0]?.providers;\n }\n\n const metamaskProvider = providers.find(isMetamaskProvider);\n if (metamaskProvider) {\n return metamaskProvider;\n }\n }\n return ethereum?.isMetaMask ? ethereum : null;\n}\n", "import { DefaultEvmSigner } from '@rango-dev/signer-evm';\nimport {\n DefaultSignerFactory,\n SignerFactory,\n TransactionType as TxType,\n} from 'rango-types';\n\nexport default function getSigners(provider: any): SignerFactory {\n const signers = new DefaultSignerFactory();\n signers.registerSigner(TxType.EVM, new DefaultEvmSigner(provider));\n return signers;\n}\n"],
5
+ "mappings": "+EAUA,OACE,0BAAAA,EACA,yBAAAC,EACA,kBAAAC,EACA,kBAAAC,EACA,uBAAAC,EACA,eAAAC,MACK,4BACP,OAAS,kBAAAC,MAAsB,cClB/B,SAASC,EAAmBC,EAAwB,CA+DlD,MA7DI,GADe,CAAC,CAACA,GAAU,YAQ3BA,EAAS,eAAiB,CAACA,EAAS,SAAW,CAACA,EAAS,QAGzDA,EAAS,cAGTA,EAAS,aAGTA,EAAS,WAGTA,EAAS,eAGTA,EAAS,UAGTA,EAAS,WAGTA,EAAS,SAGTA,EAAS,cAGTA,EAAS,aAAeA,EAAS,cAGjCA,EAAS,oBAAsBA,EAAS,wBAGxCA,EAAS,SAGTA,EAAS,UAGTA,EAAS,SAGTA,EAAS,WAGTA,EAAS,eAGTA,EAAS,YAGTA,EAAS,QAGTA,EAAS,SAIf,CAnESC,EAAAF,EAAA,sBAqEF,SAASG,GAAW,CACzB,GAAM,CAAE,SAAAF,CAAS,EAAI,OAErB,GAAI,MAAM,QAAQA,GAAU,SAAS,EAAG,CAMtC,IAAIG,EAAYH,EAAS,UAGvBG,EAAU,OAAS,GACnB,MAAM,QAAQH,EAAS,UAAU,CAAC,GAAG,SAAS,GAC9CG,EAAU,CAAC,GAAG,UAAU,OAAS,IAEjCA,EAAYA,EAAU,CAAC,GAAG,WAG5B,IAAMC,EAAmBD,EAAU,KAAKJ,CAAkB,EAC1D,GAAIK,EACF,OAAOA,CAEX,CACA,OAAOJ,GAAU,WAAaA,EAAW,IAC3C,CAzBgBC,EAAAC,EAAA,YCrEhB,OAAS,oBAAAG,MAAwB,wBACjC,OACE,wBAAAC,EAEA,mBAAmBC,MACd,cAEQ,SAARC,EAA4BC,EAA8B,CAC/D,IAAMC,EAAU,IAAIC,EACpB,OAAAD,EAAQ,eAAeE,EAAO,IAAK,IAAIC,EAAiBJ,CAAQ,CAAC,EAC1DC,CACT,CAJwBI,EAAAN,EAAA,cFgBxB,IAAMO,EAASC,EAAY,UAEdC,EAAS,CACpB,KAAMF,CACR,EAEaG,EAAcC,EACdC,EAAmBC,EAAA,MAAO,CAAE,SAAAC,CAAS,IAAM,CAOtD,GAAM,CAAE,SAAAC,EAAU,QAAAC,CAAQ,EAAI,MAAMC,EAAeH,CAAQ,EAE3D,MAAO,CACL,SAAAC,EACA,QAAAC,CACF,CACF,EAbgC,WAenBE,EAAuBC,EAEvBC,EAA+BC,EAE/BC,EAAuCC,EAEvCC,EAA+CA,EAE/CC,EAAmCC,EAEnCC,EAAkEd,EAC7Ee,GACG,CACH,IAAMC,EAAOC,EAAeF,CAAc,EAC1C,MAAO,CACL,KAAM,WACN,IAAK,yFACL,YAAa,CACX,OACE,4FACF,MACE,4FAEF,QAAS,gEACT,KAAM,uGACN,QAAS,+BACX,EACA,MAAO,UACP,gBAAiBC,CACnB,CACF,EApB+E",
6
+ "names": ["canEagerlyConnectToEvm", "canSwitchNetworkToEvm", "getEvmAccounts", "subscribeToEvm", "switchNetworkForEvm", "WalletTypes", "evmBlockchains", "isMetamaskProvider", "ethereum", "__name", "metamask", "providers", "metamaskProvider", "DefaultEvmSigner", "DefaultSignerFactory", "TxType", "getSigners", "provider", "signers", "DefaultSignerFactory", "TxType", "DefaultEvmSigner", "__name", "WALLET", "WalletTypes", "config", "getInstance", "metamask", "connect", "__name", "instance", "accounts", "chainId", "getEvmAccounts", "subscribe", "subscribeToEvm", "switchNetwork", "switchNetworkForEvm", "canSwitchNetworkTo", "canSwitchNetworkToEvm", "getSigners", "canEagerConnect", "canEagerlyConnectToEvm", "getWalletInfo", "allBlockChains", "evms", "evmBlockchains"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rango-dev/provider-metamask",
3
- "version": "0.30.0",
3
+ "version": "0.30.1-next.1",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "source": "./src/index.ts",
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@rango-dev/signer-evm": "^0.26.0",
25
- "@rango-dev/wallets-shared": "^0.30.0",
25
+ "@rango-dev/wallets-shared": "^0.30.1-next.1",
26
26
  "rango-types": "^0.1.59"
27
27
  },
28
28
  "publishConfig": {
package/src/helpers.ts CHANGED
@@ -1,17 +1,95 @@
1
- import { getCoinbaseInstance } from '@rango-dev/wallets-shared';
1
+ function isMetamaskProvider(ethereum: any): boolean {
2
+ const isMetamask = !!ethereum?.isMetaMask;
3
+ if (!isMetamask) {
4
+ return false;
5
+ }
6
+ /*
7
+ * Brave tries to make itself look like MetaMask
8
+ * Could also try RPC `web3_clientVersion` if following is unreliable
9
+ */
10
+ if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state) {
11
+ return false;
12
+ }
13
+ if (ethereum.isApexWallet) {
14
+ return false;
15
+ }
16
+ if (ethereum.isAvalanche) {
17
+ return false;
18
+ }
19
+ if (ethereum.isBitKeep) {
20
+ return false;
21
+ }
22
+ if (ethereum.isBlockWallet) {
23
+ return false;
24
+ }
25
+ if (ethereum.isCoin98) {
26
+ return false;
27
+ }
28
+ if (ethereum.isFordefi) {
29
+ return false;
30
+ }
31
+ if (ethereum.__XDEFI) {
32
+ return false;
33
+ }
34
+ if (ethereum.isMathWallet) {
35
+ return false;
36
+ }
37
+ if (ethereum.isOkxWallet || ethereum.isOKExWallet) {
38
+ return false;
39
+ }
40
+ if (ethereum.isOneInchIOSWallet || ethereum.isOneInchAndroidWallet) {
41
+ return false;
42
+ }
43
+ if (ethereum.isOpera) {
44
+ return false;
45
+ }
46
+ if (ethereum.isPortal) {
47
+ return false;
48
+ }
49
+ if (ethereum.isRabby) {
50
+ return false;
51
+ }
52
+ if (ethereum.isDefiant) {
53
+ return false;
54
+ }
55
+ if (ethereum.isTokenPocket) {
56
+ return false;
57
+ }
58
+ if (ethereum.isTokenary) {
59
+ return false;
60
+ }
61
+ if (ethereum.isZeal) {
62
+ return false;
63
+ }
64
+ if (ethereum.isZerion) {
65
+ return false;
66
+ }
67
+ return true;
68
+ }
2
69
 
3
70
  export function metamask() {
4
- const isCoinbaseWalletAvailable = !!getCoinbaseInstance();
5
71
  const { ethereum } = window;
6
72
 
7
- // Some wallets overriding the metamask. So we need to get it properly.
8
- if (isCoinbaseWalletAvailable) {
9
- // Getting intance from overrided structure from coinbase.
10
- return getCoinbaseInstance('metamask');
11
- } else {
12
- if (!!ethereum && ethereum.isMetaMask) {
13
- return ethereum;
73
+ if (Array.isArray(ethereum?.providers)) {
74
+ /*
75
+ * When alternative EVM wallets are enabled and take precedence over MetaMask,
76
+ * they append MetaMask or other EVM wallets to the ethereum.providers array.
77
+ * example: 'Core' wallet
78
+ */
79
+ let providers = ethereum.providers;
80
+ //Exceptions exist, such as when only 'MetaMask' and 'Coinbase' are enabled.
81
+ if (
82
+ providers.length > 0 &&
83
+ Array.isArray(ethereum.providers[0]?.providers) &&
84
+ providers[0]?.providers.length > 0
85
+ ) {
86
+ providers = providers[0]?.providers;
87
+ }
88
+
89
+ const metamaskProvider = providers.find(isMetamaskProvider);
90
+ if (metamaskProvider) {
91
+ return metamaskProvider;
14
92
  }
15
93
  }
16
- return null;
94
+ return ethereum?.isMetaMask ? ethereum : null;
17
95
  }