@rango-dev/widget-embedded 0.5.1-next.22 → 0.5.1-next.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/TokenPreview.d.ts +1 -1
- package/dist/components/TokenPreview.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/store/bestRoute.d.ts +4 -4
- package/dist/store/bestRoute.d.ts.map +1 -1
- package/dist/utils/swap.d.ts +3 -3
- package/dist/utils/swap.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/components/TokenPreview.tsx +1 -1
- package/src/store/bestRoute.ts +7 -5
- package/src/utils/swap.ts +22 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenPreview.d.ts","sourceRoot":"","sources":["../../src/components/TokenPreview.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,SAAS,MAAM,cAAc,CAAC;AA8ErC,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,
|
|
1
|
+
{"version":3,"file":"TokenPreview.d.ts","sourceRoot":"","sources":["../../src/components/TokenPreview.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AASzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,SAAS,MAAM,cAAc,CAAC;AA8ErC,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,EAAE;QACL,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,eAiF5C"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var qn=Object.defineProperty;var i=(t,e)=>qn(t,"name",{value:e,configurable:!0});import{SwapContainer as Ta,styled as ya,I18nManager as Ca}from"@rango-dev/ui";import re,{useContext as wa,useEffect as ka,useMemo as ba,useState as Mn}from"react";import $e,{Fragment as wr}from"react";import{MemoryRouter as kr,useInRouterContext as br}from"react-router";import{useQueueManager as Wr}from"@rango-dev/queue-manager-rango-preset";import{useEffect as at,useRef as lt}from"react";import{createSearchParams as Tr,useLocation as yr,useSearchParams as Cr}from"react-router-dom";import{create as dr}from"zustand";import se from"bignumber.js";import Vn from"bignumber.js";var L=new Vn(0);import Fa from"bignumber.js";function H(t){return Array.from(new Set(t))}i(H,"removeDuplicateFrom");function Xe(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(Xe,"areEqual");function Ot(t,e){let o;return n;function n(...s){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...s)},e)}}i(Ot,"debounce");import{BigNumber as Lt}from"bignumber.js";var Dt=i(t=>{let e=(t%60).toString().padStart(2,"0");return`${parseInt((t/60).toString()).toString().padStart(2,"0")}:${e}`},"secondsToString"),b=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Lt(t),s=1,r=1e3;for(let a=0;a<60;a++)if(new Lt(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 _t=i(t=>t?.result?.swaps?.reduce((e,o)=>e+o.estimatedTimeInSeconds,0)||0,"totalArrivalTime");var Ae=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Ye(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(Ye,"searchParamsToToken");function $t(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i($t,"getBestRouteToTokenUsdPrice");function Ze(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}i(Ze,"isNumberOfSwapsChanged");function Je(t,e){let o=t.result?.swaps.map(s=>s.swapperId)||[],n=e.result?.swaps.map(s=>s.swapperId)||[];return!Xe(o,n)}i(Je,"isRouteSwappersUpdated");function et(t,e){let o=t.result?.swaps.map(s=>s.to.symbol)||[],n=e.result?.swaps.map(s=>s.to.symbol)||[];return!Xe(o,n)}i(et,"isRouteInternalCoinsUpdated");function qt(t,e){return Ze(t,e)||Je(t,e)||et(t,e)}i(qt,"isRouteChanged");function Vt(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(Vt,"getRequiredBalanceOfWallet");function tt(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(tt,"isRouteParametersChanged");function Ht(t){if(!t)return null;let e=(t.result?.swaps||[]).map(o=>({...o,fromAmount:b(o.fromAmount,6,6),toAmount:b(o.toAmount,6,6)}));return{...t,...t.result&&{result:{...t.result,swaps:e}}}}i(Ht,"getFormatedBestRoute");function Gt(t){let e=t.steps.map(o=>({...o,feeInUsd:b(o.feeInUsd,4,4),outputAmount:b(o.outputAmount,6,6),expectedOutputAmountHumanReadable:b(o.expectedOutputAmountHumanReadable,6,6)}));return{...t,inputAmount:b(t.inputAmount,6,6),steps:e}}i(Gt,"getFormatedPendingSwap");var zt=i((t,e)=>t?"loading":e?"failed":"success","getBestRouteStatus");var Hn=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=Hn;import{subscribeWithSelector as fr}from"zustand/middleware";import{RangoClient as zn}from"rango-sdk";var Gn="c6381a79-2817-4602-83bf-6a641a409e32",ot={API_KEY:Gn};function xe(t){return ot[t]}i(xe,"getConfig");function Kt(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ot=e,ot}i(Kt,"initConfig");var Be,ae=i(()=>Be||(Be=new zn(xe("API_KEY")),Be),"httpService");import{create as jn}from"zustand";import{persist as Qn,subscribeWithSelector as Xn}from"zustand/middleware";var jt=[.5,1,3,5,8,13,20],Qt=1,Xt=5,Yt=100,Zt=0;import{create as Kn}from"zustand";var k=Y(Kn()(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 x=Y(jn()(Qn(Xn(t=>({slippage:Qt,customSlippage:null,infiniteApprove:!1,affiliateRef:null,disabledLiquiditySources:[],theme:"auto",setSlippage:e=>t(()=>({slippage:e})),setCustomSlippage:e=>t(()=>({customSlippage:e})),setAffiliateRef:e=>t(()=>({affiliateRef: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 J}from"@lingui/core";import{getCosmosExperimentalChainInfo as Yn,isEvmAddress as Zn,KEPLR_COMPATIBLE_WALLETS as Jn,detectInstallLink as er,WalletTypes as tr,Networks as Jt}from"@rango-dev/wallets-shared";import{WalletState as Z}from"@rango-dev/ui";import{isCosmosBlockchain as or}from"rango-types";import{readAccountAddress as nr}from"@rango-dev/wallets-core";import Ee from"bignumber.js";function rr(t){switch(!0){case t.connected:return Z.CONNECTED;case t.connecting:return Z.CONNECTING;case!t.installed:return Z.NOT_INSTALLED;default:return Z.DISCONNECTED}}i(rr,"getStateWallet");var sr=[tr.LEAP];function eo(t,e,o){return o.filter(n=>!sr.includes(n)).map(n=>{let{name:s,img:r,installLink:a,showOnMobile:l}=e(n),u=rr(t(n));return{name:s,image:r,installLink:er(a),state:u,type:n,showOnMobile:!(typeof l>"u")}})}i(eo,"getlistWallet");function Pe(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Pe,"walletAndSupportedChainsNames");function to(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}=nr(l),f=a.length>0,C=a.includes(c),w=c===Jt.Unknown;if(f&&!C&&!w)return;let y=c===Jt.Unknown&&Zn(u);if(w&&!y)return;o.includes(c)||y?a.filter(d=>o.includes(d)).forEach(d=>{r(d,u.toLowerCase())}):r(c,u)}),s}i(to,"prepareAccountsForWalletStore");function he(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(he,"getRequiredChains");function Ie(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(Ie,"getSelectableWallets");function ge(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(ge,"getBalanceFromWallet");function Ne(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Ne,"isAccountAndWalletMatched");function oo(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 Ee(l.amount.amount).shiftedBy(-l.amount.decimals).toFixed(),logo:"",usdPrice:ar(s,l.asset.symbol,l.asset.address,o)||null}))||[]}}i(oo,"makeBalanceFor");function no(t){return{...t,loading:!1,error:!0}}i(no,"resetConnectedWalletState");var ro=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=b(n?.flatMap(r=>r.accounts)?.flatMap(r=>r?.balances)?.map(r=>new Ee(r?.amount||L).multipliedBy(r?.usdPrice||0))?.reduce((r,a)=>r.plus(a),L)||L).toString();return ir(s)},"calculateWalletUsdValue");function ir(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(ir,"numberWithThousandSeperator");var Re=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"),ar=i((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice"),so=i((t,e)=>{let o=Yn(Object.entries(t).map(([,n])=>n).filter(or));return o&&!!o[e]},"isExperimentalChain"),nt=i(t=>{let e=new Set(t.map(o=>o.walletType));return Jn.filter(o=>e.has(o))},"getKeplrCompatibleConnectedWallets");function Me(t,e){return t.map(({balance:o,...n})=>{let s=b(new Ee(ge(e,n.blockchain,n.symbol,n.address)?.amount||L)),r="";return n.usdPrice&&(r=b(new Ee(ge(e,n.blockchain,n.symbol,n.address)?.amount||L).multipliedBy(n.usdPrice))),{...n,...s!=="0"&&{balance:{amount:s,usdValue:r}}}})}i(Me,"getTokensWithBalance");function Te(t,e,o,n){if(t?.name===n[0]?.name)return n;let r=e.filter(a=>a.blockchain===t?.name);return Re(Me(r,o))}i(Te,"getSortedTokens");function K(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}i(K,"tokensAreEqual");function rt(t,e){let o,n=t[0],s=t[1];return t.length===1?o=n:K(n,e)?o=s:o=n,o}i(rt,"getDefaultToken");function io(t){return t.sort((e,o)=>+(o.state===Z.CONNECTED)-+(e.state===Z.CONNECTED)||+(o.state===Z.DISCONNECTED||o.state===Z.CONNECTING)-+(e.state===Z.DISCONNECTED||e.state===Z.CONNECTING))}i(io,"sortWalletsBasedOnState");import{PendingSwapNetworkStatus as Fe}from"@rango-dev/queue-manager-rango-preset";function Ue(t,e){return t.lte(L)||e.lte(L)?0:e.div(t).minus(1).multipliedBy(100)}i(Ue,"getOutputRatio");function Oe(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))}i(Oe,"outputRatioHasWarning");function Le(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(Le,"hasLimitError");function lo(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: >= ${b(o)} ${e.from.symbol}`,a="Increase your swap amount"):s&&o&&o.gte(e.fromAmount)&&(r=`Required: > ${b(o)} ${e.from.symbol}`,a="Increase your swap amount"),!s&&n&&n.lt(e.fromAmount)?(r=`Required: <= ${b(n)} ${e.from.symbol}`,a="Decrease your swap amount"):s&&n&&n.lte(e.fromAmount)&&(r=`Required: < ${b(n)} ${e.from.symbol}`,a="Decrease your swap amount"),{swap:e,fromAmountRangeError:r,recommendation:a}}i(lo,"LimitErrorMessage");function uo(t,e,o,n,s,r,a,l,u){return t!=="success"?{title:`${J.t("Connect Wallet")}`,disabled:!0}:e.length==0?{title:`${J.t("Connect Wallet")}`,disabled:!1}:o?{title:`${J.t("Finding Best Route...")}`,disabled:!0}:!u||u==="0"?{title:`${J.t("Enter an amount")}`,disabled:!0}:!n||!n.result?{title:`${J.t("Swap")}`,disabled:!0}:s?{title:`${J.t("Limit Error")}`,disabled:!0}:r?{title:`${J.t("Price impact is too high!")}`,disabled:!0}:a?{title:`${J.t("USD price is unknown, price impact might be high!")}`,disabled:!1,hasWarning:!0}:l?{title:`${J.t("The route goes through Ethereum. Continue?")}`,disabled:!1,hasWarning:!0}:{title:`${J.t("Swap")}`,disabled:!1}}i(uo,"getSwapButtonState");function co(t,e,o,n){return!((o.lte(L)||n.lte(L))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}i(co,"canComputePriceImpact");function ao(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(ao,"requiredWallets");var lr=i((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice");function ur(t,e){let o=L;for(let n=0;n<t.fee.length;n++){let s=t.fee[n];if(s.expenseType==="DECREASE_FROM_OUTPUT")continue;let r=lr(s.asset.blockchain,s.asset.symbol,s.asset.address,e);o=o.plus(new q(s.amount).multipliedBy(r||0))}return o}i(ur,"getUsdFeeOfStep");function De(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus(ur(n,e)),L)||null}i(De,"getTotalFeeInUsd");function po(t){return t?!t.lt(new q(30)):!1}i(po,"hasHighFee");function mo(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(mo,"getMinRequiredSlippage");function fo(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(fo,"hasProperSlippage");function _e(t,e,o,n,s,r,a,l,u,c){let f=s.reduce((S,m)=>(S[m.chain]=m.address,S),{}),C=[];n.forEach(S=>{let m=C.find(d=>d.blockchain===S.chain);m?m.addresses.push(S.address):C.push({blockchain:S.chain,addresses:[S.address]})});let w=!!u,h=H((u?.result?.swaps||[]).reduce((S,m)=>(S.push(m.from.blockchain,m.to.blockchain),m.internalSwaps&&Array.isArray(m.internalSwaps)&&m.internalSwaps.map(d=>{S.push(d.from.blockchain,d.to.blockchain)}),S),[]));return{amount:o.toString(),affiliateRef:l,checkPrerequisites:w,from:{address:t.address,blockchain:t.blockchain,symbol:t.symbol},to:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},connectedWallets:C,destination:c||void 0,selectedWallets:f,swapperGroups:r,swappersGroupsExclude:!0,slippage:a.toString(),...w&&{blockchains:h}}}i(_e,"createBestRouteRequestBody");function st(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(st,"getWalletsForNewSwap");function Se(t){return t?.result?.outputAmount||null}i(Se,"getRouteOutputAmount");function ye(t,e){return!t||!e?null:new q(e).div(new q(t)).minus(1).multipliedBy(100)}i(ye,"getPercentageChange");function go(t,e){let o=Se(t),n=Se(e);if(!o||!n)return!1;let s=ye(o,n);return s?s.toNumber()<=-1:!0}i(go,"isOutputAmountChangedALot");function ho(t,e){let o=t.validationStatus,n=he(t);return e.sort((r,a)=>n.indexOf(r.chain)-n.indexOf(a.chain)).flatMap(r=>Vt(r,o)||[]).filter(r=>!r.ok).map(r=>{let a=r.asset.symbol,l=b(new q(r.currentAmount.amount).shiftedBy(-r.currentAmount.decimals),8),u=b(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(ho,"getBalanceWarnings");function So(t,e){return(t?new q(t):L).multipliedBy(e||0)}i(So,"calcOutputUsdValue");function it(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Fe.NetworkChanged}i(it,"isNetworkStatusInWarningState");function To(t,e){let o="bellow button or",n=t.extraMessage,s=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),it(e))switch(n=t.networkStatusExtraMessage||"",s=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case Fe.WaitingForConnectingWallet:n=n||"Waiting for connecting wallet";break;case Fe.WaitingForQueue:n=n||"Waiting for other running tasks to be finished";break;case Fe.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(To,"getSwapMessages");function yo(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(yo,"getLastConvertedTokenInFailedSwap");function Co(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}i(Co,"shouldRetrySwap");function wo(t,e){return(k.getState().meta.blockchains.find(s=>s.name===t)?.addressPatterns||[]).filter(s=>new RegExp(s).test(e)).length>0}i(wo,"isValidCustomDestination");function ko(t,e,o,n,s){return t||!e&&!ao(n).every(r=>s.map(a=>a.chain).includes(r))||!!e&&!o||!!e&&!!o&&!ao(n).filter(r=>r!==e).every(r=>s.map(a=>a.chain).includes(r))}i(ko,"confirmSwapDisabled");import{create as cr}from"zustand";import{subscribeWithSelector as pr}from"zustand/middleware";import{shallow as mr}from"zustand/shallow";var A=Y(cr()(pr((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=he(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=>Ne(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 C=o.find(h=>Ne(h,f)),w=u.find(h=>h.address===f.address&&h.blockChain===f.chain);return w?.failed&&C&&n&&s([C],!1),C&&w?oo(C,w,r):f})}));else throw new Error("Wallet not found")}catch{t(l=>({connectedWallets:l.connectedWallets.map(u=>o.find(c=>Ne(c,u))?no(u):u)}))}}}))));A.subscribe(t=>t.connectedWallets,t=>{p.setState(({sourceTokens:e,destinationTokens:o})=>{let n=Me(e,t),s=Me(o,t);return{sourceTokens:Re(n),destinationTokens:Re(s)}})},{equalityFn:mr});var bo=i(t=>!!t.connectedWallets.find(e=>e.loading),"fetchingBalanceSelector");var Ce=i((t,e)=>new se(e||L).multipliedBy(t?.usdPrice||0),"getUsdValue"),p=Y(dr()(fr(t=>({fromChain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new se(0),outputUsdValue:new se(0),toChain:null,toToken:null,bestRoute:null,loading:!1,error:"",sourceTokens:[],destinationTokens:[],setBestRoute:e=>t(o=>{let n=null,s=L;return Ae(o.inputAmount)?(e&&(n=e.result?.outputAmount?new se(e.result?.outputAmount):null,s=So(e.result?.outputAmount,$t(e)||o.toToken?.usdPrice)),{bestRoute:e,...!!e&&{outputAmount:n,outputUsdValue:s}}):{}}),resetRoute:()=>t(()=>({loading:!0,error:"",bestRoute:null,outputAmount:null,outputUsdValue:new se(0)})),setFromChain:(e,o)=>{t(n=>{if(n.fromChain?.name===e?.name)return{};let s=k.getState().meta.tokens,r=A.getState().connectedWallets,a=Te(e,s,r,n.destinationTokens),l=rt(a,n.toToken);return{fromChain:e,sourceTokens:a,...o&&{fromToken:l},...!!n.inputAmount&&{inputUsdValue:Ce(l,n.inputAmount)}}})},setFromToken:e=>t(o=>({fromToken:e,...!!o.inputAmount&&{inputUsdValue:Ce(e,o.inputAmount)}})),setToChain:(e,o)=>{t(n=>{if(n.toChain?.name===e?.name)return{};let s=k.getState().meta.tokens,r=A.getState().connectedWallets,a=Te(e,s,r,n.destinationTokens);return{toChain:e,destinationTokens:a,...o&&{toToken:rt(a,n.fromToken)}}})},setToToken:e=>t(()=>({toToken:e})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new se(0),outputUsdValue:new se(0),bestRoute:null,error:""},...!!o.fromToken&&{inputUsdValue:Ce(o.fromToken,e)}}))},retry:e=>{let{tokens:o,blockchains:n}=k.getState().meta,s=A.getState().connectedWallets,r=e.status==="failed"?e.steps.findIndex(S=>S.status==="failed"):null;if(r===null||r<0)return;let a=e.steps[0],l=e.steps[e.steps.length-1],u=n.find(S=>S.name===a.fromBlockchain)||null,c=n.find(S=>S.name===l.toBlockchain)||null,f=o.find(S=>K(S,{blockchain:a.fromBlockchain,symbol:a.fromSymbol,address:a.fromSymbolAddress})),C=o.find(S=>K(S,{blockchain:l.toBlockchain,symbol:l.toSymbol,address:l.toSymbolAddress})),w=Te(u,o,s,[]),h=Te(c,o,s,[]),y=e.inputAmount;t({fromChain:u,fromToken:f,inputAmount:y,outputAmount:null,inputUsdValue:Ce(f||null,y),outputUsdValue:new se(0),toChain:c,toToken:C,bestRoute:null,loading:!1,error:"",sourceTokens:w,destinationTokens:h})},switchFromAndTo:()=>t(e=>({fromChain:e.toChain,fromToken:e.toToken,toChain:e.fromChain,toToken:e.fromToken,sourceTokens:e.destinationTokens,destinationTokens:e.sourceTokens,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:Ce(e.toToken,e.outputAmount?.toString()||"")}))})))),gr=i((t,e)=>{let o=null,n=i(()=>{let{fromToken:a,toToken:l,inputAmount:u,resetRoute:c}=t.getState(),{slippage:f,customSlippage:C,disabledLiquiditySources:w,affiliateRef:h}=e.getState();if(!a||!l||!Ae(u))return;o?.abort(),o=new AbortController;let S=_e(a,l,u,[],[],w,C||f,h);t.getState().loading||c(),ae().getBestRoute(S,{signal:o.signal}).then(m=>{let{setBestRoute:d}=t.getState();d(m),t.setState({loading:!1}),o=null}).catch(m=>{m.code!=="ERR_CANCELED"&&t.setState({error:m.message,loading:!1})})},"fetchBestRoute"),s=Ot(n,600),r=i(()=>{let{fromToken:a,toToken:l,inputAmount:u,inputUsdValue:c,resetRoute:f}=p.getState();if(!Ae(u)||c.eq(0))return t.setState({loading:!1});if(K(a,l))return t.setState({loading:!1,bestRoute:null,outputAmount:new se(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)=>!tt({store:"bestRoute",prevState:a,currentState:l})}),x.subscribe(a=>({slippage:a.slippage,customSlippage:a.customSlippage,disabledLiquiditySources:a.disabledLiquiditySources,infiniteApprove:a.infiniteApprove}),r,{equalityFn:(a,l)=>!tt({store:"settings",prevState:a,currentState:l})}),{fetchBestRoute:n}},"bestRoute"),{fetchBestRoute:Wo}=gr(p,x);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 hr}from"zustand";var _=Y(hr()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",toggleConnectWalletsButton:()=>t(e=>({connectWalletsButtonDisabled:!e.connectWalletsButtonDisabled})),setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function vo(){let t=lt(!0),[e,o]=Cr(),n=yr(),s=lt(n.search),r=lt({}),a=p.use.fromChain(),l=p.use.toChain(),u=p.use.fromToken(),c=p.use.toToken(),f=p.use.setFromChain(),C=p.use.setFromToken(),w=p.use.setToChain(),h=p.use.setToToken(),y=p.use.inputAmount(),S=p.use.setInputAmount(),m=k.use.loadingStatus(),{blockchains:d,tokens:T}=k.use.meta(),B=_.use.setSelectedSwap();return at(()=>{let v={};Tr(s.current).forEach((U,F)=>{v[F]=U}),r.current=v;let I=n.pathname.split(g.swaps+"/")[1]||null;I&&B(I)},[]),at(()=>{if(!t.current){let v="",I="",U="",F="",D="";if(m!=="success")v=r.current["fromChain"],I=r.current["fromToken"],U=r.current["toChain"],F=r.current["toToken"],D=r.current["fromAmount"]||y;else{if(n.state==="redirect")return;v=a?.name||"",I=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),U=l?.name||"",F=(c?.symbol||"")+(c?.address?`--${c?.address}`:""),D=y}o({...v&&{["fromChain"]:v},...I&&{["fromToken"]:I},...U&&{["toChain"]:U},...F&&{["toToken"]:F},...D&&{["fromAmount"]:D.toString()}},{replace:!0})}t.current=!1},[n.pathname,y,a,u,l,c]),at(()=>{if(m==="success"){let v=e.get("fromChain"),I=e.get("fromToken"),U=e.get("toChain"),F=e.get("toToken"),D=e.get("fromAmount"),X=d.find(z=>z.name===v),E=Ye(T,I,X||null),P=d.find(z=>z.name===U),M=Ye(T,F,P||null);X&&(f(X),E&&C(E)),P&&(w(P),M&&h(M)),D&&S(D)}},[m]),null}i(vo,"UpdateUrl");import{useWallets as vr}from"@rango-dev/wallets-core";import{isEvmBlockchain as Ar}from"rango-types";function Ao({children:t,...e}){let o=br(),n=o?wr:kr,{blockchains:s}=k.use.meta(),{canSwitchNetworkTo:r}=vr(),a=s.filter(Ar);return Wr({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:a,canSwitchNetworkTo:r}),$e.createElement($e.Fragment,null,$e.createElement(n,null,t),o&&$e.createElement(vo,null))}i(Ao,"AppRouter");import{Button as Oi,AddWalletIcon as Li,Typography as Di,styled as It,Spinner as _i,Image as $i}from"@rango-dev/ui";import G,{useEffect as je}from"react";import{useNavigate as qi}from"react-router-dom";import{useWallets as Vi}from"@rango-dev/wallets-core";import j from"react";import{useRoutes as Fi}from"react-router-dom";import V,{useEffect as rs,useState as Ho}from"react";import{useNavigate as ss}from"react-router-dom";import{useWallets as is}from"@rango-dev/wallets-core";import{i18n as Ge}from"@lingui/core";import{useInRouterContext as xr,useNavigate as Br}from"react-router-dom";function $(){let t=xr(),e=Br();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 R from"react";import{Button as xo,InfoCircleIcon as Er,styled as qe,Typography as ut,Divider as Bo,Image as Eo}from"@rango-dev/ui";import{i18n as Po}from"@lingui/core";var Pr=qe("div",{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"}),Ir=qe("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%"}}}),Io=qe("span",{width:"24px",height:"24px",backgroundColor:"$neutral100",borderRadius:"99999px"}),Nr=qe("div",{windth:"100%",height:"$48",borderRadius:"$5",backgroundColor:"$surface",border:"1px solid transparent",position:"relative",display:"flex",alignItems:"center",paddingLeft:"$8",paddingRight:"$8"});function ct(t){let{chain:e,token:o,loadingStatus:n,percentageChange:s}=t,r=R.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"}},n==="failed"&&R.createElement(Er,{color:"error",size:24}));return R.createElement(Pr,null,R.createElement(Ir,{type:"outlined"},R.createElement("div",{className:"head"},R.createElement(ut,{variant:"body2",color:"neutral800"},t.label),R.createElement("div",null,s,t.usdValue&&R.createElement(ut,{variant:"caption",color:"neutral600",className:"usd-value"},`$${b(t.usdValue)}`))),R.createElement("div",{className:"form"},R.createElement(xo,{className:"selectors",variant:"outlined",loading:n==="loading",prefix:n==="success"&&e?R.createElement(Eo,{src:e.logo,size:24}):R.createElement(Io,null),suffix:r,align:"start",size:"large"},n==="success"&&e?e.displayName:Po.t("Chain")),R.createElement(Bo,{size:12,direction:"horizontal"}),R.createElement(xo,{className:"selectors",variant:"outlined",loading:n==="loading",prefix:n==="success"&&o?R.createElement(Eo,{src:o.image,size:24}):R.createElement(Io,null),suffix:r,size:"large",align:"start"},n==="success"&&o?o.symbol:Po.t("Token")),R.createElement(Bo,{size:12,direction:"horizontal"}),R.createElement("div",{className:"amount"},R.createElement(Nr,null,R.createElement(ut,{variant:"h4"},t.amount))))))}i(ct,"TokenPreview");import{Divider as Go,ConfirmSwap as as,LoadingFailedAlert as ls}from"@rango-dev/ui";import ee from"react";import{styled as Rr,ChevronRightIcon as Mr,GasIcon as Fr,Divider as Ur}from"@rango-dev/ui";var Or=Rr("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 Lr(t){if(!t.routes)return null;let e=t.routes.result?.swaps;return ee.createElement(Or,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(Mr,{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(Ur,{size:4,direction:"horizontal"}),"$",t.totalFee):null)}i(Lr,"RoutesOverview");var No=Lr;import{useManager as us}from"@rango-dev/queue-manager-react";import{useEffect as _r,useRef as pt,useState as mt}from"react";import dt from"bignumber.js";import{calculatePendingSwap as Ro}from"@rango-dev/queue-manager-rango-preset";function Fo(){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=x.use.affiliateRef(),l=A.use.connectedWallets(),u=A.use.customDestination(),c=A.use.selectedWallets(),f=k.use.meta(),C=x.use.customSlippage(),w=x.use.slippage(),h=x.use.disabledLiquiditySources(),y=C||w,S=pt(!1),m=pt(null),d=pt(null),[T,B]=mt(!1),[v,I]=mt([]),[U,F]=mt([]);return _r(()=>()=>d.current?.abort(),[]),!t||!e||!o||!n?{loading:!1,warnings:[],errors:[],confirmSwap:null}:{loading:T,warnings:U,errors:v,confirmSwap:i(async()=>{if(S.current){let E={slippage:y.toString(),disabledSwappersGroups:h};return v.length>0&&I([]),U.length>0&&F([]),S.current=!1,m.current?Ro(o.toString(),m.current,st(c),E,!1,f):void 0}d.current=new AbortController,B(!0);let X=_e(t,e,o,l,c,h,y,a,n,u);try{let E=await ae().getBestRoute(X,{signal:d.current?.signal});if(d.current=null,B(!1),!E.result||!new dt(E.requestAmount).isEqualTo(new dt(o||"-1"))){I(ce=>ce.concat({type:0}));return}let P={errors:[],warnings:[]};if(qt(n,E)){s(E);let ce=new dt(E.result?.outputAmount||"0").multipliedBy(e.usdPrice||0),ie=Ue(r,ce);Oe(r,ie)?P.errors.push({type:1}):go(n,E)?P.warnings.push({type:3,newOutputAmount:b(Se(E)),percentageChange:b(ye(Se(n),Se(E)),null,2)}):et(n,E)?P.warnings.push({type:2}):Ze(n,E)?P.warnings.push({type:0}):Je(n,E)&&P.warnings.push({type:1})}let z=ho(E,c);z.length===0||P.errors.push({type:4,messages:z});let le=mo(n);fo(y.toString(),le)||P.errors.push({type:3,minRequiredSlippage:le});let ue=P.errors.length===0,de=P.warnings.length===0;if((ue||!ue&&S.current)&&(de||!de&&S.current)){let ce={slippage:y.toString(),disabledSwappersGroups:h};return Ro(o.toString(),E,st(c),ce,!1,f)}else S.current||(S.current=!0,I(P.errors),F(P.warnings),m.current=E);return}catch(E){if(E?.code==="ERR_CANCELED")return;let P=E?.response?.status;B(!1),I([{type:2,status:P}]);return}},"confirmSwap")}}i(Fo,"useConfirmSwap");import Do from"react";import{Divider as Gr,Typography as zr,styled as Kr}from"@rango-dev/ui";import ft from"react";import $r from"react";import{Button as qr}from"@rango-dev/ui";import{useNavigate as Vr}from"react-router-dom";import{i18n as Hr}from"@lingui/core";function Ve(){let t=Vr();return $r.createElement(qr,{type:"primary",variant:"outlined",size:"small",onClick:()=>t("/"+g.settings)},Hr.t("Change Slippage"))}i(Ve,"ChangeSlippageButton");import{i18n as jr}from"@lingui/core";var Qr=Kr(zr,{color:"$error500 !important"});function Uo({minRequiredSlippage:t}){return ft.createElement(Qr,{variant:"body2"},jr.t("increaseSlippage",{minRequiredSlippage:t},{message:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route."}),ft.createElement(Gr,{size:8}),ft.createElement(Ve,null))}i(Uo,"MinRequiredSlippage");import{Divider as Xr,styled as gt,Typography as Oo}from"@rango-dev/ui";import pe from"react";import{i18n as Yr}from"@lingui/core";var Zr=gt("ul",{padding:0,margin:0,variants:{showListStyle:{true:{paddingLeft:"$24"}}}}),Jr=gt("li",{variants:{showListStyle:{true:{listStyleType:"disc",listStylePosition:"outside"}}}}),es=gt(Oo,{display:"block"});function Lo({messages:t}){let e=t.length>1;return pe.createElement(pe.Fragment,null,pe.createElement(Oo,{className:"title",variant:"title",color:"error"},Yr.t("Insufficent Balance:")),pe.createElement(Xr,{size:8}),pe.createElement(Zr,{showListStyle:e},t.map((o,n)=>pe.createElement(Jr,{showListStyle:e,key:n},pe.createElement(es,{variant:"body2"},o)))))}i(Lo,"BalanceErrors");function ht(t){return t.flatMap(e=>{switch(e.type){case 0:return"No routes found. Please try again later.";case 2:return`Failed to confirm swap ${e.status?`'status': ${e.status})`:""}, please try again.`;case 1:return"Route updated and price impact is too high, try again later!";case 3:return Do.createElement(Uo,{minRequiredSlippage:e.minRequiredSlippage});case 4:return Do.createElement(Lo,{messages:e.messages});default:return[]}})}i(ht,"ConfirmSwapErrors");function _o(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(_o,"ConfirmSwapWarnings");import St from"react";import{Alert as ts}from"@rango-dev/ui";import $o from"react";import{i18n as os}from"@lingui/core";function qo(t){let{selectedSlippage:e}=t;return $o.createElement(ts,{type:"warning",footer:$o.createElement(Ve,null)},os.t("highSlippage",{selectedSlippage:e},{message:" Caution, your slippage is high (={selectedSlippage}). Your trade may be front run."}))}i(qo,"HighSlippageWarning");function Vo(t){let{selectedSlippage:e}=t,o=e>=Xt;return St.createElement(St.Fragment,null,o&&St.createElement(qo,{selectedSlippage:e}))}i(Vo,"ConfirmSwapExtraMessages");import Tt from"react";import{Typography as ns}from"@rango-dev/ui";function He(t){let{inputUsdValue:e,outputUsdValue:o}=t;if(!e||!o||!o.gt(0))return null;let n=ye(e.toNumber(),o.toNumber()),s=n?.lt(0);return Tt.createElement(Tt.Fragment,null,s&&Tt.createElement(ns,{variant:"caption",color:"$error500"},`(${b(n,0,2)}%)`))}i(He,"PercentageChange");function zo({customDestinationEnabled:t}){let e=ss(),{navigateBackFrom:o}=$(),n=p.use.bestRoute(),s=p.use.loading(),r=p.use.error(),a=_.use.setSelectedSwap(),{blockchains:l,tokens:u}=k.use.meta(),c=k.use.loadingStatus(),f=A.use.connectedWallets(),C=A.use.selectedWallets(),w=A.use.customDestination(),h=A.use.setCustomDestination(),y=A.use.initSelectedWallets(),S=A.use.setSelectedWallet(),m=x.use.slippage(),d=x.use.customSlippage(),T=p.use.inputUsdValue(),B=p.use.outputUsdValue(),v=p.use.setInputAmount(),[I,U]=Ho(""),F=zt(s,!!r),[D,X]=Ho(""),{manager:E}=us(),{loading:P,errors:M,warnings:z,confirmSwap:me}=Fo(),le=d||m,ue=!M.find(O=>O.type===3),{getWalletInfo:de,connect:ce}=is(),ie=n?.result?.swaps[0],fe=n?.result?.swaps[n?.result?.swaps.length-1],Un=b(ie?.fromAmount,4,6),On=b(fe?.toAmount,4,6);rs(()=>{y(),w&&h("")},[]);let Ln=n?.result?.swaps[n?.result?.swaps.length-1].to.blockchain,Ut=!!n?.result?.swaps.find(O=>O.from.blockchain===Ln),ve=Ie(f,C,de,Ut?"":D),Dn=i(O=>{let Qe=O;nt(ve).forEach($n=>ce?.($n,Qe))},"handleConnectChain"),_n=De(n,u);return V.createElement(as,{requiredWallets:he(n),selectableWallets:ve,setCustomDestination:h,customDestination:w,customDestinationEnabled:t,isValidCustomDestination:wo,checkedDestination:!!D,setDestinationChain:X,onBack:o.bind(null,g.confirmSwap),onConfirm:async()=>{me?.().then(async O=>{if(O)try{await E?.create("swap",{swapDetails:O},{id:O.requestId}),a(O.requestId),e("/"+g.swaps+`/${O.requestId}`,{replace:!0}),setTimeout(()=>{v("")},0)}catch(Qe){U("Error: "+Qe?.message)}})},isWalletRequired:Ut,onChange:O=>S(O),confirmDisabled:c!=="success"||ko(s,D,w,n,ve),handleConnectChain:O=>Dn(O),isExperimentalChain:O=>nt(ve).length>0?so(l,O):!1,previewInputs:V.createElement(V.Fragment,null,V.createElement(ct,{chain:{displayName:ie?.from.blockchain||"",logo:ie?.from.blockchainLogo||""},token:{symbol:ie?.from.symbol||"",image:ie?.from.logo||""},usdValue:T,amount:Un,label:Ge.t("From"),loadingStatus:c!=="success"?c:F}),V.createElement(Go,{size:12}),V.createElement(ct,{chain:{displayName:fe?.to.blockchain||"",logo:fe?.to.blockchainLogo||""},token:{symbol:fe?.to.symbol||"",image:fe?.to.logo||""},usdValue:B,amount:On,label:Ge.t("To"),loadingStatus:c!=="success"?c:F,percentageChange:V.createElement(He,{inputUsdValue:T,outputUsdValue:B})})),previewRoutes:V.createElement(No,{routes:n,totalFee:b(_n,0,2)}),loading:P,errors:I?[I,...ht(M)]:ht(M),warnings:_o(z),extraMessages:V.createElement(V.Fragment,null,c==="failed"&&V.createElement(ls,null),c==="failed"&&ue&&V.createElement(Go,null),ue&&V.createElement(Vo,{selectedSlippage:le})),confirmButtonTitle:z.length>0||M.length>0?`${Ge.t("Proceed anyway!")}`:`${Ge.t("Confirm swap!")}`})}i(zo,"ConfirmSwapPage");import{History as cs}from"@rango-dev/ui";import{useManager as ps}from"@rango-dev/queue-manager-react";import ms from"react";import{useNavigate as ds}from"react-router-dom";var ze=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 Ko from"dayjs";var jo=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=Ko();return t.forEach(n=>{let s=Ko(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 Qo(){let t=_.use.setSelectedSwap(),e=ds(),{navigateBackFrom:o}=$(),{manager:n,state:s}=ps(),r=ze(n).map(({swap:l})=>l),a=!s.loadedFromPersistor;return ms.createElement(cs,{list:r,groupBy:jo,loading:a,onSwapClick:l=>{t(l),e(`${l}`,{replace:!0})},onBack:o.bind(null,g.swaps)})}i(Qo,"HistoryPage");import{Alert as rn,BestRoute as Us,Button as sn,styled as be,Typography as an,VerticalSwapIcon as Os,Header as Ls}from"@rango-dev/ui";import N,{useEffect as Ds,useState as _s}from"react";import{i18n as $s}from"@lingui/core";import{useInRouterContext as qs,useNavigate as Vs}from"react-router-dom";import W from"react";import{AngleDownIcon as fs,Button as yt,InfoCircleIcon as gs,styled as ke,TextField as hs,Typography as we,Image as Xo,Divider as Ct}from"@rango-dev/ui";import{useNavigate as Ss}from"react-router-dom";import{Trans as wt}from"@lingui/react";import{i18n as kt}from"@lingui/core";var Ts=ke("div",{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"}),ys=ke("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"}}}),Cs=ke("div",{display:"flex",justifyContent:"flex-end",".balance":{display:"flex",alignItems:"center"}}),Yo=ke("span",{width:"24px",height:"24px",backgroundColor:"$neutral100",borderRadius:"99999px"}),ws=ke("div",{windth:"100%",height:"$48",borderRadius:"$5",backgroundColor:"$surface",border:"1px solid transparent",position:"relative",display:"flex",alignItems:"center",paddingLeft:"$8",paddingRight:"$8"});function bt(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(),C=p.use.inputAmount(),w=A.use.connectedWallets(),h=p.use.loading(),y=Ss(),S=r&&u?b(ge(w,r?.name,u?.symbol,u?.address)?.amount||"0",8):"0",m=r&&u?b(ge(w,r?.name,u?.symbol,u?.address)?.amount||"0",ge(w,r?.name,u?.symbol,u?.address)?.decimal):"0",d=W.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"}},s==="failed"&&W.createElement(gs,{color:"error",size:24}),W.createElement(fs,null));return W.createElement(Ts,null,W.createElement(ys,{type:t.type==="From"?"filled":"outlined"},W.createElement("div",{className:"head"},W.createElement(we,{variant:"body2",color:"neutral800"},e==="From"?W.createElement(wt,{id:"swap from",message:"From"}):W.createElement(wt,{id:"swap to",message:"To"})),t.type==="From"?W.createElement(Cs,null,W.createElement("div",{className:"balance",onClick:()=>{S!=="0"&&c(m.split(",").join(""))}},W.createElement(we,{variant:"body3",color:"neutral600"},kt.t("Balance"),": ",S," ",u?.symbol||""),W.createElement(Ct,{size:4}),W.createElement(yt,{type:"primary",variant:"ghost",size:"compact"},W.createElement(wt,{id:"maximum amount of asset",message:"Max"})))):W.createElement("div",{className:"output-usd"},W.createElement(He,{inputUsdValue:l,outputUsdValue:t.outputUsdValue}),W.createElement("div",null,W.createElement(we,{variant:"caption",color:"neutral600"},`$${b(t.outputUsdValue)}`)))),W.createElement("div",{className:"form"},W.createElement(yt,{className:"selectors",onClick:()=>{y(`${t.type.toLowerCase()}-chain`)},variant:"outlined",disabled:s==="failed",loading:s==="loading",prefix:s==="success"&&o?W.createElement(Xo,{src:o.logo,size:24}):W.createElement(Yo,null),suffix:d,align:"start",size:"large"},s==="success"&&o?o.displayName:kt.t("Chain")),W.createElement(Ct,{size:12,direction:"horizontal"}),W.createElement(yt,{className:"selectors",onClick:()=>{y(`${t.type.toLowerCase()}-token`)},variant:"outlined",disabled:s==="failed"||e==="From"&&!r||e==="To"&&!a,loading:s==="loading",prefix:s==="success"&&n?W.createElement(Xo,{src:n.image,size:24}):W.createElement(Yo,null),suffix:d,size:"large",align:"start"},s==="success"&&n?n.symbol:kt.t("Token")),W.createElement(Ct,{size:12,direction:"horizontal"}),W.createElement("div",{className:"amount"},t.type==="From"?W.createElement(hs,{type:"number",size:"large",autoFocus:!0,placeholder:"0",style:{position:"relative",backgroundColor:"$background !important"},suffix:W.createElement("span",{style:{position:"absolute",right:"4px",bottom:"2px"}},W.createElement(we,{variant:"caption",color:"neutral800"},`$${b(l)}`)),value:t.inputAmount||"",min:0,onChange:t.type==="From"?T=>{t.onAmountChange(T.target.value)}:void 0}):W.createElement(ws,null,W.createElement(we,{variant:"h4"},h&&"?",!!f?.result&&`\u2248 ${b(t.outputAmount)}`,(!C||C==="0")&&"0"))))))}i(bt,"TokenInfo");import te from"react";import{styled as Wt}from"@rango-dev/ui";import{Typography as Zo}from"@rango-dev/ui";import{i18n as ks}from"@lingui/core";var bs=Wt("div",{display:"flex",width:"100%",justifyContent:"end",alignItems:"center",paddingTop:"$16"}),Ws=Wt("svg",{fill:"$foreground",width:"$24",margin:"0 $8 0 $16"}),vs=Wt("a",{display:"flex",justifyContent:"center",alignItems:"center",textDecoration:"none"});function Jo(){return te.createElement(bs,null,te.createElement(Zo,{variant:"caption",color:"$neutral600"},ks.t("Powered By")),te.createElement(vs,{href:"https://rango.exchange",target:"_blank"},te.createElement(Ws,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 33.68 29"},te.createElement("defs",null),te.createElement("g",{id:"Layer_2","data-name":"Layer 2"},te.createElement("g",{id:"Layer_1-2","data-name":"Layer 1"},te.createElement("path",{d:"M33.68,18.05A17.93,17.93,0,0,0,28.34,5.29,18.31,18.31,0,0,0,15.45,0H13.54V7.41L6.07,0H.69L9.83,9.07H0V11A17.93,17.93,0,0,0,5.34,23.71,18.32,18.32,0,0,0,18.24,29h1.9V21.59l7.38,7.31h5.39l-9-9h9.82ZM17.37,16.16H12.49a1.93,1.93,0,0,0-1.35.55,1.89,1.89,0,0,0-.56,1.34,1.85,1.85,0,0,0,.56,1.33,1.93,1.93,0,0,0,1.35.55h3.84V25.1A14.43,14.43,0,0,1,8,21a14.21,14.21,0,0,1-4.1-8.2H21.2a1.86,1.86,0,0,0,.74-.13,1.92,1.92,0,0,0,.64-.4,2,2,0,0,0,.43-.62,1.88,1.88,0,0,0,0-1.47,2,2,0,0,0-.43-.62,1.92,1.92,0,0,0-.64-.4,1.86,1.86,0,0,0-.74-.13H17.35V3.9A14.43,14.43,0,0,1,25.64,8a14.19,14.19,0,0,1,4.11,8.2Zm2.12-5.27a1.43,1.43,0,0,1,.26-.83,1.52,1.52,0,0,1,.67-.56,1.55,1.55,0,0,1,.88-.08,1.51,1.51,0,0,1,.77.4,1.54,1.54,0,0,1,.42.77,1.41,1.41,0,0,1-.09.86,1.47,1.47,0,0,1-.55.68,1.56,1.56,0,0,1-.84.25,1.52,1.52,0,0,1-1.52-1.49Z"}),te.createElement("path",{d:"M21.7,11.57a.68.68,0,0,0-.12-.38.64.64,0,0,0-.31-.25.68.68,0,0,0-.75.15.61.61,0,0,0-.19.35.62.62,0,0,0,0,.4.67.67,0,0,0,.25.3.69.69,0,0,0,.39.12.7.7,0,0,0,.49-.2A.68.68,0,0,0,21.7,11.57Z"})))),te.createElement(Zo,{variant:"body2"},"RANGO")))}i(Jo,"BottomLogo");import{useEffect as As,useRef as xs}from"react";import{useSearchParams as Bs}from"react-router-dom";function en({count:t}){let e=xs(!0),[o,n]=Bs(),s=p.use.outputAmount();return As(()=>{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(en,"SwithFromAndTo");import{styled as Es}from"@rango-dev/ui";var tn=Es("div",{display:"flex",flexDirection:"column",width:"100%",paddingTop:"$16"});var on={genericServerError:"Error connecting server, please reload the app and try again"};import ln from"bignumber.js";import oe from"react";import{SettingsIcon as Ps,Tooltip as vt,styled as Is,Button as At,HistoryIcon as Ns,RetryIcon as Rs}from"@rango-dev/ui";import{useNavigate as Ms}from"react-router-dom";import{i18n as xt}from"@lingui/core";var Fs=Is("div",{display:"flex"});function nn(t){let{onClickRefresh:e}=t,o=Ms();return oe.createElement(Fs,null,oe.createElement(vt,{content:xt.t("Refresh")},oe.createElement(At,{variant:"ghost",onClick:e,disabled:!e},oe.createElement(Rs,{size:24,disabled:!e}))),oe.createElement(vt,{content:xt.t("Transactions History")},oe.createElement(At,{variant:"ghost",onClick:()=>o(g.swaps)},oe.createElement(Ns,{size:24}))),oe.createElement(vt,{content:xt.t("Settings")},oe.createElement(At,{variant:"ghost",onClick:()=>o(g.settings)},oe.createElement(Ps,{size:24}))))}i(nn,"HeaderButtons");var Hs=be("div",{display:"flex",flexDirection:"column"}),Gs=be("div",{position:"relative",paddingBottom:"$12"}),zs=be("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)"}),Ks=be("div",{width:"100%",paddingTop:"$16"}),js=be("div",{width:"100%",paddingTop:"$16"});function un(){let t=qs(),e=Vs(),[o,n]=_s(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(),C=p.use.outputAmount(),w=p.use.outputUsdValue(),h=p.use.bestRoute(),y=k.use.meta().tokens,S=p.use.loading(),m=p.use.error(),d=k.use.loadingStatus(),T=A.use.connectedWallets(),B=_.use.setCurrentPage(),v=p.use.switchFromAndTo(),I=d==="failed"?on.genericServerError:m,U=!1,F=f&&(!!h||S||m),D=Ue(c,w),X=Oe(c,D),{fromAmountRangeError:E,recommendation:P,swap:M}=lo(h),z=!co(h,f,c,w),me=uo(d,T,S,h,Le(h),X,z,U,f),le=De(h,y),ue=po(le);return Ds(()=>(B(g.home),B.bind(null,"")),[]),N.createElement(Hs,null,N.createElement(Ls,{title:$s.t("SWAP"),suffix:N.createElement(nn,{onClickRefresh:h||m?Wo:void 0})}),N.createElement(Gs,null,N.createElement(bt,{type:"From",chain:s,token:r,onAmountChange:u,inputAmount:f}),N.createElement(zs,null,N.createElement(sn,{variant:"ghost",onClick:()=>{v(),n(de=>de+1)}},N.createElement(Os,{size:32}),t&&N.createElement(en,{count:o})))),N.createElement(bt,{type:"To",chain:a,token:l,outputAmount:C?new ln(C):new ln(0),outputUsdValue:w}),F&&N.createElement(Ks,null,N.createElement(Us,{error:m,loading:S,data:Ht(h),totalFee:b(le,0,2),feeWarning:ue,totalTime:Dt(_t(h))})),(I||Le(h))&&N.createElement(js,null,I&&N.createElement(rn,{type:"error"},I),Le(h)&&N.createElement(rn,{type:"error",title:`${M?.swapperId} Limit`},N.createElement(N.Fragment,null,N.createElement(an,{variant:"body2"},`${E}, Yours: ${b(M?.fromAmount||null)} ${M?.from.symbol}`),N.createElement(an,{variant:"body2"},P)))),N.createElement(tn,null,N.createElement(sn,{type:"primary",align:"grow",size:"large",disabled:me.disabled,onClick:()=>{me.title==="Connect Wallet"?e(g.wallets):e(g.confirmSwap,{replace:!0})}},me.title),N.createElement(Jo,null)))}i(un,"Home");import{LiquiditySourcesSelector as Qs}from"@rango-dev/ui";import Xs from"react";function cn({supportedSwappers:t}){let e=k.use.meta().swappers,o=k.use.loadingStatus(),n=x.use.toggleLiquiditySource(),s=x.use.disabledLiquiditySources(),r=x.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)})}),Xs.createElement(Qs,{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(cn,"LiquiditySourcePage");import Ys from"react";import{BlockchainSelector as Zs}from"@rango-dev/ui";function Bt(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 Ys.createElement(Zs,{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(Bt,"SelectChainPage");import Js from"react";import{TokenSelector as ei}from"@rango-dev/ui";function Et(t){let{navigateBackFrom:e}=$(),{type:o,supportedTokens:n}=t,s=p.use.sourceTokens(),r=p.use.destinationTokens(),a=n?s.filter(h=>n.some(y=>K(y,h))):s,l=n?r.filter(h=>n.some(y=>K(y,h))):r,u=p.use.fromToken(),c=p.use.toToken(),f=p.use.setFromToken(),C=p.use.setToToken(),w=k.use.loadingStatus();return Js.createElement(ei,{type:o==="from"?"Source":"Destination",list:o=="from"?a:l,selected:o==="from"?u:c,onChange:h=>{o==="from"?f(h):C(h),e(g.fromToken)},onBack:e.bind(null,g.fromToken),loadingStatus:w})}i(Et,"SelectTokenPage");import ti from"react";import{Settings as oi}from"@rango-dev/ui";import{useNavigate as ni}from"react-router-dom";function pn({supportedSwappers:t,singleTheme:e}){let o=x.use.slippage(),n=x.use.setSlippage(),s=x.use.disabledLiquiditySources(),r=x.use.customSlippage(),a=x.use.setCustomSlippage(),l=x.use.theme(),u=x.use.setTheme(),c=k.use.meta().swappers,f=ni(),{navigateBackFrom:C}=$(),w=x.use.infiniteApprove(),h=x.use.toggleInfiniteApprove(),y=k.use.loadingStatus(),S=[];H(c.map(d=>d.swapperGroup)).map(d=>c.find(T=>T.swapperGroup===d)).find(d=>{if(d)for(let T of d.types)S.push({title:d.swapperGroup,logo:d.logo,type:T,selected:!s.includes(d.swapperGroup)})}),t&&S.filter(d=>t.filter(T=>T===d.title).length>0);let m=t?S.filter(d=>t.filter(T=>T===d.title).length>0):S;return ti.createElement(oi,{slippages:jt,selectedSlippage:o,onSlippageChange:d=>n(d),onLiquiditySourcesClick:()=>f(g.liquiditySources),onBack:C.bind(null,g.settings),liquiditySources:m,selectedLiquiditySources:m.filter(d=>d.selected),singleTheme:e,customSlippage:r,onCustomSlippageChange:a,minSlippage:Zt,maxSlippage:Yt,selectedTheme:l,onThemeChange:u,infiniteApprove:w,toggleInfiniteApprove:h,loadingStatus:y})}i(pn,"SettingsPage");import{Alert as si,SecondaryPage as ii,styled as Pt,Wallet as ai,WalletState as dn}from"@rango-dev/ui";import ne,{useEffect as fn,useRef as li,useState as ui}from"react";import{WalletTypes as ci,detectMobileScreens as pi}from"@rango-dev/wallets-shared";import{useWallets as mi}from"@rango-dev/wallets-core";import{i18n as di}from"@lingui/core";import{Spinner as fi}from"@rango-dev/ui";import{LoadingFailedAlert as gi}from"@rango-dev/ui";import{allProviders as ri}from"@rango-dev/provider-all";function Ke(t){let e=ri();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(Ke,"matchAndGenerateProviders");function mn(t){return Ke(t).map(n=>n.config.type)}i(mn,"configWalletsToWalletName");var hi=Pt("div",{display:"grid",gap:".5rem",gridTemplateColumns:" repeat(2, minmax(0, 1fr))",alignContent:"baseline",padding:"0.5rem",overflowY:"auto"}),Si=Pt("div",{display:"flex",justifyContent:"center",width:"100%",position:"absolute",top:"50%"}),Ti=Pt("div",{paddingBottom:"$16"}),yi=Object.values(ci);function gn({supportedWallets:t,multiWallets:e}){let{navigateBackFrom:o}=$(),{state:n,disconnect:s,getWalletInfo:r,connect:a}=mi(),l=eo(n,r,mn(t)||yi),u=li(),c=pi()?l.filter(m=>m.showOnMobile):l;c=io(c);let[f,C]=ui(""),w=_.use.toggleConnectWalletsButton(),h=k.use.loadingStatus(),y=i(async m=>{let d=n(m);try{if(f&&C(""),d.connected)await s(m);else{if(!e&&l.find(T=>T.state===dn.CONNECTED))return;await a(m)}}catch(T){C("Error: "+T?.message)}},"onSelectWallet"),S=i(()=>{let m=u.current?.filter(d=>d.state===dn.CONNECTING)||[];for(let d of m)s(d.type)},"disconnectConnectingWallets");return fn(()=>(w(),()=>{S(),w()}),[]),fn(()=>{u.current=l},[l]),ne.createElement(ii,{title:di.t("Select Wallet")||"",textField:!1,onBack:o.bind(null,g.wallets)},ne.createElement(ne.Fragment,null,f&&ne.createElement(Ti,null,ne.createElement(si,{type:"error",title:f})),h==="loading"&&ne.createElement(Si,{className:"loader"},ne.createElement(fi,{size:24})),h==="failed"&&ne.createElement(gi,null),ne.createElement(hi,null,h==="success"&&c.map((m,d)=>ne.createElement(ai,{...m,key:`${d}-${m.type}`,onClick:y})))))}i(gn,"WalletsPage");import wn from"react";import{useManager as vi}from"@rango-dev/queue-manager-react";import{SwapHistory as Ai,useCopyToClipboard as xi}from"@rango-dev/ui";import{cancelSwap as Bi,PendingSwapNetworkStatus as Ei}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Pi}from"@rango-dev/wallets-core";import{getCurrentBlockchainOfOrNull as Ii,getCurrentStep as Ni,getRelatedWalletOrNull as Ri}from"@rango-dev/queue-manager-rango-preset";function hn(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(hn,"timeSince");function Sn(t){return t.finishTime?`${hn(parseInt(t.finishTime))} ago`:`${hn(parseInt(t.creationTime))} ago`}i(Sn,"getSwapDate");import{useNavigate as Mi}from"react-router-dom";import We from"react";import{SecondaryPage as Ci,Spinner as wi,Alert as ki,styled as yn}from"@rango-dev/ui";import{i18n as Tn}from"@lingui/core";var bi=yn("div",{height:"450px"}),Wi=yn("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1});function Cn(t){let{requestId:e,loading:o,onBack:n}=t;return We.createElement(Ci,{title:Tn.t("Swap Details"),textField:!1,onBack:n},We.createElement(bi,null,o?We.createElement(Wi,null,We.createElement(wi,{size:24})):We.createElement(ki,{type:"secondary",title:Tn.t("swapNotFound",{requestId:e},{message:"Swap with request ID = ${requestId} not found."})})))}i(Cn,"SwapDetailsPlaceholder");function kn(){let t=_.use.selectedSwapRequestId(),{canSwitchNetworkTo:e,connect:o,getWalletInfo:n}=Pi(),s=p.use.retry(),r=Mi(),{navigateBackFrom:a}=$(),[l,u]=xi(2e3),{manager:c,state:f}=vi(),w=ze(c).find(({swap:M})=>M.requestId===t),h=i(()=>{let M=c?.get(w?.id);M&&Bi(M)},"onCancel"),y=w?.swap,S=!f.loadedFromPersistor;if(!y)return wn.createElement(Cn,{requestId:t||"",loading:S,onBack:a.bind(null,g.swapDetails)});let m=Ni(y),d=m?Ii(y,m):null,T=m?Ri(y,m):null,B=m?.networkStatus,v=To(y,m),I=it(m),U=Sn(y),F=Co(y),D=i(M=>!!n(M)?.mobileWallet,"isMobileWallet"),E=B===Ei.WaitingForNetworkChange&&!!d&&!!T?.walletType&&(D(T.walletType)||e(T.walletType,d))?o.bind(null,T.walletType,d):void 0,P=yo(y);return wn.createElement(Ai,{onBack:a.bind(null,g.swapDetails),pendingSwap:Gt(y),onCopy:u,isCopied:l,onCancel:h,shortMessage:v.shortMessage,detailedMessage:v.detailedMessage,currentStepBlockchain:d||"",switchNetwork:E,type:I?"warning":y.extraMessageSeverity||void 0,date:U,...F&&{onRetry:()=>{s(y),setTimeout(()=>{r(g.home)},0)}},...P&&{lastConvertedTokenInFailedSwap:{blockchain:P.blockchain,outputAmount:P.outputAmount||"",symbol:P.symbol}}})}i(kn,"SwapDetailsPage");var Ui=i(t=>t.replace("/",""),"getAbsolutePath");function bn(t){let{config:e}=t;return Fi([{path:g.home,element:j.createElement(un,null)},{path:g.fromChain,element:j.createElement(Bt,{type:"from",supportedChains:e?.from?.blockchains})},{path:g.toChain,element:j.createElement(Bt,{type:"to",supportedChains:e?.to?.blockchains})},{path:g.fromToken,element:j.createElement(Et,{type:"from",supportedTokens:e?.from?.tokens})},{path:g.toToken,element:j.createElement(Et,{type:"to",supportedTokens:e?.to?.tokens})},{path:g.settings,element:j.createElement(pn,{singleTheme:e?.theme?.singleTheme,supportedSwappers:e?.liquiditySources})},{path:g.liquiditySources,element:j.createElement(cn,{supportedSwappers:e?.liquiditySources})},{path:g.swaps,element:j.createElement(Qo,null)},{path:g.swapDetails,element:j.createElement(kn,null)},{path:g.wallets,element:j.createElement(gn,{supportedWallets:e?.wallets,multiWallets:typeof e?.multiWallets>"u"?!0:e.multiWallets})},{path:Ui(g.confirmSwap),element:j.createElement(zo,{customDestinationEnabled:e?.customDestination})}])}i(bn,"AppRoutes");import{i18n as Hi}from"@lingui/core";var Gi=It("div",{display:"flex",width:"100%",justifyContent:"end",".balance":{display:"flex"}}),zi=It("div",{display:"flex",paddingLeft:"12px"}),Ki=It("div",{marginLeft:-15,marginRight:"$6","& img":{borderRadius:"50%"}});function Wn({config:t}){let e=qi(),{connectedWallets:o,selectedWallets:n}=A(),{getWalletInfo:s}=Vi(),r=H(Ie(o,n,s).map(T=>T.image)),{blockchains:a,tokens:l}=k.use.meta(),u=p.use.setFromChain(),c=p.use.setFromToken(),f=p.use.setToChain(),C=p.use.setToToken(),w=p.use.setInputAmount(),h=x.use.setAffiliateRef(),y=ro(o),S=_.use.connectWalletsButtonDisabled(),m=k.use.loadingStatus(),d=A(bo);return je(()=>{if(m==="success"){let T=a.find(v=>v.name===t?.to?.blockchain),B=l.find(v=>K(v,t?.to?.token||null));f(T||null),C(B||null)}},[t?.to?.token,t?.to?.blockchain,m]),je(()=>{w(t?.amount?.toString()||"")},[t?.amount]),je(()=>{if(m==="success"){let T=a.find(v=>v.name===t?.from?.blockchain),B=l.find(v=>K(v,t?.from?.token||null));u(T||null),c(B||null)}},[t?.from?.token,t?.from?.blockchain,m]),je(()=>{h(t?.affiliateRef||null)},[t?.affiliateRef]),G.createElement(G.Fragment,null,G.createElement(Gi,null,G.createElement(Oi,{size:"small",suffix:G.createElement(Li,{size:20}),variant:"ghost",flexContent:!0,loading:m==="loading",disabled:m==="failed",onClick:()=>{S||e(g.wallets)},prefix:r?.length?G.createElement(zi,null,r.map((T,B)=>G.createElement(Ki,{key:B},G.createElement($i,{src:T,size:24})))):null},G.createElement("div",{className:"balance"},G.createElement(Di,{variant:"body2"},o?.length?`$${y||0}`:Hi.t("Connect Wallet")),d&&G.createElement(_i,null)))),G.createElement(bn,{config:t}))}i(Wn,"Layout");import{globalCss as ji}from"@rango-dev/ui";var vn=i(t=>ji({"@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 Q}from"@rango-dev/ui";import{useState as Yi,useEffect as xn,useLayoutEffect as Zi}from"react";import{useEffect as Qi,useRef as Xi}from"react";function Nt(t){let e=Xi();return Qi(()=>{e.current=t},[t]),e.current}i(Nt,"usePrevious");function Bn({colors:t,fontFamily:e="Roboto",borderRadius:o=8,mode:n="auto"}){let s=x.use.theme(),r=k.use.fetchMeta(),a=x.use.setTheme(),l=t?.light,u=t?.dark,c=l?.neutral||"#fafafa",f=l?.background||"#fff",C=l?.foreground||"#000",w={...Q("primary","dark",u?.primary),...Q("error","dark",u?.error),...Q("warning","dark",u?.warning),...Q("success","dark",u?.success),...Q("neutral","dark",u?.neutral),surface:u?.surface,background:u?.background,foreground:u?.foreground},h={surface:l?.surface||"#fff",...Q("primary","light",l?.primary||"#5FA425"),...Q("error","light",l?.error||"#FF0000"),...Q("warning","light",l?.warning||"#F5A623"),...Q("success","light",l?.success||"#0070F3"),...Q("neutral","light",c),background:f,foreground:C},y=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"}`}}),S=An({colors:{...h,...Q("neutral","dark","#111111"),foreground:f,background:C,surface:"#000",...JSON.parse(JSON.stringify(w))},radii:{5:`${o}px`},shadows:{s:`0px 3px 5px 3px ${u?.neutral||"#222"}, 0px 6px 10px 3px ${u?.neutral||"#222"}, 0px 1px 18px 3px ${u?.neutral||"#222"}`}}),[m,d]=Yi("light");xn(()=>{(async()=>await r())();let v=i(I=>{I.matches?d("dark"):d("light")},"switchTheme");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&d("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",v),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",v)}},[]),xn(()=>{n!=="auto"&&a(n)},[n]);let T=Nt(e);return Zi(()=>{let{classList:v}=document.body;T&&v.remove(`font_${T.replace(/ /g,"")}`),v.add(`font_${e.replace(/ /g,"")}`)},[e]),{activeTheme:i(()=>s==="auto"?m==="dark"?S:y:s==="dark"?S:y,"getActiveTheme")()}}i(Bn,"useTheme");import Ji,{useMemo as ea}from"react";import{Provider as ta}from"@rango-dev/queue-manager-react";import{makeQueueDefinition as oa,checkWaitingForNetworkChange as na}from"@rango-dev/queue-manager-rango-preset";import{useWallets as ra}from"@rango-dev/wallets-core";import{convertEvmBlockchainMetaToEvmChainInfo as sa}from"@rango-dev/wallets-shared";import{isEvmBlockchain as ia}from"rango-types";function aa(t){let{providers:e,getSigners:o,state:n,connect:s,canSwitchNetworkTo:r,getWalletInfo:a}=ra(),l=ea(()=>oa({API_KEY:xe("API_KEY")}),[]),{blockchains:u}=k.use.meta(),f={blockchains:A.use.connectedWallets().map(T=>({accounts:[T],name:T.chain}))},C=i((T,B)=>{if(r(T,B))return s(T,B)},"switchNetwork"),w=i(T=>!!a(T).mobileWallet,"isMobileWallet"),h=u.filter(T=>T.enabled).reduce((T,B)=>(T[B.name]=B,T),{}),y=u.filter(ia),S=i(T=>{let{supportedChains:B}=a(T);return Pe(B)},"getSupportedChainNames"),m=e(),d={meta:{blockchains:h,evmBasedChains:y,evmNetworkChainInfo:sa(y),getSupportedChainNames:S},getSigners:o,wallets:f,providers:m,switchNetwork:C,canSwitchNetworkTo:r,connect:s,state:n,isMobileWallet:w};return Ji.createElement(ta,{queuesDefs:[l],context:d,onPersistedDataLoaded:T=>{na(T)},isPaused:!1},t.children)}i(aa,"QueueManager");var En=aa;import In from"react";import{Events as Rt,Provider as ua}from"@rango-dev/wallets-core";import{isEvmBlockchain as ca}from"rango-sdk";import{useEffect as la}from"react";function Pn(t){let e=A.use.clearConnectedWallet(),o=Ke(void 0);return la(()=>{e(),o=Ke(t)},[t]),{providers:o}}i(Pn,"useWalletProviders");import{createContext as pa,useRef as ma}from"react";var Mt=pa({onConnectWallet:()=>{}});function Ft(t){let{blockchains:e}=k.use.meta(),{providers:o}=Pn(t.providers),n=A.use.disconnectWallet(),s=A.use.connectWallet(),r=ma(),a=e.filter(ca).map(u=>u.name),l=i((u,c,f,C,w)=>{if(c===Rt.ACCOUNTS)if(f){let h=Pe(w),y=to(u,f,a,h);s(y)}else n(u);if(c===Rt.ACCOUNTS&&C.connected){let h=`${u}-${C.network}-${f}`;C.connected&&(r.current?r.current(h):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(c===Rt.NETWORK&&C.network){let h=`${u}-${C.network}`;r.current?r.current(h):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(u,c,f,C,w)},"onUpdateState");return In.createElement(Mt.Provider,{value:{onConnectWallet:u=>{r.current=u}}},In.createElement(ua,{allBlockChains:e,providers:o,onUpdateState:l},t.children))}i(Ft,"WidgetWallets");import{useEffect as da}from"react";import{useEvents as fa,MainEvents as ga,StepEventType as Nn,StepExecutionEventStatus as ha,isApprovalTX as Sa}from"@rango-dev/queue-manager-rango-preset";function Rn(){let t=A.use.connectedWallets(),e=A.use.getWalletsDetails(),o=fa();return da(()=>(o.on(ga.StepEvent,n=>{let{event:s,step:r}=n;if(s.type===Nn.TX_EXECUTION&&s.status===ha.TX_SENT&&!Sa(r)||s.type===Nn.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(Rn,"WidgetEvents");var Wa=ya("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function Fn(t){let{config:e}=t;vn(e?.theme?.fontFamily||"Roboto");let{activeTheme:o}=Bn(e?.theme||{}),[n,s]=Mn(""),[r,a]=Mn(),l=_.use.currentPage(),u=wa(Mt);return ba(()=>{e?.apiKey&&Kt({API_KEY:e?.apiKey})},[e]),ka(()=>{u.onConnectWallet(s)},[]),re.createElement(Ca,{language:e?.language},re.createElement(Wa,{id:"swap-container",className:o},re.createElement(En,null,re.createElement(Rn,null),re.createElement(Ta,{fixedHeight:l!==g.home},re.createElement(Ao,{lastConnectedWallet:n,disconnectedWallet:r,clearDisconnectedWallet:()=>{a(void 0)}},re.createElement(Wn,{config:e}))))))}i(Fn,"Main");function va(t){return t.config?.externalWallets?re.createElement(Fn,{...t}):re.createElement(Ft,{providers:t.config?.wallets},re.createElement(Fn,{...t}))}i(va,"Widget");import{useWallets as Ch}from"@rango-dev/wallets-core";import{useEvents as Wh,MainEvents as vh,RouteEventType as Rh,StepEventType as qh,StepExecutionEventStatus as Vh,StepExecutionBlockedEventStatus as Hh}from"@rango-dev/queue-manager-rango-preset";export{vh as MainEvents,Rh as RouteEventType,qh as StepEventType,Hh as StepExecutionBlockedEventStatus,Vh as StepExecutionEventStatus,va as Widget,Ft as WidgetWallets,Ch as useWallets,Wh as useWidgetEvents};
|
|
1
|
+
var qn=Object.defineProperty;var i=(t,e)=>qn(t,"name",{value:e,configurable:!0});import{SwapContainer as Ta,styled as ya,I18nManager as Ca}from"@rango-dev/ui";import re,{useContext as wa,useEffect as ka,useMemo as ba,useState as Mn}from"react";import $e,{Fragment as wr}from"react";import{MemoryRouter as kr,useInRouterContext as br}from"react-router";import{useQueueManager as Wr}from"@rango-dev/queue-manager-rango-preset";import{useEffect as at,useRef as lt}from"react";import{createSearchParams as Tr,useLocation as yr,useSearchParams as Cr}from"react-router-dom";import{create as dr}from"zustand";import se from"bignumber.js";import Vn from"bignumber.js";var L=new Vn(0);import Fa from"bignumber.js";function H(t){return Array.from(new Set(t))}i(H,"removeDuplicateFrom");function Xe(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(Xe,"areEqual");function Ot(t,e){let o;return n;function n(...s){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...s)},e)}}i(Ot,"debounce");import{BigNumber as Lt}from"bignumber.js";var Dt=i(t=>{let e=(t%60).toString().padStart(2,"0");return`${parseInt((t/60).toString()).toString().padStart(2,"0")}:${e}`},"secondsToString"),b=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Lt(t),s=1,r=1e3;for(let a=0;a<60;a++)if(new Lt(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 _t=i(t=>t?.result?.swaps?.reduce((e,o)=>e+o.estimatedTimeInSeconds,0)||0,"totalArrivalTime");var Ae=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Ye(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(Ye,"searchParamsToToken");function $t(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i($t,"getBestRouteToTokenUsdPrice");function Ze(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}i(Ze,"isNumberOfSwapsChanged");function Je(t,e){let o=t.result?.swaps.map(s=>s.swapperId)||[],n=e.result?.swaps.map(s=>s.swapperId)||[];return!Xe(o,n)}i(Je,"isRouteSwappersUpdated");function et(t,e){let o=t.result?.swaps.map(s=>s.to.symbol)||[],n=e.result?.swaps.map(s=>s.to.symbol)||[];return!Xe(o,n)}i(et,"isRouteInternalCoinsUpdated");function qt(t,e){return Ze(t,e)||Je(t,e)||et(t,e)}i(qt,"isRouteChanged");function Vt(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(Vt,"getRequiredBalanceOfWallet");function tt(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(tt,"isRouteParametersChanged");function Ht(t){if(!t)return null;let e=(t.result?.swaps||[]).map(o=>({...o,fromAmount:b(o.fromAmount,6,6),toAmount:b(o.toAmount,6,6)}));return{...t,...t.result&&{result:{...t.result,swaps:e}}}}i(Ht,"getFormatedBestRoute");function Gt(t){let e=t.steps.map(o=>({...o,feeInUsd:b(o.feeInUsd,4,4),outputAmount:b(o.outputAmount,6,6),expectedOutputAmountHumanReadable:b(o.expectedOutputAmountHumanReadable,6,6)}));return{...t,inputAmount:b(t.inputAmount,6,6),steps:e}}i(Gt,"getFormatedPendingSwap");var zt=i((t,e)=>t?"loading":e?"failed":"success","getBestRouteStatus");var Hn=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=Hn;import{subscribeWithSelector as fr}from"zustand/middleware";import{RangoClient as zn}from"rango-sdk";var Gn="c6381a79-2817-4602-83bf-6a641a409e32",ot={API_KEY:Gn};function xe(t){return ot[t]}i(xe,"getConfig");function Kt(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ot=e,ot}i(Kt,"initConfig");var Be,ae=i(()=>Be||(Be=new zn(xe("API_KEY")),Be),"httpService");import{create as jn}from"zustand";import{persist as Qn,subscribeWithSelector as Xn}from"zustand/middleware";var jt=[.5,1,3,5,8,13,20],Qt=1,Xt=5,Yt=100,Zt=0;import{create as Kn}from"zustand";var k=Y(Kn()(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 x=Y(jn()(Qn(Xn(t=>({slippage:Qt,customSlippage:null,infiniteApprove:!1,affiliateRef:null,disabledLiquiditySources:[],theme:"auto",setSlippage:e=>t(()=>({slippage:e})),setCustomSlippage:e=>t(()=>({customSlippage:e})),setAffiliateRef:e=>t(()=>({affiliateRef: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 J}from"@lingui/core";import{getCosmosExperimentalChainInfo as Yn,isEvmAddress as Zn,KEPLR_COMPATIBLE_WALLETS as Jn,detectInstallLink as er,WalletTypes as tr,Networks as Jt}from"@rango-dev/wallets-shared";import{WalletState as Z}from"@rango-dev/ui";import{isCosmosBlockchain as or}from"rango-types";import{readAccountAddress as nr}from"@rango-dev/wallets-core";import Ee from"bignumber.js";function rr(t){switch(!0){case t.connected:return Z.CONNECTED;case t.connecting:return Z.CONNECTING;case!t.installed:return Z.NOT_INSTALLED;default:return Z.DISCONNECTED}}i(rr,"getStateWallet");var sr=[tr.LEAP];function eo(t,e,o){return o.filter(n=>!sr.includes(n)).map(n=>{let{name:s,img:r,installLink:a,showOnMobile:l}=e(n),u=rr(t(n));return{name:s,image:r,installLink:er(a),state:u,type:n,showOnMobile:!(typeof l>"u")}})}i(eo,"getlistWallet");function Pe(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Pe,"walletAndSupportedChainsNames");function to(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}=nr(l),f=a.length>0,C=a.includes(c),w=c===Jt.Unknown;if(f&&!C&&!w)return;let y=c===Jt.Unknown&&Zn(u);if(w&&!y)return;o.includes(c)||y?a.filter(d=>o.includes(d)).forEach(d=>{r(d,u.toLowerCase())}):r(c,u)}),s}i(to,"prepareAccountsForWalletStore");function he(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(he,"getRequiredChains");function Ie(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(Ie,"getSelectableWallets");function ge(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(ge,"getBalanceFromWallet");function Ne(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Ne,"isAccountAndWalletMatched");function oo(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 Ee(l.amount.amount).shiftedBy(-l.amount.decimals).toFixed(),logo:"",usdPrice:ar(s,l.asset.symbol,l.asset.address,o)||null}))||[]}}i(oo,"makeBalanceFor");function no(t){return{...t,loading:!1,error:!0}}i(no,"resetConnectedWalletState");var ro=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=b(n?.flatMap(r=>r.accounts)?.flatMap(r=>r?.balances)?.map(r=>new Ee(r?.amount||L).multipliedBy(r?.usdPrice||0))?.reduce((r,a)=>r.plus(a),L)||L).toString();return ir(s)},"calculateWalletUsdValue");function ir(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(ir,"numberWithThousandSeperator");var Re=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"),ar=i((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice"),so=i((t,e)=>{let o=Yn(Object.entries(t).map(([,n])=>n).filter(or));return o&&!!o[e]},"isExperimentalChain"),nt=i(t=>{let e=new Set(t.map(o=>o.walletType));return Jn.filter(o=>e.has(o))},"getKeplrCompatibleConnectedWallets");function Me(t,e){return t.map(({balance:o,...n})=>{let s=b(new Ee(ge(e,n.blockchain,n.symbol,n.address)?.amount||L)),r="";return n.usdPrice&&(r=b(new Ee(ge(e,n.blockchain,n.symbol,n.address)?.amount||L).multipliedBy(n.usdPrice))),{...n,...s!=="0"&&{balance:{amount:s,usdValue:r}}}})}i(Me,"getTokensWithBalance");function Te(t,e,o,n){if(t?.name===n[0]?.name)return n;let r=e.filter(a=>a.blockchain===t?.name);return Re(Me(r,o))}i(Te,"getSortedTokens");function K(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}i(K,"tokensAreEqual");function rt(t,e){let o,n=t[0],s=t[1];return t.length===1?o=n:K(n,e)?o=s:o=n,o}i(rt,"getDefaultToken");function io(t){return t.sort((e,o)=>+(o.state===Z.CONNECTED)-+(e.state===Z.CONNECTED)||+(o.state===Z.DISCONNECTED||o.state===Z.CONNECTING)-+(e.state===Z.DISCONNECTED||e.state===Z.CONNECTING))}i(io,"sortWalletsBasedOnState");import{PendingSwapNetworkStatus as Fe}from"@rango-dev/queue-manager-rango-preset";function Ue(t,e){return!t||!e||t.lte(L)||e.lte(L)?0:e.div(t).minus(1).multipliedBy(100)}i(Ue,"getOutputRatio");function Oe(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(Oe,"outputRatioHasWarning");function Le(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(Le,"hasLimitError");function lo(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: >= ${b(o)} ${e.from.symbol}`,a="Increase your swap amount"):s&&o&&o.gte(e.fromAmount)&&(r=`Required: > ${b(o)} ${e.from.symbol}`,a="Increase your swap amount"),!s&&n&&n.lt(e.fromAmount)?(r=`Required: <= ${b(n)} ${e.from.symbol}`,a="Decrease your swap amount"):s&&n&&n.lte(e.fromAmount)&&(r=`Required: < ${b(n)} ${e.from.symbol}`,a="Decrease your swap amount"),{swap:e,fromAmountRangeError:r,recommendation:a}}i(lo,"LimitErrorMessage");function uo(t,e,o,n,s,r,a,l,u){return t!=="success"?{title:`${J.t("Connect Wallet")}`,disabled:!0}:e.length==0?{title:`${J.t("Connect Wallet")}`,disabled:!1}:o?{title:`${J.t("Finding Best Route...")}`,disabled:!0}:!u||u==="0"?{title:`${J.t("Enter an amount")}`,disabled:!0}:!n||!n.result?{title:`${J.t("Swap")}`,disabled:!0}:s?{title:`${J.t("Limit Error")}`,disabled:!0}:r?{title:`${J.t("Price impact is too high!")}`,disabled:!0}:a?{title:`${J.t("USD price is unknown, price impact might be high!")}`,disabled:!1,hasWarning:!0}:l?{title:`${J.t("The route goes through Ethereum. Continue?")}`,disabled:!1,hasWarning:!0}:{title:`${J.t("Swap")}`,disabled:!1}}i(uo,"getSwapButtonState");function co(t,e,o,n){return!((!o||!n||o.lte(L)||n.lte(L))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}i(co,"canComputePriceImpact");function ao(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(ao,"requiredWallets");var lr=i((t,e,o,n)=>n?.find(r=>r.blockchain===t&&r.symbol?.toUpperCase()===e?.toUpperCase()&&r.address===o)?.usdPrice||null,"getUsdPrice");function ur(t,e){let o=L;for(let n=0;n<t.fee.length;n++){let s=t.fee[n];if(s.expenseType==="DECREASE_FROM_OUTPUT")continue;let r=lr(s.asset.blockchain,s.asset.symbol,s.asset.address,e);o=o.plus(new q(s.amount).multipliedBy(r||0))}return o}i(ur,"getUsdFeeOfStep");function De(t,e){return t?.result?.swaps.reduce((o,n)=>o.plus(ur(n,e)),L)||null}i(De,"getTotalFeeInUsd");function po(t){return t?!t.lt(new q(30)):!1}i(po,"hasHighFee");function mo(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(mo,"getMinRequiredSlippage");function fo(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(fo,"hasProperSlippage");function _e(t,e,o,n,s,r,a,l,u,c){let f=s.reduce((S,m)=>(S[m.chain]=m.address,S),{}),C=[];n.forEach(S=>{let m=C.find(d=>d.blockchain===S.chain);m?m.addresses.push(S.address):C.push({blockchain:S.chain,addresses:[S.address]})});let w=!!u,h=H((u?.result?.swaps||[]).reduce((S,m)=>(S.push(m.from.blockchain,m.to.blockchain),m.internalSwaps&&Array.isArray(m.internalSwaps)&&m.internalSwaps.map(d=>{S.push(d.from.blockchain,d.to.blockchain)}),S),[]));return{amount:o.toString(),affiliateRef:l,checkPrerequisites:w,from:{address:t.address,blockchain:t.blockchain,symbol:t.symbol},to:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},connectedWallets:C,destination:c||void 0,selectedWallets:f,swapperGroups:r,swappersGroupsExclude:!0,slippage:a.toString(),...w&&{blockchains:h}}}i(_e,"createBestRouteRequestBody");function st(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(st,"getWalletsForNewSwap");function Se(t){return t?.result?.outputAmount||null}i(Se,"getRouteOutputAmount");function ye(t,e){return!t||!e?null:new q(e).div(new q(t)).minus(1).multipliedBy(100)}i(ye,"getPercentageChange");function go(t,e){let o=Se(t),n=Se(e);if(!o||!n)return!1;let s=ye(o,n);return s?s.toNumber()<=-1:!0}i(go,"isOutputAmountChangedALot");function ho(t,e){let o=t.validationStatus,n=he(t);return e.sort((r,a)=>n.indexOf(r.chain)-n.indexOf(a.chain)).flatMap(r=>Vt(r,o)||[]).filter(r=>!r.ok).map(r=>{let a=r.asset.symbol,l=b(new q(r.currentAmount.amount).shiftedBy(-r.currentAmount.decimals),8),u=b(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(ho,"getBalanceWarnings");function So(t,e){return(t?new q(t):L).multipliedBy(e||0)}i(So,"calcOutputUsdValue");function it(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Fe.NetworkChanged}i(it,"isNetworkStatusInWarningState");function To(t,e){let o="bellow button or",n=t.extraMessage,s=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),it(e))switch(n=t.networkStatusExtraMessage||"",s=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case Fe.WaitingForConnectingWallet:n=n||"Waiting for connecting wallet";break;case Fe.WaitingForQueue:n=n||"Waiting for other running tasks to be finished";break;case Fe.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(To,"getSwapMessages");function yo(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(yo,"getLastConvertedTokenInFailedSwap");function Co(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}i(Co,"shouldRetrySwap");function wo(t,e){return(k.getState().meta.blockchains.find(s=>s.name===t)?.addressPatterns||[]).filter(s=>new RegExp(s).test(e)).length>0}i(wo,"isValidCustomDestination");function ko(t,e,o,n,s){return t||!e&&!ao(n).every(r=>s.map(a=>a.chain).includes(r))||!!e&&!o||!!e&&!!o&&!ao(n).filter(r=>r!==e).every(r=>s.map(a=>a.chain).includes(r))}i(ko,"confirmSwapDisabled");import{create as cr}from"zustand";import{subscribeWithSelector as pr}from"zustand/middleware";import{shallow as mr}from"zustand/shallow";var A=Y(cr()(pr((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=he(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=>Ne(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 C=o.find(h=>Ne(h,f)),w=u.find(h=>h.address===f.address&&h.blockChain===f.chain);return w?.failed&&C&&n&&s([C],!1),C&&w?oo(C,w,r):f})}));else throw new Error("Wallet not found")}catch{t(l=>({connectedWallets:l.connectedWallets.map(u=>o.find(c=>Ne(c,u))?no(u):u)}))}}}))));A.subscribe(t=>t.connectedWallets,t=>{p.setState(({sourceTokens:e,destinationTokens:o})=>{let n=Me(e,t),s=Me(o,t);return{sourceTokens:Re(n),destinationTokens:Re(s)}})},{equalityFn:mr});var bo=i(t=>!!t.connectedWallets.find(e=>e.loading),"fetchingBalanceSelector");var Ce=i((t,e)=>t?.usdPrice?new se(e||L).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),p=Y(dr()(fr(t=>({fromChain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new se(0),outputUsdValue:new se(0),toChain:null,toToken:null,bestRoute:null,loading:!1,error:"",sourceTokens:[],destinationTokens:[],setBestRoute:e=>t(o=>{let n=null,s=L;return Ae(o.inputAmount)?(e&&(n=e.result?.outputAmount?new se(e.result?.outputAmount):null,s=So(e.result?.outputAmount,$t(e)||o.toToken?.usdPrice)),{bestRoute:e,...!!e&&{outputAmount:n,outputUsdValue:s}}):{}}),resetRoute:()=>t(()=>({loading:!0,error:"",bestRoute:null,outputAmount:null,outputUsdValue:new se(0)})),setFromChain:(e,o)=>{t(n=>{if(n.fromChain?.name===e?.name)return{};let s=k.getState().meta.tokens,r=A.getState().connectedWallets,a=Te(e,s,r,n.destinationTokens),l=rt(a,n.toToken);return{fromChain:e,sourceTokens:a,...o&&{fromToken:l},...!!n.inputAmount&&{inputUsdValue:Ce(l,n.inputAmount)}}})},setFromToken:e=>t(o=>({fromToken:e,...!!o.inputAmount&&{inputUsdValue:Ce(e,o.inputAmount)}})),setToChain:(e,o)=>{t(n=>{if(n.toChain?.name===e?.name)return{};let s=k.getState().meta.tokens,r=A.getState().connectedWallets,a=Te(e,s,r,n.destinationTokens);return{toChain:e,destinationTokens:a,...o&&{toToken:rt(a,n.fromToken)}}})},setToToken:e=>t(()=>({toToken:e})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new se(0),outputUsdValue:new se(0),bestRoute:null,error:""},...!!o.fromToken&&{inputUsdValue:Ce(o.fromToken,e)}}))},retry:e=>{let{tokens:o,blockchains:n}=k.getState().meta,s=A.getState().connectedWallets,r=e.status==="failed"?e.steps.findIndex(S=>S.status==="failed"):null;if(r===null||r<0)return;let a=e.steps[0],l=e.steps[e.steps.length-1],u=n.find(S=>S.name===a.fromBlockchain)||null,c=n.find(S=>S.name===l.toBlockchain)||null,f=o.find(S=>K(S,{blockchain:a.fromBlockchain,symbol:a.fromSymbol,address:a.fromSymbolAddress})),C=o.find(S=>K(S,{blockchain:l.toBlockchain,symbol:l.toSymbol,address:l.toSymbolAddress})),w=Te(u,o,s,[]),h=Te(c,o,s,[]),y=e.inputAmount;t({fromChain:u,fromToken:f,inputAmount:y,outputAmount:null,inputUsdValue:Ce(f||null,y),outputUsdValue:new se(0),toChain:c,toToken:C,bestRoute:null,loading:!1,error:"",sourceTokens:w,destinationTokens:h})},switchFromAndTo:()=>t(e=>({fromChain:e.toChain,fromToken:e.toToken,toChain:e.fromChain,toToken:e.fromToken,sourceTokens:e.destinationTokens,destinationTokens:e.sourceTokens,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:Ce(e.toToken,e.outputAmount?.toString()||"")}))})))),gr=i((t,e)=>{let o=null,n=i(()=>{let{fromToken:a,toToken:l,inputAmount:u,resetRoute:c}=t.getState(),{slippage:f,customSlippage:C,disabledLiquiditySources:w,affiliateRef:h}=e.getState();if(!a||!l||!Ae(u))return;o?.abort(),o=new AbortController;let S=_e(a,l,u,[],[],w,C||f,h);t.getState().loading||c(),ae().getBestRoute(S,{signal:o.signal}).then(m=>{let{setBestRoute:d}=t.getState();d(m),t.setState({loading:!1}),o=null}).catch(m=>{m.code!=="ERR_CANCELED"&&t.setState({error:m.message,loading:!1})})},"fetchBestRoute"),s=Ot(n,600),r=i(()=>{let{fromToken:a,toToken:l,inputAmount:u,inputUsdValue:c,resetRoute:f}=p.getState();if(!Ae(u)||c?.eq(0))return t.setState({loading:!1});if(K(a,l))return t.setState({loading:!1,bestRoute:null,outputAmount:new se(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)=>!tt({store:"bestRoute",prevState:a,currentState:l})}),x.subscribe(a=>({slippage:a.slippage,customSlippage:a.customSlippage,disabledLiquiditySources:a.disabledLiquiditySources,infiniteApprove:a.infiniteApprove}),r,{equalityFn:(a,l)=>!tt({store:"settings",prevState:a,currentState:l})}),{fetchBestRoute:n}},"bestRoute"),{fetchBestRoute:Wo}=gr(p,x);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 hr}from"zustand";var _=Y(hr()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",toggleConnectWalletsButton:()=>t(e=>({connectWalletsButtonDisabled:!e.connectWalletsButtonDisabled})),setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function vo(){let t=lt(!0),[e,o]=Cr(),n=yr(),s=lt(n.search),r=lt({}),a=p.use.fromChain(),l=p.use.toChain(),u=p.use.fromToken(),c=p.use.toToken(),f=p.use.setFromChain(),C=p.use.setFromToken(),w=p.use.setToChain(),h=p.use.setToToken(),y=p.use.inputAmount(),S=p.use.setInputAmount(),m=k.use.loadingStatus(),{blockchains:d,tokens:T}=k.use.meta(),B=_.use.setSelectedSwap();return at(()=>{let v={};Tr(s.current).forEach((U,F)=>{v[F]=U}),r.current=v;let I=n.pathname.split(g.swaps+"/")[1]||null;I&&B(I)},[]),at(()=>{if(!t.current){let v="",I="",U="",F="",D="";if(m!=="success")v=r.current["fromChain"],I=r.current["fromToken"],U=r.current["toChain"],F=r.current["toToken"],D=r.current["fromAmount"]||y;else{if(n.state==="redirect")return;v=a?.name||"",I=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),U=l?.name||"",F=(c?.symbol||"")+(c?.address?`--${c?.address}`:""),D=y}o({...v&&{["fromChain"]:v},...I&&{["fromToken"]:I},...U&&{["toChain"]:U},...F&&{["toToken"]:F},...D&&{["fromAmount"]:D.toString()}},{replace:!0})}t.current=!1},[n.pathname,y,a,u,l,c]),at(()=>{if(m==="success"){let v=e.get("fromChain"),I=e.get("fromToken"),U=e.get("toChain"),F=e.get("toToken"),D=e.get("fromAmount"),X=d.find(z=>z.name===v),E=Ye(T,I,X||null),P=d.find(z=>z.name===U),M=Ye(T,F,P||null);X&&(f(X),E&&C(E)),P&&(w(P),M&&h(M)),D&&S(D)}},[m]),null}i(vo,"UpdateUrl");import{useWallets as vr}from"@rango-dev/wallets-core";import{isEvmBlockchain as Ar}from"rango-types";function Ao({children:t,...e}){let o=br(),n=o?wr:kr,{blockchains:s}=k.use.meta(),{canSwitchNetworkTo:r}=vr(),a=s.filter(Ar);return Wr({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:a,canSwitchNetworkTo:r}),$e.createElement($e.Fragment,null,$e.createElement(n,null,t),o&&$e.createElement(vo,null))}i(Ao,"AppRouter");import{Button as Oi,AddWalletIcon as Li,Typography as Di,styled as It,Spinner as _i,Image as $i}from"@rango-dev/ui";import G,{useEffect as je}from"react";import{useNavigate as qi}from"react-router-dom";import{useWallets as Vi}from"@rango-dev/wallets-core";import j from"react";import{useRoutes as Fi}from"react-router-dom";import V,{useEffect as rs,useState as Ho}from"react";import{useNavigate as ss}from"react-router-dom";import{useWallets as is}from"@rango-dev/wallets-core";import{i18n as Ge}from"@lingui/core";import{useInRouterContext as xr,useNavigate as Br}from"react-router-dom";function $(){let t=xr(),e=Br();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 R from"react";import{Button as xo,InfoCircleIcon as Er,styled as qe,Typography as ut,Divider as Bo,Image as Eo}from"@rango-dev/ui";import{i18n as Po}from"@lingui/core";var Pr=qe("div",{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"}),Ir=qe("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%"}}}),Io=qe("span",{width:"24px",height:"24px",backgroundColor:"$neutral100",borderRadius:"99999px"}),Nr=qe("div",{windth:"100%",height:"$48",borderRadius:"$5",backgroundColor:"$surface",border:"1px solid transparent",position:"relative",display:"flex",alignItems:"center",paddingLeft:"$8",paddingRight:"$8"});function ct(t){let{chain:e,token:o,loadingStatus:n,percentageChange:s}=t,r=R.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"}},n==="failed"&&R.createElement(Er,{color:"error",size:24}));return R.createElement(Pr,null,R.createElement(Ir,{type:"outlined"},R.createElement("div",{className:"head"},R.createElement(ut,{variant:"body2",color:"neutral800"},t.label),R.createElement("div",null,s,t.usdValue&&R.createElement(ut,{variant:"caption",color:"neutral600",className:"usd-value"},`$${b(t.usdValue)}`))),R.createElement("div",{className:"form"},R.createElement(xo,{className:"selectors",variant:"outlined",loading:n==="loading",prefix:n==="success"&&e?R.createElement(Eo,{src:e.logo,size:24}):R.createElement(Io,null),suffix:r,align:"start",size:"large"},n==="success"&&e?e.displayName:Po.t("Chain")),R.createElement(Bo,{size:12,direction:"horizontal"}),R.createElement(xo,{className:"selectors",variant:"outlined",loading:n==="loading",prefix:n==="success"&&o?R.createElement(Eo,{src:o.image,size:24}):R.createElement(Io,null),suffix:r,size:"large",align:"start"},n==="success"&&o?o.symbol:Po.t("Token")),R.createElement(Bo,{size:12,direction:"horizontal"}),R.createElement("div",{className:"amount"},R.createElement(Nr,null,R.createElement(ut,{variant:"h4"},t.amount))))))}i(ct,"TokenPreview");import{Divider as Go,ConfirmSwap as as,LoadingFailedAlert as ls}from"@rango-dev/ui";import ee from"react";import{styled as Rr,ChevronRightIcon as Mr,GasIcon as Fr,Divider as Ur}from"@rango-dev/ui";var Or=Rr("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 Lr(t){if(!t.routes)return null;let e=t.routes.result?.swaps;return ee.createElement(Or,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(Mr,{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(Ur,{size:4,direction:"horizontal"}),"$",t.totalFee):null)}i(Lr,"RoutesOverview");var No=Lr;import{useManager as us}from"@rango-dev/queue-manager-react";import{useEffect as _r,useRef as pt,useState as mt}from"react";import dt from"bignumber.js";import{calculatePendingSwap as Ro}from"@rango-dev/queue-manager-rango-preset";function Fo(){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=x.use.affiliateRef(),l=A.use.connectedWallets(),u=A.use.customDestination(),c=A.use.selectedWallets(),f=k.use.meta(),C=x.use.customSlippage(),w=x.use.slippage(),h=x.use.disabledLiquiditySources(),y=C||w,S=pt(!1),m=pt(null),d=pt(null),[T,B]=mt(!1),[v,I]=mt([]),[U,F]=mt([]);return _r(()=>()=>d.current?.abort(),[]),!t||!e||!o||!n?{loading:!1,warnings:[],errors:[],confirmSwap:null}:{loading:T,warnings:U,errors:v,confirmSwap:i(async()=>{if(S.current){let E={slippage:y.toString(),disabledSwappersGroups:h};return v.length>0&&I([]),U.length>0&&F([]),S.current=!1,m.current?Ro(o.toString(),m.current,st(c),E,!1,f):void 0}d.current=new AbortController,B(!0);let X=_e(t,e,o,l,c,h,y,a,n,u);try{let E=await ae().getBestRoute(X,{signal:d.current?.signal});if(d.current=null,B(!1),!E.result||!new dt(E.requestAmount).isEqualTo(new dt(o||"-1"))){I(ce=>ce.concat({type:0}));return}let P={errors:[],warnings:[]};if(qt(n,E)){s(E);let ce=new dt(E.result?.outputAmount||"0").multipliedBy(e.usdPrice||0),ie=Ue(r,ce);Oe(r,ie)?P.errors.push({type:1}):go(n,E)?P.warnings.push({type:3,newOutputAmount:b(Se(E)),percentageChange:b(ye(Se(n),Se(E)),null,2)}):et(n,E)?P.warnings.push({type:2}):Ze(n,E)?P.warnings.push({type:0}):Je(n,E)&&P.warnings.push({type:1})}let z=ho(E,c);z.length===0||P.errors.push({type:4,messages:z});let le=mo(n);fo(y.toString(),le)||P.errors.push({type:3,minRequiredSlippage:le});let ue=P.errors.length===0,de=P.warnings.length===0;if((ue||!ue&&S.current)&&(de||!de&&S.current)){let ce={slippage:y.toString(),disabledSwappersGroups:h};return Ro(o.toString(),E,st(c),ce,!1,f)}else S.current||(S.current=!0,I(P.errors),F(P.warnings),m.current=E);return}catch(E){if(E?.code==="ERR_CANCELED")return;let P=E?.response?.status;B(!1),I([{type:2,status:P}]);return}},"confirmSwap")}}i(Fo,"useConfirmSwap");import Do from"react";import{Divider as Gr,Typography as zr,styled as Kr}from"@rango-dev/ui";import ft from"react";import $r from"react";import{Button as qr}from"@rango-dev/ui";import{useNavigate as Vr}from"react-router-dom";import{i18n as Hr}from"@lingui/core";function Ve(){let t=Vr();return $r.createElement(qr,{type:"primary",variant:"outlined",size:"small",onClick:()=>t("/"+g.settings)},Hr.t("Change Slippage"))}i(Ve,"ChangeSlippageButton");import{i18n as jr}from"@lingui/core";var Qr=Kr(zr,{color:"$error500 !important"});function Uo({minRequiredSlippage:t}){return ft.createElement(Qr,{variant:"body2"},jr.t("increaseSlippage",{minRequiredSlippage:t},{message:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route."}),ft.createElement(Gr,{size:8}),ft.createElement(Ve,null))}i(Uo,"MinRequiredSlippage");import{Divider as Xr,styled as gt,Typography as Oo}from"@rango-dev/ui";import pe from"react";import{i18n as Yr}from"@lingui/core";var Zr=gt("ul",{padding:0,margin:0,variants:{showListStyle:{true:{paddingLeft:"$24"}}}}),Jr=gt("li",{variants:{showListStyle:{true:{listStyleType:"disc",listStylePosition:"outside"}}}}),es=gt(Oo,{display:"block"});function Lo({messages:t}){let e=t.length>1;return pe.createElement(pe.Fragment,null,pe.createElement(Oo,{className:"title",variant:"title",color:"error"},Yr.t("Insufficent Balance:")),pe.createElement(Xr,{size:8}),pe.createElement(Zr,{showListStyle:e},t.map((o,n)=>pe.createElement(Jr,{showListStyle:e,key:n},pe.createElement(es,{variant:"body2"},o)))))}i(Lo,"BalanceErrors");function ht(t){return t.flatMap(e=>{switch(e.type){case 0:return"No routes found. Please try again later.";case 2:return`Failed to confirm swap ${e.status?`'status': ${e.status})`:""}, please try again.`;case 1:return"Route updated and price impact is too high, try again later!";case 3:return Do.createElement(Uo,{minRequiredSlippage:e.minRequiredSlippage});case 4:return Do.createElement(Lo,{messages:e.messages});default:return[]}})}i(ht,"ConfirmSwapErrors");function _o(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(_o,"ConfirmSwapWarnings");import St from"react";import{Alert as ts}from"@rango-dev/ui";import $o from"react";import{i18n as os}from"@lingui/core";function qo(t){let{selectedSlippage:e}=t;return $o.createElement(ts,{type:"warning",footer:$o.createElement(Ve,null)},os.t("highSlippage",{selectedSlippage:e},{message:" Caution, your slippage is high (={selectedSlippage}). Your trade may be front run."}))}i(qo,"HighSlippageWarning");function Vo(t){let{selectedSlippage:e}=t,o=e>=Xt;return St.createElement(St.Fragment,null,o&&St.createElement(qo,{selectedSlippage:e}))}i(Vo,"ConfirmSwapExtraMessages");import Tt from"react";import{Typography as ns}from"@rango-dev/ui";function He(t){let{inputUsdValue:e,outputUsdValue:o}=t;if(!e||!o||!o.gt(0))return null;let n=ye(e.toNumber(),o.toNumber()),s=n?.lt(0);return Tt.createElement(Tt.Fragment,null,s&&Tt.createElement(ns,{variant:"caption",color:"$error500"},`(${b(n,0,2)}%)`))}i(He,"PercentageChange");function zo({customDestinationEnabled:t}){let e=ss(),{navigateBackFrom:o}=$(),n=p.use.bestRoute(),s=p.use.loading(),r=p.use.error(),a=_.use.setSelectedSwap(),{blockchains:l,tokens:u}=k.use.meta(),c=k.use.loadingStatus(),f=A.use.connectedWallets(),C=A.use.selectedWallets(),w=A.use.customDestination(),h=A.use.setCustomDestination(),y=A.use.initSelectedWallets(),S=A.use.setSelectedWallet(),m=x.use.slippage(),d=x.use.customSlippage(),T=p.use.inputUsdValue(),B=p.use.outputUsdValue(),v=p.use.setInputAmount(),[I,U]=Ho(""),F=zt(s,!!r),[D,X]=Ho(""),{manager:E}=us(),{loading:P,errors:M,warnings:z,confirmSwap:me}=Fo(),le=d||m,ue=!M.find(O=>O.type===3),{getWalletInfo:de,connect:ce}=is(),ie=n?.result?.swaps[0],fe=n?.result?.swaps[n?.result?.swaps.length-1],Un=b(ie?.fromAmount,4,6),On=b(fe?.toAmount,4,6);rs(()=>{y(),w&&h("")},[]);let Ln=n?.result?.swaps[n?.result?.swaps.length-1].to.blockchain,Ut=!!n?.result?.swaps.find(O=>O.from.blockchain===Ln),ve=Ie(f,C,de,Ut?"":D),Dn=i(O=>{let Qe=O;nt(ve).forEach($n=>ce?.($n,Qe))},"handleConnectChain"),_n=De(n,u);return V.createElement(as,{requiredWallets:he(n),selectableWallets:ve,setCustomDestination:h,customDestination:w,customDestinationEnabled:t,isValidCustomDestination:wo,checkedDestination:!!D,setDestinationChain:X,onBack:o.bind(null,g.confirmSwap),onConfirm:async()=>{me?.().then(async O=>{if(O)try{await E?.create("swap",{swapDetails:O},{id:O.requestId}),a(O.requestId),e("/"+g.swaps+`/${O.requestId}`,{replace:!0}),setTimeout(()=>{v("")},0)}catch(Qe){U("Error: "+Qe?.message)}})},isWalletRequired:Ut,onChange:O=>S(O),confirmDisabled:c!=="success"||ko(s,D,w,n,ve),handleConnectChain:O=>Dn(O),isExperimentalChain:O=>nt(ve).length>0?so(l,O):!1,previewInputs:V.createElement(V.Fragment,null,V.createElement(ct,{chain:{displayName:ie?.from.blockchain||"",logo:ie?.from.blockchainLogo||""},token:{symbol:ie?.from.symbol||"",image:ie?.from.logo||""},usdValue:T,amount:Un,label:Ge.t("From"),loadingStatus:c!=="success"?c:F}),V.createElement(Go,{size:12}),V.createElement(ct,{chain:{displayName:fe?.to.blockchain||"",logo:fe?.to.blockchainLogo||""},token:{symbol:fe?.to.symbol||"",image:fe?.to.logo||""},usdValue:B,amount:On,label:Ge.t("To"),loadingStatus:c!=="success"?c:F,percentageChange:V.createElement(He,{inputUsdValue:T,outputUsdValue:B})})),previewRoutes:V.createElement(No,{routes:n,totalFee:b(_n,0,2)}),loading:P,errors:I?[I,...ht(M)]:ht(M),warnings:_o(z),extraMessages:V.createElement(V.Fragment,null,c==="failed"&&V.createElement(ls,null),c==="failed"&&ue&&V.createElement(Go,null),ue&&V.createElement(Vo,{selectedSlippage:le})),confirmButtonTitle:z.length>0||M.length>0?`${Ge.t("Proceed anyway!")}`:`${Ge.t("Confirm swap!")}`})}i(zo,"ConfirmSwapPage");import{History as cs}from"@rango-dev/ui";import{useManager as ps}from"@rango-dev/queue-manager-react";import ms from"react";import{useNavigate as ds}from"react-router-dom";var ze=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 Ko from"dayjs";var jo=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=Ko();return t.forEach(n=>{let s=Ko(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 Qo(){let t=_.use.setSelectedSwap(),e=ds(),{navigateBackFrom:o}=$(),{manager:n,state:s}=ps(),r=ze(n).map(({swap:l})=>l),a=!s.loadedFromPersistor;return ms.createElement(cs,{list:r,groupBy:jo,loading:a,onSwapClick:l=>{t(l),e(`${l}`,{replace:!0})},onBack:o.bind(null,g.swaps)})}i(Qo,"HistoryPage");import{Alert as rn,BestRoute as Us,Button as sn,styled as be,Typography as an,VerticalSwapIcon as Os,Header as Ls}from"@rango-dev/ui";import N,{useEffect as Ds,useState as _s}from"react";import{i18n as $s}from"@lingui/core";import{useInRouterContext as qs,useNavigate as Vs}from"react-router-dom";import W from"react";import{AngleDownIcon as fs,Button as yt,InfoCircleIcon as gs,styled as ke,TextField as hs,Typography as we,Image as Xo,Divider as Ct}from"@rango-dev/ui";import{useNavigate as Ss}from"react-router-dom";import{Trans as wt}from"@lingui/react";import{i18n as kt}from"@lingui/core";var Ts=ke("div",{display:"flex",flexDirection:"column",width:"100%",overflow:"hidden"}),ys=ke("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"}}}),Cs=ke("div",{display:"flex",justifyContent:"flex-end",".balance":{display:"flex",alignItems:"center"}}),Yo=ke("span",{width:"24px",height:"24px",backgroundColor:"$neutral100",borderRadius:"99999px"}),ws=ke("div",{windth:"100%",height:"$48",borderRadius:"$5",backgroundColor:"$surface",border:"1px solid transparent",position:"relative",display:"flex",alignItems:"center",paddingLeft:"$8",paddingRight:"$8"});function bt(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(),C=p.use.inputAmount(),w=A.use.connectedWallets(),h=p.use.loading(),y=Ss(),S=r&&u?b(ge(w,r?.name,u?.symbol,u?.address)?.amount||"0",8):"0",m=r&&u?b(ge(w,r?.name,u?.symbol,u?.address)?.amount||"0",ge(w,r?.name,u?.symbol,u?.address)?.decimal):"0",d=W.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center"}},s==="failed"&&W.createElement(gs,{color:"error",size:24}),W.createElement(fs,null));return W.createElement(Ts,null,W.createElement(ys,{type:t.type==="From"?"filled":"outlined"},W.createElement("div",{className:"head"},W.createElement(we,{variant:"body2",color:"neutral800"},e==="From"?W.createElement(wt,{id:"swap from",message:"From"}):W.createElement(wt,{id:"swap to",message:"To"})),t.type==="From"?W.createElement(Cs,null,W.createElement("div",{className:"balance",onClick:()=>{S!=="0"&&c(m.split(",").join(""))}},W.createElement(we,{variant:"body3",color:"neutral600"},kt.t("Balance"),": ",S," ",u?.symbol||""),W.createElement(Ct,{size:4}),W.createElement(yt,{type:"primary",variant:"ghost",size:"compact"},W.createElement(wt,{id:"maximum amount of asset",message:"Max"})))):W.createElement("div",{className:"output-usd"},W.createElement(He,{inputUsdValue:l,outputUsdValue:t.outputUsdValue}),W.createElement("div",null,W.createElement(we,{variant:"caption",color:"neutral600"},`$${b(t.outputUsdValue)}`)))),W.createElement("div",{className:"form"},W.createElement(yt,{className:"selectors",onClick:()=>{y(`${t.type.toLowerCase()}-chain`)},variant:"outlined",disabled:s==="failed",loading:s==="loading",prefix:s==="success"&&o?W.createElement(Xo,{src:o.logo,size:24}):W.createElement(Yo,null),suffix:d,align:"start",size:"large"},s==="success"&&o?o.displayName:kt.t("Chain")),W.createElement(Ct,{size:12,direction:"horizontal"}),W.createElement(yt,{className:"selectors",onClick:()=>{y(`${t.type.toLowerCase()}-token`)},variant:"outlined",disabled:s==="failed"||e==="From"&&!r||e==="To"&&!a,loading:s==="loading",prefix:s==="success"&&n?W.createElement(Xo,{src:n.image,size:24}):W.createElement(Yo,null),suffix:d,size:"large",align:"start"},s==="success"&&n?n.symbol:kt.t("Token")),W.createElement(Ct,{size:12,direction:"horizontal"}),W.createElement("div",{className:"amount"},t.type==="From"?W.createElement(hs,{type:"number",size:"large",autoFocus:!0,placeholder:"0",style:{position:"relative",backgroundColor:"$background !important"},suffix:W.createElement("span",{style:{position:"absolute",right:"4px",bottom:"2px"}},W.createElement(we,{variant:"caption",color:"neutral800"},`$${b(l)}`)),value:t.inputAmount||"",min:0,onChange:t.type==="From"?T=>{t.onAmountChange(T.target.value)}:void 0}):W.createElement(ws,null,W.createElement(we,{variant:"h4"},h&&"?",!!f?.result&&`\u2248 ${b(t.outputAmount)}`,(!C||C==="0")&&"0"))))))}i(bt,"TokenInfo");import te from"react";import{styled as Wt}from"@rango-dev/ui";import{Typography as Zo}from"@rango-dev/ui";import{i18n as ks}from"@lingui/core";var bs=Wt("div",{display:"flex",width:"100%",justifyContent:"end",alignItems:"center",paddingTop:"$16"}),Ws=Wt("svg",{fill:"$foreground",width:"$24",margin:"0 $8 0 $16"}),vs=Wt("a",{display:"flex",justifyContent:"center",alignItems:"center",textDecoration:"none"});function Jo(){return te.createElement(bs,null,te.createElement(Zo,{variant:"caption",color:"$neutral600"},ks.t("Powered By")),te.createElement(vs,{href:"https://rango.exchange",target:"_blank"},te.createElement(Ws,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 33.68 29"},te.createElement("defs",null),te.createElement("g",{id:"Layer_2","data-name":"Layer 2"},te.createElement("g",{id:"Layer_1-2","data-name":"Layer 1"},te.createElement("path",{d:"M33.68,18.05A17.93,17.93,0,0,0,28.34,5.29,18.31,18.31,0,0,0,15.45,0H13.54V7.41L6.07,0H.69L9.83,9.07H0V11A17.93,17.93,0,0,0,5.34,23.71,18.32,18.32,0,0,0,18.24,29h1.9V21.59l7.38,7.31h5.39l-9-9h9.82ZM17.37,16.16H12.49a1.93,1.93,0,0,0-1.35.55,1.89,1.89,0,0,0-.56,1.34,1.85,1.85,0,0,0,.56,1.33,1.93,1.93,0,0,0,1.35.55h3.84V25.1A14.43,14.43,0,0,1,8,21a14.21,14.21,0,0,1-4.1-8.2H21.2a1.86,1.86,0,0,0,.74-.13,1.92,1.92,0,0,0,.64-.4,2,2,0,0,0,.43-.62,1.88,1.88,0,0,0,0-1.47,2,2,0,0,0-.43-.62,1.92,1.92,0,0,0-.64-.4,1.86,1.86,0,0,0-.74-.13H17.35V3.9A14.43,14.43,0,0,1,25.64,8a14.19,14.19,0,0,1,4.11,8.2Zm2.12-5.27a1.43,1.43,0,0,1,.26-.83,1.52,1.52,0,0,1,.67-.56,1.55,1.55,0,0,1,.88-.08,1.51,1.51,0,0,1,.77.4,1.54,1.54,0,0,1,.42.77,1.41,1.41,0,0,1-.09.86,1.47,1.47,0,0,1-.55.68,1.56,1.56,0,0,1-.84.25,1.52,1.52,0,0,1-1.52-1.49Z"}),te.createElement("path",{d:"M21.7,11.57a.68.68,0,0,0-.12-.38.64.64,0,0,0-.31-.25.68.68,0,0,0-.75.15.61.61,0,0,0-.19.35.62.62,0,0,0,0,.4.67.67,0,0,0,.25.3.69.69,0,0,0,.39.12.7.7,0,0,0,.49-.2A.68.68,0,0,0,21.7,11.57Z"})))),te.createElement(Zo,{variant:"body2"},"RANGO")))}i(Jo,"BottomLogo");import{useEffect as As,useRef as xs}from"react";import{useSearchParams as Bs}from"react-router-dom";function en({count:t}){let e=xs(!0),[o,n]=Bs(),s=p.use.outputAmount();return As(()=>{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(en,"SwithFromAndTo");import{styled as Es}from"@rango-dev/ui";var tn=Es("div",{display:"flex",flexDirection:"column",width:"100%",paddingTop:"$16"});var on={genericServerError:"Error connecting server, please reload the app and try again"};import ln from"bignumber.js";import oe from"react";import{SettingsIcon as Ps,Tooltip as vt,styled as Is,Button as At,HistoryIcon as Ns,RetryIcon as Rs}from"@rango-dev/ui";import{useNavigate as Ms}from"react-router-dom";import{i18n as xt}from"@lingui/core";var Fs=Is("div",{display:"flex"});function nn(t){let{onClickRefresh:e}=t,o=Ms();return oe.createElement(Fs,null,oe.createElement(vt,{content:xt.t("Refresh")},oe.createElement(At,{variant:"ghost",onClick:e,disabled:!e},oe.createElement(Rs,{size:24,disabled:!e}))),oe.createElement(vt,{content:xt.t("Transactions History")},oe.createElement(At,{variant:"ghost",onClick:()=>o(g.swaps)},oe.createElement(Ns,{size:24}))),oe.createElement(vt,{content:xt.t("Settings")},oe.createElement(At,{variant:"ghost",onClick:()=>o(g.settings)},oe.createElement(Ps,{size:24}))))}i(nn,"HeaderButtons");var Hs=be("div",{display:"flex",flexDirection:"column"}),Gs=be("div",{position:"relative",paddingBottom:"$12"}),zs=be("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)"}),Ks=be("div",{width:"100%",paddingTop:"$16"}),js=be("div",{width:"100%",paddingTop:"$16"});function un(){let t=qs(),e=Vs(),[o,n]=_s(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(),C=p.use.outputAmount(),w=p.use.outputUsdValue(),h=p.use.bestRoute(),y=k.use.meta().tokens,S=p.use.loading(),m=p.use.error(),d=k.use.loadingStatus(),T=A.use.connectedWallets(),B=_.use.setCurrentPage(),v=p.use.switchFromAndTo(),I=d==="failed"?on.genericServerError:m,U=!1,F=f&&(!!h||S||m),D=Ue(c,w),X=Oe(c,D),{fromAmountRangeError:E,recommendation:P,swap:M}=lo(h),z=!co(h,f,c,w),me=uo(d,T,S,h,Le(h),X,z,U,f),le=De(h,y),ue=po(le);return Ds(()=>(B(g.home),B.bind(null,"")),[]),N.createElement(Hs,null,N.createElement(Ls,{title:$s.t("SWAP"),suffix:N.createElement(nn,{onClickRefresh:h||m?Wo:void 0})}),N.createElement(Gs,null,N.createElement(bt,{type:"From",chain:s,token:r,onAmountChange:u,inputAmount:f}),N.createElement(zs,null,N.createElement(sn,{variant:"ghost",onClick:()=>{v(),n(de=>de+1)}},N.createElement(Os,{size:32}),t&&N.createElement(en,{count:o})))),N.createElement(bt,{type:"To",chain:a,token:l,outputAmount:C?new ln(C):new ln(0),outputUsdValue:w}),F&&N.createElement(Ks,null,N.createElement(Us,{error:m,loading:S,data:Ht(h),totalFee:b(le,0,2),feeWarning:ue,totalTime:Dt(_t(h))})),(I||Le(h))&&N.createElement(js,null,I&&N.createElement(rn,{type:"error"},I),Le(h)&&N.createElement(rn,{type:"error",title:`${M?.swapperId} Limit`},N.createElement(N.Fragment,null,N.createElement(an,{variant:"body2"},`${E}, Yours: ${b(M?.fromAmount||null)} ${M?.from.symbol}`),N.createElement(an,{variant:"body2"},P)))),N.createElement(tn,null,N.createElement(sn,{type:"primary",align:"grow",size:"large",disabled:me.disabled,onClick:()=>{me.title==="Connect Wallet"?e(g.wallets):e(g.confirmSwap,{replace:!0})}},me.title),N.createElement(Jo,null)))}i(un,"Home");import{LiquiditySourcesSelector as Qs}from"@rango-dev/ui";import Xs from"react";function cn({supportedSwappers:t}){let e=k.use.meta().swappers,o=k.use.loadingStatus(),n=x.use.toggleLiquiditySource(),s=x.use.disabledLiquiditySources(),r=x.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)})}),Xs.createElement(Qs,{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(cn,"LiquiditySourcePage");import Ys from"react";import{BlockchainSelector as Zs}from"@rango-dev/ui";function Bt(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 Ys.createElement(Zs,{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(Bt,"SelectChainPage");import Js from"react";import{TokenSelector as ei}from"@rango-dev/ui";function Et(t){let{navigateBackFrom:e}=$(),{type:o,supportedTokens:n}=t,s=p.use.sourceTokens(),r=p.use.destinationTokens(),a=n?s.filter(h=>n.some(y=>K(y,h))):s,l=n?r.filter(h=>n.some(y=>K(y,h))):r,u=p.use.fromToken(),c=p.use.toToken(),f=p.use.setFromToken(),C=p.use.setToToken(),w=k.use.loadingStatus();return Js.createElement(ei,{type:o==="from"?"Source":"Destination",list:o=="from"?a:l,selected:o==="from"?u:c,onChange:h=>{o==="from"?f(h):C(h),e(g.fromToken)},onBack:e.bind(null,g.fromToken),loadingStatus:w})}i(Et,"SelectTokenPage");import ti from"react";import{Settings as oi}from"@rango-dev/ui";import{useNavigate as ni}from"react-router-dom";function pn({supportedSwappers:t,singleTheme:e}){let o=x.use.slippage(),n=x.use.setSlippage(),s=x.use.disabledLiquiditySources(),r=x.use.customSlippage(),a=x.use.setCustomSlippage(),l=x.use.theme(),u=x.use.setTheme(),c=k.use.meta().swappers,f=ni(),{navigateBackFrom:C}=$(),w=x.use.infiniteApprove(),h=x.use.toggleInfiniteApprove(),y=k.use.loadingStatus(),S=[];H(c.map(d=>d.swapperGroup)).map(d=>c.find(T=>T.swapperGroup===d)).find(d=>{if(d)for(let T of d.types)S.push({title:d.swapperGroup,logo:d.logo,type:T,selected:!s.includes(d.swapperGroup)})}),t&&S.filter(d=>t.filter(T=>T===d.title).length>0);let m=t?S.filter(d=>t.filter(T=>T===d.title).length>0):S;return ti.createElement(oi,{slippages:jt,selectedSlippage:o,onSlippageChange:d=>n(d),onLiquiditySourcesClick:()=>f(g.liquiditySources),onBack:C.bind(null,g.settings),liquiditySources:m,selectedLiquiditySources:m.filter(d=>d.selected),singleTheme:e,customSlippage:r,onCustomSlippageChange:a,minSlippage:Zt,maxSlippage:Yt,selectedTheme:l,onThemeChange:u,infiniteApprove:w,toggleInfiniteApprove:h,loadingStatus:y})}i(pn,"SettingsPage");import{Alert as si,SecondaryPage as ii,styled as Pt,Wallet as ai,WalletState as dn}from"@rango-dev/ui";import ne,{useEffect as fn,useRef as li,useState as ui}from"react";import{WalletTypes as ci,detectMobileScreens as pi}from"@rango-dev/wallets-shared";import{useWallets as mi}from"@rango-dev/wallets-core";import{i18n as di}from"@lingui/core";import{Spinner as fi}from"@rango-dev/ui";import{LoadingFailedAlert as gi}from"@rango-dev/ui";import{allProviders as ri}from"@rango-dev/provider-all";function Ke(t){let e=ri();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(Ke,"matchAndGenerateProviders");function mn(t){return Ke(t).map(n=>n.config.type)}i(mn,"configWalletsToWalletName");var hi=Pt("div",{display:"grid",gap:".5rem",gridTemplateColumns:" repeat(2, minmax(0, 1fr))",alignContent:"baseline",padding:"0.5rem",overflowY:"auto"}),Si=Pt("div",{display:"flex",justifyContent:"center",width:"100%",position:"absolute",top:"50%"}),Ti=Pt("div",{paddingBottom:"$16"}),yi=Object.values(ci);function gn({supportedWallets:t,multiWallets:e}){let{navigateBackFrom:o}=$(),{state:n,disconnect:s,getWalletInfo:r,connect:a}=mi(),l=eo(n,r,mn(t)||yi),u=li(),c=pi()?l.filter(m=>m.showOnMobile):l;c=io(c);let[f,C]=ui(""),w=_.use.toggleConnectWalletsButton(),h=k.use.loadingStatus(),y=i(async m=>{let d=n(m);try{if(f&&C(""),d.connected)await s(m);else{if(!e&&l.find(T=>T.state===dn.CONNECTED))return;await a(m)}}catch(T){C("Error: "+T?.message)}},"onSelectWallet"),S=i(()=>{let m=u.current?.filter(d=>d.state===dn.CONNECTING)||[];for(let d of m)s(d.type)},"disconnectConnectingWallets");return fn(()=>(w(),()=>{S(),w()}),[]),fn(()=>{u.current=l},[l]),ne.createElement(ii,{title:di.t("Select Wallet")||"",textField:!1,onBack:o.bind(null,g.wallets)},ne.createElement(ne.Fragment,null,f&&ne.createElement(Ti,null,ne.createElement(si,{type:"error",title:f})),h==="loading"&&ne.createElement(Si,{className:"loader"},ne.createElement(fi,{size:24})),h==="failed"&&ne.createElement(gi,null),ne.createElement(hi,null,h==="success"&&c.map((m,d)=>ne.createElement(ai,{...m,key:`${d}-${m.type}`,onClick:y})))))}i(gn,"WalletsPage");import wn from"react";import{useManager as vi}from"@rango-dev/queue-manager-react";import{SwapHistory as Ai,useCopyToClipboard as xi}from"@rango-dev/ui";import{cancelSwap as Bi,PendingSwapNetworkStatus as Ei}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Pi}from"@rango-dev/wallets-core";import{getCurrentBlockchainOfOrNull as Ii,getCurrentStep as Ni,getRelatedWalletOrNull as Ri}from"@rango-dev/queue-manager-rango-preset";function hn(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(hn,"timeSince");function Sn(t){return t.finishTime?`${hn(parseInt(t.finishTime))} ago`:`${hn(parseInt(t.creationTime))} ago`}i(Sn,"getSwapDate");import{useNavigate as Mi}from"react-router-dom";import We from"react";import{SecondaryPage as Ci,Spinner as wi,Alert as ki,styled as yn}from"@rango-dev/ui";import{i18n as Tn}from"@lingui/core";var bi=yn("div",{height:"450px"}),Wi=yn("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1});function Cn(t){let{requestId:e,loading:o,onBack:n}=t;return We.createElement(Ci,{title:Tn.t("Swap Details"),textField:!1,onBack:n},We.createElement(bi,null,o?We.createElement(Wi,null,We.createElement(wi,{size:24})):We.createElement(ki,{type:"secondary",title:Tn.t("swapNotFound",{requestId:e},{message:"Swap with request ID = ${requestId} not found."})})))}i(Cn,"SwapDetailsPlaceholder");function kn(){let t=_.use.selectedSwapRequestId(),{canSwitchNetworkTo:e,connect:o,getWalletInfo:n}=Pi(),s=p.use.retry(),r=Mi(),{navigateBackFrom:a}=$(),[l,u]=xi(2e3),{manager:c,state:f}=vi(),w=ze(c).find(({swap:M})=>M.requestId===t),h=i(()=>{let M=c?.get(w?.id);M&&Bi(M)},"onCancel"),y=w?.swap,S=!f.loadedFromPersistor;if(!y)return wn.createElement(Cn,{requestId:t||"",loading:S,onBack:a.bind(null,g.swapDetails)});let m=Ni(y),d=m?Ii(y,m):null,T=m?Ri(y,m):null,B=m?.networkStatus,v=To(y,m),I=it(m),U=Sn(y),F=Co(y),D=i(M=>!!n(M)?.mobileWallet,"isMobileWallet"),E=B===Ei.WaitingForNetworkChange&&!!d&&!!T?.walletType&&(D(T.walletType)||e(T.walletType,d))?o.bind(null,T.walletType,d):void 0,P=yo(y);return wn.createElement(Ai,{onBack:a.bind(null,g.swapDetails),pendingSwap:Gt(y),onCopy:u,isCopied:l,onCancel:h,shortMessage:v.shortMessage,detailedMessage:v.detailedMessage,currentStepBlockchain:d||"",switchNetwork:E,type:I?"warning":y.extraMessageSeverity||void 0,date:U,...F&&{onRetry:()=>{s(y),setTimeout(()=>{r(g.home)},0)}},...P&&{lastConvertedTokenInFailedSwap:{blockchain:P.blockchain,outputAmount:P.outputAmount||"",symbol:P.symbol}}})}i(kn,"SwapDetailsPage");var Ui=i(t=>t.replace("/",""),"getAbsolutePath");function bn(t){let{config:e}=t;return Fi([{path:g.home,element:j.createElement(un,null)},{path:g.fromChain,element:j.createElement(Bt,{type:"from",supportedChains:e?.from?.blockchains})},{path:g.toChain,element:j.createElement(Bt,{type:"to",supportedChains:e?.to?.blockchains})},{path:g.fromToken,element:j.createElement(Et,{type:"from",supportedTokens:e?.from?.tokens})},{path:g.toToken,element:j.createElement(Et,{type:"to",supportedTokens:e?.to?.tokens})},{path:g.settings,element:j.createElement(pn,{singleTheme:e?.theme?.singleTheme,supportedSwappers:e?.liquiditySources})},{path:g.liquiditySources,element:j.createElement(cn,{supportedSwappers:e?.liquiditySources})},{path:g.swaps,element:j.createElement(Qo,null)},{path:g.swapDetails,element:j.createElement(kn,null)},{path:g.wallets,element:j.createElement(gn,{supportedWallets:e?.wallets,multiWallets:typeof e?.multiWallets>"u"?!0:e.multiWallets})},{path:Ui(g.confirmSwap),element:j.createElement(zo,{customDestinationEnabled:e?.customDestination})}])}i(bn,"AppRoutes");import{i18n as Hi}from"@lingui/core";var Gi=It("div",{display:"flex",width:"100%",justifyContent:"end",".balance":{display:"flex"}}),zi=It("div",{display:"flex",paddingLeft:"12px"}),Ki=It("div",{marginLeft:-15,marginRight:"$6","& img":{borderRadius:"50%"}});function Wn({config:t}){let e=qi(),{connectedWallets:o,selectedWallets:n}=A(),{getWalletInfo:s}=Vi(),r=H(Ie(o,n,s).map(T=>T.image)),{blockchains:a,tokens:l}=k.use.meta(),u=p.use.setFromChain(),c=p.use.setFromToken(),f=p.use.setToChain(),C=p.use.setToToken(),w=p.use.setInputAmount(),h=x.use.setAffiliateRef(),y=ro(o),S=_.use.connectWalletsButtonDisabled(),m=k.use.loadingStatus(),d=A(bo);return je(()=>{if(m==="success"){let T=a.find(v=>v.name===t?.to?.blockchain),B=l.find(v=>K(v,t?.to?.token||null));f(T||null),C(B||null)}},[t?.to?.token,t?.to?.blockchain,m]),je(()=>{w(t?.amount?.toString()||"")},[t?.amount]),je(()=>{if(m==="success"){let T=a.find(v=>v.name===t?.from?.blockchain),B=l.find(v=>K(v,t?.from?.token||null));u(T||null),c(B||null)}},[t?.from?.token,t?.from?.blockchain,m]),je(()=>{h(t?.affiliateRef||null)},[t?.affiliateRef]),G.createElement(G.Fragment,null,G.createElement(Gi,null,G.createElement(Oi,{size:"small",suffix:G.createElement(Li,{size:20}),variant:"ghost",flexContent:!0,loading:m==="loading",disabled:m==="failed",onClick:()=>{S||e(g.wallets)},prefix:r?.length?G.createElement(zi,null,r.map((T,B)=>G.createElement(Ki,{key:B},G.createElement($i,{src:T,size:24})))):null},G.createElement("div",{className:"balance"},G.createElement(Di,{variant:"body2"},o?.length?`$${y||0}`:Hi.t("Connect Wallet")),d&&G.createElement(_i,null)))),G.createElement(bn,{config:t}))}i(Wn,"Layout");import{globalCss as ji}from"@rango-dev/ui";var vn=i(t=>ji({"@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 Q}from"@rango-dev/ui";import{useState as Yi,useEffect as xn,useLayoutEffect as Zi}from"react";import{useEffect as Qi,useRef as Xi}from"react";function Nt(t){let e=Xi();return Qi(()=>{e.current=t},[t]),e.current}i(Nt,"usePrevious");function Bn({colors:t,fontFamily:e="Roboto",borderRadius:o=8,mode:n="auto"}){let s=x.use.theme(),r=k.use.fetchMeta(),a=x.use.setTheme(),l=t?.light,u=t?.dark,c=l?.neutral||"#fafafa",f=l?.background||"#fff",C=l?.foreground||"#000",w={...Q("primary","dark",u?.primary),...Q("error","dark",u?.error),...Q("warning","dark",u?.warning),...Q("success","dark",u?.success),...Q("neutral","dark",u?.neutral),surface:u?.surface,background:u?.background,foreground:u?.foreground},h={surface:l?.surface||"#fff",...Q("primary","light",l?.primary||"#5FA425"),...Q("error","light",l?.error||"#FF0000"),...Q("warning","light",l?.warning||"#F5A623"),...Q("success","light",l?.success||"#0070F3"),...Q("neutral","light",c),background:f,foreground:C},y=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"}`}}),S=An({colors:{...h,...Q("neutral","dark","#111111"),foreground:f,background:C,surface:"#000",...JSON.parse(JSON.stringify(w))},radii:{5:`${o}px`},shadows:{s:`0px 3px 5px 3px ${u?.neutral||"#222"}, 0px 6px 10px 3px ${u?.neutral||"#222"}, 0px 1px 18px 3px ${u?.neutral||"#222"}`}}),[m,d]=Yi("light");xn(()=>{(async()=>await r())();let v=i(I=>{I.matches?d("dark"):d("light")},"switchTheme");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&d("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",v),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",v)}},[]),xn(()=>{n!=="auto"&&a(n)},[n]);let T=Nt(e);return Zi(()=>{let{classList:v}=document.body;T&&v.remove(`font_${T.replace(/ /g,"")}`),v.add(`font_${e.replace(/ /g,"")}`)},[e]),{activeTheme:i(()=>s==="auto"?m==="dark"?S:y:s==="dark"?S:y,"getActiveTheme")()}}i(Bn,"useTheme");import Ji,{useMemo as ea}from"react";import{Provider as ta}from"@rango-dev/queue-manager-react";import{makeQueueDefinition as oa,checkWaitingForNetworkChange as na}from"@rango-dev/queue-manager-rango-preset";import{useWallets as ra}from"@rango-dev/wallets-core";import{convertEvmBlockchainMetaToEvmChainInfo as sa}from"@rango-dev/wallets-shared";import{isEvmBlockchain as ia}from"rango-types";function aa(t){let{providers:e,getSigners:o,state:n,connect:s,canSwitchNetworkTo:r,getWalletInfo:a}=ra(),l=ea(()=>oa({API_KEY:xe("API_KEY")}),[]),{blockchains:u}=k.use.meta(),f={blockchains:A.use.connectedWallets().map(T=>({accounts:[T],name:T.chain}))},C=i((T,B)=>{if(r(T,B))return s(T,B)},"switchNetwork"),w=i(T=>!!a(T).mobileWallet,"isMobileWallet"),h=u.filter(T=>T.enabled).reduce((T,B)=>(T[B.name]=B,T),{}),y=u.filter(ia),S=i(T=>{let{supportedChains:B}=a(T);return Pe(B)},"getSupportedChainNames"),m=e(),d={meta:{blockchains:h,evmBasedChains:y,evmNetworkChainInfo:sa(y),getSupportedChainNames:S},getSigners:o,wallets:f,providers:m,switchNetwork:C,canSwitchNetworkTo:r,connect:s,state:n,isMobileWallet:w};return Ji.createElement(ta,{queuesDefs:[l],context:d,onPersistedDataLoaded:T=>{na(T)},isPaused:!1},t.children)}i(aa,"QueueManager");var En=aa;import In from"react";import{Events as Rt,Provider as ua}from"@rango-dev/wallets-core";import{isEvmBlockchain as ca}from"rango-sdk";import{useEffect as la}from"react";function Pn(t){let e=A.use.clearConnectedWallet(),o=Ke(void 0);return la(()=>{e(),o=Ke(t)},[t]),{providers:o}}i(Pn,"useWalletProviders");import{createContext as pa,useRef as ma}from"react";var Mt=pa({onConnectWallet:()=>{}});function Ft(t){let{blockchains:e}=k.use.meta(),{providers:o}=Pn(t.providers),n=A.use.disconnectWallet(),s=A.use.connectWallet(),r=ma(),a=e.filter(ca).map(u=>u.name),l=i((u,c,f,C,w)=>{if(c===Rt.ACCOUNTS)if(f){let h=Pe(w),y=to(u,f,a,h);s(y)}else n(u);if(c===Rt.ACCOUNTS&&C.connected){let h=`${u}-${C.network}-${f}`;C.connected&&(r.current?r.current(h):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(c===Rt.NETWORK&&C.network){let h=`${u}-${C.network}`;r.current?r.current(h):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(u,c,f,C,w)},"onUpdateState");return In.createElement(Mt.Provider,{value:{onConnectWallet:u=>{r.current=u}}},In.createElement(ua,{allBlockChains:e,providers:o,onUpdateState:l},t.children))}i(Ft,"WidgetWallets");import{useEffect as da}from"react";import{useEvents as fa,MainEvents as ga,StepEventType as Nn,StepExecutionEventStatus as ha,isApprovalTX as Sa}from"@rango-dev/queue-manager-rango-preset";function Rn(){let t=A.use.connectedWallets(),e=A.use.getWalletsDetails(),o=fa();return da(()=>(o.on(ga.StepEvent,n=>{let{event:s,step:r}=n;if(s.type===Nn.TX_EXECUTION&&s.status===ha.TX_SENT&&!Sa(r)||s.type===Nn.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(Rn,"WidgetEvents");var Wa=ya("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function Fn(t){let{config:e}=t;vn(e?.theme?.fontFamily||"Roboto");let{activeTheme:o}=Bn(e?.theme||{}),[n,s]=Mn(""),[r,a]=Mn(),l=_.use.currentPage(),u=wa(Mt);return ba(()=>{e?.apiKey&&Kt({API_KEY:e?.apiKey})},[e]),ka(()=>{u.onConnectWallet(s)},[]),re.createElement(Ca,{language:e?.language},re.createElement(Wa,{id:"swap-container",className:o},re.createElement(En,null,re.createElement(Rn,null),re.createElement(Ta,{fixedHeight:l!==g.home},re.createElement(Ao,{lastConnectedWallet:n,disconnectedWallet:r,clearDisconnectedWallet:()=>{a(void 0)}},re.createElement(Wn,{config:e}))))))}i(Fn,"Main");function va(t){return t.config?.externalWallets?re.createElement(Fn,{...t}):re.createElement(Ft,{providers:t.config?.wallets},re.createElement(Fn,{...t}))}i(va,"Widget");import{useWallets as Ch}from"@rango-dev/wallets-core";import{useEvents as Wh,MainEvents as vh,RouteEventType as Rh,StepEventType as qh,StepExecutionEventStatus as Vh,StepExecutionBlockedEventStatus as Hh}from"@rango-dev/queue-manager-rango-preset";export{vh as MainEvents,Rh as RouteEventType,qh as StepEventType,Hh as StepExecutionBlockedEventStatus,Vh as StepExecutionEventStatus,va as Widget,Ft as WidgetWallets,Ch as useWallets,Wh as useWidgetEvents};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|