@getpara/cosmos-wallet-connectors 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { CosmosExternalWalletContext, CosmosExternalWalletProvider } from './providers/CosmosExternalWalletContext.js';
2
- export { ParaCosmosProvider } from './providers/ParaCosmosContext.js';
2
+ export { ParaCosmosProvider, useParaCosmos } from './providers/ParaCosmosContext.js';
3
3
  export * from './wallets/connectors/index.js';
package/dist/index.js CHANGED
@@ -1,3 +1,2 @@
1
- export { CosmosExternalWalletContext, CosmosExternalWalletProvider } from './providers/CosmosExternalWalletContext.js';
2
- export { ParaCosmosProvider } from './providers/ParaCosmosContext.js';
3
- export * from './wallets/connectors/index.js';
1
+ "use client";
2
+ import{createContext as AM,useEffect as F,useMemo as zM,useState as yM}from"react";import{createContext as $,useCallback as MM,useContext as IM,useEffect as f,useMemo as DM}from"react";import{useClient as gM,useExternalWalletProviderStore as k}from"@getpara/react-sdk";import{GrazProvider as NM,WalletType as jM,connect as R}from"@getpara/graz";import{jsx as v}from"react/jsx-runtime";var B=$({wallets:[],chains:[],onSwitchChain:()=>{}});function TM({children:w,wallets:x,chains:E,selectedChainId:g,multiChain:e,shouldUseSuggestChainAndConnect:c,onSwitchChain:z,...o}){let t=k(I=>I.updateState),C=k(I=>I.CosmosProvider),i=k(I=>I.cosmosContext),T=o.para??gM(),u=MM(async()=>{if(!T)return{error:"No para instance available"};try{let I=e?E.map(L=>L.chainId):g;return{result:await R({walletType:jM.PARA,chainId:I})}}catch(I){return{error:I instanceof Error?I.message:"Unknown error"}}},[T,R]);f(()=>{(!i||!C)&&t({CosmosProvider:h,cosmosContext:S})},[]),f(()=>{t({connectParaCosmosWallet:u})},[T]);let O=[];x.forEach(I=>{let y=I();O.push(y)});let d=DM(()=>({selectedChainId:g,wallets:O,chains:E,multiChain:e,shouldUseSuggestChainAndConnect:c,onSwitchChain:z}),[g,O,E,e,c,z]);return!i||!C?null:v(NM,{grazOptions:{chains:E,autoReconnect:!0,...o,para:T},children:v(B.Provider,{value:d,children:w})})}var m=()=>IM(B);import{WalletType as p}from"@getpara/react-sdk";import{checkWallet as xM,WalletType as J,useAccount as iM,useActiveChainIds as EM,useActiveWalletType as eM,useConnect as cM,useDisconnect as uM,useSuggestChainAndConnect as oM,getChainInfo as OM}from"@getpara/graz";import{jsx as CM}from"react/jsx-runtime";var tM={wallets:[],chains:[],chainId:void 0,disconnect:()=>Promise.resolve(),switchChain:()=>Promise.resolve({})},S=AM(tM);function h({children:w,para:x,onSwitchWallet:E}){let{selectedChainId:g,wallets:e,chains:c,multiChain:z,shouldUseSuggestChainAndConnect:o,onSwitchChain:t}=m(),{suggestAndConnectAsync:C}=oM(),{data:i,isConnecting:T,isReconnecting:u}=iM({chainId:z?c.map(M=>M.chainId):g,multiChain:z}),O=EM(),{connectAsync:d}=cM(),{disconnectAsync:I}=uM(),{walletType:y}=eM(),[L,r]=yM(!1),n=z?i?.[g]?.address.toString():i?.address.toString(),a=z?i?.[g]?.bech32Address:i?.bech32Address,W=async()=>{await I(),await x.logout()},P=async M=>{let D;if(!O.includes(M)){r(!0);let j;j=await Q(y,M),E(j),r(!1),j.error&&(D=[j?.error])}return D||t(M),{error:D}},_=async(M,D,N)=>{try{await x.externalWalletLogin({address:M,type:p.COSMOS,provider:N,addressBech32:D})}catch{throw await W(),"Error logging you in. Please try again."}};F(()=>{let M=x.externalWallets[n??""];!T&&!u&&!L&&a&&M&&M.address!==a&&y!==J.PARA&&x.setExternalWallet({address:n,type:p.COSMOS,provider:Z(y),addressBech32:a})},[T,u,a]),F(()=>{let M=x.externalWallets[n??""];!T&&!u&&!L&&n&&!M&&y!==J.PARA&&W()},[T,u]);let Q=async(M,D)=>{r(!0),D||await I();let N=D??(z?c.map(A=>A.chainId):g);if(!N){console.error("Chain id not provided.");return}let j,s,l;if(M)try{let A;if(o){if(typeof N!="string"){console.error("multiChain is not compatible with shouldUseSuggestChainAndConnect.");return}if(A=OM({chainId:N}),!A){console.error("Chain not found.");return}}let U=await(o?C({walletType:M,chainInfo:A}):d({walletType:M,chainId:N})),Y=typeof N=="string"?N:N[0];if(j=U.accounts[Y].bech32Address,s=U.accounts[Y].address.toString(),U.accounts[Y])try{await _(s,j,Z(M))}catch(q){s=void 0,j=void 0,l=q}}catch(A){A.message==="No wallet exists"?l=A.message:(console.error("Graz connection error:",A),l="An unknown error occurred.")}else{console.error("Graz wallet type not provided.");return}return r(!1),{address:j,bufferAddress:s,error:l}},Z=M=>e.find(D=>D.grazType===M||D.grazMobileType===M)?.name,b=e.map(M=>({connect:()=>Q(M.grazType),connectMobile:()=>Q(M.grazMobileType),getQrUri:()=>"",type:p.COSMOS,...M,installed:xM(M.grazType)})).filter(M=>!!M),G=c.map(M=>({id:M.chainId,name:M.chainName}));return CM(S.Provider,{value:zM(()=>({wallets:b,chains:G,chainId:g,disconnect:I,switchChain:P}),[b,G,g,I,P]),children:w})}var V="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzNl8xMTU0KSI+CiAgICA8cGF0aCBkPSJNMCAxMC4yQzAgNi4yNzE4NiA3LjE1MjU2ZS0wOCA0LjMwNzg0IDAuODg0MTYgMi44NjUwMUMxLjM3ODkgMi4wNTc2OCAyLjA1NzY3IDEuMzc4OSAyLjg2NTAxIDAuODg0MTU0QzQuMzA3ODMgLTEuNDMwNTFlLTA3IDYuMjcxODYgMCAxMC4yIDBIMTMuOEMxNy43MjgxIDAgMTkuNjkyMiAtMS40MzA1MWUtMDcgMjEuMTM1IDAuODg0MTU0QzIxLjk0MjMgMS4zNzg5IDIyLjYyMTEgMi4wNTc2OCAyMy4xMTU4IDIuODY1MDFDMjQgNC4zMDc4NCAyNCA2LjI3MTg2IDI0IDEwLjJWMTMuOEMyNCAxNy43MjgxIDI0IDE5LjY5MjIgMjMuMTE1OCAyMS4xMzVDMjIuNjIxMSAyMS45NDI0IDIxLjk0MjMgMjIuNjIxMSAyMS4xMzUgMjMuMTE1OEMxOS42OTIyIDI0IDE3LjcyODEgMjQgMTMuOCAyNEgxMC4yQzYuMjcxODYgMjQgNC4zMDc4MyAyNCAyLjg2NTAxIDIzLjExNThDMi4wNTc2NyAyMi42MjExIDEuMzc4OSAyMS45NDI0IDAuODg0MTYgMjEuMTM1QzcuMTUyNTZlLTA4IDE5LjY5MjIgMCAxNy43MjgxIDAgMTMuOFYxMC4yWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEwMzZfMTE1NCkiLz4KICAgIDxwYXRoIGQ9Ik0wIDEwLjJDMCA2LjI3MTg2IDcuMTUyNTZlLTA4IDQuMzA3ODQgMC44ODQxNiAyLjg2NTAxQzEuMzc4OSAyLjA1NzY4IDIuMDU3NjcgMS4zNzg5IDIuODY1MDEgMC44ODQxNTRDNC4zMDc4MyAtMS40MzA1MWUtMDcgNi4yNzE4NiAwIDEwLjIgMEgxMy44QzE3LjcyODEgMCAxOS42OTIyIC0xLjQzMDUxZS0wNyAyMS4xMzUgMC44ODQxNTRDMjEuOTQyMyAxLjM3ODkgMjIuNjIxMSAyLjA1NzY4IDIzLjExNTggMi44NjUwMUMyNCA0LjMwNzg0IDI0IDYuMjcxODYgMjQgMTAuMlYxMy44QzI0IDE3LjcyODEgMjQgMTkuNjkyMiAyMy4xMTU4IDIxLjEzNUMyMi42MjExIDIxLjk0MjQgMjEuOTQyMyAyMi42MjExIDIxLjEzNSAyMy4xMTU4QzE5LjY5MjIgMjQgMTcuNzI4MSAyNCAxMy44IDI0SDEwLjJDNi4yNzE4NiAyNCA0LjMwNzgzIDI0IDIuODY1MDEgMjMuMTE1OEMyLjA1NzY3IDIyLjYyMTEgMS4zNzg5IDIxLjk0MjQgMC44ODQxNiAyMS4xMzVDNy4xNTI1NmUtMDggMTkuNjkyMiAwIDE3LjcyODEgMCAxMy44VjEwLjJaIiBmaWxsPSJ1cmwoI3BhaW50MV9yYWRpYWxfMTAzNl8xMTU0KSIvPgogICAgPHBhdGggZD0iTTAgMTAuMkMwIDYuMjcxODYgNy4xNTI1NmUtMDggNC4zMDc4NCAwLjg4NDE2IDIuODY1MDFDMS4zNzg5IDIuMDU3NjggMi4wNTc2NyAxLjM3ODkgMi44NjUwMSAwLjg4NDE1NEM0LjMwNzgzIC0xLjQzMDUxZS0wNyA2LjI3MTg2IDAgMTAuMiAwSDEzLjhDMTcuNzI4MSAwIDE5LjY5MjIgLTEuNDMwNTFlLTA3IDIxLjEzNSAwLjg4NDE1NEMyMS45NDIzIDEuMzc4OSAyMi42MjExIDIuMDU3NjggMjMuMTE1OCAyLjg2NTAxQzI0IDQuMzA3ODQgMjQgNi4yNzE4NiAyNCAxMC4yVjEzLjhDMjQgMTcuNzI4MSAyNCAxOS42OTIyIDIzLjExNTggMjEuMTM1QzIyLjYyMTEgMjEuOTQyNCAyMS45NDIzIDIyLjYyMTEgMjEuMTM1IDIzLjExNThDMTkuNjkyMiAyNCAxNy43MjgxIDI0IDEzLjggMjRIMTAuMkM2LjI3MTg2IDI0IDQuMzA3ODMgMjQgMi44NjUwMSAyMy4xMTU4QzIuMDU3NjcgMjIuNjIxMSAxLjM3ODkgMjEuOTQyNCAwLjg4NDE2IDIxLjEzNUM3LjE1MjU2ZS0wOCAxOS42OTIyIDAgMTcuNzI4MSAwIDEzLjhWMTAuMloiIGZpbGw9InVybCgjcGFpbnQyX3JhZGlhbF8xMDM2XzExNTQpIi8+CiAgICA8cGF0aCBkPSJNMCAxMC4yQzAgNi4yNzE4NiA3LjE1MjU2ZS0wOCA0LjMwNzg0IDAuODg0MTYgMi44NjUwMUMxLjM3ODkgMi4wNTc2OCAyLjA1NzY3IDEuMzc4OSAyLjg2NTAxIDAuODg0MTU0QzQuMzA3ODMgLTEuNDMwNTFlLTA3IDYuMjcxODYgMCAxMC4yIDBIMTMuOEMxNy43MjgxIDAgMTkuNjkyMiAtMS40MzA1MWUtMDcgMjEuMTM1IDAuODg0MTU0QzIxLjk0MjMgMS4zNzg5IDIyLjYyMTEgMi4wNTc2OCAyMy4xMTU4IDIuODY1MDFDMjQgNC4zMDc4NCAyNCA2LjI3MTg2IDI0IDEwLjJWMTMuOEMyNCAxNy43MjgxIDI0IDE5LjY5MjIgMjMuMTE1OCAyMS4xMzVDMjIuNjIxMSAyMS45NDI0IDIxLjk0MjMgMjIuNjIxMSAyMS4xMzUgMjMuMTE1OEMxOS42OTIyIDI0IDE3LjcyODEgMjQgMTMuOCAyNEgxMC4yQzYuMjcxODYgMjQgNC4zMDc4MyAyNCAyLjg2NTAxIDIzLjExNThDMi4wNTc2NyAyMi42MjExIDEuMzc4OSAyMS45NDI0IDAuODg0MTYgMjEuMTM1QzcuMTUyNTZlLTA4IDE5LjY5MjIgMCAxNy43MjgxIDAgMTMuOFYxMC4yWiIgZmlsbD0idXJsKCNwYWludDNfcmFkaWFsXzEwMzZfMTE1NCkiLz4KICAgIDxwYXRoIGQ9Ik05LjE1OTM0IDE4LjZWMTIuNzUzN0wxNC44NDAyIDE4LjZIMTguMDAwMVYxOC40NDgzTDExLjQ2NjYgMTEuNzkyM0wxNy40OTYxIDUuNDc1ODlWNS40MDAwMkgxNC4zMTU5TDkuMTU5MzQgMTAuOTgxNVY1LjQwMDAySDYuNjAwMVYxOC42SDkuMTU5MzRaIiBmaWxsPSJ3aGl0ZSIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xMDM2XzExNTQiIHgxPSIxMiIgeTE9IjAiIHgyPSIxMiIgeTI9IjI0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxRkQxRkYiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMUJCOEZGIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzEwMzZfMTE1NCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjE0NjQyIDIzLjA5MDYpIHJvdGF0ZSgtNDUuMTU1Nikgc2NhbGUoMzguNDg4NCAzOS4wNjQyKSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyMzJERTMiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjMyREUzIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50Ml9yYWRpYWxfMTAzNl8xMTU0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDIyLjcwNzQgMjMuODYzKSByb3RhdGUoLTEzOC40NSkgc2NhbGUoMjQuMDY1IDM2LjY5MjMpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzhCNERGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4QjRERkYiIHN0b3Atb3BhY2l0eT0iMCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQzX3JhZGlhbF8xMDM2XzExNTQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEuODAwMSAwLjE3Nzk5OSkgcm90YXRlKDkwKSBzY2FsZSgxOC45MjIgNDUuOTA5OCkiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjRENUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFCQjhGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICA8L3JhZGlhbEdyYWRpZW50PgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDM2XzExNTQiPgogICAgICA8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+";import{WalletType as H}from"@getpara/graz";import{isMobile as LM}from"@getpara/react-sdk";var rM=()=>({id:"keplr",name:"Keplr",iconUrl:V,isExtension:!0,isMobile:LM()&&!0,downloadUrl:"https://www.keplr.app/get",grazType:H.KEPLR,grazMobileType:H.WC_KEPLR_MOBILE});var X="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzN18xMTY5KSI+CiAgICA8cGF0aCBkPSJNMjEuNjE4NyAxNC43NTAzQzIxLjYxODcgMTYuNDYyNiAyMC41NzQyIDE3LjY2NzIgMTguODc4MyAxOC40NDQzQzE3LjE4MjEgMTkuMjIxNCAxNC44MzU0IDE5LjU3MDIgMTIuMjM0OCAxOS41NzAyQzkuNjM0MjcgMTkuNTcwMiA3LjI3MjM0IDE5LjIyMTUgNS41NjA4NyAxOC40NDQzQzMuODQ5NjggMTcuNjY3MiAyLjc5MDA0IDE2LjQ2MjUgMi43OTAwNCAxNC43NTAzQzIuNzkwMDQgMTMuMDM3NCAzLjg0Mjg3IDExLjQ4NjkgNS41NDY3NSAxMC4zNjQyQzcuMjUwNiA5LjI0MTYzIDkuNjA0NjEgOC41NDc0OSAxMi4yMDQ0IDguNTQ3NDlDMTQuODA0MSA4LjU0NzQ5IDE3LjE1ODEgOS4yNDMxMyAxOC44NjE5IDEwLjM2NjVDMjAuNTY1OCAxMS40OSAyMS42MTg3IDEzLjA0MDUgMjEuNjE4NyAxNC43NTAzWiIgZmlsbD0iIzI0QTk1QSIgc3Ryb2tlPSIjMTM4RDNFIiBzdHJva2Utd2lkdGg9IjAuMDE2NTY3Ii8+CiAgICA8cGF0aCBkPSJNMTQuODMxNyA1LjE5NDcyTDE0LjgzNjYgNS4xOTU4MUwxNC44Mzk4IDUuMTkxOTJDMTUuNDQyMSA0LjQ2NTg2IDE2LjM1NDYgNCAxNy4zNzY2IDRDMTkuMTg5NSA0IDIwLjY2MTcgNS40NjQxOSAyMC42NjE3IDcuMjY3MTFDMjAuNjYxNyA3Ljg2MDAzIDIwLjUwMzUgOC40MTA2IDIwLjIyOTggOC44ODg1N0wyMC4yMjc2IDguODkyM0wyMC4yMjk1IDguODk2MTlDMjAuNDkxMiA5LjQ1MzE3IDIwLjYzMTIgMTAuMDQ2NCAyMC42MzEyIDEwLjY2MzhDMjAuNjMxMiAxMi4yNTI1IDE5LjY5MSAxMy42OTA4IDE4LjE2OTQgMTQuNzMyM0MxNi42NDc4IDE1Ljc3MzcgMTQuNTQ1MyAxNi40MTc4IDEyLjIyMzIgMTYuNDE3OEM5LjkwMTAyIDE2LjQxNzggNy43OTg2MyAxNS43NzM3IDYuMjc2OTcgMTQuNzMyM0M0Ljc1NTMxIDEzLjY5MDggMy44MTUxNiAxMi4yNTI1IDMuODE1MTYgMTAuNjYzOEMzLjgxNTE2IDEwLjA0NjQgMy45NTUxNCA5LjQ1MzE3IDQuMjE2ODkgOC44OTYxOUw0LjIxODczIDguODkyM0w0LjIxNjU5IDguODg4NTdDMy45NDI4MyA4LjQxMDYgMy43ODQ2NyA3Ljg2MDAzIDMuNzg0NjcgNy4yNjcxMUMzLjc4NDY3IDUuNDY0MTkgNS4yNTY4MiA0IDcuMDY5NzIgNEM4LjA4NTYzIDQgOC45OTgxOCA0LjQ2NTg1IDkuNjA2NTYgNS4xOTE5NUw5LjYwOTgyIDUuMTk1ODNMOS42MTQ3NCA1LjE5NDdDMTAuNDM3NSA1LjAwNjgyIDExLjMxNSA0LjkwOTgzIDEyLjIyMzIgNC45MDk4M0MxMy4xMzEzIDQuOTA5ODMgMTQuMDA4OSA1LjAxMjg4IDE0LjgzMTcgNS4xOTQ3MloiIGZpbGw9IiMzMkRBNkQiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTYuODAxMTcgOS4wODQzOEM3LjkxMjY5IDkuMDg0MzggOC44MTM3MyA4LjE4ODIyIDguODEzNzMgNy4wODI3NUM4LjgxMzczIDUuOTc3MjggNy45MTI2OSA1LjA4MTEyIDYuODAxMTcgNS4wODExMkM1LjY4OTYxIDUuMDgxMTIgNC43ODg1NyA1Ljk3NzI4IDQuNzg4NTcgNy4wODI3NUM0Ljc4ODU3IDguMTg4MjIgNS42ODk2MSA5LjA4NDM4IDYuODAxMTcgOS4wODQzOFoiIGZpbGw9IndoaXRlIi8+CiAgICA8cGF0aCBkPSJNMTcuNTM3NyA5LjA4NDM4QzE4LjY0OTMgOS4wODQzOCAxOS41NTAzIDguMTg4MjIgMTkuNTUwMyA3LjA4Mjc1QzE5LjU1MDMgNS45NzcyOCAxOC42NDkzIDUuMDgxMTIgMTcuNTM3NyA1LjA4MTEyQzE2LjQyNjIgNS4wODExMiAxNS41MjUxIDUuOTc3MjggMTUuNTI1MSA3LjA4Mjc1QzE1LjUyNTEgOC4xODgyMiAxNi40MjYyIDkuMDg0MzggMTcuNTM3NyA5LjA4NDM4WiIgZmlsbD0id2hpdGUiLz4KICAgIDxwYXRoIGQ9Ik0xLjMxNzM3IDE4LjE3ODhDMS4zMjUwOSAxOC4xNzU4IDEuMzI1MDcgMTguMTc1OCAxLjMyNTA1IDE4LjE3NThMMS4zMjQ0NiAxOC4xNzQyTDEuMzIyNTkgMTguMTY5NEwxLjMxNTI2IDE4LjE1MDJDMS4zMDg4MyAxOC4xMzMzIDEuMjk5MzQgMTguMTA4MyAxLjI4NzE1IDE4LjA3NTdDMS4yNjI3OCAxOC4wMTA3IDEuMjI3NTkgMTcuOTE1NSAxLjE4NDM2IDE3Ljc5NTRDMS4wOTc5MSAxNy41NTUxIDAuOTc5MzAxIDE3LjIxNDcgMC44NTA2OTEgMTYuODE0NEMwLjU5MzQ0NiAxNi4wMTM3IDAuMjk2MjcxIDE0Ljk3MzUgMC4xMzYyNzUgMTQuMDE1QzAuMDU2Mjc1OCAxMy41MzU3IDAuMDEwNjE3OCAxMy4wNzcxIDAuMDIxMzE4NiAxMi42NzkyQzAuMDMyMDI0NiAxMi4yODExIDAuMDk5MTI3NCAxMS45NDQ3IDAuMjQzNzk3IDExLjcwOTJDMC4zODgwNjkgMTEuNDc0MiAwLjYwOTc2MSAxMS4zMzkgMC45MzIwMzQgMTEuMzQzMUMxLjI1NTA3IDExLjM0NzMgMS42Nzk1MiAxMS40OTE0IDIuMjI3OTUgMTEuODE3MUM1LjUyNDA4IDEzLjc3NDQgNi4yNzM2NiAxNy4wMjgzIDYuNDUwNDEgMTguNTMxNkM2LjQ5ODYxIDE4Ljk1MTEgNi4xNjExIDE5LjMyMyA1LjczMjg1IDE5LjMyM0gwLjU3OTQxM0MwLjIzOTk2MiAxOS4zMjMgMC4xMTU0NDkgMTguODc5MiAwLjQxMjc4NyAxOC43MDc3TDEuMzIxNDkgMTguMTg2TDEuMzI3NjYgMTguMTgyNUwxLjMyNTA1IDE4LjE3NThMMS4zMTczNyAxOC4xNzg4WiIgZmlsbD0iIzMyREE2RCIvPgogICAgPHBhdGggZD0iTTEuMzI1MDUgMTguMTc1OEMxLjMyNTA3IDE4LjE3NTggMS4zMjUwOSAxOC4xNzU4IDEuMzE3MzcgMTguMTc4OEwxLjMyNTA1IDE4LjE3NThaTTEuMzI1MDUgMTguMTc1OEwxLjMyNDQ2IDE4LjE3NDJMMS4zMjI1OSAxOC4xNjk0TDEuMzE1MjYgMTguMTUwMkMxLjMwODgzIDE4LjEzMzMgMS4yOTkzNCAxOC4xMDgzIDEuMjg3MTUgMTguMDc1N0MxLjI2Mjc4IDE4LjAxMDcgMS4yMjc1OSAxNy45MTU1IDEuMTg0MzYgMTcuNzk1NEMxLjA5NzkxIDE3LjU1NTEgMC45NzkzMDEgMTcuMjE0NyAwLjg1MDY5MSAxNi44MTQ0QzAuNTkzNDQ2IDE2LjAxMzcgMC4yOTYyNzEgMTQuOTczNSAwLjEzNjI3NSAxNC4wMTVDMC4wNTYyNzU4IDEzLjUzNTcgMC4wMTA2MTc4IDEzLjA3NzEgMC4wMjEzMTg2IDEyLjY3OTJDMC4wMzIwMjQ2IDEyLjI4MTEgMC4wOTkxMjc0IDExLjk0NDcgMC4yNDM3OTcgMTEuNzA5MkMwLjM4ODA2OSAxMS40NzQyIDAuNjA5NzYxIDExLjMzOSAwLjkzMjAzNCAxMS4zNDMxQzEuMjU1MDcgMTEuMzQ3MyAxLjY3OTUyIDExLjQ5MTQgMi4yMjc5NSAxMS44MTcxQzUuNTI0MDggMTMuNzc0NCA2LjI3MzY2IDE3LjAyODMgNi40NTA0MSAxOC41MzE2QzYuNDk4NjEgMTguOTUxMSA2LjE2MTEgMTkuMzIzIDUuNzMyODUgMTkuMzIzSDAuNTc5NDEzQzAuMjM5OTYyIDE5LjMyMyAwLjExNTQ0OSAxOC44NzkyIDAuNDEyNzg3IDE4LjcwNzdMMS4zMjE0OSAxOC4xODZMMS4zMjc2NiAxOC4xODI1TDEuMzI1MDUgMTguMTc1OFoiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTIyLjgyMTIgMTguMTc2MUwyMi44MjkgMTguMTc4OEMyMi44MjQzIDE4LjE3NzIgMjIuODIyNCAxOC4xNzY1IDIyLjgyMTcgMTguMTc2MkMyMi44MjEyIDE4LjE3NjEgMjIuODIxMiAxOC4xNzYxIDIyLjgyMTIgMTguMTc2MUwyMi44MjEzIDE4LjE3NTdMMjIuODIxOCAxOC4xNzQ1TDIyLjgyMzQgMTguMTY5NkwyMi44MzAxIDE4LjE1MDVDMjIuODM1OSAxOC4xMzM2IDIyLjg0NDQgMTguMTA4NSAyMi44NTU1IDE4LjA3NkMyMi44Nzc1IDE4LjAxMDkgMjIuOTA5MyAxNy45MTU4IDIyLjk0ODMgMTcuNzk1NkMyMy4wMjY0IDE3LjU1NTQgMjMuMTMzNiAxNy4yMTQ5IDIzLjI0OTggMTYuODE0NkMyMy40ODIxIDE2LjAxMzkgMjMuNzUwNiAxNC45NzM3IDIzLjg5NSAxNC4wMTUxQzIzLjk2NzIgMTMuNTM1OCAyNC4wMDgzIDEzLjA3NzIgMjMuOTk4NSAxMi42NzkyQzIzLjk4ODcgMTIuMjgxIDIzLjkyNzggMTEuOTQ0NSAyMy43OTY5IDExLjcwODlDMjMuNzMxNSAxMS41OTExIDIzLjY0ODcgMTEuNDk4OCAyMy41NDYxIDExLjQzNjNDMjMuNDQzNiAxMS4zNzM5IDIzLjMyMDkgMTEuMzQxMSAyMy4xNzUyIDExLjM0MzFDMjIuODgzNSAxMS4zNDczIDIyLjUgMTEuNDkxMiAyMi4wMDQxIDExLjgxNjlDMTkuMDMxMSAxMy43NzQgMTguMzQ4NSAxNy4wMzQxIDE4LjE5NjEgMTguNTMxNUMxOC4xNTM4IDE4Ljk1MiAxOC40NTU4IDE5LjMyMyAxOC44NDA0IDE5LjMyM0gyMy40OTk5QzIzLjY1MDYgMTkuMzIzIDIzLjc1NDggMTkuMjEyOSAyMy43ODc2IDE5LjA3OThDMjMuODIwNSAxOC45NDY5IDIzLjc4MTYgMTguNzkzMSAyMy42NDc5IDE4LjcwNzVMMjIuODIxMiAxOC4xNzYxWk0yMi44MjEyIDE4LjE3NjFMMjIuODE5IDE4LjE4MjNMMjIuODI0NiAxOC4xODU4TDIzLjY0NzkgMTguNzA3NUwyMi44MjEyIDE4LjE3NjFaIiBmaWxsPSIjMzJEQTZEIi8+CiAgICA8cGF0aCBkPSJNMjIuODIxMiAxOC4xNzYxTDIyLjgyOSAxOC4xNzg4QzIyLjgyNDMgMTguMTc3MiAyMi44MjI0IDE4LjE3NjUgMjIuODIxNyAxOC4xNzYyQzIyLjgyMTIgMTguMTc2MSAyMi44MjEyIDE4LjE3NjEgMjIuODIxMiAxOC4xNzYxWk0yMi44MjEyIDE4LjE3NjFMMjIuODIxMyAxOC4xNzU3TDIyLjgyMTggMTguMTc0NUwyMi44MjM0IDE4LjE2OTZMMjIuODMwMSAxOC4xNTA1QzIyLjgzNTkgMTguMTMzNiAyMi44NDQ0IDE4LjEwODUgMjIuODU1NSAxOC4wNzZDMjIuODc3NSAxOC4wMTA5IDIyLjkwOTMgMTcuOTE1OCAyMi45NDgzIDE3Ljc5NTZDMjMuMDI2NCAxNy41NTU0IDIzLjEzMzYgMTcuMjE0OSAyMy4yNDk4IDE2LjgxNDZDMjMuNDgyMSAxNi4wMTM5IDIzLjc1MDYgMTQuOTczNyAyMy44OTUgMTQuMDE1MUMyMy45NjcyIDEzLjUzNTggMjQuMDA4MyAxMy4wNzcyIDIzLjk5ODUgMTIuNjc5MkMyMy45ODg3IDEyLjI4MSAyMy45Mjc4IDExLjk0NDUgMjMuNzk2OSAxMS43MDg5QzIzLjczMTUgMTEuNTkxMSAyMy42NDg3IDExLjQ5ODggMjMuNTQ2MSAxMS40MzYzQzIzLjQ0MzYgMTEuMzczOSAyMy4zMjA5IDExLjM0MTEgMjMuMTc1MiAxMS4zNDMxQzIyLjg4MzUgMTEuMzQ3MyAyMi41IDExLjQ5MTIgMjIuMDA0MSAxMS44MTY5QzE5LjAzMTEgMTMuNzc0IDE4LjM0ODUgMTcuMDM0MSAxOC4xOTYxIDE4LjUzMTVDMTguMTUzOCAxOC45NTIgMTguNDU1OCAxOS4zMjMgMTguODQwNCAxOS4zMjNIMjMuNDk5OUMyMy42NTA2IDE5LjMyMyAyMy43NTQ4IDE5LjIxMjkgMjMuNzg3NiAxOS4wNzk4QzIzLjgyMDUgMTguOTQ2OSAyMy43ODE2IDE4Ljc5MzEgMjMuNjQ3OSAxOC43MDc1TTIyLjgyMTIgMTguMTc2MUwyMy42NDc5IDE4LjcwNzVNMjIuODIxMiAxOC4xNzYxTDIyLjgxOSAxOC4xODIzTDIyLjgyNDYgMTguMTg1OEwyMy42NDc5IDE4LjcwNzUiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTYuODIxNzIgOC4yODg4MUM3LjQ4NDggOC4yODg4MSA4LjAyMjM1IDcuNzUxMjkgOC4wMjIzNSA3LjA4ODJDOC4wMjIzNSA2LjQyNTExIDcuNDg0OCA1Ljg4NzU3IDYuODIxNzIgNS44ODc1N0M2LjE1ODY0IDUuODg3NTcgNS42MjEwOSA2LjQyNTExIDUuNjIxMDkgNy4wODgyQzUuNjIxMDkgNy43NTEyOSA2LjE1ODY0IDguMjg4ODEgNi44MjE3MiA4LjI4ODgxWiIgZmlsbD0iIzA5MjUxMSIvPgogICAgPHBhdGggZD0iTTE3LjU1ODMgOC4yODg4MUMxOC4yMjE0IDguMjg4ODEgMTguNzU4OSA3Ljc1MTI5IDE4Ljc1ODkgNy4wODgyQzE4Ljc1ODkgNi40MjUxMSAxOC4yMjE0IDUuODg3NTcgMTcuNTU4MyA1Ljg4NzU3QzE2Ljg5NTIgNS44ODc1NyAxNi4zNTc3IDYuNDI1MTEgMTYuMzU3NyA3LjA4ODJDMTYuMzU3NyA3Ljc1MTI5IDE2Ljg5NTIgOC4yODg4MSAxNy41NTgzIDguMjg4ODFaIiBmaWxsPSIjMDkyNTExIi8+CiAgICA8cGF0aCBkPSJNMTUuNDI2MiAxMS45MTI1QzE1LjM4OTkgMTIuMzM0NSAxNS4yNzA5IDEyLjc0NTEgMTUuMDc1OSAxMy4xMjFDMTQuODgwOSAxMy40OTY5IDE0LjYxMzggMTMuODMwNiAxNC4yODk4IDE0LjEwMzNDMTMuOTY1OCAxNC4zNzYgMTMuNTkxMyAxNC41ODIxIDEzLjE4NzYgMTQuNzEwMUMxMi43ODQgMTQuODM4IDEyLjM1OTEgMTQuODg1MiAxMS45MzcyIDE0Ljg0ODlDMTEuNTE1MyAxNC44MTI2IDExLjEwNDYgMTQuNjkzNSAxMC43Mjg3IDE0LjQ5ODVDMTAuMzUyOSAxNC4zMDM2IDEwLjAxOTEgMTQuMDM2NCA5Ljc0NjM5IDEzLjcxMjRDOS40NzM3NiAxMy4zODg1IDkuMjY3NTYgMTMuMDEzOSA5LjEzOTY0IDEyLjYxMDNDOS4wMTE3MSAxMi4yMDY2IDguOTY0NTkgMTEuNzgxNyA5LjAwMDg4IDExLjM1OThMMTIuMjEzNiAxMS42MzYyTDE1LjQyNjIgMTEuOTEyNVoiIGZpbGw9IiMwOTI1MTEiLz4KICA8L2c+CiAgPGRlZnM+CiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzEwMzdfMTE2OSI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=";import{WalletType as K}from"@getpara/graz";import{isMobile as nM}from"@getpara/react-sdk";var aM=()=>({id:"leap",name:"Leap",iconUrl:X,isExtension:!0,isMobile:nM()&&!0,downloadUrl:"https://www.leapwallet.io/download",grazType:K.LEAP,grazMobileType:K.WC_LEAP_MOBILE});export{S as CosmosExternalWalletContext,h as CosmosExternalWalletProvider,TM as ParaCosmosProvider,rM as keplrWallet,aM as leapWallet,m as useParaCosmos};
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getpara/cosmos-wallet-connectors",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,10 +9,11 @@
9
9
  "./connectors": "./dist/wallets/connectors/index.js"
