@rango-dev/widget-embedded 0.8.1-next.10 → 0.8.1-next.11
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.
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/constants/widget.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,qCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var kn=Object.defineProperty;var i=(t,e)=>kn(t,"name",{value:e,configurable:!0});import{SwapContainer as Ni,styled as Ii,I18nManager as Ri}from"@rango-dev/ui";import oe,{useContext as Mi,useEffect as Fi,useMemo as Ui,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 wn from"bignumber.js";var D=new wn(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 Nt=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 It(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i(It,"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 Ut(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(Ut,"getFormatedPendingSwap");var Ot=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 k=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 A=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}=k.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 Nn,KEPLR_COMPATIBLE_WALLETS as In,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 Un}from"@rango-dev/wallets-core";import xe from"bignumber.js";function On(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(On,"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:l}=e(n),u=On(t(n));return{name:s,image:r,installLink:Rn(a),state:u,type:n,showOnMobile:!(typeof l>"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(l,u){if(!!!s.find(f=>f.chain===l)){let f={address:u,chain:l,walletType:t};s.push(f)}}i(r,"addAccount");let a=n||[];return e.forEach(l=>{let{address:u,network:c}=Un(l),f=a.length>0,T=a.includes(c),y=c===Ht.Unknown;if(f&&!T&&!y)return;let S=c===Ht.Unknown&&Nn(u);if(y&&!S)return;o.includes(c)||S?a.filter(m=>o.includes(m)).forEach(m=>{r(m,u.toLowerCase())}):r(c,u)}),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,l=r.to.blockchain;e.includes(a)||e.push(a),e.includes(l)||e.push(l)})}),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(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 xe(l.amount.amount).shiftedBy(-l.amount.decimals).toFixed(),logo:"",usdPrice:_n(s,l.asset.symbol,l.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(l=>l.address===a.address&&l.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(l=>{r.address===l&&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 Ne=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 In.filter(o=>e.has(o))},"getKeplrCompatibleConnectedWallets");function Ie(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(Ie,"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 Ne(Ie(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 Ue(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(Ue,"hasLimitError");function Zt(t){if(!t)return{swap:null,fromAmountRangeError:"",recommendation:""};let e=(t?.result?.swaps||[]).filter(l=>{let u=l.fromAmountMinValue?new q(l.fromAmountMinValue):null,c=l.fromAmountMaxValue?new q(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 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,l,u){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}:!u||u==="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}:l?{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 Oe(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus($n(n,e)),D)||null}i(Oe,"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,l,u,c,f,T){let y=s.reduce((m,d)=>(m[d.chain]=d.address,m),{}),h=[];n.forEach(m=>{let d=h.find(B=>B.blockchain===m.chain);d?d.addresses.push(m.address):h.push({blockchain:m.chain,addresses:[m.address]})});let S=!!f,w=H((f?.result?.swaps||[]).reduce((m,d)=>(m.push(d.from.blockchain,d.to.blockchain),d.internalSwaps&&Array.isArray(d.internalSwaps)&&d.internalSwaps.map(B=>{m.push(B.from.blockchain,B.to.blockchain)}),m),[]));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: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,l=W(new q(r.currentAmount.amount).shiftedBy(-r.currentAmount.decimals),8),u=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 ${u} ${a}${c}, but you have ${l} ${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(k.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 x=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(p.getState().bestRoute),s=o.connectedWallets,r=[];return n.forEach(a=>{if(!!!o.selectedWallets.find(u=>u.chain===a)){let u=s.find(c=>c.chain===a);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(a=>({connectedWallets:a.connectedWallets.map(l=>o.find(u=>Pe(u,l))?{...l,loading:!0}:l)}));try{let a=o.map(({address:c,chain:f})=>({address:c,blockchain:f})),u=(await ae().getWalletsDetails(a)).wallets;if(u)t(c=>({connectedWallets:c.connectedWallets.map(f=>{let T=o.find(h=>Pe(h,f)),y=u.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(l=>({connectedWallets:l.connectedWallets.map(u=>o.find(c=>Pe(c,u))?jt(u):u)}))}}}))));x.subscribe(t=>t.connectedWallets,t=>{p.setState(({sourceTokens:e,destinationTokens:o})=>{let n=Ie(e,t),s=Ie(o,t);return{sourceTokens:Ne(n),destinationTokens:Ne(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"),p=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,It(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=k.getState().meta.tokens,r=x.getState().connectedWallets,a=fe(e,s,r,n.destinationTokens),l=tt(a,n.toToken);return{fromChain:e,sourceTokens:a,...o&&{fromToken:l},...!!n.inputAmount&&{inputUsdValue:he(l,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=k.getState().meta.tokens,r=x.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}=k.getState().meta,s=x.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],l=e.steps[e.steps.length-1],u=n.find(w=>w.name===a.fromBlockchain)||null,c=n.find(w=>w.name===l.toBlockchain)||null,f=o.find(w=>j(w,{blockchain:a.fromBlockchain,symbol:a.fromSymbol,address:a.fromSymbolAddress})),T=o.find(w=>j(w,{blockchain:l.toBlockchain,symbol:l.toSymbol,address:l.toSymbolAddress})),y=fe(u,o,s,[]),h=fe(c,o,s,[]),S=e.inputAmount;t({fromChain:u,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:l,inputAmount:u,resetRoute:c}=t.getState(),{slippage:f,customSlippage:T,disabledLiquiditySources:y,affiliateRef:h,affiliatePercent:S,affiliateWallets:w}=e.getState();if(!a||!l||!We(u))return;o?.abort(),o=new AbortController;let m=De(a,l,u,[],[],y,T||f,h,S,w);t.getState().loading||c(),ae().getBestRoute(m,{signal:o.signal}).then(d=>{let{setBestRoute:B}=t.getState();B(d),t.setState({loading:!1}),o=null}).catch(d=>{d.code!=="ERR_CANCELED"&&t.setState({error:d.message,loading:!1})})},"fetchBestRoute"),s=Bt(n,600),r=i(()=>{let{fromToken:a,toToken:l,inputAmount:u,inputUsdValue:c,resetRoute:f}=p.getState();if(!We(u)||c?.eq(0))return t.setState({loading:!1});if(j(a,l))return t.setState({loading:!1,bestRoute:null,outputAmount:new re(u),outputUsdValue:c});t.getState().loading||f(),s()},"bestRouteParamsListener");return p.subscribe(a=>({fromChain:a.fromChain,fromToken:a.fromToken,toChain:a.toChain,toToken:a.toToken,inputAmount:a.inputAmount}),r,{equalityFn:(a,l)=>!Je({store:"bestRoute",prevState:a,currentState:l})}),A.subscribe(a=>({slippage:a.slippage,customSlippage:a.customSlippage,disabledLiquiditySources:a.disabledLiquiditySources,infiniteApprove:a.infiniteApprove}),r,{equalityFn:(a,l)=>!Je({store:"settings",prevState:a,currentState:l})}),{fetchBestRoute:n}},"bestRoute"),{fetchBestRoute:go}=jn(p,A);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=p.use.fromChain(),l=p.use.toChain(),u=p.use.fromToken(),c=p.use.toToken(),f=p.use.setFromChain(),T=p.use.setFromToken(),y=p.use.setToChain(),h=p.use.setToToken(),S=p.use.inputAmount(),w=p.use.setInputAmount(),C=k.use.loadingStatus(),{blockchains:m,tokens:d}=k.use.meta(),B=L.use.setSelectedSwap();return rt(()=>{let E={};Yn(s.current).forEach((N,M)=>{E[M]=N}),r.current=E;let P=n.pathname.split(g.swaps+"/")[1]||null;P&&B(P)},[]),rt(()=>{if(!t.current){let E="",P="",N="",M="",U="";if(C!=="success")E=r.current["fromChain"],P=r.current["fromToken"],N=r.current["toChain"],M=r.current["toToken"],U=r.current["fromAmount"]||S;else{if(n.state==="redirect")return;E=a?.name||"",P=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),N=l?.name||"",M=(c?.symbol||"")+(c?.address?`--${c?.address}`:""),U=S}o({...E&&{["fromChain"]:E},...P&&{["fromToken"]:P},...N&&{["toChain"]:N},...M&&{["toToken"]:M},...U&&{["fromAmount"]:U.toString()}},{replace:!0})}t.current=!1},[n.pathname,S,a,u,l,c]),rt(()=>{if(C==="success"){let E=e.get("fromChain"),P=e.get("fromToken"),N=e.get("toChain"),M=e.get("toToken"),U=e.get("fromAmount"),z=m.find(I=>I.name===E),ne=je(d,P,z||null),$=m.find(I=>I.name===N),b=je(d,M,$||null);z&&(f(z),ne&&T(ne)),$&&(y($),b&&h(b)),U&&w(U)}},[C]),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}=k.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 kt,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 ko}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%"}}}),wo=_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(wo,null),suffix:r,align:"start",size:"large"},n==="success"&&e?e.displayName:ko.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(wo,null),suffix:r,size:"large",align:"start"},n==="success"&&o?o.symbol:ko.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=p.use.fromToken(),e=p.use.toToken(),o=p.use.inputAmount(),n=p.use.bestRoute(),s=p.use.setBestRoute(),r=p.use.inputUsdValue(),a=A.use.affiliateRef(),l=A.use.affiliatePercent(),u=A.use.affiliateWallets(),c=x.use.connectedWallets(),f=x.use.customDestination(),T=x.use.selectedWallets(),y=k.use.meta(),h=A.use.customSlippage(),S=A.use.slippage(),w=A.use.disabledLiquiditySources(),C=h||S,m=lt(!1),d=lt(null),B=lt(null),[E,P]=ut(!1),[N,M]=ut([]),[U,z]=ut([]);return yr(()=>()=>B.current?.abort(),[]),!t||!e||!o||!n?{loading:!1,warnings:[],errors:[],confirmSwap:null}:{loading:E,warnings:U,errors:N,confirmSwap:i(async()=>{if(m.current){let b={slippage:C.toString(),disabledSwappersGroups:w};return N.length>0&&M([]),U.length>0&&z([]),m.current=!1,d.current?Wo(o.toString(),d.current,ot(T),b,!1,y):void 0}B.current=new AbortController,P(!0);let $=De(t,e,o,c,T,w,C,a,l,u,n,f);try{let b=await ae().getBestRoute($,{signal:B.current?.signal});if(B.current=null,P(!1),!b.result||!new ct(b.requestAmount).isEqualTo(new ct(o||"-1"))){M(K=>K.concat({type:0}));return}let I={errors:[],warnings:[]};if(Rt(n,b)){s(b);let K=new ct(b.result?.outputAmount||"0").multipliedBy(e.usdPrice||0),we=Me(r,K);Fe(r,we)?I.errors.push({type:1}):so(n,b)?I.warnings.push({type:3,newOutputAmount:W(me(b)),percentageChange:W(ge(me(n),me(b)),null,2)}):Ye(n,b)?I.warnings.push({type:2}):Qe(n,b)?I.warnings.push({type:0}):Xe(n,b)&&I.warnings.push({type:1})}let se=io(b,T);se.length===0||I.errors.push({type:4,messages:se});let ue=no(n);ro(C.toString(),ue)||I.errors.push({type:3,minRequiredSlippage:ue});let ke=I.errors.length===0,ie=I.warnings.length===0;if((ke||!ke&&m.current)&&(ie||!ie&&m.current)){let K={slippage:C.toString(),disabledSwappersGroups:w};return Wo(o.toString(),b,ot(T),K,!1,y)}else m.current||(m.current=!0,M(I.errors),z(I.warnings),d.current=b);return}catch(b){if(b?.code==="ERR_CANCELED")return;let I=b?.response?.status;P(!1),M([{type:2,status:I}]);return}},"confirmSwap")}}i(vo,"useConfirmSwap");import xo from"react";import{BalanceErrors as Cr,MinRequiredSlippage as kr}from"@rango-dev/ui";import{useNavigate as wr}from"react-router-dom";function pt(t){let e=wr();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(kr,{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 No({customDestinationEnabled:t}){let e=Ar(),{navigateBackFrom:o}=_(),n=p.use.bestRoute(),s=p.use.loading(),r=p.use.error(),a=L.use.setSelectedSwap(),{blockchains:l,tokens:u}=k.use.meta(),c=k.use.loadingStatus(),f=x.use.connectedWallets(),T=x.use.selectedWallets(),y=x.use.customDestination(),h=x.use.setCustomDestination(),S=x.use.initSelectedWallets(),w=x.use.setSelectedWallet(),C=A.use.slippage(),m=A.use.customSlippage(),d=p.use.inputUsdValue(),B=p.use.outputUsdValue(),E=p.use.setInputAmount(),[P,N]=Eo(""),M=Ot(s,!!r),[U,z]=Eo(""),{manager:ne}=Pr(),{loading:$,errors:b,warnings:I,confirmSwap:le}=vo(),se=m||C,Ce=!b.find(O=>O.type===3),{getWalletInfo:ue,connect:ke}=vr(),ie=n?.result?.swaps[0],K=n?.result?.swaps[n?.result?.swaps.length-1],we=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(O=>O.from.blockchain===Sn),be=Ee(f,T,ue,xt?"":U),Tn=i(O=>{let ze=O;et(be).forEach(Cn=>ke?.(Cn,ze))},"handleConnectChain"),yn=Oe(n,u);return V.createElement(xr,{requiredWallets:pe(n),selectableWallets:be,setCustomDestination:h,customDestination:y,customDestinationEnabled:t,isValidCustomDestination:po,checkedDestination:!!U,setDestinationChain:z,onBack:o.bind(null,g.confirmSwap),onConfirm:async()=>{le?.().then(async O=>{if(O)try{await ne?.create("swap",{swapDetails:O},{id:O.requestId}),a(O.requestId),e("/"+g.swaps+`/${O.requestId}`,{replace:!0}),setTimeout(()=>{E("")},0)}catch(ze){N("Error: "+ze?.message)}})},isWalletRequired:xt,onChange:O=>w(O),confirmDisabled:c!=="success"||mo(s,U,y,n,be),handleConnectChain:O=>Tn(O),isExperimentalChain:O=>et(be).length>0?Xt(l,O):!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:d,amount:we,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:B,amount:vt,label:$e.t("To"),loadingStatus:c!=="success"?c:M,percentageChange:V.createElement(qe,{inputUsdValue:d,outputUsdValue:B})})),previewRoutes:V.createElement(bo,{routes:n,totalFee:W(yn,0,2)}),loading:$,errors:P?[P,...pt(b)]:pt(b),warnings:Bo(I),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:I.length>0||b.length>0?`${$e.t("Proceed anyway!")}`:`${$e.t("Confirm swap!")}`})}i(No,"ConfirmSwapPage");import{History as Nr}from"@rango-dev/ui";import{useManager as Ir}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 Io 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=Io();return t.forEach(n=>{let s=Io(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}=Ir(),r=Ve(n).map(({swap:l})=>l),a=!s.loadedFromPersistor;return Rr.createElement(Nr,{list:r,groupBy:Ro,loading:a,onSwapClick:l=>{t(l),e(`${l}`,{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 v from"react";import{AngleDownIcon as Fr,Button as dt,InfoCircleIcon as Ur,styled as Te,TextField as Or,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"}}),Uo=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=k.use.loadingStatus(),r=p.use.fromChain(),a=p.use.toChain(),l=p.use.inputUsdValue(),u=p.use.fromToken(),c=p.use.setInputAmount(),f=p.use.bestRoute(),T=p.use.inputAmount(),y=x.use.connectedWallets(),h=p.use.loading(),S=Dr(),w=r&&u?W(ce(y,r?.name,u?.symbol,u?.address)?.amount||"0",8):"0",C=r&&u?W(ce(y,r?.name,u?.symbol,u?.address)?.amount||"0",ce(y,r?.name,u?.symbol,u?.address)?.decimal):"0",m=v.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"}},s==="failed"&&v.createElement(Ur,{color:"error",size:24}),v.createElement(Fr,null));return v.createElement(Lr,null,v.createElement(_r,{type:t.type==="From"?"filled":"outlined"},v.createElement("div",{className:"head"},v.createElement(Se,{variant:"body2",color:"neutral800"},e==="From"?v.createElement(gt,{id:"swap from",message:"From"}):v.createElement(gt,{id:"swap to",message:"To"})),t.type==="From"?v.createElement(qr,null,v.createElement("div",{className:"balance",onClick:()=>{w!=="0"&&c(C.split(",").join(""))}},v.createElement(Se,{variant:"body3",color:"neutral600"},ht.t("Balance"),": ",w," ",u?.symbol||""),v.createElement(ft,{size:4}),v.createElement(dt,{type:"primary",variant:"ghost",size:"compact"},v.createElement(gt,{id:"maximum amount of asset",message:"Max"})))):v.createElement("div",{className:"output-usd"},v.createElement(qe,{inputUsdValue:l,outputUsdValue:t.outputUsdValue}),v.createElement("div",null,v.createElement(Se,{variant:"caption",color:"neutral600"},`$${W(t.outputUsdValue)}`)))),v.createElement("div",{className:"form"},v.createElement(dt,{className:"selectors",onClick:()=>{S(`${t.type.toLowerCase()}-chain`)},variant:"outlined",disabled:s==="failed",loading:s==="loading",prefix:s==="success"&&o?v.createElement(Fo,{src:o.logo,size:24}):v.createElement(Uo,null),suffix:m,align:"start",size:"large"},s==="success"&&o?o.displayName:ht.t("Chain")),v.createElement(ft,{size:12,direction:"horizontal"}),v.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?v.createElement(Fo,{src:n.image,size:24}):v.createElement(Uo,null),suffix:m,size:"large",align:"start"},s==="success"&&n?n.symbol:ht.t("Token")),v.createElement(ft,{size:12,direction:"horizontal"}),v.createElement("div",{className:"amount"},t.type==="From"?v.createElement(Or,{type:"number",size:"large",autoFocus:!0,placeholder:"0",style:{position:"relative",backgroundColor:"$background !important"},suffix:v.createElement("span",{style:{position:"absolute",right:"4px",bottom:"2px"}},v.createElement(Se,{variant:"caption",color:"neutral800"},`$${W(l)}`)),value:t.inputAmount||"",min:0,onChange:t.type==="From"?d=>{t.onAmountChange(d.target.value)}:void 0}):v.createElement($r,null,v.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 Oo({count:t}){let e=Hr(!0),[o,n]=Gr(),s=p.use.outputAmount();return Vr(()=>{if(e.current)e.current=!1;else{let r=o.get("fromChain"),a=o.get("fromToken"),l=o.get("toChain"),u=o.get("toToken");n({...l&&{["fromChain"]:l},...u&&{["fromToken"]:u},...r&&{["toChain"]:r},...a&&{["toToken"]:a},...s&&{["fromAmount"]:s.toString()}})}},[t]),null}i(Oo,"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=p.use.fromChain(),r=p.use.fromToken(),a=p.use.toChain(),l=p.use.toToken(),u=p.use.setInputAmount(),c=p.use.inputUsdValue(),f=p.use.inputAmount(),T=p.use.outputAmount(),y=p.use.outputUsdValue(),h=p.use.bestRoute(),S=k.use.meta().tokens,w=p.use.loading(),C=p.use.error(),m=k.use.loadingStatus(),d=x.use.connectedWallets(),B=L.use.setCurrentPage(),E=p.use.switchFromAndTo(),P=m==="failed"?Do.genericServerError:C,N=!1,M=f&&(!!h||w||C),U=Me(c,y),z=Fe(c,U),{fromAmountRangeError:ne,recommendation:$,swap:b}=Zt(h),I=!to(h,f,c,y),le=eo(m,d,w,h,Ue(h),z,I,N,f),se=Oe(h,S),Ce=oo(se);return Yr(()=>(B(g.home),B.bind(null,"")),[]),R.createElement(os,null,R.createElement(Qr,{title:Zr.t("SWAP"),suffix:R.createElement(Xr,{onClickRefresh:h||C?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:u,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(Oo,{count:o})))),R.createElement(St,{type:"To",chain:a,token:l,outputAmount:T?new $o(T):new $o(0),outputUsdValue:y}),M&&R.createElement(ss,null,R.createElement(zr,{error:C,loading:w,data:Ft(h),totalFee:W(se,0,2),feeWarning:Ce,totalTime:Pt(Nt(h))})),(P||Ue(h))&&R.createElement(is,null,P&&R.createElement(Lo,{type:"error"},P),Ue(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=k.use.meta().swappers,o=k.use.loadingStatus(),n=A.use.toggleLiquiditySource(),s=A.use.disabledLiquiditySources(),r=A.use.toggleAllLiquiditySources(),{navigateBackFrom:a}=_(),l=[];return H(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)})}),us.createElement(ls,{toggleAll:r,list:t?l.filter(u=>t.filter(c=>c===u.title).length>0):l,onChange:u=>n(u.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?k.use.meta().blockchains.filter(f=>o.includes(f.name)):k.use.meta().blockchains,s=k.use.loadingStatus(),r=p.use.fromChain(),a=p.use.toChain(),l=p.use.setFromChain(),u=p.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"?l(f,!0):u(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=p.use.sourceTokens(),r=p.use.destinationTokens(),a=n?s.filter(h=>n.some(S=>j(S,h))):s,l=n?r.filter(h=>n.some(S=>j(S,h))):r,u=p.use.fromToken(),c=p.use.toToken(),f=p.use.setFromToken(),T=p.use.setToToken(),y=k.use.loadingStatus();return ms.createElement(ds,{type:o==="from"?"Source":"Destination",list:o=="from"?a:l,selected:o==="from"?u: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=A.use.slippage(),n=A.use.setSlippage(),s=A.use.disabledLiquiditySources(),r=A.use.customSlippage(),a=A.use.setCustomSlippage(),l=A.use.theme(),u=A.use.setTheme(),c=k.use.meta().swappers,f=hs(),{navigateBackFrom:T}=_(),y=A.use.infiniteApprove(),h=A.use.toggleInfiniteApprove(),S=k.use.loadingStatus(),w=[];H(c.map(m=>m.swapperGroup)).map(m=>c.find(d=>d.swapperGroup===m)).find(m=>{if(m)for(let d of m.types)w.push({title:m.swapperGroup,logo:m.logo,type:d,selected:!s.includes(m.swapperGroup)})}),t&&w.filter(m=>t.filter(d=>d===m.title).length>0);let C=t?w.filter(m=>t.filter(d=>d===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:C,selectedLiquiditySources:C.filter(m=>m.selected),singleTheme:e,customSlippage:r,onCustomSlippageChange:a,minSlippage:Vt,maxSlippage:$t,selectedTheme:l,onThemeChange:u,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 ks,useState as ws}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){let e=Ss();if(t){let o=[];return t.forEach(n=>{if(typeof n=="string"){let s=e.find(r=>r.config.type===n);s?o.push(s):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else o.push(n)}),o}return e}i(He,"matchAndGenerateProviders");function zo(t){return He(t).map(n=>n.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%"}),Ns=Ct("div",{paddingBottom:"$16"}),Is=Object.values(bs);function Qo({supportedWallets:t,multiWallets:e}){let{navigateBackFrom:o}=_(),{state:n,disconnect:s,getWalletInfo:r,connect:a}=As(),l=Gt(n,r,zo(t)||Is),u=ks(),c=Ws()?l.filter(C=>C.showOnMobile):l;c=Yt(c);let[f,T]=ws(""),y=L.use.toggleConnectWalletsButton(),h=k.use.loadingStatus(),S=i(async C=>{let m=n(C);try{if(f&&T(""),m.connected)await s(C);else{if(!e&&l.find(d=>d.state===Ko.CONNECTED))return;await a(C)}}catch(d){T("Error: "+d?.message)}},"onSelectWallet"),w=i(()=>{let C=u.current?.filter(m=>m.state===Ko.CONNECTING)||[];for(let m of C)s(m.type)},"disconnectConnectingWallets");return jo(()=>(y(),()=>{w(),y()}),[]),jo(()=>{u.current=l},[l]),te.createElement(ys,{title:vs.t("Select Wallet")||"",textField:!1,onBack:o.bind(null,g.wallets)},te.createElement(te.Fragment,null,f&&te.createElement(Ns,null,te.createElement(Ts,{type:"error",title:f})),h==="loading"&&te.createElement(Ps,{className:"loader"},te.createElement(xs,{size:24})),h==="failed"&&te.createElement(Bs,null),te.createElement(Es,null,h==="success"&&c.map((C,m)=>te.createElement(Cs,{...C,key:`${m}-${C.type}`,onClick:S})))))}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 Us=Zo("div",{height:"450px"}),Os=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(Us,null,o?ye.createElement(Os,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=p.use.retry(),r=Ks(),{navigateBackFrom:a}=_(),[l,u]=_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 C=Gs(S),m=C?Hs(S,C):null,d=C?zs(S,C):null,B=C?.networkStatus,E=lo(S,C),P=nt(C),N=Yo(S),M=co(S),U=i(b=>!!n(b)?.mobileWallet,"isMobileWallet"),ne=B===$s.WaitingForNetworkChange&&!!m&&!!d?.walletType&&(U(d.walletType)||e(d.walletType,m))?o.bind(null,d.walletType,m):void 0,$=uo(S);return tn.createElement(Ls,{onBack:a.bind(null,g.swapDetails),pendingSwap:Ut(S),onCopy:u,isCopied:l,onCancel:h,shortMessage:E.shortMessage,detailedMessage:E.detailedMessage,currentStepBlockchain:m||"",switchNetwork:ne,type:P?"warning":S.extraMessageSeverity||void 0,date:N,...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})},{path:Qs(g.confirmSwap),element:Q.createElement(No,{customDestinationEnabled:e?.customDestination})}])}i(nn,"AppRoutes");import{i18n as ni}from"@lingui/core";var ri=kt("div",{display:"flex",width:"100%",justifyContent:"end",".balance":{display:"flex"}}),si=kt("div",{display:"flex",paddingLeft:"12px"}),ii=kt("div",{marginLeft:-15,marginRight:"$6","& img":{borderRadius:"50%"}});function rn({config:t}){let e=ti(),{connectedWallets:o,selectedWallets:n}=x(),{getWalletInfo:s}=oi(),r=H(Ee(o,n,s).map(E=>E.image)),{blockchains:a,tokens:l}=k.use.meta(),u=p.use.setFromChain(),c=p.use.setFromToken(),f=p.use.setToChain(),T=p.use.setToToken(),y=p.use.setInputAmount(),h=A.use.setAffiliateRef(),S=A.use.setAffiliatePercent(),w=A.use.setAffiliateWallets(),C=Qt(o),m=L.use.connectWalletsButtonDisabled(),d=k.use.loadingStatus(),B=x(fo);return Ge(()=>{if(d==="success"){let E=a.find(N=>N.name===t?.to?.blockchain),P=l.find(N=>j(N,t?.to?.token||null));f(E||null),T(P||null)}},[t?.to?.token,t?.to?.blockchain,d]),Ge(()=>{y(t?.amount?.toString()||"")},[t?.amount]),Ge(()=>{if(d==="success"){let E=a.find(N=>N.name===t?.from?.blockchain),P=l.find(N=>j(N,t?.from?.token||null));u(E||null),c(P||null)}},[t?.from?.token,t?.from?.blockchain,d]),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:d==="loading",disabled:d==="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?`$${C||0}`:ni.t("Connect Wallet")),B&&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 wt(t){let e=ui();return li(()=>{e.current=t},[t]),e.current}i(wt,"usePrevious");function un({colors:t,fontFamily:e="Roboto",borderRadius:o=8,mode:n="auto"}){let s=A.use.theme(),r=k.use.fetchMeta(),a=A.use.setTheme(),l=t?.light,u=t?.dark,c=l?.neutral||"#fafafa",f=l?.background||"#fff",T=l?.foreground||"#000",y={...X("primary","dark",u?.primary),...X("error","dark",u?.error),...X("warning","dark",u?.warning),...X("success","dark",u?.success),...X("neutral","dark",u?.neutral),surface:u?.surface,background:u?.background,foreground:u?.foreground},h={surface:l?.surface||"#fff",...X("primary","light",l?.primary||"#5FA425"),...X("error","light",l?.error||"#FF0000"),...X("warning","light",l?.warning||"#F5A623"),...X("success","light",l?.success||"#0070F3"),...X("neutral","light",c),background:f,foreground:T},S=an({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"}`}}),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 ${u?.neutral||"#222"}, 0px 6px 10px 3px ${u?.neutral||"#222"}, 0px 1px 18px 3px ${u?.neutral||"#222"}`}}),[C,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 d=wt(e);return pi(()=>{let{classList:E}=document.body;d&&E.remove(`font_${d.replace(/ /g,"")}`),E.add(`font_${e.replace(/ /g,"")}`)},[e]),{activeTheme:i(()=>s==="auto"?C==="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(),l=di(()=>gi({API_KEY:Ae("API_KEY")}),[]),{blockchains:u}=k.use.meta(),f={blockchains:x.use.connectedWallets().map(d=>({accounts:[d],name:d.chain}))},T=i((d,B)=>{if(r(d,B))return s(d,B)},"switchNetwork"),y=i(d=>!!a(d).mobileWallet,"isMobileWallet"),h=u.filter(d=>d.enabled).reduce((d,B)=>(d[B.name]=B,d),{}),S=u.filter(yi),w=i(d=>{let{supportedChains:B}=a(d);return Be(B)},"getSupportedChainNames"),C=e(),m={meta:{blockchains:h,evmBasedChains:S,evmNetworkChainInfo:Ti(S),getSupportedChainNames:w},getSigners:o,wallets:f,providers:C,switchNetwork:T,canSwitchNetworkTo:r,connect:s,state:n,isMobileWallet:y};return mi.createElement(fi,{queuesDefs:[l],context:m,onPersistedDataLoaded:d=>{hi(d)},isPaused:!1},t.children)}i(Ci,"QueueManager");var cn=Ci;import mn from"react";import{Events as bt,Provider as wi}from"@rango-dev/wallets-core";import{isEvmBlockchain as bi}from"rango-sdk";import{useEffect as ki}from"react";function pn(t){let e=x.use.clearConnectedWallet(),o=He(void 0);return ki(()=>{e(),o=He(t)},[t]),{providers:o}}i(pn,"useWalletProviders");import{createContext as Wi,useRef as Ai}from"react";var Wt=Wi({onConnectWallet:()=>{}});function At(t){let{blockchains:e}=k.use.meta(),{providers:o}=pn(t.providers),n=x.use.disconnectWallet(),s=x.use.connectWallet(),r=Ai(),a=e.filter(bi).map(u=>u.name),l=i((u,c,f,T,y)=>{if(c===bt.ACCOUNTS)if(f){let h=Be(y),S=zt(u,f,a,h);s(S)}else n(u);if(c===bt.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===bt.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,y)},"onUpdateState");return mn.createElement(Wt.Provider,{value:{onConnectWallet:u=>{r.current=u}}},mn.createElement(wi,{allBlockChains:e,providers:o,onUpdateState:l,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=x.use.connectedWallets(),e=x.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 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}i(fn,"WidgetEvents");var Oi=Ii("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(),l=L.use.currentPage(),u=Mi(Wt);return Ui(()=>{e?.apiKey&&Dt({API_KEY:e?.apiKey})},[e]),Fi(()=>{u.onConnectWallet(s)},[]),oe.createElement(Ri,{language:e?.language},oe.createElement(Oi,{id:"swap-container",className:o},oe.createElement(cn,null,oe.createElement(fn,null),oe.createElement(Ni,{fixedHeight:l!==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},oe.createElement(hn,{...t}))}i(Di,"Widget");import{useWallets as qf}from"@rango-dev/wallets-core";import{useEvents as Gf,MainEvents as zf,RouteEventType as eg,StepEventType as ug,StepExecutionEventStatus as cg,StepExecutionBlockedEventStatus as pg}from"@rango-dev/queue-manager-rango-preset";export{zf as MainEvents,eg as RouteEventType,ug as StepEventType,pg as StepExecutionBlockedEventStatus,cg as StepExecutionEventStatus,Di as Widget,At as WidgetWallets,qf as useWallets,Gf as useWidgetEvents};
|
|
1
|
+
var wn=Object.defineProperty;var i=(t,e)=>wn(t,"name",{value:e,configurable:!0});import{SwapContainer as Ni,styled as Ri,I18nManager as Mi}from"@rango-dev/ui";import oe,{useContext as Fi,useEffect as Ui,useMemo as Oi,useState as hn}from"react";import Le,{Fragment as tr}from"react";import{MemoryRouter as or,useInRouterContext as nr}from"react-router";import{useQueueManager as rr}from"@rango-dev/queue-manager-rango-preset";import{useEffect as rt,useRef as st}from"react";import{createSearchParams as Jn,useLocation as Zn,useSearchParams as er}from"react-router-dom";import{create as Kn}from"zustand";import re from"bignumber.js";import bn from"bignumber.js";var D=new bn(0);import Qi 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 Et(t,e){let o;return n;function n(...s){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...s)},e)}}i(Et,"debounce");import{BigNumber as Bt}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 Bt(t),s=1,r=1e3;for(let a=0;a<60;a++)if(new Bt(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 Ut(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(Ut,"getFormatedPendingSwap");var Ot=i((t,e)=>t?"loading":e?"failed":"success","getBestRouteStatus");var Wn=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=Wn;import{subscribeWithSelector as jn}from"zustand/middleware";import{RangoClient as vn}from"rango-sdk";var An="c6381a79-2817-4602-83bf-6a641a409e32",Ze={API_KEY:An};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 vn(Ae("API_KEY")),ve),"httpService");import{create as En}from"zustand";import{persist as Bn,subscribeWithSelector as Pn}from"zustand/middleware";var Lt=[.5,1,3,5,8,13,20],_t=1,qt=5,$t=100,Vt=0;import{create as xn}from"zustand";var k=Y(xn()(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 A=Y(En()(Bn(Pn(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}=k.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 In,isEvmAddress as Nn,KEPLR_COMPATIBLE_WALLETS as Rn,detectInstallLink as Mn,WalletTypes as Fn,Networks as Ht}from"@rango-dev/wallets-shared";import{WalletState as J}from"@rango-dev/ui";import{isCosmosBlockchain as Un}from"rango-types";import{readAccountAddress as On}from"@rango-dev/wallets-core";import xe from"bignumber.js";function Dn(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(Dn,"getStateWallet");var Ln=[Fn.LEAP];function Gt(t,e,o){return o.filter(n=>!Ln.includes(n)).map(n=>{let{name:s,img:r,installLink:a,showOnMobile:l}=e(n),u=Dn(t(n));return{name:s,image:r,installLink:Mn(a),state:u,type:n,showOnMobile:!(typeof l>"u")}})}i(Gt,"getlistWallet");function Ee(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Ee,"walletAndSupportedChainsNames");function zt(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)}}i(r,"addAccount");let a=n||[];return e.forEach(l=>{let{address:u,network:c}=On(l),f=a.length>0,T=a.includes(c),y=c===Ht.Unknown;if(f&&!T&&!y)return;let S=c===Ht.Unknown&&Nn(u);if(y&&!S)return;o.includes(c)||S?a.filter(m=>o.includes(m)).forEach(m=>{r(m,u.toLowerCase())}):r(c,u)}),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,l=r.to.blockchain;e.includes(a)||e.push(a),e.includes(l)||e.push(l)})}),e}i(pe,"getRequiredChains");function Be(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(Be,"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(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 xe(l.amount.amount).shiftedBy(-l.amount.decimals).toFixed(),logo:"",usdPrice:qn(s,l.asset.symbol,l.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(l=>l.address===a.address&&l.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(l=>{r.address===l&&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 _n(s)},"calculateWalletUsdValue");function _n(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(_n,"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"),qn=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=In(Object.entries(t).map(([,n])=>n).filter(Un));return o&&!!o[e]},"isExperimentalChain"),et=i(t=>{let e=new Set(t.map(o=>o.walletType));return Rn.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 Ue(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(Ue,"hasLimitError");function Zt(t){if(!t)return{swap:null,fromAmountRangeError:"",recommendation:""};let e=(t?.result?.swaps||[]).filter(l=>{let u=l.fromAmountMinValue?new q(l.fromAmountMinValue):null,c=l.fromAmountMaxValue?new q(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 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,l,u){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}:!u||u==="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}:l?{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 $n=i((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice");function Vn(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=$n(s.asset.blockchain,s.asset.symbol,s.asset.address,e);o=o.plus(new q(s.amount).multipliedBy(r||0))}return o}i(Vn,"getUsdFeeOfStep");function Oe(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus(Vn(n,e)),D)||null}i(Oe,"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,l,u,c,f,T){let y=s.reduce((m,d)=>(m[d.chain]=d.address,m),{}),h=[];n.forEach(m=>{let d=h.find(E=>E.blockchain===m.chain);d?d.addresses.push(m.address):h.push({blockchain:m.chain,addresses:[m.address]})});let S=!!f,w=H((f?.result?.swaps||[]).reduce((m,d)=>(m.push(d.from.blockchain,d.to.blockchain),d.internalSwaps&&Array.isArray(d.internalSwaps)&&d.internalSwaps.map(E=>{m.push(E.from.blockchain,E.to.blockchain)}),m),[]));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: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,l=W(new q(r.currentAmount.amount).shiftedBy(-r.currentAmount.decimals),8),u=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 ${u} ${a}${c}, but you have ${l} ${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(k.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 Hn}from"zustand";import{subscribeWithSelector as Gn}from"zustand/middleware";import{shallow as zn}from"zustand/shallow";var x=Y(Hn()(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=pe(p.getState().bestRoute),s=o.connectedWallets,r=[];return n.forEach(a=>{if(!!!o.selectedWallets.find(u=>u.chain===a)){let u=s.find(c=>c.chain===a);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(a=>({connectedWallets:a.connectedWallets.map(l=>o.find(u=>Pe(u,l))?{...l,loading:!0}:l)}));try{let a=o.map(({address:c,chain:f})=>({address:c,blockchain:f})),u=(await ae().getWalletsDetails(a)).wallets;if(u)t(c=>({connectedWallets:c.connectedWallets.map(f=>{let T=o.find(h=>Pe(h,f)),y=u.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(l=>({connectedWallets:l.connectedWallets.map(u=>o.find(c=>Pe(c,u))?jt(u):u)}))}}}))));x.subscribe(t=>t.connectedWallets,t=>{p.setState(({sourceTokens:e,destinationTokens:o})=>{let n=Ne(e,t),s=Ne(o,t);return{sourceTokens:Ie(n),destinationTokens:Ie(s)}})},{equalityFn:zn});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"),p=Y(Kn()(jn(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=k.getState().meta.tokens,r=x.getState().connectedWallets,a=fe(e,s,r,n.destinationTokens),l=tt(a,n.toToken);return{fromChain:e,sourceTokens:a,...o&&{fromToken:l},...!!n.inputAmount&&{inputUsdValue:he(l,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=k.getState().meta.tokens,r=x.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}=k.getState().meta,s=x.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],l=e.steps[e.steps.length-1],u=n.find(w=>w.name===a.fromBlockchain)||null,c=n.find(w=>w.name===l.toBlockchain)||null,f=o.find(w=>j(w,{blockchain:a.fromBlockchain,symbol:a.fromSymbol,address:a.fromSymbolAddress})),T=o.find(w=>j(w,{blockchain:l.toBlockchain,symbol:l.toSymbol,address:l.toSymbolAddress})),y=fe(u,o,s,[]),h=fe(c,o,s,[]),S=e.inputAmount;t({fromChain:u,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()||"")}))})))),Qn=i((t,e)=>{let o=null,n=i(()=>{let{fromToken:a,toToken:l,inputAmount:u,resetRoute:c}=t.getState(),{slippage:f,customSlippage:T,disabledLiquiditySources:y,affiliateRef:h,affiliatePercent:S,affiliateWallets:w}=e.getState();if(!a||!l||!We(u))return;o?.abort(),o=new AbortController;let m=De(a,l,u,[],[],y,T||f,h,S,w);t.getState().loading||c(),ae().getBestRoute(m,{signal:o.signal}).then(d=>{let{setBestRoute:E}=t.getState();E(d),t.setState({loading:!1}),o=null}).catch(d=>{d.code!=="ERR_CANCELED"&&t.setState({error:d.message,loading:!1})})},"fetchBestRoute"),s=Et(n,600),r=i(()=>{let{fromToken:a,toToken:l,inputAmount:u,inputUsdValue:c,resetRoute:f}=p.getState();if(!We(u)||c?.eq(0))return t.setState({loading:!1});if(j(a,l))return t.setState({loading:!1,bestRoute:null,outputAmount:new re(u),outputUsdValue:c});t.getState().loading||f(),s()},"bestRouteParamsListener");return p.subscribe(a=>({fromChain:a.fromChain,fromToken:a.fromToken,toChain:a.toChain,toToken:a.toToken,inputAmount:a.inputAmount}),r,{equalityFn:(a,l)=>!Je({store:"bestRoute",prevState:a,currentState:l})}),A.subscribe(a=>({slippage:a.slippage,customSlippage:a.customSlippage,disabledLiquiditySources:a.disabledLiquiditySources,infiniteApprove:a.infiniteApprove}),r,{equalityFn:(a,l)=>!Je({store:"settings",prevState:a,currentState:l})}),{fetchBestRoute:n}},"bestRoute"),{fetchBestRoute:go}=Qn(p,A);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 Xn}from"zustand";var L=Y(Xn()(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]=er(),n=Zn(),s=st(n.search),r=st({}),a=p.use.fromChain(),l=p.use.toChain(),u=p.use.fromToken(),c=p.use.toToken(),f=p.use.setFromChain(),T=p.use.setFromToken(),y=p.use.setToChain(),h=p.use.setToToken(),S=p.use.inputAmount(),w=p.use.setInputAmount(),C=k.use.loadingStatus(),{blockchains:m,tokens:d}=k.use.meta(),E=L.use.setSelectedSwap();return rt(()=>{let B={};Jn(s.current).forEach((I,M)=>{B[M]=I}),r.current=B;let P=n.pathname.split(g.swaps+"/")[1]||null;P&&E(P)},[]),rt(()=>{if(!t.current){let B="",P="",I="",M="",U="";if(C!=="success")B=r.current["fromChain"],P=r.current["fromToken"],I=r.current["toChain"],M=r.current["toToken"],U=r.current["fromAmount"]||S;else{if(n.state==="redirect")return;B=a?.name||"",P=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),I=l?.name||"",M=(c?.symbol||"")+(c?.address?`--${c?.address}`:""),U=S}o({...B&&{["fromChain"]:B},...P&&{["fromToken"]:P},...I&&{["toChain"]:I},...M&&{["toToken"]:M},...U&&{["fromAmount"]:U.toString()}},{replace:!0})}t.current=!1},[n.pathname,S,a,u,l,c]),rt(()=>{if(C==="success"){let B=e.get("fromChain"),P=e.get("fromToken"),I=e.get("toChain"),M=e.get("toToken"),U=e.get("fromAmount"),z=m.find(N=>N.name===B),ne=je(d,P,z||null),$=m.find(N=>N.name===I),b=je(d,M,$||null);z&&(f(z),ne&&T(ne)),$&&(y($),b&&h(b)),U&&w(U)}},[C]),null}i(ho,"UpdateUrl");import{useWallets as sr}from"@rango-dev/wallets-core";import{isEvmBlockchain as ir}from"rango-types";function So({children:t,...e}){let o=nr(),n=o?tr:or,{blockchains:s}=k.use.meta(),{canSwitchNetworkTo:r}=sr(),a=s.filter(ir);return rr({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 Ys,AddWalletIcon as Js,Typography as Zs,styled as kt,Spinner as ei,Image as ti}from"@rango-dev/ui";import G,{useEffect as Ge}from"react";import{useNavigate as oi}from"react-router-dom";import{useWallets as ni}from"@rango-dev/wallets-core";import Q from"react";import{useRoutes as Qs}from"react-router-dom";import V,{useEffect as Ar,useState as Bo}from"react";import{useNavigate as vr}from"react-router-dom";import{useWallets as xr}from"@rango-dev/wallets-core";import{i18n as $e}from"@lingui/core";import{useInRouterContext as ar,useNavigate as lr}from"react-router-dom";function _(){let t=ar(),e=lr();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 ur,styled as _e,Typography as it,Divider as yo,Image as Co}from"@rango-dev/ui";import{i18n as ko}from"@lingui/core";var cr=_e("div",{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"}),pr=_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%"}}}),wo=_e("span",{width:"24px",height:"24px",backgroundColor:"$neutral100",borderRadius:"99999px"}),mr=_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(ur,{color:"error",size:24}));return F.createElement(cr,null,F.createElement(pr,{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(wo,null),suffix:r,align:"start",size:"large"},n==="success"&&e?e.displayName:ko.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(wo,null),suffix:r,size:"large",align:"start"},n==="success"&&o?o.symbol:ko.t("Token")),F.createElement(yo,{size:12,direction:"horizontal"}),F.createElement("div",{className:"amount"},F.createElement(mr,null,F.createElement(it,{variant:"h4"},t.amount))))))}i(at,"TokenPreview");import{Divider as Po,ConfirmSwap as Er,LoadingFailedAlert as Br,HighSlippageWarning as Pr}from"@rango-dev/ui";import ee from"react";import{styled as dr,ChevronRightIcon as fr,GasIcon as gr,Divider as hr}from"@rango-dev/ui";var Sr=dr("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 Tr(t){if(!t.routes)return null;let e=t.routes.result?.swaps;return ee.createElement(Sr,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(fr,{size:12}),s?ee.createElement("div",{className:"route"},o.to.symbol):null)})),t.totalFee?ee.createElement("div",{className:"fee"},ee.createElement(gr,{size:12}),ee.createElement(hr,{size:4,direction:"horizontal"}),"$",t.totalFee):null)}i(Tr,"RoutesOverview");var bo=Tr;import{useManager as Ir}from"@rango-dev/queue-manager-react";import{useEffect as Cr,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=p.use.fromToken(),e=p.use.toToken(),o=p.use.inputAmount(),n=p.use.bestRoute(),s=p.use.setBestRoute(),r=p.use.inputUsdValue(),a=A.use.affiliateRef(),l=A.use.affiliatePercent(),u=A.use.affiliateWallets(),c=x.use.connectedWallets(),f=x.use.customDestination(),T=x.use.selectedWallets(),y=k.use.meta(),h=A.use.customSlippage(),S=A.use.slippage(),w=A.use.disabledLiquiditySources(),C=h||S,m=lt(!1),d=lt(null),E=lt(null),[B,P]=ut(!1),[I,M]=ut([]),[U,z]=ut([]);return Cr(()=>()=>E.current?.abort(),[]),!t||!e||!o||!n?{loading:!1,warnings:[],errors:[],confirmSwap:null}:{loading:B,warnings:U,errors:I,confirmSwap:i(async()=>{if(m.current){let b={slippage:C.toString(),disabledSwappersGroups:w};return I.length>0&&M([]),U.length>0&&z([]),m.current=!1,d.current?Wo(o.toString(),d.current,ot(T),b,!1,y):void 0}E.current=new AbortController,P(!0);let $=De(t,e,o,c,T,w,C,a,l,u,n,f);try{let b=await ae().getBestRoute($,{signal:E.current?.signal});if(E.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),we=Me(r,K);Fe(r,we)?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(C.toString(),ue)||N.errors.push({type:3,minRequiredSlippage:ue});let ke=N.errors.length===0,ie=N.warnings.length===0;if((ke||!ke&&m.current)&&(ie||!ie&&m.current)){let K={slippage:C.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),d.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 kr,MinRequiredSlippage as wr}from"@rango-dev/ui";import{useNavigate as br}from"react-router-dom";function pt(t){let e=br();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(kr,{messages:o.messages});default:return[]}})}i(pt,"ConfirmSwapErrors");function Eo(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(Eo,"ConfirmSwapWarnings");import mt from"react";import{Typography as Wr}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(Wr,{variant:"caption",color:"$error500"},`(${W(n,0,2)}%)`))}i(qe,"PercentageChange");function Io({customDestinationEnabled:t}){let e=vr(),{navigateBackFrom:o}=_(),n=p.use.bestRoute(),s=p.use.loading(),r=p.use.error(),a=L.use.setSelectedSwap(),{blockchains:l,tokens:u}=k.use.meta(),c=k.use.loadingStatus(),f=x.use.connectedWallets(),T=x.use.selectedWallets(),y=x.use.customDestination(),h=x.use.setCustomDestination(),S=x.use.initSelectedWallets(),w=x.use.setSelectedWallet(),C=A.use.slippage(),m=A.use.customSlippage(),d=p.use.inputUsdValue(),E=p.use.outputUsdValue(),B=p.use.setInputAmount(),[P,I]=Bo(""),M=Ot(s,!!r),[U,z]=Bo(""),{manager:ne}=Ir(),{loading:$,errors:b,warnings:N,confirmSwap:le}=vo(),se=m||C,Ce=!b.find(O=>O.type===3),{getWalletInfo:ue,connect:ke}=xr(),ie=n?.result?.swaps[0],K=n?.result?.swaps[n?.result?.swaps.length-1],we=W(ie?.fromAmount,4,6),vt=W(K?.toAmount,4,6);Ar(()=>{S(),y&&h("")},[]);let Tn=n?.result?.swaps[n?.result?.swaps.length-1].to.blockchain,xt=!!n?.result?.swaps.find(O=>O.from.blockchain===Tn),be=Be(f,T,ue,xt?"":U),yn=i(O=>{let ze=O;et(be).forEach(kn=>ke?.(kn,ze))},"handleConnectChain"),Cn=Oe(n,u);return V.createElement(Er,{requiredWallets:pe(n),selectableWallets:be,setCustomDestination:h,customDestination:y,customDestinationEnabled:t,isValidCustomDestination:po,checkedDestination:!!U,setDestinationChain:z,onBack:o.bind(null,g.confirmSwap),onConfirm:async()=>{le?.().then(async O=>{if(O)try{await ne?.create("swap",{swapDetails:O},{id:O.requestId}),a(O.requestId),e("/"+g.swaps+`/${O.requestId}`,{replace:!0}),setTimeout(()=>{B("")},0)}catch(ze){I("Error: "+ze?.message)}})},isWalletRequired:xt,onChange:O=>w(O),confirmDisabled:c!=="success"||mo(s,U,y,n,be),handleConnectChain:O=>yn(O),isExperimentalChain:O=>et(be).length>0?Xt(l,O):!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:d,amount:we,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:E,amount:vt,label:$e.t("To"),loadingStatus:c!=="success"?c:M,percentageChange:V.createElement(qe,{inputUsdValue:d,outputUsdValue:E})})),previewRoutes:V.createElement(bo,{routes:n,totalFee:W(Cn,0,2)}),loading:$,errors:P?[P,...pt(b)]:pt(b),warnings:Eo(N),extraMessages:V.createElement(V.Fragment,null,c==="failed"&&V.createElement(Br,null),c==="failed"&&Ce&&V.createElement(Po,null),V.createElement(Pr,{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 Nr}from"@rango-dev/ui";import{useManager as Rr}from"@rango-dev/queue-manager-react";import Mr from"react";import{useNavigate as Fr}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=Fr(),{navigateBackFrom:o}=_(),{manager:n,state:s}=Rr(),r=Ve(n).map(({swap:l})=>l),a=!s.loadedFromPersistor;return Mr.createElement(Nr,{list:r,groupBy:Ro,loading:a,onSwapClick:l=>{t(l),e(`${l}`,{replace:!0})},onBack:o.bind(null,g.swaps)})}i(Mo,"HistoryPage");import{Alert as Lo,BestRoute as Kr,BottomLogo as jr,Button as _o,styled as de,Typography as qo,VerticalSwapIcon as Qr,Header as Xr,HeaderButtons as Yr}from"@rango-dev/ui";import R,{useEffect as Jr,useState as Zr}from"react";import{i18n as es}from"@lingui/core";import{useInRouterContext as ts,useNavigate as os}from"react-router-dom";import v from"react";import{AngleDownIcon as Ur,Button as dt,InfoCircleIcon as Or,styled as Te,TextField as Dr,Typography as Se,Image as Fo,Divider as ft}from"@rango-dev/ui";import{useNavigate as Lr}from"react-router-dom";import{Trans as gt}from"@lingui/react";import{i18n as ht}from"@lingui/core";var _r=Te("div",{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"}),qr=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"}}}),$r=Te("div",{display:"flex",justifyContent:"flex-end",".balance":{display:"flex",alignItems:"center"}}),Uo=Te("span",{width:"24px",height:"24px",backgroundColor:"$neutral100",borderRadius:"99999px"}),Vr=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=k.use.loadingStatus(),r=p.use.fromChain(),a=p.use.toChain(),l=p.use.inputUsdValue(),u=p.use.fromToken(),c=p.use.setInputAmount(),f=p.use.bestRoute(),T=p.use.inputAmount(),y=x.use.connectedWallets(),h=p.use.loading(),S=Lr(),w=r&&u?W(ce(y,r?.name,u?.symbol,u?.address)?.amount||"0",8):"0",C=r&&u?W(ce(y,r?.name,u?.symbol,u?.address)?.amount||"0",ce(y,r?.name,u?.symbol,u?.address)?.decimal):"0",m=v.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"}},s==="failed"&&v.createElement(Or,{color:"error",size:24}),v.createElement(Ur,null));return v.createElement(_r,null,v.createElement(qr,{type:t.type==="From"?"filled":"outlined"},v.createElement("div",{className:"head"},v.createElement(Se,{variant:"body2",color:"neutral800"},e==="From"?v.createElement(gt,{id:"swap from",message:"From"}):v.createElement(gt,{id:"swap to",message:"To"})),t.type==="From"?v.createElement($r,null,v.createElement("div",{className:"balance",onClick:()=>{w!=="0"&&c(C.split(",").join(""))}},v.createElement(Se,{variant:"body3",color:"neutral600"},ht.t("Balance"),": ",w," ",u?.symbol||""),v.createElement(ft,{size:4}),v.createElement(dt,{type:"primary",variant:"ghost",size:"compact"},v.createElement(gt,{id:"maximum amount of asset",message:"Max"})))):v.createElement("div",{className:"output-usd"},v.createElement(qe,{inputUsdValue:l,outputUsdValue:t.outputUsdValue}),v.createElement("div",null,v.createElement(Se,{variant:"caption",color:"neutral600"},`$${W(t.outputUsdValue)}`)))),v.createElement("div",{className:"form"},v.createElement(dt,{className:"selectors",onClick:()=>{S(`${t.type.toLowerCase()}-chain`)},variant:"outlined",disabled:s==="failed",loading:s==="loading",prefix:s==="success"&&o?v.createElement(Fo,{src:o.logo,size:24}):v.createElement(Uo,null),suffix:m,align:"start",size:"large"},s==="success"&&o?o.displayName:ht.t("Chain")),v.createElement(ft,{size:12,direction:"horizontal"}),v.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?v.createElement(Fo,{src:n.image,size:24}):v.createElement(Uo,null),suffix:m,size:"large",align:"start"},s==="success"&&n?n.symbol:ht.t("Token")),v.createElement(ft,{size:12,direction:"horizontal"}),v.createElement("div",{className:"amount"},t.type==="From"?v.createElement(Dr,{type:"number",size:"large",autoFocus:!0,placeholder:"0",style:{position:"relative",backgroundColor:"$background !important"},suffix:v.createElement("span",{style:{position:"absolute",right:"4px",bottom:"2px"}},v.createElement(Se,{variant:"caption",color:"neutral800"},`$${W(l)}`)),value:t.inputAmount||"",min:0,onChange:t.type==="From"?d=>{t.onAmountChange(d.target.value)}:void 0}):v.createElement(Vr,null,v.createElement(Se,{variant:"h4"},h&&"?",!!f?.result&&`\u2248 ${W(t.outputAmount)}`,(!T||T==="0")&&"0"))))))}i(St,"TokenInfo");import{useEffect as Hr,useRef as Gr}from"react";import{useSearchParams as zr}from"react-router-dom";function Oo({count:t}){let e=Gr(!0),[o,n]=zr(),s=p.use.outputAmount();return Hr(()=>{if(e.current)e.current=!1;else{let r=o.get("fromChain"),a=o.get("fromToken"),l=o.get("toChain"),u=o.get("toToken");n({...l&&{["fromChain"]:l},...u&&{["fromToken"]:u},...r&&{["toChain"]:r},...a&&{["toToken"]:a},...s&&{["fromAmount"]:s.toString()}})}},[t]),null}i(Oo,"SwithFromAndTo");var Do={genericServerError:"Error connecting server, please reload the app and try again"};import $o from"bignumber.js";var ns=de("div",{display:"flex",flexDirection:"column"}),rs=de("div",{position:"relative",paddingBottom:"$12"}),ss=de("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)"}),is=de("div",{width:"100%",paddingTop:"$16"}),as=de("div",{width:"100%",paddingTop:"$16"}),ls=de("div",{display:"flex",flexDirection:"column",width:"100%",paddingTop:"$16"});function Vo(){let t=ts(),e=os(),[o,n]=Zr(0),s=p.use.fromChain(),r=p.use.fromToken(),a=p.use.toChain(),l=p.use.toToken(),u=p.use.setInputAmount(),c=p.use.inputUsdValue(),f=p.use.inputAmount(),T=p.use.outputAmount(),y=p.use.outputUsdValue(),h=p.use.bestRoute(),S=k.use.meta().tokens,w=p.use.loading(),C=p.use.error(),m=k.use.loadingStatus(),d=x.use.connectedWallets(),E=L.use.setCurrentPage(),B=p.use.switchFromAndTo(),P=m==="failed"?Do.genericServerError:C,I=!1,M=f&&(!!h||w||C),U=Me(c,y),z=Fe(c,U),{fromAmountRangeError:ne,recommendation:$,swap:b}=Zt(h),N=!to(h,f,c,y),le=eo(m,d,w,h,Ue(h),z,N,I,f),se=Oe(h,S),Ce=oo(se);return Jr(()=>(E(g.home),E.bind(null,"")),[]),R.createElement(ns,null,R.createElement(Xr,{title:es.t("SWAP"),suffix:R.createElement(Yr,{onClickRefresh:h||C?go:void 0,onClickHistory:()=>e(g.swaps),onClickSettings:()=>e(g.settings)})}),R.createElement(rs,null,R.createElement(St,{type:"From",chain:s,token:r,onAmountChange:u,inputAmount:f}),R.createElement(ss,null,R.createElement(_o,{variant:"ghost",onClick:()=>{B(),n(ue=>ue+1)}},R.createElement(Qr,{size:32}),t&&R.createElement(Oo,{count:o})))),R.createElement(St,{type:"To",chain:a,token:l,outputAmount:T?new $o(T):new $o(0),outputUsdValue:y}),M&&R.createElement(is,null,R.createElement(Kr,{error:C,loading:w,data:Ft(h),totalFee:W(se,0,2),feeWarning:Ce,totalTime:Pt(It(h))})),(P||Ue(h))&&R.createElement(as,null,P&&R.createElement(Lo,{type:"error"},P),Ue(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(ls,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(jr,null)))}i(Vo,"Home");import{LiquiditySourcesSelector as us}from"@rango-dev/ui";import cs from"react";function Ho({supportedSwappers:t}){let e=k.use.meta().swappers,o=k.use.loadingStatus(),n=A.use.toggleLiquiditySource(),s=A.use.disabledLiquiditySources(),r=A.use.toggleAllLiquiditySources(),{navigateBackFrom:a}=_(),l=[];return H(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)})}),cs.createElement(us,{toggleAll:r,list:t?l.filter(u=>t.filter(c=>c===u.title).length>0):l,onChange:u=>n(u.title),onBack:a.bind(null,g.liquiditySources),loadingStatus:o})}i(Ho,"LiquiditySourcePage");import ps from"react";import{BlockchainSelector as ms}from"@rango-dev/ui";function Tt(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=p.use.fromChain(),a=p.use.toChain(),l=p.use.setFromChain(),u=p.use.setToChain(),{navigateBackFrom:c}=_();return ps.createElement(ms,{type:e==="from"?"Source":"Destination",list:n,selected:e==="from"?r:a,loadingStatus:s,onChange:f=>{e==="from"?l(f,!0):u(f,!0),c(g.fromChain)},onBack:c.bind(null,g.fromChain)})}i(Tt,"SelectChainPage");import ds from"react";import{TokenSelector as fs}from"@rango-dev/ui";function yt(t){let{navigateBackFrom:e}=_(),{type:o,supportedTokens:n}=t,s=p.use.sourceTokens(),r=p.use.destinationTokens(),a=n?s.filter(h=>n.some(S=>j(S,h))):s,l=n?r.filter(h=>n.some(S=>j(S,h))):r,u=p.use.fromToken(),c=p.use.toToken(),f=p.use.setFromToken(),T=p.use.setToToken(),y=k.use.loadingStatus();return ds.createElement(fs,{type:o==="from"?"Source":"Destination",list:o=="from"?a:l,selected:o==="from"?u:c,onChange:h=>{o==="from"?f(h):T(h),e(g.fromToken)},onBack:e.bind(null,g.fromToken),loadingStatus:y})}i(yt,"SelectTokenPage");import gs from"react";import{Settings as hs}from"@rango-dev/ui";import{useNavigate as Ss}from"react-router-dom";function Go({supportedSwappers:t,singleTheme:e}){let o=A.use.slippage(),n=A.use.setSlippage(),s=A.use.disabledLiquiditySources(),r=A.use.customSlippage(),a=A.use.setCustomSlippage(),l=A.use.theme(),u=A.use.setTheme(),c=k.use.meta().swappers,f=Ss(),{navigateBackFrom:T}=_(),y=A.use.infiniteApprove(),h=A.use.toggleInfiniteApprove(),S=k.use.loadingStatus(),w=[];H(c.map(m=>m.swapperGroup)).map(m=>c.find(d=>d.swapperGroup===m)).find(m=>{if(m)for(let d of m.types)w.push({title:m.swapperGroup,logo:m.logo,type:d,selected:!s.includes(m.swapperGroup)})}),t&&w.filter(m=>t.filter(d=>d===m.title).length>0);let C=t?w.filter(m=>t.filter(d=>d===m.title).length>0):w;return gs.createElement(hs,{slippages:Lt,selectedSlippage:o,onSlippageChange:m=>n(m),onLiquiditySourcesClick:()=>f(g.liquiditySources),onBack:T.bind(null,g.settings),liquiditySources:C,selectedLiquiditySources:C.filter(m=>m.selected),singleTheme:e,customSlippage:r,onCustomSlippageChange:a,minSlippage:Vt,maxSlippage:$t,selectedTheme:l,onThemeChange:u,infiniteApprove:y,toggleInfiniteApprove:h,loadingStatus:S})}i(Go,"SettingsPage");import{Alert as ys,SecondaryPage as Cs,styled as Ct,Wallet as ks,WalletState as jo}from"@rango-dev/ui";import te,{useEffect as Qo,useRef as ws,useState as bs}from"react";import{WalletTypes as Ws,detectMobileScreens as As}from"@rango-dev/wallets-shared";import{useWallets as vs}from"@rango-dev/wallets-core";import{i18n as xs}from"@lingui/core";import{Spinner as Es}from"@rango-dev/ui";import{LoadingFailedAlert as Bs}from"@rango-dev/ui";import{allProviders as Ts}from"@rango-dev/provider-all";var zo="f5196d081862c6f2b81c04520ea9301c";function He(t){let e=Ts({walletconnect2:{WC_PROJECT_ID:zo}});if(t){let o=[];return t.forEach(n=>{if(typeof n=="string"){let s=e.find(r=>r.config.type===n);s?o.push(s):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else o.push(n)}),o}return e}i(He,"matchAndGenerateProviders");function Ko(t){return He(t).map(n=>n.config.type)}i(Ko,"configWalletsToWalletName");var Ps=Ct("div",{display:"grid",gap:".5rem",gridTemplateColumns:" repeat(2, minmax(0, 1fr))",alignContent:"baseline",padding:"0.5rem",overflowY:"auto"}),Is=Ct("div",{display:"flex",justifyContent:"center",width:"100%",position:"absolute",top:"50%"}),Ns=Ct("div",{paddingBottom:"$16"}),Rs=Object.values(Ws);function Xo({supportedWallets:t,multiWallets:e}){let{navigateBackFrom:o}=_(),{state:n,disconnect:s,getWalletInfo:r,connect:a}=vs(),l=Gt(n,r,Ko(t)||Rs),u=ws(),c=As()?l.filter(C=>C.showOnMobile):l;c=Yt(c);let[f,T]=bs(""),y=L.use.toggleConnectWalletsButton(),h=k.use.loadingStatus(),S=i(async C=>{let m=n(C);try{if(f&&T(""),m.connected)await s(C);else{if(!e&&l.find(d=>d.state===jo.CONNECTED))return;await a(C)}}catch(d){T("Error: "+d?.message)}},"onSelectWallet"),w=i(()=>{let C=u.current?.filter(m=>m.state===jo.CONNECTING)||[];for(let m of C)s(m.type)},"disconnectConnectingWallets");return Qo(()=>(y(),()=>{w(),y()}),[]),Qo(()=>{u.current=l},[l]),te.createElement(Cs,{title:xs.t("Select Wallet")||"",textField:!1,onBack:o.bind(null,g.wallets)},te.createElement(te.Fragment,null,f&&te.createElement(Ns,null,te.createElement(ys,{type:"error",title:f})),h==="loading"&&te.createElement(Is,{className:"loader"},te.createElement(Es,{size:24})),h==="failed"&&te.createElement(Bs,null),te.createElement(Ps,null,h==="success"&&c.map((C,m)=>te.createElement(ks,{...C,key:`${m}-${C.type}`,onClick:S})))))}i(Xo,"WalletsPage");import on from"react";import{useManager as Ls}from"@rango-dev/queue-manager-react";import{SwapHistory as _s,useCopyToClipboard as qs}from"@rango-dev/ui";import{cancelSwap as $s,PendingSwapNetworkStatus as Vs}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Hs}from"@rango-dev/wallets-core";import{getCurrentBlockchainOfOrNull as Gs,getCurrentStep as zs,getRelatedWalletOrNull as Ks}from"@rango-dev/queue-manager-rango-preset";function Yo(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(Yo,"timeSince");function Jo(t){return t.finishTime?`${Yo(parseInt(t.finishTime))} ago`:`${Yo(parseInt(t.creationTime))} ago`}i(Jo,"getSwapDate");import{useNavigate as js}from"react-router-dom";import ye from"react";import{SecondaryPage as Ms,Spinner as Fs,Alert as Us,styled as en}from"@rango-dev/ui";import{i18n as Zo}from"@lingui/core";var Os=en("div",{height:"450px"}),Ds=en("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1});function tn(t){let{requestId:e,loading:o,onBack:n}=t;return ye.createElement(Ms,{title:Zo.t("Swap Details"),textField:!1,onBack:n},ye.createElement(Os,null,o?ye.createElement(Ds,null,ye.createElement(Fs,{size:24})):ye.createElement(Us,{type:"secondary",title:Zo.t("swapNotFound",{requestId:e},{message:"Swap with request ID = ${requestId} not found."})})))}i(tn,"SwapDetailsPlaceholder");function nn(){let t=L.use.selectedSwapRequestId(),{canSwitchNetworkTo:e,connect:o,getWalletInfo:n}=Hs(),s=p.use.retry(),r=js(),{navigateBackFrom:a}=_(),[l,u]=qs(2e3),{manager:c,state:f}=Ls(),y=Ve(c).find(({swap:b})=>b.requestId===t),h=i(()=>{let b=c?.get(y?.id);b&&$s(b)},"onCancel"),S=y?.swap,w=!f.loadedFromPersistor;if(!S)return on.createElement(tn,{requestId:t||"",loading:w,onBack:a.bind(null,g.swapDetails)});let C=zs(S),m=C?Gs(S,C):null,d=C?Ks(S,C):null,E=C?.networkStatus,B=lo(S,C),P=nt(C),I=Jo(S),M=co(S),U=i(b=>!!n(b)?.mobileWallet,"isMobileWallet"),ne=E===Vs.WaitingForNetworkChange&&!!m&&!!d?.walletType&&(U(d.walletType)||e(d.walletType,m))?o.bind(null,d.walletType,m):void 0,$=uo(S);return on.createElement(_s,{onBack:a.bind(null,g.swapDetails),pendingSwap:Ut(S),onCopy:u,isCopied:l,onCancel:h,shortMessage:B.shortMessage,detailedMessage:B.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(nn,"SwapDetailsPage");var Xs=i(t=>t.replace("/",""),"getAbsolutePath");function rn(t){let{config:e}=t;return Qs([{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(nn,null)},{path:g.wallets,element:Q.createElement(Xo,{supportedWallets:e?.wallets,multiWallets:typeof e?.multiWallets>"u"?!0:e.multiWallets})},{path:Xs(g.confirmSwap),element:Q.createElement(Io,{customDestinationEnabled:e?.customDestination})}])}i(rn,"AppRoutes");import{i18n as ri}from"@lingui/core";var si=kt("div",{display:"flex",width:"100%",justifyContent:"end",".balance":{display:"flex"}}),ii=kt("div",{display:"flex",paddingLeft:"12px"}),ai=kt("div",{marginLeft:-15,marginRight:"$6","& img":{borderRadius:"50%"}});function sn({config:t}){let e=oi(),{connectedWallets:o,selectedWallets:n}=x(),{getWalletInfo:s}=ni(),r=H(Be(o,n,s).map(B=>B.image)),{blockchains:a,tokens:l}=k.use.meta(),u=p.use.setFromChain(),c=p.use.setFromToken(),f=p.use.setToChain(),T=p.use.setToToken(),y=p.use.setInputAmount(),h=A.use.setAffiliateRef(),S=A.use.setAffiliatePercent(),w=A.use.setAffiliateWallets(),C=Qt(o),m=L.use.connectWalletsButtonDisabled(),d=k.use.loadingStatus(),E=x(fo);return Ge(()=>{if(d==="success"){let B=a.find(I=>I.name===t?.to?.blockchain),P=l.find(I=>j(I,t?.to?.token||null));f(B||null),T(P||null)}},[t?.to?.token,t?.to?.blockchain,d]),Ge(()=>{y(t?.amount?.toString()||"")},[t?.amount]),Ge(()=>{if(d==="success"){let B=a.find(I=>I.name===t?.from?.blockchain),P=l.find(I=>j(I,t?.from?.token||null));u(B||null),c(P||null)}},[t?.from?.token,t?.from?.blockchain,d]),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(si,null,G.createElement(Ys,{size:"small",suffix:G.createElement(Js,{size:20}),variant:"ghost",flexContent:!0,loading:d==="loading",disabled:d==="failed",onClick:()=>{m||e(g.wallets)},prefix:r?.length?G.createElement(ii,null,r.map((B,P)=>G.createElement(ai,{key:P},G.createElement(ti,{src:B,size:24})))):null},G.createElement("div",{className:"balance"},G.createElement(Zs,{variant:"body2"},o?.length?`$${C||0}`:ri.t("Connect Wallet")),E&&G.createElement(ei,null)))),G.createElement(rn,{config:t}))}i(sn,"Layout");import{globalCss as li}from"@rango-dev/ui";var an=i(t=>li({"@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 ln,generateRangeColors as X}from"@rango-dev/ui";import{useState as pi,useEffect as un,useLayoutEffect as mi}from"react";import{useEffect as ui,useRef as ci}from"react";function wt(t){let e=ci();return ui(()=>{e.current=t},[t]),e.current}i(wt,"usePrevious");function cn({colors:t,fontFamily:e="Roboto",borderRadius:o=8,mode:n="auto"}){let s=A.use.theme(),r=k.use.fetchMeta(),a=A.use.setTheme(),l=t?.light,u=t?.dark,c=l?.neutral||"#fafafa",f=l?.background||"#fff",T=l?.foreground||"#000",y={...X("primary","dark",u?.primary),...X("error","dark",u?.error),...X("warning","dark",u?.warning),...X("success","dark",u?.success),...X("neutral","dark",u?.neutral),surface:u?.surface,background:u?.background,foreground:u?.foreground},h={surface:l?.surface||"#fff",...X("primary","light",l?.primary||"#5FA425"),...X("error","light",l?.error||"#FF0000"),...X("warning","light",l?.warning||"#F5A623"),...X("success","light",l?.success||"#0070F3"),...X("neutral","light",c),background:f,foreground:T},S=ln({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"}`}}),w=ln({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 ${u?.neutral||"#222"}, 0px 6px 10px 3px ${u?.neutral||"#222"}, 0px 1px 18px 3px ${u?.neutral||"#222"}`}}),[C,m]=pi("light");un(()=>{(async()=>await r())();let B=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",B),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",B)}},[]),un(()=>{n!=="auto"&&a(n)},[n]);let d=wt(e);return mi(()=>{let{classList:B}=document.body;d&&B.remove(`font_${d.replace(/ /g,"")}`),B.add(`font_${e.replace(/ /g,"")}`)},[e]),{activeTheme:i(()=>s==="auto"?C==="dark"?w:S:s==="dark"?w:S,"getActiveTheme")()}}i(cn,"useTheme");import di,{useMemo as fi}from"react";import{Provider as gi}from"@rango-dev/queue-manager-react";import{makeQueueDefinition as hi,checkWaitingForNetworkChange as Si}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Ti}from"@rango-dev/wallets-core";import{convertEvmBlockchainMetaToEvmChainInfo as yi}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Ci}from"rango-types";function ki(t){let{providers:e,getSigners:o,state:n,connect:s,canSwitchNetworkTo:r,getWalletInfo:a}=Ti(),l=fi(()=>hi({API_KEY:Ae("API_KEY")}),[]),{blockchains:u}=k.use.meta(),f={blockchains:x.use.connectedWallets().map(d=>({accounts:[d],name:d.chain}))},T=i((d,E)=>{if(r(d,E))return s(d,E)},"switchNetwork"),y=i(d=>!!a(d).mobileWallet,"isMobileWallet"),h=u.filter(d=>d.enabled).reduce((d,E)=>(d[E.name]=E,d),{}),S=u.filter(Ci),w=i(d=>{let{supportedChains:E}=a(d);return Ee(E)},"getSupportedChainNames"),C=e(),m={meta:{blockchains:h,evmBasedChains:S,evmNetworkChainInfo:yi(S),getSupportedChainNames:w},getSigners:o,wallets:f,providers:C,switchNetwork:T,canSwitchNetworkTo:r,connect:s,state:n,isMobileWallet:y};return di.createElement(gi,{queuesDefs:[l],context:m,onPersistedDataLoaded:d=>{Si(d)},isPaused:!1},t.children)}i(ki,"QueueManager");var pn=ki;import dn from"react";import{Events as bt,Provider as bi}from"@rango-dev/wallets-core";import{isEvmBlockchain as Wi}from"rango-sdk";import{useEffect as wi}from"react";function mn(t){let e=x.use.clearConnectedWallet(),o=He(void 0);return wi(()=>{e(),o=He(t)},[t]),{providers:o}}i(mn,"useWalletProviders");import{createContext as Ai,useRef as vi}from"react";var Wt=Ai({onConnectWallet:()=>{}});function At(t){let{blockchains:e}=k.use.meta(),{providers:o}=mn(t.providers),n=x.use.disconnectWallet(),s=x.use.connectWallet(),r=vi(),a=e.filter(Wi).map(u=>u.name),l=i((u,c,f,T,y)=>{if(c===bt.ACCOUNTS)if(f){let h=Ee(y),S=zt(u,f,a,h);s(S)}else n(u);if(c===bt.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===bt.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,y)},"onUpdateState");return dn.createElement(Wt.Provider,{value:{onConnectWallet:u=>{r.current=u}}},dn.createElement(bi,{allBlockChains:e,providers:o,onUpdateState:l,autoConnect:!0},t.children))}i(At,"WidgetWallets");import{useEffect as xi}from"react";import{useEvents as Ei,MainEvents as Bi,StepEventType as fn,StepExecutionEventStatus as Pi,isApprovalTX as Ii}from"@rango-dev/queue-manager-rango-preset";function gn(){let t=x.use.connectedWallets(),e=x.use.getWalletsDetails(),o=Ei();return xi(()=>(o.on(Bi.StepEvent,n=>{let{event:s,step:r}=n;if(s.type===fn.TX_EXECUTION&&s.status===Pi.TX_SENT&&!Ii(r)||s.type===fn.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}i(gn,"WidgetEvents");var Di=Ri("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function Sn(t){let{config:e}=t;an(e?.theme?.fontFamily||"Roboto");let{activeTheme:o}=cn(e?.theme||{}),[n,s]=hn(""),[r,a]=hn(),l=L.use.currentPage(),u=Fi(Wt);return Oi(()=>{e?.apiKey&&Dt({API_KEY:e?.apiKey})},[e]),Ui(()=>{u.onConnectWallet(s)},[]),oe.createElement(Mi,{language:e?.language},oe.createElement(Di,{id:"swap-container",className:o},oe.createElement(pn,null,oe.createElement(gn,null),oe.createElement(Ni,{fixedHeight:l!==g.home},oe.createElement(So,{lastConnectedWallet:n,disconnectedWallet:r,clearDisconnectedWallet:()=>{a(void 0)}},oe.createElement(sn,{config:e}))))))}i(Sn,"Main");function Li(t){return t.config?.externalWallets?oe.createElement(Sn,{...t}):oe.createElement(At,{providers:t.config?.wallets},oe.createElement(Sn,{...t}))}i(Li,"Widget");import{useWallets as Hf}from"@rango-dev/wallets-core";import{useEvents as jf,MainEvents as Qf,RouteEventType as ng,StepEventType as mg,StepExecutionEventStatus as dg,StepExecutionBlockedEventStatus as fg}from"@rango-dev/queue-manager-rango-preset";export{Qf as MainEvents,ng as RouteEventType,mg as StepEventType,fg as StepExecutionBlockedEventStatus,dg as StepExecutionEventStatus,Li as Widget,At as WidgetWallets,Hf as useWallets,jf as useWidgetEvents};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|