@rango-dev/wallets-react 0.46.1-next.0 → 0.46.1-next.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.js CHANGED
@@ -1,2 +1,2 @@
1
- var Ce=Object.defineProperty;var c=(e,t)=>Ce(e,"name",{value:t,configurable:!0});import{Persistor as Pe}from"@rango-dev/wallets-core/legacy";var w="last-connected-wallets",E="hub-v1-last-connected-wallets";import{Persistor as T}from"@rango-dev/wallets-core/legacy";var W=class{static{c(this,"LastConnectedWalletsFromStorage")}#e;constructor(t){this.#e=t}addWallet(t,o){if(this.#e===E)return this.#t(t,o);if(this.#e===w)return this.#a(t);throw new Error("Not implemented")}removeWallets(t){if(this.#e===E)return this.#o(t);if(this.#e===w)return this.#c(t);throw new Error("Not implemented")}list(){if(this.#e===E)return this.#n();if(this.#e===w)return this.#r();throw new Error("Not implemented")}removeNamespacesFromWallet(t,o){if(this.#e===E)return this.#s(t,o);throw new Error("Not implemented")}#r(){let o=new T().getItem(w)||[],i={};return o.forEach(a=>{i[a]=[]}),i}#n(){return new T().getItem(E)||{}}#t(t,o){let i=new T,a=i.getItem(this.#e)||{},p=o;if(a[t]){let u=a[t];p=u.concat(o.filter(d=>!u.some(r=>r.namespace===d.namespace)))}i.setItem(this.#e,{...a,[t]:p})}#a(t){let o=new T,i=o.getItem(this.#e)||[];o.setItem(w,i.concat(t))}#o(t){let o=new T,i=o.getItem(this.#e)||{};if(!t){o.setItem(this.#e,{});return}t.forEach(a=>{i[a]&&delete i[a]}),o.setItem(this.#e,i)}#s(t,o){let u=(new T().getItem(this.#e)||{})[t]?.filter(d=>!o.includes(d.namespace));this.#o([t]),u?.length>0&&this.#t(t,u)}#c(t){let o=new T,i=o.getItem(this.#e)||[];if(!t){o.setItem(this.#e,[]);return}o.setItem(w,i.filter(a=>!t.includes(a)))}};function dt(e,t){return e.find(o=>o.type===t)||null}c(dt,"choose");var H={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function Q(e,t){if(t.type==="new_state"){let o=e[t.wallet];return o?{...e,[t.wallet]:{...o,[t.name]:t.value}}:{...e,[t.wallet]:{...H,[t.name]:t.value}}}return e}c(Q,"stateReducer");function K(e){return Object.entries(e).filter(([,t])=>t?.connected).map(([t])=>t)}c(K,"connectedWallets");function z(e){return Object.entries(e).map(([t])=>t)}c(z,"availableWallets");function Z(e){let t=new Map;return e.forEach(o=>{let{config:i,...a}=o;t.set(i.type,{actions:a,config:i})}),t}c(Z,"checkWalletProviders");function pt(e){return e?.constructor?.name==="AsyncFunction"}c(pt,"isAsync");function ut(e){let{checkInstallation:t=!0}=e.config;return t}c(ut,"needsCheckInstallation");async function J({type:e,walletActions:t,getState:o}){if(t.canEagerConnect){let i=new W(w),p=!!i.list()[e];p&&!o(e).connected&&_(),p||i.addWallet(e,[])}}c(J,"tryPersistWallet");function X({type:e,walletActions:t}){t.canEagerConnect&&new W(w).removeWallets([e])}c(X,"tryRemoveWalletFromPersistance");function _(){let e=new Pe;e.getItem(w)&&e.removeItem(w)}c(_,"clearPersistance");function O(e,t){return c((i,a,p,u,d)=>{e({type:"new_state",wallet:i,name:a,value:p}),t&&t(i,a,p,u,d)},"handler")}c(O,"makeEventHandler");import Je from"react";import{createContext as Ee}from"react";var A="Context hasn't been initialized yet.",We={async connect(){throw new Error(A)},async disconnect(){throw new Error(A)},async disconnectAll(){throw new Error(A)},async suggestAndConnect(){throw new Error(A)},state(){throw new Error(A)},canSwitchNetworkTo(){throw new Error(A)},providers(){throw new Error(A)},getWalletInfo(){throw new Error(A)},getSigners(){throw new Error(A)},hubProvider(){throw new Error(A)}},x=Ee(We);import{LegacyEvents as S}from"@rango-dev/wallets-core/legacy";import"@rango-dev/wallets-core/utils";import{pickVersion as ce}from"@rango-dev/wallets-core/utils";import{convertEvmBlockchainMetaToEvmChainInfo as Oe}from"@rango-dev/wallets-shared";import{isEvmBlockchain as De}from"rango-types";import{useEffect as D,useReducer as Le}from"react";async function ee(e,t){let o=new W(w),i=o.list(),a=Object.keys(i);if(a.length){let p=[];a.forEach(r=>{let s=e.get(r);if(s){let n=t(s);p.push({walletType:r,eagerConnect:n.eagerConnect.bind(n)})}});let u=await Promise.allSettled(p.map(async({eagerConnect:r})=>r())),d=[];u.forEach((r,s)=>{let{status:n}=r;n==="rejected"&&d.push(p[s].walletType)}),d.length&&o.removeWallets(d)}}c(ee,"autoConnect");import{LegacyWallet as ke}from"@rango-dev/wallets-core/legacy";import{useContext as Ne,useRef as Ae}from"react";function te(e){let t=Ae({});function o(i){let a=i.config.type;return typeof t.current[a]>"u"&&(t.current[a]=new ke({config:i.config,handler:e},i.actions)),t.current[a]}return c(o,"updater"),o}c(te,"useInitializers");function Se(){let e=Ne(x);if(!e)throw Error("useWallet can only be used within the Provider component");return e}c(Se,"useWallets");import{useEffect as Ie,useRef as Te}from"react";function oe(e){return!!e.allBlockChains?.length&&!!e.autoConnect}c(oe,"shouldTryAutoConnect");function b(e){let t=Te(!1);Ie(()=>{oe(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}c(b,"useAutoConnect");function M(e){let[t,o]=Le(Q,{}),i=te(O(o,e.onUpdateState)),a=e.providers,p=Z(a);b({allBlockChains:e.allBlockChains,autoConnect:e.autoConnect,autoConnectHandler:async()=>ee(p,i)});let u={async connect(d,r){let s=p.get(d);if(!s)throw new Error(`You should add ${d} to provider first.`);let n;r&&r.length>0&&(n=r.find(f=>!!f.network)?.network);let m=await i(s).connect(n,r);return e.autoConnect&&J({type:d,walletActions:s.actions,getState:u.state}),[m]},async disconnect(d){let r=p.get(d);if(!r)throw new Error(`You should add ${d} to provider first.`);await i(r).disconnect(),e.autoConnect&&X({type:d,walletActions:r.actions})},async disconnectAll(){let d=[];return K(t).forEach(r=>{let s=p.get(r);if(s){let n=i(s);d.push(n.disconnect())}}),e.autoConnect&&_(),await Promise.allSettled(d)},async suggestAndConnect(d,r){let s=p.get(d);if(!s)throw new Error(`You should add ${d} to provider first.`);let n=i(s);if(!r.network)throw new Error("You should pass network to the suggestAndConnect");return await n.suggestAndConnect(r.network)},state(d){return t[d]||H},canSwitchNetworkTo(d,r){let s=p.get(d);if(!s)return!1;let n=i(s);return n.canSwitchNetworkTo?n.canSwitchNetworkTo(r,n.provider):!1},providers(){let d={};return z(t).forEach(r=>{let s=p.get(r);if(s){let n=i(s);d[r]=n.provider}}),d},getWalletInfo(d){let r=p.get(d);if(!r)throw new Error(`You should add ${d} to provider first.`);return r.actions.getWalletInfo(e.allBlockChains||[])},async getSigners(d){let r=p.get(d);if(!r)throw new Error(`You should add ${d} to provider first.`);let s=i(r),n=s.provider;return s.getSigners(n)},hubProvider(){throw new Error("This method is not available on legacy providers.")}};return D(()=>{p.forEach(d=>{let r=i(d),s=c(()=>{r.onInit&&r.onInit()},"runOnInit"),n=c(l=>{l.target&&l.target.readyState==="complete"&&(s(),document.removeEventListener("readystatechange",n))},"initWhenPageIsReady");s(),document.addEventListener("readystatechange",n)})},[]),D(()=>{e.allBlockChains&&p.forEach(r=>{let s=i(r),n=s.getWalletInfo(e.allBlockChains||[]);s.setInfo({supportedBlockchains:n.supportedChains,isContractWallet:!!n.isContractWallet})})},[e.allBlockChains]),D(()=>{p.forEach(d=>{i(d).setHandler(O(o,e.onUpdateState))})},[e.onUpdateState]),u}c(M,"useLegacyProviders");import{legacyFormatAddressWithNetwork as xe}from"@rango-dev/wallets-core/legacy";import{CAIP_NAMESPACE as be}from"@rango-dev/wallets-core/namespaces/ton";import{CAIP_TRON_CHAIN_ID as Be}from"@rango-dev/wallets-core/namespaces/tron";import{CAIP_BITCOIN_CHAIN_ID as Re,CAIP_ZCASH_CHAIN_ID as Fe}from"@rango-dev/wallets-core/namespaces/utxo";import{CAIP as He}from"@rango-dev/wallets-core/utils";import{Err as j,Ok as re}from"ts-results";function _e(e){return typeof e=="string"?e:["solana","xrpl","stellar"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference===Re?"BTC":e.reference===Fe?"ZCASH":e.namespace.toLowerCase()===be?"TON":e.namespace==="sui"||e.reference===Be?e.reference.toUpperCase():e.namespace==="starknet"?e.namespace.toUpperCase():e.reference}c(_e,"mapCaipNamespaceToLegacyNetworkName");function B(e){let{chainId:t,address:o}=He.AccountId.parse(e),i=_e(t);return xe(o,i)}c(B,"fromAccountIdToLegacyAddressFormat");async function U(e){return e.reduce(async(t,o)=>{let i=await t;try{let a=await o();return[...i,new re(a)]}catch(a){return[...i,new j(a)]}},Promise.resolve([]))}c(U,"runSequentiallyWithoutFailure");function ne(e){return typeof e=="object"&&!Array.isArray(e)}c(ne,"isConnectResultEvm");function ae(e){return Array.isArray(e)}c(ae,"isConnectResultSolana");function se(e){let t=new Set,o=[],i=c((u,d)=>{o=o.filter(r=>r.key!==u?!0:(r.resolve(d),!1))},"removeKeyFromQueue"),a=c(async()=>{let u=o.find(n=>!t.has(n.key));if(!u)return;let{task:d,resolve:r,key:s}=u;t.add(s);try{let n=await d();r(new re(n))}catch(n){e?.onError&&e.onError(n,{removeCurrentKeyFromQueue:()=>i(s,new j(n))}),r(new j(n))}finally{let n=o.findIndex(l=>l.key===s);n>=0&&o.splice(n,1),t.delete(s),a()}},"processQueue");return c(async(u,d)=>new Promise(r=>{o.push({task:u,resolve:r,key:d}),a()}),"queueTask")}c(se,"createQueue");function Y(e){let t="0.0.0",o="1.0.0",i=[],a=[];return e.forEach(p=>{try{let u=ce(p,o);a.push(u[1])}catch{let u=ce(p,t);i.push(u[1])}}),[i,a]}c(Y,"separateLegacyAndHubProviders");function I(e,t){return e.find(o=>o.id===t)}c(I,"findProviderByType");var Me=new W(E);function $(e,t){return e.info()?.metadata.properties?.find(a=>a.name==="namespaces")?.value.data.flatMap(a=>a.getSupportedChains(t||[]))||[]}c($,"getSupportedChainsFromProvider");function ie(e,t,o,i){let a=e.get(t.provider);if(!a)throw new Error("Currently all the events have assigned to a provider. The event doesn't include one.",{cause:t});let p=t.namespace,u=p?a.findByNamespace(p):void 0,d=null,r=null,s;if(u){let[f]=u.state();d=f().accounts,r=f().network,i.lastConnectAttemptParams[t.provider]&&(s=i.lastConnectAttemptParams[t.provider].find(g=>g.namespace===p)?.derivationPath)}let[n]=a.state(),l={connected:n().connected,connecting:n().connecting,installed:n().installed,accounts:d,network:r,reachable:!0,derivationPath:s},m={supportedBlockchains:$(a,i.allBlockChains),isContractWallet:!1,isHub:!0,namespace:p};switch(t.type){case"provider_detected":o(t.provider,S.INSTALLED,!0,l,m);break;case"provider_connecting":o(t.provider,S.CONNECTING,t.value,l,m);break;case"provider_connected":o(t.provider,S.CONNECTED,!0,l,m);break;case"provider_disconnected":o(t.provider,S.PROVIDER_DISCONNECTED,t.provider,l,m),o(t.provider,S.CONNECTED,!1,l,m),o(t.provider,S.ACCOUNTS,null,l,m);break;case"namespace_disconnected":Me.removeNamespacesFromWallet(t.provider,[t.namespace]),o(t.provider,S.NAMESPACE_DISCONNECTED,t.namespace,l,{...m,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&o(t.provider,S.NAMESPACE_DISCONNECTED,t.namespace,l,m);let f=t.accounts.map(g=>B(g));o(t.provider,S.ACCOUNTS,f,l,{...m,namespace:t.namespace})}break;case"namespace_network_switched":o(t.provider,S.NETWORK,t.network,l,{...m,namespace:t.namespace});break}}c(ie,"mapHubEventsToLegacy");function q(e,t){if(!e.network)return;let o=t.filter(De);return Oe(o)[e.network]}c(q,"convertNamespaceNetworkToEvmChainId");function le(e,t){return q(e,t)||e.network}c(le,"tryConvertNamespaceNetworkToChainInfo");function de(e){return ne(e)?{accounts:e.accounts,network:e.network,provider:void 0}:ae(e)?{accounts:e,network:null,provider:void 0}:{accounts:[e],network:null,provider:void 0}}c(de,"transformHubResultToLegacyResult");function pe(e,t){let o=e.getAll();t.filter(a=>!o.get(a.id)).forEach(a=>{e.add(a.id,a),a.init()}),o.forEach(a=>{t.some(u=>u.id===a.id)||e.remove(a.id)})}c(pe,"synchronizeHubWithConfigProviders");function ue(e){return e.namespaceId==="Solana"}c(ue,"isSolanaNamespace");function R(e){return e.namespaceId==="EVM"}c(R,"isEvmNamespace");import{utils as Qe}from"@rango-dev/wallets-core/namespaces/evm";import"@rango-dev/wallets-shared";import{useEffect as ye,useRef as he,useState as Ke}from"react";import{Ok as ze,Result as Ze}from"ts-results";import{Provider as je}from"@rango-dev/wallets-core";import{legacyIsEvmNamespace as Ue}from"@rango-dev/wallets-core/legacy";import{Result as Ye}from"ts-results";var F=new W(E);async function $e(e,t,o){let{getHub:i,allBlockChains:a}=o,p=i().get(e);if(!p)throw new Error(`You should add ${e} to provider first then call 'connect'.`);if(!t)throw new Error("Passing namespace to `connect` is required. ");let u=[];t.forEach(l=>{let m=l.namespace,f=p.findByNamespace(m);if(!f)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${l.namespace})`);u.push([l,f])});let d=u.map(([l,m])=>{let g=(Ue(l)?q(l,a||[]):void 0)||l.network;return async()=>{let h;R(m)?h=c(async()=>m.connect(g),"connectNamespacePromise"):h=c(async()=>m.connect(),"connectNamespacePromise");try{await h()}catch(C){throw C instanceof Error?C:new Error(C)}}}),r=await U(d),s=u.filter((l,m)=>r[m].err).map(l=>l[0]);if(s.length>0&&F.removeNamespacesFromWallet(e,s.map(l=>l.namespace)),!r.some(l=>l.ok))throw new Error(`No namespace connected for ${e}`);return Ye.all(...r.filter(l=>l.ok)).unwrap()}c($e,"eagerConnect");async function qe(e,t){let o=[],i=[],a=[],p=[];e.forEach(d=>{let r=t.findByNamespace(d.namespace);r?(o.push(d),p.push(async()=>await r.canEagerConnect())):a.push(d)});let u=await U(p);return o.forEach((d,r)=>{u[r].ok&&u[r].val?i.push(d):a.push(d)}),{successNamespaces:i,failedNamespaces:a}}c(qe,"tryRunCanEagerConnect");async function me(e){let{getHub:t,allBlockChains:o,wallets:i}=e,a=F.list(),p=Object.keys(a),u=[];if(p.length){let d=[],r=i?.map(s=>typeof s=="string"?s:s instanceof je?s.id:s.config.type);p.forEach(async s=>{if(r&&!r.includes(s)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",s),u.push(s);return}let n=t().get(s),l=a[s].map(g=>({namespace:g.namespace,network:g.network}));if(!l.length||!n){u.push(s);return}let{successNamespaces:m,failedNamespaces:f}=await qe(l,n);if(m.length)f.length&&F.removeNamespacesFromWallet(n.id,f.map(g=>g.namespace));else{u.push(s);return}d.push($e(s,m,{allBlockChains:o,getHub:t}).catch(g=>console.warn(g)))}),F.removeWallets(u),await Promise.all(d)}}c(me,"autoConnect");import{createStore as Ve,Hub as Ge}from"@rango-dev/wallets-core";import{useRef as fe}from"react";function ge(e){let t=fe(null),o=fe(null);function i(){let u=new Ge({store:a()});return e.forEach(d=>{u.add(d.id,d)}),o.current=u,u}c(i,"createHub");function a(){if(t.current!==null)return t.current;let u=Ve();return t.current=u,u}c(a,"getStore");function p(){let u=o.current?.getAll();return!o.current||!u?i():(pe(o.current,e),o.current)}return c(p,"getHub"),{getStore:a,getHub:p}}c(ge,"useHubRefs");function V(e){let{getStore:t,getHub:o}=ge(e.providers),[,i]=Ke(0),a=he({onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains}),p=he({}),u=c((n,l)=>{p.current[n]=l||[]},"updateLastConnectAttemptParams"),d=se({onError:(n,l)=>{Qe.isUserRejectionError(n)&&l.removeCurrentKeyFromQueue()}});ye(()=>{a.current={onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains}},[e]),ye(()=>{let n=c(()=>{o().init(e.configs?.walletOptions),i(m=>m+1)},"runOnInit"),l=c(m=>{m.target&&m.target.readyState==="complete"&&(n(),document.removeEventListener("readystatechange",l))},"initHubWhenPageIsReady");n(),document.addEventListener("readystatechange",l),t().subscribe(m=>{if(a.current.onUpdateState)try{ie(o(),m,a.current.onUpdateState,{allBlockChains:a.current.allBlockChains,lastConnectAttemptParams:p.current})}catch(f){console.error(f)}i(f=>f+1)}).flushEvents()},[]),b({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{me({allBlockChains:e.allBlockChains,getHub:o,wallets:e.configs?.wallets})}});let r=new W(E);return{canSwitchNetworkTo(n,l,m){let f=o().get(n);if(!f)throw new Error(`You should add ${n} to provider first then call 'canSwitchNetworkTo'.`);if(!m)throw new Error("Passing namespace to `canSwitchNetworkTo` is required.");let g=f.findByNamespace(m.namespace);if(!g)throw new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${m.namespace})`);if(!("canSwitchNetwork"in g))return!1;let h=f.info()?.metadata?.properties?.find(P=>P.name==="namespaces");if(!a.current.allBlockChains)throw new Error("Blockchains are not available");let C=h?.value.data.find(P=>P.value===m.namespace)?.getSupportedChains(a.current.allBlockChains);if(!C)throw new Error(`NamespaceMeta is not defined for requested namespace: ${m.namespace}`);return g.canSwitchNetwork({network:l,supportedChains:C})},async connect(n,l){let m=o().get(n);if(!m)throw new Error(`You should add ${n} to provider first then call 'connect'.`);if(!l)throw new Error("Passing namespace to `connect` is required.");u(n,l);let f=[];l.forEach(y=>{let v=y.namespace,N=m.findByNamespace(v);if(!N)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${y.namespace})`);f.push([y,N])});let g=f.map(async([y,v])=>{let N=le(y,e.allBlockChains||[]),L;return ue(v)?L=c(async()=>v.connect({derivationPath:y.derivationPath}),"connectNamespacePromise"):R(v)?L=c(async()=>v.connect(N,{derivationPath:y.derivationPath}),"connectNamespacePromise"):L=c(async()=>v.connect(),"connectNamespacePromise"),d(c(async()=>L().then(de).then(we=>({response:we,input:{namespace:y.namespace,network:y.network,supportsEagerConnect:"canEagerConnect"in v}})),"connectNamespaceProcess"),n)}),h=await Promise.all(g),C=h.filter(y=>y.ok).filter(y=>y.val.input.supportsEagerConnect).map(y=>({namespace:y.val.input.namespace,network:y.val.input.network}));C.length>0&&r.addWallet(n,C);let P=h.map(y=>y.andThen(v=>new ze(v.response))),k=Ze.all(...P);if(k.err)throw k.val;return k.unwrap()},async disconnect(n,l){let m=o().get(n);if(!m)throw new Error(`You should add ${n} to provider first then call 'disconnect'.`);m.getAll().forEach(f=>{let g=!l||l.includes(f.namespaceId),h=f.state()[0]().connected;if(g&&h)return f.disconnect()}),e.autoConnect&&(l?r.removeNamespacesFromWallet(n,l):r.removeWallets([n]))},async disconnectAll(){let n=Array.from(o().getAll().values()).map(async l=>this.disconnect(l.id));return await Promise.allSettled(n)},async getSigners(n){let l=o().get(n);if(!l)throw new Error(`You should add ${n} to provider first.`);let m=l.info();if(!m)throw new Error("Your provider should have required `info`.");let g=m.metadata.properties?.find(h=>h.name==="signers");if(!g)throw new Error("Your provider should contain signers property.");return g.value.getSigners()},getWalletInfo(n){let l=o().get(n);if(!l)throw new Error(`You should add ${n} to provider first.`);let m=l.info();if(!m)throw new Error("Your provider should have required `info`.");let f={DEFAULT:""},{metadata:g}=m,{extensions:h}=g;Object.keys(h).forEach(v=>{let N=v;if(N==="homepage"&&(f.DEFAULT=h[N]||""),["firefox","chrome","brave","edge"].includes(N)){let G=N.toUpperCase();f[G]=h[N]||""}});let C=g.properties,P=C?.find(v=>v.name==="namespaces"),k=C?.find(v=>v.name==="derivationPath"),y=C?.find(v=>v.name==="details");return{name:g.name,img:g.icon,installLink:f,color:"red",supportedChains:$(l,a.current.allBlockChains),isContractWallet:y?.value?.isContractWallet,mobileWallet:y?.value?.mobileWallet,showOnMobile:y?.value?.showOnMobile,needsNamespace:P?.value,needsDerivationPath:k?.value,isHub:!0,properties:g.properties}},providers(){throw new Error("This method is not available on hub providers.")},state(n){let l=o().state(),m=o().get(n),f=l[n];if(!f||!m)throw new Error(`It seems your requested provider doesn't exist in hub. Provider Id: ${n}`);let g=f.namespaces.filter(P=>P.connected).flatMap(P=>P.accounts?.map(k=>B(k))).filter(P=>!!P),h=new Map(Array.from(m.getAll(),([P,k])=>[k.namespaceId,k.state()[0]()]));return{connected:f.connected,connecting:f.connecting,installed:f.installed,reachable:!0,accounts:g,network:null,namespaces:h}},async suggestAndConnect(n,l){let m=o().get(n);if(!m)throw new Error(`You should add ${n} to provider first then call 'suggestAndConnect'.`);let f=m.findByNamespace(l.namespace);throw f?"suggest"in f?l.network?new Error(`Suggest has not been implemented for given chain: ${l.network}`):new Error("You should pass network to the suggest and connect"):new Error("Suggest is not implemented on the provider"):new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${l.namespace})`)},hubProvider(){throw new Error("Unreachable code. the method has been implemented in main adapter instance.")}}}c(V,"useHubAdapter");function ve(e){let{providers:t,...o}=e,[i,a]=Y(t),p=M({...o,providers:i}),u=V({...o,providers:a,allVersionedProviders:t});return{canSwitchNetworkTo(r,s,n){return I(a,r)?u.canSwitchNetworkTo(r,s,n):p.canSwitchNetworkTo(r,s)},async connect(r,s){return I(a,r)?await u.connect(r,s):await p.connect(r,s)},async disconnect(r,s){return I(a,r)?await u.disconnect(r,s):await p.disconnect(r)},async disconnectAll(){return await Promise.allSettled([u.disconnectAll(),p.disconnectAll()])},async getSigners(r){return I(a,r)?u.getSigners(r):p.getSigners(r)},getWalletInfo(r){return I(a,r)?u.getWalletInfo(r):p.getWalletInfo(r)},providers(){return p.providers()},state(r){return I(a,r)?u.state(r):p.state(r)},async suggestAndConnect(r,s){return I(a,r)?u.suggestAndConnect(r,s):await p.suggestAndConnect(r,s)},hubProvider(r){let s=I(a,r);if(s)return s;throw new Error(`You're trying to access ${r} provider which is not found in hub providers. you may try to access a legacy provider or it's not been registered yet.`)}}}c(ve,"useProviders");function Xe(e){let t=ve(e);return Je.createElement(x.Provider,{value:t},e.children)}c(Xe,"Provider");var et=Xe;import{LegacyEvents as Ko}from"@rango-dev/wallets-core/legacy";export{Ko as Events,et as Provider,z as availableWallets,Z as checkWalletProviders,dt as choose,_ as clearPersistance,K as connectedWallets,H as defaultWalletState,pt as isAsync,O as makeEventHandler,ut as needsCheckInstallation,Q as stateReducer,J as tryPersistWallet,X as tryRemoveWalletFromPersistance,Se as useWallets};
1
+ var Ce=Object.defineProperty;var c=(e,t)=>Ce(e,"name",{value:t,configurable:!0});import{Persistor as Pe}from"@rango-dev/wallets-core/legacy";var w="last-connected-wallets",E="hub-v1-last-connected-wallets";import{Persistor as T}from"@rango-dev/wallets-core/legacy";var W=class{static{c(this,"LastConnectedWalletsFromStorage")}#e;constructor(t){this.#e=t}addWallet(t,o){if(this.#e===E)return this.#t(t,o);if(this.#e===w)return this.#a(t);throw new Error("Not implemented")}removeWallets(t){if(this.#e===E)return this.#o(t);if(this.#e===w)return this.#c(t);throw new Error("Not implemented")}list(){if(this.#e===E)return this.#n();if(this.#e===w)return this.#r();throw new Error("Not implemented")}removeNamespacesFromWallet(t,o){if(this.#e===E)return this.#s(t,o);throw new Error("Not implemented")}#r(){let o=new T().getItem(w)||[],i={};return o.forEach(a=>{i[a]=[]}),i}#n(){return new T().getItem(E)||{}}#t(t,o){let i=new T,a=i.getItem(this.#e)||{},d=o;if(a[t]){let u=a[t];d=u.concat(o.filter(p=>!u.some(r=>r.namespace===p.namespace)))}i.setItem(this.#e,{...a,[t]:d})}#a(t){let o=new T,i=o.getItem(this.#e)||[];o.setItem(w,i.concat(t))}#o(t){let o=new T,i=o.getItem(this.#e)||{};if(!t){o.setItem(this.#e,{});return}t.forEach(a=>{i[a]&&delete i[a]}),o.setItem(this.#e,i)}#s(t,o){let u=(new T().getItem(this.#e)||{})[t]?.filter(p=>!o.includes(p.namespace));this.#o([t]),u?.length>0&&this.#t(t,u)}#c(t){let o=new T,i=o.getItem(this.#e)||[];if(!t){o.setItem(this.#e,[]);return}o.setItem(w,i.filter(a=>!t.includes(a)))}};function pt(e,t){return e.find(o=>o.type===t)||null}c(pt,"choose");var H={connected:!1,connecting:!1,reachable:!1,installed:!1,accounts:null,network:null};function Q(e,t){if(t.type==="new_state"){let o=e[t.wallet];return o?{...e,[t.wallet]:{...o,[t.name]:t.value}}:{...e,[t.wallet]:{...H,[t.name]:t.value}}}return e}c(Q,"stateReducer");function K(e){return Object.entries(e).filter(([,t])=>t?.connected).map(([t])=>t)}c(K,"connectedWallets");function z(e){return Object.entries(e).map(([t])=>t)}c(z,"availableWallets");function Z(e){let t=new Map;return e.forEach(o=>{let{config:i,...a}=o;t.set(i.type,{actions:a,config:i})}),t}c(Z,"checkWalletProviders");function dt(e){return e?.constructor?.name==="AsyncFunction"}c(dt,"isAsync");function ut(e){let{checkInstallation:t=!0}=e.config;return t}c(ut,"needsCheckInstallation");async function J({type:e,walletActions:t,getState:o}){if(t.canEagerConnect){let i=new W(w),d=!!i.list()[e];d&&!o(e).connected&&_(),d||i.addWallet(e,[])}}c(J,"tryPersistWallet");function X({type:e,walletActions:t}){t.canEagerConnect&&new W(w).removeWallets([e])}c(X,"tryRemoveWalletFromPersistance");function _(){let e=new Pe;e.getItem(w)&&e.removeItem(w)}c(_,"clearPersistance");function O(e,t){return c((i,a,d,u,p)=>{e({type:"new_state",wallet:i,name:a,value:d}),t&&t(i,a,d,u,p)},"handler")}c(O,"makeEventHandler");import Je from"react";import{createContext as Ee}from"react";var A="Context hasn't been initialized yet.",We={async connect(){throw new Error(A)},async disconnect(){throw new Error(A)},async disconnectAll(){throw new Error(A)},async suggestAndConnect(){throw new Error(A)},state(){throw new Error(A)},canSwitchNetworkTo(){throw new Error(A)},providers(){throw new Error(A)},getWalletInfo(){throw new Error(A)},getSigners(){throw new Error(A)},hubProvider(){throw new Error(A)}},x=Ee(We);import{pickVersion as ce}from"@hub3js/core/utils";import{LegacyEvents as S}from"@rango-dev/wallets-core/legacy";import{convertEvmBlockchainMetaToEvmChainInfo as Oe}from"@rango-dev/wallets-shared";import{isEvmBlockchain as je}from"rango-types";import{useEffect as j,useReducer as Le}from"react";async function ee(e,t){let o=new W(w),i=o.list(),a=Object.keys(i);if(a.length){let d=[];a.forEach(r=>{let s=e.get(r);if(s){let n=t(s);d.push({walletType:r,eagerConnect:n.eagerConnect.bind(n)})}});let u=await Promise.allSettled(d.map(async({eagerConnect:r})=>r())),p=[];u.forEach((r,s)=>{let{status:n}=r;n==="rejected"&&p.push(d[s].walletType)}),p.length&&o.removeWallets(p)}}c(ee,"autoConnect");import{LegacyWallet as Ne}from"@rango-dev/wallets-core/legacy";import{useContext as ke,useRef as Ae}from"react";function te(e){let t=Ae({});function o(i){let a=i.config.type;return typeof t.current[a]>"u"&&(t.current[a]=new Ne({config:i.config,handler:e},i.actions)),t.current[a]}return c(o,"updater"),o}c(te,"useInitializers");function Se(){let e=ke(x);if(!e)throw Error("useWallet can only be used within the Provider component");return e}c(Se,"useWallets");import{useEffect as Ie,useRef as Te}from"react";function oe(e){return!!e.allBlockChains?.length&&!!e.autoConnect}c(oe,"shouldTryAutoConnect");function b(e){let t=Te(!1);Ie(()=>{oe(e)&&!t.current&&(t.current=!0,e.autoConnectHandler())},[e.autoConnect,e.allBlockChains])}c(b,"useAutoConnect");function D(e){let[t,o]=Le(Q,{}),i=te(O(o,e.onUpdateState)),a=e.providers,d=Z(a);b({allBlockChains:e.allBlockChains,autoConnect:e.autoConnect,autoConnectHandler:async()=>ee(d,i)});let u={async connect(p,r){let s=d.get(p);if(!s)throw new Error(`You should add ${p} to provider first.`);let n;r&&r.length>0&&(n=r.find(f=>!!f.network)?.network);let m=await i(s).connect(n,r);return e.autoConnect&&J({type:p,walletActions:s.actions,getState:u.state}),[m]},async disconnect(p){let r=d.get(p);if(!r)throw new Error(`You should add ${p} to provider first.`);await i(r).disconnect(),e.autoConnect&&X({type:p,walletActions:r.actions})},async disconnectAll(){let p=[];return K(t).forEach(r=>{let s=d.get(r);if(s){let n=i(s);p.push(n.disconnect())}}),e.autoConnect&&_(),await Promise.allSettled(p)},async suggestAndConnect(p,r){let s=d.get(p);if(!s)throw new Error(`You should add ${p} to provider first.`);let n=i(s);if(!r.network)throw new Error("You should pass network to the suggestAndConnect");return await n.suggestAndConnect(r.network)},state(p){return t[p]||H},canSwitchNetworkTo(p,r){let s=d.get(p);if(!s)return!1;let n=i(s);return n.canSwitchNetworkTo?n.canSwitchNetworkTo(r,n.provider):!1},providers(){let p={};return z(t).forEach(r=>{let s=d.get(r);if(s){let n=i(s);p[r]=n.provider}}),p},getWalletInfo(p){let r=d.get(p);if(!r)throw new Error(`You should add ${p} to provider first.`);return r.actions.getWalletInfo(e.allBlockChains||[])},async getSigners(p){let r=d.get(p);if(!r)throw new Error(`You should add ${p} to provider first.`);let s=i(r),n=s.provider;return s.getSigners(n)},hubProvider(){throw new Error("This method is not available on legacy providers.")}};return j(()=>{d.forEach(p=>{let r=i(p),s=c(()=>{r.onInit&&r.onInit()},"runOnInit"),n=c(l=>{l.target&&l.target.readyState==="complete"&&(s(),document.removeEventListener("readystatechange",n))},"initWhenPageIsReady");s(),document.addEventListener("readystatechange",n)})},[]),j(()=>{e.allBlockChains&&d.forEach(r=>{let s=i(r),n=s.getWalletInfo(e.allBlockChains||[]);s.setInfo({supportedBlockchains:n.supportedChains,isContractWallet:!!n.isContractWallet})})},[e.allBlockChains]),j(()=>{d.forEach(p=>{i(p).setHandler(O(o,e.onUpdateState))})},[e.onUpdateState]),u}c(D,"useLegacyProviders");import{legacyFormatAddressWithNetwork as xe}from"@rango-dev/wallets-core/legacy";import{CAIP_NAMESPACE as be}from"@rango-dev/wallets-core/namespaces/ton";import{CAIP_TRON_CHAIN_ID as Be}from"@rango-dev/wallets-core/namespaces/tron";import{CAIP_BITCOIN_CHAIN_ID as Re,CAIP_ZCASH_CHAIN_ID as Fe}from"@rango-dev/wallets-core/namespaces/utxo";import{AccountId as He}from"caip";import{Err as M,Ok as re}from"ts-results";function _e(e){return typeof e=="string"?e:["solana","xrpl","stellar"].includes(e.namespace.toLowerCase())?e.namespace.toUpperCase():e.namespace.toLowerCase()==="eip155"?"ETH":e.reference===Re?"BTC":e.reference===Fe?"ZCASH":e.namespace.toLowerCase()===be?"TON":e.namespace==="sui"||e.reference===Be?e.reference.toUpperCase():e.namespace==="starknet"?e.namespace.toUpperCase():e.reference}c(_e,"mapCaipNamespaceToLegacyNetworkName");function B(e){let{chainId:t,address:o}=He.parse(e),i=_e(t);return xe(o,i)}c(B,"fromAccountIdToLegacyAddressFormat");async function U(e){return e.reduce(async(t,o)=>{let i=await t;try{let a=await o();return[...i,new re(a)]}catch(a){return[...i,new M(a)]}},Promise.resolve([]))}c(U,"runSequentiallyWithoutFailure");function ne(e){return typeof e=="object"&&!Array.isArray(e)}c(ne,"isConnectResultEvm");function ae(e){return Array.isArray(e)}c(ae,"isConnectResultSolana");function se(e){let t=new Set,o=[],i=c((u,p)=>{o=o.filter(r=>r.key!==u?!0:(r.resolve(p),!1))},"removeKeyFromQueue"),a=c(async()=>{let u=o.find(n=>!t.has(n.key));if(!u)return;let{task:p,resolve:r,key:s}=u;t.add(s);try{let n=await p();r(new re(n))}catch(n){e?.onError&&e.onError(n,{removeCurrentKeyFromQueue:()=>i(s,new M(n))}),r(new M(n))}finally{let n=o.findIndex(l=>l.key===s);n>=0&&o.splice(n,1),t.delete(s),a()}},"processQueue");return c(async(u,p)=>new Promise(r=>{o.push({task:u,resolve:r,key:p}),a()}),"queueTask")}c(se,"createQueue");function Y(e){let t="0.0.0",o="1.0.0",i=[],a=[];return e.forEach(d=>{try{let u=ce(d,o);a.push(u[1])}catch{let u=ce(d,t);i.push(u[1])}}),[i,a]}c(Y,"separateLegacyAndHubProviders");function I(e,t){return e.find(o=>o.id===t)}c(I,"findProviderByType");var De=new W(E);function $(e,t){return e.info()?.metadata.properties?.find(a=>a.name==="namespaces")?.value.data.flatMap(a=>a.getSupportedChains(t||[]))||[]}c($,"getSupportedChainsFromProvider");function ie(e,t,o,i){let a=e.get(t.provider);if(!a)throw new Error("Currently all the events have assigned to a provider. The event doesn't include one.",{cause:t});let d=t.namespace,u=d?a.findByNamespace(d):void 0,p=null,r=null,s;if(u){let[f]=u.state();p=f().accounts,r=f().network,i.lastConnectAttemptParams[t.provider]&&(s=i.lastConnectAttemptParams[t.provider].find(g=>g.namespace===d)?.derivationPath)}let[n]=a.state(),l={connected:n().connected,connecting:n().connecting,installed:n().installed,accounts:p,network:r,reachable:!0,derivationPath:s},m={supportedBlockchains:$(a,i.allBlockChains),isContractWallet:!1,isHub:!0,namespace:d};switch(t.type){case"provider_detected":o(t.provider,S.INSTALLED,!0,l,m);break;case"provider_connecting":o(t.provider,S.CONNECTING,t.value,l,m);break;case"provider_connected":o(t.provider,S.CONNECTED,!0,l,m);break;case"provider_disconnected":o(t.provider,S.PROVIDER_DISCONNECTED,t.provider,l,m),o(t.provider,S.CONNECTED,!1,l,m),o(t.provider,S.ACCOUNTS,null,l,m);break;case"namespace_disconnected":De.removeNamespacesFromWallet(t.provider,[t.namespace]),o(t.provider,S.NAMESPACE_DISCONNECTED,t.namespace,l,{...m,namespace:t.namespace});break;case"namespace_connected":case"namespace_account_switched":{t.type==="namespace_account_switched"&&o(t.provider,S.NAMESPACE_DISCONNECTED,t.namespace,l,m);let f=t.accounts.map(g=>B(g));o(t.provider,S.ACCOUNTS,f,l,{...m,namespace:t.namespace})}break;case"namespace_network_switched":o(t.provider,S.NETWORK,t.network,l,{...m,namespace:t.namespace});break}}c(ie,"mapHubEventsToLegacy");function q(e,t){if(!e.network)return;let o=t.filter(je);return Oe(o)[e.network]}c(q,"convertNamespaceNetworkToEvmChainId");function le(e,t){return q(e,t)||e.network}c(le,"tryConvertNamespaceNetworkToChainInfo");function pe(e){return ne(e)?{accounts:e.accounts,network:e.network,provider:void 0}:ae(e)?{accounts:e,network:null,provider:void 0}:{accounts:[e],network:null,provider:void 0}}c(pe,"transformHubResultToLegacyResult");function de(e,t){let o=e.getAll();t.filter(a=>!o.get(a.id)).forEach(a=>{e.add(a.id,a),a.init()}),o.forEach(a=>{t.some(u=>u.id===a.id)||e.remove(a.id)})}c(de,"synchronizeHubWithConfigProviders");function ue(e){return e.namespaceId==="Solana"}c(ue,"isSolanaNamespace");function R(e){return e.namespaceId==="EVM"}c(R,"isEvmNamespace");import{utils as Qe}from"@hub3js/evm";import"@rango-dev/wallets-shared";import{useEffect as he,useRef as ye,useState as Ke}from"react";import{Ok as ze,Result as Ze}from"ts-results";import{Provider as Me}from"@hub3js/core";import{legacyIsEvmNamespace as Ue}from"@rango-dev/wallets-core/legacy";import{Result as Ye}from"ts-results";var F=new W(E);async function $e(e,t,o){let{getHub:i,allBlockChains:a}=o,d=i().get(e);if(!d)throw new Error(`You should add ${e} to provider first then call 'connect'.`);if(!t)throw new Error("Passing namespace to `connect` is required. ");let u=[];t.forEach(l=>{let m=l.namespace,f=d.findByNamespace(m);if(!f)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${l.namespace})`);u.push([l,f])});let p=u.map(([l,m])=>{let g=(Ue(l)?q(l,a||[]):void 0)||l.network;return async()=>{let y;R(m)?y=c(async()=>m.connect(g),"connectNamespacePromise"):y=c(async()=>m.connect(),"connectNamespacePromise");try{await y()}catch(C){throw C instanceof Error?C:new Error(C)}}}),r=await U(p),s=u.filter((l,m)=>r[m].err).map(l=>l[0]);if(s.length>0&&F.removeNamespacesFromWallet(e,s.map(l=>l.namespace)),!r.some(l=>l.ok))throw new Error(`No namespace connected for ${e}`);return Ye.all(...r.filter(l=>l.ok)).unwrap()}c($e,"eagerConnect");async function qe(e,t){let o=[],i=[],a=[],d=[];e.forEach(p=>{let r=t.findByNamespace(p.namespace);r?(o.push(p),d.push(async()=>await r.canEagerConnect())):a.push(p)});let u=await U(d);return o.forEach((p,r)=>{u[r].ok&&u[r].val?i.push(p):a.push(p)}),{successNamespaces:i,failedNamespaces:a}}c(qe,"tryRunCanEagerConnect");async function me(e){let{getHub:t,allBlockChains:o,wallets:i}=e,a=F.list(),d=Object.keys(a),u=[];if(d.length){let p=[],r=i?.map(s=>typeof s=="string"?s:s instanceof Me?s.id:s.config.type);d.forEach(async s=>{if(r&&!r.includes(s)){console.warn("Trying to run auto connect for a wallet which is not included in config. Desired wallet:",s),u.push(s);return}let n=t().get(s),l=a[s].map(g=>({namespace:g.namespace,network:g.network}));if(!l.length||!n){u.push(s);return}let{successNamespaces:m,failedNamespaces:f}=await qe(l,n);if(m.length)f.length&&F.removeNamespacesFromWallet(n.id,f.map(g=>g.namespace));else{u.push(s);return}p.push($e(s,m,{allBlockChains:o,getHub:t}).catch(g=>console.warn(g)))}),F.removeWallets(u),await Promise.all(p)}}c(me,"autoConnect");import{createStore as Ve,Hub as Ge}from"@hub3js/core";import{useRef as fe}from"react";function ge(e){let t=fe(null),o=fe(null);function i(){let u=new Ge({store:a()});return e.forEach(p=>{u.add(p.id,p)}),o.current=u,u}c(i,"createHub");function a(){if(t.current!==null)return t.current;let u=Ve();return t.current=u,u}c(a,"getStore");function d(){let u=o.current?.getAll();return!o.current||!u?i():(de(o.current,e),o.current)}return c(d,"getHub"),{getStore:a,getHub:d}}c(ge,"useHubRefs");function V(e){let{getStore:t,getHub:o}=ge(e.providers),[,i]=Ke(0),a=ye({onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains}),d=ye({}),u=c((n,l)=>{d.current[n]=l||[]},"updateLastConnectAttemptParams"),p=se({onError:(n,l)=>{Qe.isUserRejectionError(n)&&l.removeCurrentKeyFromQueue()}});he(()=>{a.current={onUpdateState:e.onUpdateState,allVersionedProviders:e.allVersionedProviders,allBlockChains:e.allBlockChains}},[e]),he(()=>{let n=c(()=>{o().init(e.configs?.walletOptions),i(m=>m+1)},"runOnInit"),l=c(m=>{m.target&&m.target.readyState==="complete"&&(n(),document.removeEventListener("readystatechange",l))},"initHubWhenPageIsReady");n(),document.addEventListener("readystatechange",l),t().subscribe(m=>{if(a.current.onUpdateState)try{ie(o(),m,a.current.onUpdateState,{allBlockChains:a.current.allBlockChains,lastConnectAttemptParams:d.current})}catch(f){console.error(f)}i(f=>f+1)}).flushEvents()},[]),b({autoConnect:e.autoConnect,allBlockChains:e.allBlockChains,autoConnectHandler:()=>{me({allBlockChains:e.allBlockChains,getHub:o,wallets:e.configs?.wallets})}});let r=new W(E);return{canSwitchNetworkTo(n,l,m){let f=o().get(n);if(!f)throw new Error(`You should add ${n} to provider first then call 'canSwitchNetworkTo'.`);if(!m)throw new Error("Passing namespace to `canSwitchNetworkTo` is required.");let g=f.findByNamespace(m.namespace);if(!g)throw new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${m.namespace})`);if(!("canSwitchNetwork"in g))return!1;let y=f.info()?.metadata?.properties?.find(P=>P.name==="namespaces");if(!a.current.allBlockChains)throw new Error("Blockchains are not available");let C=y?.value.data.find(P=>P.value===m.namespace)?.getSupportedChains(a.current.allBlockChains);if(!C)throw new Error(`NamespaceMeta is not defined for requested namespace: ${m.namespace}`);return g.canSwitchNetwork({network:l,supportedChains:C})},async connect(n,l){let m=o().get(n);if(!m)throw new Error(`You should add ${n} to provider first then call 'connect'.`);if(!l)throw new Error("Passing namespace to `connect` is required.");u(n,l);let f=[];l.forEach(h=>{let v=h.namespace,k=m.findByNamespace(v);if(!k)throw new Error(`We couldn't find any provider matched with your request namespace. (requested namespace: ${h.namespace})`);f.push([h,k])});let g=f.map(async([h,v])=>{let k=le(h,e.allBlockChains||[]),L;return ue(v)?L=c(async()=>v.connect({derivationPath:h.derivationPath}),"connectNamespacePromise"):R(v)?L=c(async()=>v.connect(k,{derivationPath:h.derivationPath}),"connectNamespacePromise"):L=c(async()=>v.connect(),"connectNamespacePromise"),p(c(async()=>L().then(pe).then(we=>({response:we,input:{namespace:h.namespace,network:h.network,supportsEagerConnect:"canEagerConnect"in v}})),"connectNamespaceProcess"),n)}),y=await Promise.all(g),C=y.filter(h=>h.ok).filter(h=>h.val.input.supportsEagerConnect).map(h=>({namespace:h.val.input.namespace,network:h.val.input.network}));C.length>0&&r.addWallet(n,C);let P=y.map(h=>h.andThen(v=>new ze(v.response))),N=Ze.all(...P);if(N.err)throw N.val;return N.unwrap()},async disconnect(n,l){let m=o().get(n);if(!m)throw new Error(`You should add ${n} to provider first then call 'disconnect'.`);m.getAll().forEach(f=>{let g=!l||l.includes(f.namespaceId),y=f.state()[0]().connected;if(g&&y)return f.disconnect()}),e.autoConnect&&(l?r.removeNamespacesFromWallet(n,l):r.removeWallets([n]))},async disconnectAll(){let n=Array.from(o().getAll().values()).map(async l=>this.disconnect(l.id));return await Promise.allSettled(n)},async getSigners(n){let l=o().get(n);if(!l)throw new Error(`You should add ${n} to provider first.`);let m=l.info();if(!m)throw new Error("Your provider should have required `info`.");let g=m.metadata.properties?.find(y=>y.name==="signers");if(!g)throw new Error("Your provider should contain signers property.");return g.value.getSigners()},getWalletInfo(n){let l=o().get(n);if(!l)throw new Error(`You should add ${n} to provider first.`);let m=l.info();if(!m)throw new Error("Your provider should have required `info`.");let f={DEFAULT:""},{metadata:g}=m,{extensions:y}=g;Object.keys(y).forEach(v=>{let k=v;if(k==="homepage"&&(f.DEFAULT=y[k]||""),["firefox","chrome","brave","edge"].includes(k)){let G=k.toUpperCase();f[G]=y[k]||""}});let C=g.properties,P=C?.find(v=>v.name==="namespaces"),N=C?.find(v=>v.name==="derivationPath"),h=C?.find(v=>v.name==="details");return{name:g.name,img:g.icon,installLink:f,color:"red",supportedChains:$(l,a.current.allBlockChains),isContractWallet:h?.value?.isContractWallet,mobileWallet:h?.value?.mobileWallet,showOnMobile:h?.value?.showOnMobile,needsNamespace:P?.value,needsDerivationPath:N?.value,isHub:!0,properties:g.properties}},providers(){throw new Error("This method is not available on hub providers.")},state(n){let l=o().state(),m=o().get(n),f=l[n];if(!f||!m)throw new Error(`It seems your requested provider doesn't exist in hub. Provider Id: ${n}`);let g=f.namespaces.filter(P=>P.connected).flatMap(P=>P.accounts?.map(N=>B(N))).filter(P=>!!P),y=new Map(Array.from(m.getAll(),([P,N])=>[N.namespaceId,N.state()[0]()]));return{connected:f.connected,connecting:f.connecting,installed:f.installed,reachable:!0,accounts:g,network:null,namespaces:y}},async suggestAndConnect(n,l){let m=o().get(n);if(!m)throw new Error(`You should add ${n} to provider first then call 'suggestAndConnect'.`);let f=m.findByNamespace(l.namespace);throw f?"suggest"in f?l.network?new Error(`Suggest has not been implemented for given chain: ${l.network}`):new Error("You should pass network to the suggest and connect"):new Error("Suggest is not implemented on the provider"):new Error(`We couldn't find any matched namespace on your request provider. (requested namespace: ${l.namespace})`)},hubProvider(){throw new Error("Unreachable code. the method has been implemented in main adapter instance.")}}}c(V,"useHubAdapter");function ve(e){let{providers:t,...o}=e,[i,a]=Y(t),d=D({...o,providers:i}),u=V({...o,providers:a,allVersionedProviders:t});return{canSwitchNetworkTo(r,s,n){return I(a,r)?u.canSwitchNetworkTo(r,s,n):d.canSwitchNetworkTo(r,s)},async connect(r,s){return I(a,r)?await u.connect(r,s):await d.connect(r,s)},async disconnect(r,s){return I(a,r)?await u.disconnect(r,s):await d.disconnect(r)},async disconnectAll(){return await Promise.allSettled([u.disconnectAll(),d.disconnectAll()])},async getSigners(r){return I(a,r)?u.getSigners(r):d.getSigners(r)},getWalletInfo(r){return I(a,r)?u.getWalletInfo(r):d.getWalletInfo(r)},providers(){return d.providers()},state(r){return I(a,r)?u.state(r):d.state(r)},async suggestAndConnect(r,s){return I(a,r)?u.suggestAndConnect(r,s):await d.suggestAndConnect(r,s)},hubProvider(r){let s=I(a,r);if(s)return s;throw new Error(`You're trying to access ${r} provider which is not found in hub providers. you may try to access a legacy provider or it's not been registered yet.`)}}}c(ve,"useProviders");function Xe(e){let t=ve(e);return Je.createElement(x.Provider,{value:t},e.children)}c(Xe,"Provider");var et=Xe;import{LegacyEvents as Qo}from"@rango-dev/wallets-core/legacy";export{Qo as Events,et as Provider,z as availableWallets,Z as checkWalletProviders,pt as choose,_ as clearPersistance,K as connectedWallets,H as defaultWalletState,dt as isAsync,O as makeEventHandler,ut as needsCheckInstallation,Q as stateReducer,J as tryPersistWallet,X as tryRemoveWalletFromPersistance,Se as useWallets};
2
2
  //# sourceMappingURL=index.js.map