@getpara/evm-wallet-connectors 1.1.0 → 1.3.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 +2 -3
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/package.json +6 -5
- package/dist/providers/EvmExternalWalletContext.js +0 -228
- package/dist/providers/ParaEvmContext.js +0 -96
- package/dist/types/CommonTypes.js +0 -1
- package/dist/types/Wallet.js +0 -1
- package/dist/types/utils.js +0 -1
- package/dist/utils/computeWalletConnectMetaData.js +0 -8
- package/dist/utils/getInjectedConnector.js +0 -81
- package/dist/utils/getWalletConnectConnector.js +0 -43
- package/dist/utils/getWalletConnectUri.js +0 -22
- package/dist/utils/isEIP6963Connector.js +0 -4
- package/dist/utils/omitUndefinedValues.js +0 -5
- package/dist/utils/uniqueBy.js +0 -9
- package/dist/wallets/connectors/coinbase/coinbase.js +0 -28
- package/dist/wallets/connectors/coinbase/coinbaseIcon.js +0 -1
- package/dist/wallets/connectors/index.js +0 -7
- package/dist/wallets/connectors/metaMask/metaMask.js +0 -122
- package/dist/wallets/connectors/metaMask/metaMaskIcon.js +0 -1
- package/dist/wallets/connectors/rabby/rabby.js +0 -22
- package/dist/wallets/connectors/rabby/rabbyIcon.js +0 -1
- package/dist/wallets/connectors/rainbow/rainbow.js +0 -33
- package/dist/wallets/connectors/rainbow/rainbowIcon.js +0 -1
- package/dist/wallets/connectors/walletConnect/walletConnect.js +0 -17
- package/dist/wallets/connectors/walletConnect/walletConnectIcon.js +0 -1
- package/dist/wallets/connectors/zerion/zerion.js +0 -35
- package/dist/wallets/connectors/zerion/zerionIcon.js +0 -1
- package/dist/wallets/connectorsForWallets.js +0 -68
package/dist/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export { ParaEvmProvider } from './providers/ParaEvmContext.js';
|
|
3
|
-
export * from './wallets/connectors/index.js';
|
|
1
|
+
"use client";
|
|
2
|
+
import{createContext as se,useEffect as H,useMemo as X,useState as le}from"react";import{useAccount as ge,useSwitchChain as De,useConnect as Ne,useDisconnect as je,useEnsName as ue,useEnsAvatar as Te}from"wagmi";var W=e=>!!(!e.isRainbowKitConnector&&e.icon?.startsWith("data:image")&&e.uid&&e.name);var J=async(e,t)=>{let n=await e.getProvider();return e.type==="coinbaseWallet"?n.qrUrl:new Promise(r=>n.once("display_uri",a=>{r(t?t(a):a)}))};import{isMobile as Ce,WalletType as U}from"@getpara/react-sdk";import{normalize as de}from"viem/ens";import{jsx as me}from"react/jsx-runtime";var ye={wallets:[],chains:[],chainId:void 0,username:void 0,avatar:void 0,disconnect:()=>Promise.resolve(),switchChain:()=>Promise.resolve({})},P=se(ye);function Q({children:e,para:t,onSwitchWallet:n}){let{connectAsync:r,connectors:a}=Ne(),{address:o,isConnecting:I,isReconnecting:T,chainId:D,connector:N}=ge(),{chains:j,switchChainAsync:p}=De(),{disconnectAsync:l}=je(),{data:g}=ue({address:o}),{data:C}=Te({name:de(g)}),[w,d]=le(!1);H(()=>{let i=t.externalWallets[o??""];!I&&!T&&!w&&o&&!i&&N?.id!=="para"&&f()},[I,T,w,o,N]),H(()=>{let i=t.externalWallets[t.currentExternalWalletAddresses?.[0]??""];!I&&!T&&i?.type===U.EVM&&i?.address!==o&&E(o)},[o,T,I]);let L=a,f=async()=>{await l(),await t.logout()},u=async i=>{let M;try{await p({chainId:i})}catch(s){if(s.details.includes("Missing or invalid."))M=["Network not supported.",`You may need to add ${j.find(k=>k.id===i)?.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}},z=async(i,M)=>{try{await t.externalWalletLogin({address:i,type:U.EVM,provider:M})}catch{throw await l(),await t.logout(),"Error logging you in. Please try again."}},E=async i=>{d(!0);let M;if(!i)await t.logout();else try{await z(i,N?.name)}catch(s){M=s}n({address:i,error:M}),d(!1)},O=async i=>{d(!0),await l();let M=await i.getChainId(),s,x;try{if(s=(await r({chainId:j.find(({id:Z})=>Z===M)?.id??j[0]?.id,connector:i})).accounts?.[0],s)try{await z(s,i.name)}catch(Z){s=void 0,x=Z}}catch(k){switch(k.name){case"UserRejectedRequestError":{x="Connection request rejected";break}case"ResourceUnavailableRpcError":{`${i.name}`;break}default:{x="An unknown error occurred";break}}}return d(!1),{address:s,error:x}},c=async(i,M)=>{let s=M!==void 0?M:Ce(),x=i.walletConnectModalConnector&&s?i.walletConnectModalConnector:i;return await O(x)},G=i=>()=>J(i,i.paraDetails?.getUri),R={},b;L.filter(i=>!W(i)).forEach(i=>{i.paraDetails&&(R[i.paraDetails.rdns]=i.paraDetails,i.paraDetails.isWalletConnectModalConnector&&(b=i))});let ce=L.filter(i=>W(i)).map(i=>i.id),h=L.map(i=>{if(!i.paraDetails?.isWalletConnectModalConnector&&!(!W(i)&&ce.includes(i.paraDetails?.rdns))){if(W(i)){let M=R[i.id];return{...i,paraDetails:M}}return i.paraDetails?.id==="walletConnect"&&b?{...i,walletConnectModalConnector:b}:i}}).filter(i=>!!i).map(i=>{let M={...i,...i.paraDetails};return{...M,connect:()=>O(M),connectMobile:s=>c(M,s),type:U.EVM,getQrUri:G(M)}}),B=j.map(i=>({id:i.id,name:i.name})),F=X(()=>g??o,[g,o]),V=l;return me(P.Provider,{value:X(()=>({wallets:h,chains:B,chainId:D,username:F,avatar:C,disconnect:V,switchChain:u}),[h,B,D,F,C,V,u]),children:e})}import{useCallback as Ae,useEffect as pe,useMemo as Y}from"react";import{createConfig as xe,WagmiProvider as we}from"wagmi";function K(e,t){let n=[];for(let r of e)n.some(a=>a[t]===r[t])||n.push(r);return n}var S=({appName:e,appDescription:t,appUrl:n,appIcon:r})=>({name:e,description:t??e,url:n??(typeof window<"u"?window.location.href:""),icons:[...r?[r]:[]]});function $(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>n!==void 0))}var _=(e,{projectId:t,walletConnectParameters:n,appName:r,appDescription:a,appUrl:o,appIcon:I})=>{if(!e.length)throw new Error("No wallet list was provided");let T=-1,D=[],N=[],j=S({appName:r,appDescription:a,appUrl:o,appIcon:I});e.forEach(l=>{T++;let C={...l({projectId:t,appName:r,appIcon:I,options:{metadata:j,...n},walletConnectParameters:{metadata:j,...n}}),index:T};N.push(C)});let p=K([...N],"id");for(let{createConnector:l,...g}of p){let C=d=>({paraDetails:$({...g,isParaConnector:!0,...d||{}})});g.id==="walletConnect"&&D.push(l(C({isWalletConnectModalConnector:!0,showQrModal:!0}))),l&&D.push(l(C()))}return D};import{http as Le}from"viem";import{useClient as ze,useExternalWalletProviderStore as v}from"@getpara/react-sdk";import{connect as q}from"wagmi/actions";import{paraConnector as Ee}from"@getpara/wagmi-v2-integration";import{jsx as fe}from"react/jsx-runtime";var Oe=e=>e.reduce((n,r)=>{let a=r.id;return n[a]=Le(),n},{});function We({children:e,config:t,...n}){let r=v(c=>c.updateState),a=v(c=>c.EvmProvider),o=v(c=>c.evmContext),I=t.para??ze(),{projectId:T,appName:D,appDescription:N,appIcon:j,appUrl:p,wallets:l,chains:g,transports:C,paraDisableModal:w,paraOptions:d,...L}=t,f=S({appName:D,appDescription:N,appUrl:p,appIcon:j}),u=Y(()=>I?Ee({para:I,chains:[...g],disableModal:w??!0,appName:D,options:d??{}}):void 0,[I,g,w,D,d]),z=Y(()=>{let c=_(l,{projectId:T,appName:D,appDescription:N,appUrl:p,appIcon:j,walletConnectParameters:{metadata:f}});return u?[...c,u]:c},[l,T,D,N,p,j,f,u]),E=Y(()=>xe({...L,chains:g,transports:C||Oe(g),connectors:z}),[L,g,C,z]),O=Ae(async()=>{if(!u)return{error:"No para connector instance"};try{return{result:await q(E,{connector:u})}}catch(c){return{error:c instanceof Error?c.message:"Unknown error"}}},[u,E,q]);return pe(()=>{r({EvmProvider:o&&a?a:Q,evmContext:o||P,connectParaEvmWallet:u?O:void 0})},[o,a,u,O,r]),!o||!a?null:fe(we,{config:E,...n,children:e})}import{isAndroid as ve,isIOS as Ge,isTelegram as Re}from"@getpara/react-sdk";import{createConnector as ke}from"wagmi";import{injected as Pe}from"wagmi/connectors";function ee(e){let t=typeof window<"u"?window:void 0;if(typeof t>"u"||typeof t.ethereum>"u")return;let n=t.ethereum.providers;return n?n.find(r=>r[e]):t.ethereum[e]?t.ethereum:void 0}function te(e){let t=(n,r)=>{let[a,...o]=r.split("."),I=n[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 te(t)<"u"||e&&typeof ee(e)<"u")}function Se({flag:e,namespace:t}){let n=typeof window<"u"?window:void 0;if(typeof n>"u")return;if(t){let a=te(t);if(a)return a}let r=n.ethereum?.providers;if(e){let a=ee(e);if(a)return a}return typeof r<"u"&&r.length>0?r[0]:n.ethereum}function be(e){return t=>{let n=e?{target:()=>({id:t.paraDetails.id,name:t.paraDetails.name,provider:e})}:{};return ke(r=>({...Pe(n)(r),...t}))}}function A({flag:e,namespace:t,target:n}){let r=n||Se({flag:e,namespace:t});return be(r)}import{createConnector as Ze}from"wagmi";import{walletConnect as Ue}from"wagmi/connectors";var ne=new Map,Qe=({projectId:e,walletConnectParameters:t,paraDetailsShowQrModal:n})=>{let r={...t||{},projectId:e,showQrModal:!1};n&&(r={...r,showQrModal:!0});let a=JSON.stringify(r),o=ne.get(a);if(o)return o;let I=Ue(r);return ne.set(a,I),I};function Ye({projectId:e,walletDetails:t,walletConnectParameters:n}){return Ze(r=>({...Qe({projectId:e,walletConnectParameters:n,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 n=>Ye({projectId:e,walletDetails:n,walletConnectParameters:t})}var ie="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMyIgdmlld0JveD0iMCAwIDI0IDIzIiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMjIuODA0OSAwTDEzLjQ0MDIgNi45NTUyOUwxNS4xNzE5IDIuODUxNzdMMjIuODA0OSAwWiIgZmlsbD0iI0UyNzYxQiIvPgogIDxwYXRoIGQ9Ik0xLjE4NTk5IDBMMTAuNDc1NCA3LjAyMTE4TDguODI4MzQgMi44NTE3N0wxLjE4NTk5IDBaTTE5LjQzNTQgMTYuMTIyNEwxNi45NDEzIDE5Ljk0MzVMMjIuMjc3OCAyMS40MTE4TDIzLjgxMTkgMTYuMjA3MUwxOS40MzU0IDE2LjEyMjRaTTAuMTk3NzU0IDE2LjIwNzFMMS43MjI0NiAyMS40MTE4TDcuMDU4OTMgMTkuOTQzNUw0LjU2NDgxIDE2LjEyMjRMMC4xOTc3NTQgMTYuMjA3MVoiIGZpbGw9IiNFNDc2MUIiLz4KICA8cGF0aCBkPSJNNi43NTgwNSA5LjY2NTg2TDUuMjcxIDExLjkxNTNMMTAuNTY5OCAxMi4xNTA2TDEwLjM4MTYgNi40NTY0NUw2Ljc1ODA1IDkuNjY1ODZaTTE3LjIzMzMgOS42NjU4NkwxMy41NjI4IDYuMzkwNTZMMTMuNDQwNCAxMi4xNTA2TDE4LjcyOTggMTEuOTE1M0wxNy4yMzMzIDkuNjY1ODZaTTcuMDU5MjMgMTkuOTQzNUwxMC4yNDA0IDE4LjM5MDZMNy40OTIxNyAxNi4yNDQ3TDcuMDU5MjMgMTkuOTQzNVpNMTMuNzUxIDE4LjM5MDZMMTYuOTQxNiAxOS45NDM1TDE2LjQ5OTIgMTYuMjQ0N0wxMy43NTEgMTguMzkwNloiIGZpbGw9IiNFNDc2MUIiLz4KICA8cGF0aCBkPSJNMTYuOTQxMiAxOS45NDM1TDEzLjc1MDYgMTguMzkwNkwxNC4wMDQ3IDIwLjQ3MDZMMTMuOTc2NSAyMS4zNDU5TDE2Ljk0MTIgMTkuOTQzNVpNNy4wNTg4NCAxOS45NDM1TDEwLjAyMzUgMjEuMzQ1OUwxMC4wMDQ3IDIwLjQ3MDZMMTAuMjQgMTguMzkwNkw3LjA1ODg0IDE5Ljk0MzVaIiBmaWxsPSIjRDdDMUIzIi8+CiAgPHBhdGggZD0iTTEwLjA3MDYgMTQuODcwNkw3LjQxNjUgMTQuMDg5NEw5LjI4OTQ1IDEzLjIzMjlMMTAuMDcwNiAxNC44NzA2Wk0xMy45MiAxNC44NzA2TDE0LjcwMTIgMTMuMjMyOUwxNi41ODM2IDE0LjA4OTRMMTMuOTIgMTQuODcwNloiIGZpbGw9IiMyMzM0NDciLz4KICA8cGF0aCBkPSJNNy4wNTg4MiAxOS45NDM1TDcuNTEwNTggMTYuMTIyM0w0LjU2NDcgMTYuMjA3TDcuMDU4ODIgMTkuOTQzNVpNMTYuNDg5NCAxNi4xMjIzTDE2Ljk0MTIgMTkuOTQzNUwxOS40MzUzIDE2LjIwN0wxNi40ODk0IDE2LjEyMjNaTTE4LjcyOTQgMTEuOTE1M0wxMy40NCAxMi4xNTA2TDEzLjkyOTQgMTQuODcwNkwxNC43MTA2IDEzLjIzMjlMMTYuNTkyOSAxNC4wODk0TDE4LjcyOTQgMTEuOTE1M1pNNy40MTY0NiAxNC4wODk0TDkuMjk4ODIgMTMuMjMyOUwxMC4wNzA2IDE0Ljg3MDZMMTAuNTY5NCAxMi4xNTA2TDUuMjcwNTggMTEuOTE1M0w3LjQxNjQ2IDE0LjA4OTRaIiBmaWxsPSIjQ0Q2MTE2Ii8+CiAgPHBhdGggZD0iTTUuMjcxIDExLjkxNTNMNy40OTIxNyAxNi4yNDQ3TDcuNDE2ODggMTQuMDg5NEw1LjI3MSAxMS45MTUzWk0xNi41OTMzIDE0LjA4OTRMMTYuNDk5MiAxNi4yNDQ3TDE4LjcyOTggMTEuOTE1M0wxNi41OTMzIDE0LjA4OTRaTTEwLjU2OTggMTIuMTUwNkwxMC4wNzEgMTQuODcwNkwxMC42OTIyIDE4LjA4TDEwLjgzMzMgMTMuODU0MUwxMC41Njk4IDEyLjE1MDZaTTEzLjQ0MDQgMTIuMTUwNkwxMy4xODYzIDEzLjg0NDdMMTMuMjk5MiAxOC4wOEwxMy45Mjk4IDE0Ljg3MDZMMTMuNDQwNCAxMi4xNTA2WiIgZmlsbD0iI0U0NzUxRiIvPgogIDxwYXRoIGQ9Ik0xMy45Mjk0IDE0Ljg3MDVMMTMuMjk4OSAxOC4wNzk5TDEzLjc1MDYgMTguMzkwNUwxNi40OTg5IDE2LjI0NDdMMTYuNTkzIDE0LjA4OTRMMTMuOTI5NCAxNC44NzA1Wk03LjQxNjUgMTQuMDg5NEw3LjQ5MTggMTYuMjQ0N0wxMC4yNCAxOC4zOTA1TDEwLjY5MTggMTguMDc5OUwxMC4wNzA2IDE0Ljg3MDVMNy40MTY1IDE0LjA4OTRaIiBmaWxsPSIjRjY4NTFCIi8+CiAgPHBhdGggZD0iTTEzLjk3NjUgMjEuMzQ1OUwxNC4wMDQ3IDIwLjQ3MDZMMTMuNzY5NCAyMC4yNjM1SDEwLjIyMTJMMTAuMDA0NyAyMC40NzA2TDEwLjAyMzUgMjEuMzQ1OUw3LjA1ODg0IDE5Ljk0MzVMOC4wOTQxMyAyMC43OTA2TDEwLjE5MyAyMi4yNDk0SDEzLjc5NzdMMTUuOTA1OSAyMC43OTA2TDE2Ljk0MTIgMTkuOTQzNUwxMy45NzY1IDIxLjM0NTlaIiBmaWxsPSIjQzBBRDlFIi8+CiAgPHBhdGggZD0iTTEzLjc1MDggMTguMzkwNkwxMy4yOTkgMTguMDhIMTAuNjkxOUwxMC4yNDAyIDE4LjM5MDZMMTAuMDA0OSAyMC40NzA2TDEwLjIyMTQgMjAuMjYzNUgxMy43Njk2TDE0LjAwNDkgMjAuNDcwNkwxMy43NTA4IDE4LjM5MDZaIiBmaWxsPSIjMTYxNjE2Ii8+CiAgPHBhdGggZD0iTTIzLjIgNy40MDcwNkwyNCAzLjU2NzA2TDIyLjgwNDcgMEwxMy43NTA2IDYuNzJMMTcuMjMyOSA5LjY2NTg4TDIyLjE1NTMgMTEuMTA1OUwyMy4yNDcxIDkuODM1MjlMMjIuNzc2NSA5LjQ5NjQ3TDIzLjUyOTQgOC44MDk0MUwyMi45NDU5IDguMzU3NjVMMjMuNjk4OCA3Ljc4MzUzTDIzLjIgNy40MDcwNlpNMCAzLjU2NzA2TDAuOCA3LjQwNzA2TDAuMjkxNzY1IDcuNzgzNTNMMS4wNDQ3MSA4LjM1NzY1TDAuNDcwNTg4IDguODA5NDFMMS4yMjM1MyA5LjQ5NjQ3TDAuNzUyOTQxIDkuODM1MjlMMS44MzUyOSAxMS4xMDU5TDYuNzU3NjUgOS42NjU4OEwxMC4yNCA2LjcyTDEuMTg1ODggMEwwIDMuNTY3MDZaIiBmaWxsPSIjNzYzRDE2Ii8+CiAgPHBhdGggZD0iTTIyLjE1NTQgMTEuMTA1OUwxNy4yMzMgOS42NjU5MkwxOC43Mjk1IDExLjkxNTNMMTYuNDk4OSAxNi4yNDQ3TDE5LjQzNTQgMTYuMjA3MUgyMy44MTE5TDIyLjE1NTQgMTEuMTA1OVpNNi43NTc3NSA5LjY2NTkyTDEuODM1NCAxMS4xMDU5TDAuMTk3NzU0IDE2LjIwNzFINC41NjQ4MUw3LjQ5MTg3IDE2LjI0NDdMNS4yNzA3IDExLjkxNTNMNi43NTc3NSA5LjY2NTkyWk0xMy40NDAxIDEyLjE1MDZMMTMuNzUwNyA2LjcyMDA0TDE1LjE4MTMgMi44NTE4MUg4LjgyODM0TDEwLjI0MDEgNi43MjAwNEwxMC41Njk1IDEyLjE1MDZMMTAuNjgyNSAxMy44NjM2TDEwLjY5MTkgMTguMDhIMTMuMjk4OUwxMy4zMTc4IDEzLjg2MzZMMTMuNDQwMSAxMi4xNTA2WiIgZmlsbD0iI0Y2ODUxQiIvPgo8L3N2Zz4=";function he(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 Be=({projectId:e,walletConnectParameters:t})=>{let n=y({flag:"isMetaMask"});return{id:"metaMask",name:"MetaMask",rdns:"io.metamask",iconUrl:ie,installed:n,isExtension:!0,isMobile:!0,downloadUrl:"https://metamask.io/download/",getUri:a=>ve()?`metamask://wc?uri=${encodeURIComponent(a)}`:Ge()?Re()?`https://metamask.app.link/wc?uri=${encodeURIComponent(a)}`:`metamask://wc?uri=${encodeURIComponent(a)}`:`https://metamask.app.link/wc?uri=${encodeURIComponent(a)}`,createConnector:n?A({target:typeof window<"u"?window.ethereum?.providers?.find(he)??window.ethereum:void 0}):m({projectId:e,walletConnectParameters:t})}};import{isAndroid as Fe,isIOS as Ve,isTelegram as Je}from"@getpara/react-sdk";var ae="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMCA1LjRIMS44QzExLjA3ODQgNS40IDE4LjYgMTIuOTIxNiAxOC42IDIyLjJWMjRIMjIuMkMyMy4xOTQxIDI0IDI0IDIzLjE5NDEgMjQgMjIuMkMyNCA5LjkzOTI3IDE0LjA2MDcgMCAxLjggMEMwLjgwNTg4NyAwIDAgMC44MDU4ODcgMCAxLjhWNS40WiIgZmlsbD0idXJsKCNwYWludDBfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTE5LjIgMjIuMkgyMy45OTk5QzIzLjk5OTkgMjMuMTk0MSAyMy4xOTQxIDI0IDIyLjE5OTkgMjRIMTkuMlYyMi4yWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAwTDEuOCA0LjhIMEwxLjMxMTM0ZS0wNyAxLjhDMS43NDU4OGUtMDcgMC44MDU4ODcgMC44MDU4ODcgLTQuMzQ1NGUtMDggMS44IDBaIiBmaWxsPSJ1cmwoI3BhaW50Ml9saW5lYXJfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMCA0Ljc5OTk5SDEuOEMxMS40MDk3IDQuNzk5OTkgMTkuMiAxMi41OTAyIDE5LjIgMjIuMlYyNEgxMy44VjIyLjJDMTMuOCAxNS41NzI2IDguNDI3NDEgMTAuMiAxLjggMTAuMkgwVjQuNzk5OTlaIiBmaWxsPSJ1cmwoI3BhaW50M19yYWRpYWxfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMTQuMzk5OSAyMi4ySDE5LjE5OTlWMjRIMTQuMzk5OVYyMi4yWiIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTIuMDk4MTVlLTA3IDkuNTk5OTlMMCA0Ljc5OTk5TDEuOCA0Ljc5OTk5TDEuOCA5LjU5OTk5SDIuMDk4MTVlLTA3WiIgZmlsbD0idXJsKCNwYWludDVfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTAgMTIuNkMwIDEzLjU5NDEgMC44MDU4ODcgMTQuNCAxLjggMTQuNEM2LjEwNzgyIDE0LjQgOS42IDE3Ljg5MjEgOS42IDIyLjJDOS42IDIzLjE5NDEgMTAuNDA1OSAyNCAxMS40IDI0SDE0LjRWMjIuMkMxNC40IDE1LjI0MTIgOC43NTg3OCA5LjU5OTk4IDEuOCA5LjU5OTk4SDBWMTIuNloiIGZpbGw9InVybCgjcGFpbnQ2X3JhZGlhbF80NDJfODI3KSIvPgogIDxwYXRoIGQ9Ik05LjYwMDEgMjIuMkgxNC40MDAxVjI0SDExLjQwMDFDMTAuNDA2IDI0IDkuNjAwMSAyMy4xOTQxIDkuNjAwMSAyMi4yWiIgZmlsbD0idXJsKCNwYWludDdfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAxNC40QzAuODA1ODg3IDE0LjQgMS43NDU4OGUtMDcgMTMuNTk0MSAxLjMxMTM0ZS0wNyAxMi42TDAgOS41OTk5OEwxLjggOS41OTk5OEwxLjggMTQuNFoiIGZpbGw9InVybCgjcGFpbnQ4X3JhZGlhbF80NDJfODI3KSIvPgogIDxkZWZzPgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDIyLjIpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjc3MDI3NyIgc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDQyXzgyNyIgeDE9IjE4LjkiIHkxPSIyMy4xIiB4Mj0iMjMuOTk5OSIgeTI9IjIzLjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfNDQyXzgyNyIgeDE9IjAuOSIgeTE9Ii0zLjkzMzllLTA3IiB4Mj0iMC44OTk5OTgiIHkyPSI1LjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzg3NTRDOSIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjQwMDAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDQyXzgyNyIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjggMjIuMikgcm90YXRlKC05MCkgc2NhbGUoMTcuNCkiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAuNzIzOTI5IiBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ0X2xpbmVhcl80NDJfODI3IiB4MT0iMTQuMzk5OSIgeTE9IjIzLjEiIHgyPSIxOS4xOTk5IiB5Mj0iMjMuMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ1X2xpbmVhcl80NDJfODI3IiB4MT0iMC45MDAwMDEiIHkxPSI5LjU5OTk5IiB4Mj0iMC44OTk5OTkiIHkyPSI0Ljc5OTk5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRkY3MDAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY5OTAxIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDZfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDEyLjYpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjU5NTEzIiBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ3X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzAwMSAyMy4xKSBzY2FsZSg1LjEgMTMuNikiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ4X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAuODk5OTk5IDE0LjcpIHJvdGF0ZSgtOTApIHNjYWxlKDUuMSA5Ni43MTEpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwQUFGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMURBNDAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgPC9kZWZzPgo8L3N2Zz4=";var He=({projectId:e,walletConnectParameters:t})=>{let n=y({flag:"isRainbow"});return{id:"rainbow",name:"Rainbow",rdns:"me.rainbow",iconUrl:ae,installed:n,isExtension:!0,isMobile:!0,downloadUrl:"https://rainbow.me/",getUri:a=>Fe()?`rainbow://wc?uri=${encodeURIComponent(a)}`:Ve()?Je()?`https://rnbwapp.com/wc?uri=${encodeURIComponent(a)}`:`rainbow://wc?uri=${encodeURIComponent(a)}`:`https://rnbwapp.com/wc?uri=${encodeURIComponent(a)}`,createConnector:n?A({flag:"isRainbow"}):m({projectId:e,walletConnectParameters:t})}};var re="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNNC45MTMzIDYuOTM1NDFDOC44MjcxOCAzLjAyMTUzIDE1LjE3MjggMy4wMjE1MyAxOS4wODY3IDYuOTM1NDFMMTkuNTU3OCA3LjQwNjQ2QzE5Ljc1MzUgNy42MDIxNSAxOS43NTM1IDcuOTE5NDMgMTkuNTU3OCA4LjExNTEzTDE3Ljk0NjQgOS43MjY0N0MxNy44NDg2IDkuODI0MzIgMTcuNjg5OSA5LjgyNDMyIDE3LjU5MjEgOS43MjY0N0wxNi45NDM5IDkuMDc4MjZDMTQuMjEzNSA2LjM0Nzg0IDkuNzg2NTcgNi4zNDc4NCA3LjA1NjE0IDkuMDc4MjZMNi4zNjE5NiA5Ljc3MjQ0QzYuMjY0MTIgOS44NzAyOCA2LjEwNTQ4IDkuODcwMjggNi4wMDc2MyA5Ljc3MjQ0TDQuMzk2MjkgOC4xNjExQzQuMjAwNTkgNy45NjU0IDQuMjAwNTkgNy42NDgxMiA0LjM5NjI5IDcuNDUyNDNMNC45MTMzIDYuOTM1NDFaTTIyLjQxOTEgMTAuMjY3OEwyMy44NTMyIDExLjcwMTlDMjQuMDQ4OSAxMS44OTc2IDI0LjA0ODkgMTIuMjE0OSAyMy44NTMyIDEyLjQxMDZMMTcuMzg2OCAxOC44NzcyQzE3LjE5MTEgMTkuMDcyOCAxNi44NzM4IDE5LjA3MjkgMTYuNjc4MSAxOC44NzcyQzE2LjY3ODEgMTguODc3MiAxNi42NzgxIDE4Ljg3NzIgMTYuNjc4MSAxOC44NzcyTDEyLjA4ODYgMTQuMjg3N0MxMi4wMzk3IDE0LjIzODcgMTEuOTYwNCAxNC4yMzg3IDExLjkxMTUgMTQuMjg3N0MxMS45MTE1IDE0LjI4NzcgMTEuOTExNSAxNC4yODc3IDExLjkxMTUgMTQuMjg3N0w3LjMyMjA3IDE4Ljg3NzJDNy4xMjYzOCAxOS4wNzI4IDYuODA5MDkgMTkuMDcyOSA2LjYxMzQgMTguODc3MkM2LjYxMzQgMTguODc3MiA2LjYxMzM5IDE4Ljg3NzIgNi42MTMzOSAxOC44NzcyTDAuMTQ2NzcxIDEyLjQxMDVDLTAuMDQ4OTIzNiAxMi4yMTQ4IC0wLjA0ODkyMzYgMTEuODk3NSAwLjE0Njc3MSAxMS43MDE5TDEuNTgwODcgMTAuMjY3OEMxLjc3NjU2IDEwLjA3MjEgMi4wOTM4NSAxMC4wNzIxIDIuMjg5NTQgMTAuMjY3OEw2Ljg3OTEgMTQuODU3M0M2LjkyODAyIDE0LjkwNjIgNy4wMDczNCAxNC45MDYyIDcuMDU2MjYgMTQuODU3M0M3LjA1NjI2IDE0Ljg1NzMgNy4wNTYyNiAxNC44NTczIDcuMDU2MjcgMTQuODU3M0wxMS42NDU2IDEwLjI2NzhDMTEuODQxMyAxMC4wNzIxIDEyLjE1ODYgMTAuMDcyIDEyLjM1NDMgMTAuMjY3N0MxMi4zNTQzIDEwLjI2NzcgMTIuMzU0MyAxMC4yNjc3IDEyLjM1NDMgMTAuMjY3N0wxNi45NDM4IDE0Ljg1NzNDMTYuOTkyNyAxNC45MDYyIDE3LjA3MjEgMTQuOTA2MiAxNy4xMjEgMTQuODU3M0wyMS43MTA1IDEwLjI2NzhDMjEuOTA2MiAxMC4wNzIxIDIyLjIyMzQgMTAuMDcyMSAyMi40MTkxIDEwLjI2NzhaIiBmaWxsPSIjM0I5OUZDIi8+Cjwvc3ZnPg==";var Xe=({projectId:e,options:t})=>({id:"walletConnect",name:"WalletConnect",installed:void 0,iconUrl:re,isMobile:!0,getUri:r=>r,createConnector:m({projectId:e,walletConnectParameters:t})});import{createConnector as Ke}from"wagmi";import{coinbaseWallet as $e}from"wagmi/connectors";var oe="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDQyXzg1NCkiPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiAyNEMxOC42Mjc0IDI0IDI0IDE4LjYyNzQgMjQgMTJDMjQgNS4zNzI1OCAxOC42Mjc0IDAgMTIgMEM1LjM3MjU4IDAgMCA1LjM3MjU4IDAgMTJDMCAxOC42Mjc0IDUuMzcyNTggMjQgMTIgMjRaTTguODMxNzUgOC4wODE2MkM4LjQxNzU0IDguMDgxNjIgOC4wODE3NSA4LjQxNzQxIDguMDgxNzUgOC44MzE2MlYxNS4xNjg0QzguMDgxNzUgMTUuNTgyNiA4LjQxNzU0IDE1LjkxODQgOC44MzE3NSAxNS45MTg0SDE1LjE2ODVDMTUuNTgyNyAxNS45MTg0IDE1LjkxODUgMTUuNTgyNiAxNS45MTg1IDE1LjE2ODRWOC44MzE2MkMxNS45MTg1IDguNDE3NDEgMTUuNTgyNyA4LjA4MTYyIDE1LjE2ODUgOC4wODE2Mkg4LjgzMTc1WiIgZmlsbD0iIzJDNUZGNiIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfNDQyXzg1NCI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=";var _e=({appName:e,appIcon:t})=>{let n=y({flag:"isCoinbaseWallet"});return{id:"coinbase",name:"Coinbase Wallet",rdns:"com.coinbase.wallet",iconUrl:oe,installed:n,isExtension:!0,isMobile:!0,downloadUrl:"https://www.coinbase.com/wallet/downloads",getUri:a=>a,createConnector:a=>Ke(o=>({...$e({version:"4",appName:e,appLogoUrl:t,preference:"eoaOnly"})(o),...a}))}};import{isIOS as qe,isTelegram as et}from"@getpara/react-sdk";var Me="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PHBhdGggZmlsbD0iIzI5NjJFRiIgZD0iTTAgMGgyOHYyOEgweiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik02LjA3MyA3Yy0uNDggMC0uNjY1LjU5My0uMjYyLjg0MWwxMC4wNzMgNi4wNzRhLjU3Ny41NzcgMCAwIDAgLjc1OC0uMTM5bDQuNDMtNS44MTRjLjMtLjQwNC0uMDA0LS45NjItLjUyNS0uOTYySDYuMDczWk0yMS45MDQgMjFjLjQ4IDAgLjY3LS41OTYuMjY3LS44NDRsLTEwLjA3NS02LjA3M2EuNTY5LjU2OSAwIDAgMC0uNzUxLjE0NmwtNC40MzcgNS44MTNjLS4zMDEuNDA0LjAxMi45NTguNTM0Ljk1OGgxNC40NjJaIi8+PC9zdmc+";var tt=({projectId:e,walletConnectParameters:t})=>{let n=y({namespace:"zerionWallet",flag:"isZerion"});return{id:"zerion",name:"Zerion",rdns:"io.zerion.wallet",iconUrl:Me,installed:n,isExtension:!0,isMobile:!0,getUri:a=>et()&&qe()?`https://app.zerion.io/wc?uri=${encodeURIComponent(a)}`:`zerion://wc?uri=${encodeURIComponent(a)}`,downloadUrl:"https://zerion.io/download",createConnector:n?A({namespace:"zerionWallet",flag:"isZerion"}):m({projectId:e,walletConnectParameters:t})}};var Ie="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjODY5N0ZGIiBkPSJNMjggMEgwdjI4aDI4VjBaIi8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTIyLjU0IDE1LjA3OGMuNjc3LTEuNTE0LTIuNjczLTUuNzQ0LTUuODc0LTcuNTA2LTIuMDE3LTEuMzY1LTQuMTItMS4xNzgtNC41NDUtLjU3OS0uOTM1IDEuMzE2IDMuMDk0IDIuNDMgNS43ODggMy43MzEtLjU4LjI1Mi0xLjEyNS43MDMtMS40NDYgMS4yOC0xLjAwNC0xLjA5Ni0zLjIwOS0yLjA0LTUuNzk2LTEuMjgtMS43NDMuNTEzLTMuMTkxIDEuNzIxLTMuNzUxIDMuNTQ2YTEuMDk3IDEuMDk3IDAgMSAwLS40NDUgMi4xYy4xMTIgMCAuNDYzLS4wNzUuNDYzLS4wNzVsNS42MTIuMDQxYy0yLjI0NCAzLjU2LTQuMDE4IDQuMDgxLTQuMDE4IDQuNjk4czEuNjk3LjQ1IDIuMzM1LjIyYzMuMDUtMS4xIDYuMzI3LTQuNTMxIDYuODktNS41MTkgMi4zNi4yOTUgNC4zNDUuMzMgNC43ODYtLjY1N1oiLz48cGF0aCBmaWxsPSJ1cmwoI2MpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0xNy44ODUgMTAuNzEzLjAyNS4wMWMuMTI1LS4wNDkuMTA1LS4yMzMuMDctLjM3OC0uMDc4LS4zMzMtMS40MzgtMS42NzYtMi43MTUtMi4yNzctMS43NDMtLjgyLTMuMDI1LS43NzctMy4yMTItLjM5OC4zNTYuNzI2IDEuOTk4IDEuNDA4IDMuNzE0IDIuMTIuNzIzLjMgMS40Ni42MDYgMi4xMTguOTIzWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0idXJsKCNkKSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNzAxIDE4LjAzNmExMC4yOTYgMTAuMjk2IDAgMCAwLTEuMi0uMzdjLjQ4Mi0uODYyLjU4My0yLjEzOC4xMjgtMi45NDUtLjYzOS0xLjEzMy0xLjQ0LTEuNzM2LTMuMzA0LTEuNzM2LTEuMDI0IDAtMy43ODMuMzQ2LTMuODMyIDIuNjQ4LS4wMDUuMjQyIDAgLjQ2NC4wMTcuNjY3bDUuMDM2LjAzN2ExNy4yNjQgMTcuMjY0IDAgMCAxLTEuODcxIDIuNDgzYy42NjkuMTcyIDEuMjIxLjMxNiAxLjcyOC40NDguNDguMTI1LjkyLjI0IDEuMzguMzU3YTIxLjAwMyAyMS4wMDMgMCAwIDAgMS45MTgtMS41OVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9InVybCgjZSkiIGQ9Ik02Ljg0OCAxNi4wNjNjLjIwNiAxLjc1IDEuMiAyLjQzNSAzLjIzMiAyLjYzOCAyLjAzMi4yMDMgMy4xOTcuMDY3IDQuNzQ5LjIwOCAxLjI5Ni4xMTggMi40NTMuNzc4IDIuODgyLjU1LjM4Ni0uMjA1LjE3LS45NDctLjM0Ny0xLjQyMy0uNjctLjYxNy0xLjU5Ny0xLjA0Ni0zLjIyOS0xLjE5OS4zMjUtLjg5LjIzNC0yLjEzOC0uMjctMi44MTctLjczMS0uOTgyLTIuMDc5LTEuNDI2LTMuNzg1LTEuMjMyLTEuNzgyLjIwMi0zLjQ5IDEuMDgtMy4yMzIgMy4yNzVaIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjEwLjQ2NCIgeDI9IjIyLjM5NCIgeTE9IjEzLjczNyIgeTI9IjE3LjEyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI2ZmZiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iMjAuMzg2IiB4Mj0iMTEuNzc5IiB5MT0iMTMuNTA5IiB5Mj0iNC44NzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzI1OERDIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzk3REVBIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCIgeDE9IjE1Ljk0IiB4Mj0iNy42NzMiIHkxPSIxOC4zMzciIHkyPSIxMy41ODQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzQ2MUVBIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkZDMkZGIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZSIgeDE9IjExLjE3NyIgeDI9IjE2Ljc2NSIgeTE9IjEzLjY0OCIgeTI9IjIwLjc0OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9Ii45ODQiIHN0b3AtY29sb3I9IiNENUNFRkYiLz48L2xpbmVhckdyYWRpZW50PjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgyOHYyOEgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==";var nt=({projectId:e,walletConnectParameters:t})=>{let n=y({flag:"isRabby"});return{id:"rabby",name:"Rabby Wallet",rdns:"io.rabby",iconUrl:Ie,installed:n,isExtension:!0,isMobile:!1,downloadUrl:"https://rabby.io",createConnector:n?A({flag:"isRabby"}):m({projectId:e,walletConnectParameters:t})}};export{P as EvmExternalWalletContext,Q as EvmExternalWalletProvider,We as ParaEvmProvider,_e as coinbaseWallet,Be as metaMaskWallet,nt as rabbyWallet,He as rainbowWallet,Xe as walletConnectWallet,tt as zerionWallet};
|
package/dist/index.js.br
ADDED
|
Binary file
|
package/dist/index.js.gz
ADDED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getpara/evm-wallet-connectors",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,11 +10,12 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@coinbase/wallet-sdk": "4.3.0",
|
|
13
|
-
"@getpara/react-sdk": "1.
|
|
14
|
-
"@getpara/wagmi-v2-integration": "1.
|
|
13
|
+
"@getpara/react-sdk": "1.3.0",
|
|
14
|
+
"@getpara/wagmi-v2-integration": "1.3.0"
|
|
15
15
|
},
|
|
16
16
|
"scripts": {
|
|
17
|
-
"build": "rm -rf dist &&
|
|
17
|
+
"build": "rm -rf dist && yarn typegen && node ./scripts/build.mjs",
|
|
18
|
+
"typegen": "tsc --emitDeclarationOnly",
|
|
18
19
|
"test": "vitest run --coverage"
|
|
19
20
|
},
|
|
20
21
|
"devDependencies": {
|
|
@@ -34,5 +35,5 @@
|
|
|
34
35
|
"dist",
|
|
35
36
|
"package.json"
|
|
36
37
|
],
|
|
37
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "2d421556a0a1497abd08e18dca94f08ec3ad640b"
|
|
38
39
|
}
|
|
@@ -1,228 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
import { createContext, useEffect, useMemo, useState } from 'react';
|
|
12
|
-
import { useAccount, useSwitchChain, useConnect, useDisconnect, useEnsName, useEnsAvatar } from 'wagmi';
|
|
13
|
-
import { isEIP6963Connector } from '../utils/isEIP6963Connector.js';
|
|
14
|
-
import { getWalletConnectUri } from '../utils/getWalletConnectUri.js';
|
|
15
|
-
import { isMobile, WalletType } from '@getpara/react-sdk';
|
|
16
|
-
import { normalize } from 'viem/ens';
|
|
17
|
-
export const defaultEvmExternalWallet = {
|
|
18
|
-
wallets: [],
|
|
19
|
-
chains: [],
|
|
20
|
-
chainId: undefined,
|
|
21
|
-
username: undefined,
|
|
22
|
-
avatar: undefined,
|
|
23
|
-
disconnect: () => Promise.resolve(),
|
|
24
|
-
switchChain: () => Promise.resolve({}),
|
|
25
|
-
};
|
|
26
|
-
export const EvmExternalWalletContext = createContext(defaultEvmExternalWallet);
|
|
27
|
-
export function EvmExternalWalletProvider({ children, para, onSwitchWallet }) {
|
|
28
|
-
const { connectAsync, connectors: untypedConnectors } = useConnect();
|
|
29
|
-
const { address: wagmiAddress, isConnecting, isReconnecting, chainId, connector: connectedConnector } = useAccount();
|
|
30
|
-
const { chains, switchChainAsync } = useSwitchChain();
|
|
31
|
-
const { disconnectAsync } = useDisconnect();
|
|
32
|
-
const { data: ensName } = useEnsName({ address: wagmiAddress });
|
|
33
|
-
const { data: ensAvatar } = useEnsAvatar({
|
|
34
|
-
name: normalize(ensName),
|
|
35
|
-
});
|
|
36
|
-
const [isLocalConnecting, setIsLocalConnecting] = useState(false);
|
|
37
|
-
useEffect(() => {
|
|
38
|
-
const storedExternalWallet = para.externalWallets[wagmiAddress !== null && wagmiAddress !== void 0 ? wagmiAddress : ''];
|
|
39
|
-
if (!isConnecting &&
|
|
40
|
-
!isReconnecting &&
|
|
41
|
-
!isLocalConnecting &&
|
|
42
|
-
!!wagmiAddress &&
|
|
43
|
-
!storedExternalWallet &&
|
|
44
|
-
!((connectedConnector === null || connectedConnector === void 0 ? void 0 : connectedConnector.id) === 'para')) {
|
|
45
|
-
reset();
|
|
46
|
-
}
|
|
47
|
-
}, [isConnecting, isReconnecting, isLocalConnecting, wagmiAddress, connectedConnector]);
|
|
48
|
-
useEffect(() => {
|
|
49
|
-
var _a, _b;
|
|
50
|
-
const storedExternalWallet = para.externalWallets[(_b = (_a = para.currentExternalWalletAddresses) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : ''];
|
|
51
|
-
// If the user is using an external EVM wallet we want to watch for wallet changes and log them in to a different user when the wallet changes
|
|
52
|
-
if (!isConnecting &&
|
|
53
|
-
!isReconnecting &&
|
|
54
|
-
(storedExternalWallet === null || storedExternalWallet === void 0 ? void 0 : storedExternalWallet.type) === WalletType.EVM &&
|
|
55
|
-
(storedExternalWallet === null || storedExternalWallet === void 0 ? void 0 : storedExternalWallet.address) !== wagmiAddress) {
|
|
56
|
-
switchWallet(wagmiAddress);
|
|
57
|
-
}
|
|
58
|
-
}, [wagmiAddress, isReconnecting, isConnecting]);
|
|
59
|
-
const connectors = untypedConnectors;
|
|
60
|
-
const reset = () => __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
yield disconnectAsync();
|
|
62
|
-
yield para.logout();
|
|
63
|
-
});
|
|
64
|
-
const switchChain = (chainId) => __awaiter(this, void 0, void 0, function* () {
|
|
65
|
-
var _a, _b, _c;
|
|
66
|
-
let error;
|
|
67
|
-
try {
|
|
68
|
-
yield switchChainAsync({ chainId });
|
|
69
|
-
}
|
|
70
|
-
catch (e) {
|
|
71
|
-
// Invalid networks throws the same error as connection rejected requests, so catching the error using the detail string here.
|
|
72
|
-
if (e.details.includes('Missing or invalid.')) {
|
|
73
|
-
const chain = chains.find(c => c.id === chainId);
|
|
74
|
-
error = [
|
|
75
|
-
'Network not supported.',
|
|
76
|
-
`You may need to add ${chain === null || chain === void 0 ? void 0 : chain.name} support to ${(_c = (_b = (_a = connectedConnector === null || connectedConnector === void 0 ? void 0 : connectedConnector.paraDetails) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : connectedConnector === null || connectedConnector === void 0 ? void 0 : connectedConnector.name) !== null && _c !== void 0 ? _c : 'the wallet'} manually.`,
|
|
77
|
-
];
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
switch (e.name) {
|
|
81
|
-
case 'UserRejectedRequestError': {
|
|
82
|
-
error = ['Change request rejected'];
|
|
83
|
-
break;
|
|
84
|
-
}
|
|
85
|
-
default: {
|
|
86
|
-
error = ['An unknown error occurred'];
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
return { error };
|
|
93
|
-
});
|
|
94
|
-
const login = (address, connectorName) => __awaiter(this, void 0, void 0, function* () {
|
|
95
|
-
try {
|
|
96
|
-
yield para.externalWalletLogin({ address, type: WalletType.EVM, provider: connectorName });
|
|
97
|
-
}
|
|
98
|
-
catch (err) {
|
|
99
|
-
yield disconnectAsync();
|
|
100
|
-
yield para.logout();
|
|
101
|
-
throw 'Error logging you in. Please try again.';
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
const switchWallet = (address) => __awaiter(this, void 0, void 0, function* () {
|
|
105
|
-
setIsLocalConnecting(true);
|
|
106
|
-
let error;
|
|
107
|
-
// If we're calling switch wallet with no address, treat it as if the user disconnected the wallet from the app and logout to reset the Para instance.
|
|
108
|
-
if (!address) {
|
|
109
|
-
yield para.logout();
|
|
110
|
-
}
|
|
111
|
-
else {
|
|
112
|
-
try {
|
|
113
|
-
yield login(address, connectedConnector === null || connectedConnector === void 0 ? void 0 : connectedConnector.name);
|
|
114
|
-
}
|
|
115
|
-
catch (err) {
|
|
116
|
-
error = err;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
onSwitchWallet({ address, error });
|
|
120
|
-
setIsLocalConnecting(false);
|
|
121
|
-
});
|
|
122
|
-
const connect = (connector) => __awaiter(this, void 0, void 0, function* () {
|
|
123
|
-
var _a, _b, _c, _d;
|
|
124
|
-
setIsLocalConnecting(true);
|
|
125
|
-
yield disconnectAsync();
|
|
126
|
-
const walletChainId = yield connector.getChainId();
|
|
127
|
-
let address;
|
|
128
|
-
let error;
|
|
129
|
-
try {
|
|
130
|
-
const data = yield connectAsync({
|
|
131
|
-
// If the wallet is already on a supported chain, use that to avoid a chain switch prompt.
|
|
132
|
-
chainId: (_b = (_a = chains.find(({ id }) => id === walletChainId)) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b :
|
|
133
|
-
// Fall back to the first chain provided.
|
|
134
|
-
(_c = chains[0]) === null || _c === void 0 ? void 0 : _c.id,
|
|
135
|
-
connector,
|
|
136
|
-
});
|
|
137
|
-
address = (_d = data.accounts) === null || _d === void 0 ? void 0 : _d[0];
|
|
138
|
-
if (address) {
|
|
139
|
-
try {
|
|
140
|
-
yield login(address, connector.name);
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
address = undefined;
|
|
144
|
-
error = err;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
catch (e) {
|
|
149
|
-
switch (e.name) {
|
|
150
|
-
case 'UserRejectedRequestError': {
|
|
151
|
-
error = 'Connection request rejected';
|
|
152
|
-
break;
|
|
153
|
-
}
|
|
154
|
-
case 'ResourceUnavailableRpcError': {
|
|
155
|
-
`${connector.name} not detected`;
|
|
156
|
-
break;
|
|
157
|
-
}
|
|
158
|
-
default: {
|
|
159
|
-
error = 'An unknown error occurred';
|
|
160
|
-
break;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
setIsLocalConnecting(false);
|
|
165
|
-
return { address, error };
|
|
166
|
-
});
|
|
167
|
-
const connectMobile = (connector, isManualWalletConnect) => __awaiter(this, void 0, void 0, function* () {
|
|
168
|
-
const _isMobile = isManualWalletConnect !== undefined ? isManualWalletConnect : isMobile();
|
|
169
|
-
// If on mobile and the connector contains the wallet connect modal connector, use it.
|
|
170
|
-
const _connector = connector.walletConnectModalConnector && _isMobile ? connector.walletConnectModalConnector : connector;
|
|
171
|
-
return yield connect(_connector);
|
|
172
|
-
});
|
|
173
|
-
const getQrUri = (connector) => () => {
|
|
174
|
-
var _a;
|
|
175
|
-
return getWalletConnectUri(connector, (_a = connector.paraDetails) === null || _a === void 0 ? void 0 : _a.getUri);
|
|
176
|
-
};
|
|
177
|
-
// If an Eip6963 wallet is injected we want to remove the non Eip6963 connector and attach its metadata to the Eip6963 connector
|
|
178
|
-
const nonEip6963ConnectorsByRdns = {};
|
|
179
|
-
let walletConnectModalConnector;
|
|
180
|
-
connectors
|
|
181
|
-
.filter(c => !isEIP6963Connector(c))
|
|
182
|
-
.forEach(c => {
|
|
183
|
-
if (c.paraDetails) {
|
|
184
|
-
nonEip6963ConnectorsByRdns[c.paraDetails.rdns] = c.paraDetails;
|
|
185
|
-
if (c.paraDetails.isWalletConnectModalConnector) {
|
|
186
|
-
walletConnectModalConnector = c;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
const eip6963ids = connectors.filter(c => isEIP6963Connector(c)).map(c => c.id);
|
|
191
|
-
const dedupedConnectors = connectors
|
|
192
|
-
.map(c => {
|
|
193
|
-
var _a, _b, _c;
|
|
194
|
-
// Filter out the duplicated walletConnect connector with the modal
|
|
195
|
-
// This connector will be attached to the WC connector that doesn't contain the modal for use on mobile
|
|
196
|
-
if ((_a = c.paraDetails) === null || _a === void 0 ? void 0 : _a.isWalletConnectModalConnector) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
// Remove any non EIP6963 connectors if they have a matching EIP6963 connectors
|
|
200
|
-
if (!isEIP6963Connector(c) && eip6963ids.includes((_b = c.paraDetails) === null || _b === void 0 ? void 0 : _b.rdns)) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
// Return the EIP6963 connectors
|
|
204
|
-
if (isEIP6963Connector(c)) {
|
|
205
|
-
const paraMetadata = nonEip6963ConnectorsByRdns[c.id];
|
|
206
|
-
return Object.assign(Object.assign({}, c), { paraDetails: paraMetadata });
|
|
207
|
-
}
|
|
208
|
-
// Return the WC connector with the attached WC modal connector
|
|
209
|
-
if (((_c = c.paraDetails) === null || _c === void 0 ? void 0 : _c.id) === 'walletConnect' && walletConnectModalConnector) {
|
|
210
|
-
return Object.assign(Object.assign({}, c), { walletConnectModalConnector });
|
|
211
|
-
}
|
|
212
|
-
return c;
|
|
213
|
-
})
|
|
214
|
-
.filter(c => !!c);
|
|
215
|
-
const wallets = dedupedConnectors.map(c => {
|
|
216
|
-
const connector = Object.assign(Object.assign({}, c), c.paraDetails);
|
|
217
|
-
return Object.assign(Object.assign({}, connector), { connect: () => connect(connector), connectMobile: isManualWalletConnect => connectMobile(connector, isManualWalletConnect), type: WalletType.EVM, getQrUri: getQrUri(connector) });
|
|
218
|
-
});
|
|
219
|
-
const formattedChains = chains.map(c => {
|
|
220
|
-
return {
|
|
221
|
-
id: c.id,
|
|
222
|
-
name: c.name,
|
|
223
|
-
};
|
|
224
|
-
});
|
|
225
|
-
const username = useMemo(() => ensName !== null && ensName !== void 0 ? ensName : wagmiAddress, [ensName, wagmiAddress]);
|
|
226
|
-
const disconnect = disconnectAsync;
|
|
227
|
-
return (_jsx(EvmExternalWalletContext.Provider, { value: useMemo(() => ({ wallets, chains: formattedChains, chainId, username, avatar: ensAvatar, disconnect, switchChain }), [wallets, formattedChains, chainId, username, ensAvatar, disconnect, switchChain]), children: children }));
|
|
228
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
11
|
-
var t = {};
|
|
12
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
13
|
-
t[p] = s[p];
|
|
14
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
15
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
17
|
-
t[p[i]] = s[p[i]];
|
|
18
|
-
}
|
|
19
|
-
return t;
|
|
20
|
-
};
|
|
21
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
22
|
-
import { useCallback, useEffect, useMemo } from 'react';
|
|
23
|
-
import { createConfig, WagmiProvider } from 'wagmi';
|
|
24
|
-
import { connectorsForWallets } from '../wallets/connectorsForWallets.js';
|
|
25
|
-
import { http } from 'viem';
|
|
26
|
-
import { computeWalletConnectMetaData } from '../utils/computeWalletConnectMetaData.js';
|
|
27
|
-
import { EvmExternalWalletContext, EvmExternalWalletProvider } from './EvmExternalWalletContext.js';
|
|
28
|
-
import { useClient, useExternalWalletProviderStore } from '@getpara/react-sdk';
|
|
29
|
-
import { connect } from 'wagmi/actions';
|
|
30
|
-
import { paraConnector } from '@getpara/wagmi-v2-integration';
|
|
31
|
-
const createDefaultTransports = (chains) => {
|
|
32
|
-
const transportsObject = chains.reduce((acc, chain) => {
|
|
33
|
-
const key = chain.id;
|
|
34
|
-
acc[key] = http(); // Type assertion here
|
|
35
|
-
return acc;
|
|
36
|
-
}, {});
|
|
37
|
-
return transportsObject;
|
|
38
|
-
};
|
|
39
|
-
export function ParaEvmProvider(_a) {
|
|
40
|
-
var _b;
|
|
41
|
-
var { children, config: _config } = _a, wagmiProviderProps = __rest(_a, ["children", "config"]);
|
|
42
|
-
const updateExternalWalletProviderState = useExternalWalletProviderStore(state => state.updateState);
|
|
43
|
-
const EvmProvider = useExternalWalletProviderStore(state => state.EvmProvider);
|
|
44
|
-
const evmContext = useExternalWalletProviderStore(state => state.evmContext);
|
|
45
|
-
const para = (_b = _config.para) !== null && _b !== void 0 ? _b : useClient();
|
|
46
|
-
const { projectId, appName, appDescription, appIcon, appUrl, wallets, chains, transports, paraDisableModal, paraOptions } = _config, wagmiConfigParams = __rest(_config, ["projectId", "appName", "appDescription", "appIcon", "appUrl", "wallets", "chains", "transports", "paraDisableModal", "paraOptions"]);
|
|
47
|
-
const wcMetadata = computeWalletConnectMetaData({ appName, appDescription, appUrl, appIcon });
|
|
48
|
-
const paraConnectorInstance = useMemo(() => {
|
|
49
|
-
if (!para)
|
|
50
|
-
return undefined;
|
|
51
|
-
const instance = paraConnector({
|
|
52
|
-
para,
|
|
53
|
-
chains: [...chains],
|
|
54
|
-
disableModal: paraDisableModal !== null && paraDisableModal !== void 0 ? paraDisableModal : true,
|
|
55
|
-
appName,
|
|
56
|
-
options: paraOptions !== null && paraOptions !== void 0 ? paraOptions : {},
|
|
57
|
-
});
|
|
58
|
-
return instance;
|
|
59
|
-
}, [para, chains, paraDisableModal, appName, paraOptions]);
|
|
60
|
-
const allConnectors = useMemo(() => {
|
|
61
|
-
const baseConnectors = connectorsForWallets(wallets, {
|
|
62
|
-
projectId,
|
|
63
|
-
appName,
|
|
64
|
-
appDescription,
|
|
65
|
-
appUrl,
|
|
66
|
-
appIcon,
|
|
67
|
-
walletConnectParameters: { metadata: wcMetadata },
|
|
68
|
-
});
|
|
69
|
-
return paraConnectorInstance ? [...baseConnectors, paraConnectorInstance] : baseConnectors;
|
|
70
|
-
}, [wallets, projectId, appName, appDescription, appUrl, appIcon, wcMetadata, paraConnectorInstance]);
|
|
71
|
-
const config = useMemo(() => createConfig(Object.assign(Object.assign({}, wagmiConfigParams), { chains, transports: transports || createDefaultTransports(chains), connectors: allConnectors })), [wagmiConfigParams, chains, transports, allConnectors]);
|
|
72
|
-
const connectParaEvmWallet = useCallback(() => __awaiter(this, void 0, void 0, function* () {
|
|
73
|
-
if (!paraConnectorInstance) {
|
|
74
|
-
return { error: 'No para connector instance' };
|
|
75
|
-
}
|
|
76
|
-
try {
|
|
77
|
-
const result = yield connect(config, { connector: paraConnectorInstance });
|
|
78
|
-
return { result };
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
const error = err instanceof Error ? err.message : 'Unknown error';
|
|
82
|
-
return { error };
|
|
83
|
-
}
|
|
84
|
-
}), [paraConnectorInstance, config, connect]);
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
updateExternalWalletProviderState({
|
|
87
|
-
EvmProvider: evmContext && EvmProvider ? EvmProvider : EvmExternalWalletProvider,
|
|
88
|
-
evmContext: evmContext || EvmExternalWalletContext,
|
|
89
|
-
connectParaEvmWallet: paraConnectorInstance ? connectParaEvmWallet : undefined,
|
|
90
|
-
});
|
|
91
|
-
}, [evmContext, EvmProvider, paraConnectorInstance, connectParaEvmWallet, updateExternalWalletProviderState]);
|
|
92
|
-
if (!evmContext || !EvmProvider) {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
return (_jsx(WagmiProvider, Object.assign({ config: config }, wagmiProviderProps, { children: children })));
|
|
96
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types/Wallet.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/types/utils.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export const computeWalletConnectMetaData = ({ appName, appDescription, appUrl, appIcon, }) => {
|
|
2
|
-
return {
|
|
3
|
-
name: appName,
|
|
4
|
-
description: appDescription !== null && appDescription !== void 0 ? appDescription : appName,
|
|
5
|
-
url: appUrl !== null && appUrl !== void 0 ? appUrl : (typeof window !== 'undefined' ? window.location.href : ''),
|
|
6
|
-
icons: [...(appIcon ? [appIcon] : [])],
|
|
7
|
-
};
|
|
8
|
-
};
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { createConnector } from 'wagmi';
|
|
2
|
-
import { injected } from 'wagmi/connectors';
|
|
3
|
-
/*
|
|
4
|
-
* Returns the explicit window provider that matches the flag and the flag is true
|
|
5
|
-
*/
|
|
6
|
-
function getExplicitInjectedProvider(flag) {
|
|
7
|
-
const _window = typeof window !== 'undefined' ? window : undefined;
|
|
8
|
-
if (typeof _window === 'undefined' || typeof _window.ethereum === 'undefined')
|
|
9
|
-
return;
|
|
10
|
-
const providers = _window.ethereum.providers;
|
|
11
|
-
return providers ? providers.find(provider => provider[flag]) : _window.ethereum[flag] ? _window.ethereum : undefined;
|
|
12
|
-
}
|
|
13
|
-
/*
|
|
14
|
-
* Gets the `window.namespace` window provider if it exists
|
|
15
|
-
*/
|
|
16
|
-
function getWindowProviderNamespace(namespace) {
|
|
17
|
-
const providerSearch = (provider, namespace) => {
|
|
18
|
-
const [property, ...path] = namespace.split('.');
|
|
19
|
-
const _provider = provider[property];
|
|
20
|
-
if (_provider) {
|
|
21
|
-
if (path.length === 0)
|
|
22
|
-
return _provider;
|
|
23
|
-
return providerSearch(_provider, path.join('.'));
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
if (typeof window !== 'undefined')
|
|
27
|
-
return providerSearch(window, namespace);
|
|
28
|
-
}
|
|
29
|
-
/*
|
|
30
|
-
* Checks if the explict provider or window ethereum exists
|
|
31
|
-
*/
|
|
32
|
-
export function hasInjectedProvider({ flag, namespace }) {
|
|
33
|
-
if (namespace && typeof getWindowProviderNamespace(namespace) !== 'undefined')
|
|
34
|
-
return true;
|
|
35
|
-
if (flag && typeof getExplicitInjectedProvider(flag) !== 'undefined')
|
|
36
|
-
return true;
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
/*
|
|
40
|
-
* Returns an injected provider that favors the flag match, but falls back to window.ethereum
|
|
41
|
-
*/
|
|
42
|
-
function getInjectedProvider({ flag, namespace }) {
|
|
43
|
-
var _a;
|
|
44
|
-
const _window = typeof window !== 'undefined' ? window : undefined;
|
|
45
|
-
if (typeof _window === 'undefined')
|
|
46
|
-
return;
|
|
47
|
-
if (namespace) {
|
|
48
|
-
// prefer custom eip1193 namespaces
|
|
49
|
-
const windowProvider = getWindowProviderNamespace(namespace);
|
|
50
|
-
if (windowProvider)
|
|
51
|
-
return windowProvider;
|
|
52
|
-
}
|
|
53
|
-
const providers = (_a = _window.ethereum) === null || _a === void 0 ? void 0 : _a.providers;
|
|
54
|
-
if (flag) {
|
|
55
|
-
const provider = getExplicitInjectedProvider(flag);
|
|
56
|
-
if (provider)
|
|
57
|
-
return provider;
|
|
58
|
-
}
|
|
59
|
-
if (typeof providers !== 'undefined' && providers.length > 0)
|
|
60
|
-
return providers[0];
|
|
61
|
-
return _window.ethereum;
|
|
62
|
-
}
|
|
63
|
-
function createInjectedConnector(provider) {
|
|
64
|
-
return (walletDetails) => {
|
|
65
|
-
// Create the injected configuration object conditionally based on the provider.
|
|
66
|
-
const injectedConfig = provider
|
|
67
|
-
? {
|
|
68
|
-
target: () => ({
|
|
69
|
-
id: walletDetails.paraDetails.id,
|
|
70
|
-
name: walletDetails.paraDetails.name,
|
|
71
|
-
provider,
|
|
72
|
-
}),
|
|
73
|
-
}
|
|
74
|
-
: {};
|
|
75
|
-
return createConnector(config => (Object.assign(Object.assign({}, injected(injectedConfig)(config)), walletDetails)));
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
export function getInjectedConnector({ flag, namespace, target, }) {
|
|
79
|
-
const provider = target ? target : getInjectedProvider({ flag, namespace });
|
|
80
|
-
return createInjectedConnector(provider);
|
|
81
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { createConnector } from 'wagmi';
|
|
2
|
-
import { walletConnect } from 'wagmi/connectors';
|
|
3
|
-
const walletConnectInstances = new Map();
|
|
4
|
-
// Function to get or create a walletConnect instance
|
|
5
|
-
const getOrCreateWalletConnectInstance = ({ projectId, walletConnectParameters, paraDetailsShowQrModal, }) => {
|
|
6
|
-
let config = Object.assign(Object.assign({}, (walletConnectParameters ? walletConnectParameters : {})), { projectId, showQrModal: false });
|
|
7
|
-
// `paraDetailsShowQrModal` should always be `true`
|
|
8
|
-
if (paraDetailsShowQrModal) {
|
|
9
|
-
config = Object.assign(Object.assign({}, config), { showQrModal: true });
|
|
10
|
-
}
|
|
11
|
-
const serializedConfig = JSON.stringify(config);
|
|
12
|
-
const sharedWalletConnector = walletConnectInstances.get(serializedConfig);
|
|
13
|
-
if (sharedWalletConnector) {
|
|
14
|
-
return sharedWalletConnector;
|
|
15
|
-
}
|
|
16
|
-
// Create a new walletConnect instance and store it
|
|
17
|
-
const newWalletConnectInstance = walletConnect(config);
|
|
18
|
-
walletConnectInstances.set(serializedConfig, newWalletConnectInstance);
|
|
19
|
-
return newWalletConnectInstance;
|
|
20
|
-
};
|
|
21
|
-
// Creates a WalletConnect connector with the given project ID and additional options.
|
|
22
|
-
function createWalletConnectConnector({ projectId, walletDetails, walletConnectParameters, }) {
|
|
23
|
-
// Create and configure the WalletConnect connector with project ID and options.
|
|
24
|
-
return createConnector(config => (Object.assign(Object.assign(Object.assign({}, getOrCreateWalletConnectInstance({
|
|
25
|
-
projectId,
|
|
26
|
-
walletConnectParameters,
|
|
27
|
-
// Used in `connectorsForWallets` to add another
|
|
28
|
-
// walletConnect wallet into Para with modal popup option
|
|
29
|
-
paraDetailsShowQrModal: walletDetails.paraDetails.showQrModal,
|
|
30
|
-
})(config)), walletDetails), { id: walletDetails.paraDetails.id })));
|
|
31
|
-
}
|
|
32
|
-
// Factory function to obtain a configured WalletConnect connector.
|
|
33
|
-
export function getWalletConnectConnector({ projectId, walletConnectParameters, }) {
|
|
34
|
-
if (!projectId || projectId === '') {
|
|
35
|
-
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');
|
|
36
|
-
}
|
|
37
|
-
// Return a function that merges additional wallet details with `CreateConnectorFn`.
|
|
38
|
-
return (walletDetails) => createWalletConnectConnector({
|
|
39
|
-
projectId,
|
|
40
|
-
walletDetails,
|
|
41
|
-
walletConnectParameters,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
export const getWalletConnectUri = (connector, uriConverter) => __awaiter(void 0, void 0, void 0, function* () {
|
|
11
|
-
const provider = yield connector.getProvider();
|
|
12
|
-
if (connector.type === 'coinbaseWallet') {
|
|
13
|
-
// @ts-expect-error
|
|
14
|
-
return provider.qrUrl;
|
|
15
|
-
}
|
|
16
|
-
return new Promise(resolve =>
|
|
17
|
-
// Wagmi v2 doesn't have a return type for provider yet
|
|
18
|
-
// @ts-expect-error
|
|
19
|
-
provider.once('display_uri', uri => {
|
|
20
|
-
resolve(uriConverter ? uriConverter(uri) : uri);
|
|
21
|
-
}));
|
|
22
|
-
});
|
package/dist/utils/uniqueBy.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { createConnector } from 'wagmi';
|
|
2
|
-
import { coinbaseWallet as coinbaseWagmiWallet } from 'wagmi/connectors';
|
|
3
|
-
import { icon } from './coinbaseIcon.js';
|
|
4
|
-
import { hasInjectedProvider } from '../../../utils/getInjectedConnector.js';
|
|
5
|
-
export const coinbaseWallet = ({ appName, appIcon }) => {
|
|
6
|
-
const isCoinbaseInjected = hasInjectedProvider({ flag: 'isCoinbaseWallet' });
|
|
7
|
-
const getUri = (uri) => uri;
|
|
8
|
-
return {
|
|
9
|
-
id: 'coinbase',
|
|
10
|
-
name: 'Coinbase Wallet',
|
|
11
|
-
rdns: 'com.coinbase.wallet',
|
|
12
|
-
iconUrl: icon,
|
|
13
|
-
// Note that we never resolve `installed` to `false` because the
|
|
14
|
-
// Coinbase Wallet SDK falls back to other connection methods if
|
|
15
|
-
// the injected connector isn't available
|
|
16
|
-
installed: isCoinbaseInjected,
|
|
17
|
-
isExtension: true,
|
|
18
|
-
isMobile: true,
|
|
19
|
-
downloadUrl: 'https://www.coinbase.com/wallet/downloads',
|
|
20
|
-
getUri,
|
|
21
|
-
createConnector: (walletDetails) => createConnector(config => (Object.assign(Object.assign({}, coinbaseWagmiWallet({
|
|
22
|
-
version: '4',
|
|
23
|
-
appName,
|
|
24
|
-
appLogoUrl: appIcon,
|
|
25
|
-
preference: 'eoaOnly',
|
|
26
|
-
})(config)), walletDetails))),
|
|
27
|
-
};
|
|
28
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDQyXzg1NCkiPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiAyNEMxOC42Mjc0IDI0IDI0IDE4LjYyNzQgMjQgMTJDMjQgNS4zNzI1OCAxOC42Mjc0IDAgMTIgMEM1LjM3MjU4IDAgMCA1LjM3MjU4IDAgMTJDMCAxOC42Mjc0IDUuMzcyNTggMjQgMTIgMjRaTTguODMxNzUgOC4wODE2MkM4LjQxNzU0IDguMDgxNjIgOC4wODE3NSA4LjQxNzQxIDguMDgxNzUgOC44MzE2MlYxNS4xNjg0QzguMDgxNzUgMTUuNTgyNiA4LjQxNzU0IDE1LjkxODQgOC44MzE3NSAxNS45MTg0SDE1LjE2ODVDMTUuNTgyNyAxNS45MTg0IDE1LjkxODUgMTUuNTgyNiAxNS45MTg1IDE1LjE2ODRWOC44MzE2MkMxNS45MTg1IDguNDE3NDEgMTUuNTgyNyA4LjA4MTYyIDE1LjE2ODUgOC4wODE2Mkg4LjgzMTc1WiIgZmlsbD0iIzJDNUZGNiIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfNDQyXzg1NCI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=';
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { metaMaskWallet } from './metaMask/metaMask.js';
|
|
2
|
-
import { rainbowWallet } from './rainbow/rainbow.js';
|
|
3
|
-
import { walletConnectWallet } from './walletConnect/walletConnect.js';
|
|
4
|
-
import { coinbaseWallet } from './coinbase/coinbase.js';
|
|
5
|
-
import { zerionWallet } from './zerion/zerion.js';
|
|
6
|
-
import { rabbyWallet } from './rabby/rabby.js';
|
|
7
|
-
export { metaMaskWallet, rainbowWallet, walletConnectWallet, coinbaseWallet, zerionWallet, rabbyWallet };
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { isAndroid, isIOS, isTelegram } from '@getpara/react-sdk';
|
|
2
|
-
import { getInjectedConnector, hasInjectedProvider } from '../../../utils/getInjectedConnector.js';
|
|
3
|
-
import { getWalletConnectConnector } from '../../../utils/getWalletConnectConnector.js';
|
|
4
|
-
import { icon } from './metaMaskIcon.js';
|
|
5
|
-
function isMetaMask(ethereum) {
|
|
6
|
-
// Logic borrowed from wagmi's MetaMaskConnector
|
|
7
|
-
// https://github.com/wagmi-dev/references/blob/main/packages/connectors/src/metaMask.ts
|
|
8
|
-
if (!(ethereum === null || ethereum === void 0 ? void 0 : ethereum.isMetaMask))
|
|
9
|
-
return false;
|
|
10
|
-
// Brave tries to make itself look like MetaMask
|
|
11
|
-
// Could also try RPC `web3_clientVersion` if following is unreliable
|
|
12
|
-
if (ethereum.isBraveWallet && !ethereum._events && !ethereum._state)
|
|
13
|
-
return false;
|
|
14
|
-
if (ethereum.isApexWallet)
|
|
15
|
-
return false;
|
|
16
|
-
if (ethereum.isAvalanche)
|
|
17
|
-
return false;
|
|
18
|
-
if (ethereum.isBackpack)
|
|
19
|
-
return false;
|
|
20
|
-
if (ethereum.isBifrost)
|
|
21
|
-
return false;
|
|
22
|
-
if (ethereum.isBitKeep)
|
|
23
|
-
return false;
|
|
24
|
-
if (ethereum.isBitski)
|
|
25
|
-
return false;
|
|
26
|
-
if (ethereum.isBlockWallet)
|
|
27
|
-
return false;
|
|
28
|
-
if (ethereum.isCoinbaseWallet)
|
|
29
|
-
return false;
|
|
30
|
-
if (ethereum.isDawn)
|
|
31
|
-
return false;
|
|
32
|
-
if (ethereum.isEnkrypt)
|
|
33
|
-
return false;
|
|
34
|
-
if (ethereum.isExodus)
|
|
35
|
-
return false;
|
|
36
|
-
if (ethereum.isFrame)
|
|
37
|
-
return false;
|
|
38
|
-
if (ethereum.isFrontier)
|
|
39
|
-
return false;
|
|
40
|
-
if (ethereum.isGamestop)
|
|
41
|
-
return false;
|
|
42
|
-
if (ethereum.isHyperPay)
|
|
43
|
-
return false;
|
|
44
|
-
if (ethereum.isImToken)
|
|
45
|
-
return false;
|
|
46
|
-
if (ethereum.isKuCoinWallet)
|
|
47
|
-
return false;
|
|
48
|
-
if (ethereum.isMathWallet)
|
|
49
|
-
return false;
|
|
50
|
-
if (ethereum.isNestWallet)
|
|
51
|
-
return false;
|
|
52
|
-
if (ethereum.isOkxWallet || ethereum.isOKExWallet)
|
|
53
|
-
return false;
|
|
54
|
-
if (ethereum.isOneInchIOSWallet || ethereum.isOneInchAndroidWallet)
|
|
55
|
-
return false;
|
|
56
|
-
if (ethereum.isOpera)
|
|
57
|
-
return false;
|
|
58
|
-
if (ethereum.isPhantom)
|
|
59
|
-
return false;
|
|
60
|
-
if (ethereum.isPortal)
|
|
61
|
-
return false;
|
|
62
|
-
if (ethereum.isRabby)
|
|
63
|
-
return false;
|
|
64
|
-
if (ethereum.isRainbow)
|
|
65
|
-
return false;
|
|
66
|
-
if (ethereum.isStatus)
|
|
67
|
-
return false;
|
|
68
|
-
if (ethereum.isTalisman)
|
|
69
|
-
return false;
|
|
70
|
-
if (ethereum.isTally)
|
|
71
|
-
return false;
|
|
72
|
-
if (ethereum.isTokenPocket)
|
|
73
|
-
return false;
|
|
74
|
-
if (ethereum.isTokenary)
|
|
75
|
-
return false;
|
|
76
|
-
if (ethereum.isTrust || ethereum.isTrustWallet)
|
|
77
|
-
return false;
|
|
78
|
-
if (ethereum.isXDEFI)
|
|
79
|
-
return false;
|
|
80
|
-
if (ethereum.isZeal)
|
|
81
|
-
return false;
|
|
82
|
-
if (ethereum.isZerion)
|
|
83
|
-
return false;
|
|
84
|
-
if (ethereum.__seif)
|
|
85
|
-
return false;
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
export const metaMaskWallet = ({ projectId, walletConnectParameters }) => {
|
|
89
|
-
var _a, _b, _c;
|
|
90
|
-
const isMetaMaskInjected = hasInjectedProvider({ flag: 'isMetaMask' });
|
|
91
|
-
const getUri = (uri) => {
|
|
92
|
-
return isAndroid()
|
|
93
|
-
? `metamask://wc?uri=${encodeURIComponent(uri)}`
|
|
94
|
-
: isIOS()
|
|
95
|
-
? !isTelegram()
|
|
96
|
-
? // currently broken in MetaMask v6.5.0 https://github.com/MetaMask/metamask-mobile/issues/6457
|
|
97
|
-
`metamask://wc?uri=${encodeURIComponent(uri)}`
|
|
98
|
-
: `https://metamask.app.link/wc?uri=${encodeURIComponent(uri)}`
|
|
99
|
-
: `https://metamask.app.link/wc?uri=${encodeURIComponent(uri)}`;
|
|
100
|
-
};
|
|
101
|
-
return {
|
|
102
|
-
id: 'metaMask',
|
|
103
|
-
name: 'MetaMask',
|
|
104
|
-
rdns: 'io.metamask',
|
|
105
|
-
iconUrl: icon,
|
|
106
|
-
installed: isMetaMaskInjected,
|
|
107
|
-
isExtension: true,
|
|
108
|
-
isMobile: true,
|
|
109
|
-
downloadUrl: 'https://metamask.io/download/',
|
|
110
|
-
getUri,
|
|
111
|
-
createConnector: isMetaMaskInjected
|
|
112
|
-
? getInjectedConnector({
|
|
113
|
-
target: typeof window !== 'undefined'
|
|
114
|
-
? ((_c = (_b = (_a = window.ethereum) === null || _a === void 0 ? void 0 : _a.providers) === null || _b === void 0 ? void 0 : _b.find(isMetaMask)) !== null && _c !== void 0 ? _c : window.ethereum)
|
|
115
|
-
: undefined,
|
|
116
|
-
})
|
|
117
|
-
: getWalletConnectConnector({
|
|
118
|
-
projectId,
|
|
119
|
-
walletConnectParameters,
|
|
120
|
-
}),
|
|
121
|
-
};
|
|
122
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMyIgdmlld0JveD0iMCAwIDI0IDIzIiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMjIuODA0OSAwTDEzLjQ0MDIgNi45NTUyOUwxNS4xNzE5IDIuODUxNzdMMjIuODA0OSAwWiIgZmlsbD0iI0UyNzYxQiIvPgogIDxwYXRoIGQ9Ik0xLjE4NTk5IDBMMTAuNDc1NCA3LjAyMTE4TDguODI4MzQgMi44NTE3N0wxLjE4NTk5IDBaTTE5LjQzNTQgMTYuMTIyNEwxNi45NDEzIDE5Ljk0MzVMMjIuMjc3OCAyMS40MTE4TDIzLjgxMTkgMTYuMjA3MUwxOS40MzU0IDE2LjEyMjRaTTAuMTk3NzU0IDE2LjIwNzFMMS43MjI0NiAyMS40MTE4TDcuMDU4OTMgMTkuOTQzNUw0LjU2NDgxIDE2LjEyMjRMMC4xOTc3NTQgMTYuMjA3MVoiIGZpbGw9IiNFNDc2MUIiLz4KICA8cGF0aCBkPSJNNi43NTgwNSA5LjY2NTg2TDUuMjcxIDExLjkxNTNMMTAuNTY5OCAxMi4xNTA2TDEwLjM4MTYgNi40NTY0NUw2Ljc1ODA1IDkuNjY1ODZaTTE3LjIzMzMgOS42NjU4NkwxMy41NjI4IDYuMzkwNTZMMTMuNDQwNCAxMi4xNTA2TDE4LjcyOTggMTEuOTE1M0wxNy4yMzMzIDkuNjY1ODZaTTcuMDU5MjMgMTkuOTQzNUwxMC4yNDA0IDE4LjM5MDZMNy40OTIxNyAxNi4yNDQ3TDcuMDU5MjMgMTkuOTQzNVpNMTMuNzUxIDE4LjM5MDZMMTYuOTQxNiAxOS45NDM1TDE2LjQ5OTIgMTYuMjQ0N0wxMy43NTEgMTguMzkwNloiIGZpbGw9IiNFNDc2MUIiLz4KICA8cGF0aCBkPSJNMTYuOTQxMiAxOS45NDM1TDEzLjc1MDYgMTguMzkwNkwxNC4wMDQ3IDIwLjQ3MDZMMTMuOTc2NSAyMS4zNDU5TDE2Ljk0MTIgMTkuOTQzNVpNNy4wNTg4NCAxOS45NDM1TDEwLjAyMzUgMjEuMzQ1OUwxMC4wMDQ3IDIwLjQ3MDZMMTAuMjQgMTguMzkwNkw3LjA1ODg0IDE5Ljk0MzVaIiBmaWxsPSIjRDdDMUIzIi8+CiAgPHBhdGggZD0iTTEwLjA3MDYgMTQuODcwNkw3LjQxNjUgMTQuMDg5NEw5LjI4OTQ1IDEzLjIzMjlMMTAuMDcwNiAxNC44NzA2Wk0xMy45MiAxNC44NzA2TDE0LjcwMTIgMTMuMjMyOUwxNi41ODM2IDE0LjA4OTRMMTMuOTIgMTQuODcwNloiIGZpbGw9IiMyMzM0NDciLz4KICA8cGF0aCBkPSJNNy4wNTg4MiAxOS45NDM1TDcuNTEwNTggMTYuMTIyM0w0LjU2NDcgMTYuMjA3TDcuMDU4ODIgMTkuOTQzNVpNMTYuNDg5NCAxNi4xMjIzTDE2Ljk0MTIgMTkuOTQzNUwxOS40MzUzIDE2LjIwN0wxNi40ODk0IDE2LjEyMjNaTTE4LjcyOTQgMTEuOTE1M0wxMy40NCAxMi4xNTA2TDEzLjkyOTQgMTQuODcwNkwxNC43MTA2IDEzLjIzMjlMMTYuNTkyOSAxNC4wODk0TDE4LjcyOTQgMTEuOTE1M1pNNy40MTY0NiAxNC4wODk0TDkuMjk4ODIgMTMuMjMyOUwxMC4wNzA2IDE0Ljg3MDZMMTAuNTY5NCAxMi4xNTA2TDUuMjcwNTggMTEuOTE1M0w3LjQxNjQ2IDE0LjA4OTRaIiBmaWxsPSIjQ0Q2MTE2Ii8+CiAgPHBhdGggZD0iTTUuMjcxIDExLjkxNTNMNy40OTIxNyAxNi4yNDQ3TDcuNDE2ODggMTQuMDg5NEw1LjI3MSAxMS45MTUzWk0xNi41OTMzIDE0LjA4OTRMMTYuNDk5MiAxNi4yNDQ3TDE4LjcyOTggMTEuOTE1M0wxNi41OTMzIDE0LjA4OTRaTTEwLjU2OTggMTIuMTUwNkwxMC4wNzEgMTQuODcwNkwxMC42OTIyIDE4LjA4TDEwLjgzMzMgMTMuODU0MUwxMC41Njk4IDEyLjE1MDZaTTEzLjQ0MDQgMTIuMTUwNkwxMy4xODYzIDEzLjg0NDdMMTMuMjk5MiAxOC4wOEwxMy45Mjk4IDE0Ljg3MDZMMTMuNDQwNCAxMi4xNTA2WiIgZmlsbD0iI0U0NzUxRiIvPgogIDxwYXRoIGQ9Ik0xMy45Mjk0IDE0Ljg3MDVMMTMuMjk4OSAxOC4wNzk5TDEzLjc1MDYgMTguMzkwNUwxNi40OTg5IDE2LjI0NDdMMTYuNTkzIDE0LjA4OTRMMTMuOTI5NCAxNC44NzA1Wk03LjQxNjUgMTQuMDg5NEw3LjQ5MTggMTYuMjQ0N0wxMC4yNCAxOC4zOTA1TDEwLjY5MTggMTguMDc5OUwxMC4wNzA2IDE0Ljg3MDVMNy40MTY1IDE0LjA4OTRaIiBmaWxsPSIjRjY4NTFCIi8+CiAgPHBhdGggZD0iTTEzLjk3NjUgMjEuMzQ1OUwxNC4wMDQ3IDIwLjQ3MDZMMTMuNzY5NCAyMC4yNjM1SDEwLjIyMTJMMTAuMDA0NyAyMC40NzA2TDEwLjAyMzUgMjEuMzQ1OUw3LjA1ODg0IDE5Ljk0MzVMOC4wOTQxMyAyMC43OTA2TDEwLjE5MyAyMi4yNDk0SDEzLjc5NzdMMTUuOTA1OSAyMC43OTA2TDE2Ljk0MTIgMTkuOTQzNUwxMy45NzY1IDIxLjM0NTlaIiBmaWxsPSIjQzBBRDlFIi8+CiAgPHBhdGggZD0iTTEzLjc1MDggMTguMzkwNkwxMy4yOTkgMTguMDhIMTAuNjkxOUwxMC4yNDAyIDE4LjM5MDZMMTAuMDA0OSAyMC40NzA2TDEwLjIyMTQgMjAuMjYzNUgxMy43Njk2TDE0LjAwNDkgMjAuNDcwNkwxMy43NTA4IDE4LjM5MDZaIiBmaWxsPSIjMTYxNjE2Ii8+CiAgPHBhdGggZD0iTTIzLjIgNy40MDcwNkwyNCAzLjU2NzA2TDIyLjgwNDcgMEwxMy43NTA2IDYuNzJMMTcuMjMyOSA5LjY2NTg4TDIyLjE1NTMgMTEuMTA1OUwyMy4yNDcxIDkuODM1MjlMMjIuNzc2NSA5LjQ5NjQ3TDIzLjUyOTQgOC44MDk0MUwyMi45NDU5IDguMzU3NjVMMjMuNjk4OCA3Ljc4MzUzTDIzLjIgNy40MDcwNlpNMCAzLjU2NzA2TDAuOCA3LjQwNzA2TDAuMjkxNzY1IDcuNzgzNTNMMS4wNDQ3MSA4LjM1NzY1TDAuNDcwNTg4IDguODA5NDFMMS4yMjM1MyA5LjQ5NjQ3TDAuNzUyOTQxIDkuODM1MjlMMS44MzUyOSAxMS4xMDU5TDYuNzU3NjUgOS42NjU4OEwxMC4yNCA2LjcyTDEuMTg1ODggMEwwIDMuNTY3MDZaIiBmaWxsPSIjNzYzRDE2Ii8+CiAgPHBhdGggZD0iTTIyLjE1NTQgMTEuMTA1OUwxNy4yMzMgOS42NjU5MkwxOC43Mjk1IDExLjkxNTNMMTYuNDk4OSAxNi4yNDQ3TDE5LjQzNTQgMTYuMjA3MUgyMy44MTE5TDIyLjE1NTQgMTEuMTA1OVpNNi43NTc3NSA5LjY2NTkyTDEuODM1NCAxMS4xMDU5TDAuMTk3NzU0IDE2LjIwNzFINC41NjQ4MUw3LjQ5MTg3IDE2LjI0NDdMNS4yNzA3IDExLjkxNTNMNi43NTc3NSA5LjY2NTkyWk0xMy40NDAxIDEyLjE1MDZMMTMuNzUwNyA2LjcyMDA0TDE1LjE4MTMgMi44NTE4MUg4LjgyODM0TDEwLjI0MDEgNi43MjAwNEwxMC41Njk1IDEyLjE1MDZMMTAuNjgyNSAxMy44NjM2TDEwLjY5MTkgMTguMDhIMTMuMjk4OUwxMy4zMTc4IDEzLjg2MzZMMTMuNDQwMSAxMi4xNTA2WiIgZmlsbD0iI0Y2ODUxQiIvPgo8L3N2Zz4=';
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { getInjectedConnector, hasInjectedProvider } from '../../../utils/getInjectedConnector.js';
|
|
2
|
-
import { getWalletConnectConnector } from '../../../utils/getWalletConnectConnector.js';
|
|
3
|
-
import { icon } from './rabbyIcon.js';
|
|
4
|
-
export const rabbyWallet = ({ projectId, walletConnectParameters }) => {
|
|
5
|
-
const isRabbyInjected = hasInjectedProvider({ flag: 'isRabby' });
|
|
6
|
-
return {
|
|
7
|
-
id: 'rabby',
|
|
8
|
-
name: 'Rabby Wallet',
|
|
9
|
-
rdns: 'io.rabby',
|
|
10
|
-
iconUrl: icon,
|
|
11
|
-
installed: isRabbyInjected,
|
|
12
|
-
isExtension: true,
|
|
13
|
-
isMobile: false,
|
|
14
|
-
downloadUrl: 'https://rabby.io',
|
|
15
|
-
createConnector: isRabbyInjected
|
|
16
|
-
? getInjectedConnector({ flag: 'isRabby' })
|
|
17
|
-
: getWalletConnectConnector({
|
|
18
|
-
projectId,
|
|
19
|
-
walletConnectParameters,
|
|
20
|
-
}),
|
|
21
|
-
};
|
|
22
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjODY5N0ZGIiBkPSJNMjggMEgwdjI4aDI4VjBaIi8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTIyLjU0IDE1LjA3OGMuNjc3LTEuNTE0LTIuNjczLTUuNzQ0LTUuODc0LTcuNTA2LTIuMDE3LTEuMzY1LTQuMTItMS4xNzgtNC41NDUtLjU3OS0uOTM1IDEuMzE2IDMuMDk0IDIuNDMgNS43ODggMy43MzEtLjU4LjI1Mi0xLjEyNS43MDMtMS40NDYgMS4yOC0xLjAwNC0xLjA5Ni0zLjIwOS0yLjA0LTUuNzk2LTEuMjgtMS43NDMuNTEzLTMuMTkxIDEuNzIxLTMuNzUxIDMuNTQ2YTEuMDk3IDEuMDk3IDAgMSAwLS40NDUgMi4xYy4xMTIgMCAuNDYzLS4wNzUuNDYzLS4wNzVsNS42MTIuMDQxYy0yLjI0NCAzLjU2LTQuMDE4IDQuMDgxLTQuMDE4IDQuNjk4czEuNjk3LjQ1IDIuMzM1LjIyYzMuMDUtMS4xIDYuMzI3LTQuNTMxIDYuODktNS41MTkgMi4zNi4yOTUgNC4zNDUuMzMgNC43ODYtLjY1N1oiLz48cGF0aCBmaWxsPSJ1cmwoI2MpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0xNy44ODUgMTAuNzEzLjAyNS4wMWMuMTI1LS4wNDkuMTA1LS4yMzMuMDctLjM3OC0uMDc4LS4zMzMtMS40MzgtMS42NzYtMi43MTUtMi4yNzctMS43NDMtLjgyLTMuMDI1LS43NzctMy4yMTItLjM5OC4zNTYuNzI2IDEuOTk4IDEuNDA4IDMuNzE0IDIuMTIuNzIzLjMgMS40Ni42MDYgMi4xMTguOTIzWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0idXJsKCNkKSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNzAxIDE4LjAzNmExMC4yOTYgMTAuMjk2IDAgMCAwLTEuMi0uMzdjLjQ4Mi0uODYyLjU4My0yLjEzOC4xMjgtMi45NDUtLjYzOS0xLjEzMy0xLjQ0LTEuNzM2LTMuMzA0LTEuNzM2LTEuMDI0IDAtMy43ODMuMzQ2LTMuODMyIDIuNjQ4LS4wMDUuMjQyIDAgLjQ2NC4wMTcuNjY3bDUuMDM2LjAzN2ExNy4yNjQgMTcuMjY0IDAgMCAxLTEuODcxIDIuNDgzYy42NjkuMTcyIDEuMjIxLjMxNiAxLjcyOC40NDguNDguMTI1LjkyLjI0IDEuMzguMzU3YTIxLjAwMyAyMS4wMDMgMCAwIDAgMS45MTgtMS41OVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9InVybCgjZSkiIGQ9Ik02Ljg0OCAxNi4wNjNjLjIwNiAxLjc1IDEuMiAyLjQzNSAzLjIzMiAyLjYzOCAyLjAzMi4yMDMgMy4xOTcuMDY3IDQuNzQ5LjIwOCAxLjI5Ni4xMTggMi40NTMuNzc4IDIuODgyLjU1LjM4Ni0uMjA1LjE3LS45NDctLjM0Ny0xLjQyMy0uNjctLjYxNy0xLjU5Ny0xLjA0Ni0zLjIyOS0xLjE5OS4zMjUtLjg5LjIzNC0yLjEzOC0uMjctMi44MTctLjczMS0uOTgyLTIuMDc5LTEuNDI2LTMuNzg1LTEuMjMyLTEuNzgyLjIwMi0zLjQ5IDEuMDgtMy4yMzIgMy4yNzVaIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjEwLjQ2NCIgeDI9IjIyLjM5NCIgeTE9IjEzLjczNyIgeTI9IjE3LjEyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI2ZmZiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iMjAuMzg2IiB4Mj0iMTEuNzc5IiB5MT0iMTMuNTA5IiB5Mj0iNC44NzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzI1OERDIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzk3REVBIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCIgeDE9IjE1Ljk0IiB4Mj0iNy42NzMiIHkxPSIxOC4zMzciIHkyPSIxMy41ODQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzQ2MUVBIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkZDMkZGIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZSIgeDE9IjExLjE3NyIgeDI9IjE2Ljc2NSIgeTE9IjEzLjY0OCIgeTI9IjIwLjc0OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9Ii45ODQiIHN0b3AtY29sb3I9IiNENUNFRkYiLz48L2xpbmVhckdyYWRpZW50PjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgyOHYyOEgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==';
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { isAndroid, isIOS, isTelegram } from '@getpara/react-sdk';
|
|
2
|
-
import { getInjectedConnector, hasInjectedProvider } from '../../../utils/getInjectedConnector.js';
|
|
3
|
-
import { getWalletConnectConnector } from '../../../utils/getWalletConnectConnector.js';
|
|
4
|
-
import { icon } from './rainbowIcon.js';
|
|
5
|
-
export const rainbowWallet = ({ projectId, walletConnectParameters }) => {
|
|
6
|
-
const isRainbowInjected = hasInjectedProvider({ flag: 'isRainbow' });
|
|
7
|
-
const getUri = (uri) => {
|
|
8
|
-
return isAndroid()
|
|
9
|
-
? `rainbow://wc?uri=${encodeURIComponent(uri)}`
|
|
10
|
-
: isIOS()
|
|
11
|
-
? !isTelegram()
|
|
12
|
-
? `rainbow://wc?uri=${encodeURIComponent(uri)}`
|
|
13
|
-
: `https://rnbwapp.com/wc?uri=${encodeURIComponent(uri)}`
|
|
14
|
-
: `https://rnbwapp.com/wc?uri=${encodeURIComponent(uri)}`;
|
|
15
|
-
};
|
|
16
|
-
return {
|
|
17
|
-
id: 'rainbow',
|
|
18
|
-
name: 'Rainbow',
|
|
19
|
-
rdns: 'me.rainbow',
|
|
20
|
-
iconUrl: icon,
|
|
21
|
-
installed: isRainbowInjected,
|
|
22
|
-
isExtension: true,
|
|
23
|
-
isMobile: true,
|
|
24
|
-
downloadUrl: 'https://rainbow.me/',
|
|
25
|
-
getUri,
|
|
26
|
-
createConnector: isRainbowInjected
|
|
27
|
-
? getInjectedConnector({ flag: 'isRainbow' })
|
|
28
|
-
: getWalletConnectConnector({
|
|
29
|
-
projectId,
|
|
30
|
-
walletConnectParameters,
|
|
31
|
-
}),
|
|
32
|
-
};
|
|
33
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMCA1LjRIMS44QzExLjA3ODQgNS40IDE4LjYgMTIuOTIxNiAxOC42IDIyLjJWMjRIMjIuMkMyMy4xOTQxIDI0IDI0IDIzLjE5NDEgMjQgMjIuMkMyNCA5LjkzOTI3IDE0LjA2MDcgMCAxLjggMEMwLjgwNTg4NyAwIDAgMC44MDU4ODcgMCAxLjhWNS40WiIgZmlsbD0idXJsKCNwYWludDBfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTE5LjIgMjIuMkgyMy45OTk5QzIzLjk5OTkgMjMuMTk0MSAyMy4xOTQxIDI0IDIyLjE5OTkgMjRIMTkuMlYyMi4yWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAwTDEuOCA0LjhIMEwxLjMxMTM0ZS0wNyAxLjhDMS43NDU4OGUtMDcgMC44MDU4ODcgMC44MDU4ODcgLTQuMzQ1NGUtMDggMS44IDBaIiBmaWxsPSJ1cmwoI3BhaW50Ml9saW5lYXJfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMCA0Ljc5OTk5SDEuOEMxMS40MDk3IDQuNzk5OTkgMTkuMiAxMi41OTAyIDE5LjIgMjIuMlYyNEgxMy44VjIyLjJDMTMuOCAxNS41NzI2IDguNDI3NDEgMTAuMiAxLjggMTAuMkgwVjQuNzk5OTlaIiBmaWxsPSJ1cmwoI3BhaW50M19yYWRpYWxfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMTQuMzk5OSAyMi4ySDE5LjE5OTlWMjRIMTQuMzk5OVYyMi4yWiIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTIuMDk4MTVlLTA3IDkuNTk5OTlMMCA0Ljc5OTk5TDEuOCA0Ljc5OTk5TDEuOCA5LjU5OTk5SDIuMDk4MTVlLTA3WiIgZmlsbD0idXJsKCNwYWludDVfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTAgMTIuNkMwIDEzLjU5NDEgMC44MDU4ODcgMTQuNCAxLjggMTQuNEM2LjEwNzgyIDE0LjQgOS42IDE3Ljg5MjEgOS42IDIyLjJDOS42IDIzLjE5NDEgMTAuNDA1OSAyNCAxMS40IDI0SDE0LjRWMjIuMkMxNC40IDE1LjI0MTIgOC43NTg3OCA5LjU5OTk4IDEuOCA5LjU5OTk4SDBWMTIuNloiIGZpbGw9InVybCgjcGFpbnQ2X3JhZGlhbF80NDJfODI3KSIvPgogIDxwYXRoIGQ9Ik05LjYwMDEgMjIuMkgxNC40MDAxVjI0SDExLjQwMDFDMTAuNDA2IDI0IDkuNjAwMSAyMy4xOTQxIDkuNjAwMSAyMi4yWiIgZmlsbD0idXJsKCNwYWludDdfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAxNC40QzAuODA1ODg3IDE0LjQgMS43NDU4OGUtMDcgMTMuNTk0MSAxLjMxMTM0ZS0wNyAxMi42TDAgOS41OTk5OEwxLjggOS41OTk5OEwxLjggMTQuNFoiIGZpbGw9InVybCgjcGFpbnQ4X3JhZGlhbF80NDJfODI3KSIvPgogIDxkZWZzPgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDIyLjIpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjc3MDI3NyIgc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDQyXzgyNyIgeDE9IjE4LjkiIHkxPSIyMy4xIiB4Mj0iMjMuOTk5OSIgeTI9IjIzLjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfNDQyXzgyNyIgeDE9IjAuOSIgeTE9Ii0zLjkzMzllLTA3IiB4Mj0iMC44OTk5OTgiIHkyPSI1LjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzg3NTRDOSIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjQwMDAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDQyXzgyNyIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjggMjIuMikgcm90YXRlKC05MCkgc2NhbGUoMTcuNCkiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAuNzIzOTI5IiBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ0X2xpbmVhcl80NDJfODI3IiB4MT0iMTQuMzk5OSIgeTE9IjIzLjEiIHgyPSIxOS4xOTk5IiB5Mj0iMjMuMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ1X2xpbmVhcl80NDJfODI3IiB4MT0iMC45MDAwMDEiIHkxPSI5LjU5OTk5IiB4Mj0iMC44OTk5OTkiIHkyPSI0Ljc5OTk5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRkY3MDAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY5OTAxIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDZfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDEyLjYpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjU5NTEzIiBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ3X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzAwMSAyMy4xKSBzY2FsZSg1LjEgMTMuNikiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ4X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAuODk5OTk5IDE0LjcpIHJvdGF0ZSgtOTApIHNjYWxlKDUuMSA5Ni43MTEpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwQUFGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMURBNDAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgPC9kZWZzPgo8L3N2Zz4=';
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { getWalletConnectConnector } from '../../../utils/getWalletConnectConnector.js';
|
|
2
|
-
import { icon } from './walletConnectIcon.js';
|
|
3
|
-
export const walletConnectWallet = ({ projectId, options }) => {
|
|
4
|
-
const getUri = (uri) => uri;
|
|
5
|
-
return {
|
|
6
|
-
id: 'walletConnect',
|
|
7
|
-
name: 'WalletConnect',
|
|
8
|
-
installed: undefined,
|
|
9
|
-
iconUrl: icon,
|
|
10
|
-
isMobile: true,
|
|
11
|
-
getUri,
|
|
12
|
-
createConnector: getWalletConnectConnector({
|
|
13
|
-
projectId,
|
|
14
|
-
walletConnectParameters: options,
|
|
15
|
-
}),
|
|
16
|
-
};
|
|
17
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNNC45MTMzIDYuOTM1NDFDOC44MjcxOCAzLjAyMTUzIDE1LjE3MjggMy4wMjE1MyAxOS4wODY3IDYuOTM1NDFMMTkuNTU3OCA3LjQwNjQ2QzE5Ljc1MzUgNy42MDIxNSAxOS43NTM1IDcuOTE5NDMgMTkuNTU3OCA4LjExNTEzTDE3Ljk0NjQgOS43MjY0N0MxNy44NDg2IDkuODI0MzIgMTcuNjg5OSA5LjgyNDMyIDE3LjU5MjEgOS43MjY0N0wxNi45NDM5IDkuMDc4MjZDMTQuMjEzNSA2LjM0Nzg0IDkuNzg2NTcgNi4zNDc4NCA3LjA1NjE0IDkuMDc4MjZMNi4zNjE5NiA5Ljc3MjQ0QzYuMjY0MTIgOS44NzAyOCA2LjEwNTQ4IDkuODcwMjggNi4wMDc2MyA5Ljc3MjQ0TDQuMzk2MjkgOC4xNjExQzQuMjAwNTkgNy45NjU0IDQuMjAwNTkgNy42NDgxMiA0LjM5NjI5IDcuNDUyNDNMNC45MTMzIDYuOTM1NDFaTTIyLjQxOTEgMTAuMjY3OEwyMy44NTMyIDExLjcwMTlDMjQuMDQ4OSAxMS44OTc2IDI0LjA0ODkgMTIuMjE0OSAyMy44NTMyIDEyLjQxMDZMMTcuMzg2OCAxOC44NzcyQzE3LjE5MTEgMTkuMDcyOCAxNi44NzM4IDE5LjA3MjkgMTYuNjc4MSAxOC44NzcyQzE2LjY3ODEgMTguODc3MiAxNi42NzgxIDE4Ljg3NzIgMTYuNjc4MSAxOC44NzcyTDEyLjA4ODYgMTQuMjg3N0MxMi4wMzk3IDE0LjIzODcgMTEuOTYwNCAxNC4yMzg3IDExLjkxMTUgMTQuMjg3N0MxMS45MTE1IDE0LjI4NzcgMTEuOTExNSAxNC4yODc3IDExLjkxMTUgMTQuMjg3N0w3LjMyMjA3IDE4Ljg3NzJDNy4xMjYzOCAxOS4wNzI4IDYuODA5MDkgMTkuMDcyOSA2LjYxMzQgMTguODc3MkM2LjYxMzQgMTguODc3MiA2LjYxMzM5IDE4Ljg3NzIgNi42MTMzOSAxOC44NzcyTDAuMTQ2NzcxIDEyLjQxMDVDLTAuMDQ4OTIzNiAxMi4yMTQ4IC0wLjA0ODkyMzYgMTEuODk3NSAwLjE0Njc3MSAxMS43MDE5TDEuNTgwODcgMTAuMjY3OEMxLjc3NjU2IDEwLjA3MjEgMi4wOTM4NSAxMC4wNzIxIDIuMjg5NTQgMTAuMjY3OEw2Ljg3OTEgMTQuODU3M0M2LjkyODAyIDE0LjkwNjIgNy4wMDczNCAxNC45MDYyIDcuMDU2MjYgMTQuODU3M0M3LjA1NjI2IDE0Ljg1NzMgNy4wNTYyNiAxNC44NTczIDcuMDU2MjcgMTQuODU3M0wxMS42NDU2IDEwLjI2NzhDMTEuODQxMyAxMC4wNzIxIDEyLjE1ODYgMTAuMDcyIDEyLjM1NDMgMTAuMjY3N0MxMi4zNTQzIDEwLjI2NzcgMTIuMzU0MyAxMC4yNjc3IDEyLjM1NDMgMTAuMjY3N0wxNi45NDM4IDE0Ljg1NzNDMTYuOTkyNyAxNC45MDYyIDE3LjA3MjEgMTQuOTA2MiAxNy4xMjEgMTQuODU3M0wyMS43MTA1IDEwLjI2NzhDMjEuOTA2MiAxMC4wNzIxIDIyLjIyMzQgMTAuMDcyMSAyMi40MTkxIDEwLjI2NzhaIiBmaWxsPSIjM0I5OUZDIi8+Cjwvc3ZnPg==';
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { isIOS, isTelegram } from '@getpara/react-sdk';
|
|
2
|
-
import { getInjectedConnector, hasInjectedProvider } from '../../../utils/getInjectedConnector.js';
|
|
3
|
-
import { getWalletConnectConnector } from '../../../utils/getWalletConnectConnector.js';
|
|
4
|
-
import { icon } from './zerionIcon.js';
|
|
5
|
-
export const zerionWallet = ({ projectId, walletConnectParameters }) => {
|
|
6
|
-
const isZerionInjected = hasInjectedProvider({
|
|
7
|
-
namespace: 'zerionWallet',
|
|
8
|
-
flag: 'isZerion',
|
|
9
|
-
});
|
|
10
|
-
const getUri = (uri) => {
|
|
11
|
-
return isTelegram() && isIOS()
|
|
12
|
-
? `https://app.zerion.io/wc?uri=${encodeURIComponent(uri)}`
|
|
13
|
-
: `zerion://wc?uri=${encodeURIComponent(uri)}`;
|
|
14
|
-
};
|
|
15
|
-
return {
|
|
16
|
-
id: 'zerion',
|
|
17
|
-
name: 'Zerion',
|
|
18
|
-
rdns: 'io.zerion.wallet',
|
|
19
|
-
iconUrl: icon,
|
|
20
|
-
installed: isZerionInjected,
|
|
21
|
-
isExtension: true,
|
|
22
|
-
isMobile: true,
|
|
23
|
-
getUri,
|
|
24
|
-
downloadUrl: 'https://zerion.io/download',
|
|
25
|
-
createConnector: isZerionInjected
|
|
26
|
-
? getInjectedConnector({
|
|
27
|
-
namespace: 'zerionWallet',
|
|
28
|
-
flag: 'isZerion',
|
|
29
|
-
})
|
|
30
|
-
: getWalletConnectConnector({
|
|
31
|
-
projectId,
|
|
32
|
-
walletConnectParameters,
|
|
33
|
-
}),
|
|
34
|
-
};
|
|
35
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PHBhdGggZmlsbD0iIzI5NjJFRiIgZD0iTTAgMGgyOHYyOEgweiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik02LjA3MyA3Yy0uNDggMC0uNjY1LjU5My0uMjYyLjg0MWwxMC4wNzMgNi4wNzRhLjU3Ny41NzcgMCAwIDAgLjc1OC0uMTM5bDQuNDMtNS44MTRjLjMtLjQwNC0uMDA0LS45NjItLjUyNS0uOTYySDYuMDczWk0yMS45MDQgMjFjLjQ4IDAgLjY3LS41OTYuMjY3LS44NDRsLTEwLjA3NS02LjA3M2EuNTY5LjU2OSAwIDAgMC0uNzUxLjE0NmwtNC40MzcgNS44MTNjLS4zMDEuNDA0LjAxMi45NTguNTM0Ljk1OGgxNC40NjJaIi8+PC9zdmc+';
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
import { uniqueBy } from '../utils/uniqueBy.js';
|
|
13
|
-
import { computeWalletConnectMetaData } from '../utils/computeWalletConnectMetaData.js';
|
|
14
|
-
import { omitUndefinedValues } from '../utils/omitUndefinedValues.js';
|
|
15
|
-
export const connectorsForWallets = (walletList, { projectId, walletConnectParameters, appName, appDescription, appUrl, appIcon }) => {
|
|
16
|
-
if (!walletList.length) {
|
|
17
|
-
throw new Error('No wallet list was provided');
|
|
18
|
-
}
|
|
19
|
-
let index = -1;
|
|
20
|
-
const connectors = [];
|
|
21
|
-
const wallets = [];
|
|
22
|
-
const walletConnectMetaData = computeWalletConnectMetaData({
|
|
23
|
-
appName,
|
|
24
|
-
appDescription,
|
|
25
|
-
appUrl,
|
|
26
|
-
appIcon,
|
|
27
|
-
});
|
|
28
|
-
walletList.forEach(createWallet => {
|
|
29
|
-
index++;
|
|
30
|
-
const wallet = createWallet({
|
|
31
|
-
projectId,
|
|
32
|
-
appName,
|
|
33
|
-
appIcon,
|
|
34
|
-
// `option` is being used only for `walletConnectWallet` wallet
|
|
35
|
-
options: Object.assign({ metadata: walletConnectMetaData }, walletConnectParameters),
|
|
36
|
-
// Every other wallet that supports walletConnect flow and is not
|
|
37
|
-
// `walletConnectWallet` wallet will have `walletConnectParameters` property
|
|
38
|
-
walletConnectParameters: Object.assign({ metadata: walletConnectMetaData }, walletConnectParameters),
|
|
39
|
-
});
|
|
40
|
-
const walletListItem = Object.assign(Object.assign({}, wallet), { index });
|
|
41
|
-
wallets.push(walletListItem);
|
|
42
|
-
});
|
|
43
|
-
// Filtering out duplicated wallets in case there is any.
|
|
44
|
-
// We process the known visible wallets first so that the potentially
|
|
45
|
-
// hidden wallets have access to the complete list of resolved wallets
|
|
46
|
-
const walletListItems = uniqueBy([...wallets], 'id');
|
|
47
|
-
for (let _a of walletListItems) {
|
|
48
|
-
const { createConnector } = _a, walletMeta = __rest(_a, ["createConnector"]);
|
|
49
|
-
const walletMetaData = (
|
|
50
|
-
// For now we should only use these as the additional parameters
|
|
51
|
-
additionalParaParams) => {
|
|
52
|
-
return {
|
|
53
|
-
paraDetails: omitUndefinedValues(Object.assign(Object.assign(Object.assign({}, walletMeta), { isParaConnector: true }), (additionalParaParams ? additionalParaParams : {}))),
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
|
-
const isWalletConnectConnector = walletMeta.id === 'walletConnect';
|
|
57
|
-
if (isWalletConnectConnector) {
|
|
58
|
-
connectors.push(createConnector(walletMetaData({
|
|
59
|
-
isWalletConnectModalConnector: true,
|
|
60
|
-
showQrModal: true,
|
|
61
|
-
})));
|
|
62
|
-
}
|
|
63
|
-
if (createConnector) {
|
|
64
|
-
connectors.push(createConnector(walletMetaData()));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return connectors;
|
|
68
|
-
};
|