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