10
10
  },
11
11
  "dependencies": {
12
- "@getpara/react-sdk": "1.2.0"
12
+ "@getpara/react-sdk": "1.3.0"
13
13
  },
14
14
  "scripts": {
15
- "build": "rm -rf dist && tsc",
15
+ "build": "rm -rf dist && yarn typegen && node ./scripts/build.mjs",
16
+ "typegen": "tsc --emitDeclarationOnly",
16
17
  "test": "vitest run --coverage"
17
18
  },
18
19
  "devDependencies": {
@@ -36,5 +37,5 @@
36
37
  "dist",
37
38
  "package.json"
38
39
  ],
39
- "gitHead": "a9162c59be1456292d46c56787c1d5bf313bf24b"
40
+ "gitHead": "2d421556a0a1497abd08e18dca94f08ec3ad640b"
40
41
  }
@@ -1,179 +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 { useParaCosmos } from './ParaCosmosContext.js';
13
- import { WalletType } from '@getpara/react-sdk';
14
- import { checkWallet, WalletType as GrazWalletType, useAccount, useActiveChainIds, useActiveWalletType, useConnect, useDisconnect, useSuggestChainAndConnect, getChainInfo, } from '@getpara/graz';
15
- export const defaultCosmosExternalWallet = {
16
- wallets: [],
17
- chains: [],
18
- chainId: undefined,
19
- disconnect: () => Promise.resolve(),
20
- switchChain: () => Promise.resolve({}),
21
- };
22
- export const CosmosExternalWalletContext = createContext(defaultCosmosExternalWallet);
23
- export function CosmosExternalWalletProvider({ children, para, onSwitchWallet }) {
24
- var _a, _b;
25
- const { selectedChainId, wallets: incompleteWallets, chains, multiChain, shouldUseSuggestChainAndConnect, onSwitchChain, } = useParaCosmos();
26
- const { suggestAndConnectAsync } = useSuggestChainAndConnect();
27
- const { data: account, isConnecting, isReconnecting, } = useAccount({
28
- chainId: multiChain ? chains.map(c => c.chainId) : selectedChainId,
29
- multiChain,
30
- });
31
- const activeChainIds = useActiveChainIds();
32
- const { connectAsync } = useConnect();
33
- const { disconnectAsync } = useDisconnect();
34
- const { walletType } = useActiveWalletType();
35
- const [isLocalConnecting, setIsLocalConnecting] = useState(false);
36
- const bufferAddress = multiChain ? (_a = account === null || account === void 0 ? void 0 : account[selectedChainId]) === null || _a === void 0 ? void 0 : _a.address.toString() : account === null || account === void 0 ? void 0 : account.address.toString();
37
- const address = multiChain ? (_b = account === null || account === void 0 ? void 0 : account[selectedChainId]) === null || _b === void 0 ? void 0 : _b.bech32Address : account === null || account === void 0 ? void 0 : account.bech32Address;
38
- const reset = () => __awaiter(this, void 0, void 0, function* () {
39
- yield disconnectAsync();
40
- yield para.logout();
41
- });
42
- const switchChain = (chainId) => __awaiter(this, void 0, void 0, function* () {
43
- let error;
44
- const hasActiveChain = activeChainIds.includes(chainId);
45
- if (!hasActiveChain) {
46
- setIsLocalConnecting(true);
47
- let changeResp;
48
- changeResp = yield connect(walletType, chainId);
49
- // Calling onSwitchWallet here so the modal correctly processes any error from the reconnection.
50
- onSwitchWallet(changeResp);
51
- setIsLocalConnecting(false);
52
- if (changeResp.error) {
53
- error = [changeResp === null || changeResp === void 0 ? void 0 : changeResp.error];
54
- }
55
- }
56
- if (!error) {
57
- onSwitchChain(chainId);
58
- }
59
- return { error };
60
- });
61
- const login = (bufferAddress, address, providerName) => __awaiter(this, void 0, void 0, function* () {
62
- try {
63
- yield para.externalWalletLogin({
64
- address: bufferAddress,
65
- type: WalletType.COSMOS,
66
- provider: providerName,
67
- addressBech32: address,
68
- });
69
- }
70
- catch (err) {
71
- yield reset();
72
- throw 'Error logging you in. Please try again.';
73
- }
74
- });
75
- useEffect(() => {
76
- const storedExternalWallet = para.externalWallets[bufferAddress !== null && bufferAddress !== void 0 ? bufferAddress : ''];
77
- if (!isConnecting &&
78
- !isReconnecting &&
79
- !isLocalConnecting &&
80
- address &&
81
- storedExternalWallet &&
82
- storedExternalWallet.address !== address &&
83
- walletType !== GrazWalletType.PARA) {
84
- para.setExternalWallet({
85
- address: bufferAddress,
86
- type: WalletType.COSMOS,
87
- provider: getProviderName(walletType),
88
- addressBech32: address,
89
- });
90
- }
91
- }, [isConnecting, isReconnecting, address]);
92
- useEffect(() => {
93
- const storedExternalWallet = para.externalWallets[bufferAddress !== null && bufferAddress !== void 0 ? bufferAddress : ''];
94
- if (!isConnecting &&
95
- !isReconnecting &&
96
- !isLocalConnecting &&
97
- !!bufferAddress &&
98
- !storedExternalWallet &&
99
- walletType !== GrazWalletType.PARA) {
100
- reset();
101
- }
102
- }, [isConnecting, isReconnecting]);
103
- const connect = (walletType, chainId) => __awaiter(this, void 0, void 0, function* () {
104
- setIsLocalConnecting(true);
105
- // chainID is passed in when switching chains, in that case we can skip disconnecting
106
- if (!chainId) {
107
- yield disconnectAsync();
108
- }
109
- const _chainId = chainId !== null && chainId !== void 0 ? chainId : (multiChain ? chains.map(c => c.chainId) : selectedChainId);
110
- if (!_chainId) {
111
- console.error('Chain id not provided.');
112
- return;
113
- }
114
- let address;
115
- let bufferAddress;
116
- let error;
117
- // The logic in the modal should prevent this from happening, logging for edge cases.
118
- if (!walletType) {
119
- console.error('Graz wallet type not provided.');
120
- return;
121
- }
122
- else {
123
- try {
124
- let chainInfo;
125
- if (shouldUseSuggestChainAndConnect) {
126
- if (typeof _chainId !== 'string') {
127
- console.error('multiChain is not compatible with shouldUseSuggestChainAndConnect.');
128
- return;
129
- }
130
- chainInfo = getChainInfo({ chainId: _chainId });
131
- if (!chainInfo) {
132
- console.error('Chain not found.');
133
- return;
134
- }
135
- }
136
- const connectedWallet = yield (shouldUseSuggestChainAndConnect
137
- ? suggestAndConnectAsync({ walletType, chainInfo })
138
- : connectAsync({ walletType, chainId: _chainId }));
139
- const firstChain = typeof _chainId === 'string' ? _chainId : _chainId[0];
140
- address = connectedWallet.accounts[firstChain].bech32Address;
141
- bufferAddress = connectedWallet.accounts[firstChain].address.toString();
142
- if (connectedWallet.accounts[firstChain]) {
143
- try {
144
- yield login(bufferAddress, address, getProviderName(walletType));
145
- }
146
- catch (err) {
147
- bufferAddress = undefined;
148
- address = undefined;
149
- error = err;
150
- }
151
- }
152
- }
153
- catch (err) {
154
- if (err.message === 'No wallet exists') {
155
- error = err.message;
156
- }
157
- else {
158
- console.error('Graz connection error:', err);
159
- error = 'An unknown error occurred.';
160
- }
161
- }
162
- }
163
- setIsLocalConnecting(false);
164
- return { address, bufferAddress, error };
165
- });
166
- const getProviderName = (walletType) => { var _a; return (_a = incompleteWallets.find(w => w.grazType === walletType || w.grazMobileType === walletType)) === null || _a === void 0 ? void 0 : _a.name; };
167
- const wallets = incompleteWallets
168
- .map(wallet => {
169
- return Object.assign(Object.assign({ connect: () => connect(wallet.grazType), connectMobile: () => connect(wallet.grazMobileType), getQrUri: () => '', type: WalletType.COSMOS }, wallet), { installed: checkWallet(wallet.grazType) });
170
- })
171
- .filter(w => !!w);
172
- const formattedChains = chains.map(c => {
173
- return {
174
- id: c.chainId,
175
- name: c.chainName,
176
- };
177
- });
178
- return (_jsx(CosmosExternalWalletContext.Provider, { value: useMemo(() => ({ wallets, chains: formattedChains, chainId: selectedChainId, disconnect: disconnectAsync, switchChain }), [wallets, formattedChains, selectedChainId, disconnectAsync, switchChain]), children: children }));
179
- }
@@ -1,79 +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 { createContext, useCallback, useContext, useEffect, useMemo } from 'react';
23
- import { useClient, useExternalWalletProviderStore } from '@getpara/react-sdk';
24
- import { CosmosExternalWalletContext, CosmosExternalWalletProvider } from './CosmosExternalWalletContext.js';
25
- import { GrazProvider, WalletType, connect } from '@getpara/graz';
26
- export const ParaCosmosContext = createContext({ wallets: [], chains: [], onSwitchChain: () => { } });
27
- export function ParaCosmosProvider(_a) {
28
- var _b;
29
- var { children, wallets, chains, selectedChainId, multiChain, shouldUseSuggestChainAndConnect, onSwitchChain } = _a, grazOpts = __rest(_a, ["children", "wallets", "chains", "selectedChainId", "multiChain", "shouldUseSuggestChainAndConnect", "onSwitchChain"]);
30
- const updateExternalWalletProviderState = useExternalWalletProviderStore(state => state.updateState);
31
- const CosmosProvider = useExternalWalletProviderStore(state => state.CosmosProvider);
32
- const cosmosContext = useExternalWalletProviderStore(state => state.cosmosContext);
33
- const para = (_b = grazOpts.para) !== null && _b !== void 0 ? _b : useClient();
34
- const connectParaCosmosWallet = useCallback(() => __awaiter(this, void 0, void 0, function* () {
35
- if (!para) {
36
- return { error: 'No para instance available' };
37
- }
38
- try {
39
- const chainId = multiChain ? chains.map(c => c.chainId) : selectedChainId;
40
- const result = yield connect({ walletType: WalletType.PARA, chainId });
41
- return { result };
42
- }
43
- catch (err) {
44
- const error = err instanceof Error ? err.message : 'Unknown error';
45
- return { error };
46
- }
47
- }), [para, connect]);
48
- useEffect(() => {
49
- if (!cosmosContext || !CosmosProvider) {
50
- updateExternalWalletProviderState({
51
- CosmosProvider: CosmosExternalWalletProvider,
52
- cosmosContext: CosmosExternalWalletContext,
53
- });
54
- }
55
- }, []);
56
- useEffect(() => {
57
- updateExternalWalletProviderState({
58
- connectParaCosmosWallet,
59
- });
60
- }, [para]);
61
- const walletsWithType = [];
62
- wallets.forEach(w => {
63
- const wallet = w();
64
- walletsWithType.push(wallet);
65
- });
66
- const value = useMemo(() => ({
67
- selectedChainId,
68
- wallets: walletsWithType,
69
- chains,
70
- multiChain,
71
- shouldUseSuggestChainAndConnect,
72
- onSwitchChain,
73
- }), [selectedChainId, walletsWithType, chains, multiChain, shouldUseSuggestChainAndConnect, onSwitchChain]);
74
- if (!cosmosContext || !CosmosProvider) {
75
- return null;
76
- }
77
- return (_jsx(GrazProvider, { grazOptions: Object.assign(Object.assign({ chains, autoReconnect: true }, grazOpts), { para }), children: _jsx(ParaCosmosContext.Provider, { value: value, children: children }) }));
78
- }
79
- export const useParaCosmos = () => useContext(ParaCosmosContext);
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export const hasInstalledExtension = (id) => !!window[id];
@@ -1,3 +0,0 @@
1
- import { keplrWallet } from './keplr/keplr.js';
2
- import { leapWallet } from './leap/leap.js';
3
- export { keplrWallet, leapWallet };
@@ -1,15 +0,0 @@
1
- import { icon } from './keplrIcon.js';
2
- import { WalletType } from '@getpara/graz';
3
- import { isMobile } from '@getpara/react-sdk';
4
- export const keplrWallet = () => {
5
- return {
6
- id: 'keplr',
7
- name: 'Keplr',
8
- iconUrl: icon,
9
- isExtension: true,
10
- isMobile: isMobile() && true,
11
- downloadUrl: 'https://www.keplr.app/get',
12
- grazType: WalletType.KEPLR,
13
- grazMobileType: WalletType.WC_KEPLR_MOBILE,
14
- };
15
- };
@@ -1 +0,0 @@
1
- export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzNl8xMTU0KSI+CiAgICA8cGF0aCBkPSJNMCAxMC4yQzAgNi4yNzE4NiA3LjE1MjU2ZS0wOCA0LjMwNzg0IDAuODg0MTYgMi44NjUwMUMxLjM3ODkgMi4wNTc2OCAyLjA1NzY3IDEuMzc4OSAyLjg2NTAxIDAuODg0MTU0QzQuMzA3ODMgLTEuNDMwNTFlLTA3IDYuMjcxODYgMCAxMC4yIDBIMTMuOEMxNy43MjgxIDAgMTkuNjkyMiAtMS40MzA1MWUtMDcgMjEuMTM1IDAuODg0MTU0QzIxLjk0MjMgMS4zNzg5IDIyLjYyMTEgMi4wNTc2OCAyMy4xMTU4IDIuODY1MDFDMjQgNC4zMDc4NCAyNCA2LjI3MTg2IDI0IDEwLjJWMTMuOEMyNCAxNy43MjgxIDI0IDE5LjY5MjIgMjMuMTE1OCAyMS4xMzVDMjIuNjIxMSAyMS45NDI0IDIxLjk0MjMgMjIuNjIxMSAyMS4xMzUgMjMuMTE1OEMxOS42OTIyIDI0IDE3LjcyODEgMjQgMTMuOCAyNEgxMC4yQzYuMjcxODYgMjQgNC4zMDc4MyAyNCAyLjg2NTAxIDIzLjExNThDMi4wNTc2NyAyMi42MjExIDEuMzc4OSAyMS45NDI0IDAuODg0MTYgMjEuMTM1QzcuMTUyNTZlLTA4IDE5LjY5MjIgMCAxNy43MjgxIDAgMTMuOFYxMC4yWiIgZmlsbD0idXJsKCNwYWludDBfbGluZWFyXzEwMzZfMTE1NCkiLz4KICAgIDxwYXRoIGQ9Ik0wIDEwLjJDMCA2LjI3MTg2IDcuMTUyNTZlLTA4IDQuMzA3ODQgMC44ODQxNiAyLjg2NTAxQzEuMzc4OSAyLjA1NzY4IDIuMDU3NjcgMS4zNzg5IDIuODY1MDEgMC44ODQxNTRDNC4zMDc4MyAtMS40MzA1MWUtMDcgNi4yNzE4NiAwIDEwLjIgMEgxMy44QzE3LjcyODEgMCAxOS42OTIyIC0xLjQzMDUxZS0wNyAyMS4xMzUgMC44ODQxNTRDMjEuOTQyMyAxLjM3ODkgMjIuNjIxMSAyLjA1NzY4IDIzLjExNTggMi44NjUwMUMyNCA0LjMwNzg0IDI0IDYuMjcxODYgMjQgMTAuMlYxMy44QzI0IDE3LjcyODEgMjQgMTkuNjkyMiAyMy4xMTU4IDIxLjEzNUMyMi42MjExIDIxLjk0MjQgMjEuOTQyMyAyMi42MjExIDIxLjEzNSAyMy4xMTU4QzE5LjY5MjIgMjQgMTcuNzI4MSAyNCAxMy44IDI0SDEwLjJDNi4yNzE4NiAyNCA0LjMwNzgzIDI0IDIuODY1MDEgMjMuMTE1OEMyLjA1NzY3IDIyLjYyMTEgMS4zNzg5IDIxLjk0MjQgMC44ODQxNiAyMS4xMzVDNy4xNTI1NmUtMDggMTkuNjkyMiAwIDE3LjcyODEgMCAxMy44VjEwLjJaIiBmaWxsPSJ1cmwoI3BhaW50MV9yYWRpYWxfMTAzNl8xMTU0KSIvPgogICAgPHBhdGggZD0iTTAgMTAuMkMwIDYuMjcxODYgNy4xNTI1NmUtMDggNC4zMDc4NCAwLjg4NDE2IDIuODY1MDFDMS4zNzg5IDIuMDU3NjggMi4wNTc2NyAxLjM3ODkgMi44NjUwMSAwLjg4NDE1NEM0LjMwNzgzIC0xLjQzMDUxZS0wNyA2LjI3MTg2IDAgMTAuMiAwSDEzLjhDMTcuNzI4MSAwIDE5LjY5MjIgLTEuNDMwNTFlLTA3IDIxLjEzNSAwLjg4NDE1NEMyMS45NDIzIDEuMzc4OSAyMi42MjExIDIuMDU3NjggMjMuMTE1OCAyLjg2NTAxQzI0IDQuMzA3ODQgMjQgNi4yNzE4NiAyNCAxMC4yVjEzLjhDMjQgMTcuNzI4MSAyNCAxOS42OTIyIDIzLjExNTggMjEuMTM1QzIyLjYyMTEgMjEuOTQyNCAyMS45NDIzIDIyLjYyMTEgMjEuMTM1IDIzLjExNThDMTkuNjkyMiAyNCAxNy43MjgxIDI0IDEzLjggMjRIMTAuMkM2LjI3MTg2IDI0IDQuMzA3ODMgMjQgMi44NjUwMSAyMy4xMTU4QzIuMDU3NjcgMjIuNjIxMSAxLjM3ODkgMjEuOTQyNCAwLjg4NDE2IDIxLjEzNUM3LjE1MjU2ZS0wOCAxOS42OTIyIDAgMTcuNzI4MSAwIDEzLjhWMTAuMloiIGZpbGw9InVybCgjcGFpbnQyX3JhZGlhbF8xMDM2XzExNTQpIi8+CiAgICA8cGF0aCBkPSJNMCAxMC4yQzAgNi4yNzE4NiA3LjE1MjU2ZS0wOCA0LjMwNzg0IDAuODg0MTYgMi44NjUwMUMxLjM3ODkgMi4wNTc2OCAyLjA1NzY3IDEuMzc4OSAyLjg2NTAxIDAuODg0MTU0QzQuMzA3ODMgLTEuNDMwNTFlLTA3IDYuMjcxODYgMCAxMC4yIDBIMTMuOEMxNy43MjgxIDAgMTkuNjkyMiAtMS40MzA1MWUtMDcgMjEuMTM1IDAuODg0MTU0QzIxLjk0MjMgMS4zNzg5IDIyLjYyMTEgMi4wNTc2OCAyMy4xMTU4IDIuODY1MDFDMjQgNC4zMDc4NCAyNCA2LjI3MTg2IDI0IDEwLjJWMTMuOEMyNCAxNy43MjgxIDI0IDE5LjY5MjIgMjMuMTE1OCAyMS4xMzVDMjIuNjIxMSAyMS45NDI0IDIxLjk0MjMgMjIuNjIxMSAyMS4xMzUgMjMuMTE1OEMxOS42OTIyIDI0IDE3LjcyODEgMjQgMTMuOCAyNEgxMC4yQzYuMjcxODYgMjQgNC4zMDc4MyAyNCAyLjg2NTAxIDIzLjExNThDMi4wNTc2NyAyMi42MjExIDEuMzc4OSAyMS45NDI0IDAuODg0MTYgMjEuMTM1QzcuMTUyNTZlLTA4IDE5LjY5MjIgMCAxNy43MjgxIDAgMTMuOFYxMC4yWiIgZmlsbD0idXJsKCNwYWludDNfcmFkaWFsXzEwMzZfMTE1NCkiLz4KICAgIDxwYXRoIGQ9Ik05LjE1OTM0IDE4LjZWMTIuNzUzN0wxNC44NDAyIDE4LjZIMTguMDAwMVYxOC40NDgzTDExLjQ2NjYgMTEuNzkyM0wxNy40OTYxIDUuNDc1ODlWNS40MDAwMkgxNC4zMTU5TDkuMTU5MzQgMTAuOTgxNVY1LjQwMDAySDYuNjAwMVYxOC42SDkuMTU5MzRaIiBmaWxsPSJ3aGl0ZSIvPgogIDwvZz4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0icGFpbnQwX2xpbmVhcl8xMDM2XzExNTQiIHgxPSIxMiIgeTE9IjAiIHgyPSIxMiIgeTI9IjI0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMxRkQxRkYiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMUJCOEZGIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJwYWludDFfcmFkaWFsXzEwMzZfMTE1NCIgY3g9IjAiIGN5PSIwIiByPSIxIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgxLjE0NjQyIDIzLjA5MDYpIHJvdGF0ZSgtNDUuMTU1Nikgc2NhbGUoMzguNDg4NCAzOS4wNjQyKSI+CiAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyMzJERTMiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjMyREUzIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8cmFkaWFsR3JhZGllbnQgaWQ9InBhaW50Ml9yYWRpYWxfMTAzNl8xMTU0IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDIyLjcwNzQgMjMuODYzKSByb3RhdGUoLTEzOC40NSkgc2NhbGUoMjQuMDY1IDM2LjY5MjMpIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzhCNERGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM4QjRERkYiIHN0b3Atb3BhY2l0eT0iMCIvPgogICAgPC9yYWRpYWxHcmFkaWVudD4KICAgIDxyYWRpYWxHcmFkaWVudCBpZD0icGFpbnQzX3JhZGlhbF8xMDM2XzExNTQiIGN4PSIwIiBjeT0iMCIgcj0iMSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIGdyYWRpZW50VHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTEuODAwMSAwLjE3Nzk5OSkgcm90YXRlKDkwKSBzY2FsZSgxOC45MjIgNDUuOTA5OCkiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjRENUZGIi8+CiAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFCQjhGRiIgc3RvcC1vcGFjaXR5PSIwIi8+CiAgICA8L3JhZGlhbEdyYWRpZW50PgogICAgPGNsaXBQYXRoIGlkPSJjbGlwMF8xMDM2XzExNTQiPgogICAgICA8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IndoaXRlIi8+CiAgICA8L2NsaXBQYXRoPgogIDwvZGVmcz4KPC9zdmc+';
@@ -1,15 +0,0 @@
1
- import { icon } from './leapIcon.js';
2
- import { WalletType } from '@getpara/graz';
3
- import { isMobile } from '@getpara/react-sdk';
4
- export const leapWallet = () => {
5
- return {
6
- id: 'leap',
7
- name: 'Leap',
8
- iconUrl: icon,
9
- isExtension: true,
10
- isMobile: isMobile() && true,
11
- downloadUrl: 'https://www.leapwallet.io/download',
12
- grazType: WalletType.LEAP,
13
- grazMobileType: WalletType.WC_LEAP_MOBILE,
14
- };
15
- };
@@ -1 +0,0 @@
1
- export const icon = 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIj4KICA8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfMTAzN18xMTY5KSI+CiAgICA8cGF0aCBkPSJNMjEuNjE4NyAxNC43NTAzQzIxLjYxODcgMTYuNDYyNiAyMC41NzQyIDE3LjY2NzIgMTguODc4MyAxOC40NDQzQzE3LjE4MjEgMTkuMjIxNCAxNC44MzU0IDE5LjU3MDIgMTIuMjM0OCAxOS41NzAyQzkuNjM0MjcgMTkuNTcwMiA3LjI3MjM0IDE5LjIyMTUgNS41NjA4NyAxOC40NDQzQzMuODQ5NjggMTcuNjY3MiAyLjc5MDA0IDE2LjQ2MjUgMi43OTAwNCAxNC43NTAzQzIuNzkwMDQgMTMuMDM3NCAzLjg0Mjg3IDExLjQ4NjkgNS41NDY3NSAxMC4zNjQyQzcuMjUwNiA5LjI0MTYzIDkuNjA0NjEgOC41NDc0OSAxMi4yMDQ0IDguNTQ3NDlDMTQuODA0MSA4LjU0NzQ5IDE3LjE1ODEgOS4yNDMxMyAxOC44NjE5IDEwLjM2NjVDMjAuNTY1OCAxMS40OSAyMS42MTg3IDEzLjA0MDUgMjEuNjE4NyAxNC43NTAzWiIgZmlsbD0iIzI0QTk1QSIgc3Ryb2tlPSIjMTM4RDNFIiBzdHJva2Utd2lkdGg9IjAuMDE2NTY3Ii8+CiAgICA8cGF0aCBkPSJNMTQuODMxNyA1LjE5NDcyTDE0LjgzNjYgNS4xOTU4MUwxNC44Mzk4IDUuMTkxOTJDMTUuNDQyMSA0LjQ2NTg2IDE2LjM1NDYgNCAxNy4zNzY2IDRDMTkuMTg5NSA0IDIwLjY2MTcgNS40NjQxOSAyMC42NjE3IDcuMjY3MTFDMjAuNjYxNyA3Ljg2MDAzIDIwLjUwMzUgOC40MTA2IDIwLjIyOTggOC44ODg1N0wyMC4yMjc2IDguODkyM0wyMC4yMjk1IDguODk2MTlDMjAuNDkxMiA5LjQ1MzE3IDIwLjYzMTIgMTAuMDQ2NCAyMC42MzEyIDEwLjY2MzhDMjAuNjMxMiAxMi4yNTI1IDE5LjY5MSAxMy42OTA4IDE4LjE2OTQgMTQuNzMyM0MxNi42NDc4IDE1Ljc3MzcgMTQuNTQ1MyAxNi40MTc4IDEyLjIyMzIgMTYuNDE3OEM5LjkwMTAyIDE2LjQxNzggNy43OTg2MyAxNS43NzM3IDYuMjc2OTcgMTQuNzMyM0M0Ljc1NTMxIDEzLjY5MDggMy44MTUxNiAxMi4yNTI1IDMuODE1MTYgMTAuNjYzOEMzLjgxNTE2IDEwLjA0NjQgMy45NTUxNCA5LjQ1MzE3IDQuMjE2ODkgOC44OTYxOUw0LjIxODczIDguODkyM0w0LjIxNjU5IDguODg4NTdDMy45NDI4MyA4LjQxMDYgMy43ODQ2NyA3Ljg2MDAzIDMuNzg0NjcgNy4yNjcxMUMzLjc4NDY3IDUuNDY0MTkgNS4yNTY4MiA0IDcuMDY5NzIgNEM4LjA4NTYzIDQgOC45OTgxOCA0LjQ2NTg1IDkuNjA2NTYgNS4xOTE5NUw5LjYwOTgyIDUuMTk1ODNMOS42MTQ3NCA1LjE5NDdDMTAuNDM3NSA1LjAwNjgyIDExLjMxNSA0LjkwOTgzIDEyLjIyMzIgNC45MDk4M0MxMy4xMzEzIDQuOTA5ODMgMTQuMDA4OSA1LjAxMjg4IDE0LjgzMTcgNS4xOTQ3MloiIGZpbGw9IiMzMkRBNkQiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTYuODAxMTcgOS4wODQzOEM3LjkxMjY5IDkuMDg0MzggOC44MTM3MyA4LjE4ODIyIDguODEzNzMgNy4wODI3NUM4LjgxMzczIDUuOTc3MjggNy45MTI2OSA1LjA4MTEyIDYuODAxMTcgNS4wODExMkM1LjY4OTYxIDUuMDgxMTIgNC43ODg1NyA1Ljk3NzI4IDQuNzg4NTcgNy4wODI3NUM0Ljc4ODU3IDguMTg4MjIgNS42ODk2MSA5LjA4NDM4IDYuODAxMTcgOS4wODQzOFoiIGZpbGw9IndoaXRlIi8+CiAgICA8cGF0aCBkPSJNMTcuNTM3NyA5LjA4NDM4QzE4LjY0OTMgOS4wODQzOCAxOS41NTAzIDguMTg4MjIgMTkuNTUwMyA3LjA4Mjc1QzE5LjU1MDMgNS45NzcyOCAxOC42NDkzIDUuMDgxMTIgMTcuNTM3NyA1LjA4MTEyQzE2LjQyNjIgNS4wODExMiAxNS41MjUxIDUuOTc3MjggMTUuNTI1MSA3LjA4Mjc1QzE1LjUyNTEgOC4xODgyMiAxNi40MjYyIDkuMDg0MzggMTcuNTM3NyA5LjA4NDM4WiIgZmlsbD0id2hpdGUiLz4KICAgIDxwYXRoIGQ9Ik0xLjMxNzM3IDE4LjE3ODhDMS4zMjUwOSAxOC4xNzU4IDEuMzI1MDcgMTguMTc1OCAxLjMyNTA1IDE4LjE3NThMMS4zMjQ0NiAxOC4xNzQyTDEuMzIyNTkgMTguMTY5NEwxLjMxNTI2IDE4LjE1MDJDMS4zMDg4MyAxOC4xMzMzIDEuMjk5MzQgMTguMTA4MyAxLjI4NzE1IDE4LjA3NTdDMS4yNjI3OCAxOC4wMTA3IDEuMjI3NTkgMTcuOTE1NSAxLjE4NDM2IDE3Ljc5NTRDMS4wOTc5MSAxNy41NTUxIDAuOTc5MzAxIDE3LjIxNDcgMC44NTA2OTEgMTYuODE0NEMwLjU5MzQ0NiAxNi4wMTM3IDAuMjk2MjcxIDE0Ljk3MzUgMC4xMzYyNzUgMTQuMDE1QzAuMDU2Mjc1OCAxMy41MzU3IDAuMDEwNjE3OCAxMy4wNzcxIDAuMDIxMzE4NiAxMi42NzkyQzAuMDMyMDI0NiAxMi4yODExIDAuMDk5MTI3NCAxMS45NDQ3IDAuMjQzNzk3IDExLjcwOTJDMC4zODgwNjkgMTEuNDc0MiAwLjYwOTc2MSAxMS4zMzkgMC45MzIwMzQgMTEuMzQzMUMxLjI1NTA3IDExLjM0NzMgMS42Nzk1MiAxMS40OTE0IDIuMjI3OTUgMTEuODE3MUM1LjUyNDA4IDEzLjc3NDQgNi4yNzM2NiAxNy4wMjgzIDYuNDUwNDEgMTguNTMxNkM2LjQ5ODYxIDE4Ljk1MTEgNi4xNjExIDE5LjMyMyA1LjczMjg1IDE5LjMyM0gwLjU3OTQxM0MwLjIzOTk2MiAxOS4zMjMgMC4xMTU0NDkgMTguODc5MiAwLjQxMjc4NyAxOC43MDc3TDEuMzIxNDkgMTguMTg2TDEuMzI3NjYgMTguMTgyNUwxLjMyNTA1IDE4LjE3NThMMS4zMTczNyAxOC4xNzg4WiIgZmlsbD0iIzMyREE2RCIvPgogICAgPHBhdGggZD0iTTEuMzI1MDUgMTguMTc1OEMxLjMyNTA3IDE4LjE3NTggMS4zMjUwOSAxOC4xNzU4IDEuMzE3MzcgMTguMTc4OEwxLjMyNTA1IDE4LjE3NThaTTEuMzI1MDUgMTguMTc1OEwxLjMyNDQ2IDE4LjE3NDJMMS4zMjI1OSAxOC4xNjk0TDEuMzE1MjYgMTguMTUwMkMxLjMwODgzIDE4LjEzMzMgMS4yOTkzNCAxOC4xMDgzIDEuMjg3MTUgMTguMDc1N0MxLjI2Mjc4IDE4LjAxMDcgMS4yMjc1OSAxNy45MTU1IDEuMTg0MzYgMTcuNzk1NEMxLjA5NzkxIDE3LjU1NTEgMC45NzkzMDEgMTcuMjE0NyAwLjg1MDY5MSAxNi44MTQ0QzAuNTkzNDQ2IDE2LjAxMzcgMC4yOTYyNzEgMTQuOTczNSAwLjEzNjI3NSAxNC4wMTVDMC4wNTYyNzU4IDEzLjUzNTcgMC4wMTA2MTc4IDEzLjA3NzEgMC4wMjEzMTg2IDEyLjY3OTJDMC4wMzIwMjQ2IDEyLjI4MTEgMC4wOTkxMjc0IDExLjk0NDcgMC4yNDM3OTcgMTEuNzA5MkMwLjM4ODA2OSAxMS40NzQyIDAuNjA5NzYxIDExLjMzOSAwLjkzMjAzNCAxMS4zNDMxQzEuMjU1MDcgMTEuMzQ3MyAxLjY3OTUyIDExLjQ5MTQgMi4yMjc5NSAxMS44MTcxQzUuNTI0MDggMTMuNzc0NCA2LjI3MzY2IDE3LjAyODMgNi40NTA0MSAxOC41MzE2QzYuNDk4NjEgMTguOTUxMSA2LjE2MTEgMTkuMzIzIDUuNzMyODUgMTkuMzIzSDAuNTc5NDEzQzAuMjM5OTYyIDE5LjMyMyAwLjExNTQ0OSAxOC44NzkyIDAuNDEyNzg3IDE4LjcwNzdMMS4zMjE0OSAxOC4xODZMMS4zMjc2NiAxOC4xODI1TDEuMzI1MDUgMTguMTc1OFoiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTIyLjgyMTIgMTguMTc2MUwyMi44MjkgMTguMTc4OEMyMi44MjQzIDE4LjE3NzIgMjIuODIyNCAxOC4xNzY1IDIyLjgyMTcgMTguMTc2MkMyMi44MjEyIDE4LjE3NjEgMjIuODIxMiAxOC4xNzYxIDIyLjgyMTIgMTguMTc2MUwyMi44MjEzIDE4LjE3NTdMMjIuODIxOCAxOC4xNzQ1TDIyLjgyMzQgMTguMTY5NkwyMi44MzAxIDE4LjE1MDVDMjIuODM1OSAxOC4xMzM2IDIyLjg0NDQgMTguMTA4NSAyMi44NTU1IDE4LjA3NkMyMi44Nzc1IDE4LjAxMDkgMjIuOTA5MyAxNy45MTU4IDIyLjk0ODMgMTcuNzk1NkMyMy4wMjY0IDE3LjU1NTQgMjMuMTMzNiAxNy4yMTQ5IDIzLjI0OTggMTYuODE0NkMyMy40ODIxIDE2LjAxMzkgMjMuNzUwNiAxNC45NzM3IDIzLjg5NSAxNC4wMTUxQzIzLjk2NzIgMTMuNTM1OCAyNC4wMDgzIDEzLjA3NzIgMjMuOTk4NSAxMi42NzkyQzIzLjk4ODcgMTIuMjgxIDIzLjkyNzggMTEuOTQ0NSAyMy43OTY5IDExLjcwODlDMjMuNzMxNSAxMS41OTExIDIzLjY0ODcgMTEuNDk4OCAyMy41NDYxIDExLjQzNjNDMjMuNDQzNiAxMS4zNzM5IDIzLjMyMDkgMTEuMzQxMSAyMy4xNzUyIDExLjM0MzFDMjIuODgzNSAxMS4zNDczIDIyLjUgMTEuNDkxMiAyMi4wMDQxIDExLjgxNjlDMTkuMDMxMSAxMy43NzQgMTguMzQ4NSAxNy4wMzQxIDE4LjE5NjEgMTguNTMxNUMxOC4xNTM4IDE4Ljk1MiAxOC40NTU4IDE5LjMyMyAxOC44NDA0IDE5LjMyM0gyMy40OTk5QzIzLjY1MDYgMTkuMzIzIDIzLjc1NDggMTkuMjEyOSAyMy43ODc2IDE5LjA3OThDMjMuODIwNSAxOC45NDY5IDIzLjc4MTYgMTguNzkzMSAyMy42NDc5IDE4LjcwNzVMMjIuODIxMiAxOC4xNzYxWk0yMi44MjEyIDE4LjE3NjFMMjIuODE5IDE4LjE4MjNMMjIuODI0NiAxOC4xODU4TDIzLjY0NzkgMTguNzA3NUwyMi44MjEyIDE4LjE3NjFaIiBmaWxsPSIjMzJEQTZEIi8+CiAgICA8cGF0aCBkPSJNMjIuODIxMiAxOC4xNzYxTDIyLjgyOSAxOC4xNzg4QzIyLjgyNDMgMTguMTc3MiAyMi44MjI0IDE4LjE3NjUgMjIuODIxNyAxOC4xNzYyQzIyLjgyMTIgMTguMTc2MSAyMi44MjEyIDE4LjE3NjEgMjIuODIxMiAxOC4xNzYxWk0yMi44MjEyIDE4LjE3NjFMMjIuODIxMyAxOC4xNzU3TDIyLjgyMTggMTguMTc0NUwyMi44MjM0IDE4LjE2OTZMMjIuODMwMSAxOC4xNTA1QzIyLjgzNTkgMTguMTMzNiAyMi44NDQ0IDE4LjEwODUgMjIuODU1NSAxOC4wNzZDMjIuODc3NSAxOC4wMTA5IDIyLjkwOTMgMTcuOTE1OCAyMi45NDgzIDE3Ljc5NTZDMjMuMDI2NCAxNy41NTU0IDIzLjEzMzYgMTcuMjE0OSAyMy4yNDk4IDE2LjgxNDZDMjMuNDgyMSAxNi4wMTM5IDIzLjc1MDYgMTQuOTczNyAyMy44OTUgMTQuMDE1MUMyMy45NjcyIDEzLjUzNTggMjQuMDA4MyAxMy4wNzcyIDIzLjk5ODUgMTIuNjc5MkMyMy45ODg3IDEyLjI4MSAyMy45Mjc4IDExLjk0NDUgMjMuNzk2OSAxMS43MDg5QzIzLjczMTUgMTEuNTkxMSAyMy42NDg3IDExLjQ5ODggMjMuNTQ2MSAxMS40MzYzQzIzLjQ0MzYgMTEuMzczOSAyMy4zMjA5IDExLjM0MTEgMjMuMTc1MiAxMS4zNDMxQzIyLjg4MzUgMTEuMzQ3MyAyMi41IDExLjQ5MTIgMjIuMDA0MSAxMS44MTY5QzE5LjAzMTEgMTMuNzc0IDE4LjM0ODUgMTcuMDM0MSAxOC4xOTYxIDE4LjUzMTVDMTguMTUzOCAxOC45NTIgMTguNDU1OCAxOS4zMjMgMTguODQwNCAxOS4zMjNIMjMuNDk5OUMyMy42NTA2IDE5LjMyMyAyMy43NTQ4IDE5LjIxMjkgMjMuNzg3NiAxOS4wNzk4QzIzLjgyMDUgMTguOTQ2OSAyMy43ODE2IDE4Ljc5MzEgMjMuNjQ3OSAxOC43MDc1TTIyLjgyMTIgMTguMTc2MUwyMy42NDc5IDE4LjcwNzVNMjIuODIxMiAxOC4xNzYxTDIyLjgxOSAxOC4xODIzTDIyLjgyNDYgMTguMTg1OEwyMy42NDc5IDE4LjcwNzUiIHN0cm9rZT0iIzEzOEQzRSIgc3Ryb2tlLXdpZHRoPSIwLjAxNjU2NyIvPgogICAgPHBhdGggZD0iTTYuODIxNzIgOC4yODg4MUM3LjQ4NDggOC4yODg4MSA4LjAyMjM1IDcuNzUxMjkgOC4wMjIzNSA3LjA4ODJDOC4wMjIzNSA2LjQyNTExIDcuNDg0OCA1Ljg4NzU3IDYuODIxNzIgNS44ODc1N0M2LjE1ODY0IDUuODg3NTcgNS42MjEwOSA2LjQyNTExIDUuNjIxMDkgNy4wODgyQzUuNjIxMDkgNy43NTEyOSA2LjE1ODY0IDguMjg4ODEgNi44MjE3MiA4LjI4ODgxWiIgZmlsbD0iIzA5MjUxMSIvPgogICAgPHBhdGggZD0iTTE3LjU1ODMgOC4yODg4MUMxOC4yMjE0IDguMjg4ODEgMTguNzU4OSA3Ljc1MTI5IDE4Ljc1ODkgNy4wODgyQzE4Ljc1ODkgNi40MjUxMSAxOC4yMjE0IDUuODg3NTcgMTcuNTU4MyA1Ljg4NzU3QzE2Ljg5NTIgNS44ODc1NyAxNi4zNTc3IDYuNDI1MTEgMTYuMzU3NyA3LjA4ODJDMTYuMzU3NyA3Ljc1MTI5IDE2Ljg5NTIgOC4yODg4MSAxNy41NTgzIDguMjg4ODFaIiBmaWxsPSIjMDkyNTExIi8+CiAgICA8cGF0aCBkPSJNMTUuNDI2MiAxMS45MTI1QzE1LjM4OTkgMTIuMzM0NSAxNS4yNzA5IDEyLjc0NTEgMTUuMDc1OSAxMy4xMjFDMTQuODgwOSAxMy40OTY5IDE0LjYxMzggMTMuODMwNiAxNC4yODk4IDE0LjEwMzNDMTMuOTY1OCAxNC4zNzYgMTMuNTkxMyAxNC41ODIxIDEzLjE4NzYgMTQuNzEwMUMxMi43ODQgMTQuODM4IDEyLjM1OTEgMTQuODg1MiAxMS45MzcyIDE0Ljg0ODlDMTEuNTE1MyAxNC44MTI2IDExLjEwNDYgMTQuNjkzNSAxMC43Mjg3IDE0LjQ5ODVDMTAuMzUyOSAxNC4zMDM2IDEwLjAxOTEgMTQuMDM2NCA5Ljc0NjM5IDEzLjcxMjRDOS40NzM3NiAxMy4zODg1IDkuMjY3NTYgMTMuMDEzOSA5LjEzOTY0IDEyLjYxMDNDOS4wMTE3MSAxMi4yMDY2IDguOTY0NTkgMTEuNzgxNyA5LjAwMDg4IDExLjM1OThMMTIuMjEzNiAxMS42MzYyTDE1LjQyNjIgMTEuOTEyNVoiIGZpbGw9IiMwOTI1MTEiLz4KICA8L2c+CiAgPGRlZnM+CiAgICA8Y2xpcFBhdGggaWQ9ImNsaXAwXzEwMzdfMTE2OSI+CiAgICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgo8L3N2Zz4=';