@rango-dev/widget-embedded 0.8.0 → 0.8.1-next.0

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