@rango-dev/wallets-shared 0.22.0 → 0.23.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/CHANGELOG.md CHANGED
@@ -1,33 +1,4 @@
1
- # 0.22.0 (2023-12-24)
2
-
3
-
4
- ### Bug Fixes
5
-
6
- * add suggest and connect to wallet for experimental chain ([0002e69](https://github.com/yeager-eren/rango-client/commit/0002e69da90c58a00cbd50ca8ad601a12ed0e77a))
7
- * check and version promise should be called ([c9317b5](https://github.com/yeager-eren/rango-client/commit/c9317b5f5b177216f64314aa00208a382ef2829f))
8
- * fix bug of duplicate modals for wallet connect ([efb5482](https://github.com/yeager-eren/rango-client/commit/efb54827fd51e6c6c8f42c6abf33c3d7610755e8))
9
- * fix can switch network for wallet connect ([e3cdeac](https://github.com/yeager-eren/rango-client/commit/e3cdeacd836e254ea2d5384aab4b624a3e7259eb))
10
- * fix HMR for widget and playground ([8524820](https://github.com/yeager-eren/rango-client/commit/8524820f10cf0b8921f3db0c4f620ff98daa4103))
11
- * handle safe wallet in widget ([52fcca4](https://github.com/yeager-eren/rango-client/commit/52fcca49315f7e2edb4655ae7b9cd0792c2800d7))
12
- * handle switch network flow for wallet-connect ([8c4a17b](https://github.com/yeager-eren/rango-client/commit/8c4a17b47b2919820a4e0726f6d1c48b8994abe3))
13
- * refactor station wallet ([580a2af](https://github.com/yeager-eren/rango-client/commit/580a2af692f63a85921d69152464143551b3f748))
14
- * update rango-types and fix notification bugs ([993f185](https://github.com/yeager-eren/rango-client/commit/993f185e0b8c5e5e15a2c65ba2d85d1f9c8daa90))
15
-
16
-
17
- ### Features
18
-
19
- * add bitkeep wallet ([c02c3df](https://github.com/yeager-eren/rango-client/commit/c02c3dfd236070295eada74aeb97514f8dacd0ed))
20
- * add project id as a external value ([0c80404](https://github.com/yeager-eren/rango-client/commit/0c80404a8cacb6c5b0338dea1e416b0b11db254b))
21
- * don't show safe when not injected ([3e32420](https://github.com/yeager-eren/rango-client/commit/3e324208d9dcc8d11267a37bf6df84547975c1bf))
22
- * support braavos wallet ([fb38ebe](https://github.com/yeager-eren/rango-client/commit/fb38ebef00a33b92cabf506c88ef83d8c77cce84))
23
- * Support for WalletConnect 2 ([faedef0](https://github.com/yeager-eren/rango-client/commit/faedef0b5e6fc3c5ef881cbbe4ec05334cc1c910))
24
- * support safe wallet ([d04cbcd](https://github.com/yeager-eren/rango-client/commit/d04cbcd2a612755563512d9dff6f2312088d8b4d))
25
- * update confirm swap and confirm wallets components ([08c0f62](https://github.com/yeager-eren/rango-client/commit/08c0f622d0e691868848084d46a8df110bc9fc37))
26
-
27
-
28
- ### Reverts
29
-
30
- * Revert "support for rango-types cjs format" ([ed4e050](https://github.com/yeager-eren/rango-client/commit/ed4e050bfc0dcde7aeffa6b0d73b02080a5721eb))
1
+ # [0.23.0](https://github.com/rango-exchange/rango-client/compare/wallets-shared@0.21.0...wallets-shared@0.23.0) (2023-12-24)
31
2
 
32
3
 
33
4
 
package/dist/helpers.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { AddEthereumChainParameter, Connect, EvmNetworksChainInfo, InstallObjects, Network, Wallet } from './rango';
2
1
  import type { EvmBlockchainMeta } from 'rango-types';
2
+ import { EvmNetworksChainInfo, AddEthereumChainParameter, Network, Connect, Wallet, InstallObjects } from './rango';
3
3
  export { isAddress as isEvmAddress } from 'ethers/lib/utils.js';
4
4
  export declare function deepCopy(obj: any): any;
5
5
  export declare function switchOrAddNetworkForMetamaskCompatibleWallets(instance: any, network: Network, evmNetworksChainInfo: EvmNetworksChainInfo): Promise<void>;
@@ -15,13 +15,4 @@ export declare function getCoinbaseInstance(lookingFor?: 'coinbase' | 'metamask'
15
15
  export declare function sortWalletsBasedOnState(wallets: Wallet[]): Wallet[];
16
16
  export declare function detectInstallLink(install: InstallObjects | string): string;
17
17
  export declare function detectMobileScreens(): boolean;
18
- /**
19
- * Sample inputs are:
20
- * - "metamask-ETH"
21
- * - "metamask-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
22
- * - "token-pocket-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
23
- * Returns "wallet and network" separately, even if the wallet is dashed inside.
24
- *
25
- */
26
- export declare function splitWalletNetwork(input: string): string[];
27
18
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,OAAO,EACP,oBAAoB,EACpB,cAAc,EACd,OAAO,EACP,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIrD,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGhE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAoCtC;AAED,wBAAsB,8CAA8C,CAClE,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,OAAO,EAChB,oBAAoB,EAAE,oBAAoB,iBAkC3C;AAED,wBAAsB,OAAO,CAAC,CAAC,GAAG,GAAG,EACnC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,EACxB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED,eAAO,MAAM,sCAAsC,mBACjC,iBAAiB,EAAE;;CAiBlC,CAAC;AAEJ,eAAO,MAAM,iBAAiB,wBACP,oBAAoB;;CAmB1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OAS/B,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,UAAU,GAAE,UAAU,GAAG,UAAuB,OAiCjD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAMnE;AAgBD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,CAe1E;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAED;;;;;;;GAOG;AAEH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAY1D"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,OAAO,EAEP,OAAO,EACP,MAAM,EACN,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGhE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAiCtC;AAED,wBAAsB,8CAA8C,CAClE,QAAQ,EAAE,GAAG,EACb,OAAO,EAAE,OAAO,EAChB,oBAAoB,EAAE,oBAAoB,iBA6B3C;AAED,wBAAgB,OAAO,CAAC,CAAC,GAAG,GAAG,EAC7B,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,EACxB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED,eAAO,MAAM,sCAAsC,mBACjC,iBAAiB,EAAE;;CAiBlC,CAAC;AAEJ,eAAO,MAAM,iBAAiB,wBACP,oBAAoB;;CAiB1C,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OAS/B,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,UAAU,GAAE,UAAU,GAAG,UAAuB,OA4BjD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAMnE;AAcD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,CAgB1E;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var N=Object.defineProperty;var a=(e,n)=>N(e,"name",{value:n,configurable:!0});var b=!process.env.NODE_ENV||process.env.NODE_ENV==="development",L=a((e,n)=>(e=typeof e=="string"&&e.startsWith("0x")?parseInt(e):e,Object.values(p).includes(String(e))?e:e==="Binance-Chain-Tigris"?"BNB":n.filter(o=>!!o.chainId).find(o=>(o.chainId?.startsWith("0x")?parseInt(o.chainId):o.chainId)==e)?.name||null),"getBlockChainNameFromId"),U=a((e,n)=>n[e]?.chainId||null,"getBlockchainChainIdByName"),H=a(e=>Buffer.from(e).toString("hex"),"uint8ArrayToHex"),M=(s=>(s.META_MASK="metamask",s.WALLET_CONNECT_2="wallet-connect-2",s.TRUST_WALLET="trust-wallet",s.KEPLR="keplr",s.PHANTOM="phantom",s.BITGET="bitget",s.TRON_LINK="tron-link",s.COINBASE="coinbase",s.XDEFI="xdefi",s.CLOVER="clover",s.ARGENTX="argentx",s.FRONTIER="frontier",s.COSMOSTATION="cosmostation",s.COIN98="coin98",s.SAFEPAL="safepal",s.SAFE="safe",s.TOKEN_POCKET="token-pocket",s.BRAVE="brave",s.BRAAVOS="braavos",s.MATH="math",s.EXODUS="exodus",s.OKX="okx",s.HALO="halo",s.LEAP="leap",s.LEAP_COSMOS="leap-cosmos",s.STATION="station",s.ENKRYPT="enkrypt",s.TAHO="taho",s.MY_TON_WALLET="mytonwallet",s))(M||{}),p=(r=>(r.BTC="BTC",r.BSC="BSC",r.LTC="LTC",r.THORCHAIN="THOR",r.BCH="BCH",r.BINANCE="BNB",r.ETHEREUM="ETH",r.POLYGON="POLYGON",r.TERRA="TERRA",r.POLKADOT="",r.TRON="TRON",r.DOGE="DOGE",r.HARMONY="HARMONY",r.AVAX_CCHAIN="AVAX_CCHAIN",r.FANTOM="FANTOM",r.MOONBEAM="MOONBEAM",r.ARBITRUM="ARBITRUM",r.BOBA="BOBA",r.OPTIMISM="OPTIMISM",r.FUSE="FUSE",r.CRONOS="CRONOS",r.SOLANA="SOLANA",r.MOONRIVER="MOONRIVER",r.GNOSIS="GNOSIS",r.COSMOS="COSMOS",r.OSMOSIS="OSMOSIS",r.AKASH="AKASH",r.IRIS="IRIS",r.PERSISTENCE="PERSISTENCE",r.SENTINEL="SENTINEL",r.REGEN="REGEN",r.CRYPTO_ORG="CRYPTO_ORG",r.SIF="SIF",r.CHIHUAHUA="CHIHUAHUA",r.JUNO="JUNO",r.KUJIRA="KUJIRA",r.STARNAME="STARNAME",r.COMDEX="COMDEX",r.STARGAZE="STARGAZE",r.DESMOS="DESMOS",r.BITCANNA="BITCANNA",r.SECRET="SECRET",r.INJECTIVE="INJECTIVE",r.LUMNETWORK="LUMNETWORK",r.BANDCHAIN="BANDCHAIN",r.EMONEY="EMONEY",r.BITSONG="BITSONG",r.KI="KI",r.MEDIBLOC="MEDIBLOC",r.KONSTELLATION="KONSTELLATION",r.UMEE="UMEE",r.STARKNET="STARKNET",r.TON="TON",r.Unknown="Unkown",r))(p||{}),_=["BTC","LTC","THOR","BCH","BNB"],D=["keplr","cosmostation","leap-cosmos"];import{isAddress as Q}from"ethers/lib/utils.js";function E(e){let n;if(e==null||typeof e!="object")return e;if(e instanceof Date)return n=new Date,n.setTime(e.getTime()),n;if(e instanceof Array){n=[];for(let t=0,o=e.length;t<o;t++)n[t]=E(e[t]);return n}if(e instanceof Object){n={};for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=E(e[t]));return n}throw new Error("Unable to copy obj! Its type isn't supported.")}a(E,"deepCopy");async function I(e,n,t){let o=t[n];try{await e.request({method:"wallet_switchEthereumChain",params:[{chainId:o?.chainId}]})}catch(i){let l=i;if(o)(l.code===4902||!l.code)&&await e.request({method:"wallet_addEthereumChain",params:[o]});else throw new Error(`It seems you don't have ${n} network on your wallet. Please add it manually.`);throw i}}a(I,"switchOrAddNetworkForMetamaskCompatibleWallets");async function V(e,n){let t=new Promise((o,i)=>{setTimeout(()=>{i("Timeout!")},n)});return Promise.race([e,t])}a(V,"timeout");var g=a(e=>e.reduce((n,t)=>(n[t.name]={chainName:t.info.chainName,chainId:t.chainId,nativeCurrency:t.info.nativeCurrency,rpcUrls:t.info.rpcUrls,blockExplorerUrls:t.info.blockExplorerUrls},n),{}),"convertEvmBlockchainMetaToEvmChainInfo"),X=a(e=>Object.fromEntries(new Map(Object.keys(e).map(n=>{let t=e[n];return t?[parseInt(t.chainId),t.rpcUrls[0]]:[0,""]}))),"evmChainsToRpcMap"),Y=a(async({instance:e})=>({accounts:[(await e.connect()).publicKey.toString()],chainId:"SOLANA"}),"getSolanaAccounts");function W(e="coinbase"){let{ethereum:n,coinbaseSolana:t}=window,o=new Map;if(n){let i=e==="metamask"?"isMetaMask":"isCoinbaseWallet";if(e==="coinbase"&&n[i])o.set("ETH",n);else if(n.providers?.length){let l=n.providers.find(c=>c[i]);o.set("ETH",l)}}return t&&e==="coinbase"&&o.set("SOLANA",t),o.size===0?null:e==="metamask"?o.get("ETH"):o}a(W,"getCoinbaseInstance");function q(e){return e.sort((n,t)=>Number(t.connected)-Number(n.connected)||Number(t.extensionAvailable)-Number(n.extensionAvailable))}a(q,"sortWalletsBasedOnState");function x(){let e=!1,n=navigator;return n.brave&&n.brave.isBrave&&n.brave.isBrave().then(t=>{t&&(e=!0)}),e}a(x,"isBrave");function J(e){if(typeof e!="object")return e;let n;return x()?n=e.BRAVE:navigator.userAgent?.toLowerCase().indexOf("chrome")!==-1?n=e.CHROME:navigator.userAgent?.toLowerCase().indexOf("firefox")!==-1?n=e.FIREFOX:navigator.userAgent?.toLowerCase().indexOf("edge")!==-1&&(n=e.EDGE),n||e.DEFAULT}a(J,"detectInstallLink");function z(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}a(z,"detectMobileScreens");function $(e){let t=(e?.split(":")[0]||"").split("-"),o=t[t.length-1],i=t.slice(0,-1);return i[i.length-1]===o&&i.pop(),[i.join("-"),o]}a($,"splitWalletNetwork");import{isEvmBlockchain as A}from"rango-types";async function re(e){let[n,t]=await Promise.all([e.request({method:"eth_requestAccounts"}),e.request({method:"eth_chainId"})]);return{accounts:n,chainId:t}}a(re,"getEvmAccounts");var ae=a(({instance:e,state:n,updateChainId:t,updateAccounts:o})=>{e?.on("accountsChanged",i=>{n.connected&&o(i)}),e?.on("chainChanged",i=>{t(i)})},"subscribeToEvm"),ie=a(async({instance:e})=>{try{return!!(await e.request({method:"eth_accounts"})).length}catch{return!1}},"canEagerlyConnectToEvm"),se=a(async({instance:e,network:n,meta:t})=>{let o=t.filter(A),i=T(e,"ETH");await I(i,n,g(o))},"switchNetworkForEvm"),ce=a(({network:e,meta:n})=>C(n).includes(e),"canSwitchNetworkToEvm");function C(e){return e.filter(A).map(n=>n.name)}a(C,"evmNetworkNames");function y(e,n){return e&&C(n).includes(e)?"ETH":null}a(y,"getEthChainsInstance");function B(e,n){return e?C(n).includes(e):!1}a(B,"isEvmNetwork");function le(e,n,t){t=t||"ETH";let o=B(t,n)?y(t,n):t;return e&&o?e.get(o):null}a(le,"chooseInstance");function T(e,n){return e.size?e.get(n):e}a(T,"getNetworkInstance");function me(e,n){return n&&e[n]?e[n].size?e[n].get("ETH"):e[n]:null}a(me,"getEvmProvider");var v=a(e=>e.filter(n=>!n.info?.experimental).map(n=>n.chainId).filter(n=>!!n),"getCosmosMainChainsIds"),R=a(e=>e.filter(n=>n.info?.experimental).map(n=>n.chainId).filter(n=>!!n),"getCosmosMiscChainsIds"),O=a(e=>e.filter(n=>!!n.info).filter(n=>!!n.chainId).reduce((n,t)=>{let o=E(t.info);o.stakeCurrency.coinImageUrl=window.location.origin+o.stakeCurrency.coinImageUrl,o.currencies=o.currencies.map(c=>({...c,coinImageUrl:window.location.origin+c.coinImageUrl})),o.feeCurrencies=o.feeCurrencies.map(c=>({...c,coinImageUrl:window.location.origin+c.coinImageUrl})),o.gasPriceStep||delete o.gasPriceStep;let{experimental:i,...l}=o;return n[t.name]={id:t.chainId,info:{...l,chainId:t.chainId},experimental:i},n},{}),"getCosmosExperimentalChainInfo");async function P({desiredChainIds:e,instance:n}){let t=e.map(c=>({signer:n.getOfflineSigner(c),chainId:c})).filter(Boolean),o=t.map(({signer:c})=>c.getAccounts()),i=await Promise.allSettled(o),l=[];return i.forEach((c,m)=>{if(c.status!=="fulfilled")return;let u=c.value,{chainId:d}=t[m],h=u.map(f=>f.address);l.push({accounts:h,chainId:d})}),l}a(P,"getMainAccounts");async function k({excludedChain:e,instance:n,meta:t}){let o=R(t).filter(m=>m!==e).map(m=>({signer:n.getOfflineSigner(m),chainId:m})),i=o.map(async({signer:m})=>m.getAccounts()),l=await Promise.allSettled(i),c=[];return l.forEach((m,u)=>{if(m.status!=="fulfilled")return;let d=m.value,{chainId:h}=o[u],f=d.map(S=>S.address);c.push({accounts:f,chainId:h})}),c}a(k,"tryRequestMiscAccounts");var de=a(async({instance:e,network:n,meta:t})=>{let o=n?O(t)[n]:null;if(n&&!o)throw new Error(`You need to add ${n} to "COSMOS_EXPERIMENTAL_CHAINS_INFO" first.`);o&&await e.experimentalSuggestChain(o.info);let i=v(t);o&&i.push(o.id),i=Array.from(new Set(i)).filter(Boolean),await e.enable(i);let l=await P({desiredChainIds:i,instance:e}),c=o?o.id:void 0,m=c?await k({instance:e,meta:t,excludedChain:c}):[];return[...l,...m]},"getCosmosAccounts"),he=a(async e=>{let{instance:n,meta:t,network:o}=e,i=o?O(t)[o]:null;if(!i)throw new Error(`You need to add ${o} to "COSMOS_EXPERIMENTAL_CHAINS_INFO" first.`);await n.experimentalSuggestChain(i.info)},"suggestCosmosChain");export{b as IS_DEV,D as KEPLR_COMPATIBLE_WALLETS,p as Networks,M as WalletTypes,_ as XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,ie as canEagerlyConnectToEvm,ce as canSwitchNetworkToEvm,le as chooseInstance,g as convertEvmBlockchainMetaToEvmChainInfo,E as deepCopy,J as detectInstallLink,z as detectMobileScreens,X as evmChainsToRpcMap,C as evmNetworkNames,L as getBlockChainNameFromId,U as getBlockchainChainIdByName,W as getCoinbaseInstance,de as getCosmosAccounts,O as getCosmosExperimentalChainInfo,y as getEthChainsInstance,re as getEvmAccounts,me as getEvmProvider,T as getNetworkInstance,Y as getSolanaAccounts,Q as isEvmAddress,q as sortWalletsBasedOnState,$ as splitWalletNetwork,ae as subscribeToEvm,he as suggestCosmosChain,se as switchNetworkForEvm,I as switchOrAddNetworkForMetamaskCompatibleWallets,V as timeout,H as uint8ArrayToHex};
1
+ var N=Object.defineProperty;var a=(e,n)=>N(e,"name",{value:n,configurable:!0});var w=!process.env.NODE_ENV||process.env.NODE_ENV==="development",L=a((e,n)=>(e=typeof e=="string"&&e.startsWith("0x")?parseInt(e):e,Object.values(p).includes(String(e))?e:e==="Binance-Chain-Tigris"?"BNB":n.filter(r=>!!r.chainId).find(r=>(r.chainId?.startsWith("0x")?parseInt(r.chainId):r.chainId)==e)?.name||null),"getBlockChainNameFromId"),U=a((e,n)=>n[e]?.chainId||null,"getBlockchainChainIdByName"),H=a(e=>Buffer.from(e).toString("hex"),"uint8ArrayToHex"),M=(s=>(s.META_MASK="metamask",s.WALLET_CONNECT_2="wallet-connect-2",s.TRUST_WALLET="trust-wallet",s.KEPLR="keplr",s.PHANTOM="phantom",s.BINANCE_CHAIN="binance-chain",s.BITGET="bitget",s.TRON_LINK="tron-link",s.COINBASE="coinbase",s.XDEFI="xdefi",s.CLOVER="clover",s.ARGENTX="argentx",s.FRONTIER="frontier",s.COSMOSTATION="cosmostation",s.COIN98="coin98",s.SAFEPAL="safepal",s.SAFE="safe",s.TOKEN_POCKET="token-pocket",s.BRAVE="brave",s.BRAAVOS="braavos",s.MATH="math",s.EXODUS="exodus",s.OKX="okx",s.HALO="halo",s.LEAP="leap",s.LEAP_COSMOS="leap-cosmos",s.STATION="station",s.ENKRYPT="enkrypt",s.TAHO="taho",s.MY_TON_WALLET="mytonwallet",s))(M||{}),p=(o=>(o.BTC="BTC",o.BSC="BSC",o.LTC="LTC",o.THORCHAIN="THOR",o.BCH="BCH",o.BINANCE="BNB",o.ETHEREUM="ETH",o.POLYGON="POLYGON",o.TERRA="TERRA",o.POLKADOT="",o.TRON="TRON",o.DOGE="DOGE",o.HARMONY="HARMONY",o.AVAX_CCHAIN="AVAX_CCHAIN",o.FANTOM="FANTOM",o.MOONBEAM="MOONBEAM",o.ARBITRUM="ARBITRUM",o.BOBA="BOBA",o.OPTIMISM="OPTIMISM",o.FUSE="FUSE",o.CRONOS="CRONOS",o.SOLANA="SOLANA",o.MOONRIVER="MOONRIVER",o.GNOSIS="GNOSIS",o.COSMOS="COSMOS",o.OSMOSIS="OSMOSIS",o.AKASH="AKASH",o.IRIS="IRIS",o.PERSISTENCE="PERSISTENCE",o.SENTINEL="SENTINEL",o.REGEN="REGEN",o.CRYPTO_ORG="CRYPTO_ORG",o.SIF="SIF",o.CHIHUAHUA="CHIHUAHUA",o.JUNO="JUNO",o.KUJIRA="KUJIRA",o.STARNAME="STARNAME",o.COMDEX="COMDEX",o.STARGAZE="STARGAZE",o.DESMOS="DESMOS",o.BITCANNA="BITCANNA",o.SECRET="SECRET",o.INJECTIVE="INJECTIVE",o.LUMNETWORK="LUMNETWORK",o.BANDCHAIN="BANDCHAIN",o.EMONEY="EMONEY",o.BITSONG="BITSONG",o.KI="KI",o.MEDIBLOC="MEDIBLOC",o.KONSTELLATION="KONSTELLATION",o.UMEE="UMEE",o.STARKNET="STARKNET",o.TON="TON",o.Unknown="Unkown",o))(p||{}),_=["BTC","LTC","THOR","BCH","BNB"],D=["keplr","cosmostation","leap-cosmos"];import{isAddress as re}from"ethers/lib/utils.js";function E(e){let n;if(e==null||typeof e!="object")return e;if(e instanceof Date)return n=new Date,n.setTime(e.getTime()),n;if(e instanceof Array){n=[];for(let t=0,r=e.length;t<r;t++)n[t]=E(e[t]);return n}if(e instanceof Object){n={};for(let t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=E(e[t]));return n}throw new Error("Unable to copy obj! Its type isn't supported.")}a(E,"deepCopy");async function I(e,n,t){let r=t[n];try{await e.request({method:"wallet_switchEthereumChain",params:[{chainId:r?.chainId}]})}catch(i){let m=i;if(r)(m.code===4902||!m.code)&&await e.request({method:"wallet_addEthereumChain",params:[r]});else throw new Error(`It seems you don't have ${n} network on your wallet. Please add it manually.`);throw i}}a(I,"switchOrAddNetworkForMetamaskCompatibleWallets");function $(e,n){let t=new Promise((r,i)=>{setTimeout(()=>{i("Timeout!")},n)});return Promise.race([e,t])}a($,"timeout");var A=a(e=>e.reduce((n,t)=>(n[t.name]={chainName:t.info.chainName,chainId:t.chainId,nativeCurrency:t.info.nativeCurrency,rpcUrls:t.info.rpcUrls,blockExplorerUrls:t.info.blockExplorerUrls},n),{}),"convertEvmBlockchainMetaToEvmChainInfo"),z=a(e=>Object.fromEntries(new Map(Object.keys(e).map(n=>{let t=e[n];return t?[parseInt(t.chainId),t.rpcUrls[0]]:[0,""]}))),"evmChainsToRpcMap"),Z=a(async({instance:e})=>({accounts:[(await e.connect()).publicKey.toString()],chainId:"SOLANA"}),"getSolanaAccounts");function j(e="coinbase"){let{ethereum:n,coinbaseSolana:t}=window,r=new Map;if(n){let i=e==="metamask"?"isMetaMask":"isCoinbaseWallet";if(e==="coinbase"&&n[i])r.set("ETH",n);else if(n.providers?.length){let m=n.providers.find(c=>c[i]);r.set("ETH",m)}}return t&&e==="coinbase"&&r.set("SOLANA",t),r.size===0?null:e==="metamask"?r.get("ETH"):r}a(j,"getCoinbaseInstance");function Q(e){return e.sort((n,t)=>Number(t.connected)-Number(n.connected)||Number(t.extensionAvailable)-Number(n.extensionAvailable))}a(Q,"sortWalletsBasedOnState");function B(){let e=!1,n=navigator;return n.brave&&n.brave.isBrave&&n.brave.isBrave().then(t=>{t&&(e=!0)}),e}a(B,"isBrave");function ee(e){if(typeof e!="object")return e;{let n;return B()?n=e.BRAVE:navigator.userAgent?.toLowerCase().indexOf("chrome")!==-1?n=e.CHROME:navigator.userAgent?.toLowerCase().indexOf("firefox")!==-1?n=e.FIREFOX:navigator.userAgent?.toLowerCase().indexOf("edge")!==-1&&(n=e.EDGE),n||e.DEFAULT}}a(ee,"detectInstallLink");function ne(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}a(ne,"detectMobileScreens");import{isEvmBlockchain as O}from"rango-types";async function de(e){let[n,t]=await Promise.all([e.request({method:"eth_requestAccounts"}),e.request({method:"eth_chainId"})]);return{accounts:n,chainId:t}}a(de,"getEvmAccounts");var Ce=a(({instance:e,state:n,updateChainId:t,updateAccounts:r})=>{e?.on("accountsChanged",i=>{n.connected&&r(i)}),e?.on("chainChanged",i=>{t(i)})},"subscribeToEvm"),fe=a(async({instance:e})=>{try{return!!(await e.request({method:"eth_accounts"})).length}catch{return!1}},"canEagerlyConnectToEvm"),Ie=a(async({instance:e,network:n,meta:t})=>{let r=t.filter(O),i=T(e,"ETH");await I(i,n,A(r))},"switchNetworkForEvm"),Ae=a(({network:e,meta:n})=>f(n).includes(e),"canSwitchNetworkToEvm");function f(e){return e.filter(O).map(n=>n.name)}a(f,"evmNetworkNames");function x(e,n){return e&&f(n).includes(e)?"ETH":null}a(x,"getEthChainsInstance");function y(e,n){return e?f(n).includes(e):!1}a(y,"isEvmNetwork");function Oe(e,n,t){t=t||"ETH";let r=y(t,n)?x(t,n):t;return e&&r?e.get(r):null}a(Oe,"chooseInstance");function T(e,n){return e.size?e.get(n):e}a(T,"getNetworkInstance");var R=a(e=>e.filter(n=>!n.info?.experimental).map(n=>n.chainId).filter(n=>!!n),"getCosmosMainChainsIds"),v=a(e=>e.filter(n=>n.info?.experimental).map(n=>n.chainId).filter(n=>!!n),"getCosmosMiscChainsIds"),g=a(e=>e.filter(n=>!!n.info).filter(n=>!!n.chainId).reduce((n,t)=>{let r=E(t.info);r.stakeCurrency.coinImageUrl=window.location.origin+r.stakeCurrency.coinImageUrl,r.currencies=r.currencies.map(c=>({...c,coinImageUrl:window.location.origin+c.coinImageUrl})),r.feeCurrencies=r.feeCurrencies.map(c=>({...c,coinImageUrl:window.location.origin+c.coinImageUrl})),r.gasPriceStep||delete r.gasPriceStep;let{experimental:i,...m}=r;return n[t.name]={id:t.chainId,info:{...m,chainId:t.chainId},experimental:i},n},{}),"getCosmosExperimentalChainInfo");async function P({desiredChainIds:e,instance:n}){let t=e.map(c=>({signer:n.getOfflineSigner(c),chainId:c})).filter(Boolean),r=t.map(({signer:c})=>c.getAccounts()),i=await Promise.allSettled(r),m=[];return i.forEach((c,l)=>{if(c.status!=="fulfilled")return;let u=c.value,{chainId:h}=t[l],d=u.map(C=>C.address);m.push({accounts:d,chainId:h})}),m}a(P,"getMainAccounts");async function k({excludedChain:e,instance:n,meta:t}){let r=v(t).filter(l=>l!==e).map(l=>({signer:n.getOfflineSigner(l),chainId:l})),i=r.map(async({signer:l})=>l.getAccounts()),m=await Promise.allSettled(i),c=[];return m.forEach((l,u)=>{if(l.status!=="fulfilled")return;let h=l.value,{chainId:d}=r[u],C=h.map(S=>S.address);c.push({accounts:C,chainId:d})}),c}a(k,"tryRequestMiscAccounts");var Me=a(async({instance:e,network:n,meta:t})=>{let r=n?g(t)[n]:null;if(n&&!r)throw new Error(`You need to add ${n} to "COSMOS_EXPERIMENTAL_CHAINS_INFO" first.`);r&&await e.experimentalSuggestChain(r.info);let i=R(t);r&&i.push(r.id),i=Array.from(new Set(i)).filter(Boolean),await e.enable(i);let m=await P({desiredChainIds:i,instance:e}),c=r?r.id:void 0,l=c?await k({instance:e,meta:t,excludedChain:c}):[];return[...m,...l]},"getCosmosAccounts"),Be=a(async e=>{let{instance:n,meta:t,network:r}=e,i=r?g(t)[r]:null;if(!i)throw new Error(`You need to add ${r} to "COSMOS_EXPERIMENTAL_CHAINS_INFO" first.`);await n.experimentalSuggestChain(i.info)},"suggestCosmosChain");export{w as IS_DEV,D as KEPLR_COMPATIBLE_WALLETS,p as Networks,M as WalletTypes,_ as XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS,fe as canEagerlyConnectToEvm,Ae as canSwitchNetworkToEvm,Oe as chooseInstance,A as convertEvmBlockchainMetaToEvmChainInfo,E as deepCopy,ee as detectInstallLink,ne as detectMobileScreens,z as evmChainsToRpcMap,f as evmNetworkNames,L as getBlockChainNameFromId,U as getBlockchainChainIdByName,j as getCoinbaseInstance,Me as getCosmosAccounts,g as getCosmosExperimentalChainInfo,x as getEthChainsInstance,de as getEvmAccounts,T as getNetworkInstance,Z as getSolanaAccounts,re as isEvmAddress,Q as sortWalletsBasedOnState,Ce as subscribeToEvm,Be as suggestCosmosChain,Ie as switchNetworkForEvm,I as switchOrAddNetworkForMetamaskCompatibleWallets,$ as timeout,H as uint8ArrayToHex};
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/rango.ts", "../src/helpers.ts", "../src/providers.ts", "../src/getCosmosAccounts.ts"],
4
- "sourcesContent": ["import type { BlockchainMeta, EvmBlockchainMeta } from 'rango-types';\n\nexport const IS_DEV =\n !process.env.NODE_ENV || process.env.NODE_ENV === 'development';\n\nexport const getBlockChainNameFromId = (\n chainId: string | number,\n blockchains: BlockchainMeta[]\n): Network | null => {\n chainId =\n typeof chainId === 'string' && chainId.startsWith('0x')\n ? parseInt(chainId)\n : chainId;\n\n /*\n * Sometimes providers are passing `Network` as chainId.\n * If chainId is a `Network`, we return itself.\n */\n const allNetworks = Object.values(Networks) as string[];\n if (allNetworks.includes(String(chainId))) {\n return chainId as Networks;\n }\n\n if (chainId === 'Binance-Chain-Tigris') {\n return Networks.BINANCE;\n }\n return (\n blockchains\n .filter((blockchainMeta) => !!blockchainMeta.chainId)\n .find((blockchainMeta) => {\n const blockchainChainId = blockchainMeta.chainId?.startsWith('0x')\n ? parseInt(blockchainMeta.chainId)\n : blockchainMeta.chainId;\n return blockchainChainId == chainId;\n })?.name || null\n );\n};\n\nexport const getBlockchainChainIdByName = (\n netwok: Network,\n allBlockChains: AllBlockchains\n) => allBlockChains[netwok]?.chainId || null;\n\nexport const uint8ArrayToHex = (buffer: Uint8Array): string => {\n return Buffer.from(buffer).toString('hex');\n};\n\nexport type WalletType = string;\nexport type Network = string;\n\nexport enum WalletTypes {\n META_MASK = 'metamask',\n WALLET_CONNECT_2 = 'wallet-connect-2',\n TRUST_WALLET = 'trust-wallet',\n KEPLR = 'keplr',\n PHANTOM = 'phantom',\n BITGET = 'bitget',\n TRON_LINK = 'tron-link',\n COINBASE = 'coinbase',\n XDEFI = 'xdefi',\n CLOVER = 'clover',\n ARGENTX = 'argentx',\n FRONTIER = 'frontier',\n COSMOSTATION = 'cosmostation',\n COIN98 = 'coin98',\n SAFEPAL = 'safepal',\n SAFE = 'safe',\n TOKEN_POCKET = 'token-pocket',\n BRAVE = 'brave',\n BRAAVOS = 'braavos',\n MATH = 'math',\n EXODUS = 'exodus',\n OKX = 'okx',\n HALO = 'halo',\n LEAP = 'leap',\n LEAP_COSMOS = 'leap-cosmos',\n STATION = 'station',\n ENKRYPT = 'enkrypt',\n TAHO = 'taho',\n MY_TON_WALLET = 'mytonwallet',\n}\n\nexport enum Networks {\n BTC = 'BTC',\n BSC = 'BSC',\n LTC = 'LTC',\n THORCHAIN = 'THOR',\n BCH = 'BCH',\n BINANCE = 'BNB',\n ETHEREUM = 'ETH',\n POLYGON = 'POLYGON',\n TERRA = 'TERRA',\n POLKADOT = '',\n TRON = 'TRON',\n DOGE = 'DOGE',\n HARMONY = 'HARMONY',\n AVAX_CCHAIN = 'AVAX_CCHAIN',\n FANTOM = 'FANTOM',\n MOONBEAM = 'MOONBEAM',\n ARBITRUM = 'ARBITRUM',\n BOBA = 'BOBA',\n OPTIMISM = 'OPTIMISM',\n FUSE = 'FUSE',\n CRONOS = 'CRONOS',\n SOLANA = 'SOLANA',\n MOONRIVER = 'MOONRIVER',\n GNOSIS = 'GNOSIS',\n COSMOS = 'COSMOS',\n OSMOSIS = 'OSMOSIS',\n AKASH = 'AKASH',\n IRIS = 'IRIS',\n PERSISTENCE = 'PERSISTENCE',\n SENTINEL = 'SENTINEL',\n REGEN = 'REGEN',\n CRYPTO_ORG = 'CRYPTO_ORG',\n SIF = 'SIF',\n CHIHUAHUA = 'CHIHUAHUA',\n JUNO = 'JUNO',\n KUJIRA = 'KUJIRA',\n STARNAME = 'STARNAME',\n COMDEX = 'COMDEX',\n STARGAZE = 'STARGAZE',\n DESMOS = 'DESMOS',\n BITCANNA = 'BITCANNA',\n SECRET = 'SECRET',\n INJECTIVE = 'INJECTIVE',\n LUMNETWORK = 'LUMNETWORK',\n BANDCHAIN = 'BANDCHAIN',\n EMONEY = 'EMONEY',\n BITSONG = 'BITSONG',\n KI = 'KI',\n MEDIBLOC = 'MEDIBLOC',\n KONSTELLATION = 'KONSTELLATION',\n UMEE = 'UMEE',\n STARKNET = 'STARKNET',\n TON = 'TON',\n\n // Using instead of null\n Unknown = 'Unkown',\n}\n\nexport const XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS: string[] = [\n Networks.BTC,\n Networks.LTC,\n Networks.THORCHAIN,\n Networks.BCH,\n Networks.BINANCE,\n];\n\nexport const KEPLR_COMPATIBLE_WALLETS: string[] = [\n WalletTypes.KEPLR,\n WalletTypes.COSMOSTATION,\n WalletTypes.LEAP_COSMOS,\n];\n\nexport type Asset = {\n blockchain: Network;\n symbol: string;\n address: string | null;\n};\n\nexport type AllBlockchains = { [key: string]: BlockchainMeta };\n\nexport type AddEthereumChainParameter = {\n chainId: string; // A 0x-prefixed hexadecimal string\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string; // 2-6 characters long\n decimals: number;\n };\n rpcUrls: string[];\n blockExplorerUrls?: string[];\n iconUrls?: string[]; // Currently ignored.\n};\n\nexport type EvmNetworksChainInfo = { [key: string]: AddEthereumChainParameter };\n\nexport interface Meta {\n blockchains: AllBlockchains;\n evmNetworkChainInfo: EvmNetworksChainInfo;\n getSupportedChainNames: (type: WalletType) => Network[] | null;\n evmBasedChains: EvmBlockchainMeta[];\n}\n\n// core\n\n// wallets/core/src/wallet.ts -> State\nexport interface WalletState {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n isAsyncSwitchNetwork?: boolean;\n}\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n getState: () => WalletState;\n};\n\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\n\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\n\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type CanEagerConnect = (options: {\n instance: any;\n meta: BlockchainMeta[];\n}) => Promise<boolean>;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n getState?: () => WalletState;\n}) => Promise<void>;\n\nexport type Suggest = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: any;\n}) => boolean;\n\nexport type InstallObjects = {\n CHROME?: string;\n FIREFOX?: string;\n EDGE?: string;\n BRAVE?: string;\n DEFAULT: string;\n};\n\nexport type WalletInfo = {\n name: string;\n img: string;\n installLink: InstallObjects | string;\n color: string;\n supportedChains: BlockchainMeta[];\n showOnMobile?: boolean;\n isContractWallet?: boolean;\n mobileWallet?: boolean;\n};\n\nexport interface Wallet {\n type: WalletType;\n extensionAvailable: boolean;\n connected: boolean;\n info: Omit<WalletInfo, 'color' | 'supportedChains'>;\n}\n\nexport type Providers = { [type in WalletType]?: any };\n", "import type {\n AddEthereumChainParameter,\n Connect,\n EvmNetworksChainInfo,\n InstallObjects,\n Network,\n Wallet,\n} from './rango';\nimport type { EvmBlockchainMeta } from 'rango-types';\n\nimport { Networks } from './rango';\n\nexport { isAddress as isEvmAddress } from 'ethers/lib/utils.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function deepCopy(obj: any): any {\n let copy;\n\n // Handle the 3 simple types, and null or undefined\n if (null == obj || 'object' != typeof obj) {\n return obj;\n }\n\n // Handle Date\n if (obj instanceof Date) {\n copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n\n // Handle Array\n if (obj instanceof Array) {\n copy = [];\n for (let i = 0, len = obj.length; i < len; i++) {\n copy[i] = deepCopy(obj[i]);\n }\n return copy;\n }\n\n // Handle Object\n if (obj instanceof Object) {\n copy = {} as any;\n for (const attr in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, attr)) {\n copy[attr] = deepCopy(obj[attr]);\n }\n }\n return copy;\n }\n\n throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n}\n\nexport async function switchOrAddNetworkForMetamaskCompatibleWallets(\n instance: any,\n network: Network,\n evmNetworksChainInfo: EvmNetworksChainInfo\n) {\n const targetChain = evmNetworksChainInfo[network];\n\n try {\n await instance.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: targetChain?.chainId }],\n });\n } catch (switchError) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n /*\n * @ts-ignore\n * To resolve this error: Catch clause variable type annotation must be any or unknown if specified\n */\n const error = switchError as { code: number };\n\n if (!targetChain) {\n throw new Error(\n `It seems you don't have ${network} network on your wallet. Please add it manually.`\n );\n /* eslint-disable @typescript-eslint/no-magic-numbers */\n } else if (error.code === 4902 || !error.code) {\n /*\n * Note: on WalletConnect `code` is undefined so we have to use !switchError.code as fallback.\n * This error code indicates that the chain has not been added to wallet.\n */\n await instance.request({\n method: 'wallet_addEthereumChain',\n params: [targetChain],\n });\n }\n throw switchError;\n }\n}\n\nexport async function timeout<T = any>(\n forPromise: Promise<any>,\n time: number\n): Promise<T> {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => {\n reject('Timeout!');\n }, time);\n });\n\n return Promise.race([forPromise, timeoutPromise]);\n}\n\nexport const convertEvmBlockchainMetaToEvmChainInfo = (\n evmBlockchains: EvmBlockchainMeta[]\n) =>\n evmBlockchains.reduce(\n (\n evmNetWorksChainInfo: { [key: string]: AddEthereumChainParameter },\n blockchainMeta\n ) => (\n (evmNetWorksChainInfo[blockchainMeta.name] = {\n chainName: blockchainMeta.info.chainName,\n chainId: blockchainMeta.chainId,\n nativeCurrency: blockchainMeta.info.nativeCurrency,\n rpcUrls: blockchainMeta.info.rpcUrls,\n blockExplorerUrls: blockchainMeta.info.blockExplorerUrls,\n }),\n evmNetWorksChainInfo\n ),\n {}\n );\n\nexport const evmChainsToRpcMap = (\n evmNetworkChainInfo: EvmNetworksChainInfo\n) => {\n return Object.fromEntries(\n new Map(\n Object.keys(evmNetworkChainInfo).map((chainName) => {\n const info = evmNetworkChainInfo[chainName];\n\n /*\n * This `if` is only used for satisfying typescript,\n * Because we iterating over Object.keys(EVM_NETWORKS_CHAIN_INFO)\n * And obviously it cannot be `undefined` and always has a value.\n */\n if (info) {\n return [parseInt(info.chainId), info.rpcUrls[0]];\n }\n return [0, ''];\n })\n )\n );\n};\n\nexport const getSolanaAccounts: Connect = async ({ instance }) => {\n // Asking for account from wallet.\n const solanaResponse = await instance.connect();\n\n const account = solanaResponse.publicKey.toString();\n return {\n accounts: [account],\n chainId: Networks.SOLANA,\n };\n};\n\nexport function getCoinbaseInstance(\n lookingFor: 'coinbase' | 'metamask' = 'coinbase'\n) {\n const { ethereum, coinbaseSolana } = window;\n const instances = new Map();\n if (ethereum) {\n const checker =\n lookingFor === 'metamask' ? 'isMetaMask' : 'isCoinbaseWallet';\n\n // If only Coinbase Wallet is installed\n if (lookingFor === 'coinbase' && ethereum[checker]) {\n instances.set(Networks.ETHEREUM, ethereum);\n }\n // If Coinbase Wallet and Metamask is installed at the same time.\n else if (ethereum.providers?.length) {\n const ethInstance = ethereum.providers.find((provider: any) => {\n return provider[checker];\n });\n instances.set(Networks.ETHEREUM, ethInstance);\n }\n }\n if (!!coinbaseSolana && lookingFor === 'coinbase') {\n instances.set(Networks.SOLANA, coinbaseSolana);\n }\n\n if (instances.size === 0) {\n return null;\n }\n\n if (lookingFor === 'metamask') {\n return instances.get(Networks.ETHEREUM);\n }\n\n return instances;\n}\n\nexport function sortWalletsBasedOnState(wallets: Wallet[]): Wallet[] {\n return wallets.sort(\n (a, b) =>\n Number(b.connected) - Number(a.connected) ||\n Number(b.extensionAvailable) - Number(a.extensionAvailable)\n );\n}\n\nfunction isBrave() {\n let isBrave = false;\n const nav: any = navigator;\n if (nav.brave && nav.brave.isBrave) {\n nav.brave.isBrave().then((res: boolean) => {\n if (res) {\n isBrave = true;\n }\n });\n }\n\n return isBrave;\n}\n\nexport function detectInstallLink(install: InstallObjects | string): string {\n if (typeof install !== 'object') {\n return install;\n }\n let link;\n if (isBrave()) {\n link = install.BRAVE;\n } else if (navigator.userAgent?.toLowerCase().indexOf('chrome') !== -1) {\n link = install.CHROME;\n } else if (navigator.userAgent?.toLowerCase().indexOf('firefox') !== -1) {\n link = install.FIREFOX;\n } else if (navigator.userAgent?.toLowerCase().indexOf('edge') !== -1) {\n link = install.EDGE;\n }\n return link || install.DEFAULT;\n}\n\nexport function detectMobileScreens(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n\n/**\n * Sample inputs are:\n * - \"metamask-ETH\"\n * - \"metamask-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n * - \"token-pocket-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n * Returns \"wallet and network\" separately, even if the wallet is dashed inside.\n *\n */\n\nexport function splitWalletNetwork(input: string): string[] {\n const removedAddressInput = input?.split(':')[0] || '';\n const splittedInput = removedAddressInput.split('-');\n const network = splittedInput[splittedInput.length - 1];\n const walletNetwork = splittedInput.slice(0, -1);\n\n if (walletNetwork[walletNetwork.length - 1] === network) {\n walletNetwork.pop();\n }\n const wallet = walletNetwork.join('-');\n\n return [wallet, network];\n}\n", "import type {\n CanEagerConnect,\n CanSwitchNetwork,\n Network,\n Providers,\n Subscribe,\n SwitchNetwork,\n WalletType,\n} from './rango';\nimport type { BlockchainMeta } from 'rango-types';\n\nimport { isEvmBlockchain } from 'rango-types';\n\nimport {\n convertEvmBlockchainMetaToEvmChainInfo,\n switchOrAddNetworkForMetamaskCompatibleWallets,\n} from './helpers';\nimport { Networks } from './rango';\n\nexport async function getEvmAccounts(instance: any) {\n const [accounts, chainId] = await Promise.all([\n instance.request({ method: 'eth_requestAccounts' }) as Promise<string[]>,\n instance.request({ method: 'eth_chainId' }) as Promise<string>,\n ]);\n\n return {\n accounts,\n chainId,\n };\n}\n\nexport const subscribeToEvm: Subscribe = ({\n instance,\n state,\n updateChainId,\n updateAccounts,\n}) => {\n instance?.on('accountsChanged', (addresses: string[]) => {\n /*\n * TODO: after enabling autoconnect, we can consider this condition\n * to be removed.\n * The problem was if a user already connected its wallet,\n * Metamask is triggering this event on first load, so when autoconnect is disabled,\n * it's automaticlally change the state of wallet to `connected`.\n */\n if (state.connected) {\n updateAccounts(addresses);\n }\n });\n\n instance?.on('chainChanged', (chainId: string) => {\n updateChainId(chainId);\n });\n};\n\nexport const canEagerlyConnectToEvm: CanEagerConnect = async ({ instance }) => {\n try {\n const accounts: string[] = await instance.request({\n method: 'eth_accounts',\n });\n if (accounts.length) {\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n};\n\nexport const switchNetworkForEvm: SwitchNetwork = async ({\n instance,\n network,\n meta,\n}) => {\n const evmBlockchains = meta.filter(isEvmBlockchain);\n const evmInstance = getNetworkInstance(instance, Networks.ETHEREUM);\n await switchOrAddNetworkForMetamaskCompatibleWallets(\n evmInstance,\n network,\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n};\n\nexport const canSwitchNetworkToEvm: CanSwitchNetwork = ({ network, meta }) => {\n return evmNetworkNames(meta).includes(network);\n};\n\nexport function evmNetworkNames(meta: BlockchainMeta[]) {\n return meta.filter(isEvmBlockchain).map((blockchain) => blockchain.name);\n}\nexport function getEthChainsInstance(\n network: Network | null,\n meta: BlockchainMeta[]\n): Network | null {\n if (!network) {\n return null;\n }\n const evmBlockchains = evmNetworkNames(meta);\n return evmBlockchains.includes(network) ? Networks.ETHEREUM : null;\n}\n\nfunction isEvmNetwork(network: Network | null, meta: BlockchainMeta[]) {\n if (!network) {\n return false;\n }\n\n return evmNetworkNames(meta).includes(network);\n}\n\nexport function chooseInstance(\n instances: null | Map<any, any>,\n meta: BlockchainMeta[],\n network?: Network | null\n) {\n // If there is no `network` we fallback to default network.\n network = network || Networks.ETHEREUM;\n const instance_network_name = isEvmNetwork(network, meta)\n ? getEthChainsInstance(network, meta)\n : network;\n const instance =\n !!instances && !!instance_network_name\n ? instances.get(instance_network_name)\n : null;\n\n return instance;\n}\n\nexport function getNetworkInstance(provider: any, network: Network) {\n return provider.size ? provider.get(network) : provider;\n}\n\n/**\n * On our implementation for `wallets` package, We keep the instance in 2 ways\n * If it's a single chain wallet, it returns the instance directly,\n * If it's a multichain wallet, it returns a `Map` of instances.\n * This function will get the `ETHEREUM` instance in both types.\n */\nexport function getEvmProvider(providers: Providers, type: WalletType): any {\n if (type && providers[type]) {\n // we need this because provider can return an instance or a map of instances, so what you are doing here is try to detect that.\n if (providers[type].size) {\n return providers[type].get(Networks.ETHEREUM);\n }\n\n return providers[type];\n }\n return null;\n}\n", "import type { Connect, ProviderConnectResult, Suggest } from './rango';\nimport type { Keplr as InstanceType } from '@keplr-wallet/types';\nimport type {\n BlockchainMeta,\n CosmosBlockchainMeta,\n CosmosChainInfo,\n} from 'rango-types';\n\nimport { deepCopy } from './helpers';\n\nexport interface CosmosInfo extends Omit<CosmosChainInfo, 'experimental'> {\n chainId: string;\n}\n\nexport type CosmosExperimentalChainsInfo = {\n [k: string]: { id: string; info: CosmosInfo; experimental: boolean };\n};\n\ninterface CosmosBlockchainMetaWithChainId\n extends Omit<CosmosBlockchainMeta, 'chainId'> {\n chainId: string;\n}\n\nconst getCosmosMainChainsIds = (blockchains: CosmosBlockchainMeta[]) =>\n blockchains\n .filter((blockchain) => !blockchain.info?.experimental)\n .map((blockchain) => blockchain.chainId)\n .filter((chainId): chainId is string => !!chainId);\n\nconst getCosmosMiscChainsIds = (blockchains: CosmosBlockchainMeta[]) =>\n blockchains\n .filter((blockchain) => blockchain.info?.experimental)\n .map((blockchain) => blockchain.chainId)\n .filter((chainId): chainId is string => !!chainId);\n\nexport const getCosmosExperimentalChainInfo = (\n blockchains: CosmosBlockchainMeta[]\n) =>\n blockchains\n .filter((blockchain) => !!blockchain.info)\n .filter(\n (blockchain): blockchain is CosmosBlockchainMetaWithChainId =>\n !!blockchain.chainId\n )\n .reduce(\n (\n cosmosExperimentalChainsInfo: CosmosExperimentalChainsInfo,\n blockchain\n ) => {\n const info = deepCopy(blockchain.info) as CosmosChainInfo;\n info.stakeCurrency.coinImageUrl =\n window.location.origin + info.stakeCurrency.coinImageUrl;\n info.currencies = info.currencies.map((currency) => ({\n ...currency,\n coinImageUrl: window.location.origin + currency.coinImageUrl,\n }));\n info.feeCurrencies = info.feeCurrencies.map((currency) => ({\n ...currency,\n coinImageUrl: window.location.origin + currency.coinImageUrl,\n }));\n if (!info.gasPriceStep) {\n delete info.gasPriceStep;\n }\n const { experimental, ...otherProperties } = info;\n return (\n (cosmosExperimentalChainsInfo[blockchain.name] = {\n id: blockchain.chainId,\n info: { ...otherProperties, chainId: blockchain.chainId },\n experimental: experimental,\n }),\n cosmosExperimentalChainsInfo\n );\n },\n {}\n );\n\nasync function getMainAccounts({\n desiredChainIds,\n instance,\n}: {\n desiredChainIds: string[];\n instance: any;\n}): Promise<ProviderConnectResult[]> {\n // Trying to get accounts from all chains\n const offlineSigners = desiredChainIds\n .map((chainId) => {\n const signer = instance.getOfflineSigner(chainId);\n return {\n signer,\n chainId,\n };\n })\n .filter(Boolean);\n const accountsPromises = offlineSigners.map(({ signer }) =>\n signer.getAccounts()\n );\n const availableAccountForChains = await Promise.allSettled(accountsPromises);\n const resolvedAccounts: ProviderConnectResult[] = [];\n availableAccountForChains.forEach((result, index) => {\n if (result.status !== 'fulfilled') {\n return;\n }\n\n const accounts = result.value;\n const { chainId } = offlineSigners[index];\n const addresses = accounts.map(\n (account: { address: any }) => account.address\n );\n\n resolvedAccounts.push({ accounts: addresses, chainId });\n });\n return resolvedAccounts;\n}\n\nasync function tryRequestMiscAccounts({\n excludedChain,\n instance,\n meta,\n}: {\n excludedChain?: string;\n instance: InstanceType;\n meta: BlockchainMeta[];\n}): Promise<ProviderConnectResult[]> {\n const offlineSigners = getCosmosMiscChainsIds(meta as CosmosBlockchainMeta[])\n .filter((id) => id !== excludedChain)\n .map((chainId) => {\n const signer = instance.getOfflineSigner(chainId);\n return {\n signer,\n chainId,\n };\n });\n const accountsPromises = offlineSigners.map(async ({ signer }) =>\n signer.getAccounts()\n );\n const availableAccountForChains = await Promise.allSettled(accountsPromises);\n\n const resolvedAccounts: ProviderConnectResult[] = [];\n availableAccountForChains.forEach((result, index) => {\n if (result.status !== 'fulfilled') {\n return;\n }\n\n const accounts = result.value;\n const { chainId } = offlineSigners[index];\n const addresses = accounts.map((account) => account.address);\n\n resolvedAccounts.push({ accounts: addresses, chainId });\n });\n\n return resolvedAccounts;\n}\n\nexport const getCosmosAccounts: Connect = async ({\n instance,\n network,\n meta,\n}) => {\n const chainInfo = network\n ? getCosmosExperimentalChainInfo(meta as CosmosBlockchainMeta[])[network]\n : null;\n\n if (!!network && !chainInfo) {\n throw new Error(\n `You need to add ${network} to \"COSMOS_EXPERIMENTAL_CHAINS_INFO\" first.`\n );\n }\n\n // Asking for connect to wallet.\n if (!!chainInfo) {\n await instance.experimentalSuggestChain(chainInfo.info);\n }\n // Getting main chains + target network\n let desiredChainIds: string[] = getCosmosMainChainsIds(\n meta as CosmosBlockchainMeta[]\n );\n if (!!chainInfo) {\n desiredChainIds.push(chainInfo.id);\n }\n desiredChainIds = Array.from(new Set(desiredChainIds)).filter(Boolean);\n\n await instance.enable(desiredChainIds);\n\n const mainAccounts = await getMainAccounts({\n desiredChainIds,\n instance,\n });\n\n const exclude = !!chainInfo ? chainInfo.id : undefined;\n const miscAccounts = exclude\n ? await tryRequestMiscAccounts({\n instance,\n meta,\n excludedChain: exclude,\n })\n : [];\n\n const results = [...mainAccounts, ...miscAccounts];\n return results;\n};\n\nexport const suggestCosmosChain: Suggest = async (options) => {\n const { instance, meta, network } = options;\n const chainInfo = network\n ? getCosmosExperimentalChainInfo(meta as CosmosBlockchainMeta[])[network]\n : null;\n\n if (!chainInfo) {\n throw new Error(\n `You need to add ${network} to \"COSMOS_EXPERIMENTAL_CHAINS_INFO\" first.`\n );\n }\n\n // Asking for add experimental chain to wallet.\n await instance.experimentalSuggestChain(chainInfo.info);\n};\n"],
5
- "mappings": "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",
6
- "names": ["IS_DEV", "getBlockChainNameFromId", "__name", "chainId", "blockchains", "Networks", "blockchainMeta", "getBlockchainChainIdByName", "netwok", "allBlockChains", "uint8ArrayToHex", "buffer", "WalletTypes", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "KEPLR_COMPATIBLE_WALLETS", "isAddress", "deepCopy", "obj", "copy", "i", "len", "attr", "__name", "switchOrAddNetworkForMetamaskCompatibleWallets", "instance", "network", "evmNetworksChainInfo", "targetChain", "switchError", "error", "timeout", "forPromise", "time", "timeoutPromise", "_", "reject", "convertEvmBlockchainMetaToEvmChainInfo", "evmBlockchains", "evmNetWorksChainInfo", "blockchainMeta", "evmChainsToRpcMap", "evmNetworkChainInfo", "chainName", "info", "getSolanaAccounts", "getCoinbaseInstance", "lookingFor", "ethereum", "coinbaseSolana", "instances", "checker", "ethInstance", "provider", "sortWalletsBasedOnState", "wallets", "a", "b", "isBrave", "nav", "res", "detectInstallLink", "install", "link", "detectMobileScreens", "splitWalletNetwork", "input", "splittedInput", "walletNetwork", "isEvmBlockchain", "getEvmAccounts", "instance", "accounts", "chainId", "__name", "subscribeToEvm", "state", "updateChainId", "updateAccounts", "addresses", "canEagerlyConnectToEvm", "switchNetworkForEvm", "network", "meta", "evmBlockchains", "isEvmBlockchain", "evmInstance", "getNetworkInstance", "switchOrAddNetworkForMetamaskCompatibleWallets", "convertEvmBlockchainMetaToEvmChainInfo", "canSwitchNetworkToEvm", "evmNetworkNames", "blockchain", "getEthChainsInstance", "isEvmNetwork", "chooseInstance", "instances", "instance_network_name", "provider", "getEvmProvider", "providers", "type", "getCosmosMainChainsIds", "__name", "blockchains", "blockchain", "chainId", "getCosmosMiscChainsIds", "getCosmosExperimentalChainInfo", "cosmosExperimentalChainsInfo", "info", "deepCopy", "currency", "experimental", "otherProperties", "getMainAccounts", "desiredChainIds", "instance", "offlineSigners", "accountsPromises", "signer", "availableAccountForChains", "resolvedAccounts", "result", "index", "accounts", "addresses", "account", "tryRequestMiscAccounts", "excludedChain", "meta", "id", "getCosmosAccounts", "network", "chainInfo", "mainAccounts", "exclude", "miscAccounts", "suggestCosmosChain", "options"]
4
+ "sourcesContent": ["import type { BlockchainMeta, EvmBlockchainMeta } from 'rango-types';\n\nexport const IS_DEV =\n !process.env.NODE_ENV || process.env.NODE_ENV === 'development';\n\nexport const getBlockChainNameFromId = (\n chainId: string | number,\n blockchains: BlockchainMeta[]\n): Network | null => {\n chainId =\n typeof chainId === 'string' && chainId.startsWith('0x')\n ? parseInt(chainId)\n : chainId;\n\n /*\n * Sometimes providers are passing `Network` as chainId.\n * If chainId is a `Network`, we return itself.\n */\n const allNetworks = Object.values(Networks) as string[];\n if (allNetworks.includes(String(chainId))) {\n return chainId as Networks;\n }\n\n if (chainId === 'Binance-Chain-Tigris') {\n return Networks.BINANCE;\n }\n return (\n blockchains\n .filter((blockchainMeta) => !!blockchainMeta.chainId)\n .find((blockchainMeta) => {\n const blockchainChainId = blockchainMeta.chainId?.startsWith('0x')\n ? parseInt(blockchainMeta.chainId)\n : blockchainMeta.chainId;\n return blockchainChainId == chainId;\n })?.name || null\n );\n};\n\nexport const getBlockchainChainIdByName = (\n netwok: Network,\n allBlockChains: AllBlockchains\n) => allBlockChains[netwok]?.chainId || null;\n\nexport const uint8ArrayToHex = (buffer: Uint8Array): string => {\n return Buffer.from(buffer).toString('hex');\n};\n\nexport type WalletType = string;\nexport type Network = string;\n\nexport enum WalletTypes {\n META_MASK = 'metamask',\n WALLET_CONNECT_2 = 'wallet-connect-2',\n TRUST_WALLET = 'trust-wallet',\n KEPLR = 'keplr',\n PHANTOM = 'phantom',\n BINANCE_CHAIN = 'binance-chain',\n BITGET = 'bitget',\n TRON_LINK = 'tron-link',\n COINBASE = 'coinbase',\n XDEFI = 'xdefi',\n CLOVER = 'clover',\n ARGENTX = 'argentx',\n FRONTIER = 'frontier',\n COSMOSTATION = 'cosmostation',\n COIN98 = 'coin98',\n SAFEPAL = 'safepal',\n SAFE = 'safe',\n TOKEN_POCKET = 'token-pocket',\n BRAVE = 'brave',\n BRAAVOS = 'braavos',\n MATH = 'math',\n EXODUS = 'exodus',\n OKX = 'okx',\n HALO = 'halo',\n LEAP = 'leap',\n LEAP_COSMOS = 'leap-cosmos',\n STATION = 'station',\n ENKRYPT = 'enkrypt',\n TAHO = 'taho',\n MY_TON_WALLET = 'mytonwallet',\n}\n\nexport enum Networks {\n BTC = 'BTC',\n BSC = 'BSC',\n LTC = 'LTC',\n THORCHAIN = 'THOR',\n BCH = 'BCH',\n BINANCE = 'BNB',\n ETHEREUM = 'ETH',\n POLYGON = 'POLYGON',\n TERRA = 'TERRA',\n POLKADOT = '',\n TRON = 'TRON',\n DOGE = 'DOGE',\n HARMONY = 'HARMONY',\n AVAX_CCHAIN = 'AVAX_CCHAIN',\n FANTOM = 'FANTOM',\n MOONBEAM = 'MOONBEAM',\n ARBITRUM = 'ARBITRUM',\n BOBA = 'BOBA',\n OPTIMISM = 'OPTIMISM',\n FUSE = 'FUSE',\n CRONOS = 'CRONOS',\n SOLANA = 'SOLANA',\n MOONRIVER = 'MOONRIVER',\n GNOSIS = 'GNOSIS',\n COSMOS = 'COSMOS',\n OSMOSIS = 'OSMOSIS',\n AKASH = 'AKASH',\n IRIS = 'IRIS',\n PERSISTENCE = 'PERSISTENCE',\n SENTINEL = 'SENTINEL',\n REGEN = 'REGEN',\n CRYPTO_ORG = 'CRYPTO_ORG',\n SIF = 'SIF',\n CHIHUAHUA = 'CHIHUAHUA',\n JUNO = 'JUNO',\n KUJIRA = 'KUJIRA',\n STARNAME = 'STARNAME',\n COMDEX = 'COMDEX',\n STARGAZE = 'STARGAZE',\n DESMOS = 'DESMOS',\n BITCANNA = 'BITCANNA',\n SECRET = 'SECRET',\n INJECTIVE = 'INJECTIVE',\n LUMNETWORK = 'LUMNETWORK',\n BANDCHAIN = 'BANDCHAIN',\n EMONEY = 'EMONEY',\n BITSONG = 'BITSONG',\n KI = 'KI',\n MEDIBLOC = 'MEDIBLOC',\n KONSTELLATION = 'KONSTELLATION',\n UMEE = 'UMEE',\n STARKNET = 'STARKNET',\n TON = 'TON',\n\n // Using instead of null\n Unknown = 'Unkown',\n}\n\nexport const XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS: string[] = [\n Networks.BTC,\n Networks.LTC,\n Networks.THORCHAIN,\n Networks.BCH,\n Networks.BINANCE,\n];\n\nexport const KEPLR_COMPATIBLE_WALLETS: string[] = [\n WalletTypes.KEPLR,\n WalletTypes.COSMOSTATION,\n WalletTypes.LEAP_COSMOS,\n];\n\nexport type Asset = {\n blockchain: Network;\n symbol: string;\n address: string | null;\n};\n\nexport type AllBlockchains = { [key: string]: BlockchainMeta };\n\nexport type AddEthereumChainParameter = {\n chainId: string; // A 0x-prefixed hexadecimal string\n chainName: string;\n nativeCurrency: {\n name: string;\n symbol: string; // 2-6 characters long\n decimals: number;\n };\n rpcUrls: string[];\n blockExplorerUrls?: string[];\n iconUrls?: string[]; // Currently ignored.\n};\n\nexport type EvmNetworksChainInfo = { [key: string]: AddEthereumChainParameter };\n\nexport interface Meta {\n blockchains: AllBlockchains;\n evmNetworkChainInfo: EvmNetworksChainInfo;\n getSupportedChainNames: (type: WalletType) => Network[] | null;\n evmBasedChains: EvmBlockchainMeta[];\n}\n\n// core\n\n// wallets/core/src/wallet.ts -> State\nexport interface WalletState {\n connected: boolean;\n connecting: boolean;\n reachable: boolean;\n installed: boolean;\n accounts: string[] | null;\n network: Network | null;\n}\n\nexport interface WalletConfig {\n type: WalletType;\n defaultNetwork?: Network;\n checkInstallation?: boolean;\n isAsyncInstance?: boolean;\n}\n\nexport type GetInstanceOptions = {\n network?: Network;\n currentProvider: any;\n meta: BlockchainMeta[];\n force?: boolean;\n updateChainId: (chainId: number | string) => void;\n getState: () => WalletState;\n};\n\nexport type TryGetInstance =\n | (() => any)\n | ((options: Pick<GetInstanceOptions, 'force' | 'network'>) => Promise<any>);\n\nexport type GetInstance =\n | (() => any)\n | ((options: GetInstanceOptions) => Promise<any>);\n\nexport type ProviderConnectResult = {\n accounts: string[];\n chainId: string;\n};\n\nexport type Connect = (options: {\n instance: any;\n network?: Network;\n meta: BlockchainMeta[];\n}) => Promise<ProviderConnectResult | ProviderConnectResult[]>;\n\nexport type Disconnect = (options: {\n instance: any;\n destroyInstance: () => void;\n}) => Promise<void>;\n\nexport type Subscribe = (options: {\n instance: any;\n state: WalletState;\n meta: BlockchainMeta[];\n updateChainId: (chainId: string) => void;\n updateAccounts: (accounts: string[], chainId?: string) => void;\n connect: (network?: Network) => void;\n disconnect: () => void;\n}) => void;\n\nexport type CanEagerConnect = (options: {\n instance: any;\n meta: BlockchainMeta[];\n}) => Promise<boolean>;\n\nexport type SwitchNetwork = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n newInstance?: TryGetInstance;\n}) => Promise<void>;\n\nexport type Suggest = (options: {\n instance: any;\n network: Network;\n meta: BlockchainMeta[];\n}) => Promise<void>;\n\nexport type CanSwitchNetwork = (options: {\n network: Network;\n meta: BlockchainMeta[];\n provider: any;\n}) => boolean;\n\nexport type InstallObjects = {\n CHROME?: string;\n FIREFOX?: string;\n EDGE?: string;\n BRAVE?: string;\n DEFAULT: string;\n};\n\nexport type WalletInfo = {\n name: string;\n img: string;\n installLink: InstallObjects | string;\n color: string;\n supportedChains: BlockchainMeta[];\n showOnMobile?: boolean;\n hideWhenNotInstalled?: boolean;\n mobileWallet?: boolean;\n};\n\nexport interface Wallet {\n type: WalletType;\n extensionAvailable: boolean;\n connected: boolean;\n info: Omit<WalletInfo, 'color' | 'supportedChains'>;\n}\n", "import type { EvmBlockchainMeta } from 'rango-types';\nimport {\n EvmNetworksChainInfo,\n AddEthereumChainParameter,\n Network,\n Networks,\n Connect,\n Wallet,\n InstallObjects,\n} from './rango';\n\nexport { isAddress as isEvmAddress } from 'ethers/lib/utils.js';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function deepCopy(obj: any): any {\n let copy;\n\n // Handle the 3 simple types, and null or undefined\n if (null == obj || 'object' != typeof obj) return obj;\n\n // Handle Date\n if (obj instanceof Date) {\n copy = new Date();\n copy.setTime(obj.getTime());\n return copy;\n }\n\n // Handle Array\n if (obj instanceof Array) {\n copy = [];\n for (let i = 0, len = obj.length; i < len; i++) {\n copy[i] = deepCopy(obj[i]);\n }\n return copy;\n }\n\n // Handle Object\n if (obj instanceof Object) {\n copy = {} as any;\n for (const attr in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, attr))\n copy[attr] = deepCopy(obj[attr]);\n }\n return copy;\n }\n\n throw new Error(\"Unable to copy obj! Its type isn't supported.\");\n}\n\nexport async function switchOrAddNetworkForMetamaskCompatibleWallets(\n instance: any,\n network: Network,\n evmNetworksChainInfo: EvmNetworksChainInfo\n) {\n const targetChain = evmNetworksChainInfo[network];\n\n try {\n await instance.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId: targetChain?.chainId }],\n });\n } catch (switchError) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n // To resolve this error: Catch clause variable type annotation must be any or unknown if specified\n const error = switchError as { code: number };\n\n if (!targetChain) {\n throw new Error(\n `It seems you don't have ${network} network on your wallet. Please add it manually.`\n );\n } else if (error.code === 4902 || !error.code) {\n // Note: on WalletConnect `code` is undefined so we have to use !switchError.code as fallback.\n // This error code indicates that the chain has not been added to wallet.\n await instance.request({\n method: 'wallet_addEthereumChain',\n params: [targetChain],\n });\n }\n throw switchError;\n }\n}\n\nexport function timeout<T = any>(\n forPromise: Promise<any>,\n time: number\n): Promise<T> {\n const timeoutPromise = new Promise((_, reject) => {\n setTimeout(() => {\n reject('Timeout!');\n }, time);\n });\n\n return Promise.race([forPromise, timeoutPromise]);\n}\n\nexport const convertEvmBlockchainMetaToEvmChainInfo = (\n evmBlockchains: EvmBlockchainMeta[]\n) =>\n evmBlockchains.reduce(\n (\n evmNetWorksChainInfo: { [key: string]: AddEthereumChainParameter },\n blockchainMeta\n ) => (\n (evmNetWorksChainInfo[blockchainMeta.name] = {\n chainName: blockchainMeta.info.chainName,\n chainId: blockchainMeta.chainId,\n nativeCurrency: blockchainMeta.info.nativeCurrency,\n rpcUrls: blockchainMeta.info.rpcUrls,\n blockExplorerUrls: blockchainMeta.info.blockExplorerUrls,\n }),\n evmNetWorksChainInfo\n ),\n {}\n );\n\nexport const evmChainsToRpcMap = (\n evmNetworkChainInfo: EvmNetworksChainInfo\n) => {\n return Object.fromEntries(\n new Map(\n Object.keys(evmNetworkChainInfo).map((chainName) => {\n const info = evmNetworkChainInfo[chainName];\n\n // This `if` is only used for satisfying typescript,\n // Because we iterating over Object.keys(EVM_NETWORKS_CHAIN_INFO)\n // And obviously it cannot be `undefined` and always has a value.\n if (info) {\n return [parseInt(info.chainId), info.rpcUrls[0]];\n }\n return [0, ''];\n })\n )\n );\n};\n\nexport const getSolanaAccounts: Connect = async ({ instance }) => {\n // Asking for account from wallet.\n const solanaResponse = await instance.connect();\n\n const account = solanaResponse.publicKey.toString();\n return {\n accounts: [account],\n chainId: Networks.SOLANA,\n };\n};\n\nexport function getCoinbaseInstance(\n lookingFor: 'coinbase' | 'metamask' = 'coinbase'\n) {\n const { ethereum, coinbaseSolana } = window;\n const instances = new Map();\n if (ethereum) {\n const checker =\n lookingFor === 'metamask' ? 'isMetaMask' : 'isCoinbaseWallet';\n\n // If only Coinbase Wallet is installed\n if (lookingFor === 'coinbase' && ethereum[checker]) {\n instances.set(Networks.ETHEREUM, ethereum);\n }\n // If Coinbase Wallet and Metamask is installed at the same time.\n else if (ethereum.providers?.length) {\n const ethInstance = ethereum.providers.find((provider: any) => {\n return provider[checker];\n });\n instances.set(Networks.ETHEREUM, ethInstance);\n }\n }\n if (!!coinbaseSolana && lookingFor === 'coinbase')\n instances.set(Networks.SOLANA, coinbaseSolana);\n\n if (instances.size === 0) return null;\n\n if (lookingFor === 'metamask') return instances.get(Networks.ETHEREUM);\n\n return instances;\n}\n\nexport function sortWalletsBasedOnState(wallets: Wallet[]): Wallet[] {\n return wallets.sort(\n (a, b) =>\n Number(b.connected) - Number(a.connected) ||\n Number(b.extensionAvailable) - Number(a.extensionAvailable)\n );\n}\n\nfunction isBrave() {\n let isBrave = false;\n const nav: any = navigator;\n if (nav.brave && nav.brave.isBrave) {\n nav.brave.isBrave().then((res: boolean) => {\n if (res) isBrave = true;\n });\n }\n\n return isBrave;\n}\n\nexport function detectInstallLink(install: InstallObjects | string): string {\n if (typeof install !== 'object') {\n return install;\n } else {\n let link;\n if (isBrave()) {\n link = install.BRAVE;\n } else if (navigator.userAgent?.toLowerCase().indexOf('chrome') !== -1) {\n link = install.CHROME;\n } else if (navigator.userAgent?.toLowerCase().indexOf('firefox') !== -1) {\n link = install.FIREFOX;\n } else if (navigator.userAgent?.toLowerCase().indexOf('edge') !== -1) {\n link = install.EDGE;\n }\n return link || install.DEFAULT;\n }\n}\n\nexport function detectMobileScreens(): boolean {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n}\n", "import {\n Network,\n CanSwitchNetwork,\n Subscribe,\n SwitchNetwork,\n Networks,\n CanEagerConnect,\n} from './rango';\nimport { convertEvmBlockchainMetaToEvmChainInfo } from './helpers';\nimport { switchOrAddNetworkForMetamaskCompatibleWallets } from './helpers';\nimport type { BlockchainMeta } from 'rango-types';\nimport { isEvmBlockchain } from 'rango-types';\n\nexport async function getEvmAccounts(instance: any) {\n const [accounts, chainId] = await Promise.all([\n instance.request({ method: 'eth_requestAccounts' }) as Promise<string[]>,\n instance.request({ method: 'eth_chainId' }) as Promise<string>,\n ]);\n\n return {\n accounts,\n chainId,\n };\n}\n\nexport const subscribeToEvm: Subscribe = ({\n instance,\n state,\n updateChainId,\n updateAccounts,\n}) => {\n instance?.on('accountsChanged', (addresses: string[]) => {\n // TODO: after enabling autoconnect, we can consider this condition\n // to be removed.\n // The problem was if a user already connected its wallet,\n // Metamask is triggering this event on first load, so when autoconnect is disabled,\n // it's automaticlally change the state of wallet to `connected`.\n if (state.connected) {\n updateAccounts(addresses);\n }\n });\n\n instance?.on('chainChanged', (chainId: string) => {\n updateChainId(chainId);\n });\n};\n\nexport const canEagerlyConnectToEvm: CanEagerConnect = async ({ instance }) => {\n try {\n const accounts: string[] = await instance.request({\n method: 'eth_accounts',\n });\n if (accounts.length) return true;\n else return false;\n } catch (error) {\n return false;\n }\n};\n\nexport const switchNetworkForEvm: SwitchNetwork = async ({\n instance,\n network,\n meta,\n}) => {\n const evmBlockchains = meta.filter(isEvmBlockchain);\n const evmInstance = getNetworkInstance(instance, Networks.ETHEREUM);\n await switchOrAddNetworkForMetamaskCompatibleWallets(\n evmInstance,\n network,\n convertEvmBlockchainMetaToEvmChainInfo(evmBlockchains)\n );\n};\n\nexport const canSwitchNetworkToEvm: CanSwitchNetwork = ({ network, meta }) => {\n return evmNetworkNames(meta).includes(network);\n};\n\nexport function evmNetworkNames(meta: BlockchainMeta[]) {\n return meta.filter(isEvmBlockchain).map((blockchain) => blockchain.name);\n}\nexport function getEthChainsInstance(\n network: Network | null,\n meta: BlockchainMeta[]\n): Network | null {\n if (!network) return null;\n const evmBlockchains = evmNetworkNames(meta);\n return evmBlockchains.includes(network) ? Networks.ETHEREUM : null;\n}\n\nfunction isEvmNetwork(network: Network | null, meta: BlockchainMeta[]) {\n if (!network) return false;\n\n return evmNetworkNames(meta).includes(network);\n}\n\nexport function chooseInstance(\n instances: null | Map<any, any>,\n meta: BlockchainMeta[],\n network?: Network | null\n) {\n // If there is no `network` we fallback to default network.\n network = network || Networks.ETHEREUM;\n const instance_network_name = isEvmNetwork(network, meta)\n ? getEthChainsInstance(network, meta)\n : network;\n const instance =\n !!instances && !!instance_network_name\n ? instances.get(instance_network_name)\n : null;\n\n return instance;\n}\n\nexport function getNetworkInstance(provider: any, network: Network) {\n return provider.size ? provider.get(network) : provider;\n}\n", "import type { Connect, ProviderConnectResult, Suggest } from './rango';\nimport type { Keplr as InstanceType } from '@keplr-wallet/types';\nimport type {\n BlockchainMeta,\n CosmosBlockchainMeta,\n CosmosChainInfo,\n} from 'rango-types';\n\nimport { deepCopy } from './helpers';\n\nexport interface CosmosInfo extends Omit<CosmosChainInfo, 'experimental'> {\n chainId: string;\n}\n\nexport type CosmosExperimentalChainsInfo = {\n [k: string]: { id: string; info: CosmosInfo; experimental: boolean };\n};\n\ninterface CosmosBlockchainMetaWithChainId\n extends Omit<CosmosBlockchainMeta, 'chainId'> {\n chainId: string;\n}\n\nconst getCosmosMainChainsIds = (blockchains: CosmosBlockchainMeta[]) =>\n blockchains\n .filter((blockchain) => !blockchain.info?.experimental)\n .map((blockchain) => blockchain.chainId)\n .filter((chainId): chainId is string => !!chainId);\n\nconst getCosmosMiscChainsIds = (blockchains: CosmosBlockchainMeta[]) =>\n blockchains\n .filter((blockchain) => blockchain.info?.experimental)\n .map((blockchain) => blockchain.chainId)\n .filter((chainId): chainId is string => !!chainId);\n\nexport const getCosmosExperimentalChainInfo = (\n blockchains: CosmosBlockchainMeta[]\n) =>\n blockchains\n .filter((blockchain) => !!blockchain.info)\n .filter(\n (blockchain): blockchain is CosmosBlockchainMetaWithChainId =>\n !!blockchain.chainId\n )\n .reduce(\n (\n cosmosExperimentalChainsInfo: CosmosExperimentalChainsInfo,\n blockchain\n ) => {\n const info = deepCopy(blockchain.info) as CosmosChainInfo;\n info.stakeCurrency.coinImageUrl =\n window.location.origin + info.stakeCurrency.coinImageUrl;\n info.currencies = info.currencies.map((currency) => ({\n ...currency,\n coinImageUrl: window.location.origin + currency.coinImageUrl,\n }));\n info.feeCurrencies = info.feeCurrencies.map((currency) => ({\n ...currency,\n coinImageUrl: window.location.origin + currency.coinImageUrl,\n }));\n if (!info.gasPriceStep) {\n delete info.gasPriceStep;\n }\n const { experimental, ...otherProperties } = info;\n return (\n (cosmosExperimentalChainsInfo[blockchain.name] = {\n id: blockchain.chainId,\n info: { ...otherProperties, chainId: blockchain.chainId },\n experimental: experimental,\n }),\n cosmosExperimentalChainsInfo\n );\n },\n {}\n );\n\nasync function getMainAccounts({\n desiredChainIds,\n instance,\n}: {\n desiredChainIds: string[];\n instance: any;\n}): Promise<ProviderConnectResult[]> {\n // Trying to get accounts from all chains\n const offlineSigners = desiredChainIds\n .map((chainId) => {\n const signer = instance.getOfflineSigner(chainId);\n return {\n signer,\n chainId,\n };\n })\n .filter(Boolean);\n const accountsPromises = offlineSigners.map(({ signer }) =>\n signer.getAccounts()\n );\n const availableAccountForChains = await Promise.allSettled(accountsPromises);\n const resolvedAccounts: ProviderConnectResult[] = [];\n availableAccountForChains.forEach((result, index) => {\n if (result.status !== 'fulfilled') {\n return;\n }\n\n const accounts = result.value;\n const { chainId } = offlineSigners[index];\n const addresses = accounts.map(\n (account: { address: any }) => account.address\n );\n\n resolvedAccounts.push({ accounts: addresses, chainId });\n });\n return resolvedAccounts;\n}\n\nasync function tryRequestMiscAccounts({\n excludedChain,\n instance,\n meta,\n}: {\n excludedChain?: string;\n instance: InstanceType;\n meta: BlockchainMeta[];\n}): Promise<ProviderConnectResult[]> {\n const offlineSigners = getCosmosMiscChainsIds(meta as CosmosBlockchainMeta[])\n .filter((id) => id !== excludedChain)\n .map((chainId) => {\n const signer = instance.getOfflineSigner(chainId);\n return {\n signer,\n chainId,\n };\n });\n const accountsPromises = offlineSigners.map(async ({ signer }) =>\n signer.getAccounts()\n );\n const availableAccountForChains = await Promise.allSettled(accountsPromises);\n\n const resolvedAccounts: ProviderConnectResult[] = [];\n availableAccountForChains.forEach((result, index) => {\n if (result.status !== 'fulfilled') {\n return;\n }\n\n const accounts = result.value;\n const { chainId } = offlineSigners[index];\n const addresses = accounts.map((account) => account.address);\n\n resolvedAccounts.push({ accounts: addresses, chainId });\n });\n\n return resolvedAccounts;\n}\n\nexport const getCosmosAccounts: Connect = async ({\n instance,\n network,\n meta,\n}) => {\n const chainInfo = network\n ? getCosmosExperimentalChainInfo(meta as CosmosBlockchainMeta[])[network]\n : null;\n\n if (!!network && !chainInfo) {\n throw new Error(\n `You need to add ${network} to \"COSMOS_EXPERIMENTAL_CHAINS_INFO\" first.`\n );\n }\n\n // Asking for connect to wallet.\n if (!!chainInfo) {\n await instance.experimentalSuggestChain(chainInfo.info);\n }\n // Getting main chains + target network\n let desiredChainIds: string[] = getCosmosMainChainsIds(\n meta as CosmosBlockchainMeta[]\n );\n if (!!chainInfo) {\n desiredChainIds.push(chainInfo.id);\n }\n desiredChainIds = Array.from(new Set(desiredChainIds)).filter(Boolean);\n\n await instance.enable(desiredChainIds);\n\n const mainAccounts = await getMainAccounts({\n desiredChainIds,\n instance,\n });\n\n const exclude = !!chainInfo ? chainInfo.id : undefined;\n const miscAccounts = exclude\n ? await tryRequestMiscAccounts({\n instance,\n meta,\n excludedChain: exclude,\n })\n : [];\n\n const results = [...mainAccounts, ...miscAccounts];\n return results;\n};\n\nexport const suggestCosmosChain: Suggest = async (options) => {\n const { instance, meta, network } = options;\n const chainInfo = network\n ? getCosmosExperimentalChainInfo(meta as CosmosBlockchainMeta[])[network]\n : null;\n\n if (!chainInfo) {\n throw new Error(\n `You need to add ${network} to \"COSMOS_EXPERIMENTAL_CHAINS_INFO\" first.`\n );\n }\n\n // Asking for add experimental chain to wallet.\n await instance.experimentalSuggestChain(chainInfo.info);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["IS_DEV", "getBlockChainNameFromId", "__name", "chainId", "blockchains", "Networks", "blockchainMeta", "getBlockchainChainIdByName", "netwok", "allBlockChains", "uint8ArrayToHex", "buffer", "WalletTypes", "XDEFI_WALLET_SUPPORTED_NATIVE_CHAINS", "KEPLR_COMPATIBLE_WALLETS", "isAddress", "deepCopy", "obj", "copy", "i", "len", "attr", "__name", "switchOrAddNetworkForMetamaskCompatibleWallets", "instance", "network", "evmNetworksChainInfo", "targetChain", "switchError", "error", "timeout", "forPromise", "time", "timeoutPromise", "_", "reject", "convertEvmBlockchainMetaToEvmChainInfo", "evmBlockchains", "evmNetWorksChainInfo", "blockchainMeta", "evmChainsToRpcMap", "evmNetworkChainInfo", "chainName", "info", "getSolanaAccounts", "getCoinbaseInstance", "lookingFor", "ethereum", "coinbaseSolana", "instances", "checker", "ethInstance", "provider", "sortWalletsBasedOnState", "wallets", "a", "b", "isBrave", "nav", "res", "detectInstallLink", "install", "link", "detectMobileScreens", "isEvmBlockchain", "getEvmAccounts", "instance", "accounts", "chainId", "__name", "subscribeToEvm", "state", "updateChainId", "updateAccounts", "addresses", "canEagerlyConnectToEvm", "switchNetworkForEvm", "network", "meta", "evmBlockchains", "isEvmBlockchain", "evmInstance", "getNetworkInstance", "switchOrAddNetworkForMetamaskCompatibleWallets", "convertEvmBlockchainMetaToEvmChainInfo", "canSwitchNetworkToEvm", "evmNetworkNames", "blockchain", "getEthChainsInstance", "isEvmNetwork", "chooseInstance", "instances", "instance_network_name", "provider", "getCosmosMainChainsIds", "__name", "blockchains", "blockchain", "chainId", "getCosmosMiscChainsIds", "getCosmosExperimentalChainInfo", "cosmosExperimentalChainsInfo", "info", "deepCopy", "currency", "experimental", "otherProperties", "getMainAccounts", "desiredChainIds", "instance", "offlineSigners", "accountsPromises", "signer", "availableAccountForChains", "resolvedAccounts", "result", "index", "accounts", "addresses", "account", "tryRequestMiscAccounts", "excludedChain", "meta", "id", "getCosmosAccounts", "network", "chainInfo", "mainAccounts", "exclude", "miscAccounts", "suggestCosmosChain", "options"]
7
7
  }
@@ -1,4 +1,4 @@
1
- import type { CanEagerConnect, CanSwitchNetwork, Network, Providers, Subscribe, SwitchNetwork, WalletType } from './rango';
1
+ import { Network, CanSwitchNetwork, Subscribe, SwitchNetwork, CanEagerConnect } from './rango';
2
2
  import type { BlockchainMeta } from 'rango-types';
3
3
  export declare function getEvmAccounts(instance: any): Promise<{
4
4
  accounts: string[];
@@ -12,11 +12,4 @@ export declare function evmNetworkNames(meta: BlockchainMeta[]): string[];
12
12
  export declare function getEthChainsInstance(network: Network | null, meta: BlockchainMeta[]): Network | null;
13
13
  export declare function chooseInstance(instances: null | Map<any, any>, meta: BlockchainMeta[], network?: Network | null): any;
14
14
  export declare function getNetworkInstance(provider: any, network: Network): any;
15
- /**
16
- * On our implementation for `wallets` package, We keep the instance in 2 ways
17
- * If it's a single chain wallet, it returns the instance directly,
18
- * If it's a multichain wallet, it returns a `Map` of instances.
19
- * This function will get the `ETHEREUM` instance in both types.
20
- */
21
- export declare function getEvmProvider(providers: Providers, type: WalletType): any;
22
15
  //# sourceMappingURL=providers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACX,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAUlD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,GAAG;;;GAUjD;AAED,eAAO,MAAM,cAAc,EAAE,SAsB5B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAYpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAYjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAEnC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,YAErD;AACD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,IAAI,EAAE,cAAc,EAAE,GACrB,OAAO,GAAG,IAAI,CAMhB;AAUD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAC/B,IAAI,EAAE,cAAc,EAAE,EACtB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,OAazB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,OAEjE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,GAAG,CAU1E"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,aAAa,EAEb,eAAe,EAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,wBAAsB,cAAc,CAAC,QAAQ,EAAE,GAAG;;;GAUjD;AAED,eAAO,MAAM,cAAc,EAAE,SAoB5B,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAUpC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,aAYjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,gBAEnC,CAAC;AAEF,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,YAErD;AACD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,GAAG,IAAI,EACvB,IAAI,EAAE,cAAc,EAAE,GACrB,OAAO,GAAG,IAAI,CAIhB;AAQD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAC/B,IAAI,EAAE,cAAc,EAAE,EACtB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,OAazB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,OAEjE"}
package/dist/rango.d.ts CHANGED
@@ -11,6 +11,7 @@ export declare enum WalletTypes {
11
11
  TRUST_WALLET = "trust-wallet",
12
12
  KEPLR = "keplr",
13
13
  PHANTOM = "phantom",
14
+ BINANCE_CHAIN = "binance-chain",
14
15
  BITGET = "bitget",
15
16
  TRON_LINK = "tron-link",
16
17
  COINBASE = "coinbase",
@@ -136,7 +137,6 @@ export interface WalletConfig {
136
137
  defaultNetwork?: Network;
137
138
  checkInstallation?: boolean;
138
139
  isAsyncInstance?: boolean;
139
- isAsyncSwitchNetwork?: boolean;
140
140
  }
141
141
  export type GetInstanceOptions = {
142
142
  network?: Network;
@@ -179,7 +179,6 @@ export type SwitchNetwork = (options: {
179
179
  network: Network;
180
180
  meta: BlockchainMeta[];
181
181
  newInstance?: TryGetInstance;
182
- getState?: () => WalletState;
183
182
  }) => Promise<void>;
184
183
  export type Suggest = (options: {
185
184
  instance: any;
@@ -205,7 +204,7 @@ export type WalletInfo = {
205
204
  color: string;
206
205
  supportedChains: BlockchainMeta[];
207
206
  showOnMobile?: boolean;
208
- isContractWallet?: boolean;
207
+ hideWhenNotInstalled?: boolean;
209
208
  mobileWallet?: boolean;
210
209
  };
211
210
  export interface Wallet {
@@ -214,7 +213,4 @@ export interface Wallet {
214
213
  connected: boolean;
215
214
  info: Omit<WalletInfo, 'color' | 'supportedChains'>;
216
215
  }
217
- export type Providers = {
218
- [type in WalletType]?: any;
219
- };
220
216
  //# sourceMappingURL=rango.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rango.d.ts","sourceRoot":"","sources":["../src/rango.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rango.d.ts","sourceRoot":"","sources":["../src/rango.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@rango-dev/wallets-shared",
3
- "version": "0.22.0",
3
+ "version": "0.23.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
- "source": "./src/index.ts",
6
+ "module": "./dist/index.js",
7
7
  "main": "./dist/index.js",
8
8
  "exports": {
9
9
  ".": "./dist/index.js"
@@ -15,7 +15,6 @@
15
15
  ],
16
16
  "scripts": {
17
17
  "build": "node ../../scripts/build/command.mjs --path wallets/shared",
18
- "ts-check": "tsc --declaration --emitDeclarationOnly -p ./tsconfig.json",
19
18
  "clean": "rimraf dist",
20
19
  "format": "prettier --write '{.,src}/**/*.{ts,tsx}'",
21
20
  "lint": "eslint \"**/*.{ts,tsx}\" --ignore-path ../../.eslintignore",
@@ -24,7 +23,7 @@
24
23
  "test:coverage": "vitest run --coverage"
25
24
  },
26
25
  "dependencies": {
27
- "rango-types": "^0.1.57"
26
+ "rango-types": "^0.1.46"
28
27
  },
29
28
  "publishConfig": {
30
29
  "access": "public"
package/src/helpers.ts CHANGED
@@ -1,14 +1,13 @@
1
- import type {
2
- AddEthereumChainParameter,
3
- Connect,
1
+ import type { EvmBlockchainMeta } from 'rango-types';
2
+ import {
4
3
  EvmNetworksChainInfo,
5
- InstallObjects,
4
+ AddEthereumChainParameter,
6
5
  Network,
6
+ Networks,
7
+ Connect,
7
8
  Wallet,
9
+ InstallObjects,
8
10
  } from './rango';
9
- import type { EvmBlockchainMeta } from 'rango-types';
10
-
11
- import { Networks } from './rango';
12
11
 
13
12
  export { isAddress as isEvmAddress } from 'ethers/lib/utils.js';
14
13
 
@@ -17,9 +16,7 @@ export function deepCopy(obj: any): any {
17
16
  let copy;
18
17
 
19
18
  // Handle the 3 simple types, and null or undefined
20
- if (null == obj || 'object' != typeof obj) {
21
- return obj;
22
- }
19
+ if (null == obj || 'object' != typeof obj) return obj;
23
20
 
24
21
  // Handle Date
25
22
  if (obj instanceof Date) {
@@ -41,9 +38,8 @@ export function deepCopy(obj: any): any {
41
38
  if (obj instanceof Object) {
42
39
  copy = {} as any;
43
40
  for (const attr in obj) {
44
- if (Object.prototype.hasOwnProperty.call(obj, attr)) {
41
+ if (Object.prototype.hasOwnProperty.call(obj, attr))
45
42
  copy[attr] = deepCopy(obj[attr]);
46
- }
47
43
  }
48
44
  return copy;
49
45
  }
@@ -65,22 +61,17 @@ export async function switchOrAddNetworkForMetamaskCompatibleWallets(
65
61
  });
66
62
  } catch (switchError) {
67
63
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
68
- /*
69
- * @ts-ignore
70
- * To resolve this error: Catch clause variable type annotation must be any or unknown if specified
71
- */
64
+ // @ts-ignore
65
+ // To resolve this error: Catch clause variable type annotation must be any or unknown if specified
72
66
  const error = switchError as { code: number };
73
67
 
74
68
  if (!targetChain) {
75
69
  throw new Error(
76
70
  `It seems you don't have ${network} network on your wallet. Please add it manually.`
77
71
  );
78
- /* eslint-disable @typescript-eslint/no-magic-numbers */
79
72
  } else if (error.code === 4902 || !error.code) {
80
- /*
81
- * Note: on WalletConnect `code` is undefined so we have to use !switchError.code as fallback.
82
- * This error code indicates that the chain has not been added to wallet.
83
- */
73
+ // Note: on WalletConnect `code` is undefined so we have to use !switchError.code as fallback.
74
+ // This error code indicates that the chain has not been added to wallet.
84
75
  await instance.request({
85
76
  method: 'wallet_addEthereumChain',
86
77
  params: [targetChain],
@@ -90,7 +81,7 @@ export async function switchOrAddNetworkForMetamaskCompatibleWallets(
90
81
  }
91
82
  }
92
83
 
93
- export async function timeout<T = any>(
84
+ export function timeout<T = any>(
94
85
  forPromise: Promise<any>,
95
86
  time: number
96
87
  ): Promise<T> {
@@ -131,11 +122,9 @@ export const evmChainsToRpcMap = (
131
122
  Object.keys(evmNetworkChainInfo).map((chainName) => {
132
123
  const info = evmNetworkChainInfo[chainName];
133
124
 
134
- /*
135
- * This `if` is only used for satisfying typescript,
136
- * Because we iterating over Object.keys(EVM_NETWORKS_CHAIN_INFO)
137
- * And obviously it cannot be `undefined` and always has a value.
138
- */
125
+ // This `if` is only used for satisfying typescript,
126
+ // Because we iterating over Object.keys(EVM_NETWORKS_CHAIN_INFO)
127
+ // And obviously it cannot be `undefined` and always has a value.
139
128
  if (info) {
140
129
  return [parseInt(info.chainId), info.rpcUrls[0]];
141
130
  }
@@ -177,17 +166,12 @@ export function getCoinbaseInstance(
177
166
  instances.set(Networks.ETHEREUM, ethInstance);
178
167
  }
179
168
  }
180
- if (!!coinbaseSolana && lookingFor === 'coinbase') {
169
+ if (!!coinbaseSolana && lookingFor === 'coinbase')
181
170
  instances.set(Networks.SOLANA, coinbaseSolana);
182
- }
183
171
 
184
- if (instances.size === 0) {
185
- return null;
186
- }
172
+ if (instances.size === 0) return null;
187
173
 
188
- if (lookingFor === 'metamask') {
189
- return instances.get(Networks.ETHEREUM);
190
- }
174
+ if (lookingFor === 'metamask') return instances.get(Networks.ETHEREUM);
191
175
 
192
176
  return instances;
193
177
  }
@@ -205,9 +189,7 @@ function isBrave() {
205
189
  const nav: any = navigator;
206
190
  if (nav.brave && nav.brave.isBrave) {
207
191
  nav.brave.isBrave().then((res: boolean) => {
208
- if (res) {
209
- isBrave = true;
210
- }
192
+ if (res) isBrave = true;
211
193
  });
212
194
  }
213
195
 
@@ -217,18 +199,19 @@ function isBrave() {
217
199
  export function detectInstallLink(install: InstallObjects | string): string {
218
200
  if (typeof install !== 'object') {
219
201
  return install;
202
+ } else {
203
+ let link;
204
+ if (isBrave()) {
205
+ link = install.BRAVE;
206
+ } else if (navigator.userAgent?.toLowerCase().indexOf('chrome') !== -1) {
207
+ link = install.CHROME;
208
+ } else if (navigator.userAgent?.toLowerCase().indexOf('firefox') !== -1) {
209
+ link = install.FIREFOX;
210
+ } else if (navigator.userAgent?.toLowerCase().indexOf('edge') !== -1) {
211
+ link = install.EDGE;
212
+ }
213
+ return link || install.DEFAULT;
220
214
  }
221
- let link;
222
- if (isBrave()) {
223
- link = install.BRAVE;
224
- } else if (navigator.userAgent?.toLowerCase().indexOf('chrome') !== -1) {
225
- link = install.CHROME;
226
- } else if (navigator.userAgent?.toLowerCase().indexOf('firefox') !== -1) {
227
- link = install.FIREFOX;
228
- } else if (navigator.userAgent?.toLowerCase().indexOf('edge') !== -1) {
229
- link = install.EDGE;
230
- }
231
- return link || install.DEFAULT;
232
215
  }
233
216
 
234
217
  export function detectMobileScreens(): boolean {
@@ -236,26 +219,3 @@ export function detectMobileScreens(): boolean {
236
219
  navigator.userAgent
237
220
  );
238
221
  }
239
-
240
- /**
241
- * Sample inputs are:
242
- * - "metamask-ETH"
243
- * - "metamask-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
244
- * - "token-pocket-BSC-BSC:0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
245
- * Returns "wallet and network" separately, even if the wallet is dashed inside.
246
- *
247
- */
248
-
249
- export function splitWalletNetwork(input: string): string[] {
250
- const removedAddressInput = input?.split(':')[0] || '';
251
- const splittedInput = removedAddressInput.split('-');
252
- const network = splittedInput[splittedInput.length - 1];
253
- const walletNetwork = splittedInput.slice(0, -1);
254
-
255
- if (walletNetwork[walletNetwork.length - 1] === network) {
256
- walletNetwork.pop();
257
- }
258
- const wallet = walletNetwork.join('-');
259
-
260
- return [wallet, network];
261
- }
package/src/providers.ts CHANGED
@@ -1,22 +1,16 @@
1
- import type {
2
- CanEagerConnect,
3
- CanSwitchNetwork,
1
+ import {
4
2
  Network,
5
- Providers,
3
+ CanSwitchNetwork,
6
4
  Subscribe,
7
5
  SwitchNetwork,
8
- WalletType,
6
+ Networks,
7
+ CanEagerConnect,
9
8
  } from './rango';
9
+ import { convertEvmBlockchainMetaToEvmChainInfo } from './helpers';
10
+ import { switchOrAddNetworkForMetamaskCompatibleWallets } from './helpers';
10
11
  import type { BlockchainMeta } from 'rango-types';
11
-
12
12
  import { isEvmBlockchain } from 'rango-types';
13
13
 
14
- import {
15
- convertEvmBlockchainMetaToEvmChainInfo,
16
- switchOrAddNetworkForMetamaskCompatibleWallets,
17
- } from './helpers';
18
- import { Networks } from './rango';
19
-
20
14
  export async function getEvmAccounts(instance: any) {
21
15
  const [accounts, chainId] = await Promise.all([
22
16
  instance.request({ method: 'eth_requestAccounts' }) as Promise<string[]>,
@@ -36,13 +30,11 @@ export const subscribeToEvm: Subscribe = ({
36
30
  updateAccounts,
37
31
  }) => {
38
32
  instance?.on('accountsChanged', (addresses: string[]) => {
39
- /*
40
- * TODO: after enabling autoconnect, we can consider this condition
41
- * to be removed.
42
- * The problem was if a user already connected its wallet,
43
- * Metamask is triggering this event on first load, so when autoconnect is disabled,
44
- * it's automaticlally change the state of wallet to `connected`.
45
- */
33
+ // TODO: after enabling autoconnect, we can consider this condition
34
+ // to be removed.
35
+ // The problem was if a user already connected its wallet,
36
+ // Metamask is triggering this event on first load, so when autoconnect is disabled,
37
+ // it's automaticlally change the state of wallet to `connected`.
46
38
  if (state.connected) {
47
39
  updateAccounts(addresses);
48
40
  }
@@ -58,10 +50,8 @@ export const canEagerlyConnectToEvm: CanEagerConnect = async ({ instance }) => {
58
50
  const accounts: string[] = await instance.request({
59
51
  method: 'eth_accounts',
60
52
  });
61
- if (accounts.length) {
62
- return true;
63
- }
64
- return false;
53
+ if (accounts.length) return true;
54
+ else return false;
65
55
  } catch (error) {
66
56
  return false;
67
57
  }
@@ -92,17 +82,13 @@ export function getEthChainsInstance(
92
82
  network: Network | null,
93
83
  meta: BlockchainMeta[]
94
84
  ): Network | null {
95
- if (!network) {
96
- return null;
97
- }
85
+ if (!network) return null;
98
86
  const evmBlockchains = evmNetworkNames(meta);
99
87
  return evmBlockchains.includes(network) ? Networks.ETHEREUM : null;
100
88
  }
101
89
 
102
90
  function isEvmNetwork(network: Network | null, meta: BlockchainMeta[]) {
103
- if (!network) {
104
- return false;
105
- }
91
+ if (!network) return false;
106
92
 
107
93
  return evmNetworkNames(meta).includes(network);
108
94
  }
@@ -128,21 +114,3 @@ export function chooseInstance(
128
114
  export function getNetworkInstance(provider: any, network: Network) {
129
115
  return provider.size ? provider.get(network) : provider;
130
116
  }
131
-
132
- /**
133
- * On our implementation for `wallets` package, We keep the instance in 2 ways
134
- * If it's a single chain wallet, it returns the instance directly,
135
- * If it's a multichain wallet, it returns a `Map` of instances.
136
- * This function will get the `ETHEREUM` instance in both types.
137
- */
138
- export function getEvmProvider(providers: Providers, type: WalletType): any {
139
- if (type && providers[type]) {
140
- // we need this because provider can return an instance or a map of instances, so what you are doing here is try to detect that.
141
- if (providers[type].size) {
142
- return providers[type].get(Networks.ETHEREUM);
143
- }
144
-
145
- return providers[type];
146
- }
147
- return null;
148
- }
package/src/rango.ts CHANGED
@@ -54,6 +54,7 @@ export enum WalletTypes {
54
54
  TRUST_WALLET = 'trust-wallet',
55
55
  KEPLR = 'keplr',
56
56
  PHANTOM = 'phantom',
57
+ BINANCE_CHAIN = 'binance-chain',
57
58
  BITGET = 'bitget',
58
59
  TRON_LINK = 'tron-link',
59
60
  COINBASE = 'coinbase',
@@ -200,7 +201,6 @@ export interface WalletConfig {
200
201
  defaultNetwork?: Network;
201
202
  checkInstallation?: boolean;
202
203
  isAsyncInstance?: boolean;
203
- isAsyncSwitchNetwork?: boolean;
204
204
  }
205
205
 
206
206
  export type GetInstanceOptions = {
@@ -256,7 +256,6 @@ export type SwitchNetwork = (options: {
256
256
  network: Network;
257
257
  meta: BlockchainMeta[];
258
258
  newInstance?: TryGetInstance;
259
- getState?: () => WalletState;
260
259
  }) => Promise<void>;
261
260
 
262
261
  export type Suggest = (options: {
@@ -286,7 +285,7 @@ export type WalletInfo = {
286
285
  color: string;
287
286
  supportedChains: BlockchainMeta[];
288
287
  showOnMobile?: boolean;
289
- isContractWallet?: boolean;
288
+ hideWhenNotInstalled?: boolean;
290
289
  mobileWallet?: boolean;
291
290
  };
292
291
 
@@ -296,5 +295,3 @@ export interface Wallet {
296
295
  connected: boolean;
297
296
  info: Omit<WalletInfo, 'color' | 'supportedChains'>;
298
297
  }
299
-
300
- export type Providers = { [type in WalletType]?: any };