@rango-dev/widget-embedded 0.12.1-next.14 → 0.12.1-next.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var Xl=Object.defineProperty;var i=(t,e)=>Xl(t,"name",{value:e,configurable:!0});import{I18nManager as $f,styled as zf}from"@rango-dev/ui";import Qe,{useContext as qf,useEffect as Hf,useMemo as Gf,useState as Vl}from"react";import bo,{Fragment as wp}from"react";import{MemoryRouter as vp,useInRouterContext as xp}from"react-router";import{useQueueManager as Ep}from"@rango-dev/queue-manager-rango-preset";import{useEffect as vn,useRef as xn}from"react";import{createSearchParams as Cp,useLocation as Tp,useSearchParams as kp}from"react-router-dom";var y={home:"/",fromSwap:"from-swap",fromBlockchain:"/from-swap/blockchains",toBlockchain:"/to-swap/blockchains",toSwap:"to-swap",settings:"settings",liquiditySources:"/settings/liquidity-sources",themes:"/settings/themes",bridges:"/settings/bridges",exchanges:"/settings/exchanges",languages:"/settings/languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:"swaps/:requestId"};import ot from"bignumber.js";import{create as gp}from"zustand";import{subscribeWithSelector as hp}from"zustand/middleware";import jl from"bignumber.js";var Ae=new jl(0);import{BigNumber as Hr}from"bignumber.js";var oo=i(t=>{let e=(t%60).toString().padStart(2,"0");return`${parseInt((t/60).toString()).toString().padStart(2,"0")}:${e}`},"secondsToString"),k=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Hr(t),r=1,s=1e3;for(let a=0;a<60;a++)if(new Hr(n.toFixed(a,r)).eq(n)){s=a;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,4))),r);for(let a=e||4;a<17;a++)if(n.gte(Math.pow(10,-a)))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,a))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var no=i(t=>t?.result?.swaps?.reduce((e,o)=>e+o.estimatedTimeInSeconds,0)||0,"totalArrivalTime");var $e=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),_t=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function ro(t,e=4){let o=parseFloat(t);if(isNaN(o))return t;let n=Math.pow(10,e);return(Math.round(o*n)/n).toString()}i(ro,"limitDecimalPlaces");import ig from"bignumber.js";function Ze(t){return Array.from(new Set(t))}i(Ze,"removeDuplicateFrom");function fn(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(fn,"areEqual");function Vr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Vr,"debounce");function st(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(st,"containsText");var Gr=i((t,e)=>{t=t.replace(/^#/,""),t.length===3&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]);let[o,n,r]=t.match(/.{2}/g);[o,n,r]=[parseInt(o,16)+e,parseInt(n,16)+e,parseInt(r,16)+e],o=Math.max(Math.min(255,o),0).toString(16),n=Math.max(Math.min(255,n),0).toString(16),r=Math.max(Math.min(255,r),0).toString(16);let s=(o.length<2?"0":"")+o,a=(n.length<2?"0":"")+n,l=(r.length<2?"0":"")+r;return`#${s}${a}${l}`},"colorShade"),Rr=i((t,e)=>{let o={[t]:e};for(let n=1;n<10;n++)n<5&&(o={...o,[t+n*100]:Gr(e,(5-n)*32)}),n===5&&(o={...o,[t+n*100]:e}),n>5&&(o={...o,[t+n*100]:Gr(e,-((n-5)*32))});return o},"generateRangeColors");function gn(t,e,o){return o&&t.find(n=>{let r=e?.split("--");return r?.length===1?n.symbol===r[0]&&n.address===null&&n.blockchain===o.name:n.symbol===r?.[0]&&n.address===r?.[1]&&n.blockchain===o.name})||null}i(gn,"searchParamsToToken");function Kr(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i(Kr,"getBestRouteToTokenUsdPrice");function hn(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}i(hn,"isNumberOfSwapsChanged");function yn(t,e){let o=t.result?.swaps.map(r=>r.swapperId)||[],n=e.result?.swaps.map(r=>r.swapperId)||[];return!fn(o,n)}i(yn,"isRouteSwappersUpdated");function Sn(t,e){let o=t.result?.swaps.map(r=>r.to.symbol)||[],n=e.result?.swaps.map(r=>r.to.symbol)||[];return!fn(o,n)}i(Sn,"isRouteInternalCoinsUpdated");function Xr(t,e){return hn(t,e)||yn(t,e)||Sn(t,e)}i(Xr,"isRouteChanged");function jr(t,e){if(e===null)return null;let o=e?.find(n=>n.blockchain===t.chain)?.wallets.find(n=>n.address?.toLowerCase()===t.address.toLowerCase());return o?o.requiredAssets:null}i(jr,"getRequiredBalanceOfWallet");function Yr(t){if(!t)return null;let e=(t.result?.swaps||[]).map(o=>({...o,fromAmount:k(o.fromAmount,6,6),toAmount:k(o.toAmount,6,6)}));return{...t,...t.result&&{result:{...t.result,swaps:e}}}}i(Yr,"getFormattedBestRoute");function gt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(gt,"getPriceImpactLevel");import{PendingSwapNetworkStatus as So}from"@rango-dev/queue-manager-rango-preset";import Te from"bignumber.js";function Qr(t){return t.result?.swaps.map(e=>({swapper:{displayName:e.swapperId,image:e.swapperLogo},from:{token:{displayName:e.from.symbol,image:e.from.logo},chain:{displayName:e.from.blockchain,image:e.from.blockchainLogo},price:{value:k(e.fromAmount,6,6),usdValue:k(e.from.usdPrice?.toString(),4,4)}},to:{token:{displayName:e.to.symbol,image:e.to.logo},chain:{displayName:e.to.blockchain,image:e.to.blockchainLogo},price:{value:k(e.toAmount,6,6),usdValue:k(e.to.usdPrice?.toString(),4,4)}}}))}i(Qr,"formatBestRoute");function so(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain,s=e[e.length-1];n!=s&&e.push(n),s=e[e.length-1],r!=s&&e.push(r)}),e}i(so,"getRequiredWallets");function ao(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(ao,"isValidAddress");import{i18n as Se}from"@lingui/core";var Ot=(r=>(r[r.ROUTE_UPDATED=0]="ROUTE_UPDATED",r[r.ROUTE_SWAPPERS_UPDATED=1]="ROUTE_SWAPPERS_UPDATED",r[r.ROUTE_COINS_UPDATED=2]="ROUTE_COINS_UPDATED",r[r.ROUTE_AND_OUTPUT_AMOUNT_UPDATED=3]="ROUTE_AND_OUTPUT_AMOUNT_UPDATED",r))(Ot||{});var z={genericServerError:Se.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Se.t("Please reset your liquidity sources."),description:Se.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources")},noRoutesError:{title:Se.t("No Routes Found"),description:"Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination."},bridgeLimitErrors:{increaseAmount:Se.t("Bridge Limit Error: Please increase your amount"),decreaseAmount:Se.t("Bridge Limit Error: Please decrease your amount")},highValueLossError:{impactTitle:Se.t("High Price Impact"),title:Se.t("Price impact is too high!"),description:Se.t("The price impact is significantly higher than the allowed amount. If you are sure, continue, otherwise, change the swap."),confirmMessage:Se.t("Confirm High price impact")},routeUpdatedWithHighValueLoss:{title:Se.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Se.t("USD Price Unknown"),title:Se.t("USD Price Unknown, Cannot calculate Price Impact."),description:Se.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Se.t("Confirm USD Price Unknown")}};function lo(t){switch(t.type){case 0:return t.diagnosisMessage??z.noRoutesError.title;case 2:return z.genericServerError;case 1:return z.routeUpdatedWithHighValueLoss.title;default:return""}}i(lo,"getConfirmSwapErrorMessage");import{i18n as po}from"@lingui/core";var at={connectWallet:po.t("Connect Wallet"),swap:po.t("Swap"),swapAnyway:po.t("Swap anyway"),ethRouteWarning:po.t("The route goes through Ethereum. Continue?")};import{create as up}from"zustand";import{RangoClient as Jl}from"rango-sdk";var Ql="c6381a79-2817-4602-83bf-6a641a409e32",Cn={API_KEY:Ql};function uo(t){return Cn[t]}i(uo,"getConfig");function Zr(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Cn=e,Cn}i(Zr,"initConfig");var ei=20,ti=25;var co,ht=i(()=>co||(co=new Jl(uo("API_KEY")),co),"httpService");import{WalletState as ze}from"@rango-dev/ui";import{readAccountAddress as ep}from"@rango-dev/wallets-react";import{detectInstallLink as tp,getCosmosExperimentalChainInfo as op,isEvmAddress as np,KEPLR_COMPATIBLE_WALLETS as Ug,Networks as ni}from"@rango-dev/wallets-shared";import Tn from"bignumber.js";import{isCosmosBlockchain as rp}from"rango-types";import{WalletTypes as Zl}from"@rango-dev/wallets-shared";var oi=[Zl.LEAP];function ip(t){switch(!0){case t.connected:return ze.CONNECTED;case t.connecting:return ze.CONNECTING;case!t.installed:return ze.NOT_INSTALLED;default:return ze.DISCONNECTED}}i(ip,"mapStatusToWalletState");function ri(t,e,o,n){return o.filter(r=>!oi.includes(r)).filter(r=>{if(n){let{supportedChains:s}=e(r);return!!s.find(a=>a.name===n)}return!0}).map(r=>{let{name:s,img:a,installLink:l}=e(r),p=ip(t(r));return{title:s,image:a,link:tp(l),state:p,type:r}})}i(ri,"mapWalletTypesToWalletInfo");function mo(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(mo,"walletAndSupportedChainsNames");function ii(t,e,o,n){let r=[];function s(l,p){if(!!!r.find(c=>c.chain===l)){let c={address:p,chain:l,walletType:t};r.push(c)}}i(s,"addAccount");let a=n||[];return e.forEach(l=>{let{address:p,network:u}=ep(l),c=a.length>0,d=a.includes(u),m=u===ni.Unknown;if(c&&!d&&!m)return;let g=u===ni.Unknown&&np(p);if(m&&!g)return;o.includes(u)||g?a.filter(b=>o.includes(b)).forEach(b=>{s(b,p.toLowerCase())}):s(u,p)}),r}i(ii,"prepareAccountsForWalletStore");function si(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain;e.includes(n)||e.push(n),e.includes(r)||e.push(r),o.internalSwaps&&Array.isArray(o.internalSwaps)&&o.internalSwaps.forEach(s=>{let a=s.from.blockchain,l=s.to.blockchain;e.includes(a)||e.push(a),e.includes(l)||e.push(l)})}),e}i(si,"getRequiredChains");function yt(t,e,o,n){if(t.length===0)return null;let r=t.filter(s=>s.chain===e);return r.length===0?null:r.map(s=>s.balances?.find(a=>n!==null&&a.address===n||n===null&&a.address===n&&a.symbol===o)||null).filter(s=>s!==null).sort((s,a)=>parseFloat(a?.amount||"0")-parseFloat(s?.amount||"1")).find(()=>!0)||null}i(yt,"getBalanceFromWallet");function fo(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(fo,"isAccountAndWalletMatched");function ai(t,e){let{blockChain:o,balances:n=[]}=t;return n?.map(r=>({chain:o,symbol:r.asset.symbol,ticker:r.asset.symbol,address:r.asset.address||null,rawAmount:r.amount.amount,decimal:r.amount.decimals,amount:new Tn(r.amount.amount).shiftedBy(-r.amount.decimals).toFixed(),logo:"",usdPrice:go(o,r.asset.symbol,r.asset.address,e)||null}))||[]}i(ai,"makeBalanceFor");function li(t){return{...t,loading:!1,error:!0}}i(li,"resetConnectedWalletState");var St=i(t=>!t.some(o=>o.balance)?t.filter(o=>!o.address).concat(t.filter(o=>o.address&&!o.isSecondaryCoin),t.filter(o=>o.isSecondaryCoin)):t.filter(o=>!!o.balance).sort((o,n)=>parseFloat(n.balance?.usdValue||"0")-parseFloat(o.balance?.usdValue||"0")).concat(t.filter(o=>!o.balance&&!o.isSecondaryCoin),t.filter(o=>!o.balance&&o.isSecondaryCoin)),"sortTokens"),go=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice"),ho=i((t,e)=>{let o=op(Object.entries(t).map(([,n])=>n).filter(rp));return o&&o[e]?.experimental},"isExperimentalChain");function Ct(t,e){return t.map(({balance:o,...n})=>{let r=k(new Tn(yt(e,n.blockchain,n.symbol,n.address)?.amount||Ae)),s="";return n.usdPrice&&(s=k(new Tn(yt(e,n.blockchain,n.symbol,n.address)?.amount||Ae).multipliedBy(n.usdPrice))),{...n,...r!=="0"&&{balance:{amount:r,usdValue:s}}}})}i(Ct,"getTokensWithBalance");function Ft(t,e,o,n){if(t?.name===n[0]?.name)return n;let s=e.filter(a=>a.blockchain===t?.name);return St(Ct(s,o))}i(Ft,"getSortedTokens");function Me(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}i(Me,"tokensAreEqual");function kn(t,e){let o,n=t[0],r=t[1];return t.length===1?o=n:Me(n,e)?o=r:o=n,o}i(kn,"getDefaultToken");function pi(t){return t.sort((e,o)=>+(o.state===ze.CONNECTED)-+(e.state===ze.CONNECTED)||+(o.state===ze.DISCONNECTED||o.state===ze.CONNECTING)-+(e.state===ze.DISCONNECTED||e.state===ze.CONNECTING))}i(pi,"sortWalletsBasedOnConnectionState");function yo(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(yo,"getConciseAddress");function ui({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(ui,"getAddress");var sp=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),be=sp;import{create as ap}from"zustand";import{subscribeWithSelector as lp}from"zustand/middleware";import{shallow as pp}from"zustand/shallow";var D=be(ap()(lp((t,e)=>({connectedWallets:[],customDestination:"",loading:!1,connectWallet:o=>{let n=e().getWalletsDetails;t(r=>({loading:!0,connectedWallets:r.connectedWallets.filter(s=>s.walletType!==o[0].walletType).concat(o.map(s=>{let a=!r.connectedWallets.find(l=>l.chain===s.chain&&l.selected);return{balances:[],address:s.address,chain:s.chain,explorerUrl:null,walletType:s.walletType,selected:a,loading:!0,error:!1}}))})),n(o)},disconnectWallet:o=>{t(n=>{let r=n.connectedWallets.filter(s=>s.selected&&s.walletType!==o).map(s=>s.chain);return{connectedWallets:n.connectedWallets.filter(s=>s.walletType!==o).map(s=>r.includes(s.chain)?s:(r.push(s.chain),{...s,selected:!0}))}})},selectWallets:o=>t(n=>({connectedWallets:n.connectedWallets.map(r=>{let s=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),a=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return s?{...r,selected:!1}:a?{...r,selected:!0}:r})})),clearConnectedWallet:()=>t(()=>({connectedWallets:[],selectedWallets:[]})),getWalletsDetails:async(o,n=!0)=>{let r=e().getWalletsDetails,{tokens:s}=T.getState().meta;t(a=>({loading:!0,connectedWallets:a.connectedWallets.map(l=>o.find(p=>fo(p,l))?{...l,loading:!0}:l)}));try{let a=o.map(({address:u,chain:c})=>({address:u,blockchain:c})),p=(await ht().getWalletsDetails(a)).wallets;if(p)t(u=>({loading:!1,connectedWallets:u.connectedWallets.map(c=>{let d=o.find(f=>fo(f,c)),m=p.find(f=>f.address===c.address&&f.blockChain===c.chain);return m?.failed&&d&&n&&r([d],!1),d&&m?{...c,explorerUrl:m.explorerUrl,balances:ai(m,s)}:c})}));else throw new Error("Wallet not found")}catch{t(l=>({loading:!1,connectedWallets:l.connectedWallets.map(p=>o.find(u=>fo(u,p))?li(p):p)}))}}}))));D.subscribe(t=>t.connectedWallets,t=>{B.setState(({sourceTokens:e,destinationTokens:o})=>{let n=Ct(e,t),r=Ct(o,t);return{sourceTokens:St(n),destinationTokens:St(r)}})},{equalityFn:pp});var T=be(up()(t=>({meta:{blockchains:[],popularTokens:[],swappers:[],tokens:[]},loadingStatus:"loading",setTokensWithBalance:()=>{let e=D.getState().connectedWallets;t(o=>({...o,meta:{...o.meta,tokens:St(Ct(o.meta.tokens,e))}}))},fetchMeta:async()=>{try{let e=await ht().getAllMetadata(),o=Ze(e.tokens.map(r=>r.blockchain)),n=e.blockchains.filter(r=>r.enabled&&o.includes(r.name));e.blockchains=n.sort((r,s)=>r.sort-s.sort),t({meta:e,loadingStatus:"success"})}catch{t({loadingStatus:"failed"})}}})));function ko(t,e){return!t||!e||t.lte(Ae)||e.lte(Ae)?0:e.div(t).minus(1).multipliedBy(100)}i(ko,"getOutputRatio");function wo(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new Te(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new Te(1e3)))??!1}i(wo,"outputRatioHasWarning");function vo(t){return(t?.result?.swaps||[]).filter(e=>{let o=e.fromAmountMinValue?new Te(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Te(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(vo,"hasLimitError");function xo(t){if(!t)return{swap:null,fromAmountRangeError:"",recommendation:""};let e=(t?.result?.swaps||[]).filter(l=>{let p=l.fromAmountMinValue?new Te(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new Te(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?p?.gte(l.fromAmount)||u?.lte(l.fromAmount):p?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0];if(!e)return{swap:null,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new Te(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Te(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",s="",a="";return!r&&o&&o.gt(e.fromAmount)?(s=`Required: >= ${k(o,6,6)} ${e.from.symbol}`,a=z.bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(s=`Required: > ${k(o,6,6)} ${e.from.symbol}`,a=z.bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(s=`Required: <= ${k(n,6,6)} ${e.from.symbol}`,a=z.bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(s=`Required: < ${k(n,6,6)} ${e.from.symbol}`,a=z.bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:s,recommendation:a}}i(xo,"LimitErrorMessage");function ci(t,e,o,n,r,s,a,l,p){return t!=="success"?{title:at.connectWallet,state:"waitForConnecting",disabled:!0}:e.length==0?{title:at.connectWallet,state:"waitForConnecting",disabled:!1}:o||!n||!n.result||r||!p||p==="0"?{title:at.swap,disabled:!0,state:"swap"}:s||a?{title:at.swapAnyway,disabled:!1,hasWarning:!0,state:"needToConfirm"}:l?{title:at.ethRouteWarning,disabled:!1,hasWarning:!0,state:"warning"}:{title:at.swap,disabled:!1,state:"swap"}}i(ci,"getSwapButtonState");function wn(t,e,o){return!((!o||o.lte(Ae))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}i(wn,"canComputePriceImpact");function mp(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain,s=e[e.length-1];n!=s&&e.push(n),s=e[e.length-1],r!=s&&e.push(r)}),e}i(mp,"requiredWallets");var dp=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice");function fp(t,e){let o=Ae;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let s=dp(r.asset.blockchain,r.asset.symbol,r.asset.address,e);o=o.plus(new Te(r.amount).multipliedBy(s||0))}return o}i(fp,"getUsdFeeOfStep");function Eo(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus(fp(n,e)),Ae)||null}i(Eo,"getTotalFeeInUsd");function mi(t){return t.result?.swaps.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}i(mi,"getMinRequiredSlippage");function di(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(di,"hasProperSlippage");function Ao(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:s,disabledLiquiditySources:a,slippage:l,affiliateRef:p,affiliatePercent:u,affiliateWallets:c,initialRoute:d,destination:m}=t,f=s?.reduce((S,A)=>(S[A.chain]=A.address,S),{}),g=[];r?.forEach(S=>{let A=g.find(E=>E.blockchain===S.chain);A?A.addresses.push(S.address):g.push({blockchain:S.chain,addresses:[S.address]})});let h=!!d,w=Ze((d?.result?.swaps||[]).reduce((S,A)=>(S.push(A.from.blockchain,A.to.blockchain),A.internalSwaps&&Array.isArray(A.internalSwaps)&&A.internalSwaps.map(E=>{S.push(E.from.blockchain,E.to.blockchain)}),S),[]));return{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:u??void 0,affiliateWallets:c??void 0,checkPrerequisites:h,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:g,selectedWallets:f??{},slippage:l.toString(),...m&&{destination:m},...a.length>0&&{swapperGroups:a,swappersGroupsExclude:!0},...h&&{blockchains:w}}}i(Ao,"createBestRouteRequestBody");function fi(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(fi,"getWalletsForNewSwap");function Tt(t){return t?.result?.outputAmount||null}i(Tt,"getRouteOutputAmount");function Re(t,e){return!t||!e?null:new Te(e).div(new Te(t)).minus(1).multipliedBy(100)}i(Re,"getPercentageChange");function gi(t,e){let o=Tt(t),n=Tt(e);if(!o||!n)return!1;let r=Re(o,n);return r?r.toNumber()<=-1:!0}i(gi,"isOutputAmountChangedALot");function hi(t,e){let o=t.validationStatus,n=si(t);return e.sort((s,a)=>n.indexOf(s.chain)-n.indexOf(a.chain)).flatMap(s=>jr(s,o)||[]).filter(s=>!s.ok).map(s=>{let a=s.asset.symbol,l=k(new Te(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=k(new Te(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=" for network fee"),s.reason==="INPUT_ASSET"&&(u=" for swap"),s.reason==="FEE_AND_INPUT_ASSET"&&(u=" for input and network fee"),`Needs \u2248 ${p} ${a}${u}, but you have ${l} ${a} in your ${s.asset.blockchain} wallet.`})}i(hi,"getBalanceWarnings");function yi(t,e){return(t?new Te(t):Ae).multipliedBy(e||0)}i(yi,"calcOutputUsdValue");function Ut(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==So.NetworkChanged}i(Ut,"isNetworkStatusInWarningState");function Si(t,e){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),Ut(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case So.WaitingForConnectingWallet:n=n||"Waiting for connecting wallet";break;case So.WaitingForQueue:n=n||"Waiting for other running tasks to be finished";break;case So.WaitingForNetworkChange:n=n||"Waiting for changing wallet network";break;default:n=n||"";break}r=r||"",n=n||"";let a=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:r,long:a}}}i(Si,"getSwapMessages");function Ci(t){let e=null;if(t.status==="failed"){let o=t.steps.slice().reverse().filter(n=>n.status==="success")[0];o&&(e={blockchain:o.toBlockchain,symbol:o.toSymbol,outputAmount:o.outputAmount,address:o.toSymbolAddress})}return e}i(Ci,"getLastConvertedTokenInFailedSwap");function Ti(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}i(Ti,"shouldRetrySwap");function ki(t,e,o,n,r,s){return t||!e&&!mp(n).every(a=>r.map(l=>l.chain).includes(a))||!!e&&!o||!!e&&!!o&&s&&!ao(s,o)}i(ki,"confirmSwapDisabled");var $t=i((t,e)=>t?.usdPrice?new ot(e||Ae).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),B=be(gp()(hp(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new ot(0),outputUsdValue:new ot(0),toBlockchain:null,toToken:null,bestRoute:null,routeWalletsConfirmed:!1,sourceTokens:[],destinationTokens:[],selectedWallets:[],customDestination:"",setRoute:e=>t(o=>{let n=null,r=Ae;return _t(o.inputAmount)?(e&&(n=e.result?.outputAmount?new ot(e.result?.outputAmount):null,r=yi(e.result?.outputAmount,Kr(e)||o.toToken?.usdPrice)),{bestRoute:e,...!!e&&{outputAmount:n,outputUsdValue:r}}):{}}),resetRoute:()=>t(()=>({bestRoute:null,outputAmount:null,outputUsdValue:new ot(0)})),setFromBlockchain:(e,o)=>{t(n=>{if(n.fromBlockchain?.name===e?.name)return{};let r=T.getState().meta.tokens,s=D.getState().connectedWallets,a=Ft(e,r,s,n.destinationTokens),l=kn(a,n.toToken);return{fromBlockchain:e,sourceTokens:a,...o&&{fromToken:l},...!!n.inputAmount&&{inputUsdValue:$t(l,n.inputAmount)}}})},setFromToken:e=>t(o=>({fromToken:e,...!!o.inputAmount&&{inputUsdValue:$t(e,o.inputAmount)}})),setToBlockchain:(e,o)=>{t(n=>{if(n.toBlockchain?.name===e?.name)return{};let r=T.getState().meta.tokens,s=D.getState().connectedWallets,a=Ft(e,r,s,n.destinationTokens);return{toBlockchain:e,destinationTokens:a,...o&&{toToken:kn(a,n.fromToken)}}})},setToToken:e=>t(()=>({toToken:e})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new ot(0),outputUsdValue:new ot(0),bestRoute:null},...!!o.fromToken&&{inputUsdValue:$t(o.fromToken,e)}}))},retry:e=>{let{tokens:o,blockchains:n}=T.getState().meta,r=D.getState().connectedWallets,s=e.status==="failed"?e.steps.findIndex(h=>h.status==="failed"):null;if(s===null||s<0)return;let a=e.steps[0],l=e.steps[e.steps.length-1],p=n.find(h=>h.name===a.fromBlockchain)||null,u=n.find(h=>h.name===l.toBlockchain)||null,c=o.find(h=>Me(h,{blockchain:a.fromBlockchain,symbol:a.fromSymbol,address:a.fromSymbolAddress})),d=o.find(h=>Me(h,{blockchain:l.toBlockchain,symbol:l.toSymbol,address:l.toSymbolAddress})),m=Ft(p,o,r,[]),f=Ft(u,o,r,[]),g=e.inputAmount;t({fromBlockchain:p,fromToken:c,inputAmount:g,outputAmount:null,inputUsdValue:$t(c||null,g),outputUsdValue:new ot(0),toBlockchain:u,toToken:d,bestRoute:null,sourceTokens:m,destinationTokens:f})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,sourceTokens:e.destinationTokens,destinationTokens:e.sourceTokens,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:$t(e.toToken,e.outputAmount?.toString()||"")})),resetFromBlockchain:()=>t(()=>({fromBlockchain:null,sourceTokens:[]})),resetToBlockchain:()=>t(()=>({toBlockchain:null,destinationTokens:[]})),setRouteWalletConfirmed:e=>t({routeWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetRouteWallets:()=>t({routeWalletsConfirmed:!1,selectedWallets:[],customDestination:""})}))));import{create as yp}from"zustand";var ke=be(yp()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function wi(){let t=xn(!0),[e,o]=kp(),n=Tp(),r=xn(n.search),s=xn({}),a=B.use.fromBlockchain(),l=B.use.toBlockchain(),p=B.use.fromToken(),u=B.use.toToken(),c=B.use.setFromBlockchain(),d=B.use.setFromToken(),m=B.use.setToBlockchain(),f=B.use.setToToken(),g=B.use.inputAmount(),h=B.use.setInputAmount(),w=T.use.loadingStatus(),{blockchains:b,tokens:S}=T.use.meta(),A=ke.use.setSelectedSwap();return vn(()=>{let E={};Cp(r.current).forEach((P,W)=>{E[W]=P}),s.current=E;let v=n.pathname.split(y.swaps+"/")[1]||null;v&&A(v)},[]),vn(()=>{if(!t.current){let E="",v="",P="",W="",I="";if(w!=="success")E=s.current["fromBlockchain"],v=s.current["fromToken"],P=s.current["toBlockchain"],W=s.current["toToken"],I=s.current["fromAmount"]||g;else{if(n.state==="redirect")return;E=a?.name||"",v=(p?.symbol||"")+(p?.address?`--${p?.address}`:""),P=l?.name||"",W=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),I=g}o({...E&&{["fromBlockchain"]:E},...v&&{["fromToken"]:v},...P&&{["toBlockchain"]:P},...W&&{["toToken"]:W},...I&&{["fromAmount"]:I.toString()}},{replace:!0})}t.current=!1},[n.pathname,g,a,p,l,u]),vn(()=>{if(w==="success"){let E=e.get("fromBlockchain"),v=e.get("fromToken"),P=e.get("toBlockchain"),W=e.get("toToken"),I=e.get("fromAmount"),G=b.find(O=>O.name===E),ne=gn(S,v,G||null),C=b.find(O=>O.name===P),_=gn(S,W,C||null);G&&(c(G),ne&&d(ne)),C&&(m(C),_&&f(_)),I&&h(I)}},[w]),null}i(wi,"UpdateUrl");import{useWallets as Ap}from"@rango-dev/wallets-react";import{isEvmBlockchain as bp}from"rango-types";function vi({children:t,...e}){let o=xp(),n=o?wp:vp,{blockchains:r}=T.use.meta(),{canSwitchNetworkTo:s}=Ap(),a=r.filter(bp);return Ep({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:a,canSwitchNetworkTo:s}),bo.createElement(bo.Fragment,null,bo.createElement(n,null,t),o&&bo.createElement(wi,null))}i(vi,"AppRouter");import xe from"react";import{useRoutes as hf}from"react-router-dom";import{i18n as $n}from"@lingui/core";import{useManager as cc}from"@rango-dev/queue-manager-react";import{Alert as zn,BestRoute as mc,BestRouteSkeleton as dc,Button as qo,Divider as Et,IconButton as Ps,MessageBox as fc,Modal as gc,RefreshIcon as hc,SettingsIcon as yc,styled as Ds,Tooltip as Sc,Typography as Ls,WalletIcon as Cc}from"@rango-dev/ui";import N,{useEffect as Gt,useState as Ho}from"react";import{flushSync as Tc}from"react-dom";import{useNavigate as kc}from"react-router-dom";import{Alert as Fn,BalanceErrors as Hu,Button as Ss,ChevronDownIcon as Gu,ChevronLeftIcon as Vu,Divider as xt,MessageBox as Ru,Modal as Cs,Typography as $o,WalletIcon as Ku}from"@rango-dev/ui";import x,{useEffect as Xu,useState as ut}from"react";import{i18n as Bo}from"@lingui/core";function Wo(t){switch(t.type){case 0:return Bo.t("Route has been updated.");case 3:return Bo.t("Output amount changed to {newOutputAmount} ({percentageChange}% change).",{newOutputAmount:t.newOutputAmount,percentageChange:t.percentageChange});case 1:return Bo.t("Route swappers has been updated.");case 2:return Bo.t("Route internal coins has been updated.");default:return""}}i(Wo,"getRouteWarningMessage");import*as kt from"@radix-ui/react-collapsible";import{Button as Bp,IconButton as Wp,keyframes as xi,styled as Ce,TextField as Ip}from"@rango-dev/ui";var Np=xi({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Mp=xi({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),Ei=Ce("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Ai=Ce("div",{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline"}),bi=Ce("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",backgroundColor:"$neutral100",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{backgroundColor:"$surface600",opacity:"0.8"},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Bi=Ce(kt.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent"}),Wi=Ce("div",{padding:"$20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ii=Ce(Wp,{position:"absolute",left:"$20"}),Ni=Ce("div",{paddingTop:"$20","& .wallets-list":{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline"}}),Mi=Ce(kt.Root,{backgroundColor:"$neutral200",borderRadius:"$sm",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Li=Ce(Bp,{width:"100%",borderRadius:"$sm !important",padding:"$15 !important",justifyContent:"space-between",alignItems:"center",backgroundColor:"$neutral100 !important"}),Pi=Ce("div",{padding:"$10 $0","& .button__content":{display:"flex",justifyContent:"center",alignItems:"center"},"& .alarms":{paddingTop:"5px"}}),Di=Ce("div",{transition:"all 300ms ease",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),_i=Ce("div",{display:"flex"}),Oi=Ce(Ip,{padding:"$0 $15 $15 $15"}),Fi=Ce(kt.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Np} 300ms ease-out`},false:{animation:`${Mp} 300ms ease-out`}}}}),Ui=Ce("div",{overflow:"visible",width:"100%"});import{Button as $u,Divider as Dn,Image as zu,MessageBox as _n,Modal as ds,SelectableWallet as qu,Typography as fs,WalletState as gs}from"@rango-dev/ui";import oe,{useEffect as hs,useState as qt}from"react";import{WalletState as zi}from"@rango-dev/ui";import{useWallets as Pp}from"@rango-dev/wallets-react";import{KEPLR_COMPATIBLE_WALLETS as Dp,WalletTypes as _p}from"@rango-dev/wallets-shared";import{useEffect as Op,useState as Fp}from"react";import{allProviders as Lp}from"@rango-dev/provider-all";function Io(t,e){let o=Lp({walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||""}});if(t){let n=[];return t.forEach(r=>{if(typeof r=="string"){let s=o.find(a=>a.config.type===r);s?n.push(s):console.warn(`Couldn't find ${r} provider. Please make sure you are passing the correct name.`)}else n.push(r)}),n}return o}i(Io,"matchAndGenerateProviders");function $i(t,e){return Io(t,e).map(r=>r.config.type)}i($i,"configWalletsToWalletName");var Up=Object.values(_p);function No(t){let{config:e,chain:o,onBeforeConnect:n,onConnect:r}=t,{state:s,disconnect:a,getWalletInfo:l,connect:p}=Pp(),{connectedWallets:u}=D(),{blockchains:c}=T().meta,d=typeof e?.multiWallets>"u"?!0:e.multiWallets,m=$i(e?.wallets,{walletConnectProjectId:e?.walletConnectProjectId})||Up,f=ri(s,l,m,o),g=pi(f),[h,w]=Fp(""),b=i(v=>!u.find(P=>P.walletType===v&&P.chain===o),"isExperimentalChainNotAdded"),S=i(async v=>{let P=s(v);try{if(h&&w(""),P.connected)await a(v);else{let W=!!f.find(I=>I.state===zi.CONNECTED);if(!d&&W)return;n?.(v),await p(v),r?.(v)}}catch(W){w("Error: "+W?.message)}},"handleClick"),A=i(()=>{let v=f?.filter(P=>P.state===zi.CONNECTING)||[];for(let P of v)a(P.type)},"disconnectConnectingWallets");Op(()=>()=>{A()},[]);let E=i((v,P,W)=>ho(W,P)&&b(v)&&!Dp.includes(v),"shouldExcludeWallet");return{list:g.filter(v=>!E(v.type,o??"",c)),error:h,handleClick:S}}i(No,"useWalletList");import{i18n as ss}from"@lingui/core";import{styled as as,Typography as Iu,Wallet as Nu,WalletState as Mu}from"@rango-dev/ui";import pt,{Fragment as Lu,useState as Pu}from"react";import{BottomLogo as du,Divider as fu,Header as gu,theme as hu,usePaddingRight as yu}from"@rango-dev/ui";import me,{useRef as Su}from"react";import{useNavigate as Cu}from"react-router-dom";import{ChevronLeftIcon as qp}from"@rango-dev/ui";import Gi from"react";import{Button as $p,darkTheme as zp,styled as Mo}from"@rango-dev/ui";var Le=Mo($p,{width:"$24",position:"relative",padding:"0",overflow:"unset"}),qi=Mo("div",{position:"absolute",background:"$secondary500",[`.${zp} &`]:{$$color:"$colors$secondary400"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),wt=Mo("div",{display:"flex",justifyContent:"flex-end",width:"$40"}),Hi=Mo("div",{position:"absolute",backgroundColor:"$secondary500",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0"});function En(t){return Gi.createElement(Le,{variant:"ghost",size:"small",onClick:t.onClick},Gi.createElement(qp,{color:"black",size:16}))}i(En,"BackButton");import{i18n as Hp}from"@lingui/core";import{Button as Gp,Typography as Vp}from"@rango-dev/ui";import An from"react";function bn(t){return An.createElement(wt,null,An.createElement(Gp,{variant:"ghost",onClick:t.onClick,size:"xsmall"},An.createElement(Vp,{variant:"label",size:"medium",color:"error500"},Hp.t("Cancel"))))}i(bn,"CancelButton");import{i18n as Rp}from"@lingui/core";import{Tooltip as Kp,WalletIcon as Xp}from"@rango-dev/ui";import Lo from"react";function Bn(t){return Lo.createElement(Kp,{side:"top",content:Rp.t("Connect Wallet")},Lo.createElement(Le,{variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&Lo.createElement(qi,null),Lo.createElement(Xp,{size:18,color:"black"})))}i(Bn,"WalletButton");import{i18n as _o}from"@lingui/core";import{NotificationsIcon as lu,Popover as pu,RefreshIcon as uu,SettingsIcon as cu,Tooltip as Oo,TransactionIcon as mu}from"@rango-dev/ui";import le from"react";import{ChainToken as Yi,ChevronRightIcon as ou,ListItemButton as nu,Typography as ru}from"@rango-dev/ui";import Pe from"react";import{useNavigate as iu}from"react-router-dom";import{create as jp}from"zustand";import{persist as Yp,subscribeWithSelector as Qp}from"zustand/middleware";var Be=be(jp()(Yp(Qp((t,e)=>({notifications:[],setNotification:(o,n)=>{let r=n.steps[0],s=n.steps[n.steps.length-1],a={event:o,creationTime:Date.now(),read:!1,requestId:n.requestId,route:{from:{blockchain:r.fromBlockchain,tokenAddress:r.fromSymbolAddress,tokenSymbol:r.fromSymbol},to:{blockchain:s.toBlockchain,tokenSymbol:s.toSymbol,tokenAddress:s.toSymbolAddress}}},l=e().notifications.filter(p=>p.requestId!==n.requestId);t(()=>({notifications:[...l,a]}))},setAsRead:o=>{t(n=>({notifications:n.notifications.map(r=>r.requestId===o?{...r,read:!0}:r)}))},getUnreadNotifications:()=>e().notifications.filter(o=>!o.read)})),{name:"notification",skipHydration:!0})));import{styled as Po}from"@rango-dev/ui";var Vi=Po("div",{padding:"$10",width:"350px",minHeight:"150px"}),Ri=Po("ul",{padding:0,margin:0,listStyle:"none",".to-chain-token":{transform:"translateX(-3px)"}}),Ki=Po("div",{display:"flex",padding:0,alignItems:"center",alignSelf:"stretch"}),Xi=Po("div",{display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",padding:"$10",width:"100%",height:"150px"});import{i18n as Jp}from"@lingui/core";import{Divider as Zp,NoNotificationIcon as eu,Typography as tu}from"@rango-dev/ui";import Do from"react";function ji(){return Do.createElement(Xi,null,Do.createElement(eu,{color:"secondary",size:26}),Do.createElement(Zp,{size:12}),Do.createElement(tu,{variant:"body",size:"medium",color:"neutral900"},Jp.t("You have no notification")))}i(ji,"NotificationNotFound");var su=4;function Wn(){let t=iu(),e=ke.use.setSelectedSwap(),{getUnreadNotifications:o}=Be(),n=o(),{tokens:r,blockchains:s}=T.use.meta(),a=n.sort((p,u)=>u.creationTime-p.creationTime).slice(0,su),l=i(p=>{e(p),t(`/swaps/${p}`)},"handleOnClick");return Pe.createElement(Vi,null,a.length?Pe.createElement(Ri,null,a.map(p=>{let u=r.find(f=>f.address===p.route.from.tokenAddress&&f.blockchain===p.route.from.blockchain&&f.symbol===p.route.from.tokenSymbol),c=s.find(f=>f.name===p.route.from.blockchain),d=r.find(f=>f.address===p.route.to.tokenAddress&&f.blockchain===p.route.to.blockchain&&f.symbol===p.route.to.tokenSymbol),m=s.find(f=>f.name===p.route.to.blockchain);return Pe.createElement(nu,{key:p.requestId,onClick:()=>l(p.requestId),title:Pe.createElement(ru,{variant:"body",size:"small",color:"$neutral900"},p.event.message),id:p.requestId,start:Pe.createElement(Ki,null,Pe.createElement("div",{className:"from-chain-token"},Pe.createElement(Yi,{tokenImage:u?u.image:"",chainImage:c?c.logo:"",size:"small"})),Pe.createElement("div",{className:"to-chain-token"},Pe.createElement(Yi,{tokenImage:d?d.image:"",chainImage:m?m.logo:"",size:"small"}))),end:Pe.createElement(ou,{size:12,color:"gray"})})})):Pe.createElement(ji,null))}i(Wn,"NotificationContent");import{Typography as au}from"@rango-dev/ui";import Qi from"react";function Ji(){let{getUnreadNotifications:t}=Be(),e=t().length;return e?Qi.createElement(Hi,null,Qi.createElement(au,{variant:"body",size:"xsmall",color:"$background"},e)):null}i(Ji,"UnreadNotificationsBadge");function In(t){let{layoutRef:e,onClickRefresh:o,onClickHistory:n,onClickSettings:r,onClickNotifications:s}=t;return le.createElement(le.Fragment,null,le.createElement(Oo,{side:"top",content:_o.t("Refresh")},le.createElement(Le,{variant:"ghost",size:"small",onClick:o,disabled:!o},le.createElement(uu,{size:16,color:o?"black":"gray"}))),le.createElement(Oo,{side:"top",content:_o.t("Notifications")},le.createElement(pu,{align:"center",collisionBoundary:e,collisionPadding:{right:20,left:20},container:document.getElementById("swap-box"),content:le.createElement(Wn,null)},le.createElement(Le,{size:"small",variant:"ghost",onClick:s},le.createElement(lu,{size:18,color:"black"}),le.createElement(Ji,null)))),le.createElement(Oo,{side:"top",content:_o.t("Settings")},le.createElement(Le,{size:"small",variant:"ghost",onClick:r},le.createElement(cu,{size:18,color:"black"}))),le.createElement(Oo,{side:"top",content:_o.t("Transactions History")},le.createElement(Le,{size:"small",variant:"ghost",onClick:n},le.createElement(mu,{size:18,color:"black"}))))}i(In,"HomeButtons");import{styled as Nn}from"@rango-dev/ui";var Zi=Nn("div",{position:"relative",display:"flex",flexDirection:"column",borderRadius:"$primary",overflow:"hidden !important",boxShadow:"15px 15px 15px 0px rgba(0, 0, 0, 0.05)",width:"95vw",maxWidth:"390px",maxHeight:"700px",variants:{fixedHeight:{true:{height:"95vh"},false:{height:"auto"}}}}),es=Nn("div",{display:"flex",flexDirection:"column",flex:1,padding:"$20 $0 $10 $20",backgroundColor:"$background",position:"relative",overflowY:"auto",overflowX:"hidden",variants:{noPadding:{true:{padding:"0"}}}}),ts=Nn("div",{backgroundColor:"$background","& .footer__content":{padding:"$0 $20"},"& .footer__logo":{padding:"$0 $20 $10 $20"}});var Tu=20;function ku(t,e){let{children:o,header:n,footer:r,noPadding:s,hasLogo:a=!0,fixedHeight:l=!0}=t,p=D.use.connectedWallets(),u=ke.use.connectWalletsButtonDisabled(),c=Cu(),d=Su(null);yu({elementRef:d,paddingRight:s?"0":hu.sizes[Tu]});let m=i(()=>{u||c("/"+y.wallets)},"onConnectWallet");return me.createElement(Zi,{ref:e,fixedHeight:l,id:"swap-box"},me.createElement(gu,{prefix:me.createElement(me.Fragment,null,n.onBack&&me.createElement(En,{onClick:n.onBack})),title:n.title,suffix:me.createElement(me.Fragment,null,n.suffix,n.hasConnectWallet&&me.createElement(Bn,{onClick:m,isConnected:!!p?.length}),n.onCancel&&me.createElement(bn,{onClick:n.onCancel}))}),me.createElement(es,{noPadding:s,ref:d},o),(a||r)&&me.createElement(ts,null,me.createElement("div",{className:"footer__content"},r),a&&me.createElement("div",{className:"footer__logo"},me.createElement(fu,{size:12}),me.createElement(du,null))))}i(ku,"LayoutComponent");var Y=me.forwardRef(ku);Y.displayName="Layout";import{Divider as Au,Modal as bu}from"@rango-dev/ui";import Ln from"react";import{i18n as vt}from"@lingui/core";import{Image as xu,MessageBox as Mn,WalletState as Eu}from"@rango-dev/ui";import lt from"react";import{keyframes as wu,styled as Fo}from"@rango-dev/ui";var QS=Fo("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),os=Fo("div",{position:"relative"}),vu=wu({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),ns=Fo("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${vu} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),rs=Fo("div",{"& img":{borderRadius:"50%"}});function is(t){let{state:e,image:o,error:n}=t;return e===Eu.CONNECTED?lt.createElement(Mn,{type:"success",title:vt.t("Wallet Connected"),description:vt.t("Your wallet is connected, you can use it to swap.")}):n?lt.createElement(Mn,{type:"error",title:vt.t("Failed to Connect"),description:n||vt.t("Your wallet is not connected. Please try again.")}):lt.createElement(Mn,{type:"loading",title:vt.t("Connecting to your wallet"),description:vt.t("Click connect in your wallet popup."),icon:lt.createElement(os,null,lt.createElement(rs,null,lt.createElement(xu,{src:o,size:45})),lt.createElement(ns,null))})}i(is,"ModalContent");function zt(t){let{open:e,onClose:o,...n}=t;return Ln.createElement(bu,{open:e,onClose:o,container:document.getElementById("swap-box")||document.body},Ln.createElement(is,{...n}),Ln.createElement(Au,{direction:"vertical",size:32}))}i(zt,"WalletModal");import{useInRouterContext as Bu,useNavigate as Wu}from"react-router-dom";function te(){let t=Bu(),e=Wu();return y,{navigateBackFrom:i(n=>{if(n===y.swapDetails)return e("/"+y.swaps,{replace:!0});!t||window.history.state&&window.history.state.idx>0?e(-1):[y.fromSwap,y.toSwap,y.settings,y.wallets,y.swaps,y.confirmSwap].includes(n)?e(y.home,{replace:!0}):n===y.fromBlockchain?e("/"+y.fromSwap,{replace:!0}):n===y.toBlockchain?e("/"+y.fromSwap,{replace:!0}):n===y.liquiditySources&&e("/"+y.settings,{replace:!0})},"navigateBackFrom")}}i(te,"useNavigateBack");var Du=as("div",{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline",paddingTop:"$15",height:"100%"}),_u=as("div",{textAlign:"center"}),Uo=3e3,Ou=300;function ls({config:t}){let{navigateBackFrom:e}=te(),[o,n]=Pu(""),r=null,{list:s,handleClick:a,error:l}=No({config:t,onBeforeConnect:m=>{r=setTimeout(()=>{n(m)},Ou)},onConnect:()=>{r&&clearTimeout(r),setTimeout(()=>{n("")},Uo)}}),p=T.use.loadingStatus(),u=s.find(m=>m.type===o),c=u?.image||"",d=u?.state||Mu.NOT_INSTALLED;return pt.createElement(Y,{header:{title:ss.t("Connect Wallets"),onBack:e.bind(null,y.wallets)}},pt.createElement(_u,null,pt.createElement(Iu,{variant:"title",size:"xmedium",align:"center"},ss.t("Choose a wallet to connect.")),pt.createElement(Du,null,s.map((m,f)=>{let g=`wallet-${f}-${m.type}`;return pt.createElement(Lu,{key:g},pt.createElement(Nu,{...m,onClick:h=>{a(h)},isLoading:p==="loading"}))}),pt.createElement(zt,{open:!!o,onClose:()=>n(""),image:c,state:d,error:l}))))}i(ls,"WalletsPage");function ps(t,e){return e.find(o=>o.name===t)?.displayName}i(ps,"getBlockchainDisplayNameFor");import{keyframes as Fu,styled as Pn}from"@rango-dev/ui";var us=Pn("div",{position:"relative"}),Uu=Fu({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),cs=Pn("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Uu} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),ms=Pn("div",{"& img":{borderRadius:"50%"}});function On(t){let{config:e,chain:o,isSelected:n,selectWallet:r,limit:s,onShowMore:a}=t,l=D.use.connectedWallets(),{blockchains:p}=T.use.meta(),[u,c]=qt(""),[d,m]=qt(null),[f,g]=qt(!1),[h,w]=qt(null),{connect:b}=ys(),{list:S,error:A,handleClick:E}=No({config:e,chain:o,onBeforeConnect:c,onConnect:()=>setTimeout(()=>c(""),Uo)}),[v,P]=qt(S),W=S.length,I=s&&W-s>0,G=i(async C=>{g(!1),w("in-progress"),await b(C.walletType,C.chain),w("completed")},"addExperimentalChain");hs(()=>{P(C=>{let _=S.findIndex(O=>n(O.type,o));return I&&_>1?[S[_]].concat(S.filter((O,se)=>se!==_)):C.map(O=>S.find(se=>se.type===O.type)??O)})},[JSON.stringify(S)]);let ne=document.querySelector("#swap-box");return hs(()=>{let C=null;return h==="completed"&&(C=setTimeout(()=>w(null),Uo)),()=>{C&&clearTimeout(C)}},[h]),oe.createElement(oe.Fragment,null,v.slice(0,s).map(C=>{let _=ui({connectedWallets:l,walletType:C.type,chain:o}),O=_?yo(_):"",se=ho(p,o),M=!l.find(Ee=>Ee.walletType===C.type&&Ee.chain===o),ae=se&&M&&C.state===gs.CONNECTED,Ie=ae?`Add ${o} chain`:O,U=i(()=>{C.state===gs.DISCONNECTED?E(C.type):ae?(m({walletType:C.type,chain:o,address:_??""}),g(!0)):r({walletType:C.type,chain:o,address:_??""})},"onClick"),K=d?.chain?ps(d.chain,p):void 0;return oe.createElement(oe.Fragment,null,u===C.type&&oe.createElement(zt,{open:u===C.type,onClose:()=>c(""),image:C.image,state:C.state,error:A}),!!d&&oe.createElement(ds,{open:!!d&&f,container:ne,onClose:()=>{m(null)}},oe.createElement(_n,{title:`Add ${K} Chain`,type:"warning",description:`You should connect a ${K} supported wallet or choose a different ${K} address`},oe.createElement(Dn,{size:18}),oe.createElement(Dn,{size:32}),oe.createElement($u,{onClick:G.bind(null,d),variant:"outlined",type:"primary",fullWidth:!0,size:"large"},"Confirm"))),h&&oe.createElement(ds,{open:!!h,onClose:w.bind(null,null),container:ne},h==="in-progress"?oe.createElement(_n,{type:"loading",title:`Add ${K} Chain`,description:`You should connect a ${K} supported wallet or choose a different ${K} address.`,icon:oe.createElement(us,null,oe.createElement(ms,null,oe.createElement(zu,{src:C.image,size:45})),oe.createElement(cs,null))}):oe.createElement(_n,{type:"success",title:`${K} Chain Added`,description:`${K} is added to your wallet, you can use it to swap.`}),oe.createElement(Dn,{direction:"vertical",size:32})),oe.createElement(qu,{key:C.type,description:Ie,onClick:U,selected:n(C.type,o),...C}))}),I&&oe.createElement(bi,{selected:!1,onClick:a.bind(null)},oe.createElement(fs,{variant:"label",size:"medium"},"Show more wallets",oe.createElement(fs,{variant:"label",size:"medium",color:"$primary"},"\xA0+",W-(s??0)))))}i(On,"WalletList");var ju=2;function Ts(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,config:s,loading:a}=t,{blockchains:l}=T.use.meta(),{bestRoute:p,setSelectedWallets:u,setRouteWalletConfirmed:c,customDestination:d,setCustomDestination:m}=B(),{connectedWallets:f,selectWallets:g}=D(),[h,w]=ut(""),[b,S]=ut([]),[A,E]=ut(""),[v,P]=ut(null),[W,I]=ut(d),[G,ne]=ut(!!d),C=so(p),_=typeof s?.customDestination>"u"?!0:s.customDestination,O=l.find(F=>F.name===p?.result?.swaps[p?.result?.swaps.length-1].to.blockchain),se=i(F=>!!p?.result?.swaps.find(X=>X.from.blockchain===F),"isWalletRequiredFor"),[M,ae]=ut(f.filter(F=>F.selected&&C.includes(F.chain))),Ie=l.find(F=>F.name===O?.name),U=i((F,X)=>!!M.find(H=>H.walletType===F&&H.chain===X&&H.selected&&(se(X)||!se(X)&&!W)),"isSelected"),K=!!W&&G&&Ie&&!ao(Ie,W),Ee=i(()=>{ne(!1),I(""),ae(F=>{let X=!1;return F.map(H=>!X&&H.chain===O?.name?(X=!0,{...H,selected:!0}):H)})},"resetCustomDestination"),ge=i(F=>{if(h&&w(""),U(F.walletType,F.chain))return;let H=f.find($=>$.walletType===F.walletType&&$.chain===F.chain);H&&(n(),F.chain===O?.name&&G&&(ne(!1),I("")),ae($=>$.filter(he=>he.chain!==F.chain).concat({...H,selected:!0})))},"onChange"),Ne=i(()=>{let F=M.filter(X=>X.selected);g(F),u(F),m(W),c(!0),o()},"onConfirmBalance"),re=i(async()=>{S([]),E(""),P(null);let F=f.filter($=>M.find(he=>he.chain===$.chain&&he.walletType===$.walletType)),X=await r?.({selectedWallets:F,customDestination:W}),H=X.warnings;H?.balance?.messages&&S(H.balance.messages),H?.route&&P(H.route),X.error&&E(lo(X.error)),!X.error&&(!H?.balance?.messages.length||0>0)?Ne():S(H?.balance?.messages??[])},"onConfirmWallets");Xu(()=>{ae(F=>F.concat(f.filter(X=>!!!F.find($=>$.chain===X.chain)&&X.selected&&C.includes(X.chain))))},[f.length]);let Je=document.querySelector("#swap-box");return x.createElement(Cs,{open:e,onClose:o,dismissible:!h,container:Je,...!h&&{footer:x.createElement(_i,null,x.createElement(Ss,{loading:a,disabled:ki(a,G,W,p,M,O),onClick:re,variant:"contained",type:"primary",fullWidth:!0,size:"large"},"Confirm"))},...h&&{containerStyle:{padding:"$0"},header:x.createElement(Wi,null,x.createElement(Ii,{variant:"ghost",onClick:w.bind(null,"")},x.createElement(Vu,{size:16})),x.createElement($o,{variant:"headline",size:"small"},`Your ${h} wallets`))},anchor:"center"},x.createElement(Cs,{open:b.length>0,onClose:S.bind(null,[]),container:Je},x.createElement(Ru,{title:"Insufficient account balance",type:"error",description:x.createElement(Hu,{messages:b??[]})},x.createElement(Ss,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:Ne},"Proceed anyway"))),h&&x.createElement(Ni,null,x.createElement("div",{className:"wallets-list"},x.createElement(On,{chain:h,isSelected:U,selectWallet:ge,multiWallets:s?.multiWallets??!0,supportedWallets:s?.wallets??[],config:s,onShowMore:w.bind(null,h)}))),!h&&x.createElement(x.Fragment,null,A&&x.createElement(x.Fragment,null,x.createElement(Fn,{variant:"alarm",type:"error",title:A}),x.createElement(xt,{size:12})),v&&x.createElement(x.Fragment,null,x.createElement(Fn,{variant:"alarm",type:"warning",title:Wo(v)}),x.createElement(xt,{size:12})),x.createElement(Ui,null,C.map((F,X)=>{let H=l.find(ye=>ye.name===F),$=`wallet-${X}`,he=X===C.length-1;return x.createElement("div",{key:$},x.createElement(Ei,null,x.createElement($o,{variant:"title",size:"xmedium"},`Your ${H?.displayName} wallets`),x.createElement($o,{variant:"label",color:"$neutral900",size:"medium"},`You need to connect a ${H?.displayName} wallet.`)),x.createElement(xt,{size:24}),x.createElement(Ai,null,x.createElement(On,{chain:F,isSelected:U,selectWallet:ge,multiWallets:s?.multiWallets??!0,supportedWallets:s?.wallets??[],config:s,limit:ju,onShowMore:()=>w(H?.name??"")})),!he&&x.createElement(xt,{size:32}),he&&_&&x.createElement(Pi,null,x.createElement(Mi,{selected:G,open:G,onOpenChange:ye=>{ye?se(O?.name??"")||ae(ee=>ee.map(ie=>ie.chain===O?.name?{...ie,selected:!1}:ie)):Ee()}},x.createElement(Bi,{onClick:()=>ne(ye=>!ye)},x.createElement(Li,{fullWidth:!0,suffix:x.createElement(Di,{orientation:G?"up":"down"},x.createElement(Gu,{size:10,color:"gray"}))},x.createElement("div",{className:"button__content"},x.createElement(Ku,{size:18,color:"info"}),x.createElement(xt,{size:4,direction:"horizontal"}),x.createElement($o,{variant:"label",size:"medium"},"Send to a different address")))),x.createElement(Fi,{open:G},x.createElement(x.Fragment,null,x.createElement(xt,{size:4}),x.createElement(Oi,{autoFocus:!0,placeholder:"Your destination address",value:W,onChange:ye=>{I(ye.target.value)}})))),K&&x.createElement("div",{className:"alarms"},x.createElement(Fn,{variant:"alarm",type:"error",title:`Address '${W}' doesn't match the blockchain address pattern.`}))))}))))}i(Ts,"ConfirmWalletsModal");import{Alert as Zu,Button as ec,Divider as Is,NoRouteIcon as tc,RefreshIcon as oc,Typography as Ns}from"@rango-dev/ui";import De from"react";import{create as Yu}from"zustand";import{persist as Qu,subscribeWithSelector as Ju}from"zustand/middleware";var ks=[.5,1,3],ws=1,vs=5,xs=100,Es=0;var q=be(Yu()(Qu(Ju(t=>({slippage:ws,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,disabledLiquiditySources:[],theme:"auto",setSlippage:e=>t(()=>({slippage:e})),setCustomSlippage:e=>t(()=>({customSlippage:e})),setAffiliateRef:e=>t(()=>({affiliateRef:e})),setAffiliatePercent:e=>t(()=>({affiliatePercent:e})),setAffiliateWallets:e=>t(()=>({affiliateWallets:e})),toggleAllLiquiditySources:e=>t(o=>{if(e)return{disabledLiquiditySources:[]};let{swappers:n}=T.getState().meta,r=Ze(n.map(s=>s.swapperGroup));return r.length===o.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:r}}),toggleInfiniteApprove:()=>t(e=>({infiniteApprove:!e.infiniteApprove})),toggleLiquiditySource:e=>t(o=>o.disabledLiquiditySources.includes(e)?{disabledLiquiditySources:o.disabledLiquiditySources.filter(n=>n!=e)}:{disabledLiquiditySources:o.disabledLiquiditySources.concat(e)}),setTheme:e=>t(()=>({theme:e}))})),{name:"user-settings",skipHydration:!0})));function As(t,e,o,n,r){return o?{alert:{type:"warning",text:z.genericServerError,action:{onClick:r,title:"Retry"}},description:""}:t?{alert:{type:"error",text:t,action:null},description:""}:e.length?{alert:{type:"warning",text:z.liquiditySourcesError.title,action:{onClick:()=>n(!0),title:"Reset"}},description:z.liquiditySourcesError.description}:{alert:null,description:z.noRoutesError.description}}i(As,"makeInfo");import{styled as Un}from"@rango-dev/ui";var bs=Un("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Bs=Un("div",{width:"100%"}),Ws=Un("div",{padding:"$6 $0"});function Ht(t){let{diagnosisMessage:e,fetch:o,error:n}=t,r=q.use.disabledLiquiditySources(),s=T.use.loadingStatus(),a=q.use.toggleAllLiquiditySources(),p=As(e??null,r,n||s==="failed",a,o);return De.createElement(bs,null,De.createElement(tc,{size:24,color:"gray"}),De.createElement(Is,{size:4}),De.createElement(Ns,{variant:"title",size:"small"},z.noRoutesError.title),!!p.description&&De.createElement(Ns,{variant:"body",size:"small",align:"center",color:"neutral900"},p.description),De.createElement(Is,{size:4}),!!p.alert&&De.createElement(Bs,null,De.createElement(Zu,{type:p.alert.type,title:p.alert.text,action:p.alert.action&&De.createElement(ec,{size:"xsmall",type:p.alert.type,prefix:De.createElement(Ws,null,De.createElement(oc,{size:8})),onClick:p.alert.action.onClick},p.alert.action.title),variant:"alarm"})))}i(Ht,"NoRoutes");import{calculatePendingSwap as sc}from"@rango-dev/queue-manager-rango-preset";import ac from"bignumber.js";import{useEffect as lc}from"react";import{useRef as nc,useState as rc}from"react";function zo(){let[t,e]=rc(!1),o=nc(null),n=i(()=>o.current?.abort(),"cancel");return{fetch:i(async s=>{n(),o.current=new AbortController,e(!0);try{let a=await ht().getBestRoute(s,{signal:o.current.signal});return o.current=null,a}catch(a){throw a}finally{e(!1)}},"fetch"),loading:t,cancelFetch:n}}i(zo,"useFetchBestRoute");function pc(t,e){if(!t.result)throw new Error(z.noRoutesError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let o=new ac(t.result?.outputAmount||"0").multipliedBy(e.outputUsdValue||0),n=ko(e.inputUsdValue,o);if(wo(e.inputUsdValue,n))throw new Error("High value loss for route",{cause:{type:1}});return t}i(pc,"throwErrorIfResponseIsNotValid");function uc(t,e,o){let n=Xr(t,e),r={balance:null,route:null,slippage:null};n&&(gi(t,e)?r.route={type:3,newOutputAmount:k(Tt(e)),percentageChange:k(Re(Tt(t),Tt(e)),null,2)}:hn(t,e)?r.route={type:0}:yn(t,e)?r.route={type:1}:Sn(t,e)&&(r.route={type:2}));let s=hi(e,o.selectedWallets);s.length===0||(r.balance={messages:s});let l=mi(t),p=o.userSlippage>vs;return di(o.userSlippage.toString(),l)?p&&(r.slippage={type:1,slippage:o.userSlippage.toString()}):r.slippage={type:0,slippage:l},r}i(uc,"generateWarnings");function Ms(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setRoute:r,bestRoute:s,customDestination:a}=B(),{slippage:l,customSlippage:p,affiliatePercent:u,affiliateRef:c,affiliateWallets:d,disabledLiquiditySources:m}=q(),{connectedWallets:f}=D(),{meta:g}=T(),h=p||l,{fetch:w,cancelFetch:b,loading:S}=zo();return lc(()=>b,[]),{loading:S,fetch:i(async E=>{let v=E.selectedWallets,P=E?.customDestination??a;if(!t||!e||!o||!s)return{route:null,swap:null,error:null,warnings:null};let W=Ao({fromToken:t,toToken:e,inputAmount:o,wallets:f,selectedWallets:v,disabledLiquiditySources:m,slippage:h,affiliateRef:c,affiliatePercent:u,affiliateWallets:d,initialRoute:s,destination:P}),I;try{I=await w(W).then(C=>pc(C,{outputUsdValue:e.usdPrice,inputUsdValue:n})),r(I)}catch(C){return C?.code==="ERR_CANCELED"?{swap:null,error:{type:3},warnings:null}:C.cause?{swap:null,error:C.cause,warnings:null}:{swap:null,error:{type:2},warnings:null}}let G={slippage:h.toString(),disabledSwappersGroups:m},ne=sc(o.toString(),I,fi(v),G,!1,g);return{route:I,swap:ne,error:null,warnings:uc(s,I,{selectedWallets:v,userSlippage:h})}},"fetch"),cancelFetch:b}}i(Ms,"useConfirmSwap");var wc=Ds("div",{position:"relative",width:"100%","& .description":{display:"flex",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10"},"& .icon":{width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}}),vc=Ds("div",{width:"100%",display:"flex",justifyContent:"space-between","& .confirm-button":{flexGrow:1,paddingRight:"$10"},[`& ${Ps}`]:{width:"$48",height:"$48"}});function _s(t){let{config:e}=t,{bestRoute:o,inputAmount:n,outputAmount:r,inputUsdValue:s,outputUsdValue:a,setInputAmount:l,selectedWallets:p,routeWalletsConfirmed:u,setRouteWalletConfirmed:c,customDestination:d}=B(),m=kc(),[f,g]=Ho(""),[h,w]=Ho(!1),{connectedWallets:b}=D(),S=!u,[A,E]=Ho(!1),v=ke.use.setSelectedSwap(),{meta:{tokens:P},loadingStatus:W}=T(),I=q.use.slippage(),G=q.use.customSlippage(),{manager:ne}=cc(),C=G||I,{fetch:_,loading:O,cancelFetch:se}=Ms(),[M,ae]=Ho({swap:null,error:null,warnings:null}),Ie=O||W==="loading",U=!O&&M.error&&[0,2].includes(M.error.type),K=!U&&!O&&o&&o.result,Ee=Eo(o,P),ge=k(Re(s?.toNumber()??0,a?.toNumber()??0),2,2),Ne=gt(parseFloat(ge)),re=i(async({selectedWallets:$,customDestination:he})=>{let ye=await _?.({selectedWallets:$,customDestination:he});return ae(ye),ye},"onConfirmSwap"),Je=i(async()=>{if(M.swap&&u)try{await ne?.create("swap",{swapDetails:M.swap},{id:M.swap.requestId}),v(M.swap.requestId),m("/"+y.swaps+`/${M.swap.requestId}`,{replace:!0}),setTimeout(()=>{l("")},0)}catch($){g("Error: "+$?.message)}},"addNewSwap"),F=i(async()=>{await Je()},"onConfirm"),X=i(async()=>{M?.warnings?.slippage?w(!0):await F()},"onStartConfirmSwap"),H=i(async()=>{ae({error:null,swap:null,warnings:null}),_({selectedWallets:p}).then($=>{ae($)}).catch($=>console.error($))},"onRefresh");return Gt(()=>{S&&se()},[S]),Gt(()=>{S&&E(S)},[S]),Gt(()=>{S||_({selectedWallets:p,customDestination:d}).then($=>ae($)).catch($=>console.error($))},[]),Gt(()=>{!A&&!u&&m(y.home,{replace:!0})},[A,u]),Gt(()=>{let $=M.warnings?.route?.type&&Object.values(Ot).includes(M.warnings?.route?.type),he=p.length<1||!p.every(ee=>b.find(ie=>ee.address===ie.address&&ee.walletType===ie.walletType&&ee.chain===ie.chain)),ye=!1;if($){let ee=so(o),ie=o?.result?.swaps[o.result.swaps.length-1].to.blockchain;!!o?.result?.swaps.find(Dt=>Dt.from.blockchain===ie)||(ee=ee.slice(-ee.length,ee.length-1)),ee.every(Dt=>p.find(Kl=>Kl.chain===Dt))||(ye=!0)}o&&(he||ye)&&(queueMicrotask(()=>Tc(E.bind(null,!0))),c(!1))},[M.warnings?.route,p.length,b.length]),N.createElement(Y,{header:{title:"Confirm Swap",onBack:m.bind(null,-1),hasConnectWallet:!0,suffix:N.createElement(Sc,{side:"bottom",content:$n.t("Settings")},N.createElement(Le,{size:"small",variant:"ghost",onClick:()=>m("/"+y.settings)},N.createElement(yc,{size:18,color:"black"})))},footer:N.createElement(vc,null,N.createElement("div",{className:"confirm-button"},N.createElement(qo,{variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:O,disabled:!!M.error,onClick:X},"Start Swap")),N.createElement(Ps,{variant:"contained",type:"primary",size:"large",loading:O,onClick:E.bind(null,!0)},N.createElement(Cc,{size:24})))},N.createElement(gc,{anchor:"bottom",open:h,prefix:N.createElement(qo,{size:"small",variant:"ghost",onClick:()=>m("/"+y.settings)},N.createElement(Ls,{variant:"label",size:"medium",color:"$neutral900"},"Change settings")),container:document.querySelector("#swap-box"),onClose:w.bind(null,$=>!$)},M.warnings?.slippage&&N.createElement(fc,{type:"warning",title:M.warnings.slippage.type===1?"High slippage":"Low slippage",description:M.warnings.slippage.type===1?$n.t("highSlippage",{selectedSlippage:C},{message:" Caution, your slippage is high (={selectedSlippage}). Your trade may be front run."}):$n.t("increaseSlippage",{minRequiredSlippage:M.warnings.slippage.slippage},{message:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route."})},N.createElement(Et,{size:18}),N.createElement(Et,{size:32}),N.createElement(qo,{size:"large",type:"primary",variant:"contained",fullWidth:!0,onClick:F},"Confirm anyway"))),A&&N.createElement(Ts,{open:A,onClose:E.bind(null,!1),onCancel:se,loading:O,onCheckBalance:re,config:e}),N.createElement(wc,null,N.createElement("div",{className:"description"},N.createElement(Ls,{variant:"title",size:"small"},"You get"),N.createElement(qo,{style:{padding:"0"},variant:"ghost",disabled:O,onClick:H},N.createElement("div",{className:"icon"},N.createElement(hc,{size:16})))),f&&N.createElement(N.Fragment,null,N.createElement(zn,{type:"error",variant:"alarm",title:f}),N.createElement(Et,{size:12})),M.warnings?.route&&N.createElement(N.Fragment,null,N.createElement(zn,{variant:"alarm",type:"warning",title:Wo(M.warnings.route)}),N.createElement(Et,{size:12})),Ie&&N.createElement(dc,{type:"swap-preview",expanded:!0}),K&&N.createElement(mc,{expanded:!0,steps:Qr(o)??[],input:{value:k(n,6,6),usdValue:k(s,4,4)},output:{value:k(r,6,6),usdValue:k(a,4,4)},totalFee:k(Ee,2,2),totalTime:oo(no(o)),recommended:!0,type:"swap-preview",percentageChange:ge,warningLevel:Ne}),U&&N.createElement(N.Fragment,null,N.createElement(Et,{size:12}),N.createElement(Ht,{diagnosisMessage:M.error?.type===0?M.error.diagnosisMessage:void 0,error:M.error?.type===2,fetch:H})),M.error?.type===1&&N.createElement(N.Fragment,null,N.createElement(zn,{variant:"alarm",type:"error",title:lo(M.error)}),N.createElement(Et,{size:12}))))}i(_s,"ConfirmSwapPage");import{i18n as Rn}from"@lingui/core";import{useManager as Wc}from"@rango-dev/queue-manager-react";import{Divider as Ic,NotFound as Nc,styled as Gs}from"@rango-dev/ui";import nt,{useState as Mc}from"react";import{useNavigate as Lc}from"react-router-dom";import{CloseIcon as Ec,IconButton as Ac,SearchIcon as bc,TextField as Bc}from"@rango-dev/ui";import Vt from"react";import{styled as xc}from"@rango-dev/ui";var Os=xc("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function je(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:s,value:a,setValue:l,...p}=t;return Vt.createElement(Bc,{prefix:Vt.createElement(Os,null,Vt.createElement(bc,{color:"black"})),suffix:!!a.length&&Vt.createElement(Ac,{variant:"ghost",onClick:()=>l?.(""),size:"small"},Vt.createElement(Ec,{color:"gray",size:10})),fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center"},size:r,value:a,onChange:s,...p})}i(je,"SearchInput");import{Divider as Us,SwapListItem as $s,Typography as zs}from"@rango-dev/ui";import J from"react";import{styled as Go}from"@rango-dev/ui";var qn=Go("div",{width:"100%",display:"flex",flexDirection:"column"}),Hn=Go("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Gn=Go("div",{gap:"$10",display:"flex",flexDirection:"column"}),Fs=Go("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function Vn(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,s=n?n(e):[{title:"History",swaps:e}];if(r){let a=[{},{}];return J.createElement(J.Fragment,null,[{title:"Today",swaps:a},{title:"Last month",swaps:a}].map(p=>J.createElement(J.Fragment,{key:p.title},J.createElement(qn,null,J.createElement(Hn,null,J.createElement(zs,{variant:"label",size:"medium",color:"neutral800",className:"group-title"},p.title)),J.createElement(Us,{size:4}),J.createElement(Gn,null,p.swaps.map((u,c)=>{let d=c+p.title;return J.createElement(J.Fragment,{key:d},J.createElement($s,{isLoading:!0}))}))))))}return J.createElement(J.Fragment,null,s.filter(a=>a.swaps.length>0).map(a=>J.createElement(J.Fragment,{key:a.title},J.createElement(qn,null,J.createElement(Hn,null,J.createElement(zs,{variant:"label",size:"medium",color:"neutral800",className:"group-title"},a.title)),J.createElement(Us,{size:4}),J.createElement(Gn,null,a.swaps.map(l=>{let p=l.steps[0],u=l.steps[l.steps.length-1];return J.createElement(J.Fragment,{key:l.requestId},J.createElement($s,{requestId:l.requestId,creationTime:l.creationTime,status:l.status,onClick:o,onlyShowTime:a.title==="Today",swapTokenData:{from:{token:{image:p.fromLogo,displayName:p.fromSymbol},blockchain:{image:p.fromBlockchainLogo||""},amount:ro(l.inputAmount)},to:{token:{image:u.toLogo,displayName:u.toSymbol},blockchain:{image:u.toBlockchainLogo||""},amount:ro(u.outputAmount||""),estimatedAmount:ro(u.expectedOutputAmountHumanReadable||"")}}}))}))))))}i(Vn,"SwapsGroup");import qs from"dayjs";var Hs=i(t=>{let e=new Map([["today",{title:"Today",swaps:[]}],["month",{title:"Last month",swaps:[]}],["year",{title:"Last year",swaps:[]}],["history",{title:"History",swaps:[]}]]),o=qs();return t.forEach(n=>{let r=qs(Number(n.creationTime));o.isSame(r,"day")?e.get("today")?.swaps.push(n):o.isSame(r,"month")?e.get("month")?.swaps.push(n):o.isSame(r,"year")?e.get("year")?.swaps.push(n):e.get("history")?.swaps.push(n)}),Array.from(e.values())},"groupSwapsByDate");var Vo=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");var Pc=Gs("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",height:"100%",gap:15}),Dc=Gs("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),_c=i((t,e)=>t?.length?t.filter(o=>$e(o.fromBlockchain,e)||$e(o.toBlockchain,e)||$e(o.toSymbol,e)||$e(o.fromSymbol,e)).length:!1,"isStepContainsText");function Vs(){let t=ke.use.setSelectedSwap(),e=Lc(),{navigateBackFrom:o}=te(),{manager:n,state:r}=Wc(),s=Vo(n).map(({swap:m})=>m),[a,l]=Mc(""),p=!r.loadedFromPersistor,u=i(m=>{let f=m.target.value;l(f)},"searchHandler"),c=s;a&&(c=s.filter(m=>$e(m.inputAmount,a)||$e(m.status,a)||_c(m.steps,a)||$e(m.requestId,a)));let d=!c?.length&&!p;return nt.createElement(Y,{header:{onBack:o.bind(null,"/"+y.swaps),title:Rn.t("History")}},nt.createElement(Pc,null,nt.createElement(je,{setValue:l,fullWidth:!0,variant:"contained",placeholder:"Search Transaction",autoFocus:!0,onChange:u,value:a}),nt.createElement(Dc,null,d&&nt.createElement(Fs,null,nt.createElement(Ic,{size:32}),nt.createElement(Nc,{title:Rn.t("No results found"),description:a?Rn.t("Try using different keywords"):""})),!d&&nt.createElement(Vn,{list:c,onSwapClick:m=>{t(m),e(`${m}`,{replace:!0})},groupBy:Hs,isLoading:p}))))}i(Vs,"HistoryPage");import{i18n as tm}from"@lingui/core";import{Alert as om,BestRoute as nm,BestRouteSkeleton as rm,Button as im,Divider as Yn,styled as At,SwapInput as sa,Typography as Qn,WarningIcon as sm}from"@rango-dev/ui";import j,{useEffect as am,useRef as lm,useState as pm}from"react";import{useNavigate as um}from"react-router-dom";import{Alert as ea,Divider as qc,InfoIcon as Hc}from"@rango-dev/ui";import Oe from"react";import{styled as Ro}from"@rango-dev/ui";var Rs=Ro("div",{width:"100%",paddingTop:"$10"}),Kn=Ro("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:10,width:"100%"}),Ks=Ro("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%"}),Xs=Ro("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});import{Button as Oc,Divider as Qs,MessageBox as Js,Modal as Fc,Typography as Uc,WarningIcon as $c}from"@rango-dev/ui";import _e from"react";import{useNavigate as zc}from"react-router-dom";import{Typography as js}from"@rango-dev/ui";import Xn from"react";function Ys(t){let{title:e,value:o,valueColor:n}=t;return Xn.createElement(Ks,null,Xn.createElement(js,{size:"medium",variant:"label",color:"neutral800"},e),Xn.createElement(js,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(Ys,"RouteErrorsModalItem");function Zs(t){let{highValueLoss:e,open:o,onToggle:n,percentageChange:r,inputUsdValue:s,outputUsdValue:a,totalFeeInUsd:l}=t,p=zc(),u=e&&r?.lt(-10)?"error":"warning",c=[{title:"Swapping",value:k(s,4,4)},{title:"Gas cost",value:k(l,2,2)},{title:"Receiving",value:k(a,4,4)},{title:"Price impact",value:k(r,2,2),valueColor:`${u}500`}];return _e.createElement(Fc,{open:o,onClose:()=>n(!1),container:document.getElementById("swap-box")||document.body},e?_e.createElement(Js,{type:u,title:z.highValueLossError.impactTitle,description:z.highValueLossError.description}):_e.createElement(Js,{type:u,title:z.unknownPriceError.impactTitle,description:z.unknownPriceError.description}),e&&_e.createElement(Kn,null,_e.createElement(Qs,{size:20}),_e.createElement(Uc,{size:"small",variant:"title"},"Details"),_e.createElement(Kn,null,c.map((d,m)=>_e.createElement(Ys,{key:m,...d})))),_e.createElement(Qs,{size:32}),_e.createElement(Oc,{type:"primary",size:"large",prefix:_e.createElement($c,null),fullWidth:!0,onClick:()=>{p(y.confirmSwap)}},e?z.highValueLossError.confirmMessage:z.unknownPriceError.confirmMessage))}i(Zs,"RouteErrorsModal");var Gc=-10;function jn(t){let{bestRoute:e}=B(),{highValueLoss:o,percentageChange:n,priceImpactCanNotBeComputed:r,openModal:s,onToggle:a,totalFeeInUsd:l,outputUsdValue:p,inputUsdValue:u,loading:c,extraSpace:d}=t,m=vo(e),{recommendation:f}=xo(e),g=!m&&(o||r),h=g||m;return Oe.createElement(Oe.Fragment,null,(c||d&&!h)&&Oe.createElement(qc,{size:20}),h&&Oe.createElement(Rs,null,g&&Oe.createElement(Oe.Fragment,null,Oe.createElement(ea,{title:o?z.highValueLossError.title:z.unknownPriceError.title,type:o&&n?.lt(Gc)?"error":"warning",variant:"alarm",action:Oe.createElement(Xs,{onClick:()=>a(!0)},Oe.createElement(Hc,{size:12,color:"gray"}))})),m&&Oe.createElement(ea,{type:"error",variant:"alarm",title:f})),Oe.createElement(Zs,{highValueLoss:o,open:s,onToggle:a,percentageChange:n,inputUsdValue:u,outputUsdValue:p,totalFeeInUsd:l}))}i(jn,"RouteErrors");import{ReverseIcon as Vc,styled as ta}from"@rango-dev/ui";import Ko,{useEffect as Rc,useRef as Kc,useState as Xc}from"react";import{useInRouterContext as jc,useSearchParams as Yc}from"react-router-dom";function Qc({count:t}){let e=Kc(!0),[o,n]=Yc(),r=B.use.outputAmount();return Rc(()=>{if(e.current)e.current=!1;else{let s=o.get("fromBlockchain"),a=o.get("fromToken"),l=o.get("toBlockchain"),p=o.get("toToken");n({...l&&{["fromBlockchain"]:l},...p&&{["fromToken"]:p},...s&&{["toBlockchain"]:s},...a&&{["toToken"]:a},...r&&{["fromAmount"]:r.toString()}})}},[t]),null}i(Qc,"SwitchFromAndTo");var Jc=ta("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Zc=ta("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&:hover":{color:"$secondary500"}});function oa(){let t=B.use.switchFromAndTo(),e=jc(),[o,n]=Xc(0);return Ko.createElement(Jc,null,Ko.createElement(Zc,{onClick:()=>{t(),n(r=>r+1)}},Ko.createElement(Vc,{size:12}),e&&Ko.createElement(Qc,{count:o})))}i(oa,"SwitchFromAndToButton");import{useEffect as na,useState as ra}from"react";var em=600;function ia(){let{fetch:t,cancelFetch:e}=zo(),[o,n]=ra(!1),{fromToken:r,toToken:s,inputAmount:a,inputUsdValue:l,resetRoute:p,setRoute:u}=B(),{slippage:c,customSlippage:d,affiliatePercent:m,affiliateRef:f,affiliateWallets:g,disabledLiquiditySources:h}=q(),[w,b]=ra(""),S=d??c,E=!r||!s||Me(r,s)||!_t(a),v=i(()=>{if(o||n(!0),!E){p();let W=Ao({fromToken:r,toToken:s,inputAmount:a,disabledLiquiditySources:h,slippage:S,affiliateRef:f,affiliatePercent:m,affiliateWallets:g});t(W).then(I=>{n(!1),u(I)}).catch(I=>{p(),I?.code!=="ERR_CANCELED"&&(b(I.message),n(!1))})}},"fetch"),P=Vr(()=>{E||v()},em);return na(()=>{if(!_t(a)||l?.eq(0)){n(!1),e();return}if(!E)return p(),n(!0),P(),e},[a]),na(()=>(E||v(),e),[h.length]),{fetch:v,loading:o,error:w}}i(ia,"useSwapInput");var cm=At("div",{display:"flex",flexDirection:"column",overflowY:"visible"}),mm=At("div",{position:"relative"}),dm=At("div",{display:"flex",flexDirection:"column",gap:5,alignSelf:"stretch"}),aa=At("div",{width:"100%",paddingTop:"$2"}),fm=At("div",{paddingBottom:"$15"}),gm=At("div",{width:"100%",display:"flex"});function la(){let t=um(),{fetch:e,loading:o,error:n}=ia(),{fromToken:r,fromBlockchain:s,toToken:a,toBlockchain:l,setInputAmount:p,inputAmount:u,inputUsdValue:c,outputAmount:d,outputUsdValue:m,bestRoute:f,resetRouteWallets:g}=B(),{meta:{tokens:h},loadingStatus:w}=T(),b=D.use.connectedWallets(),S=ke.use.setCurrentPage(),[A,E]=pm(!1),{fromAmountRangeError:v,swap:P,recommendation:W}=xo(f),I=lm(null),G=!!Number(u)&&(!!f||o||!!n),ne=!1,C=ko(c,m),_=wo(c,C),O=!wn(f,u,c),se=!wn(f,u,m),M=ci(w,b,o,f,vo(f),_,O||se,ne,u),ae=s&&r?k(yt(b,s?.name,r?.symbol,r?.address)?.amount||"0",8,8):"0",Ie=s&&r?k(yt(b,s?.name,r?.symbol,r?.address)?.amount||"0",yt(b,s?.name,r?.symbol,r?.address)?.decimal):"0";am(()=>(S(y.home),g(),S.bind(null,"")),[]);let U=!c||!m||!m.gt(0)?null:Re(c.toNumber(),m.toNumber()),K=i(Ne=>Ne.map((re,Je)=>({swapper:{displayName:re.swapperId,image:re.swapperLogo},from:{token:{displayName:re.from.symbol,image:re.from.logo},chain:{displayName:re.from.blockchain,image:re.from.blockchainLogo},price:{value:Je===0?k(u,6,6):re.fromAmount}},to:{token:{displayName:re.to.symbol,image:re.to.logo},chain:{displayName:re.to.blockchain,image:re.to.blockchainLogo},price:{value:re.toAmount}},alerts:re.swapperId===P?.swapperId?j.createElement(fm,null,j.createElement(om,{type:"error",title:W,footer:j.createElement(gm,null,j.createElement(Qn,{size:"xsmall",variant:"body",color:"neutral900"},v),j.createElement(Yn,{direction:"horizontal",size:8}),j.createElement(Qn,{size:"xsmall",variant:"body",color:"neutral900"},"|"),j.createElement(Yn,{direction:"horizontal",size:8}),j.createElement(Qn,{size:"xsmall",variant:"body",color:"neutral900"},`Yours: ${k(P?.fromAmount||null,6,6)} ${re?.from.symbol}`))})):void 0})),"getBestRouteSteps"),Ee=Eo(f,h),ge=Yr(f);return j.createElement(Y,{ref:I,fixedHeight:!1,hasLogo:!0,footer:j.createElement(im,{type:"primary",size:"large",disabled:M.disabled,prefix:!M.disabled&&M.hasWarning&&j.createElement(sm,null),fullWidth:!0,onClick:()=>{M.state==="waitForConnecting"?t(y.wallets):M.state==="needToConfirm"?E(!0):t(y.confirmSwap)}},M.title),header:{hasConnectWallet:!0,title:tm.t("Swap"),suffix:j.createElement(In,{layoutRef:I.current,onClickRefresh:f||n?e:void 0,onClickHistory:()=>t(y.swaps),onClickSettings:()=>t(y.settings)})}},j.createElement(cm,null,j.createElement(dm,null,j.createElement(mm,null,j.createElement(sa,{label:"From",onInputChange:p,balance:ae,chain:{displayName:s?.displayName||"",image:s?.logo||""},token:{displayName:r?.symbol||"",image:r?.image||""},onClickToken:()=>t("from-swap"),price:{value:u,usdValue:O?void 0:k(c,4,4),error:O?z.unknownPriceError.impactTitle:void 0},disabled:w==="failed",loading:w==="loading",onSelectMaxBalance:()=>{ae!=="0"&&p(Ie.split(",").join(""))}}),j.createElement(oa,null)),j.createElement(sa,{sharpBottomStyle:!!f?.result||o,label:"To",chain:{displayName:l?.displayName||"",image:l?.logo||""},token:{displayName:a?.symbol||"",image:a?.image||""},percentageChange:U?.lt(0)?k(U,2,2):null,warningLevel:gt(U?.toNumber()??0),price:{value:k(d,6,6),usdValue:se?void 0:k(m,4,4),error:se?z.unknownPriceError.impactTitle:void 0},onClickToken:()=>t("to-swap"),disabled:w==="failed",loading:w==="loading"})),o&&j.createElement(aa,null,j.createElement(rm,{type:"basic"})),G&&!o&&ge?.result?.swaps?.length?j.createElement(aa,null,j.createElement(nm,{type:"basic",recommended:!0,input:{value:k(u,6,6),usdValue:k(c,4,4)},output:{value:k(d,6,6),usdValue:k(m,4,4)},steps:K(ge.result.swaps),percentageChange:k(U,2,2),totalFee:k(Ee,2,2),totalTime:oo(no(f))})):G&&!o?j.createElement(j.Fragment,null,j.createElement(Yn,{size:20}),j.createElement(Ht,{diagnosisMessage:ge?.diagnosisMessages?.[0],fetch:e,error:!!n})):null),j.createElement(jn,{openModal:A,onToggle:E,totalFeeInUsd:Ee,outputUsdValue:m,inputUsdValue:c,percentageChange:U,highValueLoss:_,priceImpactCanNotBeComputed:O||se,loading:o||w==="loading",extraSpace:!!f?.result||!f}))}i(la,"Home");import{i18n as Xo}from"@lingui/core";import{List as hm,ListItemButton as ym,Radio as tr,RadioRoot as Sm,Typography as or}from"@rango-dev/ui";import Fe,{useState as Cm}from"react";import{styled as Rt}from"@rango-dev/ui";var Ye=Rt("div",{height:"100%"}),Kt=Rt("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"visible"}),Jn=Rt("li",{margin:"0 auto",width:"100%",height:"1px",backgroundColor:"$neutral300"}),Zn=Rt("div",{width:80,display:"flex",justifyContent:"flex-end"}),er=Rt("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});function pa(){let{navigateBackFrom:t}=te(),[e,o]=Cm("english"),n=[{id:"english",value:"english",title:Fe.createElement(or,{variant:"title",size:"xmedium"},Xo.t("English")),onClick:()=>o("english"),end:Fe.createElement(tr,{value:"english"})},{id:"french",value:"french",title:Fe.createElement(or,{variant:"title",size:"xmedium"},Xo.t("French")),onClick:()=>o("french"),end:Fe.createElement(tr,{value:"french"})},{id:"spanish",value:"spanish",title:Fe.createElement(or,{variant:"title",size:"xmedium"},Xo.t("Spanish")),onClick:()=>o("spanish"),end:Fe.createElement(tr,{value:"spanish"})}];return Fe.createElement(Y,{header:{onBack:t.bind(null,y.settings),title:Xo.t("Language")}},Fe.createElement(Ye,null,Fe.createElement(Sm,{value:e},Fe.createElement(hm,{type:Fe.createElement(ym,{title:"language",id:"_",onClick:()=>console.log()}),items:n}))))}i(pa,"LanguagePage");import{i18n as bt}from"@lingui/core";import{Button as xm,Checkbox as Em,Image as Am,ListItemButton as bm,NotFound as Bm,Typography as Wm}from"@rango-dev/ui";import de,{useState as Im}from"react";import{Checkbox as wm,Skeleton as ca}from"@rango-dev/ui";import Xt from"react";import{ListItem as Tm,styled as km}from"@rango-dev/ui";var ua=km(Tm,{height:61});var vm=30;function nr(){return Xt.createElement(Kt,null,Array.from(Array(vm),t=>Xt.createElement(ua,{hasDivider:!0,key:t,start:Xt.createElement(ca,{variant:"circular",width:35,height:35}),title:Xt.createElement(ca,{variant:"text",size:"large",width:90}),end:Xt.createElement(wm,{checked:!1})})))}i(nr,"LoadingLiquiditySourceList");function jo(t){let e=T.use.meta().swappers,o=q.use.disabledLiquiditySources(),n=[];return Ze(e.map(s=>s.swapperGroup)).map(s=>{let a=e.find(l=>l.swapperGroup===s);if(a){let l=!0;t&&(l=t.some(p=>p===a.title)),l&&a.types.map(p=>{n.push({id:a.swapperGroup,groupTitle:a.swapperGroup,logo:a.logo,type:p,selected:!o.includes(a.swapperGroup)})})}}),n}i(jo,"getUniqueSwappersGroups");function rr({supportedSwappers:t,sourceType:e}){let[o,n]=Im(""),r=q.use.toggleLiquiditySource(),{navigateBackFrom:s}=te(),a=T.use.loadingStatus(),l=jo(t),p=[];e==="Exchanges"&&p.push("DEX"),e==="Bridges"&&(p.push("BRIDGE"),p.push("AGGREGATOR"));let u=l.filter(h=>p.includes(h.type)),c=u.length===u.filter(h=>h.selected).length,d=i(()=>{u.forEach(h=>{c?r(h.groupTitle):h.selected||r(h.groupTitle)})},"toggleAllSources"),m=u.map(h=>{let{selected:w,groupTitle:b,logo:S}=h;return{start:de.createElement(Am,{src:S,size:22,type:"circular"}),onClick:()=>r(b),end:de.createElement(Em,{checked:w}),title:de.createElement(Wm,{variant:"title",size:"xmedium"},bt.t(b)),...h}}),f=i(h=>{let w=h.target.value;n(w)},"searchHandler"),g=m;return o&&(g=m.filter(h=>$e(h.groupTitle,o))),de.createElement(Y,{header:{onBack:s.bind(null,y.settings),title:bt.t(e),suffix:de.createElement(Zn,null,de.createElement(xm,{variant:"ghost",size:"xsmall",onClick:d},bt.t(c?"Deselect all":"Select all")))}},de.createElement(Ye,null,de.createElement(je,{value:o,setValue:n,fullWidth:!0,color:"light",variant:"contained",placeholder:bt.t("Swap {sourceType}",{sourceType:e}),onChange:f}),a==="loading"&&de.createElement(nr,null),!g.length&&o?de.createElement(er,null,de.createElement(Bm,{title:bt.t("No results found"),description:bt.t("Try using different keywords")})):a==="success"&&de.createElement(Kt,null,g.map(h=>de.createElement(de.Fragment,{key:h.id},de.createElement(bm,{style:{height:"61px"},...h,selected:!1}),de.createElement(Jn,null))))))}i(rr,"LiquiditySourcePage");import{i18n as xa}from"@lingui/core";import{Divider as ur}from"@rango-dev/ui";import ct,{useState as Ea}from"react";import{i18n as sr}from"@lingui/core";import{Divider as ya,Image as Lm,ListItemButton as Pm,NotFound as Dm,Typography as Sa}from"@rango-dev/ui";import We,{useEffect as _m,useState as Om}from"react";import{TransactionType as Yo}from"rango-sdk";var Bt=(s=>(s.ALL="ALL",s.EVM="EVM",s.COSMOS="COSMOS",s.UTXO="UTXO",s.OTHER="OTHER",s))(Bt||{});var ir=i((t,e)=>{switch(e){case"ALL":return!0;case"UTXO":return t.type===Yo.TRANSFER;case"OTHER":return t.type!==Yo.TRANSFER&&t.type!==Yo.COSMOS&&t.type!==Yo.EVM;default:return t.type===e}},"filterByType"),ma=i((t,e,o)=>t.filter(n=>ir(n,o)).filter(n=>st(n.name,e)||st(n.displayName,e)),"filterBlockchains");import{styled as da}from"@rango-dev/ui";var fa=da("div",{display:"flex",flexDirection:"column",overflow:"hidden"}),Qo=da("ul",{padding:0,margin:0,listStyle:"none",overflowY:"auto",paddingRight:"$5",".image-container":{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as Nm,Skeleton as ga}from"@rango-dev/ui";import Jo from"react";var Mm=20;function ha(){return Jo.createElement(Qo,null,Array.from(Array(Mm),t=>Jo.createElement(Nm,{key:t,hasDivider:!0,start:Jo.createElement(ga,{variant:"circular",width:35,height:35}),title:Jo.createElement(ga,{variant:"text",size:"large",width:90})})))}i(ha,"LoadingBlockchainList");function ar(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r}=t,[s,a]=Om(e),l=T.use.loadingStatus();_m(()=>{a([...ma(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?We.createElement(We.Fragment,null,We.createElement(ya,{size:32}),We.createElement(Dm,{title:sr.t("No results found"),description:sr.t("Try using different keywords")})):We.createElement(Qo,null,s.map(u=>We.createElement(Pm,{key:`${u.name}-${u.chainId}`,hasDivider:!0,onClick:()=>n(u),start:We.createElement(Lm,{src:u.logo,size:30}),title:We.createElement(Sa,{variant:"title",size:"medium"},u.displayName),id:u.chainId}))),"renderList");return We.createElement(fa,null,We.createElement(Sa,{variant:"label",size:"large"},sr.t("Select Blockchain")),We.createElement(ya,{size:4}),l==="loading"&&We.createElement(ha,null),l==="success"&&p())}i(ar,"BlockchainList");import{i18n as zm}from"@lingui/core";import{Divider as qm,Image as Hm,Skeleton as Gm,Typography as Vm}from"@rango-dev/ui";import qe from"react";import Um from"react";import{styled as Fm}from"@rango-dev/ui";var Ca=Fm("button",{padding:"$10",borderRadius:"$sm",backgroundColor:"$neutral100",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",cursor:"pointer",border:0,".image-container":{borderRadius:"$xm",overflow:"hidden"},"&:hover":{backgroundColor:"$neutral400"},"&:focus-visible":{outline:0,backgroundColor:"$neutral500"},variants:{selected:{true:{outline:"1px solid $secondary500"},false:{outline:0}}}});function rt(t){let{children:e,selected:o,onClick:n}=t;return Um.createElement(Ca,{selected:o,onClick:n},e)}i(rt,"BlockchainsChip");var $m={["EVM"]:["ETH","BSC","POLYGON"],["COSMOS"]:["COSMOS","OSMOSIS","JUNO"],["UTXO"]:["BTC","LTC","BCH"],["OTHER"]:["STARKNET","TRON","SOLANA"]},Ta=i((t,e)=>t.filter(o=>ir(o,e)).filter(o=>$m[e].includes(o.name)),"generateBlockchainsLogo");import{styled as lr}from"@rango-dev/ui";var ka=lr("div",{display:"grid",gap:"$10",gridTemplateColumns:"auto 1fr 1fr 1fr 1fr"}),wa=lr("div",{display:"flex",position:"relative",alignItems:"center",justifyContent:"center",paddingTop:"$10"}),va=lr("img",{position:"absolute",top:-2,width:15,height:15});function pr(t){let{setCategory:e,category:o}=t,n=T.use.meta().blockchains,r=T.use.loadingStatus(),s=Object.keys(Bt);return qe.createElement(ka,null,r==="loading"&&Array.from(Array(5),(a,l)=>qe.createElement(Gm,{key:l,variant:"rounded",height:70,width:l===0?45:65})),r==="success"&&s.map(a=>qe.createElement(rt,{selected:o===a,key:a,onClick:()=>e(a)},a!=="ALL"&&qe.createElement(qe.Fragment,null,qe.createElement(wa,null,Ta(n,a).map((l,p)=>p===0?qe.createElement(va,{key:`image-${l.name}-${l.chainId}`,src:l.logo}):qe.createElement(Hm,{key:`image-${l.name}-${l.chainId}`,src:l.logo,size:15}))),qe.createElement(qm,{size:12})),qe.createElement(Vm,{size:"xsmall",variant:"body",color:a==="ALL"?"secondary500":void 0},zm.t(Bt[a])))))}i(pr,"SelectableCategoryList");function cr(t){let{type:e,supportedBlockchains:o}=t,{navigateBackFrom:n}=te(),[r,s]=Ea(""),[a,l]=Ea("ALL"),p=B.use.setToBlockchain(),u=B.use.setFromBlockchain(),c=o?T.use.meta().blockchains.filter(d=>o.includes(d.name)):T.use.meta().blockchains;return ct.createElement(Y,{header:{onBack:n.bind(null,y[`${e}Blockchain`]),title:xa.t("Select Blockchain")}},ct.createElement(ur,{size:12}),ct.createElement(pr,{setCategory:l,category:a}),ct.createElement(ur,{size:24}),ct.createElement(je,{value:r,autoFocus:!0,placeholder:xa.t("Search Blockchain"),color:"light",variant:"contained",size:"large",setValue:()=>s(""),onChange:d=>s(d.target.value)}),ct.createElement(ur,{size:16}),ct.createElement(ar,{list:c,searchedFor:r,blockchainCategory:a,onChange:d=>{e==="from"?u(d,!0):p(d,!0),n(y[`${e}Blockchain`])}}))}i(cr,"SelectBlockchainPage");import{i18n as qa}from"@lingui/core";import{Divider as Ha}from"@rango-dev/ui";import Wt,{useEffect as ld,useState as pd}from"react";import{useNavigate as ud}from"react-router-dom";import{i18n as mr}from"@lingui/core";import{Divider as Ba,Image as Wa,Skeleton as Km,Typography as dr}from"@rango-dev/ui";import fe,{useEffect as Xm,useState as jm}from"react";var Aa=i(t=>{let e=[],o=[];for(let n of t)n.name==="ETH"||n.name==="COSMOS"||n.name==="OSMOSIS"?e.push(n):o.push(n);return e.concat(o)},"sortBlockchains");import{styled as Rm}from"@rango-dev/ui";var ba=Rm("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var Ym=9,fr=10,Qm=12;function gr(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:s}=t,a=Aa(e),[l,p]=jm(null),u=T.use.loadingStatus(),c=B.use.resetToBlockchain(),d=B.use.resetFromBlockchain(),m=l?Ym:fr;return Xm(()=>{let f=a.slice(fr,a.length).find(g=>g.chainId===n?.chainId&&g.name===n?.name);f&&p(f)},[n]),fe.createElement("div",null,fe.createElement(Ba,{size:12}),fe.createElement(dr,{variant:"label",size:"large"},mr.t("Select Blockchain")),fe.createElement(Ba,{size:12}),fe.createElement(ba,null,u==="loading"&&Array.from(Array(Qm),f=>fe.createElement(Km,{key:f,variant:"rounded",height:50})),u==="success"&&fe.createElement(fe.Fragment,null,fe.createElement(rt,{selected:!n,onClick:()=>{o==="from"?d():c()}},fe.createElement(dr,{variant:"body",size:"xsmall",color:"secondary500"},mr.t("All"))),!!l&&fe.createElement(rt,{selected:!!l&&l.chainId===n?.chainId,key:l.chainId,onClick:()=>r(l)},fe.createElement(Wa,{src:l.logo,size:30})),a.slice(0,m).map(f=>fe.createElement(rt,{key:f.chainId,selected:!!n&&n.chainId===f.chainId,onClick:()=>r(f)},fe.createElement(Wa,{src:f.logo,size:30}))),fe.createElement(rt,{onClick:s},fe.createElement(dr,{variant:"body",size:"xsmall",color:"secondary500"},mr._("More +{count}",{count:a.length-fr}))))))}i(gr,"BlockchainsSection");import{i18n as Cr}from"@lingui/core";import{darkTheme as _a,Divider as Yt,ExternalLinkIcon as ed,Image as td,ListItemButton as od,NotFound as nd,PinIcon as rd,Skeleton as Oa,Typography as Qt,VirtualizedList as id}from"@rango-dev/ui";import L,{forwardRef as sd,useEffect as Fa,useState as Ua}from"react";import{Divider as Pa,ListItem as Zm,Skeleton as jt}from"@rango-dev/ui";import Ue from"react";import{styled as He,Typography as Jm}from"@rango-dev/ui";var Ia=He("div",{display:"flex",flexDirection:"column",flexGrow:1}),hr=He("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Zo=He("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none",".description":{position:"relative",height:12,width:150,".token-title":{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"},".token-address":{transform:"translateY(12px)",visibility:"hidden","& a":{fontSize:"$12",lineHeight:"$16",color:"$neutral800",textDecoration:"none"}},".token-name":{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}},"&:hover":{".description":{".token-address":{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},".token-address-without-name":{bottom:"-15px"},".token-name":{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},".token-title":{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),yr=He("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Sr=He(Jm,{}),Na=He("div",{textAlign:"right"}),en=He("ul",{display:"flex",alignItems:"end",flexDirection:"column"}),UE=He("div",{display:"flex",alignItems:"center"}),Ma=He("div",{position:"relative",".image-container":{borderRadius:"$xm",overflow:"hidden"}}),La=He("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6});function Da(t){return Ue.createElement(Zo,null,Array.from(Array(t.size),e=>Ue.createElement(Zm,{key:e,hasDivider:!0,start:Ue.createElement(jt,{variant:"circular",width:35,height:35}),end:Ue.createElement(en,null,Ue.createElement(jt,{variant:"text",size:"large",width:70}),Ue.createElement(Pa,{size:4}),Ue.createElement(jt,{variant:"text",size:"medium",width:50})),title:Ue.createElement("div",null,Ue.createElement(jt,{variant:"text",size:"large",width:90}),Ue.createElement(Pa,{size:4}),Ue.createElement(jt,{variant:"text",size:"medium",width:90}))})))}i(Da,"LoadingTokenList");var Tr=20,ad=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:s,customCssForTagTitle:a}=t,l=e.length;return L.createElement("div",{className:"description"},o?L.createElement("div",{className:"token-name"},o):L.createElement(hr,{className:"token-title"},L.createElement(Qt,{variant:"title",size:"xmedium"},r.symbol),L.createElement(Yt,{direction:"horizontal",size:4}),L.createElement(yr,{css:s},L.createElement(Sr,{variant:"body",size:"xsmall",css:a},r.blockchain))),!!e&&L.createElement("div",{className:`token-address ${!o&&"token-address-without-name"}`},L.createElement("a",{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",L.createElement(ed,{color:"gray",size:12}))))},"renderDesc");function $a(t){let{list:e,searchedFor:o="",onChange:n}=t,[r,s]=Ua(e),a=T.use.loadingStatus(),[l,p]=Ua(!0),u=D.use.loading(),{blockchains:c}=T.use.meta(),d=sd((g,h)=>L.createElement("div",{...g,ref:h,style:{...g.style,height:`${parseFloat(g.style?.height)+8*2}px`}})),m=i(()=>{s(e.slice(0,r.length+Tr))},"loadNextPage");Fa(()=>{p(e.length>r.length)},[r.length]),Fa(()=>{s(e.slice(0,Tr))},[e]);let f=i(()=>!r.length&&o?L.createElement(L.Fragment,null,L.createElement(Yt,{size:32}),L.createElement(nd,{title:Cr.t("No results found"),description:Cr.t("Try using different keywords")})):L.createElement(id,{Item:({index:g,style:h})=>{let w=r[g].address||"",b=c.find(v=>v.name===r[g].blockchain),S=Rr(r[g].symbol,b?.color||""),A={$$color:S[`${r[g].symbol}100`],[`.${_a} &`]:{$$color:S[`${r[g].symbol}900`]},backgroundColor:"$$color"},E={$$color:S[`${r[g].symbol}700`],[`.${_a} &`]:{$$color:S[`${r[g].symbol}100`]},color:"$$color"};return L.createElement("div",{style:{...h,paddingRight:5}},L.createElement(od,{style:{height:h?.height},"tab-index":g,key:`${r[g].symbol}${r[g].address}`,id:`${r[g].symbol}${r[g].address}`,hasDivider:!0,onClick:()=>n(r[g]),start:L.createElement(Ma,null,L.createElement(td,{src:r[g].image,size:30}),r[g].pin&&L.createElement(La,null,L.createElement(rd,{size:12,color:"gray"}))),title:b?.type==="COSMOS"||r[g].name||!r[g].name&&!w?L.createElement(hr,null,L.createElement(Qt,{variant:"title",size:"xmedium"},r[g].symbol),L.createElement(Yt,{direction:"horizontal",size:4}),L.createElement(yr,{css:A},L.createElement(Sr,{variant:"body",size:"xsmall",css:E},r[g].blockchain))):void 0,description:b?.info&&w&&b.type!=="COSMOS"?ad({address:w,token:r[g],customCssForTag:A,customCssForTagTitle:E,name:r[g].name,url:b.info.addressUrl.split("{wallet}").join(w)}):r[g].name||void 0,end:u?L.createElement(en,null,L.createElement(Oa,{variant:"text",size:"large",width:70}),L.createElement(Yt,{size:4}),L.createElement(Oa,{variant:"text",size:"medium",width:50})):r[g]?.balance&&L.createElement(Na,null,L.createElement(Qt,{variant:"title",size:"small"},r[g].balance?.amount),L.createElement("div",null),r[g].balance?.usdValue&&L.createElement(Qt,{variant:"body",color:"neutral800",size:"xsmall"},`$${r[g].balance?.usdValue}`))}))},hasNextPage:l,itemCount:r.length,loadNextPage:m,innerElementType:d,size:60}),"renderList");return L.createElement(Ia,null,L.createElement(Qt,{variant:"label",size:"large"},Cr.t("Select Token")),L.createElement(Yt,{size:4}),a==="loading"&&L.createElement(Da,{size:Tr}),a==="success"&&L.createElement(Zo,null,f()))}i($a,"TokenList");var za=i((t,e)=>t.filter(o=>st(o.symbol,e)||st(o.address||"",e)||st(o.name||"",e)).sort((o,n)=>n.pin-o.pin),"filterTokens");function kr(t){let{type:e,supportedBlockchains:o,supportedTokens:n,pinnedTokens:r}=t,s=ud(),{navigateBackFrom:a}=te(),{tokens:l}=T.use.meta(),p=B.use.sourceTokens(),u=B.use.destinationTokens(),[c,d]=pd(""),m=B.use.setFromToken(),f=B.use.setToToken(),g=B.use.setToBlockchain(),h=B.use.setFromBlockchain(),w=B.use.toBlockchain(),b=B.use.fromBlockchain(),S=D.use.connectedWallets(),A=D.use.loading(),E=T.use.setTokensWithBalance(),v=o?T.use.meta().blockchains.filter(C=>o.includes(C.name)):T.use.meta().blockchains,P=n?l.filter(C=>l.some(_=>Me(_,C))):l,W=n?p.filter(C=>n.some(_=>Me(_,C))):p,I=n?u.filter(C=>n.some(_=>Me(_,C))):u,G=e==="from"?W:I,ne=(G.length?G:P).map(C=>({...C,pin:r?.some(_=>Me(_,C))}));return ld(()=>{S.length&&!A&&E()},[S,A]),Wt.createElement(Y,{header:{onBack:a.bind(null,y.home),title:qa.t("Swap {type}",{type:e})}},Wt.createElement(gr,{blockchains:v,type:e,blockchain:e==="from"?b:w,onMoreClick:()=>s(e==="from"?y.fromBlockchain:y.toBlockchain),onChange:C=>{e==="from"?h(C,!0):g(C,!0)}}),Wt.createElement(Ha,{size:24}),Wt.createElement(je,{value:c,autoFocus:!0,placeholder:qa.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>d(""),onChange:C=>d(C.target.value)}),Wt.createElement(Ha,{size:16}),Wt.createElement($a,{list:za(ne,c),onChange:C=>{let _=v.find(O=>C.blockchain===O.name);e==="from"?(m(C),_&&h(_,!0)):(f(C),_&&g(_,!0)),a(y.fromSwap)}}))}i(kr,"SelectSwapItemsPage");import{i18n as It}from"@lingui/core";import{ChevronRightIcon as on,Divider as Qa,List as yd,ListItemButton as Sd,Skeleton as Cd,Switch as Td,Typography as mt}from"@rango-dev/ui";import Z from"react";import{useNavigate as kd}from"react-router-dom";import{i18n as md}from"@lingui/core";import{Chip as dd,Divider as ja,InfoIcon as fd,TextField as gd,Tooltip as hd,Typography as Ya}from"@rango-dev/ui";import we from"react";import{styled as tn}from"@rango-dev/ui";var Ga=tn("div",{paddingTop:"$5",paddingBottom:"30px"}),Va=tn("div",{display:"flex",alignItems:"center",justifyContent:"start"}),Ra=tn("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Ka=tn("div",{maxWidth:"300px",padding:"$10"});import{i18n as wr}from"@lingui/core";import{Typography as cd}from"@rango-dev/ui";import Jt from"react";function Xa(){return Jt.createElement(Ka,null,Jt.createElement(cd,{variant:"label",size:"small",color:"neutral900"},wr.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage"),Jt.createElement("br",null),Jt.createElement("br",null),Jt.createElement("b",null,wr.t("Warning")),":",wr.t("This setting is applied per step, e.g. 1Inch, Thorchain, etc. and only that step will be reverted, not the whole transaction")))}i(Xa,"SlippageTooltipContent");function vr(){let t=q.use.slippage(),e=q.use.setSlippage(),o=q.use.customSlippage(),n=q.use.setCustomSlippage();return we.createElement(Ga,null,we.createElement(Ra,null,we.createElement(Ya,{variant:"title",size:"xmedium"},md.t("Slippage tolerance per swap")),we.createElement(ja,{direction:"horizontal",size:4}),we.createElement(hd,{side:"top",content:we.createElement(Xa,null)},we.createElement(fd,{color:"gray"}))),we.createElement(Va,null,ks.map((r,s)=>{let a=`slippage-${s}`;return we.createElement(we.Fragment,null,we.createElement(dd,{style:{width:"64px",flexShrink:0},key:a,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`}),we.createElement(ja,{direction:"horizontal",size:8}))}),we.createElement(gd,{type:"number",min:"0.01",max:"30",step:"0.01",fullWidth:!0,variant:"contained",value:o||"",color:"dark",onChange:r=>{let s=parseFloat(r.target.value);(!s||s>=Es&&s<=xs)&&n(s)},suffix:o&&we.createElement(Ya,{variant:"body",size:"small"},"%"),placeholder:"Custom"})))}i(vr,"Slippage");function Ja({supportedSwappers:t,singleTheme:e}){let o=kd(),{navigateBackFrom:n}=te(),r=q.use.infiniteApprove(),s=q.use.toggleInfiniteApprove(),a=T.use.loadingStatus(),l=jo(t),p=l.filter(v=>v.type==="BRIDGE"||v.type==="AGGREGATOR"),u=p.length,c=p.filter(v=>v.selected).length,d=l.filter(v=>v.type==="DEX"),m=d.length,f=d.filter(v=>v.selected).length,g=i((v,P)=>{switch(a){case"loading":return Z.createElement(Cd,{variant:"text",size:"medium",width:50});case"failed":return Z.createElement(mt,{variant:"body",size:"medium",color:"$error500"},"Loading failed");default:return Z.createElement(mt,{variant:"body",size:"medium"},`${v} / ${P}`)}},"handleEndItem"),h={id:"bridge-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Enabled bridges")),end:Z.createElement(Z.Fragment,null,g(c,u),Z.createElement(Qa,{direction:"horizontal",size:8}),Z.createElement(on,{color:"black"})),onClick:()=>o(y.bridges)},w={id:"exchange-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Enabled exchanges")),end:Z.createElement(Z.Fragment,null,g(f,m),Z.createElement(Qa,{direction:"horizontal",size:8}),Z.createElement(on,{color:"gray"})),onClick:()=>o(y.exchanges)},b={id:"language-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Language")),end:Z.createElement(on,{color:"gray"}),onClick:()=>o(y.languages)},S={id:"theme-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Theme")),end:Z.createElement(on,{color:"gray"}),onClick:()=>o(y.themes)},A={id:"infinite-approval-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Infinite Approval")),end:Z.createElement(Td,{checked:r}),onClick:s},E=[h,w,b];return e||E.push(S),E.push(A),Z.createElement(Y,{header:{onBack:n.bind(null,y.settings),title:It.t("Setting")}},Z.createElement(Ye,null,Z.createElement(vr,null),Z.createElement(yd,{type:Z.createElement(Sd,{title:"_",id:"_",onClick:()=>console.log()}),items:E})))}i(Ja,"SettingsPage");import{cancelSwap as lf}from"@rango-dev/queue-manager-rango-preset";import{useManager as pf}from"@rango-dev/queue-manager-react";import Il from"react";import{i18n as dt}from"@lingui/core";import{getCurrentBlockchainOfOrNull as Hd,getCurrentStep as Gd,getRelatedWalletOrNull as Vd,PendingSwapNetworkStatus as cn}from"@rango-dev/queue-manager-rango-preset";import{Button as Al,CopyIcon as Rd,Divider as Kd,IconButton as Xd,RouteCost as jd,RouteSummary as Yd,StepDetails as Qd,theme as Jd,Typography as Mt,useCopyToClipboard as Zd,usePaddingRight as ef}from"@rango-dev/ui";import{useWallets as tf}from"@rango-dev/wallets-react";import Q,{useEffect as bl,useRef as of,useState as Bl}from"react";import{useNavigate as nf}from"react-router-dom";function Za(t){let e=Math.floor((new Date().getTime()-t)/1e3),o,n=Math.floor(e/31536e3);return n>=1?o="year":(n=Math.floor(e/2592e3),n>=1?o="month":(n=Math.floor(e/86400),n>=1?o="day":(n=Math.floor(e/3600),n>=1?o="hour":(n=Math.floor(e/60),n>=1?o="minute":(n=e,o="second"))))),(n>1||n===0)&&(o+="s"),n+" "+o}i(Za,"timeSince");function el(t){return t.finishTime?`${Za(parseInt(t.finishTime))} ago`:`${Za(parseInt(t.creationTime))} ago`}i(el,"getSwapDate");import{PendingSwapNetworkStatus as sn}from"@rango-dev/queue-manager-rango-preset";import{Modal as Bd}from"@rango-dev/ui";import an from"react";import{i18n as nn}from"@lingui/core";import{Button as tl,Divider as xr,MessageBox as wd,Typography as ol}from"@rango-dev/ui";import Ge from"react";var nl=i(({onCancel:t,onClose:e})=>Ge.createElement(Ge.Fragment,null,Ge.createElement(xr,{size:20}),Ge.createElement(wd,{type:"error",title:nn.t("Transaction Cancel"),description:nn.t("Are you sure you want to Cancel this swap?")}),Ge.createElement(xr,{size:32}),Ge.createElement(tl,{variant:"contained",type:"primary",size:"large",onClick:t},Ge.createElement(ol,{variant:"title",size:"medium",color:"neutral100"},nn.t("Yes, Cancel it"))),Ge.createElement(xr,{size:12}),Ge.createElement(tl,{variant:"outlined",type:"primary",size:"large",onClick:e},Ge.createElement(ol,{variant:"title",size:"medium",color:"primary"},nn.t("No, Continue")))),"CancelContent");import{i18n as rn}from"@lingui/core";import{Button as rl,Divider as Er,MessageBox as vd,Typography as il}from"@rango-dev/ui";import Ve from"react";var sl=i(({onDelete:t,onClose:e})=>Ve.createElement(Ve.Fragment,null,Ve.createElement(Er,{size:20}),Ve.createElement(vd,{type:"error",title:rn.t("Delete Transaction"),description:rn.t("Are you sure you want to delete this swap?")}),Ve.createElement(Er,{size:32}),Ve.createElement(rl,{variant:"contained",type:"primary",size:"large",onClick:t},Ve.createElement(il,{variant:"title",size:"medium",color:"neutral100"},rn.t("Yes, Delete it"))),Ve.createElement(Er,{size:12}),Ve.createElement(rl,{variant:"outlined",type:"primary",size:"large",onClick:e},Ve.createElement(il,{variant:"title",size:"medium",color:"primary"},rn.t("No, Cancel")))),"DeleteContent");import{i18n as Ar}from"@lingui/core";import{PendingSwapNetworkStatus as br}from"@rango-dev/queue-manager-rango-preset";var Br={[br.WaitingForNetworkChange]:{type:"loading",title:Ar.t("Change Network")},[br.WaitingForConnectingWallet]:{type:"warning",title:Ar.t("Connect Wallet")},[br.NetworkChanged]:{type:"success",title:Ar.t("Network Changed")}};import{MessageBox as Ed,Wallet as Ad,WalletState as ll}from"@rango-dev/ui";import{useWallets as bd}from"@rango-dev/wallets-react";import Zt from"react";import{styled as xd}from"@rango-dev/ui";var al=xd("div",{display:"flex",justifyContent:"center"});var pl=i(t=>{let{type:e,title:o,currentStepWallet:n,message:r,showWalletButton:s}=t,{connect:a,getWalletInfo:l,state:p}=bd(),u=n?.walletType,d=u&&p(u).connected?ll.CONNECTED:ll.DISCONNECTED;return Zt.createElement(Zt.Fragment,null,Zt.createElement(Ed,{type:e,title:o,description:r}),s&&u&&Zt.createElement(al,null,Zt.createElement(Ad,{title:l(u).name,image:l(u).img,type:u,state:d,onClick:async()=>a(u)})))},"WalletStateContent");function Wr(t){let{state:e,onClose:o,onDelete:n,onCancel:r,currentStepWallet:s,message:a}=t,l=e===sn.WaitingForNetworkChange||e===sn.WaitingForConnectingWallet||e===sn.NetworkChanged;return an.createElement(Bd,{open:!!e,onClose:o,container:document.getElementById("swap-box")||document.body},l&&an.createElement(pl,{type:Br[e].type,title:Br[e].title,currentStepWallet:s,message:a,showWalletButton:e!==sn.WaitingForNetworkChange}),e==="delete"&&an.createElement(sl,{onClose:o,onDelete:n}),e==="cancel"&&an.createElement(nl,{onClose:o,onCancel:r}))}i(Wr,"SwapDetailsModal");import{i18n as eo}from"@lingui/core";import{Button as Ir,Divider as ln,MessageBox as ul,Modal as Wd,TokenAmount as Id,Typography as pn}from"@rango-dev/ui";import pe from"react";import{useNavigate as Nd}from"react-router-dom";function Nr(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:s,token:a,chain:l,percentageChange:p,description:u,diagnosisUrl:c}=t,d=Nd();return pe.createElement(Wd,{open:e,onClose:o,container:document.getElementById("swap-box")||document.body},n==="success"?pe.createElement(ul,{type:"success",title:eo.t("Swap Successful")},pe.createElement(Id,{direction:"vertical",type:"output",centerAlign:!0,price:{value:r,usdValue:s},token:a,chain:l,percentageChange:p}),pe.createElement(ln,{size:12}),pe.createElement(pn,{variant:"body",size:"medium",color:"neutral900",align:"center"},u)):pe.createElement(ul,{type:"error",title:eo.t("Transaction Failed"),description:u}),pe.createElement(ln,{size:32}),n==="success"&&pe.createElement(Ir,{variant:"contained",type:"primary",size:"large",onClick:()=>d(y.home)},pe.createElement(pn,{variant:"title",size:"medium",color:"neutral100"},eo.t("Done"))),pe.createElement(ln,{size:12}),c&&pe.createElement(pe.Fragment,null,pe.createElement(Ir,{variant:"contained",type:"primary",size:"large",onClick:()=>window.open(c,"_blank")},pe.createElement(pn,{variant:"title",size:"medium",color:"primary"},eo.t("Diagnosis"))),pe.createElement(ln,{size:12})),pe.createElement(Ir,{variant:"outlined",type:"primary",size:"large",onClick:o},pe.createElement(pn,{variant:"title",size:"medium",color:"primary"},eo.t("See Details"))))}i(Nr,"SwapDetailsCompleteModal");import qd from"react";import{i18n as Fd}from"@lingui/core";import{Alert as hl,IconButton as Ud,LinkIcon as $d}from"@rango-dev/ui";import it,{Fragment as zd}from"react";import{Alert as Md,ChevronDownIcon as Ld,ChevronUpIcon as Pd,IconButton as Dd}from"@rango-dev/ui";import un,{useState as _d}from"react";function cl(t){let{message:e}=t,[o,n]=_d(!1);return un.createElement(Md,{type:"error",title:e.shortMessage,action:e.detailedMessage.content&&un.createElement(Dd,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},o?un.createElement(Pd,{size:12,color:"gray"}):un.createElement(Ld,{size:12,color:"gray"})),footer:o?e.detailedMessage.content:void 0})}i(cl,"FailedAlert");import{styled as Od}from"@rango-dev/ui";var ml=Od("div",{display:"flex",flexDirection:"column",gap:"$10"});import{i18n as dl}from"@lingui/core";import{PendingSwapNetworkStatus as Mr}from"@rango-dev/queue-manager-rango-preset";import{Alert as Lr,Button as fl}from"@rango-dev/ui";import to from"react";function gl(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?to.createElement(Lr,{type:"warning",title:n.shortMessage,action:to.createElement(fl,{size:"xxsmall",type:"warning",onClick:()=>{o(Mr.WaitingForNetworkChange),e().catch(s=>{console.log(s)})}},dl.t("Change"))}):r===Mr.WaitingForConnectingWallet?to.createElement(Lr,{type:"warning",title:n.shortMessage,action:to.createElement(fl,{size:"xxsmall",type:"warning",onClick:()=>{o(Mr.WaitingForConnectingWallet)}},dl.t("Connect"))}):to.createElement(Lr,{type:"warning",title:n.shortMessage})}i(gl,"WarningAlert");function Pr(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:s,hasAlreadyProceededToSign:a}=t,l=Ut(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l;return it.createElement(ml,null,s.explorerUrl?.map((c,d,m)=>{let f=d+c.url,g=d===m.length-1,h=g&&u||p,w=g&&s.status==="failed";return it.createElement(zd,{key:f},it.createElement(hl,{type:h&&"loading"||w&&"error"||"success",title:c.description?`${c.description} Tx`:Fd.t("View transaction"),action:c.url&&it.createElement(Ud,{variant:"ghost",size:"xsmall",onClick:()=>window.open(c.url,"_blank")},it.createElement($d,{size:16}))}))}),(u&&!a||p&&!s.explorerUrl?.length)&&it.createElement(hl,{type:"loading",title:r.shortMessage}),s.status!=="failed"&&l&&it.createElement(gl,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),s.status==="failed"&&it.createElement(cl,{message:r}))}i(Pr,"SwapDetailsAlerts");var yl=2e3,Sl=60,Cl=i(({swap:t,...e})=>{let o=t.hasAlreadyProceededToSign!==!1;return t.steps.map((n,r)=>{let s=r===0?t.inputAmount:t.steps[r-1].outputAmount;return{from:{token:{displayName:n.fromSymbol,image:n.fromLogo||""},chain:{displayName:n.fromBlockchain,image:n.fromBlockchainLogo||""},price:{value:k(s,6,6)}},to:{token:{displayName:n.toSymbol,image:n.toLogo},chain:{displayName:n.toBlockchain,image:n.toBlockchainLogo||""},price:{value:k(n.outputAmount||n.expectedOutputAmountHumanReadable,6,6)}},swapper:{displayName:n.swapperId,image:n.swapperLogo||""},alerts:qd.createElement(Pr,{step:n,hasAlreadyProceededToSign:o,...e})}})},"getSteps");function Tl(t){if(Ut(t)&&t.status!=="failed"&&t.status!=="success")return"warning";switch(t.status){case"created":return"default";case"approved":case"waitingForApproval":case"running":return"in-progress";case"failed":return"error";case"success":return"completed"}}i(Tl,"getStepState");import{styled as Nt}from"@rango-dev/ui";var kl=Nt("div",{display:"flex",width:"100%",flexDirection:"column",alignItems:"center",height:"0",flexGrow:1,"& .row":{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $5",borderBottom:"1px solid $neutral300",color:"$neutral500"},"& .request-id":{display:"flex",justifyContent:"center",alignItems:"center",height:"$24"},"& .output":{display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"},"& .title-steps":{textAlign:"left",width:"100%",padding:"0 $20 $10"}}),wl=Nt("div",{width:"100%",padding:"0px 15px"}),vl=Nt("div",{padding:"$0 $0 $20 $20",width:"100%",overflow:"auto"}),TB=Nt("div",{display:"flex",flexDirection:"column",gap:"$10"}),xl=Nt("div",{height:"450px",display:"flex",alignItems:"center",textAlign:"center"}),El=Nt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1});var rf=20;function Dr(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{tokens:s}=T.use.meta(),{canSwitchNetworkTo:a,connect:l,getWalletInfo:p}=tf(),u=B.use.retry(),c=nf(),{navigateBackFrom:d}=te(),m=of(null),[f,g]=Zd(yl),[h,w]=Bl(null),[b,S]=Bl(null);ef({elementRef:m,paddingRight:Jd.sizes[rf]});let A=i(()=>{r(),w(null)},"onCancel"),E=Be.use.getUnreadNotifications(),v=Be.use.setAsRead(),P=E(),W=Gd(e),I=W?.networkStatus;bl(()=>{P.find(ie=>ie.requestId===e.requestId)&&(e.status==="success"||e.status==="failed")&&(S(e.status),v(e.requestId))},[e.status]),bl(()=>{M?w(cn.WaitingForNetworkChange):I===cn.WaitingForConnectingWallet||I===cn.NetworkChanged?w(I):w(null)},[I]);let G=Ci(e),ne=W?Hd(e,W):null,C=W?Vd(e,W):null,_=el(e),O=Ti(e),se=i(ee=>!!p(ee)?.mobileWallet,"isMobileWallet"),M=I===cn.WaitingForNetworkChange&&!!ne&&!!C?.walletType&&(se(C.walletType)||a(C.walletType,ne)),ae=M?l.bind(null,C.walletType,ne):void 0,Ie=Si(e,W),U=Cl({swap:e,switchNetwork:ae,showNetworkModal:I,setNetworkModal:w,message:Ie}),K=U.length,[Ee,ge]=[e.steps[0],e.steps[K-1]],Ne=ge.outputAmount||ge.expectedOutputAmountHumanReadable,re=e.steps.reduce((ee,ie)=>ee+parseFloat(ie.feeInUsd||""),0),Je=e.steps.reduce((ee,ie)=>ee+(ie.estimatedTimeInSeconds||0),0),F=Math.floor(Je/Sl),X=e.steps.find(ee=>ee.diagnosisUrl)?.diagnosisUrl,H=k(String(parseFloat(k(Ne,6,6))*(go(ge.toBlockchain,ge.toSymbol,ge.toSymbolAddress,s)||0)),4,4),$=k(String(parseFloat(e.inputAmount)*(go(Ee.fromBlockchain,Ee.fromSymbol,Ee.fromSymbolAddress,s)||0)),4,4),he=Re($,H),ye=e.status==="success"?`You have received ${k(Ne,6,6)} ${U[K-1].to.token.displayName} in ${yo(e.wallets[U[K-1].to.chain.displayName]?.address||"")} wallet on ${U[K-1].to.chain.displayName} chain.`:`${dt.t("Transaction was not sent.")} ${G?`${G.outputAmount} ${G.symbol} on ${G.blockchain} remain in your wallet`:""}`;return Q.createElement(Y,{noPadding:!0,header:{title:dt.t("Swap and Bridge"),onBack:d.bind(null,y.swapDetails),onCancel:e.status==="running"?()=>w("cancel"):void 0,suffix:e.status!=="running"&&Q.createElement(wt,null,Q.createElement(Al,{variant:"ghost",type:"error",size:"xsmall",onClick:()=>w("delete")},Q.createElement(Mt,{size:"medium",variant:"label",color:"error"},dt.t("Delete"))))},footer:O&&!b&&Q.createElement(Al,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:()=>{u(e),setTimeout(()=>{c(y.home)},0)}},dt.t("Try again"))},Q.createElement(kl,null,Q.createElement(wl,null,Q.createElement("div",{className:"row"},Q.createElement(Mt,{variant:"label",size:"large",color:"neutral900"},`${dt.t("Request ID")}:`),Q.createElement("div",{className:"request-id"},Q.createElement(Mt,{variant:"label",size:"small",color:"neutral900"},o),Q.createElement(Xd,{variant:"ghost",onClick:g.bind(null,o||"")},Q.createElement(Rd,{size:16,color:"gray"})))),Q.createElement("div",{className:"row"},Q.createElement(Mt,{variant:"label",size:"large",color:"neutral900"},`${dt.t("Created at")}:`),Q.createElement(Mt,{variant:"label",size:"small",color:"neutral900"},_))),Q.createElement("div",{className:"output"},Q.createElement(jd,{fee:k(String(re),2,2),time:F,steps:K}),Q.createElement(Yd,{from:{price:{value:k(e.inputAmount,6,6),usdValue:$},token:{displayName:U[0].from.token.displayName,image:U[0].from.token.image},chain:{image:U[0].from.chain.image,displayName:U[0].from.chain.displayName}},to:{price:{value:k(Ne,6,6),usdValue:H},token:{displayName:U[K-1].to.token.displayName,image:U[K-1].to.token.image},chain:{image:U[K-1].to.chain.image,displayName:U[K-1].to.chain.displayName}},percentageChange:k(he,2,2),warningLevel:gt(he?.toNumber()??0)})),Q.createElement("div",{className:"title-steps"},Q.createElement(Mt,{variant:"title",size:"small"},dt.t("Swaps steps"))),Q.createElement(Kd,{size:8}),Q.createElement(vl,{ref:m},U.map((ee,ie)=>{let dn=ie,ft=Tl(e.steps[ie]),Dt=ft==="error"||ft==="in-progress"||ft==="warning"||ft==="completed"&&ie===U.length-1;return Q.createElement(Qd,{key:dn,step:ee,type:"route-progress",ref:m,state:ft,hasSeparator:ie!==0,tabIndex:dn,isFocused:Dt})}))),Q.createElement(Wr,{state:h,onClose:()=>w(null),onCancel:A,onDelete:n,message:Ie.detailedMessage.content,currentStepWallet:C}),Q.createElement(Nr,{open:!!b,diagnosisUrl:X,onClose:()=>S(null),status:e.status==="success"?"success":"failed",priceValue:k(Ne,6,6),usdValue:H,percentageChange:k(he,2,2),token:{displayName:U[K-1].to.token.displayName,image:U[K-1].to.token.image},chain:{image:U[K-1].to.chain.image},description:ye}))}i(Dr,"SwapDetails");import{i18n as _r}from"@lingui/core";import{NotFound as sf,Spinner as af}from"@rango-dev/ui";import Lt from"react";function Wl(t){let{requestId:e,loading:o}=t,{navigateBackFrom:n}=te();return Lt.createElement(Y,{header:{title:_r.t("Swap and Bridge"),onBack:n.bind(null,y.swapDetails),suffix:Lt.createElement(wt,null)}},Lt.createElement(xl,null,o?Lt.createElement(El,null,Lt.createElement(af,{size:24})):Lt.createElement(sf,{title:_r.t("Not found"),description:_r.t("swapNotFound",{requestId:e},{message:"Swap with request ID = ${requestId} not found."})})))}i(Wl,"SwapDetailsPlaceholder");function Nl(){let{manager:t,state:e}=pf(),o=!e.loadedFromPersistor,n=Vo(t),r=ke.use.selectedSwapRequestId(),{navigateBackFrom:s}=te(),a=n.find(({swap:c})=>c.requestId===r),l=i(()=>{if(a?.id){let c=t?.get(a.id);c&&lf(c)}},"onCancel"),p=i(async()=>{if(a?.id)try{await t?.deleteQueue(a.id),s(y.swapDetails)}catch(c){console.log(c)}},"onDelete"),u=a?.swap;return u?Il.createElement(Dr,{swap:u,requestId:r||"",onCancel:l,onDelete:p}):Il.createElement(Wl,{requestId:r||"",loading:o})}i(Nl,"SwapDetailsPage");import{i18n as mn}from"@lingui/core";import{AutoThemeIcon as uf,DarkModeIcon as cf,LightModeIcon as mf,List as df,ListItemButton as ff,Radio as Or,RadioRoot as gf,Typography as Fr}from"@rango-dev/ui";import ve from"react";function Ml(){let{navigateBackFrom:t}=te(),e=q.use.theme(),o=q.use.setTheme(),n=[{id:"light",value:"light",title:ve.createElement(Fr,{variant:"title",size:"xmedium"},mn.t("Light")),onClick:()=>o("light"),start:ve.createElement(mf,{color:"gray"}),end:ve.createElement(Or,{value:"light"})},{id:"dark",value:"dark",title:ve.createElement(Fr,{variant:"title",size:"xmedium"},mn.t("Dark")),onClick:()=>o("dark"),start:ve.createElement(cf,{color:"gray"}),end:ve.createElement(Or,{value:"dark"})},{id:"auto",value:"auto",title:ve.createElement(Fr,{variant:"title",size:"xmedium"},mn.t("Auto")),onClick:()=>o("auto"),start:ve.createElement(uf,{color:"gray"}),end:ve.createElement(Or,{value:"auto"})}];return ve.createElement(Y,{header:{onBack:t.bind(null,y.settings),title:mn.t("Theme")}},ve.createElement(Ye,null,ve.createElement(gf,{onValueChange:r=>o(r),value:e},ve.createElement(df,{type:ve.createElement(ff,{title:"Theme",id:"_",onClick:()=>console.log()}),items:n}))))}i(Ml,"ThemePage");var yf=i(t=>t.replace("/",""),"getAbsolutePath");function Ll(t){let{config:e}=t;return hf([{path:y.home,element:xe.createElement(la,null)},{path:y.fromSwap,element:xe.createElement(kr,{type:"from",supportedBlockchains:e?.from?.blockchains,supportedTokens:e?.from?.tokens,pinnedTokens:e?.pinnedTokens})},{path:y.toSwap,element:xe.createElement(kr,{type:"to",supportedBlockchains:e?.to?.blockchains,supportedTokens:e?.to?.tokens,pinnedTokens:e?.pinnedTokens})},{path:y.fromBlockchain,element:xe.createElement(cr,{type:"from",supportedBlockchains:e?.to?.blockchains})},{path:y.toBlockchain,element:xe.createElement(cr,{type:"to",supportedBlockchains:e?.to?.blockchains})},{path:y.settings,element:xe.createElement(Ja,{singleTheme:e?.theme?.singleTheme,supportedSwappers:e?.liquiditySources})},{path:y.themes,element:xe.createElement(Ml,null)},{path:y.languages,element:xe.createElement(pa,null)},{path:y.exchanges,element:xe.createElement(rr,{sourceType:"Exchanges",supportedSwappers:e?.liquiditySources})},{path:y.bridges,element:xe.createElement(rr,{sourceType:"Bridges",supportedSwappers:e?.liquiditySources})},{path:y.swaps,element:xe.createElement(Vs,null)},{path:y.swapDetails,element:xe.createElement(Nl,null)},{path:y.wallets,element:xe.createElement(ls,{supportedWallets:e?.wallets,multiWallets:typeof e?.multiWallets>"u"?!0:e.multiWallets,config:e})},{path:yf(y.confirmSwap),element:xe.createElement(_s,{config:e})}])}i(Ll,"AppRoutes");import{isApprovalTX as Sf,MainEvents as Dl,RouteEventType as _l,StepEventType as Pt,StepExecutionEventStatus as Cf,useEvents as Tf}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Ol}from"react";import{StepExecutionBlockedEventStatus as Ur}from"@rango-dev/queue-manager-rango-preset";var Pl=[Ur.WAITING_FOR_CHANGE_WALLET_ACCOUNT,Ur.WAITING_FOR_NETWORK_CHANGE,Ur.WAITING_FOR_WALLET_CONNECT];function Fl(){let t=D.use.connectedWallets(),e=D.use.getWalletsDetails(),o=Be.use.setNotification(),n=Be.use.setAsRead(),r=Tf();return Ol(()=>(r.on(Dl.StepEvent,s=>{let{event:a,step:l,route:p}=s;if(a.type===Pt.TX_EXECUTION&&a.status===Cf.TX_SENT&&!Sf(l)||a.type===Pt.SUCCEEDED){let c=t.find(m=>m.chain===l?.fromBlockchain),d=l?.fromBlockchain!==l?.toBlockchain&&t.find(m=>m.chain===l?.toBlockchain);c&&e([c]),d&&e([d])}a.type===Pt.TX_EXECUTION_BLOCKED&&Pl.includes(a.status)||a.type===Pt.FAILED?o(a,p):(a.type===Pt.TX_EXECUTION||a.type===Pt.CHECK_STATUS)&&n(p.requestId)}),()=>r.all.clear()),[r,t.length]),Ol(()=>(r.on(Dl.RouteEvent,s=>{let{event:a,route:l}=s;(a.type===_l.FAILED||a.type===_l.SUCCEEDED)&&o(a,l)}),()=>r.all.clear()),[r,t.length]),null}i(Fl,"WidgetEvents");import{globalCss as kf}from"@rango-dev/ui";var Ul=i(()=>kf({"@import":["url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')","url('https://fonts.cdnfonts.com/css/times-new-roman')"]})(),"globalFont");import{createTheme as wf,darkTheme as vf,lightTheme as xf}from"@rango-dev/ui";import{useEffect as $l,useState as Ef}from"react";function zl({fontFamily:t="Roboto",borderRadius:e=ei,secondaryBorderRadius:o=ti,mode:n="auto"}){let r=q.use.theme(),s=T.use.fetchMeta(),a=q.use.setTheme(),l=wf({radii:{primary:`${e}px`,secondary:`${o}px`},fonts:{widget:t}}),p=`${l.className} ${xf.className}`,u=`${l.className} ${vf.className}`,[c,d]=Ef("light");return $l(()=>{i(async()=>{await s()},"fetchData")();let g=i(h=>{h.matches?d("dark"):d("light")},"switchTheme");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&d("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),$l(()=>{n!=="auto"&&a(n)},[n]),{activeTheme:i(()=>r==="auto"?c==="dark"?u:p:r==="dark"?u:p,"getActiveTheme")()}}i(zl,"useTheme");import Af,{useMemo as bf}from"react";import{Provider as Bf}from"@rango-dev/queue-manager-react";import{makeQueueDefinition as Wf,checkWaitingForNetworkChange as If}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Nf}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as Mf}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Lf}from"rango-types";function Pf(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:s,getWalletInfo:a}=Nf(),l=bf(()=>Wf({API_KEY:uo("API_KEY")}),[]),{blockchains:p}=T.use.meta(),c={blockchains:D.use.connectedWallets().map(S=>({accounts:[S],name:S.chain}))},d=i((S,A)=>{if(s(S,A))return r(S,A)},"switchNetwork"),m=i(S=>!!a(S).mobileWallet,"isMobileWallet"),f=p.filter(S=>S.enabled).reduce((S,A)=>(S[A.name]=A,S),{}),g=p.filter(Lf),h=i(S=>{let{supportedChains:A}=a(S);return mo(A)},"getSupportedChainNames"),w=e(),b={meta:{blockchains:f,evmBasedChains:g,evmNetworkChainInfo:Mf(g),getSupportedChainNames:h},getSigners:o,wallets:c,providers:w,switchNetwork:d,canSwitchNetworkTo:s,connect:r,state:n,isMobileWallet:m};return Af.createElement(Bf,{queuesDefs:[l],context:b,onPersistedDataLoaded:S=>{If(S)},isPaused:!1},t.children)}i(Pf,"QueueManager");var ql=Pf;import{Events as $r,Provider as _f}from"@rango-dev/wallets-react";import{isEvmBlockchain as Of}from"rango-sdk";import Gl,{createContext as Ff,useRef as Uf}from"react";import{useEffect as Df}from"react";function Hl(t,e){let o=D.use.clearConnectedWallet(),n=Io(void 0,e);return Df(()=>{o(),n=Io(t,{walletConnectProjectId:e?.walletConnectProjectId})},[t]),{providers:n}}i(Hl,"useWalletProviders");var zr=Ff({onConnectWallet:()=>{}});function qr(t){let{blockchains:e}=T.use.meta(),{providers:o}=Hl(t.providers,t?.options),n=D.use.disconnectWallet(),r=D.use.connectWallet(),s=Uf(),a=e.filter(Of).map(p=>p.name),l=i((p,u,c,d,m)=>{if(u===$r.ACCOUNTS)if(c){let f=mo(m),g=ii(p,c,a,f);r(g)}else n(p);if(u===$r.ACCOUNTS&&d.connected){let f=`${p}-${d.network}-${c}`;d.connected&&(s.current?s.current(f):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(u===$r.NETWORK&&d.network){let f=`${p}-${d.network}`;s.current?s.current(f):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(p,u,c,d,m)},"onUpdateState");return Gl.createElement(zr.Provider,{value:{onConnectWallet:p=>{s.current=p}}},Gl.createElement(_f,{allBlockChains:e,providers:o,onUpdateState:l,autoConnect:!0},t.children))}i(qr,"WidgetWallets");var Vf=zf("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center",fontFamily:"$widget"});function Rl(t){let{config:e}=t;Ul();let{activeTheme:o}=zl(e?.theme||{}),[n,r]=Vl(""),[s,a]=Vl(),l=qf(zr);return Gf(()=>{e?.apiKey&&Zr({API_KEY:e?.apiKey})},[e]),Hf(()=>{q.persist.rehydrate(),Be.persist.rehydrate(),l.onConnectWallet(r)},[]),Qe.createElement($f,{language:e?.language},Qe.createElement(Vf,{id:"swap-container",className:o},Qe.createElement(ql,null,Qe.createElement(Fl,null),Qe.createElement(vi,{lastConnectedWallet:n,disconnectedWallet:s,clearDisconnectedWallet:()=>{a(void 0)}},Qe.createElement(Ll,{config:e})))))}i(Rl,"Main");function Rf(t){return t.config?.externalWallets?Qe.createElement(Rl,{...t}):Qe.createElement(qr,{providers:t.config?.wallets,options:{walletConnectProjectId:t.config?.walletConnectProjectId}},Qe.createElement(Rl,{...t}))}i(Rf,"Widget");import{useWallets as ys}from"@rango-dev/wallets-react";import{useEvents as rI,MainEvents as iI,RouteEventType as dI,StepEventType as wI,StepExecutionEventStatus as vI,StepExecutionBlockedEventStatus as xI}from"@rango-dev/queue-manager-rango-preset";export{iI as MainEvents,dI as RouteEventType,wI as StepEventType,xI as StepExecutionBlockedEventStatus,vI as StepExecutionEventStatus,Rf as Widget,qr as WidgetWallets,ys as useWallets,rI as useWidgetEvents};
1
+ var jl=Object.defineProperty;var i=(t,e)=>jl(t,"name",{value:e,configurable:!0});import{I18nManager as zf,styled as qf}from"@rango-dev/ui";import Qe,{useContext as Hf,useEffect as oo,useMemo as Gf,useState as Rl}from"react";import Bo,{Fragment as vp}from"react";import{MemoryRouter as xp,useInRouterContext as Ap}from"react-router";import{useQueueManager as Ep}from"@rango-dev/queue-manager-rango-preset";import{useEffect as xn,useRef as An}from"react";import{createSearchParams as Tp,useLocation as kp,useSearchParams as wp}from"react-router-dom";var y={home:"/",fromSwap:"from-swap",fromBlockchain:"/from-swap/blockchains",toBlockchain:"/to-swap/blockchains",toSwap:"to-swap",settings:"settings",liquiditySources:"/settings/liquidity-sources",themes:"/settings/themes",bridges:"/settings/bridges",exchanges:"/settings/exchanges",languages:"/settings/languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:"swaps/:requestId"};import ot from"bignumber.js";import{create as hp}from"zustand";import{subscribeWithSelector as yp}from"zustand/middleware";import Yl from"bignumber.js";var be=new Yl(0);import{BigNumber as Gr}from"bignumber.js";var no=i(t=>{let e=(t%60).toString().padStart(2,"0");return`${parseInt((t/60).toString()).toString().padStart(2,"0")}:${e}`},"secondsToString"),w=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Gr(t),r=1,s=1e3;for(let a=0;a<60;a++)if(new Gr(n.toFixed(a,r)).eq(n)){s=a;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,4))),r);for(let a=e||4;a<17;a++)if(n.gte(Math.pow(10,-a)))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,a))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var ro=i(t=>t?.result?.swaps?.reduce((e,o)=>e+o.estimatedTimeInSeconds,0)||0,"totalArrivalTime");var $e=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),_t=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function io(t,e=4){let o=parseFloat(t);if(isNaN(o))return t;let n=Math.pow(10,e);return(Math.round(o*n)/n).toString()}i(io,"limitDecimalPlaces");import ig from"bignumber.js";function Ze(t){return Array.from(new Set(t))}i(Ze,"removeDuplicateFrom");function gn(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(gn,"areEqual");function Rr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Rr,"debounce");function st(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(st,"containsText");var Vr=i((t,e)=>{t=t.replace(/^#/,""),t.length===3&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]);let[o,n,r]=t.match(/.{2}/g);[o,n,r]=[parseInt(o,16)+e,parseInt(n,16)+e,parseInt(r,16)+e],o=Math.max(Math.min(255,o),0).toString(16),n=Math.max(Math.min(255,n),0).toString(16),r=Math.max(Math.min(255,r),0).toString(16);let s=(o.length<2?"0":"")+o,a=(n.length<2?"0":"")+n,l=(r.length<2?"0":"")+r;return`#${s}${a}${l}`},"colorShade"),Kr=i((t,e)=>{let o={[t]:e};for(let n=1;n<10;n++)n<5&&(o={...o,[t+n*100]:Vr(e,(5-n)*32)}),n===5&&(o={...o,[t+n*100]:e}),n>5&&(o={...o,[t+n*100]:Vr(e,-((n-5)*32))});return o},"generateRangeColors");function hn(t,e,o){return o&&t.find(n=>{let r=e?.split("--");return r?.length===1?n.symbol===r[0]&&n.address===null&&n.blockchain===o.name:n.symbol===r?.[0]&&n.address===r?.[1]&&n.blockchain===o.name})||null}i(hn,"searchParamsToToken");function Xr(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i(Xr,"getBestRouteToTokenUsdPrice");function yn(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}i(yn,"isNumberOfSwapsChanged");function Sn(t,e){let o=t.result?.swaps.map(r=>r.swapperId)||[],n=e.result?.swaps.map(r=>r.swapperId)||[];return!gn(o,n)}i(Sn,"isRouteSwappersUpdated");function Cn(t,e){let o=t.result?.swaps.map(r=>r.to.symbol)||[],n=e.result?.swaps.map(r=>r.to.symbol)||[];return!gn(o,n)}i(Cn,"isRouteInternalCoinsUpdated");function jr(t,e){return yn(t,e)||Sn(t,e)||Cn(t,e)}i(jr,"isRouteChanged");function Yr(t,e){if(e===null)return null;let o=e?.find(n=>n.blockchain===t.chain)?.wallets.find(n=>n.address?.toLowerCase()===t.address.toLowerCase());return o?o.requiredAssets:null}i(Yr,"getRequiredBalanceOfWallet");function Qr(t){if(!t)return null;let e=(t.result?.swaps||[]).map(o=>({...o,fromAmount:w(o.fromAmount,6,6),toAmount:w(o.toAmount,6,6)}));return{...t,...t.result&&{result:{...t.result,swaps:e}}}}i(Qr,"getFormattedBestRoute");function gt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(gt,"getPriceImpactLevel");import{PendingSwapNetworkStatus as Co}from"@rango-dev/queue-manager-rango-preset";import ke from"bignumber.js";function Jr(t){return t.result?.swaps.map(e=>({swapper:{displayName:e.swapperId,image:e.swapperLogo},from:{token:{displayName:e.from.symbol,image:e.from.logo},chain:{displayName:e.from.blockchain,image:e.from.blockchainLogo},price:{value:w(e.fromAmount,6,6),usdValue:w(e.from.usdPrice?.toString(),4,4)}},to:{token:{displayName:e.to.symbol,image:e.to.logo},chain:{displayName:e.to.blockchain,image:e.to.blockchainLogo},price:{value:w(e.toAmount,6,6),usdValue:w(e.to.usdPrice?.toString(),4,4)}}}))}i(Jr,"formatBestRoute");function ao(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain,s=e[e.length-1];n!=s&&e.push(n),s=e[e.length-1],r!=s&&e.push(r)}),e}i(ao,"getRequiredWallets");function lo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(lo,"isValidAddress");import{i18n as Se}from"@lingui/core";var Ft=(r=>(r[r.ROUTE_UPDATED=0]="ROUTE_UPDATED",r[r.ROUTE_SWAPPERS_UPDATED=1]="ROUTE_SWAPPERS_UPDATED",r[r.ROUTE_COINS_UPDATED=2]="ROUTE_COINS_UPDATED",r[r.ROUTE_AND_OUTPUT_AMOUNT_UPDATED=3]="ROUTE_AND_OUTPUT_AMOUNT_UPDATED",r))(Ft||{});var q={genericServerError:Se.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Se.t("Please reset your liquidity sources."),description:Se.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources")},noRoutesError:{title:Se.t("No Routes Found"),description:"Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination."},bridgeLimitErrors:{increaseAmount:Se.t("Bridge Limit Error: Please increase your amount"),decreaseAmount:Se.t("Bridge Limit Error: Please decrease your amount")},highValueLossError:{impactTitle:Se.t("High Price Impact"),title:Se.t("Price impact is too high!"),description:Se.t("The price impact is significantly higher than the allowed amount. If you are sure, continue, otherwise, change the swap."),confirmMessage:Se.t("Confirm High price impact")},routeUpdatedWithHighValueLoss:{title:Se.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Se.t("USD Price Unknown"),title:Se.t("USD Price Unknown, Cannot calculate Price Impact."),description:Se.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Se.t("Confirm USD Price Unknown")}};function po(t){switch(t.type){case 0:return t.diagnosisMessage??q.noRoutesError.title;case 2:return q.genericServerError;case 1:return q.routeUpdatedWithHighValueLoss.title;default:return""}}i(po,"getConfirmSwapErrorMessage");import{i18n as uo}from"@lingui/core";var at={connectWallet:uo.t("Connect Wallet"),swap:uo.t("Swap"),swapAnyway:uo.t("Swap anyway"),ethRouteWarning:uo.t("The route goes through Ethereum. Continue?")};import{create as cp}from"zustand";import{RangoClient as Zl}from"rango-sdk";var Jl="c6381a79-2817-4602-83bf-6a641a409e32",Tn={API_KEY:Jl};function co(t){return Tn[t]}i(co,"getConfig");function ei(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Tn=e,Tn}i(ei,"initConfig");var ti=20,oi=25;var mo,ht=i(()=>mo||(mo=new Zl(co("API_KEY")),mo),"httpService");import{WalletState as ze}from"@rango-dev/ui";import{readAccountAddress as tp}from"@rango-dev/wallets-react";import{detectInstallLink as op,getCosmosExperimentalChainInfo as np,isEvmAddress as rp,KEPLR_COMPATIBLE_WALLETS as Ug,Networks as ri}from"@rango-dev/wallets-shared";import kn from"bignumber.js";import{isCosmosBlockchain as ip}from"rango-types";import{WalletTypes as ep}from"@rango-dev/wallets-shared";var ni=[ep.LEAP];function sp(t){switch(!0){case t.connected:return ze.CONNECTED;case t.connecting:return ze.CONNECTING;case!t.installed:return ze.NOT_INSTALLED;default:return ze.DISCONNECTED}}i(sp,"mapStatusToWalletState");function ii(t,e,o,n){return o.filter(r=>!ni.includes(r)).filter(r=>{if(n){let{supportedChains:s}=e(r);return!!s.find(a=>a.name===n)}return!0}).map(r=>{let{name:s,img:a,installLink:l}=e(r),p=sp(t(r));return{title:s,image:a,link:op(l),state:p,type:r}})}i(ii,"mapWalletTypesToWalletInfo");function fo(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(fo,"walletAndSupportedChainsNames");function si(t,e,o,n){let r=[];function s(l,p){if(!!!r.find(c=>c.chain===l)){let c={address:p,chain:l,walletType:t};r.push(c)}}i(s,"addAccount");let a=n||[];return e.forEach(l=>{let{address:p,network:u}=tp(l),c=a.length>0,f=a.includes(u),m=u===ri.Unknown;if(c&&!f&&!m)return;let g=u===ri.Unknown&&rp(p);if(m&&!g)return;o.includes(u)||g?a.filter(b=>o.includes(b)).forEach(b=>{s(b,p.toLowerCase())}):s(u,p)}),r}i(si,"prepareAccountsForWalletStore");function ai(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain;e.includes(n)||e.push(n),e.includes(r)||e.push(r),o.internalSwaps&&Array.isArray(o.internalSwaps)&&o.internalSwaps.forEach(s=>{let a=s.from.blockchain,l=s.to.blockchain;e.includes(a)||e.push(a),e.includes(l)||e.push(l)})}),e}i(ai,"getRequiredChains");function yt(t,e,o,n){if(t.length===0)return null;let r=t.filter(s=>s.chain===e);return r.length===0?null:r.map(s=>s.balances?.find(a=>n!==null&&a.address===n||n===null&&a.address===n&&a.symbol===o)||null).filter(s=>s!==null).sort((s,a)=>parseFloat(a?.amount||"0")-parseFloat(s?.amount||"1")).find(()=>!0)||null}i(yt,"getBalanceFromWallet");function go(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(go,"isAccountAndWalletMatched");function li(t,e){let{blockChain:o,balances:n=[]}=t;return n?.map(r=>({chain:o,symbol:r.asset.symbol,ticker:r.asset.symbol,address:r.asset.address||null,rawAmount:r.amount.amount,decimal:r.amount.decimals,amount:new kn(r.amount.amount).shiftedBy(-r.amount.decimals).toFixed(),logo:"",usdPrice:ho(o,r.asset.symbol,r.asset.address,e)||null}))||[]}i(li,"makeBalanceFor");function pi(t){return{...t,loading:!1,error:!0}}i(pi,"resetConnectedWalletState");var St=i(t=>!t.some(o=>o.balance)?t.filter(o=>!o.address).concat(t.filter(o=>o.address&&!o.isSecondaryCoin),t.filter(o=>o.isSecondaryCoin)):t.filter(o=>!!o.balance).sort((o,n)=>parseFloat(n.balance?.usdValue||"0")-parseFloat(o.balance?.usdValue||"0")).concat(t.filter(o=>!o.balance&&!o.isSecondaryCoin),t.filter(o=>!o.balance&&o.isSecondaryCoin)),"sortTokens"),ho=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice"),yo=i((t,e)=>{let o=np(Object.entries(t).map(([,n])=>n).filter(ip));return o&&o[e]?.experimental},"isExperimentalChain");function Ct(t,e){return t.map(({balance:o,...n})=>{let r=w(new kn(yt(e,n.blockchain,n.symbol,n.address)?.amount||be)),s="";return n.usdPrice&&(s=w(new kn(yt(e,n.blockchain,n.symbol,n.address)?.amount||be).multipliedBy(n.usdPrice))),{...n,...r!=="0"&&{balance:{amount:r,usdValue:s}}}})}i(Ct,"getTokensWithBalance");function Ot(t,e,o,n){if(t?.name===n[0]?.name)return n;let s=e.filter(a=>a.blockchain===t?.name);return St(Ct(s,o))}i(Ot,"getSortedTokens");function Te(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}i(Te,"tokensAreEqual");function wn(t,e){let o,n=t[0],r=t[1];return t.length===1?o=n:Te(n,e)?o=r:o=n,o}i(wn,"getDefaultToken");function ui(t){return t.sort((e,o)=>+(o.state===ze.CONNECTED)-+(e.state===ze.CONNECTED)||+(o.state===ze.DISCONNECTED||o.state===ze.CONNECTING)-+(e.state===ze.DISCONNECTED||e.state===ze.CONNECTING))}i(ui,"sortWalletsBasedOnConnectionState");function So(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(So,"getConciseAddress");function ci({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(ci,"getAddress");var ap=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Be=ap;import{create as lp}from"zustand";import{subscribeWithSelector as pp}from"zustand/middleware";import{shallow as up}from"zustand/shallow";var D=Be(lp()(pp((t,e)=>({connectedWallets:[],customDestination:"",loading:!1,connectWallet:o=>{let n=e().getWalletsDetails;t(r=>({loading:!0,connectedWallets:r.connectedWallets.filter(s=>s.walletType!==o[0].walletType).concat(o.map(s=>{let a=!r.connectedWallets.find(l=>l.chain===s.chain&&l.selected);return{balances:[],address:s.address,chain:s.chain,explorerUrl:null,walletType:s.walletType,selected:a,loading:!0,error:!1}}))})),n(o)},disconnectWallet:o=>{t(n=>{let r=n.connectedWallets.filter(s=>s.selected&&s.walletType!==o).map(s=>s.chain);return{connectedWallets:n.connectedWallets.filter(s=>s.walletType!==o).map(s=>r.includes(s.chain)?s:(r.push(s.chain),{...s,selected:!0}))}})},selectWallets:o=>t(n=>({connectedWallets:n.connectedWallets.map(r=>{let s=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),a=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return s?{...r,selected:!1}:a?{...r,selected:!0}:r})})),clearConnectedWallet:()=>t(()=>({connectedWallets:[],selectedWallets:[]})),getWalletsDetails:async(o,n=!0)=>{let r=e().getWalletsDetails,{tokens:s}=k.getState().meta;t(a=>({loading:!0,connectedWallets:a.connectedWallets.map(l=>o.find(p=>go(p,l))?{...l,loading:!0}:l)}));try{let a=o.map(({address:u,chain:c})=>({address:u,blockchain:c})),p=(await ht().getWalletsDetails(a)).wallets;if(p)t(u=>({loading:!1,connectedWallets:u.connectedWallets.map(c=>{let f=o.find(d=>go(d,c)),m=p.find(d=>d.address===c.address&&d.blockChain===c.chain);return m?.failed&&f&&n&&r([f],!1),f&&m?{...c,explorerUrl:m.explorerUrl,balances:li(m,s)}:c})}));else throw new Error("Wallet not found")}catch{t(l=>({loading:!1,connectedWallets:l.connectedWallets.map(p=>o.find(u=>go(u,p))?pi(p):p)}))}}}))));D.subscribe(t=>t.connectedWallets,t=>{B.setState(({sourceTokens:e,destinationTokens:o})=>{let n=Ct(e,t),r=Ct(o,t);return{sourceTokens:St(n),destinationTokens:St(r)}})},{equalityFn:up});var k=Be(cp()(t=>({meta:{blockchains:[],popularTokens:[],swappers:[],tokens:[]},loadingStatus:"loading",setTokensWithBalance:()=>{let e=D.getState().connectedWallets;t(o=>({...o,meta:{...o.meta,tokens:St(Ct(o.meta.tokens,e))}}))},fetchMeta:async()=>{try{let e=await ht().getAllMetadata(),o=Ze(e.tokens.map(r=>r.blockchain)),n=e.blockchains.filter(r=>r.enabled&&o.includes(r.name));e.blockchains=n.sort((r,s)=>r.sort-s.sort),t({meta:e,loadingStatus:"success"})}catch{t({loadingStatus:"failed"})}}})));function wo(t,e){return!t||!e||t.lte(be)||e.lte(be)?0:e.div(t).minus(1).multipliedBy(100)}i(wo,"getOutputRatio");function vo(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new ke(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new ke(1e3)))??!1}i(vo,"outputRatioHasWarning");function xo(t){return(t?.result?.swaps||[]).filter(e=>{let o=e.fromAmountMinValue?new ke(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ke(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(xo,"hasLimitError");function Ao(t){if(!t)return{swap:null,fromAmountRangeError:"",recommendation:""};let e=(t?.result?.swaps||[]).filter(l=>{let p=l.fromAmountMinValue?new ke(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new ke(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?p?.gte(l.fromAmount)||u?.lte(l.fromAmount):p?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0];if(!e)return{swap:null,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new ke(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ke(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",s="",a="";return!r&&o&&o.gt(e.fromAmount)?(s=`Required: >= ${w(o,6,6)} ${e.from.symbol}`,a=q.bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(s=`Required: > ${w(o,6,6)} ${e.from.symbol}`,a=q.bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(s=`Required: <= ${w(n,6,6)} ${e.from.symbol}`,a=q.bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(s=`Required: < ${w(n,6,6)} ${e.from.symbol}`,a=q.bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:s,recommendation:a}}i(Ao,"LimitErrorMessage");function mi(t,e,o,n,r,s,a,l,p){return t!=="success"?{title:at.connectWallet,state:"waitForConnecting",disabled:!0}:e.length==0?{title:at.connectWallet,state:"waitForConnecting",disabled:!1}:o||!n||!n.result||r||!p||p==="0"?{title:at.swap,disabled:!0,state:"swap"}:s||a?{title:at.swapAnyway,disabled:!1,hasWarning:!0,state:"needToConfirm"}:l?{title:at.ethRouteWarning,disabled:!1,hasWarning:!0,state:"warning"}:{title:at.swap,disabled:!1,state:"swap"}}i(mi,"getSwapButtonState");function vn(t,e,o){return!((!o||o.lte(be))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}i(vn,"canComputePriceImpact");function dp(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain,s=e[e.length-1];n!=s&&e.push(n),s=e[e.length-1],r!=s&&e.push(r)}),e}i(dp,"requiredWallets");var fp=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice");function gp(t,e){let o=be;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let s=fp(r.asset.blockchain,r.asset.symbol,r.asset.address,e);o=o.plus(new ke(r.amount).multipliedBy(s||0))}return o}i(gp,"getUsdFeeOfStep");function Eo(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus(gp(n,e)),be)||null}i(Eo,"getTotalFeeInUsd");function di(t){return t.result?.swaps.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}i(di,"getMinRequiredSlippage");function fi(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(fi,"hasProperSlippage");function bo(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:s,disabledLiquiditySources:a,slippage:l,affiliateRef:p,affiliatePercent:u,affiliateWallets:c,initialRoute:f,destination:m}=t,d=s?.reduce((S,A)=>(S[A.chain]=A.address,S),{}),g=[];r?.forEach(S=>{let A=g.find(x=>x.blockchain===S.chain);A?A.addresses.push(S.address):g.push({blockchain:S.chain,addresses:[S.address]})});let h=!!f,v=Ze((f?.result?.swaps||[]).reduce((S,A)=>(S.push(A.from.blockchain,A.to.blockchain),A.internalSwaps&&Array.isArray(A.internalSwaps)&&A.internalSwaps.map(x=>{S.push(x.from.blockchain,x.to.blockchain)}),S),[]));return{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:u??void 0,affiliateWallets:c??void 0,checkPrerequisites:h,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:g,selectedWallets:d??{},slippage:l.toString(),...m&&{destination:m},...a.length>0&&{swapperGroups:a,swappersGroupsExclude:!0},...h&&{blockchains:v}}}i(bo,"createBestRouteRequestBody");function gi(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(gi,"getWalletsForNewSwap");function Tt(t){return t?.result?.outputAmount||null}i(Tt,"getRouteOutputAmount");function Re(t,e){return!t||!e?null:new ke(e).div(new ke(t)).minus(1).multipliedBy(100)}i(Re,"getPercentageChange");function hi(t,e){let o=Tt(t),n=Tt(e);if(!o||!n)return!1;let r=Re(o,n);return r?r.toNumber()<=-1:!0}i(hi,"isOutputAmountChangedALot");function yi(t,e){let o=t.validationStatus,n=ai(t);return e.sort((s,a)=>n.indexOf(s.chain)-n.indexOf(a.chain)).flatMap(s=>Yr(s,o)||[]).filter(s=>!s.ok).map(s=>{let a=s.asset.symbol,l=w(new ke(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=w(new ke(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=" for network fee"),s.reason==="INPUT_ASSET"&&(u=" for swap"),s.reason==="FEE_AND_INPUT_ASSET"&&(u=" for input and network fee"),`Needs \u2248 ${p} ${a}${u}, but you have ${l} ${a} in your ${s.asset.blockchain} wallet.`})}i(yi,"getBalanceWarnings");function Si(t,e){return(t?new ke(t):be).multipliedBy(e||0)}i(Si,"calcOutputUsdValue");function Ut(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Co.NetworkChanged}i(Ut,"isNetworkStatusInWarningState");function Ci(t,e){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),Ut(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case Co.WaitingForConnectingWallet:n=n||"Waiting for connecting wallet";break;case Co.WaitingForQueue:n=n||"Waiting for other running tasks to be finished";break;case Co.WaitingForNetworkChange:n=n||"Waiting for changing wallet network";break;default:n=n||"";break}r=r||"",n=n||"";let a=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:r,long:a}}}i(Ci,"getSwapMessages");function Ti(t){let e=null;if(t.status==="failed"){let o=t.steps.slice().reverse().filter(n=>n.status==="success")[0];o&&(e={blockchain:o.toBlockchain,symbol:o.toSymbol,outputAmount:o.outputAmount,address:o.toSymbolAddress})}return e}i(Ti,"getLastConvertedTokenInFailedSwap");function ki(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}i(ki,"shouldRetrySwap");function wi(t,e,o,n,r,s){return t||!e&&!dp(n).every(a=>r.map(l=>l.chain).includes(a))||!!e&&!o||!!e&&!!o&&s&&!lo(s,o)}i(wi,"confirmSwapDisabled");var $t=i((t,e)=>t?.usdPrice?new ot(e||be).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),B=Be(hp()(yp(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new ot(0),outputUsdValue:new ot(0),toBlockchain:null,toToken:null,bestRoute:null,routeWalletsConfirmed:!1,sourceTokens:[],destinationTokens:[],selectedWallets:[],customDestination:"",setRoute:e=>t(o=>{let n=null,r=be;return _t(o.inputAmount)?(e&&(n=e.result?.outputAmount?new ot(e.result?.outputAmount):null,r=Si(e.result?.outputAmount,Xr(e)||o.toToken?.usdPrice)),{bestRoute:e,...!!e&&{outputAmount:n,outputUsdValue:r}}):{}}),resetRoute:()=>t(()=>({bestRoute:null,outputAmount:null,outputUsdValue:new ot(0)})),setFromBlockchain:(e,o)=>{t(n=>{if(n.fromBlockchain?.name===e?.name)return{};let r=k.getState().meta.tokens,s=D.getState().connectedWallets,a=Ot(e,r,s,n.destinationTokens),l=wn(a,n.toToken);return{fromBlockchain:e,sourceTokens:a,...o&&{fromToken:l},...!!n.inputAmount&&{inputUsdValue:$t(l,n.inputAmount)}}})},setFromToken:e=>t(o=>({fromToken:e,...!!o.inputAmount&&{inputUsdValue:$t(e,o.inputAmount)}})),setToBlockchain:(e,o)=>{t(n=>{if(n.toBlockchain?.name===e?.name)return{};let r=k.getState().meta.tokens,s=D.getState().connectedWallets,a=Ot(e,r,s,n.destinationTokens);return{toBlockchain:e,destinationTokens:a,...o&&{toToken:wn(a,n.fromToken)}}})},setToToken:e=>t(()=>({toToken:e})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new ot(0),outputUsdValue:new ot(0),bestRoute:null},...!!o.fromToken&&{inputUsdValue:$t(o.fromToken,e)}}))},retry:e=>{let{tokens:o,blockchains:n}=k.getState().meta,r=D.getState().connectedWallets,s=e.status==="failed"?e.steps.findIndex(h=>h.status==="failed"):null;if(s===null||s<0)return;let a=e.steps[0],l=e.steps[e.steps.length-1],p=n.find(h=>h.name===a.fromBlockchain)||null,u=n.find(h=>h.name===l.toBlockchain)||null,c=o.find(h=>Te(h,{blockchain:a.fromBlockchain,symbol:a.fromSymbol,address:a.fromSymbolAddress})),f=o.find(h=>Te(h,{blockchain:l.toBlockchain,symbol:l.toSymbol,address:l.toSymbolAddress})),m=Ot(p,o,r,[]),d=Ot(u,o,r,[]),g=e.inputAmount;t({fromBlockchain:p,fromToken:c,inputAmount:g,outputAmount:null,inputUsdValue:$t(c||null,g),outputUsdValue:new ot(0),toBlockchain:u,toToken:f,bestRoute:null,sourceTokens:m,destinationTokens:d})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,sourceTokens:e.destinationTokens,destinationTokens:e.sourceTokens,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:$t(e.toToken,e.outputAmount?.toString()||"")})),resetFromBlockchain:()=>t(()=>({fromBlockchain:null,sourceTokens:[]})),resetToBlockchain:()=>t(()=>({toBlockchain:null,destinationTokens:[]})),setRouteWalletConfirmed:e=>t({routeWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetRouteWallets:()=>t({routeWalletsConfirmed:!1,selectedWallets:[],customDestination:""})}))));import{create as Sp}from"zustand";var we=Be(Sp()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function vi(){let t=An(!0),[e,o]=wp(),n=kp(),r=An(n.search),s=An({}),a=B.use.fromBlockchain(),l=B.use.toBlockchain(),p=B.use.fromToken(),u=B.use.toToken(),c=B.use.setFromBlockchain(),f=B.use.setFromToken(),m=B.use.setToBlockchain(),d=B.use.setToToken(),g=B.use.inputAmount(),h=B.use.setInputAmount(),v=k.use.loadingStatus(),{blockchains:b,tokens:S}=k.use.meta(),A=we.use.setSelectedSwap();return xn(()=>{let x={};Tp(r.current).forEach((P,W)=>{x[W]=P}),s.current=x;let T=n.pathname.split(y.swaps+"/")[1]||null;T&&A(T)},[]),xn(()=>{if(!t.current){let x="",T="",P="",W="",I="";if(v!=="success")x=s.current["fromBlockchain"],T=s.current["fromToken"],P=s.current["toBlockchain"],W=s.current["toToken"],I=s.current["fromAmount"]||g;else{if(n.state==="redirect")return;x=a?.name||"",T=(p?.symbol||"")+(p?.address?`--${p?.address}`:""),P=l?.name||"",W=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),I=g}o({...x&&{["fromBlockchain"]:x},...T&&{["fromToken"]:T},...P&&{["toBlockchain"]:P},...W&&{["toToken"]:W},...I&&{["fromAmount"]:I.toString()}},{replace:!0})}t.current=!1},[n.pathname,g,a,p,l,u]),xn(()=>{if(v==="success"){let x=e.get("fromBlockchain"),T=e.get("fromToken"),P=e.get("toBlockchain"),W=e.get("toToken"),I=e.get("fromAmount"),G=b.find(F=>F.name===x),ne=hn(S,T,G||null),C=b.find(F=>F.name===P),_=hn(S,W,C||null);G&&(c(G),ne&&f(ne)),C&&(m(C),_&&d(_)),I&&h(I)}},[v]),null}i(vi,"UpdateUrl");import{useWallets as bp}from"@rango-dev/wallets-react";import{isEvmBlockchain as Bp}from"rango-types";function xi({children:t,...e}){let o=Ap(),n=o?vp:xp,{blockchains:r}=k.use.meta(),{canSwitchNetworkTo:s}=bp(),a=r.filter(Bp);return Ep({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:a,canSwitchNetworkTo:s}),Bo.createElement(Bo.Fragment,null,Bo.createElement(n,null,t),o&&Bo.createElement(vi,null))}i(xi,"AppRouter");import Ae from"react";import{useRoutes as yf}from"react-router-dom";import{i18n as zn}from"@lingui/core";import{useManager as mc}from"@rango-dev/queue-manager-react";import{Alert as qn,BestRoute as dc,BestRouteSkeleton as fc,Button as Ho,Divider as At,IconButton as Ds,MessageBox as gc,Modal as hc,RefreshIcon as yc,SettingsIcon as Sc,styled as _s,Tooltip as Cc,Typography as Ps,WalletIcon as Tc}from"@rango-dev/ui";import N,{useEffect as Gt,useState as Go}from"react";import{flushSync as kc}from"react-dom";import{useNavigate as wc}from"react-router-dom";import{Alert as Un,BalanceErrors as Gu,Button as Cs,ChevronDownIcon as Vu,ChevronLeftIcon as Ru,Divider as xt,MessageBox as Ku,Modal as Ts,Typography as zo,WalletIcon as Xu}from"@rango-dev/ui";import E,{useEffect as ju,useState as ut}from"react";import{i18n as Wo}from"@lingui/core";function Io(t){switch(t.type){case 0:return Wo.t("Route has been updated.");case 3:return Wo.t("Output amount changed to {newOutputAmount} ({percentageChange}% change).",{newOutputAmount:t.newOutputAmount,percentageChange:t.percentageChange});case 1:return Wo.t("Route swappers has been updated.");case 2:return Wo.t("Route internal coins has been updated.");default:return""}}i(Io,"getRouteWarningMessage");import*as kt from"@radix-ui/react-collapsible";import{Button as Wp,IconButton as Ip,keyframes as Ai,styled as Ce,TextField as Np}from"@rango-dev/ui";var Mp=Ai({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Lp=Ai({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),Ei=Ce("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),bi=Ce("div",{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline"}),Bi=Ce("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",backgroundColor:"$neutral100",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{backgroundColor:"$surface600",opacity:"0.8"},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Wi=Ce(kt.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent"}),Ii=Ce("div",{padding:"$20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ni=Ce(Ip,{position:"absolute",left:"$20"}),Mi=Ce("div",{paddingTop:"$20","& .wallets-list":{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline"}}),Li=Ce(kt.Root,{backgroundColor:"$neutral200",borderRadius:"$sm",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Pi=Ce(Wp,{width:"100%",borderRadius:"$sm !important",padding:"$15 !important",justifyContent:"space-between",alignItems:"center",backgroundColor:"$neutral100 !important"}),Di=Ce("div",{padding:"$10 $0","& .button__content":{display:"flex",justifyContent:"center",alignItems:"center"},"& .alarms":{paddingTop:"5px"}}),_i=Ce("div",{transition:"all 300ms ease",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),Fi=Ce("div",{display:"flex"}),Oi=Ce(Np,{padding:"$0 $15 $15 $15"}),Ui=Ce(kt.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Mp} 300ms ease-out`},false:{animation:`${Lp} 300ms ease-out`}}}}),$i=Ce("div",{overflow:"visible",width:"100%"});import{Button as zu,Divider as _n,Image as qu,MessageBox as Fn,Modal as fs,SelectableWallet as Hu,Typography as gs,WalletState as hs}from"@rango-dev/ui";import oe,{useEffect as ys,useState as qt}from"react";import{WalletState as qi}from"@rango-dev/ui";import{useWallets as Dp}from"@rango-dev/wallets-react";import{KEPLR_COMPATIBLE_WALLETS as _p,WalletTypes as Fp}from"@rango-dev/wallets-shared";import{useEffect as Op,useState as Up}from"react";import{allProviders as Pp}from"@rango-dev/provider-all";function No(t,e){let o=Pp({walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||""}});if(t){let n=[];return t.forEach(r=>{if(typeof r=="string"){let s=o.find(a=>a.config.type===r);s?n.push(s):console.warn(`Couldn't find ${r} provider. Please make sure you are passing the correct name.`)}else n.push(r)}),n}return o}i(No,"matchAndGenerateProviders");function zi(t,e){return No(t,e).map(r=>r.config.type)}i(zi,"configWalletsToWalletName");var $p=Object.values(Fp);function Mo(t){let{config:e,chain:o,onBeforeConnect:n,onConnect:r}=t,{state:s,disconnect:a,getWalletInfo:l,connect:p}=Dp(),{connectedWallets:u}=D(),{blockchains:c}=k().meta,f=typeof e?.multiWallets>"u"?!0:e.multiWallets,m=zi(e?.wallets,{walletConnectProjectId:e?.walletConnectProjectId})||$p,d=ii(s,l,m,o),g=ui(d),[h,v]=Up(""),b=i(T=>!u.find(P=>P.walletType===T&&P.chain===o),"isExperimentalChainNotAdded"),S=i(async T=>{let P=s(T);try{if(h&&v(""),P.connected)await a(T);else{let W=!!d.find(I=>I.state===qi.CONNECTED);if(!f&&W)return;n?.(T),await p(T),r?.(T)}}catch(W){v("Error: "+W?.message)}},"handleClick"),A=i(()=>{let T=d?.filter(P=>P.state===qi.CONNECTING)||[];for(let P of T)a(P.type)},"disconnectConnectingWallets");Op(()=>()=>{A()},[]);let x=i((T,P,W)=>yo(W,P)&&b(T)&&!_p.includes(T),"shouldExcludeWallet");return{list:g.filter(T=>!x(T.type,o??"",c)),error:h,handleClick:S}}i(Mo,"useWalletList");import{i18n as as}from"@lingui/core";import{styled as ls,Typography as Nu,Wallet as Mu,WalletState as Lu}from"@rango-dev/ui";import pt,{Fragment as Pu,useState as Du}from"react";import{BottomLogo as fu,Divider as gu,Header as hu,theme as yu,usePaddingRight as Su}from"@rango-dev/ui";import me,{useRef as Cu}from"react";import{useNavigate as Tu}from"react-router-dom";import{ChevronLeftIcon as Hp}from"@rango-dev/ui";import Vi from"react";import{Button as zp,darkTheme as qp,styled as Lo}from"@rango-dev/ui";var Le=Lo(zp,{width:"$24",position:"relative",padding:"0",overflow:"unset"}),Hi=Lo("div",{position:"absolute",background:"$secondary500",[`.${qp} &`]:{$$color:"$colors$secondary400"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),wt=Lo("div",{display:"flex",justifyContent:"flex-end",width:"$40"}),Gi=Lo("div",{position:"absolute",backgroundColor:"$secondary500",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0"});function En(t){return Vi.createElement(Le,{variant:"ghost",size:"small",onClick:t.onClick},Vi.createElement(Hp,{color:"black",size:16}))}i(En,"BackButton");import{i18n as Gp}from"@lingui/core";import{Button as Vp,Typography as Rp}from"@rango-dev/ui";import bn from"react";function Bn(t){return bn.createElement(wt,null,bn.createElement(Vp,{variant:"ghost",onClick:t.onClick,size:"xsmall"},bn.createElement(Rp,{variant:"label",size:"medium",color:"error500"},Gp.t("Cancel"))))}i(Bn,"CancelButton");import{i18n as Kp}from"@lingui/core";import{Tooltip as Xp,WalletIcon as jp}from"@rango-dev/ui";import Po from"react";function Wn(t){return Po.createElement(Xp,{side:"top",content:Kp.t("Connect Wallet")},Po.createElement(Le,{variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&Po.createElement(Hi,null),Po.createElement(jp,{size:18,color:"black"})))}i(Wn,"WalletButton");import{i18n as Fo}from"@lingui/core";import{NotificationsIcon as pu,Popover as uu,RefreshIcon as cu,SettingsIcon as mu,Tooltip as Oo,TransactionIcon as du}from"@rango-dev/ui";import le from"react";import{ChainToken as Qi,ChevronRightIcon as nu,ListItemButton as ru,Typography as iu}from"@rango-dev/ui";import Pe from"react";import{useNavigate as su}from"react-router-dom";import{create as Yp}from"zustand";import{persist as Qp,subscribeWithSelector as Jp}from"zustand/middleware";var We=Be(Yp()(Qp(Jp((t,e)=>({notifications:[],setNotification:(o,n)=>{let r=n.steps[0],s=n.steps[n.steps.length-1],a={event:o,creationTime:Date.now(),read:!1,requestId:n.requestId,route:{from:{blockchain:r.fromBlockchain,tokenAddress:r.fromSymbolAddress,tokenSymbol:r.fromSymbol},to:{blockchain:s.toBlockchain,tokenSymbol:s.toSymbol,tokenAddress:s.toSymbolAddress}}},l=e().notifications.filter(p=>p.requestId!==n.requestId);t(()=>({notifications:[...l,a]}))},setAsRead:o=>{t(n=>({notifications:n.notifications.map(r=>r.requestId===o?{...r,read:!0}:r)}))},getUnreadNotifications:()=>e().notifications.filter(o=>!o.read)})),{name:"notification",skipHydration:!0})));import{styled as Do}from"@rango-dev/ui";var Ri=Do("div",{padding:"$10",width:"350px",minHeight:"150px"}),Ki=Do("ul",{padding:0,margin:0,listStyle:"none",".to-chain-token":{transform:"translateX(-3px)"}}),Xi=Do("div",{display:"flex",padding:0,alignItems:"center",alignSelf:"stretch"}),ji=Do("div",{display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",padding:"$10",width:"100%",height:"150px"});import{i18n as Zp}from"@lingui/core";import{Divider as eu,NoNotificationIcon as tu,Typography as ou}from"@rango-dev/ui";import _o from"react";function Yi(){return _o.createElement(ji,null,_o.createElement(tu,{color:"secondary",size:26}),_o.createElement(eu,{size:12}),_o.createElement(ou,{variant:"body",size:"medium",color:"neutral900"},Zp.t("You have no notification")))}i(Yi,"NotificationNotFound");var au=4;function In(){let t=su(),e=we.use.setSelectedSwap(),{getUnreadNotifications:o}=We(),n=o(),{tokens:r,blockchains:s}=k.use.meta(),a=n.sort((p,u)=>u.creationTime-p.creationTime).slice(0,au),l=i(p=>{e(p),t(`/swaps/${p}`)},"handleOnClick");return Pe.createElement(Ri,null,a.length?Pe.createElement(Ki,null,a.map(p=>{let u=r.find(d=>d.address===p.route.from.tokenAddress&&d.blockchain===p.route.from.blockchain&&d.symbol===p.route.from.tokenSymbol),c=s.find(d=>d.name===p.route.from.blockchain),f=r.find(d=>d.address===p.route.to.tokenAddress&&d.blockchain===p.route.to.blockchain&&d.symbol===p.route.to.tokenSymbol),m=s.find(d=>d.name===p.route.to.blockchain);return Pe.createElement(ru,{key:p.requestId,onClick:()=>l(p.requestId),title:Pe.createElement(iu,{variant:"body",size:"small",color:"$neutral900"},p.event.message),id:p.requestId,start:Pe.createElement(Xi,null,Pe.createElement("div",{className:"from-chain-token"},Pe.createElement(Qi,{tokenImage:u?u.image:"",chainImage:c?c.logo:"",size:"small"})),Pe.createElement("div",{className:"to-chain-token"},Pe.createElement(Qi,{tokenImage:f?f.image:"",chainImage:m?m.logo:"",size:"small"}))),end:Pe.createElement(nu,{size:12,color:"gray"})})})):Pe.createElement(Yi,null))}i(In,"NotificationContent");import{Typography as lu}from"@rango-dev/ui";import Ji from"react";function Zi(){let{getUnreadNotifications:t}=We(),e=t().length;return e?Ji.createElement(Gi,null,Ji.createElement(lu,{variant:"body",size:"xsmall",color:"$background"},e)):null}i(Zi,"UnreadNotificationsBadge");function Nn(t){let{layoutRef:e,onClickRefresh:o,onClickHistory:n,onClickSettings:r,onClickNotifications:s}=t;return le.createElement(le.Fragment,null,le.createElement(Oo,{side:"top",content:Fo.t("Refresh")},le.createElement(Le,{variant:"ghost",size:"small",onClick:o,disabled:!o},le.createElement(cu,{size:16,color:o?"black":"gray"}))),le.createElement(Oo,{side:"top",content:Fo.t("Notifications")},le.createElement(uu,{align:"center",collisionBoundary:e,collisionPadding:{right:20,left:20},container:document.getElementById("swap-box"),content:le.createElement(In,null)},le.createElement(Le,{size:"small",variant:"ghost",onClick:s},le.createElement(pu,{size:18,color:"black"}),le.createElement(Zi,null)))),le.createElement(Oo,{side:"top",content:Fo.t("Settings")},le.createElement(Le,{size:"small",variant:"ghost",onClick:r},le.createElement(mu,{size:18,color:"black"}))),le.createElement(Oo,{side:"top",content:Fo.t("Transactions History")},le.createElement(Le,{size:"small",variant:"ghost",onClick:n},le.createElement(du,{size:18,color:"black"}))))}i(Nn,"HomeButtons");import{styled as Mn}from"@rango-dev/ui";var es=Mn("div",{position:"relative",display:"flex",flexDirection:"column",borderRadius:"$primary",overflow:"hidden !important",boxShadow:"15px 15px 15px 0px rgba(0, 0, 0, 0.05)",width:"95vw",maxWidth:"390px",maxHeight:"700px",variants:{fixedHeight:{true:{height:"95vh"},false:{height:"auto"}}}}),ts=Mn("div",{display:"flex",flexDirection:"column",flex:1,padding:"$20 $0 $10 $20",backgroundColor:"$background",position:"relative",overflowY:"auto",overflowX:"hidden",variants:{noPadding:{true:{padding:"0"}}}}),os=Mn("div",{backgroundColor:"$background","& .footer__content":{padding:"$0 $20"},"& .footer__logo":{padding:"$0 $20 $10 $20"}});var ku=20;function wu(t,e){let{children:o,header:n,footer:r,noPadding:s,hasLogo:a=!0,fixedHeight:l=!0}=t,p=D.use.connectedWallets(),u=we.use.connectWalletsButtonDisabled(),c=Tu(),f=Cu(null);Su({elementRef:f,paddingRight:s?"0":yu.sizes[ku]});let m=i(()=>{u||c("/"+y.wallets)},"onConnectWallet");return me.createElement(es,{ref:e,fixedHeight:l,id:"swap-box"},me.createElement(hu,{prefix:me.createElement(me.Fragment,null,n.onBack&&me.createElement(En,{onClick:n.onBack})),title:n.title,suffix:me.createElement(me.Fragment,null,n.suffix,n.hasConnectWallet&&me.createElement(Wn,{onClick:m,isConnected:!!p?.length}),n.onCancel&&me.createElement(Bn,{onClick:n.onCancel}))}),me.createElement(ts,{noPadding:s,ref:f},o),(a||r)&&me.createElement(os,null,me.createElement("div",{className:"footer__content"},r),a&&me.createElement("div",{className:"footer__logo"},me.createElement(gu,{size:12}),me.createElement(fu,null))))}i(wu,"LayoutComponent");var Y=me.forwardRef(wu);Y.displayName="Layout";import{Divider as bu,Modal as Bu}from"@rango-dev/ui";import Pn from"react";import{i18n as vt}from"@lingui/core";import{Image as Au,MessageBox as Ln,WalletState as Eu}from"@rango-dev/ui";import lt from"react";import{keyframes as vu,styled as Uo}from"@rango-dev/ui";var QS=Uo("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),ns=Uo("div",{position:"relative"}),xu=vu({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),rs=Uo("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${xu} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),is=Uo("div",{"& img":{borderRadius:"50%"}});function ss(t){let{state:e,image:o,error:n}=t;return e===Eu.CONNECTED?lt.createElement(Ln,{type:"success",title:vt.t("Wallet Connected"),description:vt.t("Your wallet is connected, you can use it to swap.")}):n?lt.createElement(Ln,{type:"error",title:vt.t("Failed to Connect"),description:n||vt.t("Your wallet is not connected. Please try again.")}):lt.createElement(Ln,{type:"loading",title:vt.t("Connecting to your wallet"),description:vt.t("Click connect in your wallet popup."),icon:lt.createElement(ns,null,lt.createElement(is,null,lt.createElement(Au,{src:o,size:45})),lt.createElement(rs,null))})}i(ss,"ModalContent");function zt(t){let{open:e,onClose:o,...n}=t;return Pn.createElement(Bu,{open:e,onClose:o,container:document.getElementById("swap-box")||document.body},Pn.createElement(ss,{...n}),Pn.createElement(bu,{direction:"vertical",size:32}))}i(zt,"WalletModal");import{useInRouterContext as Wu,useNavigate as Iu}from"react-router-dom";function te(){let t=Wu(),e=Iu();return y,{navigateBackFrom:i(n=>{if(n===y.swapDetails)return e("/"+y.swaps,{replace:!0});!t||window.history.state&&window.history.state.idx>0?e(-1):[y.fromSwap,y.toSwap,y.settings,y.wallets,y.swaps,y.confirmSwap].includes(n)?e(y.home,{replace:!0}):n===y.fromBlockchain?e("/"+y.fromSwap,{replace:!0}):n===y.toBlockchain?e("/"+y.fromSwap,{replace:!0}):n===y.liquiditySources&&e("/"+y.settings,{replace:!0})},"navigateBackFrom")}}i(te,"useNavigateBack");var _u=ls("div",{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline",paddingTop:"$15",height:"100%"}),Fu=ls("div",{textAlign:"center"}),$o=3e3,Ou=300;function ps({config:t}){let{navigateBackFrom:e}=te(),[o,n]=Du(""),r=null,{list:s,handleClick:a,error:l}=Mo({config:t,onBeforeConnect:m=>{r=setTimeout(()=>{n(m)},Ou)},onConnect:()=>{r&&clearTimeout(r),setTimeout(()=>{n("")},$o)}}),p=k.use.loadingStatus(),u=s.find(m=>m.type===o),c=u?.image||"",f=u?.state||Lu.NOT_INSTALLED;return pt.createElement(Y,{header:{title:as.t("Connect Wallets"),onBack:e.bind(null,y.wallets)}},pt.createElement(Fu,null,pt.createElement(Nu,{variant:"title",size:"xmedium",align:"center"},as.t("Choose a wallet to connect.")),pt.createElement(_u,null,s.map((m,d)=>{let g=`wallet-${d}-${m.type}`;return pt.createElement(Pu,{key:g},pt.createElement(Mu,{...m,onClick:h=>{a(h)},isLoading:p==="loading"}))}),pt.createElement(zt,{open:!!o,onClose:()=>n(""),image:c,state:f,error:l}))))}i(ps,"WalletsPage");function us(t,e){return e.find(o=>o.name===t)?.displayName}i(us,"getBlockchainDisplayNameFor");import{keyframes as Uu,styled as Dn}from"@rango-dev/ui";var cs=Dn("div",{position:"relative"}),$u=Uu({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),ms=Dn("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${$u} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),ds=Dn("div",{"& img":{borderRadius:"50%"}});function On(t){let{config:e,chain:o,isSelected:n,selectWallet:r,limit:s,onShowMore:a}=t,l=D.use.connectedWallets(),{blockchains:p}=k.use.meta(),[u,c]=qt(""),[f,m]=qt(null),[d,g]=qt(!1),[h,v]=qt(null),{connect:b}=Ss(),{list:S,error:A,handleClick:x}=Mo({config:e,chain:o,onBeforeConnect:c,onConnect:()=>setTimeout(()=>c(""),$o)}),[T,P]=qt(S),W=S.length,I=s&&W-s>0,G=i(async C=>{g(!1),v("in-progress"),await b(C.walletType,C.chain),v("completed")},"addExperimentalChain");ys(()=>{P(C=>{let _=S.findIndex(F=>n(F.type,o));return I&&_>1?[S[_]].concat(S.filter((F,se)=>se!==_)):C.map(F=>S.find(se=>se.type===F.type)??F)})},[JSON.stringify(S)]);let ne=document.querySelector("#swap-box");return ys(()=>{let C=null;return h==="completed"&&(C=setTimeout(()=>v(null),$o)),()=>{C&&clearTimeout(C)}},[h]),oe.createElement(oe.Fragment,null,T.slice(0,s).map(C=>{let _=ci({connectedWallets:l,walletType:C.type,chain:o}),F=_?So(_):"",se=yo(p,o),M=!l.find(Ee=>Ee.walletType===C.type&&Ee.chain===o),ae=se&&M&&C.state===hs.CONNECTED,Ne=ae?`Add ${o} chain`:F,U=i(()=>{C.state===hs.DISCONNECTED?x(C.type):ae?(m({walletType:C.type,chain:o,address:_??""}),g(!0)):r({walletType:C.type,chain:o,address:_??""})},"onClick"),K=f?.chain?us(f.chain,p):void 0;return oe.createElement(oe.Fragment,null,u===C.type&&oe.createElement(zt,{open:u===C.type,onClose:()=>c(""),image:C.image,state:C.state,error:A}),!!f&&oe.createElement(fs,{open:!!f&&d,container:ne,onClose:()=>{m(null)}},oe.createElement(Fn,{title:`Add ${K} Chain`,type:"warning",description:`You should connect a ${K} supported wallet or choose a different ${K} address`},oe.createElement(_n,{size:18}),oe.createElement(_n,{size:32}),oe.createElement(zu,{onClick:G.bind(null,f),variant:"outlined",type:"primary",fullWidth:!0,size:"large"},"Confirm"))),h&&oe.createElement(fs,{open:!!h,onClose:v.bind(null,null),container:ne},h==="in-progress"?oe.createElement(Fn,{type:"loading",title:`Add ${K} Chain`,description:`You should connect a ${K} supported wallet or choose a different ${K} address.`,icon:oe.createElement(cs,null,oe.createElement(ds,null,oe.createElement(qu,{src:C.image,size:45})),oe.createElement(ms,null))}):oe.createElement(Fn,{type:"success",title:`${K} Chain Added`,description:`${K} is added to your wallet, you can use it to swap.`}),oe.createElement(_n,{direction:"vertical",size:32})),oe.createElement(Hu,{key:C.type,description:Ne,onClick:U,selected:n(C.type,o),...C}))}),I&&oe.createElement(Bi,{selected:!1,onClick:a.bind(null)},oe.createElement(gs,{variant:"label",size:"medium"},"Show more wallets",oe.createElement(gs,{variant:"label",size:"medium",color:"$primary"},"\xA0+",W-(s??0)))))}i(On,"WalletList");var Yu=2;function ks(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,config:s,loading:a}=t,{blockchains:l}=k.use.meta(),{bestRoute:p,setSelectedWallets:u,setRouteWalletConfirmed:c,customDestination:f,setCustomDestination:m}=B(),{connectedWallets:d,selectWallets:g}=D(),[h,v]=ut(""),[b,S]=ut([]),[A,x]=ut(""),[T,P]=ut(null),[W,I]=ut(f),[G,ne]=ut(!!f),C=ao(p),_=typeof s?.customDestination>"u"?!0:s.customDestination,F=l.find(O=>O.name===p?.result?.swaps[p?.result?.swaps.length-1].to.blockchain),se=i(O=>!!p?.result?.swaps.find(X=>X.from.blockchain===O),"isWalletRequiredFor"),[M,ae]=ut(d.filter(O=>O.selected&&C.includes(O.chain))),Ne=l.find(O=>O.name===F?.name),U=i((O,X)=>!!M.find(H=>H.walletType===O&&H.chain===X&&H.selected&&(se(X)||!se(X)&&!W)),"isSelected"),K=!!W&&G&&Ne&&!lo(Ne,W),Ee=i(()=>{ne(!1),I(""),ae(O=>{let X=!1;return O.map(H=>!X&&H.chain===F?.name?(X=!0,{...H,selected:!0}):H)})},"resetCustomDestination"),ge=i(O=>{if(h&&v(""),U(O.walletType,O.chain))return;let H=d.find(z=>z.walletType===O.walletType&&z.chain===O.chain);H&&(n(),O.chain===F?.name&&G&&(ne(!1),I("")),ae(z=>z.filter(he=>he.chain!==O.chain).concat({...H,selected:!0})))},"onChange"),Me=i(()=>{let O=M.filter(X=>X.selected);g(O),u(O),m(W),c(!0),o()},"onConfirmBalance"),re=i(async()=>{S([]),x(""),P(null);let O=d.filter(z=>M.find(he=>he.chain===z.chain&&he.walletType===z.walletType)),X=await r?.({selectedWallets:O,customDestination:W}),H=X.warnings;H?.balance?.messages&&S(H.balance.messages),H?.route&&P(H.route),X.error&&x(po(X.error)),!X.error&&(!H?.balance?.messages.length||0>0)?Me():S(H?.balance?.messages??[])},"onConfirmWallets");ju(()=>{ae(O=>O.concat(d.filter(X=>!!!O.find(z=>z.chain===X.chain)&&X.selected&&C.includes(X.chain))))},[d.length]);let Je=document.querySelector("#swap-box");return E.createElement(Ts,{open:e,onClose:o,dismissible:!h,container:Je,...!h&&{footer:E.createElement(Fi,null,E.createElement(Cs,{loading:a,disabled:wi(a,G,W,p,M,F),onClick:re,variant:"contained",type:"primary",fullWidth:!0,size:"large"},"Confirm"))},...h&&{containerStyle:{padding:"$0"},header:E.createElement(Ii,null,E.createElement(Ni,{variant:"ghost",onClick:v.bind(null,"")},E.createElement(Ru,{size:16})),E.createElement(zo,{variant:"headline",size:"small"},`Your ${h} wallets`))},anchor:"center"},E.createElement(Ts,{open:b.length>0,onClose:S.bind(null,[]),container:Je},E.createElement(Ku,{title:"Insufficient account balance",type:"error",description:E.createElement(Gu,{messages:b??[]})},E.createElement(Cs,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:Me},"Proceed anyway"))),h&&E.createElement(Mi,null,E.createElement("div",{className:"wallets-list"},E.createElement(On,{chain:h,isSelected:U,selectWallet:ge,multiWallets:s?.multiWallets??!0,supportedWallets:s?.wallets??[],config:s,onShowMore:v.bind(null,h)}))),!h&&E.createElement(E.Fragment,null,A&&E.createElement(E.Fragment,null,E.createElement(Un,{variant:"alarm",type:"error",title:A}),E.createElement(xt,{size:12})),T&&E.createElement(E.Fragment,null,E.createElement(Un,{variant:"alarm",type:"warning",title:Io(T)}),E.createElement(xt,{size:12})),E.createElement($i,null,C.map((O,X)=>{let H=l.find(ye=>ye.name===O),z=`wallet-${X}`,he=X===C.length-1;return E.createElement("div",{key:z},E.createElement(Ei,null,E.createElement(zo,{variant:"title",size:"xmedium"},`Your ${H?.displayName} wallets`),E.createElement(zo,{variant:"label",color:"$neutral900",size:"medium"},`You need to connect a ${H?.displayName} wallet.`)),E.createElement(xt,{size:24}),E.createElement(bi,null,E.createElement(On,{chain:O,isSelected:U,selectWallet:ge,multiWallets:s?.multiWallets??!0,supportedWallets:s?.wallets??[],config:s,limit:Yu,onShowMore:()=>v(H?.name??"")})),!he&&E.createElement(xt,{size:32}),he&&_&&E.createElement(Di,null,E.createElement(Li,{selected:G,open:G,onOpenChange:ye=>{ye?se(F?.name??"")||ae(ee=>ee.map(ie=>ie.chain===F?.name?{...ie,selected:!1}:ie)):Ee()}},E.createElement(Wi,{onClick:()=>ne(ye=>!ye)},E.createElement(Pi,{fullWidth:!0,suffix:E.createElement(_i,{orientation:G?"up":"down"},E.createElement(Vu,{size:10,color:"gray"}))},E.createElement("div",{className:"button__content"},E.createElement(Xu,{size:18,color:"info"}),E.createElement(xt,{size:4,direction:"horizontal"}),E.createElement(zo,{variant:"label",size:"medium"},"Send to a different address")))),E.createElement(Ui,{open:G},E.createElement(E.Fragment,null,E.createElement(xt,{size:4}),E.createElement(Oi,{autoFocus:!0,placeholder:"Your destination address",value:W,onChange:ye=>{I(ye.target.value)}})))),K&&E.createElement("div",{className:"alarms"},E.createElement(Un,{variant:"alarm",type:"error",title:`Address '${W}' doesn't match the blockchain address pattern.`}))))}))))}i(ks,"ConfirmWalletsModal");import{Alert as ec,Button as tc,Divider as Ns,NoRouteIcon as oc,RefreshIcon as nc,Typography as Ms}from"@rango-dev/ui";import De from"react";import{create as Qu}from"zustand";import{persist as Ju,subscribeWithSelector as Zu}from"zustand/middleware";var ws=[.5,1,3],vs=1,xs=5,As=100,Es=0;var $=Be(Qu()(Ju(Zu(t=>({slippage:vs,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,disabledLiquiditySources:[],theme:"auto",setSlippage:e=>t(()=>({slippage:e})),setCustomSlippage:e=>t(()=>({customSlippage:e})),setAffiliateRef:e=>t(()=>({affiliateRef:e})),setAffiliatePercent:e=>t(()=>({affiliatePercent:e})),setAffiliateWallets:e=>t(()=>({affiliateWallets:e})),toggleAllLiquiditySources:e=>t(o=>{if(e)return{disabledLiquiditySources:[]};let{swappers:n}=k.getState().meta,r=Ze(n.map(s=>s.swapperGroup));return r.length===o.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:r}}),toggleInfiniteApprove:()=>t(e=>({infiniteApprove:!e.infiniteApprove})),toggleLiquiditySource:e=>t(o=>o.disabledLiquiditySources.includes(e)?{disabledLiquiditySources:o.disabledLiquiditySources.filter(n=>n!=e)}:{disabledLiquiditySources:o.disabledLiquiditySources.concat(e)}),setTheme:e=>t(()=>({theme:e}))})),{name:"user-settings",skipHydration:!0})));function bs(t,e,o,n,r){return o?{alert:{type:"warning",text:q.genericServerError,action:{onClick:r,title:"Retry"}},description:""}:t?{alert:{type:"error",text:t,action:null},description:""}:e.length?{alert:{type:"warning",text:q.liquiditySourcesError.title,action:{onClick:()=>n(!0),title:"Reset"}},description:q.liquiditySourcesError.description}:{alert:null,description:q.noRoutesError.description}}i(bs,"makeInfo");import{styled as $n}from"@rango-dev/ui";var Bs=$n("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Ws=$n("div",{width:"100%"}),Is=$n("div",{padding:"$6 $0"});function Ht(t){let{diagnosisMessage:e,fetch:o,error:n}=t,r=$.use.disabledLiquiditySources(),s=k.use.loadingStatus(),a=$.use.toggleAllLiquiditySources(),p=bs(e??null,r,n||s==="failed",a,o);return De.createElement(Bs,null,De.createElement(oc,{size:24,color:"gray"}),De.createElement(Ns,{size:4}),De.createElement(Ms,{variant:"title",size:"small"},q.noRoutesError.title),!!p.description&&De.createElement(Ms,{variant:"body",size:"small",align:"center",color:"neutral900"},p.description),De.createElement(Ns,{size:4}),!!p.alert&&De.createElement(Ws,null,De.createElement(ec,{type:p.alert.type,title:p.alert.text,action:p.alert.action&&De.createElement(tc,{size:"xsmall",type:p.alert.type,prefix:De.createElement(Is,null,De.createElement(nc,{size:8})),onClick:p.alert.action.onClick},p.alert.action.title),variant:"alarm"})))}i(Ht,"NoRoutes");import{calculatePendingSwap as ac}from"@rango-dev/queue-manager-rango-preset";import lc from"bignumber.js";import{useEffect as pc}from"react";import{useRef as rc,useState as ic}from"react";function qo(){let[t,e]=ic(!1),o=rc(null),n=i(()=>o.current?.abort(),"cancel");return{fetch:i(async s=>{n(),o.current=new AbortController,e(!0);try{let a=await ht().getBestRoute(s,{signal:o.current.signal});return o.current=null,a}catch(a){throw a}finally{e(!1)}},"fetch"),loading:t,cancelFetch:n}}i(qo,"useFetchBestRoute");function uc(t,e){if(!t.result)throw new Error(q.noRoutesError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let o=new lc(t.result?.outputAmount||"0").multipliedBy(e.outputUsdValue||0),n=wo(e.inputUsdValue,o);if(vo(e.inputUsdValue,n))throw new Error("High value loss for route",{cause:{type:1}});return t}i(uc,"throwErrorIfResponseIsNotValid");function cc(t,e,o){let n=jr(t,e),r={balance:null,route:null,slippage:null};n&&(hi(t,e)?r.route={type:3,newOutputAmount:w(Tt(e)),percentageChange:w(Re(Tt(t),Tt(e)),null,2)}:yn(t,e)?r.route={type:0}:Sn(t,e)?r.route={type:1}:Cn(t,e)&&(r.route={type:2}));let s=yi(e,o.selectedWallets);s.length===0||(r.balance={messages:s});let l=di(t),p=o.userSlippage>xs;return fi(o.userSlippage.toString(),l)?p&&(r.slippage={type:1,slippage:o.userSlippage.toString()}):r.slippage={type:0,slippage:l},r}i(cc,"generateWarnings");function Ls(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setRoute:r,bestRoute:s,customDestination:a}=B(),{slippage:l,customSlippage:p,affiliatePercent:u,affiliateRef:c,affiliateWallets:f,disabledLiquiditySources:m}=$(),{connectedWallets:d}=D(),{meta:g}=k(),h=p||l,{fetch:v,cancelFetch:b,loading:S}=qo();return pc(()=>b,[]),{loading:S,fetch:i(async x=>{let T=x.selectedWallets,P=x?.customDestination??a;if(!t||!e||!o||!s)return{route:null,swap:null,error:null,warnings:null};let W=bo({fromToken:t,toToken:e,inputAmount:o,wallets:d,selectedWallets:T,disabledLiquiditySources:m,slippage:h,affiliateRef:c,affiliatePercent:u,affiliateWallets:f,initialRoute:s,destination:P}),I;try{I=await v(W).then(C=>uc(C,{outputUsdValue:e.usdPrice,inputUsdValue:n})),r(I)}catch(C){return C?.code==="ERR_CANCELED"?{swap:null,error:{type:3},warnings:null}:C.cause?{swap:null,error:C.cause,warnings:null}:{swap:null,error:{type:2},warnings:null}}let G={slippage:h.toString(),disabledSwappersGroups:m},ne=ac(o.toString(),I,gi(T),G,!1,g);return{route:I,swap:ne,error:null,warnings:cc(s,I,{selectedWallets:T,userSlippage:h})}},"fetch"),cancelFetch:b}}i(Ls,"useConfirmSwap");var vc=_s("div",{position:"relative",width:"100%","& .description":{display:"flex",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10"},"& .icon":{width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}}),xc=_s("div",{width:"100%",display:"flex",justifyContent:"space-between","& .confirm-button":{flexGrow:1,paddingRight:"$10"},[`& ${Ds}`]:{width:"$48",height:"$48"}});function Fs(t){let{config:e}=t,{bestRoute:o,inputAmount:n,outputAmount:r,inputUsdValue:s,outputUsdValue:a,setInputAmount:l,selectedWallets:p,routeWalletsConfirmed:u,setRouteWalletConfirmed:c,customDestination:f}=B(),m=wc(),[d,g]=Go(""),[h,v]=Go(!1),{connectedWallets:b}=D(),S=!u,[A,x]=Go(!1),T=we.use.setSelectedSwap(),{meta:{tokens:P},loadingStatus:W}=k(),I=$.use.slippage(),G=$.use.customSlippage(),{manager:ne}=mc(),C=G||I,{fetch:_,loading:F,cancelFetch:se}=Ls(),[M,ae]=Go({swap:null,error:null,warnings:null}),Ne=F||W==="loading",U=!F&&M.error&&[0,2].includes(M.error.type),K=!U&&!F&&o&&o.result,Ee=Eo(o,P),ge=w(Re(s?.toNumber()??0,a?.toNumber()??0),2,2),Me=gt(parseFloat(ge)),re=i(async({selectedWallets:z,customDestination:he})=>{let ye=await _?.({selectedWallets:z,customDestination:he});return ae(ye),ye},"onConfirmSwap"),Je=i(async()=>{if(M.swap&&u)try{await ne?.create("swap",{swapDetails:M.swap},{id:M.swap.requestId}),T(M.swap.requestId),m("/"+y.swaps+`/${M.swap.requestId}`,{replace:!0}),setTimeout(()=>{l("")},0)}catch(z){g("Error: "+z?.message)}},"addNewSwap"),O=i(async()=>{await Je()},"onConfirm"),X=i(async()=>{M?.warnings?.slippage?v(!0):await O()},"onStartConfirmSwap"),H=i(async()=>{ae({error:null,swap:null,warnings:null}),_({selectedWallets:p}).then(z=>{ae(z)}).catch(z=>console.error(z))},"onRefresh");return Gt(()=>{S&&se()},[S]),Gt(()=>{S&&x(S)},[S]),Gt(()=>{S||_({selectedWallets:p,customDestination:f}).then(z=>ae(z)).catch(z=>console.error(z))},[]),Gt(()=>{!A&&!u&&m(y.home,{replace:!0})},[A,u]),Gt(()=>{let z=M.warnings?.route?.type&&Object.values(Ft).includes(M.warnings?.route?.type),he=p.length<1||!p.every(ee=>b.find(ie=>ee.address===ie.address&&ee.walletType===ie.walletType&&ee.chain===ie.chain)),ye=!1;if(z){let ee=ao(o),ie=o?.result?.swaps[o.result.swaps.length-1].to.blockchain;!!o?.result?.swaps.find(Dt=>Dt.from.blockchain===ie)||(ee=ee.slice(-ee.length,ee.length-1)),ee.every(Dt=>p.find(Xl=>Xl.chain===Dt))||(ye=!0)}o&&(he||ye)&&(queueMicrotask(()=>kc(x.bind(null,!0))),c(!1))},[M.warnings?.route,p.length,b.length]),N.createElement(Y,{header:{title:"Confirm Swap",onBack:m.bind(null,-1),hasConnectWallet:!0,suffix:N.createElement(Cc,{side:"bottom",content:zn.t("Settings")},N.createElement(Le,{size:"small",variant:"ghost",onClick:()=>m("/"+y.settings)},N.createElement(Sc,{size:18,color:"black"})))},footer:N.createElement(xc,null,N.createElement("div",{className:"confirm-button"},N.createElement(Ho,{variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:F,disabled:!!M.error,onClick:X},"Start Swap")),N.createElement(Ds,{variant:"contained",type:"primary",size:"large",loading:F,onClick:x.bind(null,!0)},N.createElement(Tc,{size:24})))},N.createElement(hc,{anchor:"bottom",open:h,prefix:N.createElement(Ho,{size:"small",variant:"ghost",onClick:()=>m("/"+y.settings)},N.createElement(Ps,{variant:"label",size:"medium",color:"$neutral900"},"Change settings")),container:document.querySelector("#swap-box"),onClose:v.bind(null,z=>!z)},M.warnings?.slippage&&N.createElement(gc,{type:"warning",title:M.warnings.slippage.type===1?"High slippage":"Low slippage",description:M.warnings.slippage.type===1?zn.t("highSlippage",{selectedSlippage:C},{message:" Caution, your slippage is high (={selectedSlippage}). Your trade may be front run."}):zn.t("increaseSlippage",{minRequiredSlippage:M.warnings.slippage.slippage},{message:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route."})},N.createElement(At,{size:18}),N.createElement(At,{size:32}),N.createElement(Ho,{size:"large",type:"primary",variant:"contained",fullWidth:!0,onClick:O},"Confirm anyway"))),A&&N.createElement(ks,{open:A,onClose:x.bind(null,!1),onCancel:se,loading:F,onCheckBalance:re,config:e}),N.createElement(vc,null,N.createElement("div",{className:"description"},N.createElement(Ps,{variant:"title",size:"small"},"You get"),N.createElement(Ho,{style:{padding:"0"},variant:"ghost",disabled:F,onClick:H},N.createElement("div",{className:"icon"},N.createElement(yc,{size:16})))),d&&N.createElement(N.Fragment,null,N.createElement(qn,{type:"error",variant:"alarm",title:d}),N.createElement(At,{size:12})),M.warnings?.route&&N.createElement(N.Fragment,null,N.createElement(qn,{variant:"alarm",type:"warning",title:Io(M.warnings.route)}),N.createElement(At,{size:12})),Ne&&N.createElement(fc,{type:"swap-preview",expanded:!0}),K&&N.createElement(dc,{expanded:!0,steps:Jr(o)??[],input:{value:w(n,6,6),usdValue:w(s,4,4)},output:{value:w(r,6,6),usdValue:w(a,4,4)},totalFee:w(Ee,2,2),totalTime:no(ro(o)),recommended:!0,type:"swap-preview",percentageChange:ge,warningLevel:Me}),U&&N.createElement(N.Fragment,null,N.createElement(At,{size:12}),N.createElement(Ht,{diagnosisMessage:M.error?.type===0?M.error.diagnosisMessage:void 0,error:M.error?.type===2,fetch:H})),M.error?.type===1&&N.createElement(N.Fragment,null,N.createElement(qn,{variant:"alarm",type:"error",title:po(M.error)}),N.createElement(At,{size:12}))))}i(Fs,"ConfirmSwapPage");import{i18n as Kn}from"@lingui/core";import{useManager as Ic}from"@rango-dev/queue-manager-react";import{Divider as Nc,NotFound as Mc,styled as Vs}from"@rango-dev/ui";import nt,{useState as Lc}from"react";import{useNavigate as Pc}from"react-router-dom";import{CloseIcon as Ec,IconButton as bc,SearchIcon as Bc,TextField as Wc}from"@rango-dev/ui";import Vt from"react";import{styled as Ac}from"@rango-dev/ui";var Os=Ac("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function je(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:s,value:a,setValue:l,...p}=t;return Vt.createElement(Wc,{prefix:Vt.createElement(Os,null,Vt.createElement(Bc,{color:"black"})),suffix:!!a.length&&Vt.createElement(bc,{variant:"ghost",onClick:()=>l?.(""),size:"small"},Vt.createElement(Ec,{color:"gray",size:10})),fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center"},size:r,value:a,onChange:s,...p})}i(je,"SearchInput");import{Divider as $s,SwapListItem as zs,Typography as qs}from"@rango-dev/ui";import J from"react";import{styled as Vo}from"@rango-dev/ui";var Hn=Vo("div",{width:"100%",display:"flex",flexDirection:"column"}),Gn=Vo("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Vn=Vo("div",{gap:"$10",display:"flex",flexDirection:"column"}),Us=Vo("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function Rn(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,s=n?n(e):[{title:"History",swaps:e}];if(r){let a=[{},{}];return J.createElement(J.Fragment,null,[{title:"Today",swaps:a},{title:"Last month",swaps:a}].map(p=>J.createElement(J.Fragment,{key:p.title},J.createElement(Hn,null,J.createElement(Gn,null,J.createElement(qs,{variant:"label",size:"medium",color:"neutral800",className:"group-title"},p.title)),J.createElement($s,{size:4}),J.createElement(Vn,null,p.swaps.map((u,c)=>{let f=c+p.title;return J.createElement(J.Fragment,{key:f},J.createElement(zs,{isLoading:!0}))}))))))}return J.createElement(J.Fragment,null,s.filter(a=>a.swaps.length>0).map(a=>J.createElement(J.Fragment,{key:a.title},J.createElement(Hn,null,J.createElement(Gn,null,J.createElement(qs,{variant:"label",size:"medium",color:"neutral800",className:"group-title"},a.title)),J.createElement($s,{size:4}),J.createElement(Vn,null,a.swaps.map(l=>{let p=l.steps[0],u=l.steps[l.steps.length-1];return J.createElement(J.Fragment,{key:l.requestId},J.createElement(zs,{requestId:l.requestId,creationTime:l.creationTime,status:l.status,onClick:o,onlyShowTime:a.title==="Today",swapTokenData:{from:{token:{image:p.fromLogo,displayName:p.fromSymbol},blockchain:{image:p.fromBlockchainLogo||""},amount:io(l.inputAmount)},to:{token:{image:u.toLogo,displayName:u.toSymbol},blockchain:{image:u.toBlockchainLogo||""},amount:io(u.outputAmount||""),estimatedAmount:io(u.expectedOutputAmountHumanReadable||"")}}}))}))))))}i(Rn,"SwapsGroup");import Hs from"dayjs";var Gs=i(t=>{let e=new Map([["today",{title:"Today",swaps:[]}],["month",{title:"Last month",swaps:[]}],["year",{title:"Last year",swaps:[]}],["history",{title:"History",swaps:[]}]]),o=Hs();return t.forEach(n=>{let r=Hs(Number(n.creationTime));o.isSame(r,"day")?e.get("today")?.swaps.push(n):o.isSame(r,"month")?e.get("month")?.swaps.push(n):o.isSame(r,"year")?e.get("year")?.swaps.push(n):e.get("history")?.swaps.push(n)}),Array.from(e.values())},"groupSwapsByDate");var Ro=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");var Dc=Vs("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",height:"100%",gap:15}),_c=Vs("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),Fc=i((t,e)=>t?.length?t.filter(o=>$e(o.fromBlockchain,e)||$e(o.toBlockchain,e)||$e(o.toSymbol,e)||$e(o.fromSymbol,e)).length:!1,"isStepContainsText");function Rs(){let t=we.use.setSelectedSwap(),e=Pc(),{navigateBackFrom:o}=te(),{manager:n,state:r}=Ic(),s=Ro(n).map(({swap:m})=>m),[a,l]=Lc(""),p=!r.loadedFromPersistor,u=i(m=>{let d=m.target.value;l(d)},"searchHandler"),c=s;a&&(c=s.filter(m=>$e(m.inputAmount,a)||$e(m.status,a)||Fc(m.steps,a)||$e(m.requestId,a)));let f=!c?.length&&!p;return nt.createElement(Y,{header:{onBack:o.bind(null,"/"+y.swaps),title:Kn.t("History")}},nt.createElement(Dc,null,nt.createElement(je,{setValue:l,fullWidth:!0,variant:"contained",placeholder:"Search Transaction",autoFocus:!0,onChange:u,value:a}),nt.createElement(_c,null,f&&nt.createElement(Us,null,nt.createElement(Nc,{size:32}),nt.createElement(Mc,{title:Kn.t("No results found"),description:a?Kn.t("Try using different keywords"):""})),!f&&nt.createElement(Rn,{list:c,onSwapClick:m=>{t(m),e(`${m}`,{replace:!0})},groupBy:Gs,isLoading:p}))))}i(Rs,"HistoryPage");import{i18n as om}from"@lingui/core";import{Alert as nm,BestRoute as rm,BestRouteSkeleton as im,Button as sm,Divider as Qn,styled as Et,SwapInput as aa,Typography as Jn,WarningIcon as am}from"@rango-dev/ui";import j,{useEffect as lm,useRef as pm,useState as um}from"react";import{useNavigate as cm}from"react-router-dom";import{Alert as ta,Divider as Hc,InfoIcon as Gc}from"@rango-dev/ui";import Fe from"react";import{styled as Ko}from"@rango-dev/ui";var Ks=Ko("div",{width:"100%",paddingTop:"$10"}),Xn=Ko("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:10,width:"100%"}),Xs=Ko("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%"}),js=Ko("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});import{Button as Oc,Divider as Js,MessageBox as Zs,Modal as Uc,Typography as $c,WarningIcon as zc}from"@rango-dev/ui";import _e from"react";import{useNavigate as qc}from"react-router-dom";import{Typography as Ys}from"@rango-dev/ui";import jn from"react";function Qs(t){let{title:e,value:o,valueColor:n}=t;return jn.createElement(Xs,null,jn.createElement(Ys,{size:"medium",variant:"label",color:"neutral800"},e),jn.createElement(Ys,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(Qs,"RouteErrorsModalItem");function ea(t){let{highValueLoss:e,open:o,onToggle:n,percentageChange:r,inputUsdValue:s,outputUsdValue:a,totalFeeInUsd:l}=t,p=qc(),u=e&&r?.lt(-10)?"error":"warning",c=[{title:"Swapping",value:w(s,4,4)},{title:"Gas cost",value:w(l,2,2)},{title:"Receiving",value:w(a,4,4)},{title:"Price impact",value:w(r,2,2),valueColor:`${u}500`}];return _e.createElement(Uc,{open:o,onClose:()=>n(!1),container:document.getElementById("swap-box")||document.body},e?_e.createElement(Zs,{type:u,title:q.highValueLossError.impactTitle,description:q.highValueLossError.description}):_e.createElement(Zs,{type:u,title:q.unknownPriceError.impactTitle,description:q.unknownPriceError.description}),e&&_e.createElement(Xn,null,_e.createElement(Js,{size:20}),_e.createElement($c,{size:"small",variant:"title"},"Details"),_e.createElement(Xn,null,c.map((f,m)=>_e.createElement(Qs,{key:m,...f})))),_e.createElement(Js,{size:32}),_e.createElement(Oc,{type:"primary",size:"large",prefix:_e.createElement(zc,null),fullWidth:!0,onClick:()=>{p(y.confirmSwap)}},e?q.highValueLossError.confirmMessage:q.unknownPriceError.confirmMessage))}i(ea,"RouteErrorsModal");var Vc=-10;function Yn(t){let{bestRoute:e}=B(),{highValueLoss:o,percentageChange:n,priceImpactCanNotBeComputed:r,openModal:s,onToggle:a,totalFeeInUsd:l,outputUsdValue:p,inputUsdValue:u,loading:c,extraSpace:f}=t,m=xo(e),{recommendation:d}=Ao(e),g=!m&&(o||r),h=g||m;return Fe.createElement(Fe.Fragment,null,(c||f&&!h)&&Fe.createElement(Hc,{size:20}),h&&Fe.createElement(Ks,null,g&&Fe.createElement(Fe.Fragment,null,Fe.createElement(ta,{title:o?q.highValueLossError.title:q.unknownPriceError.title,type:o&&n?.lt(Vc)?"error":"warning",variant:"alarm",action:Fe.createElement(js,{onClick:()=>a(!0)},Fe.createElement(Gc,{size:12,color:"gray"}))})),m&&Fe.createElement(ta,{type:"error",variant:"alarm",title:d})),Fe.createElement(ea,{highValueLoss:o,open:s,onToggle:a,percentageChange:n,inputUsdValue:u,outputUsdValue:p,totalFeeInUsd:l}))}i(Yn,"RouteErrors");import{ReverseIcon as Rc,styled as oa}from"@rango-dev/ui";import Xo,{useEffect as Kc,useRef as Xc,useState as jc}from"react";import{useInRouterContext as Yc,useSearchParams as Qc}from"react-router-dom";function Jc({count:t}){let e=Xc(!0),[o,n]=Qc(),r=B.use.outputAmount();return Kc(()=>{if(e.current)e.current=!1;else{let s=o.get("fromBlockchain"),a=o.get("fromToken"),l=o.get("toBlockchain"),p=o.get("toToken");n({...l&&{["fromBlockchain"]:l},...p&&{["fromToken"]:p},...s&&{["toBlockchain"]:s},...a&&{["toToken"]:a},...r&&{["fromAmount"]:r.toString()}})}},[t]),null}i(Jc,"SwitchFromAndTo");var Zc=oa("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),em=oa("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&:hover":{color:"$secondary500"}});function na(){let t=B.use.switchFromAndTo(),e=Yc(),[o,n]=jc(0);return Xo.createElement(Zc,null,Xo.createElement(em,{onClick:()=>{t(),n(r=>r+1)}},Xo.createElement(Rc,{size:12}),e&&Xo.createElement(Jc,{count:o})))}i(na,"SwitchFromAndToButton");import{useEffect as ra,useState as ia}from"react";var tm=600;function sa(){let{fetch:t,cancelFetch:e}=qo(),[o,n]=ia(!1),{fromToken:r,toToken:s,inputAmount:a,inputUsdValue:l,resetRoute:p,setRoute:u}=B(),{slippage:c,customSlippage:f,affiliatePercent:m,affiliateRef:d,affiliateWallets:g,disabledLiquiditySources:h}=$(),[v,b]=ia(""),S=f??c,x=!r||!s||Te(r,s)||!_t(a),T=i(()=>{if(o||n(!0),!x){p();let W=bo({fromToken:r,toToken:s,inputAmount:a,disabledLiquiditySources:h,slippage:S,affiliateRef:d,affiliatePercent:m,affiliateWallets:g});t(W).then(I=>{n(!1),u(I)}).catch(I=>{p(),I?.code!=="ERR_CANCELED"&&(b(I.message),n(!1))})}},"fetch"),P=Rr(()=>{x||T()},tm);return ra(()=>{if(!_t(a)||l?.eq(0)){n(!1),e();return}if(!x)return p(),n(!0),P(),e},[a,x]),ra(()=>(x||T(),e),[h.length]),{fetch:T,loading:o,error:v}}i(sa,"useSwapInput");var mm=Et("div",{display:"flex",flexDirection:"column",overflowY:"visible"}),dm=Et("div",{position:"relative"}),fm=Et("div",{display:"flex",flexDirection:"column",gap:5,alignSelf:"stretch"}),la=Et("div",{width:"100%",paddingTop:"$2"}),gm=Et("div",{paddingBottom:"$15"}),hm=Et("div",{width:"100%",display:"flex"});function pa(){let t=cm(),{fetch:e,loading:o,error:n}=sa(),{fromToken:r,fromBlockchain:s,toToken:a,toBlockchain:l,setInputAmount:p,inputAmount:u,inputUsdValue:c,outputAmount:f,outputUsdValue:m,bestRoute:d,resetRouteWallets:g}=B(),{meta:{tokens:h},loadingStatus:v}=k(),b=D.use.connectedWallets(),S=we.use.setCurrentPage(),[A,x]=um(!1),{fromAmountRangeError:T,swap:P,recommendation:W}=Ao(d),I=pm(null),G=!!Number(u)&&(!!d||o||!!n),ne=!1,C=wo(c,m),_=vo(c,C),F=!vn(d,u,c),se=!vn(d,u,m),M=mi(v,b,o,d,xo(d),_,F||se,ne,u),ae=s&&r?w(yt(b,s?.name,r?.symbol,r?.address)?.amount||"0",8,8):"0",Ne=s&&r?w(yt(b,s?.name,r?.symbol,r?.address)?.amount||"0",yt(b,s?.name,r?.symbol,r?.address)?.decimal):"0";lm(()=>(S(y.home),g(),S.bind(null,"")),[]);let U=!c||!m||!m.gt(0)?null:Re(c.toNumber(),m.toNumber()),K=i(Me=>Me.map((re,Je)=>({swapper:{displayName:re.swapperId,image:re.swapperLogo},from:{token:{displayName:re.from.symbol,image:re.from.logo},chain:{displayName:re.from.blockchain,image:re.from.blockchainLogo},price:{value:Je===0?w(u,6,6):re.fromAmount}},to:{token:{displayName:re.to.symbol,image:re.to.logo},chain:{displayName:re.to.blockchain,image:re.to.blockchainLogo},price:{value:re.toAmount}},alerts:re.swapperId===P?.swapperId?j.createElement(gm,null,j.createElement(nm,{type:"error",title:W,footer:j.createElement(hm,null,j.createElement(Jn,{size:"xsmall",variant:"body",color:"neutral900"},T),j.createElement(Qn,{direction:"horizontal",size:8}),j.createElement(Jn,{size:"xsmall",variant:"body",color:"neutral900"},"|"),j.createElement(Qn,{direction:"horizontal",size:8}),j.createElement(Jn,{size:"xsmall",variant:"body",color:"neutral900"},`Yours: ${w(P?.fromAmount||null,6,6)} ${re?.from.symbol}`))})):void 0})),"getBestRouteSteps"),Ee=Eo(d,h),ge=Qr(d);return j.createElement(Y,{ref:I,fixedHeight:!1,hasLogo:!0,footer:j.createElement(sm,{type:"primary",size:"large",disabled:M.disabled,prefix:!M.disabled&&M.hasWarning&&j.createElement(am,null),fullWidth:!0,onClick:()=>{M.state==="waitForConnecting"?t(y.wallets):M.state==="needToConfirm"?x(!0):t(y.confirmSwap)}},M.title),header:{hasConnectWallet:!0,title:om.t("Swap"),suffix:j.createElement(Nn,{layoutRef:I.current,onClickRefresh:d||n?e:void 0,onClickHistory:()=>t(y.swaps),onClickSettings:()=>t(y.settings)})}},j.createElement(mm,null,j.createElement(fm,null,j.createElement(dm,null,j.createElement(aa,{label:"From",onInputChange:p,balance:ae,chain:{displayName:s?.displayName||"",image:s?.logo||""},token:{displayName:r?.symbol||"",image:r?.image||""},onClickToken:()=>t("from-swap"),price:{value:u,usdValue:F?void 0:w(c,4,4),error:F?q.unknownPriceError.impactTitle:void 0},disabled:v==="failed",loading:v==="loading",onSelectMaxBalance:()=>{ae!=="0"&&p(Ne.split(",").join(""))}}),j.createElement(na,null)),j.createElement(aa,{sharpBottomStyle:!!d?.result||o,label:"To",chain:{displayName:l?.displayName||"",image:l?.logo||""},token:{displayName:a?.symbol||"",image:a?.image||""},percentageChange:U?.lt(0)?w(U,2,2):null,warningLevel:gt(U?.toNumber()??0),price:{value:w(f,6,6),usdValue:se?void 0:w(m,4,4),error:se?q.unknownPriceError.impactTitle:void 0},onClickToken:()=>t("to-swap"),disabled:v==="failed",loading:v==="loading"})),o&&j.createElement(la,null,j.createElement(im,{type:"basic"})),G&&!o&&ge?.result?.swaps?.length?j.createElement(la,null,j.createElement(rm,{type:"basic",recommended:!0,input:{value:w(u,6,6),usdValue:w(c,4,4)},output:{value:w(f,6,6),usdValue:w(m,4,4)},steps:K(ge.result.swaps),percentageChange:w(U,2,2),totalFee:w(Ee,2,2),totalTime:no(ro(d))})):G&&!o?j.createElement(j.Fragment,null,j.createElement(Qn,{size:20}),j.createElement(Ht,{diagnosisMessage:ge?.diagnosisMessages?.[0],fetch:e,error:!!n})):null),j.createElement(Yn,{openModal:A,onToggle:x,totalFeeInUsd:Ee,outputUsdValue:m,inputUsdValue:c,percentageChange:U,highValueLoss:_,priceImpactCanNotBeComputed:F||se,loading:o||v==="loading",extraSpace:!!d?.result||!d}))}i(pa,"Home");import{i18n as jo}from"@lingui/core";import{List as ym,ListItemButton as Sm,Radio as or,RadioRoot as Cm,Typography as nr}from"@rango-dev/ui";import Oe,{useState as Tm}from"react";import{styled as Rt}from"@rango-dev/ui";var Ye=Rt("div",{height:"100%"}),Kt=Rt("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"visible"}),Zn=Rt("li",{margin:"0 auto",width:"100%",height:"1px",backgroundColor:"$neutral300"}),er=Rt("div",{width:80,display:"flex",justifyContent:"flex-end"}),tr=Rt("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});function ua(){let{navigateBackFrom:t}=te(),[e,o]=Tm("english"),n=[{id:"english",value:"english",title:Oe.createElement(nr,{variant:"title",size:"xmedium"},jo.t("English")),onClick:()=>o("english"),end:Oe.createElement(or,{value:"english"})},{id:"french",value:"french",title:Oe.createElement(nr,{variant:"title",size:"xmedium"},jo.t("French")),onClick:()=>o("french"),end:Oe.createElement(or,{value:"french"})},{id:"spanish",value:"spanish",title:Oe.createElement(nr,{variant:"title",size:"xmedium"},jo.t("Spanish")),onClick:()=>o("spanish"),end:Oe.createElement(or,{value:"spanish"})}];return Oe.createElement(Y,{header:{onBack:t.bind(null,y.settings),title:jo.t("Language")}},Oe.createElement(Ye,null,Oe.createElement(Cm,{value:e},Oe.createElement(ym,{type:Oe.createElement(Sm,{title:"language",id:"_",onClick:()=>console.log()}),items:n}))))}i(ua,"LanguagePage");import{i18n as bt}from"@lingui/core";import{Button as Am,Checkbox as Em,Image as bm,ListItemButton as Bm,NotFound as Wm,Typography as Im}from"@rango-dev/ui";import de,{useState as Nm}from"react";import{Checkbox as vm,Skeleton as ma}from"@rango-dev/ui";import Xt from"react";import{ListItem as km,styled as wm}from"@rango-dev/ui";var ca=wm(km,{height:61});var xm=30;function rr(){return Xt.createElement(Kt,null,Array.from(Array(xm),t=>Xt.createElement(ca,{hasDivider:!0,key:t,start:Xt.createElement(ma,{variant:"circular",width:35,height:35}),title:Xt.createElement(ma,{variant:"text",size:"large",width:90}),end:Xt.createElement(vm,{checked:!1})})))}i(rr,"LoadingLiquiditySourceList");function Yo(t){let e=k.use.meta().swappers,o=$.use.disabledLiquiditySources(),n=[];return Ze(e.map(s=>s.swapperGroup)).map(s=>{let a=e.find(l=>l.swapperGroup===s);if(a){let l=!0;t&&(l=t.some(p=>p===a.title)),l&&a.types.map(p=>{n.push({id:a.swapperGroup,groupTitle:a.swapperGroup,logo:a.logo,type:p,selected:!o.includes(a.swapperGroup)})})}}),n}i(Yo,"getUniqueSwappersGroups");function ir({supportedSwappers:t,sourceType:e}){let[o,n]=Nm(""),r=$.use.toggleLiquiditySource(),{navigateBackFrom:s}=te(),a=k.use.loadingStatus(),l=Yo(t),p=[];e==="Exchanges"&&p.push("DEX"),e==="Bridges"&&(p.push("BRIDGE"),p.push("AGGREGATOR"));let u=l.filter(h=>p.includes(h.type)),c=u.length===u.filter(h=>h.selected).length,f=i(()=>{u.forEach(h=>{c?r(h.groupTitle):h.selected||r(h.groupTitle)})},"toggleAllSources"),m=u.map(h=>{let{selected:v,groupTitle:b,logo:S}=h;return{start:de.createElement(bm,{src:S,size:22,type:"circular"}),onClick:()=>r(b),end:de.createElement(Em,{checked:v}),title:de.createElement(Im,{variant:"title",size:"xmedium"},bt.t(b)),...h}}),d=i(h=>{let v=h.target.value;n(v)},"searchHandler"),g=m;return o&&(g=m.filter(h=>$e(h.groupTitle,o))),de.createElement(Y,{header:{onBack:s.bind(null,y.settings),title:bt.t(e),suffix:de.createElement(er,null,de.createElement(Am,{variant:"ghost",size:"xsmall",onClick:f},bt.t(c?"Deselect all":"Select all")))}},de.createElement(Ye,null,de.createElement(je,{value:o,setValue:n,fullWidth:!0,color:"light",variant:"contained",placeholder:bt.t("Swap {sourceType}",{sourceType:e}),onChange:d}),a==="loading"&&de.createElement(rr,null),!g.length&&o?de.createElement(tr,null,de.createElement(Wm,{title:bt.t("No results found"),description:bt.t("Try using different keywords")})):a==="success"&&de.createElement(Kt,null,g.map(h=>de.createElement(de.Fragment,{key:h.id},de.createElement(Bm,{style:{height:"61px"},...h,selected:!1}),de.createElement(Zn,null))))))}i(ir,"LiquiditySourcePage");import{i18n as Aa}from"@lingui/core";import{Divider as cr}from"@rango-dev/ui";import ct,{useState as Ea}from"react";import{i18n as ar}from"@lingui/core";import{Divider as Sa,Image as Pm,ListItemButton as Dm,NotFound as _m,Typography as Ca}from"@rango-dev/ui";import Ie,{useEffect as Fm,useState as Om}from"react";import{TransactionType as Qo}from"rango-sdk";var Bt=(s=>(s.ALL="ALL",s.EVM="EVM",s.COSMOS="COSMOS",s.UTXO="UTXO",s.OTHER="OTHER",s))(Bt||{});var sr=i((t,e)=>{switch(e){case"ALL":return!0;case"UTXO":return t.type===Qo.TRANSFER;case"OTHER":return t.type!==Qo.TRANSFER&&t.type!==Qo.COSMOS&&t.type!==Qo.EVM;default:return t.type===e}},"filterByType"),da=i((t,e,o)=>t.filter(n=>sr(n,o)).filter(n=>st(n.name,e)||st(n.displayName,e)),"filterBlockchains");import{styled as fa}from"@rango-dev/ui";var ga=fa("div",{display:"flex",flexDirection:"column",overflow:"hidden"}),Jo=fa("ul",{padding:0,margin:0,listStyle:"none",overflowY:"auto",paddingRight:"$5",".image-container":{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as Mm,Skeleton as ha}from"@rango-dev/ui";import Zo from"react";var Lm=20;function ya(){return Zo.createElement(Jo,null,Array.from(Array(Lm),t=>Zo.createElement(Mm,{key:t,hasDivider:!0,start:Zo.createElement(ha,{variant:"circular",width:35,height:35}),title:Zo.createElement(ha,{variant:"text",size:"large",width:90})})))}i(ya,"LoadingBlockchainList");function lr(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r}=t,[s,a]=Om(e),l=k.use.loadingStatus();Fm(()=>{a([...da(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?Ie.createElement(Ie.Fragment,null,Ie.createElement(Sa,{size:32}),Ie.createElement(_m,{title:ar.t("No results found"),description:ar.t("Try using different keywords")})):Ie.createElement(Jo,null,s.map(u=>Ie.createElement(Dm,{key:`${u.name}-${u.chainId}`,hasDivider:!0,onClick:()=>n(u),start:Ie.createElement(Pm,{src:u.logo,size:30}),title:Ie.createElement(Ca,{variant:"title",size:"medium"},u.displayName),id:u.chainId}))),"renderList");return Ie.createElement(ga,null,Ie.createElement(Ca,{variant:"label",size:"large"},ar.t("Select Blockchain")),Ie.createElement(Sa,{size:4}),l==="loading"&&Ie.createElement(ya,null),l==="success"&&p())}i(lr,"BlockchainList");import{i18n as qm}from"@lingui/core";import{Divider as Hm,Image as Gm,Skeleton as Vm,Typography as Rm}from"@rango-dev/ui";import qe from"react";import $m from"react";import{styled as Um}from"@rango-dev/ui";var Ta=Um("button",{padding:"$10",borderRadius:"$sm",backgroundColor:"$neutral100",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",cursor:"pointer",border:0,".image-container":{borderRadius:"$xm",overflow:"hidden"},"&:hover":{backgroundColor:"$neutral400"},"&:focus-visible":{outline:0,backgroundColor:"$neutral500"},variants:{selected:{true:{outline:"1px solid $secondary500"},false:{outline:0}}}});function rt(t){let{children:e,selected:o,onClick:n}=t;return $m.createElement(Ta,{selected:o,onClick:n},e)}i(rt,"BlockchainsChip");var zm={["EVM"]:["ETH","BSC","POLYGON"],["COSMOS"]:["COSMOS","OSMOSIS","JUNO"],["UTXO"]:["BTC","LTC","BCH"],["OTHER"]:["STARKNET","TRON","SOLANA"]},ka=i((t,e)=>t.filter(o=>sr(o,e)).filter(o=>zm[e].includes(o.name)),"generateBlockchainsLogo");import{styled as pr}from"@rango-dev/ui";var wa=pr("div",{display:"grid",gap:"$10",gridTemplateColumns:"auto 1fr 1fr 1fr 1fr"}),va=pr("div",{display:"flex",position:"relative",alignItems:"center",justifyContent:"center",paddingTop:"$10"}),xa=pr("img",{position:"absolute",top:-2,width:15,height:15});function ur(t){let{setCategory:e,category:o}=t,n=k.use.meta().blockchains,r=k.use.loadingStatus(),s=Object.keys(Bt);return qe.createElement(wa,null,r==="loading"&&Array.from(Array(5),(a,l)=>qe.createElement(Vm,{key:l,variant:"rounded",height:70,width:l===0?45:65})),r==="success"&&s.map(a=>qe.createElement(rt,{selected:o===a,key:a,onClick:()=>e(a)},a!=="ALL"&&qe.createElement(qe.Fragment,null,qe.createElement(va,null,ka(n,a).map((l,p)=>p===0?qe.createElement(xa,{key:`image-${l.name}-${l.chainId}`,src:l.logo}):qe.createElement(Gm,{key:`image-${l.name}-${l.chainId}`,src:l.logo,size:15}))),qe.createElement(Hm,{size:12})),qe.createElement(Rm,{size:"xsmall",variant:"body",color:a==="ALL"?"secondary500":void 0},qm.t(Bt[a])))))}i(ur,"SelectableCategoryList");function mr(t){let{type:e,supportedBlockchains:o}=t,{navigateBackFrom:n}=te(),[r,s]=Ea(""),[a,l]=Ea("ALL"),p=B.use.setToBlockchain(),u=B.use.setFromBlockchain(),c=o?k.use.meta().blockchains.filter(f=>o.includes(f.name)):k.use.meta().blockchains;return ct.createElement(Y,{header:{onBack:n.bind(null,y[`${e}Blockchain`]),title:Aa.t("Select Blockchain")}},ct.createElement(cr,{size:12}),ct.createElement(ur,{setCategory:l,category:a}),ct.createElement(cr,{size:24}),ct.createElement(je,{value:r,autoFocus:!0,placeholder:Aa.t("Search Blockchain"),color:"light",variant:"contained",size:"large",setValue:()=>s(""),onChange:f=>s(f.target.value)}),ct.createElement(cr,{size:16}),ct.createElement(lr,{list:c,searchedFor:r,blockchainCategory:a,onChange:f=>{e==="from"?u(f,!0):p(f,!0),n(y[`${e}Blockchain`])}}))}i(mr,"SelectBlockchainPage");import{i18n as Ha}from"@lingui/core";import{Divider as Ga}from"@rango-dev/ui";import Wt,{useEffect as pd,useState as ud}from"react";import{useNavigate as cd}from"react-router-dom";import{i18n as dr}from"@lingui/core";import{Divider as Wa,Image as Ia,Skeleton as Xm,Typography as fr}from"@rango-dev/ui";import fe,{useEffect as jm,useState as Ym}from"react";var ba=i(t=>{let e=[],o=[];for(let n of t)n.name==="ETH"||n.name==="COSMOS"||n.name==="OSMOSIS"?e.push(n):o.push(n);return e.concat(o)},"sortBlockchains");import{styled as Km}from"@rango-dev/ui";var Ba=Km("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var Qm=9,gr=10,Jm=12;function hr(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:s}=t,a=ba(e),[l,p]=Ym(null),u=k.use.loadingStatus(),c=B.use.resetToBlockchain(),f=B.use.resetFromBlockchain(),m=l?Qm:gr;return jm(()=>{let d=a.slice(gr,a.length).find(g=>g.chainId===n?.chainId&&g.name===n?.name);d&&p(d)},[n]),fe.createElement("div",null,fe.createElement(Wa,{size:12}),fe.createElement(fr,{variant:"label",size:"large"},dr.t("Select Blockchain")),fe.createElement(Wa,{size:12}),fe.createElement(Ba,null,u==="loading"&&Array.from(Array(Jm),d=>fe.createElement(Xm,{key:d,variant:"rounded",height:50})),u==="success"&&fe.createElement(fe.Fragment,null,fe.createElement(rt,{selected:!n,onClick:()=>{o==="from"?f():c()}},fe.createElement(fr,{variant:"body",size:"xsmall",color:"secondary500"},dr.t("All"))),!!l&&fe.createElement(rt,{selected:!!l&&l.chainId===n?.chainId,key:l.chainId,onClick:()=>r(l)},fe.createElement(Ia,{src:l.logo,size:30})),a.slice(0,m).map(d=>fe.createElement(rt,{key:d.chainId,selected:!!n&&n.chainId===d.chainId,onClick:()=>r(d)},fe.createElement(Ia,{src:d.logo,size:30}))),fe.createElement(rt,{onClick:s},fe.createElement(fr,{variant:"body",size:"xsmall",color:"secondary500"},dr._("More +{count}",{count:a.length-gr}))))))}i(hr,"BlockchainsSection");import{i18n as Tr}from"@lingui/core";import{darkTheme as Fa,Divider as Yt,ExternalLinkIcon as td,Image as od,ListItemButton as nd,NotFound as rd,PinIcon as id,Skeleton as Oa,Typography as Qt,VirtualizedList as sd}from"@rango-dev/ui";import L,{forwardRef as ad,useEffect as Ua,useState as $a}from"react";import{Divider as Da,ListItem as ed,Skeleton as jt}from"@rango-dev/ui";import Ue from"react";import{styled as He,Typography as Zm}from"@rango-dev/ui";var Na=He("div",{display:"flex",flexDirection:"column",flexGrow:1}),yr=He("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),en=He("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none",".description":{position:"relative",height:12,width:150,".token-title":{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"},".token-address":{transform:"translateY(12px)",visibility:"hidden","& a":{fontSize:"$12",lineHeight:"$16",color:"$neutral800",textDecoration:"none"}},".token-name":{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}},"&:hover":{".description":{".token-address":{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},".token-address-without-name":{bottom:"-15px"},".token-name":{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},".token-title":{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Sr=He("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Cr=He(Zm,{}),Ma=He("div",{textAlign:"right"}),tn=He("ul",{display:"flex",alignItems:"end",flexDirection:"column"}),UA=He("div",{display:"flex",alignItems:"center"}),La=He("div",{position:"relative",".image-container":{borderRadius:"$xm",overflow:"hidden"}}),Pa=He("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6});function _a(t){return Ue.createElement(en,null,Array.from(Array(t.size),e=>Ue.createElement(ed,{key:e,hasDivider:!0,start:Ue.createElement(jt,{variant:"circular",width:35,height:35}),end:Ue.createElement(tn,null,Ue.createElement(jt,{variant:"text",size:"large",width:70}),Ue.createElement(Da,{size:4}),Ue.createElement(jt,{variant:"text",size:"medium",width:50})),title:Ue.createElement("div",null,Ue.createElement(jt,{variant:"text",size:"large",width:90}),Ue.createElement(Da,{size:4}),Ue.createElement(jt,{variant:"text",size:"medium",width:90}))})))}i(_a,"LoadingTokenList");var kr=20,ld=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:s,customCssForTagTitle:a}=t,l=e.length;return L.createElement("div",{className:"description"},o?L.createElement("div",{className:"token-name"},o):L.createElement(yr,{className:"token-title"},L.createElement(Qt,{variant:"title",size:"xmedium"},r.symbol),L.createElement(Yt,{direction:"horizontal",size:4}),L.createElement(Sr,{css:s},L.createElement(Cr,{variant:"body",size:"xsmall",css:a},r.blockchain))),!!e&&L.createElement("div",{className:`token-address ${!o&&"token-address-without-name"}`},L.createElement("a",{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",L.createElement(td,{color:"gray",size:12}))))},"renderDesc");function za(t){let{list:e,searchedFor:o="",onChange:n}=t,[r,s]=$a(e),a=k.use.loadingStatus(),[l,p]=$a(!0),u=D.use.loading(),{blockchains:c}=k.use.meta(),f=ad((g,h)=>L.createElement("div",{...g,ref:h,style:{...g.style,height:`${parseFloat(g.style?.height)+8*2}px`}})),m=i(()=>{s(e.slice(0,r.length+kr))},"loadNextPage");Ua(()=>{p(e.length>r.length)},[r.length]),Ua(()=>{s(e.slice(0,kr))},[e]);let d=i(()=>!r.length&&o?L.createElement(L.Fragment,null,L.createElement(Yt,{size:32}),L.createElement(rd,{title:Tr.t("No results found"),description:Tr.t("Try using different keywords")})):L.createElement(sd,{Item:({index:g,style:h})=>{let v=r[g].address||"",b=c.find(T=>T.name===r[g].blockchain),S=Kr(r[g].symbol,b?.color||""),A={$$color:S[`${r[g].symbol}100`],[`.${Fa} &`]:{$$color:S[`${r[g].symbol}900`]},backgroundColor:"$$color"},x={$$color:S[`${r[g].symbol}700`],[`.${Fa} &`]:{$$color:S[`${r[g].symbol}100`]},color:"$$color"};return L.createElement("div",{style:{...h,paddingRight:5}},L.createElement(nd,{style:{height:h?.height},"tab-index":g,key:`${r[g].symbol}${r[g].address}`,id:`${r[g].symbol}${r[g].address}`,hasDivider:!0,onClick:()=>n(r[g]),start:L.createElement(La,null,L.createElement(od,{src:r[g].image,size:30}),r[g].pin&&L.createElement(Pa,null,L.createElement(id,{size:12,color:"gray"}))),title:b?.type==="COSMOS"||r[g].name||!r[g].name&&!v?L.createElement(yr,null,L.createElement(Qt,{variant:"title",size:"xmedium"},r[g].symbol),L.createElement(Yt,{direction:"horizontal",size:4}),L.createElement(Sr,{css:A},L.createElement(Cr,{variant:"body",size:"xsmall",css:x},r[g].blockchain))):void 0,description:b?.info&&v&&b.type!=="COSMOS"?ld({address:v,token:r[g],customCssForTag:A,customCssForTagTitle:x,name:r[g].name,url:b.info.addressUrl.split("{wallet}").join(v)}):r[g].name||void 0,end:u?L.createElement(tn,null,L.createElement(Oa,{variant:"text",size:"large",width:70}),L.createElement(Yt,{size:4}),L.createElement(Oa,{variant:"text",size:"medium",width:50})):r[g]?.balance&&L.createElement(Ma,null,L.createElement(Qt,{variant:"title",size:"small"},r[g].balance?.amount),L.createElement("div",null),r[g].balance?.usdValue&&L.createElement(Qt,{variant:"body",color:"neutral800",size:"xsmall"},`$${r[g].balance?.usdValue}`))}))},hasNextPage:l,itemCount:r.length,loadNextPage:m,innerElementType:f,size:60}),"renderList");return L.createElement(Na,null,L.createElement(Qt,{variant:"label",size:"large"},Tr.t("Select Token")),L.createElement(Yt,{size:4}),a==="loading"&&L.createElement(_a,{size:kr}),a==="success"&&L.createElement(en,null,d()))}i(za,"TokenList");var qa=i((t,e)=>t.filter(o=>st(o.symbol,e)||st(o.address||"",e)||st(o.name||"",e)).sort((o,n)=>n.pin-o.pin),"filterTokens");function wr(t){let{type:e,supportedBlockchains:o,supportedTokens:n,pinnedTokens:r}=t,s=cd(),{navigateBackFrom:a}=te(),{tokens:l}=k.use.meta(),p=B.use.sourceTokens(),u=B.use.destinationTokens(),[c,f]=ud(""),m=B.use.setFromToken(),d=B.use.setToToken(),g=B.use.setToBlockchain(),h=B.use.setFromBlockchain(),v=B.use.toBlockchain(),b=B.use.fromBlockchain(),S=D.use.connectedWallets(),A=D.use.loading(),x=k.use.setTokensWithBalance(),T=o?k.use.meta().blockchains.filter(C=>o.includes(C.name)):k.use.meta().blockchains,P=n?l.filter(C=>l.some(_=>Te(_,C))):l,W=n?p.filter(C=>n.some(_=>Te(_,C))):p,I=n?u.filter(C=>n.some(_=>Te(_,C))):u,G=e==="from"?W:I,ne=(G.length?G:P).map(C=>({...C,pin:r?.some(_=>Te(_,C))}));return pd(()=>{S.length&&!A&&x()},[S,A]),Wt.createElement(Y,{header:{onBack:a.bind(null,y.home),title:Ha.t("Swap {type}",{type:e})}},Wt.createElement(hr,{blockchains:T,type:e,blockchain:e==="from"?b:v,onMoreClick:()=>s(e==="from"?y.fromBlockchain:y.toBlockchain),onChange:C=>{e==="from"?h(C,!0):g(C,!0)}}),Wt.createElement(Ga,{size:24}),Wt.createElement(je,{value:c,autoFocus:!0,placeholder:Ha.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>f(""),onChange:C=>f(C.target.value)}),Wt.createElement(Ga,{size:16}),Wt.createElement(za,{list:qa(ne,c),onChange:C=>{let _=T.find(F=>C.blockchain===F.name);e==="from"?(m(C),_&&h(_,!0)):(d(C),_&&g(_,!0)),a(y.fromSwap)}}))}i(wr,"SelectSwapItemsPage");import{i18n as It}from"@lingui/core";import{ChevronRightIcon as nn,Divider as Ja,List as Sd,ListItemButton as Cd,Skeleton as Td,Switch as kd,Typography as mt}from"@rango-dev/ui";import Z from"react";import{useNavigate as wd}from"react-router-dom";import{i18n as dd}from"@lingui/core";import{Chip as fd,Divider as Ya,InfoIcon as gd,TextField as hd,Tooltip as yd,Typography as Qa}from"@rango-dev/ui";import ve from"react";import{styled as on}from"@rango-dev/ui";var Va=on("div",{paddingTop:"$5",paddingBottom:"30px"}),Ra=on("div",{display:"flex",alignItems:"center",justifyContent:"start"}),Ka=on("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Xa=on("div",{maxWidth:"300px",padding:"$10"});import{i18n as vr}from"@lingui/core";import{Typography as md}from"@rango-dev/ui";import Jt from"react";function ja(){return Jt.createElement(Xa,null,Jt.createElement(md,{variant:"label",size:"small",color:"neutral900"},vr.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage"),Jt.createElement("br",null),Jt.createElement("br",null),Jt.createElement("b",null,vr.t("Warning")),":",vr.t("This setting is applied per step, e.g. 1Inch, Thorchain, etc. and only that step will be reverted, not the whole transaction")))}i(ja,"SlippageTooltipContent");function xr(){let t=$.use.slippage(),e=$.use.setSlippage(),o=$.use.customSlippage(),n=$.use.setCustomSlippage();return ve.createElement(Va,null,ve.createElement(Ka,null,ve.createElement(Qa,{variant:"title",size:"xmedium"},dd.t("Slippage tolerance per swap")),ve.createElement(Ya,{direction:"horizontal",size:4}),ve.createElement(yd,{side:"top",content:ve.createElement(ja,null)},ve.createElement(gd,{color:"gray"}))),ve.createElement(Ra,null,ws.map((r,s)=>{let a=`slippage-${s}`;return ve.createElement(ve.Fragment,null,ve.createElement(fd,{style:{width:"64px",flexShrink:0},key:a,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`}),ve.createElement(Ya,{direction:"horizontal",size:8}))}),ve.createElement(hd,{type:"number",min:"0.01",max:"30",step:"0.01",fullWidth:!0,variant:"contained",value:o||"",color:"dark",onChange:r=>{let s=parseFloat(r.target.value);(!s||s>=Es&&s<=As)&&n(s)},suffix:o&&ve.createElement(Qa,{variant:"body",size:"small"},"%"),placeholder:"Custom"})))}i(xr,"Slippage");function Za({supportedSwappers:t,singleTheme:e}){let o=wd(),{navigateBackFrom:n}=te(),r=$.use.infiniteApprove(),s=$.use.toggleInfiniteApprove(),a=k.use.loadingStatus(),l=Yo(t),p=l.filter(T=>T.type==="BRIDGE"||T.type==="AGGREGATOR"),u=p.length,c=p.filter(T=>T.selected).length,f=l.filter(T=>T.type==="DEX"),m=f.length,d=f.filter(T=>T.selected).length,g=i((T,P)=>{switch(a){case"loading":return Z.createElement(Td,{variant:"text",size:"medium",width:50});case"failed":return Z.createElement(mt,{variant:"body",size:"medium",color:"$error500"},"Loading failed");default:return Z.createElement(mt,{variant:"body",size:"medium"},`${T} / ${P}`)}},"handleEndItem"),h={id:"bridge-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Enabled bridges")),end:Z.createElement(Z.Fragment,null,g(c,u),Z.createElement(Ja,{direction:"horizontal",size:8}),Z.createElement(nn,{color:"black"})),onClick:()=>o(y.bridges)},v={id:"exchange-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Enabled exchanges")),end:Z.createElement(Z.Fragment,null,g(d,m),Z.createElement(Ja,{direction:"horizontal",size:8}),Z.createElement(nn,{color:"gray"})),onClick:()=>o(y.exchanges)},b={id:"language-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Language")),end:Z.createElement(nn,{color:"gray"}),onClick:()=>o(y.languages)},S={id:"theme-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Theme")),end:Z.createElement(nn,{color:"gray"}),onClick:()=>o(y.themes)},A={id:"infinite-approval-item",title:Z.createElement(mt,{variant:"title",size:"xmedium"},It.t("Infinite Approval")),end:Z.createElement(kd,{checked:r}),onClick:s},x=[h,v,b];return e||x.push(S),x.push(A),Z.createElement(Y,{header:{onBack:n.bind(null,y.settings),title:It.t("Setting")}},Z.createElement(Ye,null,Z.createElement(xr,null),Z.createElement(Sd,{type:Z.createElement(Cd,{title:"_",id:"_",onClick:()=>console.log()}),items:x})))}i(Za,"SettingsPage");import{cancelSwap as pf}from"@rango-dev/queue-manager-rango-preset";import{useManager as uf}from"@rango-dev/queue-manager-react";import Nl from"react";import{i18n as dt}from"@lingui/core";import{getCurrentBlockchainOfOrNull as Gd,getCurrentStep as Vd,getRelatedWalletOrNull as Rd,PendingSwapNetworkStatus as mn}from"@rango-dev/queue-manager-rango-preset";import{Button as bl,CopyIcon as Kd,Divider as Xd,IconButton as jd,RouteCost as Yd,RouteSummary as Qd,StepDetails as Jd,theme as Zd,Typography as Mt,useCopyToClipboard as ef,usePaddingRight as tf}from"@rango-dev/ui";import{useWallets as of}from"@rango-dev/wallets-react";import Q,{useEffect as Bl,useRef as nf,useState as Wl}from"react";import{useNavigate as rf}from"react-router-dom";function el(t){let e=Math.floor((new Date().getTime()-t)/1e3),o,n=Math.floor(e/31536e3);return n>=1?o="year":(n=Math.floor(e/2592e3),n>=1?o="month":(n=Math.floor(e/86400),n>=1?o="day":(n=Math.floor(e/3600),n>=1?o="hour":(n=Math.floor(e/60),n>=1?o="minute":(n=e,o="second"))))),(n>1||n===0)&&(o+="s"),n+" "+o}i(el,"timeSince");function tl(t){return t.finishTime?`${el(parseInt(t.finishTime))} ago`:`${el(parseInt(t.creationTime))} ago`}i(tl,"getSwapDate");import{PendingSwapNetworkStatus as an}from"@rango-dev/queue-manager-rango-preset";import{Modal as Wd}from"@rango-dev/ui";import ln from"react";import{i18n as rn}from"@lingui/core";import{Button as ol,Divider as Ar,MessageBox as vd,Typography as nl}from"@rango-dev/ui";import Ge from"react";var rl=i(({onCancel:t,onClose:e})=>Ge.createElement(Ge.Fragment,null,Ge.createElement(Ar,{size:20}),Ge.createElement(vd,{type:"error",title:rn.t("Transaction Cancel"),description:rn.t("Are you sure you want to Cancel this swap?")}),Ge.createElement(Ar,{size:32}),Ge.createElement(ol,{variant:"contained",type:"primary",size:"large",onClick:t},Ge.createElement(nl,{variant:"title",size:"medium",color:"neutral100"},rn.t("Yes, Cancel it"))),Ge.createElement(Ar,{size:12}),Ge.createElement(ol,{variant:"outlined",type:"primary",size:"large",onClick:e},Ge.createElement(nl,{variant:"title",size:"medium",color:"primary"},rn.t("No, Continue")))),"CancelContent");import{i18n as sn}from"@lingui/core";import{Button as il,Divider as Er,MessageBox as xd,Typography as sl}from"@rango-dev/ui";import Ve from"react";var al=i(({onDelete:t,onClose:e})=>Ve.createElement(Ve.Fragment,null,Ve.createElement(Er,{size:20}),Ve.createElement(xd,{type:"error",title:sn.t("Delete Transaction"),description:sn.t("Are you sure you want to delete this swap?")}),Ve.createElement(Er,{size:32}),Ve.createElement(il,{variant:"contained",type:"primary",size:"large",onClick:t},Ve.createElement(sl,{variant:"title",size:"medium",color:"neutral100"},sn.t("Yes, Delete it"))),Ve.createElement(Er,{size:12}),Ve.createElement(il,{variant:"outlined",type:"primary",size:"large",onClick:e},Ve.createElement(sl,{variant:"title",size:"medium",color:"primary"},sn.t("No, Cancel")))),"DeleteContent");import{i18n as br}from"@lingui/core";import{PendingSwapNetworkStatus as Br}from"@rango-dev/queue-manager-rango-preset";var Wr={[Br.WaitingForNetworkChange]:{type:"loading",title:br.t("Change Network")},[Br.WaitingForConnectingWallet]:{type:"warning",title:br.t("Connect Wallet")},[Br.NetworkChanged]:{type:"success",title:br.t("Network Changed")}};import{MessageBox as Ed,Wallet as bd,WalletState as pl}from"@rango-dev/ui";import{useWallets as Bd}from"@rango-dev/wallets-react";import Zt from"react";import{styled as Ad}from"@rango-dev/ui";var ll=Ad("div",{display:"flex",justifyContent:"center"});var ul=i(t=>{let{type:e,title:o,currentStepWallet:n,message:r,showWalletButton:s}=t,{connect:a,getWalletInfo:l,state:p}=Bd(),u=n?.walletType,f=u&&p(u).connected?pl.CONNECTED:pl.DISCONNECTED;return Zt.createElement(Zt.Fragment,null,Zt.createElement(Ed,{type:e,title:o,description:r}),s&&u&&Zt.createElement(ll,null,Zt.createElement(bd,{title:l(u).name,image:l(u).img,type:u,state:f,onClick:async()=>a(u)})))},"WalletStateContent");function Ir(t){let{state:e,onClose:o,onDelete:n,onCancel:r,currentStepWallet:s,message:a}=t,l=e===an.WaitingForNetworkChange||e===an.WaitingForConnectingWallet||e===an.NetworkChanged;return ln.createElement(Wd,{open:!!e,onClose:o,container:document.getElementById("swap-box")||document.body},l&&ln.createElement(ul,{type:Wr[e].type,title:Wr[e].title,currentStepWallet:s,message:a,showWalletButton:e!==an.WaitingForNetworkChange}),e==="delete"&&ln.createElement(al,{onClose:o,onDelete:n}),e==="cancel"&&ln.createElement(rl,{onClose:o,onCancel:r}))}i(Ir,"SwapDetailsModal");import{i18n as eo}from"@lingui/core";import{Button as Nr,Divider as pn,MessageBox as cl,Modal as Id,TokenAmount as Nd,Typography as un}from"@rango-dev/ui";import pe from"react";import{useNavigate as Md}from"react-router-dom";function Mr(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:s,token:a,chain:l,percentageChange:p,description:u,diagnosisUrl:c}=t,f=Md();return pe.createElement(Id,{open:e,onClose:o,container:document.getElementById("swap-box")||document.body},n==="success"?pe.createElement(cl,{type:"success",title:eo.t("Swap Successful")},pe.createElement(Nd,{direction:"vertical",type:"output",centerAlign:!0,price:{value:r,usdValue:s},token:a,chain:l,percentageChange:p}),pe.createElement(pn,{size:12}),pe.createElement(un,{variant:"body",size:"medium",color:"neutral900",align:"center"},u)):pe.createElement(cl,{type:"error",title:eo.t("Transaction Failed"),description:u}),pe.createElement(pn,{size:32}),n==="success"&&pe.createElement(Nr,{variant:"contained",type:"primary",size:"large",onClick:()=>f(y.home)},pe.createElement(un,{variant:"title",size:"medium",color:"neutral100"},eo.t("Done"))),pe.createElement(pn,{size:12}),c&&pe.createElement(pe.Fragment,null,pe.createElement(Nr,{variant:"contained",type:"primary",size:"large",onClick:()=>window.open(c,"_blank")},pe.createElement(un,{variant:"title",size:"medium",color:"primary"},eo.t("Diagnosis"))),pe.createElement(pn,{size:12})),pe.createElement(Nr,{variant:"outlined",type:"primary",size:"large",onClick:o},pe.createElement(un,{variant:"title",size:"medium",color:"primary"},eo.t("See Details"))))}i(Mr,"SwapDetailsCompleteModal");import Hd from"react";import{i18n as Ud}from"@lingui/core";import{Alert as yl,IconButton as $d,LinkIcon as zd}from"@rango-dev/ui";import it,{Fragment as qd}from"react";import{Alert as Ld,ChevronDownIcon as Pd,ChevronUpIcon as Dd,IconButton as _d}from"@rango-dev/ui";import cn,{useState as Fd}from"react";function ml(t){let{message:e}=t,[o,n]=Fd(!1);return cn.createElement(Ld,{type:"error",title:e.shortMessage,action:e.detailedMessage.content&&cn.createElement(_d,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},o?cn.createElement(Dd,{size:12,color:"gray"}):cn.createElement(Pd,{size:12,color:"gray"})),footer:o?e.detailedMessage.content:void 0})}i(ml,"FailedAlert");import{styled as Od}from"@rango-dev/ui";var dl=Od("div",{display:"flex",flexDirection:"column",gap:"$10"});import{i18n as fl}from"@lingui/core";import{PendingSwapNetworkStatus as Lr}from"@rango-dev/queue-manager-rango-preset";import{Alert as Pr,Button as gl}from"@rango-dev/ui";import to from"react";function hl(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?to.createElement(Pr,{type:"warning",title:n.shortMessage,action:to.createElement(gl,{size:"xxsmall",type:"warning",onClick:()=>{o(Lr.WaitingForNetworkChange),e().catch(s=>{console.log(s)})}},fl.t("Change"))}):r===Lr.WaitingForConnectingWallet?to.createElement(Pr,{type:"warning",title:n.shortMessage,action:to.createElement(gl,{size:"xxsmall",type:"warning",onClick:()=>{o(Lr.WaitingForConnectingWallet)}},fl.t("Connect"))}):to.createElement(Pr,{type:"warning",title:n.shortMessage})}i(hl,"WarningAlert");function Dr(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:s,hasAlreadyProceededToSign:a}=t,l=Ut(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l;return it.createElement(dl,null,s.explorerUrl?.map((c,f,m)=>{let d=f+c.url,g=f===m.length-1,h=g&&u||p,v=g&&s.status==="failed";return it.createElement(qd,{key:d},it.createElement(yl,{type:h&&"loading"||v&&"error"||"success",title:c.description?`${c.description} Tx`:Ud.t("View transaction"),action:c.url&&it.createElement($d,{variant:"ghost",size:"xsmall",onClick:()=>window.open(c.url,"_blank")},it.createElement(zd,{size:16}))}))}),(u&&!a||p&&!s.explorerUrl?.length)&&it.createElement(yl,{type:"loading",title:r.shortMessage}),s.status!=="failed"&&l&&it.createElement(hl,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),s.status==="failed"&&it.createElement(ml,{message:r}))}i(Dr,"SwapDetailsAlerts");var Sl=2e3,Cl=60,Tl=i(({swap:t,...e})=>{let o=t.hasAlreadyProceededToSign!==!1;return t.steps.map((n,r)=>{let s=r===0?t.inputAmount:t.steps[r-1].outputAmount;return{from:{token:{displayName:n.fromSymbol,image:n.fromLogo||""},chain:{displayName:n.fromBlockchain,image:n.fromBlockchainLogo||""},price:{value:w(s,6,6)}},to:{token:{displayName:n.toSymbol,image:n.toLogo},chain:{displayName:n.toBlockchain,image:n.toBlockchainLogo||""},price:{value:w(n.outputAmount||n.expectedOutputAmountHumanReadable,6,6)}},swapper:{displayName:n.swapperId,image:n.swapperLogo||""},alerts:Hd.createElement(Dr,{step:n,hasAlreadyProceededToSign:o,...e})}})},"getSteps");function kl(t){if(Ut(t)&&t.status!=="failed"&&t.status!=="success")return"warning";switch(t.status){case"created":return"default";case"approved":case"waitingForApproval":case"running":return"in-progress";case"failed":return"error";case"success":return"completed"}}i(kl,"getStepState");import{styled as Nt}from"@rango-dev/ui";var wl=Nt("div",{display:"flex",width:"100%",flexDirection:"column",alignItems:"center",height:"0",flexGrow:1,"& .row":{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $5",borderBottom:"1px solid $neutral300",color:"$neutral500"},"& .request-id":{display:"flex",justifyContent:"center",alignItems:"center",height:"$24"},"& .output":{display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"},"& .title-steps":{textAlign:"left",width:"100%",padding:"0 $20 $10"}}),vl=Nt("div",{width:"100%",padding:"0px 15px"}),xl=Nt("div",{padding:"$0 $0 $20 $20",width:"100%",overflow:"auto"}),TB=Nt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Al=Nt("div",{height:"450px",display:"flex",alignItems:"center",textAlign:"center"}),El=Nt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1});var sf=20;function _r(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{tokens:s}=k.use.meta(),{canSwitchNetworkTo:a,connect:l,getWalletInfo:p}=of(),u=B.use.retry(),c=rf(),{navigateBackFrom:f}=te(),m=nf(null),[d,g]=ef(Sl),[h,v]=Wl(null),[b,S]=Wl(null);tf({elementRef:m,paddingRight:Zd.sizes[sf]});let A=i(()=>{r(),v(null)},"onCancel"),x=We.use.getUnreadNotifications(),T=We.use.setAsRead(),P=x(),W=Vd(e),I=W?.networkStatus;Bl(()=>{P.find(ie=>ie.requestId===e.requestId)&&(e.status==="success"||e.status==="failed")&&(S(e.status),T(e.requestId))},[e.status]),Bl(()=>{M?v(mn.WaitingForNetworkChange):I===mn.WaitingForConnectingWallet||I===mn.NetworkChanged?v(I):v(null)},[I]);let G=Ti(e),ne=W?Gd(e,W):null,C=W?Rd(e,W):null,_=tl(e),F=ki(e),se=i(ee=>!!p(ee)?.mobileWallet,"isMobileWallet"),M=I===mn.WaitingForNetworkChange&&!!ne&&!!C?.walletType&&(se(C.walletType)||a(C.walletType,ne)),ae=M?l.bind(null,C.walletType,ne):void 0,Ne=Ci(e,W),U=Tl({swap:e,switchNetwork:ae,showNetworkModal:I,setNetworkModal:v,message:Ne}),K=U.length,[Ee,ge]=[e.steps[0],e.steps[K-1]],Me=ge.outputAmount||ge.expectedOutputAmountHumanReadable,re=e.steps.reduce((ee,ie)=>ee+parseFloat(ie.feeInUsd||""),0),Je=e.steps.reduce((ee,ie)=>ee+(ie.estimatedTimeInSeconds||0),0),O=Math.floor(Je/Cl),X=e.steps.find(ee=>ee.diagnosisUrl)?.diagnosisUrl,H=w(String(parseFloat(w(Me,6,6))*(ho(ge.toBlockchain,ge.toSymbol,ge.toSymbolAddress,s)||0)),4,4),z=w(String(parseFloat(e.inputAmount)*(ho(Ee.fromBlockchain,Ee.fromSymbol,Ee.fromSymbolAddress,s)||0)),4,4),he=Re(z,H),ye=e.status==="success"?`You have received ${w(Me,6,6)} ${U[K-1].to.token.displayName} in ${So(e.wallets[U[K-1].to.chain.displayName]?.address||"")} wallet on ${U[K-1].to.chain.displayName} chain.`:`${dt.t("Transaction was not sent.")} ${G?`${G.outputAmount} ${G.symbol} on ${G.blockchain} remain in your wallet`:""}`;return Q.createElement(Y,{noPadding:!0,header:{title:dt.t("Swap and Bridge"),onBack:f.bind(null,y.swapDetails),onCancel:e.status==="running"?()=>v("cancel"):void 0,suffix:e.status!=="running"&&Q.createElement(wt,null,Q.createElement(bl,{variant:"ghost",type:"error",size:"xsmall",onClick:()=>v("delete")},Q.createElement(Mt,{size:"medium",variant:"label",color:"error"},dt.t("Delete"))))},footer:F&&!b&&Q.createElement(bl,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:()=>{u(e),setTimeout(()=>{c(y.home)},0)}},dt.t("Try again"))},Q.createElement(wl,null,Q.createElement(vl,null,Q.createElement("div",{className:"row"},Q.createElement(Mt,{variant:"label",size:"large",color:"neutral900"},`${dt.t("Request ID")}:`),Q.createElement("div",{className:"request-id"},Q.createElement(Mt,{variant:"label",size:"small",color:"neutral900"},o),Q.createElement(jd,{variant:"ghost",onClick:g.bind(null,o||"")},Q.createElement(Kd,{size:16,color:"gray"})))),Q.createElement("div",{className:"row"},Q.createElement(Mt,{variant:"label",size:"large",color:"neutral900"},`${dt.t("Created at")}:`),Q.createElement(Mt,{variant:"label",size:"small",color:"neutral900"},_))),Q.createElement("div",{className:"output"},Q.createElement(Yd,{fee:w(String(re),2,2),time:O,steps:K}),Q.createElement(Qd,{from:{price:{value:w(e.inputAmount,6,6),usdValue:z},token:{displayName:U[0].from.token.displayName,image:U[0].from.token.image},chain:{image:U[0].from.chain.image,displayName:U[0].from.chain.displayName}},to:{price:{value:w(Me,6,6),usdValue:H},token:{displayName:U[K-1].to.token.displayName,image:U[K-1].to.token.image},chain:{image:U[K-1].to.chain.image,displayName:U[K-1].to.chain.displayName}},percentageChange:w(he,2,2),warningLevel:gt(he?.toNumber()??0)})),Q.createElement("div",{className:"title-steps"},Q.createElement(Mt,{variant:"title",size:"small"},dt.t("Swaps steps"))),Q.createElement(Xd,{size:8}),Q.createElement(xl,{ref:m},U.map((ee,ie)=>{let fn=ie,ft=kl(e.steps[ie]),Dt=ft==="error"||ft==="in-progress"||ft==="warning"||ft==="completed"&&ie===U.length-1;return Q.createElement(Jd,{key:fn,step:ee,type:"route-progress",ref:m,state:ft,hasSeparator:ie!==0,tabIndex:fn,isFocused:Dt})}))),Q.createElement(Ir,{state:h,onClose:()=>v(null),onCancel:A,onDelete:n,message:Ne.detailedMessage.content,currentStepWallet:C}),Q.createElement(Mr,{open:!!b,diagnosisUrl:X,onClose:()=>S(null),status:e.status==="success"?"success":"failed",priceValue:w(Me,6,6),usdValue:H,percentageChange:w(he,2,2),token:{displayName:U[K-1].to.token.displayName,image:U[K-1].to.token.image},chain:{image:U[K-1].to.chain.image},description:ye}))}i(_r,"SwapDetails");import{i18n as Fr}from"@lingui/core";import{NotFound as af,Spinner as lf}from"@rango-dev/ui";import Lt from"react";function Il(t){let{requestId:e,loading:o}=t,{navigateBackFrom:n}=te();return Lt.createElement(Y,{header:{title:Fr.t("Swap and Bridge"),onBack:n.bind(null,y.swapDetails),suffix:Lt.createElement(wt,null)}},Lt.createElement(Al,null,o?Lt.createElement(El,null,Lt.createElement(lf,{size:24})):Lt.createElement(af,{title:Fr.t("Not found"),description:Fr.t("swapNotFound",{requestId:e},{message:"Swap with request ID = ${requestId} not found."})})))}i(Il,"SwapDetailsPlaceholder");function Ml(){let{manager:t,state:e}=uf(),o=!e.loadedFromPersistor,n=Ro(t),r=we.use.selectedSwapRequestId(),{navigateBackFrom:s}=te(),a=n.find(({swap:c})=>c.requestId===r),l=i(()=>{if(a?.id){let c=t?.get(a.id);c&&pf(c)}},"onCancel"),p=i(async()=>{if(a?.id)try{await t?.deleteQueue(a.id),s(y.swapDetails)}catch(c){console.log(c)}},"onDelete"),u=a?.swap;return u?Nl.createElement(_r,{swap:u,requestId:r||"",onCancel:l,onDelete:p}):Nl.createElement(Il,{requestId:r||"",loading:o})}i(Ml,"SwapDetailsPage");import{i18n as dn}from"@lingui/core";import{AutoThemeIcon as cf,DarkModeIcon as mf,LightModeIcon as df,List as ff,ListItemButton as gf,Radio as Or,RadioRoot as hf,Typography as Ur}from"@rango-dev/ui";import xe from"react";function Ll(){let{navigateBackFrom:t}=te(),e=$.use.theme(),o=$.use.setTheme(),n=[{id:"light",value:"light",title:xe.createElement(Ur,{variant:"title",size:"xmedium"},dn.t("Light")),onClick:()=>o("light"),start:xe.createElement(df,{color:"gray"}),end:xe.createElement(Or,{value:"light"})},{id:"dark",value:"dark",title:xe.createElement(Ur,{variant:"title",size:"xmedium"},dn.t("Dark")),onClick:()=>o("dark"),start:xe.createElement(mf,{color:"gray"}),end:xe.createElement(Or,{value:"dark"})},{id:"auto",value:"auto",title:xe.createElement(Ur,{variant:"title",size:"xmedium"},dn.t("Auto")),onClick:()=>o("auto"),start:xe.createElement(cf,{color:"gray"}),end:xe.createElement(Or,{value:"auto"})}];return xe.createElement(Y,{header:{onBack:t.bind(null,y.settings),title:dn.t("Theme")}},xe.createElement(Ye,null,xe.createElement(hf,{onValueChange:r=>o(r),value:e},xe.createElement(ff,{type:xe.createElement(gf,{title:"Theme",id:"_",onClick:()=>console.log()}),items:n}))))}i(Ll,"ThemePage");var Sf=i(t=>t.replace("/",""),"getAbsolutePath");function Pl(t){let{config:e}=t;return yf([{path:y.home,element:Ae.createElement(pa,null)},{path:y.fromSwap,element:Ae.createElement(wr,{type:"from",supportedBlockchains:e?.from?.blockchains,supportedTokens:e?.from?.tokens,pinnedTokens:e?.pinnedTokens})},{path:y.toSwap,element:Ae.createElement(wr,{type:"to",supportedBlockchains:e?.to?.blockchains,supportedTokens:e?.to?.tokens,pinnedTokens:e?.pinnedTokens})},{path:y.fromBlockchain,element:Ae.createElement(mr,{type:"from",supportedBlockchains:e?.to?.blockchains})},{path:y.toBlockchain,element:Ae.createElement(mr,{type:"to",supportedBlockchains:e?.to?.blockchains})},{path:y.settings,element:Ae.createElement(Za,{singleTheme:e?.theme?.singleTheme,supportedSwappers:e?.liquiditySources})},{path:y.themes,element:Ae.createElement(Ll,null)},{path:y.languages,element:Ae.createElement(ua,null)},{path:y.exchanges,element:Ae.createElement(ir,{sourceType:"Exchanges",supportedSwappers:e?.liquiditySources})},{path:y.bridges,element:Ae.createElement(ir,{sourceType:"Bridges",supportedSwappers:e?.liquiditySources})},{path:y.swaps,element:Ae.createElement(Rs,null)},{path:y.swapDetails,element:Ae.createElement(Ml,null)},{path:y.wallets,element:Ae.createElement(ps,{supportedWallets:e?.wallets,multiWallets:typeof e?.multiWallets>"u"?!0:e.multiWallets,config:e})},{path:Sf(y.confirmSwap),element:Ae.createElement(Fs,{config:e})}])}i(Pl,"AppRoutes");import{isApprovalTX as Cf,MainEvents as _l,RouteEventType as Fl,StepEventType as Pt,StepExecutionEventStatus as Tf,useEvents as kf}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Ol}from"react";import{StepExecutionBlockedEventStatus as $r}from"@rango-dev/queue-manager-rango-preset";var Dl=[$r.WAITING_FOR_CHANGE_WALLET_ACCOUNT,$r.WAITING_FOR_NETWORK_CHANGE,$r.WAITING_FOR_WALLET_CONNECT];function Ul(){let t=D.use.connectedWallets(),e=D.use.getWalletsDetails(),o=We.use.setNotification(),n=We.use.setAsRead(),r=kf();return Ol(()=>(r.on(_l.StepEvent,s=>{let{event:a,step:l,route:p}=s;if(a.type===Pt.TX_EXECUTION&&a.status===Tf.TX_SENT&&!Cf(l)||a.type===Pt.SUCCEEDED){let c=t.find(m=>m.chain===l?.fromBlockchain),f=l?.fromBlockchain!==l?.toBlockchain&&t.find(m=>m.chain===l?.toBlockchain);c&&e([c]),f&&e([f])}a.type===Pt.TX_EXECUTION_BLOCKED&&Dl.includes(a.status)||a.type===Pt.FAILED?o(a,p):(a.type===Pt.TX_EXECUTION||a.type===Pt.CHECK_STATUS)&&n(p.requestId)}),()=>r.all.clear()),[r,t.length]),Ol(()=>(r.on(_l.RouteEvent,s=>{let{event:a,route:l}=s;(a.type===Fl.FAILED||a.type===Fl.SUCCEEDED)&&o(a,l)}),()=>r.all.clear()),[r,t.length]),null}i(Ul,"WidgetEvents");import{globalCss as wf}from"@rango-dev/ui";var $l=i(()=>wf({"@import":["url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')","url('https://fonts.cdnfonts.com/css/times-new-roman')"]})(),"globalFont");import{createTheme as vf,darkTheme as xf,lightTheme as Af}from"@rango-dev/ui";import{useEffect as zl,useState as Ef}from"react";function ql({fontFamily:t="Roboto",borderRadius:e=ti,secondaryBorderRadius:o=oi,mode:n="auto"}){let r=$.use.theme(),s=k.use.fetchMeta(),a=$.use.setTheme(),l=vf({radii:{primary:`${e}px`,secondary:`${o}px`},fonts:{widget:t}}),p=`${l.className} ${Af.className}`,u=`${l.className} ${xf.className}`,[c,f]=Ef("light");return zl(()=>{i(async()=>{await s()},"fetchData")();let g=i(h=>{h.matches?f("dark"):f("light")},"switchTheme");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&f("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),zl(()=>{n!=="auto"&&a(n)},[n]),{activeTheme:i(()=>r==="auto"?c==="dark"?u:p:r==="dark"?u:p,"getActiveTheme")()}}i(ql,"useTheme");import bf,{useMemo as Bf}from"react";import{Provider as Wf}from"@rango-dev/queue-manager-react";import{makeQueueDefinition as If,checkWaitingForNetworkChange as Nf}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Mf}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as Lf}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Pf}from"rango-types";function Df(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:s,getWalletInfo:a}=Mf(),l=Bf(()=>If({API_KEY:co("API_KEY")}),[]),{blockchains:p}=k.use.meta(),c={blockchains:D.use.connectedWallets().map(S=>({accounts:[S],name:S.chain}))},f=i((S,A)=>{if(s(S,A))return r(S,A)},"switchNetwork"),m=i(S=>!!a(S).mobileWallet,"isMobileWallet"),d=p.filter(S=>S.enabled).reduce((S,A)=>(S[A.name]=A,S),{}),g=p.filter(Pf),h=i(S=>{let{supportedChains:A}=a(S);return fo(A)},"getSupportedChainNames"),v=e(),b={meta:{blockchains:d,evmBasedChains:g,evmNetworkChainInfo:Lf(g),getSupportedChainNames:h},getSigners:o,wallets:c,providers:v,switchNetwork:f,canSwitchNetworkTo:s,connect:r,state:n,isMobileWallet:m};return bf.createElement(Wf,{queuesDefs:[l],context:b,onPersistedDataLoaded:S=>{Nf(S)},isPaused:!1},t.children)}i(Df,"QueueManager");var Hl=Df;import{Events as zr,Provider as Ff}from"@rango-dev/wallets-react";import{isEvmBlockchain as Of}from"rango-sdk";import Vl,{createContext as Uf,useRef as $f}from"react";import{useEffect as _f}from"react";function Gl(t,e){let o=D.use.clearConnectedWallet(),n=No(void 0,e);return _f(()=>{o(),n=No(t,{walletConnectProjectId:e?.walletConnectProjectId})},[t]),{providers:n}}i(Gl,"useWalletProviders");var qr=Uf({onConnectWallet:()=>{}});function Hr(t){let{blockchains:e}=k.use.meta(),{providers:o}=Gl(t.providers,t?.options),n=D.use.disconnectWallet(),r=D.use.connectWallet(),s=$f(),a=e.filter(Of).map(p=>p.name),l=i((p,u,c,f,m)=>{if(u===zr.ACCOUNTS)if(c){let d=fo(m),g=si(p,c,a,d);r(g)}else n(p);if(u===zr.ACCOUNTS&&f.connected){let d=`${p}-${f.network}-${c}`;f.connected&&(s.current?s.current(d):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(u===zr.NETWORK&&f.network){let d=`${p}-${f.network}`;s.current?s.current(d):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(p,u,c,f,m)},"onUpdateState");return Vl.createElement(qr.Provider,{value:{onConnectWallet:p=>{s.current=p}}},Vl.createElement(Ff,{allBlockChains:e,providers:o,onUpdateState:l,autoConnect:!0},t.children))}i(Hr,"WidgetWallets");var Vf=qf("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center",fontFamily:"$widget"});function Kl(t){let{config:e}=t;$l();let{activeTheme:o}=ql(e?.theme||{}),[n,r]=Rl(""),[s,a]=Rl(),l=Hf(qr);Gf(()=>{e?.apiKey&&ei({API_KEY:e?.apiKey})},[e]),oo(()=>{$.persist.rehydrate(),We.persist.rehydrate(),l.onConnectWallet(r)},[]);let{setInputAmount:p,setToToken:u,setToBlockchain:c,setFromBlockchain:f,setFromToken:m}=B(),{meta:{tokens:d,blockchains:g},loadingStatus:h}=k(),{setAffiliateRef:v,setAffiliatePercent:b,setAffiliateWallets:S}=$();return oo(()=>{p(e?.amount?.toString()||"")},[e?.amount]),oo(()=>{if(h==="success"){let A=g.find(T=>T.name===e?.from?.blockchain),x=d.find(T=>Te(T,e?.from?.token||null));f(A||null),m(x||null)}},[e?.from?.token,e?.from?.blockchain,h]),oo(()=>{if(h==="success"){let A=g.find(T=>T.name===e?.to?.blockchain),x=d.find(T=>Te(T,e?.to?.token||null));c(A||null),u(x||null)}},[e?.to?.token,e?.to?.blockchain,h]),oo(()=>{v(e?.affiliate?.ref??null),b(e?.affiliate?.percent??null),S(e?.affiliate?.wallets??null)},[e?.affiliate?.ref,e?.affiliate?.percent,e?.affiliate?.wallets]),Qe.createElement(zf,{language:e?.language},Qe.createElement(Vf,{id:"swap-container",className:o},Qe.createElement(Hl,null,Qe.createElement(Ul,null),Qe.createElement(xi,{lastConnectedWallet:n,disconnectedWallet:s,clearDisconnectedWallet:()=>{a(void 0)}},Qe.createElement(Pl,{config:e})))))}i(Kl,"Main");function Rf(t){return t.config?.externalWallets?Qe.createElement(Kl,{...t}):Qe.createElement(Hr,{providers:t.config?.wallets,options:{walletConnectProjectId:t.config?.walletConnectProjectId}},Qe.createElement(Kl,{...t}))}i(Rf,"Widget");import{useWallets as Ss}from"@rango-dev/wallets-react";import{useEvents as aI,MainEvents as lI,RouteEventType as hI,StepEventType as AI,StepExecutionEventStatus as EI,StepExecutionBlockedEventStatus as bI}from"@rango-dev/queue-manager-rango-preset";export{lI as MainEvents,hI as RouteEventType,AI as StepEventType,bI as StepExecutionBlockedEventStatus,EI as StepExecutionEventStatus,Rf as Widget,Hr as WidgetWallets,Ss as useWallets,aI as useWidgetEvents};
2
2
  //# sourceMappingURL=index.js.map