graz 0.3.7 → 0.4.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,98 +1 @@
1
- 'use strict';
2
-
3
- var zustand = require('zustand');
4
- var middleware = require('zustand/middleware');
5
- var cosmiframe = require('@dao-dao/cosmiframe');
6
- var snapper = require('@cosmsnap/snapper');
7
- var amino = require('@cosmjs/amino');
8
- var Ee = require('long');
9
- var encoding = require('@cosmjs/encoding');
10
- var signClient = require('@walletconnect/sign-client');
11
- var utils = require('@walletconnect/utils');
12
- var modal = require('@walletconnect/modal');
13
- var reactQuery = require('@tanstack/react-query');
14
- var react = require('react');
15
- var cosmwasmStargate = require('@cosmjs/cosmwasm-stargate');
16
- var stargate = require('@cosmjs/stargate');
17
- var shallow = require('zustand/shallow');
18
- var jsxRuntime = require('react/jsx-runtime');
19
-
20
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
21
-
22
- var Ee__default = /*#__PURE__*/_interopDefault(Ee);
23
-
24
- var Nt=Object.defineProperty,Bt=Object.defineProperties;var Lt=Object.getOwnPropertyDescriptors;var Ne=Object.getOwnPropertySymbols;var Ut=Object.prototype.hasOwnProperty,Ft=Object.prototype.propertyIsEnumerable;var Be=(e,t)=>(t=Symbol[e])?t:Symbol.for("Symbol."+e);var Le=(e,t,o)=>t in e?Nt(e,t,{enumerable:true,configurable:true,writable:true,value:o}):e[t]=o,P=(e,t)=>{for(var o in t||(t={}))Ut.call(t,o)&&Le(e,o,t[o]);if(Ne)for(var o of Ne(t))Ft.call(t,o)&&Le(e,o,t[o]);return e},U=(e,t)=>Bt(e,Lt(t));var l=(e,t,o)=>new Promise((a,r)=>{var n=c=>{try{i(o.next(c));}catch(f){r(f);}},s=c=>{try{i(o.throw(c));}catch(f){r(f);}},i=c=>c.done?a(c.value):Promise.resolve(c.value).then(n,s);i((o=o.apply(e,t)).next());});var Ue=(e,t,o)=>(t=e[Be("asyncIterator")])?t.call(e):(e=e[Be("iterator")](),t={},o=(a,r)=>(r=e[a])&&(t[a]=n=>new Promise((s,i,c)=>(n=r.call(e,n),c=n.done,Promise.resolve(n.value).then(f=>s({value:f,done:c}),i)))),o("next"),o("return"),t);var ee="graz-reconnect-session";var Fe=(m=>(m.KEPLR="keplr",m.LEAP="leap",m.VECTIS="vectis",m.COSMOSTATION="cosmostation",m.WALLETCONNECT="walletconnect",m.WC_KEPLR_MOBILE="wc_keplr_mobile",m.WC_LEAP_MOBILE="wc_leap_mobile",m.WC_COSMOSTATION_MOBILE="wc_cosmostation_mobile",m.WC_CLOT_MOBILE="wc_clot_mobile",m.METAMASK_SNAP_LEAP="metamask_snap_leap",m.METAMASK_SNAP_COSMOS="metamask_snap_cosmos",m.STATION="station",m.XDEFI="xdefi",m.COSMIFRAME="cosmiframe",m.COMPASS="compass",m.INITIA="initia",m.OKX="okx",m.PARA="para",m))(Fe||{}),Ge=["keplr","leap","vectis","cosmostation","walletconnect","wc_keplr_mobile","wc_leap_mobile","wc_cosmostation_mobile","wc_clot_mobile","metamask_snap_leap","station","xdefi","metamask_snap_cosmos","cosmiframe","compass","initia","okx","para"];var zt={iframeOptions:null,recentChainIds:null,chains:null,chainsConfig:null,paraConfig:null,multiChainFetchConcurrency:3,walletType:"keplr",walletConnect:{options:null,walletConnectModal:null},walletDefaultOptions:null,pingInterval:36e5,_notFoundFn:()=>null,_onReconnectFailed:()=>null,_reconnect:false,_reconnectConnector:null},ne={accounts:null,activeChainIds:null,status:"disconnected",lastPing:null,wcSignClients:new Map,paraConnector:null},qt={name:"graz-session",version:2,partialize:e=>({accounts:e.accounts,activeChainIds:e.activeChainIds,lastPing:e.lastPing,status:e.status}),storage:middleware.createJSONStorage(()=>sessionStorage)},$t={name:"graz-internal",partialize:e=>({recentChainIds:e.recentChainIds,_reconnect:e._reconnect,_reconnectConnector:e._reconnectConnector,walletType:e.walletType}),version:2},y=zustand.create(middleware.subscribeWithSelector(middleware.persist(()=>ne,qt))),u=zustand.create(middleware.subscribeWithSelector(middleware.persist(()=>zt,$t)));var ce=()=>{if(typeof window.compass!="undefined"){let e=window.compass;return Object.assign(e,{subscription:r=>{let n=()=>{N(),r();};return window.addEventListener("leap_keystorechange",n),()=>{window.removeEventListener("leap_keystorechange",n);}},setDefaultOptions:r=>{e.defaultOptions=r;}})}throw u.getState()._notFoundFn(),new Error("window.leap is not defined")};var le=()=>{let e=u.getState();if(!e.iframeOptions)throw e._notFoundFn(),new Error("no iframe options set");if(!cosmiframe.isInIframe())throw e._notFoundFn(),new Error("not in iframe");if(!e.iframeOptions.allowedIframeParentOrigins.length)throw e._notFoundFn(),new Error("no iframe allowed origins");let t=new cosmiframe.Cosmiframe(e.iframeOptions.allowedIframeParentOrigins).getKeplrClient();return {enable:t.enable.bind(t),getKey:t.getKey.bind(t),getOfflineSigner:t.getOfflineSigner.bind(t),getOfflineSignerAuto:t.getOfflineSignerAuto.bind(t),getOfflineSignerOnlyAmino:t.getOfflineSignerOnlyAmino.bind(t),experimentalSuggestChain:t.experimentalSuggestChain.bind(t),signDirect:t.signDirect.bind(t),signAmino:t.signAmino.bind(t)}};var Ve={},He=()=>{let e=window.ethereum,t=window.cosmos;if(e)return {init:()=>l(void 0,null,function*(){var p;let n=yield e.request({method:"web3_clientVersion"});if(!n.includes("MetaMask"))throw new Error("Metamask is not installed");if(typeof window.okxwallet!="undefined"&&window.okxwallet.isOkxWallet)throw new Error("You have OKX Wallet installed. Please disable and reload the page to use Metamask Snap.");let i=(p=n.split("MetaMask/v")[1])==null?void 0:p.split(".")[0];if(!(Number(i)>=11))throw new Error("Metamask Snap is not supported in this version");return (yield snapper.isSnapInstalled())||(yield snapper.installSnap()),window.cosmos=new snapper.CosmosSnap,t=window.cosmos,true}),enable:n=>l(void 0,null,function*(){(yield snapper.isSnapInstalled())||(yield snapper.installSnap());}),getOfflineSigner:n=>t.getOfflineSigner(n),experimentalSuggestChain:n=>l(void 0,null,function*(){if(!n.bech32Config)throw new Error("Bech32Config is required");if(!n.stakeCurrency)throw new Error("StakeCurrency is required");yield t.experimentalSuggestChain(U(P({},n),{stakeCurrency:n.stakeCurrency,bech32Config:n.bech32Config}));}),signAmino:(n,s,i)=>l(void 0,null,function*(){return t.signAmino(n,s,i)}),getKey:n=>l(void 0,null,function*(){return typeof Ve[n]!="undefined"?Ve[n]:t.getKey(n)}),getOfflineSignerAuto:n=>l(void 0,null,function*(){return (yield t.getKey(n)).isNanoLedger?t.getOfflineSignerOnlyAmino(n):t.getOfflineSigner(n)}),getOfflineSignerOnlyAmino:n=>t.getOfflineSignerOnlyAmino(n),signDirect:(n,s,i)=>l(void 0,null,function*(){return t.signDirect(n,s,i)}),signArbitrary:(n,s,i)=>l(void 0,null,function*(){return t.signArbitrary(n,s,i)}),disable:n=>l(void 0,null,function*(){n&&(yield t.deleteChain(n));})};throw u.getState()._notFoundFn(),new Error("window.ethereum is not defined")};var ue=()=>{var e;if(typeof((e=window.cosmostation)==null?void 0:e.providers.keplr)!="undefined"){let t=window.cosmostation.providers.keplr;return Object.assign(t,{subscription:n=>{let s=()=>{N(),n();};return window.addEventListener("cosmostation_keystorechange",s),()=>{window.removeEventListener("cosmostation_keystorechange",s);}},setDefaultOptions:n=>{t.defaultOptions=n;}})}throw u.getState()._notFoundFn(),new Error("window.cosmostation.providers.keplr is not defined")};var Zt=e=>{let{bodyBytes:t,authInfoBytes:o,chainId:a,accountNumber:r}=e;if(!t||!o||!a||!r)throw new Error("Invalid sign doc");return {bodyBytes:t,authInfoBytes:o,chainId:a,accountNumber:r}},en=e=>`${e.slice(0,6)}...${e.slice(-6)}`,Ye=()=>{if(typeof window.initia!="undefined"){let e=window.initia;return {enable:()=>l(void 0,null,function*(){yield e.getAddress();}),getKey:d=>l(void 0,null,function*(){let g=e.getOfflineSigner(d),[S]=yield g.getAccounts();if(!S)throw new Error("Wallet connection failed");let T=(()=>{switch(S.algo){case "secp256k1":return amino.rawSecp256k1PubkeyToRawAddress(S.pubkey);case "ed25519":return amino.rawEd25519PubkeyToRawAddress(S.pubkey);default:throw new Error("sr25519 public key algorithm is not supported")}})();return {name:en(S.address),algo:S.algo,pubKey:S.pubkey,bech32Address:S.address,address:T,isNanoLedger:false,isKeystone:false}}),getOfflineSigner:d=>{let g=e.getOfflineSigner(d),S=e.getOfflineSignerOnlyAmino(d);return {getAccounts:g.getAccounts.bind(g),signDirect:g.signDirect.bind(g),signAmino:S.signAmino.bind(S)}},getOfflineSignerAuto:d=>Promise.resolve(e.getOfflineSigner(d)),getOfflineSignerOnlyAmino:d=>e.getOfflineSignerOnlyAmino(d),experimentalSuggestChain:d=>e.requestAddInitiaLayer({chain_id:d.chainId,chain_name:d.chainName,bech32_prefix:"init",bech32_config:d.bech32Config,slip44:d.bip44.coinType,logo_URIs:{png:d.chainSymbolImageUrl},fees:{fee_tokens:d.feeCurrencies.map(g=>{var S,T,M;return {denom:g.coinDenom,amount:g.coinMinimalDenom,low_gas_price:(S=g.gasPriceStep)==null?void 0:S.low,average_gas_price:(T=g.gasPriceStep)==null?void 0:T.average,high_gas_price:(M=g.gasPriceStep)==null?void 0:M.high}})},apis:{rpc:[{address:d.rpc}],rest:[{address:d.rest}]}}),signDirect:(...d)=>{let[g,S,T]=d;return e.getOfflineSigner(g).signDirect(S,Zt(T))},signAmino:(...d)=>{let[g,S,T]=d;return e.getOfflineSignerOnlyAmino(g).signAmino(S,T)},signArbitrary:(d,g,S)=>l(void 0,null,function*(){let W=(yield e.getOfflineSigner(d).getAccounts()).find(A=>A.address===g);if(!W)throw new Error(`Wallet not connected to account ${g}`);let O=(()=>{switch(W.algo){case "secp256k1":return amino.encodeSecp256k1Pubkey(W.pubkey);case "ed25519":return amino.encodeEd25519Pubkey(W.pubkey);default:throw new Error("sr25519 public key algorithm is not supported")}})();return {signature:yield e.signArbitrary(S),pub_key:{type:W.algo==="secp256k1"?amino.pubkeyType.secp256k1:amino.pubkeyType.ed25519,value:O.value}}}),subscription:d=>{let g=()=>{N(),d();};return window.addEventListener("initia_keystorechange",g),()=>{window.removeEventListener("initia_keystorechange",g);}}}}throw u.getState()._notFoundFn(),new Error("window.initia is not defined")};var pe=()=>{if(typeof window.keplr!="undefined"){let e=window.keplr;return Object.assign(e,{subscription:r=>{let n=()=>{N(),r();};return window.addEventListener("keplr_keystorechange",n),()=>{window.removeEventListener("keplr_keystorechange",n);}},setDefaultOptions:r=>{e.defaultOptions=r;}})}throw u.getState()._notFoundFn(),new Error("window.keplr is not defined")};var de=()=>{if(typeof window.leap!="undefined"){let e=window.leap;return Object.assign(e,{subscription:r=>{let n=()=>{N(),r();};return window.addEventListener("leap_keystorechange",n),()=>{window.removeEventListener("leap_keystorechange",n);}},setDefaultOptions:r=>{e.defaultOptions=r;}})}throw u.getState()._notFoundFn(),new Error("window.leap is not defined")};var me={},Ze=e=>{let t=window.ethereum;if(t&&e){let o=()=>l(void 0,null,function*(){return yield t.request({method:"wallet_getSnaps"})}),a=m=>l(void 0,null,function*(){try{let A=yield o();return Object.values(A).find(b=>b.id===e.id&&(!m||b.version===m))}catch(A){return}}),r=()=>l(void 0,null,function*(){yield t.request({method:"wallet_requestSnaps",params:{[e.id]:e.params||{}}});}),n=()=>l(void 0,null,function*(){var D;let m=yield t.request({method:"web3_clientVersion"});if(!m.includes("MetaMask"))throw new Error("Metamask is not installed");if(typeof window.okxwallet!="undefined"&&window.okxwallet.isOkxWallet)throw new Error("You have OKX Wallet installed. Please disable and reload the page to use Metamask Snap.");let b=(D=m.split("MetaMask/v")[1])==null?void 0:D.split(".")[0];if(!(Number(b)>=11))throw new Error("Metamask Snap is not supported in this version");return (yield a())||(yield r()),true}),s=m=>l(void 0,null,function*(){(yield a())||(yield r());}),i=(m,A,b)=>l(void 0,null,function*(){let k=yield t.request({method:"wallet_invokeSnap",params:{snapId:e.id,request:{method:"signDirect",params:{chainId:m,signerAddress:A,signDoc:b}}}}),K=b.accountNumber,D=new Ee__default.default(K.low,K.high,K.unsigned);return {signature:k.signature,signed:U(P({},k.signed),{accountNumber:`${D.toString()}`,authInfoBytes:new Uint8Array(Object.values(k.signed.authInfoBytes)),bodyBytes:new Uint8Array(Object.values(k.signed.bodyBytes))})}}),c=(m,A,b)=>l(void 0,null,function*(){return yield t.request({method:"wallet_invokeSnap",params:{snapId:e.id,request:{method:"signAmino",params:{chainId:m,signerAddress:A,signDoc:b}}}})}),f=m=>l(void 0,null,function*(){if(typeof me[m]!="undefined")return me[m];let A=yield t.request({method:"wallet_invokeSnap",params:{snapId:e.id,request:{method:"getKey",params:{chainId:m}}}});if(!A)throw new Error("No response from Metamask");return A.pubKey=Uint8Array.from(Object.values(A.pubkey)),delete A.pubkey,me[m]=A,me[m]}),p=m=>l(void 0,null,function*(){let A=yield f(m);return {address:A.bech32Address,algo:A.algo,pubkey:A.pubKey}}),d=(...m)=>l(void 0,null,function*(){let[A,b,k,K]=m;return yield c(A,b,k)}),g=(...m)=>l(void 0,null,function*(){var j;let[A,b,k]=m,K=U(P({},k),{accountNumber:Ee__default.default.fromString(((j=k.accountNumber)==null?void 0:j.toString())||"0"),authInfoBytes:k.authInfoBytes,bodyBytes:k.bodyBytes});return yield i(A,b,K)}),T=m=>({getAccounts:()=>l(void 0,null,function*(){return [yield p(m)]}),signAmino:(A,b)=>d(m,A,b)});return {enable:s,experimentalSuggestChain:(...m)=>l(void 0,null,function*(){yield n(),yield t.request({method:"wallet_invokeSnap",params:{snapId:e.id,request:{method:"suggestChain",params:{chainInfo:m[0]}}}});}),getKey:f,getOfflineSigner:m=>({getAccounts:()=>l(void 0,null,function*(){return [yield p(m)]}),signDirect:(A,b)=>g(m,A,b),signAmino:(A,b)=>d(m,A,b)}),getOfflineSignerAuto:m=>l(void 0,null,function*(){return T(m)}),getOfflineSignerOnlyAmino:T,init:n,signAmino:d,signDirect:g}}throw u.getState()._notFoundFn(),new Error("window.ethereum is not defined")};var et=()=>Ze({id:"npm:@leapwallet/metamask-cosmos-snap"});var fe=()=>{var e;if(typeof((e=window.okxwallet)==null?void 0:e.keplr)!="undefined"){let t=window.okxwallet.keplr;return Object.assign(t,{subscription:n=>{var i;let s=()=>{N(),n();};return (i=window.okxwallet)==null||i.on("accountsChanged",s),()=>{var c;(c=window.okxwallet)==null||c.removeListener("accountsChanged",s);}},setDefaultOptions:n=>{t.defaultOptions=n;}})}throw u.getState()._notFoundFn(),new Error("window.okxwallet.keplr is not defined")};var ie=null,tt=()=>{let e=()=>{let r=y.getState().paraConnector;if(!r)throw new Error("Para connector not initialized. Call connect() first or check paraConfig in GrazProvider.");return r},t=u.getState().paraConfig;if(!t||!t.paraWeb)throw new Error("Missing Para config. Provide paraConfig with 'paraWeb' to GrazProvider.");let o=()=>ie||(ie=l(void 0,null,function*(){var n,s;let r=y.getState().paraConnector;if(r)return r;try{let i;if(t.connectorClass)i=t.connectorClass;else {if(typeof window=="undefined")throw new Error("Para connector requires client-side execution (SSR is unsupported).");let p=yield import('@getpara/graz-integration'),d=p==null?void 0:p.ParaGrazConnector;if(typeof d!="function")throw new Error("Invalid ParaGrazConnector in @getpara/graz-integration. Check the package/export.");i=d;}let c=u.getState().chains,f=new i(t,c);if(y.setState(p=>U(P({},p),{paraConnector:f})),!f)throw new Error("Para connector initialization failed. Check config and dependencies.");return f}catch(i){throw ie=null,(i==null?void 0:i.code)==="MODULE_NOT_FOUND"||((n=i==null?void 0:i.message)==null?void 0:n.includes("Cannot find module"))||((s=i==null?void 0:i.message)==null?void 0:s.includes("Failed to resolve"))?new Error("Para integration package not found. Install @getpara/graz-integration to use Para wallet: npm install @getpara/graz-integration"):new Error(`Para connector init failed: ${(i==null?void 0:i.message)||"Unknown error"}. Check @getpara/graz-integration and ParaConfig.`)}}),ie);return {enable:r=>l(void 0,null,function*(){var s,i;let n=Array.isArray(r)?r:[r];try{let c=yield o();y.setState({paraConnector:c,status:"connecting"}),yield c.enable(n);let f=Object.fromEntries(yield Promise.all(n.map(p=>l(void 0,null,function*(){return [p,yield c.getKey(p)]}))));y.setState(p=>({accounts:P(P({},p.accounts||{}),f),activeChainIds:Array.from(new Set([...p.activeChainIds||[],...n])),status:"connected"})),u.setState(p=>({recentChainIds:Array.from(new Set([...p.recentChainIds||[],...n])),walletType:"para",_reconnect:!1,_reconnectConnector:"para"}));}catch(c){throw y.setState({paraConnector:null,status:"disconnected"}),((s=c==null?void 0:c.message)==null?void 0:s.includes("not found"))||((i=c==null?void 0:c.message)==null?void 0:i.includes("Cannot find"))?new Error("Para wallet connection failed: Required packages not installed. Install @getpara/graz-integration to enable Para wallet."):new Error(`Para enable failed${c instanceof Error?`: ${c.message}`:""}`)}}),disable:()=>l(void 0,null,function*(){let r=y.getState().paraConnector;if(!r){y.setState({paraConnector:null,status:"disconnected"});return}try{yield r.disconnect(),yield r.getParaWebClient().logout();}catch(n){throw new Error(`Para disconnect failed${n!=null&&n.message?`: ${n.message}`:". Wallet may already be disconnected."}`)}finally{y.setState({paraConnector:null,status:"disconnected"});}}),getKey:r=>l(void 0,null,function*(){try{return yield e().getKey(r)}catch(n){throw new Error(`Failed to get key${n!=null&&n.message?`: ${n.message}`:""}. Check chain connection and Cosmos API key settings at developer.getpara.com.`)}}),getOfflineSigner:r=>{try{return e().getOfflineSigner(r)}catch(n){throw new Error(`Failed to get offline signer${n!=null&&n.message?`: ${n.message}`:""}. Check Para auth and Cosmos support in developer portal.`)}},getOfflineSignerOnlyAmino:r=>{try{return e().getOfflineSignerOnlyAmino(r)}catch(n){throw new Error(`Failed to get Amino signer${n!=null&&n.message?`: ${n.message}`:""}. Check Para auth and Cosmos support in developer portal.`)}},getOfflineSignerAuto:r=>{try{return e().getOfflineSignerAuto(r)}catch(n){throw new Error(`Failed to get auto signer${n!=null&&n.message?`: ${n.message}`:""}. Check Para auth and Cosmos support in developer portal.`)}},signAmino:(r,n,s,i)=>l(void 0,null,function*(){try{return yield e().signAmino(r,n,s,i)}catch(c){throw new Error(`Amino signing failed${c!=null&&c.message?`: ${c.message}`:""}. User rejected or invalid transaction/signer.`)}}),signDirect:(r,n,s,i)=>l(void 0,null,function*(){try{return yield e().signDirect(r,n,s,i)}catch(c){throw new Error(`Direct signing failed${c!=null&&c.message?`: ${c.message}`:""}. User rejected or invalid transaction/signer.`)}}),signArbitrary:(r,n,s)=>l(void 0,null,function*(){try{return yield e().signArbitrary(r,n,s)}catch(i){throw new Error(`Arbitrary signing failed${i!=null&&i.message?`: ${i.message}`:""}. User rejected or feature not supported.`)}}),experimentalSuggestChain:()=>l(void 0,null,function*(){throw new Error("Chain suggestion not supported. Configure chains in Para wallet settings.")})}};var ge=()=>{var e;if(typeof((e=window.station)==null?void 0:e.keplr)!="undefined"){let t=window.station.keplr;return {subscription:s=>{let i=()=>{N(),s();};return window.addEventListener("station_wallet_change",i),()=>{window.removeEventListener("station_wallet_change",i);}},getKey:s=>l(void 0,null,function*(){let i=yield t.getKey(s);return P({isKeystone:false},i)}),getOfflineSigner:s=>{try{let i=t.getOfflineSignerOnlyAmino(s);return Object.assign(i,{signDirect:(p,d)=>{throw new Error("signDirect not supported by Station")}})}catch(i){throw console.error(i),i}},experimentalSuggestChain:s=>l(void 0,null,function*(){try{if(!s.bech32Config)throw new Error("Bech32Config is required");if(!s.stakeCurrency)throw new Error("StakeCurrency is required");let i=Object.assign(s,{bech32Config:s.bech32Config,chainSymbolImageUrl:s.chainSymbolImageUrl||"",stakeCurrency:{coinDecimals:s.stakeCurrency.coinDecimals,coinDenom:s.stakeCurrency.coinDenom,coinImageUrl:s.stakeCurrency.coinImageUrl||"",coinMinimalDenom:s.stakeCurrency.coinMinimalDenom},currencies:s.currencies.map(c=>({coinDecimals:c.coinDecimals,coinDenom:c.coinDenom,coinImageUrl:c.coinImageUrl||"",coinMinimalDenom:c.coinMinimalDenom})),feeCurrencies:s.feeCurrencies.map(c=>{var f,p,d;return {coinDecimals:c.coinDecimals,coinDenom:c.coinDenom,coinImageUrl:c.coinImageUrl||"",coinMinimalDenom:c.coinMinimalDenom,gasPriceStep:{average:((f=c.gasPriceStep)==null?void 0:f.average)||0,high:((p=c.gasPriceStep)==null?void 0:p.high)||0,low:((d=c.gasPriceStep)==null?void 0:d.low)||0}}})});yield t.experimentalSuggestChain(i);}catch(i){throw console.error(i),i}}),enable:s=>t.enable(s),disable:s=>t.disable(s),getOfflineSignerAuto:s=>t.getOfflineSignerAuto(s),getOfflineSignerOnlyAmino:s=>t.getOfflineSignerOnlyAmino(s),signDirect:t.signDirect,signAmino:(s,i,c,f)=>t.signAmino(s,i,c)}}throw u.getState()._notFoundFn(),new Error("window.station is not defined")};var ye=()=>{if(typeof window.vectis!="undefined"){let e=window.vectis.cosmos;return {enable:i=>e.enable(i),getOfflineSigner:i=>{let c=e.getOfflineSigner(i);return {getAccounts:c.getAccounts,signAmino:c.signAmino,signDirect:(f,p)=>l(void 0,null,function*(){var g;let d=yield c.signDirect(f,{accountNumber:Ee__default.default.fromString(((g=p.accountNumber)==null?void 0:g.toString())||"",false),authInfoBytes:p.authInfoBytes,bodyBytes:p.bodyBytes,chainId:p.chainId||""});return {signature:d.signature,signed:{authInfoBytes:d.signed.authInfoBytes,bodyBytes:d.signed.bodyBytes,chainId:d.signed.chainId,accountNumber:BigInt(d.signed.accountNumber.toString())}}})}},getOfflineSignerAuto:i=>l(void 0,null,function*(){let c=yield e.getOfflineSignerAuto(i);return "signAmino"in c?c:"signDirect"in c?{getAccounts:c.getAccounts,signDirect:(f,p)=>l(void 0,null,function*(){var g;let d=yield c.signDirect(f,{accountNumber:Ee__default.default.fromString(((g=p.accountNumber)==null?void 0:g.toString())||"",false),authInfoBytes:p.authInfoBytes,bodyBytes:p.bodyBytes,chainId:p.chainId||""});return {signature:d.signature,signed:{authInfoBytes:d.signed.authInfoBytes,bodyBytes:d.signed.bodyBytes,chainId:d.signed.chainId,accountNumber:BigInt(d.signed.accountNumber.toString())}}})}:c}),getKey:i=>l(void 0,null,function*(){let c=yield e.getKey(i);return {address:encoding.fromBech32(c.address).data,algo:c.algo,bech32Address:c.address,name:c.name,pubKey:c.pubKey,isKeystone:false,isNanoLedger:c.isNanoLedger}}),subscription:i=>{let c=()=>{N(),i();};return window.addEventListener("vectis_accountChanged",c),()=>{window.removeEventListener("vectis_accountChanged",c);}},getOfflineSignerOnlyAmino:(...i)=>{let c=i[0];return e.getOfflineSignerAmino(c)},experimentalSuggestChain:(...i)=>l(void 0,null,function*(){var p;let[c]=i;if(!c.bech32Config)throw new Error("Bech32Config is required");if(!c.stakeCurrency)throw new Error("StakeCurrency is required");let f={rpcUrl:c.rpc,restUrl:c.rest,prettyName:c.chainName.replace(" ",""),bech32Prefix:(p=c.bech32Config)==null?void 0:p.bech32PrefixAccAddr,currencies:c.currencies,feeCurrencies:c.feeCurrencies,chainId:c.chainId,chainName:c.chainName,bip44:c.bip44,stakeCurrency:c.stakeCurrency,features:c.features};return e.suggestChains([f])}),signDirect:(...i)=>l(void 0,null,function*(){var d;let{1:c,2:f}=i,p=yield e.signDirect(c,{bodyBytes:f.bodyBytes||Uint8Array.from([]),authInfoBytes:f.authInfoBytes||Uint8Array.from([]),accountNumber:Ee__default.default.fromString(((d=f.accountNumber)==null?void 0:d.toString())||"",false),chainId:f.chainId||""});return {signature:p.signature,signed:{authInfoBytes:p.signed.authInfoBytes,bodyBytes:p.signed.bodyBytes,chainId:p.signed.chainId,accountNumber:BigInt(p.signed.accountNumber.toString())}}}),signAmino:(...i)=>l(void 0,null,function*(){let{1:c,2:f}=i;return e.signAmino(c,f)})}}throw u.getState()._notFoundFn(),new Error("window.vectis is not defined")};var G=()=>{if(typeof window!="undefined"){let e=navigator.userAgent;return !!(/android/i.test(e)||/iPad|iPhone|iPod/.test(e))}return false},nt=()=>G()&&navigator.userAgent.toLowerCase().includes("android"),ot=()=>G()&&(navigator.userAgent.toLowerCase().includes("iphone")||navigator.userAgent.toLowerCase().includes("ipad"));var Te=(e,t,o=new Error("Promise timed out"))=>{let a=new Promise((r,n)=>{setTimeout(()=>{n(o);},t);});return Promise.race([e,a])};var z=e=>{var D,j,oe;if(!((oe=(j=(D=u.getState().walletConnect)==null?void 0:D.options)==null?void 0:j.projectId)!=null&&oe.trim()))throw new Error("walletConnect.options.projectId is not defined");let t=(e==null?void 0:e.walletType)||"walletconnect",o=(e==null?void 0:e.encoding)||"base64",a=C=>{if(!e)return;let{appUrl:w,formatNativeUrl:h}=e;if(G()){if(nt()){let E=h(w.mobile.android,C,"android");window.open(E,"_self","noreferrer noopener");}if(ot()){let E=h(w.mobile.ios,C,"ios");window.open(E,"_self","noreferrer noopener");}}},r=()=>{let{wcSignClients:C}=y.getState();if(!C.get(t))throw new Error("walletConnect.signClient is not defined");C.delete(t),y.setState({wcSignClients:C}),u.setState({_reconnect:false,_reconnectConnector:null,recentChainIds:null});},n=C=>l(void 0,null,function*(){let{wcSignClients:w}=y.getState(),h=w.get(t);if(!h)throw new Error("walletConnect.signClient is not defined");if(!C)throw new Error("No wallet connect session");yield h.disconnect({topic:C,reason:utils.getSdkError("USER_DISCONNECTED")}),yield c(h);}),s=C=>{try{let{wcSignClients:w}=y.getState(),h=w.get(t);if(!h)throw new Error("walletConnect.signClient is not defined");let E=h.session.getAll(),v=E.at(-1);if(!v)return;if(!(v.expiry*1e3>Date.now()+1e3))throw n(v.topic),new Error("invalid session");try{let R=E.find($=>{var X,Y;return (Y=(X=$.requiredNamespaces.cosmos)==null?void 0:X.chains)==null?void 0:Y.includes(`cosmos:${C}`)});if(!R)throw new Error("no session");return R}catch(R){if(!R.message.toLowerCase().includes("no matching key"))throw R}return v}catch(w){if(!w.message.toLowerCase().includes("no matching key"))throw w}},i=C=>{try{return s(C)}catch(w){return}},c=C=>l(void 0,null,function*(){try{let w=C.core.pairing.pairings.getAll({active:!1});if(!w.length)return;yield Promise.all(w.map(h=>l(void 0,null,function*(){yield C.core.pairing.pairings.delete(h.topic,{code:7001,message:"clear pairing"});})));}catch(w){if(!w.message.toLowerCase().includes("no matching key"))throw w}}),f=()=>l(void 0,null,function*(){let{walletConnect:C}=u.getState();if(!(C!=null&&C.options))throw new Error("walletConnect.options is not defined");let{wcSignClients:w}=y.getState(),h=w.get(t);if(h)return h;let E=yield signClient.SignClient.init(C.options);return w.set(t,E),y.setState({wcSignClients:w}),E}),p=C=>{let{wcSignClients:w}=y.getState(),h=w.get(t);if(!h)return ()=>{};let E=v=>{let x=y.getState().accounts;if(v.params.event.name==="accountsChanged"&&x&&!Object.values(x).map(R=>R.bech32Address).includes(v.params.event.data[0])){let R=v.params.chainId.split(":")[1];R&&d([R]);}else C();};return h.events.on("session_delete",r),h.events.on("session_expire",r),h.events.on("session_event",E),()=>{h.events.off("session_delete",r),h.events.off("session_expire",r),h.events.off("session_event",E);}},d=C=>l(void 0,null,function*(){var Y;let w=typeof C=="string"?[C]:C,{wcSignClients:h,activeChainIds:E}=y.getState(),v=h.get(t);if(!v)throw new Error("enable walletConnect.signClient is not defined");let{walletConnect:x,chains:R}=u.getState();if(!((Y=x==null?void 0:x.options)!=null&&Y.projectId))throw new Error("walletConnect.options.projectId is not defined");let $=new modal.WalletConnectModal(P({projectId:x.options.projectId,enableExplorer:false,explorerRecommendedWalletIds:"NONE"},x.walletConnectModal)),X=i(w);if(!X){let{uri:L,approval:se}=yield Te(v.connect({requiredNamespaces:{cosmos:{methods:["cosmos_getAccounts","cosmos_signAmino","cosmos_signDirect"],chains:w.map(Q=>`cosmos:${Q}`),events:["chainChanged","accountsChanged"]}}}),15e3,new Error("Connection timeout"));if(!L)throw new Error("No wallet connect uri");e?a(L):yield $.openModal({uri:L});let ae=Q=>l(void 0,null,function*(){return Q.aborted?Promise.reject(new Error("User closed wallet connect")):new Promise((be,Z)=>{se().then(Re=>{let _e=Re.sessionProperties;if(!_e)return Z(new Error("No session properties"));let Oe=JSON.parse(String(_e.keys));if(Oe.length===0)return Z(new Error("No accounts"));if(!Oe[0])return Z(new Error("No accounts"));let Ke={};return Oe.forEach(V=>{Ke[V.chainId]={address:V.address,algo:V.algo,bech32Address:V.bech32Address,isNanoLedger:V.isNanoLedger,isKeystone:V.isKeystone,name:V.name,pubKey:V.pubKey};}),y.setState(V=>({accounts:P(P({},V.accounts||{}),Ke)})),be(Re)}).catch(Z),Q.addEventListener("abort",()=>{Z(new Error("User closed wallet connect"));},{once:true});})});try{let Q=new AbortController,be=Q.signal;$.subscribeModal(Z=>{Z.open||Q.abort();}),yield ae(be);}catch(Q){if($.closeModal(),!Q.message.toLowerCase().includes("no matching key"))return Promise.reject(Q)}return e||$.closeModal(),Promise.resolve()}try{yield Te(l(void 0,null,function*(){var se;let L=Object.fromEntries(yield Promise.all((se=E||w)==null?void 0:se.map(ae=>l(void 0,null,function*(){return [ae,yield S(ae)]}))));y.setState({accounts:L});}),15e3,new Error("Connection timeout"));}catch(L){if(n(X.topic),!L.message.toLowerCase().includes("no matching key"))throw L}}),g=C=>l(void 0,null,function*(){let w=yield S(C);return {address:w.bech32Address,algo:w.algo,pubkey:w.pubKey}}),S=C=>l(void 0,null,function*(){let w=s([C]);if(!(w!=null&&w.topic))throw new Error("No wallet connect session");let h=w.sessionProperties&&JSON.parse(String(w.sessionProperties.keys));if(!h)throw new Error("No wallet connect key");if(h.length===0)throw new Error("No wallet connect session");let E=h.find(v=>v.chainId===C);if(!E)throw new Error(`No wallet connect key for chainId ${C}`);return U(P({},E),{pubKey:Buffer.from(String(E.pubKey),o)})}),T=(...C)=>l(void 0,null,function*(){var Y,L;let[w,h,E]=C,{accounts:v,wcSignClients:x}=y.getState(),R=x.get(t);if(!R)throw new Error("walletConnect.signClient is not defined");if(!v)throw new Error("account is not defined");let $=(Y=s([w]))==null?void 0:Y.topic;if(!$)throw new Error("No wallet connect session");if(!E.bodyBytes)throw new Error("No bodyBytes");if(!E.authInfoBytes)throw new Error("No authInfoBytes");return a(),yield R.request({topic:$,chainId:`cosmos:${w}`,request:{method:"cosmos_signDirect",params:{signerAddress:h,signDoc:{chainId:E.chainId,accountNumber:(L=E.accountNumber)==null?void 0:L.toString(),bodyBytes:E.bodyBytes?Buffer.from(E.bodyBytes).toString(o):null,authInfoBytes:E.authInfoBytes?Buffer.from(E.authInfoBytes).toString(o):null}}}})}),M=(...C)=>l(void 0,null,function*(){var R;let[w,h,E]=C,{signature:v,signed:x}=yield T(w,h,E);return {signed:{chainId:(R=x.chainId)!=null?R:"",accountNumber:x.accountNumber?BigInt(x.accountNumber):BigInt(0),authInfoBytes:x.authInfoBytes?new Uint8Array(Buffer.from(x.authInfoBytes,o)):new Uint8Array([]),bodyBytes:x.bodyBytes?new Uint8Array(Buffer.from(x.bodyBytes,o)):new Uint8Array([])},signature:v}}),W=(...C)=>l(void 0,null,function*(){var L;let[w,h,E,v]=C,{wcSignClients:x}=y.getState(),R=x.get(t),{accounts:$}=y.getState();if(!R)throw new Error("walletConnect.signClient is not defined");if(!$)throw new Error("account is not defined");let X=(L=s([w]))==null?void 0:L.topic;if(!X)throw new Error("No wallet connect session");return a(),yield R.request({topic:X,chainId:`cosmos:${w}`,request:{method:"cosmos_signDirect",params:{signerAddress:h,signDoc:E}}})}),O=(...C)=>l(void 0,null,function*(){let[w,h,E,v]=C;return yield W(w,h,E)}),m=C=>({getAccounts:()=>l(void 0,null,function*(){return [yield g(C)]}),signDirect:(w,h)=>M(C,w,h)}),A=C=>({getAccounts:()=>l(void 0,null,function*(){return [yield g(C)]}),signAmino:(w,h)=>O(C,w,h)});return {enable:d,disable:C=>l(void 0,null,function*(){var E;let{wcSignClients:w}=y.getState(),h=w.get(t);if(C===void 0){let v=h==null?void 0:h.session.getAll();v!==void 0&&(yield Promise.all(v.map(x=>n(x.topic))));}else typeof C=="string"?yield n((E=s([C]))==null?void 0:E.topic):yield Promise.all(C.map(v=>{var x;return n((x=s([v]))==null?void 0:x.topic)}));(h==null?void 0:h.session.getAll().length)===0&&r();}),experimentalSuggestChain:(...C)=>l(void 0,null,function*(){yield Promise.reject(new Error("WalletConnect does not support experimentalSuggestChain"));}),getKey:S,getOfflineSigner:C=>({getAccounts:()=>l(void 0,null,function*(){return [yield g(C)]}),signDirect:(w,h)=>M(C,w,h),signAmino:(w,h)=>O(C,w,h)}),getOfflineSignerAuto:C=>l(void 0,null,function*(){return (yield S(C)).isNanoLedger?A(C):m(C)}),getOfflineSignerOnlyAmino:A,signAmino:O,signDirect:M,subscription:p,init:f}};var it=()=>{var t,o,a;if(!((a=(o=(t=u.getState().walletConnect)==null?void 0:t.options)==null?void 0:o.projectId)!=null&&a.trim()))throw new Error("walletConnect.options.projectId is not defined");if(!G())throw new Error("WalletConnect Clot mobile is only supported in mobile");let e={encoding:"base64",appUrl:{mobile:{android:"clot://",ios:"clot://"}},walletType:"wc_clot_mobile",formatNativeUrl:(r,n,s)=>{let i=r.replaceAll("/","").replaceAll(":",""),c=n&&encodeURIComponent(n);switch(s){case "ios":return c?`${i}://wcV2?${c}`:`${i}://wcV2`;default:return c?`${i}://wc?uri=${c}`:`${i}://wc`}}};return z(e)};var rt=()=>{var t,o,a;if(!((a=(o=(t=u.getState().walletConnect)==null?void 0:t.options)==null?void 0:o.projectId)!=null&&a.trim()))throw new Error("walletConnect.options.projectId is not defined");if(!G())throw new Error("WalletConnect Cosmostation mobile is only supported in mobile");let e={encoding:"hex",appUrl:{mobile:{ios:"cosmostation://",android:"cosmostation://"}},walletType:"wc_cosmostation_mobile",formatNativeUrl:(r,n,s)=>{let i=r.replaceAll("/","").replaceAll(":","");return n?`${i}://wc?${n}`:`${i}://wc`}};return z(e)};var st=()=>{var t,o,a;if(!((a=(o=(t=u.getState().walletConnect)==null?void 0:t.options)==null?void 0:o.projectId)!=null&&a.trim()))throw new Error("walletConnect.options.projectId is not defined");if(!G())throw new Error("WalletConnect Keplr mobile is only supported in mobile");let e={encoding:"base64",appUrl:{mobile:{ios:"keplrwallet://",android:"intent://"}},walletType:"wc_keplr_mobile",formatNativeUrl:(r,n,s)=>{let i=r.replaceAll("/","").replaceAll(":",""),c=n&&encodeURIComponent(n);switch(s){case "ios":return c?`${i}://wcV2?${c}`:`${i}://wcV2`;case "android":return c?`${i}://wcV2?${c}#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;`:`${i}://wcV2#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;`;default:return c?`${i}://wc?uri=${c}`:`${i}://wc`}}};return z(e)};var at=()=>{var t,o,a;if(!((a=(o=(t=u.getState().walletConnect)==null?void 0:t.options)==null?void 0:o.projectId)!=null&&a.trim()))throw new Error("walletConnect.options.projectId is not defined");if(!G())throw new Error("WalletConnect Leap mobile is only supported in mobile");let e={encoding:"base64",appUrl:{mobile:{ios:"leapcosmos://",android:"intent://"}},walletType:"wc_leap_mobile",formatNativeUrl:(r,n,s)=>{let i=r.replaceAll("/","").replaceAll(":",""),c=n&&encodeURIComponent(n);switch(s){case "ios":return c?`${i}://wcV2?${c}`:`${i}://wcV2`;case "android":return c?`${i}://wcV2?${c}#Intent;package=io.leapwallet.cosmos;scheme=leapwallet;end;`:`${i}://wcV2#Intent;package=io.leapwallet.cosmos;scheme=leapwallet;end;`;default:return c?`${i}://wc?uri=${c}`:`${i}://wc`}}};return z(e)};var Ce=()=>{var e;if(typeof((e=window.xfi)==null?void 0:e.keplr)!="undefined"){let t=window.xfi.keplr;return Object.assign(t,{subscription:r=>{let n=()=>{N(),r();};return window.addEventListener("keplr_keystorechange",n),()=>{window.removeEventListener("keplr_keystorechange",n);}}})}throw u.getState()._notFoundFn(),new Error("window.xfi.keplr is not defined")};var F=(e=u.getState().walletType)=>{try{return _(e),!0}catch(t){return false}},N=()=>{window.sessionStorage.removeItem(ee),y.setState(ne);},_=(e=u.getState().walletType)=>{var a;let t=(()=>{switch(e){case "keplr":return pe();case "leap":return de();case "cosmostation":return ue();case "vectis":return ye();case "walletconnect":return z();case "wc_keplr_mobile":return st();case "wc_leap_mobile":return at();case "wc_cosmostation_mobile":return rt();case "wc_clot_mobile":return it();case "metamask_snap_leap":return et();case "metamask_snap_cosmos":return He();case "station":return ge();case "xdefi":return Ce();case "cosmiframe":return le();case "compass":return ce();case "initia":return Ye();case "okx":return fe();case "para":return tt();default:throw new Error("Unknown wallet type")}})(),o=u.getState().walletDefaultOptions;return o&&((a=t.setDefaultOptions)==null||a.call(t,o)),t},ji=()=>Object.fromEntries(Ge.map(e=>[e,F(e)])),ct=e=>e==="metamask_snap_leap",lt=()=>!!(navigator!=null&&navigator.userAgent)&&/LeapCosmos/i.test(navigator.userAgent),re=e=>e==="walletconnect"||e==="wc_keplr_mobile"||e==="wc_leap_mobile"||e==="wc_cosmostation_mobile",ut=e=>e==="para";var te=e=>l(void 0,null,function*(){var t;try{let{recentChainIds:s,chains:i,walletType:c}=u.getState(),f=(e==null?void 0:e.walletType)||c;if(re(f)){let O=_("walletconnect"),{disable:m}=O;m&&m();}if(!F(f))throw new Error(`${f} is not available`);let d=_(f),g=typeof(e==null?void 0:e.chainId)=="string"?[e.chainId]:(e==null?void 0:e.chainId)||s;if(!g)throw new Error("No last known connected chain, connect action requires chain ids");let S=i==null?void 0:i.map(O=>O.chainId);g.forEach(O=>{if(!(S!=null&&S.includes(O)))throw new Error(`Chain ${O} is not provided in GrazProvider`)}),y.setState(O=>{let m=u.getState()._reconnect||!!u.getState()._reconnectConnector||!!g;return O.activeChainIds&&g.filter(b=>{var k;return !((k=O.activeChainIds)!=null&&k.includes(b))}).length>0?{status:"connecting"}:m?{status:"reconnecting"}:{status:"connecting"}});let{accounts:T}=y.getState();if(yield (t=d.init)==null?void 0:t.call(d),yield d.enable(g),!re(f)){let O={};if(ct(f)){let m={};try{for(var o=Ue(g),a,r,n;a=!(r=yield o.next()).done;a=!1){let A=r.value;m[A]=yield d.getKey(A);}}catch(r){n=[r];}finally{try{a&&(r=o.return)&&(yield r.call(o));}finally{if(n)throw n[0]}}O=m;}else if(lt()&&d.getKeys){let m=yield d.getKeys(g);g.forEach((A,b)=>{let k=m[b];k&&(O[A]=k);});}else O=Object.fromEntries(yield Promise.all(g.map(m=>l(void 0,null,function*(){return [m,yield d.getKey(m)]}))));y.setState(m=>({accounts:P(P({},m.accounts||{}),O)}));}u.setState(O=>({recentChainIds:[...O.recentChainIds||[],...g].filter((m,A,b)=>b.indexOf(m)===A)})),y.setState(O=>({activeChainIds:[...O.activeChainIds||[],...g].filter((m,A,b)=>b.indexOf(m)===A)})),u.setState({walletType:f,_reconnect:!!(e!=null&&e.autoReconnect),_reconnectConnector:f}),y.setState({status:"connected"}),typeof window!="undefined"&&window.sessionStorage.setItem(ee,"Active");let M=g.map(O=>i.find(m=>m.chainId===O));return {accounts:y.getState().accounts,walletType:f,chains:M}}catch(s){throw console.error("connect ",s),y.getState().accounts===null&&y.setState({status:"disconnected"}),y.getState().accounts&&y.getState().activeChainIds&&y.setState({status:"connected"}),s}}),Pe=e=>{typeof window!="undefined"&&window.sessionStorage.removeItem(ee);let t=typeof(e==null?void 0:e.chainId)=="string"?[e.chainId]:e==null?void 0:e.chainId,o=()=>{if(re(u.getState().walletType)){let a=_("walletconnect"),{disable:r}=a;r&&r();}if(ut(u.getState().walletType)){let a=_("para"),{disable:r}=a;r&&r();}};if(t){let a=y.getState().accounts;t.forEach(n=>{a==null||delete a[n];}),Object.values(a||{}).length===0?(o(),y.setState(ne),u.setState({_reconnect:false,_reconnectConnector:null,recentChainIds:null})):(y.setState(n=>{var s;return {activeChainIds:(s=n.activeChainIds)==null?void 0:s.filter(i=>!t.includes(i)),accounts:a}}),u.setState(n=>{var s;return {recentChainIds:(s=n.recentChainIds)==null?void 0:s.filter(i=>!t.includes(i))}}));}else o(),y.setState(ne),u.setState({_reconnect:false,_reconnectConnector:null,recentChainIds:null});return Promise.resolve()},B=e=>l(void 0,null,function*(){var r;let{recentChainIds:t,_reconnectConnector:o,_reconnect:a}=u.getState();try{let n=F(o||void 0);if(t&&n&&o)return re(o)?void 0:yield te({chainId:t,walletType:o,autoReconnect:a})}catch(n){(r=e==null?void 0:e.onError)==null||r.call(e,n),Pe();}}),pt=e=>l(void 0,null,function*(){if(!(e!=null&&e.chainId))throw new Error("chainId is required");let{walletType:t}=u.getState(),o=e.walletType||t;if(!F(o))throw new Error(`${o} is not available`);let r=_(o),n=r.getOfflineSigner(e.chainId),s=r.getOfflineSignerOnlyAmino(e.chainId),i=yield r.getOfflineSignerAuto(e.chainId);return {offlineSigner:n,offlineSignerAmino:s,offlineSignerAuto:i}});var ke=()=>{u.setState({recentChainIds:null});},ir=()=>u.getState().recentChainIds,rr=()=>{var o;let{recentChainIds:e,chains:t}=u.getState();return (o=e==null?void 0:e.map(a=>t.find(r=>r.chainId===a)))!=null?o:null},sr=({chainId:e})=>{var t;return (t=u.getState().chains)==null?void 0:t.find(o=>o.chainId===e)},ar=({chainId:e})=>{var t;return (t=u.getState().chains)==null?void 0:t.filter(o=>e==null?void 0:e.includes(o.chainId))},xe=o=>l(void 0,[o],function*({chainInfo:e,walletType:t}){return yield _(t).experimentalSuggestChain(e),e}),dt=e=>l(void 0,null,function*(){var a;let t=u.getState().walletType;return yield xe({chainInfo:e.chainInfo,walletType:(a=e.walletType)!=null?a:t}),yield te({chainId:e.chainInfo.chainId,walletType:e.walletType,autoReconnect:e.autoReconnect})});var mt=e=>(u.setState(t=>({iframeOptions:e.iframeOptions||t.iframeOptions,walletConnect:e.walletConnect||t.walletConnect,walletType:e.defaultWallet||t.walletType,paraConfig:e.paraConfig||t.paraConfig,walletDefaultOptions:e.walletDefaultOptions||t.walletDefaultOptions,chains:e.chains,chainsConfig:e.chainsConfig||t.chainsConfig,multiChainFetchConcurrency:e.multiChainFetchConcurrency||t.multiChainFetchConcurrency,pingInterval:e.pingInteval||t.pingInterval,_notFoundFn:e.onNotFound||t._notFoundFn,_onReconnectFailed:e.onReconnectFailed||t._onReconnectFailed,_reconnect:e.autoReconnect===void 0?true:e.autoReconnect||t._reconnect})),e);var ft=s=>l(void 0,[s],function*({signingClient:e,senderAddress:t,recipientAddress:o,amount:a,fee:r,memo:n}){if(!e)throw new Error("No connected account detected");if(!t)throw new Error("senderAddress is not defined");return e.sendTokens(t,o,a,r,n)}),gt=p=>l(void 0,[p],function*({signingClient:e,senderAddress:t,recipientAddress:o,transferAmount:a,sourcePort:r,sourceChannel:n,timeoutHeight:s,timeoutTimestamp:i,fee:c,memo:f}){if(!e)throw new Error("Stargate signing client is not ready");if(!t)throw new Error("senderAddress is not defined");return e.sendIbcTokens(t,o,a,r,n,s,i,c,f)}),yt=i=>l(void 0,[i],function*({signingClient:e,senderAddress:t,msg:o,fee:a,options:r,label:n,codeId:s}){if(!e)throw new Error("CosmWasm signing client is not ready");return e.instantiate(t,s,o,n,a,r)}),Ct=i=>l(void 0,[i],function*({signingClient:e,senderAddress:t,msg:o,fee:a,contractAddress:r,funds:n,memo:s}){if(!e)throw new Error("CosmWasm signing client is not ready");return e.execute(t,r,o,a,s,n)}),wt=(e,t,o)=>l(void 0,null,function*(){if(!o)throw new Error("CosmWasm client is not ready");return yield o.queryContractSmart(e,t)}),St=(e,t,o)=>{if(!o)throw new Error("CosmWasm client is not ready");let a=new TextEncoder().encode(t);return o.queryContractRaw(e,a)};var Cr=e=>e,wr=e=>e;var ht=e=>e?Object.keys(e).length===0:true;var Me=class extends Error{constructor(t){super(),this.name="AbortError",this.message=t;}},At=e=>globalThis.DOMException===void 0?new Me(e):new DOMException(e),It=e=>{let t=e.reason===void 0?At("This operation was aborted."):e.reason;return t instanceof Error?t:At(t)};function ve(n,s){return l(this,arguments,function*(e,t,{concurrency:o=Number.POSITIVE_INFINITY,stopOnError:a=true,signal:r}={}){return new Promise((i,c)=>{if(e[Symbol.iterator]===void 0&&e[Symbol.asyncIterator]===void 0)throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof e})`);if(typeof t!="function")throw new TypeError("Mapper function is required");if(!((Number.isSafeInteger(o)||o===Number.POSITIVE_INFINITY)&&o>=1))throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${o}\` (${typeof o})`);let f=[],p=[],d=new Map,g=false,S=false,T=false,M=0,W=0,O=e[Symbol.iterator]===void 0?e[Symbol.asyncIterator]():e[Symbol.iterator](),m=b=>{g=true,S=true,c(b);};r&&(r.aborted&&m(It(r)),r.addEventListener("abort",()=>{m(It(r));}));let A=()=>l(this,null,function*(){if(S)return;let b=yield O.next(),k=W;if(W++,b.done){if(T=true,M===0&&!S){if(!a&&p.length>0){m(new AggregateError(p));return}if(S=true,d.size===0){i(f);return}let K=[];for(let[D,j]of f.entries())d.get(D)!==bt&&K.push(j);i(K);}return}M++,l(this,null,function*(){try{let K=yield b.value;if(S)return;let D=yield t(K,k);D===bt&&d.set(k,D),f[k]=D,M--,yield A();}catch(K){if(a)m(K);else {p.push(K),M--;try{yield A();}catch(D){m(D);}}}});});l(this,null,function*(){for(let b=0;b<o;b++){try{yield A();}catch(k){m(k);break}if(T||g)break}});})})}var bt=Symbol("skip");var q=({chainId:e,multiChain:t})=>{let o=u(r=>r.chains);if(!o)throw new Error("No chains found in GrazProvider");let a=typeof e=="string"?[e]:e;switch(true){case(!!t&&!!a):return a.map(r=>o.find(n=>n.chainId===r)).filter(Boolean);case(!t&&!!a):return [a.map(r=>o.find(n=>n.chainId===r)).filter(Boolean)[0]];case(!!t&&!a):return o;default:return [o[0]]}},H=(e,t,o)=>l(void 0,null,function*(){let a=u.getState().multiChainFetchConcurrency;if(e){let n=yield ve(t,o,{concurrency:a});return Object.fromEntries(n.map((s,i)=>[t[i].chainId,s]))}return yield o(t[0])}),Ot=(e,t,o)=>{if(e){let r=t.map(o);return Object.fromEntries(r.map((n,s)=>[t[s].chainId,n]))}return o(t[0])};var We=e=>{let t=q({chainId:e==null?void 0:e.chainId,multiChain:e==null?void 0:e.multiChain}),o=react.useMemo(()=>["USE_STARGATE_CLIENT",t],[t]);return reactQuery.useQuery({queryKey:o,queryFn:r=>l(void 0,[r],function*({queryKey:[,a]}){if(a.length<1)throw new Error("No chains found");return yield H(!!(e!=null&&e.multiChain),a,s=>l(void 0,null,function*(){var p;let i=(p=u.getState().chainsConfig)==null?void 0:p[s.chainId],c={url:s.rpc,headers:P({},(i==null?void 0:i.rpcHeaders)||{})};return yield stargate.StargateClient.connect(c)}))}),enabled:!!t&&t.length>0&&((e==null?void 0:e.enabled)!==void 0?!!e.enabled:true),refetchOnWindowFocus:false})},De=e=>{let t=q({chainId:e==null?void 0:e.chainId,multiChain:e==null?void 0:e.multiChain}),o=react.useMemo(()=>["USE_COSMWASM_CLIENT",t],[t]);return reactQuery.useQuery({queryKey:o,queryFn:r=>l(void 0,[r],function*({queryKey:[,a]}){if(a.length<1)throw new Error("No chains found");return yield H(!!(e!=null&&e.multiChain),a,s=>l(void 0,null,function*(){var p;let i=(p=u.getState().chainsConfig)==null?void 0:p[s.chainId],c={url:s.rpc,headers:P({},(i==null?void 0:i.rpcHeaders)||{})};return yield cosmwasmStargate.CosmWasmClient.connect(c)}))}),enabled:!!t&&t.length>0&&((e==null?void 0:e.enabled)!==void 0?!!e.enabled:true),refetchOnWindowFocus:false})};var qr=()=>u(shallow.useShallow(e=>({walletType:e.walletType,isCosmostation:e.walletType==="cosmostation",isCosmostationMobile:e.walletType==="wc_cosmostation_mobile",isKeplr:e.walletType==="keplr",isKeplrMobile:e.walletType==="wc_keplr_mobile",isLeap:e.walletType==="leap",isLeapMobile:e.walletType==="wc_leap_mobile",isVectis:e.walletType==="vectis",isWalletConnect:e.walletType==="walletconnect",isMetamaskSnapLeap:e.walletType==="metamask_snap_leap",isStation:e.walletType==="station",isCosmiframe:e.walletType==="cosmiframe"}))),we=e=>{let o=["USE_CHECK_WALLET",u(r=>e||r.walletType)];return reactQuery.useQuery({queryKey:o,queryFn:({queryKey:[,r]})=>F(r)})};var J=e=>{let t=u(i=>i.walletType),o=y(i=>i.activeChainIds),a=q({chainId:e!=null&&e.chainId?e.chainId:o||void 0,multiChain:e==null?void 0:e.multiChain}),r=y(i=>i.accounts),n=y(i=>i.status);return react.useEffect(()=>y.subscribe(i=>i.status,(i,c)=>{var f,p,d;if(i==="connected"){let{accounts:g,activeChainIds:S}=y.getState(),{chains:T}=u.getState(),{walletType:M}=u.getState();if(!g||!S||!T)return (f=e==null?void 0:e.onDisconnect)==null?void 0:f.call(e);(p=e==null?void 0:e.onConnect)==null||p.call(e,{accounts:g,chains:S.map(W=>T.find(O=>O.chainId===W)),walletType:M,isReconnect:c==="reconnecting"});}i==="disconnected"&&((d=e==null?void 0:e.onDisconnect)==null||d.call(e));}),[e]),{data:react.useMemo(()=>r?Ot(!!(e!=null&&e.multiChain),a,i=>r[i.chainId]):void 0,[r,a,e==null?void 0:e.multiChain]),isConnected:n==="connected",isConnecting:n==="connecting",isDisconnected:n==="disconnected",isReconnecting:n==="reconnecting",isLoading:n==="connecting"||n==="reconnecting",walletType:n==="connected"?t:void 0,reconnect:B,status:n}},pn=e=>{let t=q({chainId:e==null?void 0:e.chainId,multiChain:e==null?void 0:e.multiChain}),{data:o}=J(),a=(e==null?void 0:e.bech32Address)||(o==null?void 0:o.bech32Address),{data:r}=We({chainId:t.map(s=>s.chainId),multiChain:true,enabled:((e==null?void 0:e.enabled)===void 0?true:e.enabled)&&!!a}),n=react.useMemo(()=>["USE_ALL_BALANCES",r,t,a,e==null?void 0:e.chainId],[a,e==null?void 0:e.chainId,t,r]);return reactQuery.useQuery({queryKey:n,queryFn:f=>l(void 0,[f],function*({queryKey:[,s,i,c]}){if(!c)throw new Error("address is not defined");return yield H(!!(e!=null&&e.multiChain),i,d=>l(void 0,null,function*(){var T;let g=s==null?void 0:s[d.chainId];if(!g)throw new Error(`Client is not ready ${d.chainId}`);if(!((T=d.bech32Config)!=null&&T.bech32PrefixAccAddr))throw new Error(`Bech32Config is missing ${d.chainId}`);return yield g.getAllBalances(encoding.toBech32(d.bech32Config.bech32PrefixAccAddr,encoding.fromBech32(c).data))}))}),enabled:!!a&&!!t&&t.length>0&&!ht(r)&&((e==null?void 0:e.enabled)===void 0?true:e.enabled),refetchOnMount:false,refetchOnReconnect:true,refetchOnWindowFocus:false})},os=e=>{let t=q({chainId:e.chainId}),{data:o}=J({chainId:e.chainId}),a=e.bech32Address||(o==null?void 0:o.bech32Address),{data:r,refetch:n}=pn({chainId:t.map(c=>c.chainId),bech32Address:a,enabled:!!a&&(e.enabled===void 0?true:e.enabled)}),s=["USE_BALANCE",e.denom,r,t,a,e.chainId],i=reactQuery.useQuery({queryKey:s,queryFn:({queryKey:[,c,f]})=>f==null?void 0:f.find(p=>p.denom===c),enabled:!!e.denom&&!!r&&!!(r!=null&&r.length)&&(e.enabled===void 0?true:e.enabled)});return U(P({},i),{refetch:c=>l(void 0,null,function*(){return yield n(),i.refetch(c)})})},is=({onError:e,onLoading:t,onSuccess:o}={})=>{let r=reactQuery.useMutation({mutationKey:["USE_CONNECT",e,t,o],mutationFn:te,onError:(s,i)=>e==null?void 0:e(s,i),onMutate:t,onSuccess:s=>Promise.resolve(o==null?void 0:o(s))}),{data:n}=we();return {connect:s=>r.mutate(s),connectAsync:s=>r.mutateAsync(s),error:r.error,isLoading:r.isPending,isSuccess:r.isSuccess,isSupported:!!n,status:r.status}},rs=({onError:e,onLoading:t,onSuccess:o}={})=>{let r=reactQuery.useMutation({mutationKey:["USE_DISCONNECT",e,t,o],mutationFn:Pe,onError:n=>Promise.resolve(e==null?void 0:e(n,void 0)),onMutate:t,onSuccess:()=>Promise.resolve(o==null?void 0:o(void 0))});return {disconnect:n=>r.mutate(n),disconnectAsync:n=>r.mutateAsync(n),error:r.error,isLoading:r.isPending,isSuccess:r.isSuccess,status:r.status}},ss=e=>{let t=q({chainId:e==null?void 0:e.chainId,multiChain:e==null?void 0:e.multiChain}),o=u(n=>n.walletType),a=y.getState().status==="connected"&&y.getState().accounts&&u.getState()._reconnectConnector===o,r=react.useMemo(()=>["USE_OFFLINE_SIGNERS",t,o],[t,o]);return reactQuery.useQuery({queryKey:r,queryFn:i=>l(void 0,[i],function*({queryKey:[,n,s]}){if(n.length<1)throw new Error("No chain found");if(!F(s))throw new Error(`${s} is not available`);return yield H(!!(e!=null&&e.multiChain),n,p=>l(void 0,null,function*(){return yield pt({chainId:p.chainId,walletType:s})}))}),enabled:!!t&&t.length>0&&!!o&&!!a,refetchOnWindowFocus:false})},as=e=>{let t=q({chainId:e==null?void 0:e.chainId,multiChain:e==null?void 0:e.multiChain}),{data:o}=J(),{data:a}=We({chainId:t.map(s=>s.chainId),multiChain:true}),r=(e==null?void 0:e.bech32Address)||(o==null?void 0:o.bech32Address),n=react.useMemo(()=>["USE_BALANCE_STAKED",a,t,r],[t,r,a]);return reactQuery.useQuery({queryKey:n,queryFn:f=>l(void 0,[f],function*({queryKey:[,s,i,c]}){if(!c)throw new Error("address is not defined");return yield H(!!(e!=null&&e.multiChain),i,d=>l(void 0,null,function*(){var S,T;if(!s)throw new Error("Client is not ready");if(!((S=d.bech32Config)!=null&&S.bech32PrefixAccAddr))throw new Error(`Bech32Config is missing ${d.chainId}`);return yield (T=s[d.chainId])==null?void 0:T.getBalanceStaked(encoding.toBech32(d.bech32Config.bech32PrefixAccAddr,encoding.fromBech32(c).data))}))}),enabled:!!r&&!!t&&t.length>0&&!!a,refetchOnMount:false,refetchOnReconnect:true,refetchOnWindowFocus:false})};var gs=()=>y(e=>e.activeChainIds),dn=()=>{var e;return (e=y(t=>t.activeChainIds))==null?void 0:e.map(t=>{var a;let o=(a=u.getState().chains)==null?void 0:a.find(r=>r.chainId===t);if(o)return o}).filter(Boolean)},ys=({chainId:e})=>{var t;return (t=u().chains)==null?void 0:t.find(o=>o.chainId===e)},Cs=({chainId:e})=>{var t;return (t=u().chains)==null?void 0:t.filter(o=>e==null?void 0:e.includes(o.chainId))},ws=({denom:e})=>{let t=dn();return reactQuery.useQuery({queryKey:["USE_ACTIVE_CHAIN_CURRENCY",e],queryFn:({queryKey:[,r]})=>{var n;return (n=t==null?void 0:t.find(s=>s.currencies.find(i=>i.coinMinimalDenom===r)))==null?void 0:n.currencies.find(s=>s)}})},Ss=e=>{var r;let t=(r=e.status)!=null?r:"BOND_STATUS_BONDED",o=["USE_ACTIVE_CHAIN_VALIDATORS",e.queryClient,t];return reactQuery.useQuery({queryKey:o,queryFn:i=>l(void 0,[i],function*({queryKey:[,n,s]}){if(!n)throw new Error("Query client is not defined");return yield n.staking.validators(s)}),enabled:typeof e.queryClient!="undefined"})},hs=()=>({data:u(t=>t.recentChainIds),clear:ke}),As=()=>{var t;return {data:(t=u(o=>o.recentChainIds))==null?void 0:t.map(o=>{var r;let a=(r=u.getState().chains)==null?void 0:r.find(n=>n.chainId===o);if(a)return a}).filter(Boolean),clear:ke}},Is=({onError:e,onLoading:t,onSuccess:o}={})=>{let r=reactQuery.useMutation({mutationKey:["USE_SUGGEST_CHAIN",e,t,o],mutationFn:xe,onError:(n,s)=>Promise.resolve(e==null?void 0:e(n,s.chainInfo)),onMutate:n=>t==null?void 0:t(n.chainInfo),onSuccess:n=>Promise.resolve(o==null?void 0:o(n))});return {error:r.error,isLoading:r.isPending,isSuccess:r.isSuccess,suggest:r.mutate,suggestAsync:r.mutateAsync,status:r.status}},bs=({onError:e,onLoading:t,onSuccess:o}={})=>{let r=reactQuery.useMutation({mutationKey:["USE_SUGGEST_CHAIN_AND_CONNECT",e,t,o],mutationFn:dt,onError:(s,i)=>Promise.resolve(e==null?void 0:e(s,i)),onMutate:s=>t==null?void 0:t(s),onSuccess:s=>Promise.resolve(o==null?void 0:o(s))}),{data:n}=we();return {error:r.error,isLoading:r.isPending,isSuccess:r.isSuccess,isSupported:!!n,status:r.status,suggestAndConnect:r.mutate,suggestAndConnectAsync:r.mutateAsync}};var vs=({onError:e,onLoading:t,onSuccess:o}={})=>{let{data:a}=J(),r=a==null?void 0:a.bech32Address,n=reactQuery.useMutation({mutationKey:["USE_SEND_TOKENS",e,t,o,r],mutationFn:s=>ft(P({senderAddress:r},s)),onError:(s,i)=>Promise.resolve(e==null?void 0:e(s,i)),onMutate:t,onSuccess:s=>Promise.resolve(o==null?void 0:o(s))});return {error:n.error,isLoading:n.isPending,isSuccess:n.isSuccess,sendTokens:n.mutate,sendTokensAsync:n.mutateAsync,status:n.status}},Ws=({onError:e,onLoading:t,onSuccess:o}={})=>{let{data:a}=J(),r=a==null?void 0:a.bech32Address,n=reactQuery.useMutation({mutationKey:["USE_SEND_IBC_TOKENS",e,t,o,r],mutationFn:s=>gt(P({senderAddress:r},s)),onError:(s,i)=>Promise.resolve(e==null?void 0:e(s,i)),onMutate:t,onSuccess:s=>Promise.resolve(o==null?void 0:o(s))});return {error:n.error,isLoading:n.isPending,isSuccess:n.isSuccess,sendIbcTokens:n.mutate,sendIbcTokensAsync:n.mutateAsync,status:n.status}},Ds=({codeId:e,onError:t,onLoading:o,onSuccess:a})=>{let{data:r}=J(),n=r==null?void 0:r.bech32Address,i=reactQuery.useMutation({mutationKey:["USE_INSTANTIATE_CONTRACT",t,o,a,e,n],mutationFn:c=>{var p;if(!n)throw new Error("senderAddress is undefined");let f=U(P({},c),{fee:(p=c.fee)!=null?p:"auto",senderAddress:n,codeId:e});return yt(f)},onError:(c,f)=>Promise.resolve(t==null?void 0:t(c,f)),onMutate:o,onSuccess:c=>Promise.resolve(a==null?void 0:a(c))});return {error:i.error,isLoading:i.isPending,isSuccess:i.isSuccess,instantiateContract:i.mutate,instantiateContractAsync:i.mutateAsync,status:i.status}},Rs=({contractAddress:e,onError:t,onLoading:o,onSuccess:a})=>{let{data:r}=J(),n=r==null?void 0:r.bech32Address,i=reactQuery.useMutation({mutationKey:["USE_EXECUTE_CONTRACT",t,o,a,e,n],mutationFn:c=>{var p,d,g;if(!n)throw new Error("senderAddress is undefined");let f=U(P({},c),{fee:(p=c.fee)!=null?p:"auto",senderAddress:n,contractAddress:e,memo:(d=c.memo)!=null?d:"",funds:(g=c.funds)!=null?g:[]});return Ct(f)},onError:(c,f)=>Promise.resolve(t==null?void 0:t(c,f)),onMutate:o,onSuccess:c=>Promise.resolve(a==null?void 0:a(c))});return {error:i.error,isLoading:i.isPending,isSuccess:i.isSuccess,executeContract:i.mutate,executeContractAsync:i.mutateAsync,status:i.status}},_s=e=>{let{data:t}=De();return reactQuery.useQuery({queryKey:["USE_QUERY_SMART",e==null?void 0:e.address,e==null?void 0:e.queryMsg,t],queryFn:({queryKey:[,a]})=>{if(!(e!=null&&e.address)||!e.queryMsg)throw new Error("address or queryMsg undefined");return wt(e.address,e.queryMsg,t)},enabled:!!(e!=null&&e.address)&&!!(e!=null&&e.queryMsg)&&!!t})},Ks=e=>{let{data:t}=De(),o=["USE_QUERY_RAW",e==null?void 0:e.key,e==null?void 0:e.address,t];return reactQuery.useQuery({queryKey:o,queryFn:({queryKey:[,r]})=>{if(!(e!=null&&e.address)||!e.key)throw new Error("address or key undefined");return St(e.address,e.key,t)},enabled:!!(e!=null&&e.address)&&!!(e!=null&&e.key)&&!!t})};function Qs(e){let t=q({chainId:e==null?void 0:e.chainId,multiChain:e==null?void 0:e.multiChain}),o=u(s=>s.walletType),a=y(s=>s.activeChainIds),r=y.getState().status==="connected"&&y.getState().accounts&&u.getState()._reconnectConnector===o,n=react.useMemo(()=>["USE_STARGATE_SIGNING_CLIENT",t,o,e,a],[a,e,t,o]);return reactQuery.useQuery({queryKey:n,queryFn:c=>l(this,[c],function*({queryKey:[,s,i]}){if(s.length<1)throw new Error("No chains found");return yield H(!!(e!=null&&e.multiChain),s,p=>l(this,null,function*(){var W,O;if(!(a!=null&&a.includes(p.chainId)))return null;if(!F(i))throw new Error(`${i} is not available`);let g=yield l(this,null,function*(){switch(e==null?void 0:e.offlineSigner){case "offlineSigner":return _(i).getOfflineSigner(p.chainId);case "offlineSignerAuto":return _(i).getOfflineSignerAuto(p.chainId);case "offlineSignerOnlyAmino":return _(i).getOfflineSignerOnlyAmino(p.chainId);default:return _(i).getOfflineSignerAuto(p.chainId)}}),S=(W=u.getState().chainsConfig)==null?void 0:W[p.chainId],T={url:p.rpc,headers:P({},(S==null?void 0:S.rpcHeaders)||{})};return (e==null?void 0:e.multiChain)===true&&e.opts,yield stargate.SigningStargateClient.connectWithSigner(T,g,e!=null&&e.multiChain?(O=e.opts)==null?void 0:O[p.chainId]:e==null?void 0:e.opts)}))}),enabled:!!t&&t.length>0&&!!o&&((e==null?void 0:e.enabled)!==void 0?!!e.enabled:true)&&!!r,refetchOnWindowFocus:false})}function Vs(e){let t=q({chainId:e==null?void 0:e.chainId,multiChain:e==null?void 0:e.multiChain}),o=u(s=>s.walletType),a=y(s=>s.activeChainIds),r=y.getState().status==="connected"&&y.getState().accounts&&u.getState()._reconnectConnector===o,n=react.useMemo(()=>["USE_COSMWASM_SIGNING_CLIENT",t,o,e,a],[a,e,t,o]);return reactQuery.useQuery({queryKey:n,queryFn:c=>l(this,[c],function*({queryKey:[,s,i]}){if(s.length<1)throw new Error("No chains found");return yield H(!!(e!=null&&e.multiChain),s,p=>l(this,null,function*(){var O,m;if(!(a!=null&&a.includes(p.chainId)))return null;if(!F(i))throw new Error(`${i} is not available`);let g=yield l(this,null,function*(){switch(e==null?void 0:e.offlineSigner){case "offlineSigner":return _(i).getOfflineSigner(p.chainId);case "offlineSignerAuto":return _(i).getOfflineSignerAuto(p.chainId);case "offlineSignerOnlyAmino":return _(i).getOfflineSignerOnlyAmino(p.chainId);default:return _(i).getOfflineSignerAuto(p.chainId)}}),S=(O=u.getState().chainsConfig)==null?void 0:O[p.chainId],T={url:p.rpc,headers:P({},(S==null?void 0:S.rpcHeaders)||{})},M=S!=null&&S.gas?stargate.GasPrice.fromString(`${S.gas.price}${S.gas.denom}`):void 0;return yield cosmwasmStargate.SigningCosmWasmClient.connectWithSigner(T,g,P({gasPrice:M},e!=null&&e.multiChain?(m=e.opts)==null?void 0:m[p.chainId]:(e==null?void 0:e.opts)||{}))}))}),enabled:!!t&&t.length>0&&!!o&&((e==null?void 0:e.enabled)!==void 0?!!e.enabled:true)&&!!r,refetchOnWindowFocus:false})}var _t=({children:e})=>{let[t,o]=react.useState(false);return react.useEffect(()=>{o(true);},[]),jsxRuntime.jsx(jsxRuntime.Fragment,{children:t?e:null})};var An=()=>{let e=typeof window!="undefined"&&window.sessionStorage.getItem(ee)==="Active",{_reconnect:t,_onReconnectFailed:o,_reconnectConnector:a,iframeOptions:r,chains:n,pingInterval:s}=u(),{activeChainIds:i,wcSignClients:c}=y(),f=F(a||void 0);return react.useEffect(()=>{let p=()=>l(void 0,null,function*(){if(e&&f&&a&&(i!=null&&i[0])){let d=y.getState().lastPing;if(d&&Date.now()-d<s)return;let g=_(a);try{if(!(yield g.getKey(i[0])))throw new Error("No account found");y.setState({lastPing:Date.now()});return}catch(S){B({onError:o});}}});return window.addEventListener("focus",p),()=>{window.removeEventListener("focus",p);}},[e,f,a,n,i,s]),react.useEffect(()=>{if(!r||r.autoConnect===false||!r.allowedIframeParentOrigins.length||!n)return;new cosmiframe.Cosmiframe(r.allowedIframeParentOrigins).isReady().then(d=>{if(d)return te({chainId:n.map(g=>g.chainId),walletType:"cosmiframe"})});},[r]),react.useEffect(()=>{if(a){if(!f)return;e&&i?B({onError:o}):!e&&t&&B({onError:o});}},[f]),react.useEffect(()=>{var p,d,g,S,T,M,W,O,m,A,b,k,K,D,j,oe,C,w,h,E;if(a){if(!f)return;a==="cosmostation"&&((d=(p=ue()).subscription)==null||d.call(p,()=>{B({onError:o});})),a==="keplr"&&((S=(g=pe()).subscription)==null||S.call(g,()=>{B({onError:o});})),a==="leap"&&((M=(T=de()).subscription)==null||M.call(T,()=>{B({onError:o});})),a==="compass"&&((O=(W=ce()).subscription)==null||O.call(W,()=>{B({onError:o});})),a==="vectis"&&((A=(m=ye()).subscription)==null||A.call(m,()=>{B({onError:o});})),a==="walletconnect"&&c.has("walletconnect")&&((k=(b=z()).subscription)==null||k.call(b,()=>{B({onError:o});})),a==="station"&&((D=(K=ge()).subscription)==null||D.call(K,()=>{B({onError:o});})),a==="xdefi"&&((oe=(j=Ce()).subscription)==null||oe.call(j,()=>{B({onError:o});})),a==="cosmiframe"&&((w=(C=le()).subscription)==null||w.call(C,()=>{B({onError:o});})),a==="okx"&&((E=(h=fe()).subscription)==null||E.call(h,()=>{B({onError:o});}));}},[a,c,f]),null},Kt=()=>(An(),null);var Ea=({children:e,grazOptions:t})=>(react.useEffect(()=>{mt(t);},[t]),jsxRuntime.jsxs(_t,{children:[e,jsxRuntime.jsx(Kt,{})]}));
25
-
26
- exports.GrazEvents = Kt;
27
- exports.GrazProvider = Ea;
28
- exports.WALLET_TYPES = Ge;
29
- exports.WalletType = Fe;
30
- exports.checkWallet = F;
31
- exports.clearRecentChain = ke;
32
- exports.clearSession = N;
33
- exports.configureGraz = mt;
34
- exports.connect = te;
35
- exports.defineChainInfo = wr;
36
- exports.defineChains = Cr;
37
- exports.disconnect = Pe;
38
- exports.executeContract = Ct;
39
- exports.getAvailableWallets = ji;
40
- exports.getChainInfo = sr;
41
- exports.getChainInfos = ar;
42
- exports.getCosmostation = ue;
43
- exports.getKeplr = pe;
44
- exports.getLeap = de;
45
- exports.getMetamaskSnapLeap = et;
46
- exports.getOfflineSigners = pt;
47
- exports.getOkx = fe;
48
- exports.getPara = tt;
49
- exports.getQueryRaw = St;
50
- exports.getQuerySmart = wt;
51
- exports.getRecentChainIds = ir;
52
- exports.getRecentChains = rr;
53
- exports.getVectis = ye;
54
- exports.getWCCosmostation = rt;
55
- exports.getWCKeplr = st;
56
- exports.getWCLeap = at;
57
- exports.getWallet = _;
58
- exports.getWalletConnect = z;
59
- exports.instantiateContract = yt;
60
- exports.isLeapDappBrowser = lt;
61
- exports.isLeapSnaps = ct;
62
- exports.isPara = ut;
63
- exports.isWalletConnect = re;
64
- exports.reconnect = B;
65
- exports.sendIbcTokens = gt;
66
- exports.sendTokens = ft;
67
- exports.suggestChain = xe;
68
- exports.suggestChainAndConnect = dt;
69
- exports.useAccount = J;
70
- exports.useActiveChainCurrency = ws;
71
- exports.useActiveChainIds = gs;
72
- exports.useActiveChains = dn;
73
- exports.useActiveWalletType = qr;
74
- exports.useBalance = os;
75
- exports.useBalanceStaked = as;
76
- exports.useBalances = pn;
77
- exports.useChainInfo = ys;
78
- exports.useChainInfos = Cs;
79
- exports.useCheckWallet = we;
80
- exports.useConnect = is;
81
- exports.useCosmWasmClient = De;
82
- exports.useCosmWasmSigningClient = Vs;
83
- exports.useDisconnect = rs;
84
- exports.useExecuteContract = Rs;
85
- exports.useGrazEvents = An;
86
- exports.useInstantiateContract = Ds;
87
- exports.useOfflineSigners = ss;
88
- exports.useQueryClientValidators = Ss;
89
- exports.useQueryRaw = Ks;
90
- exports.useQuerySmart = _s;
91
- exports.useRecentChainIds = hs;
92
- exports.useRecentChains = As;
93
- exports.useSendIbcTokens = Ws;
94
- exports.useSendTokens = vs;
95
- exports.useStargateClient = We;
96
- exports.useStargateSigningClient = Qs;
97
- exports.useSuggestChain = Is;
98
- exports.useSuggestChainAndConnect = bs;
1
+ "use strict";var e=require("zustand"),n=require("zustand/middleware"),t=require("@dao-dao/cosmiframe"),r=require("@cosmsnap/snapper"),o=require("@cosmjs/amino"),i=require("long"),a=require("@cosmjs/encoding"),s=require("@walletconnect/modal"),c=require("@walletconnect/sign-client"),l=require("@walletconnect/utils"),d=require("@tanstack/react-query"),u=require("react"),g=require("p-map"),w=require("@cosmjs/cosmwasm-stargate"),f=require("@cosmjs/stargate"),h=require("zustand/shallow"),p=require("react/jsx-runtime");function m(e){return e&&e.__esModule?e:{default:e}}var y=m(i),S=m(g),C="graz-reconnect-session",I=(e=>(e.KEPLR="keplr",e.LEAP="leap",e.VECTIS="vectis",e.COSMOSTATION="cosmostation",e.WALLETCONNECT="walletconnect",e.WC_KEPLR_MOBILE="wc_keplr_mobile",e.WC_LEAP_MOBILE="wc_leap_mobile",e.WC_COSMOSTATION_MOBILE="wc_cosmostation_mobile",e.WC_CLOT_MOBILE="wc_clot_mobile",e.METAMASK_SNAP_LEAP="metamask_snap_leap",e.METAMASK_SNAP_COSMOS="metamask_snap_cosmos",e.STATION="station",e.XDEFI="xdefi",e.COSMIFRAME="cosmiframe",e.COMPASS="compass",e.INITIA="initia",e.OKX="okx",e.PARA="para",e.CACTUSCOSMOS="cactuscosmos",e))(I||{}),b=["keplr","leap","vectis","cosmostation","walletconnect","wc_keplr_mobile","wc_leap_mobile","wc_cosmostation_mobile","wc_clot_mobile","metamask_snap_leap","station","xdefi","metamask_snap_cosmos","cosmiframe","compass","initia","okx","para","cactuscosmos"],E={iframeOptions:null,recentChainIds:null,chains:null,chainsConfig:null,paraConfig:null,multiChainFetchConcurrency:3,walletType:"keplr",walletConnect:{options:null,walletConnectModal:null},walletDefaultOptions:null,pingInterval:36e5,_notFoundFn:()=>null,_onReconnectFailed:()=>null,_reconnect:!1,_reconnectConnector:null},A={accounts:null,activeChainIds:null,status:"disconnected",lastPing:null,wcSignClients:new Map,paraConnector:null},_={name:"graz-session",version:2,partialize:e=>({accounts:e.accounts,activeChainIds:e.activeChainIds,lastPing:e.lastPing,status:e.status}),storage:n.createJSONStorage(()=>sessionStorage)},v=e.create(n.subscribeWithSelector(n.persist(()=>A,_))),O=e.create(n.subscribeWithSelector(n.persist(()=>E,{name:"graz-internal",partialize:e=>({recentChainIds:e.recentChainIds,_reconnect:e._reconnect,_reconnectConnector:e._reconnectConnector,walletType:e.walletType,chains:e.chains}),version:3}))),k=()=>{if(void 0!==window.cactuslink_cosmos){const e=window.cactuslink_cosmos,n=e=>{const n=()=>{X(),e()};return window.addEventListener("accountsChanged",n),()=>{window.removeEventListener("accountsChanged",n)}};return{...Object.assign(e,{subscription:n}),getOfflineSignerAuto:n=>Promise.resolve(e.getOfflineSigner(n)),getOfflineSignerOnlyAmino:n=>e.getOfflineSigner(n),experimentalSuggestChain:async()=>{throw new Error("Cactus Cosmos does not support experimentalSuggestChain")}}}throw O.getState()._notFoundFn(),new Error("window.cactuslink_cosmos is not defined")},x=()=>{if(void 0!==window.compass){const e=window.compass,n=e=>{const n=()=>{X(),e()};return window.addEventListener("leap_keystorechange",n),()=>{window.removeEventListener("leap_keystorechange",n)}},t=n=>{e.defaultOptions=n};return Object.assign(e,{subscription:n,setDefaultOptions:t})}throw O.getState()._notFoundFn(),new Error("window.leap is not defined")},B=()=>{const e=O.getState();if(!e.iframeOptions)throw e._notFoundFn(),new Error("no iframe options set");if(!t.isInIframe())throw e._notFoundFn(),new Error("not in iframe");if(!e.iframeOptions.allowedIframeParentOrigins.length)throw e._notFoundFn(),new Error("no iframe allowed origins");const n=new t.Cosmiframe(e.iframeOptions.allowedIframeParentOrigins).getKeplrClient();return{enable:n.enable.bind(n),getKey:n.getKey.bind(n),getOfflineSigner:n.getOfflineSigner.bind(n),getOfflineSignerAuto:n.getOfflineSignerAuto.bind(n),getOfflineSignerOnlyAmino:n.getOfflineSignerOnlyAmino.bind(n),experimentalSuggestChain:n.experimentalSuggestChain.bind(n),signDirect:n.signDirect.bind(n),signAmino:n.signAmino.bind(n)}},N={},T=()=>{if(void 0!==window.cosmostation?.providers.keplr){const e=window.cosmostation.providers.keplr,n=e=>{const n=()=>{X(),e()};return window.addEventListener("cosmostation_keystorechange",n),()=>{window.removeEventListener("cosmostation_keystorechange",n)}},t=n=>{e.defaultOptions=n};return Object.assign(e,{subscription:n,setDefaultOptions:t})}throw O.getState()._notFoundFn(),new Error("window.cosmostation.providers.keplr is not defined")},P=()=>{if(void 0!==window.initia){const e=window.initia;return{enable:async()=>{await e.getAddress()},getKey:async n=>{const t=e.getOfflineSigner(n),[r]=await t.getAccounts();if(!r)throw new Error("Wallet connection failed");const i=(()=>{switch(r.algo){case"secp256k1":return o.rawSecp256k1PubkeyToRawAddress(r.pubkey);case"ed25519":return o.rawEd25519PubkeyToRawAddress(r.pubkey);default:throw new Error("sr25519 public key algorithm is not supported")}})();return{name:(a=r.address,`${a.slice(0,6)}...${a.slice(-6)}`),algo:r.algo,pubKey:r.pubkey,bech32Address:r.address,address:i,isNanoLedger:!1,isKeystone:!1};var a},getOfflineSigner:n=>{const t=e.getOfflineSigner(n),r=e.getOfflineSignerOnlyAmino(n);return{getAccounts:t.getAccounts.bind(t),signDirect:t.signDirect.bind(t),signAmino:r.signAmino.bind(r)}},getOfflineSignerAuto:n=>Promise.resolve(e.getOfflineSigner(n)),getOfflineSignerOnlyAmino:n=>e.getOfflineSignerOnlyAmino(n),experimentalSuggestChain:n=>e.requestAddInitiaLayer({chain_id:n.chainId,chain_name:n.chainName,bech32_prefix:"init",bech32_config:n.bech32Config,slip44:n.bip44.coinType,logo_URIs:{png:n.chainSymbolImageUrl},fees:{fee_tokens:n.feeCurrencies.map(e=>({denom:e.coinDenom,amount:e.coinMinimalDenom,low_gas_price:e.gasPriceStep?.low,average_gas_price:e.gasPriceStep?.average,high_gas_price:e.gasPriceStep?.high}))},apis:{rpc:[{address:n.rpc}],rest:[{address:n.rest}]}}),signDirect:(...n)=>{const[t,r,o]=n;return e.getOfflineSigner(t).signDirect(r,(e=>{const{bodyBytes:n,authInfoBytes:t,chainId:r,accountNumber:o}=e;if(!(n&&t&&r&&o))throw new Error("Invalid sign doc");return{bodyBytes:n,authInfoBytes:t,chainId:r,accountNumber:o}})(o))},signAmino:(...n)=>{const[t,r,o]=n;return e.getOfflineSignerOnlyAmino(t).signAmino(r,o)},signArbitrary:async(n,t,r)=>{const i=e.getOfflineSigner(n),a=(await i.getAccounts()).find(e=>e.address===t);if(!a)throw new Error(`Wallet not connected to account ${t}`);const s=(()=>{switch(a.algo){case"secp256k1":return o.encodeSecp256k1Pubkey(a.pubkey);case"ed25519":return o.encodeEd25519Pubkey(a.pubkey);default:throw new Error("sr25519 public key algorithm is not supported")}})();return{signature:await e.signArbitrary(r),pub_key:{type:"secp256k1"===a.algo?o.pubkeyType.secp256k1:o.pubkeyType.ed25519,value:s.value}}},subscription:e=>{const n=()=>{X(),e()};return window.addEventListener("initia_keystorechange",n),()=>{window.removeEventListener("initia_keystorechange",n)}}}}throw O.getState()._notFoundFn(),new Error("window.initia is not defined")},M=()=>{if(void 0!==window.keplr){const e=window.keplr,n=e=>{const n=()=>{X(),e()};return window.addEventListener("keplr_keystorechange",n),()=>{window.removeEventListener("keplr_keystorechange",n)}},t=n=>{e.defaultOptions=n};return Object.assign(e,{subscription:n,setDefaultOptions:t})}throw O.getState()._notFoundFn(),new Error("window.keplr is not defined")},D=()=>{if(void 0!==window.leap){const e=window.leap,n=e=>{const n=()=>{X(),e()};return window.addEventListener("leap_keystorechange",n),()=>{window.removeEventListener("leap_keystorechange",n)}},t=n=>{e.defaultOptions=n};return Object.assign(e,{subscription:n,setDefaultOptions:t})}throw O.getState()._notFoundFn(),new Error("window.leap is not defined")},L={},q=()=>(e=>{const n=window.ethereum;if(n&&e){const t=async()=>await n.request({method:"wallet_getSnaps"}),r=async n=>{try{const r=await t();return Object.values(r).find(t=>t.id===e.id&&(!n||t.version===n))}catch(e){return}},o=async()=>{await n.request({method:"wallet_requestSnaps",params:{[e.id]:e.params||{}}})},i=async()=>{const e=await n.request({method:"web3_clientVersion"});if(!e.includes("MetaMask"))throw new Error("Metamask is not installed");if(void 0!==window.okxwallet&&window.okxwallet.isOkxWallet)throw new Error("You have OKX Wallet installed. Please disable and reload the page to use Metamask Snap.");const t=e.split("MetaMask/v")[1]?.split(".")[0];if(!(Number(t)>=11))throw new Error("Metamask Snap is not supported in this version");return await r()||await o(),!0},a=async(t,r,o)=>{const i=await n.request({method:"wallet_invokeSnap",params:{snapId:e.id,request:{method:"signDirect",params:{chainId:t,signerAddress:r,signDoc:o}}}}),a=o.accountNumber,s=new y.default(a.low,a.high,a.unsigned);return{signature:i.signature,signed:{...i.signed,accountNumber:s.toString(),authInfoBytes:new Uint8Array(Object.values(i.signed.authInfoBytes)),bodyBytes:new Uint8Array(Object.values(i.signed.bodyBytes))}}},s=async(t,r,o)=>await n.request({method:"wallet_invokeSnap",params:{snapId:e.id,request:{method:"signAmino",params:{chainId:t,signerAddress:r,signDoc:o}}}}),c=async t=>{if(void 0!==L[t])return L[t];const r=await n.request({method:"wallet_invokeSnap",params:{snapId:e.id,request:{method:"getKey",params:{chainId:t}}}});if(!r)throw new Error("No response from Metamask");return r.pubKey=Uint8Array.from(Object.values(r.pubkey)),delete r.pubkey,L[t]=r,L[t]},l=async e=>{const n=await c(e);return{address:n.bech32Address,algo:n.algo,pubkey:n.pubKey}},d=async(...e)=>{const[n,t,r,o]=e;return await s(n,t,r)},u=async(...e)=>{const[n,t,r]=e,o={...r,accountNumber:y.default.fromString(r.accountNumber?.toString()||"0"),authInfoBytes:r.authInfoBytes,bodyBytes:r.bodyBytes};return await a(n,t,o)},g=e=>({getAccounts:async()=>[await l(e)],signAmino:(n,t)=>d(e,n,t)});return{enable:async e=>{await r()||await o()},experimentalSuggestChain:async(...t)=>{await i(),await n.request({method:"wallet_invokeSnap",params:{snapId:e.id,request:{method:"suggestChain",params:{chainInfo:t[0]}}}})},getKey:c,getOfflineSigner:e=>({getAccounts:async()=>[await l(e)],signDirect:(n,t)=>u(e,n,t),signAmino:(n,t)=>d(e,n,t)}),getOfflineSignerAuto:async e=>g(e),getOfflineSignerOnlyAmino:g,init:i,signAmino:d,signDirect:u}}throw O.getState()._notFoundFn(),new Error("window.ethereum is not defined")})({id:"npm:@leapwallet/metamask-cosmos-snap"}),F=()=>{if(void 0!==window.okxwallet?.keplr){const e=window.okxwallet.keplr,n=e=>{const n=()=>{X(),e()};return window.okxwallet?.on("accountsChanged",n),()=>{window.okxwallet?.removeListener("accountsChanged",n)}},t=n=>{e.defaultOptions=n};return Object.assign(e,{subscription:n,setDefaultOptions:t})}throw O.getState()._notFoundFn(),new Error("window.okxwallet.keplr is not defined")},K=null,U=()=>{const e=()=>{const e=v.getState().paraConnector;if(!e)throw new Error("Para connector not initialized. Call connect() first or check paraConfig in GrazProvider.");return e},n=O.getState().paraConfig;if(!n?.paraWeb)throw new Error("Missing Para config. Provide paraConfig with 'paraWeb' to GrazProvider.");return{enable:async e=>{const t=Array.isArray(e)?e:[e];try{const e=await(K||(K=(async()=>{const e=v.getState().paraConnector;if(e)return e;try{let e;if(n.connectorClass)e=n.connectorClass;else{if("undefined"==typeof window)throw new Error("Para connector requires client-side execution (SSR is unsupported).");const n=await import("@getpara/graz-integration"),t=n?.ParaGrazConnector;if("function"!=typeof t)throw new Error("Invalid ParaGrazConnector in @getpara/graz-integration. Check the package/export.");e=t}const t=O.getState().chains,r=new e(n,t);if(v.setState(e=>({...e,paraConnector:r})),!r)throw new Error("Para connector initialization failed. Check config and dependencies.");return r}catch(e){if(K=null,"MODULE_NOT_FOUND"===e?.code||e?.message?.includes("Cannot find module")||e?.message?.includes("Failed to resolve"))throw new Error("Para integration package not found. Install @getpara/graz-integration to use Para wallet: npm install @getpara/graz-integration");throw new Error(`Para connector init failed: ${e?.message||"Unknown error"}. Check @getpara/graz-integration and ParaConfig.`)}})()));v.setState({paraConnector:e,status:"connecting"}),await e.enable(t);const r=Object.fromEntries(await Promise.all(t.map(async n=>[n,await e.getKey(n)])));v.setState(e=>({accounts:{...e.accounts||{},...r},activeChainIds:Array.from(new Set([...e.activeChainIds||[],...t])),status:"connected"})),O.setState(e=>({recentChainIds:Array.from(new Set([...e.recentChainIds||[],...t])),walletType:"para",_reconnect:!1,_reconnectConnector:"para"}))}catch(e){v.setState({paraConnector:null,status:"disconnected"});if(e?.message?.includes("not found")||e?.message?.includes("Cannot find"))throw new Error("Para wallet connection failed: Required packages not installed. Install @getpara/graz-integration to enable Para wallet.");throw new Error("Para enable failed"+(e instanceof Error?`: ${e.message}`:""))}},disable:async()=>{const e=v.getState().paraConnector;if(e)try{await e.disconnect(),await e.getParaWebClient().logout()}catch(e){throw new Error("Para disconnect failed"+(e?.message?`: ${e.message}`:". Wallet may already be disconnected."))}finally{v.setState({paraConnector:null,status:"disconnected"})}else v.setState({paraConnector:null,status:"disconnected"})},getKey:async n=>{try{return await e().getKey(n)}catch(e){throw new Error(`Failed to get key${e?.message?`: ${e.message}`:""}. Check chain connection and Cosmos API key settings at developer.getpara.com.`)}},getOfflineSigner:n=>{try{return e().getOfflineSigner(n)}catch(e){throw new Error(`Failed to get offline signer${e?.message?`: ${e.message}`:""}. Check Para auth and Cosmos support in developer portal.`)}},getOfflineSignerOnlyAmino:n=>{try{return e().getOfflineSignerOnlyAmino(n)}catch(e){throw new Error(`Failed to get Amino signer${e?.message?`: ${e.message}`:""}. Check Para auth and Cosmos support in developer portal.`)}},getOfflineSignerAuto:n=>{try{return e().getOfflineSignerAuto(n)}catch(e){throw new Error(`Failed to get auto signer${e?.message?`: ${e.message}`:""}. Check Para auth and Cosmos support in developer portal.`)}},signAmino:async(n,t,r,o)=>{try{return await e().signAmino(n,t,r,o)}catch(e){throw new Error(`Amino signing failed${e?.message?`: ${e.message}`:""}. User rejected or invalid transaction/signer.`)}},signDirect:async(n,t,r,o)=>{try{return await e().signDirect(n,t,r,o)}catch(e){throw new Error(`Direct signing failed${e?.message?`: ${e.message}`:""}. User rejected or invalid transaction/signer.`)}},signArbitrary:async(n,t,r)=>{try{return await e().signArbitrary(n,t,r)}catch(e){throw new Error(`Arbitrary signing failed${e?.message?`: ${e.message}`:""}. User rejected or feature not supported.`)}},experimentalSuggestChain:async()=>{throw new Error("Chain suggestion not supported. Configure chains in Para wallet settings.")}}},$=()=>{if(void 0!==window.station?.keplr){const e=window.station.keplr;return{subscription:e=>{const n=()=>{X(),e()};return window.addEventListener("station_wallet_change",n),()=>{window.removeEventListener("station_wallet_change",n)}},getKey:async n=>({isKeystone:!1,...await e.getKey(n)}),getOfflineSigner:n=>{try{const t=e.getOfflineSignerOnlyAmino(n),r=(e,n)=>{throw new Error("signDirect not supported by Station")};return Object.assign(t,{signDirect:r})}catch(e){throw console.error(e),e}},experimentalSuggestChain:async n=>{try{if(!n.bech32Config)throw new Error("Bech32Config is required");if(!n.stakeCurrency)throw new Error("StakeCurrency is required");const t=Object.assign(n,{bech32Config:n.bech32Config,chainSymbolImageUrl:n.chainSymbolImageUrl||"",stakeCurrency:{coinDecimals:n.stakeCurrency.coinDecimals,coinDenom:n.stakeCurrency.coinDenom,coinImageUrl:n.stakeCurrency.coinImageUrl||"",coinMinimalDenom:n.stakeCurrency.coinMinimalDenom},currencies:n.currencies.map(e=>({coinDecimals:e.coinDecimals,coinDenom:e.coinDenom,coinImageUrl:e.coinImageUrl||"",coinMinimalDenom:e.coinMinimalDenom})),feeCurrencies:n.feeCurrencies.map(e=>({coinDecimals:e.coinDecimals,coinDenom:e.coinDenom,coinImageUrl:e.coinImageUrl||"",coinMinimalDenom:e.coinMinimalDenom,gasPriceStep:{average:e.gasPriceStep?.average||0,high:e.gasPriceStep?.high||0,low:e.gasPriceStep?.low||0}}))});await e.experimentalSuggestChain(t)}catch(e){throw console.error(e),e}},enable:n=>e.enable(n),disable:n=>e.disable(n),getOfflineSignerAuto:n=>e.getOfflineSignerAuto(n),getOfflineSignerOnlyAmino:n=>e.getOfflineSignerOnlyAmino(n),signDirect:e.signDirect,signAmino:(n,t,r,o)=>e.signAmino(n,t,r)}}throw O.getState()._notFoundFn(),new Error("window.station is not defined")},W=()=>{if(void 0!==window.vectis){const e=window.vectis.cosmos;return{enable:n=>e.enable(n),getOfflineSigner:n=>{const t=e.getOfflineSigner(n);return{getAccounts:t.getAccounts,signAmino:t.signAmino,signDirect:async(e,n)=>{const r=await t.signDirect(e,{accountNumber:y.default.fromString(n.accountNumber.toString()||"",!1),authInfoBytes:n.authInfoBytes,bodyBytes:n.bodyBytes,chainId:n.chainId||""});return{signature:r.signature,signed:{authInfoBytes:r.signed.authInfoBytes,bodyBytes:r.signed.bodyBytes,chainId:r.signed.chainId,accountNumber:BigInt(r.signed.accountNumber.toString())}}}}},getOfflineSignerAuto:async n=>{const t=await e.getOfflineSignerAuto(n);return"signAmino"in t?t:"signDirect"in t?{getAccounts:t.getAccounts,signDirect:async(e,n)=>{const r=await t.signDirect(e,{accountNumber:y.default.fromString(n.accountNumber.toString()||"",!1),authInfoBytes:n.authInfoBytes,bodyBytes:n.bodyBytes,chainId:n.chainId||""});return{signature:r.signature,signed:{authInfoBytes:r.signed.authInfoBytes,bodyBytes:r.signed.bodyBytes,chainId:r.signed.chainId,accountNumber:BigInt(r.signed.accountNumber.toString())}}}}:t},getKey:async n=>{const t=await e.getKey(n);return{address:a.fromBech32(t.address).data,algo:t.algo,bech32Address:t.address,name:t.name,pubKey:t.pubKey,isKeystone:!1,isNanoLedger:t.isNanoLedger}},subscription:e=>{const n=()=>{X(),e()};return window.addEventListener("vectis_accountChanged",n),()=>{window.removeEventListener("vectis_accountChanged",n)}},getOfflineSignerOnlyAmino:(...n)=>{const t=n[0];return e.getOfflineSignerAmino(t)},experimentalSuggestChain:async(...n)=>{const[t]=n;if(!t.bech32Config)throw new Error("Bech32Config is required");if(!t.stakeCurrency)throw new Error("StakeCurrency is required");const r={rpcUrl:t.rpc,restUrl:t.rest,prettyName:t.chainName.replace(" ",""),bech32Prefix:t.bech32Config.bech32PrefixAccAddr,currencies:t.currencies,feeCurrencies:t.feeCurrencies,chainId:t.chainId,chainName:t.chainName,bip44:t.bip44,stakeCurrency:t.stakeCurrency,features:t.features};return e.suggestChains([r])},signDirect:async(...n)=>{const{1:t,2:r}=n,o=await e.signDirect(t,{bodyBytes:r.bodyBytes||Uint8Array.from([]),authInfoBytes:r.authInfoBytes||Uint8Array.from([]),accountNumber:y.default.fromString(r.accountNumber?.toString()||"",!1),chainId:r.chainId||""});return{signature:o.signature,signed:{authInfoBytes:o.signed.authInfoBytes,bodyBytes:o.signed.bodyBytes,chainId:o.signed.chainId,accountNumber:BigInt(o.signed.accountNumber.toString())}}},signAmino:async(...n)=>{const{1:t,2:r}=n;return e.signAmino(t,r)}}}throw O.getState()._notFoundFn(),new Error("window.vectis is not defined")},j=()=>{if("undefined"!=typeof window){const e=navigator.userAgent;return!!/android/i.test(e)||!!/iPad|iPhone|iPod/.test(e)}return!1},R=(e,n,t=new Error("Promise timed out"))=>{const r=new Promise((e,r)=>{setTimeout(()=>{r(t)},n)});return Promise.race([e,r])},z=e=>{if(!O.getState().walletConnect?.options?.projectId?.trim())throw new Error("walletConnect.options.projectId is not defined");const n=e?.walletType||"walletconnect",t=e?.encoding||"base64",r=n=>{if(!e)return;const{appUrl:t,formatNativeUrl:r}=e;if(j()){if(j()&&navigator.userAgent.toLowerCase().includes("android")){const e=r(t.mobile.android,n,"android");window.open(e,"_self","noreferrer noopener")}if(j()&&(navigator.userAgent.toLowerCase().includes("iphone")||navigator.userAgent.toLowerCase().includes("ipad"))){const e=r(t.mobile.ios,n,"ios");window.open(e,"_self","noreferrer noopener")}}},o=()=>{const{wcSignClients:e}=v.getState();if(!e.get(n))throw new Error("walletConnect.signClient is not defined");e.delete(n),v.setState({wcSignClients:e}),O.setState({_reconnect:!1,_reconnectConnector:null,recentChainIds:null})},i=async e=>{const{wcSignClients:t}=v.getState(),r=t.get(n);if(!r)throw new Error("walletConnect.signClient is not defined");if(!e)throw new Error("No wallet connect session");await r.disconnect({topic:e,reason:l.getSdkError("USER_DISCONNECTED")}),await d(r)},a=e=>{try{const{wcSignClients:t}=v.getState(),r=t.get(n);if(!r)throw new Error("walletConnect.signClient is not defined");const o=r.session.getAll(),a=o.at(-1);if(!a)return;if(!(1e3*a.expiry>Date.now()+1e3))throw i(a.topic),new Error("invalid session");try{const n=o.find(n=>n.requiredNamespaces.cosmos?.chains?.includes(`cosmos:${e}`));if(!n)throw new Error("no session");return n}catch(e){if(!e.message.toLowerCase().includes("no matching key"))throw e}return a}catch(e){if(!e.message.toLowerCase().includes("no matching key"))throw e}},d=async e=>{try{const n=e.core.pairing.pairings.getAll({active:!1});if(!n.length)return;await Promise.all(n.map(async n=>{await e.core.pairing.pairings.delete(n.topic,{code:7001,message:"clear pairing"})}))}catch(e){if(!e.message.toLowerCase().includes("no matching key"))throw e}},u=async t=>{const o="string"==typeof t?[t]:t,{wcSignClients:c,activeChainIds:l}=v.getState(),d=c.get(n);if(!d)throw new Error("enable walletConnect.signClient is not defined");const{walletConnect:u,chains:g}=O.getState();if(!u?.options?.projectId)throw new Error("walletConnect.options.projectId is not defined");const f=new s.WalletConnectModal({projectId:u.options.projectId,enableExplorer:!1,explorerRecommendedWalletIds:"NONE",...u.walletConnectModal}),h=(e=>{try{return a(e)}catch(e){return}})(o);if(!h){const{uri:n,approval:t}=await R(d.connect({requiredNamespaces:{cosmos:{methods:["cosmos_getAccounts","cosmos_signAmino","cosmos_signDirect"],chains:o.map(e=>`cosmos:${e}`),events:["chainChanged","accountsChanged"]}}}),15e3,new Error("Connection timeout"));if(!n)throw new Error("No wallet connect uri");e?r(n):await f.openModal({uri:n});const i=async e=>e.aborted?Promise.reject(new Error("User closed wallet connect")):new Promise((n,r)=>{t().then(e=>{const t=e.sessionProperties;if(!t)return r(new Error("No session properties"));const o=JSON.parse(String(t.keys));if(0===o.length)return r(new Error("No accounts"));if(!o[0])return r(new Error("No accounts"));const i={};return o.forEach(e=>{i[e.chainId]={address:e.address,algo:e.algo,bech32Address:e.bech32Address,isNanoLedger:e.isNanoLedger,isKeystone:e.isKeystone,name:e.name,pubKey:e.pubKey}}),v.setState(e=>({accounts:{...e.accounts||{},...i}})),n(e)}).catch(r),e.addEventListener("abort",()=>{r(new Error("User closed wallet connect"))},{once:!0})});try{const e=new AbortController,n=e.signal;f.subscribeModal(n=>{n.open||e.abort()}),await i(n)}catch(e){if(f.closeModal(),!e.message.toLowerCase().includes("no matching key"))return Promise.reject(e)}return e||f.closeModal(),Promise.resolve()}try{await R((async()=>{const e=Object.fromEntries(await Promise.all((l||o).map(async e=>[e,await w(e)])));v.setState({accounts:e})})(),15e3,new Error("Connection timeout"))}catch(e){if(i(h.topic),!e.message.toLowerCase().includes("no matching key"))throw e}},g=async e=>{const n=await w(e);return{address:n.bech32Address,algo:n.algo,pubkey:n.pubKey}},w=async e=>{const n=a([e]);if(!n?.topic)throw new Error("No wallet connect session");const r=n.sessionProperties&&JSON.parse(String(n.sessionProperties.keys));if(!r)throw new Error("No wallet connect key");if(0===r.length)throw new Error("No wallet connect session");const o=r.find(n=>n.chainId===e);if(!o)throw new Error(`No wallet connect key for chainId ${e}`);return{...o,pubKey:Buffer.from(String(o.pubKey),t)}},f=async(...e)=>{const[o,i,s]=e,{signature:c,signed:l}=await(async(...e)=>{const[o,i,s]=e,{accounts:c,wcSignClients:l}=v.getState(),d=l.get(n);if(!d)throw new Error("walletConnect.signClient is not defined");if(!c)throw new Error("account is not defined");const u=a([o])?.topic;if(!u)throw new Error("No wallet connect session");if(!s.bodyBytes)throw new Error("No bodyBytes");if(!s.authInfoBytes)throw new Error("No authInfoBytes");return r(),await d.request({topic:u,chainId:`cosmos:${o}`,request:{method:"cosmos_signDirect",params:{signerAddress:i,signDoc:{chainId:s.chainId,accountNumber:s.accountNumber?.toString(),bodyBytes:s.bodyBytes?Buffer.from(s.bodyBytes).toString(t):null,authInfoBytes:s.authInfoBytes?Buffer.from(s.authInfoBytes).toString(t):null}}}})})(o,i,s);return{signed:{chainId:l.chainId??"",accountNumber:l.accountNumber?BigInt(l.accountNumber):BigInt(0),authInfoBytes:l.authInfoBytes?new Uint8Array(Buffer.from(l.authInfoBytes,t)):new Uint8Array([]),bodyBytes:l.bodyBytes?new Uint8Array(Buffer.from(l.bodyBytes,t)):new Uint8Array([])},signature:c}},h=async(...e)=>{const[t,o,i,s]=e,c=await(async(...e)=>{const[t,o,i,s]=e,{wcSignClients:c}=v.getState(),l=c.get(n),{accounts:d}=v.getState();if(!l)throw new Error("walletConnect.signClient is not defined");if(!d)throw new Error("account is not defined");const u=a([t])?.topic;if(!u)throw new Error("No wallet connect session");return r(),await l.request({topic:u,chainId:`cosmos:${t}`,request:{method:"cosmos_signDirect",params:{signerAddress:o,signDoc:i}}})})(t,o,i);return c},p=e=>({getAccounts:async()=>[await g(e)],signAmino:(n,t)=>h(e,n,t)});return{enable:u,disable:async e=>{const{wcSignClients:t}=v.getState(),r=t.get(n);if(void 0===e){const e=r?.session.getAll();void 0!==e&&await Promise.all(e.map(e=>i(e.topic)))}else"string"==typeof e?await i(a([e])?.topic):await Promise.all(e.map(e=>i(a([e])?.topic)));0===r?.session.getAll().length&&o()},experimentalSuggestChain:async(...e)=>{await Promise.reject(new Error("WalletConnect does not support experimentalSuggestChain"))},getKey:w,getOfflineSigner:e=>({getAccounts:async()=>[await g(e)],signDirect:(n,t)=>f(e,n,t),signAmino:(n,t)=>h(e,n,t)}),getOfflineSignerAuto:async e=>(await w(e)).isNanoLedger?p(e):(e=>({getAccounts:async()=>[await g(e)],signDirect:(n,t)=>f(e,n,t)}))(e),getOfflineSignerOnlyAmino:p,signAmino:h,signDirect:f,subscription:e=>{const{wcSignClients:t}=v.getState(),r=t.get(n);if(!r)return()=>{};const i=n=>{const t=v.getState().accounts;if("accountsChanged"===n.params.event.name&&t&&!Object.values(t).map(e=>e.bech32Address).includes(n.params.event.data[0])){const e=n.params.chainId.split(":")[1];e&&u([e])}else e()};return r.events.on("session_delete",o),r.events.on("session_expire",o),r.events.on("session_event",i),()=>{r.events.off("session_delete",o),r.events.off("session_expire",o),r.events.off("session_event",i)}},init:async()=>{const{walletConnect:e}=O.getState();if(!e?.options)throw new Error("walletConnect.options is not defined");const{wcSignClients:t}=v.getState(),r=t.get(n);if(r)return r;const o=await c.SignClient.init(e.options);return t.set(n,o),v.setState({wcSignClients:t}),o}}},G=()=>{if(!O.getState().walletConnect?.options?.projectId?.trim())throw new Error("walletConnect.options.projectId is not defined");if(!j())throw new Error("WalletConnect Cosmostation mobile is only supported in mobile");return z({encoding:"hex",appUrl:{mobile:{ios:"cosmostation://",android:"cosmostation://"}},walletType:"wc_cosmostation_mobile",formatNativeUrl:(e,n,t)=>{const r=e.replaceAll("/","").replaceAll(":","");return n?`${r}://wc?${n}`:`${r}://wc`}})},Q=()=>{if(!O.getState().walletConnect?.options?.projectId?.trim())throw new Error("walletConnect.options.projectId is not defined");if(!j())throw new Error("WalletConnect Keplr mobile is only supported in mobile");return z({encoding:"base64",appUrl:{mobile:{ios:"keplrwallet://",android:"intent://"}},walletType:"wc_keplr_mobile",formatNativeUrl:(e,n,t)=>{const r=e.replaceAll("/","").replaceAll(":",""),o=n&&encodeURIComponent(n);switch(t){case"ios":return o?`${r}://wcV2?${o}`:`${r}://wcV2`;case"android":return o?`${r}://wcV2?${o}#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;`:`${r}://wcV2#Intent;package=com.chainapsis.keplr;scheme=keplrwallet;end;`;default:return o?`${r}://wc?uri=${o}`:`${r}://wc`}}})},V=()=>{if(!O.getState().walletConnect?.options?.projectId?.trim())throw new Error("walletConnect.options.projectId is not defined");if(!j())throw new Error("WalletConnect Leap mobile is only supported in mobile");return z({encoding:"base64",appUrl:{mobile:{ios:"leapcosmos://",android:"intent://"}},walletType:"wc_leap_mobile",formatNativeUrl:(e,n,t)=>{const r=e.replaceAll("/","").replaceAll(":",""),o=n&&encodeURIComponent(n);switch(t){case"ios":return o?`${r}://wcV2?${o}`:`${r}://wcV2`;case"android":return o?`${r}://wcV2?${o}#Intent;package=io.leapwallet.cosmos;scheme=leapwallet;end;`:`${r}://wcV2#Intent;package=io.leapwallet.cosmos;scheme=leapwallet;end;`;default:return o?`${r}://wc?uri=${o}`:`${r}://wc`}}})},H=()=>{if(void 0!==window.xfi?.keplr){const e=window.xfi.keplr,n=e=>{const n=()=>{X(),e()};return window.addEventListener("keplr_keystorechange",n),()=>{window.removeEventListener("keplr_keystorechange",n)}};return Object.assign(e,{subscription:n})}throw O.getState()._notFoundFn(),new Error("window.xfi.keplr is not defined")},Y=(e=O.getState().walletType)=>{try{return J(e),!0}catch(e){return!1}},X=()=>{window.sessionStorage.removeItem(C),v.setState(A)},J=(e=O.getState().walletType)=>{const n=(()=>{switch(e){case"keplr":return M();case"leap":return D();case"cosmostation":return T();case"vectis":return W();case"walletconnect":return z();case"wc_keplr_mobile":return Q();case"wc_leap_mobile":return V();case"wc_cosmostation_mobile":return G();case"wc_clot_mobile":return(()=>{if(!O.getState().walletConnect?.options?.projectId?.trim())throw new Error("walletConnect.options.projectId is not defined");if(!j())throw new Error("WalletConnect Clot mobile is only supported in mobile");return z({encoding:"base64",appUrl:{mobile:{android:"clot://",ios:"clot://"}},walletType:"wc_clot_mobile",formatNativeUrl:(e,n,t)=>{const r=e.replaceAll("/","").replaceAll(":",""),o=n&&encodeURIComponent(n);return"ios"===t?o?`${r}://wcV2?${o}`:`${r}://wcV2`:o?`${r}://wc?uri=${o}`:`${r}://wc`}})})();case"metamask_snap_leap":return q();case"metamask_snap_cosmos":return(()=>{const e=window.ethereum;let n=window.cosmos;if(e)return{init:async()=>{const t=await e.request({method:"web3_clientVersion"});if(!t.includes("MetaMask"))throw new Error("Metamask is not installed");if(void 0!==window.okxwallet&&window.okxwallet.isOkxWallet)throw new Error("You have OKX Wallet installed. Please disable and reload the page to use Metamask Snap.");const o=t.split("MetaMask/v")[1]?.split(".")[0];if(!(Number(o)>=11))throw new Error("Metamask Snap is not supported in this version");return await r.isSnapInstalled()||await r.installSnap(),window.cosmos=new r.CosmosSnap,n=window.cosmos,!0},enable:async e=>{await r.isSnapInstalled()||await r.installSnap()},getOfflineSigner:e=>n.getOfflineSigner(e),experimentalSuggestChain:async e=>{if(!e.bech32Config)throw new Error("Bech32Config is required");if(!e.stakeCurrency)throw new Error("StakeCurrency is required");await n.experimentalSuggestChain({...e,stakeCurrency:e.stakeCurrency,bech32Config:e.bech32Config})},signAmino:async(e,t,r)=>n.signAmino(e,t,r),getKey:async e=>void 0!==N[e]?N[e]:n.getKey(e),getOfflineSignerAuto:async e=>(await n.getKey(e)).isNanoLedger?n.getOfflineSignerOnlyAmino(e):n.getOfflineSigner(e),getOfflineSignerOnlyAmino:e=>n.getOfflineSignerOnlyAmino(e),signDirect:async(e,t,r)=>n.signDirect(e,t,r),signArbitrary:async(e,t,r)=>n.signArbitrary(e,t,r),disable:async e=>{e&&await n.deleteChain(e)}};throw O.getState()._notFoundFn(),new Error("window.ethereum is not defined")})();case"station":return $();case"xdefi":return H();case"cosmiframe":return B();case"compass":return x();case"initia":return P();case"okx":return F();case"para":return U();case"cactuscosmos":return k();default:throw new Error("Unknown wallet type")}})(),t=O.getState().walletDefaultOptions;return t&&n.setDefaultOptions?.(t),n},Z=e=>"metamask_snap_leap"===e,ee=()=>Boolean(navigator?.userAgent)&&/LeapCosmos/i.test(navigator.userAgent),ne=e=>"walletconnect"===e||"wc_keplr_mobile"===e||"wc_leap_mobile"===e||"wc_cosmostation_mobile"===e,te=e=>"para"===e,re=async e=>{try{const{recentChainIds:n,chains:t,walletType:r}=O.getState(),o=e?.walletType||r;if(ne(o)){const e=J("walletconnect"),{disable:n}=e;n&&n()}if(!Y(o))throw new Error(`${o} is not available`);const i=J(o),a="string"==typeof e?.chainId?[e.chainId]:e?.chainId||n;if(!a)throw new Error("No last known connected chain, connect action requires chain ids");const s=t?.map(e=>e.chainId);a.forEach(e=>{if(!s?.includes(e))throw new Error(`Chain ${e} is not provided in GrazProvider`)}),v.setState(e=>{const n=O.getState()._reconnect||Boolean(O.getState()._reconnectConnector)||Boolean(a);return e.activeChainIds&&a.filter(n=>!e.activeChainIds?.includes(n)).length>0?{status:"connecting"}:n?{status:"reconnecting"}:{status:"connecting"}});const{accounts:c}=v.getState();if(await(i.init?.()),await i.enable(a),!ne(o)){let e={};if(Z(o)){const n={};for await(const e of a)n[e]=await i.getKey(e);e=n}else if(ee()&&i.getKeys){const n=await i.getKeys(a);a.forEach((t,r)=>{const o=n[r];o&&(e[t]=o)})}else e=Object.fromEntries(await Promise.all(a.map(async e=>[e,await i.getKey(e)])));v.setState(n=>({accounts:{...n.accounts||{},...e}}))}O.setState(e=>({recentChainIds:[...e.recentChainIds||[],...a].filter((e,n,t)=>t.indexOf(e)===n)})),v.setState(e=>({activeChainIds:[...e.activeChainIds||[],...a].filter((e,n,t)=>t.indexOf(e)===n)})),O.setState({walletType:o,_reconnect:Boolean(e?.autoReconnect),_reconnectConnector:o}),v.setState({status:"connected"}),"undefined"!=typeof window&&window.sessionStorage.setItem(C,"Active");const l=a.map(e=>t.find(n=>n.chainId===e));return{accounts:v.getState().accounts,walletType:o,chains:l}}catch(e){throw console.error("connect ",e),null===v.getState().accounts&&v.setState({status:"disconnected"}),v.getState().accounts&&v.getState().activeChainIds&&v.setState({status:"connected"}),e}},oe=e=>{"undefined"!=typeof window&&window.sessionStorage.removeItem(C);const n="string"==typeof e?.chainId?[e.chainId]:e?.chainId,t=()=>{if(ne(O.getState().walletType)){const e=J("walletconnect"),{disable:n}=e;n&&n()}if(te(O.getState().walletType)){const e=J("para"),{disable:n}=e;n&&n()}};if(n){const e=v.getState().accounts;n.forEach(n=>{delete e?.[n]});0===Object.values(e||{}).length?(t(),v.setState(A),O.setState({_reconnect:!1,_reconnectConnector:null,recentChainIds:null})):(v.setState(t=>({activeChainIds:t.activeChainIds?.filter(e=>!n.includes(e)),accounts:e})),O.setState(e=>({recentChainIds:e.recentChainIds?.filter(e=>!n.includes(e))})))}else t(),v.setState(A),O.setState({_reconnect:!1,_reconnectConnector:null,recentChainIds:null});return Promise.resolve()},ie=async e=>{const{recentChainIds:n,_reconnectConnector:t,_reconnect:r}=O.getState();try{const e=Y(t||void 0);if(n&&e&&t){if(ne(t))return;return await re({chainId:n,walletType:t,autoReconnect:r})}}catch(n){e?.onError?.(n),oe()}},ae=async e=>{if(!e?.chainId)throw new Error("chainId is required");const{walletType:n}=O.getState(),t=e.walletType||n;if(!Y(t))throw new Error(`${t} is not available`);const r=J(t);return{offlineSigner:r.getOfflineSigner(e.chainId),offlineSignerAmino:r.getOfflineSignerOnlyAmino(e.chainId),offlineSignerAuto:await r.getOfflineSignerAuto(e.chainId)}},se=()=>{O.setState({recentChainIds:null})},ce=async({chainInfo:e})=>{const{chains:n}=O.getState(),t=n?.find(n=>n.chainId===e.chainId);if(t)throw new Error(`Chain with chainId "${e.chainId}" already exists in the store`);return O.setState(n=>({chains:[...n.chains||[],e]})),e},le=async({chainInfo:e,walletType:n})=>{const t=J(n);await t.experimentalSuggestChain(e);const{chains:r}=O.getState(),o=r?.find(n=>n.chainId===e.chainId);return o||O.setState(n=>({chains:[...n.chains||[],e]})),e},de=async e=>{const n=O.getState().walletType;await le({chainInfo:e.chainInfo,walletType:e.walletType??n});return await re({chainId:e.chainInfo.chainId,walletType:e.walletType,autoReconnect:e.autoReconnect})},ue=e=>(O.setState(n=>{const t=n.chains??[],r=e.chains,o=new Map;r.forEach(e=>o.set(e.chainId,e)),t.forEach(e=>{o.has(e.chainId)||o.set(e.chainId,e)});const i=Array.from(o.values());return{iframeOptions:e.iframeOptions||n.iframeOptions,walletConnect:e.walletConnect||n.walletConnect,walletType:e.defaultWallet||n.walletType,paraConfig:e.paraConfig||n.paraConfig,walletDefaultOptions:e.walletDefaultOptions||n.walletDefaultOptions,chains:i,chainsConfig:e.chainsConfig||n.chainsConfig,multiChainFetchConcurrency:e.multiChainFetchConcurrency||n.multiChainFetchConcurrency,pingInterval:e.pingInteval||n.pingInterval,_notFoundFn:e.onNotFound||n._notFoundFn,_onReconnectFailed:e.onReconnectFailed||n._onReconnectFailed,_reconnect:void 0===e.autoReconnect||(e.autoReconnect||n._reconnect)}}),e),ge=async({signingClient:e,senderAddress:n,recipientAddress:t,amount:r,fee:o,memo:i})=>{if(!e)throw new Error("No connected account detected");if(!n)throw new Error("senderAddress is not defined");return e.sendTokens(n,t,r,o,i)},we=async({signingClient:e,senderAddress:n,recipientAddress:t,transferAmount:r,sourcePort:o,sourceChannel:i,timeoutHeight:a,timeoutTimestamp:s,fee:c,memo:l})=>{if(!e)throw new Error("Stargate signing client is not ready");if(!n)throw new Error("senderAddress is not defined");return e.sendIbcTokens(n,t,r,o,i,a,s,c,l)},fe=async({signingClient:e,senderAddress:n,msg:t,fee:r,options:o,label:i,codeId:a})=>{if(!e)throw new Error("CosmWasm signing client is not ready");return e.instantiate(n,a,t,i,r,o)},he=async({signingClient:e,senderAddress:n,msg:t,fee:r,contractAddress:o,funds:i,memo:a})=>{if(!e)throw new Error("CosmWasm signing client is not ready");return e.execute(n,o,t,r,a,i)},pe=async(e,n,t)=>{if(!t)throw new Error("CosmWasm client is not ready");return await t.queryContractSmart(e,n)},me=(e,n,t)=>{if(!t)throw new Error("CosmWasm client is not ready");const r=(new TextEncoder).encode(n);return t.queryContractRaw(e,r)},ye=({chainId:e})=>{const n=O(e=>e.chains);if(!n)throw new Error("No chains found in GrazProvider");return e&&e.length>0?e.map(e=>n.find(n=>n.chainId===e)).filter(Boolean):n},Se=async(e,n)=>{const t=O.getState().multiChainFetchConcurrency,r=await S.default(e,n,{concurrency:t});return Object.fromEntries(r.map((n,t)=>[e[t].chainId,n]))};function Ce(e){const n=ye({chainId:e?.chainId}),t=u.useMemo(()=>["USE_STARGATE_CLIENT",n],[n]);return d.useQuery({queryKey:t,queryFn:async()=>{if(!n||n.length<1)throw new Error("No chains found");return await Se(n,async e=>{const n=O.getState().chainsConfig?.[e.chainId],t={url:e.rpc,headers:{...n?.rpcHeaders||{}}};return await f.StargateClient.connect(t)})},enabled:Boolean(n)&&n.length>0&&(void 0===e?.enabled||Boolean(e.enabled)),refetchOnWindowFocus:!1})}function Ie(e){const n=ye({chainId:e?.chainId}),t=u.useMemo(()=>["USE_COSMWASM_CLIENT",n],[n]);return d.useQuery({queryKey:t,queryFn:async()=>{if(!n||n.length<1)throw new Error("No chains found");return await Se(n,async e=>{const n=O.getState().chainsConfig?.[e.chainId],t={url:e.rpc,headers:{...n?.rpcHeaders||{}}};return await w.CosmWasmClient.connect(t)})},enabled:Boolean(n)&&n.length>0&&(void 0===e?.enabled||Boolean(e.enabled)),refetchOnWindowFocus:!1})}var be=e=>{const n=O(n=>e||n.walletType),t=["USE_CHECK_WALLET",n];return d.useQuery({queryKey:t,queryFn:()=>!!n&&Y(n)})};var Ee=()=>{const e=v(e=>e.activeChainIds),n=O(e=>e.chains);return e?.map(e=>{const t=n?.find(n=>n.chainId===e);if(t)return t}).filter(Boolean)};var Ae=({children:e})=>{const[n,t]=u.useState(!1);return u.useEffect(()=>{t(!0)},[]),p.jsx(p.Fragment,{children:n?e:null})},_e=()=>{const e="undefined"!=typeof window&&"Active"===window.sessionStorage.getItem(C),{_reconnect:n,_onReconnectFailed:r,_reconnectConnector:o,iframeOptions:i,chains:a,pingInterval:s}=O(),{activeChainIds:c,wcSignClients:l}=v(),d=Y(o||void 0);return u.useEffect(()=>{const n=async()=>{if(e&&d&&o&&c?.[0]){const e=v.getState().lastPing;if(e&&Date.now()-e<s)return;const n=J(o);try{if(!await n.getKey(c[0]))throw new Error("No account found");v.setState({lastPing:Date.now()})}catch(e){ie({onError:r})}}};return window.addEventListener("focus",n),()=>{window.removeEventListener("focus",n)}},[e,d,o,a,c,s]),u.useEffect(()=>{if(!i||!1===i.autoConnect||!i.allowedIframeParentOrigins.length||!a)return;new t.Cosmiframe(i.allowedIframeParentOrigins).isReady().then(e=>{if(e)return re({chainId:a.map(e=>e.chainId),walletType:"cosmiframe"})})},[i]),u.useEffect(()=>{if(o){if(!d)return;(e&&Boolean(c)||!e&&n)&&ie({onError:r})}},[d]),u.useEffect(()=>{if(o){if(!d)return;"cosmostation"===o&&T().subscription?.(()=>{ie({onError:r})}),"keplr"===o&&M().subscription?.(()=>{ie({onError:r})}),"leap"===o&&D().subscription?.(()=>{ie({onError:r})}),"compass"===o&&x().subscription?.(()=>{ie({onError:r})}),"vectis"===o&&W().subscription?.(()=>{ie({onError:r})}),"walletconnect"===o&&l.has("walletconnect")&&z().subscription?.(()=>{ie({onError:r})}),"station"===o&&$().subscription?.(()=>{ie({onError:r})}),"xdefi"===o&&H().subscription?.(()=>{ie({onError:r})}),"cosmiframe"===o&&B().subscription?.(()=>{ie({onError:r})}),"okx"===o&&F().subscription?.(()=>{ie({onError:r})})}},[o,l,d]),null},ve=()=>(_e(),null);exports.GrazEvents=ve,exports.GrazProvider=({children:e,grazOptions:n})=>(u.useEffect(()=>{ue(n)},[n]),p.jsxs(Ae,{children:[e,p.jsx(ve,{})]})),exports.WALLET_TYPES=b,exports.WalletType=I,exports.addChain=ce,exports.checkWallet=Y,exports.clearRecentChain=se,exports.clearSession=X,exports.configureGraz=ue,exports.connect=re,exports.defineChainInfo=e=>e,exports.defineChains=e=>e,exports.disconnect=oe,exports.executeContract=he,exports.getAvailableWallets=()=>Object.fromEntries(b.map(e=>[e,Y(e)])),exports.getCactusCosmos=k,exports.getChainInfo=({chainId:e}={})=>O.getState().chains?.find(n=>n.chainId===e),exports.getChainInfos=({chainId:e}={})=>{const n=O.getState().chains;return e?n?.filter(n=>e.includes(n.chainId)):n??void 0},exports.getCosmostation=T,exports.getKeplr=M,exports.getLeap=D,exports.getMetamaskSnapLeap=q,exports.getOfflineSigners=ae,exports.getOkx=F,exports.getPara=U,exports.getQueryRaw=me,exports.getQuerySmart=pe,exports.getRecentChainIds=()=>O.getState().recentChainIds,exports.getRecentChains=()=>{const{recentChainIds:e,chains:n}=O.getState();return e?.map(e=>n.find(n=>n.chainId===e))??null},exports.getVectis=W,exports.getWCCosmostation=G,exports.getWCKeplr=Q,exports.getWCLeap=V,exports.getWallet=J,exports.getWalletConnect=z,exports.instantiateContract=fe,exports.isLeapDappBrowser=ee,exports.isLeapSnaps=Z,exports.isPara=te,exports.isWalletConnect=ne,exports.reconnect=ie,exports.sendIbcTokens=we,exports.sendTokens=ge,exports.suggestChain=le,exports.suggestChainAndConnect=de,exports.useAccount=function(e){const n=O(e=>e.walletType),t=v(e=>e.activeChainIds),r=ye({chainId:e?.chainId?e.chainId:t||void 0}),o=v(e=>e.accounts),i=v(e=>e.status);return u.useEffect(()=>v.subscribe(e=>e.status,(n,t)=>{if("connected"===n){const{accounts:n,activeChainIds:r}=v.getState(),{chains:o}=O.getState(),{walletType:i}=O.getState();if(!n||!r||!o)return e?.onDisconnect?.();e?.onConnect?.({accounts:n,chains:r.map(e=>o.find(n=>n.chainId===e)),walletType:i,isReconnect:"reconnecting"===t})}"disconnected"===n&&e?.onDisconnect?.()}),[e]),{data:u.useMemo(()=>o?((e,n)=>{const t=e.map(n);return Object.fromEntries(t.map((n,t)=>[e[t].chainId,n]))})(r,e=>o[e.chainId]):void 0,[o,r]),isConnected:"connected"===i,isConnecting:"connecting"===i,isDisconnected:"disconnected"===i,isReconnecting:"reconnecting"===i,isLoading:"connecting"===i||"reconnecting"===i,walletType:"connected"===i?n:void 0,reconnect:ie,status:i}},exports.useActiveChainCurrency=({denom:e})=>{const n=Ee(),t=["USE_ACTIVE_CHAIN_CURRENCY",e];return d.useQuery({queryKey:t,queryFn:({queryKey:[,e]})=>n?.find(n=>n.currencies.find(n=>n.coinMinimalDenom===e))?.currencies.find(e=>e)})},exports.useActiveChainIds=()=>v(e=>e.activeChainIds),exports.useActiveChains=Ee,exports.useActiveWalletType=()=>O(h.useShallow(e=>({walletType:e.walletType,isCosmostation:"cosmostation"===e.walletType,isCosmostationMobile:"wc_cosmostation_mobile"===e.walletType,isKeplr:"keplr"===e.walletType,isKeplrMobile:"wc_keplr_mobile"===e.walletType,isLeap:"leap"===e.walletType,isLeapMobile:"wc_leap_mobile"===e.walletType,isVectis:"vectis"===e.walletType,isWalletConnect:"walletconnect"===e.walletType,isMetamaskSnapLeap:"metamask_snap_leap"===e.walletType,isStation:"station"===e.walletType,isCosmiframe:"cosmiframe"===e.walletType}))),exports.useAddChain=({onError:e,onLoading:n,onSuccess:t}={})=>{const r=["USE_ADD_CHAIN",e,n,t],o=d.useMutation({mutationKey:r,mutationFn:ce,onError:(n,t)=>Promise.resolve(e?.(n,t.chainInfo)),onMutate:e=>n?.(e.chainInfo),onSuccess:e=>Promise.resolve(t?.(e))});return{addChain:o.mutate,addChainAsync:o.mutateAsync,error:o.error,isLoading:o.isPending,isSuccess:o.isSuccess,status:o.status}},exports.useBalance=e=>{const n=ye({chainId:[e.chainId]})[0],{data:t}=Ce({chainId:[e.chainId],enabled:void 0===e.enabled||e.enabled}),r=t?.[e.chainId],o=u.useMemo(()=>["USE_BALANCE",r,e.chainId,e.bech32Address,e.denom],[e.bech32Address,e.chainId,e.denom,r]);return d.useQuery({queryKey:o,queryFn:async()=>{if(!r)throw new Error(`Client is not ready for ${e.chainId}`);if(!n?.bech32Config?.bech32PrefixAccAddr)throw new Error(`Bech32Config is missing for ${e.chainId}`);const t=await r.getBalance(e.bech32Address,e.denom);return"0"===t.amount?void 0:t},enabled:Boolean(r)&&Boolean(n)&&(void 0===e.enabled||e.enabled),refetchOnMount:!1,refetchOnReconnect:!0,refetchOnWindowFocus:!1})},exports.useBalanceStaked=e=>{const n=ye({chainId:[e.chainId]})[0],{data:t}=Ce({chainId:[e.chainId],enabled:void 0===e.enabled||e.enabled}),r=t?.[e.chainId],o=u.useMemo(()=>["USE_BALANCE_STAKED",r,e.chainId,e.bech32Address],[e.bech32Address,e.chainId,r]);return d.useQuery({queryKey:o,queryFn:async()=>{if(!r)throw new Error(`Client is not ready for ${e.chainId}`);if(!n?.bech32Config?.bech32PrefixAccAddr)throw new Error(`Bech32Config is missing for ${e.chainId}`);return await r.getBalanceStaked(e.bech32Address)},enabled:Boolean(r)&&Boolean(n)&&(void 0===e.enabled||e.enabled),refetchOnMount:!1,refetchOnReconnect:!0,refetchOnWindowFocus:!1})},exports.useBalances=e=>{const n=ye({chainId:[e.chainId]})[0],{data:t}=Ce({chainId:[e.chainId],enabled:void 0===e.enabled||e.enabled}),r=t?.[e.chainId],o=u.useMemo(()=>["USE_ALL_BALANCES",r,e.chainId,e.bech32Address],[e.bech32Address,e.chainId,r]);return d.useQuery({queryKey:o,queryFn:async()=>{if(!r)throw new Error(`Client is not ready for ${e.chainId}`);if(!n?.bech32Config?.bech32PrefixAccAddr)throw new Error(`Bech32Config is missing for ${e.chainId}`);return await r.getAllBalances(e.bech32Address)},enabled:Boolean(r)&&Boolean(n)&&(void 0===e.enabled||e.enabled),refetchOnMount:!1,refetchOnReconnect:!0,refetchOnWindowFocus:!1})},exports.useChainInfo=({chainId:e}={})=>O(e=>e.chains)?.find(n=>n.chainId===e),exports.useChainInfos=({chainId:e}={})=>{const n=O(e=>e.chains);return e?n?.filter(n=>e.includes(n.chainId)):n},exports.useCheckWallet=be,exports.useConnect=({onError:e,onLoading:n,onSuccess:t}={})=>{const r=["USE_CONNECT",e,n,t],o=d.useMutation({mutationKey:r,mutationFn:re,onError:(n,t)=>e?.(n,t),onMutate:n,onSuccess:e=>Promise.resolve(t?.(e))}),{data:i}=be();return{connect:e=>o.mutate(e),connectAsync:e=>o.mutateAsync(e),error:o.error,isLoading:o.isPending,isSuccess:o.isSuccess,isSupported:Boolean(i),status:o.status}},exports.useCosmWasmClient=Ie,exports.useCosmWasmSigningClient=function(e){const n=ye({chainId:e?.chainId}),t=O(e=>e.walletType),r=v(e=>e.activeChainIds),o="connected"===v.getState().status&&v.getState().accounts&&O.getState()._reconnectConnector===t,i=u.useMemo(()=>["USE_COSMWASM_SIGNING_CLIENT",n,t,e,r],[r,e,n,t]);return d.useQuery({queryKey:i,queryFn:async()=>{if(!n||n.length<1)throw new Error("No chains found");if(!t)throw new Error("Wallet is not defined");return await Se(n,async n=>{if(!r?.includes(n.chainId))return null;if(!Y(t))throw new Error(`${t} is not available`);const o=await(async()=>{switch(e?.offlineSigner){case"offlineSigner":return J(t).getOfflineSigner(n.chainId);case"offlineSignerAuto":default:return J(t).getOfflineSignerAuto(n.chainId);case"offlineSignerOnlyAmino":return J(t).getOfflineSignerOnlyAmino(n.chainId)}})(),i=O.getState().chainsConfig?.[n.chainId],a={url:n.rpc,headers:{...i?.rpcHeaders||{}}},s=i?.gas?f.GasPrice.fromString(`${i.gas.price}${i.gas.denom}`):void 0;return await w.SigningCosmWasmClient.connectWithSigner(a,o,{gasPrice:s,...e?.opts?.[n.chainId]||{}})})},enabled:Boolean(n)&&n.length>0&&Boolean(t)&&(void 0===e?.enabled||Boolean(e.enabled))&&Boolean(o),refetchOnWindowFocus:!1})},exports.useDisconnect=({onError:e,onLoading:n,onSuccess:t}={})=>{const r=["USE_DISCONNECT",e,n,t],o=d.useMutation({mutationKey:r,mutationFn:oe,onError:n=>Promise.resolve(e?.(n,void 0)),onMutate:n,onSuccess:()=>Promise.resolve(t?.(void 0))});return{disconnect:e=>o.mutate(e),disconnectAsync:e=>o.mutateAsync(e),error:o.error,isLoading:o.isPending,isSuccess:o.isSuccess,status:o.status}},exports.useExecuteContract=({contractAddress:e,onError:n,onLoading:t,onSuccess:r})=>{const{mutate:o,mutateAsync:i,...a}=d.useMutation({mutationKey:["USE_EXECUTE_CONTRACT",n,t,r,e],mutationFn:n=>he({...n,fee:n.fee??"auto",contractAddress:e,memo:n.memo??"",funds:n.funds??[]}),onError:(e,t)=>Promise.resolve(n?.(e,t)),onMutate:t,onSuccess:e=>Promise.resolve(r?.(e))});return{...a,executeContract:o,executeContractAsync:i}},exports.useGrazEvents=_e,exports.useInstantiateContract=({codeId:e,onError:n,onLoading:t,onSuccess:r})=>{const{mutate:o,mutateAsync:i,...a}=d.useMutation({mutationKey:["USE_INSTANTIATE_CONTRACT",n,t,r,e],mutationFn:n=>fe({...n,fee:n.fee??"auto",codeId:e}),onError:(e,t)=>Promise.resolve(n?.(e,t)),onMutate:t,onSuccess:e=>Promise.resolve(r?.(e))});return{...a,instantiateContract:o,instantiateContractAsync:i}},exports.useOfflineSigners=function(e){const n=ye({chainId:e?.chainId}),t=O(e=>e.walletType),r="connected"===v.getState().status&&v.getState().accounts&&O.getState()._reconnectConnector===t,o=u.useMemo(()=>["USE_OFFLINE_SIGNERS",n,t],[n,t]);return d.useQuery({queryKey:o,queryFn:async()=>{if(!n||n.length<1)throw new Error("No chain found");if(!t)throw new Error("Wallet is not defined");if(!Y(t))throw new Error(`${t} is not available`);return await Se(n,async e=>await ae({chainId:e.chainId,walletType:t}))},enabled:Boolean(n)&&n.length>0&&Boolean(t)&&Boolean(r),refetchOnWindowFocus:!1})},exports.useQueryClientValidators=e=>{const n=e.status??"BOND_STATUS_BONDED",t=["USE_ACTIVE_CHAIN_VALIDATORS",e.queryClient,n];return d.useQuery({queryKey:t,queryFn:async()=>{if(!e.queryClient)throw new Error("Query client is not defined");return await e.queryClient.staking.validators(n)},enabled:void 0!==e.queryClient})},exports.useQueryRaw=e=>{const{data:n}=Ie(),t=n&&Object.values(n)[0],r=["USE_QUERY_RAW",e?.key,e?.address,t];return d.useQuery({queryKey:r,queryFn:({queryKey:[,n]})=>{if(!e?.address||!e.key)throw new Error("address or key undefined");return me(e.address,e.key,t)},enabled:Boolean(e?.address)&&Boolean(e?.key)&&Boolean(t)})},exports.useQuerySmart=e=>{const{data:n}=Ie(),t=n&&Object.values(n)[0];return d.useQuery({queryKey:["USE_QUERY_SMART",e?.address,e?.queryMsg,t],queryFn:({queryKey:[,n]})=>{if(!e?.address||!e.queryMsg)throw new Error("address or queryMsg undefined");return pe(e.address,e.queryMsg,t)},enabled:Boolean(e?.address)&&Boolean(e?.queryMsg)&&Boolean(t)})},exports.useRecentChainIds=()=>({data:O(e=>e.recentChainIds),clear:se}),exports.useRecentChains=()=>{const e=O(e=>e.recentChainIds),n=O(e=>e.chains),t=e?.map(e=>{const t=n?.find(n=>n.chainId===e);if(t)return t}).filter(Boolean);return{data:t,clear:se}},exports.useSendIbcTokens=({onError:e,onLoading:n,onSuccess:t}={})=>{const{mutate:r,mutateAsync:o,...i}=d.useMutation({mutationKey:["USE_SEND_IBC_TOKENS",e,n,t],mutationFn:we,onError:(n,t)=>Promise.resolve(e?.(n,t)),onMutate:n,onSuccess:e=>Promise.resolve(t?.(e))});return{...i,sendIbcTokens:r,sendIbcTokensAsync:o}},exports.useSendTokens=({onError:e,onLoading:n,onSuccess:t}={})=>{const{mutate:r,mutateAsync:o,...i}=d.useMutation({mutationKey:["USE_SEND_TOKENS",e,n,t],mutationFn:ge,onError:(n,t)=>Promise.resolve(e?.(n,t)),onMutate:n,onSuccess:e=>Promise.resolve(t?.(e))});return{...i,sendTokens:r,sendTokensAsync:o}},exports.useStargateClient=Ce,exports.useStargateSigningClient=function(e){const n=ye({chainId:e?.chainId}),t=O(e=>e.walletType),r=v(e=>e.activeChainIds),o="connected"===v.getState().status&&v.getState().accounts&&O.getState()._reconnectConnector===t,i=u.useMemo(()=>["USE_STARGATE_SIGNING_CLIENT",n,t,e,r],[r,e,n,t]);return d.useQuery({queryKey:i,queryFn:async()=>{if(!n||n.length<1)throw new Error("No chains found");if(!t)throw new Error("Wallet is not defined");return await Se(n,async n=>{if(!r?.includes(n.chainId))return null;if(!Y(t))throw new Error(`${t} is not available`);const o=await(async()=>{switch(e?.offlineSigner){case"offlineSigner":return J(t).getOfflineSigner(n.chainId);case"offlineSignerAuto":default:return J(t).getOfflineSignerAuto(n.chainId);case"offlineSignerOnlyAmino":return J(t).getOfflineSignerOnlyAmino(n.chainId)}})(),i=O.getState().chainsConfig?.[n.chainId],a={url:n.rpc,headers:{...i?.rpcHeaders||{}}};return await f.SigningStargateClient.connectWithSigner(a,o,e?.opts?.[n.chainId])})},enabled:Boolean(n)&&n.length>0&&Boolean(t)&&(void 0===e?.enabled||Boolean(e.enabled))&&Boolean(o),refetchOnWindowFocus:!1})},exports.useSuggestChain=({onError:e,onLoading:n,onSuccess:t}={})=>{const r=["USE_SUGGEST_CHAIN",e,n,t],o=d.useMutation({mutationKey:r,mutationFn:le,onError:(n,t)=>Promise.resolve(e?.(n,t.chainInfo)),onMutate:e=>n?.(e.chainInfo),onSuccess:e=>Promise.resolve(t?.(e))});return{error:o.error,isLoading:o.isPending,isSuccess:o.isSuccess,suggest:o.mutate,suggestAsync:o.mutateAsync,status:o.status}},exports.useSuggestChainAndConnect=({onError:e,onLoading:n,onSuccess:t}={})=>{const r=["USE_SUGGEST_CHAIN_AND_CONNECT",e,n,t],o=d.useMutation({mutationKey:r,mutationFn:de,onError:(n,t)=>Promise.resolve(e?.(n,t)),onMutate:e=>n?.(e),onSuccess:e=>Promise.resolve(t?.(e))}),{data:i}=be();return{error:o.error,isLoading:o.isPending,isSuccess:o.isSuccess,isSupported:Boolean(i),status:o.status,suggestAndConnect:o.mutate,suggestAndConnectAsync:o.mutateAsync}};