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

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