@getpara/evm-wallet-connectors 1.2.0 → 1.3.1-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -1
- package/dist/index.js +2 -3
- package/dist/index.js.br +0 -0
- package/dist/index.js.gz +0 -0
- package/dist/providers/EvmExternalWalletContext.d.ts +17 -23
- package/dist/providers/ParaEvmContext.d.ts +10 -11
- package/dist/types/Wallet.d.ts +1 -1
- package/dist/wallets/connectors/index.d.ts +1 -0
- package/package.json +11 -11
- package/dist/providers/EvmExternalWalletContext.js +0 -228
- package/dist/providers/ParaEvmContext.js +0 -96
- package/dist/types/CommonTypes.d.ts +0 -27
- 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.d.ts
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { EvmExternalWalletContext } from './providers/EvmExternalWalletContext.js';
|
|
2
|
+
export type { EvmExternalWalletContextType } from './providers/EvmExternalWalletContext.js';
|
|
2
3
|
export { ParaEvmProvider } from './providers/ParaEvmContext.js';
|
|
4
|
+
export type { ParaEvmProviderProps, ParaEvmProviderConfig, ParaWagmiProviderProps } from './providers/ParaEvmContext.js';
|
|
3
5
|
export * from './wallets/connectors/index.js';
|
|
6
|
+
export type { WalletList } from './types/Wallet.js';
|
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 Ne,useCallback as je,useEffect as U,useMemo as ue,useState as Te}from"react";import{useAccount as Ce,useSwitchChain as de,useConnect as ye,useDisconnect as me,useEnsName as pe,useEnsAvatar as xe}from"wagmi";var w=e=>!!(!e.isRainbowKitConnector&&e.icon?.startsWith("data:image")&&e.uid&&e.name);var Z=async(e,n)=>{let t=await e.getProvider();return e.type==="coinbaseWallet"?t.qrUrl:new Promise(r=>t.once("display_uri",a=>{r(n?n(a):a)}))};import{normalize as Ae}from"viem/ens";import{isMobile as we,WalletType as f}from"@getpara/web-sdk";import{jsx as ze}from"react/jsx-runtime";var Le={wallets:[],chains:[],chainId:void 0,username:void 0,avatar:void 0,disconnect:()=>Promise.resolve(),switchChain:()=>Promise.resolve({}),connectParaEmbedded:()=>Promise.resolve({})},Q=Ne(Le);function Y({children:e,onSwitchWallet:n,para:t}){let{connectAsync:r,connectors:a}=ye(),{address:M,isConnecting:I,isReconnecting:g,chainId:C,connector:l}=Ce(),{chains:D,switchChainAsync:m}=de(),{disconnectAsync:s}=me(),{data:u}=pe({address:M}),{data:d}=xe({name:Ae(u)}),[A,T]=Te(!1);U(()=>{let i=t.externalWallets[M??""];!I&&!g&&!A&&M&&!i&&l?.id!=="para"&&k()},[I,g,A,M,l]),U(()=>{let i=t.externalWallets[t.currentExternalWalletAddresses?.[0]??""];!I&&!g&&i?.type===f.EVM&&i?.address!==M&&oe(M)},[M,g,I]);let p=a,k=async()=>{await s(),await t.logout()},E=async i=>{let o;try{await m({chainId:i})}catch(c){if(c.details.includes("Missing or invalid."))o=["Network not supported.",`You may need to add ${D.find(L=>L.id===i)?.name} support to ${l?.paraDetails?.name??l?.name??"the wallet"} manually.`];else switch(c.name){case"UserRejectedRequestError":{o=["Change request rejected"];break}default:{o=["An unknown error occurred"];break}}}return{error:o}},P=async(i,o)=>{try{await t.externalWalletLogin({address:i,type:f.EVM,provider:o})}catch{throw await s(),await t.logout(),"Error logging you in. Please try again."}},oe=async i=>{T(!0);let o;if(!i)await t.logout();else try{await P(i,l?.name)}catch(c){o=c}n?.({address:i,error:o}),T(!1)},S=async i=>{T(!0),await s();let o=await i.getChainId(),c,x;try{if(c=(await r({chainId:D.find(({id:O})=>O===o)?.id??D[0]?.id,connector:i})).accounts?.[0],c)try{await P(c,i.name)}catch(O){c=void 0,x=O}}catch(L){switch(L.name){case"UserRejectedRequestError":{x="Connection request rejected";break}case"ResourceUnavailableRpcError":{`${i.name}`;break}default:{x="An unknown error occurred";break}}}return T(!1),{address:c,error:x}},Me=async(i,o)=>{let c=o!==void 0?o:we(),x=i.walletConnectModalConnector&&c?i.walletConnectModalConnector:i;return await S(x)},Ie=i=>()=>Z(i,i.paraDetails?.getUri),b={},W;p.filter(i=>!w(i)).forEach(i=>{i.paraDetails&&(b[i.paraDetails.rdns]=i.paraDetails,i.paraDetails.isWalletConnectModalConnector&&(W=i))});let ce=p.filter(i=>w(i)).map(i=>i.id),se=p.map(i=>{if(!i.paraDetails?.isWalletConnectModalConnector&&!(!w(i)&&ce.includes(i.paraDetails?.rdns))){if(w(i)){let o=b[i.id];return{...i,paraDetails:o}}return i.paraDetails?.id==="walletConnect"&&W?{...i,walletConnectModalConnector:W}:i}}).filter(i=>!!i).map(i=>{let o={...i,...i.paraDetails};return{...o,connect:()=>S(o),connectMobile:c=>Me(o,c),type:f.EVM,getQrUri:Ie(o)}}),le=D.map(i=>({id:i.id,name:i.name})),ge=ue(()=>u??M,[u,M]),De=je(async()=>{let i=p.find(o=>o.id==="para");if(!i)return{error:"No para connector instance"};try{return{result:await r({connector:i})}}catch(o){return{error:o instanceof Error?o.message:"Unknown error"}}},[p]);return ze(Q.Provider,{value:{wallets:se,chains:le,chainId:C,username:ge,avatar:d,disconnect:s,switchChain:E,connectParaEmbedded:De},children:e})}import{useMemo as R}from"react";import{createConfig as Ee,WagmiProvider as We}from"wagmi";function v(e,n){let t=[];for(let r of e)t.some(a=>a[n]===r[n])||t.push(r);return t}var z=({appName:e,appDescription:n,appUrl:t,appIcon:r})=>({name:e,description:n??e,url:t??(typeof window<"u"?window.location.href:""),icons:[...r?[r]:[]]});function G(e){return Object.fromEntries(Object.entries(e).filter(([n,t])=>t!==void 0))}var h=(e,{projectId:n,walletConnectParameters:t,appName:r,appDescription:a,appUrl:M,appIcon:I})=>{if(!e.length)return[];let g=-1,C=[],l=[],D=z({appName:r,appDescription:a,appUrl:M,appIcon:I});e.forEach(s=>{g++;let d={...s({projectId:n,appName:r,appIcon:I,options:{metadata:D,...t},walletConnectParameters:{metadata:D,...t}}),index:g};l.push(d)});let m=v([...l],"id");for(let{createConnector:s,...u}of m){let d=T=>({paraDetails:G({...u,isParaConnector:!0,...T||{}})});u.id==="walletConnect"&&C.push(s(d({isWalletConnectModalConnector:!0,showQrModal:!0}))),s&&C.push(s(d()))}return C};import{http as Oe}from"viem";import{paraConnector as fe}from"@getpara/wagmi-v2-connector";import{jsx as B}from"react/jsx-runtime";var ke=e=>e.reduce((t,r)=>{let a=r.id;return t[a]=Oe(),t},{});function Pe({children:e,internalConfig:n,config:t,wagmiProviderProps:r}){let a=n.para,{projectId:M,appName:I,appDescription:g,appIcon:C,appUrl:l,wallets:D,chains:m,transports:s,paraConnectorOptions:u,...d}=t,A=R(()=>fe({para:a,chains:[...m],disableModal:!0,appName:I,options:u??{}}),[a]),T=R(()=>{let p=z({appName:I,appDescription:g,appUrl:l,appIcon:C}),E=[...h(D,{projectId:M,appName:I,appDescription:g,appUrl:l,appIcon:C,walletConnectParameters:{metadata:p}}),A];return Ee({...d,chains:m,transports:s||ke(m),connectors:E})},[D,A]);return B(We,{config:T,...r,children:B(Y,{...n,children:e})})}import{isAndroid as he,isIOS as Re,isTelegram as Be}from"@getpara/web-sdk";import{createConnector as Se}from"wagmi";import{injected as be}from"wagmi/connectors";function V(e){let n=typeof window<"u"?window:void 0;if(typeof n>"u"||typeof n.ethereum>"u")return;let t=n.ethereum.providers;return t?t.find(r=>r[e]):n.ethereum[e]?n.ethereum:void 0}function F(e){let n=(t,r)=>{let[a,...M]=r.split("."),I=t[a];if(I)return M.length===0?I:n(I,M.join("."))};if(typeof window<"u")return n(window,e)}function N({flag:e,namespace:n}){return!!(n&&typeof F(n)<"u"||e&&typeof V(e)<"u")}function Ze({flag:e,namespace:n}){let t=typeof window<"u"?window:void 0;if(typeof t>"u")return;if(n){let a=F(n);if(a)return a}let r=t.ethereum?.providers;if(e){let a=V(e);if(a)return a}return typeof r<"u"&&r.length>0?r[0]:t.ethereum}function Ue(e){return n=>{let t=e?{target:()=>({id:n.paraDetails.id,name:n.paraDetails.name,provider:e})}:{};return Se(r=>({...be(t)(r),...n}))}}function y({flag:e,namespace:n,target:t}){let r=t||Ze({flag:e,namespace:n});return Ue(r)}import{createConnector as Qe}from"wagmi";import{walletConnect as Ye}from"wagmi/connectors";var J=new Map,ve=({projectId:e,walletConnectParameters:n,paraDetailsShowQrModal:t})=>{let r={...n||{},projectId:e,showQrModal:!1};t&&(r={...r,showQrModal:!0});let a=JSON.stringify(r),M=J.get(a);if(M)return M;let I=Ye(r);return J.set(a,I),I};function Ge({projectId:e,walletDetails:n,walletConnectParameters:t}){return Qe(r=>({...ve({projectId:e,walletConnectParameters:t,paraDetailsShowQrModal:n.paraDetails.showQrModal})(r),...n,id:n.paraDetails.id}))}function j({projectId:e,walletConnectParameters:n}){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 t=>Ge({projectId:e,walletDetails:t,walletConnectParameters:n})}var H="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 X=({projectId:e,walletConnectParameters:n})=>{let t=N({flag:"isMetaMask"});return{id:"metaMask",name:"MetaMask",rdns:"io.metamask",iconUrl:H,installed:t,isExtension:!0,isMobile:!0,downloadUrl:"https://metamask.io/download/",getUri:a=>he()?`metamask://wc?uri=${encodeURIComponent(a)}`:Re()?Be()?`https://metamask.app.link/wc?uri=${encodeURIComponent(a)}`:`metamask://wc?uri=${encodeURIComponent(a)}`:`https://metamask.app.link/wc?uri=${encodeURIComponent(a)}`,createConnector:t?y({target:typeof window<"u"?window.ethereum?.providers?.find(Ve)??window.ethereum:void 0}):j({projectId:e,walletConnectParameters:n})}};import{isAndroid as Fe,isIOS as Je,isTelegram as He}from"@getpara/web-sdk";var K="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNMCA1LjRIMS44QzExLjA3ODQgNS40IDE4LjYgMTIuOTIxNiAxOC42IDIyLjJWMjRIMjIuMkMyMy4xOTQxIDI0IDI0IDIzLjE5NDEgMjQgMjIuMkMyNCA5LjkzOTI3IDE0LjA2MDcgMCAxLjggMEMwLjgwNTg4NyAwIDAgMC44MDU4ODcgMCAxLjhWNS40WiIgZmlsbD0idXJsKCNwYWludDBfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTE5LjIgMjIuMkgyMy45OTk5QzIzLjk5OTkgMjMuMTk0MSAyMy4xOTQxIDI0IDIyLjE5OTkgMjRIMTkuMlYyMi4yWiIgZmlsbD0idXJsKCNwYWludDFfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAwTDEuOCA0LjhIMEwxLjMxMTM0ZS0wNyAxLjhDMS43NDU4OGUtMDcgMC44MDU4ODcgMC44MDU4ODcgLTQuMzQ1NGUtMDggMS44IDBaIiBmaWxsPSJ1cmwoI3BhaW50Ml9saW5lYXJfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMCA0Ljc5OTk5SDEuOEMxMS40MDk3IDQuNzk5OTkgMTkuMiAxMi41OTAyIDE5LjIgMjIuMlYyNEgxMy44VjIyLjJDMTMuOCAxNS41NzI2IDguNDI3NDEgMTAuMiAxLjggMTAuMkgwVjQuNzk5OTlaIiBmaWxsPSJ1cmwoI3BhaW50M19yYWRpYWxfNDQyXzgyNykiLz4KICA8cGF0aCBkPSJNMTQuMzk5OSAyMi4ySDE5LjE5OTlWMjRIMTQuMzk5OVYyMi4yWiIgZmlsbD0idXJsKCNwYWludDRfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTIuMDk4MTVlLTA3IDkuNTk5OTlMMCA0Ljc5OTk5TDEuOCA0Ljc5OTk5TDEuOCA5LjU5OTk5SDIuMDk4MTVlLTA3WiIgZmlsbD0idXJsKCNwYWludDVfbGluZWFyXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTAgMTIuNkMwIDEzLjU5NDEgMC44MDU4ODcgMTQuNCAxLjggMTQuNEM2LjEwNzgyIDE0LjQgOS42IDE3Ljg5MjEgOS42IDIyLjJDOS42IDIzLjE5NDEgMTAuNDA1OSAyNCAxMS40IDI0SDE0LjRWMjIuMkMxNC40IDE1LjI0MTIgOC43NTg3OCA5LjU5OTk4IDEuOCA5LjU5OTk4SDBWMTIuNloiIGZpbGw9InVybCgjcGFpbnQ2X3JhZGlhbF80NDJfODI3KSIvPgogIDxwYXRoIGQ9Ik05LjYwMDEgMjIuMkgxNC40MDAxVjI0SDExLjQwMDFDMTAuNDA2IDI0IDkuNjAwMSAyMy4xOTQxIDkuNjAwMSAyMi4yWiIgZmlsbD0idXJsKCNwYWludDdfcmFkaWFsXzQ0Ml84MjcpIi8+CiAgPHBhdGggZD0iTTEuOCAxNC40QzAuODA1ODg3IDE0LjQgMS43NDU4OGUtMDcgMTMuNTk0MSAxLjMxMTM0ZS0wNyAxMi42TDAgOS41OTk5OEwxLjggOS41OTk5OEwxLjggMTQuNFoiIGZpbGw9InVybCgjcGFpbnQ4X3JhZGlhbF80NDJfODI3KSIvPgogIDxkZWZzPgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDBfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDIyLjIpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjc3MDI3NyIgc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50MV9saW5lYXJfNDQyXzgyNyIgeDE9IjE4LjkiIHkxPSIyMy4xIiB4Mj0iMjMuOTk5OSIgeTI9IjIzLjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI0ZGNDAwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4NzU0QzkiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InBhaW50Ml9saW5lYXJfNDQyXzgyNyIgeDE9IjAuOSIgeTE9Ii0zLjkzMzllLTA3IiB4Mj0iMC44OTk5OTgiIHkyPSI1LjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzg3NTRDOSIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjQwMDAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50M19yYWRpYWxfNDQyXzgyNyIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjggMjIuMikgcm90YXRlKC05MCkgc2NhbGUoMTcuNCkiPgogICAgICA8c3RvcCBvZmZzZXQ9IjAuNzIzOTI5IiBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ0X2xpbmVhcl80NDJfODI3IiB4MT0iMTQuMzk5OSIgeTE9IjIzLjEiIHgyPSIxOS4xOTk5IiB5Mj0iMjMuMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRkZGNzAwIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI0ZGOTkwMSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQ1X2xpbmVhcl80NDJfODI3IiB4MT0iMC45MDAwMDEiIHkxPSI5LjU5OTk5IiB4Mj0iMC44OTk5OTkiIHkyPSI0Ljc5OTk5IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNGRkY3MDAiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRkY5OTAxIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDZfcmFkaWFsXzQ0Ml84MjciIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44IDIyLjIpIHJvdGF0ZSgtOTApIHNjYWxlKDEyLjYpIj4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjU5NTEzIiBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ3X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzAwMSAyMy4xKSBzY2FsZSg1LjEgMTMuNikiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDBBQUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzAxREE0MCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQ4X3JhZGlhbF80NDJfODI3IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDAuODk5OTk5IDE0LjcpIHJvdGF0ZSgtOTApIHNjYWxlKDUuMSA5Ni43MTEpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwQUFGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwMURBNDAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgPC9kZWZzPgo8L3N2Zz4=";var $=({projectId:e,walletConnectParameters:n})=>{let t=N({flag:"isRainbow"});return{id:"rainbow",name:"Rainbow",rdns:"me.rainbow",iconUrl:K,installed:t,isExtension:!0,isMobile:!0,downloadUrl:"https://rainbow.me/",getUri:a=>Fe()?`rainbow://wc?uri=${encodeURIComponent(a)}`:Je()?He()?`https://rnbwapp.com/wc?uri=${encodeURIComponent(a)}`:`rainbow://wc?uri=${encodeURIComponent(a)}`:`https://rnbwapp.com/wc?uri=${encodeURIComponent(a)}`,createConnector:t?y({flag:"isRainbow"}):j({projectId:e,walletConnectParameters:n})}};var _="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNNC45MTMzIDYuOTM1NDFDOC44MjcxOCAzLjAyMTUzIDE1LjE3MjggMy4wMjE1MyAxOS4wODY3IDYuOTM1NDFMMTkuNTU3OCA3LjQwNjQ2QzE5Ljc1MzUgNy42MDIxNSAxOS43NTM1IDcuOTE5NDMgMTkuNTU3OCA4LjExNTEzTDE3Ljk0NjQgOS43MjY0N0MxNy44NDg2IDkuODI0MzIgMTcuNjg5OSA5LjgyNDMyIDE3LjU5MjEgOS43MjY0N0wxNi45NDM5IDkuMDc4MjZDMTQuMjEzNSA2LjM0Nzg0IDkuNzg2NTcgNi4zNDc4NCA3LjA1NjE0IDkuMDc4MjZMNi4zNjE5NiA5Ljc3MjQ0QzYuMjY0MTIgOS44NzAyOCA2LjEwNTQ4IDkuODcwMjggNi4wMDc2MyA5Ljc3MjQ0TDQuMzk2MjkgOC4xNjExQzQuMjAwNTkgNy45NjU0IDQuMjAwNTkgNy42NDgxMiA0LjM5NjI5IDcuNDUyNDNMNC45MTMzIDYuOTM1NDFaTTIyLjQxOTEgMTAuMjY3OEwyMy44NTMyIDExLjcwMTlDMjQuMDQ4OSAxMS44OTc2IDI0LjA0ODkgMTIuMjE0OSAyMy44NTMyIDEyLjQxMDZMMTcuMzg2OCAxOC44NzcyQzE3LjE5MTEgMTkuMDcyOCAxNi44NzM4IDE5LjA3MjkgMTYuNjc4MSAxOC44NzcyQzE2LjY3ODEgMTguODc3MiAxNi42NzgxIDE4Ljg3NzIgMTYuNjc4MSAxOC44NzcyTDEyLjA4ODYgMTQuMjg3N0MxMi4wMzk3IDE0LjIzODcgMTEuOTYwNCAxNC4yMzg3IDExLjkxMTUgMTQuMjg3N0MxMS45MTE1IDE0LjI4NzcgMTEuOTExNSAxNC4yODc3IDExLjkxMTUgMTQuMjg3N0w3LjMyMjA3IDE4Ljg3NzJDNy4xMjYzOCAxOS4wNzI4IDYuODA5MDkgMTkuMDcyOSA2LjYxMzQgMTguODc3MkM2LjYxMzQgMTguODc3MiA2LjYxMzM5IDE4Ljg3NzIgNi42MTMzOSAxOC44NzcyTDAuMTQ2NzcxIDEyLjQxMDVDLTAuMDQ4OTIzNiAxMi4yMTQ4IC0wLjA0ODkyMzYgMTEuODk3NSAwLjE0Njc3MSAxMS43MDE5TDEuNTgwODcgMTAuMjY3OEMxLjc3NjU2IDEwLjA3MjEgMi4wOTM4NSAxMC4wNzIxIDIuMjg5NTQgMTAuMjY3OEw2Ljg3OTEgMTQuODU3M0M2LjkyODAyIDE0LjkwNjIgNy4wMDczNCAxNC45MDYyIDcuMDU2MjYgMTQuODU3M0M3LjA1NjI2IDE0Ljg1NzMgNy4wNTYyNiAxNC44NTczIDcuMDU2MjcgMTQuODU3M0wxMS42NDU2IDEwLjI2NzhDMTEuODQxMyAxMC4wNzIxIDEyLjE1ODYgMTAuMDcyIDEyLjM1NDMgMTAuMjY3N0MxMi4zNTQzIDEwLjI2NzcgMTIuMzU0MyAxMC4yNjc3IDEyLjM1NDMgMTAuMjY3N0wxNi45NDM4IDE0Ljg1NzNDMTYuOTkyNyAxNC45MDYyIDE3LjA3MjEgMTQuOTA2MiAxNy4xMjEgMTQuODU3M0wyMS43MTA1IDEwLjI2NzhDMjEuOTA2MiAxMC4wNzIxIDIyLjIyMzQgMTAuMDcyMSAyMi40MTkxIDEwLjI2NzhaIiBmaWxsPSIjM0I5OUZDIi8+Cjwvc3ZnPg==";var q=({projectId:e,options:n})=>({id:"walletConnect",name:"WalletConnect",installed:void 0,iconUrl:_,isMobile:!0,getUri:r=>r,createConnector:j({projectId:e,walletConnectParameters:n})});import{createConnector as Xe}from"wagmi";import{coinbaseWallet as Ke}from"wagmi/connectors";var ee="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNDQyXzg1NCkiPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiAyNEMxOC42Mjc0IDI0IDI0IDE4LjYyNzQgMjQgMTJDMjQgNS4zNzI1OCAxOC42Mjc0IDAgMTIgMEM1LjM3MjU4IDAgMCA1LjM3MjU4IDAgMTJDMCAxOC42Mjc0IDUuMzcyNTggMjQgMTIgMjRaTTguODMxNzUgOC4wODE2MkM4LjQxNzU0IDguMDgxNjIgOC4wODE3NSA4LjQxNzQxIDguMDgxNzUgOC44MzE2MlYxNS4xNjg0QzguMDgxNzUgMTUuNTgyNiA4LjQxNzU0IDE1LjkxODQgOC44MzE3NSAxNS45MTg0SDE1LjE2ODVDMTUuNTgyNyAxNS45MTg0IDE1LjkxODUgMTUuNTgyNiAxNS45MTg1IDE1LjE2ODRWOC44MzE2MkMxNS45MTg1IDguNDE3NDEgMTUuNTgyNyA4LjA4MTYyIDE1LjE2ODUgOC4wODE2Mkg4LjgzMTc1WiIgZmlsbD0iIzJDNUZGNiIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxjbGlwUGF0aCBpZD0iY2xpcDBfNDQyXzg1NCI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=";var te=({appName:e,appIcon:n})=>{let t=N({flag:"isCoinbaseWallet"});return{id:"coinbase",name:"Coinbase Wallet",rdns:"com.coinbase.wallet",iconUrl:ee,installed:t,isExtension:!0,isMobile:!0,downloadUrl:"https://www.coinbase.com/wallet/downloads",getUri:a=>a,createConnector:a=>Xe(M=>({...Ke({version:"4",appName:e,appLogoUrl:n,preference:"eoaOnly"})(M),...a}))}};import{isIOS as $e,isTelegram as _e}from"@getpara/web-sdk";var ne="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PHBhdGggZmlsbD0iIzI5NjJFRiIgZD0iTTAgMGgyOHYyOEgweiIvPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik02LjA3MyA3Yy0uNDggMC0uNjY1LjU5My0uMjYyLjg0MWwxMC4wNzMgNi4wNzRhLjU3Ny41NzcgMCAwIDAgLjc1OC0uMTM5bDQuNDMtNS44MTRjLjMtLjQwNC0uMDA0LS45NjItLjUyNS0uOTYySDYuMDczWk0yMS45MDQgMjFjLjQ4IDAgLjY3LS41OTYuMjY3LS44NDRsLTEwLjA3NS02LjA3M2EuNTY5LjU2OSAwIDAgMC0uNzUxLjE0NmwtNC40MzcgNS44MTNjLS4zMDEuNDA0LjAxMi45NTguNTM0Ljk1OGgxNC40NjJaIi8+PC9zdmc+";var ie=({projectId:e,walletConnectParameters:n})=>{let t=N({namespace:"zerionWallet",flag:"isZerion"});return{id:"zerion",name:"Zerion",rdns:"io.zerion.wallet",iconUrl:ne,installed:t,isExtension:!0,isMobile:!0,getUri:a=>_e()&&$e()?`https://app.zerion.io/wc?uri=${encodeURIComponent(a)}`:`zerion://wc?uri=${encodeURIComponent(a)}`,downloadUrl:"https://zerion.io/download",createConnector:t?y({namespace:"zerionWallet",flag:"isZerion"}):j({projectId:e,walletConnectParameters:n})}};var re="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjODY5N0ZGIiBkPSJNMjggMEgwdjI4aDI4VjBaIi8+PHBhdGggZmlsbD0idXJsKCNiKSIgZD0iTTIyLjU0IDE1LjA3OGMuNjc3LTEuNTE0LTIuNjczLTUuNzQ0LTUuODc0LTcuNTA2LTIuMDE3LTEuMzY1LTQuMTItMS4xNzgtNC41NDUtLjU3OS0uOTM1IDEuMzE2IDMuMDk0IDIuNDMgNS43ODggMy43MzEtLjU4LjI1Mi0xLjEyNS43MDMtMS40NDYgMS4yOC0xLjAwNC0xLjA5Ni0zLjIwOS0yLjA0LTUuNzk2LTEuMjgtMS43NDMuNTEzLTMuMTkxIDEuNzIxLTMuNzUxIDMuNTQ2YTEuMDk3IDEuMDk3IDAgMSAwLS40NDUgMi4xYy4xMTIgMCAuNDYzLS4wNzUuNDYzLS4wNzVsNS42MTIuMDQxYy0yLjI0NCAzLjU2LTQuMDE4IDQuMDgxLTQuMDE4IDQuNjk4czEuNjk3LjQ1IDIuMzM1LjIyYzMuMDUtMS4xIDYuMzI3LTQuNTMxIDYuODktNS41MTkgMi4zNi4yOTUgNC4zNDUuMzMgNC43ODYtLjY1N1oiLz48cGF0aCBmaWxsPSJ1cmwoI2MpIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Im0xNy44ODUgMTAuNzEzLjAyNS4wMWMuMTI1LS4wNDkuMTA1LS4yMzMuMDctLjM3OC0uMDc4LS4zMzMtMS40MzgtMS42NzYtMi43MTUtMi4yNzctMS43NDMtLjgyLTMuMDI1LS43NzctMy4yMTItLjM5OC4zNTYuNzI2IDEuOTk4IDEuNDA4IDMuNzE0IDIuMTIuNzIzLjMgMS40Ni42MDYgMi4xMTguOTIzWiIgY2xpcC1ydWxlPSJldmVub2RkIi8+PHBhdGggZmlsbD0idXJsKCNkKSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNzAxIDE4LjAzNmExMC4yOTYgMTAuMjk2IDAgMCAwLTEuMi0uMzdjLjQ4Mi0uODYyLjU4My0yLjEzOC4xMjgtMi45NDUtLjYzOS0xLjEzMy0xLjQ0LTEuNzM2LTMuMzA0LTEuNzM2LTEuMDI0IDAtMy43ODMuMzQ2LTMuODMyIDIuNjQ4LS4wMDUuMjQyIDAgLjQ2NC4wMTcuNjY3bDUuMDM2LjAzN2ExNy4yNjQgMTcuMjY0IDAgMCAxLTEuODcxIDIuNDgzYy42NjkuMTcyIDEuMjIxLjMxNiAxLjcyOC40NDguNDguMTI1LjkyLjI0IDEuMzguMzU3YTIxLjAwMyAyMS4wMDMgMCAwIDAgMS45MTgtMS41OVoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGZpbGw9InVybCgjZSkiIGQ9Ik02Ljg0OCAxNi4wNjNjLjIwNiAxLjc1IDEuMiAyLjQzNSAzLjIzMiAyLjYzOCAyLjAzMi4yMDMgMy4xOTcuMDY3IDQuNzQ5LjIwOCAxLjI5Ni4xMTggMi40NTMuNzc4IDIuODgyLjU1LjM4Ni0uMjA1LjE3LS45NDctLjM0Ny0xLjQyMy0uNjctLjYxNy0xLjU5Ny0xLjA0Ni0zLjIyOS0xLjE5OS4zMjUtLjg5LjIzNC0yLjEzOC0uMjctMi44MTctLjczMS0uOTgyLTIuMDc5LTEuNDI2LTMuNzg1LTEuMjMyLTEuNzgyLjIwMi0zLjQ5IDEuMDgtMy4yMzIgMy4yNzVaIi8+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgeDE9IjEwLjQ2NCIgeDI9IjIyLjM5NCIgeTE9IjEzLjczNyIgeTI9IjE3LjEyIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI2ZmZiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZiIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJjIiB4MT0iMjAuMzg2IiB4Mj0iMTEuNzc5IiB5MT0iMTMuNTA5IiB5Mj0iNC44NzkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzI1OERDIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjNzk3REVBIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZCIgeDE9IjE1Ljk0IiB4Mj0iNy42NzMiIHkxPSIxOC4zMzciIHkyPSIxMy41ODQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNzQ2MUVBIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjQkZDMkZGIiBzdG9wLW9wYWNpdHk9IjAiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iZSIgeDE9IjExLjE3NyIgeDI9IjE2Ljc2NSIgeTE9IjEzLjY0OCIgeTI9IjIwLjc0OSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNmZmYiLz48c3RvcCBvZmZzZXQ9Ii45ODQiIHN0b3AtY29sb3I9IiNENUNFRkYiLz48L2xpbmVhckdyYWRpZW50PjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgyOHYyOEgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==";var ae=({projectId:e,walletConnectParameters:n})=>{let t=N({flag:"isRabby"});return{id:"rabby",name:"Rabby Wallet",rdns:"io.rabby",iconUrl:re,installed:t,isExtension:!0,isMobile:!1,downloadUrl:"https://rabby.io",createConnector:t?y({flag:"isRabby"}):j({projectId:e,walletConnectParameters:n})}};var zn=[X,$,q,te,ie,ae];export{Q as EvmExternalWalletContext,Pe as ParaEvmProvider,zn as allWallets,te as coinbaseWallet,X as metaMaskWallet,ae as rabbyWallet,$ as rainbowWallet,q as walletConnectWallet,ie as zerionWallet};
|
package/dist/index.js.br
ADDED
|
Binary file
|
package/dist/index.js.gz
ADDED
|
Binary file
|
|
@@ -1,33 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { CommonChain, CommonWallet } from '
|
|
3
|
-
import ParaWeb from '@getpara/
|
|
4
|
-
export
|
|
5
|
-
wallets: any[];
|
|
6
|
-
chains: any[];
|
|
7
|
-
chainId: any;
|
|
8
|
-
username: any;
|
|
9
|
-
avatar: any;
|
|
10
|
-
disconnect: () => Promise<void>;
|
|
11
|
-
switchChain: () => Promise<{}>;
|
|
12
|
-
};
|
|
13
|
-
export declare const EvmExternalWalletContext: import("react").Context<{
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import type { CommonChain, CommonWallet } from '@getpara/react-common';
|
|
3
|
+
import ParaWeb from '@getpara/web-sdk';
|
|
4
|
+
export type EvmExternalWalletContextType = {
|
|
14
5
|
wallets: CommonWallet[];
|
|
15
6
|
chains: CommonChain[];
|
|
16
|
-
chainId
|
|
17
|
-
username
|
|
7
|
+
chainId?: number;
|
|
8
|
+
username?: string;
|
|
18
9
|
avatar?: string;
|
|
19
10
|
disconnect: () => Promise<void>;
|
|
20
11
|
switchChain: (chainId: number) => Promise<{
|
|
21
12
|
error?: string[];
|
|
22
13
|
}>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
14
|
+
connectParaEmbedded: () => Promise<{
|
|
15
|
+
result?: unknown;
|
|
16
|
+
error?: string;
|
|
17
|
+
}>;
|
|
18
|
+
};
|
|
19
|
+
export declare const EvmExternalWalletContext: import("react").Context<EvmExternalWalletContextType>;
|
|
20
|
+
export type EvmExternalWalletProviderConfig = {
|
|
21
|
+
onSwitchWallet?: (args: {
|
|
28
22
|
address?: string;
|
|
29
23
|
error?: string;
|
|
30
24
|
}) => void;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
export {};
|
|
25
|
+
para: ParaWeb;
|
|
26
|
+
};
|
|
27
|
+
export declare function EvmExternalWalletProvider({ children, onSwitchWallet, para, }: EvmExternalWalletProviderConfig & PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
2
|
import { CreateConfigParameters, WagmiProviderProps } from 'wagmi';
|
|
3
3
|
import { WalletList } from '../types/Wallet.js';
|
|
4
4
|
import { Chain, Transport } from 'viem';
|
|
5
|
-
import
|
|
5
|
+
import { EvmExternalWalletProviderConfig } from './EvmExternalWalletContext.js';
|
|
6
6
|
import { InjectedParameters } from 'wagmi/connectors';
|
|
7
|
-
interface
|
|
7
|
+
export interface ParaEvmProviderConfig<chains extends readonly [Chain, ...Chain[]], transports extends Record<chains[number]['id'], Transport>> extends Omit<CreateConfigParameters<chains, transports>, 'connectors'> {
|
|
8
8
|
appName: string;
|
|
9
9
|
appDescription?: string;
|
|
10
10
|
appUrl?: string;
|
|
11
11
|
appIcon?: string;
|
|
12
12
|
wallets?: WalletList;
|
|
13
13
|
projectId: string;
|
|
14
|
-
|
|
15
|
-
paraDisableModal?: boolean;
|
|
16
|
-
paraOptions?: InjectedParameters;
|
|
14
|
+
paraConnectorOptions?: InjectedParameters;
|
|
17
15
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
config:
|
|
16
|
+
export type ParaWagmiProviderProps = Omit<WagmiProviderProps, 'config'>;
|
|
17
|
+
export interface ParaEvmProviderProps<chains extends readonly [Chain, ...Chain[]], transports extends Record<chains[number]['id'], Transport>> {
|
|
18
|
+
config: ParaEvmProviderConfig<chains, transports>;
|
|
19
|
+
internalConfig: EvmExternalWalletProviderConfig;
|
|
20
|
+
wagmiProviderProps?: ParaWagmiProviderProps;
|
|
21
21
|
}
|
|
22
|
-
export declare function ParaEvmProvider<const chains extends readonly [Chain, ...Chain[]], transports extends Record<chains[number]['id'], Transport>>({ children, config: _config,
|
|
23
|
-
export {};
|
|
22
|
+
export declare function ParaEvmProvider<const chains extends readonly [Chain, ...Chain[]], transports extends Record<chains[number]['id'], Transport>>({ children, internalConfig, config: _config, wagmiProviderProps, }: ParaEvmProviderProps<chains, transports> & PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
package/dist/types/Wallet.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { Connector, CreateConnectorFn } from 'wagmi';
|
|
|
2
2
|
import { WalletConnectParameters } from 'wagmi/connectors';
|
|
3
3
|
import { CoinbaseWalletOptions } from '../wallets/connectors/coinbase/coinbase.js';
|
|
4
4
|
import { WalletConnectWalletOptions } from '../wallets/connectors/walletConnect/walletConnect.js';
|
|
5
|
-
import { WalletMetadata } from '
|
|
5
|
+
import { type WalletMetadata } from '@getpara/react-common';
|
|
6
6
|
export type Wallet = {
|
|
7
7
|
createConnector?: (walletDetails: WalletDetailsParams) => CreateConnectorFn;
|
|
8
8
|
createMobileConnector?: (walletDetails: WalletDetailsParams) => CreateConnectorFn;
|
|
@@ -5,3 +5,4 @@ import { coinbaseWallet } from './coinbase/coinbase.js';
|
|
|
5
5
|
import { zerionWallet } from './zerion/zerion.js';
|
|
6
6
|
import { rabbyWallet } from './rabby/rabby.js';
|
|
7
7
|
export { metaMaskWallet, rainbowWallet, walletConnectWallet, coinbaseWallet, zerionWallet, rabbyWallet };
|
|
8
|
+
export declare const allWallets: ((({ appName, appIcon }: import("./coinbase/coinbase.js").CoinbaseWalletOptions) => import("../../types/Wallet.js").Wallet) | (({ projectId, options }: import("./walletConnect/walletConnect.js").WalletConnectWalletOptions) => import("../../types/Wallet.js").Wallet) | (({ projectId, walletConnectParameters }: import("./metaMask/metaMask.js").MetaMaskWalletOptions) => import("../../types/Wallet.js").Wallet))[];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getpara/evm-wallet-connectors",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1-dev.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,29 +10,29 @@
|
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@coinbase/wallet-sdk": "4.3.0",
|
|
13
|
-
"@getpara/
|
|
14
|
-
"@getpara/
|
|
13
|
+
"@getpara/wagmi-v2-connector": "1.3.1",
|
|
14
|
+
"@getpara/web-sdk": "^1.3.1",
|
|
15
|
+
"viem": "2.x",
|
|
16
|
+
"wagmi": "2.x"
|
|
15
17
|
},
|
|
16
18
|
"scripts": {
|
|
17
|
-
"build": "rm -rf dist &&
|
|
19
|
+
"build": "rm -rf dist && yarn typegen && node ./scripts/build.mjs",
|
|
20
|
+
"typegen": "tsc --emitDeclarationOnly",
|
|
18
21
|
"test": "vitest run --coverage"
|
|
19
22
|
},
|
|
20
23
|
"devDependencies": {
|
|
24
|
+
"@getpara/react-common": "^1.3.1",
|
|
21
25
|
"@types/react": "^18.0.31",
|
|
22
26
|
"@types/react-dom": "^18.2.7",
|
|
23
|
-
"typescript": "^5.4.3"
|
|
24
|
-
"viem": "2.x",
|
|
25
|
-
"wagmi": "2.x"
|
|
27
|
+
"typescript": "^5.4.3"
|
|
26
28
|
},
|
|
27
29
|
"peerDependencies": {
|
|
28
30
|
"react": ">=18",
|
|
29
|
-
"react-dom": ">=18"
|
|
30
|
-
"viem": "2.x",
|
|
31
|
-
"wagmi": "2.x"
|
|
31
|
+
"react-dom": ">=18"
|
|
32
32
|
},
|
|
33
33
|
"files": [
|
|
34
34
|
"dist",
|
|
35
35
|
"package.json"
|
|
36
36
|
],
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "10ecce9873131e6a1b114fb0642a94bb02040bef"
|
|
38
38
|
}
|
|
@@ -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,27 +0,0 @@
|
|
|
1
|
-
export type WalletMetadata = {
|
|
2
|
-
id: string;
|
|
3
|
-
name: string;
|
|
4
|
-
rdns?: string;
|
|
5
|
-
iconUrl: string;
|
|
6
|
-
installed?: boolean;
|
|
7
|
-
isExtension?: boolean;
|
|
8
|
-
isMobile?: boolean;
|
|
9
|
-
isWeb?: boolean;
|
|
10
|
-
downloadUrl?: string;
|
|
11
|
-
getQrUri?: () => Promise<string>;
|
|
12
|
-
};
|
|
13
|
-
export type CommonWallet = {
|
|
14
|
-
connect: () => Promise<{
|
|
15
|
-
address?: string;
|
|
16
|
-
error?: string;
|
|
17
|
-
}>;
|
|
18
|
-
connectMobile: (isManualWalletConnect?: boolean) => Promise<{
|
|
19
|
-
address?: string;
|
|
20
|
-
error?: string;
|
|
21
|
-
}>;
|
|
22
|
-
type: 'EVM' | 'SOLANA' | 'COSMOS';
|
|
23
|
-
} & WalletMetadata;
|
|
24
|
-
export type CommonChain = {
|
|
25
|
-
id: string | number;
|
|
26
|
-
name: string;
|
|
27
|
-
};
|
|
@@ -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
|
-
};
|