@rango-dev/widget-embedded 0.12.1-next.15 → 0.12.1-next.17
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/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts +4 -0
- package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts.map +1 -0
- package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts +3 -0
- package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts.map +1 -0
- package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts +460 -0
- package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -0
- package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts +4 -0
- package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts.map +1 -0
- package/dist/components/LoadingSwapDetails/index.d.ts +2 -0
- package/dist/components/LoadingSwapDetails/index.d.ts.map +1 -0
- package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.types.d.ts +1 -1
- package/dist/components/SwapDetails/SwapDetails.types.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +4 -4
- package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
- package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
- package/dist/utils/routing.d.ts +2 -1
- package/dist/utils/routing.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/LoadingSwapDetails/LoadingSwapDetailStep.tsx +41 -0
- package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +78 -0
- package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +53 -0
- package/src/components/LoadingSwapDetails/LoadingSwapDetails.types.ts +3 -0
- package/src/components/LoadingSwapDetails/index.ts +1 -0
- package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +47 -11
- package/src/components/SwapDetails/SwapDetails.tsx +5 -2
- package/src/components/SwapDetails/SwapDetails.types.ts +1 -1
- package/src/pages/SelectSwapItemsPage.tsx +38 -31
- package/src/pages/SwapDetailsPage.tsx +9 -2
- package/src/utils/routing.ts +20 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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};
|
|
1
|
+
var up=Object.defineProperty;var i=(t,e)=>up(t,"name",{value:e,configurable:!0});import{I18nManager as ag,styled as lg}from"@rango-dev/ui";import et,{useContext as pg,useEffect as po,useMemo as ug,useState as ap}from"react";import _o,{Fragment as Fp}from"react";import{MemoryRouter as Up,useInRouterContext as $p}from"react-router";import{useQueueManager as zp}from"@rango-dev/queue-manager-rango-preset";import{useEffect as _n,useRef as On}from"react";import{createSearchParams as Dp,useLocation as _p,useSearchParams as Op}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 it from"bignumber.js";import{create as Np}from"zustand";import{subscribeWithSelector as Mp}from"zustand/middleware";import cp from"bignumber.js";var We=new cp(0);import{BigNumber as ri}from"bignumber.js";var uo=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 ri(t),r=1,s=1e3;for(let a=0;a<60;a++)if(new ri(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 co=i(t=>t?.result?.swaps?.reduce((e,o)=>e+o.estimatedTimeInSeconds,0)||0,"totalArrivalTime");var He=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Ft=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function mo(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(mo,"limitDecimalPlaces");import bg from"bignumber.js";function ot(t){return Array.from(new Set(t))}i(ot,"removeDuplicateFrom");function En(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(En,"areEqual");function si(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(si,"debounce");function pt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(pt,"containsText");var ii=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"),ai=i((t,e)=>{let o={[t]:e};for(let n=1;n<10;n++)n<5&&(o={...o,[t+n*100]:ii(e,(5-n)*32)}),n===5&&(o={...o,[t+n*100]:e}),n>5&&(o={...o,[t+n*100]:ii(e,-((n-5)*32))});return o},"generateRangeColors");function Bn(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(Bn,"searchParamsToToken");function li(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i(li,"getBestRouteToTokenUsdPrice");function Wn(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}i(Wn,"isNumberOfSwapsChanged");function In(t,e){let o=t.result?.swaps.map(r=>r.swapperId)||[],n=e.result?.swaps.map(r=>r.swapperId)||[];return!En(o,n)}i(In,"isRouteSwappersUpdated");function Nn(t,e){let o=t.result?.swaps.map(r=>r.to.symbol)||[],n=e.result?.swaps.map(r=>r.to.symbol)||[];return!En(o,n)}i(Nn,"isRouteInternalCoinsUpdated");function pi(t,e){return Wn(t,e)||In(t,e)||Nn(t,e)}i(pi,"isRouteChanged");function ui(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(ui,"getRequiredBalanceOfWallet");function ci(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(ci,"getFormattedBestRoute");function St(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(St,"getPriceImpactLevel");function go(t,e){let o=i(r=>`${r.symbol}-${r.blockchain}-${r.address??""}`,"tokenToString"),n=new Set;return t.forEach(r=>n.add(o(r))),e.filter(r=>n.has(o(r)))}i(go,"findCommonTokens");import{PendingSwapNetworkStatus as Eo}from"@rango-dev/queue-manager-rango-preset";import ve from"bignumber.js";function mi(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(mi,"formatBestRoute");function ho(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(ho,"getRequiredWallets");function yo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(yo,"isValidAddress");import{i18n as ke}from"@lingui/core";var Ut=(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))(Ut||{});var q={genericServerError:ke.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:ke.t("Please reset your liquidity sources."),description:ke.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources")},noRoutesError:{title:ke.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:ke.t("Bridge Limit Error: Please increase your amount"),decreaseAmount:ke.t("Bridge Limit Error: Please decrease your amount")},highValueLossError:{impactTitle:ke.t("High Price Impact"),title:ke.t("Price impact is too high!"),description:ke.t("The price impact is significantly higher than the allowed amount. If you are sure, continue, otherwise, change the swap."),confirmMessage:ke.t("Confirm High price impact")},routeUpdatedWithHighValueLoss:{title:ke.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:ke.t("USD Price Unknown"),title:ke.t("USD Price Unknown, Cannot calculate Price Impact."),description:ke.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:ke.t("Confirm USD Price Unknown")}};function So(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(So,"getConfirmSwapErrorMessage");import{i18n as Co}from"@lingui/core";var ut={connectWallet:Co.t("Connect Wallet"),swap:Co.t("Swap"),swapAnyway:Co.t("Swap anyway"),ethRouteWarning:Co.t("The route goes through Ethereum. Continue?")};import{create as Ap}from"zustand";import{RangoClient as fp}from"rango-sdk";var dp="c6381a79-2817-4602-83bf-6a641a409e32",Mn={API_KEY:dp};function To(t){return Mn[t]}i(To,"getConfig");function fi(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Mn=e,Mn}i(fi,"initConfig");var gi=20,hi=25;var ko,Ct=i(()=>ko||(ko=new fp(To("API_KEY")),ko),"httpService");import{WalletState as Ge}from"@rango-dev/ui";import{readAccountAddress as hp}from"@rango-dev/wallets-react";import{detectInstallLink as yp,getCosmosExperimentalChainInfo as Sp,isEvmAddress as Cp,KEPLR_COMPATIBLE_WALLETS as ih,Networks as Si}from"@rango-dev/wallets-shared";import Ln from"bignumber.js";import{isCosmosBlockchain as Tp}from"rango-types";import{WalletTypes as gp}from"@rango-dev/wallets-shared";var yi=[gp.LEAP];function kp(t){switch(!0){case t.connected:return Ge.CONNECTED;case t.connecting:return Ge.CONNECTING;case!t.installed:return Ge.NOT_INSTALLED;default:return Ge.DISCONNECTED}}i(kp,"mapStatusToWalletState");function Ci(t,e,o,n){return o.filter(r=>!yi.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=kp(t(r));return{title:s,image:a,link:yp(l),state:p,type:r}})}i(Ci,"mapWalletTypesToWalletInfo");function wo(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(wo,"walletAndSupportedChainsNames");function Ti(t,e,o,n){let r=[];function s(l,p){if(!!!r.find(m=>m.chain===l)){let m={address:p,chain:l,walletType:t};r.push(m)}}i(s,"addAccount");let a=n||[];return e.forEach(l=>{let{address:p,network:u}=hp(l),m=a.length>0,d=a.includes(u),c=u===Si.Unknown;if(m&&!d&&!c)return;let h=u===Si.Unknown&&Cp(p);if(c&&!h)return;o.includes(u)||h?a.filter(E=>o.includes(E)).forEach(E=>{s(E,p.toLowerCase())}):s(u,p)}),r}i(Ti,"prepareAccountsForWalletStore");function ki(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(ki,"getRequiredChains");function Tt(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(Tt,"getBalanceFromWallet");function vo(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(vo,"isAccountAndWalletMatched");function wi(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 Ln(r.amount.amount).shiftedBy(-r.amount.decimals).toFixed(),logo:"",usdPrice:xo(o,r.asset.symbol,r.asset.address,e)||null}))||[]}i(wi,"makeBalanceFor");function vi(t){return{...t,loading:!1,error:!0}}i(vi,"resetConnectedWalletState");var kt=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"),xo=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice"),bo=i((t,e)=>{let o=Sp(Object.entries(t).map(([,n])=>n).filter(Tp));return o&&o[e]?.experimental},"isExperimentalChain");function wt(t,e){return t.map(({balance:o,...n})=>{let r=k(new Ln(Tt(e,n.blockchain,n.symbol,n.address)?.amount||We)),s="";return n.usdPrice&&(s=k(new Ln(Tt(e,n.blockchain,n.symbol,n.address)?.amount||We).multipliedBy(n.usdPrice))),{...n,...r!=="0"&&{balance:{amount:r,usdValue:s}}}})}i(wt,"getTokensWithBalance");function $t(t,e,o,n){if(t?.name===n[0]?.name)return n;let s=e.filter(a=>a.blockchain===t?.name);return kt(wt(s,o))}i($t,"getSortedTokens");function De(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}i(De,"tokensAreEqual");function Pn(t,e){let o,n=t[0],r=t[1];return t.length===1?o=n:De(n,e)?o=r:o=n,o}i(Pn,"getDefaultToken");function xi(t){return t.sort((e,o)=>+(o.state===Ge.CONNECTED)-+(e.state===Ge.CONNECTED)||+(o.state===Ge.DISCONNECTED||o.state===Ge.CONNECTING)-+(e.state===Ge.DISCONNECTED||e.state===Ge.CONNECTING))}i(xi,"sortWalletsBasedOnConnectionState");function Ao(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(Ao,"getConciseAddress");function bi({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(bi,"getAddress");var wp=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"),Ie=wp;import{create as vp}from"zustand";import{subscribeWithSelector as xp}from"zustand/middleware";import{shallow as bp}from"zustand/shallow";var F=Ie(vp()(xp((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=>vo(p,l))?{...l,loading:!0}:l)}));try{let a=o.map(({address:u,chain:m})=>({address:u,blockchain:m})),p=(await Ct().getWalletsDetails(a)).wallets;if(p)t(u=>({loading:!1,connectedWallets:u.connectedWallets.map(m=>{let d=o.find(g=>vo(g,m)),c=p.find(g=>g.address===m.address&&g.blockChain===m.chain);return c?.failed&&d&&n&&r([d],!1),d&&c?{...m,explorerUrl:c.explorerUrl,balances:wi(c,s)}:m})}));else throw new Error("Wallet not found")}catch{t(l=>({loading:!1,connectedWallets:l.connectedWallets.map(p=>o.find(u=>vo(u,p))?vi(p):p)}))}}}))));F.subscribe(t=>t.connectedWallets,t=>{L.setState(({sourceTokens:e,destinationTokens:o})=>{let n=wt(e,t),r=wt(o,t);return{sourceTokens:kt(n),destinationTokens:kt(r)}})},{equalityFn:bp});var T=Ie(Ap()(t=>({meta:{blockchains:[],popularTokens:[],swappers:[],tokens:[]},loadingStatus:"loading",setTokensWithBalance:()=>{let e=F.getState().connectedWallets;t(o=>({...o,meta:{...o.meta,tokens:kt(wt(o.meta.tokens,e))}}))},fetchMeta:async()=>{try{let e=await Ct().getAllMetadata(),o=ot(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 Io(t,e){return!t||!e||t.lte(We)||e.lte(We)?0:e.div(t).minus(1).multipliedBy(100)}i(Io,"getOutputRatio");function No(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new ve(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new ve(1e3)))??!1}i(No,"outputRatioHasWarning");function Mo(t){return(t?.result?.swaps||[]).filter(e=>{let o=e.fromAmountMinValue?new ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ve(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(Mo,"hasLimitError");function Lo(t){if(!t)return{swap:null,fromAmountRangeError:"",recommendation:""};let e=(t?.result?.swaps||[]).filter(l=>{let p=l.fromAmountMinValue?new ve(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new ve(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 ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ve(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=q.bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(s=`Required: > ${k(o,6,6)} ${e.from.symbol}`,a=q.bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(s=`Required: <= ${k(n,6,6)} ${e.from.symbol}`,a=q.bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(s=`Required: < ${k(n,6,6)} ${e.from.symbol}`,a=q.bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:s,recommendation:a}}i(Lo,"LimitErrorMessage");function Ai(t,e,o,n,r,s,a,l,p){return t!=="success"?{title:ut.connectWallet,state:"waitForConnecting",disabled:!0}:e.length==0?{title:ut.connectWallet,state:"waitForConnecting",disabled:!1}:o||!n||!n.result||r||!p||p==="0"?{title:ut.swap,disabled:!0,state:"swap"}:s||a?{title:ut.swapAnyway,disabled:!1,hasWarning:!0,state:"needToConfirm"}:l?{title:ut.ethRouteWarning,disabled:!1,hasWarning:!0,state:"warning"}:{title:ut.swap,disabled:!1,state:"swap"}}i(Ai,"getSwapButtonState");function Dn(t,e,o){return!((!o||o.lte(We))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}i(Dn,"canComputePriceImpact");function Bp(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(Bp,"requiredWallets");var Wp=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice");function Ip(t,e){let o=We;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let s=Wp(r.asset.blockchain,r.asset.symbol,r.asset.address,e);o=o.plus(new ve(r.amount).multipliedBy(s||0))}return o}i(Ip,"getUsdFeeOfStep");function Po(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus(Ip(n,e)),We)||null}i(Po,"getTotalFeeInUsd");function Ei(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(Ei,"getMinRequiredSlippage");function Bi(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Bi,"hasProperSlippage");function Do(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:s,disabledLiquiditySources:a,slippage:l,affiliateRef:p,affiliatePercent:u,affiliateWallets:m,initialRoute:d,destination:c}=t,g=s?.reduce((S,x)=>(S[x.chain]=x.address,S),{}),h=[];r?.forEach(S=>{let x=h.find(v=>v.blockchain===S.chain);x?x.addresses.push(S.address):h.push({blockchain:S.chain,addresses:[S.address]})});let f=!!d,w=ot((d?.result?.swaps||[]).reduce((S,x)=>(S.push(x.from.blockchain,x.to.blockchain),x.internalSwaps&&Array.isArray(x.internalSwaps)&&x.internalSwaps.map(v=>{S.push(v.from.blockchain,v.to.blockchain)}),S),[]));return{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:u??void 0,affiliateWallets:m??void 0,checkPrerequisites:f,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:h,selectedWallets:g??{},slippage:l.toString(),...c&&{destination:c},...a.length>0&&{swapperGroups:a,swappersGroupsExclude:!0},...f&&{blockchains:w}}}i(Do,"createBestRouteRequestBody");function Wi(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Wi,"getWalletsForNewSwap");function vt(t){return t?.result?.outputAmount||null}i(vt,"getRouteOutputAmount");function Ye(t,e){return!t||!e?null:new ve(e).div(new ve(t)).minus(1).multipliedBy(100)}i(Ye,"getPercentageChange");function Ii(t,e){let o=vt(t),n=vt(e);if(!o||!n)return!1;let r=Ye(o,n);return r?r.toNumber()<=-1:!0}i(Ii,"isOutputAmountChangedALot");function Ni(t,e){let o=t.validationStatus,n=ki(t);return e.sort((s,a)=>n.indexOf(s.chain)-n.indexOf(a.chain)).flatMap(s=>ui(s,o)||[]).filter(s=>!s.ok).map(s=>{let a=s.asset.symbol,l=k(new ve(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=k(new ve(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(Ni,"getBalanceWarnings");function Mi(t,e){return(t?new ve(t):We).multipliedBy(e||0)}i(Mi,"calcOutputUsdValue");function zt(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Eo.NetworkChanged}i(zt,"isNetworkStatusInWarningState");function Li(t,e){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),zt(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case Eo.WaitingForConnectingWallet:n=n||"Waiting for connecting wallet";break;case Eo.WaitingForQueue:n=n||"Waiting for other running tasks to be finished";break;case Eo.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(Li,"getSwapMessages");function Pi(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(Pi,"getLastConvertedTokenInFailedSwap");function Di(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}i(Di,"shouldRetrySwap");function _i(t,e,o,n,r,s){return t||!e&&!Bp(n).every(a=>r.map(l=>l.chain).includes(a))||!!e&&!o||!!e&&!!o&&s&&!yo(s,o)}i(_i,"confirmSwapDisabled");var qt=i((t,e)=>t?.usdPrice?new it(e||We).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),L=Ie(Np()(Mp(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new it(0),outputUsdValue:new it(0),toBlockchain:null,toToken:null,bestRoute:null,routeWalletsConfirmed:!1,sourceTokens:[],destinationTokens:[],selectedWallets:[],customDestination:"",setRoute:e=>t(o=>{let n=null,r=We;return Ft(o.inputAmount)?(e&&(n=e.result?.outputAmount?new it(e.result?.outputAmount):null,r=Mi(e.result?.outputAmount,li(e)||o.toToken?.usdPrice)),{bestRoute:e,...!!e&&{outputAmount:n,outputUsdValue:r}}):{}}),resetRoute:()=>t(()=>({bestRoute:null,outputAmount:null,outputUsdValue:new it(0)})),setFromBlockchain:(e,o)=>{t(n=>{if(n.fromBlockchain?.name===e?.name)return{};let r=T.getState().meta.tokens,s=F.getState().connectedWallets,a=$t(e,r,s,n.destinationTokens),l=Pn(a,n.toToken);return{fromBlockchain:e,sourceTokens:a,...o&&{fromToken:l},...!!n.inputAmount&&{inputUsdValue:qt(l,n.inputAmount)}}})},setFromToken:e=>t(o=>({fromToken:e,...!!o.inputAmount&&{inputUsdValue:qt(e,o.inputAmount)}})),setToBlockchain:(e,o)=>{t(n=>{if(n.toBlockchain?.name===e?.name)return{};let r=T.getState().meta.tokens,s=F.getState().connectedWallets,a=$t(e,r,s,n.destinationTokens);return{toBlockchain:e,destinationTokens:a,...o&&{toToken:Pn(a,n.fromToken)}}})},setToToken:e=>t(()=>({toToken:e})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new it(0),outputUsdValue:new it(0),bestRoute:null},...!!o.fromToken&&{inputUsdValue:qt(o.fromToken,e)}}))},retry:e=>{let{tokens:o,blockchains:n}=T.getState().meta,r=F.getState().connectedWallets,s=e.status==="failed"?e.steps.findIndex(f=>f.status==="failed"):null;if(s===null||s<0)return;let a=e.steps[0],l=e.steps[e.steps.length-1],p=n.find(f=>f.name===a.fromBlockchain)||null,u=n.find(f=>f.name===l.toBlockchain)||null,m=o.find(f=>De(f,{blockchain:a.fromBlockchain,symbol:a.fromSymbol,address:a.fromSymbolAddress})),d=o.find(f=>De(f,{blockchain:l.toBlockchain,symbol:l.toSymbol,address:l.toSymbolAddress})),c=$t(p,o,r,[]),g=$t(u,o,r,[]),h=e.inputAmount;t({fromBlockchain:p,fromToken:m,inputAmount:h,outputAmount:null,inputUsdValue:qt(m||null,h),outputUsdValue:new it(0),toBlockchain:u,toToken:d,bestRoute:null,sourceTokens:c,destinationTokens:g})},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:qt(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 Lp}from"zustand";var xe=Ie(Lp()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function Oi(){let t=On(!0),[e,o]=Op(),n=_p(),r=On(n.search),s=On({}),a=L.use.fromBlockchain(),l=L.use.toBlockchain(),p=L.use.fromToken(),u=L.use.toToken(),m=L.use.setFromBlockchain(),d=L.use.setFromToken(),c=L.use.setToBlockchain(),g=L.use.setToToken(),h=L.use.inputAmount(),f=L.use.setInputAmount(),w=T.use.loadingStatus(),{blockchains:E,tokens:S}=T.use.meta(),x=xe.use.setSelectedSwap();return _n(()=>{let v={};Dp(r.current).forEach((D,B)=>{v[B]=D}),s.current=v;let C=n.pathname.split(y.swaps+"/")[1]||null;C&&x(C)},[]),_n(()=>{if(!t.current){let v="",C="",D="",B="",I="";if(w!=="success")v=s.current["fromBlockchain"],C=s.current["fromToken"],D=s.current["toBlockchain"],B=s.current["toToken"],I=s.current["fromAmount"]||h;else{if(n.state==="redirect")return;v=a?.name||"",C=(p?.symbol||"")+(p?.address?`--${p?.address}`:""),D=l?.name||"",B=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),I=h}o({...v&&{["fromBlockchain"]:v},...C&&{["fromToken"]:C},...D&&{["toBlockchain"]:D},...B&&{["toToken"]:B},...I&&{["fromAmount"]:I.toString()}},{replace:!0})}t.current=!1},[n.pathname,h,a,p,l,u]),_n(()=>{if(w==="success"){let v=e.get("fromBlockchain"),C=e.get("fromToken"),D=e.get("toBlockchain"),B=e.get("toToken"),I=e.get("fromAmount"),G=E.find(W=>W.name===v),te=Bn(S,C,G||null),b=E.find(W=>W.name===D),_=Bn(S,B,b||null);G&&(m(G),te&&d(te)),b&&(c(b),_&&g(_)),I&&f(I)}},[w]),null}i(Oi,"UpdateUrl");import{useWallets as qp}from"@rango-dev/wallets-react";import{isEvmBlockchain as Hp}from"rango-types";function Fi({children:t,...e}){let o=$p(),n=o?Fp:Up,{blockchains:r}=T.use.meta(),{canSwitchNetworkTo:s}=qp(),a=r.filter(Hp);return zp({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:a,canSwitchNetworkTo:s}),_o.createElement(_o.Fragment,null,_o.createElement(n,null,t),o&&_o.createElement(Oi,null))}i(Fi,"AppRouter");import Ee from"react";import{useRoutes as Of}from"react-router-dom";import{i18n as Zn}from"@lingui/core";import{useManager as Ec}from"@rango-dev/queue-manager-react";import{Alert as er,BestRoute as Bc,BestRouteSkeleton as Wc,Button as Ro,Divider as Bt,IconButton as Ys,MessageBox as Ic,Modal as Nc,RefreshIcon as Mc,SettingsIcon as Lc,styled as Qs,Tooltip as Pc,Typography as js,WalletIcon as Dc}from"@rango-dev/ui";import N,{useEffect as Kt,useState as Jo}from"react";import{flushSync as _c}from"react-dom";import{useNavigate as Oc}from"react-router-dom";import{Alert as Rn,BalanceErrors as ic,Button as Ls,ChevronDownIcon as sc,ChevronLeftIcon as ac,Divider as Et,MessageBox as lc,Modal as Ps,Typography as Yo,WalletIcon as pc}from"@rango-dev/ui";import A,{useEffect as uc,useState as dt}from"react";import{i18n as Oo}from"@lingui/core";function Fo(t){switch(t.type){case 0:return Oo.t("Route has been updated.");case 3:return Oo.t("Output amount changed to {newOutputAmount} ({percentageChange}% change).",{newOutputAmount:t.newOutputAmount,percentageChange:t.percentageChange});case 1:return Oo.t("Route swappers has been updated.");case 2:return Oo.t("Route internal coins has been updated.");default:return""}}i(Fo,"getRouteWarningMessage");import*as xt from"@radix-ui/react-collapsible";import{Button as Gp,IconButton as Vp,keyframes as Ui,styled as we,TextField as Kp}from"@rango-dev/ui";var Xp=Ui({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),jp=Ui({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),$i=we("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),zi=we("div",{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline"}),qi=we("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"}}}}),Hi=we(xt.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent"}),Gi=we("div",{padding:"$20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Vi=we(Vp,{position:"absolute",left:"$20"}),Ki=we("div",{paddingTop:"$20","& .wallets-list":{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline"}}),Xi=we(xt.Root,{backgroundColor:"$neutral200",borderRadius:"$sm",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),ji=we(Gp,{width:"100%",borderRadius:"$sm !important",padding:"$15 !important",justifyContent:"space-between",alignItems:"center",backgroundColor:"$neutral100 !important"}),Yi=we("div",{padding:"$10 $0","& .button__content":{display:"flex",justifyContent:"center",alignItems:"center"},"& .alarms":{paddingTop:"5px"}}),Qi=we("div",{transition:"all 300ms ease",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),Ri=we("div",{display:"flex"}),Ji=we(Kp,{padding:"$0 $15 $15 $15"}),Zi=we(xt.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Xp} 300ms ease-out`},false:{animation:`${jp} 300ms ease-out`}}}}),es=we("div",{overflow:"visible",width:"100%"});import{Button as oc,Divider as jn,Image as nc,MessageBox as Yn,Modal as Bs,SelectableWallet as rc,Typography as Ws,WalletState as Is}from"@rango-dev/ui";import re,{useEffect as Ns,useState as Gt}from"react";import{WalletState as os}from"@rango-dev/ui";import{useWallets as Qp}from"@rango-dev/wallets-react";import{KEPLR_COMPATIBLE_WALLETS as Rp,WalletTypes as Jp}from"@rango-dev/wallets-shared";import{useEffect as Zp,useState as eu}from"react";import{allProviders as Yp}from"@rango-dev/provider-all";function Uo(t,e){let o=Yp({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(Uo,"matchAndGenerateProviders");function ts(t,e){return Uo(t,e).map(r=>r.config.type)}i(ts,"configWalletsToWalletName");var tu=Object.values(Jp);function $o(t){let{config:e,chain:o,onBeforeConnect:n,onConnect:r}=t,{state:s,disconnect:a,getWalletInfo:l,connect:p}=Qp(),{connectedWallets:u}=F(),{blockchains:m}=T().meta,d=typeof e?.multiWallets>"u"?!0:e.multiWallets,c=ts(e?.wallets,{walletConnectProjectId:e?.walletConnectProjectId})||tu,g=Ci(s,l,c,o),h=xi(g),[f,w]=eu(""),E=i(C=>!u.find(D=>D.walletType===C&&D.chain===o),"isExperimentalChainNotAdded"),S=i(async C=>{let D=s(C);try{if(f&&w(""),D.connected)await a(C);else{let B=!!g.find(I=>I.state===os.CONNECTED);if(!d&&B)return;n?.(C),await p(C),r?.(C)}}catch(B){w("Error: "+B?.message)}},"handleClick"),x=i(()=>{let C=g?.filter(D=>D.state===os.CONNECTING)||[];for(let D of C)a(D.type)},"disconnectConnectingWallets");Zp(()=>()=>{x()},[]);let v=i((C,D,B)=>bo(B,D)&&E(C)&&!Rp.includes(C),"shouldExcludeWallet");return{list:h.filter(C=>!v(C.type,o??"",m)),error:f,handleClick:S}}i($o,"useWalletList");import{i18n as ks}from"@lingui/core";import{styled as ws,Typography as Ku,Wallet as Xu,WalletState as ju}from"@rango-dev/ui";import mt,{Fragment as Yu,useState as Qu}from"react";import{BottomLogo as Wu,Divider as Iu,Header as Nu,theme as Mu,usePaddingRight as Lu}from"@rango-dev/ui";import ge,{useRef as Pu}from"react";import{useNavigate as Du}from"react-router-dom";import{ChevronLeftIcon as ru}from"@rango-dev/ui";import is from"react";import{Button as ou,darkTheme as nu,styled as zo}from"@rango-dev/ui";var _e=zo(ou,{width:"$24",position:"relative",padding:"0",overflow:"unset"}),ns=zo("div",{position:"absolute",background:"$secondary500",[`.${nu} &`]:{$$color:"$colors$secondary400"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),bt=zo("div",{display:"flex",justifyContent:"flex-end",width:"$40"}),rs=zo("div",{position:"absolute",backgroundColor:"$secondary500",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0"});function Fn(t){return is.createElement(_e,{variant:"ghost",size:"small",onClick:t.onClick},is.createElement(ru,{color:"black",size:16}))}i(Fn,"BackButton");import{i18n as iu}from"@lingui/core";import{Button as su,Typography as au}from"@rango-dev/ui";import Un from"react";function $n(t){return Un.createElement(bt,null,Un.createElement(su,{variant:"ghost",onClick:t.onClick,size:"xsmall"},Un.createElement(au,{variant:"label",size:"medium",color:"error500"},iu.t("Cancel"))))}i($n,"CancelButton");import{i18n as lu}from"@lingui/core";import{Tooltip as pu,WalletIcon as uu}from"@rango-dev/ui";import qo from"react";function zn(t){return qo.createElement(pu,{side:"top",content:lu.t("Connect Wallet")},qo.createElement(_e,{variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&qo.createElement(ns,null),qo.createElement(uu,{size:18,color:"black"})))}i(zn,"WalletButton");import{i18n as Vo}from"@lingui/core";import{NotificationsIcon as xu,Popover as bu,RefreshIcon as Au,SettingsIcon as Eu,Tooltip as Ko,TransactionIcon as Bu}from"@rango-dev/ui";import ce from"react";import{ChainToken as cs,ChevronRightIcon as Su,ListItemButton as Cu,Typography as Tu}from"@rango-dev/ui";import Oe from"react";import{useNavigate as ku}from"react-router-dom";import{create as cu}from"zustand";import{persist as mu,subscribeWithSelector as du}from"zustand/middleware";var Ne=Ie(cu()(mu(du((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 Ho}from"@rango-dev/ui";var ss=Ho("div",{padding:"$10",width:"350px",minHeight:"150px"}),as=Ho("ul",{padding:0,margin:0,listStyle:"none",".to-chain-token":{transform:"translateX(-3px)"}}),ls=Ho("div",{display:"flex",padding:0,alignItems:"center",alignSelf:"stretch"}),ps=Ho("div",{display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",padding:"$10",width:"100%",height:"150px"});import{i18n as fu}from"@lingui/core";import{Divider as gu,NoNotificationIcon as hu,Typography as yu}from"@rango-dev/ui";import Go from"react";function us(){return Go.createElement(ps,null,Go.createElement(hu,{color:"secondary",size:26}),Go.createElement(gu,{size:12}),Go.createElement(yu,{variant:"body",size:"medium",color:"neutral900"},fu.t("You have no notification")))}i(us,"NotificationNotFound");var wu=4;function qn(){let t=ku(),e=xe.use.setSelectedSwap(),{getUnreadNotifications:o}=Ne(),n=o(),{tokens:r,blockchains:s}=T.use.meta(),a=n.sort((p,u)=>u.creationTime-p.creationTime).slice(0,wu),l=i(p=>{e(p),t(`/swaps/${p}`)},"handleOnClick");return Oe.createElement(ss,null,a.length?Oe.createElement(as,null,a.map(p=>{let u=r.find(g=>g.address===p.route.from.tokenAddress&&g.blockchain===p.route.from.blockchain&&g.symbol===p.route.from.tokenSymbol),m=s.find(g=>g.name===p.route.from.blockchain),d=r.find(g=>g.address===p.route.to.tokenAddress&&g.blockchain===p.route.to.blockchain&&g.symbol===p.route.to.tokenSymbol),c=s.find(g=>g.name===p.route.to.blockchain);return Oe.createElement(Cu,{key:p.requestId,onClick:()=>l(p.requestId),title:Oe.createElement(Tu,{variant:"body",size:"small",color:"$neutral900"},p.event.message),id:p.requestId,start:Oe.createElement(ls,null,Oe.createElement("div",{className:"from-chain-token"},Oe.createElement(cs,{tokenImage:u?u.image:"",chainImage:m?m.logo:"",size:"small"})),Oe.createElement("div",{className:"to-chain-token"},Oe.createElement(cs,{tokenImage:d?d.image:"",chainImage:c?c.logo:"",size:"small"}))),end:Oe.createElement(Su,{size:12,color:"gray"})})})):Oe.createElement(us,null))}i(qn,"NotificationContent");import{Typography as vu}from"@rango-dev/ui";import ms from"react";function ds(){let{getUnreadNotifications:t}=Ne(),e=t().length;return e?ms.createElement(rs,null,ms.createElement(vu,{variant:"body",size:"xsmall",color:"$background"},e)):null}i(ds,"UnreadNotificationsBadge");function Hn(t){let{layoutRef:e,onClickRefresh:o,onClickHistory:n,onClickSettings:r,onClickNotifications:s}=t;return ce.createElement(ce.Fragment,null,ce.createElement(Ko,{side:"top",content:Vo.t("Refresh")},ce.createElement(_e,{variant:"ghost",size:"small",onClick:o,disabled:!o},ce.createElement(Au,{size:16,color:o?"black":"gray"}))),ce.createElement(Ko,{side:"top",content:Vo.t("Notifications")},ce.createElement(bu,{align:"center",collisionBoundary:e,collisionPadding:{right:20,left:20},container:document.getElementById("swap-box"),content:ce.createElement(qn,null)},ce.createElement(_e,{size:"small",variant:"ghost",onClick:s},ce.createElement(xu,{size:18,color:"black"}),ce.createElement(ds,null)))),ce.createElement(Ko,{side:"top",content:Vo.t("Settings")},ce.createElement(_e,{size:"small",variant:"ghost",onClick:r},ce.createElement(Eu,{size:18,color:"black"}))),ce.createElement(Ko,{side:"top",content:Vo.t("Transactions History")},ce.createElement(_e,{size:"small",variant:"ghost",onClick:n},ce.createElement(Bu,{size:18,color:"black"}))))}i(Hn,"HomeButtons");import{styled as Gn}from"@rango-dev/ui";var fs=Gn("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"}}}}),gs=Gn("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"}}}}),hs=Gn("div",{backgroundColor:"$background","& .footer__content":{padding:"$0 $20"},"& .footer__logo":{padding:"$0 $20 $10 $20"}});var _u=20;function Ou(t,e){let{children:o,header:n,footer:r,noPadding:s,hasLogo:a=!0,fixedHeight:l=!0}=t,p=F.use.connectedWallets(),u=xe.use.connectWalletsButtonDisabled(),m=Du(),d=Pu(null);Lu({elementRef:d,paddingRight:s?"0":Mu.sizes[_u]});let c=i(()=>{u||m("/"+y.wallets)},"onConnectWallet");return ge.createElement(fs,{ref:e,fixedHeight:l,id:"swap-box"},ge.createElement(Nu,{prefix:ge.createElement(ge.Fragment,null,n.onBack&&ge.createElement(Fn,{onClick:n.onBack})),title:n.title,suffix:ge.createElement(ge.Fragment,null,n.suffix,n.hasConnectWallet&&ge.createElement(zn,{onClick:c,isConnected:!!p?.length}),n.onCancel&&ge.createElement($n,{onClick:n.onCancel}))}),ge.createElement(gs,{noPadding:s,ref:d},o),(a||r)&&ge.createElement(hs,null,ge.createElement("div",{className:"footer__content"},r),a&&ge.createElement("div",{className:"footer__logo"},ge.createElement(Iu,{size:12}),ge.createElement(Wu,null))))}i(Ou,"LayoutComponent");var Q=ge.forwardRef(Ou);Q.displayName="Layout";import{Divider as qu,Modal as Hu}from"@rango-dev/ui";import Kn from"react";import{i18n as At}from"@lingui/core";import{Image as $u,MessageBox as Vn,WalletState as zu}from"@rango-dev/ui";import ct from"react";import{keyframes as Fu,styled as Xo}from"@rango-dev/ui";var yC=Xo("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),ys=Xo("div",{position:"relative"}),Uu=Fu({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Ss=Xo("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}),Cs=Xo("div",{"& img":{borderRadius:"50%"}});function Ts(t){let{state:e,image:o,error:n}=t;return e===zu.CONNECTED?ct.createElement(Vn,{type:"success",title:At.t("Wallet Connected"),description:At.t("Your wallet is connected, you can use it to swap.")}):n?ct.createElement(Vn,{type:"error",title:At.t("Failed to Connect"),description:n||At.t("Your wallet is not connected. Please try again.")}):ct.createElement(Vn,{type:"loading",title:At.t("Connecting to your wallet"),description:At.t("Click connect in your wallet popup."),icon:ct.createElement(ys,null,ct.createElement(Cs,null,ct.createElement($u,{src:o,size:45})),ct.createElement(Ss,null))})}i(Ts,"ModalContent");function Ht(t){let{open:e,onClose:o,...n}=t;return Kn.createElement(Hu,{open:e,onClose:o,container:document.getElementById("swap-box")||document.body},Kn.createElement(Ts,{...n}),Kn.createElement(qu,{direction:"vertical",size:32}))}i(Ht,"WalletModal");import{useInRouterContext as Gu,useNavigate as Vu}from"react-router-dom";function ne(){let t=Gu(),e=Vu();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(ne,"useNavigateBack");var Ru=ws("div",{display:"grid",gap:"$10",gridTemplateColumns:" repeat(3, minmax(0, 1fr))",alignContent:"baseline",paddingTop:"$15",height:"100%"}),Ju=ws("div",{textAlign:"center"}),jo=3e3,Zu=300;function vs({config:t}){let{navigateBackFrom:e}=ne(),[o,n]=Qu(""),r=null,{list:s,handleClick:a,error:l}=$o({config:t,onBeforeConnect:c=>{r=setTimeout(()=>{n(c)},Zu)},onConnect:()=>{r&&clearTimeout(r),setTimeout(()=>{n("")},jo)}}),p=T.use.loadingStatus(),u=s.find(c=>c.type===o),m=u?.image||"",d=u?.state||ju.NOT_INSTALLED;return mt.createElement(Q,{header:{title:ks.t("Connect Wallets"),onBack:e.bind(null,y.wallets)}},mt.createElement(Ju,null,mt.createElement(Ku,{variant:"title",size:"xmedium",align:"center"},ks.t("Choose a wallet to connect.")),mt.createElement(Ru,null,s.map((c,g)=>{let h=`wallet-${g}-${c.type}`;return mt.createElement(Yu,{key:h},mt.createElement(Xu,{...c,onClick:f=>{a(f)},isLoading:p==="loading"}))}),mt.createElement(Ht,{open:!!o,onClose:()=>n(""),image:m,state:d,error:l}))))}i(vs,"WalletsPage");function xs(t,e){return e.find(o=>o.name===t)?.displayName}i(xs,"getBlockchainDisplayNameFor");import{keyframes as ec,styled as Xn}from"@rango-dev/ui";var bs=Xn("div",{position:"relative"}),tc=ec({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),As=Xn("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${tc} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Es=Xn("div",{"& img":{borderRadius:"50%"}});function Qn(t){let{config:e,chain:o,isSelected:n,selectWallet:r,limit:s,onShowMore:a}=t,l=F.use.connectedWallets(),{blockchains:p}=T.use.meta(),[u,m]=Gt(""),[d,c]=Gt(null),[g,h]=Gt(!1),[f,w]=Gt(null),{connect:E}=Ms(),{list:S,error:x,handleClick:v}=$o({config:e,chain:o,onBeforeConnect:m,onConnect:()=>setTimeout(()=>m(""),jo)}),[C,D]=Gt(S),B=S.length,I=s&&B-s>0,G=i(async b=>{h(!1),w("in-progress"),await E(b.walletType,b.chain),w("completed")},"addExperimentalChain");Ns(()=>{D(b=>{let _=S.findIndex(W=>n(W.type,o));return I&&_>1?[S[_]].concat(S.filter((W,ie)=>ie!==_)):b.map(W=>S.find(ie=>ie.type===W.type)??W)})},[JSON.stringify(S)]);let te=document.querySelector("#swap-box");return Ns(()=>{let b=null;return f==="completed"&&(b=setTimeout(()=>w(null),jo)),()=>{b&&clearTimeout(b)}},[f]),re.createElement(re.Fragment,null,C.slice(0,s).map(b=>{let _=bi({connectedWallets:l,walletType:b.type,chain:o}),W=_?Ao(_):"",ie=bo(p,o),M=!l.find(Be=>Be.walletType===b.type&&Be.chain===o),ue=ie&&M&&b.state===Is.CONNECTED,Le=ue?`Add ${o} chain`:W,U=i(()=>{b.state===Is.DISCONNECTED?v(b.type):ue?(c({walletType:b.type,chain:o,address:_??""}),h(!0)):r({walletType:b.type,chain:o,address:_??""})},"onClick"),X=d?.chain?xs(d.chain,p):void 0;return re.createElement(re.Fragment,null,u===b.type&&re.createElement(Ht,{open:u===b.type,onClose:()=>m(""),image:b.image,state:b.state,error:x}),!!d&&re.createElement(Bs,{open:!!d&&g,container:te,onClose:()=>{c(null)}},re.createElement(Yn,{title:`Add ${X} Chain`,type:"warning",description:`You should connect a ${X} supported wallet or choose a different ${X} address`},re.createElement(jn,{size:18}),re.createElement(jn,{size:32}),re.createElement(oc,{onClick:G.bind(null,d),variant:"outlined",type:"primary",fullWidth:!0,size:"large"},"Confirm"))),f&&re.createElement(Bs,{open:!!f,onClose:w.bind(null,null),container:te},f==="in-progress"?re.createElement(Yn,{type:"loading",title:`Add ${X} Chain`,description:`You should connect a ${X} supported wallet or choose a different ${X} address.`,icon:re.createElement(bs,null,re.createElement(Es,null,re.createElement(nc,{src:b.image,size:45})),re.createElement(As,null))}):re.createElement(Yn,{type:"success",title:`${X} Chain Added`,description:`${X} is added to your wallet, you can use it to swap.`}),re.createElement(jn,{direction:"vertical",size:32})),re.createElement(rc,{key:b.type,description:Le,onClick:U,selected:n(b.type,o),...b}))}),I&&re.createElement(qi,{selected:!1,onClick:a.bind(null)},re.createElement(Ws,{variant:"label",size:"medium"},"Show more wallets",re.createElement(Ws,{variant:"label",size:"medium",color:"$primary"},"\xA0+",B-(s??0)))))}i(Qn,"WalletList");var cc=2;function Ds(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:m,customDestination:d,setCustomDestination:c}=L(),{connectedWallets:g,selectWallets:h}=F(),[f,w]=dt(""),[E,S]=dt([]),[x,v]=dt(""),[C,D]=dt(null),[B,I]=dt(d),[G,te]=dt(!!d),b=ho(p),_=typeof s?.customDestination>"u"?!0:s.customDestination,W=l.find(O=>O.name===p?.result?.swaps[p?.result?.swaps.length-1].to.blockchain),ie=i(O=>!!p?.result?.swaps.find(j=>j.from.blockchain===O),"isWalletRequiredFor"),[M,ue]=dt(g.filter(O=>O.selected&&b.includes(O.chain))),Le=l.find(O=>O.name===W?.name),U=i((O,j)=>!!M.find(H=>H.walletType===O&&H.chain===j&&H.selected&&(ie(j)||!ie(j)&&!B)),"isSelected"),X=!!B&&G&&Le&&!yo(Le,B),Be=i(()=>{te(!1),I(""),ue(O=>{let j=!1;return O.map(H=>!j&&H.chain===W?.name?(j=!0,{...H,selected:!0}):H)})},"resetCustomDestination"),Se=i(O=>{if(f&&w(""),U(O.walletType,O.chain))return;let H=g.find(z=>z.walletType===O.walletType&&z.chain===O.chain);H&&(n(),O.chain===W?.name&&G&&(te(!1),I("")),ue(z=>z.filter(Ce=>Ce.chain!==O.chain).concat({...H,selected:!0})))},"onChange"),Pe=i(()=>{let O=M.filter(j=>j.selected);h(O),u(O),c(B),m(!0),o()},"onConfirmBalance"),se=i(async()=>{S([]),v(""),D(null);let O=g.filter(z=>M.find(Ce=>Ce.chain===z.chain&&Ce.walletType===z.walletType)),j=await r?.({selectedWallets:O,customDestination:B}),H=j.warnings;H?.balance?.messages&&S(H.balance.messages),H?.route&&D(H.route),j.error&&v(So(j.error)),!j.error&&(!H?.balance?.messages.length||0>0)?Pe():S(H?.balance?.messages??[])},"onConfirmWallets");uc(()=>{ue(O=>O.concat(g.filter(j=>!!!O.find(z=>z.chain===j.chain)&&j.selected&&b.includes(j.chain))))},[g.length]);let tt=document.querySelector("#swap-box");return A.createElement(Ps,{open:e,onClose:o,dismissible:!f,container:tt,...!f&&{footer:A.createElement(Ri,null,A.createElement(Ls,{loading:a,disabled:_i(a,G,B,p,M,W),onClick:se,variant:"contained",type:"primary",fullWidth:!0,size:"large"},"Confirm"))},...f&&{containerStyle:{padding:"$0"},header:A.createElement(Gi,null,A.createElement(Vi,{variant:"ghost",onClick:w.bind(null,"")},A.createElement(ac,{size:16})),A.createElement(Yo,{variant:"headline",size:"small"},`Your ${f} wallets`))},anchor:"center"},A.createElement(Ps,{open:E.length>0,onClose:S.bind(null,[]),container:tt},A.createElement(lc,{title:"Insufficient account balance",type:"error",description:A.createElement(ic,{messages:E??[]})},A.createElement(Ls,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:Pe},"Proceed anyway"))),f&&A.createElement(Ki,null,A.createElement("div",{className:"wallets-list"},A.createElement(Qn,{chain:f,isSelected:U,selectWallet:Se,multiWallets:s?.multiWallets??!0,supportedWallets:s?.wallets??[],config:s,onShowMore:w.bind(null,f)}))),!f&&A.createElement(A.Fragment,null,x&&A.createElement(A.Fragment,null,A.createElement(Rn,{variant:"alarm",type:"error",title:x}),A.createElement(Et,{size:12})),C&&A.createElement(A.Fragment,null,A.createElement(Rn,{variant:"alarm",type:"warning",title:Fo(C)}),A.createElement(Et,{size:12})),A.createElement(es,null,b.map((O,j)=>{let H=l.find(Te=>Te.name===O),z=`wallet-${j}`,Ce=j===b.length-1;return A.createElement("div",{key:z},A.createElement($i,null,A.createElement(Yo,{variant:"title",size:"xmedium"},`Your ${H?.displayName} wallets`),A.createElement(Yo,{variant:"label",color:"$neutral900",size:"medium"},`You need to connect a ${H?.displayName} wallet.`)),A.createElement(Et,{size:24}),A.createElement(zi,null,A.createElement(Qn,{chain:O,isSelected:U,selectWallet:Se,multiWallets:s?.multiWallets??!0,supportedWallets:s?.wallets??[],config:s,limit:cc,onShowMore:()=>w(H?.name??"")})),!Ce&&A.createElement(Et,{size:32}),Ce&&_&&A.createElement(Yi,null,A.createElement(Xi,{selected:G,open:G,onOpenChange:Te=>{Te?ie(W?.name??"")||ue(oe=>oe.map(ae=>ae.chain===W?.name?{...ae,selected:!1}:ae)):Be()}},A.createElement(Hi,{onClick:()=>te(Te=>!Te)},A.createElement(ji,{fullWidth:!0,suffix:A.createElement(Qi,{orientation:G?"up":"down"},A.createElement(sc,{size:10,color:"gray"}))},A.createElement("div",{className:"button__content"},A.createElement(pc,{size:18,color:"info"}),A.createElement(Et,{size:4,direction:"horizontal"}),A.createElement(Yo,{variant:"label",size:"medium"},"Send to a different address")))),A.createElement(Zi,{open:G},A.createElement(A.Fragment,null,A.createElement(Et,{size:4}),A.createElement(Ji,{autoFocus:!0,placeholder:"Your destination address",value:B,onChange:Te=>{I(Te.target.value)}})))),X&&A.createElement("div",{className:"alarms"},A.createElement(Rn,{variant:"alarm",type:"error",title:`Address '${B}' doesn't match the blockchain address pattern.`}))))}))))}i(Ds,"ConfirmWalletsModal");import{Alert as gc,Button as hc,Divider as Vs,NoRouteIcon as yc,RefreshIcon as Sc,Typography as Ks}from"@rango-dev/ui";import Fe from"react";import{create as mc}from"zustand";import{persist as dc,subscribeWithSelector as fc}from"zustand/middleware";var _s=[.5,1,3],Os=1,Fs=5,Us=100,$s=0;var $=Ie(mc()(dc(fc(t=>({slippage:Os,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=ot(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 zs(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(zs,"makeInfo");import{styled as Jn}from"@rango-dev/ui";var qs=Jn("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Hs=Jn("div",{width:"100%"}),Gs=Jn("div",{padding:"$6 $0"});function Vt(t){let{diagnosisMessage:e,fetch:o,error:n}=t,r=$.use.disabledLiquiditySources(),s=T.use.loadingStatus(),a=$.use.toggleAllLiquiditySources(),p=zs(e??null,r,n||s==="failed",a,o);return Fe.createElement(qs,null,Fe.createElement(yc,{size:24,color:"gray"}),Fe.createElement(Vs,{size:4}),Fe.createElement(Ks,{variant:"title",size:"small"},q.noRoutesError.title),!!p.description&&Fe.createElement(Ks,{variant:"body",size:"small",align:"center",color:"neutral900"},p.description),Fe.createElement(Vs,{size:4}),!!p.alert&&Fe.createElement(Hs,null,Fe.createElement(gc,{type:p.alert.type,title:p.alert.text,action:p.alert.action&&Fe.createElement(hc,{size:"xsmall",type:p.alert.type,prefix:Fe.createElement(Gs,null,Fe.createElement(Sc,{size:8})),onClick:p.alert.action.onClick},p.alert.action.title),variant:"alarm"})))}i(Vt,"NoRoutes");import{calculatePendingSwap as wc}from"@rango-dev/queue-manager-rango-preset";import vc from"bignumber.js";import{useEffect as xc}from"react";import{useRef as Cc,useState as Tc}from"react";function Qo(){let[t,e]=Tc(!1),o=Cc(null),n=i(()=>o.current?.abort(),"cancel");return{fetch:i(async s=>{n(),o.current=new AbortController,e(!0);try{let a=await Ct().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 bc(t,e){if(!t.result)throw new Error(q.noRoutesError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let o=new vc(t.result?.outputAmount||"0").multipliedBy(e.outputUsdValue||0),n=Io(e.inputUsdValue,o);if(No(e.inputUsdValue,n))throw new Error("High value loss for route",{cause:{type:1}});return t}i(bc,"throwErrorIfResponseIsNotValid");function Ac(t,e,o){let n=pi(t,e),r={balance:null,route:null,slippage:null};n&&(Ii(t,e)?r.route={type:3,newOutputAmount:k(vt(e)),percentageChange:k(Ye(vt(t),vt(e)),null,2)}:Wn(t,e)?r.route={type:0}:In(t,e)?r.route={type:1}:Nn(t,e)&&(r.route={type:2}));let s=Ni(e,o.selectedWallets);s.length===0||(r.balance={messages:s});let l=Ei(t),p=o.userSlippage>Fs;return Bi(o.userSlippage.toString(),l)?p&&(r.slippage={type:1,slippage:o.userSlippage.toString()}):r.slippage={type:0,slippage:l},r}i(Ac,"generateWarnings");function Xs(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setRoute:r,bestRoute:s,customDestination:a}=L(),{slippage:l,customSlippage:p,affiliatePercent:u,affiliateRef:m,affiliateWallets:d,disabledLiquiditySources:c}=$(),{connectedWallets:g}=F(),{meta:h}=T(),f=p||l,{fetch:w,cancelFetch:E,loading:S}=Qo();return xc(()=>E,[]),{loading:S,fetch:i(async v=>{let C=v.selectedWallets,D=v?.customDestination??a;if(!t||!e||!o||!s)return{route:null,swap:null,error:null,warnings:null};let B=Do({fromToken:t,toToken:e,inputAmount:o,wallets:g,selectedWallets:C,disabledLiquiditySources:c,slippage:f,affiliateRef:m,affiliatePercent:u,affiliateWallets:d,initialRoute:s,destination:D}),I;try{I=await w(B).then(b=>bc(b,{outputUsdValue:e.usdPrice,inputUsdValue:n})),r(I)}catch(b){return b?.code==="ERR_CANCELED"?{swap:null,error:{type:3},warnings:null}:b.cause?{swap:null,error:b.cause,warnings:null}:{swap:null,error:{type:2},warnings:null}}let G={slippage:f.toString(),disabledSwappersGroups:c},te=wc(o.toString(),I,Wi(C),G,!1,h);return{route:I,swap:te,error:null,warnings:Ac(s,I,{selectedWallets:C,userSlippage:f})}},"fetch"),cancelFetch:E}}i(Xs,"useConfirmSwap");var Fc=Qs("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"}}),Uc=Qs("div",{width:"100%",display:"flex",justifyContent:"space-between","& .confirm-button":{flexGrow:1,paddingRight:"$10"},[`& ${Ys}`]:{width:"$48",height:"$48"}});function Rs(t){let{config:e}=t,{bestRoute:o,inputAmount:n,outputAmount:r,inputUsdValue:s,outputUsdValue:a,setInputAmount:l,selectedWallets:p,routeWalletsConfirmed:u,setRouteWalletConfirmed:m,customDestination:d}=L(),c=Oc(),[g,h]=Jo(""),[f,w]=Jo(!1),{connectedWallets:E}=F(),S=!u,[x,v]=Jo(!1),C=xe.use.setSelectedSwap(),{meta:{tokens:D},loadingStatus:B}=T(),I=$.use.slippage(),G=$.use.customSlippage(),{manager:te}=Ec(),b=G||I,{fetch:_,loading:W,cancelFetch:ie}=Xs(),[M,ue]=Jo({swap:null,error:null,warnings:null}),Le=W||B==="loading",U=!W&&M.error&&[0,2].includes(M.error.type),X=!U&&!W&&o&&o.result,Be=Po(o,D),Se=k(Ye(s?.toNumber()??0,a?.toNumber()??0),2,2),Pe=St(parseFloat(Se)),se=i(async({selectedWallets:z,customDestination:Ce})=>{let Te=await _?.({selectedWallets:z,customDestination:Ce});return ue(Te),Te},"onConfirmSwap"),tt=i(async()=>{if(M.swap&&u)try{await te?.create("swap",{swapDetails:M.swap},{id:M.swap.requestId}),C(M.swap.requestId),c("/"+y.swaps+`/${M.swap.requestId}`,{replace:!0}),setTimeout(()=>{l("")},0)}catch(z){h("Error: "+z?.message)}},"addNewSwap"),O=i(async()=>{await tt()},"onConfirm"),j=i(async()=>{M?.warnings?.slippage?w(!0):await O()},"onStartConfirmSwap"),H=i(async()=>{ue({error:null,swap:null,warnings:null}),_({selectedWallets:p}).then(z=>{ue(z)}).catch(z=>console.error(z))},"onRefresh");return Kt(()=>{S&&ie()},[S]),Kt(()=>{S&&v(S)},[S]),Kt(()=>{S||_({selectedWallets:p,customDestination:d}).then(z=>ue(z)).catch(z=>console.error(z))},[]),Kt(()=>{!x&&!u&&c(y.home,{replace:!0})},[x,u]),Kt(()=>{let z=M.warnings?.route?.type&&Object.values(Ut).includes(M.warnings?.route?.type),Ce=p.length<1||!p.every(oe=>E.find(ae=>oe.address===ae.address&&oe.walletType===ae.walletType&&oe.chain===ae.chain)),Te=!1;if(z){let oe=ho(o),ae=o?.result?.swaps[o.result.swaps.length-1].to.blockchain;!!o?.result?.swaps.find(Ot=>Ot.from.blockchain===ae)||(oe=oe.slice(-oe.length,oe.length-1)),oe.every(Ot=>p.find(pp=>pp.chain===Ot))||(Te=!0)}o&&(Ce||Te)&&(queueMicrotask(()=>_c(v.bind(null,!0))),m(!1))},[M.warnings?.route,p.length,E.length]),N.createElement(Q,{header:{title:"Confirm Swap",onBack:c.bind(null,-1),hasConnectWallet:!0,suffix:N.createElement(Pc,{side:"bottom",content:Zn.t("Settings")},N.createElement(_e,{size:"small",variant:"ghost",onClick:()=>c("/"+y.settings)},N.createElement(Lc,{size:18,color:"black"})))},footer:N.createElement(Uc,null,N.createElement("div",{className:"confirm-button"},N.createElement(Ro,{variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:W,disabled:!!M.error,onClick:j},"Start Swap")),N.createElement(Ys,{variant:"contained",type:"primary",size:"large",loading:W,onClick:v.bind(null,!0)},N.createElement(Dc,{size:24})))},N.createElement(Nc,{anchor:"bottom",open:f,prefix:N.createElement(Ro,{size:"small",variant:"ghost",onClick:()=>c("/"+y.settings)},N.createElement(js,{variant:"label",size:"medium",color:"$neutral900"},"Change settings")),container:document.querySelector("#swap-box"),onClose:w.bind(null,z=>!z)},M.warnings?.slippage&&N.createElement(Ic,{type:"warning",title:M.warnings.slippage.type===1?"High slippage":"Low slippage",description:M.warnings.slippage.type===1?Zn.t("highSlippage",{selectedSlippage:b},{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(Bt,{size:18}),N.createElement(Bt,{size:32}),N.createElement(Ro,{size:"large",type:"primary",variant:"contained",fullWidth:!0,onClick:O},"Confirm anyway"))),x&&N.createElement(Ds,{open:x,onClose:v.bind(null,!1),onCancel:ie,loading:W,onCheckBalance:se,config:e}),N.createElement(Fc,null,N.createElement("div",{className:"description"},N.createElement(js,{variant:"title",size:"small"},"You get"),N.createElement(Ro,{style:{padding:"0"},variant:"ghost",disabled:W,onClick:H},N.createElement("div",{className:"icon"},N.createElement(Mc,{size:16})))),g&&N.createElement(N.Fragment,null,N.createElement(er,{type:"error",variant:"alarm",title:g}),N.createElement(Bt,{size:12})),M.warnings?.route&&N.createElement(N.Fragment,null,N.createElement(er,{variant:"alarm",type:"warning",title:Fo(M.warnings.route)}),N.createElement(Bt,{size:12})),Le&&N.createElement(Wc,{type:"swap-preview",expanded:!0}),X&&N.createElement(Bc,{expanded:!0,steps:mi(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(Be,2,2),totalTime:uo(co(o)),recommended:!0,type:"swap-preview",percentageChange:Se,warningLevel:Pe}),U&&N.createElement(N.Fragment,null,N.createElement(Bt,{size:12}),N.createElement(Vt,{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(er,{variant:"alarm",type:"error",title:So(M.error)}),N.createElement(Bt,{size:12}))))}i(Rs,"ConfirmSwapPage");import{i18n as ir}from"@lingui/core";import{useManager as Vc}from"@rango-dev/queue-manager-react";import{Divider as Kc,NotFound as Xc,styled as ia}from"@rango-dev/ui";import st,{useState as jc}from"react";import{useNavigate as Yc}from"react-router-dom";import{CloseIcon as zc,IconButton as qc,SearchIcon as Hc,TextField as Gc}from"@rango-dev/ui";import Xt from"react";import{styled as $c}from"@rango-dev/ui";var Js=$c("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 Xt.createElement(Gc,{prefix:Xt.createElement(Js,null,Xt.createElement(Hc,{color:"black"})),suffix:!!a.length&&Xt.createElement(qc,{variant:"ghost",onClick:()=>l?.(""),size:"small"},Xt.createElement(zc,{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 ea,SwapListItem as ta,Typography as oa}from"@rango-dev/ui";import Z from"react";import{styled as Zo}from"@rango-dev/ui";var tr=Zo("div",{width:"100%",display:"flex",flexDirection:"column"}),or=Zo("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),nr=Zo("div",{gap:"$10",display:"flex",flexDirection:"column"}),Zs=Zo("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function rr(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,s=n?n(e):[{title:"History",swaps:e}];if(r){let a=[{},{}];return Z.createElement(Z.Fragment,null,[{title:"Today",swaps:a},{title:"Last month",swaps:a}].map(p=>Z.createElement(Z.Fragment,{key:p.title},Z.createElement(tr,null,Z.createElement(or,null,Z.createElement(oa,{variant:"label",size:"medium",color:"neutral800",className:"group-title"},p.title)),Z.createElement(ea,{size:4}),Z.createElement(nr,null,p.swaps.map((u,m)=>{let d=m+p.title;return Z.createElement(Z.Fragment,{key:d},Z.createElement(ta,{isLoading:!0}))}))))))}return Z.createElement(Z.Fragment,null,s.filter(a=>a.swaps.length>0).map(a=>Z.createElement(Z.Fragment,{key:a.title},Z.createElement(tr,null,Z.createElement(or,null,Z.createElement(oa,{variant:"label",size:"medium",color:"neutral800",className:"group-title"},a.title)),Z.createElement(ea,{size:4}),Z.createElement(nr,null,a.swaps.map(l=>{let p=l.steps[0],u=l.steps[l.steps.length-1];return Z.createElement(Z.Fragment,{key:l.requestId},Z.createElement(ta,{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:mo(l.inputAmount)},to:{token:{image:u.toLogo,displayName:u.toSymbol},blockchain:{image:u.toBlockchainLogo||""},amount:mo(u.outputAmount||""),estimatedAmount:mo(u.expectedOutputAmountHumanReadable||"")}}}))}))))))}i(rr,"SwapsGroup");import na from"dayjs";var ra=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=na();return t.forEach(n=>{let r=na(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 en=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 Qc=ia("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",height:"100%",gap:15}),Rc=ia("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),Jc=i((t,e)=>t?.length?t.filter(o=>He(o.fromBlockchain,e)||He(o.toBlockchain,e)||He(o.toSymbol,e)||He(o.fromSymbol,e)).length:!1,"isStepContainsText");function sa(){let t=xe.use.setSelectedSwap(),e=Yc(),{navigateBackFrom:o}=ne(),{manager:n,state:r}=Vc(),s=en(n).map(({swap:c})=>c),[a,l]=jc(""),p=!r.loadedFromPersistor,u=i(c=>{let g=c.target.value;l(g)},"searchHandler"),m=s;a&&(m=s.filter(c=>He(c.inputAmount,a)||He(c.status,a)||Jc(c.steps,a)||He(c.requestId,a)));let d=!m?.length&&!p;return st.createElement(Q,{header:{onBack:o.bind(null,"/"+y.swaps),title:ir.t("History")}},st.createElement(Qc,null,st.createElement(Je,{setValue:l,fullWidth:!0,variant:"contained",placeholder:"Search Transaction",autoFocus:!0,onChange:u,value:a}),st.createElement(Rc,null,d&&st.createElement(Zs,null,st.createElement(Kc,{size:32}),st.createElement(Xc,{title:ir.t("No results found"),description:a?ir.t("Try using different keywords"):""})),!d&&st.createElement(rr,{list:m,onSwapClick:c=>{t(c),e(`${c}`,{replace:!0})},groupBy:ra,isLoading:p}))))}i(sa,"HistoryPage");import{i18n as ym}from"@lingui/core";import{Alert as Sm,BestRoute as Cm,BestRouteSkeleton as Tm,Button as km,Divider as pr,styled as Wt,SwapInput as ka,Typography as ur,WarningIcon as wm}from"@rango-dev/ui";import Y,{useEffect as vm,useRef as xm,useState as bm}from"react";import{useNavigate as Am}from"react-router-dom";import{Alert as ga,Divider as rm,InfoIcon as im}from"@rango-dev/ui";import $e from"react";import{styled as tn}from"@rango-dev/ui";var aa=tn("div",{width:"100%",paddingTop:"$10"}),sr=tn("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:10,width:"100%"}),la=tn("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%"}),pa=tn("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});import{Button as Zc,Divider as ma,MessageBox as da,Modal as em,Typography as tm,WarningIcon as om}from"@rango-dev/ui";import Ue from"react";import{useNavigate as nm}from"react-router-dom";import{Typography as ua}from"@rango-dev/ui";import ar from"react";function ca(t){let{title:e,value:o,valueColor:n}=t;return ar.createElement(la,null,ar.createElement(ua,{size:"medium",variant:"label",color:"neutral800"},e),ar.createElement(ua,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(ca,"RouteErrorsModalItem");function fa(t){let{highValueLoss:e,open:o,onToggle:n,percentageChange:r,inputUsdValue:s,outputUsdValue:a,totalFeeInUsd:l}=t,p=nm(),u=e&&r?.lt(-10)?"error":"warning",m=[{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 Ue.createElement(em,{open:o,onClose:()=>n(!1),container:document.getElementById("swap-box")||document.body},e?Ue.createElement(da,{type:u,title:q.highValueLossError.impactTitle,description:q.highValueLossError.description}):Ue.createElement(da,{type:u,title:q.unknownPriceError.impactTitle,description:q.unknownPriceError.description}),e&&Ue.createElement(sr,null,Ue.createElement(ma,{size:20}),Ue.createElement(tm,{size:"small",variant:"title"},"Details"),Ue.createElement(sr,null,m.map((d,c)=>Ue.createElement(ca,{key:c,...d})))),Ue.createElement(ma,{size:32}),Ue.createElement(Zc,{type:"primary",size:"large",prefix:Ue.createElement(om,null),fullWidth:!0,onClick:()=>{p(y.confirmSwap)}},e?q.highValueLossError.confirmMessage:q.unknownPriceError.confirmMessage))}i(fa,"RouteErrorsModal");var sm=-10;function lr(t){let{bestRoute:e}=L(),{highValueLoss:o,percentageChange:n,priceImpactCanNotBeComputed:r,openModal:s,onToggle:a,totalFeeInUsd:l,outputUsdValue:p,inputUsdValue:u,loading:m,extraSpace:d}=t,c=Mo(e),{recommendation:g}=Lo(e),h=!c&&(o||r),f=h||c;return $e.createElement($e.Fragment,null,(m||d&&!f)&&$e.createElement(rm,{size:20}),f&&$e.createElement(aa,null,h&&$e.createElement($e.Fragment,null,$e.createElement(ga,{title:o?q.highValueLossError.title:q.unknownPriceError.title,type:o&&n?.lt(sm)?"error":"warning",variant:"alarm",action:$e.createElement(pa,{onClick:()=>a(!0)},$e.createElement(im,{size:12,color:"gray"}))})),c&&$e.createElement(ga,{type:"error",variant:"alarm",title:g})),$e.createElement(fa,{highValueLoss:o,open:s,onToggle:a,percentageChange:n,inputUsdValue:u,outputUsdValue:p,totalFeeInUsd:l}))}i(lr,"RouteErrors");import{ReverseIcon as am,styled as ha}from"@rango-dev/ui";import on,{useEffect as lm,useRef as pm,useState as um}from"react";import{useInRouterContext as cm,useSearchParams as mm}from"react-router-dom";function dm({count:t}){let e=pm(!0),[o,n]=mm(),r=L.use.outputAmount();return lm(()=>{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(dm,"SwitchFromAndTo");var fm=ha("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),gm=ha("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 ya(){let t=L.use.switchFromAndTo(),e=cm(),[o,n]=um(0);return on.createElement(fm,null,on.createElement(gm,{onClick:()=>{t(),n(r=>r+1)}},on.createElement(am,{size:12}),e&&on.createElement(dm,{count:o})))}i(ya,"SwitchFromAndToButton");import{useEffect as Sa,useState as Ca}from"react";var hm=600;function Ta(){let{fetch:t,cancelFetch:e}=Qo(),[o,n]=Ca(!1),{fromToken:r,toToken:s,inputAmount:a,inputUsdValue:l,resetRoute:p,setRoute:u}=L(),{slippage:m,customSlippage:d,affiliatePercent:c,affiliateRef:g,affiliateWallets:h,disabledLiquiditySources:f}=$(),[w,E]=Ca(""),S=d??m,v=!r||!s||De(r,s)||!Ft(a),C=i(()=>{if(o||n(!0),!v){p();let B=Do({fromToken:r,toToken:s,inputAmount:a,disabledLiquiditySources:f,slippage:S,affiliateRef:g,affiliatePercent:c,affiliateWallets:h});t(B).then(I=>{n(!1),u(I)}).catch(I=>{p(),I?.code!=="ERR_CANCELED"&&(E(I.message),n(!1))})}},"fetch"),D=si(()=>{v||C()},hm);return Sa(()=>{if(!Ft(a)||l?.eq(0)){n(!1),e();return}if(!v)return p(),n(!0),D(),e},[a,v]),Sa(()=>(v||C(),e),[f.length]),{fetch:C,loading:o,error:w}}i(Ta,"useSwapInput");var Em=Wt("div",{display:"flex",flexDirection:"column",overflowY:"visible"}),Bm=Wt("div",{position:"relative"}),Wm=Wt("div",{display:"flex",flexDirection:"column",gap:5,alignSelf:"stretch"}),wa=Wt("div",{width:"100%",paddingTop:"$2"}),Im=Wt("div",{paddingBottom:"$15"}),Nm=Wt("div",{width:"100%",display:"flex"});function va(){let t=Am(),{fetch:e,loading:o,error:n}=Ta(),{fromToken:r,fromBlockchain:s,toToken:a,toBlockchain:l,setInputAmount:p,inputAmount:u,inputUsdValue:m,outputAmount:d,outputUsdValue:c,bestRoute:g,resetRouteWallets:h}=L(),{meta:{tokens:f},loadingStatus:w}=T(),E=F.use.connectedWallets(),S=xe.use.setCurrentPage(),[x,v]=bm(!1),{fromAmountRangeError:C,swap:D,recommendation:B}=Lo(g),I=xm(null),G=!!Number(u)&&(!!g||o||!!n),te=!1,b=Io(m,c),_=No(m,b),W=!Dn(g,u,m),ie=!Dn(g,u,c),M=Ai(w,E,o,g,Mo(g),_,W||ie,te,u),ue=s&&r?k(Tt(E,s?.name,r?.symbol,r?.address)?.amount||"0",8,8):"0",Le=s&&r?k(Tt(E,s?.name,r?.symbol,r?.address)?.amount||"0",Tt(E,s?.name,r?.symbol,r?.address)?.decimal):"0";vm(()=>(S(y.home),h(),S.bind(null,"")),[]);let U=!m||!c||!c.gt(0)?null:Ye(m.toNumber(),c.toNumber()),X=i(Pe=>Pe.map((se,tt)=>({swapper:{displayName:se.swapperId,image:se.swapperLogo},from:{token:{displayName:se.from.symbol,image:se.from.logo},chain:{displayName:se.from.blockchain,image:se.from.blockchainLogo},price:{value:tt===0?k(u,6,6):se.fromAmount}},to:{token:{displayName:se.to.symbol,image:se.to.logo},chain:{displayName:se.to.blockchain,image:se.to.blockchainLogo},price:{value:se.toAmount}},alerts:se.swapperId===D?.swapperId?Y.createElement(Im,null,Y.createElement(Sm,{type:"error",title:B,footer:Y.createElement(Nm,null,Y.createElement(ur,{size:"xsmall",variant:"body",color:"neutral900"},C),Y.createElement(pr,{direction:"horizontal",size:8}),Y.createElement(ur,{size:"xsmall",variant:"body",color:"neutral900"},"|"),Y.createElement(pr,{direction:"horizontal",size:8}),Y.createElement(ur,{size:"xsmall",variant:"body",color:"neutral900"},`Yours: ${k(D?.fromAmount||null,6,6)} ${se?.from.symbol}`))})):void 0})),"getBestRouteSteps"),Be=Po(g,f),Se=ci(g);return Y.createElement(Q,{ref:I,fixedHeight:!1,hasLogo:!0,footer:Y.createElement(km,{type:"primary",size:"large",disabled:M.disabled,prefix:!M.disabled&&M.hasWarning&&Y.createElement(wm,null),fullWidth:!0,onClick:()=>{M.state==="waitForConnecting"?t(y.wallets):M.state==="needToConfirm"?v(!0):t(y.confirmSwap)}},M.title),header:{hasConnectWallet:!0,title:ym.t("Swap"),suffix:Y.createElement(Hn,{layoutRef:I.current,onClickRefresh:g||n?e:void 0,onClickHistory:()=>t(y.swaps),onClickSettings:()=>t(y.settings)})}},Y.createElement(Em,null,Y.createElement(Wm,null,Y.createElement(Bm,null,Y.createElement(ka,{label:"From",onInputChange:p,balance:ue,chain:{displayName:s?.displayName||"",image:s?.logo||""},token:{displayName:r?.symbol||"",image:r?.image||""},onClickToken:()=>t("from-swap"),price:{value:u,usdValue:W?void 0:k(m,4,4),error:W?q.unknownPriceError.impactTitle:void 0},disabled:w==="failed",loading:w==="loading",onSelectMaxBalance:()=>{ue!=="0"&&p(Le.split(",").join(""))}}),Y.createElement(ya,null)),Y.createElement(ka,{sharpBottomStyle:!!g?.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:St(U?.toNumber()??0),price:{value:k(d,6,6),usdValue:ie?void 0:k(c,4,4),error:ie?q.unknownPriceError.impactTitle:void 0},onClickToken:()=>t("to-swap"),disabled:w==="failed",loading:w==="loading"})),o&&Y.createElement(wa,null,Y.createElement(Tm,{type:"basic"})),G&&!o&&Se?.result?.swaps?.length?Y.createElement(wa,null,Y.createElement(Cm,{type:"basic",recommended:!0,input:{value:k(u,6,6),usdValue:k(m,4,4)},output:{value:k(d,6,6),usdValue:k(c,4,4)},steps:X(Se.result.swaps),percentageChange:k(U,2,2),totalFee:k(Be,2,2),totalTime:uo(co(g))})):G&&!o?Y.createElement(Y.Fragment,null,Y.createElement(pr,{size:20}),Y.createElement(Vt,{diagnosisMessage:Se?.diagnosisMessages?.[0],fetch:e,error:!!n})):null),Y.createElement(lr,{openModal:x,onToggle:v,totalFeeInUsd:Be,outputUsdValue:c,inputUsdValue:m,percentageChange:U,highValueLoss:_,priceImpactCanNotBeComputed:W||ie,loading:o||w==="loading",extraSpace:!!g?.result||!g}))}i(va,"Home");import{i18n as nn}from"@lingui/core";import{List as Mm,ListItemButton as Lm,Radio as fr,RadioRoot as Pm,Typography as gr}from"@rango-dev/ui";import ze,{useState as Dm}from"react";import{styled as jt}from"@rango-dev/ui";var Ze=jt("div",{height:"100%"}),Yt=jt("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"visible"}),cr=jt("li",{margin:"0 auto",width:"100%",height:"1px",backgroundColor:"$neutral300"}),mr=jt("div",{width:80,display:"flex",justifyContent:"flex-end"}),dr=jt("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});function xa(){let{navigateBackFrom:t}=ne(),[e,o]=Dm("english"),n=[{id:"english",value:"english",title:ze.createElement(gr,{variant:"title",size:"xmedium"},nn.t("English")),onClick:()=>o("english"),end:ze.createElement(fr,{value:"english"})},{id:"french",value:"french",title:ze.createElement(gr,{variant:"title",size:"xmedium"},nn.t("French")),onClick:()=>o("french"),end:ze.createElement(fr,{value:"french"})},{id:"spanish",value:"spanish",title:ze.createElement(gr,{variant:"title",size:"xmedium"},nn.t("Spanish")),onClick:()=>o("spanish"),end:ze.createElement(fr,{value:"spanish"})}];return ze.createElement(Q,{header:{onBack:t.bind(null,y.settings),title:nn.t("Language")}},ze.createElement(Ze,null,ze.createElement(Pm,{value:e},ze.createElement(Mm,{type:ze.createElement(Lm,{title:"language",id:"_",onClick:()=>console.log()}),items:n}))))}i(xa,"LanguagePage");import{i18n as It}from"@lingui/core";import{Button as $m,Checkbox as zm,Image as qm,ListItemButton as Hm,NotFound as Gm,Typography as Vm}from"@rango-dev/ui";import he,{useState as Km}from"react";import{Checkbox as Fm,Skeleton as Aa}from"@rango-dev/ui";import Qt from"react";import{ListItem as _m,styled as Om}from"@rango-dev/ui";var ba=Om(_m,{height:61});var Um=30;function hr(){return Qt.createElement(Yt,null,Array.from(Array(Um),t=>Qt.createElement(ba,{hasDivider:!0,key:t,start:Qt.createElement(Aa,{variant:"circular",width:35,height:35}),title:Qt.createElement(Aa,{variant:"text",size:"large",width:90}),end:Qt.createElement(Fm,{checked:!1})})))}i(hr,"LoadingLiquiditySourceList");function rn(t){let e=T.use.meta().swappers,o=$.use.disabledLiquiditySources(),n=[];return ot(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(rn,"getUniqueSwappersGroups");function yr({supportedSwappers:t,sourceType:e}){let[o,n]=Km(""),r=$.use.toggleLiquiditySource(),{navigateBackFrom:s}=ne(),a=T.use.loadingStatus(),l=rn(t),p=[];e==="Exchanges"&&p.push("DEX"),e==="Bridges"&&(p.push("BRIDGE"),p.push("AGGREGATOR"));let u=l.filter(f=>p.includes(f.type)),m=u.length===u.filter(f=>f.selected).length,d=i(()=>{u.forEach(f=>{m?r(f.groupTitle):f.selected||r(f.groupTitle)})},"toggleAllSources"),c=u.map(f=>{let{selected:w,groupTitle:E,logo:S}=f;return{start:he.createElement(qm,{src:S,size:22,type:"circular"}),onClick:()=>r(E),end:he.createElement(zm,{checked:w}),title:he.createElement(Vm,{variant:"title",size:"xmedium"},It.t(E)),...f}}),g=i(f=>{let w=f.target.value;n(w)},"searchHandler"),h=c;return o&&(h=c.filter(f=>He(f.groupTitle,o))),he.createElement(Q,{header:{onBack:s.bind(null,y.settings),title:It.t(e),suffix:he.createElement(mr,null,he.createElement($m,{variant:"ghost",size:"xsmall",onClick:d},It.t(m?"Deselect all":"Select all")))}},he.createElement(Ze,null,he.createElement(Je,{value:o,setValue:n,fullWidth:!0,color:"light",variant:"contained",placeholder:It.t("Swap {sourceType}",{sourceType:e}),onChange:g}),a==="loading"&&he.createElement(hr,null),!h.length&&o?he.createElement(dr,null,he.createElement(Gm,{title:It.t("No results found"),description:It.t("Try using different keywords")})):a==="success"&&he.createElement(Yt,null,h.map(f=>he.createElement(he.Fragment,{key:f.id},he.createElement(Hm,{style:{height:"61px"},...f,selected:!1}),he.createElement(cr,null))))))}i(yr,"LiquiditySourcePage");import{i18n as Ua}from"@lingui/core";import{Divider as vr}from"@rango-dev/ui";import ft,{useState as $a}from"react";import{i18n as Cr}from"@lingui/core";import{Divider as Ma,Image as Ym,ListItemButton as Qm,NotFound as Rm,Typography as La}from"@rango-dev/ui";import Me,{useEffect as Jm,useState as Zm}from"react";import{TransactionType as sn}from"rango-sdk";var Nt=(s=>(s.ALL="ALL",s.EVM="EVM",s.COSMOS="COSMOS",s.UTXO="UTXO",s.OTHER="OTHER",s))(Nt||{});var Sr=i((t,e)=>{switch(e){case"ALL":return!0;case"UTXO":return t.type===sn.TRANSFER;case"OTHER":return t.type!==sn.TRANSFER&&t.type!==sn.COSMOS&&t.type!==sn.EVM;default:return t.type===e}},"filterByType"),Ea=i((t,e,o)=>t.filter(n=>Sr(n,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{styled as Ba}from"@rango-dev/ui";var Wa=Ba("div",{display:"flex",flexDirection:"column",overflow:"hidden"}),an=Ba("ul",{padding:0,margin:0,listStyle:"none",overflowY:"auto",paddingRight:"$5",".image-container":{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as Xm,Skeleton as Ia}from"@rango-dev/ui";import ln from"react";var jm=20;function Na(){return ln.createElement(an,null,Array.from(Array(jm),t=>ln.createElement(Xm,{key:t,hasDivider:!0,start:ln.createElement(Ia,{variant:"circular",width:35,height:35}),title:ln.createElement(Ia,{variant:"text",size:"large",width:90})})))}i(Na,"LoadingBlockchainList");function Tr(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r}=t,[s,a]=Zm(e),l=T.use.loadingStatus();Jm(()=>{a([...Ea(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?Me.createElement(Me.Fragment,null,Me.createElement(Ma,{size:32}),Me.createElement(Rm,{title:Cr.t("No results found"),description:Cr.t("Try using different keywords")})):Me.createElement(an,null,s.map(u=>Me.createElement(Qm,{key:`${u.name}-${u.chainId}`,hasDivider:!0,onClick:()=>n(u),start:Me.createElement(Ym,{src:u.logo,size:30}),title:Me.createElement(La,{variant:"title",size:"medium"},u.displayName),id:u.chainId}))),"renderList");return Me.createElement(Wa,null,Me.createElement(La,{variant:"label",size:"large"},Cr.t("Select Blockchain")),Me.createElement(Ma,{size:4}),l==="loading"&&Me.createElement(Na,null),l==="success"&&p())}i(Tr,"BlockchainList");import{i18n as nd}from"@lingui/core";import{Divider as rd,Image as id,Skeleton as sd,Typography as ad}from"@rango-dev/ui";import Ve from"react";import td from"react";import{styled as ed}from"@rango-dev/ui";var Pa=ed("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 at(t){let{children:e,selected:o,onClick:n}=t;return td.createElement(Pa,{selected:o,onClick:n},e)}i(at,"BlockchainsChip");var od={["EVM"]:["ETH","BSC","POLYGON"],["COSMOS"]:["COSMOS","OSMOSIS","JUNO"],["UTXO"]:["BTC","LTC","BCH"],["OTHER"]:["STARKNET","TRON","SOLANA"]},Da=i((t,e)=>t.filter(o=>Sr(o,e)).filter(o=>od[e].includes(o.name)),"generateBlockchainsLogo");import{styled as kr}from"@rango-dev/ui";var _a=kr("div",{display:"grid",gap:"$10",gridTemplateColumns:"auto 1fr 1fr 1fr 1fr"}),Oa=kr("div",{display:"flex",position:"relative",alignItems:"center",justifyContent:"center",paddingTop:"$10"}),Fa=kr("img",{position:"absolute",top:-2,width:15,height:15});function wr(t){let{setCategory:e,category:o}=t,n=T.use.meta().blockchains,r=T.use.loadingStatus(),s=Object.keys(Nt);return Ve.createElement(_a,null,r==="loading"&&Array.from(Array(5),(a,l)=>Ve.createElement(sd,{key:l,variant:"rounded",height:70,width:l===0?45:65})),r==="success"&&s.map(a=>Ve.createElement(at,{selected:o===a,key:a,onClick:()=>e(a)},a!=="ALL"&&Ve.createElement(Ve.Fragment,null,Ve.createElement(Oa,null,Da(n,a).map((l,p)=>p===0?Ve.createElement(Fa,{key:`image-${l.name}-${l.chainId}`,src:l.logo}):Ve.createElement(id,{key:`image-${l.name}-${l.chainId}`,src:l.logo,size:15}))),Ve.createElement(rd,{size:12})),Ve.createElement(ad,{size:"xsmall",variant:"body",color:a==="ALL"?"secondary500":void 0},nd.t(Nt[a])))))}i(wr,"SelectableCategoryList");function xr(t){let{type:e,supportedBlockchains:o}=t,{navigateBackFrom:n}=ne(),[r,s]=$a(""),[a,l]=$a("ALL"),p=L.use.setToBlockchain(),u=L.use.setFromBlockchain(),m=o?T.use.meta().blockchains.filter(d=>o.includes(d.name)):T.use.meta().blockchains;return ft.createElement(Q,{header:{onBack:n.bind(null,y[`${e}Blockchain`]),title:Ua.t("Select Blockchain")}},ft.createElement(vr,{size:12}),ft.createElement(wr,{setCategory:l,category:a}),ft.createElement(vr,{size:24}),ft.createElement(Je,{value:r,autoFocus:!0,placeholder:Ua.t("Search Blockchain"),color:"light",variant:"contained",size:"large",setValue:()=>s(""),onChange:d=>s(d.target.value)}),ft.createElement(vr,{size:16}),ft.createElement(Tr,{list:m,searchedFor:r,blockchainCategory:a,onChange:d=>{e==="from"?u(d,!0):p(d,!0),n(y[`${e}Blockchain`])}}))}i(xr,"SelectBlockchainPage");import{i18n as nl}from"@lingui/core";import{Divider as rl}from"@rango-dev/ui";import Mt,{useEffect as xd,useState as bd}from"react";import{useNavigate as Ad}from"react-router-dom";import{i18n as br}from"@lingui/core";import{Divider as Ha,Image as Ga,Skeleton as pd,Typography as Ar}from"@rango-dev/ui";import ye,{useEffect as ud,useState as cd}from"react";var za=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 ld}from"@rango-dev/ui";var qa=ld("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var md=9,Er=10,dd=12;function Br(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:s}=t,a=za(e),[l,p]=cd(null),u=T.use.loadingStatus(),m=L.use.resetToBlockchain(),d=L.use.resetFromBlockchain(),c=l?md:Er;return ud(()=>{let g=a.slice(Er,a.length).find(h=>h.chainId===n?.chainId&&h.name===n?.name);g&&p(g)},[n]),ye.createElement("div",null,ye.createElement(Ha,{size:12}),ye.createElement(Ar,{variant:"label",size:"large"},br.t("Select Blockchain")),ye.createElement(Ha,{size:12}),ye.createElement(qa,null,u==="loading"&&Array.from(Array(dd),g=>ye.createElement(pd,{key:g,variant:"rounded",height:50})),u==="success"&&ye.createElement(ye.Fragment,null,ye.createElement(at,{selected:!n,onClick:()=>{o==="from"?d():m()}},ye.createElement(Ar,{variant:"body",size:"xsmall",color:"secondary500"},br.t("All"))),!!l&&ye.createElement(at,{selected:!!l&&l.chainId===n?.chainId,key:l.chainId,onClick:()=>r(l)},ye.createElement(Ga,{src:l.logo,size:30})),a.slice(0,c).map(g=>ye.createElement(at,{key:g.chainId,selected:!!n&&n.chainId===g.chainId,onClick:()=>r(g)},ye.createElement(Ga,{src:g.logo,size:30}))),ye.createElement(at,{onClick:s},ye.createElement(Ar,{variant:"body",size:"xsmall",color:"secondary500"},br._("More +{count}",{count:a.length-Er}))))))}i(Br,"BlockchainsSection");import{i18n as Mr}from"@lingui/core";import{darkTheme as Ra,Divider as Jt,ExternalLinkIcon as hd,Image as yd,ListItemButton as Sd,NotFound as Cd,PinIcon as Td,Skeleton as Ja,Typography as Zt,VirtualizedList as kd}from"@rango-dev/ui";import P,{forwardRef as wd,useEffect as Za,useState as el}from"react";import{Divider as Ya,ListItem as gd,Skeleton as Rt}from"@rango-dev/ui";import qe from"react";import{styled as Ke,Typography as fd}from"@rango-dev/ui";var Va=Ke("div",{display:"flex",flexDirection:"column",flexGrow:1}),Wr=Ke("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),pn=Ke("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"}}}}}),Ir=Ke("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Nr=Ke(fd,{}),Ka=Ke("div",{textAlign:"right"}),un=Ke("ul",{display:"flex",alignItems:"end",flexDirection:"column"}),iA=Ke("div",{display:"flex",alignItems:"center"}),Xa=Ke("div",{position:"relative",".image-container":{borderRadius:"$xm",overflow:"hidden"}}),ja=Ke("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6});function Qa(t){return qe.createElement(pn,null,Array.from(Array(t.size),e=>qe.createElement(gd,{key:e,hasDivider:!0,start:qe.createElement(Rt,{variant:"circular",width:35,height:35}),end:qe.createElement(un,null,qe.createElement(Rt,{variant:"text",size:"large",width:70}),qe.createElement(Ya,{size:4}),qe.createElement(Rt,{variant:"text",size:"medium",width:50})),title:qe.createElement("div",null,qe.createElement(Rt,{variant:"text",size:"large",width:90}),qe.createElement(Ya,{size:4}),qe.createElement(Rt,{variant:"text",size:"medium",width:90}))})))}i(Qa,"LoadingTokenList");var Lr=20,vd=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:s,customCssForTagTitle:a}=t,l=e.length;return P.createElement("div",{className:"description"},o?P.createElement("div",{className:"token-name"},o):P.createElement(Wr,{className:"token-title"},P.createElement(Zt,{variant:"title",size:"xmedium"},r.symbol),P.createElement(Jt,{direction:"horizontal",size:4}),P.createElement(Ir,{css:s},P.createElement(Nr,{variant:"body",size:"xsmall",css:a},r.blockchain))),!!e&&P.createElement("div",{className:`token-address ${!o&&"token-address-without-name"}`},P.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," ",P.createElement(hd,{color:"gray",size:12}))))},"renderDesc");function tl(t){let{list:e,searchedFor:o="",onChange:n}=t,[r,s]=el(e),a=T.use.loadingStatus(),[l,p]=el(!0),u=F.use.loading(),{blockchains:m}=T.use.meta(),d=wd((h,f)=>P.createElement("div",{...h,ref:f,style:{...h.style,height:`${parseFloat(h.style?.height)+8*2}px`}})),c=i(()=>{s(e.slice(0,r.length+Lr))},"loadNextPage");Za(()=>{p(e.length>r.length)},[r.length]),Za(()=>{s(e.slice(0,Lr))},[e]);let g=i(()=>!r.length&&o?P.createElement(P.Fragment,null,P.createElement(Jt,{size:32}),P.createElement(Cd,{title:Mr.t("No results found"),description:Mr.t("Try using different keywords")})):P.createElement(kd,{Item:({index:h,style:f})=>{let w=r[h].address||"",E=m.find(C=>C.name===r[h].blockchain),S=ai(r[h].symbol,E?.color||""),x={$$color:S[`${r[h].symbol}100`],[`.${Ra} &`]:{$$color:S[`${r[h].symbol}900`]},backgroundColor:"$$color"},v={$$color:S[`${r[h].symbol}700`],[`.${Ra} &`]:{$$color:S[`${r[h].symbol}100`]},color:"$$color"};return P.createElement("div",{style:{...f,paddingRight:5}},P.createElement(Sd,{style:{height:f?.height},"tab-index":h,key:`${r[h].symbol}${r[h].address}`,id:`${r[h].symbol}${r[h].address}`,hasDivider:!0,onClick:()=>n(r[h]),start:P.createElement(Xa,null,P.createElement(yd,{src:r[h].image,size:30}),r[h].pin&&P.createElement(ja,null,P.createElement(Td,{size:12,color:"gray"}))),title:E?.type==="COSMOS"||r[h].name||!r[h].name&&!w?P.createElement(Wr,null,P.createElement(Zt,{variant:"title",size:"xmedium"},r[h].symbol),P.createElement(Jt,{direction:"horizontal",size:4}),P.createElement(Ir,{css:x},P.createElement(Nr,{variant:"body",size:"xsmall",css:v},r[h].blockchain))):void 0,description:E?.info&&w&&E.type!=="COSMOS"?vd({address:w,token:r[h],customCssForTag:x,customCssForTagTitle:v,name:r[h].name,url:E.info.addressUrl.split("{wallet}").join(w)}):r[h].name||void 0,end:u?P.createElement(un,null,P.createElement(Ja,{variant:"text",size:"large",width:70}),P.createElement(Jt,{size:4}),P.createElement(Ja,{variant:"text",size:"medium",width:50})):r[h]?.balance&&P.createElement(Ka,null,P.createElement(Zt,{variant:"title",size:"small"},r[h].balance?.amount),P.createElement("div",null),r[h].balance?.usdValue&&P.createElement(Zt,{variant:"body",color:"neutral800",size:"xsmall"},`$${r[h].balance?.usdValue}`))}))},hasNextPage:l,itemCount:r.length,loadNextPage:c,innerElementType:d,size:60}),"renderList");return P.createElement(Va,null,P.createElement(Zt,{variant:"label",size:"large"},Mr.t("Select Token")),P.createElement(Jt,{size:4}),a==="loading"&&P.createElement(Qa,{size:Lr}),a==="success"&&P.createElement(pn,null,g()))}i(tl,"TokenList");var ol=i((t,e)=>t.filter(o=>pt(o.symbol,e)||pt(o.address||"",e)||pt(o.name||"",e)).sort((o,n)=>n.pin-o.pin),"filterTokens");function Pr(t){let{type:e,supportedBlockchains:o,supportedTokens:n,pinnedTokens:r}=t,s=Ad(),{navigateBackFrom:a}=ne(),{meta:{tokens:l},setTokensWithBalance:p}=T(),{sourceTokens:u,destinationTokens:m,fromBlockchain:d,toBlockchain:c,setFromToken:g,setToToken:h,setFromBlockchain:f,setToBlockchain:w}=L(),{connectedWallets:E,loading:S}=F(),[x,v]=bd(""),C=o?T.use.meta().blockchains.filter(_=>o.includes(_.name)):T.use.meta().blockchains,D=n?go(n,l):l.filter(_=>new Set(C.map(W=>W.name)).has(_.blockchain)),B=n?go(n,u):u,I=n?go(n,m):m,G=e==="from"?B:I,te=[];return e==="from"&&!d||e==="to"&&!c?te=D:G.length&&(te=G.map(_=>({..._,pin:r?.some(W=>De(W,_))}))),xd(()=>{E.length&&!S&&p()},[E,S]),Mt.createElement(Q,{header:{onBack:a.bind(null,y.home),title:nl.t("Swap {type}",{type:e})}},Mt.createElement(Br,{blockchains:C,type:e,blockchain:e==="from"?d:c,onMoreClick:()=>s(e==="from"?y.fromBlockchain:y.toBlockchain),onChange:_=>{e==="from"?f(_,!0):w(_,!0)}}),Mt.createElement(rl,{size:24}),Mt.createElement(Je,{value:x,autoFocus:!0,placeholder:nl.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>v(""),onChange:_=>v(_.target.value)}),Mt.createElement(rl,{size:16}),Mt.createElement(tl,{list:ol(te,x),onChange:_=>{let W=C.find(ie=>_.blockchain===ie.name);e==="from"?(g(_),W&&f(W,!0)):(h(_),W&&w(W,!0)),a(y.fromSwap)}}))}i(Pr,"SelectSwapItemsPage");import{i18n as Lt}from"@lingui/core";import{ChevronRightIcon as mn,Divider as ml,List as Ld,ListItemButton as Pd,Skeleton as Dd,Switch as _d,Typography as gt}from"@rango-dev/ui";import ee from"react";import{useNavigate as Od}from"react-router-dom";import{i18n as Bd}from"@lingui/core";import{Chip as Wd,Divider as ul,InfoIcon as Id,TextField as Nd,Tooltip as Md,Typography as cl}from"@rango-dev/ui";import be from"react";import{styled as cn}from"@rango-dev/ui";var il=cn("div",{paddingTop:"$5",paddingBottom:"30px"}),sl=cn("div",{display:"flex",alignItems:"center",justifyContent:"start"}),al=cn("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),ll=cn("div",{maxWidth:"300px",padding:"$10"});import{i18n as Dr}from"@lingui/core";import{Typography as Ed}from"@rango-dev/ui";import eo from"react";function pl(){return eo.createElement(ll,null,eo.createElement(Ed,{variant:"label",size:"small",color:"neutral900"},Dr.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage"),eo.createElement("br",null),eo.createElement("br",null),eo.createElement("b",null,Dr.t("Warning")),":",Dr.t("This setting is applied per step, e.g. 1Inch, Thorchain, etc. and only that step will be reverted, not the whole transaction")))}i(pl,"SlippageTooltipContent");function _r(){let t=$.use.slippage(),e=$.use.setSlippage(),o=$.use.customSlippage(),n=$.use.setCustomSlippage();return be.createElement(il,null,be.createElement(al,null,be.createElement(cl,{variant:"title",size:"xmedium"},Bd.t("Slippage tolerance per swap")),be.createElement(ul,{direction:"horizontal",size:4}),be.createElement(Md,{side:"top",content:be.createElement(pl,null)},be.createElement(Id,{color:"gray"}))),be.createElement(sl,null,_s.map((r,s)=>{let a=`slippage-${s}`;return be.createElement(be.Fragment,null,be.createElement(Wd,{style:{width:"64px",flexShrink:0},key:a,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`}),be.createElement(ul,{direction:"horizontal",size:8}))}),be.createElement(Nd,{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>=$s&&s<=Us)&&n(s)},suffix:o&&be.createElement(cl,{variant:"body",size:"small"},"%"),placeholder:"Custom"})))}i(_r,"Slippage");function dl({supportedSwappers:t,singleTheme:e}){let o=Od(),{navigateBackFrom:n}=ne(),r=$.use.infiniteApprove(),s=$.use.toggleInfiniteApprove(),a=T.use.loadingStatus(),l=rn(t),p=l.filter(C=>C.type==="BRIDGE"||C.type==="AGGREGATOR"),u=p.length,m=p.filter(C=>C.selected).length,d=l.filter(C=>C.type==="DEX"),c=d.length,g=d.filter(C=>C.selected).length,h=i((C,D)=>{switch(a){case"loading":return ee.createElement(Dd,{variant:"text",size:"medium",width:50});case"failed":return ee.createElement(gt,{variant:"body",size:"medium",color:"$error500"},"Loading failed");default:return ee.createElement(gt,{variant:"body",size:"medium"},`${C} / ${D}`)}},"handleEndItem"),f={id:"bridge-item",title:ee.createElement(gt,{variant:"title",size:"xmedium"},Lt.t("Enabled bridges")),end:ee.createElement(ee.Fragment,null,h(m,u),ee.createElement(ml,{direction:"horizontal",size:8}),ee.createElement(mn,{color:"black"})),onClick:()=>o(y.bridges)},w={id:"exchange-item",title:ee.createElement(gt,{variant:"title",size:"xmedium"},Lt.t("Enabled exchanges")),end:ee.createElement(ee.Fragment,null,h(g,c),ee.createElement(ml,{direction:"horizontal",size:8}),ee.createElement(mn,{color:"gray"})),onClick:()=>o(y.exchanges)},E={id:"language-item",title:ee.createElement(gt,{variant:"title",size:"xmedium"},Lt.t("Language")),end:ee.createElement(mn,{color:"gray"}),onClick:()=>o(y.languages)},S={id:"theme-item",title:ee.createElement(gt,{variant:"title",size:"xmedium"},Lt.t("Theme")),end:ee.createElement(mn,{color:"gray"}),onClick:()=>o(y.themes)},x={id:"infinite-approval-item",title:ee.createElement(gt,{variant:"title",size:"xmedium"},Lt.t("Infinite Approval")),end:ee.createElement(_d,{checked:r}),onClick:s},v=[f,w,E];return e||v.push(S),v.push(x),ee.createElement(Q,{header:{onBack:n.bind(null,y.settings),title:Lt.t("Setting")}},ee.createElement(Ze,null,ee.createElement(_r,null),ee.createElement(Ld,{type:ee.createElement(Pd,{title:"_",id:"_",onClick:()=>console.log()}),items:v})))}i(dl,"SettingsPage");import{cancelSwap as Wf}from"@rango-dev/queue-manager-rango-preset";import{useManager as If}from"@rango-dev/queue-manager-react";import Kl from"react";import{i18n as ht}from"@lingui/core";import{getCurrentBlockchainOfOrNull as sf,getCurrentStep as af,getRelatedWalletOrNull as lf,PendingSwapNetworkStatus as wn}from"@rango-dev/queue-manager-rango-preset";import{Button as Fl,CopyIcon as pf,Divider as uf,IconButton as cf,RouteCost as mf,RouteSummary as df,StepDetails as ff,theme as gf,Typography as Dt,useCopyToClipboard as hf,usePaddingRight as yf}from"@rango-dev/ui";import{useWallets as Sf}from"@rango-dev/wallets-react";import R,{useEffect as Ul,useRef as Cf,useState as $l}from"react";import{useNavigate as Tf}from"react-router-dom";function fl(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(fl,"timeSince");function gl(t){return t.finishTime?`${fl(parseInt(t.finishTime))} ago`:`${fl(parseInt(t.creationTime))} ago`}i(gl,"getSwapDate");import{PendingSwapNetworkStatus as gn}from"@rango-dev/queue-manager-rango-preset";import{Modal as Gd}from"@rango-dev/ui";import hn from"react";import{i18n as dn}from"@lingui/core";import{Button as hl,Divider as Or,MessageBox as Fd,Typography as yl}from"@rango-dev/ui";import Xe from"react";var Sl=i(({onCancel:t,onClose:e})=>Xe.createElement(Xe.Fragment,null,Xe.createElement(Or,{size:20}),Xe.createElement(Fd,{type:"error",title:dn.t("Transaction Cancel"),description:dn.t("Are you sure you want to Cancel this swap?")}),Xe.createElement(Or,{size:32}),Xe.createElement(hl,{variant:"contained",type:"primary",size:"large",onClick:t},Xe.createElement(yl,{variant:"title",size:"medium",color:"neutral100"},dn.t("Yes, Cancel it"))),Xe.createElement(Or,{size:12}),Xe.createElement(hl,{variant:"outlined",type:"primary",size:"large",onClick:e},Xe.createElement(yl,{variant:"title",size:"medium",color:"primary"},dn.t("No, Continue")))),"CancelContent");import{i18n as fn}from"@lingui/core";import{Button as Cl,Divider as Fr,MessageBox as Ud,Typography as Tl}from"@rango-dev/ui";import je from"react";var kl=i(({onDelete:t,onClose:e})=>je.createElement(je.Fragment,null,je.createElement(Fr,{size:20}),je.createElement(Ud,{type:"error",title:fn.t("Delete Transaction"),description:fn.t("Are you sure you want to delete this swap?")}),je.createElement(Fr,{size:32}),je.createElement(Cl,{variant:"contained",type:"primary",size:"large",onClick:t},je.createElement(Tl,{variant:"title",size:"medium",color:"neutral100"},fn.t("Yes, Delete it"))),je.createElement(Fr,{size:12}),je.createElement(Cl,{variant:"outlined",type:"primary",size:"large",onClick:e},je.createElement(Tl,{variant:"title",size:"medium",color:"primary"},fn.t("No, Cancel")))),"DeleteContent");import{i18n as Ur}from"@lingui/core";import{PendingSwapNetworkStatus as $r}from"@rango-dev/queue-manager-rango-preset";var zr={[$r.WaitingForNetworkChange]:{type:"loading",title:Ur.t("Change Network")},[$r.WaitingForConnectingWallet]:{type:"warning",title:Ur.t("Connect Wallet")},[$r.NetworkChanged]:{type:"success",title:Ur.t("Network Changed")}};import{MessageBox as zd,Wallet as qd,WalletState as vl}from"@rango-dev/ui";import{useWallets as Hd}from"@rango-dev/wallets-react";import to from"react";import{styled as $d}from"@rango-dev/ui";var wl=$d("div",{display:"flex",justifyContent:"center"});var xl=i(t=>{let{type:e,title:o,currentStepWallet:n,message:r,showWalletButton:s}=t,{connect:a,getWalletInfo:l,state:p}=Hd(),u=n?.walletType,d=u&&p(u).connected?vl.CONNECTED:vl.DISCONNECTED;return to.createElement(to.Fragment,null,to.createElement(zd,{type:e,title:o,description:r}),s&&u&&to.createElement(wl,null,to.createElement(qd,{title:l(u).name,image:l(u).img,type:u,state:d,onClick:async()=>a(u)})))},"WalletStateContent");function qr(t){let{state:e,onClose:o,onDelete:n,onCancel:r,currentStepWallet:s,message:a}=t,l=e===gn.WaitingForNetworkChange||e===gn.WaitingForConnectingWallet||e===gn.NetworkChanged;return hn.createElement(Gd,{open:!!e,onClose:o,container:document.getElementById("swap-box")||document.body},l&&hn.createElement(xl,{type:zr[e].type,title:zr[e].title,currentStepWallet:s,message:a,showWalletButton:e!==gn.WaitingForNetworkChange}),e==="delete"&&hn.createElement(kl,{onClose:o,onDelete:n}),e==="cancel"&&hn.createElement(Sl,{onClose:o,onCancel:r}))}i(qr,"SwapDetailsModal");import{i18n as oo}from"@lingui/core";import{Button as Hr,Divider as yn,MessageBox as bl,Modal as Vd,TokenAmount as Kd,Typography as Sn}from"@rango-dev/ui";import me from"react";import{useNavigate as Xd}from"react-router-dom";function Gr(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:s,token:a,chain:l,percentageChange:p,description:u,diagnosisUrl:m}=t,d=Xd();return me.createElement(Vd,{open:e,onClose:o,container:document.getElementById("swap-box")||document.body},n==="success"?me.createElement(bl,{type:"success",title:oo.t("Swap Successful")},me.createElement(Kd,{direction:"vertical",type:"output",centerAlign:!0,price:{value:r,usdValue:s},token:a,chain:l,percentageChange:p}),me.createElement(yn,{size:12}),me.createElement(Sn,{variant:"body",size:"medium",color:"neutral900",align:"center"},u)):me.createElement(bl,{type:"error",title:oo.t("Transaction Failed"),description:u}),me.createElement(yn,{size:32}),n==="success"&&me.createElement(Hr,{variant:"contained",type:"primary",size:"large",onClick:()=>d(y.home)},me.createElement(Sn,{variant:"title",size:"medium",color:"neutral100"},oo.t("Done"))),me.createElement(yn,{size:12}),m&&me.createElement(me.Fragment,null,me.createElement(Hr,{variant:"contained",type:"primary",size:"large",onClick:()=>window.open(m,"_blank")},me.createElement(Sn,{variant:"title",size:"medium",color:"primary"},oo.t("Diagnosis"))),me.createElement(yn,{size:12})),me.createElement(Hr,{variant:"outlined",type:"primary",size:"large",onClick:o},me.createElement(Sn,{variant:"title",size:"medium",color:"primary"},oo.t("See Details"))))}i(Gr,"SwapDetailsCompleteModal");import rf from"react";import{i18n as ef}from"@lingui/core";import{Alert as Nl,IconButton as tf,LinkIcon as of}from"@rango-dev/ui";import lt,{Fragment as nf}from"react";import{Alert as jd,ChevronDownIcon as Yd,ChevronUpIcon as Qd,IconButton as Rd}from"@rango-dev/ui";import Cn,{useState as Jd}from"react";function Al(t){let{message:e}=t,[o,n]=Jd(!1);return Cn.createElement(jd,{type:"error",title:e.shortMessage,action:e.detailedMessage.content&&Cn.createElement(Rd,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},o?Cn.createElement(Qd,{size:12,color:"gray"}):Cn.createElement(Yd,{size:12,color:"gray"})),footer:o?e.detailedMessage.content:void 0})}i(Al,"FailedAlert");import{styled as Zd}from"@rango-dev/ui";var El=Zd("div",{display:"flex",flexDirection:"column",gap:"$10"});import{i18n as Bl}from"@lingui/core";import{PendingSwapNetworkStatus as Vr}from"@rango-dev/queue-manager-rango-preset";import{Alert as Kr,Button as Wl}from"@rango-dev/ui";import no from"react";function Il(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?no.createElement(Kr,{type:"warning",title:n.shortMessage,action:no.createElement(Wl,{size:"xxsmall",type:"warning",onClick:()=>{o(Vr.WaitingForNetworkChange),e().catch(s=>{console.log(s)})}},Bl.t("Change"))}):r===Vr.WaitingForConnectingWallet?no.createElement(Kr,{type:"warning",title:n.shortMessage,action:no.createElement(Wl,{size:"xxsmall",type:"warning",onClick:()=>{o(Vr.WaitingForConnectingWallet)}},Bl.t("Connect"))}):no.createElement(Kr,{type:"warning",title:n.shortMessage})}i(Il,"WarningAlert");function Xr(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:s,hasAlreadyProceededToSign:a}=t,l=zt(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l;return lt.createElement(El,null,s.explorerUrl?.map((m,d,c)=>{let g=d+m.url,h=d===c.length-1,f=h&&u||p,w=h&&s.status==="failed";return lt.createElement(nf,{key:g},lt.createElement(Nl,{type:f&&"loading"||w&&"error"||"success",title:m.description?`${m.description} Tx`:ef.t("View transaction"),action:m.url&<.createElement(tf,{variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},lt.createElement(of,{size:16}))}))}),(u&&!a||p&&!s.explorerUrl?.length)&<.createElement(Nl,{type:"loading",title:r.shortMessage}),s.status!=="failed"&&l&<.createElement(Il,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),s.status==="failed"&<.createElement(Al,{message:r}))}i(Xr,"SwapDetailsAlerts");var Ml=2e3,Ll=60,Pl=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:rf.createElement(Xr,{step:n,hasAlreadyProceededToSign:o,...e})}})},"getSteps");function Dl(t){if(zt(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(Dl,"getStepState");import{styled as Pt}from"@rango-dev/ui";var Tn=Pt("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"}}),kn=Pt("div",{width:"100%",padding:"0px 15px"}),_l=Pt("div",{padding:"$0 $0 $20 $20",width:"100%",overflow:"auto"}),z0=Pt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Ol=Pt("div",{height:"450px",display:"flex",alignItems:"center",textAlign:"center"}),q0=Pt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1});var kf=20;function jr(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:s,connect:a,getWalletInfo:l}=Sf(),p=L.use.retry(),u=Tf(),{navigateBackFrom:m}=ne(),d=Cf(null),[c,g]=hf(Ml),[h,f]=$l(null),[w,E]=$l(null),{meta:{tokens:S}}=T();yf({elementRef:d,paddingRight:gf.sizes[kf]});let x=i(()=>{r(),f(null)},"onCancel"),v=Ne.use.getUnreadNotifications(),C=Ne.use.setAsRead(),D=v(),B=af(e),I=B?.networkStatus;Ul(()=>{D.find(ae=>ae.requestId===e.requestId)&&(e.status==="success"||e.status==="failed")&&(E(e.status),C(e.requestId))},[e.status]),Ul(()=>{M?f(wn.WaitingForNetworkChange):I===wn.WaitingForConnectingWallet||I===wn.NetworkChanged?f(I):f(null)},[I]);let G=Pi(e),te=B?sf(e,B):null,b=B?lf(e,B):null,_=gl(e),W=Di(e),ie=i(oe=>!!l(oe)?.mobileWallet,"isMobileWallet"),M=I===wn.WaitingForNetworkChange&&!!te&&!!b?.walletType&&(ie(b.walletType)||s(b.walletType,te)),ue=M?a.bind(null,b.walletType,te):void 0,Le=Li(e,B),U=Pl({swap:e,switchNetwork:ue,showNetworkModal:I,setNetworkModal:f,message:Le}),X=U.length,[Be,Se]=[e.steps[0],e.steps[X-1]],Pe=Se.outputAmount||Se.expectedOutputAmountHumanReadable,se=e.steps.reduce((oe,ae)=>oe+parseFloat(ae.feeInUsd||""),0),tt=e.steps.reduce((oe,ae)=>oe+(ae.estimatedTimeInSeconds||0),0),O=Math.floor(tt/Ll),j=e.steps.find(oe=>oe.diagnosisUrl)?.diagnosisUrl,H=k(String(parseFloat(k(Pe,6,6))*(xo(Se.toBlockchain,Se.toSymbol,Se.toSymbolAddress,S)||0)),4,4),z=k(String(parseFloat(e.inputAmount)*(xo(Be.fromBlockchain,Be.fromSymbol,Be.fromSymbolAddress,S)||0)),4,4),Ce=Ye(z,H),Te=e.status==="success"?`You have received ${k(Pe,6,6)} ${U[X-1].to.token.displayName} in ${Ao(e.wallets[U[X-1].to.chain.displayName]?.address||"")} wallet on ${U[X-1].to.chain.displayName} chain.`:`${ht.t("Transaction was not sent.")} ${G?`${G.outputAmount} ${G.symbol} on ${G.blockchain} remain in your wallet`:""}`;return R.createElement(Q,{noPadding:!0,header:{title:ht.t("Swap and Bridge"),onBack:m.bind(null,y.swapDetails),onCancel:e.status==="running"?()=>f("cancel"):void 0,suffix:e.status!=="running"&&R.createElement(bt,null,R.createElement(Fl,{variant:"ghost",type:"error",size:"xsmall",onClick:()=>f("delete")},R.createElement(Dt,{size:"medium",variant:"label",color:"error"},ht.t("Delete"))))},footer:W&&!w&&R.createElement(Fl,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:()=>{p(e),setTimeout(()=>{u(y.home)},0)}},ht.t("Try again"))},R.createElement(Tn,null,R.createElement(kn,null,R.createElement("div",{className:"row"},R.createElement(Dt,{variant:"label",size:"large",color:"neutral900"},`${ht.t("Request ID")}:`),R.createElement("div",{className:"request-id"},R.createElement(Dt,{variant:"label",size:"small",color:"neutral900"},o),R.createElement(cf,{variant:"ghost",onClick:g.bind(null,o||"")},R.createElement(pf,{size:16,color:"gray"})))),R.createElement("div",{className:"row"},R.createElement(Dt,{variant:"label",size:"large",color:"neutral900"},`${ht.t("Created at")}:`),R.createElement(Dt,{variant:"label",size:"small",color:"neutral900"},_))),R.createElement("div",{className:"output"},R.createElement(mf,{fee:k(String(se),2,2),time:O,steps:X}),R.createElement(df,{from:{price:{value:k(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:k(Pe,6,6),usdValue:H},token:{displayName:U[X-1].to.token.displayName,image:U[X-1].to.token.image},chain:{image:U[X-1].to.chain.image,displayName:U[X-1].to.chain.displayName}},percentageChange:k(Ce,2,2),warningLevel:St(Ce?.toNumber()??0)})),R.createElement("div",{className:"title-steps"},R.createElement(Dt,{variant:"title",size:"small"},ht.t("Swaps steps"))),R.createElement(uf,{size:8}),R.createElement(_l,{ref:d},U.map((oe,ae)=>{let An=ae,yt=Dl(e.steps[ae]),Ot=yt==="error"||yt==="in-progress"||yt==="warning"||yt==="completed"&&ae===U.length-1;return R.createElement(ff,{key:An,step:oe,type:"route-progress",ref:d,state:yt,hasSeparator:ae!==0,tabIndex:An,isFocused:Ot})}))),R.createElement(qr,{state:h,onClose:()=>f(null),onCancel:x,onDelete:n,message:Le.detailedMessage.content,currentStepWallet:b}),R.createElement(Gr,{open:!!w,diagnosisUrl:j,onClose:()=>E(null),status:e.status==="success"?"success":"failed",priceValue:k(Pe,6,6),usdValue:H,percentageChange:k(Ce,2,2),token:{displayName:U[X-1].to.token.displayName,image:U[X-1].to.token.image},chain:{image:U[X-1].to.chain.image},description:Te}))}i(jr,"SwapDetails");import{i18n as lo}from"@lingui/core";import{CopyIcon as Af,IconButton as Ef,NotFound as Bf,Skeleton as Gl,Typography as xn}from"@rango-dev/ui";import pe from"react";import{i18n as vf}from"@lingui/core";import{ChainToken as xf,Divider as Qr,Skeleton as ao,Typography as bf}from"@rango-dev/ui";import J from"react";import{styled as Yr}from"@rango-dev/ui";var zl=Yr("div",{width:"100%",height:"100%",padding:"$0 $20",".cost":{paddingTop:"$15",display:"flex"},".route-summary":{padding:"$15 $0"},".route-summary-item":{display:"flex",justifyContent:"space-between",alignItems:"center"},".token-amount":{display:"flex",justifyContent:"space-between",alignItems:"center"},".route-summary-separator":{width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"},".swaps-steps":{paddingBottom:"$10"}}),ql=Yr("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15",".step-title":{display:"flex",justifyContent:"start",alignItems:"center"},".step-tokens":{paddingTop:"$5",display:"flex",alignItems:"center"},".step-token-info":{display:"flex",alignItems:"center"},".step-icon-container":{padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"},".extra-info":{display:"flex",paddingTop:"$10",paddingBottom:"$5"}}),vn=Yr("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral900",marginLeft:"25px"});import{ChainToken as Hl,Divider as ro,NextIcon as wf,Skeleton as io}from"@rango-dev/ui";import le from"react";function so(t){let{extraInfo:e}=t;return le.createElement(ql,null,le.createElement("div",{className:"step-title"},le.createElement(io,{height:28,width:28,variant:"circular"}),le.createElement(ro,{direction:"horizontal",size:8}),le.createElement(io,{height:15,width:148,variant:"rounded"})),le.createElement("div",{className:"step-tokens"},le.createElement(ro,{direction:"horizontal",size:20}),le.createElement("div",{className:"step-token-info"},le.createElement(Hl,{size:"small",loading:!0,chainImage:"",tokenImage:""}),le.createElement(ro,{direction:"horizontal",size:8}),le.createElement(io,{height:12,width:76,variant:"rounded"})),le.createElement("div",{className:"step-icon-container"},le.createElement(wf,{color:"gray",size:16})),le.createElement("div",{className:"step-token-info"},le.createElement(Hl,{size:"small",loading:!0,chainImage:"",tokenImage:""}),le.createElement(ro,{direction:"horizontal",size:8}),le.createElement(io,{height:12,width:76,variant:"rounded"}))),e&&le.createElement("div",{className:"extra-info"},le.createElement(ro,{direction:"horizontal",size:20}),le.createElement(io,{height:22,width:297,variant:"rectangular"})))}i(so,"LoadingSwapDetailStep");function Rr(){let t=J.createElement("div",{className:"route-summary-item"},J.createElement("div",{className:"token-amount"},J.createElement(xf,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),J.createElement(Qr,{size:8,direction:"horizontal"}),J.createElement(ao,{height:15,width:148,variant:"rounded"})),J.createElement(ao,{height:12,width:64,variant:"rounded"}));return J.createElement(zl,null,J.createElement("div",{className:"cost"},J.createElement(ao,{width:60,height:10,variant:"rounded"}),J.createElement(Qr,{size:4,direction:"horizontal"}),J.createElement(ao,{width:60,height:10,variant:"rounded"}),J.createElement(Qr,{size:4,direction:"horizontal"}),J.createElement(ao,{width:60,height:10,variant:"rounded"})),J.createElement("div",{className:"route-summary"},t,J.createElement("div",{className:"route-summary-separator"}),t),J.createElement("div",{className:"swaps-steps"},J.createElement(bf,{variant:"title",size:"small"},vf.t("Swaps steps"))),J.createElement("div",{className:"step-container"},J.createElement(so,{extraInfo:!0}),J.createElement(vn,null),J.createElement(so,null),J.createElement(vn,null),J.createElement(so,null),J.createElement(vn,null),J.createElement(so,null)))}i(Rr,"LoadingSwapDetails");function Vl(t){let{requestId:e,showSkeleton:o}=t,{navigateBackFrom:n}=ne();return pe.createElement(Q,{noPadding:!0,header:{title:lo.t("Swap and Bridge"),onBack:n.bind(null,y.swapDetails),suffix:pe.createElement(bt,null)}},o&&pe.createElement(Tn,null,pe.createElement(kn,null,pe.createElement("div",{className:"row"},pe.createElement(xn,{variant:"label",size:"large",color:"neutral900"},`${lo.t("Request ID")}:`),pe.createElement("div",{className:"request-id"},pe.createElement(xn,{variant:"label",size:"small",color:"neutral900"},pe.createElement(Gl,{width:60,height:10,variant:"rounded"})),pe.createElement(Ef,{variant:"ghost"},pe.createElement(Af,{size:16,color:"gray"})))),pe.createElement("div",{className:"row"},pe.createElement(xn,{variant:"label",size:"large",color:"neutral900"},`${lo.t("Created at")}:`),pe.createElement(xn,{variant:"label",size:"small",color:"neutral900"},pe.createElement(Gl,{width:60,height:10,variant:"rounded"})))),pe.createElement(Rr,null)),!o&&pe.createElement(Ol,null,pe.createElement(Bf,{title:lo.t("Not found"),description:lo.t("swapNotFound",{requestId:e},{message:"Swap with request ID = ${requestId} not found."})})))}i(Vl,"SwapDetailsPlaceholder");function Xl(){let{manager:t,state:e}=If(),o=!e.loadedFromPersistor,n=en(t),r=xe.use.selectedSwapRequestId(),{navigateBackFrom:s}=ne(),{loadingStatus:a}=T(),l=o||a==="loading",p=n.find(({swap:c})=>c.requestId===r),u=i(()=>{if(p?.id){let c=t?.get(p.id);c&&Wf(c)}},"onCancel"),m=i(async()=>{if(p?.id)try{await t?.deleteQueue(p.id),s(y.swapDetails)}catch(c){console.log(c)}},"onDelete"),d=p?.swap;return!d||l?Kl.createElement(Vl,{requestId:r||"",showSkeleton:l}):Kl.createElement(jr,{swap:d,requestId:r||"",onCancel:u,onDelete:m})}i(Xl,"SwapDetailsPage");import{i18n as bn}from"@lingui/core";import{AutoThemeIcon as Nf,DarkModeIcon as Mf,LightModeIcon as Lf,List as Pf,ListItemButton as Df,Radio as Jr,RadioRoot as _f,Typography as Zr}from"@rango-dev/ui";import Ae from"react";function jl(){let{navigateBackFrom:t}=ne(),e=$.use.theme(),o=$.use.setTheme(),n=[{id:"light",value:"light",title:Ae.createElement(Zr,{variant:"title",size:"xmedium"},bn.t("Light")),onClick:()=>o("light"),start:Ae.createElement(Lf,{color:"gray"}),end:Ae.createElement(Jr,{value:"light"})},{id:"dark",value:"dark",title:Ae.createElement(Zr,{variant:"title",size:"xmedium"},bn.t("Dark")),onClick:()=>o("dark"),start:Ae.createElement(Mf,{color:"gray"}),end:Ae.createElement(Jr,{value:"dark"})},{id:"auto",value:"auto",title:Ae.createElement(Zr,{variant:"title",size:"xmedium"},bn.t("Auto")),onClick:()=>o("auto"),start:Ae.createElement(Nf,{color:"gray"}),end:Ae.createElement(Jr,{value:"auto"})}];return Ae.createElement(Q,{header:{onBack:t.bind(null,y.settings),title:bn.t("Theme")}},Ae.createElement(Ze,null,Ae.createElement(_f,{onValueChange:r=>o(r),value:e},Ae.createElement(Pf,{type:Ae.createElement(Df,{title:"Theme",id:"_",onClick:()=>console.log()}),items:n}))))}i(jl,"ThemePage");var Ff=i(t=>t.replace("/",""),"getAbsolutePath");function Yl(t){let{config:e}=t;return Of([{path:y.home,element:Ee.createElement(va,null)},{path:y.fromSwap,element:Ee.createElement(Pr,{type:"from",supportedBlockchains:e?.from?.blockchains,supportedTokens:e?.from?.tokens,pinnedTokens:e?.pinnedTokens})},{path:y.toSwap,element:Ee.createElement(Pr,{type:"to",supportedBlockchains:e?.to?.blockchains,supportedTokens:e?.to?.tokens,pinnedTokens:e?.pinnedTokens})},{path:y.fromBlockchain,element:Ee.createElement(xr,{type:"from",supportedBlockchains:e?.to?.blockchains})},{path:y.toBlockchain,element:Ee.createElement(xr,{type:"to",supportedBlockchains:e?.to?.blockchains})},{path:y.settings,element:Ee.createElement(dl,{singleTheme:e?.theme?.singleTheme,supportedSwappers:e?.liquiditySources})},{path:y.themes,element:Ee.createElement(jl,null)},{path:y.languages,element:Ee.createElement(xa,null)},{path:y.exchanges,element:Ee.createElement(yr,{sourceType:"Exchanges",supportedSwappers:e?.liquiditySources})},{path:y.bridges,element:Ee.createElement(yr,{sourceType:"Bridges",supportedSwappers:e?.liquiditySources})},{path:y.swaps,element:Ee.createElement(sa,null)},{path:y.swapDetails,element:Ee.createElement(Xl,null)},{path:y.wallets,element:Ee.createElement(vs,{supportedWallets:e?.wallets,multiWallets:typeof e?.multiWallets>"u"?!0:e.multiWallets,config:e})},{path:Ff(y.confirmSwap),element:Ee.createElement(Rs,{config:e})}])}i(Yl,"AppRoutes");import{isApprovalTX as Uf,MainEvents as Rl,RouteEventType as Jl,StepEventType as _t,StepExecutionEventStatus as $f,useEvents as zf}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Zl}from"react";import{StepExecutionBlockedEventStatus as ei}from"@rango-dev/queue-manager-rango-preset";var Ql=[ei.WAITING_FOR_CHANGE_WALLET_ACCOUNT,ei.WAITING_FOR_NETWORK_CHANGE,ei.WAITING_FOR_WALLET_CONNECT];function ep(){let t=F.use.connectedWallets(),e=F.use.getWalletsDetails(),o=Ne.use.setNotification(),n=Ne.use.setAsRead(),r=zf();return Zl(()=>(r.on(Rl.StepEvent,s=>{let{event:a,step:l,route:p}=s;if(a.type===_t.TX_EXECUTION&&a.status===$f.TX_SENT&&!Uf(l)||a.type===_t.SUCCEEDED){let m=t.find(c=>c.chain===l?.fromBlockchain),d=l?.fromBlockchain!==l?.toBlockchain&&t.find(c=>c.chain===l?.toBlockchain);m&&e([m]),d&&e([d])}a.type===_t.TX_EXECUTION_BLOCKED&&Ql.includes(a.status)||a.type===_t.FAILED?o(a,p):(a.type===_t.TX_EXECUTION||a.type===_t.CHECK_STATUS)&&n(p.requestId)}),()=>r.all.clear()),[r,t.length]),Zl(()=>(r.on(Rl.RouteEvent,s=>{let{event:a,route:l}=s;(a.type===Jl.FAILED||a.type===Jl.SUCCEEDED)&&o(a,l)}),()=>r.all.clear()),[r,t.length]),null}i(ep,"WidgetEvents");import{globalCss as qf}from"@rango-dev/ui";var tp=i(()=>qf({"@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 Hf,darkTheme as Gf,lightTheme as Vf}from"@rango-dev/ui";import{useEffect as op,useState as Kf}from"react";function np({fontFamily:t="Roboto",borderRadius:e=gi,secondaryBorderRadius:o=hi,mode:n="auto"}){let r=$.use.theme(),s=T.use.fetchMeta(),a=$.use.setTheme(),l=Hf({radii:{primary:`${e}px`,secondary:`${o}px`},fonts:{widget:t}}),p=`${l.className} ${Vf.className}`,u=`${l.className} ${Gf.className}`,[m,d]=Kf("light");return op(()=>{i(async()=>{await s()},"fetchData")();let h=i(f=>{f.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",h),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",h)}},[]),op(()=>{n!=="auto"&&a(n)},[n]),{activeTheme:i(()=>r==="auto"?m==="dark"?u:p:r==="dark"?u:p,"getActiveTheme")()}}i(np,"useTheme");import Xf,{useMemo as jf}from"react";import{Provider as Yf}from"@rango-dev/queue-manager-react";import{makeQueueDefinition as Qf,checkWaitingForNetworkChange as Rf}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Jf}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as Zf}from"@rango-dev/wallets-shared";import{isEvmBlockchain as eg}from"rango-types";function tg(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:s,getWalletInfo:a}=Jf(),l=jf(()=>Qf({API_KEY:To("API_KEY")}),[]),{blockchains:p}=T.use.meta(),m={blockchains:F.use.connectedWallets().map(S=>({accounts:[S],name:S.chain}))},d=i((S,x)=>{if(s(S,x))return r(S,x)},"switchNetwork"),c=i(S=>!!a(S).mobileWallet,"isMobileWallet"),g=p.filter(S=>S.enabled).reduce((S,x)=>(S[x.name]=x,S),{}),h=p.filter(eg),f=i(S=>{let{supportedChains:x}=a(S);return wo(x)},"getSupportedChainNames"),w=e(),E={meta:{blockchains:g,evmBasedChains:h,evmNetworkChainInfo:Zf(h),getSupportedChainNames:f},getSigners:o,wallets:m,providers:w,switchNetwork:d,canSwitchNetworkTo:s,connect:r,state:n,isMobileWallet:c};return Xf.createElement(Yf,{queuesDefs:[l],context:E,onPersistedDataLoaded:S=>{Rf(S)},isPaused:!1},t.children)}i(tg,"QueueManager");var rp=tg;import{Events as ti,Provider as ng}from"@rango-dev/wallets-react";import{isEvmBlockchain as rg}from"rango-sdk";import sp,{createContext as ig,useRef as sg}from"react";import{useEffect as og}from"react";function ip(t,e){let o=F.use.clearConnectedWallet(),n=Uo(void 0,e);return og(()=>{o(),n=Uo(t,{walletConnectProjectId:e?.walletConnectProjectId})},[t]),{providers:n}}i(ip,"useWalletProviders");var oi=ig({onConnectWallet:()=>{}});function ni(t){let{blockchains:e}=T.use.meta(),{providers:o}=ip(t.providers,t?.options),n=F.use.disconnectWallet(),r=F.use.connectWallet(),s=sg(),a=e.filter(rg).map(p=>p.name),l=i((p,u,m,d,c)=>{if(u===ti.ACCOUNTS)if(m){let g=wo(c),h=Ti(p,m,a,g);r(h)}else n(p);if(u===ti.ACCOUNTS&&d.connected){let g=`${p}-${d.network}-${m}`;d.connected&&(s.current?s.current(g):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(u===ti.NETWORK&&d.network){let g=`${p}-${d.network}`;s.current?s.current(g):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(p,u,m,d,c)},"onUpdateState");return sp.createElement(oi.Provider,{value:{onConnectWallet:p=>{s.current=p}}},sp.createElement(ng,{allBlockChains:e,providers:o,onUpdateState:l,autoConnect:!0},t.children))}i(ni,"WidgetWallets");var cg=lg("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center",fontFamily:"$widget"});function lp(t){let{config:e}=t;tp();let{activeTheme:o}=np(e?.theme||{}),[n,r]=ap(""),[s,a]=ap(),l=pg(oi);ug(()=>{e?.apiKey&&fi({API_KEY:e?.apiKey})},[e]),po(()=>{$.persist.rehydrate(),Ne.persist.rehydrate(),l.onConnectWallet(r)},[]);let{setInputAmount:p,setToToken:u,setToBlockchain:m,setFromBlockchain:d,setFromToken:c}=L(),{meta:{tokens:g,blockchains:h},loadingStatus:f}=T(),{setAffiliateRef:w,setAffiliatePercent:E,setAffiliateWallets:S}=$();return po(()=>{p(e?.amount?.toString()||"")},[e?.amount]),po(()=>{if(f==="success"){let x=h.find(C=>C.name===e?.from?.blockchain),v=g.find(C=>De(C,e?.from?.token||null));d(x||null),c(v||null)}},[e?.from?.token,e?.from?.blockchain,f]),po(()=>{if(f==="success"){let x=h.find(C=>C.name===e?.to?.blockchain),v=g.find(C=>De(C,e?.to?.token||null));m(x||null),u(v||null)}},[e?.to?.token,e?.to?.blockchain,f]),po(()=>{w(e?.affiliate?.ref??null),E(e?.affiliate?.percent??null),S(e?.affiliate?.wallets??null)},[e?.affiliate?.ref,e?.affiliate?.percent,e?.affiliate?.wallets]),et.createElement(ag,{language:e?.language},et.createElement(cg,{id:"swap-container",className:o},et.createElement(rp,null,et.createElement(ep,null),et.createElement(Fi,{lastConnectedWallet:n,disconnectedWallet:s,clearDisconnectedWallet:()=>{a(void 0)}},et.createElement(Yl,{config:e})))))}i(lp,"Main");function mg(t){return t.config?.externalWallets?et.createElement(lp,{...t}):et.createElement(ni,{providers:t.config?.wallets,options:{walletConnectProjectId:t.config?.walletConnectProjectId}},et.createElement(lp,{...t}))}i(mg,"Widget");import{useWallets as Ms}from"@rango-dev/wallets-react";import{useEvents as XI,MainEvents as jI,RouteEventType as oN,StepEventType as cN,StepExecutionEventStatus as mN,StepExecutionBlockedEventStatus as dN}from"@rango-dev/queue-manager-rango-preset";export{jI as MainEvents,oN as RouteEventType,cN as StepEventType,dN as StepExecutionBlockedEventStatus,mN as StepExecutionEventStatus,mg as Widget,ni as WidgetWallets,Ms as useWallets,XI as useWidgetEvents};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|