@getpara/evm-wallet-connectors 1.4.3 → 1.5.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/dist/index.js CHANGED
@@ -1,2 +1,803 @@
1
1
  "use client";
2
- import{createContext as Ne,useEffect as X,useMemo as K}from"react";import{useAccount as je,useSwitchChain as ue,useConnect as Te,useDisconnect as Ce,useEnsName as de,useEnsAvatar as ye}from"wagmi";var O=e=>!!(!e.isRainbowKitConnector&&e.icon?.startsWith("data:image")&&e.uid&&e.name);var H=async(e,t)=>{let i=await e.getProvider();return e.type==="coinbaseWallet"?i.qrUrl:new Promise(r=>i.once("display_uri",a=>{r(t?t(a):a)}))};import{isMobile as me,WalletType as Q}from"@getpara/react-sdk";import{normalize as pe}from"viem/ens";import{create as ge}from"zustand";import{syncTabs as De}from"zustand-sync-tabs";var U=ge(De(e=>({isConnecting:!1,updateState:t=>{e({...t})}}),{name:"para-evm-external-wallet-state"}));import{jsx as Ae}from"react/jsx-runtime";var xe={wallets:[],chains:[],chainId:void 0,username:void 0,avatar:void 0,disconnect:()=>Promise.resolve(),switchChain:()=>Promise.resolve({})},S=Ne(xe);function Y({children:e,para:t,onSwitchWallet:i}){let{connectAsync:r,connectors:a}=Te(),{address:o,isConnecting:I,isReconnecting:u,chainId:D,connector:N}=je(),{chains:j,switchChainAsync:A}=ue(),{disconnectAsync:l}=Ce(),{data:g}=de({address:o}),{data:T}=ye({name:pe(g)}),p=U(n=>n.isConnecting),C=U(n=>n.updateState),z=()=>{let n=localStorage.getItem("@CAPSULE/externalWallets"),M={};return n&&(M=JSON.parse(n)),M};X(()=>{let n=z()[o??""];!I&&!u&&!p&&o&&!n&&N?.id!=="para"&&d()},[I,u,p,o,N]),X(()=>{let n=z()[t.currentExternalWalletAddresses?.[0]??""];!p&&!I&&!u&&n?.type===Q.EVM&&n?.address!==o&&f(o)},[p,o,u,I]);let L=a,d=async()=>{await l(),await t.logout()},W=async n=>{let M;try{await A({chainId:n})}catch(s){if(s.details.includes("Missing or invalid."))M=["Network not supported.",`You may need to add ${j.find(k=>k.id===n)?.name} support to ${N?.paraDetails?.name??N?.name??"the wallet"} manually.`];else switch(s.name){case"UserRejectedRequestError":{M=["Change request rejected"];break}default:{M=["An unknown error occurred"];break}}}return{error:M}},E=async(n,M)=>{try{await t.externalWalletLogin({address:n,type:Q.EVM,provider:M})}catch{throw await l(),await t.logout(),"Error logging you in. Please try again."}},f=async n=>{C({isConnecting:!0});let M;if(!n)await t.logout();else try{await E(n,N?.name)}catch(s){M=s}i({address:n,error:M}),C({isConnecting:!1})},c=async n=>{C({isConnecting:!0}),await l();let M=await n.getChainId(),s,w;try{if(s=(await r({chainId:j.find(({id:Z})=>Z===M)?.id??j[0]?.id,connector:n})).accounts?.[0],s)try{await E(s,n.name)}catch(Z){s=void 0,w=Z}}catch(k){switch(k.name){case"UserRejectedRequestError":{w="Connection request rejected";break}case"ResourceUnavailableRpcError":{`${n.name}`;break}default:{w="An unknown error occurred";break}}}return C({isConnecting:!1}),{address:s,error:w}},R=async(n,M)=>{let s=M!==void 0?M:me(),w=n.walletConnectModalConnector&&s?n.walletConnectModalConnector:n;return await c(w)},se=n=>()=>H(n,n.paraDetails?.getUri),h={},b;L.filter(n=>!O(n)).forEach(n=>{n.paraDetails&&(h[n.paraDetails.rdns]=n.paraDetails,n.paraDetails.isWalletConnectModalConnector&&(b=n))});let le=L.filter(n=>O(n)).map(n=>n.id),B=L.map(n=>{if(!n.paraDetails?.isWalletConnectModalConnector&&!(!O(n)&&le.includes(n.paraDetails?.rdns))){if(O(n)){let M=h[n.id];return{...n,paraDetails:M}}return n.paraDetails?.id==="walletConnect"&&b?{...n,walletConnectModalConnector:b}:n}}).filter(n=>!!n).map(n=>{let M={...n,...n.paraDetails};return{...M,connect:()=>c(M),connectMobile:s=>R(M,s),type:Q.EVM,getQrUri:se(M)}}),F=j.map(n=>({id:n.id,name:n.name})),V=K(()=>g??o,[g,o]),J=l;return Ae(S.Provider,{value:K(()=>({wallets:B,chains:F,chainId:D,username:V,avatar:T,disconnect:J,switchChain:W}),[B,F,D,V,T,J,W]),children:e})}import{useCallback as we,useEffect as Le,useMemo as v}from"react";import{createConfig as Ee,WagmiProvider as ze}from"wagmi";function $(e,t){let i=[];for(let r of e)i.some(a=>a[t]===r[t])||i.push(r);return i}var P=({appName:e,appDescription:t,appUrl:i,appIcon:r})=>({name:e,description:t??e,url:i??(typeof window<"u"?window.location.href:""),icons:[...r?[r]:[]]});function _(e){return Object.fromEntries(Object.entries(e).filter(([t,i])=>i!==void 0))}var q=(e,{projectId:t,walletConnectParameters:i,appName:r,appDescription:a,appUrl:o,appIcon:I})=>{if(!e.length)throw new Error("No wallet list was provided");let u=-1,D=[],N=[],j=P({appName:r,appDescription:a,appUrl:o,appIcon:I});e.forEach(l=>{u++;let T={...l({projectId:t,appName:r,appIcon:I,options:{metadata:j,...i},walletConnectParameters:{metadata:j,...i}}),index:u};N.push(T)});let A=$([...N],"id");for(let{createConnector:l,...g}of A){let T=C=>({paraDetails:_({...g,isParaConnector:!0,...C||{}})});g.id==="walletConnect"&&D.push(l(T({isWalletConnectModalConnector:!0,showQrModal:!0}))),l&&D.push(l(T()))}return D};import{http as We}from"viem";import{useClient as Oe,useExternalWalletProviderStore as G}from"@getpara/react-sdk";import{connect as ee}from"wagmi/actions";import{paraConnector as fe}from"@getpara/wagmi-v2-integration";import{jsx as Pe}from"react/jsx-runtime";var ke=e=>e.reduce((i,r)=>{let a=r.id;return i[a]=We(),i},{});function Se({children:e,config:t,...i}){let r=G(c=>c.updateState),a=G(c=>c.EvmProvider),o=G(c=>c.evmContext),I=t.para??Oe(),{projectId:u,appName:D,appDescription:N,appIcon:j,appUrl:A,wallets:l,chains:g,transports:T,paraDisableModal:p,paraOptions:C,...z}=t,L=P({appName:D,appDescription:N,appUrl:A,appIcon:j}),d=v(()=>I?fe({para:I,chains:[...g],disableModal:p??!0,appName:D,options:C??{}}):void 0,[I,g,p,D,C]),W=v(()=>{let c=q(l,{projectId:u,appName:D,appDescription:N,appUrl:A,appIcon:j,walletConnectParameters:{metadata:L}});return d?[...c,d]:c},[l,u,D,N,A,j,L,d]),E=v(()=>Ee({...z,chains:g,transports:T||ke(g),connectors:W}),[z,g,T,W]),f=we(async()=>{if(!d)return{error:"No para connector instance"};try{return{result:await ee(E,{connector:d})}}catch(c){return{error:c instanceof Error?c.message:"Unknown error"}}},[d,E,ee]);return Le(()=>{r({EvmProvider:o&&a?a:Y,evmContext:o||S,connectParaEvmWallet:d?f:void 0})},[o,a,d,f,r]),!o||!a?null:Pe(ze,{config:E,...i,children:e})}import{isAndroid as he,isIOS as Be,isTelegram as Fe}from"@getpara/react-sdk";import{createConnector as be}from"wagmi";import{injected as Ze}from"wagmi/connectors";function te(e){let t=typeof window<"u"?window:void 0;if(typeof t>"u"||typeof t.ethereum>"u")return;let i=t.ethereum.providers;return i?i.find(r=>r[e]):t.ethereum[e]?t.ethereum:void 0}function ne(e){let t=(i,r)=>{let[a,...o]=r.split("."),I=i[a];if(I)return o.length===0?I:t(I,o.join("."))};if(typeof window<"u")return t(window,e)}function y({flag:e,namespace:t}){return!!(t&&typeof ne(t)<"u"||e&&typeof te(e)<"u")}function Ue({flag:e,namespace:t}){let i=typeof window<"u"?window:void 0;if(typeof i>"u")return;if(t){let a=ne(t);if(a)return a}let r=i.ethereum?.providers;if(e){let a=te(e);if(a)return a}return typeof r<"u"&&r.length>0?r[0]:i.ethereum}function Qe(e){return t=>{let i=e?{target:()=>({id:t.paraDetails.id,name:t.paraDetails.name,provider:e})}:{};return be(r=>({...Ze(i)(r),...t}))}}function x({flag:e,namespace:t,target:i}){let r=i||Ue({flag:e,namespace:t});return Qe(r)}import{createConnector as Ye}from"wagmi";import{walletConnect as ve}from"wagmi/connectors";var ie=new Map,Ge=({projectId:e,walletConnectParameters:t,paraDetailsShowQrModal:i})=>{let r={...t||{},projectId:e,showQrModal:!1};i&&(r={...r,showQrModal:!0});let a=JSON.stringify(r),o=ie.get(a);if(o)return o;let I=ve(r);return ie.set(a,I),I};function Re({projectId:e,walletDetails:t,walletConnectParameters:i}){return Ye(r=>({...Ge({projectId:e,walletConnectParameters:i,paraDetailsShowQrModal:t.paraDetails.showQrModal})(r),...t,id:t.paraDetails.id}))}function m({projectId:e,walletConnectParameters:t}){if(!e||e==="")throw new Error("No projectId found. Every dApp must now provide a WalletConnect Cloud projectId to enable WalletConnect v2. Sign up for your free key at https://cloud.walletconnect.com/sign-in");return i=>Re({projectId:e,walletDetails:i,walletConnectParameters:t})}var ae="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMyIgdmlld0JveD0iMCAwIDI0IDIzIiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMjIuODA0OSAwTDEzLjQ0MDIgNi45NTUyOUwxNS4xNzE5IDIuODUxNzdMMjIuODA0OSAwWiIgZmlsbD0iI0UyNzYxQiIvPgogIDxwYXRoIGQ9Ik0xLjE4NTk5IDBMMTAuNDc1NCA3LjAyMTE4TDguODI4MzQgMi44NTE3N0wxLjE4NTk5IDBaTTE5LjQzNTQgMTYuMTIyNEwxNi45NDEzIDE5Ljk0MzVMMjIuMjc3OCAyMS40MTE4TDIzLjgxMTkgMTYuMjA3MUwxOS40MzU0IDE2LjEyMjRaTTAuMTk3NzU0IDE2LjIwNzFMMS43MjI0NiAyMS40MTE4TDcuMDU4OTMgMTkuOTQzNUw0LjU2NDgxIDE2LjEyMjRMMC4xOTc3NTQgMTYuMjA3MVoiIGZpbGw9IiNFNDc2MUIiLz4KICA8cGF0aCBkPSJNNi43NTgwNSA5LjY2NTg2TDUuMjcxIDExLjkxNTNMMTAuNTY5OCAxMi4xNTA2TDEwLjM4MTYgNi40NTY0NUw2Ljc1ODA1IDkuNjY1ODZaTTE3LjIzMzMgOS42NjU4NkwxMy41NjI4IDYuMzkwNTZMMTMuNDQwNCAxMi4xNTA2TDE4LjcyOTggMTEuOTE1M0wxNy4yMzMzIDkuNjY1ODZaTTcuMDU5MjMgMTkuOTQzNUwxMC4yNDA0IDE4LjM5MDZMNy40OTIxNyAxNi4yNDQ3TDcuMDU5MjMgMTkuOTQzNVpNMTMuNzUxIDE4LjM5MDZMMTYuOTQxNiAxOS45NDM1TDE2LjQ5OTIgMTYuMjQ0N0wxMy43NTEgMTguMzkwNloiIGZpbGw9IiNFNDc2MUIiLz4KICA8cGF0aCBkPSJNMTYuOTQxMiAxOS45NDM1TDEzLjc1MDYgMTguMzkwNkwxNC4wMDQ3IDIwLjQ3MDZMMTMuOTc2NSAyMS4zNDU5TDE2Ljk0MTIgMTkuOTQzNVpNNy4wNTg4NCAxOS45NDM1TDEwLjAyMzUgMjEuMzQ1OUwxMC4wMDQ3IDIwLjQ3MDZMMTAuMjQgMTguMzkwNkw3LjA1ODg0IDE5Ljk0MzVaIiBmaWxsPSIjRDdDMUIzIi8+CiAgPHBhdGggZD0iTTEwLjA3MDYgMTQuODcwNkw3LjQxNjUgMTQuMDg5NEw5LjI4OTQ1IDEzLjIzMjlMMTAuMDcwNiAxNC44NzA2Wk0xMy45MiAxNC44NzA2TDE0LjcwMTIgMTMuMjMyOUwxNi41ODM2IDE0LjA4OTRMMTMuOTIgMTQuODcwNloiIGZpbGw9IiMyMzM0NDciLz4KICA8cGF0aCBkPSJNNy4wNTg4MiAxOS45NDM1TDcuNTEwNTggMTYuMTIyM0w0LjU2NDcgMTYuMjA3TDcuMDU4ODIgMTkuOTQzNVpNMTYuNDg5NCAxNi4xMjIzTDE2Ljk0MTIgMTkuOTQzNUwxOS40MzUzIDE2LjIwN0wxNi40ODk0IDE2LjEyMjNaTTE4LjcyOTQgMTEuOTE1M0wxMy40NCAxMi4xNTA2TDEzLjkyOTQgMTQuODcwNkwxNC43MTA2IDEzLjIzMjlMMTYuNTkyOSAxNC4wODk0TDE4LjcyOTQgMTEuOTE1M1pNNy40MTY0NiAxNC4wODk0TDkuMjk4ODIgMTMuMjMyOUwxMC4wNzA2IDE0Ljg3MDZMMTAuNTY5NCAxMi4xNTA2TDUuMjcwNTggMTEuOTE1M0w3LjQxNjQ2IDE0LjA4OTRaIiBmaWxsPSIjQ0Q2MTE2Ii8+CiAgPHBhdGggZD0iTTUuMjcxIDExLjkxNTNMNy40OTIxNyAxNi4yNDQ3TDcuNDE2ODggMTQuMDg5NEw1LjI3MSAxMS45MTUzWk0xNi41OTMzIDE0LjA4OTRMMTYuNDk5MiAxNi4yNDQ3TDE4LjcyOTggMTEuOTE1M0wxNi41OTMzIDE0LjA4OTRaTTEwLjU2OTggMTIuMTUwNkwxMC4wNzEgMTQuODcwNkwxMC42OTIyIDE4LjA4TDEwLjgzMzMgMTMuODU0MUwxMC41Njk4IDEyLjE1MDZaTTEzLjQ0MDQgMTIuMTUwNkwxMy4xODYzIDEzLjg0NDdMMTMuMjk5MiAxOC4wOEwxMy45Mjk4IDE0Ljg3MDZMMTMuNDQwNCAxMi4xNTA2WiIgZmlsbD0iI0U0NzUxRiIvPgogIDxwYXRoIGQ9Ik0xMy45Mjk0IDE0Ljg3MDVMMTMuMjk4OSAxOC4wNzk5TDEzLjc1MDYgMTguMzkwNUwxNi40OTg5IDE2LjI0NDdMMTYuNTkzIDE0LjA4OTRMMTMuOTI5NCAxNC44NzA1Wk03LjQxNjUgMTQuMDg5NEw3LjQ5MTggMTYuMjQ0N0wxMC4yNCAxOC4zOTA1TDEwLjY5MTggMTguMDc5OUwxMC4wNzA2IDE0Ljg3MDVMNy40MTY1IDE0LjA4OTRaIiBmaWxsPSIjRjY4NTFCIi8+CiAgPHBhdGggZD0iTTEzLjk3NjUgMjEuMzQ1OUwxNC4wMDQ3IDIwLjQ3MDZMMTMuNzY5NCAyMC4yNjM1SDEwLjIyMTJMMTAuMDA0NyAyMC40NzA2TDEwLjAyMzUgMjEuMzQ1OUw3LjA1ODg0IDE5Ljk0MzVMOC4wOTQxMyAyMC43OTA2TDEwLjE5MyAyMi4yNDk0SDEzLjc5NzdMMTUuOTA1OSAyMC43OTA2TDE2Ljk0MTIgMTkuOTQzNUwxMy45NzY1IDIxLjM0NTlaIiBmaWxsPSIjQzBBRDlFIi8+CiAgPHBhdGggZD0iTTEzLjc1MDggMTguMzkwNkwxMy4yOTkgMTguMDhIMTAuNjkxOUwxMC4yNDAyIDE4LjM5MDZMMTAuMDA0OSAyMC40NzA2TDEwLjIyMTQgMjAuMjYzNUgxMy43Njk2TDE0LjAwNDkgMjAuNDcwNkwxMy43NTA4IDE4LjM5MDZaIiBmaWxsPSIjMTYxNjE2Ii8+CiAgPHBhdGggZD0iTTIzLjIgNy40MDcwNkwyNCAzLjU2NzA2TDIyLjgwNDcgMEwxMy43NTA2IDYuNzJMMTcuMjMyOSA5LjY2NTg4TDIyLjE1NTMgMTEuMTA1OUwyMy4yNDcxIDkuODM1MjlMMjIuNzc2NSA5LjQ5NjQ3TDIzLjUyOTQgOC44MDk0MUwyMi45NDU5IDguMzU3NjVMMjMuNjk4OCA3Ljc4MzUzTDIzLjIgNy40MDcwNlpNMCAzLjU2NzA2TDAuOCA3LjQwNzA2TDAuMjkxNzY1IDcuNzgzNTNMMS4wNDQ3MSA4LjM1NzY1TDAuNDcwNTg4IDguODA5NDFMMS4yMjM1MyA5LjQ5NjQ3TDAuNzUyOTQxIDkuODM1MjlMMS44MzUyOSAxMS4xMDU5TDYuNzU3NjUgOS42NjU4OEwxMC4yNCA2LjcyTDEuMTg1ODggMEwwIDMuNTY3MDZaIiBmaWxsPSIjNzYzRDE2Ii8+CiAgPHBhdGggZD0iTTIyLjE1NTQgMTEuMTA1OUwxNy4yMzMgOS42NjU5MkwxOC43Mjk1IDExLjkxNTNMMTYuNDk4OSAxNi4yNDQ3TDE5LjQzNTQgMTYuMjA3MUgyMy44MTE5TDIyLjE1NTQgMTEuMTA1OVpNNi43NTc3NSA5LjY2NTkyTDEuODM1NCAxMS4xMDU5TDAuMTk3NzU0IDE2LjIwNzFINC41NjQ4MUw3LjQ5MTg3IDE2LjI0NDdMNS4yNzA3IDExLjkxNTNMNi43NTc3NSA5LjY2NTkyWk0xMy40NDAxIDEyLjE1MDZMMTMuNzUwNyA2LjcyMDA0TDE1LjE4MTMgMi44NTE4MUg4LjgyODM0TDEwLjI0MDEgNi43MjAwNEwxMC41Njk1IDEyLjE1MDZMMTAuNjgyNSAxMy44NjM2TDEwLjY5MTkgMTguMDhIMTMuMjk4OUwxMy4zMTc4IDEzLjg2MzZMMTMuNDQwMSAxMi4xNTA2WiIgZmlsbD0iI0Y2ODUxQiIvPgo8L3N2Zz4=";function Ve(e){return!(!e?.isMetaMask||e.isBraveWallet&&!e._events&&!e._state||e.isApexWallet||e.isAvalanche||e.isBackpack||e.isBifrost||e.isBitKeep||e.isBitski||e.isBlockWallet||e.isCoinbaseWallet||e.isDawn||e.isEnkrypt||e.isExodus||e.isFrame||e.isFrontier||e.isGamestop||e.isHyperPay||e.isImToken||e.isKuCoinWallet||e.isMathWallet||e.isNestWallet||e.isOkxWallet||e.isOKExWallet||e.isOneInchIOSWallet||e.isOneInchAndroidWallet||e.isOpera||e.isPhantom||e.isPortal||e.isRabby||e.isRainbow||e.isStatus||e.isTalisman||e.isTally||e.isTokenPocket||e.isTokenary||e.isTrust||e.isTrustWallet||e.isXDEFI||e.isZeal||e.isZerion||e.__seif)}var Je=({projectId:e,walletConnectParameters:t})=>{let i=y({flag:"isMetaMask"});return{id:"metaMask",name:"MetaMask",rdns:"io.metamask",iconUrl:ae,installed:i,isExtension:!0,isMobile:!0,downloadUrl:"https://metamask.io/download/",getUri:a=>he()?`metamask://wc?uri=${encodeURIComponent(a)}`:Be()?Fe()?`https://metamask.app.link/wc?uri=${encodeURIComponent(a)}`:`metamask://wc?uri=${encodeURIComponent(a)}`:`https://metamask.app.link/wc?uri=${encodeURIComponent(a)}`,createConnector:i?x({target:typeof window<"u"?window.ethereum?.providers?.find(Ve)??window.ethereum:void 0}):m({projectId:e,walletConnectParameters:t})}};import{isAndroid as He,isIOS as Xe,isTelegram as Ke}from"@getpara/react-sdk";var re="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMCA1LjRIMS44QzExLjA3ODQgNS40IDE4LjYgMTIuOTIxNiAxOC42IDIyLjJWMjRIMjIuMkMyMy4xOTQxIDI0IDI0IDIzLjE5NDEgMjQgMjIuMkMyNCA5LjkzOTI3IDE0LjA2MDcgMCAxLjggMEMwLjgwNTg4NyAwIDAgMC44MDU4ODcgMCAxLjhWNS40WiIgZmlsbD0idXJsKCNwYWludDBfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTE5LjIgMjIuMkgyMy45OTk5QzIzLjk5OTkgMjMuMTk0MSAyMy4xOTQxIDI0IDIyLjE5OTkgMjRIMTkuMlYyMi4yWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAwTDEuOCA0LjhIMEwxLjMxMTM0ZS0wNyAxLjhDMS43NDU4OGUtMDcgMC44MDU4ODcgMC44MDU4ODcgLTQuMzQ1NGUtMDggMS44IDBaIiBmaWxsPSJ1cmwoI3BhaW50Ml9saW5lYXJfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMCA0Ljc5OTk5SDEuOEMxMS40MDk3IDQuNzk5OTkgMTkuMiAxMi41OTAyIDE5LjIgMjIuMlYyNEgxMy44VjIyLjJDMTMuOCAxNS41NzI2IDguNDI3NDEgMTAuMiAxLjggMTAuMkgwVjQuNzk5OTlaIiBmaWxsPSJ1cmwoI3BhaW50M19yYWRpYWxfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMTQuMzk5OSAyMi4ySDE5LjE5OTlWMjRIMTQuMzk5OVYyMi4yWiIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTIuMDk4MTVlLTA3IDkuNTk5OTlMMCA0Ljc5OTk5TDEuOCA0Ljc5OTk5TDEuOCA5LjU5OTk5SDIuMDk4MTVlLTA3WiIgZmlsbD0idXJsKCNwYWludDVfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTAgMTIuNkMwIDEzLjU5NDEgMC44MDU4ODcgMTQuNCAxLjggMTQuNEM2LjEwNzgyIDE0LjQgOS42IDE3Ljg5MjEgOS42IDIyLjJDOS42IDIzLjE5NDEgMTAuNDA1OSAyNCAxMS40IDI0SDE0LjRWMjIuMkMxNC40IDE1LjI0MTIgOC43NTg3OCA5LjU5OTk4IDEuOCA5LjU5OTk4SDBWMTIuNloiIGZpbGw9InVybCgjcGFpbnQ2X3JhZGlhbF80NDJfODI3KSIvPgogIDxwYXRoIGQ9Ik05LjYwMDEgMjIuMkgxNC40MDAxVjI0SDExLjQwMDFDMTAuNDA2IDI0IDkuNjAwMSAyMy4xOTQxIDkuNjAwMSAyMi4yWiIgZmlsbD0idXJsKCNwYWludDdfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAxNC40QzAuODA1ODg3IDE0LjQgMS43NDU4OGUtMDcgMTMuNTk0MSAxLjMxMTM0ZS0wNyAxMi42TDAgOS41OTk5OEwxLjggOS41OTk5OEwxLjggMTQuNFoiIGZpbGw9InVybCgjcGFpbnQ4X3JhZGlhbF80NDJfODI3KSIvPgogIDxkZWZzPgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDIyLjIpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjc3MDI3NyIgc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDQyXzgyNyIgeDE9IjE4LjkiIHkxPSIyMy4xIiB4Mj0iMjMuOTk5OSIgeTI9IjIzLjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfNDQyXzgyNyIgeDE9IjAuOSIgeTE9Ii0zLjkzMzllLTA3IiB4Mj0iMC44OTk5OTgiIHkyPSI1LjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzg3NTRDOSIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjQwMDAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDQyXzgyNyIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjggMjIuMikgcm90YXRlKC05MCkgc2NhbGUoMTcuNCkiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAuNzIzOTI5IiBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ0X2xpbmVhcl80NDJfODI3IiB4MT0iMTQuMzk5OSIgeTE9IjIzLjEiIHgyPSIxOS4xOTk5IiB5Mj0iMjMuMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ1X2xpbmVhcl80NDJfODI3IiB4MT0iMC45MDAwMDEiIHkxPSI5LjU5OTk5IiB4Mj0iMC44OTk5OTkiIHkyPSI0Ljc5OTk5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRkY3MDAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY5OTAxIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDZfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDEyLjYpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjU5NTEzIiBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ3X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzAwMSAyMy4xKSBzY2FsZSg1LjEgMTMuNikiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ4X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAuODk5OTk5IDE0LjcpIHJvdGF0ZSgtOTApIHNjYWxlKDUuMSA5Ni43MTEpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwQUFGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMURBNDAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgPC9kZWZzPgo8L3N2Zz4=";var $e=({projectId:e,walletConnectParameters:t})=>{let i=y({flag:"isRainbow"});return{id:"rainbow",name:"Rainbow",rdns:"me.rainbow",iconUrl:re,installed:i,isExtension:!0,isMobile:!0,downloadUrl:"https://rainbow.me/",getUri:a=>He()?`rainbow://wc?uri=${encodeURIComponent(a)}`:Xe()?Ke()?`https://rnbwapp.com/wc?uri=${encodeURIComponent(a)}`:`rainbow://wc?uri=${encodeURIComponent(a)}`:`https://rnbwapp.com/wc?uri=${encodeURIComponent(a)}`,createConnector:i?x({flag:"isRainbow"}):m({projectId:e,walletConnectParameters:t})}};var oe="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNNC45MTMzIDYuOTM1NDFDOC44MjcxOCAzLjAyMTUzIDE1LjE3MjggMy4wMjE1MyAxOS4wODY3IDYuOTM1NDFMMTkuNTU3OCA3LjQwNjQ2QzE5Ljc1MzUgNy42MDIxNSAxOS43NTM1IDcuOTE5NDMgMTkuNTU3OCA4LjExNTEzTDE3Ljk0NjQgOS43MjY0N0MxNy44NDg2IDkuODI0MzIgMTcuNjg5OSA5LjgyNDMyIDE3LjU5MjEgOS43MjY0N0wxNi45NDM5IDkuMDc4MjZDMTQuMjEzNSA2LjM0Nzg0IDkuNzg2NTcgNi4zNDc4NCA3LjA1NjE0IDkuMDc4MjZMNi4zNjE5NiA5Ljc3MjQ0QzYuMjY0MTIgOS44NzAyOCA2LjEwNTQ4IDkuODcwMjggNi4wMDc2MyA5Ljc3MjQ0TDQuMzk2MjkgOC4xNjExQzQuMjAwNTkgNy45NjU0IDQuMjAwNTkgNy42NDgxMiA0LjM5NjI5IDcuNDUyNDNMNC45MTMzIDYuOTM1NDFaTTIyLjQxOTEgMTAuMjY3OEwyMy44NTMyIDExLjcwMTlDMjQuMDQ4OSAxMS44OTc2IDI0LjA0ODkgMTIuMjE0OSAyMy44NTMyIDEyLjQxMDZMMTcuMzg2OCAxOC44NzcyQzE3LjE5MTEgMTkuMDcyOCAxNi44NzM4IDE5LjA3MjkgMTYuNjc4MSAxOC44NzcyQzE2LjY3ODEgMTguODc3MiAxNi42NzgxIDE4Ljg3NzIgMTYuNjc4MSAxOC44NzcyTDEyLjA4ODYgMTQuMjg3N0MxMi4wMzk3IDE0LjIzODcgMTEuOTYwNCAxNC4yMzg3IDExLjkxMTUgMTQuMjg3N0MxMS45MTE1IDE0LjI4NzcgMTEuOTExNSAxNC4yODc3IDExLjkxMTUgMTQuMjg3N0w3LjMyMjA3IDE4Ljg3NzJDNy4xMjYzOCAxOS4wNzI4IDYuODA5MDkgMTkuMDcyOSA2LjYxMzQgMTguODc3MkM2LjYxMzQgMTguODc3MiA2LjYxMzM5IDE4Ljg3NzIgNi42MTMzOSAxOC44NzcyTDAuMTQ2NzcxIDEyLjQxMDVDLTAuMDQ4OTIzNiAxMi4yMTQ4IC0wLjA0ODkyMzYgMTEuODk3NSAwLjE0Njc3MSAxMS43MDE5TDEuNTgwODcgMTAuMjY3OEMxLjc3NjU2IDEwLjA3MjEgMi4wOTM4NSAxMC4wNzIxIDIuMjg5NTQgMTAuMjY3OEw2Ljg3OTEgMTQuODU3M0M2LjkyODAyIDE0LjkwNjIgNy4wMDczNCAxNC45MDYyIDcuMDU2MjYgMTQuODU3M0M3LjA1NjI2IDE0Ljg1NzMgNy4wNTYyNiAxNC44NTczIDcuMDU2MjcgMTQuODU3M0wxMS42NDU2IDEwLjI2NzhDMTEuODQxMyAxMC4wNzIxIDEyLjE1ODYgMTAuMDcyIDEyLjM1NDMgMTAuMjY3N0MxMi4zNTQzIDEwLjI2NzcgMTIuMzU0MyAxMC4yNjc3IDEyLjM1NDMgMTAuMjY3N0wxNi45NDM4IDE0Ljg1NzNDMTYuOTkyNyAxNC45MDYyIDE3LjA3MjEgMTQuOTA2MiAxNy4xMjEgMTQuODU3M0wyMS43MTA1IDEwLjI2NzhDMjEuOTA2MiAxMC4wNzIxIDIyLjIyMzQgMTAuMDcyMSAyMi40MTkxIDEwLjI2NzhaIiBmaWxsPSIjM0I5OUZDIi8+Cjwvc3ZnPg==";var _e=({projectId:e,options:t})=>({id:"walletConnect",name:"WalletConnect",installed:void 0,iconUrl:oe,isMobile:!0,getUri:r=>r,createConnector:m({projectId:e,walletConnectParameters:t})});import{createConnector as qe}from"wagmi";import{coinbaseWallet as et}from"wagmi/connectors";var Me="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDQyXzg1NCkiPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiAyNEMxOC42Mjc0IDI0IDI0IDE4LjYyNzQgMjQgMTJDMjQgNS4zNzI1OCAxOC42Mjc0IDAgMTIgMEM1LjM3MjU4IDAgMCA1LjM3MjU4IDAgMTJDMCAxOC42Mjc0IDUuMzcyNTggMjQgMTIgMjRaTTguODMxNzUgOC4wODE2MkM4LjQxNzU0IDguMDgxNjIgOC4wODE3NSA4LjQxNzQxIDguMDgxNzUgOC44MzE2MlYxNS4xNjg0QzguMDgxNzUgMTUuNTgyNiA4LjQxNzU0IDE1LjkxODQgOC44MzE3NSAxNS45MTg0SDE1LjE2ODVDMTUuNTgyNyAxNS45MTg0IDE1LjkxODUgMTUuNTgyNiAxNS45MTg1IDE1LjE2ODRWOC44MzE2MkMxNS45MTg1IDguNDE3NDEgMTUuNTgyNyA4LjA4MTYyIDE1LjE2ODUgOC4wODE2Mkg4LjgzMTc1WiIgZmlsbD0iIzJDNUZGNiIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfNDQyXzg1NCI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=";var tt=({appName:e,appIcon:t})=>{let i=y({flag:"isCoinbaseWallet"});return{id:"coinbase",name:"Coinbase Wallet",rdns:"com.coinbase.wallet",iconUrl:Me,installed:i,isExtension:!0,isMobile:!0,downloadUrl:"https://www.coinbase.com/wallet/downloads",getUri:a=>a,createConnector:a=>qe(o=>({...et({version:"4",appName:e,appLogoUrl:t,preference:"eoaOnly"})(o),...a}))}};import{isIOS as nt,isTelegram as it}from"@getpara/react-sdk";var Ie="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PHBhdGggZmlsbD0iIzI5NjJFRiIgZD0iTTAgMGgyOHYyOEgweiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik02LjA3MyA3Yy0uNDggMC0uNjY1LjU5My0uMjYyLjg0MWwxMC4wNzMgNi4wNzRhLjU3Ny41NzcgMCAwIDAgLjc1OC0uMTM5bDQuNDMtNS44MTRjLjMtLjQwNC0uMDA0LS45NjItLjUyNS0uOTYySDYuMDczWk0yMS45MDQgMjFjLjQ4IDAgLjY3LS41OTYuMjY3LS44NDRsLTEwLjA3NS02LjA3M2EuNTY5LjU2OSAwIDAgMC0uNzUxLjE0NmwtNC40MzcgNS44MTNjLS4zMDEuNDA0LjAxMi45NTguNTM0Ljk1OGgxNC40NjJaIi8+PC9zdmc+";var at=({projectId:e,walletConnectParameters:t})=>{let i=y({namespace:"zerionWallet",flag:"isZerion"});return{id:"zerion",name:"Zerion",rdns:"io.zerion.wallet",iconUrl:Ie,installed:i,isExtension:!0,isMobile:!0,getUri:a=>it()&&nt()?`https://app.zerion.io/wc?uri=${encodeURIComponent(a)}`:`zerion://wc?uri=${encodeURIComponent(a)}`,downloadUrl:"https://zerion.io/download",createConnector:i?x({namespace:"zerionWallet",flag:"isZerion"}):m({projectId:e,walletConnectParameters:t})}};var ce="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjODY5N0ZGIiBkPSJNMjggMEgwdjI4aDI4VjBaIi8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTIyLjU0IDE1LjA3OGMuNjc3LTEuNTE0LTIuNjczLTUuNzQ0LTUuODc0LTcuNTA2LTIuMDE3LTEuMzY1LTQuMTItMS4xNzgtNC41NDUtLjU3OS0uOTM1IDEuMzE2IDMuMDk0IDIuNDMgNS43ODggMy43MzEtLjU4LjI1Mi0xLjEyNS43MDMtMS40NDYgMS4yOC0xLjAwNC0xLjA5Ni0zLjIwOS0yLjA0LTUuNzk2LTEuMjgtMS43NDMuNTEzLTMuMTkxIDEuNzIxLTMuNzUxIDMuNTQ2YTEuMDk3IDEuMDk3IDAgMSAwLS40NDUgMi4xYy4xMTIgMCAuNDYzLS4wNzUuNDYzLS4wNzVsNS42MTIuMDQxYy0yLjI0NCAzLjU2LTQuMDE4IDQuMDgxLTQuMDE4IDQuNjk4czEuNjk3LjQ1IDIuMzM1LjIyYzMuMDUtMS4xIDYuMzI3LTQuNTMxIDYuODktNS41MTkgMi4zNi4yOTUgNC4zNDUuMzMgNC43ODYtLjY1N1oiLz48cGF0aCBmaWxsPSJ1cmwoI2MpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0xNy44ODUgMTAuNzEzLjAyNS4wMWMuMTI1LS4wNDkuMTA1LS4yMzMuMDctLjM3OC0uMDc4LS4zMzMtMS40MzgtMS42NzYtMi43MTUtMi4yNzctMS43NDMtLjgyLTMuMDI1LS43NzctMy4yMTItLjM5OC4zNTYuNzI2IDEuOTk4IDEuNDA4IDMuNzE0IDIuMTIuNzIzLjMgMS40Ni42MDYgMi4xMTguOTIzWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0idXJsKCNkKSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNzAxIDE4LjAzNmExMC4yOTYgMTAuMjk2IDAgMCAwLTEuMi0uMzdjLjQ4Mi0uODYyLjU4My0yLjEzOC4xMjgtMi45NDUtLjYzOS0xLjEzMy0xLjQ0LTEuNzM2LTMuMzA0LTEuNzM2LTEuMDI0IDAtMy43ODMuMzQ2LTMuODMyIDIuNjQ4LS4wMDUuMjQyIDAgLjQ2NC4wMTcuNjY3bDUuMDM2LjAzN2ExNy4yNjQgMTcuMjY0IDAgMCAxLTEuODcxIDIuNDgzYy42NjkuMTcyIDEuMjIxLjMxNiAxLjcyOC40NDguNDguMTI1LjkyLjI0IDEuMzguMzU3YTIxLjAwMyAyMS4wMDMgMCAwIDAgMS45MTgtMS41OVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9InVybCgjZSkiIGQ9Ik02Ljg0OCAxNi4wNjNjLjIwNiAxLjc1IDEuMiAyLjQzNSAzLjIzMiAyLjYzOCAyLjAzMi4yMDMgMy4xOTcuMDY3IDQuNzQ5LjIwOCAxLjI5Ni4xMTggMi40NTMuNzc4IDIuODgyLjU1LjM4Ni0uMjA1LjE3LS45NDctLjM0Ny0xLjQyMy0uNjctLjYxNy0xLjU5Ny0xLjA0Ni0zLjIyOS0xLjE5OS4zMjUtLjg5LjIzNC0yLjEzOC0uMjctMi44MTctLjczMS0uOTgyLTIuMDc5LTEuNDI2LTMuNzg1LTEuMjMyLTEuNzgyLjIwMi0zLjQ5IDEuMDgtMy4yMzIgMy4yNzVaIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjEwLjQ2NCIgeDI9IjIyLjM5NCIgeTE9IjEzLjczNyIgeTI9IjE3LjEyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI2ZmZiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iMjAuMzg2IiB4Mj0iMTEuNzc5IiB5MT0iMTMuNTA5IiB5Mj0iNC44NzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzI1OERDIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzk3REVBIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCIgeDE9IjE1Ljk0IiB4Mj0iNy42NzMiIHkxPSIxOC4zMzciIHkyPSIxMy41ODQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzQ2MUVBIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkZDMkZGIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZSIgeDE9IjExLjE3NyIgeDI9IjE2Ljc2NSIgeTE9IjEzLjY0OCIgeTI9IjIwLjc0OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9Ii45ODQiIHN0b3AtY29sb3I9IiNENUNFRkYiLz48L2xpbmVhckdyYWRpZW50PjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgyOHYyOEgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==";var rt=({projectId:e,walletConnectParameters:t})=>{let i=y({flag:"isRabby"});return{id:"rabby",name:"Rabby Wallet",rdns:"io.rabby",iconUrl:ce,installed:i,isExtension:!0,isMobile:!1,downloadUrl:"https://rabby.io",createConnector:i?x({flag:"isRabby"}):m({projectId:e,walletConnectParameters:t})}};export{S as EvmExternalWalletContext,Y as EvmExternalWalletProvider,Se as ParaEvmProvider,tt as coinbaseWallet,Je as metaMaskWallet,rt as rabbyWallet,$e as rainbowWallet,_e as walletConnectWallet,at as zerionWallet};
2
+
3
+ // src/providers/EvmExternalWalletContext.tsx
4
+ import { createContext, useEffect, useMemo } from "react";
5
+ import { useAccount, useSwitchChain, useConnect, useDisconnect, useEnsName, useEnsAvatar } from "wagmi";
6
+
7
+ // src/utils/isEIP6963Connector.ts
8
+ var isEIP6963Connector = (wallet) => {
9
+ return !!(!wallet.isRainbowKitConnector && wallet.icon?.startsWith("data:image") && wallet.uid && wallet.name);
10
+ };
11
+
12
+ // src/utils/getWalletConnectUri.ts
13
+ var getWalletConnectUri = async (connector, uriConverter) => {
14
+ const provider = await connector.getProvider();
15
+ if (connector.type === "coinbaseWallet") {
16
+ return provider.qrUrl;
17
+ }
18
+ return new Promise(
19
+ (resolve) => (
20
+ // Wagmi v2 doesn't have a return type for provider yet
21
+ // @ts-expect-error
22
+ provider.once("display_uri", (uri) => {
23
+ resolve(uriConverter ? uriConverter(uri) : uri);
24
+ })
25
+ )
26
+ );
27
+ };
28
+
29
+ // src/providers/EvmExternalWalletContext.tsx
30
+ import { isMobile, WalletType } from "@getpara/react-sdk";
31
+ import { normalize } from "viem/ens";
32
+
33
+ // src/stores/useStore.ts
34
+ import { create } from "zustand";
35
+ import { syncTabs } from "zustand-sync-tabs";
36
+ var useExternalWalletStore = create(
37
+ syncTabs(
38
+ (set) => ({
39
+ isConnecting: false,
40
+ updateState: (state) => {
41
+ set({ ...state });
42
+ }
43
+ }),
44
+ {
45
+ name: "para-evm-external-wallet-state"
46
+ }
47
+ )
48
+ );
49
+
50
+ // src/providers/EvmExternalWalletContext.tsx
51
+ import { jsx } from "react/jsx-runtime";
52
+ var defaultEvmExternalWallet = {
53
+ wallets: [],
54
+ chains: [],
55
+ chainId: void 0,
56
+ username: void 0,
57
+ avatar: void 0,
58
+ disconnect: () => Promise.resolve(),
59
+ switchChain: () => Promise.resolve({})
60
+ };
61
+ var EvmExternalWalletContext = createContext(defaultEvmExternalWallet);
62
+ function EvmExternalWalletProvider({ children, para, onSwitchWallet }) {
63
+ const { connectAsync, connectors: untypedConnectors } = useConnect();
64
+ const { address: wagmiAddress, isConnecting, isReconnecting, chainId, connector: connectedConnector } = useAccount();
65
+ const { chains, switchChainAsync } = useSwitchChain();
66
+ const { disconnectAsync } = useDisconnect();
67
+ const { data: ensName } = useEnsName({ address: wagmiAddress });
68
+ const { data: ensAvatar } = useEnsAvatar({
69
+ name: normalize(ensName)
70
+ });
71
+ const isLocalConnecting = useExternalWalletStore((state) => state.isConnecting);
72
+ const updateExternalWalletState = useExternalWalletStore((state) => state.updateState);
73
+ const getStoredExternalWallets = () => {
74
+ const storedExternalWalletsString = localStorage.getItem("@CAPSULE/externalWallets");
75
+ let storedExternalWallets = {};
76
+ if (storedExternalWalletsString) {
77
+ storedExternalWallets = JSON.parse(storedExternalWalletsString);
78
+ }
79
+ return storedExternalWallets;
80
+ };
81
+ useEffect(() => {
82
+ const storedExternalWallet = getStoredExternalWallets()[wagmiAddress ?? ""];
83
+ if (!isConnecting && !isReconnecting && !isLocalConnecting && !!wagmiAddress && !storedExternalWallet && !(connectedConnector?.id === "para")) {
84
+ reset();
85
+ }
86
+ }, [isConnecting, isReconnecting, isLocalConnecting, wagmiAddress, connectedConnector]);
87
+ useEffect(() => {
88
+ const storedExternalWallet = Object.values(para.externalWallets || {})[0];
89
+ if (!isLocalConnecting && !isConnecting && !isReconnecting && storedExternalWallet?.type === WalletType.EVM && storedExternalWallet?.address !== wagmiAddress) {
90
+ switchWallet(wagmiAddress);
91
+ }
92
+ }, [isLocalConnecting, wagmiAddress, isReconnecting, isConnecting]);
93
+ const connectors = untypedConnectors;
94
+ const reset = async () => {
95
+ await disconnectAsync();
96
+ await para.logout();
97
+ };
98
+ const switchChain = async (chainId2) => {
99
+ let error;
100
+ try {
101
+ await switchChainAsync({ chainId: chainId2 });
102
+ } catch (e) {
103
+ if (e.details.includes("Missing or invalid.")) {
104
+ const chain = chains.find((c) => c.id === chainId2);
105
+ error = [
106
+ "Network not supported.",
107
+ `You may need to add ${chain?.name} support to ${connectedConnector?.paraDetails?.name ?? connectedConnector?.name ?? "the wallet"} manually.`
108
+ ];
109
+ } else {
110
+ switch (e.name) {
111
+ case "UserRejectedRequestError": {
112
+ error = ["Change request rejected"];
113
+ break;
114
+ }
115
+ default: {
116
+ error = ["An unknown error occurred"];
117
+ break;
118
+ }
119
+ }
120
+ }
121
+ }
122
+ return { error };
123
+ };
124
+ const login = async (address, connectorName) => {
125
+ try {
126
+ await para.externalWalletLogin({ address, type: WalletType.EVM, provider: connectorName });
127
+ } catch (err) {
128
+ await disconnectAsync();
129
+ await para.logout();
130
+ throw "Error logging you in. Please try again.";
131
+ }
132
+ };
133
+ const switchWallet = async (address) => {
134
+ updateExternalWalletState({ isConnecting: true });
135
+ let error;
136
+ if (!address) {
137
+ await para.logout();
138
+ } else {
139
+ try {
140
+ await login(address, connectedConnector?.name);
141
+ } catch (err) {
142
+ error = err;
143
+ }
144
+ }
145
+ onSwitchWallet({ address, error });
146
+ updateExternalWalletState({ isConnecting: false });
147
+ };
148
+ const connect2 = async (connector) => {
149
+ updateExternalWalletState({ isConnecting: true });
150
+ await disconnectAsync();
151
+ const walletChainId = await connector.getChainId();
152
+ let address;
153
+ let error;
154
+ try {
155
+ const data = await connectAsync({
156
+ // If the wallet is already on a supported chain, use that to avoid a chain switch prompt.
157
+ chainId: chains.find(({ id }) => id === walletChainId)?.id ?? // Fall back to the first chain provided.
158
+ chains[0]?.id,
159
+ connector
160
+ });
161
+ address = data.accounts?.[0];
162
+ if (address) {
163
+ try {
164
+ await login(address, connector.name);
165
+ } catch (err) {
166
+ address = void 0;
167
+ error = err;
168
+ }
169
+ }
170
+ } catch (e) {
171
+ switch (e.name) {
172
+ case "UserRejectedRequestError": {
173
+ error = "Connection request rejected";
174
+ break;
175
+ }
176
+ case "ResourceUnavailableRpcError": {
177
+ `${connector.name} not detected`;
178
+ break;
179
+ }
180
+ default: {
181
+ error = "An unknown error occurred";
182
+ break;
183
+ }
184
+ }
185
+ }
186
+ updateExternalWalletState({ isConnecting: false });
187
+ return { address, error };
188
+ };
189
+ const connectMobile = async (connector, isManualWalletConnect) => {
190
+ const _isMobile = isManualWalletConnect !== void 0 ? isManualWalletConnect : isMobile();
191
+ const _connector = connector.walletConnectModalConnector && _isMobile ? connector.walletConnectModalConnector : connector;
192
+ return await connect2(_connector);
193
+ };
194
+ const getQrUri = (connector) => () => {
195
+ return getWalletConnectUri(connector, connector.paraDetails?.getUri);
196
+ };
197
+ const nonEip6963ConnectorsByRdns = {};
198
+ let walletConnectModalConnector;
199
+ connectors.filter((c) => !isEIP6963Connector(c)).forEach((c) => {
200
+ if (c.paraDetails) {
201
+ nonEip6963ConnectorsByRdns[c.paraDetails.rdns] = c.paraDetails;
202
+ if (c.paraDetails.isWalletConnectModalConnector) {
203
+ walletConnectModalConnector = c;
204
+ }
205
+ }
206
+ });
207
+ const eip6963ids = connectors.filter((c) => isEIP6963Connector(c)).map((c) => c.id);
208
+ const dedupedConnectors = connectors.map((c) => {
209
+ if (c.paraDetails?.isWalletConnectModalConnector) {
210
+ return;
211
+ }
212
+ if (!isEIP6963Connector(c) && eip6963ids.includes(c.paraDetails?.rdns)) {
213
+ return;
214
+ }
215
+ if (isEIP6963Connector(c)) {
216
+ const paraMetadata = nonEip6963ConnectorsByRdns[c.id];
217
+ return { ...c, paraDetails: paraMetadata };
218
+ }
219
+ if (c.paraDetails?.id === "walletConnect" && walletConnectModalConnector) {
220
+ return { ...c, walletConnectModalConnector };
221
+ }
222
+ return c;
223
+ }).filter((c) => !!c);
224
+ const wallets = dedupedConnectors.map((c) => {
225
+ const connector = { ...c, ...c.paraDetails };
226
+ return {
227
+ ...connector,
228
+ connect: () => connect2(connector),
229
+ connectMobile: (isManualWalletConnect) => connectMobile(connector, isManualWalletConnect),
230
+ type: WalletType.EVM,
231
+ getQrUri: getQrUri(connector)
232
+ };
233
+ });
234
+ const formattedChains = chains.map((c) => {
235
+ return {
236
+ id: c.id,
237
+ name: c.name
238
+ };
239
+ });
240
+ const username = useMemo(() => ensName ?? wagmiAddress, [ensName, wagmiAddress]);
241
+ const disconnect = disconnectAsync;
242
+ return /* @__PURE__ */ jsx(
243
+ EvmExternalWalletContext.Provider,
244
+ {
245
+ value: useMemo(
246
+ () => ({ wallets, chains: formattedChains, chainId, username, avatar: ensAvatar, disconnect, switchChain }),
247
+ [wallets, formattedChains, chainId, username, ensAvatar, disconnect, switchChain]
248
+ ),
249
+ children
250
+ }
251
+ );
252
+ }
253
+
254
+ // src/providers/ParaEvmContext.tsx
255
+ import { useCallback, useEffect as useEffect2, useMemo as useMemo2 } from "react";
256
+ import { createConfig, WagmiProvider } from "wagmi";
257
+
258
+ // src/utils/uniqueBy.ts
259
+ function uniqueBy(items, key) {
260
+ const filtered = [];
261
+ for (const item of items) {
262
+ if (!filtered.some((x) => x[key] === item[key])) {
263
+ filtered.push(item);
264
+ }
265
+ }
266
+ return filtered;
267
+ }
268
+
269
+ // src/utils/computeWalletConnectMetaData.ts
270
+ var computeWalletConnectMetaData = ({
271
+ appName,
272
+ appDescription,
273
+ appUrl,
274
+ appIcon
275
+ }) => {
276
+ return {
277
+ name: appName,
278
+ description: appDescription ?? appName,
279
+ url: appUrl ?? (typeof window !== "undefined" ? window.location.href : ""),
280
+ icons: [...appIcon ? [appIcon] : []]
281
+ };
282
+ };
283
+
284
+ // src/utils/omitUndefinedValues.ts
285
+ function omitUndefinedValues(obj) {
286
+ return Object.fromEntries(
287
+ //@ts-ignore
288
+ Object.entries(obj).filter(([_key, value]) => value !== void 0)
289
+ );
290
+ }
291
+
292
+ // src/wallets/connectorsForWallets.ts
293
+ var connectorsForWallets = (walletList, { projectId, walletConnectParameters, appName, appDescription, appUrl, appIcon }) => {
294
+ if (!walletList.length) {
295
+ throw new Error("No wallet list was provided");
296
+ }
297
+ let index = -1;
298
+ const connectors = [];
299
+ const wallets = [];
300
+ const walletConnectMetaData = computeWalletConnectMetaData({
301
+ appName,
302
+ appDescription,
303
+ appUrl,
304
+ appIcon
305
+ });
306
+ walletList.forEach((createWallet) => {
307
+ index++;
308
+ const wallet = createWallet({
309
+ projectId,
310
+ appName,
311
+ appIcon,
312
+ // `option` is being used only for `walletConnectWallet` wallet
313
+ options: {
314
+ metadata: walletConnectMetaData,
315
+ ...walletConnectParameters
316
+ },
317
+ // Every other wallet that supports walletConnect flow and is not
318
+ // `walletConnectWallet` wallet will have `walletConnectParameters` property
319
+ walletConnectParameters: {
320
+ metadata: walletConnectMetaData,
321
+ ...walletConnectParameters
322
+ }
323
+ });
324
+ const walletListItem = {
325
+ ...wallet,
326
+ index
327
+ };
328
+ wallets.push(walletListItem);
329
+ });
330
+ const walletListItems = uniqueBy([...wallets], "id");
331
+ for (const { createConnector: createConnector4, ...walletMeta } of walletListItems) {
332
+ const walletMetaData = (additionalParaParams) => {
333
+ return {
334
+ paraDetails: omitUndefinedValues({
335
+ ...walletMeta,
336
+ isParaConnector: true,
337
+ // These additional params will be used in Para react tree to
338
+ // merge `walletConnectWallet` and `walletConnect` connector from wagmi with
339
+ // showQrModal: true. This way we can let the user choose if they want to
340
+ // connect via QR code or open the official walletConnect modal instead
341
+ ...additionalParaParams ? additionalParaParams : {}
342
+ })
343
+ };
344
+ };
345
+ const isWalletConnectConnector = walletMeta.id === "walletConnect";
346
+ if (isWalletConnectConnector) {
347
+ connectors.push(
348
+ createConnector4(
349
+ walletMetaData({
350
+ isWalletConnectModalConnector: true,
351
+ showQrModal: true
352
+ })
353
+ )
354
+ );
355
+ }
356
+ if (createConnector4) {
357
+ connectors.push(createConnector4(walletMetaData()));
358
+ }
359
+ }
360
+ return connectors;
361
+ };
362
+
363
+ // src/providers/ParaEvmContext.tsx
364
+ import { http } from "viem";
365
+ import { useClient, useExternalWalletProviderStore } from "@getpara/react-sdk";
366
+ import { connect } from "wagmi/actions";
367
+ import { paraConnector } from "@getpara/wagmi-v2-integration";
368
+ import { jsx as jsx2 } from "react/jsx-runtime";
369
+ var createDefaultTransports = (chains) => {
370
+ const transportsObject = chains.reduce((acc, chain) => {
371
+ const key = chain.id;
372
+ acc[key] = http();
373
+ return acc;
374
+ }, {});
375
+ return transportsObject;
376
+ };
377
+ function ParaEvmProvider({ children, config: _config, ...wagmiProviderProps }) {
378
+ const updateExternalWalletProviderState = useExternalWalletProviderStore((state) => state.updateState);
379
+ const EvmProvider = useExternalWalletProviderStore((state) => state.EvmProvider);
380
+ const evmContext = useExternalWalletProviderStore((state) => state.evmContext);
381
+ const para = _config.para ?? useClient();
382
+ const {
383
+ projectId,
384
+ appName,
385
+ appDescription,
386
+ appIcon,
387
+ appUrl,
388
+ wallets,
389
+ chains,
390
+ transports,
391
+ paraDisableModal,
392
+ paraOptions,
393
+ ...wagmiConfigParams
394
+ } = _config;
395
+ const wcMetadata = computeWalletConnectMetaData({ appName, appDescription, appUrl, appIcon });
396
+ const paraConnectorInstance = useMemo2(() => {
397
+ if (!para) return void 0;
398
+ const instance = paraConnector({
399
+ para,
400
+ chains: [...chains],
401
+ disableModal: paraDisableModal ?? true,
402
+ appName,
403
+ options: paraOptions ?? {}
404
+ });
405
+ return instance;
406
+ }, [para, chains, paraDisableModal, appName, paraOptions]);
407
+ const allConnectors = useMemo2(() => {
408
+ const baseConnectors = connectorsForWallets(wallets, {
409
+ projectId,
410
+ appName,
411
+ appDescription,
412
+ appUrl,
413
+ appIcon,
414
+ walletConnectParameters: { metadata: wcMetadata }
415
+ });
416
+ return paraConnectorInstance ? [...baseConnectors, paraConnectorInstance] : baseConnectors;
417
+ }, [wallets, projectId, appName, appDescription, appUrl, appIcon, wcMetadata, paraConnectorInstance]);
418
+ const config = useMemo2(
419
+ () => createConfig({
420
+ ...wagmiConfigParams,
421
+ chains,
422
+ transports: transports || createDefaultTransports(chains),
423
+ connectors: allConnectors
424
+ }),
425
+ [wagmiConfigParams, chains, transports, allConnectors]
426
+ );
427
+ const connectParaEvmWallet = useCallback(async () => {
428
+ if (!paraConnectorInstance) {
429
+ return { error: "No para connector instance" };
430
+ }
431
+ try {
432
+ const result = await connect(config, { connector: paraConnectorInstance });
433
+ return { result };
434
+ } catch (err) {
435
+ const error = err instanceof Error ? err.message : "Unknown error";
436
+ return { error };
437
+ }
438
+ }, [paraConnectorInstance, config, connect]);
439
+ useEffect2(() => {
440
+ updateExternalWalletProviderState({
441
+ EvmProvider: evmContext && EvmProvider ? EvmProvider : EvmExternalWalletProvider,
442
+ evmContext: evmContext || EvmExternalWalletContext,
443
+ connectParaEvmWallet: paraConnectorInstance ? connectParaEvmWallet : void 0
444
+ });
445
+ }, [evmContext, EvmProvider, paraConnectorInstance, connectParaEvmWallet, updateExternalWalletProviderState]);
446
+ if (!evmContext || !EvmProvider) {
447
+ return null;
448
+ }
449
+ return /* @__PURE__ */ jsx2(WagmiProvider, { config, ...wagmiProviderProps, children });
450
+ }
451
+
452
+ // src/wallets/connectors/metaMask/metaMask.ts
453
+ import { isAndroid, isIOS, isTelegram } from "@getpara/react-sdk";
454
+
455
+ // src/utils/getInjectedConnector.ts
456
+ import { createConnector } from "wagmi";
457
+ import { injected } from "wagmi/connectors";
458
+ function getExplicitInjectedProvider(flag) {
459
+ const _window = typeof window !== "undefined" ? window : void 0;
460
+ if (typeof _window === "undefined" || typeof _window.ethereum === "undefined") return;
461
+ const providers = _window.ethereum.providers;
462
+ return providers ? providers.find((provider) => provider[flag]) : _window.ethereum[flag] ? _window.ethereum : void 0;
463
+ }
464
+ function getWindowProviderNamespace(namespace) {
465
+ const providerSearch = (provider, namespace2) => {
466
+ const [property, ...path] = namespace2.split(".");
467
+ const _provider = provider[property];
468
+ if (_provider) {
469
+ if (path.length === 0) return _provider;
470
+ return providerSearch(_provider, path.join("."));
471
+ }
472
+ };
473
+ if (typeof window !== "undefined") return providerSearch(window, namespace);
474
+ }
475
+ function hasInjectedProvider({ flag, namespace }) {
476
+ if (namespace && typeof getWindowProviderNamespace(namespace) !== "undefined") return true;
477
+ if (flag && typeof getExplicitInjectedProvider(flag) !== "undefined") return true;
478
+ return false;
479
+ }
480
+ function getInjectedProvider({ flag, namespace }) {
481
+ const _window = typeof window !== "undefined" ? window : void 0;
482
+ if (typeof _window === "undefined") return;
483
+ if (namespace) {
484
+ const windowProvider = getWindowProviderNamespace(namespace);
485
+ if (windowProvider) return windowProvider;
486
+ }
487
+ const providers = _window.ethereum?.providers;
488
+ if (flag) {
489
+ const provider = getExplicitInjectedProvider(flag);
490
+ if (provider) return provider;
491
+ }
492
+ if (typeof providers !== "undefined" && providers.length > 0) return providers[0];
493
+ return _window.ethereum;
494
+ }
495
+ function createInjectedConnector(provider) {
496
+ return (walletDetails) => {
497
+ const injectedConfig = provider ? {
498
+ target: () => ({
499
+ id: walletDetails.paraDetails.id,
500
+ name: walletDetails.paraDetails.name,
501
+ provider
502
+ })
503
+ } : {};
504
+ return createConnector((config) => ({
505
+ // Spread the injectedConfig object, which may be empty or contain the target function
506
+ ...injected(injectedConfig)(config),
507
+ ...walletDetails
508
+ }));
509
+ };
510
+ }
511
+ function getInjectedConnector({
512
+ flag,
513
+ namespace,
514
+ target
515
+ }) {
516
+ const provider = target ? target : getInjectedProvider({ flag, namespace });
517
+ return createInjectedConnector(provider);
518
+ }
519
+
520
+ // src/utils/getWalletConnectConnector.ts
521
+ import { createConnector as createConnector2 } from "wagmi";
522
+ import { walletConnect } from "wagmi/connectors";
523
+ var walletConnectInstances = /* @__PURE__ */ new Map();
524
+ var getOrCreateWalletConnectInstance = ({
525
+ projectId,
526
+ walletConnectParameters,
527
+ paraDetailsShowQrModal
528
+ }) => {
529
+ let config = {
530
+ ...walletConnectParameters ? walletConnectParameters : {},
531
+ projectId,
532
+ showQrModal: false
533
+ // Required. Otherwise WalletConnect modal (Web3Modal) will popup during time of connection for a wallet
534
+ };
535
+ if (paraDetailsShowQrModal) {
536
+ config = { ...config, showQrModal: true };
537
+ }
538
+ const serializedConfig = JSON.stringify(config);
539
+ const sharedWalletConnector = walletConnectInstances.get(serializedConfig);
540
+ if (sharedWalletConnector) {
541
+ return sharedWalletConnector;
542
+ }
543
+ const newWalletConnectInstance = walletConnect(config);
544
+ walletConnectInstances.set(serializedConfig, newWalletConnectInstance);
545
+ return newWalletConnectInstance;
546
+ };
547
+ function createWalletConnectConnector({
548
+ projectId,
549
+ walletDetails,
550
+ walletConnectParameters
551
+ }) {
552
+ return createConnector2((config) => ({
553
+ ...getOrCreateWalletConnectInstance({
554
+ projectId,
555
+ walletConnectParameters,
556
+ // Used in `connectorsForWallets` to add another
557
+ // walletConnect wallet into Para with modal popup option
558
+ paraDetailsShowQrModal: walletDetails.paraDetails.showQrModal
559
+ })(config),
560
+ ...walletDetails,
561
+ id: walletDetails.paraDetails.id
562
+ }));
563
+ }
564
+ function getWalletConnectConnector({
565
+ projectId,
566
+ walletConnectParameters
567
+ }) {
568
+ if (!projectId || projectId === "") {
569
+ throw new Error(
570
+ "No projectId found. Every dApp must now provide a WalletConnect Cloud projectId to enable WalletConnect v2. Sign up for your free key at https://cloud.walletconnect.com/sign-in"
571
+ );
572
+ }
573
+ return (walletDetails) => createWalletConnectConnector({
574
+ projectId,
575
+ walletDetails,
576
+ walletConnectParameters
577
+ });
578
+ }
579
+
580
+ // src/wallets/connectors/metaMask/metaMaskIcon.ts
581
+ var icon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMyIgdmlld0JveD0iMCAwIDI0IDIzIiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMjIuODA0OSAwTDEzLjQ0MDIgNi45NTUyOUwxNS4xNzE5IDIuODUxNzdMMjIuODA0OSAwWiIgZmlsbD0iI0UyNzYxQiIvPgogIDxwYXRoIGQ9Ik0xLjE4NTk5IDBMMTAuNDc1NCA3LjAyMTE4TDguODI4MzQgMi44NTE3N0wxLjE4NTk5IDBaTTE5LjQzNTQgMTYuMTIyNEwxNi45NDEzIDE5Ljk0MzVMMjIuMjc3OCAyMS40MTE4TDIzLjgxMTkgMTYuMjA3MUwxOS40MzU0IDE2LjEyMjRaTTAuMTk3NzU0IDE2LjIwNzFMMS43MjI0NiAyMS40MTE4TDcuMDU4OTMgMTkuOTQzNUw0LjU2NDgxIDE2LjEyMjRMMC4xOTc3NTQgMTYuMjA3MVoiIGZpbGw9IiNFNDc2MUIiLz4KICA8cGF0aCBkPSJNNi43NTgwNSA5LjY2NTg2TDUuMjcxIDExLjkxNTNMMTAuNTY5OCAxMi4xNTA2TDEwLjM4MTYgNi40NTY0NUw2Ljc1ODA1IDkuNjY1ODZaTTE3LjIzMzMgOS42NjU4NkwxMy41NjI4IDYuMzkwNTZMMTMuNDQwNCAxMi4xNTA2TDE4LjcyOTggMTEuOTE1M0wxNy4yMzMzIDkuNjY1ODZaTTcuMDU5MjMgMTkuOTQzNUwxMC4yNDA0IDE4LjM5MDZMNy40OTIxNyAxNi4yNDQ3TDcuMDU5MjMgMTkuOTQzNVpNMTMuNzUxIDE4LjM5MDZMMTYuOTQxNiAxOS45NDM1TDE2LjQ5OTIgMTYuMjQ0N0wxMy43NTEgMTguMzkwNloiIGZpbGw9IiNFNDc2MUIiLz4KICA8cGF0aCBkPSJNMTYuOTQxMiAxOS45NDM1TDEzLjc1MDYgMTguMzkwNkwxNC4wMDQ3IDIwLjQ3MDZMMTMuOTc2NSAyMS4zNDU5TDE2Ljk0MTIgMTkuOTQzNVpNNy4wNTg4NCAxOS45NDM1TDEwLjAyMzUgMjEuMzQ1OUwxMC4wMDQ3IDIwLjQ3MDZMMTAuMjQgMTguMzkwNkw3LjA1ODg0IDE5Ljk0MzVaIiBmaWxsPSIjRDdDMUIzIi8+CiAgPHBhdGggZD0iTTEwLjA3MDYgMTQuODcwNkw3LjQxNjUgMTQuMDg5NEw5LjI4OTQ1IDEzLjIzMjlMMTAuMDcwNiAxNC44NzA2Wk0xMy45MiAxNC44NzA2TDE0LjcwMTIgMTMuMjMyOUwxNi41ODM2IDE0LjA4OTRMMTMuOTIgMTQuODcwNloiIGZpbGw9IiMyMzM0NDciLz4KICA8cGF0aCBkPSJNNy4wNTg4MiAxOS45NDM1TDcuNTEwNTggMTYuMTIyM0w0LjU2NDcgMTYuMjA3TDcuMDU4ODIgMTkuOTQzNVpNMTYuNDg5NCAxNi4xMjIzTDE2Ljk0MTIgMTkuOTQzNUwxOS40MzUzIDE2LjIwN0wxNi40ODk0IDE2LjEyMjNaTTE4LjcyOTQgMTEuOTE1M0wxMy40NCAxMi4xNTA2TDEzLjkyOTQgMTQuODcwNkwxNC43MTA2IDEzLjIzMjlMMTYuNTkyOSAxNC4wODk0TDE4LjcyOTQgMTEuOTE1M1pNNy40MTY0NiAxNC4wODk0TDkuMjk4ODIgMTMuMjMyOUwxMC4wNzA2IDE0Ljg3MDZMMTAuNTY5NCAxMi4xNTA2TDUuMjcwNTggMTEuOTE1M0w3LjQxNjQ2IDE0LjA4OTRaIiBmaWxsPSIjQ0Q2MTE2Ii8+CiAgPHBhdGggZD0iTTUuMjcxIDExLjkxNTNMNy40OTIxNyAxNi4yNDQ3TDcuNDE2ODggMTQuMDg5NEw1LjI3MSAxMS45MTUzWk0xNi41OTMzIDE0LjA4OTRMMTYuNDk5MiAxNi4yNDQ3TDE4LjcyOTggMTEuOTE1M0wxNi41OTMzIDE0LjA4OTRaTTEwLjU2OTggMTIuMTUwNkwxMC4wNzEgMTQuODcwNkwxMC42OTIyIDE4LjA4TDEwLjgzMzMgMTMuODU0MUwxMC41Njk4IDEyLjE1MDZaTTEzLjQ0MDQgMTIuMTUwNkwxMy4xODYzIDEzLjg0NDdMMTMuMjk5MiAxOC4wOEwxMy45Mjk4IDE0Ljg3MDZMMTMuNDQwNCAxMi4xNTA2WiIgZmlsbD0iI0U0NzUxRiIvPgogIDxwYXRoIGQ9Ik0xMy45Mjk0IDE0Ljg3MDVMMTMuMjk4OSAxOC4wNzk5TDEzLjc1MDYgMTguMzkwNUwxNi40OTg5IDE2LjI0NDdMMTYuNTkzIDE0LjA4OTRMMTMuOTI5NCAxNC44NzA1Wk03LjQxNjUgMTQuMDg5NEw3LjQ5MTggMTYuMjQ0N0wxMC4yNCAxOC4zOTA1TDEwLjY5MTggMTguMDc5OUwxMC4wNzA2IDE0Ljg3MDVMNy40MTY1IDE0LjA4OTRaIiBmaWxsPSIjRjY4NTFCIi8+CiAgPHBhdGggZD0iTTEzLjk3NjUgMjEuMzQ1OUwxNC4wMDQ3IDIwLjQ3MDZMMTMuNzY5NCAyMC4yNjM1SDEwLjIyMTJMMTAuMDA0NyAyMC40NzA2TDEwLjAyMzUgMjEuMzQ1OUw3LjA1ODg0IDE5Ljk0MzVMOC4wOTQxMyAyMC43OTA2TDEwLjE5MyAyMi4yNDk0SDEzLjc5NzdMMTUuOTA1OSAyMC43OTA2TDE2Ljk0MTIgMTkuOTQzNUwxMy45NzY1IDIxLjM0NTlaIiBmaWxsPSIjQzBBRDlFIi8+CiAgPHBhdGggZD0iTTEzLjc1MDggMTguMzkwNkwxMy4yOTkgMTguMDhIMTAuNjkxOUwxMC4yNDAyIDE4LjM5MDZMMTAuMDA0OSAyMC40NzA2TDEwLjIyMTQgMjAuMjYzNUgxMy43Njk2TDE0LjAwNDkgMjAuNDcwNkwxMy43NTA4IDE4LjM5MDZaIiBmaWxsPSIjMTYxNjE2Ii8+CiAgPHBhdGggZD0iTTIzLjIgNy40MDcwNkwyNCAzLjU2NzA2TDIyLjgwNDcgMEwxMy43NTA2IDYuNzJMMTcuMjMyOSA5LjY2NTg4TDIyLjE1NTMgMTEuMTA1OUwyMy4yNDcxIDkuODM1MjlMMjIuNzc2NSA5LjQ5NjQ3TDIzLjUyOTQgOC44MDk0MUwyMi45NDU5IDguMzU3NjVMMjMuNjk4OCA3Ljc4MzUzTDIzLjIgNy40MDcwNlpNMCAzLjU2NzA2TDAuOCA3LjQwNzA2TDAuMjkxNzY1IDcuNzgzNTNMMS4wNDQ3MSA4LjM1NzY1TDAuNDcwNTg4IDguODA5NDFMMS4yMjM1MyA5LjQ5NjQ3TDAuNzUyOTQxIDkuODM1MjlMMS44MzUyOSAxMS4xMDU5TDYuNzU3NjUgOS42NjU4OEwxMC4yNCA2LjcyTDEuMTg1ODggMEwwIDMuNTY3MDZaIiBmaWxsPSIjNzYzRDE2Ii8+CiAgPHBhdGggZD0iTTIyLjE1NTQgMTEuMTA1OUwxNy4yMzMgOS42NjU5MkwxOC43Mjk1IDExLjkxNTNMMTYuNDk4OSAxNi4yNDQ3TDE5LjQzNTQgMTYuMjA3MUgyMy44MTE5TDIyLjE1NTQgMTEuMTA1OVpNNi43NTc3NSA5LjY2NTkyTDEuODM1NCAxMS4xMDU5TDAuMTk3NzU0IDE2LjIwNzFINC41NjQ4MUw3LjQ5MTg3IDE2LjI0NDdMNS4yNzA3IDExLjkxNTNMNi43NTc3NSA5LjY2NTkyWk0xMy40NDAxIDEyLjE1MDZMMTMuNzUwNyA2LjcyMDA0TDE1LjE4MTMgMi44NTE4MUg4LjgyODM0TDEwLjI0MDEgNi43MjAwNEwxMC41Njk1IDEyLjE1MDZMMTAuNjgyNSAxMy44NjM2TDEwLjY5MTkgMTguMDhIMTMuMjk4OUwxMy4zMTc4IDEzLjg2MzZMMTMuNDQwMSAxMi4xNTA2WiIgZmlsbD0iI0Y2ODUxQiIvPgo8L3N2Zz4=";
582
+
583
+ // src/wallets/connectors/metaMask/metaMask.ts
584
+ function isMetaMask(ethereum) {
585
+ if (!ethereum?.isMetaMask) return false;
586
+ if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state) return false;
587
+ if (ethereum.isApexWallet) return false;
588
+ if (ethereum.isAvalanche) return false;
589
+ if (ethereum.isBackpack) return false;
590
+ if (ethereum.isBifrost) return false;
591
+ if (ethereum.isBitKeep) return false;
592
+ if (ethereum.isBitski) return false;
593
+ if (ethereum.isBlockWallet) return false;
594
+ if (ethereum.isCoinbaseWallet) return false;
595
+ if (ethereum.isDawn) return false;
596
+ if (ethereum.isEnkrypt) return false;
597
+ if (ethereum.isExodus) return false;
598
+ if (ethereum.isFrame) return false;
599
+ if (ethereum.isFrontier) return false;
600
+ if (ethereum.isGamestop) return false;
601
+ if (ethereum.isHyperPay) return false;
602
+ if (ethereum.isImToken) return false;
603
+ if (ethereum.isKuCoinWallet) return false;
604
+ if (ethereum.isMathWallet) return false;
605
+ if (ethereum.isNestWallet) return false;
606
+ if (ethereum.isOkxWallet || ethereum.isOKExWallet) return false;
607
+ if (ethereum.isOneInchIOSWallet || ethereum.isOneInchAndroidWallet) return false;
608
+ if (ethereum.isOpera) return false;
609
+ if (ethereum.isPhantom) return false;
610
+ if (ethereum.isPortal) return false;
611
+ if (ethereum.isRabby) return false;
612
+ if (ethereum.isRainbow) return false;
613
+ if (ethereum.isStatus) return false;
614
+ if (ethereum.isTalisman) return false;
615
+ if (ethereum.isTally) return false;
616
+ if (ethereum.isTokenPocket) return false;
617
+ if (ethereum.isTokenary) return false;
618
+ if (ethereum.isTrust || ethereum.isTrustWallet) return false;
619
+ if (ethereum.isXDEFI) return false;
620
+ if (ethereum.isZeal) return false;
621
+ if (ethereum.isZerion) return false;
622
+ if (ethereum.__seif) return false;
623
+ return true;
624
+ }
625
+ var metaMaskWallet = ({ projectId, walletConnectParameters }) => {
626
+ const isMetaMaskInjected = hasInjectedProvider({ flag: "isMetaMask" });
627
+ const getUri = (uri) => {
628
+ return isAndroid() ? `metamask://wc?uri=${encodeURIComponent(uri)}` : isIOS() ? !isTelegram() ? (
629
+ // currently broken in MetaMask v6.5.0 https://github.com/MetaMask/metamask-mobile/issues/6457
630
+ `metamask://wc?uri=${encodeURIComponent(uri)}`
631
+ ) : `https://metamask.app.link/wc?uri=${encodeURIComponent(uri)}` : `https://metamask.app.link/wc?uri=${encodeURIComponent(uri)}`;
632
+ };
633
+ return {
634
+ id: "metaMask",
635
+ name: "MetaMask",
636
+ rdns: "io.metamask",
637
+ iconUrl: icon,
638
+ installed: isMetaMaskInjected,
639
+ isExtension: true,
640
+ isMobile: true,
641
+ downloadUrl: "https://metamask.io/download/",
642
+ getUri,
643
+ createConnector: isMetaMaskInjected ? getInjectedConnector({
644
+ target: typeof window !== "undefined" ? window.ethereum?.providers?.find(isMetaMask) ?? window.ethereum : void 0
645
+ }) : getWalletConnectConnector({
646
+ projectId,
647
+ walletConnectParameters
648
+ })
649
+ };
650
+ };
651
+
652
+ // src/wallets/connectors/rainbow/rainbow.ts
653
+ import { isAndroid as isAndroid2, isIOS as isIOS2, isTelegram as isTelegram2 } from "@getpara/react-sdk";
654
+
655
+ // src/wallets/connectors/rainbow/rainbowIcon.ts
656
+ var icon2 = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMCA1LjRIMS44QzExLjA3ODQgNS40IDE4LjYgMTIuOTIxNiAxOC42IDIyLjJWMjRIMjIuMkMyMy4xOTQxIDI0IDI0IDIzLjE5NDEgMjQgMjIuMkMyNCA5LjkzOTI3IDE0LjA2MDcgMCAxLjggMEMwLjgwNTg4NyAwIDAgMC44MDU4ODcgMCAxLjhWNS40WiIgZmlsbD0idXJsKCNwYWludDBfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTE5LjIgMjIuMkgyMy45OTk5QzIzLjk5OTkgMjMuMTk0MSAyMy4xOTQxIDI0IDIyLjE5OTkgMjRIMTkuMlYyMi4yWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAwTDEuOCA0LjhIMEwxLjMxMTM0ZS0wNyAxLjhDMS43NDU4OGUtMDcgMC44MDU4ODcgMC44MDU4ODcgLTQuMzQ1NGUtMDggMS44IDBaIiBmaWxsPSJ1cmwoI3BhaW50Ml9saW5lYXJfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMCA0Ljc5OTk5SDEuOEMxMS40MDk3IDQuNzk5OTkgMTkuMiAxMi41OTAyIDE5LjIgMjIuMlYyNEgxMy44VjIyLjJDMTMuOCAxNS41NzI2IDguNDI3NDEgMTAuMiAxLjggMTAuMkgwVjQuNzk5OTlaIiBmaWxsPSJ1cmwoI3BhaW50M19yYWRpYWxfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMTQuMzk5OSAyMi4ySDE5LjE5OTlWMjRIMTQuMzk5OVYyMi4yWiIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTIuMDk4MTVlLTA3IDkuNTk5OTlMMCA0Ljc5OTk5TDEuOCA0Ljc5OTk5TDEuOCA5LjU5OTk5SDIuMDk4MTVlLTA3WiIgZmlsbD0idXJsKCNwYWludDVfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTAgMTIuNkMwIDEzLjU5NDEgMC44MDU4ODcgMTQuNCAxLjggMTQuNEM2LjEwNzgyIDE0LjQgOS42IDE3Ljg5MjEgOS42IDIyLjJDOS42IDIzLjE5NDEgMTAuNDA1OSAyNCAxMS40IDI0SDE0LjRWMjIuMkMxNC40IDE1LjI0MTIgOC43NTg3OCA5LjU5OTk4IDEuOCA5LjU5OTk4SDBWMTIuNloiIGZpbGw9InVybCgjcGFpbnQ2X3JhZGlhbF80NDJfODI3KSIvPgogIDxwYXRoIGQ9Ik05LjYwMDEgMjIuMkgxNC40MDAxVjI0SDExLjQwMDFDMTAuNDA2IDI0IDkuNjAwMSAyMy4xOTQxIDkuNjAwMSAyMi4yWiIgZmlsbD0idXJsKCNwYWludDdfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAxNC40QzAuODA1ODg3IDE0LjQgMS43NDU4OGUtMDcgMTMuNTk0MSAxLjMxMTM0ZS0wNyAxMi42TDAgOS41OTk5OEwxLjggOS41OTk5OEwxLjggMTQuNFoiIGZpbGw9InVybCgjcGFpbnQ4X3JhZGlhbF80NDJfODI3KSIvPgogIDxkZWZzPgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDIyLjIpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjc3MDI3NyIgc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDQyXzgyNyIgeDE9IjE4LjkiIHkxPSIyMy4xIiB4Mj0iMjMuOTk5OSIgeTI9IjIzLjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfNDQyXzgyNyIgeDE9IjAuOSIgeTE9Ii0zLjkzMzllLTA3IiB4Mj0iMC44OTk5OTgiIHkyPSI1LjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzg3NTRDOSIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjQwMDAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDQyXzgyNyIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjggMjIuMikgcm90YXRlKC05MCkgc2NhbGUoMTcuNCkiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAuNzIzOTI5IiBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ0X2xpbmVhcl80NDJfODI3IiB4MT0iMTQuMzk5OSIgeTE9IjIzLjEiIHgyPSIxOS4xOTk5IiB5Mj0iMjMuMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ1X2xpbmVhcl80NDJfODI3IiB4MT0iMC45MDAwMDEiIHkxPSI5LjU5OTk5IiB4Mj0iMC44OTk5OTkiIHkyPSI0Ljc5OTk5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRkY3MDAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY5OTAxIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDZfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDEyLjYpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjU5NTEzIiBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ3X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzAwMSAyMy4xKSBzY2FsZSg1LjEgMTMuNikiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ4X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAuODk5OTk5IDE0LjcpIHJvdGF0ZSgtOTApIHNjYWxlKDUuMSA5Ni43MTEpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwQUFGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMURBNDAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgPC9kZWZzPgo8L3N2Zz4=";
657
+
658
+ // src/wallets/connectors/rainbow/rainbow.ts
659
+ var rainbowWallet = ({ projectId, walletConnectParameters }) => {
660
+ const isRainbowInjected = hasInjectedProvider({ flag: "isRainbow" });
661
+ const getUri = (uri) => {
662
+ return isAndroid2() ? `rainbow://wc?uri=${encodeURIComponent(uri)}` : isIOS2() ? !isTelegram2() ? `rainbow://wc?uri=${encodeURIComponent(uri)}` : `https://rnbwapp.com/wc?uri=${encodeURIComponent(uri)}` : `https://rnbwapp.com/wc?uri=${encodeURIComponent(uri)}`;
663
+ };
664
+ return {
665
+ id: "rainbow",
666
+ name: "Rainbow",
667
+ rdns: "me.rainbow",
668
+ iconUrl: icon2,
669
+ installed: isRainbowInjected,
670
+ isExtension: true,
671
+ isMobile: true,
672
+ downloadUrl: "https://rainbow.me/",
673
+ getUri,
674
+ createConnector: isRainbowInjected ? getInjectedConnector({ flag: "isRainbow" }) : getWalletConnectConnector({
675
+ projectId,
676
+ walletConnectParameters
677
+ })
678
+ };
679
+ };
680
+
681
+ // src/wallets/connectors/walletConnect/walletConnectIcon.ts
682
+ var icon3 = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNNC45MTMzIDYuOTM1NDFDOC44MjcxOCAzLjAyMTUzIDE1LjE3MjggMy4wMjE1MyAxOS4wODY3IDYuOTM1NDFMMTkuNTU3OCA3LjQwNjQ2QzE5Ljc1MzUgNy42MDIxNSAxOS43NTM1IDcuOTE5NDMgMTkuNTU3OCA4LjExNTEzTDE3Ljk0NjQgOS43MjY0N0MxNy44NDg2IDkuODI0MzIgMTcuNjg5OSA5LjgyNDMyIDE3LjU5MjEgOS43MjY0N0wxNi45NDM5IDkuMDc4MjZDMTQuMjEzNSA2LjM0Nzg0IDkuNzg2NTcgNi4zNDc4NCA3LjA1NjE0IDkuMDc4MjZMNi4zNjE5NiA5Ljc3MjQ0QzYuMjY0MTIgOS44NzAyOCA2LjEwNTQ4IDkuODcwMjggNi4wMDc2MyA5Ljc3MjQ0TDQuMzk2MjkgOC4xNjExQzQuMjAwNTkgNy45NjU0IDQuMjAwNTkgNy42NDgxMiA0LjM5NjI5IDcuNDUyNDNMNC45MTMzIDYuOTM1NDFaTTIyLjQxOTEgMTAuMjY3OEwyMy44NTMyIDExLjcwMTlDMjQuMDQ4OSAxMS44OTc2IDI0LjA0ODkgMTIuMjE0OSAyMy44NTMyIDEyLjQxMDZMMTcuMzg2OCAxOC44NzcyQzE3LjE5MTEgMTkuMDcyOCAxNi44NzM4IDE5LjA3MjkgMTYuNjc4MSAxOC44NzcyQzE2LjY3ODEgMTguODc3MiAxNi42NzgxIDE4Ljg3NzIgMTYuNjc4MSAxOC44NzcyTDEyLjA4ODYgMTQuMjg3N0MxMi4wMzk3IDE0LjIzODcgMTEuOTYwNCAxNC4yMzg3IDExLjkxMTUgMTQuMjg3N0MxMS45MTE1IDE0LjI4NzcgMTEuOTExNSAxNC4yODc3IDExLjkxMTUgMTQuMjg3N0w3LjMyMjA3IDE4Ljg3NzJDNy4xMjYzOCAxOS4wNzI4IDYuODA5MDkgMTkuMDcyOSA2LjYxMzQgMTguODc3MkM2LjYxMzQgMTguODc3MiA2LjYxMzM5IDE4Ljg3NzIgNi42MTMzOSAxOC44NzcyTDAuMTQ2NzcxIDEyLjQxMDVDLTAuMDQ4OTIzNiAxMi4yMTQ4IC0wLjA0ODkyMzYgMTEuODk3NSAwLjE0Njc3MSAxMS43MDE5TDEuNTgwODcgMTAuMjY3OEMxLjc3NjU2IDEwLjA3MjEgMi4wOTM4NSAxMC4wNzIxIDIuMjg5NTQgMTAuMjY3OEw2Ljg3OTEgMTQuODU3M0M2LjkyODAyIDE0LjkwNjIgNy4wMDczNCAxNC45MDYyIDcuMDU2MjYgMTQuODU3M0M3LjA1NjI2IDE0Ljg1NzMgNy4wNTYyNiAxNC44NTczIDcuMDU2MjcgMTQuODU3M0wxMS42NDU2IDEwLjI2NzhDMTEuODQxMyAxMC4wNzIxIDEyLjE1ODYgMTAuMDcyIDEyLjM1NDMgMTAuMjY3N0MxMi4zNTQzIDEwLjI2NzcgMTIuMzU0MyAxMC4yNjc3IDEyLjM1NDMgMTAuMjY3N0wxNi45NDM4IDE0Ljg1NzNDMTYuOTkyNyAxNC45MDYyIDE3LjA3MjEgMTQuOTA2MiAxNy4xMjEgMTQuODU3M0wyMS43MTA1IDEwLjI2NzhDMjEuOTA2MiAxMC4wNzIxIDIyLjIyMzQgMTAuMDcyMSAyMi40MTkxIDEwLjI2NzhaIiBmaWxsPSIjM0I5OUZDIi8+Cjwvc3ZnPg==";
683
+
684
+ // src/wallets/connectors/walletConnect/walletConnect.ts
685
+ var walletConnectWallet = ({ projectId, options }) => {
686
+ const getUri = (uri) => uri;
687
+ return {
688
+ id: "walletConnect",
689
+ name: "WalletConnect",
690
+ installed: void 0,
691
+ iconUrl: icon3,
692
+ isMobile: true,
693
+ getUri,
694
+ createConnector: getWalletConnectConnector({
695
+ projectId,
696
+ walletConnectParameters: options
697
+ })
698
+ };
699
+ };
700
+
701
+ // src/wallets/connectors/coinbase/coinbase.ts
702
+ import { createConnector as createConnector3 } from "wagmi";
703
+ import { coinbaseWallet as coinbaseWagmiWallet } from "wagmi/connectors";
704
+
705
+ // src/wallets/connectors/coinbase/coinbaseIcon.ts
706
+ var icon4 = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDQyXzg1NCkiPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiAyNEMxOC42Mjc0IDI0IDI0IDE4LjYyNzQgMjQgMTJDMjQgNS4zNzI1OCAxOC42Mjc0IDAgMTIgMEM1LjM3MjU4IDAgMCA1LjM3MjU4IDAgMTJDMCAxOC42Mjc0IDUuMzcyNTggMjQgMTIgMjRaTTguODMxNzUgOC4wODE2MkM4LjQxNzU0IDguMDgxNjIgOC4wODE3NSA4LjQxNzQxIDguMDgxNzUgOC44MzE2MlYxNS4xNjg0QzguMDgxNzUgMTUuNTgyNiA4LjQxNzU0IDE1LjkxODQgOC44MzE3NSAxNS45MTg0SDE1LjE2ODVDMTUuNTgyNyAxNS45MTg0IDE1LjkxODUgMTUuNTgyNiAxNS45MTg1IDE1LjE2ODRWOC44MzE2MkMxNS45MTg1IDguNDE3NDEgMTUuNTgyNyA4LjA4MTYyIDE1LjE2ODUgOC4wODE2Mkg4LjgzMTc1WiIgZmlsbD0iIzJDNUZGNiIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfNDQyXzg1NCI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=";
707
+
708
+ // src/wallets/connectors/coinbase/coinbase.ts
709
+ var coinbaseWallet = ({ appName, appIcon }) => {
710
+ const isCoinbaseInjected = hasInjectedProvider({ flag: "isCoinbaseWallet" });
711
+ const getUri = (uri) => uri;
712
+ return {
713
+ id: "coinbase",
714
+ name: "Coinbase Wallet",
715
+ rdns: "com.coinbase.wallet",
716
+ iconUrl: icon4,
717
+ // Note that we never resolve `installed` to `false` because the
718
+ // Coinbase Wallet SDK falls back to other connection methods if
719
+ // the injected connector isn't available
720
+ installed: isCoinbaseInjected,
721
+ isExtension: true,
722
+ isMobile: true,
723
+ downloadUrl: "https://www.coinbase.com/wallet/downloads",
724
+ getUri,
725
+ createConnector: (walletDetails) => createConnector3((config) => ({
726
+ ...coinbaseWagmiWallet({
727
+ version: "4",
728
+ appName,
729
+ appLogoUrl: appIcon,
730
+ preference: "eoaOnly"
731
+ })(config),
732
+ ...walletDetails
733
+ }))
734
+ };
735
+ };
736
+
737
+ // src/wallets/connectors/zerion/zerion.ts
738
+ import { isIOS as isIOS3, isTelegram as isTelegram3 } from "@getpara/react-sdk";
739
+
740
+ // src/wallets/connectors/zerion/zerionIcon.ts
741
+ var icon5 = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PHBhdGggZmlsbD0iIzI5NjJFRiIgZD0iTTAgMGgyOHYyOEgweiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik02LjA3MyA3Yy0uNDggMC0uNjY1LjU5My0uMjYyLjg0MWwxMC4wNzMgNi4wNzRhLjU3Ny41NzcgMCAwIDAgLjc1OC0uMTM5bDQuNDMtNS44MTRjLjMtLjQwNC0uMDA0LS45NjItLjUyNS0uOTYySDYuMDczWk0yMS45MDQgMjFjLjQ4IDAgLjY3LS41OTYuMjY3LS44NDRsLTEwLjA3NS02LjA3M2EuNTY5LjU2OSAwIDAgMC0uNzUxLjE0NmwtNC40MzcgNS44MTNjLS4zMDEuNDA0LjAxMi45NTguNTM0Ljk1OGgxNC40NjJaIi8+PC9zdmc+";
742
+
743
+ // src/wallets/connectors/zerion/zerion.ts
744
+ var zerionWallet = ({ projectId, walletConnectParameters }) => {
745
+ const isZerionInjected = hasInjectedProvider({
746
+ namespace: "zerionWallet",
747
+ flag: "isZerion"
748
+ });
749
+ const getUri = (uri) => {
750
+ return isTelegram3() && isIOS3() ? `https://app.zerion.io/wc?uri=${encodeURIComponent(uri)}` : `zerion://wc?uri=${encodeURIComponent(uri)}`;
751
+ };
752
+ return {
753
+ id: "zerion",
754
+ name: "Zerion",
755
+ rdns: "io.zerion.wallet",
756
+ iconUrl: icon5,
757
+ installed: isZerionInjected,
758
+ isExtension: true,
759
+ isMobile: true,
760
+ getUri,
761
+ downloadUrl: "https://zerion.io/download",
762
+ createConnector: isZerionInjected ? getInjectedConnector({
763
+ namespace: "zerionWallet",
764
+ flag: "isZerion"
765
+ }) : getWalletConnectConnector({
766
+ projectId,
767
+ walletConnectParameters
768
+ })
769
+ };
770
+ };
771
+
772
+ // src/wallets/connectors/rabby/rabbyIcon.ts
773
+ var icon6 = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjODY5N0ZGIiBkPSJNMjggMEgwdjI4aDI4VjBaIi8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTIyLjU0IDE1LjA3OGMuNjc3LTEuNTE0LTIuNjczLTUuNzQ0LTUuODc0LTcuNTA2LTIuMDE3LTEuMzY1LTQuMTItMS4xNzgtNC41NDUtLjU3OS0uOTM1IDEuMzE2IDMuMDk0IDIuNDMgNS43ODggMy43MzEtLjU4LjI1Mi0xLjEyNS43MDMtMS40NDYgMS4yOC0xLjAwNC0xLjA5Ni0zLjIwOS0yLjA0LTUuNzk2LTEuMjgtMS43NDMuNTEzLTMuMTkxIDEuNzIxLTMuNzUxIDMuNTQ2YTEuMDk3IDEuMDk3IDAgMSAwLS40NDUgMi4xYy4xMTIgMCAuNDYzLS4wNzUuNDYzLS4wNzVsNS42MTIuMDQxYy0yLjI0NCAzLjU2LTQuMDE4IDQuMDgxLTQuMDE4IDQuNjk4czEuNjk3LjQ1IDIuMzM1LjIyYzMuMDUtMS4xIDYuMzI3LTQuNTMxIDYuODktNS41MTkgMi4zNi4yOTUgNC4zNDUuMzMgNC43ODYtLjY1N1oiLz48cGF0aCBmaWxsPSJ1cmwoI2MpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0xNy44ODUgMTAuNzEzLjAyNS4wMWMuMTI1LS4wNDkuMTA1LS4yMzMuMDctLjM3OC0uMDc4LS4zMzMtMS40MzgtMS42NzYtMi43MTUtMi4yNzctMS43NDMtLjgyLTMuMDI1LS43NzctMy4yMTItLjM5OC4zNTYuNzI2IDEuOTk4IDEuNDA4IDMuNzE0IDIuMTIuNzIzLjMgMS40Ni42MDYgMi4xMTguOTIzWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0idXJsKCNkKSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNzAxIDE4LjAzNmExMC4yOTYgMTAuMjk2IDAgMCAwLTEuMi0uMzdjLjQ4Mi0uODYyLjU4My0yLjEzOC4xMjgtMi45NDUtLjYzOS0xLjEzMy0xLjQ0LTEuNzM2LTMuMzA0LTEuNzM2LTEuMDI0IDAtMy43ODMuMzQ2LTMuODMyIDIuNjQ4LS4wMDUuMjQyIDAgLjQ2NC4wMTcuNjY3bDUuMDM2LjAzN2ExNy4yNjQgMTcuMjY0IDAgMCAxLTEuODcxIDIuNDgzYy42NjkuMTcyIDEuMjIxLjMxNiAxLjcyOC40NDguNDguMTI1LjkyLjI0IDEuMzguMzU3YTIxLjAwMyAyMS4wMDMgMCAwIDAgMS45MTgtMS41OVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9InVybCgjZSkiIGQ9Ik02Ljg0OCAxNi4wNjNjLjIwNiAxLjc1IDEuMiAyLjQzNSAzLjIzMiAyLjYzOCAyLjAzMi4yMDMgMy4xOTcuMDY3IDQuNzQ5LjIwOCAxLjI5Ni4xMTggMi40NTMuNzc4IDIuODgyLjU1LjM4Ni0uMjA1LjE3LS45NDctLjM0Ny0xLjQyMy0uNjctLjYxNy0xLjU5Ny0xLjA0Ni0zLjIyOS0xLjE5OS4zMjUtLjg5LjIzNC0yLjEzOC0uMjctMi44MTctLjczMS0uOTgyLTIuMDc5LTEuNDI2LTMuNzg1LTEuMjMyLTEuNzgyLjIwMi0zLjQ5IDEuMDgtMy4yMzIgMy4yNzVaIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjEwLjQ2NCIgeDI9IjIyLjM5NCIgeTE9IjEzLjczNyIgeTI9IjE3LjEyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI2ZmZiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iMjAuMzg2IiB4Mj0iMTEuNzc5IiB5MT0iMTMuNTA5IiB5Mj0iNC44NzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzI1OERDIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzk3REVBIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCIgeDE9IjE1Ljk0IiB4Mj0iNy42NzMiIHkxPSIxOC4zMzciIHkyPSIxMy41ODQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzQ2MUVBIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkZDMkZGIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZSIgeDE9IjExLjE3NyIgeDI9IjE2Ljc2NSIgeTE9IjEzLjY0OCIgeTI9IjIwLjc0OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9Ii45ODQiIHN0b3AtY29sb3I9IiNENUNFRkYiLz48L2xpbmVhckdyYWRpZW50PjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgyOHYyOEgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==";
774
+
775
+ // src/wallets/connectors/rabby/rabby.ts
776
+ var rabbyWallet = ({ projectId, walletConnectParameters }) => {
777
+ const isRabbyInjected = hasInjectedProvider({ flag: "isRabby" });
778
+ return {
779
+ id: "rabby",
780
+ name: "Rabby Wallet",
781
+ rdns: "io.rabby",
782
+ iconUrl: icon6,
783
+ installed: isRabbyInjected,
784
+ isExtension: true,
785
+ isMobile: false,
786
+ downloadUrl: "https://rabby.io",
787
+ createConnector: isRabbyInjected ? getInjectedConnector({ flag: "isRabby" }) : getWalletConnectConnector({
788
+ projectId,
789
+ walletConnectParameters
790
+ })
791
+ };
792
+ };
793
+ export {
794
+ EvmExternalWalletContext,
795
+ EvmExternalWalletProvider,
796
+ ParaEvmProvider,
797
+ coinbaseWallet,
798
+ metaMaskWallet,
799
+ rabbyWallet,
800
+ rainbowWallet,
801
+ walletConnectWallet,
802
+ zerionWallet
803
+ };
package/dist/index.js.br CHANGED
Binary file
package/dist/index.js.gz CHANGED
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getpara/evm-wallet-connectors",
3
- "version": "1.4.3",
3
+ "version": "1.5.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,8 +10,8 @@
10
10
  },
11
11
  "dependencies": {
12
12
  "@coinbase/wallet-sdk": "4.3.0",
13
- "@getpara/react-sdk": "1.4.3",
14
- "@getpara/wagmi-v2-integration": "1.4.3",
13
+ "@getpara/react-sdk": "1.5.0",
14
+ "@getpara/wagmi-v2-integration": "1.5.0",
15
15
  "zustand": "^4.5.2",
16
16
  "zustand-sync-tabs": "^0.2.2"
17
17
  },
@@ -37,5 +37,5 @@
37
37
  "dist",
38
38
  "package.json"
39
39
  ],
40
- "gitHead": "1af7abd51e994057ff4afc90bd13650a47f6b26e"
40
+ "gitHead": "0e3c1401b4f1da60b288cdde7695077c9bcbc48f"
41
41
  }