@rango-dev/widget-embedded 0.10.1-next.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/dist/components/Layout.d.ts.map +1 -1
  3. package/dist/components/PercentageChange.d.ts +9 -0
  4. package/dist/components/PercentageChange.d.ts.map +1 -0
  5. package/dist/components/RoutesOverview.d.ts +120 -0
  6. package/dist/components/RoutesOverview.d.ts.map +1 -0
  7. package/dist/components/SwapDetailsPlaceholder.d.ts +120 -0
  8. package/dist/components/SwapDetailsPlaceholder.d.ts.map +1 -0
  9. package/dist/components/SwitchFromAndTo.d.ts +3 -2
  10. package/dist/components/SwitchFromAndTo.d.ts.map +1 -1
  11. package/dist/components/TokenInfo.d.ts +18 -0
  12. package/dist/components/TokenInfo.d.ts.map +1 -0
  13. package/dist/components/TokenPreview.d.ts +21 -0
  14. package/dist/components/TokenPreview.d.ts.map +1 -0
  15. package/dist/index.js +1 -1
  16. package/dist/index.js.map +4 -4
  17. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  18. package/dist/pages/Home.d.ts.map +1 -1
  19. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  20. package/dist/utils/numbers.d.ts.map +1 -1
  21. package/package.json +8 -8
  22. package/src/components/Layout.tsx +65 -12
  23. package/src/components/PercentageChange.tsx +33 -0
  24. package/src/components/RoutesOverview.tsx +57 -0
  25. package/src/components/SwapDetailsPlaceholder.tsx +47 -0
  26. package/src/components/SwitchFromAndTo.tsx +4 -34
  27. package/src/components/TokenInfo.tsx +329 -0
  28. package/src/components/TokenPreview.tsx +187 -0
  29. package/src/languages/en.json +14 -0
  30. package/src/languages/tr.json +11 -0
  31. package/src/pages/ConfirmSwapPage.tsx +9 -20
  32. package/src/pages/Home.tsx +144 -101
  33. package/src/pages/SwapDetailsPage.tsx +2 -5
  34. package/src/utils/numbers.ts +0 -2
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var Vo=Object.defineProperty;var a=(t,e)=>Vo(t,"name",{value:e,configurable:!0});import{SwapContainer as Cs,styled as Ws,I18nManager as ys}from"@rango-dev/ui";import z,{useContext as bs,useEffect as As,useMemo as Es,useState as Lo}from"react";import xe,{Fragment as An}from"react";import{MemoryRouter as En,useInRouterContext as Rn}from"react-router";import{useQueueManager as Bn}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Ye,useRef as Je}from"react";import{createSearchParams as Wn,useLocation as yn,useSearchParams as bn}from"react-router-dom";import{create as hn}from"zustand";import Z from"bignumber.js";import Ko from"bignumber.js";var F=new Ko(0);import Ds from"bignumber.js";function q(t){return Array.from(new Set(t))}a(q,"removeDuplicateFrom");function De(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}a(De,"areEqual");function mt(t,e){let o;return n;function n(...s){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...s)},e)}}a(mt,"debounce");import{BigNumber as pt}from"bignumber.js";var ft=a(t=>{let e=(t%60).toString().padStart(2,"0");return`${parseInt((t/60).toString()).toString().padStart(2,"0")}:${e}`},"secondsToString"),y=a((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new pt(t),s=1,r=1e3;for(let i=0;i<60;i++)if(new pt(n.toFixed(i,s)).eq(n)){r=i;break}if(n.gte(1e4))return n.toFormat(0,s);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,1))),s);if(n.gte(1))return n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,2))),s);if(n.gte(.01))return n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,4))),s);for(let i=e||4;i<17;i++)if(n.gte(Math.pow(10,-i)))return n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,i))),s);return n.isEqualTo(0)?"0":n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,8))),s)},"numberToString");var dt=a(t=>t?.result?.swaps?.reduce((e,o)=>e+o.estimatedTimeInSeconds,0)||0,"totalArrivalTime");var ge=a(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Le(t,e,o){return o&&t.find(n=>{let s=e?.split("--");return s?.length===1?n.symbol===s[0]&&n.address===null&&n.blockchain===o.name:n.symbol===s?.[0]&&n.address===s?.[1]&&n.blockchain===o.name})||null}a(Le,"searchParamsToToken");function gt(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}a(gt,"getBestRouteToTokenUsdPrice");function _e(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}a(_e,"isNumberOfSwapsChanged");function qe(t,e){let o=t.result?.swaps.map(s=>s.swapperId)||[],n=e.result?.swaps.map(s=>s.swapperId)||[];return!De(o,n)}a(qe,"isRouteSwappersUpdated");function $e(t,e){let o=t.result?.swaps.map(s=>s.to.symbol)||[],n=e.result?.swaps.map(s=>s.to.symbol)||[];return!De(o,n)}a($e,"isRouteInternalCoinsUpdated");function St(t,e){return _e(t,e)||qe(t,e)||$e(t,e)}a(St,"isRouteChanged");function ht(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}a(ht,"getRequiredBalanceOfWallet");function He(t){if(t.store==="bestRoute"){let{prevState:e,currentState:o}=t;return!!o.fromToken&&!!o.toToken&&(e.fromChain?.name!==o.fromChain?.name||e.toChain?.name!==o.toChain?.name||e.fromToken?.symbol!==o.fromToken?.symbol||e.toToken?.symbol!==o.toToken?.symbol||e.fromToken?.blockchain!==e.fromToken?.blockchain||e.toToken?.blockchain!==o.toToken?.blockchain||e.fromToken?.address!==o.fromToken?.address||e.toToken?.address!==o.toToken?.address||e.inputAmount!==o.inputAmount)}else if(t.store==="settings"){let{prevState:e,currentState:o}=t;return e.slippage!==o.slippage||e.customSlippage!==o.customSlippage||e.disabledLiquiditySources?.length!==o.disabledLiquiditySources?.length||e.infiniteApprove||o.infiniteApprove}return!1}a(He,"isRouteParametersChanged");function Tt(t){if(!t)return null;let e=(t.result?.swaps||[]).map(o=>({...o,fromAmount:y(o.fromAmount,6,6),toAmount:y(o.toAmount,6,6)}));return{...t,...t.result&&{result:{...t.result,swaps:e}}}}a(Tt,"getFormatedBestRoute");function kt(t){let e=t.steps.map(o=>({...o,feeInUsd:y(o.feeInUsd,4,4),outputAmount:y(o.outputAmount,6,6),expectedOutputAmountHumanReadable:y(o.expectedOutputAmountHumanReadable,6,6)}));return{...t,inputAmount:y(t.inputAmount,6,6),steps:e}}a(kt,"getFormatedPendingSwap");var wt=a((t,e)=>t?"loading":e?"failed":"success","getBestRouteStatus");var jo=a(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Q=jo;import{subscribeWithSelector as Tn}from"zustand/middleware";import{RangoClient as Xo}from"rango-sdk";var Qo="c6381a79-2817-4602-83bf-6a641a409e32",Ge={API_KEY:Qo};function Se(t){return Ge[t]}a(Se,"getConfig");function Ct(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Ge=e,Ge}a(Ct,"initConfig");var he,oe=a(()=>he||(he=new Xo(Se("API_KEY")),he),"httpService");import{create as Jo}from"zustand";import{persist as zo,subscribeWithSelector as Zo}from"zustand/middleware";var Wt=[.5,1,3,5,8,13,20],yt=1,bt=5,At=100,Et=0;import{create as Yo}from"zustand";var k=Q(Yo()(t=>({meta:{blockchains:[],popularTokens:[],swappers:[],tokens:[]},loadingStatus:"loading",fetchMeta:async()=>{try{let e=await oe().getAllMetadata(),o=q(e.tokens.map(s=>s.blockchain)),n=e.blockchains.filter(s=>s.enabled&&o.includes(s.name));e.blockchains=n.sort((s,r)=>s.sort-r.sort),t({meta:e,loadingStatus:"success"})}catch{t({loadingStatus:"failed"})}}})));var E=Q(Jo()(zo(Zo(t=>({slippage:yt,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:()=>t(e=>{let{swappers:o}=k.getState().meta,n=q(o.map(s=>s.swapperGroup));return n.length===e.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:n}}),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"})));import L from"bignumber.js";import{i18n as Y}from"@lingui/core";import{getCosmosExperimentalChainInfo as en,isEvmAddress as tn,KEPLR_COMPATIBLE_WALLETS as on,detectInstallLink as nn,WalletTypes as rn,Networks as Rt}from"@rango-dev/wallets-shared";import{WalletState as X}from"@rango-dev/ui";import{isCosmosBlockchain as sn}from"rango-types";import{readAccountAddress as an}from"@rango-dev/wallets-core";import Te from"bignumber.js";function ln(t){switch(!0){case t.connected:return X.CONNECTED;case t.connecting:return X.CONNECTING;case!t.installed:return X.NOT_INSTALLED;default:return X.DISCONNECTED}}a(ln,"getStateWallet");var un=[rn.LEAP];function Bt(t,e,o){return o.filter(n=>!un.includes(n)).map(n=>{let{name:s,img:r,installLink:i,showOnMobile:l}=e(n),u=ln(t(n));return{name:s,image:r,installLink:nn(i),state:u,type:n,showOnMobile:!(typeof l>"u")}})}a(Bt,"getlistWallet");function ke(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}a(ke,"walletAndSupportedChainsNames");function xt(t,e,o,n){let s=[];function r(l,u){if(!!!s.find(f=>f.chain===l)){let f={address:u,chain:l,walletType:t};s.push(f)}}a(r,"addAccount");let i=n||[];return e.forEach(l=>{let{address:u,network:c}=an(l),f=i.length>0,T=i.includes(c),w=c===Rt.Unknown;if(f&&!T&&!w)return;let S=c===Rt.Unknown&&tn(u);if(w&&!S)return;o.includes(c)||S?i.filter(p=>o.includes(p)).forEach(p=>{r(p,u.toLowerCase())}):r(c,u)}),s}a(xt,"prepareAccountsForWalletStore");function ae(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,s=o.to.blockchain;e.includes(n)||e.push(n),e.includes(s)||e.push(s),o.internalSwaps&&Array.isArray(o.internalSwaps)&&o.internalSwaps.forEach(r=>{let i=r.from.blockchain,l=r.to.blockchain;e.includes(i)||e.push(i),e.includes(l)||e.push(l)})}),e}a(ae,"getRequiredChains");function we(t,e,o,n){return t.map(r=>({address:r.address,walletType:r.walletType,chain:r.chain,image:o(r.walletType).img,name:o(r.walletType).name,selected:n===r.chain?!1:!!e.find(i=>i.chain===r.chain&&i.walletType===r.walletType)}))}a(we,"getSelectableWallets");function se(t,e,o,n){if(t.length===0)return null;let s=t.filter(r=>r.chain===e);return s.length===0?null:s.map(r=>r.balances?.find(i=>n!==null&&i.address===n||n===null&&i.address===n&&i.symbol===o)||null).filter(r=>r!==null).sort((r,i)=>parseFloat(i?.amount||"0")-parseFloat(r?.amount||"1")).find(()=>!0)||null}a(se,"getBalanceFromWallet");function Ce(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}a(Ce,"isAccountAndWalletMatched");function vt(t,e,o){let{address:n,blockChain:s,explorerUrl:r,balances:i=[]}=e;return{address:n,chain:s,loading:!1,error:!1,explorerUrl:r,walletType:t.walletType,balances:i?.map(l=>({chain:s,symbol:l.asset.symbol,ticker:l.asset.symbol,address:l.asset.address||null,rawAmount:l.amount.amount,decimal:l.amount.decimals,amount:new Te(l.amount.amount).shiftedBy(-l.amount.decimals).toFixed(),logo:"",usdPrice:mn(s,l.asset.symbol,l.asset.address,o)||null}))||[]}}a(vt,"makeBalanceFor");function Pt(t){return{...t,loading:!1,error:!0}}a(Pt,"resetConnectedWalletState");var It=a(t=>{let e=new Set,n=t?.reduce((r,i)=>r.findIndex(l=>l.address===i.address&&l.chain===i.chain)===-1?[...r,i]:r,[])?.map(r=>{let i={name:r.chain,accounts:[]};return e.has(r.address)||e.add(r.address),e.forEach(l=>{r.address===l&&i.accounts.push(r)}),i}),s=y(n?.flatMap(r=>r.accounts)?.flatMap(r=>r?.balances)?.map(r=>new Te(r?.amount||F).multipliedBy(r?.usdPrice||0))?.reduce((r,i)=>r.plus(i),F)||F).toString();return cn(s)},"calculateWalletUsdValue");function cn(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}a(cn,"numberWithThousandSeperator");var We=a(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"),mn=a((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice"),Nt=a((t,e)=>{let o=en(Object.entries(t).map(([,n])=>n).filter(sn));return o&&!!o[e]},"isExperimentalChain"),Ve=a(t=>{let e=new Set(t.map(o=>o.walletType));return on.filter(o=>e.has(o))},"getKeplrCompatibleConnectedWallets");function ye(t,e){return t.map(({balance:o,...n})=>{let s=y(new Te(se(e,n.blockchain,n.symbol,n.address)?.amount||F)),r="";return n.usdPrice&&(r=y(new Te(se(e,n.blockchain,n.symbol,n.address)?.amount||F).multipliedBy(n.usdPrice))),{...n,...s!=="0"&&{balance:{amount:s,usdValue:r}}}})}a(ye,"getTokensWithBalance");function le(t,e,o,n){if(t?.name===n[0]?.name)return n;let r=e.filter(i=>i.blockchain===t?.name);return We(ye(r,o))}a(le,"getSortedTokens");function V(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}a(V,"tokensAreEqual");function Ke(t,e){let o,n=t[0],s=t[1];return t.length===1?o=n:V(n,e)?o=s:o=n,o}a(Ke,"getDefaultToken");function Mt(t){return t.sort((e,o)=>+(o.state===X.CONNECTED)-+(e.state===X.CONNECTED)||+(o.state===X.DISCONNECTED||o.state===X.CONNECTING)-+(e.state===X.DISCONNECTED||e.state===X.CONNECTING))}a(Mt,"sortWalletsBasedOnState");import{PendingSwapNetworkStatus as be}from"@rango-dev/queue-manager-rango-preset";function Ae(t,e){return!t||!e||t.lte(F)||e.lte(F)?0:e.div(t).minus(1).multipliedBy(100)}a(Ae,"getOutputRatio");function Ee(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new L(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new L(1e3)))??!1}a(Ee,"outputRatioHasWarning");function je(t){return(t?.result?.swaps||[]).filter(e=>{let o=e.fromAmountMinValue?new L(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new L(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}a(je,"hasLimitError");function Ot(t){if(!t)return{swap:null,fromAmountRangeError:"",recommendation:""};let e=(t?.result?.swaps||[]).filter(l=>{let u=l.fromAmountMinValue?new L(l.fromAmountMinValue):null,c=l.fromAmountMaxValue?new L(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?u?.gte(l.fromAmount)||c?.lte(l.fromAmount):u?.gt(l.fromAmount)||c?.lt(l.fromAmount)})[0];if(!e)return{swap:null,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new L(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new L(e.fromAmountMaxValue):null,s=e.fromAmountRestrictionType==="EXCLUSIVE",r="",i="";return!s&&o&&o.gt(e.fromAmount)?(r=`Required: >= ${y(o)} ${e.from.symbol}`,i="Increase your swap amount"):s&&o&&o.gte(e.fromAmount)&&(r=`Required: > ${y(o)} ${e.from.symbol}`,i="Increase your swap amount"),!s&&n&&n.lt(e.fromAmount)?(r=`Required: <= ${y(n)} ${e.from.symbol}`,i="Decrease your swap amount"):s&&n&&n.lte(e.fromAmount)&&(r=`Required: < ${y(n)} ${e.from.symbol}`,i="Decrease your swap amount"),{swap:e,fromAmountRangeError:r,recommendation:i}}a(Ot,"LimitErrorMessage");function Ut(t,e,o,n,s,r,i,l,u){return t!=="success"?{title:`${Y.t("Connect Wallet")}`,disabled:!0}:e.length==0?{title:`${Y.t("Connect Wallet")}`,disabled:!1}:o?{title:`${Y.t("Finding Best Route...")}`,disabled:!0}:!u||u==="0"?{title:`${Y.t("Enter an amount")}`,disabled:!0}:!n||!n.result?{title:`${Y.t("Swap")}`,disabled:!0}:s?{title:`${Y.t("Limit Error")}`,disabled:!0}:r?{title:`${Y.t("Price impact is too high!")}`,disabled:!0}:i?{title:`${Y.t("USD price is unknown, price impact might be high!")}`,disabled:!1,hasWarning:!0}:l?{title:`${Y.t("The route goes through Ethereum. Continue?")}`,disabled:!1,hasWarning:!0}:{title:`${Y.t("Swap")}`,disabled:!1}}a(Ut,"getSwapButtonState");function Dt(t,e,o,n){return!((!o||!n||o.lte(F)||n.lte(F))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}a(Dt,"canComputePriceImpact");function Ft(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,s=o.to.blockchain,r=e[e.length-1];n!=r&&e.push(n),r=e[e.length-1],s!=r&&e.push(s)}),e}a(Ft,"requiredWallets");var pn=a((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice");function fn(t,e){let o=F;for(let n=0;n<t.fee.length;n++){let s=t.fee[n];if(s.expenseType==="DECREASE_FROM_OUTPUT")continue;let r=pn(s.asset.blockchain,s.asset.symbol,s.asset.address,e);o=o.plus(new L(s.amount).multipliedBy(r||0))}return o}a(fn,"getUsdFeeOfStep");function Re(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus(fn(n,e)),F)||null}a(Re,"getTotalFeeInUsd");function Lt(t){return t?!t.lt(new L(30)):!1}a(Lt,"hasHighFee");function _t(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}a(_t,"getMinRequiredSlippage");function qt(t,e){return e?parseFloat(t)>=parseFloat(e):!0}a(qt,"hasProperSlippage");function Be(t,e,o,n,s,r,i,l,u,c,f,T){let w=s.reduce((p,m)=>(p[m.chain]=m.address,p),{}),h=[];n.forEach(p=>{let m=h.find(W=>W.blockchain===p.chain);m?m.addresses.push(p.address):h.push({blockchain:p.chain,addresses:[p.address]})});let S=!!f,C=q((f?.result?.swaps||[]).reduce((p,m)=>(p.push(m.from.blockchain,m.to.blockchain),m.internalSwaps&&Array.isArray(m.internalSwaps)&&m.internalSwaps.map(W=>{p.push(W.from.blockchain,W.to.blockchain)}),p),[]));return{amount:o.toString(),affiliateRef:l??void 0,affiliatePercent:u??void 0,affiliateWallets:c??void 0,checkPrerequisites:S,from:{address:t.address,blockchain:t.blockchain,symbol:t.symbol},to:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},connectedWallets:h,destination:T||void 0,selectedWallets:w,swapperGroups:r,swappersGroupsExclude:!0,slippage:i.toString(),...S&&{blockchains:C}}}a(Be,"createBestRouteRequestBody");function Qe(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}a(Qe,"getWalletsForNewSwap");function ie(t){return t?.result?.outputAmount||null}a(ie,"getRouteOutputAmount");function ne(t,e){return!t||!e?null:new L(e).div(new L(t)).minus(1).multipliedBy(100)}a(ne,"getPercentageChange");function $t(t,e){let o=ie(t),n=ie(e);if(!o||!n)return!1;let s=ne(o,n);return s?s.toNumber()<=-1:!0}a($t,"isOutputAmountChangedALot");function Ht(t,e){let o=t.validationStatus,n=ae(t);return e.sort((r,i)=>n.indexOf(r.chain)-n.indexOf(i.chain)).flatMap(r=>ht(r,o)||[]).filter(r=>!r.ok).map(r=>{let i=r.asset.symbol,l=y(new L(r.currentAmount.amount).shiftedBy(-r.currentAmount.decimals),8),u=y(new L(r.requiredAmount.amount).shiftedBy(-r.requiredAmount.decimals),8),c="";return r.reason==="FEE"&&(c=" for network fee"),r.reason==="INPUT_ASSET"&&(c=" for swap"),r.reason==="FEE_AND_INPUT_ASSET"&&(c=" for input and network fee"),`Needs \u2248 ${u} ${i}${c}, but you have ${l} ${i} in your ${r.asset.blockchain} wallet.`})}a(Ht,"getBalanceWarnings");function Gt(t,e){return(t?new L(t):F).multipliedBy(e||0)}a(Gt,"calcOutputUsdValue");function Xe(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==be.NetworkChanged}a(Xe,"isNetworkStatusInWarningState");function Vt(t,e){let o="bellow button or",n=t.extraMessage,s=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),Xe(e))switch(n=t.networkStatusExtraMessage||"",s=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case be.WaitingForConnectingWallet:n=n||"Waiting for connecting wallet";break;case be.WaitingForQueue:n=n||"Waiting for other running tasks to be finished";break;case be.WaitingForNetworkChange:n=n||"Waiting for changing wallet network";break}s=s||"",n=n||"";let i=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:s,long:i}}}a(Vt,"getSwapMessages");function Kt(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}a(Kt,"getLastConvertedTokenInFailedSwap");function jt(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}a(jt,"shouldRetrySwap");function Qt(t,e){return(k.getState().meta.blockchains.find(s=>s.name===t)?.addressPatterns||[]).filter(s=>new RegExp(s).test(e)).length>0}a(Qt,"isValidCustomDestination");function Xt(t,e,o,n,s){return t||!e&&!Ft(n).every(r=>s.map(i=>i.chain).includes(r))||!!e&&!o||!!e&&!!o&&!Ft(n).filter(r=>r!==e).every(r=>s.map(i=>i.chain).includes(r))}a(Xt,"confirmSwapDisabled");import{create as dn}from"zustand";import{subscribeWithSelector as gn}from"zustand/middleware";import{shallow as Sn}from"zustand/shallow";var R=Q(dn()(gn((t,e)=>({connectedWallets:[],selectedWallets:[],customDestination:"",connectWallet:o=>{let n=e().getWalletsDetails;t(s=>({connectedWallets:s.connectedWallets.filter(r=>r.walletType!==o[0].walletType).concat(o.map(r=>({balances:[],address:r.address,chain:r.chain,loading:!0,walletType:r.walletType,error:!1,explorerUrl:null})))})),n(o)},disconnectWallet:o=>{t(n=>({connectedWallets:n.connectedWallets.filter(s=>s.walletType!==o),selectedWallets:n.selectedWallets.filter(s=>s.walletType!=o)}))},initSelectedWallets:()=>t(o=>{let n=ae(d.getState().bestRoute),s=o.connectedWallets,r=[];return n.forEach(i=>{if(!!!o.selectedWallets.find(u=>u.chain===i)){let u=s.find(c=>c.chain===i);u&&r.push({address:u.address,chain:u.chain,walletType:u.walletType})}}),{selectedWallets:o.selectedWallets.concat(r)}}),setSelectedWallet:o=>t(n=>({selectedWallets:n.selectedWallets.filter(s=>s.chain!==o.chain).concat({chain:o.chain,address:o.address,walletType:o.walletType})})),setCustomDestination:o=>t(()=>({customDestination:o})),clearConnectedWallet:()=>t(()=>({connectedWallets:[],selectedWallets:[]})),getWalletsDetails:async(o,n=!0)=>{let s=e().getWalletsDetails,{tokens:r}=k.getState().meta;t(i=>({connectedWallets:i.connectedWallets.map(l=>o.find(u=>Ce(u,l))?{...l,loading:!0}:l)}));try{let i=o.map(({address:c,chain:f})=>({address:c,blockchain:f})),u=(await oe().getWalletsDetails(i)).wallets;if(u)t(c=>({connectedWallets:c.connectedWallets.map(f=>{let T=o.find(h=>Ce(h,f)),w=u.find(h=>h.address===f.address&&h.blockChain===f.chain);return w?.failed&&T&&n&&s([T],!1),T&&w?vt(T,w,r):f})}));else throw new Error("Wallet not found")}catch{t(l=>({connectedWallets:l.connectedWallets.map(u=>o.find(c=>Ce(c,u))?Pt(u):u)}))}}}))));R.subscribe(t=>t.connectedWallets,t=>{d.setState(({sourceTokens:e,destinationTokens:o})=>{let n=ye(e,t),s=ye(o,t);return{sourceTokens:We(n),destinationTokens:We(s)}})},{equalityFn:Sn});var Yt=a(t=>!!t.connectedWallets.find(e=>e.loading),"fetchingBalanceSelector");var ue=a((t,e)=>t?.usdPrice?new Z(e||F).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),d=Q(hn()(Tn(t=>({fromChain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Z(0),outputUsdValue:new Z(0),toChain:null,toToken:null,bestRoute:null,loading:!1,error:"",sourceTokens:[],destinationTokens:[],setBestRoute:e=>t(o=>{let n=null,s=F;return ge(o.inputAmount)?(e&&(n=e.result?.outputAmount?new Z(e.result?.outputAmount):null,s=Gt(e.result?.outputAmount,gt(e)||o.toToken?.usdPrice)),{bestRoute:e,...!!e&&{outputAmount:n,outputUsdValue:s}}):{}}),resetRoute:()=>t(()=>({loading:!0,error:"",bestRoute:null,outputAmount:null,outputUsdValue:new Z(0)})),setFromChain:(e,o)=>{t(n=>{if(n.fromChain?.name===e?.name)return{};let s=k.getState().meta.tokens,r=R.getState().connectedWallets,i=le(e,s,r,n.destinationTokens),l=Ke(i,n.toToken);return{fromChain:e,sourceTokens:i,...o&&{fromToken:l},...!!n.inputAmount&&{inputUsdValue:ue(l,n.inputAmount)}}})},setFromToken:e=>t(o=>({fromToken:e,...!!o.inputAmount&&{inputUsdValue:ue(e,o.inputAmount)}})),setToChain:(e,o)=>{t(n=>{if(n.toChain?.name===e?.name)return{};let s=k.getState().meta.tokens,r=R.getState().connectedWallets,i=le(e,s,r,n.destinationTokens);return{toChain:e,destinationTokens:i,...o&&{toToken:Ke(i,n.fromToken)}}})},setToToken:e=>t(()=>({toToken:e})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new Z(0),outputUsdValue:new Z(0),bestRoute:null,error:""},...!!o.fromToken&&{inputUsdValue:ue(o.fromToken,e)}}))},retry:e=>{let{tokens:o,blockchains:n}=k.getState().meta,s=R.getState().connectedWallets,r=e.status==="failed"?e.steps.findIndex(C=>C.status==="failed"):null;if(r===null||r<0)return;let i=e.steps[0],l=e.steps[e.steps.length-1],u=n.find(C=>C.name===i.fromBlockchain)||null,c=n.find(C=>C.name===l.toBlockchain)||null,f=o.find(C=>V(C,{blockchain:i.fromBlockchain,symbol:i.fromSymbol,address:i.fromSymbolAddress})),T=o.find(C=>V(C,{blockchain:l.toBlockchain,symbol:l.toSymbol,address:l.toSymbolAddress})),w=le(u,o,s,[]),h=le(c,o,s,[]),S=e.inputAmount;t({fromChain:u,fromToken:f,inputAmount:S,outputAmount:null,inputUsdValue:ue(f||null,S),outputUsdValue:new Z(0),toChain:c,toToken:T,bestRoute:null,loading:!1,error:"",sourceTokens:w,destinationTokens:h})},switchFromAndTo:()=>t(e=>({fromChain:e.toChain,fromToken:e.toToken,toChain:e.fromChain,toToken:e.fromToken,sourceTokens:e.destinationTokens,destinationTokens:e.sourceTokens,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:ue(e.toToken,e.outputAmount?.toString()||"")}))})))),kn=a((t,e)=>{let o=null,n=a(()=>{let{fromToken:i,toToken:l,inputAmount:u,resetRoute:c}=t.getState(),{slippage:f,customSlippage:T,disabledLiquiditySources:w,affiliateRef:h,affiliatePercent:S,affiliateWallets:C}=e.getState();if(!i||!l||!ge(u))return;o?.abort(),o=new AbortController;let p=Be(i,l,u,[],[],w,T||f,h,S,C);t.getState().loading||c(),oe().getBestRoute(p,{signal:o.signal}).then(m=>{let{setBestRoute:W}=t.getState();W(m),t.setState({loading:!1}),o=null}).catch(m=>{m.code!=="ERR_CANCELED"&&t.setState({error:m.message,loading:!1})})},"fetchBestRoute"),s=mt(n,600),r=a(()=>{let{fromToken:i,toToken:l,inputAmount:u,inputUsdValue:c,resetRoute:f}=d.getState();if(!ge(u)||c?.eq(0))return t.setState({loading:!1});if(V(i,l))return t.setState({loading:!1,bestRoute:null,outputAmount:new Z(u),outputUsdValue:c});t.getState().loading||f(),s()},"bestRouteParamsListener");return d.subscribe(i=>({fromChain:i.fromChain,fromToken:i.fromToken,toChain:i.toChain,toToken:i.toToken,inputAmount:i.inputAmount}),r,{equalityFn:(i,l)=>!He({store:"bestRoute",prevState:i,currentState:l})}),E.subscribe(i=>({slippage:i.slippage,customSlippage:i.customSlippage,disabledLiquiditySources:i.disabledLiquiditySources,infiniteApprove:i.infiniteApprove}),r,{equalityFn:(i,l)=>!He({store:"settings",prevState:i,currentState:l})}),{fetchBestRoute:n}},"bestRoute"),{fetchBestRoute:Jt}=kn(d,E);var g={home:"/",fromChain:"from-chain",fromToken:"from-token",toChain:"to-chain",toToken:"to-token",settings:"settings",liquiditySources:"/settings/liquidity-sources",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:"swaps/:requestId"};import{create as wn}from"zustand";var O=Q(wn()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",toggleConnectWalletsButton:()=>t(e=>({connectWalletsButtonDisabled:!e.connectWalletsButtonDisabled})),setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function zt(){let t=Je(!0),[e,o]=bn(),n=yn(),s=Je(n.search),r=Je({}),i=d.use.fromChain(),l=d.use.toChain(),u=d.use.fromToken(),c=d.use.toToken(),f=d.use.setFromChain(),T=d.use.setFromToken(),w=d.use.setToChain(),h=d.use.setToToken(),S=d.use.inputAmount(),C=d.use.setInputAmount(),A=k.use.loadingStatus(),{blockchains:p,tokens:m}=k.use.meta(),W=O.use.setSelectedSwap();return Ye(()=>{let B={};Wn(s.current).forEach((v,I)=>{B[I]=v}),r.current=B;let x=n.pathname.split(g.swaps+"/")[1]||null;x&&W(x)},[]),Ye(()=>{if(!t.current){let B="",x="",v="",I="",N="";if(A!=="success")B=r.current["fromChain"],x=r.current["fromToken"],v=r.current["toChain"],I=r.current["toToken"],N=r.current["fromAmount"]||S;else{if(n.state==="redirect")return;B=i?.name||"",x=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),v=l?.name||"",I=(c?.symbol||"")+(c?.address?`--${c?.address}`:""),N=S}o({...B&&{["fromChain"]:B},...x&&{["fromToken"]:x},...v&&{["toChain"]:v},...I&&{["toToken"]:I},...N&&{["fromAmount"]:N.toString()}},{replace:!0})}t.current=!1},[n.pathname,S,i,u,l,c]),Ye(()=>{if(A==="success"){let B=e.get("fromChain"),x=e.get("fromToken"),v=e.get("toChain"),I=e.get("toToken"),N=e.get("fromAmount"),$=p.find(P=>P.name===B),H=Le(m,x,$||null),D=p.find(P=>P.name===v),b=Le(m,I,D||null);$&&(f($),H&&T(H)),D&&(w(D),b&&h(b)),N&&C(N)}},[A]),null}a(zt,"UpdateUrl");import{useWallets as xn}from"@rango-dev/wallets-core";import{isEvmBlockchain as vn}from"rango-types";function Zt({children:t,...e}){let o=Rn(),n=o?An:En,{blockchains:s}=k.use.meta(),{canSwitchNetworkTo:r}=xn(),i=s.filter(vn);return Bn({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:i,canSwitchNetworkTo:r}),xe.createElement(xe.Fragment,null,xe.createElement(n,null,t),o&&xe.createElement(zt,null))}a(Zt,"AppRouter");import Me,{useEffect as Fe}from"react";import{useNavigate as Qr}from"react-router-dom";import{HeaderLayout as Xr}from"@rango-dev/ui";import{useWallets as Yr}from"@rango-dev/wallets-core";import K from"react";import{useRoutes as Kr}from"react-router-dom";import _,{useEffect as Dn,useState as so}from"react";import{useNavigate as Ln}from"react-router-dom";import{useWallets as _n}from"@rango-dev/wallets-core";import{i18n as ve}from"@lingui/core";import{useInRouterContext as Pn,useNavigate as In}from"react-router-dom";function U(){let t=Pn(),e=In();return g,{navigateBackFrom:a(n=>{if(n===g.swapDetails)return e("/"+g.swaps,{replace:!0});!t||window.history.state&&window.history.state.idx>0?e(-1):[g.fromChain,g.fromToken,g.toChain,g.toToken,g.settings,g.wallets,g.swaps,g.confirmSwap].includes(n)?e(g.home,{replace:!0}):n===g.liquiditySources&&e("/"+g.settings,{replace:!0})},"navigateBackFrom")}}a(U,"useNavigateBack");import{Divider as ao,ConfirmSwap as qn,LoadingFailedAlert as $n,HighSlippageWarning as Hn,PercentageChange as Gn,RoutesOverview as Vn,TokenPreview as io}from"@rango-dev/ui";import{useManager as Kn}from"@rango-dev/queue-manager-react";import{useEffect as Mn,useRef as ze,useState as Ze}from"react";import et from"bignumber.js";import{calculatePendingSwap as eo}from"@rango-dev/queue-manager-rango-preset";function oo(){let t=d.use.fromToken(),e=d.use.toToken(),o=d.use.inputAmount(),n=d.use.bestRoute(),s=d.use.setBestRoute(),r=d.use.inputUsdValue(),i=E.use.affiliateRef(),l=E.use.affiliatePercent(),u=E.use.affiliateWallets(),c=R.use.connectedWallets(),f=R.use.customDestination(),T=R.use.selectedWallets(),w=k.use.meta(),h=E.use.customSlippage(),S=E.use.slippage(),C=E.use.disabledLiquiditySources(),A=h||S,p=ze(!1),m=ze(null),W=ze(null),[B,x]=Ze(!1),[v,I]=Ze([]),[N,$]=Ze([]);return Mn(()=>()=>W.current?.abort(),[]),!t||!e||!o||!n?{loading:!1,warnings:[],errors:[],confirmSwap:null}:{loading:B,warnings:N,errors:v,confirmSwap:a(async()=>{if(p.current){let b={slippage:A.toString(),disabledSwappersGroups:C};return v.length>0&&I([]),N.length>0&&$([]),p.current=!1,m.current?eo(o.toString(),m.current,Qe(T),b,!1,w):void 0}W.current=new AbortController,x(!0);let D=Be(t,e,o,c,T,C,A,i,l,u,n,f);try{let b=await oe().getBestRoute(D,{signal:W.current?.signal});if(W.current=null,x(!1),!b.result||!new et(b.requestAmount).isEqualTo(new et(o||"-1"))){I(G=>G.concat({type:0}));return}let P={errors:[],warnings:[]};if(St(n,b)){s(b);let G=new et(b.result?.outputAmount||"0").multipliedBy(e.usdPrice||0),fe=Ae(r,G);Ee(r,fe)?P.errors.push({type:1}):$t(n,b)?P.warnings.push({type:3,newOutputAmount:y(ie(b)),percentageChange:y(ne(ie(n),ie(b)),null,2)}):$e(n,b)?P.warnings.push({type:2}):_e(n,b)?P.warnings.push({type:0}):qe(n,b)&&P.warnings.push({type:1})}let ee=Ht(b,T);ee.length===0||P.errors.push({type:4,messages:ee});let me=_t(n);qt(A.toString(),me)||P.errors.push({type:3,minRequiredSlippage:me});let pe=P.errors.length===0,te=P.warnings.length===0;if((pe||!pe&&p.current)&&(te||!te&&p.current)){let G={slippage:A.toString(),disabledSwappersGroups:C};return eo(o.toString(),b,Qe(T),G,!1,w)}else p.current||(p.current=!0,I(P.errors),$(P.warnings),m.current=b);return}catch(b){if(b?.code==="ERR_CANCELED")return;let P=b?.response?.status;x(!1),I([{type:2,status:P}]);return}},"confirmSwap")}}a(oo,"useConfirmSwap");import no from"react";import{BalanceErrors as Fn,MinRequiredSlippage as On}from"@rango-dev/ui";import{useNavigate as Un}from"react-router-dom";function tt(t){let e=Un();return t.flatMap(o=>{switch(o.type){case 0:return"No routes found. Please try again later.";case 2:return`Failed to confirm swap ${o.status?`'status': ${o.status})`:""}, please try again.`;case 1:return"Route updated and price impact is too high, try again later!";case 3:return no.createElement(On,{minRequiredSlippage:o.minRequiredSlippage,changeSlippage:()=>e("/"+g.settings)});case 4:return no.createElement(Fn,{messages:o.messages});default:return[]}})}a(tt,"ConfirmSwapErrors");function ro(t){return t.flatMap(e=>{switch(e.type){case 0:return"Route has been updated.";case 3:return`Output amount changed to ${e.newOutputAmount} (${e.percentageChange}% change).`;case 1:return"Route swappers has been updated.";case 2:return"Route internal coins has been updated.";default:return[]}})}a(ro,"ConfirmSwapWarnings");function lo({customDestinationEnabled:t}){let e=Ln(),{navigateBackFrom:o}=U(),n=d.use.bestRoute(),s=d.use.loading(),r=d.use.error(),i=O.use.setSelectedSwap(),{blockchains:l,tokens:u}=k.use.meta(),c=k.use.loadingStatus(),f=R.use.connectedWallets(),T=R.use.selectedWallets(),w=R.use.customDestination(),h=R.use.setCustomDestination(),S=R.use.initSelectedWallets(),C=R.use.setSelectedWallet(),A=E.use.slippage(),p=E.use.customSlippage(),m=d.use.inputUsdValue(),W=d.use.outputUsdValue(),B=d.use.setInputAmount(),[x,v]=so(""),I=wt(s,!!r),[N,$]=so(""),{manager:H}=Kn(),{loading:D,errors:b,warnings:P,confirmSwap:ce}=oo(),ee=p||A,re=!b.find(M=>M.type===3),{getWalletInfo:me,connect:pe}=_n(),te=n?.result?.swaps[0],G=n?.result?.swaps[n?.result?.swaps.length-1],fe=y(te?.fromAmount,4,6),ut=y(G?.toAmount,4,6);Dn(()=>{S(),w&&h("")},[]);let qo=n?.result?.swaps[n?.result?.swaps.length-1].to.blockchain,ct=!!n?.result?.swaps.find(M=>M.from.blockchain===qo),de=we(f,T,me,ct?"":N),$o=a(M=>{let Ue=M;Ve(de).forEach(Go=>pe?.(Go,Ue))},"handleConnectChain"),Ho=Re(n,u),Oe=!m||!W||!W.gt(0)?null:ne(m.toNumber(),W.toNumber());return _.createElement(qn,{requiredWallets:ae(n),selectableWallets:de,setCustomDestination:h,customDestination:w,customDestinationEnabled:t,isValidCustomDestination:Qt,checkedDestination:!!N,setDestinationChain:$,onBack:o.bind(null,g.confirmSwap),onConfirm:async()=>{ce?.().then(async M=>{if(M)try{await H?.create("swap",{swapDetails:M},{id:M.requestId}),i(M.requestId),e("/"+g.swaps+`/${M.requestId}`,{replace:!0}),setTimeout(()=>{B("")},0)}catch(Ue){v("Error: "+Ue?.message)}})},isWalletRequired:ct,onChange:M=>C(M),confirmDisabled:c!=="success"||Xt(s,N,w,n,de),handleConnectChain:M=>$o(M),isExperimentalChain:M=>Ve(de).length>0?Nt(l,M):!1,previewInputs:_.createElement(_.Fragment,null,_.createElement(io,{chain:{displayName:te?.from.blockchain||"",logo:te?.from.blockchainLogo||""},token:{symbol:te?.from.symbol||"",image:te?.from.logo||""},usdValue:m?y(m):null,amount:fe,label:ve.t("From"),loadingStatus:c!=="success"?c:I}),_.createElement(ao,{size:12}),_.createElement(io,{chain:{displayName:G?.to.blockchain||"",logo:G?.to.blockchainLogo||""},token:{symbol:G?.to.symbol||"",image:G?.to.logo||""},usdValue:W?y(W):null,amount:ut,label:ve.t("To"),loadingStatus:c!=="success"?c:I,percentageChange:Oe?_.createElement(Gn,{percentageChange:y(Oe,0,2),showPercentageChange:!!Oe?.lt(0)}):null})),previewRoutes:_.createElement(Vn,{routes:n,totalFee:y(Ho,0,2)}),loading:D,errors:x?[x,...tt(b)]:tt(b),warnings:ro(P),extraMessages:_.createElement(_.Fragment,null,c==="failed"&&_.createElement($n,null),c==="failed"&&re&&_.createElement(ao,null),_.createElement(Hn,{selectedSlippage:ee,highSlippage:ee>=bt,changeSlippage:()=>e("/"+g.settings)})),confirmButtonTitle:P.length>0||b.length>0?`${ve.t("Proceed anyway!")}`:`${ve.t("Confirm swap!")}`})}a(lo,"ConfirmSwapPage");import{History as jn}from"@rango-dev/ui";import{useManager as Qn}from"@rango-dev/queue-manager-react";import Xn from"react";import{useNavigate as Yn}from"react-router-dom";var Pe=a(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let s=o.list.getStorage();s?.swapDetails&&e.push({id:n,swap:s?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import uo from"dayjs";var co=a(t=>{let e=new Map([["today",{title:"Today",swaps:[]}],["week",{title:"This week",swaps:[]}],["month",{title:"This month",swaps:[]}],["year",{title:"This year",swaps:[]}],["history",{title:"History",swaps:[]}]]),o=uo();return t.forEach(n=>{let s=uo(Number(n.creationTime));o.isSame(s,"day")?e.get("today")?.swaps.push(n):o.isSame(s,"week")?e.get("week")?.swaps.push(n):o.isSame(s,"month")?e.get("month")?.swaps.push(n):o.isSame(s,"year")?e.get("year")?.swaps.push(n):e.get("history")?.swaps.push(n)}),Array.from(e.values())},"groupSwapsByDate");function mo(){let t=O.use.setSelectedSwap(),e=Yn(),{navigateBackFrom:o}=U(),{manager:n,state:s}=Qn(),r=Pe(n).map(({swap:l})=>l),i=!s.loadedFromPersistor;return Xn.createElement(jn,{list:r,groupBy:co,loading:i,onSwapClick:l=>{t(l),e(`${l}`,{replace:!0})},onBack:o.bind(null,g.swaps)})}a(mo,"HistoryPage");import go,{useEffect as ir}from"react";import{useNavigate as lr}from"react-router-dom";import{HomePanel as ur}from"@rango-dev/ui";import Ie,{useEffect as Jn,useRef as zn,useState as Zn}from"react";import{useInRouterContext as er,useSearchParams as tr}from"react-router-dom";import{styled as or,Button as nr,VerticalSwapIcon as rr}from"@rango-dev/ui";function sr({count:t}){let e=zn(!0),[o,n]=tr(),s=d.use.outputAmount();return Jn(()=>{if(e.current)e.current=!1;else{let r=o.get("fromChain"),i=o.get("fromToken"),l=o.get("toChain"),u=o.get("toToken");n({...l&&{["fromChain"]:l},...u&&{["fromToken"]:u},...r&&{["toChain"]:r},...i&&{["toToken"]:i},...s&&{["fromAmount"]:s.toString()}})}},[t]),null}a(sr,"SwithFromAndTo");var ar=or("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)"});function po(){let t=d.use.switchFromAndTo(),e=er(),[o,n]=Zn(0);return Ie.createElement(ar,null,Ie.createElement(nr,{variant:"ghost",onClick:()=>{t(),n(s=>s+1)}},Ie.createElement(rr,{size:32}),e&&Ie.createElement(sr,{count:o})))}a(po,"SwithFromAndToButton");var fo={genericServerError:"Error connecting server, please reload the app and try again"};import So from"bignumber.js";function ho(){let t=lr(),e=d.use.fromChain(),o=d.use.fromToken(),n=d.use.toChain(),s=d.use.toToken(),r=d.use.setInputAmount(),i=d.use.inputUsdValue(),l=d.use.inputAmount(),u=d.use.outputAmount(),c=d.use.outputUsdValue(),f=d.use.bestRoute(),T=k.use.meta().tokens,w=d.use.loading(),h=d.use.error(),S=k.use.loadingStatus(),C=R.use.connectedWallets(),A=O.use.setCurrentPage(),p=S==="failed"?fo.genericServerError:h,m=!1,W=!!l&&(!!f||w||!!h),B=Ae(i,c),x=Ee(i,B),{fromAmountRangeError:v,recommendation:I,swap:N}=Ot(f),$=!Dt(f,l,i,c),H=Ut(S,C,w,f,je(f),x,$,m,l),D=Re(f,T),b=Lt(D),P=e&&o?y(se(C,e?.name,o?.symbol,o?.address)?.amount||"0",8):"0",ce=e&&o?y(se(C,e?.name,o?.symbol,o?.address)?.amount||"0",se(C,e?.name,o?.symbol,o?.address)?.decimal):"0";ir(()=>(A(g.home),A.bind(null,"")),[]);let ee=!i||!c||!c.gt(0)?null:ne(i.toNumber(),c.toNumber());return go.createElement(ur,{bestRoute:f,bestRouteError:h,fetchBestRoute:Jt,onClickHistory:()=>t(g.swaps),onClickSettings:()=>t(g.settings),setInputAmount:r,fromChain:e,toChain:n,fromToken:o,toToken:s,outputAmount:u?y(new So(u)):y(new So(0)),inputAmount:l,loadingStatus:S,showBestRoute:W,fetchingBestRoute:w,outputUsdValue:y(c),inputUsdValue:y(i),swapButtonTitle:H.title,swapButtonDisabled:H.disabled,swapButtonClick:()=>{H.title==="Connect Wallet"?t(g.wallets):t(g.confirmSwap,{replace:!0})},onChainClick:re=>{t(re)},onTokenClick:re=>{t(re)},highFee:b,errorMessage:p,hasLimitError:je,swap:N,fromAmountRangeError:v,recommendation:I,totalFeeInUsd:y(D,0,2),swithFromAndToComponent:go.createElement(po,null),connectedWallets:C,percentageChange:y(ee,0,2),showPercentageChange:!!ee?.lt(0),tokenBalanceReal:ce,tokenBalance:P,totalTime:ft(dt(f)),bestRouteData:Tt(f),swapFromAmount:y(N?.fromAmount||null)})}a(ho,"Home");import{LiquiditySourcesSelector as cr}from"@rango-dev/ui";import mr from"react";function To({supportedSwappers:t}){let e=k.use.meta().swappers,o=k.use.loadingStatus(),n=E.use.toggleLiquiditySource(),s=E.use.disabledLiquiditySources(),r=E.use.toggleAllLiquiditySources(),{navigateBackFrom:i}=U(),l=[];return q(e.map(u=>u.swapperGroup)).map(u=>e.find(c=>c.swapperGroup===u)).find(u=>{if(u)for(let c of u.types)l.push({title:u.swapperGroup,logo:u.logo,type:c,selected:!s.includes(u.swapperGroup)})}),mr.createElement(cr,{toggleAll:r,list:t?l.filter(u=>t.filter(c=>c===u.title).length>0):l,onChange:u=>n(u.title),onBack:i.bind(null,g.liquiditySources),loadingStatus:o})}a(To,"LiquiditySourcePage");import pr from"react";import{BlockchainSelector as fr}from"@rango-dev/ui";function ot(t){let{type:e,supportedChains:o}=t,n=o?k.use.meta().blockchains.filter(f=>o.includes(f.name)):k.use.meta().blockchains,s=k.use.loadingStatus(),r=d.use.fromChain(),i=d.use.toChain(),l=d.use.setFromChain(),u=d.use.setToChain(),{navigateBackFrom:c}=U();return pr.createElement(fr,{type:e==="from"?"Source":"Destination",list:n,selected:e==="from"?r:i,loadingStatus:s,onChange:f=>{e==="from"?l(f,!0):u(f,!0),c(g.fromChain)},onBack:c.bind(null,g.fromChain)})}a(ot,"SelectChainPage");import dr from"react";import{TokenSelector as gr}from"@rango-dev/ui";function nt(t){let{navigateBackFrom:e}=U(),{type:o,supportedTokens:n}=t,s=d.use.sourceTokens(),r=d.use.destinationTokens(),i=n?s.filter(h=>n.some(S=>V(S,h))):s,l=n?r.filter(h=>n.some(S=>V(S,h))):r,u=d.use.fromToken(),c=d.use.toToken(),f=d.use.setFromToken(),T=d.use.setToToken(),w=k.use.loadingStatus();return dr.createElement(gr,{type:o==="from"?"Source":"Destination",list:o=="from"?i:l,selected:o==="from"?u:c,onChange:h=>{o==="from"?f(h):T(h),e(g.fromToken)},onBack:e.bind(null,g.fromToken),loadingStatus:w})}a(nt,"SelectTokenPage");import Sr from"react";import{Settings as hr}from"@rango-dev/ui";import{useNavigate as Tr}from"react-router-dom";function ko({supportedSwappers:t,singleTheme:e}){let o=E.use.slippage(),n=E.use.setSlippage(),s=E.use.disabledLiquiditySources(),r=E.use.customSlippage(),i=E.use.setCustomSlippage(),l=E.use.theme(),u=E.use.setTheme(),c=k.use.meta().swappers,f=Tr(),{navigateBackFrom:T}=U(),w=E.use.infiniteApprove(),h=E.use.toggleInfiniteApprove(),S=k.use.loadingStatus(),C=[];q(c.map(p=>p.swapperGroup)).map(p=>c.find(m=>m.swapperGroup===p)).find(p=>{if(p)for(let m of p.types)C.push({title:p.swapperGroup,logo:p.logo,type:m,selected:!s.includes(p.swapperGroup)})}),t&&C.filter(p=>t.filter(m=>m===p.title).length>0);let A=t?C.filter(p=>t.filter(m=>m===p.title).length>0):C;return Sr.createElement(hr,{slippages:Wt,selectedSlippage:o,onSlippageChange:p=>n(p),onLiquiditySourcesClick:()=>f(g.liquiditySources),onBack:T.bind(null,g.settings),liquiditySources:A,selectedLiquiditySources:A.filter(p=>p.selected),singleTheme:e,customSlippage:r,onCustomSlippageChange:i,minSlippage:Et,maxSlippage:At,selectedTheme:l,onThemeChange:u,infiniteApprove:w,toggleInfiniteApprove:h,loadingStatus:S})}a(ko,"SettingsPage");import{Alert as wr,SecondaryPage as Cr,styled as rt,Wallet as Wr,WalletState as Co}from"@rango-dev/ui";import J,{useEffect as Wo,useRef as yr,useState as br}from"react";import{WalletTypes as Ar,detectMobileScreens as Er}from"@rango-dev/wallets-shared";import{useWallets as Rr}from"@rango-dev/wallets-core";import{i18n as Br}from"@lingui/core";import{Spinner as xr}from"@rango-dev/ui";import{LoadingFailedAlert as vr}from"@rango-dev/ui";import{allProviders as kr}from"@rango-dev/provider-all";function Ne(t,e){let o=kr({walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||""}});if(t){let n=[];return t.forEach(s=>{if(typeof s=="string"){let r=o.find(i=>i.config.type===s);r?n.push(r):console.warn(`Couldn't find ${s} provider. Please make sure you are passing the correct name.`)}else n.push(s)}),n}return o}a(Ne,"matchAndGenerateProviders");function wo(t,e){return Ne(t,e).map(s=>s.config.type)}a(wo,"configWalletsToWalletName");var Pr=rt("div",{display:"grid",gap:".5rem",gridTemplateColumns:" repeat(2, minmax(0, 1fr))",alignContent:"baseline",padding:"0.5rem",overflowY:"auto"}),Ir=rt("div",{display:"flex",justifyContent:"center",width:"100%",position:"absolute",top:"50%"}),Nr=rt("div",{paddingBottom:"$16"}),Mr=Object.values(Ar);function yo({supportedWallets:t,multiWallets:e,config:o}){let{navigateBackFrom:n}=U(),{state:s,disconnect:r,getWalletInfo:i,connect:l}=Rr(),u=Bt(s,i,wo(t,{walletConnectProjectId:o?.walletConnectProjectId})||Mr),c=yr(),f=Er()?u.filter(p=>p.showOnMobile):u;f=Mt(f);let[T,w]=br(""),h=O.use.toggleConnectWalletsButton(),S=k.use.loadingStatus(),C=a(async p=>{let m=s(p);try{if(T&&w(""),m.connected)await r(p);else{if(!e&&u.find(W=>W.state===Co.CONNECTED))return;await l(p)}}catch(W){w("Error: "+W?.message)}},"onSelectWallet"),A=a(()=>{let p=c.current?.filter(m=>m.state===Co.CONNECTING)||[];for(let m of p)r(m.type)},"disconnectConnectingWallets");return Wo(()=>(h(),()=>{A(),h()}),[]),Wo(()=>{c.current=u},[u]),J.createElement(Cr,{title:Br.t("Select Wallet")||"",textField:!1,onBack:n.bind(null,g.wallets)},J.createElement(J.Fragment,null,T&&J.createElement(Nr,null,J.createElement(wr,{type:"error",title:T})),S==="loading"&&J.createElement(Ir,{className:"loader"},J.createElement(xr,{size:24})),S==="failed"&&J.createElement(vr,null),J.createElement(Pr,null,S==="success"&&f.map((p,m)=>J.createElement(Wr,{...p,key:`${m}-${p.type}`,onClick:C})))))}a(yo,"WalletsPage");import Eo from"react";import{useManager as Fr}from"@rango-dev/queue-manager-react";import{SwapHistory as Or,useCopyToClipboard as Ur,SwapDetailsPlaceholder as Dr}from"@rango-dev/ui";import{cancelSwap as Lr,PendingSwapNetworkStatus as _r}from"@rango-dev/queue-manager-rango-preset";import{useWallets as qr}from"@rango-dev/wallets-core";import{getCurrentBlockchainOfOrNull as $r,getCurrentStep as Hr,getRelatedWalletOrNull as Gr}from"@rango-dev/queue-manager-rango-preset";function bo(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}a(bo,"timeSince");function Ao(t){return t.finishTime?`${bo(parseInt(t.finishTime))} ago`:`${bo(parseInt(t.creationTime))} ago`}a(Ao,"getSwapDate");import{useNavigate as Vr}from"react-router-dom";function Ro(){let t=O.use.selectedSwapRequestId(),{canSwitchNetworkTo:e,connect:o,getWalletInfo:n}=qr(),s=d.use.retry(),r=Vr(),{navigateBackFrom:i}=U(),[l,u]=Ur(2e3),{manager:c,state:f}=Fr(),w=Pe(c).find(({swap:b})=>b.requestId===t),h=a(()=>{let b=c?.get(w?.id);b&&Lr(b)},"onCancel"),S=w?.swap,C=!f.loadedFromPersistor;if(!S)return Eo.createElement(Dr,{requestId:t||"",loading:C,onBack:i.bind(null,g.swapDetails)});let A=Hr(S),p=A?$r(S,A):null,m=A?Gr(S,A):null,W=A?.networkStatus,B=Vt(S,A),x=Xe(A),v=Ao(S),I=jt(S),N=a(b=>!!n(b)?.mobileWallet,"isMobileWallet"),H=W===_r.WaitingForNetworkChange&&!!p&&!!m?.walletType&&(N(m.walletType)||e(m.walletType,p))?o.bind(null,m.walletType,p):void 0,D=Kt(S);return Eo.createElement(Or,{onBack:i.bind(null,g.swapDetails),pendingSwap:kt(S),onCopy:u,isCopied:l,onCancel:h,shortMessage:B.shortMessage,detailedMessage:B.detailedMessage,currentStepBlockchain:p||"",switchNetwork:H,type:x?"warning":S.extraMessageSeverity||void 0,date:v,...I&&{onRetry:()=>{s(S),setTimeout(()=>{r(g.home)},0)}},...D&&{lastConvertedTokenInFailedSwap:{blockchain:D.blockchain,outputAmount:D.outputAmount||"",symbol:D.symbol}}})}a(Ro,"SwapDetailsPage");var jr=a(t=>t.replace("/",""),"getAbsolutePath");function Bo(t){let{config:e}=t;return Kr([{path:g.home,element:K.createElement(ho,null)},{path:g.fromChain,element:K.createElement(ot,{type:"from",supportedChains:e?.from?.blockchains})},{path:g.toChain,element:K.createElement(ot,{type:"to",supportedChains:e?.to?.blockchains})},{path:g.fromToken,element:K.createElement(nt,{type:"from",supportedTokens:e?.from?.tokens})},{path:g.toToken,element:K.createElement(nt,{type:"to",supportedTokens:e?.to?.tokens})},{path:g.settings,element:K.createElement(ko,{singleTheme:e?.theme?.singleTheme,supportedSwappers:e?.liquiditySources})},{path:g.liquiditySources,element:K.createElement(To,{supportedSwappers:e?.liquiditySources})},{path:g.swaps,element:K.createElement(mo,null)},{path:g.swapDetails,element:K.createElement(Ro,null)},{path:g.wallets,element:K.createElement(yo,{supportedWallets:e?.wallets,multiWallets:typeof e?.multiWallets>"u"?!0:e.multiWallets,config:e})},{path:jr(g.confirmSwap),element:K.createElement(lo,{customDestinationEnabled:e?.customDestination})}])}a(Bo,"AppRoutes");function xo({config:t}){let e=Qr(),{connectedWallets:o,selectedWallets:n}=R(),{getWalletInfo:s}=Yr(),r=q(we(o,n,s).map(B=>B.image)),{blockchains:i,tokens:l}=k.use.meta(),u=d.use.setFromChain(),c=d.use.setFromToken(),f=d.use.setToChain(),T=d.use.setToToken(),w=d.use.setInputAmount(),h=E.use.setAffiliateRef(),S=E.use.setAffiliatePercent(),C=E.use.setAffiliateWallets(),A=It(o),p=O.use.connectWalletsButtonDisabled(),m=k.use.loadingStatus(),W=R(Yt);return Fe(()=>{if(m==="success"){let B=i.find(v=>v.name===t?.to?.blockchain),x=l.find(v=>V(v,t?.to?.token||null));f(B||null),T(x||null)}},[t?.to?.token,t?.to?.blockchain,m]),Fe(()=>{w(t?.amount?.toString()||"")},[t?.amount]),Fe(()=>{if(m==="success"){let B=i.find(v=>v.name===t?.from?.blockchain),x=l.find(v=>V(v,t?.from?.token||null));u(B||null),c(x||null)}},[t?.from?.token,t?.from?.blockchain,m]),Fe(()=>{h(t?.affiliate?.ref??null),S(t?.affiliate?.percent??null),C(t?.affiliate?.wallets??null)},[t?.affiliate?.ref,t?.affiliate?.percent,t?.affiliate?.wallets]),Me.createElement(Me.Fragment,null,Me.createElement(Xr,{loadingStatus:m,connectedWalletsImages:r,connectedWallets:o,totalBalance:A,fetchingBalance:W,onClick:()=>{p||e(g.wallets)}},Me.createElement(Bo,{config:t})))}a(xo,"Layout");import{globalCss as Jr}from"@rango-dev/ui";var vo=a(t=>Jr({"@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{createTheme as Po,generateRangeColors as j}from"@rango-dev/ui";import{useState as es,useEffect as Io,useLayoutEffect as ts}from"react";import{useEffect as zr,useRef as Zr}from"react";function st(t){let e=Zr();return zr(()=>{e.current=t},[t]),e.current}a(st,"usePrevious");function No({colors:t,fontFamily:e="Roboto",borderRadius:o=8,mode:n="auto"}){let s=E.use.theme(),r=k.use.fetchMeta(),i=E.use.setTheme(),l=t?.light,u=t?.dark,c=l?.neutral||"#fafafa",f=l?.background||"#fff",T=l?.foreground||"#000",w={...j("primary","dark",u?.primary),...j("error","dark",u?.error),...j("warning","dark",u?.warning),...j("success","dark",u?.success),...j("neutral","dark",u?.neutral),surface:u?.surface,background:u?.background,foreground:u?.foreground},h={surface:l?.surface||"#fff",...j("primary","light",l?.primary||"#5FA425"),...j("error","light",l?.error||"#FF0000"),...j("warning","light",l?.warning||"#F5A623"),...j("success","light",l?.success||"#0070F3"),...j("neutral","light",c),background:f,foreground:T},S=Po({colors:h,radii:{5:`${o}px`},shadows:{s:`0px 3px 5px 3px ${l?.neutral||"#f0f2f5"} ,0px 6px 10px 3px ${l?.neutral||"#f0f2f5"}, 0px 1px 18px 3px ${l?.neutral||"#f0f2f5"}`}}),C=Po({colors:{...h,...j("neutral","dark","#111111"),foreground:f,background:T,surface:"#000",...JSON.parse(JSON.stringify(w))},radii:{5:`${o}px`},shadows:{s:`0px 3px 5px 3px ${u?.neutral||"#222"}, 0px 6px 10px 3px ${u?.neutral||"#222"}, 0px 1px 18px 3px ${u?.neutral||"#222"}`}}),[A,p]=es("light");Io(()=>{(async()=>await r())();let B=a(x=>{x.matches?p("dark"):p("light")},"switchTheme");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&p("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",B),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",B)}},[]),Io(()=>{n!=="auto"&&i(n)},[n]);let m=st(e);return ts(()=>{let{classList:B}=document.body;m&&B.remove(`font_${m.replace(/ /g,"")}`),B.add(`font_${e.replace(/ /g,"")}`)},[e]),{activeTheme:a(()=>s==="auto"?A==="dark"?C:S:s==="dark"?C:S,"getActiveTheme")()}}a(No,"useTheme");import os,{useMemo as ns}from"react";import{Provider as rs}from"@rango-dev/queue-manager-react";import{makeQueueDefinition as ss,checkWaitingForNetworkChange as as}from"@rango-dev/queue-manager-rango-preset";import{useWallets as is}from"@rango-dev/wallets-core";import{convertEvmBlockchainMetaToEvmChainInfo as ls}from"@rango-dev/wallets-shared";import{isEvmBlockchain as us}from"rango-types";function cs(t){let{providers:e,getSigners:o,state:n,connect:s,canSwitchNetworkTo:r,getWalletInfo:i}=is(),l=ns(()=>ss({API_KEY:Se("API_KEY")}),[]),{blockchains:u}=k.use.meta(),f={blockchains:R.use.connectedWallets().map(m=>({accounts:[m],name:m.chain}))},T=a((m,W)=>{if(r(m,W))return s(m,W)},"switchNetwork"),w=a(m=>!!i(m).mobileWallet,"isMobileWallet"),h=u.filter(m=>m.enabled).reduce((m,W)=>(m[W.name]=W,m),{}),S=u.filter(us),C=a(m=>{let{supportedChains:W}=i(m);return ke(W)},"getSupportedChainNames"),A=e(),p={meta:{blockchains:h,evmBasedChains:S,evmNetworkChainInfo:ls(S),getSupportedChainNames:C},getSigners:o,wallets:f,providers:A,switchNetwork:T,canSwitchNetworkTo:r,connect:s,state:n,isMobileWallet:w};return os.createElement(rs,{queuesDefs:[l],context:p,onPersistedDataLoaded:m=>{as(m)},isPaused:!1},t.children)}a(cs,"QueueManager");var Mo=cs;import Oo from"react";import{Events as at,Provider as ps}from"@rango-dev/wallets-core";import{isEvmBlockchain as fs}from"rango-sdk";import{useEffect as ms}from"react";function Fo(t,e){let o=R.use.clearConnectedWallet(),n=Ne(void 0,e);return ms(()=>{o(),n=Ne(t,{walletConnectProjectId:e?.walletConnectProjectId})},[t]),{providers:n}}a(Fo,"useWalletProviders");import{createContext as ds,useRef as gs}from"react";var it=ds({onConnectWallet:()=>{}});function lt(t){let{blockchains:e}=k.use.meta(),{providers:o}=Fo(t.providers,t?.options),n=R.use.disconnectWallet(),s=R.use.connectWallet(),r=gs(),i=e.filter(fs).map(u=>u.name),l=a((u,c,f,T,w)=>{if(c===at.ACCOUNTS)if(f){let h=ke(w),S=xt(u,f,i,h);s(S)}else n(u);if(c===at.ACCOUNTS&&T.connected){let h=`${u}-${T.network}-${f}`;T.connected&&(r.current?r.current(h):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(c===at.NETWORK&&T.network){let h=`${u}-${T.network}`;r.current?r.current(h):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(u,c,f,T,w)},"onUpdateState");return Oo.createElement(it.Provider,{value:{onConnectWallet:u=>{r.current=u}}},Oo.createElement(ps,{allBlockChains:e,providers:o,onUpdateState:l,autoConnect:!0},t.children))}a(lt,"WidgetWallets");import{useEffect as Ss}from"react";import{useEvents as hs,MainEvents as Ts,StepEventType as Uo,StepExecutionEventStatus as ks,isApprovalTX as ws}from"@rango-dev/queue-manager-rango-preset";function Do(){let t=R.use.connectedWallets(),e=R.use.getWalletsDetails(),o=hs();return Ss(()=>(o.on(Ts.StepEvent,n=>{let{event:s,step:r}=n;if(s.type===Uo.TX_EXECUTION&&s.status===ks.TX_SENT&&!ws(r)||s.type===Uo.SUCCEEDED){let l=t.find(c=>c.chain===r?.fromBlockchain),u=r?.fromBlockchain!==r?.toBlockchain&&t.find(c=>c.chain===r?.toBlockchain);l&&e([l]),u&&e([u])}}),()=>o.all.clear()),[o,t.length]),null}a(Do,"WidgetEvents");var Rs=Ws("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function _o(t){let{config:e}=t;vo(e?.theme?.fontFamily||"Roboto");let{activeTheme:o}=No(e?.theme||{}),[n,s]=Lo(""),[r,i]=Lo(),l=O.use.currentPage(),u=bs(it);return Es(()=>{e?.apiKey&&Ct({API_KEY:e?.apiKey})},[e]),As(()=>{u.onConnectWallet(s)},[]),z.createElement(ys,{language:e?.language},z.createElement(Rs,{id:"swap-container",className:o},z.createElement(Mo,null,z.createElement(Do,null),z.createElement(Cs,{fixedHeight:l!==g.home},z.createElement(Zt,{lastConnectedWallet:n,disconnectedWallet:r,clearDisconnectedWallet:()=>{i(void 0)}},z.createElement(xo,{config:e}))))))}a(_o,"Main");function Bs(t){return t.config?.externalWallets?z.createElement(_o,{...t}):z.createElement(lt,{providers:t.config?.wallets,options:{walletConnectProjectId:t.config?.walletConnectProjectId}},z.createElement(_o,{...t}))}a(Bs,"Widget");import{useWallets as Vp}from"@rango-dev/wallets-core";import{useEvents as Xp,MainEvents as Yp,RouteEventType as rf,StepEventType as df,StepExecutionEventStatus as gf,StepExecutionBlockedEventStatus as Sf}from"@rango-dev/queue-manager-rango-preset";export{Yp as MainEvents,rf as RouteEventType,df as StepEventType,Sf as StepExecutionBlockedEventStatus,gf as StepExecutionEventStatus,Bs as Widget,lt as WidgetWallets,Vp as useWallets,Xp as useWidgetEvents};
1
+ var wn=Object.defineProperty;var i=(t,e)=>wn(t,"name",{value:e,configurable:!0});import{SwapContainer as Ii,styled as Ni,I18nManager as Ri}from"@rango-dev/ui";import oe,{useContext as Mi,useEffect as Fi,useMemo as Oi,useState as gn}from"react";import Le,{Fragment as er}from"react";import{MemoryRouter as tr,useInRouterContext as or}from"react-router";import{useQueueManager as nr}from"@rango-dev/queue-manager-rango-preset";import{useEffect as rt,useRef as st}from"react";import{createSearchParams as Yn,useLocation as Jn,useSearchParams as Zn}from"react-router-dom";import{create as zn}from"zustand";import re from"bignumber.js";import kn from"bignumber.js";var D=new kn(0);import ji from"bignumber.js";function H(t){return Array.from(new Set(t))}i(H,"removeDuplicateFrom");function Ke(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(Ke,"areEqual");function Bt(t,e){let o;return n;function n(...s){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...s)},e)}}i(Bt,"debounce");import{BigNumber as Et}from"bignumber.js";var Pt=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 Et(t),s=1,r=1e3;for(let a=0;a<60;a++)if(new Et(n.toFixed(a,s)).eq(n)){r=a;break}if(n.gte(1e4))return n.toFormat(0,s);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,1))),s);if(n.gte(1))return n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,2))),s);if(n.gte(.01))return n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,4))),s);for(let a=e||4;a<17;a++)if(n.gte(Math.pow(10,-a)))return n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,a))),s);return n.isEqualTo(0)?"0":n.toFormat(Math.min(r,Math.min(o||100,Math.max(e||0,8))),s)},"numberToString");var It=i(t=>t?.result?.swaps?.reduce((e,o)=>e+o.estimatedTimeInSeconds,0)||0,"totalArrivalTime");var We=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function je(t,e,o){return o&&t.find(n=>{let s=e?.split("--");return s?.length===1?n.symbol===s[0]&&n.address===null&&n.blockchain===o.name:n.symbol===s?.[0]&&n.address===s?.[1]&&n.blockchain===o.name})||null}i(je,"searchParamsToToken");function Nt(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i(Nt,"getBestRouteToTokenUsdPrice");function Qe(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}i(Qe,"isNumberOfSwapsChanged");function Xe(t,e){let o=t.result?.swaps.map(s=>s.swapperId)||[],n=e.result?.swaps.map(s=>s.swapperId)||[];return!Ke(o,n)}i(Xe,"isRouteSwappersUpdated");function Ye(t,e){let o=t.result?.swaps.map(s=>s.to.symbol)||[],n=e.result?.swaps.map(s=>s.to.symbol)||[];return!Ke(o,n)}i(Ye,"isRouteInternalCoinsUpdated");function Rt(t,e){return Qe(t,e)||Xe(t,e)||Ye(t,e)}i(Rt,"isRouteChanged");function Mt(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(Mt,"getRequiredBalanceOfWallet");function Je(t){if(t.store==="bestRoute"){let{prevState:e,currentState:o}=t;return!!o.fromToken&&!!o.toToken&&(e.fromChain?.name!==o.fromChain?.name||e.toChain?.name!==o.toChain?.name||e.fromToken?.symbol!==o.fromToken?.symbol||e.toToken?.symbol!==o.toToken?.symbol||e.fromToken?.blockchain!==e.fromToken?.blockchain||e.toToken?.blockchain!==o.toToken?.blockchain||e.fromToken?.address!==o.fromToken?.address||e.toToken?.address!==o.toToken?.address||e.inputAmount!==o.inputAmount)}else if(t.store==="settings"){let{prevState:e,currentState:o}=t;return e.slippage!==o.slippage||e.customSlippage!==o.customSlippage||e.disabledLiquiditySources?.length!==o.disabledLiquiditySources?.length||e.infiniteApprove||o.infiniteApprove}return!1}i(Je,"isRouteParametersChanged");function Ft(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(Ft,"getFormatedBestRoute");function Ot(t){let e=t.steps.map(o=>({...o,feeInUsd:W(o.feeInUsd,4,4),outputAmount:W(o.outputAmount,6,6),expectedOutputAmountHumanReadable:W(o.expectedOutputAmountHumanReadable,6,6)}));return{...t,inputAmount:W(t.inputAmount,6,6),steps:e}}i(Ot,"getFormatedPendingSwap");var Ut=i((t,e)=>t?"loading":e?"failed":"success","getBestRouteStatus");var bn=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"),Y=bn;import{subscribeWithSelector as Kn}from"zustand/middleware";import{RangoClient as An}from"rango-sdk";var Wn="c6381a79-2817-4602-83bf-6a641a409e32",Ze={API_KEY:Wn};function Ae(t){return Ze[t]}i(Ae,"getConfig");function Dt(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Ze=e,Ze}i(Dt,"initConfig");var ve,ae=i(()=>ve||(ve=new An(Ae("API_KEY")),ve),"httpService");import{create as xn}from"zustand";import{persist as Bn,subscribeWithSelector as En}from"zustand/middleware";var Lt=[.5,1,3,5,8,13,20],_t=1,qt=5,$t=100,Vt=0;import{create as vn}from"zustand";var C=Y(vn()(t=>({meta:{blockchains:[],popularTokens:[],swappers:[],tokens:[]},loadingStatus:"loading",fetchMeta:async()=>{try{let e=await ae().getAllMetadata(),o=H(e.tokens.map(s=>s.blockchain)),n=e.blockchains.filter(s=>s.enabled&&o.includes(s.name));e.blockchains=n.sort((s,r)=>s.sort-r.sort),t({meta:e,loadingStatus:"success"})}catch{t({loadingStatus:"failed"})}}})));var v=Y(xn()(Bn(En(t=>({slippage:_t,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:()=>t(e=>{let{swappers:o}=C.getState().meta,n=H(o.map(s=>s.swapperGroup));return n.length===e.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:n}}),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"})));import q from"bignumber.js";import{i18n as Z}from"@lingui/core";import{getCosmosExperimentalChainInfo as Pn,isEvmAddress as In,KEPLR_COMPATIBLE_WALLETS as Nn,detectInstallLink as Rn,WalletTypes as Mn,Networks as Ht}from"@rango-dev/wallets-shared";import{WalletState as J}from"@rango-dev/ui";import{isCosmosBlockchain as Fn}from"rango-types";import{readAccountAddress as On}from"@rango-dev/wallets-core";import xe from"bignumber.js";function Un(t){switch(!0){case t.connected:return J.CONNECTED;case t.connecting:return J.CONNECTING;case!t.installed:return J.NOT_INSTALLED;default:return J.DISCONNECTED}}i(Un,"getStateWallet");var Dn=[Mn.LEAP];function Gt(t,e,o){return o.filter(n=>!Dn.includes(n)).map(n=>{let{name:s,img:r,installLink:a,showOnMobile:u}=e(n),l=Un(t(n));return{name:s,image:r,installLink:Rn(a),state:l,type:n,showOnMobile:!(typeof u>"u")}})}i(Gt,"getlistWallet");function Be(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Be,"walletAndSupportedChainsNames");function zt(t,e,o,n){let s=[];function r(u,l){if(!!!s.find(f=>f.chain===u)){let f={address:l,chain:u,walletType:t};s.push(f)}}i(r,"addAccount");let a=n||[];return e.forEach(u=>{let{address:l,network:c}=On(u),f=a.length>0,T=a.includes(c),y=c===Ht.Unknown;if(f&&!T&&!y)return;let S=c===Ht.Unknown&&In(l);if(y&&!S)return;o.includes(c)||S?a.filter(m=>o.includes(m)).forEach(m=>{r(m,l.toLowerCase())}):r(c,l)}),s}i(zt,"prepareAccountsForWalletStore");function pe(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,s=o.to.blockchain;e.includes(n)||e.push(n),e.includes(s)||e.push(s),o.internalSwaps&&Array.isArray(o.internalSwaps)&&o.internalSwaps.forEach(r=>{let a=r.from.blockchain,u=r.to.blockchain;e.includes(a)||e.push(a),e.includes(u)||e.push(u)})}),e}i(pe,"getRequiredChains");function Ee(t,e,o,n){return t.map(r=>({address:r.address,walletType:r.walletType,chain:r.chain,image:o(r.walletType).img,name:o(r.walletType).name,selected:n===r.chain?!1:!!e.find(a=>a.chain===r.chain&&a.walletType===r.walletType)}))}i(Ee,"getSelectableWallets");function ce(t,e,o,n){if(t.length===0)return null;let s=t.filter(r=>r.chain===e);return s.length===0?null:s.map(r=>r.balances?.find(a=>n!==null&&a.address===n||n===null&&a.address===n&&a.symbol===o)||null).filter(r=>r!==null).sort((r,a)=>parseFloat(a?.amount||"0")-parseFloat(r?.amount||"1")).find(()=>!0)||null}i(ce,"getBalanceFromWallet");function Pe(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Pe,"isAccountAndWalletMatched");function Kt(t,e,o){let{address:n,blockChain:s,explorerUrl:r,balances:a=[]}=e;return{address:n,chain:s,loading:!1,error:!1,explorerUrl:r,walletType:t.walletType,balances:a?.map(u=>({chain:s,symbol:u.asset.symbol,ticker:u.asset.symbol,address:u.asset.address||null,rawAmount:u.amount.amount,decimal:u.amount.decimals,amount:new xe(u.amount.amount).shiftedBy(-u.amount.decimals).toFixed(),logo:"",usdPrice:_n(s,u.asset.symbol,u.asset.address,o)||null}))||[]}}i(Kt,"makeBalanceFor");function jt(t){return{...t,loading:!1,error:!0}}i(jt,"resetConnectedWalletState");var Qt=i(t=>{let e=new Set,n=t?.reduce((r,a)=>r.findIndex(u=>u.address===a.address&&u.chain===a.chain)===-1?[...r,a]:r,[])?.map(r=>{let a={name:r.chain,accounts:[]};return e.has(r.address)||e.add(r.address),e.forEach(u=>{r.address===u&&a.accounts.push(r)}),a}),s=W(n?.flatMap(r=>r.accounts)?.flatMap(r=>r?.balances)?.map(r=>new xe(r?.amount||D).multipliedBy(r?.usdPrice||0))?.reduce((r,a)=>r.plus(a),D)||D).toString();return Ln(s)},"calculateWalletUsdValue");function Ln(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(Ln,"numberWithThousandSeperator");var Ie=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"),_n=i((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice"),Xt=i((t,e)=>{let o=Pn(Object.entries(t).map(([,n])=>n).filter(Fn));return o&&!!o[e]},"isExperimentalChain"),et=i(t=>{let e=new Set(t.map(o=>o.walletType));return Nn.filter(o=>e.has(o))},"getKeplrCompatibleConnectedWallets");function Ne(t,e){return t.map(({balance:o,...n})=>{let s=W(new xe(ce(e,n.blockchain,n.symbol,n.address)?.amount||D)),r="";return n.usdPrice&&(r=W(new xe(ce(e,n.blockchain,n.symbol,n.address)?.amount||D).multipliedBy(n.usdPrice))),{...n,...s!=="0"&&{balance:{amount:s,usdValue:r}}}})}i(Ne,"getTokensWithBalance");function fe(t,e,o,n){if(t?.name===n[0]?.name)return n;let r=e.filter(a=>a.blockchain===t?.name);return Ie(Ne(r,o))}i(fe,"getSortedTokens");function j(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}i(j,"tokensAreEqual");function tt(t,e){let o,n=t[0],s=t[1];return t.length===1?o=n:j(n,e)?o=s:o=n,o}i(tt,"getDefaultToken");function Yt(t){return t.sort((e,o)=>+(o.state===J.CONNECTED)-+(e.state===J.CONNECTED)||+(o.state===J.DISCONNECTED||o.state===J.CONNECTING)-+(e.state===J.DISCONNECTED||e.state===J.CONNECTING))}i(Yt,"sortWalletsBasedOnState");import{PendingSwapNetworkStatus as Re}from"@rango-dev/queue-manager-rango-preset";function Me(t,e){return!t||!e||t.lte(D)||e.lte(D)?0:e.div(t).minus(1).multipliedBy(100)}i(Me,"getOutputRatio");function Fe(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new q(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new q(1e3)))??!1}i(Fe,"outputRatioHasWarning");function Oe(t){return(t?.result?.swaps||[]).filter(e=>{let o=e.fromAmountMinValue?new q(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new q(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(Oe,"hasLimitError");function Zt(t){if(!t)return{swap:null,fromAmountRangeError:"",recommendation:""};let e=(t?.result?.swaps||[]).filter(u=>{let l=u.fromAmountMinValue?new q(u.fromAmountMinValue):null,c=u.fromAmountMaxValue?new q(u.fromAmountMaxValue):null;return u.fromAmountRestrictionType==="EXCLUSIVE"?l?.gte(u.fromAmount)||c?.lte(u.fromAmount):l?.gt(u.fromAmount)||c?.lt(u.fromAmount)})[0];if(!e)return{swap:null,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new q(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new q(e.fromAmountMaxValue):null,s=e.fromAmountRestrictionType==="EXCLUSIVE",r="",a="";return!s&&o&&o.gt(e.fromAmount)?(r=`Required: >= ${W(o)} ${e.from.symbol}`,a="Increase your swap amount"):s&&o&&o.gte(e.fromAmount)&&(r=`Required: > ${W(o)} ${e.from.symbol}`,a="Increase your swap amount"),!s&&n&&n.lt(e.fromAmount)?(r=`Required: <= ${W(n)} ${e.from.symbol}`,a="Decrease your swap amount"):s&&n&&n.lte(e.fromAmount)&&(r=`Required: < ${W(n)} ${e.from.symbol}`,a="Decrease your swap amount"),{swap:e,fromAmountRangeError:r,recommendation:a}}i(Zt,"LimitErrorMessage");function eo(t,e,o,n,s,r,a,u,l){return t!=="success"?{title:`${Z.t("Connect Wallet")}`,disabled:!0}:e.length==0?{title:`${Z.t("Connect Wallet")}`,disabled:!1}:o?{title:`${Z.t("Finding Best Route...")}`,disabled:!0}:!l||l==="0"?{title:`${Z.t("Enter an amount")}`,disabled:!0}:!n||!n.result?{title:`${Z.t("Swap")}`,disabled:!0}:s?{title:`${Z.t("Limit Error")}`,disabled:!0}:r?{title:`${Z.t("Price impact is too high!")}`,disabled:!0}:a?{title:`${Z.t("USD price is unknown, price impact might be high!")}`,disabled:!1,hasWarning:!0}:u?{title:`${Z.t("The route goes through Ethereum. Continue?")}`,disabled:!1,hasWarning:!0}:{title:`${Z.t("Swap")}`,disabled:!1}}i(eo,"getSwapButtonState");function to(t,e,o,n){return!((!o||!n||o.lte(D)||n.lte(D))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}i(to,"canComputePriceImpact");function Jt(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,s=o.to.blockchain,r=e[e.length-1];n!=r&&e.push(n),r=e[e.length-1],s!=r&&e.push(s)}),e}i(Jt,"requiredWallets");var qn=i((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice");function $n(t,e){let o=D;for(let n=0;n<t.fee.length;n++){let s=t.fee[n];if(s.expenseType==="DECREASE_FROM_OUTPUT")continue;let r=qn(s.asset.blockchain,s.asset.symbol,s.asset.address,e);o=o.plus(new q(s.amount).multipliedBy(r||0))}return o}i($n,"getUsdFeeOfStep");function Ue(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus($n(n,e)),D)||null}i(Ue,"getTotalFeeInUsd");function oo(t){return t?!t.lt(new q(30)):!1}i(oo,"hasHighFee");function no(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(no,"getMinRequiredSlippage");function ro(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(ro,"hasProperSlippage");function De(t,e,o,n,s,r,a,u,l,c,f,T){let y=s.reduce((m,p)=>(m[p.chain]=p.address,m),{}),h=[];n.forEach(m=>{let p=h.find(A=>A.blockchain===m.chain);p?p.addresses.push(m.address):h.push({blockchain:m.chain,addresses:[m.address]})});let S=!!f,w=H((f?.result?.swaps||[]).reduce((m,p)=>(m.push(p.from.blockchain,p.to.blockchain),p.internalSwaps&&Array.isArray(p.internalSwaps)&&p.internalSwaps.map(A=>{m.push(A.from.blockchain,A.to.blockchain)}),m),[]));return{amount:o.toString(),affiliateRef:u??void 0,affiliatePercent:l??void 0,affiliateWallets:c??void 0,checkPrerequisites:S,from:{address:t.address,blockchain:t.blockchain,symbol:t.symbol},to:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},connectedWallets:h,destination:T||void 0,selectedWallets:y,swapperGroups:r,swappersGroupsExclude:!0,slippage:a.toString(),...S&&{blockchains:w}}}i(De,"createBestRouteRequestBody");function ot(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(ot,"getWalletsForNewSwap");function me(t){return t?.result?.outputAmount||null}i(me,"getRouteOutputAmount");function ge(t,e){return!t||!e?null:new q(e).div(new q(t)).minus(1).multipliedBy(100)}i(ge,"getPercentageChange");function so(t,e){let o=me(t),n=me(e);if(!o||!n)return!1;let s=ge(o,n);return s?s.toNumber()<=-1:!0}i(so,"isOutputAmountChangedALot");function io(t,e){let o=t.validationStatus,n=pe(t);return e.sort((r,a)=>n.indexOf(r.chain)-n.indexOf(a.chain)).flatMap(r=>Mt(r,o)||[]).filter(r=>!r.ok).map(r=>{let a=r.asset.symbol,u=W(new q(r.currentAmount.amount).shiftedBy(-r.currentAmount.decimals),8),l=W(new q(r.requiredAmount.amount).shiftedBy(-r.requiredAmount.decimals),8),c="";return r.reason==="FEE"&&(c=" for network fee"),r.reason==="INPUT_ASSET"&&(c=" for swap"),r.reason==="FEE_AND_INPUT_ASSET"&&(c=" for input and network fee"),`Needs \u2248 ${l} ${a}${c}, but you have ${u} ${a} in your ${r.asset.blockchain} wallet.`})}i(io,"getBalanceWarnings");function ao(t,e){return(t?new q(t):D).multipliedBy(e||0)}i(ao,"calcOutputUsdValue");function nt(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Re.NetworkChanged}i(nt,"isNetworkStatusInWarningState");function lo(t,e){let o="bellow button or",n=t.extraMessage,s=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),nt(e))switch(n=t.networkStatusExtraMessage||"",s=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case Re.WaitingForConnectingWallet:n=n||"Waiting for connecting wallet";break;case Re.WaitingForQueue:n=n||"Waiting for other running tasks to be finished";break;case Re.WaitingForNetworkChange:n=n||"Waiting for changing wallet network";break}s=s||"",n=n||"";let a=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:s,long:a}}}i(lo,"getSwapMessages");function uo(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(uo,"getLastConvertedTokenInFailedSwap");function co(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}i(co,"shouldRetrySwap");function po(t,e){return(C.getState().meta.blockchains.find(s=>s.name===t)?.addressPatterns||[]).filter(s=>new RegExp(s).test(e)).length>0}i(po,"isValidCustomDestination");function mo(t,e,o,n,s){return t||!e&&!Jt(n).every(r=>s.map(a=>a.chain).includes(r))||!!e&&!o||!!e&&!!o&&!Jt(n).filter(r=>r!==e).every(r=>s.map(a=>a.chain).includes(r))}i(mo,"confirmSwapDisabled");import{create as Vn}from"zustand";import{subscribeWithSelector as Hn}from"zustand/middleware";import{shallow as Gn}from"zustand/shallow";var B=Y(Vn()(Hn((t,e)=>({connectedWallets:[],selectedWallets:[],customDestination:"",connectWallet:o=>{let n=e().getWalletsDetails;t(s=>({connectedWallets:s.connectedWallets.filter(r=>r.walletType!==o[0].walletType).concat(o.map(r=>({balances:[],address:r.address,chain:r.chain,loading:!0,walletType:r.walletType,error:!1,explorerUrl:null})))})),n(o)},disconnectWallet:o=>{t(n=>({connectedWallets:n.connectedWallets.filter(s=>s.walletType!==o),selectedWallets:n.selectedWallets.filter(s=>s.walletType!=o)}))},initSelectedWallets:()=>t(o=>{let n=pe(d.getState().bestRoute),s=o.connectedWallets,r=[];return n.forEach(a=>{if(!!!o.selectedWallets.find(l=>l.chain===a)){let l=s.find(c=>c.chain===a);l&&r.push({address:l.address,chain:l.chain,walletType:l.walletType})}}),{selectedWallets:o.selectedWallets.concat(r)}}),setSelectedWallet:o=>t(n=>({selectedWallets:n.selectedWallets.filter(s=>s.chain!==o.chain).concat({chain:o.chain,address:o.address,walletType:o.walletType})})),setCustomDestination:o=>t(()=>({customDestination:o})),clearConnectedWallet:()=>t(()=>({connectedWallets:[],selectedWallets:[]})),getWalletsDetails:async(o,n=!0)=>{let s=e().getWalletsDetails,{tokens:r}=C.getState().meta;t(a=>({connectedWallets:a.connectedWallets.map(u=>o.find(l=>Pe(l,u))?{...u,loading:!0}:u)}));try{let a=o.map(({address:c,chain:f})=>({address:c,blockchain:f})),l=(await ae().getWalletsDetails(a)).wallets;if(l)t(c=>({connectedWallets:c.connectedWallets.map(f=>{let T=o.find(h=>Pe(h,f)),y=l.find(h=>h.address===f.address&&h.blockChain===f.chain);return y?.failed&&T&&n&&s([T],!1),T&&y?Kt(T,y,r):f})}));else throw new Error("Wallet not found")}catch{t(u=>({connectedWallets:u.connectedWallets.map(l=>o.find(c=>Pe(c,l))?jt(l):l)}))}}}))));B.subscribe(t=>t.connectedWallets,t=>{d.setState(({sourceTokens:e,destinationTokens:o})=>{let n=Ne(e,t),s=Ne(o,t);return{sourceTokens:Ie(n),destinationTokens:Ie(s)}})},{equalityFn:Gn});var fo=i(t=>!!t.connectedWallets.find(e=>e.loading),"fetchingBalanceSelector");var he=i((t,e)=>t?.usdPrice?new re(e||D).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),d=Y(zn()(Kn(t=>({fromChain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new re(0),outputUsdValue:new re(0),toChain:null,toToken:null,bestRoute:null,loading:!1,error:"",sourceTokens:[],destinationTokens:[],setBestRoute:e=>t(o=>{let n=null,s=D;return We(o.inputAmount)?(e&&(n=e.result?.outputAmount?new re(e.result?.outputAmount):null,s=ao(e.result?.outputAmount,Nt(e)||o.toToken?.usdPrice)),{bestRoute:e,...!!e&&{outputAmount:n,outputUsdValue:s}}):{}}),resetRoute:()=>t(()=>({loading:!0,error:"",bestRoute:null,outputAmount:null,outputUsdValue:new re(0)})),setFromChain:(e,o)=>{t(n=>{if(n.fromChain?.name===e?.name)return{};let s=C.getState().meta.tokens,r=B.getState().connectedWallets,a=fe(e,s,r,n.destinationTokens),u=tt(a,n.toToken);return{fromChain:e,sourceTokens:a,...o&&{fromToken:u},...!!n.inputAmount&&{inputUsdValue:he(u,n.inputAmount)}}})},setFromToken:e=>t(o=>({fromToken:e,...!!o.inputAmount&&{inputUsdValue:he(e,o.inputAmount)}})),setToChain:(e,o)=>{t(n=>{if(n.toChain?.name===e?.name)return{};let s=C.getState().meta.tokens,r=B.getState().connectedWallets,a=fe(e,s,r,n.destinationTokens);return{toChain:e,destinationTokens:a,...o&&{toToken:tt(a,n.fromToken)}}})},setToToken:e=>t(()=>({toToken:e})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new re(0),outputUsdValue:new re(0),bestRoute:null,error:""},...!!o.fromToken&&{inputUsdValue:he(o.fromToken,e)}}))},retry:e=>{let{tokens:o,blockchains:n}=C.getState().meta,s=B.getState().connectedWallets,r=e.status==="failed"?e.steps.findIndex(w=>w.status==="failed"):null;if(r===null||r<0)return;let a=e.steps[0],u=e.steps[e.steps.length-1],l=n.find(w=>w.name===a.fromBlockchain)||null,c=n.find(w=>w.name===u.toBlockchain)||null,f=o.find(w=>j(w,{blockchain:a.fromBlockchain,symbol:a.fromSymbol,address:a.fromSymbolAddress})),T=o.find(w=>j(w,{blockchain:u.toBlockchain,symbol:u.toSymbol,address:u.toSymbolAddress})),y=fe(l,o,s,[]),h=fe(c,o,s,[]),S=e.inputAmount;t({fromChain:l,fromToken:f,inputAmount:S,outputAmount:null,inputUsdValue:he(f||null,S),outputUsdValue:new re(0),toChain:c,toToken:T,bestRoute:null,loading:!1,error:"",sourceTokens:y,destinationTokens:h})},switchFromAndTo:()=>t(e=>({fromChain:e.toChain,fromToken:e.toToken,toChain:e.fromChain,toToken:e.fromToken,sourceTokens:e.destinationTokens,destinationTokens:e.sourceTokens,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:he(e.toToken,e.outputAmount?.toString()||"")}))})))),jn=i((t,e)=>{let o=null,n=i(()=>{let{fromToken:a,toToken:u,inputAmount:l,resetRoute:c}=t.getState(),{slippage:f,customSlippage:T,disabledLiquiditySources:y,affiliateRef:h,affiliatePercent:S,affiliateWallets:w}=e.getState();if(!a||!u||!We(l))return;o?.abort(),o=new AbortController;let m=De(a,u,l,[],[],y,T||f,h,S,w);t.getState().loading||c(),ae().getBestRoute(m,{signal:o.signal}).then(p=>{let{setBestRoute:A}=t.getState();A(p),t.setState({loading:!1}),o=null}).catch(p=>{p.code!=="ERR_CANCELED"&&t.setState({error:p.message,loading:!1})})},"fetchBestRoute"),s=Bt(n,600),r=i(()=>{let{fromToken:a,toToken:u,inputAmount:l,inputUsdValue:c,resetRoute:f}=d.getState();if(!We(l)||c?.eq(0))return t.setState({loading:!1});if(j(a,u))return t.setState({loading:!1,bestRoute:null,outputAmount:new re(l),outputUsdValue:c});t.getState().loading||f(),s()},"bestRouteParamsListener");return d.subscribe(a=>({fromChain:a.fromChain,fromToken:a.fromToken,toChain:a.toChain,toToken:a.toToken,inputAmount:a.inputAmount}),r,{equalityFn:(a,u)=>!Je({store:"bestRoute",prevState:a,currentState:u})}),v.subscribe(a=>({slippage:a.slippage,customSlippage:a.customSlippage,disabledLiquiditySources:a.disabledLiquiditySources,infiniteApprove:a.infiniteApprove}),r,{equalityFn:(a,u)=>!Je({store:"settings",prevState:a,currentState:u})}),{fetchBestRoute:n}},"bestRoute"),{fetchBestRoute:go}=jn(d,v);var g={home:"/",fromChain:"from-chain",fromToken:"from-token",toChain:"to-chain",toToken:"to-token",settings:"settings",liquiditySources:"/settings/liquidity-sources",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:"swaps/:requestId"};import{create as Qn}from"zustand";var L=Y(Qn()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",toggleConnectWalletsButton:()=>t(e=>({connectWalletsButtonDisabled:!e.connectWalletsButtonDisabled})),setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function ho(){let t=st(!0),[e,o]=Zn(),n=Jn(),s=st(n.search),r=st({}),a=d.use.fromChain(),u=d.use.toChain(),l=d.use.fromToken(),c=d.use.toToken(),f=d.use.setFromChain(),T=d.use.setFromToken(),y=d.use.setToChain(),h=d.use.setToToken(),S=d.use.inputAmount(),w=d.use.setInputAmount(),k=C.use.loadingStatus(),{blockchains:m,tokens:p}=C.use.meta(),A=L.use.setSelectedSwap();return rt(()=>{let E={};Yn(s.current).forEach((I,M)=>{E[M]=I}),r.current=E;let P=n.pathname.split(g.swaps+"/")[1]||null;P&&A(P)},[]),rt(()=>{if(!t.current){let E="",P="",I="",M="",O="";if(k!=="success")E=r.current["fromChain"],P=r.current["fromToken"],I=r.current["toChain"],M=r.current["toToken"],O=r.current["fromAmount"]||S;else{if(n.state==="redirect")return;E=a?.name||"",P=(l?.symbol||"")+(l?.address?`--${l?.address}`:""),I=u?.name||"",M=(c?.symbol||"")+(c?.address?`--${c?.address}`:""),O=S}o({...E&&{["fromChain"]:E},...P&&{["fromToken"]:P},...I&&{["toChain"]:I},...M&&{["toToken"]:M},...O&&{["fromAmount"]:O.toString()}},{replace:!0})}t.current=!1},[n.pathname,S,a,l,u,c]),rt(()=>{if(k==="success"){let E=e.get("fromChain"),P=e.get("fromToken"),I=e.get("toChain"),M=e.get("toToken"),O=e.get("fromAmount"),z=m.find(N=>N.name===E),ne=je(p,P,z||null),$=m.find(N=>N.name===I),b=je(p,M,$||null);z&&(f(z),ne&&T(ne)),$&&(y($),b&&h(b)),O&&w(O)}},[k]),null}i(ho,"UpdateUrl");import{useWallets as rr}from"@rango-dev/wallets-core";import{isEvmBlockchain as sr}from"rango-types";function So({children:t,...e}){let o=or(),n=o?er:tr,{blockchains:s}=C.use.meta(),{canSwitchNetworkTo:r}=rr(),a=s.filter(sr);return nr({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:a,canSwitchNetworkTo:r}),Le.createElement(Le.Fragment,null,Le.createElement(n,null,t),o&&Le.createElement(ho,null))}i(So,"AppRouter");import{Button as Xs,AddWalletIcon as Ys,Typography as Js,styled as wt,Spinner as Zs,Image as ei}from"@rango-dev/ui";import G,{useEffect as Ge}from"react";import{useNavigate as ti}from"react-router-dom";import{useWallets as oi}from"@rango-dev/wallets-core";import Q from"react";import{useRoutes as js}from"react-router-dom";import V,{useEffect as Wr,useState as Eo}from"react";import{useNavigate as Ar}from"react-router-dom";import{useWallets as vr}from"@rango-dev/wallets-core";import{i18n as $e}from"@lingui/core";import{useInRouterContext as ir,useNavigate as ar}from"react-router-dom";function _(){let t=ir(),e=ar();return g,{navigateBackFrom:i(n=>{if(n===g.swapDetails)return e("/"+g.swaps,{replace:!0});!t||window.history.state&&window.history.state.idx>0?e(-1):[g.fromChain,g.fromToken,g.toChain,g.toToken,g.settings,g.wallets,g.swaps,g.confirmSwap].includes(n)?e(g.home,{replace:!0}):n===g.liquiditySources&&e("/"+g.settings,{replace:!0})},"navigateBackFrom")}}i(_,"useNavigateBack");import F from"react";import{Button as To,InfoCircleIcon as lr,styled as _e,Typography as it,Divider as yo,Image as Co}from"@rango-dev/ui";import{i18n as wo}from"@lingui/core";var ur=_e("div",{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"}),cr=_e("div",{boxSizing:"border-box",borderRadius:"$5",padding:"$8 $16 $16 $16",variants:{type:{filled:{backgroundColor:"$neutral100"},outlined:{border:"1px solid $neutral100"}}},defaultVariants:{type:"filled"},".head":{display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:"32px",".usd-value":{paddingLeft:"$8"}},".form":{display:"flex",width:"100%",padding:"$2 0",".selectors":{width:"35%","._text":{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},".amount":{width:"30%"}}}),ko=_e("span",{width:"24px",height:"24px",backgroundColor:"$neutral100",borderRadius:"99999px"}),pr=_e("div",{windth:"100%",height:"$48",borderRadius:"$5",backgroundColor:"$surface",border:"1px solid transparent",position:"relative",display:"flex",alignItems:"center",paddingLeft:"$8",paddingRight:"$8"});function at(t){let{chain:e,token:o,loadingStatus:n,percentageChange:s}=t,r=F.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"}},n==="failed"&&F.createElement(lr,{color:"error",size:24}));return F.createElement(ur,null,F.createElement(cr,{type:"outlined"},F.createElement("div",{className:"head"},F.createElement(it,{variant:"body2",color:"neutral800"},t.label),F.createElement("div",null,s,t.usdValue&&F.createElement(it,{variant:"caption",color:"neutral600",className:"usd-value"},`$${W(t.usdValue)}`))),F.createElement("div",{className:"form"},F.createElement(To,{className:"selectors",variant:"outlined",loading:n==="loading",prefix:n==="success"&&e?F.createElement(Co,{src:e.logo,size:24}):F.createElement(ko,null),suffix:r,align:"start",size:"large"},n==="success"&&e?e.displayName:wo.t("Chain")),F.createElement(yo,{size:12,direction:"horizontal"}),F.createElement(To,{className:"selectors",variant:"outlined",loading:n==="loading",prefix:n==="success"&&o?F.createElement(Co,{src:o.image,size:24}):F.createElement(ko,null),suffix:r,size:"large",align:"start"},n==="success"&&o?o.symbol:wo.t("Token")),F.createElement(yo,{size:12,direction:"horizontal"}),F.createElement("div",{className:"amount"},F.createElement(pr,null,F.createElement(it,{variant:"h4"},t.amount))))))}i(at,"TokenPreview");import{Divider as Po,ConfirmSwap as xr,LoadingFailedAlert as Br,HighSlippageWarning as Er}from"@rango-dev/ui";import ee from"react";import{styled as mr,ChevronRightIcon as dr,GasIcon as fr,Divider as gr}from"@rango-dev/ui";var hr=mr("div",{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"$8",borderRadius:"$5",backgroundColor:"$neutral100",color:"$neutral800",fontSize:"$12",".routes":{display:"flex",alignItems:"center"},".fee":{display:"flex",alignItems:"center"}});function Sr(t){if(!t.routes)return null;let e=t.routes.result?.swaps;return ee.createElement(hr,null,ee.createElement("div",{className:"routes"},e?.map((o,n)=>{let s=n+1==e.length;return ee.createElement(ee.Fragment,{key:n},ee.createElement("div",{className:"route"},o.from.symbol),ee.createElement(dr,{size:12}),s?ee.createElement("div",{className:"route"},o.to.symbol):null)})),t.totalFee?ee.createElement("div",{className:"fee"},ee.createElement(fr,{size:12}),ee.createElement(gr,{size:4,direction:"horizontal"}),"$",t.totalFee):null)}i(Sr,"RoutesOverview");var bo=Sr;import{useManager as Pr}from"@rango-dev/queue-manager-react";import{useEffect as yr,useRef as lt,useState as ut}from"react";import ct from"bignumber.js";import{calculatePendingSwap as Wo}from"@rango-dev/queue-manager-rango-preset";function vo(){let t=d.use.fromToken(),e=d.use.toToken(),o=d.use.inputAmount(),n=d.use.bestRoute(),s=d.use.setBestRoute(),r=d.use.inputUsdValue(),a=v.use.affiliateRef(),u=v.use.affiliatePercent(),l=v.use.affiliateWallets(),c=B.use.connectedWallets(),f=B.use.customDestination(),T=B.use.selectedWallets(),y=C.use.meta(),h=v.use.customSlippage(),S=v.use.slippage(),w=v.use.disabledLiquiditySources(),k=h||S,m=lt(!1),p=lt(null),A=lt(null),[E,P]=ut(!1),[I,M]=ut([]),[O,z]=ut([]);return yr(()=>()=>A.current?.abort(),[]),!t||!e||!o||!n?{loading:!1,warnings:[],errors:[],confirmSwap:null}:{loading:E,warnings:O,errors:I,confirmSwap:i(async()=>{if(m.current){let b={slippage:k.toString(),disabledSwappersGroups:w};return I.length>0&&M([]),O.length>0&&z([]),m.current=!1,p.current?Wo(o.toString(),p.current,ot(T),b,!1,y):void 0}A.current=new AbortController,P(!0);let $=De(t,e,o,c,T,w,k,a,u,l,n,f);try{let b=await ae().getBestRoute($,{signal:A.current?.signal});if(A.current=null,P(!1),!b.result||!new ct(b.requestAmount).isEqualTo(new ct(o||"-1"))){M(K=>K.concat({type:0}));return}let N={errors:[],warnings:[]};if(Rt(n,b)){s(b);let K=new ct(b.result?.outputAmount||"0").multipliedBy(e.usdPrice||0),ke=Me(r,K);Fe(r,ke)?N.errors.push({type:1}):so(n,b)?N.warnings.push({type:3,newOutputAmount:W(me(b)),percentageChange:W(ge(me(n),me(b)),null,2)}):Ye(n,b)?N.warnings.push({type:2}):Qe(n,b)?N.warnings.push({type:0}):Xe(n,b)&&N.warnings.push({type:1})}let se=io(b,T);se.length===0||N.errors.push({type:4,messages:se});let ue=no(n);ro(k.toString(),ue)||N.errors.push({type:3,minRequiredSlippage:ue});let we=N.errors.length===0,ie=N.warnings.length===0;if((we||!we&&m.current)&&(ie||!ie&&m.current)){let K={slippage:k.toString(),disabledSwappersGroups:w};return Wo(o.toString(),b,ot(T),K,!1,y)}else m.current||(m.current=!0,M(N.errors),z(N.warnings),p.current=b);return}catch(b){if(b?.code==="ERR_CANCELED")return;let N=b?.response?.status;P(!1),M([{type:2,status:N}]);return}},"confirmSwap")}}i(vo,"useConfirmSwap");import xo from"react";import{BalanceErrors as Cr,MinRequiredSlippage as wr}from"@rango-dev/ui";import{useNavigate as kr}from"react-router-dom";function pt(t){let e=kr();return t.flatMap(o=>{switch(o.type){case 0:return"No routes found. Please try again later.";case 2:return`Failed to confirm swap ${o.status?`'status': ${o.status})`:""}, please try again.`;case 1:return"Route updated and price impact is too high, try again later!";case 3:return xo.createElement(wr,{minRequiredSlippage:o.minRequiredSlippage,changeSlippage:()=>e("/"+g.settings)});case 4:return xo.createElement(Cr,{messages:o.messages});default:return[]}})}i(pt,"ConfirmSwapErrors");function Bo(t){return t.flatMap(e=>{switch(e.type){case 0:return"Route has been updated.";case 3:return`Output amount changed to ${e.newOutputAmount} (${e.percentageChange}% change).`;case 1:return"Route swappers has been updated.";case 2:return"Route internal coins has been updated.";default:return[]}})}i(Bo,"ConfirmSwapWarnings");import mt from"react";import{Typography as br}from"@rango-dev/ui";function qe(t){let{inputUsdValue:e,outputUsdValue:o}=t;if(!e||!o||!o.gt(0))return null;let n=ge(e.toNumber(),o.toNumber()),s=n?.lt(0);return mt.createElement(mt.Fragment,null,s&&mt.createElement(br,{variant:"caption",color:"$error500"},`(${W(n,0,2)}%)`))}i(qe,"PercentageChange");function Io({customDestinationEnabled:t}){let e=Ar(),{navigateBackFrom:o}=_(),n=d.use.bestRoute(),s=d.use.loading(),r=d.use.error(),a=L.use.setSelectedSwap(),{blockchains:u,tokens:l}=C.use.meta(),c=C.use.loadingStatus(),f=B.use.connectedWallets(),T=B.use.selectedWallets(),y=B.use.customDestination(),h=B.use.setCustomDestination(),S=B.use.initSelectedWallets(),w=B.use.setSelectedWallet(),k=v.use.slippage(),m=v.use.customSlippage(),p=d.use.inputUsdValue(),A=d.use.outputUsdValue(),E=d.use.setInputAmount(),[P,I]=Eo(""),M=Ut(s,!!r),[O,z]=Eo(""),{manager:ne}=Pr(),{loading:$,errors:b,warnings:N,confirmSwap:le}=vo(),se=m||k,Ce=!b.find(U=>U.type===3),{getWalletInfo:ue,connect:we}=vr(),ie=n?.result?.swaps[0],K=n?.result?.swaps[n?.result?.swaps.length-1],ke=W(ie?.fromAmount,4,6),vt=W(K?.toAmount,4,6);Wr(()=>{S(),y&&h("")},[]);let Sn=n?.result?.swaps[n?.result?.swaps.length-1].to.blockchain,xt=!!n?.result?.swaps.find(U=>U.from.blockchain===Sn),be=Ee(f,T,ue,xt?"":O),Tn=i(U=>{let ze=U;et(be).forEach(Cn=>we?.(Cn,ze))},"handleConnectChain"),yn=Ue(n,l);return V.createElement(xr,{requiredWallets:pe(n),selectableWallets:be,setCustomDestination:h,customDestination:y,customDestinationEnabled:t,isValidCustomDestination:po,checkedDestination:!!O,setDestinationChain:z,onBack:o.bind(null,g.confirmSwap),onConfirm:async()=>{le?.().then(async U=>{if(U)try{await ne?.create("swap",{swapDetails:U},{id:U.requestId}),a(U.requestId),e("/"+g.swaps+`/${U.requestId}`,{replace:!0}),setTimeout(()=>{E("")},0)}catch(ze){I("Error: "+ze?.message)}})},isWalletRequired:xt,onChange:U=>w(U),confirmDisabled:c!=="success"||mo(s,O,y,n,be),handleConnectChain:U=>Tn(U),isExperimentalChain:U=>et(be).length>0?Xt(u,U):!1,previewInputs:V.createElement(V.Fragment,null,V.createElement(at,{chain:{displayName:ie?.from.blockchain||"",logo:ie?.from.blockchainLogo||""},token:{symbol:ie?.from.symbol||"",image:ie?.from.logo||""},usdValue:p,amount:ke,label:$e.t("From"),loadingStatus:c!=="success"?c:M}),V.createElement(Po,{size:12}),V.createElement(at,{chain:{displayName:K?.to.blockchain||"",logo:K?.to.blockchainLogo||""},token:{symbol:K?.to.symbol||"",image:K?.to.logo||""},usdValue:A,amount:vt,label:$e.t("To"),loadingStatus:c!=="success"?c:M,percentageChange:V.createElement(qe,{inputUsdValue:p,outputUsdValue:A})})),previewRoutes:V.createElement(bo,{routes:n,totalFee:W(yn,0,2)}),loading:$,errors:P?[P,...pt(b)]:pt(b),warnings:Bo(N),extraMessages:V.createElement(V.Fragment,null,c==="failed"&&V.createElement(Br,null),c==="failed"&&Ce&&V.createElement(Po,null),V.createElement(Er,{selectedSlippage:se,highSlippage:se>=qt,changeSlippage:()=>e("/"+g.settings)})),confirmButtonTitle:N.length>0||b.length>0?`${$e.t("Proceed anyway!")}`:`${$e.t("Confirm swap!")}`})}i(Io,"ConfirmSwapPage");import{History as Ir}from"@rango-dev/ui";import{useManager as Nr}from"@rango-dev/queue-manager-react";import Rr from"react";import{useNavigate as Mr}from"react-router-dom";var Ve=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let s=o.list.getStorage();s?.swapDetails&&e.push({id:n,swap:s?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import No from"dayjs";var Ro=i(t=>{let e=new Map([["today",{title:"Today",swaps:[]}],["week",{title:"This week",swaps:[]}],["month",{title:"This month",swaps:[]}],["year",{title:"This year",swaps:[]}],["history",{title:"History",swaps:[]}]]),o=No();return t.forEach(n=>{let s=No(Number(n.creationTime));o.isSame(s,"day")?e.get("today")?.swaps.push(n):o.isSame(s,"week")?e.get("week")?.swaps.push(n):o.isSame(s,"month")?e.get("month")?.swaps.push(n):o.isSame(s,"year")?e.get("year")?.swaps.push(n):e.get("history")?.swaps.push(n)}),Array.from(e.values())},"groupSwapsByDate");function Mo(){let t=L.use.setSelectedSwap(),e=Mr(),{navigateBackFrom:o}=_(),{manager:n,state:s}=Nr(),r=Ve(n).map(({swap:u})=>u),a=!s.loadedFromPersistor;return Rr.createElement(Ir,{list:r,groupBy:Ro,loading:a,onSwapClick:u=>{t(u),e(`${u}`,{replace:!0})},onBack:o.bind(null,g.swaps)})}i(Mo,"HistoryPage");import{Alert as Lo,BestRoute as zr,BottomLogo as Kr,Button as _o,styled as de,Typography as qo,VerticalSwapIcon as jr,Header as Qr,HeaderButtons as Xr}from"@rango-dev/ui";import R,{useEffect as Yr,useState as Jr}from"react";import{i18n as Zr}from"@lingui/core";import{useInRouterContext as es,useNavigate as ts}from"react-router-dom";import x from"react";import{AngleDownIcon as Fr,Button as dt,InfoCircleIcon as Or,styled as Te,TextField as Ur,Typography as Se,Image as Fo,Divider as ft}from"@rango-dev/ui";import{useNavigate as Dr}from"react-router-dom";import{Trans as gt}from"@lingui/react";import{i18n as ht}from"@lingui/core";var Lr=Te("div",{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"}),_r=Te("div",{boxSizing:"border-box",borderRadius:"$5",padding:"$8 $16 $16 $16",variants:{type:{filled:{backgroundColor:"$neutral100"},outlined:{border:"1px solid $neutral100",backgroundColor:"$surface"}}},defaultVariants:{type:"filled"},".head":{display:"flex",justifyContent:"space-between",alignItems:"center",minHeight:"32px"},".form":{display:"flex",width:"100%",padding:"$2 0",".selectors":{width:"35%","._text":{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},".amount":{width:"30%"}},".output-usd":{display:"flex",div:{display:"flex",paddingLeft:"$8"}}}),qr=Te("div",{display:"flex",justifyContent:"flex-end",".balance":{display:"flex",alignItems:"center"}}),Oo=Te("span",{width:"24px",height:"24px",backgroundColor:"$neutral100",borderRadius:"99999px"}),$r=Te("div",{windth:"100%",height:"$48",borderRadius:"$5",backgroundColor:"$surface",border:"1px solid transparent",position:"relative",display:"flex",alignItems:"center",paddingLeft:"$8",paddingRight:"$8"});function St(t){let{type:e,chain:o,token:n}=t,s=C.use.loadingStatus(),r=d.use.fromChain(),a=d.use.toChain(),u=d.use.inputUsdValue(),l=d.use.fromToken(),c=d.use.setInputAmount(),f=d.use.bestRoute(),T=d.use.inputAmount(),y=B.use.connectedWallets(),h=d.use.loading(),S=Dr(),w=r&&l?W(ce(y,r?.name,l?.symbol,l?.address)?.amount||"0",8):"0",k=r&&l?W(ce(y,r?.name,l?.symbol,l?.address)?.amount||"0",ce(y,r?.name,l?.symbol,l?.address)?.decimal):"0",m=x.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"}},s==="failed"&&x.createElement(Or,{color:"error",size:24}),x.createElement(Fr,null));return x.createElement(Lr,null,x.createElement(_r,{type:t.type==="From"?"filled":"outlined"},x.createElement("div",{className:"head"},x.createElement(Se,{variant:"body2",color:"neutral800"},e==="From"?x.createElement(gt,{id:"swap from",message:"From"}):x.createElement(gt,{id:"swap to",message:"To"})),t.type==="From"?x.createElement(qr,null,x.createElement("div",{className:"balance",onClick:()=>{w!=="0"&&c(k.split(",").join(""))}},x.createElement(Se,{variant:"body3",color:"neutral600"},ht.t("Balance"),": ",w," ",l?.symbol||""),x.createElement(ft,{size:4}),x.createElement(dt,{type:"primary",variant:"ghost",size:"compact"},x.createElement(gt,{id:"maximum amount of asset",message:"Max"})))):x.createElement("div",{className:"output-usd"},x.createElement(qe,{inputUsdValue:u,outputUsdValue:t.outputUsdValue}),x.createElement("div",null,x.createElement(Se,{variant:"caption",color:"neutral600"},`$${W(t.outputUsdValue)}`)))),x.createElement("div",{className:"form"},x.createElement(dt,{className:"selectors",onClick:()=>{S(`${t.type.toLowerCase()}-chain`)},variant:"outlined",disabled:s==="failed",loading:s==="loading",prefix:s==="success"&&o?x.createElement(Fo,{src:o.logo,size:24}):x.createElement(Oo,null),suffix:m,align:"start",size:"large"},s==="success"&&o?o.displayName:ht.t("Chain")),x.createElement(ft,{size:12,direction:"horizontal"}),x.createElement(dt,{className:"selectors",onClick:()=>{S(`${t.type.toLowerCase()}-token`)},variant:"outlined",disabled:s==="failed"||e==="From"&&!r||e==="To"&&!a,loading:s==="loading",prefix:s==="success"&&n?x.createElement(Fo,{src:n.image,size:24}):x.createElement(Oo,null),suffix:m,size:"large",align:"start"},s==="success"&&n?n.symbol:ht.t("Token")),x.createElement(ft,{size:12,direction:"horizontal"}),x.createElement("div",{className:"amount"},t.type==="From"?x.createElement(Ur,{type:"number",size:"large",autoFocus:!0,placeholder:"0",style:{position:"relative",backgroundColor:"$background !important"},suffix:x.createElement("span",{style:{position:"absolute",right:"4px",bottom:"2px"}},x.createElement(Se,{variant:"caption",color:"neutral800"},`$${W(u)}`)),value:t.inputAmount||"",min:0,onChange:t.type==="From"?p=>{t.onAmountChange(p.target.value)}:void 0}):x.createElement($r,null,x.createElement(Se,{variant:"h4"},h&&"?",!!f?.result&&`\u2248 ${W(t.outputAmount)}`,(!T||T==="0")&&"0"))))))}i(St,"TokenInfo");import{useEffect as Vr,useRef as Hr}from"react";import{useSearchParams as Gr}from"react-router-dom";function Uo({count:t}){let e=Hr(!0),[o,n]=Gr(),s=d.use.outputAmount();return Vr(()=>{if(e.current)e.current=!1;else{let r=o.get("fromChain"),a=o.get("fromToken"),u=o.get("toChain"),l=o.get("toToken");n({...u&&{["fromChain"]:u},...l&&{["fromToken"]:l},...r&&{["toChain"]:r},...a&&{["toToken"]:a},...s&&{["fromAmount"]:s.toString()}})}},[t]),null}i(Uo,"SwithFromAndTo");var Do={genericServerError:"Error connecting server, please reload the app and try again"};import $o from"bignumber.js";var os=de("div",{display:"flex",flexDirection:"column"}),ns=de("div",{position:"relative",paddingBottom:"$12"}),rs=de("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)"}),ss=de("div",{width:"100%",paddingTop:"$16"}),is=de("div",{width:"100%",paddingTop:"$16"}),as=de("div",{display:"flex",flexDirection:"column",width:"100%",paddingTop:"$16"});function Vo(){let t=es(),e=ts(),[o,n]=Jr(0),s=d.use.fromChain(),r=d.use.fromToken(),a=d.use.toChain(),u=d.use.toToken(),l=d.use.setInputAmount(),c=d.use.inputUsdValue(),f=d.use.inputAmount(),T=d.use.outputAmount(),y=d.use.outputUsdValue(),h=d.use.bestRoute(),S=C.use.meta().tokens,w=d.use.loading(),k=d.use.error(),m=C.use.loadingStatus(),p=B.use.connectedWallets(),A=L.use.setCurrentPage(),E=d.use.switchFromAndTo(),P=m==="failed"?Do.genericServerError:k,I=!1,M=f&&(!!h||w||k),O=Me(c,y),z=Fe(c,O),{fromAmountRangeError:ne,recommendation:$,swap:b}=Zt(h),N=!to(h,f,c,y),le=eo(m,p,w,h,Oe(h),z,N,I,f),se=Ue(h,S),Ce=oo(se);return Yr(()=>(A(g.home),A.bind(null,"")),[]),R.createElement(os,null,R.createElement(Qr,{title:Zr.t("SWAP"),suffix:R.createElement(Xr,{onClickRefresh:h||k?go:void 0,onClickHistory:()=>e(g.swaps),onClickSettings:()=>e(g.settings)})}),R.createElement(ns,null,R.createElement(St,{type:"From",chain:s,token:r,onAmountChange:l,inputAmount:f}),R.createElement(rs,null,R.createElement(_o,{variant:"ghost",onClick:()=>{E(),n(ue=>ue+1)}},R.createElement(jr,{size:32}),t&&R.createElement(Uo,{count:o})))),R.createElement(St,{type:"To",chain:a,token:u,outputAmount:T?new $o(T):new $o(0),outputUsdValue:y}),M&&R.createElement(ss,null,R.createElement(zr,{error:k,loading:w,data:Ft(h),totalFee:W(se,0,2),feeWarning:Ce,totalTime:Pt(It(h))})),(P||Oe(h))&&R.createElement(is,null,P&&R.createElement(Lo,{type:"error"},P),Oe(h)&&R.createElement(Lo,{type:"error",title:`${b?.swapperId} Limit`},R.createElement(R.Fragment,null,R.createElement(qo,{variant:"body2"},`${ne}, Yours: ${W(b?.fromAmount||null)} ${b?.from.symbol}`),R.createElement(qo,{variant:"body2"},$)))),R.createElement(as,null,R.createElement(_o,{type:"primary",align:"grow",size:"large",disabled:le.disabled,onClick:()=>{le.title==="Connect Wallet"?e(g.wallets):e(g.confirmSwap,{replace:!0})}},le.title),R.createElement(Kr,null)))}i(Vo,"Home");import{LiquiditySourcesSelector as ls}from"@rango-dev/ui";import us from"react";function Ho({supportedSwappers:t}){let e=C.use.meta().swappers,o=C.use.loadingStatus(),n=v.use.toggleLiquiditySource(),s=v.use.disabledLiquiditySources(),r=v.use.toggleAllLiquiditySources(),{navigateBackFrom:a}=_(),u=[];return H(e.map(l=>l.swapperGroup)).map(l=>e.find(c=>c.swapperGroup===l)).find(l=>{if(l)for(let c of l.types)u.push({title:l.swapperGroup,logo:l.logo,type:c,selected:!s.includes(l.swapperGroup)})}),us.createElement(ls,{toggleAll:r,list:t?u.filter(l=>t.filter(c=>c===l.title).length>0):u,onChange:l=>n(l.title),onBack:a.bind(null,g.liquiditySources),loadingStatus:o})}i(Ho,"LiquiditySourcePage");import cs from"react";import{BlockchainSelector as ps}from"@rango-dev/ui";function Tt(t){let{type:e,supportedChains:o}=t,n=o?C.use.meta().blockchains.filter(f=>o.includes(f.name)):C.use.meta().blockchains,s=C.use.loadingStatus(),r=d.use.fromChain(),a=d.use.toChain(),u=d.use.setFromChain(),l=d.use.setToChain(),{navigateBackFrom:c}=_();return cs.createElement(ps,{type:e==="from"?"Source":"Destination",list:n,selected:e==="from"?r:a,loadingStatus:s,onChange:f=>{e==="from"?u(f,!0):l(f,!0),c(g.fromChain)},onBack:c.bind(null,g.fromChain)})}i(Tt,"SelectChainPage");import ms from"react";import{TokenSelector as ds}from"@rango-dev/ui";function yt(t){let{navigateBackFrom:e}=_(),{type:o,supportedTokens:n}=t,s=d.use.sourceTokens(),r=d.use.destinationTokens(),a=n?s.filter(h=>n.some(S=>j(S,h))):s,u=n?r.filter(h=>n.some(S=>j(S,h))):r,l=d.use.fromToken(),c=d.use.toToken(),f=d.use.setFromToken(),T=d.use.setToToken(),y=C.use.loadingStatus();return ms.createElement(ds,{type:o==="from"?"Source":"Destination",list:o=="from"?a:u,selected:o==="from"?l:c,onChange:h=>{o==="from"?f(h):T(h),e(g.fromToken)},onBack:e.bind(null,g.fromToken),loadingStatus:y})}i(yt,"SelectTokenPage");import fs from"react";import{Settings as gs}from"@rango-dev/ui";import{useNavigate as hs}from"react-router-dom";function Go({supportedSwappers:t,singleTheme:e}){let o=v.use.slippage(),n=v.use.setSlippage(),s=v.use.disabledLiquiditySources(),r=v.use.customSlippage(),a=v.use.setCustomSlippage(),u=v.use.theme(),l=v.use.setTheme(),c=C.use.meta().swappers,f=hs(),{navigateBackFrom:T}=_(),y=v.use.infiniteApprove(),h=v.use.toggleInfiniteApprove(),S=C.use.loadingStatus(),w=[];H(c.map(m=>m.swapperGroup)).map(m=>c.find(p=>p.swapperGroup===m)).find(m=>{if(m)for(let p of m.types)w.push({title:m.swapperGroup,logo:m.logo,type:p,selected:!s.includes(m.swapperGroup)})}),t&&w.filter(m=>t.filter(p=>p===m.title).length>0);let k=t?w.filter(m=>t.filter(p=>p===m.title).length>0):w;return fs.createElement(gs,{slippages:Lt,selectedSlippage:o,onSlippageChange:m=>n(m),onLiquiditySourcesClick:()=>f(g.liquiditySources),onBack:T.bind(null,g.settings),liquiditySources:k,selectedLiquiditySources:k.filter(m=>m.selected),singleTheme:e,customSlippage:r,onCustomSlippageChange:a,minSlippage:Vt,maxSlippage:$t,selectedTheme:u,onThemeChange:l,infiniteApprove:y,toggleInfiniteApprove:h,loadingStatus:S})}i(Go,"SettingsPage");import{Alert as Ts,SecondaryPage as ys,styled as Ct,Wallet as Cs,WalletState as Ko}from"@rango-dev/ui";import te,{useEffect as jo,useRef as ws,useState as ks}from"react";import{WalletTypes as bs,detectMobileScreens as Ws}from"@rango-dev/wallets-shared";import{useWallets as As}from"@rango-dev/wallets-core";import{i18n as vs}from"@lingui/core";import{Spinner as xs}from"@rango-dev/ui";import{LoadingFailedAlert as Bs}from"@rango-dev/ui";import{allProviders as Ss}from"@rango-dev/provider-all";function He(t,e){let o=Ss({walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||""}});if(t){let n=[];return t.forEach(s=>{if(typeof s=="string"){let r=o.find(a=>a.config.type===s);r?n.push(r):console.warn(`Couldn't find ${s} provider. Please make sure you are passing the correct name.`)}else n.push(s)}),n}return o}i(He,"matchAndGenerateProviders");function zo(t,e){return He(t,e).map(s=>s.config.type)}i(zo,"configWalletsToWalletName");var Es=Ct("div",{display:"grid",gap:".5rem",gridTemplateColumns:" repeat(2, minmax(0, 1fr))",alignContent:"baseline",padding:"0.5rem",overflowY:"auto"}),Ps=Ct("div",{display:"flex",justifyContent:"center",width:"100%",position:"absolute",top:"50%"}),Is=Ct("div",{paddingBottom:"$16"}),Ns=Object.values(bs);function Qo({supportedWallets:t,multiWallets:e,config:o}){let{navigateBackFrom:n}=_(),{state:s,disconnect:r,getWalletInfo:a,connect:u}=As(),l=Gt(s,a,zo(t,{walletConnectProjectId:o?.walletConnectProjectId})||Ns),c=ws(),f=Ws()?l.filter(m=>m.showOnMobile):l;f=Yt(f);let[T,y]=ks(""),h=L.use.toggleConnectWalletsButton(),S=C.use.loadingStatus(),w=i(async m=>{let p=s(m);try{if(T&&y(""),p.connected)await r(m);else{if(!e&&l.find(A=>A.state===Ko.CONNECTED))return;await u(m)}}catch(A){y("Error: "+A?.message)}},"onSelectWallet"),k=i(()=>{let m=c.current?.filter(p=>p.state===Ko.CONNECTING)||[];for(let p of m)r(p.type)},"disconnectConnectingWallets");return jo(()=>(h(),()=>{k(),h()}),[]),jo(()=>{c.current=l},[l]),te.createElement(ys,{title:vs.t("Select Wallet")||"",textField:!1,onBack:n.bind(null,g.wallets)},te.createElement(te.Fragment,null,T&&te.createElement(Is,null,te.createElement(Ts,{type:"error",title:T})),S==="loading"&&te.createElement(Ps,{className:"loader"},te.createElement(xs,{size:24})),S==="failed"&&te.createElement(Bs,null),te.createElement(Es,null,S==="success"&&f.map((m,p)=>te.createElement(Cs,{...m,key:`${p}-${m.type}`,onClick:w})))))}i(Qo,"WalletsPage");import tn from"react";import{useManager as Ds}from"@rango-dev/queue-manager-react";import{SwapHistory as Ls,useCopyToClipboard as _s}from"@rango-dev/ui";import{cancelSwap as qs,PendingSwapNetworkStatus as $s}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Vs}from"@rango-dev/wallets-core";import{getCurrentBlockchainOfOrNull as Hs,getCurrentStep as Gs,getRelatedWalletOrNull as zs}from"@rango-dev/queue-manager-rango-preset";function Xo(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(Xo,"timeSince");function Yo(t){return t.finishTime?`${Xo(parseInt(t.finishTime))} ago`:`${Xo(parseInt(t.creationTime))} ago`}i(Yo,"getSwapDate");import{useNavigate as Ks}from"react-router-dom";import ye from"react";import{SecondaryPage as Rs,Spinner as Ms,Alert as Fs,styled as Zo}from"@rango-dev/ui";import{i18n as Jo}from"@lingui/core";var Os=Zo("div",{height:"450px"}),Us=Zo("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1});function en(t){let{requestId:e,loading:o,onBack:n}=t;return ye.createElement(Rs,{title:Jo.t("Swap Details"),textField:!1,onBack:n},ye.createElement(Os,null,o?ye.createElement(Us,null,ye.createElement(Ms,{size:24})):ye.createElement(Fs,{type:"secondary",title:Jo.t("swapNotFound",{requestId:e},{message:"Swap with request ID = ${requestId} not found."})})))}i(en,"SwapDetailsPlaceholder");function on(){let t=L.use.selectedSwapRequestId(),{canSwitchNetworkTo:e,connect:o,getWalletInfo:n}=Vs(),s=d.use.retry(),r=Ks(),{navigateBackFrom:a}=_(),[u,l]=_s(2e3),{manager:c,state:f}=Ds(),y=Ve(c).find(({swap:b})=>b.requestId===t),h=i(()=>{let b=c?.get(y?.id);b&&qs(b)},"onCancel"),S=y?.swap,w=!f.loadedFromPersistor;if(!S)return tn.createElement(en,{requestId:t||"",loading:w,onBack:a.bind(null,g.swapDetails)});let k=Gs(S),m=k?Hs(S,k):null,p=k?zs(S,k):null,A=k?.networkStatus,E=lo(S,k),P=nt(k),I=Yo(S),M=co(S),O=i(b=>!!n(b)?.mobileWallet,"isMobileWallet"),ne=A===$s.WaitingForNetworkChange&&!!m&&!!p?.walletType&&(O(p.walletType)||e(p.walletType,m))?o.bind(null,p.walletType,m):void 0,$=uo(S);return tn.createElement(Ls,{onBack:a.bind(null,g.swapDetails),pendingSwap:Ot(S),onCopy:l,isCopied:u,onCancel:h,shortMessage:E.shortMessage,detailedMessage:E.detailedMessage,currentStepBlockchain:m||"",switchNetwork:ne,type:P?"warning":S.extraMessageSeverity||void 0,date:I,...M&&{onRetry:()=>{s(S),setTimeout(()=>{r(g.home)},0)}},...$&&{lastConvertedTokenInFailedSwap:{blockchain:$.blockchain,outputAmount:$.outputAmount||"",symbol:$.symbol}}})}i(on,"SwapDetailsPage");var Qs=i(t=>t.replace("/",""),"getAbsolutePath");function nn(t){let{config:e}=t;return js([{path:g.home,element:Q.createElement(Vo,null)},{path:g.fromChain,element:Q.createElement(Tt,{type:"from",supportedChains:e?.from?.blockchains})},{path:g.toChain,element:Q.createElement(Tt,{type:"to",supportedChains:e?.to?.blockchains})},{path:g.fromToken,element:Q.createElement(yt,{type:"from",supportedTokens:e?.from?.tokens})},{path:g.toToken,element:Q.createElement(yt,{type:"to",supportedTokens:e?.to?.tokens})},{path:g.settings,element:Q.createElement(Go,{singleTheme:e?.theme?.singleTheme,supportedSwappers:e?.liquiditySources})},{path:g.liquiditySources,element:Q.createElement(Ho,{supportedSwappers:e?.liquiditySources})},{path:g.swaps,element:Q.createElement(Mo,null)},{path:g.swapDetails,element:Q.createElement(on,null)},{path:g.wallets,element:Q.createElement(Qo,{supportedWallets:e?.wallets,multiWallets:typeof e?.multiWallets>"u"?!0:e.multiWallets,config:e})},{path:Qs(g.confirmSwap),element:Q.createElement(Io,{customDestinationEnabled:e?.customDestination})}])}i(nn,"AppRoutes");import{i18n as ni}from"@lingui/core";var ri=wt("div",{display:"flex",width:"100%",justifyContent:"end",".balance":{display:"flex"}}),si=wt("div",{display:"flex",paddingLeft:"12px"}),ii=wt("div",{marginLeft:-15,marginRight:"$6","& img":{borderRadius:"50%"}});function rn({config:t}){let e=ti(),{connectedWallets:o,selectedWallets:n}=B(),{getWalletInfo:s}=oi(),r=H(Ee(o,n,s).map(E=>E.image)),{blockchains:a,tokens:u}=C.use.meta(),l=d.use.setFromChain(),c=d.use.setFromToken(),f=d.use.setToChain(),T=d.use.setToToken(),y=d.use.setInputAmount(),h=v.use.setAffiliateRef(),S=v.use.setAffiliatePercent(),w=v.use.setAffiliateWallets(),k=Qt(o),m=L.use.connectWalletsButtonDisabled(),p=C.use.loadingStatus(),A=B(fo);return Ge(()=>{if(p==="success"){let E=a.find(I=>I.name===t?.to?.blockchain),P=u.find(I=>j(I,t?.to?.token||null));f(E||null),T(P||null)}},[t?.to?.token,t?.to?.blockchain,p]),Ge(()=>{y(t?.amount?.toString()||"")},[t?.amount]),Ge(()=>{if(p==="success"){let E=a.find(I=>I.name===t?.from?.blockchain),P=u.find(I=>j(I,t?.from?.token||null));l(E||null),c(P||null)}},[t?.from?.token,t?.from?.blockchain,p]),Ge(()=>{h(t?.affiliate?.ref??null),S(t?.affiliate?.percent??null),w(t?.affiliate?.wallets??null)},[t?.affiliate?.ref,t?.affiliate?.percent,t?.affiliate?.wallets]),G.createElement(G.Fragment,null,G.createElement(ri,null,G.createElement(Xs,{size:"small",suffix:G.createElement(Ys,{size:20}),variant:"ghost",flexContent:!0,loading:p==="loading",disabled:p==="failed",onClick:()=>{m||e(g.wallets)},prefix:r?.length?G.createElement(si,null,r.map((E,P)=>G.createElement(ii,{key:P},G.createElement(ei,{src:E,size:24})))):null},G.createElement("div",{className:"balance"},G.createElement(Js,{variant:"body2"},o?.length?`$${k||0}`:ni.t("Connect Wallet")),A&&G.createElement(Zs,null)))),G.createElement(nn,{config:t}))}i(rn,"Layout");import{globalCss as ai}from"@rango-dev/ui";var sn=i(t=>ai({"@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{createTheme as an,generateRangeColors as X}from"@rango-dev/ui";import{useState as ci,useEffect as ln,useLayoutEffect as pi}from"react";import{useEffect as li,useRef as ui}from"react";function kt(t){let e=ui();return li(()=>{e.current=t},[t]),e.current}i(kt,"usePrevious");function un({colors:t,fontFamily:e="Roboto",borderRadius:o=8,mode:n="auto"}){let s=v.use.theme(),r=C.use.fetchMeta(),a=v.use.setTheme(),u=t?.light,l=t?.dark,c=u?.neutral||"#fafafa",f=u?.background||"#fff",T=u?.foreground||"#000",y={...X("primary","dark",l?.primary),...X("error","dark",l?.error),...X("warning","dark",l?.warning),...X("success","dark",l?.success),...X("neutral","dark",l?.neutral),surface:l?.surface,background:l?.background,foreground:l?.foreground},h={surface:u?.surface||"#fff",...X("primary","light",u?.primary||"#5FA425"),...X("error","light",u?.error||"#FF0000"),...X("warning","light",u?.warning||"#F5A623"),...X("success","light",u?.success||"#0070F3"),...X("neutral","light",c),background:f,foreground:T},S=an({colors:h,radii:{5:`${o}px`},shadows:{s:`0px 3px 5px 3px ${u?.neutral||"#f0f2f5"} ,0px 6px 10px 3px ${u?.neutral||"#f0f2f5"}, 0px 1px 18px 3px ${u?.neutral||"#f0f2f5"}`}}),w=an({colors:{...h,...X("neutral","dark","#111111"),foreground:f,background:T,surface:"#000",...JSON.parse(JSON.stringify(y))},radii:{5:`${o}px`},shadows:{s:`0px 3px 5px 3px ${l?.neutral||"#222"}, 0px 6px 10px 3px ${l?.neutral||"#222"}, 0px 1px 18px 3px ${l?.neutral||"#222"}`}}),[k,m]=ci("light");ln(()=>{(async()=>await r())();let E=i(P=>{P.matches?m("dark"):m("light")},"switchTheme");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&m("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",E),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",E)}},[]),ln(()=>{n!=="auto"&&a(n)},[n]);let p=kt(e);return pi(()=>{let{classList:E}=document.body;p&&E.remove(`font_${p.replace(/ /g,"")}`),E.add(`font_${e.replace(/ /g,"")}`)},[e]),{activeTheme:i(()=>s==="auto"?k==="dark"?w:S:s==="dark"?w:S,"getActiveTheme")()}}i(un,"useTheme");import mi,{useMemo as di}from"react";import{Provider as fi}from"@rango-dev/queue-manager-react";import{makeQueueDefinition as gi,checkWaitingForNetworkChange as hi}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Si}from"@rango-dev/wallets-core";import{convertEvmBlockchainMetaToEvmChainInfo as Ti}from"@rango-dev/wallets-shared";import{isEvmBlockchain as yi}from"rango-types";function Ci(t){let{providers:e,getSigners:o,state:n,connect:s,canSwitchNetworkTo:r,getWalletInfo:a}=Si(),u=di(()=>gi({API_KEY:Ae("API_KEY")}),[]),{blockchains:l}=C.use.meta(),f={blockchains:B.use.connectedWallets().map(p=>({accounts:[p],name:p.chain}))},T=i((p,A)=>{if(r(p,A))return s(p,A)},"switchNetwork"),y=i(p=>!!a(p).mobileWallet,"isMobileWallet"),h=l.filter(p=>p.enabled).reduce((p,A)=>(p[A.name]=A,p),{}),S=l.filter(yi),w=i(p=>{let{supportedChains:A}=a(p);return Be(A)},"getSupportedChainNames"),k=e(),m={meta:{blockchains:h,evmBasedChains:S,evmNetworkChainInfo:Ti(S),getSupportedChainNames:w},getSigners:o,wallets:f,providers:k,switchNetwork:T,canSwitchNetworkTo:r,connect:s,state:n,isMobileWallet:y};return mi.createElement(fi,{queuesDefs:[u],context:m,onPersistedDataLoaded:p=>{hi(p)},isPaused:!1},t.children)}i(Ci,"QueueManager");var cn=Ci;import mn from"react";import{Events as bt,Provider as ki}from"@rango-dev/wallets-core";import{isEvmBlockchain as bi}from"rango-sdk";import{useEffect as wi}from"react";function pn(t,e){let o=B.use.clearConnectedWallet(),n=He(void 0,e);return wi(()=>{o(),n=He(t,{walletConnectProjectId:e?.walletConnectProjectId})},[t]),{providers:n}}i(pn,"useWalletProviders");import{createContext as Wi,useRef as Ai}from"react";var Wt=Wi({onConnectWallet:()=>{}});function At(t){let{blockchains:e}=C.use.meta(),{providers:o}=pn(t.providers,t?.options),n=B.use.disconnectWallet(),s=B.use.connectWallet(),r=Ai(),a=e.filter(bi).map(l=>l.name),u=i((l,c,f,T,y)=>{if(c===bt.ACCOUNTS)if(f){let h=Be(y),S=zt(l,f,a,h);s(S)}else n(l);if(c===bt.ACCOUNTS&&T.connected){let h=`${l}-${T.network}-${f}`;T.connected&&(r.current?r.current(h):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(c===bt.NETWORK&&T.network){let h=`${l}-${T.network}`;r.current?r.current(h):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(l,c,f,T,y)},"onUpdateState");return mn.createElement(Wt.Provider,{value:{onConnectWallet:l=>{r.current=l}}},mn.createElement(ki,{allBlockChains:e,providers:o,onUpdateState:u,autoConnect:!0},t.children))}i(At,"WidgetWallets");import{useEffect as vi}from"react";import{useEvents as xi,MainEvents as Bi,StepEventType as dn,StepExecutionEventStatus as Ei,isApprovalTX as Pi}from"@rango-dev/queue-manager-rango-preset";function fn(){let t=B.use.connectedWallets(),e=B.use.getWalletsDetails(),o=xi();return vi(()=>(o.on(Bi.StepEvent,n=>{let{event:s,step:r}=n;if(s.type===dn.TX_EXECUTION&&s.status===Ei.TX_SENT&&!Pi(r)||s.type===dn.SUCCEEDED){let u=t.find(c=>c.chain===r?.fromBlockchain),l=r?.fromBlockchain!==r?.toBlockchain&&t.find(c=>c.chain===r?.toBlockchain);u&&e([u]),l&&e([l])}}),()=>o.all.clear()),[o,t.length]),null}i(fn,"WidgetEvents");var Ui=Ni("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function hn(t){let{config:e}=t;sn(e?.theme?.fontFamily||"Roboto");let{activeTheme:o}=un(e?.theme||{}),[n,s]=gn(""),[r,a]=gn(),u=L.use.currentPage(),l=Mi(Wt);return Oi(()=>{e?.apiKey&&Dt({API_KEY:e?.apiKey})},[e]),Fi(()=>{l.onConnectWallet(s)},[]),oe.createElement(Ri,{language:e?.language},oe.createElement(Ui,{id:"swap-container",className:o},oe.createElement(cn,null,oe.createElement(fn,null),oe.createElement(Ii,{fixedHeight:u!==g.home},oe.createElement(So,{lastConnectedWallet:n,disconnectedWallet:r,clearDisconnectedWallet:()=>{a(void 0)}},oe.createElement(rn,{config:e}))))))}i(hn,"Main");function Di(t){return t.config?.externalWallets?oe.createElement(hn,{...t}):oe.createElement(At,{providers:t.config?.wallets,options:{walletConnectProjectId:t.config?.walletConnectProjectId}},oe.createElement(hn,{...t}))}i(Di,"Widget");import{useWallets as $f}from"@rango-dev/wallets-core";import{useEvents as zf,MainEvents as Kf,RouteEventType as tg,StepEventType as cg,StepExecutionEventStatus as pg,StepExecutionBlockedEventStatus as mg}from"@rango-dev/queue-manager-rango-preset";export{Kf as MainEvents,tg as RouteEventType,cg as StepEventType,mg as StepExecutionBlockedEventStatus,pg as StepExecutionEventStatus,Di as Widget,At as WidgetWallets,$f as useWallets,zf as useWidgetEvents};
2
2
  //# sourceMappingURL=index.js.map