@rango-dev/widget-embedded 0.20.1-next.0 → 0.20.1-next.10

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 (91) hide show
  1. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +1 -0
  2. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  3. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  4. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  5. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts +159 -0
  6. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts.map +1 -1
  7. package/dist/components/HeaderButtons/HeaderButtons.types.d.ts +0 -1
  8. package/dist/components/HeaderButtons/HeaderButtons.types.d.ts.map +1 -1
  9. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  10. package/dist/components/HeaderButtons/RefreshButton.d.ts +6 -0
  11. package/dist/components/HeaderButtons/RefreshButton.d.ts.map +1 -0
  12. package/dist/components/Layout/Layout.d.ts.map +1 -1
  13. package/dist/components/Quote/Quote.d.ts.map +1 -1
  14. package/dist/components/Quote/Quote.styles.d.ts +157 -0
  15. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  16. package/dist/components/Quote/QuoteSummary.d.ts.map +1 -1
  17. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  18. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  19. package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
  20. package/dist/components/SwapDetailsModal/SwapDetailsModal.d.ts.map +1 -1
  21. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +2 -0
  22. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  23. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  24. package/dist/components/WalletModal/WalletModal.d.ts.map +1 -1
  25. package/dist/constants/index.d.ts +1 -0
  26. package/dist/constants/index.d.ts.map +1 -1
  27. package/dist/constants/routing.d.ts +1 -0
  28. package/dist/constants/routing.d.ts.map +1 -1
  29. package/dist/containers/App/App.styles.d.ts.map +1 -1
  30. package/dist/containers/Wallets/Wallets.d.ts.map +1 -1
  31. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +2 -2
  32. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  33. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  34. package/dist/index.d.ts +2 -2
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +1 -1
  37. package/dist/index.js.map +4 -4
  38. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  39. package/dist/pages/Home.d.ts.map +1 -1
  40. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  41. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  42. package/dist/store/slices/data.d.ts.map +1 -1
  43. package/dist/types/config.d.ts +16 -3
  44. package/dist/types/config.d.ts.map +1 -1
  45. package/dist/utils/common.d.ts.map +1 -1
  46. package/dist/utils/configs.d.ts +8 -0
  47. package/dist/utils/configs.d.ts.map +1 -1
  48. package/dist/utils/date.d.ts.map +1 -1
  49. package/dist/utils/numbers.d.ts +1 -5
  50. package/dist/utils/numbers.d.ts.map +1 -1
  51. package/dist/utils/settings.d.ts +1 -1
  52. package/dist/utils/time.d.ts.map +1 -1
  53. package/package.json +6 -6
  54. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +5 -2
  55. package/src/components/ConfirmWalletsModal/WalletList.tsx +4 -1
  56. package/src/components/HeaderButtons/HeaderButtons.styles.ts +16 -1
  57. package/src/components/HeaderButtons/HeaderButtons.types.ts +0 -1
  58. package/src/components/HeaderButtons/HomeButtons.tsx +20 -33
  59. package/src/components/HeaderButtons/RefreshButton.tsx +81 -0
  60. package/src/components/Layout/Layout.styles.ts +3 -3
  61. package/src/components/Layout/Layout.tsx +9 -2
  62. package/src/components/Quote/Quote.styles.ts +5 -1
  63. package/src/components/Quote/Quote.tsx +53 -15
  64. package/src/components/Quote/QuoteSummary.tsx +20 -4
  65. package/src/components/Slippage/Slippage.tsx +5 -5
  66. package/src/components/SwapDetails/SwapDetails.helpers.tsx +7 -1
  67. package/src/components/SwapDetails/SwapDetails.tsx +21 -1
  68. package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +9 -1
  69. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +3 -1
  70. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +2 -0
  71. package/src/components/SwapsGroup/SwapsGroup.tsx +28 -11
  72. package/src/components/WalletModal/WalletModal.tsx +3 -1
  73. package/src/constants/index.ts +1 -0
  74. package/src/constants/routing.ts +2 -0
  75. package/src/containers/App/App.styles.ts +1 -2
  76. package/src/containers/Wallets/Wallets.tsx +11 -2
  77. package/src/hooks/useSwapInput.ts +6 -2
  78. package/src/hooks/useSyncStoresWithConfig.ts +17 -34
  79. package/src/index.ts +2 -0
  80. package/src/pages/ConfirmSwapPage.tsx +12 -10
  81. package/src/pages/Home.tsx +16 -2
  82. package/src/pages/LiquiditySourcePage.tsx +5 -2
  83. package/src/pages/SelectBlockchainPage.tsx +3 -3
  84. package/src/pages/SelectSwapItemsPage.tsx +5 -1
  85. package/src/store/slices/data.ts +5 -7
  86. package/src/types/config.ts +16 -3
  87. package/src/utils/common.ts +3 -1
  88. package/src/utils/configs.ts +41 -0
  89. package/src/utils/date.ts +24 -9
  90. package/src/utils/numbers.ts +8 -58
  91. package/src/utils/time.ts +25 -69
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- var Fu=Object.defineProperty;var i=(t,e)=>Fu(t,"name",{value:e,configurable:!0});import{MainEvents as j_,RouteEventType as K_,StepEventType as X_,StepExecutionBlockedEventStatus as Y_,StepExecutionEventStatus as J_,useEvents as Z_}from"@rango-dev/queue-manager-rango-preset";import{readAccountAddress as eD,useWallets as Tl,Events as tD}from"@rango-dev/wallets-react";import{Networks as nD,WalletTypes as rD}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as sD}from"rango-types";import{Events as Lr,Provider as km}from"@rango-dev/wallets-react";import{isEvmBlockchain as Tm}from"rango-sdk";import rn,{createContext as wm,useEffect as va,useRef as xm}from"react";import{useEffect as en,useLayoutEffect as ka,useMemo as tn,useRef as on}from"react";import nm,{createContext as rm,useContext as im,useEffect as sm,useRef as am}from"react";import{create as tm}from"zustand";import{persist as om}from"zustand/middleware";var mr={apiKey:"",multiWallets:!0,enableNewLiquiditySources:!0,customDestination:!0},Ts=i((t,e,o)=>({config:{...mr,...t},updateConfig:n=>{let r=o().config;e({config:{...r,...n}})}}),"createConfigSlice");import{RangoClient as Ou}from"rango-sdk";var No="c6381a79-2817-4602-83bf-6a641a409e32",ws="https://api.rango.exchange";var dr={API_KEY:No};function Pt(t){return dr[t]||""}i(Pt,"getConfig");function xs(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),dr=e,dr}i(xs,"initConfig");var vs=20,bs=25,As="Roboto",fr="theme-widget";var Bo,$t=i(()=>Bo||(Bo=new Ou(Pt("API_KEY"),Pt("BASE_URL")),Bo),"httpService");function Mt(t){return Array.from(new Set(t))}i(Mt,"removeDuplicateFrom");function gr(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(gr,"areEqual");function Es(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Es,"debounce");function wt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(wt,"containsText");var j=i(()=>document.getElementById("swap-box"),"getContainer");function Po(t,e){let o=t.map(s=>s.swapperGroup),n=[];return Mt(t.map(s=>s.swapperGroup)).map(s=>{let a=t.find(l=>l.swapperGroup===s);if(a){let l=!0;o&&(l=o.some(p=>p===a.swapperGroup)),l&&a.types.map(p=>{n.push({id:a.swapperGroup,groupTitle:a.swapperGroup,logo:a.logo,type:p,selected:!e.includes(a.swapperGroup)})})}}),n}i(Po,"getUniqueSwappersGroups");function Is(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Is,"sortLiquiditySourcesByGroupTitle");function We(t,e){return e?.[t]==="hidden"}i(We,"isFeatureHidden");function $o(t,e){return e?.[t]==="enabled"}i($o,"isFeatureEnabled");import{WalletState as Ke}from"@rango-dev/ui";import{readAccountAddress as zu}from"@rango-dev/wallets-react";import{detectInstallLink as Gu,getCosmosExperimentalChainInfo as Hu,isEvmAddress as Qu,KEPLR_COMPATIBLE_WALLETS as eC,Networks as Ns}from"@rango-dev/wallets-shared";import hr from"bignumber.js";import{isCosmosBlockchain as Vu}from"rango-types";import Uu from"bignumber.js";var Ae=new Uu(0);import{WalletTypes as qu}from"@rango-dev/wallets-shared";var Ws=[qu.LEAP];import{BigNumber as Ls}from"bignumber.js";var Mo=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 Ls(t),r=1,s=1e3;for(let a=0;a<60;a++)if(new Ls(n.toFixed(a,r)).eq(n)){s=a;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,4))),r);for(let a=e||4;a<17;a++)if(n.gte(Math.pow(10,-a)))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,a))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var _o=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var je=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),eo=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Do(t,e=4){let o=parseFloat(t);if(isNaN(o))return t;let n=Math.pow(10,e);return(Math.round(o*n)/n).toString()}i(Do,"limitDecimalPlaces");function yr(t){switch(!0){case t.connected:return Ke.CONNECTED;case t.connecting:return Ke.CONNECTING;case!t.installed:return Ke.NOT_INSTALLED;default:return Ke.DISCONNECTED}}i(yr,"mapStatusToWalletState");function Bs(t,e,o,n){return o.filter(r=>!Ws.includes(r)).filter(r=>{let{supportedChains:s,isContractWallet:a}=e(r),{installed:l,network:p}=t(r);return a&&(!l||!!n&&p!==n)?!1:n?!!s.find(u=>u.name===n):!0}).map(r=>{let{name:s,img:a,installLink:l}=e(r),p=yr(t(r));return{title:s,image:a,link:Gu(l),state:p,type:r}})}i(Bs,"mapWalletTypesToWalletInfo");function Uo(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Uo,"walletAndSupportedChainsNames");function Ps(t,e,o,n,r){let s=[];function a(p,c){if(!!!s.find(m=>m.chain===p)){let m={address:c,chain:p,walletType:t};s.push(m)}}i(a,"addAccount");let l=n||[];return e.forEach(p=>{let{address:c,network:u}=zu(p),m=l.length>0,g=l.includes(u),f=u===Ns.Unknown;if(m&&!g&&!f)return;let S=u===Ns.Unknown&&Qu(c);if(f&&!S)return;o.includes(u)||S?r?a(u,c.toLowerCase()):l.filter(T=>o.includes(T)).forEach(T=>{a(T,c.toLowerCase())}):a(u,c)}),s}i(Ps,"prepareAccountsForWalletStore");function $s(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain;e.includes(n)||e.push(n),e.includes(r)||e.push(r),o.internalSwaps&&Array.isArray(o.internalSwaps)&&o.internalSwaps.forEach(s=>{let a=s.from.blockchain,l=s.to.blockchain;e.includes(a)||e.push(a),e.includes(l)||e.push(l)})}),e}i($s,"getRequiredChains");function qo(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(qo,"isAccountAndWalletMatched");function Ms(t,e){let{blockChain:o,balances:n=[]}=t;return n?.map(r=>({chain:o,symbol:r.asset.symbol,ticker:r.asset.symbol,address:r.asset.address||null,rawAmount:r.amount.amount,decimal:r.amount.decimals,amount:new hr(r.amount.amount).shiftedBy(-r.amount.decimals).toFixed(),logo:"",usdPrice:Ku(o,r.asset.symbol,r.asset.address,e)||null}))||[]}i(Ms,"makeBalanceFor");function _s(t){return{...t,loading:!1,error:!0}}i(_s,"resetConnectedWalletState");var Ds=i(t=>{let e=new Set,n=t?.reduce((s,a)=>s.findIndex(l=>l.address===a.address&&l.chain===a.chain)===-1?[...s,a]:s,[])?.map(s=>{let a={name:s.chain,accounts:[]};return e.has(s.address)||e.add(s.address),e.forEach(l=>{s.address===l&&a.accounts.push(s)}),a}),r=W(n?.flatMap(s=>s.accounts)?.flatMap(s=>s?.balances)?.map(s=>new hr(s?.amount||Ae).multipliedBy(s?.usdPrice||0))?.reduce((s,a)=>s.plus(a),Ae)||Ae).toString();return ju(r)},"calculateWalletUsdValue");function ju(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(ju,"numberWithThousandSeparator");var Ku=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice"),zo=i((t,e)=>{let o=Hu(Object.entries(t).map(([,n])=>n).filter(Vu));return o&&o[e]?.experimental},"isExperimentalChain");function Go(t){return t?{...t,amount:W(t.amount,8,8),usdValue:W(t.usdValue,4,4)}:null}i(Go,"formatBalance");function Xu(t,e){return t?.usdValue&&e?.usdValue?parseFloat(e.usdValue)-parseFloat(t.usdValue):!t?.usdValue&&e?.usdValue?1:t?.usdValue&&!e?.usdValue?-1:!t?.usdValue&&!e?.usdValue?parseFloat(e?.amount||"0")-parseFloat(t?.amount||"0"):0}i(Xu,"sortTokensByBalance");function Yu(t,e,o){let n=o(t),r=o(e);return n===r?0:n?-1:1}i(Yu,"sortTokensByPinnedToken");function Fs(t,e,o){return t.sort((n,r)=>{let s=e(n),a=e(r),l=Yu(n,r,o);return l!==0?l:Xu(s,a)}),t}i(Fs,"sortTokens");function Le(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}i(Le,"tokensAreEqual");function Os(t){return t.sort((e,o)=>+(o.state===Ke.CONNECTED)-+(e.state===Ke.CONNECTED)||+(o.state===Ke.DISCONNECTED||o.state===Ke.CONNECTING)-+(e.state===Ke.DISCONNECTED||e.state===Ke.CONNECTING))}i(Os,"sortWalletsBasedOnConnectionState");function Ho(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(Ho,"getConciseAddress");function Us({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(Us,"getAddress");function Sr(t){return`${t.blockchain}-${t.symbol}-${t.address??""}`}i(Sr,"createTokenHash");function Qo(t){return t.flatMap(e=>e.balances).reduce((e,o)=>{let n={amount:o?.amount??"",decimals:o?.decimal??0,usdValue:o?.usdPrice?new hr(o?.usdPrice??Ae).multipliedBy(o?.amount).toString():""},r=o?Sr({symbol:o.symbol,blockchain:o.chain,address:o.address}):null,s=r?e[r]:null;return r&&(!s||s&&s.amount<n.amount)&&(e[r]=n),e},{})}i(Qo,"makeTokensBalance");var qs=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");var zs=i((t,e)=>({_blockchains:[],_tokens:[],_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchains;if(!o||!o?.type)return n;let r=e().config,s=(o.type==="source"?r.from?.blockchains:r.to?.blockchains)??[];return n.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let n=e()._tokens;if(!o||!o?.type)return n;let r=e().config,s=(o.type==="source"?r.from?.tokens:r.to?.tokens)??[],a=e().blockchains({type:o.type});return n.filter(p=>s.length>0&&!s.some(c=>Le(c,p))||o.blockchain&&p.blockchain!==o.blockchain||!a.some(c=>c.name===p.blockchain)?!1:o.searchFor?!!(wt(p.symbol,o.searchFor)||wt(p.address||"",o.searchFor)||wt(p.name||"",o.searchFor)):!0).sort((p,c)=>e().isTokenPinned(p,o.type)?-1:e().isTokenPinned(c,o.type)||p.isSecondaryCoin?1:c.isSecondaryCoin||!p.address&&c.address?-1:p.address&&!c.address?1:0)},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(a=>Le(a,o)),swappers:()=>{let{config:{enableNewLiquiditySources:o,liquiditySources:n}}=e();return e()._swappers.filter(a=>{let l=n?.includes(a.swapperGroup);return o||!n||n.length===0?!l:l}).sort(Is)},fetch:async()=>{try{let o=await $t().getAllMetadata();t({fetchStatus:"success"});let n=[],r=[],s=o.popularTokens,a=o.swappers,l=new Set;o.tokens.forEach(p=>{l.add(p.blockchain),r.push(p)}),o.blockchains.forEach(p=>{p.enabled&&l.has(p.name)&&n.push(p)}),n.sort((p,c)=>p.sort-c.sort),t({_blockchains:n,_tokens:r,_popularTokens:s,_swappers:a})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{English as Ju,French as Zu,Japanese as Ru,Spanish as em}from"@rango-dev/ui";var Gs=[{title:"English",label:"English",local:"en",SVGFlag:Ju},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:em},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:Zu},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:Ru}],_t="en";var Hs=[.5,1,3],Qs=1,Vs=5,js=100,Ks=0;var Xs=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:_t,preferredBlockchains:[],slippage:Qs,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((a,l)=>{let p=a===o,c=l<=10-1;return p&&c}))return;let s=n.filter(a=>!(a===o));t(()=>({preferredBlockchains:[o,...s]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let s=Mt(o.map(a=>a.swapperGroup));return s.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:s}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n}=o,r=We("theme",n),s=We("language",n),a=We("liquiditySource",n);t({...r&&{theme:"auto"},...s&&{language:_t},...a&&{disabledLiquiditySources:[]}})}}),"createSettingsSlice");function Ys(t){return tm()(om((...e)=>({...zs(...e),...Xs(...e),...Ts(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources})}))}i(Ys,"createAppStore");var Js=rm(null);function d(){let t=im(Js);if(sm(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(d,"useAppStore");function Zs(t){let e=am();return e.current||(e.current=Ys(t.config)),nm.createElement(Js.Provider,{value:e.current},t.children)}i(Zs,"AppStoreProvider");import gt from"bignumber.js";import{create as fm}from"zustand";import{subscribeWithSelector as gm}from"zustand/middleware";import{getLastSuccessfulStep as mm}from"@rango-dev/queue-manager-rango-preset";import Sk from"bignumber.js";var mt=(r=>(r[r.HIGH_VALUE_LOSS=0]="HIGH_VALUE_LOSS",r[r.UNKNOWN_PRICE=1]="UNKNOWN_PRICE",r[r.INSUFFICIENT_SLIPPAGE=2]="INSUFFICIENT_SLIPPAGE",r[r.HIGH_SLIPPAGE=3]="HIGH_SLIPPAGE",r))(mt||{});function Rs(t,e){return e.find(o=>o.name===t)?.displayName}i(Rs,"getBlockchainDisplayNameFor");function Xe(t,e){return e.find(o=>o.name===t)?.shortName}i(Xe,"getBlockchainShortNameFor");function ea(t,e){return e.find(o=>o.id===t)?.swapperGroup}i(ea,"getSwapperDisplayName");function kr(t,e){return e.find(o=>Le(o,t))??null}i(kr,"findToken");function Tr(t,e){return e.find(o=>o.name===t)??null}i(Tr,"findBlockchain");import{i18n as De}from"@lingui/core";import ke from"bignumber.js";import{PendingSwapNetworkStatus as Xo}from"rango-types";function Vo(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain,s=e[e.length-1];n!=s&&e.push(n),s=e[e.length-1],r!=s&&e.push(r)}),e}i(Vo,"getRequiredWallets");function jo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(jo,"isValidAddress");import{i18n as me}from"@lingui/core";var Q=i(()=>({genericServerError:me.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:me.t("Please reset your liquidity sources."),description:me.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:me.t("No Routes Found."),description:me.t("Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination.")},bridgeLimitErrors:{increaseAmount:me.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:me.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:me.t("High Price Impact"),title:me.t("Price impact is too high!"),description:me.t("The price impact is significantly higher than the allowed amount. If you are sure, continue, otherwise, change the swap."),confirmMessage:me.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:me.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:me.t("USD Price Unknown"),title:me.t("USD Price Unknown, Cannot calculate Price Impact."),description:me.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:me.t("Confirm USD Price Unknown")}}),"errorMessages");function ta(t){switch(t.type){case 0:return t.diagnosisMessage??Q().noResultError.title;case 1:return Q().genericServerError;default:return""}}i(ta,"getQuoteErrorMessage");import{i18n as Ko}from"@lingui/core";var xt=i(()=>({connectWallet:Ko.t("Connect Wallet"),swap:Ko.t("Swap"),swapAnyway:Ko.t("Swap anyway"),ethWarning:Ko.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function oa(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new ke(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new ke(1e3)))??!1}i(oa,"hasHighValueLoss");function wr(t){return(t?.result?.swaps||[]).filter(e=>{let o=e.fromAmountMinValue?new ke(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ke(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(wr,"hasLimitError");function xr(t){let e=(t.result?.swaps||[]).filter(l=>{let p=l.fromAmountMinValue?new ke(l.fromAmountMinValue):null,c=l.fromAmountMaxValue?new ke(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?p?.gte(l.fromAmount)||c?.lte(l.fromAmount):p?.gt(l.fromAmount)||c?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new ke(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ke(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",s="",a="";return!r&&o&&o.gt(e.fromAmount)?(s=De.t({id:"Required: >= {min} {symbol}",values:{min:W(o,6,6),symbol:e.from.symbol}}),a=Q().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(s=De.t({id:"Required: > {min} {symbol}",values:{min:W(o,6,6),symbol:e.from.symbol}}),a=Q().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(s=De.t({id:"Required: <= {max} {symbol}",values:{max:W(n,6,6),symbol:e.from.symbol}}),a=Q().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(s=De.t({id:"Required: < {max} {symbol}",values:{max:W(n,6,6),symbol:e.from.symbol}}),a=Q().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:s,recommendation:a}}i(xr,"getLimitErrorMessage");function na(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:s,warning:a,error:l,needsToWarnEthOnPath:p}=t;return e!=="success"?{title:xt().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!s||!s.result||l||!r||r==="0"?{title:xt().swap,action:"confirm-swap",disabled:!0}:a?{title:xt().swapAnyway,action:"confirm-warning",disabled:!1}:p?{title:xt().ethWarning,action:"confirm-warning",disabled:!1}:{title:xt().swap,action:"confirm-swap",disabled:!1}:{title:xt().connectWallet,action:"connect-wallet",disabled:!1}}i(na,"getSwapButtonState");function vr(t,e,o){return!((!o||o.lte(Ae))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}i(vr,"canComputePriceImpact");function lm(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain,s=e[e.length-1];n!=s&&e.push(n),s=e[e.length-1],r!=s&&e.push(r)}),e}i(lm,"requiredWallets");var pm=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice");function cm(t,e){let o=Ae;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let s=pm(r.asset.blockchain,r.asset.symbol,r.asset.address,e);o=o.plus(new ke(r.amount).multipliedBy(s||0))}return o}i(cm,"getUsdFeeOfStep");function Yo(t,e){return t.reduce((o,n)=>o.plus(cm(n,e)),Ae)}i(Yo,"getTotalFeeInUsd");function br(t){let e=new Map;return t.result?.swaps.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(br,"checkSlippageErrors");function ra(t,e){let o=new Map;return t.result?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(ra,"checkSlippageWarnings");function Jo(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(Jo,"getMinRequiredSlippage");function ia(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(ia,"hasProperSlippage");function Zo(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:s,disabledLiquiditySources:a,liquiditySources:l,excludeLiquiditySources:p,slippage:c,affiliateRef:u,affiliatePercent:m,affiliateWallets:g,initialQuote:f,destination:k}=t,S=s?.reduce((A,C)=>(A[C.chain]=C.address,A),{}),h=[];r?.forEach(A=>{let C=h.find(v=>v.blockchain===A.chain);C?C.addresses.push(A.address):h.push({blockchain:A.chain,addresses:[A.address]})});let b=!!f,T=Mt((f?.result?.swaps||[]).reduce((A,C)=>(A.push(C.from.blockchain,C.to.blockchain),C.internalSwaps&&Array.isArray(C.internalSwaps)&&C.internalSwaps.map(v=>{A.push(v.from.blockchain,v.to.blockchain)}),A),[]));return{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:m??void 0,affiliateWallets:g??void 0,checkPrerequisites:b,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:h,selectedWallets:S??{},slippage:c.toString(),...k&&{destination:k},...p&&{swapperGroups:a.concat(l??[]),swappersGroupsExclude:!0},...!p&&{swapperGroups:l?.filter(A=>!a.includes(A)),swappersGroupsExclude:!1},...b&&{blockchains:T}}}i(Zo,"createQuoteRequestBody");function sa(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(sa,"getWalletsForNewSwap");function Dt(t){return t.result?.outputAmount||null}i(Dt,"getQuoteOutputAmount");function aa(t,e){return new ke(e).div(new ke(t)).minus(1).multipliedBy(100).toNumber()}i(aa,"getPercentageChange");function la(t,e){let o=Dt(t),n=Dt(e);if(!o||!n)return!1;let r=Ne(o,n);return r?r<=-1:!0}i(la,"isOutputAmountChangedALot");function pa(t,e,o){let n=t.validationStatus,r=$s(t);return e.sort((a,l)=>r.indexOf(a.chain)-r.indexOf(l.chain)).flatMap(a=>ga(a,n)||[]).filter(a=>!a.ok).map(a=>{let l=a.asset.symbol,p=W(new ke(a.currentAmount.amount).shiftedBy(-a.currentAmount.decimals),8,8),c=W(new ke(a.requiredAmount.amount).shiftedBy(-a.requiredAmount.decimals),8,8),u="";return a.reason==="FEE"&&(u=De.t(" for network fee")),a.reason==="INPUT_ASSET"&&(u=De.t(" for swap")),a.reason==="FEE_AND_INPUT_ASSET"&&(u=De.t(" for input and network fee")),De.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:c,symbol:l,reason:u,currentAmount:p,blockchain:Xe(a.asset.blockchain,o)}})})}i(pa,"generateBalanceWarnings");function ca(t,e){return(t?new ke(t):Ae).multipliedBy(e||0)}i(ca,"calcOutputUsdValue");function to(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Xo.NetworkChanged}i(to,"isNetworkStatusInWarningState");function ua(t,e){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),to(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case Xo.WaitingForConnectingWallet:n=n||De.t("Waiting for connecting wallet");break;case Xo.WaitingForQueue:n=n||De.t("Waiting for other running tasks to be finished");break;case Xo.WaitingForNetworkChange:n=n||De.t("Waiting for changing wallet network");break;default:n=n||"";break}r=r||"",n=n||"";let a=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:r,long:a}}}i(ua,"getSwapMessages");function ma(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(ma,"getLastConvertedTokenInFailedSwap");function da(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}i(da,"shouldRetrySwap");function fa(t,e,o,n,r,s){return t||!e&&!lm(n).every(a=>r.map(l=>l.chain).includes(a))||!!e&&!o||!!e&&!!o&&s&&!jo(s,o)}i(fa,"confirmSwapDisabled");function Ar(t,e,o){return o&&t.find(n=>{let r=e?.split("--");return r?.length===1?n.symbol===r[0]&&n.address===null&&n.blockchain===o.name:n.symbol===r?.[0]&&n.address===r?.[1]&&n.blockchain===o.name})||null}i(Ar,"searchParamsToToken");function ya(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i(ya,"getQuoteToTokenUsdPrice");function Er(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}i(Er,"isNumberOfSwapsChanged");function Ir(t,e){let o=t.result?.swaps.map(r=>r.swapperId)||[],n=e.result?.swaps.map(r=>r.swapperId)||[];return!gr(o,n)}i(Ir,"isQuoteSwappersUpdated");function Wr(t,e){let o=t.result?.swaps.map(r=>r.to.symbol)||[],n=e.result?.swaps.map(r=>r.to.symbol)||[];return!gr(o,n)}i(Wr,"isQuoteInternalCoinsUpdated");function Sa(t,e){return Er(t,e)||Ir(t,e)||Wr(t,e)}i(Sa,"isQuoteChanged");function ga(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(ga,"getRequiredBalanceOfWallet");function it(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(it,"getPriceImpactLevel");function Ca(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],s=mm(t.steps),a={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=Tr(s?s.toBlockchain:n.fromBlockchain,e),p=Tr(r.toBlockchain,e),c=kr(s?{blockchain:l?.name??"",symbol:s.toSymbol,address:s.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress},o),u=kr(a,o),m=s?s.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:c,toBlockchain:p,toToken:u,inputAmount:m}}i(Ca,"createRetryQuote");function Ro(t,e){let{fromToken:o,toToken:n,tokens:r,userSlippage:s}=e,a=vt(o,t.requestAmount),l=vt(n,t.result?.outputAmount??"");if(t.result&&a&&l){let u=Ne(a.toString(),l.toString());if(!!u&&oa(a,u)){let g=Yo(t.result.swaps,r),f=it(u);return{type:0,inputUsdValue:a,outputUsdValue:l,priceImpact:u,totalFee:g,warningLevel:f}}}else if(t.result&&(!a||!l))return{type:1};let p=Jo(t),c=s>Vs;if(ia(e.userSlippage.toString(),p)){if(c&&parseFloat(p??"0")<s)return{type:3,slippage:s.toString()}}else return{type:2,recommendedSlippages:ra(t,s),minRequiredSlippage:p};return null}i(Ro,"generateQuoteWarnings");function Ne(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:aa(t.toString(),e.toString());return n&&n<0?n:null}i(Ne,"getPriceImpact");var dm=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"),ft=dm;var vt=i((t,e)=>t?.usdPrice?new gt(e||Ae).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),O=ft(fm()(gm(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new gt(0),outputUsdValue:new gt(0),toBlockchain:null,toToken:null,quote:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:"",quoteWarningsConfirmed:!1,setQuote:e=>t(o=>{let n=null,r=Ae;return eo(o.inputAmount)?(e&&(n=e.result?.outputAmount?new gt(e.result?.outputAmount):null,r=ca(e.result?.outputAmount,ya(e)||o.toToken?.usdPrice)),{quote:e,...!!e&&{outputAmount:n,outputUsdValue:r}}):{}}),resetQuote:()=>t(()=>({quote:null,outputAmount:null,outputUsdValue:new gt(0)})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,...o.fromToken&&{quote:null,fromToken:null,outputAmount:null,outputUsdValue:null}})},setFromToken:e=>t(o=>({fromToken:e.token,...e.token&&{fromBlockchain:e.meta.blockchains.find(n=>n.name===e.token.blockchain)??null},...!!o.inputAmount&&{inputUsdValue:vt(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{quote:null,toToken:null,outputAmount:null,outputUsdValue:null}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new gt(0),outputUsdValue:new gt(0),quote:null},...!!o.fromToken&&{inputUsdValue:vt(o.fromToken,e)}}))},retry:(e,o)=>{let{tokens:n,blockchains:r}=o,{fromBlockchain:s,fromToken:a,toBlockchain:l,toToken:p,inputAmount:c}=Ca(e,r,n);t({fromBlockchain:s,fromToken:a,inputAmount:c,outputAmount:null,inputUsdValue:vt(a??null,c),outputUsdValue:new gt(0),toBlockchain:l,toToken:p,quote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:vt(e.toToken,e.outputAmount?.toString()||"")})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputAmount:null,outputUsdValue:null,quote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:null,quote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:""}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})}))));function Ta(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,setFromToken:r,fromToken:s,toToken:a,fromBlockchain:l,toBlockchain:p}=O(),c=d().config,u=d().fetchStatus,m=d().blockchains(),g=d().tokens(),{setAffiliateRef:f,setAffiliatePercent:k,setAffiliateWallets:S}=d(),h=tn(()=>c?.from?.tokens,[c?.from?.tokens]),b=tn(()=>c?.from?.blockchains,[c?.from?.blockchains]),T=tn(()=>c?.to?.tokens,[c?.to?.tokens]),w=tn(()=>c?.to?.blockchains,[c?.to?.blockchains]),A=on(void 0),C=on(void 0),v=on(void 0),E=on(void 0);en(()=>{t(c?.amount?.toString()||"")},[c?.amount]),ka(()=>{if(u==="success"){let y=m.find($=>$.name===c?.from?.blockchain),P=g.find($=>Le($,c?.from?.token||null));(y||!y&&v.current)&&n(y??null),P?r({token:P,meta:{blockchains:m,tokens:g}}):!P&&A.current&&r({token:null}),v.current=c?.from?.blockchain,A.current=c?.from?.token}},[c?.from?.token?.symbol,c?.from?.token?.address,c?.from?.token?.blockchain,c?.from?.blockchain,u]),en(()=>{s&&h&&(h.some(y=>Le(y,s))||r({token:null})),l&&b&&(b.includes(l.name)||n(null))},[h,b]),en(()=>{a&&T&&(T.some(y=>Le(y,a))||e({token:null})),p&&w&&(w.includes(p.name)||o(null))},[T,w]),ka(()=>{if(u==="success"){let y=m.find($=>$.name===c?.to?.blockchain),P=g.find($=>Le($,c?.to?.token||null));(y||!y&&E.current)&&o(y??null),P?e({token:P,meta:{blockchains:m,tokens:g}}):!P&&C.current&&e({token:null}),E.current=c?.to?.blockchain,C.current=c?.to?.token}},[c?.to?.token?.symbol,c?.to?.token?.address,c?.to?.token?.blockchain,c?.to?.blockchain,u]),en(()=>{f(c?.affiliate?.ref??null),k(c?.affiliate?.percent??null),S(c?.affiliate?.wallets??null)},[c?.affiliate?.ref,c?.affiliate?.percent,c?.affiliate?.wallets])}i(Ta,"useSyncStoresWithConfig");import{useEffect as Cm}from"react";import{create as hm}from"zustand";import{subscribeWithSelector as ym}from"zustand/middleware";var z=ft(hm()(ym((t,e)=>({connectedWallets:[],balances:{},customDestination:"",loading:!1,connectWallet:(o,n)=>{let r=e().getWalletsDetails;t(s=>({loading:!0,connectedWallets:s.connectedWallets.filter(a=>a.walletType!==o[0].walletType).concat(o.map(a=>{let l=!s.connectedWallets.find(p=>p.chain===a.chain&&p.selected);return{balances:[],address:a.address,chain:a.chain,explorerUrl:null,walletType:a.walletType,selected:l,loading:!0,error:!1}}))})),r(o,n)},disconnectWallet:o=>{t(n=>{let r=n.connectedWallets.filter(l=>l.selected&&l.walletType!==o).map(l=>l.chain),s=n.connectedWallets.filter(l=>l.walletType!==o).map(l=>r.includes(l.chain)?l:(r.push(l.chain),{...l,selected:!0}));return{balances:Qo(s),connectedWallets:s}})},selectWallets:o=>t(n=>({connectedWallets:n.connectedWallets.map(r=>{let s=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),a=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return s?{...r,selected:!1}:a?{...r,selected:!0}:r})})),clearConnectedWallet:()=>t(()=>({connectedWallets:[],selectedWallets:[]})),getWalletsDetails:async(o,n,r=!0)=>{let s=e().getWalletsDetails;t(a=>({loading:!0,connectedWallets:a.connectedWallets.map(l=>o.find(p=>qo(p,l))?{...l,loading:!0}:l)}));try{let a=o.map(({address:c,chain:u})=>({address:c,blockchain:u})),p=(await $t().getWalletsDetails(a)).wallets;if(p)t(c=>{let u=c.connectedWallets.map(g=>{let f=o.find(S=>qo(S,g)),k=p.find(S=>S.address===g.address&&S.blockChain===g.chain);return k?.failed&&f&&r&&s([f],n,!1),f&&k?{...g,explorerUrl:k.explorerUrl,balances:Ms(k,n),loading:!1}:g});return{loading:!1,balances:Qo(u),connectedWallets:u}});else throw new Error("Wallet not found")}catch{t(l=>{let p=l.connectedWallets.map(u=>o.find(m=>qo(m,u))?_s(u):u);return{loading:!1,balances:Qo(p),connectedWallets:p}})}},getBalanceFor:o=>{let{balances:n}=e(),r=Sr(o);return n[r]??null}}))));import{allProviders as Sm}from"@rango-dev/provider-all";function nn(t,e){let o=Sm({walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||""}});if(t){let n=[];return t.forEach(r=>{if(typeof r=="string"){let s=o.find(a=>a.config.type===r);s?n.push(s):console.warn(`Couldn't find ${r} provider. Please make sure you are passing the correct name.`)}else n.push(r)}),n}return o}i(nn,"matchAndGenerateProviders");function wa(t,e){return nn(t,e).map(r=>r.config.type)}i(wa,"configWalletsToWalletName");function xa(t,e){let o=z.use.clearConnectedWallet(),n=nn(void 0,e);return Cm(()=>{o(),n=nn(t,{walletConnectProjectId:e?.walletConnectProjectId})},[t?.length]),{providers:n}}i(xa,"useWalletProviders");var sn=wm({onConnectWallet:()=>{}});function vm(t){let{updateConfig:e,updateSettings:o,fetch:n}=d(),r=d().blockchains(),s=d().tokens(),a={walletConnectProjectId:t.config?.walletConnectProjectId},{providers:l}=xa(t.config.wallets,a),{connectWallet:p,disconnectWallet:c}=z(),u=xm();Ta(),va(()=>{n().catch(console.log)},[]),va(()=>{t.config&&(e(t.config),o(t.config))},[t.config]);let m=r.filter(Tm).map(f=>f.name),g=i((f,k,S,h,b)=>{if(k===Lr.ACCOUNTS)if(S){let T=Uo(b.supportedBlockchains),w=Ps(f,S,m,T,b.isContractWallet);p(w,s)}else c(f);if(k===Lr.ACCOUNTS&&h.connected){let T=`${f}-${h.network}-${S}`;h.connected&&(u.current?u.current(T):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(k===Lr.NETWORK&&h.network){let T=`${f}-${h.network}`;u.current?u.current(T):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(f,k,S,h,b)},"onUpdateState");return rn.createElement(sn.Provider,{value:{onConnectWallet:f=>{u.current=f}}},rn.createElement(km,{allBlockChains:r,providers:l,onUpdateState:g,autoConnect:!0},t.children))}i(vm,"Main");function an(t){let{config:e,...o}=t;return rn.createElement(Zs,{config:e},rn.createElement(vm,{...o,config:e}))}i(an,"WidgetWallets");import ks from"react";import{I18nManager as aS}from"@rango-dev/ui";import Wo,{useContext as lS,useEffect as Bu,useState as Pu}from"react";import{useQueueManager as Pm}from"@rango-dev/queue-manager-rango-preset";import{useWallets as $m}from"@rango-dev/wallets-react";import{isEvmBlockchain as Mm}from"rango-types";import ln,{Fragment as _m}from"react";import{MemoryRouter as Dm,useInRouterContext as Fm}from"react-router";import{useWallets as Am}from"@rango-dev/wallets-react";import{useEffect as Em,useRef as Im}from"react";function ba(){let{connect:t,state:e}=Am(),o=Im({}),{fetchStatus:n}=d(),r=new URLSearchParams(location.search).get("autoConnect")||"",s=e(r);Em(()=>{n==="success"&&r&&s.installed&&!s.connecting&&!s.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[s,n])}i(ba,"useForceAutoConnect");import{useEffect as Nr,useRef as Br}from"react";import{createSearchParams as Lm,useLocation as Nm,useSearchParams as Bm}from"react-router-dom";var M={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",liquiditySources:"liquidity-sources",themes:"themes",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId"};import{create as Wm}from"zustand";var Te=ft(Wm()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function Aa(){let t=Br(!0),[e,o]=Bm(),n=Nm(),r=Br(n.search),s=Br({}),a=O.use.fromBlockchain(),l=O.use.toBlockchain(),p=O.use.fromToken(),c=O.use.toToken(),u=O.use.setFromBlockchain(),m=O.use.setFromToken(),g=O.use.setToBlockchain(),f=O.use.setToToken(),k=O.use.inputAmount(),S=O.use.setInputAmount(),h=d().fetchStatus,b=d().blockchains(),T=d().tokens(),w=Te.use.setSelectedSwap();return Nr(()=>{let A={};Lm(r.current).forEach((v,E)=>{A[E]=v}),s.current=A;let C=n.pathname.split(M.swaps+"/")[1]||null;C&&w(C)},[]),Nr(()=>{if(!t.current){let A="",C="",v="",E="",y="",P=s.current["autoConnect"];h!=="success"?(A=s.current["fromBlockchain"],C=s.current["fromToken"],v=s.current["toBlockchain"],E=s.current["toToken"],y=s.current["fromAmount"]||k):(A=a?.name||"",C=(p?.symbol||"")+(p?.address?`--${p?.address}`:""),v=l?.name||"",E=(c?.symbol||"")+(c?.address?`--${c?.address}`:""),y=k),o({...A&&{["fromBlockchain"]:A},...C&&{["fromToken"]:C},...v&&{["toBlockchain"]:v},...E&&{["toToken"]:E},...y&&{["fromAmount"]:y.toString()},...P&&{["autoConnect"]:P}},{replace:!0})}t.current=!1},[n.pathname,k,a,p,l,c]),Nr(()=>{if(h==="success"){let A=e.get("fromBlockchain"),C=e.get("fromToken"),v=e.get("toBlockchain"),E=e.get("toToken"),y=e.get("fromAmount"),P=b.find(_=>_.name===A),$=Ar(T,C,P||null),N=b.find(_=>_.name===v),x=Ar(T,E,N||null);P&&(u(P),$&&m({token:$,meta:{blockchains:b,tokens:T}})),N&&(g(N),x&&f({token:x,meta:{blockchains:b,tokens:T}})),y&&S(y)}},[h]),null}i(Aa,"UpdateUrl");function Ea({children:t,...e}){let o=Fm(),n=o?_m:Dm,r=d().blockchains(),{canSwitchNetworkTo:s}=$m();ba();let a=r.filter(Mm);return Pm({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:a,canSwitchNetworkTo:s}),ln.createElement(ln.Fragment,null,ln.createElement(n,null,t),o&&ln.createElement(Aa,null))}i(Ea,"AppRouter");import ve from"react";import{useRoutes as Ky}from"react-router-dom";import{i18n as Bn}from"@lingui/core";import{useManager as Xf}from"@rango-dev/queue-manager-react";import{Alert as Bp,Button as Pp,css as mi,Divider as Yf,IconButton as $p,RefreshIcon as Jf,SettingsIcon as Zf,styled as Mp,Tooltip as Rf,Typography as eg,WalletIcon as tg}from"@rango-dev/ui";import ee,{useEffect as ho,useLayoutEffect as og,useRef as ng,useState as Pn}from"react";import{flushSync as rg}from"react-dom";import{useNavigate as ig}from"react-router-dom";import{i18n as st}from"@lingui/core";import{Alert as jr,BalanceErrors as Kd,Button as wl,ChevronDownIcon as Xd,ChevronLeftIcon as Yd,Divider as zt,MessageBox as Jd,Modal as xl,Typography as xn,WalletIcon as Zd}from"@rango-dev/ui";import L,{useEffect as Rd,useLayoutEffect as ef,useRef as tf,useState as Et}from"react";import{useNavigate as of}from"react-router-dom";import{i18n as pn}from"@lingui/core";function cn(t){switch(t.type){case 0:return pn.t("Route has been updated.");case 3:return pn.t("Output amount changed to {newOutputAmount} ({percentageChange}% change).",{newOutputAmount:t.newOutputAmount,percentageChange:t.percentageChange});case 1:return pn.t("Route swappers has been updated.");case 2:return pn.t("Route internal coins has been updated.");default:return""}}i(cn,"getQuoteUpdateWarningMessage");import*as Ot from"@radix-ui/react-collapsible";import{Button as Um,css as Ia,darkTheme as Ft,IconButton as qm,keyframes as Wa,styled as de,TextField as zm}from"@rango-dev/ui";var oo=300,Gm=Wa({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Hm=Wa({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),La=de("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Na=de("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Qm=de("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${Ft} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$info100",[`.${Ft} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$info100",[`.${Ft} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Ba=de(Qm,{alignSelf:"stretch",minHeight:"93px"}),Pa=de(Ot.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit"}),$a=de("div",{padding:"$20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ma=de(qm,{position:"absolute",left:"$20"}),_a=de("div",{paddingTop:"$20"}),Da=Ia({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Fa=de(Ot.Root,{backgroundColor:"$neutral200",borderRadius:"$sm",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Oa=de(Um,{width:"100%",borderRadius:"$sm !important",padding:"$15 !important",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Ft} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color","&:hover":{$$color:"$colors$info100",[`.${Ft} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$background:"$colors$info100",[`.${Ft} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}}),Ua=de("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"5px"}}),qa=Ia({paddingTop:"5px"}),za=de("div",{transition:`all ${oo}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),Ga=de("div",{display:"flex"}),Ha=de(zm,{backgroundColor:"$neutral100",padding:"$0 $15 $15 $15"}),un=de(Ot.Content,{backgroundColor:"$neutral100",overflow:"hidden",variants:{open:{true:{animation:`${Gm} ${oo}ms ease-out`},false:{animation:`${Hm} ${oo}ms ease-out`}}}}),Qa=de("div",{overflow:"visible",width:"100%"});import{i18n as Ue}from"@lingui/core";import{Button as Qd,Divider as Qr,Image as Vd,MessageBox as wn,Modal as yl,SelectableWallet as jd,Typography as Sl,WalletState as Cl}from"@rango-dev/ui";import R,{useEffect as kl,useState as ro}from"react";import{WalletState as Pr}from"@rango-dev/ui";import{useWallets as Vm}from"@rango-dev/wallets-react";import{KEPLR_COMPATIBLE_WALLETS as jm,WalletTypes as mn}from"@rango-dev/wallets-shared";import{useEffect as Km,useState as Xm}from"react";var Ym=Object.values(mn);function dn(t){let{config:e,chain:o,onBeforeConnect:n,onConnect:r}=t,{state:s,disconnect:a,getWalletInfo:l,connect:p}=Vm(),{connectedWallets:c}=z(),u=d().blockchains(),m=wa(e?.wallets,{walletConnectProjectId:e?.walletConnectProjectId})||Ym,g=Bs(s,l,m,o),f=Os(g),[k,S]=Xm(""),h=i(C=>!c.find(v=>v.walletType===C&&v.chain===o),"isExperimentalChainNotAdded"),b=i(async C=>{let v=s(C);try{if(k&&S(""),v.connected)await a(C);else{let E=!!g.find(y=>y.state===Pr.CONNECTED);if(!e?.multiWallets&&E)return;n?.(C),await p(C),r?.(C)}}catch(E){S("Error: "+E?.message)}},"handleClick"),T=i(()=>{let C=g?.filter(v=>v.state===Pr.CONNECTING)||[];for(let v of C)a(v.type)},"disconnectConnectingWallets");Km(()=>()=>{T()},[]);let w=i(C=>C.filter(E=>E.state!=Pr.NOT_INSTALLED&&![mn.DEFAULT,mn.WALLET_CONNECT_2].includes(E.type)&&l(E.type).supportedChains.filter(y=>y.type=="EVM").length>0).length==0,"shouldShowDefaultInjectedWallet"),A=i((C,v,E)=>zo(E,v)&&h(C)&&!jm.includes(C)||C==mn.DEFAULT&&!w(g),"shouldExcludeWallet");return{list:f.filter(C=>!A(C.type,o??"",u)),error:k,handleClick:b}}i(dn,"useWalletList");import{i18n as cl}from"@lingui/core";import{styled as ml,Typography as Dd,Wallet as Fd,WalletState as Od}from"@rango-dev/ui";import At,{Fragment as Ud,useState as ul}from"react";import{BottomLogo as Ed,Divider as Id,Header as Wd}from"@rango-dev/ui";import fe from"react";import{useNavigate as Jm}from"react-router-dom";function ht(){let t=Jm();return()=>t(-1)}i(ht,"useNavigateBack");import{ChevronLeftIcon as ed}from"@rango-dev/ui";import Ka from"react";import{darkTheme as Zm,IconButton as Rm,styled as fn}from"@rango-dev/ui";var Fe=fn(Rm,{width:"$24",position:"relative",padding:"0",overflow:"unset"}),Va=fn("div",{position:"absolute",background:"$secondary500",[`.${Zm} &`]:{$$color:"$colors$secondary400"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Ut=fn("div",{display:"flex",justifyContent:"flex-end",width:"$40"}),ja=fn("div",{position:"absolute",backgroundColor:"$secondary500",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0"});function $r(t){return Ka.createElement(Fe,{variant:"ghost",size:"small",onClick:t.onClick},Ka.createElement(ed,{color:"black",size:16}))}i($r,"BackButton");import{i18n as td}from"@lingui/core";import{Button as od,Typography as nd}from"@rango-dev/ui";import Mr from"react";function _r(t){return Mr.createElement(Ut,null,Mr.createElement(od,{variant:"ghost",onClick:t.onClick,size:"xsmall"},Mr.createElement(nd,{variant:"label",size:"medium",color:"error500"},td.t("Cancel"))))}i(_r,"CancelButton");import{i18n as rd}from"@lingui/core";import{Tooltip as id,WalletIcon as sd}from"@rango-dev/ui";import gn from"react";function Dr(t){return gn.createElement(id,{container:t.container,side:"top",content:rd.t("Connect Wallet")},gn.createElement(Fe,{variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&gn.createElement(Va,null),gn.createElement(sd,{size:18,color:"black"})))}i(Dr,"WalletButton");import{i18n as Sn}from"@lingui/core";import{NotificationsIcon as Td,Popover as wd,RefreshIcon as xd,SettingsIcon as vd,Tooltip as Cn,TransactionIcon as bd}from"@rango-dev/ui";import ce from"react";import{i18n as fd}from"@lingui/core";import{ChainToken as el,ChevronRightIcon as gd,ListItemButton as hd,Typography as yd}from"@rango-dev/ui";import Oe from"react";import{useNavigate as Sd}from"react-router-dom";import{create as ad}from"zustand";import{persist as ld,subscribeWithSelector as pd}from"zustand/middleware";var Be=ft(ad()(ld(pd((t,e)=>({notifications:[],setNotification:(o,n)=>{let r=n.steps[0],s=n.steps[n.steps.length-1],a={event:o,creationTime:Date.now(),read:!1,requestId:n.requestId,route:{from:{blockchain:r.fromBlockchain,tokenAddress:r.fromSymbolAddress,tokenSymbol:r.fromSymbol},to:{blockchain:s.toBlockchain,tokenSymbol:s.toSymbol,tokenAddress:s.toSymbolAddress}}},l=e().notifications.filter(p=>p.requestId!==n.requestId);t(()=>({notifications:[...l,a]}))},setAsRead:o=>{t(n=>({notifications:n.notifications.map(r=>r.requestId===o?{...r,read:!0}:r)}))},getUnreadNotifications:()=>e().notifications.filter(o=>!o.read)})),{name:"notification",skipHydration:!0})));import{styled as hn}from"@rango-dev/ui";var Xa=hn("div",{padding:"$10",width:"350px",minHeight:"150px"}),Ya=hn("ul",{padding:0,margin:0,listStyle:"none",".to-chain-token":{transform:"translateX(-3px)"}}),Ja=hn("div",{display:"flex",padding:0,alignItems:"center",alignSelf:"stretch"}),Za=hn("div",{display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",padding:"$10",width:"100%",height:"150px"});import{i18n as cd}from"@lingui/core";import{Divider as ud,NoNotificationIcon as md,Typography as dd}from"@rango-dev/ui";import yn from"react";function Ra(){return yn.createElement(Za,null,yn.createElement(md,{color:"secondary",size:26}),yn.createElement(ud,{size:12}),yn.createElement(dd,{variant:"body",size:"medium",color:"neutral700"},cd.t("You have no notification")))}i(Ra,"NotificationNotFound");var Cd=4;function Fr(){let t=Sd(),e=Te.use.setSelectedSwap(),{getUnreadNotifications:o}=Be(),n=o(),r=d().blockchains(),s=d().tokens(),a=n.sort((p,c)=>c.creationTime-p.creationTime).slice(0,Cd),l=i(p=>{e(p),t(`${M.swaps}/${p}`)},"handleOnClick");return Oe.createElement(Xa,null,a.length?Oe.createElement(Ya,null,a.map(p=>{let c=s.find(f=>f.address===p.route.from.tokenAddress&&f.blockchain===p.route.from.blockchain&&f.symbol===p.route.from.tokenSymbol),u=r.find(f=>f.name===p.route.from.blockchain),m=s.find(f=>f.address===p.route.to.tokenAddress&&f.blockchain===p.route.to.blockchain&&f.symbol===p.route.to.tokenSymbol),g=r.find(f=>f.name===p.route.to.blockchain);return Oe.createElement(hd,{key:p.requestId,onClick:()=>l(p.requestId),title:Oe.createElement(yd,{variant:"body",size:"small",color:"$neutral700"},fd.t(p.event.message)),id:p.requestId,start:Oe.createElement(Ja,null,Oe.createElement("div",{className:"from-chain-token"},Oe.createElement(el,{tokenImage:c?c.image:"",chainImage:u?u.logo:"",size:"small"})),Oe.createElement("div",{className:"to-chain-token"},Oe.createElement(el,{tokenImage:m?m.image:"",chainImage:g?g.logo:"",size:"small"}))),end:Oe.createElement(gd,{size:12,color:"gray"})})})):Oe.createElement(Ra,null))}i(Fr,"NotificationContent");import{Typography as kd}from"@rango-dev/ui";import tl from"react";function ol(){let{getUnreadNotifications:t}=Be(),e=t().length;return e?tl.createElement(ja,null,tl.createElement(kd,{variant:"body",size:"xsmall",color:"$background"},e)):null}i(ol,"UnreadNotificationsBadge");function Or(t){let{layoutRef:e,onClickRefresh:o,onClickHistory:n,onClickSettings:r,onClickNotifications:s}=t,{config:{features:a}}=d(),l=We("notification",a);return ce.createElement(ce.Fragment,null,ce.createElement(Cn,{container:j(),side:"top",content:Sn.t("Refresh")},ce.createElement(Fe,{variant:"ghost",size:"small",onClick:o,disabled:!o},ce.createElement(xd,{size:16,color:o?"black":"gray"}))),!l&&ce.createElement(Cn,{container:j(),side:"top",content:Sn.t("Notifications")},ce.createElement(wd,{align:"center",collisionBoundary:e,collisionPadding:{right:20,left:20},container:j(),content:ce.createElement(Fr,null)},ce.createElement(Fe,{size:"small",variant:"ghost",onClick:s},ce.createElement(Td,{size:18,color:"black"}),ce.createElement(ol,null)))),ce.createElement(Cn,{container:j(),side:"top",content:Sn.t("Settings")},ce.createElement(Fe,{size:"small",variant:"ghost",onClick:r},ce.createElement(vd,{size:18,color:"black"}))),ce.createElement(Cn,{container:j(),side:"top",content:Sn.t("Transactions History")},ce.createElement(Fe,{size:"small",variant:"ghost",onClick:n},ce.createElement(bd,{size:18,color:"black"}))))}i(Or,"HomeButtons");import{darkTheme as Ad,styled as Ur}from"@rango-dev/ui";var nl=Ur("div",{position:"relative",display:"flex",flexDirection:"column",borderRadius:"$primary",overflow:"hidden !important",boxShadow:"15px 15px 15px 0px rgba(0, 0, 0, 0.05)",width:"95vw",minWidth:"300px",maxWidth:"390px",maxHeight:"700px",textAlign:"left",$$color:"$colors$neutral100",[`.${Ad} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",variants:{fixedHeight:{true:{height:"95vh"},false:{height:"auto"}}}}),rl=Ur("div",{borderTopLeftRadius:"20px",borderTopRightRadius:"20px",display:"flex",flexDirection:"column",flex:1,padding:"$20 $20 $10 $20",backgroundColor:"$background",position:"relative",overflowY:"auto",overflowX:"hidden",variants:{noPadding:{true:{padding:"0"}}}}),il=Ur("div",{backgroundColor:"$background","& .footer__content":{padding:"$0 $20"},"& .footer__logo":{padding:"$0 $20 $10 $20"}});function Ld(t,e){let{children:o,header:n,footer:r,noPadding:s,hasLogo:a=!0,fixedHeight:l=!0}=t,p=z.use.connectedWallets(),{config:{features:c}}=d(),u=We("connectWalletButton",c),m=Te.use.connectWalletsButtonDisabled(),g=ht(),f=i(()=>{!m&&n.onWallet&&n.onWallet()},"onConnectWallet"),k=typeof n.hasBackButton>"u"||n.hasBackButton;return fe.createElement(nl,{ref:e,fixedHeight:l,id:"swap-box"},fe.createElement(Wd,{prefix:fe.createElement(fe.Fragment,null,k&&fe.createElement($r,{onClick:g})),title:n.title,suffix:fe.createElement(fe.Fragment,null,n.suffix,n.onWallet&&!u&&fe.createElement(Dr,{container:j(),onClick:f,isConnected:!!p?.length}),n.onCancel&&fe.createElement(_r,{onClick:n.onCancel}))}),fe.createElement(rl,{noPadding:s},o),(a||r)&&fe.createElement(il,null,fe.createElement("div",{className:"footer__content"},r),a&&fe.createElement("div",{className:"footer__logo"},fe.createElement(Id,{size:12}),fe.createElement(Ed,null))))}i(Ld,"LayoutComponent");var K=fe.forwardRef(Ld);K.displayName="Layout";import{Divider as Md,Modal as _d}from"@rango-dev/ui";import zr from"react";import{i18n as qt}from"@lingui/core";import{Image as Pd,MessageBox as qr,WalletState as $d}from"@rango-dev/ui";import bt from"react";import{keyframes as Nd,styled as kn}from"@rango-dev/ui";var Hx=kn("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),sl=kn("div",{position:"relative"}),Bd=Nd({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),al=kn("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Bd} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),ll=kn("div",{"& img":{borderRadius:"50%"}});function pl(t){let{state:e,image:o,error:n}=t;return e===$d.CONNECTED?bt.createElement(qr,{type:"success",title:qt.t("Wallet Connected"),description:qt.t("Your wallet is connected, you can use it to swap.")}):n?bt.createElement(qr,{type:"error",title:qt.t("Failed to Connect"),description:n||qt.t("Your wallet is not connected. Please try again.")}):bt.createElement(qr,{type:"loading",title:qt.t("Connecting to your wallet"),description:qt.t("Click connect in your wallet popup."),icon:bt.createElement(sl,null,bt.createElement(ll,null,bt.createElement(Pd,{src:o,size:45})),bt.createElement(al,null))})}i(pl,"ModalContent");function no(t){let{open:e,onClose:o,...n}=t;return zr.createElement(_d,{open:e,onClose:o,container:document.getElementById("swap-box")||document.body},zr.createElement(pl,{...n}),zr.createElement(Md,{direction:"vertical",size:32}))}i(no,"WalletModal");var qd=ml("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),zd=ml("div",{textAlign:"center"}),Tn=3e3,Gr=300;function dl(){let{config:t,fetchStatus:e}=d(),[o,n]=ul(!1),[r,s]=ul(""),a=null,{list:l,handleClick:p,error:c}=dn({config:t,onBeforeConnect:f=>{a=setTimeout(()=>{n(!0),s(f)},Gr)},onConnect:()=>{a&&clearTimeout(a),setTimeout(()=>{n(!1)},Tn)}}),u=l.find(f=>f.type===r),m=u?.image||"",g=u?.state||Od.NOT_INSTALLED;return At.createElement(K,{header:{title:cl.t("Connect Wallets")}},At.createElement(zd,null,At.createElement(Dd,{variant:"title",size:"xmedium",align:"center"},cl.t("Choose a wallet to connect.")),At.createElement(qd,null,l.map((f,k)=>{let S=`wallet-${k}-${f.type}`;return At.createElement(Ud,{key:S},At.createElement(Fd,{...f,container:j(),onClick:h=>{p(h)},isLoading:e==="loading"}))}),At.createElement(no,{open:!!o,onClose:()=>n(!1),image:m,state:g,error:c}))))}i(dl,"WalletsPage");import{keyframes as Gd,styled as Hr}from"@rango-dev/ui";var fl=Hr("div",{position:"relative"}),Hd=Gd({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),gl=Hr("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Hd} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),hl=Hr("div",{"& img":{borderRadius:"50%"}});function Vr(t){let{chain:e,isSelected:o,selectWallet:n,limit:r,onShowMore:s}=t,{config:a}=d(),l=z.use.connectedWallets(),{blockchains:p}=d(),[c,u]=ro(""),[m,g]=ro(null),[f,k]=ro(!1),[S,h]=ro(null),{suggestAndConnect:b}=Tl(),T=null,{list:w,error:A,handleClick:C}=dn({config:a,chain:e,onBeforeConnect:x=>{T=setTimeout(()=>{u(x)},Gr)},onConnect:()=>{T&&clearTimeout(T),setTimeout(()=>{u("")},Tn)}}),[v,E]=ro(w),y=w.length,P=r&&y-r>0,$=i(async x=>{k(!1),h("in-progress");try{await b(x.walletType,x.chain),h("completed")}catch{h("rejected")}},"addExperimentalChain");kl(()=>{E(x=>{let _=w.findIndex(I=>o(I.type,e));return P&&_>1?[w[_]].concat(w.filter((I,G)=>G!==_)):x.map(I=>w.find(G=>G.type===I.type)??I)})},[JSON.stringify(w)]);let N=document.querySelector("#swap-box");return kl(()=>{let x=null;return(S==="completed"||S==="rejected")&&(x=setTimeout(()=>h(null),Tn)),()=>{x&&clearTimeout(x)}},[S]),R.createElement(R.Fragment,null,v.slice(0,r).map(x=>{let _=Us({connectedWallets:l,walletType:x.type,chain:e}),I=_?Ho(_):"",G=zo(p(),e),J=!l.find(ye=>ye.walletType===x.type&&ye.chain===e),te=G&&J&&x.state===Cl.CONNECTED,H=te?Ue.t({id:"Add {chain} chain",values:{chain:e}}):I,re=i(()=>{x.state===Cl.DISCONNECTED?C(x.type):te?(g({walletType:x.type,chain:e,address:_??""}),k(!0)):n({walletType:x.type,chain:e,address:_??""})},"onClick"),he=m?.chain?Rs(m.chain,p()):void 0;return R.createElement(R.Fragment,null,R.createElement(no,{open:c===x.type,onClose:()=>u(""),image:x.image,state:x.state,error:A}),!!m&&R.createElement(yl,{open:!!m&&f,container:N,onClose:()=>{g(null)}},R.createElement(wn,{title:Ue.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:he}}),type:"warning",description:Ue.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:he}})},R.createElement(Qr,{size:18}),R.createElement(Qr,{size:32}),R.createElement(Qd,{onClick:$.bind(null,m),variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Ue.t("Confirm")))),S&&R.createElement(yl,{open:!!S,onClose:h.bind(null,null),container:N},S==="in-progress"&&R.createElement(wn,{type:"loading",title:Ue.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:he}}),description:Ue.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:he}}),icon:R.createElement(fl,null,R.createElement(hl,null,R.createElement(Vd,{src:x.image,size:45})),R.createElement(gl,null))}),S==="completed"&&R.createElement(wn,{type:"success",title:Ue.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:he}}),description:Ue.t({id:"{blockchainDisplayName} is added to your wallet, you can use it to swap.",values:{blockchainDisplayName:he}})}),S==="rejected"&&R.createElement(wn,{type:"error",title:Ue.t("Request Rejected"),description:Ue.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:he}})}),R.createElement(Qr,{direction:"vertical",size:32})),R.createElement(jd,{key:x.type,description:H,onClick:re,selected:o(x.type,e),...x}))}),P&&R.createElement(Ba,{selected:!1,onClick:s},R.createElement(Sl,{variant:"label",size:"medium"},Ue.t("Show more wallets"),R.createElement(Sl,{variant:"label",size:"medium",color:"$primary"},"\xA0+",y-(r??0)))))}i(Vr,"WalletList");var nf=2;function vl(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:s}=t,a=d().config,l=d().blockchains(),{quote:p,setSelectedWallets:c,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:m,customDestination:g,setCustomDestination:f}=O(),{connectedWallets:k,selectWallets:S}=z(),[h,b]=Et(""),[T,w]=Et([]),[A,C]=Et(""),[v,E]=Et(null),[y,P]=Et(g),[$,N]=Et(!!g),x=tf(null),_=Vo(p),I=l.find(D=>D.name===p?.result?.swaps[p?.result?.swaps.length-1].to.blockchain),G=i(D=>!!p?.result?.swaps.find(Y=>Y.from.blockchain===D),"isWalletRequiredFor"),[J,te]=Et(k.filter(D=>D.selected&&_.includes(D.chain))),H=l.find(D=>D.name===I?.name),re=i((D,Y)=>!!J.find(U=>U.walletType===D&&U.chain===Y&&U.selected&&(G(Y)||!G(Y)&&!y)),"isSelected"),he=!!y&&$&&H&&!jo(H,y),ye=i(()=>{N(!1),P(""),te(D=>{let Y=!1;return D.map(U=>!Y&&U.chain===I?.name?(Y=!0,{...U,selected:!0}):U)})},"resetCustomDestination"),_e=i(D=>{if(h&&b(""),re(D.walletType,D.chain))return;let U=k.find(ie=>ie.walletType===D.walletType&&ie.chain===D.chain);U&&(n(),D.chain===I?.name&&$&&(N(!1),P("")),te(ie=>ie.filter(Ve=>Ve.chain!==D.chain).concat({...U,selected:!0})))},"onChange"),Bt=i(()=>{let D=J.filter(Y=>Y.selected);S(D),c(D),f(y),m(!0),o()},"onConfirmBalance"),Rt=i(async()=>{w([]),C(""),E(null);let D=k.filter(ie=>J.find(Ve=>Ve.chain===ie.chain&&Ve.walletType===ie.walletType)),Y=await r?.({selectedWallets:D,customDestination:y}),U=Y.warnings;U?.balance?.messages&&w(U.balance.messages),U?.quoteUpdate&&E(U.quoteUpdate),Y.error&&C(ta(Y.error)),!Y.error&&(!U?.balance?.messages.length||0>0)?Bt():w(U?.balance?.messages??[])},"onConfirmWallets");Rd(()=>{te(D=>D.concat(k.filter(Y=>!!!D.find(ie=>ie.chain===Y.chain)&&Y.selected&&_.includes(Y.chain))))},[k.length]),ef(()=>{$&&x.current&&setTimeout(()=>{x?.current?.scrollIntoView({behavior:"smooth"})},oo)},[$]);let rt=document.querySelector("#swap-box"),Qe=of();return L.createElement(xl,{open:e,onClose:()=>{u||Qe("../",{replace:!0}),o()},dismissible:!h,container:rt,...!h&&{footer:L.createElement(Ga,null,L.createElement(wl,{loading:s,disabled:fa(s,$,y,p,J,I),onClick:Rt,variant:"contained",type:"primary",fullWidth:!0,size:"large"},"Confirm"))},...h&&{containerStyle:{padding:"$0"},header:L.createElement($a,null,L.createElement(Ma,{variant:"ghost",onClick:b.bind(null,"")},L.createElement(Yd,{size:16})),L.createElement(xn,{variant:"headline",size:"small"},st.t({id:"Your {blockchainName} wallets",values:{blockchainName:Xe(h,l)}})))},anchor:"center"},L.createElement(xl,{open:T.length>0,onClose:w.bind(null,[]),container:rt},L.createElement(Jd,{title:st.t("Insufficient account balance"),type:"error",description:L.createElement(Kd,{messages:T??[]})},L.createElement(wl,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:Bt},st.t("Proceed anyway")))),h&&L.createElement(_a,null,L.createElement("div",{className:Da()},L.createElement(Vr,{chain:h,isSelected:re,selectWallet:_e,onShowMore:b.bind(null,h)}))),!h&&L.createElement(L.Fragment,null,A&&L.createElement(L.Fragment,null,L.createElement(jr,{variant:"alarm",type:"error",title:st.t(A)}),L.createElement(zt,{size:12})),v&&L.createElement(L.Fragment,null,L.createElement(jr,{variant:"alarm",type:"warning",title:cn(v)}),L.createElement(zt,{size:12})),L.createElement(Qa,null,_.map((D,Y)=>{let U=l.find(be=>be.name===D),ie=`wallet-${Y}`,Ve=Y===_.length-1;return L.createElement("div",{key:ie},L.createElement(La,null,L.createElement(xn,{variant:"title",size:"xmedium"},st.t({id:"Your {blockchainName} wallets",values:{blockchainName:U?.shortName}})),L.createElement(xn,{variant:"label",color:"$neutral700",size:"medium"},st.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:U?.shortName}}))),L.createElement(zt,{size:24}),L.createElement(Na,null,L.createElement(Vr,{chain:D,isSelected:re,selectWallet:_e,limit:nf,onShowMore:()=>b(U?.name??"")})),!Ve&&L.createElement(zt,{size:32}),Ve&&a?.customDestination&&L.createElement(Ua,null,L.createElement(Fa,{ref:x,selected:$,open:$,onOpenChange:be=>{be?G(I?.name??"")||te(cr=>cr.map(ur=>ur.chain===I?.name?{...ur,selected:!1}:ur)):ye()}},L.createElement(Pa,{onClick:()=>N(be=>!be)},L.createElement(Oa,{fullWidth:!0,variant:"default",suffix:L.createElement(za,{orientation:$?"up":"down"},L.createElement(Xd,{size:10,color:"gray"}))},L.createElement("div",{className:"button__content"},L.createElement(Zd,{size:18,color:"info"}),L.createElement(zt,{size:4,direction:"horizontal"}),L.createElement(xn,{variant:"label",size:"medium"},st.t("Send to a different address"))))),L.createElement(un,{open:$},L.createElement(L.Fragment,null,L.createElement(zt,{size:4}),L.createElement(Ha,{autoFocus:!0,placeholder:st.t("Your destination address"),value:y,onChange:be=>{P(be.target.value)}})))),he&&L.createElement("div",{className:qa()},L.createElement(jr,{variant:"alarm",type:"error",title:st.t({values:{destination:y},id:"Address {destination} doesn't match the blockchain address pattern."})}))))}))))}i(vl,"ConfirmWalletsModal");import{Divider as Hf}from"@rango-dev/ui";import Pe from"react";import{i18n as Rr}from"@lingui/core";import{Alert as lf,ChevronDownIcon as pf,ChevronRightIcon as cf,Divider as ei,Image as Gl,InfoIcon as uf,QuoteCost as mf,StepDetails as df,TokenAmount as ff,Tooltip as Hl,Typography as ao}from"@rango-dev/ui";import B,{useLayoutEffect as gf,useRef as Ql,useState as hf}from"react";import{styled as io}from"@rango-dev/ui";var bl=io("div",{paddingBottom:"$10"}),Kr=io("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Al=io("div",{variants:{paddingTop:{true:{paddingTop:"$10"}}}}),El=io("div",{paddingBottom:"$15"}),Il=io("div",{width:"100%",display:"flex"});import*as vn from"@radix-ui/react-collapsible";import{css as Xr,darkTheme as Ye,Image as Wl,styled as Je,Typography as rf}from"@rango-dev/ui";var Yr=300,Ll=Je(vn.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",cursor:"default",variants:{recommended:{true:{$$color:"$colors$info300",[`.${Ye} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"},false:{$$color:"$colors$neutral400",[`.${Ye} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}}}}),Nl=Xr({padding:"$10 $15"}),Bl=Je("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",cursor:"pointer",boxSizing:"border-box",position:"relative",variants:{recommended:{true:{$$color:"$colors$info100",[`.${Ye} &`]:{$$color:"$colors$secondary600"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}},false:{$$color:"$colors$neutral200",[`.${Ye} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{},false:{}}},compoundVariants:[{listItem:!0,recommended:!0,css:{"&:hover":{$$color:"$colors$secondary200",[`.${Ye} &`]:{$$color:"$colors$secondary700"},backgroundColor:"$$color"}}},{listItem:!0,recommended:!1,css:{"&:hover":{$$color:"$colors$neutral300",[`.${Ye} &`]:{$$color:"$colors$neutral400"},backgroundColor:"$$color"}}}]}),Pl=Xr({width:"100%",padding:"$15 $15 $10 $15",cursor:"default"}),$l=Xr({paddingTop:"$10",display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${Ye} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ml=Je(vn.Trigger,{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",height:"$36",padding:"$10 $15",boxSizing:"border-box",cursor:"pointer",border:"none",outline:"none",backgroundColor:"transparent",variants:{error:{true:{[`& ${Wl}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Wl}`]:{border:"1px transparent solid",borderRadius:"100%"}}},recommended:{true:{$$color:"$colors$info300",[`.${Ye} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"},false:{$$color:"$colors$neutral400",[`.${Ye} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}}},"& div:nth-child(1)":{display:"flex"}}),Jr=Je("div",{width:"18px",height:"18px",borderRadius:"100%",border:"1.5px transparent solid",display:"flex",justifyContent:"center",alignItems:"center",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),_l=Je(un,{width:"100%",background:"inherit"}),Zr=Je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${Yr}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),Zv=Je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),Dl=Je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${Ye} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Fl=Je("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),Ol=Je(rf,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4});import{TokenAmount as zl}from"@rango-dev/ui";import bn from"react";import{css as sf,styled as af}from"@rango-dev/ui";var Ul=af("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),ql=sf({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function so(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return bn.createElement(Ul,null,bn.createElement(zl,{direction:"horizontal",label:"Swap input",type:"input",price:{value:e.price.value,usdValue:e.price.usdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),bn.createElement("div",{className:ql()}),bn.createElement(zl,{direction:"horizontal",label:"Estimated output",type:"output",price:{value:o.price.value,usdValue:o.price.usdValue},token:{displayName:o.token.displayName,image:o.token.image},chain:{image:o.chain.image},percentageChange:n,warningLevel:r}))}i(so,"QuoteSummary");function ti(t){let{quote:e,input:o,output:n,error:r,warning:s,type:a,recommended:l=!0}=t,p=d().tokens(),c=d().blockchains(),u=d().swappers(),[m,g]=hf(t.expanded),f=Ql(null),k=Ql(m),S=W(Yo(e.result?.swaps??[],p),2,2),h=Mo(_o(e.result?.swaps)),b=W(o.value,6,6),T=W(n.value,6,6),w=n.usdValue?W(n.usdValue,4,4):"",A=Ne(o.usdValue,n.usdValue??null),C=W(A,2,2),v=it(A??0),y=i(N=>N.map((x,_)=>{let I,G=r?.type===3&&r.swap.swapperId===x.swapperId||r?.type===4&&r.recommendedSlippages?.has(_),J=s?.type===2&&s.recommendedSlippages?.has(_);return G?I="error":J&&(I="warning"),{swapper:{displayName:ea(x.swapperId,u),image:x.swapperLogo},from:{token:{displayName:x.from.symbol,image:x.from.logo},chain:{displayName:Xe(x.from.blockchain,c),image:x.from.blockchainLogo},price:{value:_===0?W(o.value,6,6):W(x.fromAmount,6,6),usdValue:W((x.from.usdPrice??0)*parseFloat(x.fromAmount),4,4)}},to:{token:{displayName:x.to.symbol,image:x.to.logo},chain:{displayName:Xe(x.to.blockchain,c),image:x.to.blockchainLogo},price:{value:W(x.toAmount,6,6),usdValue:W((x.to.usdPrice??0)*parseFloat(x.toAmount),4,4)}},state:I,alerts:G||J?B.createElement(El,null,B.createElement(lf,{type:G?"error":"warning",title:r?.type===3?r?.recommendation:Rr.t("Slippage Error:"),footer:B.createElement(Il,null,r?.type===3&&B.createElement(B.Fragment,null,B.createElement(ao,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),B.createElement(ei,{direction:"horizontal",size:8}),B.createElement(ao,{size:"xsmall",variant:"body",color:"neutral900"},"|"),B.createElement(ei,{direction:"horizontal",size:8}),B.createElement(ao,{size:"xsmall",variant:"body",color:"neutral900"},Rr.t({id:"Yours: {amount} {symbol}",values:{amount:W(x.fromAmount,6,6),symbol:x?.from.symbol}}))),(r?.type===4||s?.type===2)&&B.createElement(ao,{size:"xsmall",variant:"body",color:"neutral900"},Rr.t({id:"Minimum required slippage is {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(_)},...s?.type===2&&{minRequiredSlippage:s.recommendedSlippages?.get(_)}}})))})):void 0}}),"getQuoteSteps")(e.result?.swaps??[]),P=y.length,$=j();return gf(()=>{m&&!k.current&&f.current&&setTimeout(()=>{f?.current?.scrollIntoView({behavior:"smooth"})},Yr),k.current=m},[m,k]),B.createElement(B.Fragment,null,B.createElement(Bl,{recommended:l,listItem:a==="list-item",basic:a==="basic"},B.createElement("div",{className:Pl()},B.createElement(mf,{fee:S,time:h,steps:P}),a==="basic"&&B.createElement("div",{className:$l()},B.createElement(Fl,null,B.createElement(uf,{size:12,color:"gray"})),B.createElement(Ol,{size:"small",variant:"body"},`${b} ${y[0].from.token.displayName} = ${T} ${y[y.length-1].to.token.displayName}`),B.createElement(ao,{color:"$neutral600",ml:2,size:"xsmall",variant:"body"},`($${w})`)),a==="list-item"&&B.createElement(ff,{type:"output",direction:"vertical",price:{value:T,usdValue:w},token:{displayName:y[P-1].to.token.displayName,image:y[P-1].to.token.image},chain:{image:y[P-1].to.chain.image},percentageChange:C,warningLevel:v}),a==="swap-preview"&&B.createElement(B.Fragment,null,B.createElement(so,{from:y[0].from,to:y[P-1].to,percentageChange:C,warningLevel:v}),B.createElement(ei,{size:4}))),B.createElement(Ll,{recommended:l,open:m,onOpenChange:g},B.createElement(Ml,{ref:N=>f.current=N,recommended:l,onClick:()=>g(N=>!N)},B.createElement("div",null,y.map((N,x)=>{let _=`item-${x}`,I=B.createElement(Zr,null,B.createElement(cf,{size:12,color:"black",...N.state&&{color:N.state==="error"?"error":"warning"}}));return B.createElement(B.Fragment,{key:_},B.createElement(Hl,{container:$,side:"bottom",sideOffset:4,content:N.from.chain.displayName},B.createElement(Jr,{state:N.state||y[x-1]?.state},B.createElement(Gl,{src:N.from.chain.image,size:16}))),x===P-1&&B.createElement(B.Fragment,null,I,B.createElement(Hl,{container:$,side:"bottom",sideOffset:4,content:N.to.chain.displayName},B.createElement(Jr,{state:N.state},B.createElement(Gl,{src:N.to.chain.image,size:16})))),x!==P-1&&B.createElement(B.Fragment,null,I))})),B.createElement(Zr,{orientation:m?"up":"down"},B.createElement(pf,{size:12,color:"black"}))),B.createElement(_l,{open:m},B.createElement(Dl,null),B.createElement("div",{className:Nl()},y.map((N,x)=>{let _=`item-${x}`;return B.createElement(df,{type:"quote-details",key:_,step:N,hasSeparator:x!==y.length-1,state:N.state})}))))))}i(ti,"Quote");import{Divider as Cf,Skeleton as kf}from"@rango-dev/ui";import at from"react";import{darkTheme as yf,styled as An}from"@rango-dev/ui";var Vl=An("div",{$$color:"$colors$neutral100",[`.${yf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15 ",variants:{rounded:{true:{borderRadius:"$xm"}}}}),jl=An("div",{paddingTop:"$2"}),Kl=An("div",{paddingLeft:"$8"}),Xl=An("div",{borderLeft:"1px dashed black",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as sp,Divider as It,Skeleton as Re}from"@rango-dev/ui";import q from"react";import{styled as Ze}from"@rango-dev/ui";var Yl=Ze("div",{display:"flex",justifyContent:"space-between",alignItems:"center",height:"22px"}),Jl=Ze("div",{display:"flex"}),Zl=Ze("div",{padding:"$15 $0 14px $0"}),Rl=Ze("div",{padding:"$6 $0 $15 $0",display:"flex",flexDirection:"column"}),ep=Ze("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$5"}),tp=Ze("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),op=Ze("div",{height:"$28",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),np=Ze("div",{width:"65%",display:"flex",justifyContent:"start"}),rp=Ze("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),ip=Ze("div",{padding:"$15 $0 $15 $0"});function co(t){let{type:e,tag:o=!1}=t,n=q.createElement(tp,null,q.createElement(np,null,q.createElement(sp,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),q.createElement(It,{size:8,direction:"horizontal"}),q.createElement(rp,null,q.createElement(Re,{height:10,width:60,variant:"rounded"}),q.createElement(It,{size:4}),q.createElement(Re,{height:15,variant:"rounded"}))),q.createElement(Re,{height:12,width:64,variant:"rounded"}));return q.createElement("div",null,q.createElement(Yl,null,q.createElement(Jl,null,q.createElement(Re,{width:60,height:10,variant:"rounded"}),q.createElement(It,{size:4,direction:"horizontal"}),q.createElement(Re,{width:60,height:10,variant:"rounded"}),q.createElement(It,{size:4,direction:"horizontal"}),q.createElement(Re,{width:60,height:10,variant:"rounded"})),o&&q.createElement(Re,{height:22,width:100,variant:"rounded"})),e==="basic"&&q.createElement(Zl,null,q.createElement(Re,{height:15,width:148,variant:"rounded"})),e==="list-item"&&q.createElement(Rl,null,q.createElement(ep,null,q.createElement(sp,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),q.createElement(It,{direction:"horizontal",size:4}),q.createElement(Re,{height:15,width:150,variant:"rounded"})),q.createElement(It,{size:4}),q.createElement(Re,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&q.createElement(q.Fragment,null,q.createElement(It,{size:4}),q.createElement(ip,null,n,q.createElement(op,null),n)))}i(co,"QuoteSummarySkeleton");import{ChainToken as up,Divider as ni,NextIcon as Sf,Skeleton as En}from"@rango-dev/ui";import ae from"react";import{styled as uo}from"@rango-dev/ui";var ap=uo("div",{display:"flex",alignItems:"start"}),lp=uo("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center"}),oi=uo("div",{display:"flex",alignItems:"center",flexGrow:1}),pp=uo("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),cp=uo("div",{display:"flex",alignItems:"center"});function et(t){let{separator:e=!0}=t;return ae.createElement(ae.Fragment,null,ae.createElement(cp,null,ae.createElement(En,{height:22,width:22,variant:"circular"}),ae.createElement(ni,{direction:"horizontal",size:8}),ae.createElement(En,{height:15,width:148,variant:"rounded"})),ae.createElement(ap,null,ae.createElement(Xl,{hideSeparator:!e}),ae.createElement(lp,null,ae.createElement(oi,null,ae.createElement(up,{size:"small",loading:!0,chainImage:"",tokenImage:""}),ae.createElement(ni,{direction:"horizontal",size:8}),ae.createElement(En,{height:12,variant:"rounded"})),ae.createElement(pp,null,ae.createElement(Sf,{color:"gray",size:16})),ae.createElement(oi,null,ae.createElement(up,{size:"small",loading:!0,chainImage:"",tokenImage:""}),ae.createElement(ni,{direction:"horizontal",size:8}),ae.createElement(En,{height:12,variant:"rounded"})))))}i(et,"StepSkeleton");function ri(t){let{type:e,expanded:o,tag:n=!1}=t;return at.createElement(Vl,{rounded:e!=="basic"},at.createElement(co,{type:e,tag:n}),at.createElement(jl,null,at.createElement(kf,{height:15,variant:"rounded"})),o&&at.createElement(Kl,null,at.createElement(Cf,{size:20}),at.createElement(et,null),at.createElement(et,null),at.createElement(et,{separator:!1})))}i(ri,"QuoteSkeleton");import{i18n as Uf}from"@lingui/core";import{Alert as qf,Button as zf,InfoIcon as Gf}from"@rango-dev/ui";import Ee from"react";import{Alert as Tf,Button as wf,Divider as yp,NoRouteIcon as xf,RefreshIcon as vf,Typography as Sp}from"@rango-dev/ui";import qe from"react";import{i18n as mp}from"@lingui/core";function dp(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:Q().genericServerError,action:{onClick:n,title:mp.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:Q().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:mp.t("Reset")}},description:Q().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:Q().noResultError.description}}i(dp,"makeInfo");import{styled as ii}from"@rango-dev/ui";var fp=ii("div",{minHeight:"162px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"}),gp=ii("div",{width:"100%"}),hp=ii("div",{padding:"$6 $0"});function si(t){let{fetch:e,error:o}=t,n=d().disabledLiquiditySources,r=d().toggleAllLiquiditySources,s=d().swappers(),a=dp(o,n,()=>r(s,!0),e);return qe.createElement(fp,null,qe.createElement(xf,{size:24,color:"gray"}),qe.createElement(yp,{size:4}),qe.createElement(Sp,{variant:"title",size:"small"},Q().noResultError.title),!!a.description&&qe.createElement(Sp,{variant:"body",size:"small",align:"center",color:"neutral700"},a.description),qe.createElement(yp,{size:4}),!!a.alert&&qe.createElement(gp,null,qe.createElement(Tf,{type:a.alert.type,title:a.alert.text,action:a.alert.action&&qe.createElement(wf,{size:"xsmall",type:a.alert.type,prefix:qe.createElement(hp,null,qe.createElement(vf,{size:8})),onClick:a.alert.action.onClick},a.alert.action.title),variant:"alarm"})))}i(si,"NoResult");import{i18n as mo}from"@lingui/core";import{Button as Af,Divider as vp,MessageBox as Ef,Modal as If,Typography as Wf,WarningIcon as Lf}from"@rango-dev/ui";import tt from"react";import{Typography as wp}from"@rango-dev/ui";import li from"react";import{darkTheme as bf,styled as In}from"@rango-dev/ui";var Cp=In("div",{width:"100%",paddingTop:"$10"}),ai=In("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:10,width:"100%"}),kp=In("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${bf} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Tp=In("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function xp(t){let{title:e,value:o,valueColor:n}=t;return li.createElement(kp,null,li.createElement(wp,{size:"medium",variant:"label",className:"_title"},e),li.createElement(wp,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(xp,"QuoteErrorsModalItem");function bp(t){let{open:e,onClose:o,onConfirm:n,warning:r}=t,s=r.warningLevel==="high"?"error":"warning",a=[{title:mo.t("Swapping"),value:W(r.inputUsdValue,4,4)},{title:mo.t("Gas cost"),value:W(r.totalFee,2,2)},{title:mo.t("Receiving"),value:W(r.outputUsdValue,4,4)},{title:mo.t("Price impact"),value:W(r.priceImpact,2,2),valueColor:`${s}500`}];return tt.createElement(If,{open:e,onClose:o,container:j()},tt.createElement(Ef,{type:s,title:Q().highValueLossError.impactTitle,description:Q().highValueLossError.description}),tt.createElement(ai,null,tt.createElement(vp,{size:20}),tt.createElement(Wf,{size:"small",variant:"title"},mo.t("Details")),tt.createElement(ai,null,a.map((l,p)=>tt.createElement(xp,{key:p,...l})))),tt.createElement(vp,{size:32}),tt.createElement(Af,{type:"primary",size:"large",prefix:tt.createElement(Lf,null),fullWidth:!0,onClick:n},Q().highValueLossError.confirmMessage))}i(bp,"HighValueLossWarningModal");import{i18n as pi}from"@lingui/core";function Ap(t,e){let o={alertType:"warning",title:"",action:"show-info"};return t?(t.type===0&&(it(t.priceImpact)==="high"&&(o.alertType="error"),o.action=null,o.title=Q().highValueLossError.title),t.type===1&&(o.title=Q().unknownPriceError.title),t.type===2&&(o.title=pi.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-settings"),t.type===3&&(o.title=pi.t("Caution, your slippage is high.")),o):e?(o.alertType="error",e.type===3&&(o.title=e.recommendation,o.action="show-info"),e.type===4&&(o.title=pi.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o):null}i(Ap,"makeAlerts");import{i18n as Gt}from"@lingui/core";import{Button as Ep,Divider as Ip,MessageBox as Nf,Modal as Bf,Typography as Pf}from"@rango-dev/ui";import Wt from"react";import{useNavigate as $f}from"react-router-dom";function Wp(t){let{customSlippage:e,slippage:o}=d(),{open:n,onClose:r,onConfirm:s,warning:a}=t,l=$f(),p=e??o;return Wt.createElement(Bf,{anchor:"bottom",open:n,prefix:Wt.createElement(Ep,{size:"small",variant:"ghost",onClick:()=>l("../"+M.settings)},Wt.createElement(Pf,{variant:"label",size:"medium",color:"$neutral900"},Gt.t("Change settings"))),container:j(),onClose:r},Wt.createElement(Nf,{type:"warning",title:a.type===3?Gt.t("High slippage"):Gt.t("Low slippage"),description:a.type===3?Gt.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:p}}):Gt.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:a.minRequiredSlippage}})},Wt.createElement(Ip,{size:18}),Wt.createElement(Ip,{size:32}),Wt.createElement(Ep,{size:"large",type:"primary",variant:"contained",fullWidth:!0,onClick:s},Gt.t("Confirm anyway"))))}i(Wp,"SlippageWarningModal");import{Button as Mf,Divider as _f,MessageBox as Df,Modal as Ff,WarningIcon as Of}from"@rango-dev/ui";import fo from"react";function Lp(t){let{open:e,onClose:o,onConfirm:n}=t;return fo.createElement(Ff,{open:e,onClose:o,container:j()},fo.createElement(Df,{type:"warning",title:Q().unknownPriceError.impactTitle,description:Q().unknownPriceError.description}),fo.createElement(_f,{size:32}),fo.createElement(Mf,{type:"primary",size:"large",prefix:fo.createElement(Of,null),fullWidth:!0,onClick:n},Q().unknownPriceError.confirmMessage))}i(Lp,"UnknownPriceWarningModal");function ci(t){let{warning:e,error:o,refetchQuote:n,showWarningModal:r,onOpenWarningModal:s,onCloseWarningModal:a,onConfirmWarningModal:l,onChangeSettings:p}=t,c={open:r,onClose:a,onConfirm:l},u=o?.type===0||o?.type===1,m=Ap(e,o?.type===3||o?.type===4?o:null);return Ee.createElement(Ee.Fragment,null,u&&Ee.createElement(si,{error:o,fetch:n}),!!m&&Ee.createElement(Cp,null,Ee.createElement(qf,{title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Ee.createElement(Tp,{onClick:s},Ee.createElement(Gf,{size:12,color:"gray"}))},...m.action==="change-settings"&&{action:Ee.createElement(zf,{size:"xxsmall",type:m.alertType,onClick:p},Uf.t("Change"))}})),e&&Ee.createElement(Ee.Fragment,null,e.type===0&&Ee.createElement(bp,{...c,warning:e}),(e.type===3||e.type===2)&&Ee.createElement(Wp,{...c,warning:e}),e.type===1&&Ee.createElement(Lp,{...c,warning:e})))}i(ci,"QuoteWarningsAndErrors");function go(t){let{quote:e,type:o,loading:n,error:r,warning:s,refetchQuote:a,showWarningModal:l,onOpenWarningModal:p,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:m,expanded:g=!1,alertPosition:f="bottom"}=t,{inputAmount:k,inputUsdValue:S,outputUsdValue:h,outputAmount:b}=O(),w=!(r&&(r.type===0||r.type===1))&&e&&e.result&&!n,A=(s||r)&&Pe.createElement(ci,{warning:s,error:r,loading:n,refetchQuote:a,showWarningModal:l,onOpenWarningModal:p,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:m});return Pe.createElement(Pe.Fragment,null,n&&Pe.createElement(Kr,null,Pe.createElement(Al,{paddingTop:f==="top"},Pe.createElement(ri,{type:o,expanded:g}))),f==="top"&&Pe.createElement(bl,null,A),w?Pe.createElement(Kr,null,Pe.createElement(ti,{quote:e,error:r,warning:s,type:o,expanded:g,recommended:!0,input:{value:k,usdValue:S?.toString()??""},output:{value:b?.toString()??"",usdValue:h?.toString()??""}})):null,f==="bottom"&&Pe.createElement(Pe.Fragment,null,!s&&!r&&Pe.createElement(Hf,{size:16}),A))}i(go,"QuoteInfo");import{calculatePendingSwap as jf}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Kf}from"react";import{useRef as Qf,useState as Vf}from"react";function Wn(){let[t,e]=Vf(!1),o=Qf(null),n=i(()=>o.current?.abort(),"cancel");return{fetch:i(async s=>{n(),o.current=new AbortController,e(!0);try{let a=await $t().getBestRoute(s,{signal:o.current.signal});return o.current=null,a}catch(a){throw a}finally{e(!1)}},"fetch"),loading:t,cancelFetch:n}}i(Wn,"useFetchQuote");function Ln(t){if(!t.result)throw new Error(Q().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});if(wr(t)){let{swap:n,recommendation:r,fromAmountRangeError:s}=xr(t);throw new Error("bridge limit error",{cause:{type:3,swap:n,recommendation:r,fromAmountRangeError:s}})}let o=br(t);if(o){let n=Jo(t);throw new Error("",{cause:{type:4,recommendedSlippages:o,minRequiredSlippage:n}})}return t}i(Ln,"throwErrorIfResponseIsNotValid");function Np(t,e,o){let n=!1;t&&(n=Sa(t,e));let r={quote:null,quoteUpdate:null,balance:null},s=Ro(e,{fromToken:o.fromToken,toToken:o.toToken,tokens:o.meta.tokens,userSlippage:o.userSlippage});s&&(r.quote=s),t&&n&&(la(t,e)?r.quoteUpdate={type:3,newOutputAmount:W(Dt(e)),percentageChange:W(Ne(Dt(t)??"",Dt(e)??""),null,2)}:Er(t,e)?r.quoteUpdate={type:0}:Ir(t,e)?r.quoteUpdate={type:1}:Wr(t,e)&&(r.quoteUpdate={type:2}));let a=pa(e,o.selectedWallets,o.meta.blockchains);return a.length===0||(r.balance={messages:a}),r}i(Np,"generateWarnings");function Nn(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:{swap:null,error:{type:1},warnings:null}}i(Nn,"handleQuoteErrors");function ui(){let{fromToken:t,toToken:e,inputAmount:o,setQuote:n,quote:r,customDestination:s,setQuoteWarningsConfirmed:a}=O(),{slippage:l,customSlippage:p,affiliatePercent:c,affiliateRef:u,affiliateWallets:m,disabledLiquiditySources:g}=d(),{connectedWallets:f}=z(),k=d().blockchains(),S=d().tokens(),{features:h}=d().config,{enableNewLiquiditySources:b}=d().config,T=p||l,{fetch:w,cancelFetch:A,loading:C}=Wn();return Kf(()=>A,[]),{loading:C,fetch:i(async E=>{let y=E.selectedWallets,P=E?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let $=Zo({fromToken:t,toToken:e,inputAmount:o,wallets:f,selectedWallets:y,excludeLiquiditySources:b,disabledLiquiditySources:g,slippage:T,affiliateRef:u,affiliatePercent:c,affiliateWallets:m,initialQuote:r??void 0,destination:P});$o("experimentalRoute",h)&&($.experimental=!0);let N;try{N=await w($).then(G=>Ln(G)),n(N)}catch(G){return Nn(G)}let x={slippage:T.toString(),disabledSwappersGroups:g},_=jf(o.toString(),N,sa(y),x,!1,{blockchains:k,tokens:S}),I=Np(r??void 0,N,{fromToken:t,toToken:e,meta:{blockchains:k,tokens:S},selectedWallets:y,userSlippage:T});return I.quoteUpdate&&a(!1),{quote:N,swap:_,error:null,warnings:I}},"fetch"),cancelFetch:A}}i(ui,"useConfirmSwap");var sg=Mp("div",{position:"relative",width:"100%","& .quote-update__alert":{paddingTop:"$10"}}),ag=Mp("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${$p}`]:{width:"$48",height:"$48"}}),lg=mi({flexGrow:1,paddingRight:"$10"}),pg=mi({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),cg=mi({display:"flex",justifyContent:"space-between",alignItems:"center"});function _p(){let{quote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,setQuoteWalletConfirmed:r,customDestination:s,quoteWarningsConfirmed:a}=O(),l=ig(),[p,c]=Pn(""),{connectedWallets:u}=z(),m=!n,[g,f]=Pn(!1),k=Te.use.setSelectedSwap(),S=d().disabledLiquiditySources,h=ng(S),{manager:b}=Xf(),{fetch:T,loading:w,cancelFetch:A}=ui(),[C,v]=Pn({swap:null,error:null,warnings:null}),[E,y]=Pn(!1),P=i(async({selectedWallets:I,customDestination:G})=>{let J=await T?.({selectedWallets:I,customDestination:G});return v(J),J},"onConfirmSwap"),$=i(async()=>{if(C.swap&&n)try{await b?.create("swap",{swapDetails:C.swap},{id:C.swap.requestId}),k(C.swap.requestId);let I=`../${M.swaps}/${C.swap.requestId}`;l(I,{replace:!0}),setTimeout(()=>{e("")},0)}catch(I){c("Error: "+I?.message)}},"addNewSwap"),N=i(async()=>{await $()},"onConfirm"),x=i(async()=>{C?.warnings?.quote&&!a?y(!0):await N()},"onStartConfirmSwap"),_=i(async()=>{v({error:null,swap:null,warnings:null}),T({selectedWallets:o,customDestination:s}).then(I=>{v(I)}).catch(I=>console.error(I))},"onRefresh");return ho(()=>{!!h.current.length&&!S.length&&_(),h.current=S},[S.length]),ho(()=>{m&&A()},[m]),ho(()=>{m&&f(m)},[m]),ho(()=>{m||T({selectedWallets:o,customDestination:s}).then(I=>v(I)).catch(I=>console.error(I))},[]),ho(()=>{let I=C.warnings?.quote?.type&&Object.values(mt).includes(C.warnings?.quote?.type),G=o.length<1||!o.every(te=>u.find(H=>te.address===H.address&&te.walletType===H.walletType&&te.chain===H.chain)),J=!1;if(I){let te=Vo(t),H=t?.result?.swaps[t.result.swaps.length-1].to.blockchain;!!t?.result?.swaps.find(ye=>ye.from.blockchain===H)||(te=te.slice(-te.length,te.length-1)),te.every(ye=>o.find(_e=>_e.chain===ye))||(J=!0)}t&&(G||J)&&(queueMicrotask(()=>rg(f.bind(null,!0))),r(!1))},[C.warnings?.quote,o.length,u.length]),og(()=>{t||l("../")},[]),ee.createElement(K,{header:{title:Bn.t("Confirm Swap"),onWallet:()=>{let I=`../${M.wallets}`;l(I)},suffix:ee.createElement(Rf,{container:j(),side:"bottom",content:Bn.t("Settings")},ee.createElement(Fe,{size:"small",variant:"ghost",onClick:()=>l("../"+M.settings)},ee.createElement(Zf,{size:18,color:"black"})))},footer:ee.createElement(ag,null,ee.createElement("div",{className:lg()},ee.createElement(Pp,{variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:w,disabled:!!C.error,onClick:x},Bn.t("Start Swap"))),ee.createElement($p,{variant:"contained",type:"primary",size:"large",loading:w,onClick:f.bind(null,!0)},ee.createElement(tg,{size:24})))},g&&ee.createElement(vl,{open:g,onClose:()=>f(!1),onCancel:A,loading:w,onCheckBalance:P}),ee.createElement(sg,null,ee.createElement("div",{className:cg()},ee.createElement(eg,{variant:"title",size:"small"},Bn.t("You get")),ee.createElement(Pp,{style:{padding:"0"},variant:"ghost",disabled:w,onClick:_},ee.createElement("div",{className:pg()},ee.createElement(Jf,{size:16})))),p&&ee.createElement(ee.Fragment,null,ee.createElement(Bp,{type:"error",variant:"alarm",title:p}),ee.createElement(Yf,{size:12})),C.warnings?.quoteUpdate&&ee.createElement("div",{className:"quote-update__alert"},ee.createElement(Bp,{variant:"alarm",type:"warning",title:C.warnings.quoteUpdate&&cn(C.warnings.quoteUpdate)})),ee.createElement(go,{quote:t,type:"swap-preview",expanded:!0,alertPosition:"top",error:C.error,loading:w,warning:C.warnings?.quote??null,refetchQuote:_,showWarningModal:E,onOpenWarningModal:()=>y(!0),onCloseWarningModal:()=>y(!1),onConfirmWarningModal:async()=>{y(!1),await $()},onChangeSettings:()=>l("../"+M.settings)})))}i(_p,"ConfirmSwapPage");import{i18n as _n}from"@lingui/core";import{useManager as Sg}from"@rango-dev/queue-manager-react";import{Divider as Cg,NotFound as kg,styled as Qp}from"@rango-dev/ui";import Ct,{useState as Tg}from"react";import{useNavigate as wg}from"react-router-dom";import{CloseIcon as mg,IconButton as dg,SearchIcon as fg,TextField as gg}from"@rango-dev/ui";import yo from"react";import{styled as ug}from"@rango-dev/ui";var Dp=ug("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function lt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:s,value:a,setValue:l,...p}=t;return yo.createElement(gg,{prefix:yo.createElement(Dp,null,yo.createElement(fg,{color:"black"})),suffix:!!a.length&&yo.createElement(dg,{variant:"ghost",onClick:()=>l?.(""),size:"small"},yo.createElement(mg,{color:"gray",size:10})),fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center"},size:r,value:a,onChange:s,...p})}i(lt,"SearchInput");import{i18n as Op}from"@lingui/core";import{Divider as Up,SwapListItem as qp,Typography as zp}from"@rango-dev/ui";import Z from"react";import{css as hg,darkTheme as yg,styled as $n}from"@rango-dev/ui";var Mn=hg(),di=$n("div",{width:"100%",display:"flex",flexDirection:"column",[`& .${Mn}`]:{$$color:"$colors$neutral600",[`.${yg} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),fi=$n("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),gi=$n("div",{gap:"$10",display:"flex",flexDirection:"column"}),Fp=$n("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function hi(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,s=n?n(e):[{title:"History",swaps:e}];if(r){let a=[{},{}];return Z.createElement(Z.Fragment,null,[{title:"Today",swaps:a},{title:"Last month",swaps:a}].map(p=>Z.createElement(Z.Fragment,{key:p.title},Z.createElement(di,null,Z.createElement(fi,null,Z.createElement(zp,{variant:"label",size:"medium",className:Mn()},Op.t(p.title))),Z.createElement(Up,{size:4}),Z.createElement(gi,null,p.swaps.map((c,u)=>{let m=u+p.title;return Z.createElement(Z.Fragment,{key:m},Z.createElement(qp,{isLoading:!0}))}))))))}return Z.createElement(Z.Fragment,null,s.filter(a=>a.swaps.length>0).map(a=>Z.createElement(Z.Fragment,{key:a.title},Z.createElement(di,null,Z.createElement(fi,null,Z.createElement(zp,{variant:"label",size:"medium",className:Mn()},Op.t(a.title))),Z.createElement(Up,{size:4}),Z.createElement(gi,null,a.swaps.map(l=>{let p=l.steps[0],c=l.steps[l.steps.length-1];return Z.createElement(Z.Fragment,{key:l.requestId},Z.createElement(qp,{requestId:l.requestId,creationTime:l.creationTime,status:l.status,onClick:o,onlyShowTime:a.title==="Today",swapTokenData:{from:{token:{image:p.fromLogo,displayName:p.fromSymbol},blockchain:{image:p.fromBlockchainLogo||""},amount:Do(l.inputAmount)},to:{token:{image:c.toLogo,displayName:c.toSymbol},blockchain:{image:c.toBlockchainLogo||""},amount:Do(c.outputAmount||""),estimatedAmount:Do(c.expectedOutputAmountHumanReadable||"")}}}))}))))))}i(hi,"SwapsGroup");import Gp from"dayjs";var Hp=i(t=>{let e=new Map([["today",{title:"Today",swaps:[]}],["month",{title:"Last month",swaps:[]}],["year",{title:"Last year",swaps:[]}],["history",{title:"History",swaps:[]}]]),o=Gp();return t.forEach(n=>{let r=Gp(Number(n.creationTime));o.isSame(r,"day")?e.get("today")?.swaps.push(n):o.isSame(r,"month")?e.get("month")?.swaps.push(n):o.isSame(r,"year")?e.get("year")?.swaps.push(n):e.get("history")?.swaps.push(n)}),Array.from(e.values())},"groupSwapsByDate");var Ht=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");var xg=Qp("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",height:"100%",gap:15}),vg=Qp("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),bg=i((t,e)=>t?.length?t.filter(o=>je(o.fromBlockchain,e)||je(o.toBlockchain,e)||je(o.toSymbol,e)||je(o.fromSymbol,e)).length:!1,"isStepContainsText");function Vp(){let t=Te.use.setSelectedSwap(),e=wg(),{manager:o,state:n}=Sg(),r=Ht(o).map(({swap:m})=>m),[s,a]=Tg(""),l=!n.loadedFromPersistor,p=i(m=>{let g=m.target.value;a(g)},"searchHandler"),c=r;s&&(c=r.filter(m=>je(m.inputAmount,s)||je(m.status,s)||bg(m.steps,s)||je(m.requestId,s)));let u=!c?.length&&!l;return Ct.createElement(K,{header:{title:_n.t("History")}},Ct.createElement(xg,null,Ct.createElement(lt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:_n.t("Search Transaction"),autoFocus:!0,onChange:p,value:s}),Ct.createElement(vg,null,u&&Ct.createElement(Fp,null,Ct.createElement(Cg,{size:32}),Ct.createElement(kg,{title:_n.t("No results found"),description:s?_n.t("Try using different keywords"):""})),!u&&Ct.createElement(hi,{list:c,onSwapClick:m=>{t(m),e(m)},groupBy:Hp,isLoading:l}))))}i(Vp,"HistoryPage");import{i18n as Ci}from"@lingui/core";import{Button as Bg,styled as ki,SwapInput as Yp,WarningIcon as Pg}from"@rango-dev/ui";import $e,{useEffect as $g,useRef as Mg,useState as _g}from"react";import{useNavigate as Dg}from"react-router-dom";import{ReverseIcon as Ag,styled as jp}from"@rango-dev/ui";import yi from"react";var Eg=jp("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Ig=jp("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&:hover":{color:"$secondary500"}});function Kp(){let t=O.use.switchFromAndTo();return yi.createElement(Eg,null,yi.createElement(Ig,{onClick:()=>{t()}},yi.createElement(Ag,{size:12})))}i(Kp,"SwitchFromAndToButton");import{useCallback as Wg,useEffect as Lg,useState as Si}from"react";var Ng=600;function Xp(){let{fetch:t,cancelFetch:e}=Wn(),{liquiditySources:o,enableNewLiquiditySources:n,features:r}=d().config,s=d().tokens(),{fromToken:a,toToken:l,inputAmount:p,inputUsdValue:c,resetQuote:u,setQuote:m}=O(),{slippage:g,customSlippage:f,affiliatePercent:k,affiliateRef:S,affiliateWallets:h,disabledLiquiditySources:b}=d(),[T,w]=Si(!1),[A,C]=Si(null),[v,E]=Si(null),y=f??g,$=!a||!l||Le(a,l)||!eo(p),N=i(I=>{w(I),C(null),E(null)},"resetState"),x=i(I=>{let{fromToken:G,toToken:J,inputAmount:te,liquiditySources:H,excludeLiquiditySources:re,disabledLiquiditySources:he,slippage:ye,affiliateRef:_e,affiliatePercent:Bt,affiliateWallets:Rt}=I;if(T||N(!0),!$&&G&&J){u();let rt=Zo({fromToken:G,toToken:J,inputAmount:te,liquiditySources:H,excludeLiquiditySources:re,disabledLiquiditySources:he,slippage:ye,affiliateRef:_e,affiliatePercent:Bt,affiliateWallets:Rt});$o("experimentalRoute",r)&&(rt.experimental=!0),t(rt).then(Qe=>{w(!1),m(Qe),Ln(Qe);let D=Ro(Qe,{fromToken:G,toToken:J,userSlippage:y,tokens:s});E(D)}).catch(Qe=>{let{error:D}=Nn(Qe);(D?.type===0||D?.type===1)&&u(),D?.type!==2&&(C(D),w(!1))})}},"fetch"),_=Wg(Es(I=>{$||x(I)},Ng),[$]);return Lg(()=>{if(!eo(p)||c?.eq(0)){N(!1),e();return}if(!$)return u(),N(!0),_({inputAmount:p,fromToken:a,toToken:l,liquiditySources:o,excludeLiquiditySources:n,disabledLiquiditySources:b,slippage:y,affiliateRef:S,affiliatePercent:k,affiliateWallets:h}),e},[p,a?.symbol,a?.address,a?.blockchain,l?.symbol,l?.address,l?.blockchain,$,o?.length,n,b.length,y,S,k,JSON.stringify(h)]),{fetch:()=>x({inputAmount:p,fromToken:a,toToken:l,liquiditySources:o,excludeLiquiditySources:n,disabledLiquiditySources:b,slippage:y,affiliateRef:S,affiliatePercent:k,affiliateWallets:h}),loading:T,error:A,warning:v}}i(Xp,"useSwapInput");var Fg=ki("div",{display:"flex",flexDirection:"column",overflowY:"visible","& .quote__container":{paddingTop:"$2"}}),Og=ki("div",{position:"relative"}),Ug=ki("div",{display:"flex",flexDirection:"column",gap:5,alignSelf:"stretch"});function Jp(){let t=Dg(),{fetch:e,loading:o,error:n,warning:r}=Xp(),{fromToken:s,fromBlockchain:a,toToken:l,toBlockchain:p,setInputAmount:c,inputAmount:u,inputUsdValue:m,outputAmount:g,outputUsdValue:f,quote:k,resetQuoteWallets:S,setQuoteWarningsConfirmed:h}=O(),b=d().fetchStatus,{connectedWallets:T,getBalanceFor:w}=z(),A=Te.use.setCurrentPage(),[C,v]=_g(!1),E=Mg(null),y=!!a&&qs(T,a.name),P=!1,$=!vr(k,u,m),N=!vr(k,u,f),x=na({fetchMetaStatus:b,fetchingQuote:o,inputAmount:u,quote:k,anyWalletConnected:T.length>0,error:n,warning:r,needsToWarnEthOnPath:P}),_=s?w(s):null,I=Go(_)?.amount??"0",G=a&&s?W(_?.amount,_?.decimals):"0";$g(()=>(A(M.home),S(),A.bind(null,"")),[]);let J=!m||!f||!f.gt(0)?null:Ne(m.toString(),f.toString());return $e.createElement(K,{ref:E,fixedHeight:!1,hasLogo:!0,footer:$e.createElement(Bg,{type:"primary",size:"large",disabled:x.disabled,prefix:x.action==="confirm-warning"&&$e.createElement(Pg,null),fullWidth:!0,onClick:()=>{x.action==="connect-wallet"?t(M.wallets):x.action==="confirm-warning"?v(!0):t(M.confirmSwap)}},x.title),header:{onWallet:()=>{t(M.wallets)},hasBackButton:!1,title:Ci.t("Swap"),suffix:$e.createElement(Or,{layoutRef:E.current,onClickRefresh:k||n?e:void 0,onClickHistory:()=>t(M.swaps),onClickSettings:()=>t(M.settings)})}},$e.createElement(Fg,null,$e.createElement(Ug,null,$e.createElement(Og,null,$e.createElement(Yp,{label:Ci.t("From"),mode:"From",onInputChange:c,balance:I,chain:{displayName:a?.displayName||"",image:a?.logo||""},token:{displayName:s?.symbol||"",image:s?.image||""},onClickToken:()=>t(M.fromSwap),price:{value:u,usdValue:$?void 0:W(m,4,4),error:$?Q().unknownPriceError.impactTitle:void 0},disabled:b==="failed",loading:b==="loading",loadingBalance:y,onSelectMaxBalance:()=>{I!=="0"&&c(G.split(",").join(""))}}),$e.createElement(Kp,null)),$e.createElement(Yp,{sharpBottomStyle:!!k?.result||o,label:Ci.t("To"),mode:"To",fetchingQuote:o,chain:{displayName:p?.displayName||"",image:p?.logo||""},token:{displayName:l?.symbol||"",image:l?.image||""},percentageChange:W(Ne(m,f),2,2),warningLevel:it(J??0),price:{value:W(g,6,6),usdValue:N?void 0:W(f,4,4),error:N?Q().unknownPriceError.impactTitle:void 0},onClickToken:()=>t(M.toSwap),disabled:b==="failed",loading:b==="loading"})),$e.createElement("div",{className:"quote__container"},$e.createElement(go,{quote:k,loading:o,error:n,warning:r,type:"basic",refetchQuote:e,showWarningModal:C,onOpenWarningModal:()=>v(!0),onCloseWarningModal:()=>v(!1),onConfirmWarningModal:()=>{v(!1),h(!0),t(M.confirmSwap)},onChangeSettings:()=>t(M.settings)}))))}i(Jp,"Home");import{i18n as Zp}from"@lingui/core";import{List as qg,ListItemButton as zg,Radio as Gg,RadioRoot as Hg,Typography as Qg}from"@rango-dev/ui";import kt from"react";import{styled as Dn}from"@rango-dev/ui";var pt=Dn("div",{height:"100%",overflow:"hidden"}),So=Dn("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto"}),Ti=Dn("div",{width:80,display:"flex",justifyContent:"flex-end"}),wi=Dn("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});function Fn(){let{setLanguage:t,language:e}=d();return{activeLanguage:e,languages:Gs,defaultLanguage:_t,changeLanguage:r=>t(r||_t)}}i(Fn,"useLanguage");function Rp(){let{activeLanguage:t,changeLanguage:e,languages:o}=Fn(),n=o.map(r=>{let{local:s,label:a,SVGFlag:l}=r;return{id:s,value:s,title:kt.createElement(Qg,{variant:"title",size:"xmedium"},a),onClick:()=>e(r.local),end:kt.createElement(Gg,{value:s}),start:kt.createElement(l,null)}});return kt.createElement(K,{header:{title:Zp.t("Language")}},kt.createElement(pt,null,kt.createElement(Hg,{value:t},kt.createElement(qg,{type:kt.createElement(zg,{title:Zp.t("language"),id:"_",onClick:()=>console.log()}),items:n}))))}i(Rp,"LanguagePage");import{i18n as Qt}from"@lingui/core";import{Button as Yg,Checkbox as Jg,Image as Zg,ListItemButton as Rg,NotFound as eh,Typography as th}from"@rango-dev/ui";import ge,{useState as oh}from"react";import{Checkbox as Kg,Skeleton as tc}from"@rango-dev/ui";import Co from"react";import{ListItem as Vg,styled as jg}from"@rango-dev/ui";var ec=jg(Vg,{height:61});var Xg=30;function xi(){return Co.createElement(So,null,Array.from(Array(Xg),t=>Co.createElement(ec,{hasDivider:!0,key:t,start:Co.createElement(tc,{variant:"circular",width:35,height:35}),title:Co.createElement(tc,{variant:"text",size:"large",width:90}),end:Co.createElement(Kg,{checked:!1})})))}i(xi,"LoadingLiquiditySourceList");function vi({sourceType:t}){let e=d().fetchStatus,o=d().swappers(),n=d().disabledLiquiditySources,[r,s]=oh(""),a=d().toggleLiquiditySource,l=Po(o,n),p=[];t==="Exchanges"&&p.push("DEX"),t==="Bridges"&&(p.push("BRIDGE"),p.push("AGGREGATOR"));let c=l.filter(S=>p.includes(S.type)),u=c.length===c.filter(S=>S.selected).length,m=i(()=>{c.forEach(S=>{u?a(S.groupTitle):S.selected||a(S.groupTitle)})},"toggleAllSources"),g=c.map(S=>{let{selected:h,groupTitle:b,logo:T}=S;return{start:ge.createElement(Zg,{src:T,size:22,type:"circular"}),onClick:()=>a(b),end:ge.createElement(Jg,{checked:h}),title:ge.createElement(th,{variant:"title",size:"xmedium"},Qt.t(b)),...S}}),f=i(S=>{let h=S.target.value;s(h)},"searchHandler"),k=g;return r&&(k=g.filter(S=>je(S.groupTitle,r))),ge.createElement(K,{header:{title:Qt.t(t),suffix:ge.createElement(Ti,null,ge.createElement(Yg,{variant:"ghost",size:"xsmall",onClick:m},Qt.t(u?"Deselect all":"Select all")))}},ge.createElement(pt,null,ge.createElement(lt,{value:r,setValue:s,fullWidth:!0,color:"light",variant:"contained",placeholder:Qt.t("Search {sourceType}",{sourceType:t}),onChange:f}),e==="loading"&&ge.createElement(xi,null),!k.length&&r?ge.createElement(wi,null,ge.createElement(eh,{title:Qt.t("No results found"),description:Qt.t("Try using different keywords")})):e==="success"&&ge.createElement(So,null,k.map(S=>ge.createElement(ge.Fragment,{key:S.id},ge.createElement(Rg,{style:{height:"61px"},...S,selected:!1,hasDivider:!0}))))))}i(vi,"LiquiditySourcePage");import{i18n as pc}from"@lingui/core";import{Divider as Ii,getCountCategories as mh,SelectableCategoryList as dh}from"@rango-dev/ui";import ct,{useState as cc}from"react";import{i18n as Ai}from"@lingui/core";import{Divider as ac,Image as ah,ListItemButton as lh,NotFound as ph,Typography as lc}from"@rango-dev/ui";import Me,{useEffect as ch,useState as uh}from"react";import{BlockchainCategories as bi}from"@rango-dev/ui";import{TransactionType as On}from"rango-sdk";var nh=i((t,e)=>{switch(e){case bi.ALL:return!0;case bi.UTXO:return t.type===On.TRANSFER;case bi.OTHER:return t.type!==On.TRANSFER&&t.type!==On.COSMOS&&t.type!==On.EVM;default:return t.type===e}},"filterByType"),oc=i((t,e,o)=>t.filter(n=>nh(n,o)).filter(n=>wt(n.name,e)||wt(n.displayName,e)),"filterBlockchains");import{ImageContainer as rh,styled as nc}from"@rango-dev/ui";var rc=nc("div",{display:"flex",flexDirection:"column",overflow:"hidden"}),Un=nc("ul",{padding:0,margin:0,listStyle:"none",overflowY:"auto",paddingRight:"$5",[`& ${rh}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as ih,Skeleton as ic}from"@rango-dev/ui";import qn from"react";var sh=20;function sc(){return qn.createElement(Un,null,Array.from(Array(sh),t=>qn.createElement(ih,{key:t,hasDivider:!0,start:qn.createElement(ic,{variant:"circular",width:35,height:35}),title:qn.createElement(ic,{variant:"text",size:"large",width:90})})))}i(sc,"LoadingBlockchainList");function Ei(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r}=t,[s,a]=uh(e),{fetchStatus:l}=d();ch(()=>{a([...oc(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?Me.createElement(Me.Fragment,null,Me.createElement(ac,{size:32}),Me.createElement(ph,{title:Ai.t("No results found"),description:Ai.t("Try using different keywords")})):Me.createElement(Un,{key:`${r}-${o}`},s.map(c=>Me.createElement(lh,{key:`${c.name}-${c.chainId}`,hasDivider:!0,onClick:()=>n(c),start:Me.createElement(ah,{src:c.logo,size:30}),title:Me.createElement(lc,{variant:"title",size:"medium"},c.displayName),id:c.chainId}))),"renderList");return Me.createElement(rc,null,Me.createElement(lc,{variant:"label",size:"large"},Ai.t("Select Blockchain")),Me.createElement(ac,{size:4}),l==="loading"&&Me.createElement(sc,null),l==="success"&&p())}i(Ei,"BlockchainList");function Wi(t){let{type:e}=t,o=ht(),[n,r]=cc(""),[s,a]=cc("ALL"),l=O.use.setToBlockchain(),p=O.use.setFromBlockchain(),c=d().fetchStatus,u=d().blockchains({type:e}),g=mh(u)!==1;return ct.createElement(K,{header:{title:pc.t("Select Blockchain")}},ct.createElement(Ii,{size:12}),g&&ct.createElement(ct.Fragment,null,ct.createElement(dh,{setCategory:a,category:s,blockchains:u,isLoading:c==="loading"}),ct.createElement(Ii,{size:24})),ct.createElement(lt,{value:n,autoFocus:!0,placeholder:pc.t("Search Blockchain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),ct.createElement(Ii,{size:16}),ct.createElement(Ei,{list:u,searchedFor:n,blockchainCategory:s,onChange:f=>{e==="source"?p(f):l(f),o()}}))}i(Wi,"SelectBlockchainPage");import{i18n as Nc}from"@lingui/core";import{Divider as Bc}from"@rango-dev/ui";import Kt,{useState as Nh}from"react";import{useNavigate as Bh}from"react-router-dom";import{i18n as Bi}from"@lingui/core";import{BlockchainsChip as zn,Divider as fc,Image as gc,Skeleton as Sh,Tooltip as Ch,Typography as Pi}from"@rango-dev/ui";import le from"react";import{useEffect as hh}from"react";var uc=["ETH","COSMOS","OSMOSIS"];function Li(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(fh),o?.limit&&t.length>o.limit){let s=o.limit,a=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let p=0;p<=l;p++){let c=n[p];a=a.filter(u=>c.name!==u)}}n.sort(gh(a)),r=n.splice(s)}return{list:n,more:r}}i(Li,"prepare");function fh(t,e){let o=uc,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),s=n>-1,a=r>-1;return s&&a?n>r?1:-1:s?-1:a?1:0}i(fh,"sortByMostUsedBlockchains");function gh(t){return i(function(o,n){let r=t.findIndex(p=>p===o.name),s=t.findIndex(p=>p===n.name),a=r>-1,l=s>-1;return a&&l?r>s?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(gh,"generateSortByPreferredBlockchainsFor");function mc(t,e){return!!e.list.find(o=>o.name===t)}i(mc,"isInVisibleList");function Ni(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=d();hh(()=>{if(e?.selected){let s=Li(t,o,e);mc(e.selected,s)||n(e?.selected)}},[e?.selected]);let r=Li(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Ni,"usePrepareBlockchainList");import{styled as yh}from"@rango-dev/ui";var dc=yh("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var kh=12;function $i(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:s}=t,a=Ni(e,{limit:10,selected:n?.name}),{fetchStatus:l}=d(),p=O.use.resetToBlockchain(),c=O.use.resetFromBlockchain(),u=a.more.length>0,m=a.more.length===1,g=!m&&u;return le.createElement(le.Fragment,null,le.createElement(fc,{size:12}),le.createElement(Pi,{variant:"label",size:"large"},Bi.t("Select Blockchain")),le.createElement(fc,{size:12}),le.createElement(dc,null,l==="loading"&&Array.from(Array(kh),f=>le.createElement(Sh,{key:f,variant:"rounded",height:50})),l==="success"&&le.createElement(le.Fragment,null,le.createElement(zn,{selected:!n,onClick:()=>{o==="from"?c():p()}},le.createElement(Pi,{variant:"body",size:"xsmall",color:"secondary500"},Bi.t("All"))),a.list.map(f=>le.createElement(Ch,{key:f.name,content:f.shortName,side:"bottom",sideOffset:2,container:j()},le.createElement(zn,{key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},le.createElement(gc,{src:f.logo,size:30})))),m?le.createElement(zn,{key:a.more[0].name,selected:!!n&&n.name===a.more[0].name,onClick:()=>r(a.more[0])},le.createElement(gc,{src:a.more[0].logo,size:30})):null,g?le.createElement(zn,{onClick:s,key:"more-blockchains"},le.createElement(Pi,{variant:"body",size:"xsmall",color:"secondary500"},Bi._("More +{count}",{count:a.more.length}))):null)))}i($i,"BlockchainsSection");import{i18n as Qi}from"@lingui/core";import{darkTheme as Ac,Divider as jt,ExternalLinkIcon as xh,Image as vh,ListItemButton as bh,NotFound as Ah,PinIcon as Eh,Skeleton as Ec,Typography as Vn,VirtualizedList as Ih}from"@rango-dev/ui";import F,{forwardRef as Wh,useEffect as Ic,useState as Wc}from"react";var hc=i((t,e)=>{t=t.replace(/^#/,""),t.length===3&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]);let[s,a,l]=t.match(/.{2}/g);[s,a,l]=[parseInt(s,16)+e,parseInt(a,16)+e,parseInt(l,16)+e],s=Math.max(Math.min(255,s),0).toString(16),a=Math.max(Math.min(255,a),0).toString(16),l=Math.max(Math.min(255,l),0).toString(16);let p=(s.length<2?"0":"")+s,c=(a.length<2?"0":"")+a,u=(l.length<2?"0":"")+l;return`#${p}${c}${u}`},"colorShade"),Gn=i((t,e)=>{let a={[t]:e};for(let l=1;l<10;l++)l<5&&(a={...a,[t+l*100]:hc(e,(5-l)*25)}),l===5&&(a={...a,[t+l*100]:e}),l>5&&(a={...a,[t+l*100]:hc(e,-((l-5)*25))});return a},"generateRangeColors"),Mi=i((t,e,o)=>{if(!o||!Object.entries(o).length)return{};let n=!1,r={...t};for(let s in o){let a=o[s];if(a&&a!==t[s])if(n=!0,s==="background"||s==="foreground")r={...r,[s]:a};else if(s==="neutral"&&e){let l=Gn(s,a);r={...r,[`${s}100`]:l[`${s}900`],[`${s}200`]:l[`${s}800`],[`${s}300`]:l[`${s}700`],[`${s}400`]:l[`${s}600`],[`${s}500`]:l[`${s}500`],[`${s}600`]:l[`${s}400`],[`${s}700`]:l[`${s}300`],[`${s}800`]:l[`${s}200`],[`${s}900`]:l[`${s}100`]}}else r={...r,...Gn(s,a)}}return n?r:{}},"generateColors");import{Divider as vc,ListItem as wh,Skeleton as ko}from"@rango-dev/ui";import Ge from"react";import{css as Vt,darkTheme as yc,ImageContainer as Th,styled as ze,Typography as Sc}from"@rango-dev/ui";var _i=Vt({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),Di=Vt({position:"relative",height:12,width:"30%",maxWidth:"150px"}),Fi=Vt({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),Oi=Vt({transform:"translateY(12px)",visibility:"hidden","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${yc} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),Ui=Vt({}),qi=Vt(),Cc=ze("div",{display:"flex",flexDirection:"column",flexGrow:1}),zi=ze("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Hn=ze("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${Di}`]:{[`& .${Oi}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${Ui}`]:{bottom:"-15px"},[`& .${_i}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${Fi}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Gi=ze("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Hi=ze(Sc,{}),kc=ze("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${qi}`]:{$$color:"$colors$neutral600",[`.${yc} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Qn=ze("div",{display:"flex",alignItems:"end",flexDirection:"column"}),qL=ze("div",{display:"flex",alignItems:"center"}),Tc=ze("div",{position:"relative",[`& ${Th}`]:{borderRadius:"$xm",overflow:"hidden"}}),wc=ze("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),xc=ze(Sc,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function bc(t){return Ge.createElement(Hn,null,Array.from(Array(t.size),e=>Ge.createElement(wh,{key:e,hasDivider:!0,start:Ge.createElement(ko,{variant:"circular",width:35,height:35}),end:Ge.createElement(Qn,null,Ge.createElement(ko,{variant:"text",size:"large",width:70}),Ge.createElement(vc,{size:4}),Ge.createElement(ko,{variant:"text",size:"medium",width:50})),title:Ge.createElement("div",null,Ge.createElement(ko,{variant:"text",size:"large",width:90}),Ge.createElement(vc,{size:4}),Ge.createElement(ko,{variant:"text",size:"medium",width:90}))})))}i(bc,"LoadingTokenList");var Vi=20,Lh=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:s,customCssForTagTitle:a}=t,l=e.length;return F.createElement("div",{className:Di()},o?F.createElement("div",{className:_i()},o):F.createElement(zi,{className:Fi()},F.createElement(Vn,{variant:"title",size:"xmedium"},r.symbol),F.createElement(jt,{direction:"horizontal",size:4}),F.createElement(Gi,{css:s},F.createElement(Hi,{variant:"body",size:"xsmall",css:a},r.blockchain))),!!e&&F.createElement("div",{className:`${Oi()} ${!o&&Ui()}`},F.createElement("a",{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",F.createElement(jt,{size:4,direction:"horizontal"}),F.createElement(xh,{color:"gray",size:12}))))},"renderDesc");function Lc(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r}=t,[s,a]=Wc(e),l=d().fetchStatus,p=d().blockchains(),[c,u]=Wc(!0),{getBalanceFor:m,loading:g}=z(),{isTokenPinned:f}=d(),k=Wh((b,T)=>F.createElement("div",{...b,ref:T,style:{...b.style,height:`${parseFloat(b.style?.height)+8*2}px`}})),S=i(()=>{a(e.slice(0,s.length+Vi))},"loadNextPage");Ic(()=>{u(e.length>s.length)},[s.length]),Ic(()=>{a(e.slice(0,Vi))},[e]);let h=i(()=>!s.length&&o?F.createElement(F.Fragment,null,F.createElement(jt,{size:32}),F.createElement(Ah,{title:Qi.t("No results found"),description:Qi.t("Try using different keywords")})):F.createElement(Ih,{Item:({index:b,style:T})=>{let w=s[b],A=Go(m(w)),C=w.address||"",v=p.find($=>$.name===w.blockchain),E=Gn(w.symbol,v?.color||""),y={$$color:E[`${w.symbol}100`],[`.${Ac} &`]:{$$color:E[`${w.symbol}900`]},backgroundColor:"$$color"},P={$$color:E[`${w.symbol}700`],[`.${Ac} &`]:{$$color:E[`${w.symbol}100`]},color:"$$color"};return F.createElement("div",{style:{...T,paddingRight:5}},F.createElement(bh,{style:{height:T?.height,width:"100%",overflow:"hidden"},"tab-index":b,key:`${w.symbol}${w.address}`,id:`${w.symbol}${w.address}`,hasDivider:!0,onClick:()=>n(s[b]),start:F.createElement(Tc,null,F.createElement(vh,{src:w.image,size:30}),f(w,t.type)&&F.createElement(wc,null,F.createElement(Eh,{size:12,color:"gray"}))),title:v?.type==="COSMOS"||w.name||!w.name&&!C?F.createElement(zi,null,F.createElement(Vn,{variant:"title",size:"xmedium"},w.symbol),F.createElement(jt,{direction:"horizontal",size:4}),F.createElement(Gi,{css:y},F.createElement(Hi,{variant:"body",size:"xsmall",css:P},w.blockchain))):void 0,description:v?.info&&C&&v.type!=="COSMOS"?Lh({address:C,token:s[b],customCssForTag:y,customCssForTagTitle:P,name:w.name,url:v.info.addressUrl.split("{wallet}").join(C)}):w.name||void 0,end:g?F.createElement(Qn,null,F.createElement(Ec,{variant:"text",size:"large",width:70}),F.createElement(jt,{size:4}),F.createElement(Ec,{variant:"text",size:"medium",width:50})):A&&F.createElement(kc,null,F.createElement(xc,{variant:"title",size:"small"},A.amount),F.createElement("div",null),A.usdValue&&F.createElement(Vn,{variant:"body",className:qi(),size:"xsmall"},`$${A.usdValue}`))}))},hasNextPage:c,itemCount:s.length,loadNextPage:S,innerElementType:k,size:60,key:`${r}-${o}`}),"renderList");return F.createElement(Cc,null,F.createElement(Vn,{variant:"label",size:"large"},Qi.t("Select Token")),F.createElement(jt,{size:4}),l==="loading"&&F.createElement(bc,{size:Vi}),l==="success"&&F.createElement(Hn,null,h()))}i(Lc,"TokenList");function ji(t){let{type:e}=t,o=Bh(),n=ht(),{fromBlockchain:r,toBlockchain:s,setFromToken:a,setToToken:l,setFromBlockchain:p,setToBlockchain:c}=O(),u=z.use.getBalanceFor(),[m,g]=Nh(""),{isTokenPinned:f}=d(),S=(e==="source"?r:s)?.name??"",h=d().blockchains({type:e}),b=d().tokens({type:e,blockchain:S,searchFor:m}),w=Fs(b,u,i(v=>f(v,e),"checkIsTokenPinned")),A=i(v=>{e==="source"?p(v):c(v)},"updateBlockchain"),C=i(v=>{e==="source"?a({token:v,meta:{blockchains:h,tokens:b}}):l({token:v,meta:{blockchains:h,tokens:b}})},"updateToken");return Kt.createElement(K,{header:{title:Nc.t("Swap {type}",{type:e})}},Kt.createElement($i,{blockchains:h,type:e=="source"?"from":"to",blockchain:e==="source"?r:s,onMoreClick:()=>o(M.blockchains),onChange:v=>{A(v)}}),Kt.createElement(Bc,{size:24}),Kt.createElement(lt,{value:m,autoFocus:!0,placeholder:Nc.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>g(""),onChange:v=>g(v.target.value)}),Kt.createElement(Bc,{size:16}),Kt.createElement(Lc,{list:w,selectedBlockchain:S,searchedFor:m,type:e,onChange:v=>{C(v);let E=h.find(y=>v.blockchain===y.name);E&&A(E),n()}}))}i(ji,"SelectSwapItemsPage");import{i18n as Lt}from"@lingui/core";import{ChevronRightIcon as Yi,Divider as Ji,InfoIcon as Uh,List as qh,ListItemButton as zh,Skeleton as Gh,Switch as Hh,Tooltip as Qh,Typography as Nt}from"@rango-dev/ui";import V from"react";import{useNavigate as Vh}from"react-router-dom";import{i18n as Fc}from"@lingui/core";import{Divider as _h,InfoIcon as Dh,TextField as Fh,Tooltip as Oh,Typography as Oc}from"@rango-dev/ui";import Ie from"react";import{Chip as Ph,styled as To,TextField as $h}from"@rango-dev/ui";var Pc=To("div",{paddingTop:"$5",padding:"$10 $5"}),$c=To("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${$h}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),Mc=To("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),jn=To("div",{maxWidth:"280px",padding:"$10"}),_c=To(Ph,{width:"61px",flexShrink:0});import{i18n as Ki}from"@lingui/core";import{Typography as Mh}from"@rango-dev/ui";import wo from"react";function Dc(){return wo.createElement(jn,null,wo.createElement(Mh,{variant:"label",size:"medium",color:"neutral700"},Ki.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage"),wo.createElement("br",null),wo.createElement("br",null),wo.createElement("b",null,Ki.t("Warning")),":",Ki.t("This setting is applied per step, e.g. 1Inch, Thorchain, etc. and only that step will be reverted, not the whole transaction")))}i(Dc,"SlippageTooltipContent");function Xi(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=d();return Ie.createElement(Pc,null,Ie.createElement(Mc,null,Ie.createElement(Oc,{variant:"title",size:"xmedium"},Fc.t("Slippage tolerance per swap")),Ie.createElement(_h,{direction:"horizontal",size:4}),Ie.createElement(Oh,{container:j(),side:"top",sideOffset:4,content:Ie.createElement(Dc,null)},Ie.createElement(Dh,{color:"gray"}))),Ie.createElement($c,null,Hs.map((r,s)=>{let a=`slippage-${s}`;return Ie.createElement(Ie.Fragment,null,Ie.createElement(_c,{key:a,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`}))}),Ie.createElement(Fh,{type:"number",min:"0.01",max:"30",step:"0.01",fullWidth:!0,variant:"contained",value:o||"",color:"dark",onChange:r=>{let s=parseFloat(r.target.value);(!s||s>=Ks&&s<=js)&&n(s)},suffix:o&&Ie.createElement(Oc,{variant:"body",size:"small"},"%"),placeholder:Fc.t("Custom")})))}i(Xi,"Slippage");function Uc(){let t=Vh(),{theme:e}=d().config,o=d().fetchStatus,n=d().swappers(),r=d().disabledLiquiditySources,{config:{features:s}}=d(),a=We("theme",s),l=We("liquiditySource",s),p=We("language",s),c=d().infiniteApprove,u=d().toggleInfiniteApprove,m=Po(n,r),g=m.filter(y=>y.type==="BRIDGE"||y.type==="AGGREGATOR"),f=g.length,k=g.filter(y=>y.selected).length,S=m.filter(y=>y.type==="DEX"),h=S.length,b=S.filter(y=>y.selected).length,T=i((y,P)=>{switch(o){case"loading":return V.createElement(Gh,{variant:"text",size:"medium",width:50});case"failed":return V.createElement(Nt,{variant:"body",size:"medium",color:"$error500"},Lt.t("Loading failed"));default:return V.createElement(Nt,{variant:"body",size:"medium"},`${y} / ${P}`)}},"handleEndItem"),w={id:"bridge-item",title:V.createElement(Nt,{variant:"title",size:"xmedium"},Lt.t("Enabled bridges")),end:V.createElement(V.Fragment,null,T(k,f),V.createElement(Ji,{direction:"horizontal",size:8}),V.createElement(Yi,{color:"black"})),onClick:()=>t(M.bridges)},A={id:"exchange-item",title:V.createElement(Nt,{variant:"title",size:"xmedium"},Lt.t("Enabled exchanges")),end:V.createElement(V.Fragment,null,T(b,h),V.createElement(Ji,{direction:"horizontal",size:8}),V.createElement(Yi,{color:"gray"})),onClick:()=>t(M.exchanges)},C={id:"theme-item",title:V.createElement(Nt,{variant:"title",size:"xmedium"},Lt.t("Theme")),end:V.createElement(Yi,{color:"gray"}),onClick:()=>t(M.themes)},v={id:"infinite-approval-item",title:V.createElement(V.Fragment,null,V.createElement(Nt,{variant:"title",size:"xmedium"},Lt.t("Infinite approval")),V.createElement(Ji,{direction:"horizontal",size:4}),V.createElement(Qh,{side:"top",sideOffset:4,container:j(),content:V.createElement(jn,null,V.createElement(Nt,{variant:"label",size:"medium",color:"neutral700"},Lt.t("Enabling the 'Infinite approval' mode grants unrestricted access to smart contracts of DEXes/Bridges, allowing them to utilize the approved token amount without limitations.")))},V.createElement(Uh,{color:"gray"}))),end:V.createElement(Hh,{checked:c}),onClick:u},E=l?[]:[w,A];return!e?.singleTheme&&!a&&E.push(C),E.push(v),V.createElement(K,{header:{title:Lt.t("Settings")}},V.createElement(pt,null,V.createElement(Xi,null),V.createElement(qh,{type:V.createElement(zh,{title:"_",id:"_",onClick:()=>console.log()}),items:E})))}i(Uc,"SettingsPage");import{cancelSwap as Uy}from"@rango-dev/queue-manager-rango-preset";import{useManager as qy}from"@rango-dev/queue-manager-react";import Su from"react";import{i18n as ut}from"@lingui/core";import{getCurrentBlockchainOfOrNull as Ty,getCurrentStep as wy,getRelatedWalletOrNull as xy}from"@rango-dev/queue-manager-rango-preset";import{Button as uu,CopyIcon as vy,Divider as by,IconButton as Ay,QuoteCost as Ey,StepDetails as Iy,Typography as Jt,useCopyToClipboard as Wy}from"@rango-dev/ui";import{useWallets as Ly}from"@rango-dev/wallets-react";import{PendingSwapNetworkStatus as ir}from"rango-types";import X,{useEffect as mu,useRef as Ny,useState as du}from"react";import{useNavigate as By}from"react-router-dom";import{i18n as we}from"@lingui/core";var jh=1e3,Kh=31536e3,Xh=2592e3,Yh=86400,Jh=3600,Zh=60;function qc(t){let e=Math.floor((Date.now()-t)/jh),n=[{turningPoint:Kh,label:we.t("year"),pluralLabel:we.t("years")},{turningPoint:Xh,label:we.t("month"),pluralLabel:we.t("months")},{turningPoint:Yh,label:we.t("day"),pluralLabel:we.t("days")},{turningPoint:Jh,label:we.t("hour"),pluralLabel:we.t("hours")},{turningPoint:Zh,label:we.t("minute"),pluralLabel:we.t("minutes")}].sort((r,s)=>s.turningPoint-r.turningPoint);for(let r of n){let{turningPoint:s,label:a,pluralLabel:l}=r,p=Math.floor(e/s);if(p>1)return`${p} ${l}`;if(p===1)return`${p} ${a}`}return e>1?`${e} ${we.t("seconds")}`:`${e} ${we.t("second")}`}i(qc,"timeSince");function zc(t){return t.finishTime?we.t({id:"{time} ago",values:{time:qc(parseInt(t.finishTime))}}):we.t({id:"{time} ago",values:{time:qc(parseInt(t.creationTime))}})}i(zc,"getSwapDate");import{Modal as iy}from"@rango-dev/ui";import{PendingSwapNetworkStatus as Yn}from"rango-types";import Jn from"react";import{i18n as Kn}from"@lingui/core";import{Button as Gc,Divider as Zi,MessageBox as Rh,Typography as Hc}from"@rango-dev/ui";import ot from"react";var Qc=i(({onCancel:t,onClose:e})=>ot.createElement(ot.Fragment,null,ot.createElement(Zi,{size:20}),ot.createElement(Rh,{type:"error",title:Kn.t("Cancel Swap"),description:Kn.t("Are you sure you want to cancel this swap?")}),ot.createElement(Zi,{size:32}),ot.createElement(Gc,{variant:"contained",type:"primary",size:"large",onClick:t},ot.createElement(Hc,{variant:"title",size:"medium",color:"neutral100"},Kn.t("Yes, Cancel it"))),ot.createElement(Zi,{size:12}),ot.createElement(Gc,{variant:"outlined",type:"primary",size:"large",onClick:e},ot.createElement(Hc,{variant:"title",size:"medium",color:"primary"},Kn.t("No, Continue")))),"CancelContent");import{i18n as Xn}from"@lingui/core";import{Button as Vc,Divider as Ri,MessageBox as ey,Typography as jc}from"@rango-dev/ui";import nt from"react";var Kc=i(({onDelete:t,onClose:e})=>nt.createElement(nt.Fragment,null,nt.createElement(Ri,{size:20}),nt.createElement(ey,{type:"error",title:Xn.t("Delete Transaction"),description:Xn.t("Are you sure you want to delete this swap?")}),nt.createElement(Ri,{size:32}),nt.createElement(Vc,{variant:"contained",type:"primary",size:"large",onClick:t},nt.createElement(jc,{variant:"title",size:"medium",color:"neutral100"},Xn.t("Yes, Delete it"))),nt.createElement(Ri,{size:12}),nt.createElement(Vc,{variant:"outlined",type:"primary",size:"large",onClick:e},nt.createElement(jc,{variant:"title",size:"medium",color:"primary"},Xn.t("No, Cancel")))),"DeleteContent");import{i18n as es}from"@lingui/core";import{PendingSwapNetworkStatus as ts}from"rango-types";var os={[ts.WaitingForNetworkChange]:{type:"loading",title:es.t("Change Network")},[ts.WaitingForConnectingWallet]:{type:"warning",title:es.t("Connect Wallet")},[ts.NetworkChanged]:{type:"success",title:es.t("Network Changed")}};import{MessageBox as oy,Wallet as ny}from"@rango-dev/ui";import{useWallets as ry}from"@rango-dev/wallets-react";import xo from"react";import{styled as ty}from"@rango-dev/ui";var Xc=ty("div",{display:"flex",justifyContent:"center"});var Yc=i(t=>{let{type:e,title:o,currentStepWallet:n,message:r,showWalletButton:s}=t,{connect:a,getWalletInfo:l,state:p}=ry(),c=n?.walletType,u=c?yr(p(c)):null,m=c?l(c):null;return xo.createElement(xo.Fragment,null,xo.createElement(oy,{type:e,title:o,description:r}),s&&!!c&&!!u&&!!m&&xo.createElement(Xc,null,xo.createElement(ny,{container:j(),title:m.name,image:m.img,type:c,state:u,link:m.installLink,onClick:async()=>a(c)})))},"WalletStateContent");function ns(t){let{state:e,onClose:o,onDelete:n,onCancel:r,currentStepWallet:s,message:a}=t,l=e===Yn.WaitingForNetworkChange||e===Yn.WaitingForConnectingWallet||e===Yn.NetworkChanged;return Jn.createElement(iy,{open:!!e,onClose:o,container:document.getElementById("swap-box")||document.body},l&&Jn.createElement(Yc,{type:os[e].type,title:os[e].title,currentStepWallet:s,message:a,showWalletButton:e!==Yn.WaitingForNetworkChange}),e==="delete"&&Jn.createElement(Kc,{onClose:o,onDelete:n}),e==="cancel"&&Jn.createElement(Qc,{onClose:o,onCancel:r}))}i(ns,"SwapDetailsModal");import{i18n as vo}from"@lingui/core";import{Button as rs,Divider as Zn,MessageBox as Jc,Modal as sy,TokenAmount as ay,Typography as Rn}from"@rango-dev/ui";import ue from"react";import{useNavigate as ly}from"react-router-dom";function is(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:s,token:a,chain:l,percentageChange:p,description:c,diagnosisUrl:u}=t,m=ly();return ue.createElement(sy,{open:e,onClose:o,container:document.getElementById("swap-box")||document.body},n==="success"?ue.createElement(Jc,{type:"success",title:vo.t("Swap Successful")},ue.createElement(ay,{direction:"vertical",type:"output",centerAlign:!0,price:{value:r,usdValue:s},token:a,chain:l,percentageChange:p}),ue.createElement(Zn,{size:12}),ue.createElement(Rn,{variant:"body",size:"medium",color:"neutral700",align:"center"},c)):ue.createElement(Jc,{type:"error",title:vo.t("Transaction Failed"),description:c}),ue.createElement(Zn,{size:32}),n==="success"&&ue.createElement(rs,{variant:"contained",type:"primary",size:"large",onClick:()=>{m("../../")}},ue.createElement(Rn,{variant:"title",size:"medium",color:"neutral100"},vo.t("Done"))),ue.createElement(Zn,{size:12}),u&&ue.createElement(ue.Fragment,null,ue.createElement(rs,{variant:"contained",type:"primary",size:"large",onClick:()=>window.open(u,"_blank")},ue.createElement(Rn,{variant:"title",size:"medium",color:"primary"},vo.t("Diagnosis"))),ue.createElement(Zn,{size:12})),ue.createElement(rs,{variant:"outlined",type:"primary",size:"large",onClick:o},ue.createElement(Rn,{variant:"title",size:"medium",color:"primary"},vo.t("See Details"))))}i(is,"SwapDetailsCompleteModal");import Cy from"react";import{i18n as gy}from"@lingui/core";import{Alert as nu,IconButton as hy,LinkIcon as yy}from"@rango-dev/ui";import Tt,{Fragment as Sy}from"react";import{Alert as py,ChevronDownIcon as cy,ChevronUpIcon as uy,IconButton as my}from"@rango-dev/ui";import er,{useState as dy}from"react";function Zc(t){let{message:e}=t,[o,n]=dy(!1);return er.createElement(py,{type:"error",title:e.shortMessage,action:e.detailedMessage.content&&er.createElement(my,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},o?er.createElement(uy,{size:12,color:"gray"}):er.createElement(cy,{size:12,color:"gray"})),footer:o?e.detailedMessage.content:void 0})}i(Zc,"FailedAlert");import{styled as fy}from"@rango-dev/ui";var Rc=fy("div",{display:"flex",flexDirection:"column",gap:"$10"});import{i18n as eu}from"@lingui/core";import{Alert as ss,Button as tu}from"@rango-dev/ui";import{PendingSwapNetworkStatus as as}from"rango-types";import bo from"react";function ou(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?bo.createElement(ss,{type:"warning",title:n.shortMessage,action:bo.createElement(tu,{size:"xxsmall",type:"warning",onClick:()=>{o(as.WaitingForNetworkChange),e().catch(s=>{console.log(s)})}},eu.t("Change"))}):r===as.WaitingForConnectingWallet?bo.createElement(ss,{type:"warning",title:n.shortMessage,action:bo.createElement(tu,{size:"xxsmall",type:"warning",onClick:()=>{o(as.WaitingForConnectingWallet)}},eu.t("Connect"))}):bo.createElement(ss,{type:"warning",title:n.shortMessage})}i(ou,"WarningAlert");function ls(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:s,hasAlreadyProceededToSign:a}=t,l=to(s),p=s.status==="waitingForApproval"&&!l,c=s.status==="running"&&!l;return Tt.createElement(Rc,null,s.explorerUrl?.map((u,m,g)=>{let f=m+u.url,k=m===g.length-1,S=k&&c||p,h=k&&s.status==="failed";return Tt.createElement(Sy,{key:f},Tt.createElement(nu,{type:S&&"loading"||h&&"error"||"success",title:u.description?`${u.description} Tx`:gy.t("View transaction"),action:u.url&&Tt.createElement(hy,{variant:"ghost",size:"xsmall",onClick:()=>window.open(u.url,"_blank")},Tt.createElement(yy,{size:16}))}))}),(c&&!a||p&&!s.explorerUrl?.length)&&Tt.createElement(nu,{type:"loading",title:r.shortMessage}),s.status!=="failed"&&l&&Tt.createElement(ou,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),s.status==="failed"&&Tt.createElement(Zc,{message:r}))}i(ls,"SwapDetailsAlerts");var ru=2e3;var iu=i(({swap:t,blockchains:e,...o})=>{let n=t.hasAlreadyProceededToSign!==!1;return t.steps.map((r,s)=>{let a=s===0?t.inputAmount:t.steps[s-1].outputAmount;return{from:{token:{displayName:r.fromSymbol,image:r.fromLogo??""},chain:{displayName:Xe(r.fromBlockchain,e)??"",image:r.fromBlockchainLogo??""},price:{value:W(a,6,6)}},to:{token:{displayName:r.toSymbol,image:r.toLogo},chain:{displayName:Xe(r.toBlockchain,e)??"",image:r.toBlockchainLogo??""},price:{value:W(r.outputAmount||r.expectedOutputAmountHumanReadable,6,6)}},swapper:{displayName:r.swapperId,image:r.swapperLogo??""},alerts:Cy.createElement(ls,{step:r,hasAlreadyProceededToSign:n,...o})}})},"getSteps");function su(t){if(to(t)&&t.status!=="failed"&&t.status!=="success")return"warning";switch(t.status){case"created":return"default";case"approved":case"waitingForApproval":case"running":return"in-progress";case"failed":return"error";case"success":return"completed"}}i(su,"getStepState");import{css as tr,darkTheme as ky,styled as Xt}from"@rango-dev/ui";var or=Xt("div",{display:"flex",width:"100%",flexDirection:"column",alignItems:"center",height:"0",flexGrow:1}),nr=Xt("div",{width:"100%"}),au=Xt("div",{padding:"$0 $20 $20 $20",width:"100%",overflow:"auto"}),xP=Xt("div",{display:"flex",flexDirection:"column",gap:"$10"}),lu=Xt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),vP=Xt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),Yt=tr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${ky} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),rr=tr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),pu=tr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),cu=tr({width:"100%",padding:"0 $20 $10"});function ps(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:s,connect:a,getWalletInfo:l}=Ly(),p=d().blockchains(),c=d().tokens(),u=O.use.retry(),m=By(),[g,f]=Wy(ru),k=Ny(null),[S,h]=du(null),[b,T]=du(null),w=i(()=>{r(),h(null)},"onCancel"),A=Be.use.getUnreadNotifications(),C=Be.use.setAsRead(),v=A(),E=wy(e),y=E?.networkStatus;mu(()=>{v.find(ie=>ie.requestId===e.requestId)&&(e.status==="success"||e.status==="failed")&&(T(e.status),C(e.requestId))},[e.status]),mu(()=>{G?h(ir.WaitingForNetworkChange):y===ir.WaitingForConnectingWallet||y===ir.NetworkChanged?h(y):h(null)},[y]);let P=ma(e),$=E?Ty(e,E):null,N=E?xy(e,E):null,x=zc(e),_=da(e),I=i(U=>!!l(U)?.mobileWallet,"isMobileWallet"),G=y===ir.WaitingForNetworkChange&&!!$&&!!N?.walletType&&(I(N.walletType)||s(N.walletType,$)),J=G?a.bind(null,N.walletType,$):void 0,te=ua(e,E),H=iu({swap:e,switchNetwork:J,showNetworkModal:y,setNetworkModal:h,message:te,blockchains:p}),re=H.length,[he,ye]=[e.steps[0],e.steps[re-1]],_e=ye.outputAmount||ye.expectedOutputAmountHumanReadable,Bt=e.steps.reduce((U,ie)=>U+parseFloat(ie.feeInUsd||""),0),Rt=e.steps.find(U=>U.diagnosisUrl)?.diagnosisUrl,rt=W(parseFloat(W(_e,6,6))*(ye.toUsdPrice||0),4,4),Qe=W(parseFloat(e.inputAmount)*(he.fromUsdPrice||0),4,4),D=Ne(Qe,rt),Y=e.status==="success"?ut.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:W(_e,6,6),token:H[re-1].to.token.displayName,conciseAddress:Ho(e.wallets[H[re-1].to.chain.displayName]?.address||""),chain:H[re-1].to.chain.displayName}}):`${ut.t("Transaction was not sent.")} ${P?ut.t({id:"{amount} {symbol} on {blockchain} remain in your wallet",values:{amount:P.outputAmount,symbol:P.symbol,blockchain:P.blockchain}}):""}`;return X.createElement(K,{noPadding:!0,header:{title:ut.t("Swap and Bridge"),onCancel:e.status==="running"?()=>h("cancel"):void 0,suffix:e.status!=="running"&&X.createElement(Ut,null,X.createElement(uu,{variant:"ghost",type:"error",size:"xsmall",onClick:()=>h("delete")},X.createElement(Jt,{size:"medium",variant:"label",color:"error"},ut.t("Delete"))))},footer:_&&!b&&X.createElement(uu,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:()=>{u(e,{blockchains:p,tokens:c}),setTimeout(()=>{m("../../")},0)}},ut.t("Try again"))},X.createElement(or,null,X.createElement(nr,null,X.createElement("div",{className:Yt()},X.createElement(Jt,{variant:"label",size:"large",color:"neutral700"},`${ut.t("Request ID")}:`),X.createElement("div",{className:rr()},X.createElement(Jt,{variant:"label",size:"small",color:"neutral700"},o),X.createElement(Ay,{variant:"ghost",onClick:f.bind(null,o||"")},X.createElement(vy,{size:16,color:"gray"})))),X.createElement("div",{className:Yt()},X.createElement(Jt,{variant:"label",size:"large",color:"neutral700"},`${ut.t("Created at")}:`),X.createElement(Jt,{variant:"label",size:"small",color:"neutral700"},x))),X.createElement("div",{className:pu()},X.createElement(Ey,{fee:W(String(Bt),2,2),time:Mo(_o(e.steps)),steps:re}),X.createElement(so,{from:{price:{value:W(e.inputAmount,6,6),usdValue:Qe},token:{displayName:H[0].from.token.displayName,image:H[0].from.token.image},chain:{image:H[0].from.chain.image,displayName:H[0].from.chain.displayName}},to:{price:{value:W(_e,6,6),usdValue:rt},token:{displayName:H[re-1].to.token.displayName,image:H[re-1].to.token.image},chain:{image:H[re-1].to.chain.image,displayName:H[re-1].to.chain.displayName}},percentageChange:W(D,2,2),warningLevel:it(D??0)})),X.createElement("div",{className:cu()},X.createElement(Jt,{variant:"title",size:"small"},ut.t("Swaps steps"))),X.createElement(by,{size:8}),X.createElement(au,{ref:k},H.map((U,ie)=>{let Ve=ie,be=su(e.steps[ie]),cr=be==="error"||be==="in-progress"||be==="warning"||be==="completed"&&ie===H.length-1;return X.createElement(Iy,{key:Ve,step:U,type:"swap-progress",ref:k,state:be,hasSeparator:ie!==0,tabIndex:Ve,isFocused:cr})}))),X.createElement(ns,{state:S,onClose:()=>h(null),onCancel:w,onDelete:n,message:te.detailedMessage.content,currentStepWallet:N}),X.createElement(is,{open:!!b,diagnosisUrl:Rt,onClose:()=>T(null),status:e.status==="success"?"success":"failed",priceValue:W(_e,6,6),usdValue:rt,percentageChange:W(D,2,2),token:{displayName:H[re-1].to.token.displayName,image:H[re-1].to.token.image},chain:{image:H[re-1].to.chain.image},description:Y}))}i(ps,"SwapDetails");import{i18n as Eo}from"@lingui/core";import{CopyIcon as Dy,IconButton as Fy,NotFound as Oy,Skeleton as hu,Typography as ar}from"@rango-dev/ui";import pe from"react";import{i18n as Py}from"@lingui/core";import{Divider as $y,Skeleton as My,Typography as _y}from"@rango-dev/ui";import se from"react";import{css as He,styled as cs}from"@rango-dev/ui";var fu=cs("div",{width:"100%",height:"100%",padding:"$10 $20"}),Ao=cs("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),sr=cs("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),RP=He({display:"flex",justifyContent:"space-between",alignItems:"center"}),e$=He({display:"flex",justifyContent:"space-between",alignItems:"center"}),t$=He({paddingTop:"$15",display:"flex"}),o$=He({padding:"$15 $0"}),n$=He({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),r$=He({paddingBottom:"$10"}),i$=He({display:"flex",justifyContent:"start",alignItems:"center"}),s$=He({paddingTop:"$5",display:"flex",alignItems:"center"}),a$=He({display:"flex",alignItems:"center"}),l$=He({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),gu=He({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function us(){return se.createElement(fu,null,se.createElement(co,{type:"swap-preview"}),se.createElement("div",{className:"swaps-steps"},se.createElement(_y,{variant:"title",size:"small"},Py.t("Swaps steps"))),se.createElement(se.Fragment,null,se.createElement(Ao,null,se.createElement(et,{separator:!1}),se.createElement("div",{className:gu()},se.createElement($y,{direction:"horizontal",size:20}),se.createElement(My,{height:22,variant:"rectangular"}))),se.createElement(sr,null),se.createElement(Ao,null,se.createElement(et,{separator:!1})),se.createElement(sr,null),se.createElement(Ao,null,se.createElement(et,{separator:!1})),se.createElement(sr,null),se.createElement(Ao,null,se.createElement(et,{separator:!1}))))}i(us,"LoadingSwapDetails");function yu(t){let{requestId:e,showSkeleton:o}=t;return pe.createElement(K,{noPadding:!0,header:{title:Eo.t("Swap and Bridge"),suffix:pe.createElement(Ut,null)}},o&&pe.createElement(or,null,pe.createElement(nr,null,pe.createElement("div",{className:Yt()},pe.createElement(ar,{variant:"label",size:"large",color:"neutral700"},`${Eo.t("Request ID")}:`),pe.createElement("div",{className:rr()},pe.createElement(ar,{variant:"label",size:"small",color:"neutral700"},pe.createElement(hu,{width:60,height:10,variant:"rounded"})),pe.createElement(Fy,{variant:"ghost"},pe.createElement(Dy,{size:16,color:"gray"})))),pe.createElement("div",{className:Yt()},pe.createElement(ar,{variant:"label",size:"large",color:"neutral700"},`${Eo.t("Created at")}:`),pe.createElement(ar,{variant:"label",size:"small",color:"neutral700"},pe.createElement(hu,{width:60,height:10,variant:"rounded"})))),pe.createElement(us,null)),!o&&pe.createElement(lu,null,pe.createElement(Oy,{title:Eo.t("Not found"),description:Eo.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(yu,"SwapDetailsPlaceholder");function Cu(){let{manager:t,state:e}=qy(),o=!e.loadedFromPersistor,n=Ht(t),r=Te.use.selectedSwapRequestId(),s=ht(),{fetchStatus:a}=d(),l=o||a==="loading",p=n.find(({swap:g})=>g.requestId===r),c=i(()=>{if(p?.id){let g=t?.get(p.id);g&&Uy(g)}},"onCancel"),u=i(async()=>{if(p?.id)try{t?.deleteQueue(p.id),s()}catch(g){console.log(g)}},"onDelete"),m=p?.swap;return!m||l?Su.createElement(yu,{requestId:r||"",showSkeleton:l}):Su.createElement(ps,{swap:m,requestId:r||"",onCancel:c,onDelete:u})}i(Cu,"SwapDetailsPage");import{i18n as Io}from"@lingui/core";import{AutoThemeIcon as zy,DarkModeIcon as Gy,LightModeIcon as Hy,List as Qy,ListItemButton as Vy,Radio as ms,RadioRoot as jy,Typography as ds}from"@rango-dev/ui";import xe from"react";function ku(){let{setTheme:t,theme:e}=d(),o=[{id:"light",value:"light",title:xe.createElement(ds,{variant:"title",size:"xmedium"},Io.t("Light")),onClick:()=>t("light"),start:xe.createElement(Hy,{color:"gray"}),end:xe.createElement(ms,{value:"light"})},{id:"dark",value:"dark",title:xe.createElement(ds,{variant:"title",size:"xmedium"},Io.t("Dark")),onClick:()=>t("dark"),start:xe.createElement(Gy,{color:"gray"}),end:xe.createElement(ms,{value:"dark"})},{id:"auto",value:"auto",title:xe.createElement(ds,{variant:"title",size:"xmedium"},Io.t("Auto")),onClick:()=>t("auto"),start:xe.createElement(zy,{color:"gray"}),end:xe.createElement(ms,{value:"auto"})}];return xe.createElement(K,{header:{title:Io.t("Theme")}},xe.createElement(pt,null,xe.createElement(jy,{onValueChange:n=>t(n),value:e},xe.createElement(Qy,{type:xe.createElement(Vy,{title:Io.t("Theme"),id:"_",onClick:()=>console.log()}),items:o}))))}i(ku,"ThemePage");function Tu(){return Ky([{path:M.home,element:ve.createElement(Jp,null)},{path:M.fromSwap,children:[{index:!0,element:ve.createElement(ji,{type:"source"})},{path:M.blockchains,element:ve.createElement(Wi,{type:"source"})}]},{path:M.toSwap,children:[{index:!0,element:ve.createElement(ji,{type:"destination"})},{path:M.blockchains,element:ve.createElement(Wi,{type:"destination"})}]},{path:M.settings,children:[{index:!0,element:ve.createElement(Uc,null)},{path:M.themes,element:ve.createElement(ku,null)},{path:M.languages,element:ve.createElement(Rp,null)},{path:M.exchanges,element:ve.createElement(vi,{sourceType:"Exchanges"})},{path:M.bridges,element:ve.createElement(vi,{sourceType:"Bridges"})}]},{path:M.swaps,children:[{index:!0,element:ve.createElement(Vp,null)},{path:M.swapDetails,element:ve.createElement(Cu,null)}]},{path:M.wallets,element:ve.createElement(dl,null)},{path:M.confirmSwap,element:ve.createElement(_p,null)}])}i(Tu,"AppRoutes");import{isApprovalTX as Xy,MainEvents as xu,RouteEventType as vu,StepEventType as Zt,StepExecutionEventStatus as Yy,useEvents as Jy}from"@rango-dev/queue-manager-rango-preset";import{useEffect as bu}from"react";import{StepExecutionBlockedEventStatus as fs}from"@rango-dev/queue-manager-rango-preset";var wu=[fs.WAITING_FOR_CHANGE_WALLET_ACCOUNT,fs.WAITING_FOR_NETWORK_CHANGE,fs.WAITING_FOR_WALLET_CONNECT];function Au(){let t=d().tokens(),e=z.use.connectedWallets(),o=z.use.getWalletsDetails(),n=Be.use.setNotification(),r=Be.use.setAsRead(),s=Jy();return bu(()=>(s.on(xu.StepEvent,a=>{let{event:l,step:p,route:c}=a;if(l.type===Zt.TX_EXECUTION&&l.status===Yy.TX_SENT&&!Xy(p)||l.type===Zt.SUCCEEDED){let m=e.find(f=>f.chain===p?.fromBlockchain),g=p?.fromBlockchain!==p?.toBlockchain&&e.find(f=>f.chain===p?.toBlockchain);m&&o([m],t),g&&o([g],t)}l.type===Zt.TX_EXECUTION_BLOCKED&&wu.includes(l.status)||l.type===Zt.FAILED?n(l,c):(l.type===Zt.TX_EXECUTION||l.type===Zt.CHECK_STATUS)&&r(c.requestId)}),()=>s.all.clear()),[s,e.length]),bu(()=>(s.on(xu.RouteEvent,a=>{let{event:l,route:p}=a;(l.type===vu.FAILED||l.type===vu.SUCCEEDED)&&n(l,p)}),()=>s.all.clear()),[s,e.length]),null}i(Au,"WidgetEvents");import{globalCss as Zy}from"@rango-dev/ui";var Eu=i(()=>Zy({"@import":["url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')","url('https://fonts.cdnfonts.com/css/times-new-roman')"]})(),"globalFont");import{createTheme as ys,darkTheme as nS,lightTheme as rS}from"@rango-dev/ui";import{useEffect as Wu,useState as iS}from"react";import{theme as tS,darkColors as oS}from"@rango-dev/ui";var Iu=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Ry=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=Iu(o%52)+e;return Iu(o%52)+e},"toAlphabeticName"),eS=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),gs=i(t=>Ry(eS(5381,JSON.stringify(t))>>>0),"toHash");function hs(t){let e=tS.colors,o=Mi({...e,...oS},!0,t?.dark),n=Mi(e,!1,t?.light),r=Object.keys(o).length>0,s=Object.keys(n).length>0,a,l;if(s){let p={colors:n};a={id:`${fr}-light-${gs(p)}`,tokens:p}}if(r){let p={colors:o};l={id:`${fr}-dark-${gs(p)}`,tokens:p}}return{light:a,dark:l}}i(hs,"customizedThemeTokens");function Lu(t){let{colors:e,fontFamily:o=As,borderRadius:n=vs,secondaryBorderRadius:r=bs,mode:s="auto"}=t,[a,l]=iS("light"),{setTheme:p,theme:c}=d(),{dark:u,light:m}=hs(e),g=ys({radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),f=[g.className,rS.className],k=[g.className,nS.className];if(m){let h=ys(m.id,m.tokens);f.push(h.className)}if(u){let h=ys(u.id,u.tokens);k.push(h.className)}return Wu(()=>{let h=i(b=>{b.matches?l("dark"):l("light")},"switchThemeListener");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&l("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",h),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",h)}},[]),Wu(()=>{s!=="auto"&&p(s)},[s]),{activeTheme:i(()=>{let h=f.join(" "),b=k.join(" ");return c==="auto"?a==="dark"?b:h:c==="dark"?b:h},"getActiveTheme")}}i(Lu,"useTheme");import{styled as sS}from"@rango-dev/ui";var Nu=sS("div",{width:"100%",display:"flex",justifyContent:"center",alignItems:"center",fontFamily:"$widget",boxSizing:"border-box","& *, *::before, *::after":{boxSizing:"inherit",listStyleType:"none"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"}});function lr(){Eu();let{config:t}=d(),{activeTheme:e}=Lu(t?.theme||{}),{activeLanguage:o,changeLanguage:n}=Fn(),[r,s]=Pu(""),[a,l]=Pu(),p=lS(sn);return Bu(()=>{Be.persist.rehydrate(),p.onConnectWallet(s)},[]),Bu(()=>{n(t?.language)},[t?.language]),Wo.createElement(aS,{language:o},Wo.createElement(Nu,{id:"swap-container",className:e()},Wo.createElement(Au,null),Wo.createElement(Ea,{lastConnectedWallet:r,disconnectedWallet:a,clearDisconnectedWallet:()=>{l(void 0)}},Wo.createElement(Tu,null))))}i(lr,"Main");import Cs,{useMemo as AS}from"react";import{checkWaitingForNetworkChange as pS,makeQueueDefinition as cS}from"@rango-dev/queue-manager-rango-preset";import{Provider as uS}from"@rango-dev/queue-manager-react";import{useWallets as mS}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as dS}from"@rango-dev/wallets-shared";import{isEvmBlockchain as fS}from"rango-types";import gS,{useMemo as hS}from"react";function yS(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:s,getWalletInfo:a}=mS(),l=hS(()=>cS({API_KEY:t.apiKey||Pt("API_KEY"),BASE_URL:Pt("BASE_URL")}),[t.apiKey]),p=d().blockchains(),u={blockchains:z.use.connectedWallets().map(T=>({accounts:[T],name:T.chain}))},m=i(async(T,w)=>{if(s(T,w))return r(T,w)},"switchNetwork"),g=i(T=>!!a(T).mobileWallet,"isMobileWallet"),f=p.filter(T=>T.enabled).reduce((T,w)=>(T[w.name]=w,T),{}),k=p.filter(fS),S=i(T=>{let{supportedChains:w}=a(T);return Uo(w)},"getSupportedChainNames"),h=e(),b={meta:{blockchains:f,evmBasedChains:k,evmNetworkChainInfo:dS(k),getSupportedChainNames:S},getSigners:o,wallets:u,providers:h,switchNetwork:m,canSwitchNetworkTo:s,connect:r,state:n,isMobileWallet:g};return gS.createElement(uS,{queuesDefs:[l],context:b,onPersistedDataLoaded:T=>{pS(T)},isPaused:!1},t.children)}i(yS,"QueueManager");var $u=yS;import{useManager as wS}from"@rango-dev/queue-manager-react";import xS,{createContext as vS,useContext as bS}from"react";import{cancelSwap as SS,getCurrentBlockchainOfOrNull as CS,getCurrentStep as kS,getRelatedWalletOrNull as TS}from"@rango-dev/queue-manager-rango-preset";var Lo=class{constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return Ht(this.manager)}getCurrentStep(e){return this.getCurrentStepInfo(e).step}getCurrentStepWallet(e){return this.getCurrentStepInfo(e).wallet}getCurrentStepNetwork(e){return this.getCurrentStepInfo(e).network}retry(e,o){return this.actions.retrySwap(e,o)}cancel(e){let o=this.manager?.get(e);o&&SS(o)}getCurrentStepInfo(e){let o=kS(e);return{step:o,wallet:o?TS(e,o):null,network:o?CS(e,o):null}}};i(Lo,"WidgetHistory");var Mu=vS(void 0);function Ss(t){let{manager:e}=wS(),o=O.use.retry(),n=new Lo(e,{retrySwap:o}),r=z.use.connectedWallets(),s=z.use.loading(),a=Ds(r),l=z.use.getWalletsDetails(),p=d().blockchains(),c=d().tokens(),u=d().swappers(),m=d().fetchStatus,g={history:n,wallets:{isLoading:s,details:r,totalBalance:a,refetch:l},meta:{blockchains:p,tokens:c,swappers:u,loadingStatus:m}};return xS.createElement(Mu.Provider,{value:g},t.children)}i(Ss,"WidgetInfo");function _u(){let t=bS(Mu);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(_u,"useWidget");function pr(t){let{onUpdateState:e,config:o}=t;return AS(()=>{xs({API_KEY:o?.apiKey||No,BASE_URL:o?.apiUrl||ws})},[o]),Cs.createElement(an,{config:o,onUpdateState:e},Cs.createElement($u,{apiKey:o.apiKey},Cs.createElement(Ss,null,t.children)))}i(pr,"WidgetProvider");function Du(t){return t.config?.externalWallets?ks.createElement(lr,null):ks.createElement(pr,{config:t.config??mr},ks.createElement(lr,null))}i(Du,"Widget");export{j_ as MainEvents,nD as Networks,sD as PendingSwapNetworkStatus,K_ as RouteEventType,X_ as StepEventType,Y_ as StepExecutionBlockedEventStatus,J_ as StepExecutionEventStatus,tD as WalletEvents,rD as WalletTypes,Du as Widget,pr as WidgetProvider,an as WidgetWallets,hs as customizedThemeTokens,eD as readAccountAddress,Tl as useWallets,_u as useWidget,Z_ as useWidgetEvents};
1
+ var Jc=Object.defineProperty;var i=(t,e)=>Jc(t,"name",{value:e,configurable:!0});import{MainEvents as MD,RouteEventType as $D,StepEventType as _D,StepExecutionBlockedEventStatus as DD,StepExecutionEventStatus as FD,useEvents as OD}from"@rango-dev/queue-manager-rango-preset";import{readAccountAddress as qD,useWallets as Fl,Events as zD}from"@rango-dev/wallets-react";import{Networks as HD,WalletTypes as QD}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as jD}from"rango-types";import{Events as Dr,Provider as Pm}from"@rango-dev/wallets-react";import{isEvmBlockchain as Mm}from"rango-sdk";import pn,{createContext as $m,useEffect as Fr,useRef as _m,useState as Dm}from"react";import{useEffect as sn,useLayoutEffect as La,useRef as an}from"react";import hm,{createContext as ym,useContext as Sm,useEffect as Cm,useRef as km}from"react";import{create as fm}from"zustand";import{persist as gm}from"zustand/middleware";var Sr={apiKey:"",multiWallets:!0,enableNewLiquiditySources:!0,customDestination:!0},Ls=i((t,e,o)=>({config:{...Sr,...t},updateConfig:n=>{let r=o().config;e({config:{...r,...n}})}}),"createConfigSlice");import{RangoClient as pm}from"rango-sdk";var Do="c6381a79-2817-4602-83bf-6a641a409e32",Ps="https://api.rango.exchange",Te="rango-swap-box";import{WalletState as Ke}from"@rango-dev/ui";import{readAccountAddress as em}from"@rango-dev/wallets-react";import{detectInstallLink as tm,getCosmosExperimentalChainInfo as om,isEvmAddress as nm,KEPLR_COMPATIBLE_WALLETS as tC,Networks as Ds}from"@rango-dev/wallets-shared";import Cr from"bignumber.js";import{isCosmosBlockchain as rm}from"rango-types";import Zc from"bignumber.js";var We=new Zc(0);import{WalletTypes as Rc}from"@rango-dev/wallets-shared";var Ms=[Rc.LEAP];import{BigNumber as _s}from"bignumber.js";var Fo=i(t=>{let e=(t%60).toString().padStart(2,"0");return`${parseInt((t/60).toString()).toString().padStart(2,"0")}:${e}`},"secondsToString"),I=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new _s(t),r=1,s=1e3;for(let a=0;a<60;a++)if(new _s(n.toFixed(a,r)).eq(n)){s=a;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,4))),r);for(let a=e||4;a<17;a++)if(n.gte(Math.pow(10,-a)))return n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,a))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(s,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var Oo=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Xe=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),no=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function ie(t){return I(t,12,12).replace(/(?:\.0*|(\.\d+?)0*)$/,"$1")}i(ie,"formatTooltipNumbers");function kr(t){switch(!0){case t.connected:return Ke.CONNECTED;case t.connecting:return Ke.CONNECTING;case!t.installed:return Ke.NOT_INSTALLED;default:return Ke.DISCONNECTED}}i(kr,"mapStatusToWalletState");function Fs(t,e,o,n){return o.filter(r=>!Ms.includes(r)).filter(r=>{let{supportedChains:s,isContractWallet:a}=e(r),{installed:l,network:p}=t(r);return a&&(!l||!!n&&p!==n)?!1:n?!!s.find(m=>m.name===n):!0}).map(r=>{let{name:s,img:a,installLink:l}=e(r),p=kr(t(r));return{title:s,image:a,link:tm(l),state:p,type:r}})}i(Fs,"mapWalletTypesToWalletInfo");function zo(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(zo,"walletAndSupportedChainsNames");function Os(t,e,o,n,r){let s=[];function a(p,u){if(!!!s.find(c=>c.chain===p)){let c={address:u,chain:p,walletType:t};s.push(c)}}i(a,"addAccount");let l=n||[];return e.forEach(p=>{let{address:u,network:m}=em(p),c=l.length>0,h=l.includes(m),f=m===Ds.Unknown;if(c&&!h&&!f)return;let w=m===Ds.Unknown&&nm(u);if(f&&!w)return;o.includes(m)||w?r?a(m,u.toLowerCase()):l.filter(k=>o.includes(k)).forEach(k=>{a(k,u.toLowerCase())}):a(m,u)}),s}i(Os,"prepareAccountsForWalletStore");function Us(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain;e.includes(n)||e.push(n),e.includes(r)||e.push(r),o.internalSwaps&&Array.isArray(o.internalSwaps)&&o.internalSwaps.forEach(s=>{let a=s.from.blockchain,l=s.to.blockchain;e.includes(a)||e.push(a),e.includes(l)||e.push(l)})}),e}i(Us,"getRequiredChains");function Go(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Go,"isAccountAndWalletMatched");function qs(t,e){let{blockChain:o,balances:n=[]}=t;return n?.map(r=>({chain:o,symbol:r.asset.symbol,ticker:r.asset.symbol,address:r.asset.address||null,rawAmount:r.amount.amount,decimal:r.amount.decimals,amount:new Cr(r.amount.amount).shiftedBy(-r.amount.decimals).toFixed(),logo:"",usdPrice:sm(o,r.asset.symbol,r.asset.address,e)||null}))||[]}i(qs,"makeBalanceFor");function zs(t){return{...t,loading:!1,error:!0}}i(zs,"resetConnectedWalletState");var Gs=i(t=>{let e=new Set,n=t?.reduce((s,a)=>s.findIndex(l=>l.address===a.address&&l.chain===a.chain)===-1?[...s,a]:s,[])?.map(s=>{let a={name:s.chain,accounts:[]};return e.has(s.address)||e.add(s.address),e.forEach(l=>{s.address===l&&a.accounts.push(s)}),a}),r=I(n?.flatMap(s=>s.accounts)?.flatMap(s=>s?.balances)?.map(s=>new Cr(s?.amount||We).multipliedBy(s?.usdPrice||0))?.reduce((s,a)=>s.plus(a),We)||We).toString();return im(r)},"calculateWalletUsdValue");function im(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(im,"numberWithThousandSeparator");var sm=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice"),Ho=i((t,e)=>{let o=om(Object.entries(t).map(([,n])=>n).filter(rm));return o&&o[e]?.experimental},"isExperimentalChain");function Qo(t){return t?{...t,amount:I(t.amount,8,8),usdValue:I(t.usdValue,4,4)}:null}i(Qo,"formatBalance");function am(t,e){return t?.usdValue&&e?.usdValue?parseFloat(e.usdValue)-parseFloat(t.usdValue):!t?.usdValue&&e?.usdValue?1:t?.usdValue&&!e?.usdValue?-1:!t?.usdValue&&!e?.usdValue?parseFloat(e?.amount||"0")-parseFloat(t?.amount||"0"):0}i(am,"sortTokensByBalance");function lm(t,e,o){let n=o(t),r=o(e);return n===r?0:n?-1:1}i(lm,"sortTokensByPinnedToken");function Hs(t,e,o){return t.sort((n,r)=>{let s=e(n),a=e(r),l=lm(n,r,o);return l!==0?l:am(s,a)}),t}i(Hs,"sortTokens");function Le(t,e){return t?.blockchain===e?.blockchain&&t?.symbol===e?.symbol&&t?.address===e?.address}i(Le,"tokensAreEqual");function Qs(t){return t.sort((e,o)=>+(o.state===Ke.CONNECTED)-+(e.state===Ke.CONNECTED)||+(o.state===Ke.DISCONNECTED||o.state===Ke.CONNECTING)-+(e.state===Ke.DISCONNECTED||e.state===Ke.CONNECTING))}i(Qs,"sortWalletsBasedOnConnectionState");function Vo(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(Vo,"getConciseAddress");function Vs({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(Vs,"getAddress");function Tr(t){return`${t.blockchain}-${t.symbol}-${t.address??""}`}i(Tr,"createTokenHash");function jo(t){return t.flatMap(e=>e.balances).reduce((e,o)=>{let n={amount:o?.amount??"",decimals:o?.decimal??0,usdValue:o?.usdPrice?new Cr(o?.usdPrice??We).multipliedBy(o?.amount).toString():""},r=o?Tr({symbol:o.symbol,blockchain:o.chain,address:o.address}):null,s=r?e[r]:null;return r&&(!s||s&&s.amount<n.amount)&&(e[r]=n),e},{})}i(jo,"makeTokensBalance");var js=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");var wr={API_KEY:Do};function Dt(t){return wr[t]||""}i(Dt,"getConfig");function Xs(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),wr=e,wr}i(Xs,"initConfig");var Ks=20,Ys=25,Js="Roboto",xr="theme-widget",ro=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Le(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Le(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),vr=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig");var Xo,Ft=i(()=>Xo||(Xo=new pm(Dt("API_KEY"),Dt("BASE_URL")),Xo),"httpService");function Ot(t){return Array.from(new Set(t))}i(Ot,"removeDuplicateFrom");function Ar(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(Ar,"areEqual");function Zs(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Zs,"debounce");function bt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(bt,"containsText");var O=i(()=>document.getElementById(Te),"getContainer");function Ko(t,e){let o=t.map(s=>s.swapperGroup),n=[];return Ot(t.map(s=>s.swapperGroup)).map(s=>{let a=t.find(l=>l.swapperGroup===s);if(a){let l=!0;o&&(l=o.some(p=>p===a.swapperGroup)),l&&a.types.map(p=>{n.push({id:a.swapperGroup,groupTitle:a.swapperGroup,logo:a.logo,type:p,selected:!e.includes(a.swapperGroup)})})}}),n}i(Ko,"getUniqueSwappersGroups");function Rs(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Rs,"sortLiquiditySourcesByGroupTitle");function Pe(t,e){return e?.[t]==="hidden"}i(Pe,"isFeatureHidden");function Yo(t,e){return e?.[t]==="enabled"}i(Yo,"isFeatureEnabled");var ea=i((t,e)=>({_blockchains:[],_tokens:[],_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchains;if(!o||!o?.type)return n;let r=e().config,s=(o.type==="source"?r.from?.blockchains:r.to?.blockchains)??[];return n.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let n=e()._tokens;if(!o||!o?.type)return n;let r=e().config,s=(o.type==="source"?r.from?.tokens:r.to?.tokens)??{},a=e().blockchains({type:o.type});return n.filter(p=>s&&ro(p,s)||o.blockchain&&p.blockchain!==o.blockchain||!a.some(u=>u.name===p.blockchain)?!1:o.searchFor?!!(bt(p.symbol,o.searchFor)||bt(p.address||"",o.searchFor)||bt(p.name||"",o.searchFor)):!0).sort((p,u)=>e().isTokenPinned(p,o.type)?-1:e().isTokenPinned(u,o.type)||p.isSecondaryCoin?1:u.isSecondaryCoin||!p.address&&u.address?-1:p.address&&!u.address?1:0)},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(a=>Le(a,o)),swappers:()=>{let{config:{enableNewLiquiditySources:o,liquiditySources:n}}=e();return e()._swappers.filter(a=>{let l=n?.includes(a.swapperGroup);return o||!n||n.length===0?!l:l}).sort(Rs)},fetch:async()=>{try{let o=await Ft().getAllMetadata();t({fetchStatus:"success"});let n=[],r=[],s=o.popularTokens,a=o.swappers,l=new Set;o.tokens.forEach(p=>{l.add(p.blockchain),r.push(p)}),o.blockchains.forEach(p=>{p.enabled&&l.has(p.name)&&n.push(p)}),n.sort((p,u)=>p.sort-u.sort),t({_blockchains:n,_tokens:r,_popularTokens:s,_swappers:a})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{English as um,French as cm,Japanese as mm,Spanish as dm}from"@rango-dev/ui";var ta=[{title:"English",label:"English",local:"en",SVGFlag:um},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:dm},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:cm},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:mm}],Ut="en";var oa=[.5,1,3],na=1,ra=5,ia=100,sa=0;var aa=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:Ut,preferredBlockchains:[],slippage:na,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((a,l)=>{let p=a===o,u=l<=10-1;return p&&u}))return;let s=n.filter(a=>!(a===o));t(()=>({preferredBlockchains:[o,...s]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let s=Ot(o.map(a=>a.swapperGroup));return s.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:s}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n}=o,r=Pe("theme",n),s=Pe("language",n),a=Pe("liquiditySource",n);t({...r&&{theme:"auto"},...s&&{language:Ut},...a&&{disabledLiquiditySources:[]}})}}),"createSettingsSlice");function la(t){return fm()(gm((...e)=>({...ea(...e),...aa(...e),...Ls(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources})}))}i(la,"createAppStore");var pa=ym(null);function d(){let t=Sm(pa);if(Cm(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(d,"useAppStore");function ua(t){let e=km();return e.current||(e.current=la(t.config)),hm.createElement(pa.Provider,{value:e.current},t.children)}i(ua,"AppStoreProvider");import yt from"bignumber.js";import{create as Em}from"zustand";import{subscribeWithSelector as Im}from"zustand/middleware";import{getLastSuccessfulStep as Am}from"@rango-dev/queue-manager-rango-preset";import Mk from"bignumber.js";var ft=(r=>(r[r.HIGH_VALUE_LOSS=0]="HIGH_VALUE_LOSS",r[r.UNKNOWN_PRICE=1]="UNKNOWN_PRICE",r[r.INSUFFICIENT_SLIPPAGE=2]="INSUFFICIENT_SLIPPAGE",r[r.HIGH_SLIPPAGE=3]="HIGH_SLIPPAGE",r))(ft||{});function ca(t,e){return e.find(o=>o.name===t)?.displayName}i(ca,"getBlockchainDisplayNameFor");function Ye(t,e){return e.find(o=>o.name===t)?.shortName}i(Ye,"getBlockchainShortNameFor");function ma(t,e){return e.find(o=>o.id===t)?.swapperGroup}i(ma,"getSwapperDisplayName");function Er(t,e){return e.find(o=>Le(o,t))??null}i(Er,"findToken");function Ir(t,e){return e.find(o=>o.name===t)??null}i(Ir,"findBlockchain");import{i18n as Ue}from"@lingui/core";import ve from"bignumber.js";import{PendingSwapNetworkStatus as en}from"rango-types";function Jo(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain,s=e[e.length-1];n!=s&&e.push(n),s=e[e.length-1],r!=s&&e.push(r)}),e}i(Jo,"getRequiredWallets");function Zo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Zo,"isValidAddress");import{i18n as fe}from"@lingui/core";var V=i(()=>({genericServerError:fe.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:fe.t("Please reset your liquidity sources."),description:fe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:fe.t("No Routes Found."),description:fe.t("Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination.")},bridgeLimitErrors:{increaseAmount:fe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:fe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:fe.t("High Price Impact"),title:fe.t("Price impact is too high!"),description:fe.t("The price impact is significantly higher than the allowed amount. If you are sure, continue, otherwise, change the swap."),confirmMessage:fe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:fe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:fe.t("USD Price Unknown"),title:fe.t("USD Price Unknown, Cannot calculate Price Impact."),description:fe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:fe.t("Confirm USD Price Unknown")}}),"errorMessages");function da(t){switch(t.type){case 0:return t.diagnosisMessage??V().noResultError.title;case 1:return V().genericServerError;default:return""}}i(da,"getQuoteErrorMessage");import{i18n as Ro}from"@lingui/core";var Et=i(()=>({connectWallet:Ro.t("Connect Wallet"),swap:Ro.t("Swap"),swapAnyway:Ro.t("Swap anyway"),ethWarning:Ro.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function fa(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new ve(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new ve(1e3)))??!1}i(fa,"hasHighValueLoss");function Wr(t){return(t?.result?.swaps||[]).filter(e=>{let o=e.fromAmountMinValue?new ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ve(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(Wr,"hasLimitError");function Br(t){let e=(t.result?.swaps||[]).filter(l=>{let p=l.fromAmountMinValue?new ve(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new ve(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?p?.gte(l.fromAmount)||u?.lte(l.fromAmount):p?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ve(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",s="",a="";return!r&&o&&o.gt(e.fromAmount)?(s=Ue.t({id:"Required: >= {min} {symbol}",values:{min:I(o,6,6),symbol:e.from.symbol}}),a=V().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(s=Ue.t({id:"Required: > {min} {symbol}",values:{min:I(o,6,6),symbol:e.from.symbol}}),a=V().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(s=Ue.t({id:"Required: <= {max} {symbol}",values:{max:I(n,6,6),symbol:e.from.symbol}}),a=V().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(s=Ue.t({id:"Required: < {max} {symbol}",values:{max:I(n,6,6),symbol:e.from.symbol}}),a=V().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:s,recommendation:a}}i(Br,"getLimitErrorMessage");function ga(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:s,warning:a,error:l,needsToWarnEthOnPath:p}=t;return e!=="success"?{title:Et().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!s||!s.result||l||!r||r==="0"?{title:Et().swap,action:"confirm-swap",disabled:!0}:a?{title:Et().swapAnyway,action:"confirm-warning",disabled:!1}:p?{title:Et().ethWarning,action:"confirm-warning",disabled:!1}:{title:Et().swap,action:"confirm-swap",disabled:!1}:{title:Et().connectWallet,action:"connect-wallet",disabled:!1}}i(ga,"getSwapButtonState");function Nr(t,e,o){return!((!o||o.lte(We))&&t?.result&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t.result)}i(Nr,"canComputePriceImpact");function Tm(t){let e=[];return t?.result?.swaps.forEach(o=>{let n=o.from.blockchain,r=o.to.blockchain,s=e[e.length-1];n!=s&&e.push(n),s=e[e.length-1],r!=s&&e.push(r)}),e}i(Tm,"requiredWallets");var wm=i((t,e,o,n)=>n?.find(s=>s.blockchain===t&&s.symbol?.toUpperCase()===e?.toUpperCase()&&s.address===o)?.usdPrice||null,"getUsdPrice");function xm(t,e){let o=We;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let s=wm(r.asset.blockchain,r.asset.symbol,r.asset.address,e);o=o.plus(new ve(r.amount).multipliedBy(s||0))}return o}i(xm,"getUsdFeeOfStep");function tn(t,e){return t.reduce((o,n)=>o.plus(xm(n,e)),We)}i(tn,"getTotalFeeInUsd");function Lr(t){let e=new Map;return t.result?.swaps.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(Lr,"checkSlippageErrors");function ha(t,e){let o=new Map;return t.result?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(ha,"checkSlippageWarnings");function on(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(on,"getMinRequiredSlippage");function ya(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(ya,"hasProperSlippage");function nn(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:s,disabledLiquiditySources:a,liquiditySources:l,excludeLiquiditySources:p,slippage:u,affiliateRef:m,affiliatePercent:c,affiliateWallets:h,initialQuote:f,destination:x}=t,w=s?.reduce((A,y)=>(A[y.chain]=y.address,A),{}),g=[];r?.forEach(A=>{let y=g.find(E=>E.blockchain===A.chain);y?y.addresses.push(A.address):g.push({blockchain:A.chain,addresses:[A.address]})});let v=!!f,k=Ot((f?.result?.swaps||[]).reduce((A,y)=>(A.push(y.from.blockchain,y.to.blockchain),y.internalSwaps&&Array.isArray(y.internalSwaps)&&y.internalSwaps.map(E=>{A.push(E.from.blockchain,E.to.blockchain)}),A),[]));return{amount:n.toString(),affiliateRef:m??void 0,affiliatePercent:c??void 0,affiliateWallets:h??void 0,checkPrerequisites:v,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:g,selectedWallets:w??{},slippage:u.toString(),...x&&{destination:x},...p&&{swapperGroups:a.concat(l??[]),swappersGroupsExclude:!0},...!p&&{swapperGroups:l?.filter(A=>!a.includes(A)),swappersGroupsExclude:!1},...v&&{blockchains:k}}}i(nn,"createQuoteRequestBody");function Sa(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Sa,"getWalletsForNewSwap");function qt(t){return t.result?.outputAmount||null}i(qt,"getQuoteOutputAmount");function Ca(t,e){return new ve(e).div(new ve(t)).minus(1).multipliedBy(100).toNumber()}i(Ca,"getPercentageChange");function ka(t,e){let o=qt(t),n=qt(e);if(!o||!n)return!1;let r=Me(o,n);return r?r<=-1:!0}i(ka,"isOutputAmountChangedALot");function Ta(t,e,o){let n=t.validationStatus,r=Us(t);return e.sort((a,l)=>r.indexOf(a.chain)-r.indexOf(l.chain)).flatMap(a=>Ea(a,n)||[]).filter(a=>!a.ok).map(a=>{let l=a.asset.symbol,p=I(new ve(a.currentAmount.amount).shiftedBy(-a.currentAmount.decimals),8,8),u=I(new ve(a.requiredAmount.amount).shiftedBy(-a.requiredAmount.decimals),8,8),m="";return a.reason==="FEE"&&(m=Ue.t(" for network fee")),a.reason==="INPUT_ASSET"&&(m=Ue.t(" for swap")),a.reason==="FEE_AND_INPUT_ASSET"&&(m=Ue.t(" for input and network fee")),Ue.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:u,symbol:l,reason:m,currentAmount:p,blockchain:Ye(a.asset.blockchain,o)}})})}i(Ta,"generateBalanceWarnings");function wa(t,e){return(t?new ve(t):We).multipliedBy(e||0)}i(wa,"calcOutputUsdValue");function io(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==en.NetworkChanged}i(io,"isNetworkStatusInWarningState");function xa(t,e){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),io(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case en.WaitingForConnectingWallet:n=n||Ue.t("Waiting for connecting wallet");break;case en.WaitingForQueue:n=n||Ue.t("Waiting for other running tasks to be finished");break;case en.WaitingForNetworkChange:n=n||Ue.t("Waiting for changing wallet network");break;default:n=n||"";break}r=r||"",n=n||"";let a=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:r,long:a}}}i(xa,"getSwapMessages");function va(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(va,"getLastConvertedTokenInFailedSwap");function Aa(t){return t.status==="failed"&&!!t.finishTime&&new Date().getTime()-parseInt(t.finishTime)<4*3600*1e3}i(Aa,"shouldRetrySwap");function ba(t,e,o,n,r,s){return t||!e&&!Tm(n).every(a=>r.map(l=>l.chain).includes(a))||!!e&&!o||!!e&&!!o&&s&&!Zo(s,o)}i(ba,"confirmSwapDisabled");function Pr(t,e,o){return o&&t.find(n=>{let r=e?.split("--");return r?.length===1?n.symbol===r[0]&&n.address===null&&n.blockchain===o.name:n.symbol===r?.[0]&&n.address===r?.[1]&&n.blockchain===o.name})||null}i(Pr,"searchParamsToToken");function Wa(t){return t?.result?.swaps[t?.result?.swaps.length-1].to.usdPrice}i(Wa,"getQuoteToTokenUsdPrice");function Mr(t,e){let o=t.result?.swaps||[],n=e.result?.swaps||[];return o.length!==n.length}i(Mr,"isNumberOfSwapsChanged");function $r(t,e){let o=t.result?.swaps.map(r=>r.swapperId)||[],n=e.result?.swaps.map(r=>r.swapperId)||[];return!Ar(o,n)}i($r,"isQuoteSwappersUpdated");function _r(t,e){let o=t.result?.swaps.map(r=>r.to.symbol)||[],n=e.result?.swaps.map(r=>r.to.symbol)||[];return!Ar(o,n)}i(_r,"isQuoteInternalCoinsUpdated");function Ba(t,e){return Mr(t,e)||$r(t,e)||_r(t,e)}i(Ba,"isQuoteChanged");function Ea(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(Ea,"getRequiredBalanceOfWallet");function st(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(st,"getPriceImpactLevel");function Na(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],s=Am(t.steps),a={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=Ir(s?s.toBlockchain:n.fromBlockchain,e),p=Ir(r.toBlockchain,e),u=Er(s?{blockchain:l?.name??"",symbol:s.toSymbol,address:s.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress},o),m=Er(a,o),c=s?s.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:u,toBlockchain:p,toToken:m,inputAmount:c}}i(Na,"createRetryQuote");function rn(t,e){let{fromToken:o,toToken:n,tokens:r,userSlippage:s}=e,a=It(o,t.requestAmount),l=It(n,t.result?.outputAmount??"");if(t.result&&a&&l){let m=Me(a.toString(),l.toString());if(!!m&&fa(a,m)){let h=tn(t.result.swaps,r),f=st(m);return{type:0,inputUsdValue:a,outputUsdValue:l,priceImpact:m,totalFee:h,warningLevel:f}}}else if(t.result&&(!a||!l))return{type:1};let p=on(t),u=s>ra;if(ya(e.userSlippage.toString(),p)){if(u&&parseFloat(p??"0")<s)return{type:3,slippage:s.toString()}}else return{type:2,recommendedSlippages:ha(t,s),minRequiredSlippage:p};return null}i(rn,"generateQuoteWarnings");function Me(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Ca(t.toString(),e.toString());return n&&n<0?n:null}i(Me,"getPriceImpact");var bm=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"),ht=bm;var It=i((t,e)=>t?.usdPrice?new yt(e||We).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),U=ht(Em()(Im(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new yt(0),outputUsdValue:new yt(0),toBlockchain:null,toToken:null,quote:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:"",quoteWarningsConfirmed:!1,setQuote:e=>t(o=>{let n=null,r=We;return no(o.inputAmount)?(e&&(n=e.result?.outputAmount?new yt(e.result?.outputAmount):null,r=wa(e.result?.outputAmount,Wa(e)||o.toToken?.usdPrice)),{quote:e,...!!e&&{outputAmount:n,outputUsdValue:r}}):{}}),resetQuote:()=>t(()=>({quote:null,outputAmount:null,outputUsdValue:new yt(0)})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,...o.fromToken&&{quote:null,fromToken:null,outputAmount:null,outputUsdValue:null}})},setFromToken:e=>t(o=>({fromToken:e.token,...e.token&&{fromBlockchain:e.meta.blockchains.find(n=>n.name===e.token.blockchain)??null},...!!o.inputAmount&&{inputUsdValue:It(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{quote:null,toToken:null,outputAmount:null,outputUsdValue:null}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:new yt(0),outputUsdValue:new yt(0),quote:null},...!!o.fromToken&&{inputUsdValue:It(o.fromToken,e)}}))},retry:(e,o)=>{let{tokens:n,blockchains:r}=o,{fromBlockchain:s,fromToken:a,toBlockchain:l,toToken:p,inputAmount:u}=Na(e,r,n);t({fromBlockchain:s,fromToken:a,inputAmount:u,outputAmount:null,inputUsdValue:It(a??null,u),outputUsdValue:new yt(0),toBlockchain:l,toToken:p,quote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:It(e.toToken,e.outputAmount?.toString()||"")})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputAmount:null,outputUsdValue:null,quote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:null,quote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:""}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})}))));function Pa(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,setFromToken:r,fromToken:s,toToken:a,fromBlockchain:l,toBlockchain:p}=U(),u=d().config,m=d().fetchStatus,c=d().blockchains(),h=d().tokens(),{setAffiliateRef:f,setAffiliatePercent:x,setAffiliateWallets:w}=d(),g=u?.from?.tokens,v=u?.from?.blockchains,k=u?.to?.tokens,T=u?.to?.blockchains,A=an(void 0),y=an(void 0),E=an(void 0),b=an(void 0);sn(()=>{t(u?.amount?.toString()||"")},[u?.amount]),La(()=>{if(m==="success"){let S=c.find(M=>M.name===u?.from?.blockchain),B=h.find(M=>Le(M,u?.from?.token||null));(S||!S&&E.current)&&n(S??null),B?r({token:B,meta:{blockchains:c,tokens:h}}):!B&&A.current&&r({token:null}),E.current=u?.from?.blockchain,A.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,m]),sn(()=>{ro(s,g)&&r({token:null}),vr(l,v)&&n(null)},[g,v]),sn(()=>{ro(a,k)&&r({token:null}),vr(p,T)&&o(null)},[k,T]),La(()=>{if(m==="success"){let S=c.find(M=>M.name===u?.to?.blockchain),B=h.find(M=>Le(M,u?.to?.token||null));(S||!S&&b.current)&&o(S??null),B?e({token:B,meta:{blockchains:c,tokens:h}}):!B&&y.current&&e({token:null}),b.current=u?.to?.blockchain,y.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,m]),sn(()=>{f(u?.affiliate?.ref??null),x(u?.affiliate?.percent??null),w(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(Pa,"useSyncStoresWithConfig");import{useEffect as Lm}from"react";import{create as Wm}from"zustand";import{subscribeWithSelector as Bm}from"zustand/middleware";var H=ht(Wm()(Bm((t,e)=>({connectedWallets:[],balances:{},customDestination:"",loading:!1,connectWallet:(o,n)=>{let r=e().getWalletsDetails;t(s=>({loading:!0,connectedWallets:s.connectedWallets.filter(a=>a.walletType!==o[0].walletType).concat(o.map(a=>{let l=!s.connectedWallets.find(p=>p.chain===a.chain&&p.selected);return{balances:[],address:a.address,chain:a.chain,explorerUrl:null,walletType:a.walletType,selected:l,loading:!0,error:!1}}))})),r(o,n)},disconnectWallet:o=>{t(n=>{let r=n.connectedWallets.filter(l=>l.selected&&l.walletType!==o).map(l=>l.chain),s=n.connectedWallets.filter(l=>l.walletType!==o).map(l=>r.includes(l.chain)?l:(r.push(l.chain),{...l,selected:!0}));return{balances:jo(s),connectedWallets:s}})},selectWallets:o=>t(n=>({connectedWallets:n.connectedWallets.map(r=>{let s=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),a=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return s?{...r,selected:!1}:a?{...r,selected:!0}:r})})),clearConnectedWallet:()=>t(()=>({connectedWallets:[],selectedWallets:[]})),getWalletsDetails:async(o,n,r=!0)=>{let s=e().getWalletsDetails;t(a=>({loading:!0,connectedWallets:a.connectedWallets.map(l=>o.find(p=>Go(p,l))?{...l,loading:!0}:l)}));try{let a=o.map(({address:u,chain:m})=>({address:u,blockchain:m})),p=(await Ft().getWalletsDetails(a)).wallets;if(p)t(u=>{let m=u.connectedWallets.map(h=>{let f=o.find(w=>Go(w,h)),x=p.find(w=>w.address===h.address&&w.blockChain===h.chain);return x?.failed&&f&&r&&s([f],n,!1),f&&x?{...h,explorerUrl:x.explorerUrl,balances:qs(x,n),loading:!1}:h});return{loading:!1,balances:jo(m),connectedWallets:m}});else throw new Error("Wallet not found")}catch{t(l=>{let p=l.connectedWallets.map(m=>o.find(c=>Go(c,m))?zs(m):m);return{loading:!1,balances:jo(p),connectedWallets:p}})}},getBalanceFor:o=>{let{balances:n}=e(),r=Tr(o);return n[r]??null}}))));import{allProviders as Nm}from"@rango-dev/provider-all";function ln(t,e){let o=Nm({walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||""}});if(t){let n=[];return t.forEach(r=>{if(typeof r=="string"){let s=o.find(a=>a.config.type===r);s?n.push(s):console.warn(`Couldn't find ${r} provider. Please make sure you are passing the correct name.`)}else n.push(r)}),n}return o}i(ln,"matchAndGenerateProviders");function Ma(t,e){return ln(t,e).map(r=>r.config.type)}i(Ma,"configWalletsToWalletName");function $a(t,e){let o=H.use.clearConnectedWallet(),n=ln(void 0,e);return Lm(()=>{o(),n=ln(t,{walletConnectProjectId:e?.walletConnectProjectId})},[t?.length]),{providers:n}}i($a,"useWalletProviders");var un=$m({onConnectWallet:()=>{}});function Fm(t){let{updateConfig:e,updateSettings:o,fetch:n}=d(),r=d().blockchains(),s=d().tokens(),a={walletConnectProjectId:t.config?.walletConnectProjectId},[l,p]=Dm([]),{providers:u}=$a(t.config.wallets,a),{connectWallet:m,disconnectWallet:c}=H(),h=_m();Pa(),Fr(()=>{n().catch(console.log)},[]),Fr(()=>{t.config&&(e(t.config),o(t.config))},[t.config]);let f=r.filter(Mm).map(w=>w.name),x=i((w,g,v,k,T)=>{if(g===Dr.ACCOUNTS)if(v){let A=zo(T.supportedBlockchains),y=Os(w,v,f,A,T.isContractWallet);p(y)}else c(w);if(g===Dr.ACCOUNTS&&k.connected){let A=`${w}-${k.network}-${v}`;k.connected&&(h.current?h.current(A):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(g===Dr.NETWORK&&k.network){let A=`${w}-${k.network}`;h.current?h.current(A):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(w,g,v,k,T)},"onUpdateState");return Fr(()=>{l.length&&m(l,s)},[l,s]),pn.createElement(un.Provider,{value:{onConnectWallet:w=>{h.current=w}}},pn.createElement(Pm,{allBlockChains:r,providers:u,onUpdateState:x,autoConnect:!0},t.children))}i(Fm,"Main");function cn(t){let{config:e,...o}=t;return pn.createElement(ua,{config:e},pn.createElement(Fm,{...o,config:e}))}i(cn,"WidgetWallets");import Ns from"react";import{I18nManager as CS}from"@rango-dev/ui";import Mo,{useContext as kS,useEffect as Hc,useState as Qc}from"react";import{useQueueManager as jm}from"@rango-dev/queue-manager-rango-preset";import{useWallets as Xm}from"@rango-dev/wallets-react";import{isEvmBlockchain as Km}from"rango-types";import mn,{Fragment as Ym}from"react";import{MemoryRouter as Jm,useInRouterContext as Zm}from"react-router";import{useWallets as Um}from"@rango-dev/wallets-react";import{useEffect as qm,useRef as zm}from"react";function _a(){let{connect:t,state:e}=Um(),o=zm({}),{fetchStatus:n}=d(),r=new URLSearchParams(location.search).get("autoConnect")||"",s=e(r);qm(()=>{n==="success"&&r&&s.installed&&!s.connecting&&!s.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[s,n])}i(_a,"useForceAutoConnect");import{useEffect as Or,useRef as Ur}from"react";import{createSearchParams as Hm,useLocation as Qm,useSearchParams as Vm}from"react-router-dom";var _={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",liquiditySources:"liquidity-sources",themes:"themes",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId"};import{create as Gm}from"zustand";var Ae=ht(Gm()(t=>({connectWalletsButtonDisabled:!1,selectedSwapRequestId:null,currentPage:"",setSelectedSwap:e=>t({selectedSwapRequestId:e}),setCurrentPage:e=>t({currentPage:e})})));function Da(){let t=Ur(!0),[e,o]=Vm(),n=Qm(),r=Ur(n.search),s=Ur({}),a=U.use.fromBlockchain(),l=U.use.toBlockchain(),p=U.use.fromToken(),u=U.use.toToken(),m=U.use.setFromBlockchain(),c=U.use.setFromToken(),h=U.use.setToBlockchain(),f=U.use.setToToken(),x=U.use.inputAmount(),w=U.use.setInputAmount(),g=d().fetchStatus,v=d().blockchains(),k=d().tokens(),T=Ae.use.setSelectedSwap();return Or(()=>{let A={};Hm(r.current).forEach((E,b)=>{A[b]=E}),s.current=A;let y=n.pathname.split(_.swaps+"/")[1]||null;y&&T(y)},[]),Or(()=>{if(!t.current){let A="",y="",E="",b="",S="",B=s.current["autoConnect"];g!=="success"?(A=s.current["fromBlockchain"],y=s.current["fromToken"],E=s.current["toBlockchain"],b=s.current["toToken"],S=s.current["fromAmount"]||x):(A=a?.name||"",y=(p?.symbol||"")+(p?.address?`--${p?.address}`:""),E=l?.name||"",b=(u?.symbol||"")+(u?.address?`--${u?.address}`:""),S=x),o({...A&&{["fromBlockchain"]:A},...y&&{["fromToken"]:y},...E&&{["toBlockchain"]:E},...b&&{["toToken"]:b},...S&&{["fromAmount"]:S.toString()},...B&&{["autoConnect"]:B}},{replace:!0})}t.current=!1},[n.pathname,x,a,p,l,u]),Or(()=>{if(g==="success"){let A=e.get("fromBlockchain"),y=e.get("fromToken"),E=e.get("toBlockchain"),b=e.get("toToken"),S=e.get("fromAmount"),B=v.find($=>$.name===A),M=Pr(k,y,B||null),N=v.find($=>$.name===E),C=Pr(k,b,N||null);B&&(m(B),M&&c({token:M,meta:{blockchains:v,tokens:k}})),N&&(h(N),C&&f({token:C,meta:{blockchains:v,tokens:k}})),S&&w(S)}},[g]),null}i(Da,"UpdateUrl");function Fa({children:t,...e}){let o=Zm(),n=o?Ym:Jm,r=d().blockchains(),{canSwitchNetworkTo:s}=Xm();_a();let a=r.filter(Km);return jm({lastConnectedWallet:e.lastConnectedWallet,clearDisconnectedWallet:e.clearDisconnectedWallet,disconnectedWallet:e.disconnectedWallet,evmChains:a,canSwitchNetworkTo:s}),mn.createElement(mn.Fragment,null,mn.createElement(n,null,t),o&&mn.createElement(Da,null))}i(Fa,"AppRouter");import Ee from"react";import{useRoutes as dS}from"react-router-dom";import{i18n as On}from"@lingui/core";import{useManager as Cg}from"@rango-dev/queue-manager-react";import{Alert as Yp,Button as kg,css as bi,Divider as Tg,IconButton as Jp,SettingsIcon as wg,styled as Zp,Tooltip as xg,Typography as vg,WalletIcon as Ag}from"@rango-dev/ui";import ne,{useEffect as To,useLayoutEffect as bg,useRef as Eg,useState as Un}from"react";import{flushSync as Ig}from"react-dom";import{useNavigate as Wg}from"react-router-dom";import{i18n as Je}from"@lingui/core";import{Alert as si,BalanceErrors as Cf,Button as Ol,ChevronDownIcon as kf,ChevronLeftIcon as Tf,Divider as Vt,MessageBox as wf,Modal as Ul,Typography as Wn,WalletIcon as xf}from"@rango-dev/ui";import P,{useEffect as vf,useLayoutEffect as Af,useRef as bf,useState as Nt}from"react";import{useNavigate as Ef}from"react-router-dom";import{i18n as dn}from"@lingui/core";function fn(t){switch(t.type){case 0:return dn.t("Route has been updated.");case 3:return dn.t("Output amount changed to {newOutputAmount} ({percentageChange}% change).",{newOutputAmount:t.newOutputAmount,percentageChange:t.percentageChange});case 1:return dn.t("Route swappers has been updated.");case 2:return dn.t("Route internal coins has been updated.");default:return""}}i(fn,"getQuoteUpdateWarningMessage");import*as Gt from"@radix-ui/react-collapsible";import{Button as ed,css as Oa,darkTheme as zt,IconButton as td,keyframes as Ua,styled as ge,TextField as od}from"@rango-dev/ui";var so=300,nd=Ua({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),rd=Ua({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),qa=ge("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),za=ge("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),id=ge("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${zt} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$info100",[`.${zt} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$info100",[`.${zt} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Ga=ge(id,{alignSelf:"stretch",minHeight:"93px"}),Ha=ge(Gt.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit"}),Qa=ge("div",{padding:"$20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Va=ge(td,{position:"absolute",left:"$20"}),ja=ge("div",{paddingTop:"$20"}),Xa=Oa({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Ka=ge(Gt.Root,{backgroundColor:"$neutral200",borderRadius:"$sm",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Ya=ge(ed,{width:"100%",borderRadius:"$sm !important",padding:"$15 !important",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${zt} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color","&:hover":{$$color:"$colors$info100",[`.${zt} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$background:"$colors$info100",[`.${zt} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}}),Ja=ge("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"5px"}}),Za=Oa({paddingTop:"5px"}),Ra=ge("div",{transition:`all ${so}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),el=ge("div",{display:"flex"}),tl=ge(od,{backgroundColor:"$neutral100",padding:"$0 $15 $15 $15"}),gn=ge(Gt.Content,{backgroundColor:"$neutral100",overflow:"hidden",variants:{open:{true:{animation:`${nd} ${so}ms ease-out`},false:{animation:`${rd} ${so}ms ease-out`}}}}),ol=ge("div",{overflow:"visible",width:"100%"});import{i18n as ze}from"@lingui/core";import{Button as hf,Divider as ri,Image as yf,MessageBox as In,Modal as Ml,SelectableWallet as Sf,Typography as $l,WalletState as _l}from"@rango-dev/ui";import oe,{useEffect as Dl,useState as po}from"react";import{WalletState as qr}from"@rango-dev/ui";import{useWallets as sd}from"@rango-dev/wallets-react";import{KEPLR_COMPATIBLE_WALLETS as ad,WalletTypes as hn}from"@rango-dev/wallets-shared";import{useEffect as ld,useState as pd}from"react";var ud=Object.values(hn);function yn(t){let{config:e,chain:o,onBeforeConnect:n,onConnect:r}=t,{state:s,disconnect:a,getWalletInfo:l,connect:p}=sd(),{connectedWallets:u}=H(),m=d().blockchains(),c=Ma(e?.wallets,{walletConnectProjectId:e?.walletConnectProjectId})||ud,h=Fs(s,l,c,o),f=Qs(h),[x,w]=pd(""),g=i(y=>!u.find(E=>E.walletType===y&&E.chain===o),"isExperimentalChainNotAdded"),v=i(async y=>{let E=s(y);try{if(x&&w(""),E.connected)await a(y);else{let b=!!h.find(S=>S.state===qr.CONNECTED);if(!e?.multiWallets&&b)return;n?.(y),await p(y),r?.(y)}}catch(b){w("Error: "+b?.message)}},"handleClick"),k=i(()=>{let y=h?.filter(E=>E.state===qr.CONNECTING)||[];for(let E of y)a(E.type)},"disconnectConnectingWallets");ld(()=>()=>{k()},[]);let T=i(y=>y.filter(b=>b.state!=qr.NOT_INSTALLED&&![hn.DEFAULT,hn.WALLET_CONNECT_2].includes(b.type)&&l(b.type).supportedChains.filter(S=>S.type=="EVM").length>0).length==0,"shouldShowDefaultInjectedWallet"),A=i((y,E,b)=>Ho(b,E)&&g(y)&&!ad.includes(y)||y==hn.DEFAULT&&!T(h),"shouldExcludeWallet");return{list:f.filter(y=>!A(y.type,o??"",m)),error:x,handleClick:v}}i(yn,"useWalletList");import{i18n as El}from"@lingui/core";import{styled as Wl,Typography as lf,Wallet as pf,WalletState as uf}from"@rango-dev/ui";import Bt,{Fragment as cf,useState as Il}from"react";import{BottomLogo as Jd,Divider as Zd,Header as Rd}from"@rango-dev/ui";import he from"react";import{useNavigate as cd}from"react-router-dom";function St(){let t=cd();return()=>t(-1)}i(St,"useNavigateBack");import{createTheme as Qr,darkTheme as hd,lightTheme as yd}from"@rango-dev/ui";import{useEffect as il,useState as Sd}from"react";import{theme as fd,darkColors as gd}from"@rango-dev/ui";var nl=i((t,e)=>{t=t.replace(/^#/,""),t.length===3&&(t=t[0]+t[0]+t[1]+t[1]+t[2]+t[2]);let[s,a,l]=t.match(/.{2}/g);[s,a,l]=[parseInt(s,16)+e,parseInt(a,16)+e,parseInt(l,16)+e],s=Math.max(Math.min(255,s),0).toString(16),a=Math.max(Math.min(255,a),0).toString(16),l=Math.max(Math.min(255,l),0).toString(16);let p=(s.length<2?"0":"")+s,u=(a.length<2?"0":"")+a,m=(l.length<2?"0":"")+l;return`#${p}${u}${m}`},"colorShade"),Sn=i((t,e)=>{let a={[t]:e};for(let l=1;l<10;l++)l<5&&(a={...a,[t+l*100]:nl(e,(5-l)*25)}),l===5&&(a={...a,[t+l*100]:e}),l>5&&(a={...a,[t+l*100]:nl(e,-((l-5)*25))});return a},"generateRangeColors"),zr=i((t,e,o)=>{if(!o||!Object.entries(o).length)return{};let n=!1,r={...t};for(let s in o){let a=o[s];if(a&&a!==t[s])if(n=!0,s==="background"||s==="foreground")r={...r,[s]:a};else if(s==="neutral"&&e){let l=Sn(s,a);r={...r,[`${s}100`]:l[`${s}900`],[`${s}200`]:l[`${s}800`],[`${s}300`]:l[`${s}700`],[`${s}400`]:l[`${s}600`],[`${s}500`]:l[`${s}500`],[`${s}600`]:l[`${s}400`],[`${s}700`]:l[`${s}300`],[`${s}800`]:l[`${s}200`],[`${s}900`]:l[`${s}100`]}}else r={...r,...Sn(s,a)}}return n?r:{}},"generateColors");var rl=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),md=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=rl(o%52)+e;return rl(o%52)+e},"toAlphabeticName"),dd=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),Gr=i(t=>md(dd(5381,JSON.stringify(t))>>>0),"toHash");function Hr(t){let e=fd.colors,o=zr({...e,...gd},!0,t?.dark),n=zr(e,!1,t?.light),r=Object.keys(o).length>0,s=Object.keys(n).length>0,a,l;if(s){let p={colors:n};a={id:`${xr}-light-${Gr(p)}`,tokens:p}}if(r){let p={colors:o};l={id:`${xr}-dark-${Gr(p)}`,tokens:p}}return{light:a,dark:l}}i(Hr,"customizedThemeTokens");function Cn(t){let{colors:e,fontFamily:o=Js,borderRadius:n=Ks,secondaryBorderRadius:r=Ys,mode:s="auto"}=t,[a,l]=Sd("light"),{setTheme:p,theme:u}=d(),{dark:m,light:c}=Hr(e),h=Qr({radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),f=[h.className,yd.className],x=[h.className,hd.className];if(c){let g=Qr(c.id,c.tokens);f.push(g.className)}if(m){let g=Qr(m.id,m.tokens);x.push(g.className)}return il(()=>{let g=i(v=>{v.matches?l("dark"):l("light")},"switchThemeListener");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&l("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),il(()=>{s!=="auto"&&p(s)},[s]),{activeTheme:i(()=>{let g=f.join(" "),v=x.join(" ");return u==="auto"?a==="dark"?v:g:u==="dark"?v:g},"getActiveTheme")}}i(Cn,"useTheme");import{ChevronLeftIcon as Td}from"@rango-dev/ui";import pl from"react";import{darkTheme as Cd,IconButton as kd,styled as ao}from"@rango-dev/ui";var $e=ao(kd,{width:"$24",position:"relative",padding:"0",overflow:"unset"}),sl=ao("div",{position:"absolute",background:"$secondary500",[`.${Cd} &`]:{$$color:"$colors$secondary400"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Ht=ao("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),al=ao("div",{position:"absolute",backgroundColor:"$secondary500",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0"}),ll=ao("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}});function Vr(t){return pl.createElement($e,{variant:"ghost",size:"small",onClick:t.onClick},pl.createElement(Td,{color:"black",size:16}))}i(Vr,"BackButton");import{i18n as wd}from"@lingui/core";import{Button as xd,Typography as vd}from"@rango-dev/ui";import jr from"react";function Xr(t){return jr.createElement(Ht,null,jr.createElement(xd,{variant:"ghost",onClick:t.onClick,size:"xsmall"},jr.createElement(vd,{variant:"label",size:"medium",color:"error500"},wd.t("Cancel"))))}i(Xr,"CancelButton");import{i18n as Ad}from"@lingui/core";import{Tooltip as bd,WalletIcon as Ed}from"@rango-dev/ui";import kn from"react";function Kr(t){return kn.createElement(bd,{container:t.container,side:"top",content:Ad.t("Connect Wallet")},kn.createElement($e,{variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&kn.createElement(sl,null),kn.createElement(Ed,{size:18,color:"black"})))}i(Kr,"WalletButton");import{i18n as vn}from"@lingui/core";import{NotificationsIcon as Vd,Popover as jd,SettingsIcon as Xd,Tooltip as An,TransactionIcon as Kd}from"@rango-dev/ui";import ce from"react";import{i18n as $d}from"@lingui/core";import{ChainToken as gl,ChevronRightIcon as _d,ListItemButton as Dd,Typography as Fd}from"@rango-dev/ui";import qe from"react";import{useNavigate as Od}from"react-router-dom";import{create as Id}from"zustand";import{persist as Wd,subscribeWithSelector as Bd}from"zustand/middleware";var _e=ht(Id()(Wd(Bd((t,e)=>({notifications:[],setNotification:(o,n)=>{let r=n.steps[0],s=n.steps[n.steps.length-1],a={event:o,creationTime:Date.now(),read:!1,requestId:n.requestId,route:{from:{blockchain:r.fromBlockchain,tokenAddress:r.fromSymbolAddress,tokenSymbol:r.fromSymbol},to:{blockchain:s.toBlockchain,tokenSymbol:s.toSymbol,tokenAddress:s.toSymbolAddress}}},l=e().notifications.filter(p=>p.requestId!==n.requestId);t(()=>({notifications:[...l,a]}))},setAsRead:o=>{t(n=>({notifications:n.notifications.map(r=>r.requestId===o?{...r,read:!0}:r)}))},getUnreadNotifications:()=>e().notifications.filter(o=>!o.read)})),{name:"notification",skipHydration:!0})));import{styled as Tn}from"@rango-dev/ui";var ul=Tn("div",{padding:"$10",width:"350px",minHeight:"150px"}),cl=Tn("ul",{padding:0,margin:0,listStyle:"none",".to-chain-token":{transform:"translateX(-3px)"}}),ml=Tn("div",{display:"flex",padding:0,alignItems:"center",alignSelf:"stretch"}),dl=Tn("div",{display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column",padding:"$10",width:"100%",height:"150px"});import{i18n as Nd}from"@lingui/core";import{Divider as Ld,NoNotificationIcon as Pd,Typography as Md}from"@rango-dev/ui";import wn from"react";function fl(){return wn.createElement(dl,null,wn.createElement(Pd,{color:"secondary",size:26}),wn.createElement(Ld,{size:12}),wn.createElement(Md,{variant:"body",size:"medium",color:"neutral700"},Nd.t("You have no notification")))}i(fl,"NotificationNotFound");var Ud=4;function Yr(){let t=Od(),e=Ae.use.setSelectedSwap(),{getUnreadNotifications:o}=_e(),n=o(),r=d().blockchains(),s=d().tokens(),a=n.sort((p,u)=>u.creationTime-p.creationTime).slice(0,Ud),l=i(p=>{e(p),t(`${_.swaps}/${p}`)},"handleOnClick");return qe.createElement(ul,null,a.length?qe.createElement(cl,null,a.map(p=>{let u=s.find(f=>f.address===p.route.from.tokenAddress&&f.blockchain===p.route.from.blockchain&&f.symbol===p.route.from.tokenSymbol),m=r.find(f=>f.name===p.route.from.blockchain),c=s.find(f=>f.address===p.route.to.tokenAddress&&f.blockchain===p.route.to.blockchain&&f.symbol===p.route.to.tokenSymbol),h=r.find(f=>f.name===p.route.to.blockchain);return qe.createElement(Dd,{key:p.requestId,onClick:()=>l(p.requestId),title:qe.createElement(Fd,{variant:"body",size:"small",color:"$neutral700"},$d.t(p.event.message)),id:p.requestId,start:qe.createElement(ml,null,qe.createElement("div",{className:"from-chain-token"},qe.createElement(gl,{tokenImage:u?u.image:"",chainImage:m?m.logo:"",size:"small"})),qe.createElement("div",{className:"to-chain-token"},qe.createElement(gl,{tokenImage:c?c.image:"",chainImage:h?h.logo:"",size:"small"}))),end:qe.createElement(_d,{size:12,color:"gray"})})})):qe.createElement(fl,null))}i(Yr,"NotificationContent");import{RefreshProgressButton as qd}from"@rango-dev/ui";import Jr,{useEffect as zd,useState as hl}from"react";var Gd=1e3,yl=60,Hd=100;function xn({onClick:t}){let[e,o]=hl(0),[n,r]=hl(!1),s=i(p=>{document.hidden&&p&&a(p)},"handleVisibilityChange");zd(()=>{let p;return t?p=window.setInterval(()=>{o(u=>u+1),e===yl&&l()},Gd):a(p),document.addEventListener("visibilitychange",()=>s(p)),()=>{document.removeEventListener("visibilitychange",()=>s(p)),p&&clearInterval(p)}},[e,t]);let a=i(p=>{p&&clearInterval(p),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return Jr.createElement($e,{variant:"ghost",size:"small",onClick:l,disabled:!t},Jr.createElement(ll,{onTransitionEnd:()=>r(!1),isRefetched:n},Jr.createElement(qd,{size:24,color:t?"black":"gray",progress:e/yl*Hd})))}i(xn,"RefreshButton");import{Typography as Qd}from"@rango-dev/ui";import Sl from"react";function Cl(){let{getUnreadNotifications:t}=_e(),e=t().length;return e?Sl.createElement(al,null,Sl.createElement(Qd,{variant:"body",size:"xsmall",color:"$background"},e)):null}i(Cl,"UnreadNotificationsBadge");function Zr(t){let{layoutRef:e,onClickRefresh:o,onClickHistory:n,onClickSettings:r}=t,{config:{features:s}}=d(),a=Pe("notification",s);return ce.createElement(ce.Fragment,null,ce.createElement(An,{container:O(),side:"top",content:vn.t("Refresh")},ce.createElement(xn,{onClick:o})),!a&&ce.createElement(jd,{align:"center",collisionBoundary:e,collisionPadding:{right:20,left:20},container:O(),content:ce.createElement(Yr,null)},ce.createElement("div",null,ce.createElement(An,{container:O(),side:"top",content:vn.t("Notifications")},ce.createElement($e,{size:"small",variant:"ghost"},ce.createElement(Vd,{size:18,color:"black"}),ce.createElement(Cl,null))))),ce.createElement(An,{container:O(),side:"top",content:vn.t("Settings")},ce.createElement($e,{size:"small",variant:"ghost",onClick:r},ce.createElement(Xd,{size:18,color:"black"}))),ce.createElement(An,{container:O(),side:"top",content:vn.t("Transactions History")},ce.createElement($e,{size:"small",variant:"ghost",onClick:n},ce.createElement(Kd,{size:18,color:"black"}))))}i(Zr,"HomeButtons");import{darkTheme as Yd,styled as Rr}from"@rango-dev/ui";var kl=Rr("div",{position:"relative",display:"flex",flexDirection:"column",borderRadius:"$primary",overflow:"hidden !important",boxShadow:"15px 15px 15px 0px rgba(0, 0, 0, 0.05)",width:"100vw",minWidth:"300px",maxWidth:"390px",maxHeight:"700px",textAlign:"left",$$color:"$colors$neutral100",[`.${Yd} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",variants:{fixedHeight:{true:{height:"100vh"},false:{height:"auto !important"}}}}),Tl=Rr("div",{borderTopLeftRadius:"20px",borderTopRightRadius:"20px",display:"flex",flexDirection:"column",flex:1,padding:"$20 $20 $10 $20",backgroundColor:"$background",position:"relative",overflowY:"auto",overflowX:"hidden",variants:{noPadding:{true:{padding:"0"}}}}),wl=Rr("div",{backgroundColor:"$background","& .footer__content":{padding:"$0 $20"},"& .footer__logo":{padding:"$0 $20 $10 $20"}});function ef(t,e){let{children:o,header:n,footer:r,noPadding:s,hasLogo:a=!0,fixedHeight:l=!0}=t,p=H.use.connectedWallets(),{config:{features:u,theme:m}}=d(),{activeTheme:c}=Cn(m||{}),h=Pe("connectWalletButton",u),f=Ae.use.connectWalletsButtonDisabled(),x=St(),w=i(()=>{!f&&n.onWallet&&n.onWallet()},"onConnectWallet"),g=typeof n.hasBackButton>"u"||n.hasBackButton;return he.createElement(kl,{ref:e,fixedHeight:l,id:Te,className:c()},he.createElement(Rd,{prefix:he.createElement(he.Fragment,null,g&&he.createElement(Vr,{onClick:x})),title:n.title,suffix:he.createElement(he.Fragment,null,n.suffix,n.onWallet&&!h&&he.createElement(Kr,{container:O(),onClick:w,isConnected:!!p?.length}),n.onCancel&&he.createElement(Xr,{onClick:n.onCancel}))}),he.createElement(Tl,{noPadding:s},o),(a||r)&&he.createElement(wl,null,he.createElement("div",{className:"footer__content"},r),a&&he.createElement("div",{className:"footer__logo"},he.createElement(Zd,{size:12}),he.createElement(Jd,null))))}i(ef,"LayoutComponent");var K=he.forwardRef(ef);K.displayName="Layout";import{Divider as sf,Modal as af}from"@rango-dev/ui";import ti from"react";import{i18n as Qt}from"@lingui/core";import{Image as nf,MessageBox as ei,WalletState as rf}from"@rango-dev/ui";import Wt from"react";import{keyframes as tf,styled as bn}from"@rango-dev/ui";var Lv=bn("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),xl=bn("div",{position:"relative"}),of=tf({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),vl=bn("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${of} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Al=bn("div",{"& img":{borderRadius:"50%"}});function bl(t){let{state:e,image:o,error:n}=t;return e===rf.CONNECTED?Wt.createElement(ei,{type:"success",title:Qt.t("Wallet Connected"),description:Qt.t("Your wallet is connected, you can use it to swap.")}):n?Wt.createElement(ei,{type:"error",title:Qt.t("Failed to Connect"),description:n||Qt.t("Your wallet is not connected. Please try again.")}):Wt.createElement(ei,{type:"loading",title:Qt.t("Connecting to your wallet"),description:Qt.t("Click connect in your wallet popup."),icon:Wt.createElement(xl,null,Wt.createElement(Al,null,Wt.createElement(nf,{src:o,size:45})),Wt.createElement(vl,null))})}i(bl,"ModalContent");function lo(t){let{open:e,onClose:o,...n}=t;return ti.createElement(af,{open:e,onClose:o,container:document.getElementById(Te)||document.body},ti.createElement(bl,{...n}),ti.createElement(sf,{direction:"vertical",size:32}))}i(lo,"WalletModal");var mf=Wl("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),df=Wl("div",{textAlign:"center"}),En=3e3,oi=300;function Bl(){let{config:t,fetchStatus:e}=d(),[o,n]=Il(!1),[r,s]=Il(""),a=null,{list:l,handleClick:p,error:u}=yn({config:t,onBeforeConnect:f=>{a=setTimeout(()=>{n(!0),s(f)},oi)},onConnect:()=>{a&&clearTimeout(a),setTimeout(()=>{n(!1)},En)}}),m=l.find(f=>f.type===r),c=m?.image||"",h=m?.state||uf.NOT_INSTALLED;return Bt.createElement(K,{header:{title:El.t("Connect Wallets")}},Bt.createElement(df,null,Bt.createElement(lf,{variant:"title",size:"xmedium",align:"center"},El.t("Choose a wallet to connect.")),Bt.createElement(mf,null,l.map((f,x)=>{let w=`wallet-${x}-${f.type}`;return Bt.createElement(cf,{key:w},Bt.createElement(pf,{...f,container:O(),onClick:g=>{p(g)},isLoading:e==="loading"}))}),Bt.createElement(lo,{open:!!o,onClose:()=>n(!1),image:c,state:h,error:u}))))}i(Bl,"WalletsPage");import{keyframes as ff,styled as ni}from"@rango-dev/ui";var Nl=ni("div",{position:"relative"}),gf=ff({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Ll=ni("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${gf} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Pl=ni("div",{"& img":{borderRadius:"50%"}});function ii(t){let{chain:e,isSelected:o,selectWallet:n,limit:r,onShowMore:s}=t,{config:a}=d(),l=H.use.connectedWallets(),{blockchains:p}=d(),[u,m]=po(""),[c,h]=po(null),[f,x]=po(!1),[w,g]=po(null),{suggestAndConnect:v}=Fl(),k=null,{list:T,error:A,handleClick:y}=yn({config:a,chain:e,onBeforeConnect:C=>{k=setTimeout(()=>{m(C)},oi)},onConnect:()=>{k&&clearTimeout(k),setTimeout(()=>{m("")},En)}}),[E,b]=po(T),S=T.length,B=r&&S-r>0,M=i(async C=>{x(!1),g("in-progress");try{await v(C.walletType,C.chain),g("completed")}catch{g("rejected")}},"addExperimentalChain");Dl(()=>{b(C=>{let $=T.findIndex(L=>o(L.type,e));return B&&$>1?[T[$]].concat(T.filter((L,q)=>q!==$)):C.map(L=>T.find(q=>q.type===L.type)??L)})},[JSON.stringify(T)]);let N=document.getElementById(Te);return Dl(()=>{let C=null;return(w==="completed"||w==="rejected")&&(C=setTimeout(()=>g(null),En)),()=>{C&&clearTimeout(C)}},[w]),oe.createElement(oe.Fragment,null,E.slice(0,r).map(C=>{let $=Vs({connectedWallets:l,walletType:C.type,chain:e}),L=$?Vo($):"",q=Ho(p(),e),R=!l.find(Se=>Se.walletType===C.type&&Se.chain===e),ee=q&&R&&C.state===_l.CONNECTED,Q=ee?ze.t({id:"Add {chain} chain",values:{chain:e}}):L,re=i(()=>{C.state===_l.DISCONNECTED?y(C.type):ee?(h({walletType:C.type,chain:e,address:$??""}),x(!0)):n({walletType:C.type,chain:e,address:$??""})},"onClick"),ye=c?.chain?ca(c.chain,p()):void 0;return oe.createElement(oe.Fragment,null,oe.createElement(lo,{open:u===C.type,onClose:()=>m(""),image:C.image,state:C.state,error:A}),!!c&&oe.createElement(Ml,{open:!!c&&f,container:N,onClose:()=>{h(null)}},oe.createElement(In,{title:ze.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:ye}}),type:"warning",description:ze.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:ye}})},oe.createElement(ri,{size:18}),oe.createElement(ri,{size:32}),oe.createElement(hf,{onClick:M.bind(null,c),variant:"outlined",type:"primary",fullWidth:!0,size:"large"},ze.t("Confirm")))),w&&oe.createElement(Ml,{open:!!w,onClose:g.bind(null,null),container:N},w==="in-progress"&&oe.createElement(In,{type:"loading",title:ze.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:ye}}),description:ze.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:ye}}),icon:oe.createElement(Nl,null,oe.createElement(Pl,null,oe.createElement(yf,{src:C.image,size:45})),oe.createElement(Ll,null))}),w==="completed"&&oe.createElement(In,{type:"success",title:ze.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:ye}}),description:ze.t({id:"{blockchainDisplayName} is added to your wallet, you can use it to swap.",values:{blockchainDisplayName:ye}})}),w==="rejected"&&oe.createElement(In,{type:"error",title:ze.t("Request Rejected"),description:ze.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:ye}})}),oe.createElement(ri,{direction:"vertical",size:32})),oe.createElement(Sf,{key:C.type,description:Q,onClick:re,selected:o(C.type,e),...C}))}),B&&oe.createElement(Ga,{selected:!1,onClick:s},oe.createElement($l,{variant:"label",size:"medium"},ze.t("Show more wallets"),oe.createElement($l,{variant:"label",size:"medium",color:"$primary"},"\xA0+",S-(r??0)))))}i(ii,"WalletList");var If=2;function ql(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:s}=t,a=d().config,l=d().blockchains(),{quote:p,setSelectedWallets:u,quoteWalletsConfirmed:m,setQuoteWalletConfirmed:c,customDestination:h,setCustomDestination:f}=U(),{connectedWallets:x,selectWallets:w}=H(),[g,v]=Nt(""),[k,T]=Nt([]),[A,y]=Nt(""),[E,b]=Nt(null),[S,B]=Nt(h),[M,N]=Nt(!!h),C=bf(null),$=Jo(p),L=l.find(F=>F.name===p?.result?.swaps[p?.result?.swaps.length-1].to.blockchain),q=i(F=>!!p?.result?.swaps.find(z=>z.from.blockchain===F),"isWalletRequiredFor"),[R,ee]=Nt(x.filter(F=>F.selected&&$.includes(F.chain))),Q=l.find(F=>F.name===L?.name),re=i((F,z)=>!!R.find(X=>X.walletType===F&&X.chain===z&&X.selected&&(q(z)||!q(z)&&!S)),"isSelected"),ye=!!S&&M&&Q&&!Zo(Q,S),Se=i(()=>{N(!1),B(""),ee(F=>{let z=!1;return F.map(X=>!z&&X.chain===L?.name?(z=!0,{...X,selected:!0}):X)})},"resetCustomDestination"),Ce=i(F=>{if(g&&v(""),re(F.walletType,F.chain))return;let X=x.find(Ie=>Ie.walletType===F.walletType&&Ie.chain===F.chain);X&&(n(),F.chain===L?.name&&M&&(N(!1),B("")),ee(Ie=>Ie.filter(ue=>ue.chain!==F.chain).concat({...X,selected:!0})))},"onChange"),_t=i(()=>{let F=R.filter(z=>z.selected);w(F),u(F),f(S),c(!0),o()},"onConfirmBalance"),oo=i(async()=>{T([]),y(""),b(null);let F=x.filter(Ie=>R.find(ue=>ue.chain===Ie.chain&&ue.walletType===Ie.walletType)),z=await r?.({selectedWallets:F,customDestination:S}),X=z.warnings;X?.balance?.messages&&T(X.balance.messages),X?.quoteUpdate&&b(X.quoteUpdate),z.error&&y(da(z.error)),!z.error&&(!X?.balance?.messages.length||0>0)?_t():T(X?.balance?.messages??[])},"onConfirmWallets");vf(()=>{ee(F=>F.concat(x.filter(z=>!!!F.find(Ie=>Ie.chain===z.chain)&&z.selected&&$.includes(z.chain))))},[x.length]),Af(()=>{M&&C.current&&setTimeout(()=>{C?.current?.scrollIntoView({behavior:"smooth"})},so)},[M]);let dt=document.getElementById(Te),At=Ef();return P.createElement(Ul,{open:e,onClose:()=>{m||At("../",{replace:!0}),o()},dismissible:!g,container:dt,...!g&&{footer:P.createElement(el,null,P.createElement(Ol,{loading:s,disabled:ba(s,M,S,p,R,L),onClick:oo,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Je.t("Confirm")))},...g&&{containerStyle:{padding:"$0"},header:P.createElement(Qa,null,P.createElement(Va,{variant:"ghost",onClick:v.bind(null,"")},P.createElement(Tf,{size:16})),P.createElement(Wn,{variant:"headline",size:"small"},Je.t({id:"Your {blockchainName} wallets",values:{blockchainName:Ye(g,l)}})))},anchor:"center"},P.createElement(Ul,{open:k.length>0,onClose:T.bind(null,[]),container:dt},P.createElement(wf,{title:Je.t("Insufficient account balance"),type:"error",description:P.createElement(Cf,{messages:k??[]})},P.createElement(Ol,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:_t},Je.t("Proceed anyway")))),g&&P.createElement(ja,null,P.createElement("div",{className:Xa()},P.createElement(ii,{chain:g,isSelected:re,selectWallet:Ce,onShowMore:v.bind(null,g)}))),!g&&P.createElement(P.Fragment,null,A&&P.createElement(P.Fragment,null,P.createElement(si,{variant:"alarm",type:"error",title:Je.t(A)}),P.createElement(Vt,{size:12})),E&&P.createElement(P.Fragment,null,P.createElement(si,{variant:"alarm",type:"warning",title:fn(E)}),P.createElement(Vt,{size:12})),P.createElement(ol,null,$.map((F,z)=>{let X=l.find(de=>de.name===F),Ie=`wallet-${z}`,ue=z===$.length-1;return P.createElement("div",{key:Ie},P.createElement(qa,null,P.createElement(Wn,{variant:"title",size:"xmedium"},Je.t({id:"Your {blockchainName} wallets",values:{blockchainName:X?.shortName}})),P.createElement(Wn,{variant:"label",color:"$neutral700",size:"medium"},Je.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:X?.shortName}}))),P.createElement(Vt,{size:24}),P.createElement(za,null,P.createElement(ii,{chain:F,isSelected:re,selectWallet:Ce,limit:If,onShowMore:()=>v(X?.name??"")})),!ue&&P.createElement(Vt,{size:32}),ue&&a?.customDestination&&P.createElement(Ja,null,P.createElement(Ka,{ref:C,selected:M,open:M,onOpenChange:de=>{de?q(L?.name??"")||ee(_o=>_o.map(it=>it.chain===L?.name?{...it,selected:!1}:it)):Se()}},P.createElement(Ha,{onClick:()=>N(de=>!de)},P.createElement(Ya,{fullWidth:!0,variant:"default",suffix:P.createElement(Ra,{orientation:M?"up":"down"},P.createElement(kf,{size:10,color:"gray"}))},P.createElement("div",{className:"button__content"},P.createElement(xf,{size:18,color:"info"}),P.createElement(Vt,{size:4,direction:"horizontal"}),P.createElement(Wn,{variant:"label",size:"medium"},Je.t("Send to a different address"))))),P.createElement(gn,{open:M},P.createElement(P.Fragment,null,P.createElement(Vt,{size:4}),P.createElement(tl,{autoFocus:!0,placeholder:Je.t("Your destination address"),value:S,onChange:de=>{B(de.target.value)}})))),ye&&P.createElement("div",{className:Za()},P.createElement(si,{variant:"alarm",type:"error",title:Je.t({values:{destination:S},id:"Address {destination} doesn't match the blockchain address pattern."})}))))}))))}i(ql,"ConfirmWalletsModal");import{Divider as fg}from"@rango-dev/ui";import De from"react";import{i18n as di}from"@lingui/core";import{Alert as Lf,ChevronDownIcon as Pf,ChevronRightIcon as Mf,Divider as fi,Image as ap,InfoIcon as $f,QuoteCost as _f,StepDetails as Df,TokenAmount as Ff,Tooltip as Ln,Typography as mo}from"@rango-dev/ui";import lp from"bignumber.js";import W,{useLayoutEffect as Of,useRef as pp,useState as Uf}from"react";import{styled as uo}from"@rango-dev/ui";var zl=uo("div",{paddingBottom:"$10"}),ai=uo("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Gl=uo("div",{variants:{paddingTop:{true:{paddingTop:"$10"}}}}),Hl=uo("div",{paddingBottom:"$15"}),Ql=uo("div",{width:"100%",display:"flex"});import*as Bn from"@radix-ui/react-collapsible";import{css as li,darkTheme as Ze,Image as Vl,styled as Ge,Typography as Wf}from"@rango-dev/ui";var pi=300,jl=Ge(Bn.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",cursor:"default",variants:{recommended:{true:{$$color:"$colors$info300",[`.${Ze} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"},false:{$$color:"$colors$neutral400",[`.${Ze} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}}}}),Xl=li({padding:"$10 $15"}),Kl=Ge("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",cursor:"pointer",boxSizing:"border-box",position:"relative",variants:{recommended:{true:{$$color:"$colors$info100",[`.${Ze} &`]:{$$color:"$colors$secondary600"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}},false:{$$color:"$colors$neutral200",[`.${Ze} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{},false:{}}},compoundVariants:[{listItem:!0,recommended:!0,css:{"&:hover":{$$color:"$colors$secondary200",[`.${Ze} &`]:{$$color:"$colors$secondary700"},backgroundColor:"$$color"}}},{listItem:!0,recommended:!1,css:{"&:hover":{$$color:"$colors$neutral300",[`.${Ze} &`]:{$$color:"$colors$neutral400"},backgroundColor:"$$color"}}}]}),Yl=li({width:"100%",padding:"$15 $15 $10 $15",cursor:"default"}),Jl=li({paddingTop:"$10",display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${Ze} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Zl=Ge(Bn.Trigger,{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",height:"$36",padding:"$10 $15",boxSizing:"border-box",cursor:"pointer",border:"none",outline:"none",backgroundColor:"transparent",variants:{error:{true:{[`& ${Vl}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Vl}`]:{border:"1px transparent solid",borderRadius:"100%"}}},recommended:{true:{$$color:"$colors$info300",[`.${Ze} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"},false:{$$color:"$colors$neutral400",[`.${Ze} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}}},"& div:nth-child(1)":{display:"flex"}}),ui=Ge("div",{width:"18px",height:"18px",borderRadius:"100%",border:"1.5px transparent solid",display:"flex",justifyContent:"center",alignItems:"center",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),Rl=Ge(gn,{width:"100%",background:"inherit"}),ci=Ge("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${pi}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),GA=Ge("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),ep=Ge("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${Ze} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),tp=Ge("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),mi=Ge(Wf,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),op=Ge("div",{display:"flex",flexWrap:"wrap"});import{i18n as ip}from"@lingui/core";import{TokenAmount as sp}from"@rango-dev/ui";import Nn from"react";import{css as Bf,styled as Nf}from"@rango-dev/ui";var np=Nf("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),rp=Bf({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function co(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Nn.createElement(np,null,Nn.createElement(sp,{direction:"horizontal",label:ip.t("Swap input"),type:"input",tooltipContainer:O(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),Nn.createElement("div",{className:rp()}),Nn.createElement(sp,{direction:"horizontal",tooltipContainer:O(),label:ip.t("Estimated output"),type:"output",price:{value:o.price.value,usdValue:o.price.usdValue,realValue:o.price.realValue,realUsdValue:o.price.realUsdValue},token:{displayName:o.token.displayName,image:o.token.image},chain:{image:o.chain.image},percentageChange:n,warningLevel:r}))}i(co,"QuoteSummary");function gi(t){let{quote:e,input:o,output:n,error:r,warning:s,type:a,recommended:l=!0}=t,p=d().tokens(),u=d().blockchains(),m=d().swappers(),[c,h]=Uf(t.expanded),f=pp(null),x=pp(c),w=I(tn(e.result?.swaps??[],p),2,2),g=Fo(Oo(e.result?.swaps)),v=I(o.value,6,6),k=I(n.value,6,6),T=n.usdValue?I(n.usdValue,4,4):"",A=Me(o.usdValue,n.usdValue??null),y=I(A,2,2),E=st(A??0),S=i(N=>N.map((C,$)=>{let L,q=r?.type===3&&r.swap.swapperId===C.swapperId||r?.type===4&&r.recommendedSlippages?.has($),R=s?.type===2&&s.recommendedSlippages?.has($);return q?L="error":R&&(L="warning"),{swapper:{displayName:ma(C.swapperId,m),image:C.swapperLogo},from:{token:{displayName:C.from.symbol,image:C.from.logo},chain:{displayName:Ye(C.from.blockchain,u),image:C.from.blockchainLogo},price:{value:$===0?I(o.value,6,6):I(C.fromAmount,6,6),usdValue:I((C.from.usdPrice??0)*parseFloat(C.fromAmount),4,4),realValue:ie($===0?o.value:C.fromAmount),realUsdValue:ie(new lp(C.from.usdPrice??0).multipliedBy(C.fromAmount))}},to:{token:{displayName:C.to.symbol,image:C.to.logo},chain:{displayName:Ye(C.to.blockchain,u),image:C.to.blockchainLogo},price:{value:I(C.toAmount,6,6),usdValue:I((C.to.usdPrice??0)*parseFloat(C.toAmount),4,4),realValue:ie(C.toAmount),realUsdValue:ie(new lp(C.to.usdPrice??0).multipliedBy(C.toAmount))}},state:L,alerts:q||R?W.createElement(Hl,null,W.createElement(Lf,{type:q?"error":"warning",title:r?.type===3?r?.recommendation:di.t("Slippage Error:"),footer:W.createElement(Ql,null,r?.type===3&&W.createElement(W.Fragment,null,W.createElement(mo,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),W.createElement(fi,{direction:"horizontal",size:8}),W.createElement(mo,{size:"xsmall",variant:"body",color:"neutral900"},"|"),W.createElement(fi,{direction:"horizontal",size:8}),W.createElement(mo,{size:"xsmall",variant:"body",color:"neutral900"},di.t({id:"Yours: {amount} {symbol}",values:{amount:I(C.fromAmount,6,6),symbol:C?.from.symbol}}))),(r?.type===4||s?.type===2)&&W.createElement(mo,{size:"xsmall",variant:"body",color:"neutral900"},di.t({id:"Minimum required slippage is {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get($)},...s?.type===2&&{minRequiredSlippage:s.recommendedSlippages?.get($)}}})))})):void 0}}),"getQuoteSteps")(e.result?.swaps??[]),B=S.length,M=O();return Of(()=>{c&&!x.current&&f.current&&setTimeout(()=>{f?.current?.scrollIntoView({behavior:"smooth"})},pi),x.current=c},[c,x]),W.createElement(W.Fragment,null,W.createElement(Kl,{recommended:l,listItem:a==="list-item",basic:a==="basic"},W.createElement("div",{className:Yl()},W.createElement(_f,{fee:w,time:g,steps:B}),a==="basic"&&W.createElement("div",{className:Jl()},W.createElement(tp,null,W.createElement($f,{size:12,color:"gray"})),W.createElement(op,null,W.createElement(mi,{size:"small",variant:"body"},`${v} ${S[0].from.token.displayName} = `),W.createElement(Ln,{content:ie(n.value),container:M,open:n.value?void 0:!1},W.createElement(mi,{size:"small",variant:"body"},"\xA0",`${k} ${S[S.length-1].to.token.displayName}`))),W.createElement(Ln,{content:ie(n.usdValue),container:M,style:{display:"flex"}},W.createElement(mo,{color:"$neutral600",ml:2,size:"xsmall",variant:"body"},`($${T})`))),a==="list-item"&&W.createElement(Ff,{type:"output",direction:"vertical",tooltipContainer:M,price:{value:k,usdValue:T,realValue:ie(n.value),realUsdValue:ie(n.usdValue)},token:{displayName:S[B-1].to.token.displayName,image:S[B-1].to.token.image},chain:{image:S[B-1].to.chain.image},percentageChange:y,warningLevel:E}),a==="swap-preview"&&W.createElement(W.Fragment,null,W.createElement(co,{from:S[0].from,to:S[B-1].to,percentageChange:y,warningLevel:E}),W.createElement(fi,{size:4}))),W.createElement(jl,{recommended:l,open:c,onOpenChange:h},W.createElement(Zl,{ref:N=>f.current=N,recommended:l,onClick:()=>h(N=>!N)},W.createElement("div",null,S.map((N,C)=>{let $=`item-${C}`,L=W.createElement(ci,null,W.createElement(Mf,{size:12,color:"black",...N.state&&{color:N.state==="error"?"error":"warning"}}));return W.createElement(W.Fragment,{key:$},W.createElement(Ln,{container:M,side:"bottom",sideOffset:4,content:N.from.chain.displayName},W.createElement(ui,{state:N.state||S[C-1]?.state},W.createElement(ap,{src:N.from.chain.image,size:16}))),C===B-1&&W.createElement(W.Fragment,null,L,W.createElement(Ln,{container:M,side:"bottom",sideOffset:4,content:N.to.chain.displayName},W.createElement(ui,{state:N.state},W.createElement(ap,{src:N.to.chain.image,size:16})))),C!==B-1&&W.createElement(W.Fragment,null,L))})),W.createElement(ci,{orientation:c?"up":"down"},W.createElement(Pf,{size:12,color:"black"}))),W.createElement(Rl,{open:c},W.createElement(ep,null),W.createElement("div",{className:Xl()},S.map((N,C)=>{let $=`item-${C}`;return W.createElement(Df,{type:"quote-details",key:$,step:N,hasSeparator:C!==S.length-1,state:N.state,tooltipContainer:M})}))))))}i(gi,"Quote");import{Divider as Gf,Skeleton as Hf}from"@rango-dev/ui";import at from"react";import{darkTheme as qf,styled as Pn}from"@rango-dev/ui";var up=Pn("div",{$$color:"$colors$neutral100",[`.${qf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15 ",variants:{rounded:{true:{borderRadius:"$xm"}}}}),cp=Pn("div",{paddingTop:"$2"}),mp=Pn("div",{paddingLeft:"$8"}),dp=Pn("div",{borderLeft:"1px dashed black",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as vp,Divider as Lt,Skeleton as et}from"@rango-dev/ui";import G from"react";import{styled as Re}from"@rango-dev/ui";var fp=Re("div",{display:"flex",justifyContent:"space-between",alignItems:"center",height:"22px"}),gp=Re("div",{display:"flex"}),hp=Re("div",{padding:"$15 $0 14px $0"}),yp=Re("div",{padding:"$6 $0 $15 $0",display:"flex",flexDirection:"column"}),Sp=Re("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$5"}),Cp=Re("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),kp=Re("div",{height:"$28",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Tp=Re("div",{width:"65%",display:"flex",justifyContent:"start"}),wp=Re("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),xp=Re("div",{padding:"$15 $0 $15 $0"});function ho(t){let{type:e,tag:o=!1}=t,n=G.createElement(Cp,null,G.createElement(Tp,null,G.createElement(vp,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),G.createElement(Lt,{size:8,direction:"horizontal"}),G.createElement(wp,null,G.createElement(et,{height:10,width:60,variant:"rounded"}),G.createElement(Lt,{size:4}),G.createElement(et,{height:15,variant:"rounded"}))),G.createElement(et,{height:12,width:64,variant:"rounded"}));return G.createElement("div",null,G.createElement(fp,null,G.createElement(gp,null,G.createElement(et,{width:60,height:10,variant:"rounded"}),G.createElement(Lt,{size:4,direction:"horizontal"}),G.createElement(et,{width:60,height:10,variant:"rounded"}),G.createElement(Lt,{size:4,direction:"horizontal"}),G.createElement(et,{width:60,height:10,variant:"rounded"})),o&&G.createElement(et,{height:22,width:100,variant:"rounded"})),e==="basic"&&G.createElement(hp,null,G.createElement(et,{height:15,width:148,variant:"rounded"})),e==="list-item"&&G.createElement(yp,null,G.createElement(Sp,null,G.createElement(vp,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),G.createElement(Lt,{direction:"horizontal",size:4}),G.createElement(et,{height:15,width:150,variant:"rounded"})),G.createElement(Lt,{size:4}),G.createElement(et,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&G.createElement(G.Fragment,null,G.createElement(Lt,{size:4}),G.createElement(xp,null,n,G.createElement(kp,null),n)))}i(ho,"QuoteSummarySkeleton");import{ChainToken as Wp,Divider as yi,NextIcon as zf,Skeleton as Mn}from"@rango-dev/ui";import ae from"react";import{styled as yo}from"@rango-dev/ui";var Ap=yo("div",{display:"flex",alignItems:"start"}),bp=yo("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center"}),hi=yo("div",{display:"flex",alignItems:"center",flexGrow:1}),Ep=yo("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Ip=yo("div",{display:"flex",alignItems:"center"});function tt(t){let{separator:e=!0}=t;return ae.createElement(ae.Fragment,null,ae.createElement(Ip,null,ae.createElement(Mn,{height:22,width:22,variant:"circular"}),ae.createElement(yi,{direction:"horizontal",size:8}),ae.createElement(Mn,{height:15,width:148,variant:"rounded"})),ae.createElement(Ap,null,ae.createElement(dp,{hideSeparator:!e}),ae.createElement(bp,null,ae.createElement(hi,null,ae.createElement(Wp,{size:"small",loading:!0,chainImage:"",tokenImage:""}),ae.createElement(yi,{direction:"horizontal",size:8}),ae.createElement(Mn,{height:12,variant:"rounded"})),ae.createElement(Ep,null,ae.createElement(zf,{color:"gray",size:16})),ae.createElement(hi,null,ae.createElement(Wp,{size:"small",loading:!0,chainImage:"",tokenImage:""}),ae.createElement(yi,{direction:"horizontal",size:8}),ae.createElement(Mn,{height:12,variant:"rounded"})))))}i(tt,"StepSkeleton");function Si(t){let{type:e,expanded:o,tag:n=!1}=t;return at.createElement(up,{rounded:e!=="basic"},at.createElement(ho,{type:e,tag:n}),at.createElement(cp,null,at.createElement(Hf,{height:15,variant:"rounded"})),o&&at.createElement(mp,null,at.createElement(Gf,{size:20}),at.createElement(tt,null),at.createElement(tt,null),at.createElement(tt,{separator:!1})))}i(Si,"QuoteSkeleton");import{i18n as ug}from"@lingui/core";import{Alert as cg,Button as mg,InfoIcon as dg}from"@rango-dev/ui";import Be from"react";import{Alert as Qf,Button as Vf,Divider as $p,NoRouteIcon as jf,RefreshIcon as Xf,Typography as _p}from"@rango-dev/ui";import He from"react";import{i18n as Bp}from"@lingui/core";function Np(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:V().genericServerError,action:{onClick:n,title:Bp.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:V().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Bp.t("Reset")}},description:V().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:V().noResultError.description}}i(Np,"makeInfo");import{styled as Ci}from"@rango-dev/ui";var Lp=Ci("div",{minHeight:"162px",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"}),Pp=Ci("div",{width:"100%"}),Mp=Ci("div",{padding:"$6 $0"});function ki(t){let{fetch:e,error:o}=t,n=d().disabledLiquiditySources,r=d().toggleAllLiquiditySources,s=d().swappers(),a=Np(o,n,()=>r(s,!0),e);return He.createElement(Lp,null,He.createElement(jf,{size:24,color:"gray"}),He.createElement($p,{size:4}),He.createElement(_p,{variant:"title",size:"small"},V().noResultError.title),!!a.description&&He.createElement(_p,{variant:"body",size:"small",align:"center",color:"neutral700"},a.description),He.createElement($p,{size:4}),!!a.alert&&He.createElement(Pp,null,He.createElement(Qf,{type:a.alert.type,title:a.alert.text,action:a.alert.action&&He.createElement(Vf,{size:"xsmall",type:a.alert.type,prefix:He.createElement(Mp,null,He.createElement(Xf,{size:8})),onClick:a.alert.action.onClick},a.alert.action.title),variant:"alarm"})))}i(ki,"NoResult");import{i18n as So}from"@lingui/core";import{Button as Yf,Divider as zp,MessageBox as Jf,Modal as Zf,Typography as Rf,WarningIcon as eg}from"@rango-dev/ui";import ot from"react";import{Typography as Up}from"@rango-dev/ui";import wi from"react";import{darkTheme as Kf,styled as $n}from"@rango-dev/ui";var Dp=$n("div",{width:"100%",paddingTop:"$10"}),Ti=$n("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:10,width:"100%"}),Fp=$n("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${Kf} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Op=$n("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function qp(t){let{title:e,value:o,valueColor:n}=t;return wi.createElement(Fp,null,wi.createElement(Up,{size:"medium",variant:"label",className:"_title"},e),wi.createElement(Up,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(qp,"QuoteErrorsModalItem");function Gp(t){let{open:e,onClose:o,onConfirm:n,warning:r}=t,s=r.warningLevel==="high"?"error":"warning",a=[{title:So.t("Swapping"),value:I(r.inputUsdValue,4,4)},{title:So.t("Gas cost"),value:I(r.totalFee,2,2)},{title:So.t("Receiving"),value:I(r.outputUsdValue,4,4)},{title:So.t("Price impact"),value:I(r.priceImpact,2,2),valueColor:`${s}500`}];return ot.createElement(Zf,{open:e,onClose:o,container:O()},ot.createElement(Jf,{type:s,title:V().highValueLossError.impactTitle,description:V().highValueLossError.description}),ot.createElement(Ti,null,ot.createElement(zp,{size:20}),ot.createElement(Rf,{size:"small",variant:"title"},So.t("Details")),ot.createElement(Ti,null,a.map((l,p)=>ot.createElement(qp,{key:p,...l})))),ot.createElement(zp,{size:32}),ot.createElement(Yf,{type:"primary",size:"large",prefix:ot.createElement(eg,null),fullWidth:!0,onClick:n},V().highValueLossError.confirmMessage))}i(Gp,"HighValueLossWarningModal");import{i18n as xi}from"@lingui/core";function Hp(t,e){let o={alertType:"warning",title:"",action:"show-info"};return t?(t.type===0&&(st(t.priceImpact)==="high"&&(o.alertType="error"),o.action=null,o.title=V().highValueLossError.title),t.type===1&&(o.title=V().unknownPriceError.title),t.type===2&&(o.title=xi.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-settings"),t.type===3&&(o.title=xi.t("Caution, your slippage is high.")),o):e?(o.alertType="error",e.type===3&&(o.title=e.recommendation,o.action="show-info"),e.type===4&&(o.title=xi.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o):null}i(Hp,"makeAlerts");import{i18n as jt}from"@lingui/core";import{Button as Qp,Divider as Vp,MessageBox as tg,Modal as og,Typography as ng}from"@rango-dev/ui";import Pt from"react";import{useNavigate as rg}from"react-router-dom";function jp(t){let{customSlippage:e,slippage:o}=d(),{open:n,onClose:r,onConfirm:s,warning:a}=t,l=rg(),p=e??o;return Pt.createElement(og,{anchor:"bottom",open:n,prefix:Pt.createElement(Qp,{size:"small",variant:"ghost",onClick:()=>l("../"+_.settings)},Pt.createElement(ng,{variant:"label",size:"medium",color:"$neutral900"},jt.t("Change settings"))),container:O(),onClose:r},Pt.createElement(tg,{type:"warning",title:a.type===3?jt.t("High slippage"):jt.t("Low slippage"),description:a.type===3?jt.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:p}}):jt.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:a.minRequiredSlippage}})},Pt.createElement(Vp,{size:18}),Pt.createElement(Vp,{size:32}),Pt.createElement(Qp,{size:"large",type:"primary",variant:"contained",fullWidth:!0,onClick:s},jt.t("Confirm anyway"))))}i(jp,"SlippageWarningModal");import{Button as ig,Divider as sg,MessageBox as ag,Modal as lg,WarningIcon as pg}from"@rango-dev/ui";import Co from"react";function Xp(t){let{open:e,onClose:o,onConfirm:n}=t;return Co.createElement(lg,{open:e,onClose:o,container:O()},Co.createElement(ag,{type:"warning",title:V().unknownPriceError.impactTitle,description:V().unknownPriceError.description}),Co.createElement(sg,{size:32}),Co.createElement(ig,{type:"primary",size:"large",prefix:Co.createElement(pg,null),fullWidth:!0,onClick:n},V().unknownPriceError.confirmMessage))}i(Xp,"UnknownPriceWarningModal");function vi(t){let{warning:e,error:o,refetchQuote:n,showWarningModal:r,onOpenWarningModal:s,onCloseWarningModal:a,onConfirmWarningModal:l,onChangeSettings:p}=t,u={open:r,onClose:a,onConfirm:l},m=o?.type===0||o?.type===1,c=Hp(e,o?.type===3||o?.type===4?o:null);return Be.createElement(Be.Fragment,null,m&&Be.createElement(ki,{error:o,fetch:n}),!!c&&Be.createElement(Dp,null,Be.createElement(cg,{title:c.title,type:c.alertType,variant:"alarm",...c.action==="show-info"&&{action:Be.createElement(Op,{onClick:s},Be.createElement(dg,{size:12,color:"gray"}))},...c.action==="change-settings"&&{action:Be.createElement(mg,{size:"xxsmall",type:c.alertType,onClick:p},ug.t("Change"))}})),e&&Be.createElement(Be.Fragment,null,e.type===0&&Be.createElement(Gp,{...u,warning:e}),(e.type===3||e.type===2)&&Be.createElement(jp,{...u,warning:e}),e.type===1&&Be.createElement(Xp,{...u,warning:e})))}i(vi,"QuoteWarningsAndErrors");function ko(t){let{quote:e,type:o,loading:n,error:r,warning:s,refetchQuote:a,showWarningModal:l,onOpenWarningModal:p,onCloseWarningModal:u,onConfirmWarningModal:m,onChangeSettings:c,expanded:h=!1,alertPosition:f="bottom"}=t,{inputAmount:x,inputUsdValue:w,outputUsdValue:g,outputAmount:v}=U(),T=!(r&&(r.type===0||r.type===1))&&e&&e.result&&!n,A=(s||r)&&De.createElement(vi,{warning:s,error:r,loading:n,refetchQuote:a,showWarningModal:l,onOpenWarningModal:p,onCloseWarningModal:u,onConfirmWarningModal:m,onChangeSettings:c});return De.createElement(De.Fragment,null,n&&De.createElement(ai,null,De.createElement(Gl,{paddingTop:f==="top"},De.createElement(Si,{type:o,expanded:h}))),f==="top"&&De.createElement(zl,null,A),T?De.createElement(ai,null,De.createElement(gi,{quote:e,error:r,warning:s,type:o,expanded:h,recommended:!0,input:{value:x,usdValue:w?.toString()??""},output:{value:v?.toString()??"",usdValue:g?.toString()??""}})):null,f==="bottom"&&De.createElement(De.Fragment,null,!s&&!r&&De.createElement(fg,{size:16}),A))}i(ko,"QuoteInfo");import{calculatePendingSwap as yg}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Sg}from"react";import{useRef as gg,useState as hg}from"react";function _n(){let[t,e]=hg(!1),o=gg(null),n=i(()=>o.current?.abort(),"cancel");return{fetch:i(async s=>{n(),o.current=new AbortController,e(!0);try{let a=await Ft().getBestRoute(s,{signal:o.current.signal});return o.current=null,a}catch(a){throw a}finally{e(!1)}},"fetch"),loading:t,cancelFetch:n}}i(_n,"useFetchQuote");function Dn(t){if(!t.result)throw new Error(V().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});if(Wr(t)){let{swap:n,recommendation:r,fromAmountRangeError:s}=Br(t);throw new Error("bridge limit error",{cause:{type:3,swap:n,recommendation:r,fromAmountRangeError:s}})}let o=Lr(t);if(o){let n=on(t);throw new Error("",{cause:{type:4,recommendedSlippages:o,minRequiredSlippage:n}})}return t}i(Dn,"throwErrorIfResponseIsNotValid");function Kp(t,e,o){let n=!1;t&&(n=Ba(t,e));let r={quote:null,quoteUpdate:null,balance:null},s=rn(e,{fromToken:o.fromToken,toToken:o.toToken,tokens:o.meta.tokens,userSlippage:o.userSlippage});s&&(r.quote=s),t&&n&&(ka(t,e)?r.quoteUpdate={type:3,newOutputAmount:I(qt(e)),percentageChange:I(Me(qt(t)??"",qt(e)??""),null,2)}:Mr(t,e)?r.quoteUpdate={type:0}:$r(t,e)?r.quoteUpdate={type:1}:_r(t,e)&&(r.quoteUpdate={type:2}));let a=Ta(e,o.selectedWallets,o.meta.blockchains);return a.length===0||(r.balance={messages:a}),r}i(Kp,"generateWarnings");function Fn(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:{swap:null,error:{type:1},warnings:null}}i(Fn,"handleQuoteErrors");function Ai(){let{fromToken:t,toToken:e,inputAmount:o,setQuote:n,quote:r,customDestination:s,setQuoteWarningsConfirmed:a}=U(),{slippage:l,customSlippage:p,affiliatePercent:u,affiliateRef:m,affiliateWallets:c,disabledLiquiditySources:h}=d(),{connectedWallets:f}=H(),x=d().blockchains(),w=d().tokens(),{features:g}=d().config,{enableNewLiquiditySources:v}=d().config,k=p||l,{fetch:T,cancelFetch:A,loading:y}=_n();return Sg(()=>A,[]),{loading:y,fetch:i(async b=>{let S=b.selectedWallets,B=b?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let M=nn({fromToken:t,toToken:e,inputAmount:o,wallets:f,selectedWallets:S,excludeLiquiditySources:v,disabledLiquiditySources:h,slippage:k,affiliateRef:m,affiliatePercent:u,affiliateWallets:c,initialQuote:r??void 0,destination:B});Yo("experimentalRoute",g)&&(M.experimental=!0);let N;try{N=await T(M).then(q=>Dn(q)),n(N)}catch(q){return Fn(q)}let C={slippage:k.toString(),disabledSwappersGroups:h},$=yg(o.toString(),N,Sa(S),C,!1,{blockchains:x,tokens:w}),L=Kp(r??void 0,N,{fromToken:t,toToken:e,meta:{blockchains:x,tokens:w},selectedWallets:S,userSlippage:k});return L.quoteUpdate&&a(!1),{quote:N,swap:$,error:null,warnings:L}},"fetch"),cancelFetch:A}}i(Ai,"useConfirmSwap");var Bg=Zp("div",{position:"relative",width:"100%","& .quote-update__alert":{paddingTop:"$10"}}),Ng=Zp("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Jp}`]:{width:"$48",height:"$48"}}),Lg=bi({flexGrow:1,paddingRight:"$10"}),Pg=bi({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Mg=bi({display:"flex",justifyContent:"space-between",alignItems:"center"});function Rp(){let{quote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,setQuoteWalletConfirmed:r,customDestination:s,quoteWarningsConfirmed:a}=U(),l=Wg(),[p,u]=Un(""),{connectedWallets:m}=H(),c=!n,[h,f]=Un(!1),x=Ae.use.setSelectedSwap(),w=d().disabledLiquiditySources,g=Eg(w),{manager:v}=Cg(),{fetch:k,loading:T,cancelFetch:A}=Ai(),[y,E]=Un({swap:null,error:null,warnings:null}),[b,S]=Un(!1),B=i(async({selectedWallets:L,customDestination:q})=>{let R=await k?.({selectedWallets:L,customDestination:q});return E(R),R},"onConfirmSwap"),M=i(async()=>{if(y.swap&&n)try{await v?.create("swap",{swapDetails:y.swap},{id:y.swap.requestId}),x(y.swap.requestId);let L=`../${_.swaps}/${y.swap.requestId}`;l(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){u("Error: "+L?.message)}},"addNewSwap"),N=i(async()=>{await M()},"onConfirm"),C=i(async()=>{y?.warnings?.quote&&!a?S(!0):await N()},"onStartConfirmSwap"),$=i(async()=>{E({error:null,swap:null,warnings:null}),k({selectedWallets:o,customDestination:s}).then(L=>{E(L)}).catch(L=>console.error(L))},"onRefresh");return To(()=>{!!g.current.length&&!w.length&&$(),g.current=w},[w.length]),To(()=>{c&&A()},[c]),To(()=>{c&&f(c)},[c]),To(()=>{c||k({selectedWallets:o,customDestination:s}).then(L=>E(L)).catch(L=>console.error(L))},[]),To(()=>{let L=y.warnings?.quote?.type&&Object.values(ft).includes(y.warnings?.quote?.type),q=o.length<1||!o.every(ee=>m.find(Q=>ee.address===Q.address&&ee.walletType===Q.walletType&&ee.chain===Q.chain)),R=!1;if(L){let ee=Jo(t),Q=t?.result?.swaps[t.result.swaps.length-1].to.blockchain;!!t?.result?.swaps.find(Se=>Se.from.blockchain===Q)||(ee=ee.slice(-ee.length,ee.length-1)),ee.every(Se=>o.find(Ce=>Ce.chain===Se))||(R=!0)}t&&(q||R)&&(queueMicrotask(()=>Ig(f.bind(null,!0))),r(!1))},[y.warnings?.quote,o.length,m.length]),bg(()=>{t||l("../")},[]),ne.createElement(K,{header:{title:On.t("Confirm Swap"),onWallet:()=>{let L=`../${_.wallets}`;l(L)},suffix:ne.createElement(xg,{container:O(),side:"bottom",content:On.t("Settings")},ne.createElement($e,{size:"small",variant:"ghost",onClick:()=>l("../"+_.settings)},ne.createElement(wg,{size:18,color:"black"})))},footer:ne.createElement(Ng,null,ne.createElement("div",{className:Lg()},ne.createElement(kg,{variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:T,disabled:!!y.error,onClick:C},On.t("Start Swap"))),ne.createElement(Jp,{variant:"contained",type:"primary",size:"large",loading:T,onClick:f.bind(null,!0)},ne.createElement(Ag,{size:24})))},h&&ne.createElement(ql,{open:h,onClose:()=>f(!1),onCancel:A,loading:T,onCheckBalance:B}),ne.createElement(Bg,null,ne.createElement("div",{className:Mg()},ne.createElement(vg,{variant:"title",size:"small"},On.t("You get")),ne.createElement("div",{className:Pg()},ne.createElement(xn,{onClick:!T&&!h&&!b?$:void 0}))),p&&ne.createElement(ne.Fragment,null,ne.createElement(Yp,{type:"error",variant:"alarm",title:p}),ne.createElement(Tg,{size:12})),y.warnings?.quoteUpdate&&ne.createElement("div",{className:"quote-update__alert"},ne.createElement(Yp,{variant:"alarm",type:"warning",title:y.warnings.quoteUpdate&&fn(y.warnings.quoteUpdate)})),ne.createElement(ko,{quote:t,type:"swap-preview",expanded:!0,alertPosition:"top",error:y.error,loading:T,warning:y.warnings?.quote??null,refetchQuote:$,showWarningModal:b,onOpenWarningModal:()=>S(!0),onCloseWarningModal:()=>S(!1),onConfirmWarningModal:async()=>{S(!1),await M()},onChangeSettings:()=>l("../"+_.settings)})))}i(Rp,"ConfirmSwapPage");import{i18n as Hn}from"@lingui/core";import{useManager as zg}from"@rango-dev/queue-manager-react";import{Divider as Gg,NotFound as Hg,styled as au}from"@rango-dev/ui";import Tt,{useState as Qg}from"react";import{useNavigate as Vg}from"react-router-dom";import{CloseIcon as _g,IconButton as Dg,SearchIcon as Fg,TextField as Og}from"@rango-dev/ui";import wo from"react";import{styled as $g}from"@rango-dev/ui";var eu=$g("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function lt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:s,value:a,setValue:l,...p}=t;return wo.createElement(Og,{prefix:wo.createElement(eu,null,wo.createElement(Fg,{color:"black"})),suffix:!!a.length&&wo.createElement(Dg,{variant:"ghost",onClick:()=>l?.(""),size:"small"},wo.createElement(_g,{color:"gray",size:10})),fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center"},size:r,value:a,onChange:s,...p})}i(lt,"SearchInput");import{i18n as Bi}from"@lingui/core";import{Divider as ou,SwapListItem as nu,Typography as ru}from"@rango-dev/ui";import te from"react";import{css as Ug,darkTheme as qg,styled as qn}from"@rango-dev/ui";var zn=Ug(),Ei=qn("div",{width:"100%",display:"flex",flexDirection:"column",[`& .${zn}`]:{$$color:"$colors$neutral600",[`.${qg} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ii=qn("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Wi=qn("div",{gap:"$10",display:"flex",flexDirection:"column"}),tu=qn("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});function Ni(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,s=n?n(e):[{title:"History",swaps:e}];if(r){let a=[{},{}],l=[{title:Bi.t("Today"),swaps:a},{title:Bi.t("This month"),swaps:a}];return te.createElement(te.Fragment,null,l.map(p=>te.createElement(te.Fragment,{key:p.title},te.createElement(Ei,null,te.createElement(Ii,null,te.createElement(ru,{variant:"label",size:"medium",className:zn()},p.title)),te.createElement(ou,{size:4}),te.createElement(Wi,null,p.swaps.map((u,m)=>{let c=m+p.title;return te.createElement(te.Fragment,{key:c},te.createElement(nu,{isLoading:!0}))}))))))}return te.createElement(te.Fragment,null,s.filter(a=>a.swaps.length>0).map(a=>te.createElement(te.Fragment,{key:a.title},te.createElement(Ei,null,te.createElement(Ii,null,te.createElement(ru,{variant:"label",size:"medium",className:zn()},a.title)),te.createElement(ou,{size:4}),te.createElement(Wi,null,a.swaps.map(l=>{let p=l.steps[0],u=l.steps[l.steps.length-1];return te.createElement(te.Fragment,{key:l.requestId},te.createElement(nu,{requestId:l.requestId,creationTime:l.creationTime,status:l.status,onClick:o,tooltipContainer:O(),onlyShowTime:a.title===Bi.t("Today"),swapTokenData:{from:{token:{image:p.fromLogo,displayName:p.fromSymbol},blockchain:{image:p.fromBlockchainLogo||""},amount:I(l.inputAmount,6,6),realAmount:ie(l.inputAmount)},to:{token:{image:u.toLogo,displayName:u.toSymbol},blockchain:{image:u.toBlockchainLogo||""},amount:I(u.outputAmount||u.expectedOutputAmountHumanReadable||"",6,6),realAmount:ie(u.outputAmount||u.expectedOutputAmountHumanReadable)}}}))}))))))}i(Ni,"SwapsGroup");import{i18n as Gn}from"@lingui/core";import iu from"dayjs";var su=i(t=>{let e=new Map([["today",{title:Gn.t("Today"),swaps:[]}],["week",{title:Gn.t("This week"),swaps:[]}],["month",{title:Gn.t("This month"),swaps:[]}],["year",{title:Gn.t("This year"),swaps:[]}]]);function o(r,s){e.has(r)||e.set(r,{title:r,swaps:[]}),e.get(r)?.swaps.push(s)}i(o,"addYearsToOutput");let n=iu();return t.forEach(r=>{let s=Number(r.creationTime),a=iu(s);if(n.isSame(a,"day"))e.get("today")?.swaps.push(r);else if(n.isSame(a,"week"))e.get("week")?.swaps.push(r);else if(n.isSame(a,"month"))e.get("month")?.swaps.push(r);else if(n.isSame(a,"year"))e.get("year")?.swaps.push(r);else{let l=new Date(s).getFullYear().toString();o(l,r)}}),Array.from(e.values())},"groupSwapsByDate");var Xt=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");var jg=au("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",height:"100%",gap:15}),Xg=au("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),Kg=i((t,e)=>t?.length?t.filter(o=>Xe(o.fromBlockchain,e)||Xe(o.toBlockchain,e)||Xe(o.toSymbol,e)||Xe(o.fromSymbol,e)).length:!1,"isStepContainsText");function lu(){let t=Ae.use.setSelectedSwap(),e=Vg(),{manager:o,state:n}=zg(),r=Xt(o).map(({swap:c})=>c),[s,a]=Qg(""),l=!n.loadedFromPersistor,p=i(c=>{let h=c.target.value;a(h)},"searchHandler"),u=r;s&&(u=r.filter(c=>Xe(c.inputAmount,s)||Xe(c.status,s)||Kg(c.steps,s)||Xe(c.requestId,s)));let m=!u?.length&&!l;return Tt.createElement(K,{header:{title:Hn.t("History")}},Tt.createElement(jg,null,Tt.createElement(lt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Hn.t("Search Transaction"),autoFocus:!0,onChange:p,value:s}),Tt.createElement(Xg,null,m&&Tt.createElement(tu,null,Tt.createElement(Gg,{size:32}),Tt.createElement(Hg,{title:Hn.t("No results found"),description:s?Hn.t("Try using different keywords"):""})),!m&&Tt.createElement(Ni,{list:u,onSwapClick:c=>{t(c),e(c)},groupBy:su,isLoading:l}))))}i(lu,"HistoryPage");import{i18n as Mi}from"@lingui/core";import{Button as oh,styled as $i,SwapInput as mu,WarningIcon as nh}from"@rango-dev/ui";import Fe,{useEffect as rh,useRef as ih,useState as sh}from"react";import{useNavigate as ah}from"react-router-dom";import{ReverseIcon as Yg,styled as pu}from"@rango-dev/ui";import Li from"react";var Jg=pu("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Zg=pu("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&:hover":{color:"$secondary500"}});function uu(){let t=U.use.switchFromAndTo();return Li.createElement(Jg,null,Li.createElement(Zg,{onClick:()=>{t()}},Li.createElement(Yg,{size:12})))}i(uu,"SwitchFromAndToButton");import{useCallback as Rg,useEffect as eh,useState as Pi}from"react";var th=600;function cu(){let{fetch:t,cancelFetch:e}=_n(),{liquiditySources:o,enableNewLiquiditySources:n,features:r}=d().config,s=d().tokens(),{fromToken:a,toToken:l,inputAmount:p,inputUsdValue:u,quote:m,resetQuote:c,setQuote:h}=U(),{slippage:f,customSlippage:x,affiliatePercent:w,affiliateRef:g,affiliateWallets:v,disabledLiquiditySources:k}=d(),[T,A]=Pi(!1),[y,E]=Pi(null),[b,S]=Pi(null),B=x??f,N=!a||!l||Le(a,l)||!no(p),C=i(q=>{A(q),E(null),S(null)},"resetState"),$=i(q=>{let{fromToken:R,toToken:ee,inputAmount:Q,liquiditySources:re,excludeLiquiditySources:ye,disabledLiquiditySources:Se,slippage:Ce,affiliateRef:_t,affiliatePercent:oo,affiliateWallets:dt}=q;if(T||C(!0),!N&&R&&ee){c();let At=nn({fromToken:R,toToken:ee,inputAmount:Q,liquiditySources:re,excludeLiquiditySources:ye,disabledLiquiditySources:Se,slippage:Ce,affiliateRef:_t,affiliatePercent:oo,affiliateWallets:dt});Yo("experimentalRoute",r)&&(At.experimental=!0),t(At).then(F=>{A(!1),h(F),Dn(F);let z=rn(F,{fromToken:R,toToken:ee,userSlippage:B,tokens:s});S(z)}).catch(F=>{let{error:z}=Fn(F);(z?.type===0||z?.type===1)&&c(),z?.type!==2&&(E(z),A(!1))})}},"fetch"),L=Rg(Zs(q=>{N||$(q)},th),[N]);return eh(()=>{if(!no(p)||u?.eq(0)){C(!1),e();return}if(N){m&&c();return}return c(),C(!0),L({inputAmount:p,fromToken:a,toToken:l,liquiditySources:o,excludeLiquiditySources:n,disabledLiquiditySources:k,slippage:B,affiliateRef:g,affiliatePercent:w,affiliateWallets:v}),e},[p,a?.symbol,a?.address,a?.blockchain,l?.symbol,l?.address,l?.blockchain,N,o?.length,n,k.length,B,g,w,JSON.stringify(v)]),{fetch:()=>$({inputAmount:p,fromToken:a,toToken:l,liquiditySources:o,excludeLiquiditySources:n,disabledLiquiditySources:k,slippage:B,affiliateRef:g,affiliatePercent:w,affiliateWallets:v}),loading:T,error:y,warning:b}}i(cu,"useSwapInput");var lh=$i("div",{display:"flex",flexDirection:"column",overflowY:"visible","& .quote__container":{paddingTop:"$2"}}),ph=$i("div",{position:"relative"}),uh=$i("div",{display:"flex",flexDirection:"column",gap:5,alignSelf:"stretch"});function du(){let t=ah(),{fetch:e,loading:o,error:n,warning:r}=cu(),{fromToken:s,fromBlockchain:a,toToken:l,toBlockchain:p,setInputAmount:u,inputAmount:m,inputUsdValue:c,outputAmount:h,outputUsdValue:f,quote:x,resetQuoteWallets:w,setQuoteWarningsConfirmed:g}=U(),v=d().fetchStatus,{connectedWallets:k,getBalanceFor:T}=H(),A=Ae.use.setCurrentPage(),[y,E]=sh(!1),b=ih(null),S=!!a&&js(k,a.name),B=!1,M=!Nr(x,m,c),N=!Nr(x,m,f),C=ga({fetchMetaStatus:v,fetchingQuote:o,inputAmount:m,quote:x,anyWalletConnected:k.length>0,error:n,warning:r,needsToWarnEthOnPath:B}),$=s?T(s):null,L=Qo($)?.amount??"0",q=a&&s?I($?.amount,$?.decimals):"0";rh(()=>(A(_.home),w(),A.bind(null,"")),[]);let R=!c||!f||!f.gt(0)?null:Me(c.toString(),f.toString());return Fe.createElement(K,{ref:b,fixedHeight:!1,hasLogo:!0,footer:Fe.createElement(oh,{type:"primary",size:"large",disabled:C.disabled,prefix:C.action==="confirm-warning"&&Fe.createElement(nh,null),fullWidth:!0,onClick:()=>{C.action==="connect-wallet"?t(_.wallets):C.action==="confirm-warning"?E(!0):t(_.confirmSwap)}},C.title),header:{onWallet:()=>{t(_.wallets)},hasBackButton:!1,title:Mi.t("Swap"),suffix:Fe.createElement(Zr,{layoutRef:b.current,onClickRefresh:(x||n)&&!y?e:void 0,onClickHistory:()=>t(_.swaps),onClickSettings:()=>t(_.settings)})}},Fe.createElement(lh,null,Fe.createElement(uh,null,Fe.createElement(ph,null,Fe.createElement(mu,{label:Mi.t("From"),mode:"From",onInputChange:u,balance:L,chain:{displayName:a?.displayName||"",image:a?.logo||""},token:{displayName:s?.symbol||"",image:s?.image||""},onClickToken:()=>t(_.fromSwap),price:{value:m,usdValue:M?void 0:I(c,4,4),realUsdValue:M?void 0:ie(c),error:M?V().unknownPriceError.impactTitle:void 0},disabled:v==="failed",loading:v==="loading",loadingBalance:S,tooltipContainer:O(),onSelectMaxBalance:()=>{L!=="0"&&u(q.split(",").join(""))}}),Fe.createElement(uu,null)),Fe.createElement(mu,{sharpBottomStyle:!!x?.result||o,label:Mi.t("To"),mode:"To",fetchingQuote:o,chain:{displayName:p?.displayName||"",image:p?.logo||""},token:{displayName:l?.symbol||"",image:l?.image||""},percentageChange:I(Me(c,f),2,2),warningLevel:st(R??0),price:{value:I(h,6,6),usdValue:N?void 0:I(f,4,4),realValue:ie(h),realUsdValue:N?void 0:ie(f),error:N?V().unknownPriceError.impactTitle:void 0},onClickToken:()=>t(_.toSwap),disabled:v==="failed",loading:v==="loading",tooltipContainer:O()})),Fe.createElement("div",{className:"quote__container"},Fe.createElement(ko,{quote:x,loading:o,error:n,warning:r,type:"basic",refetchQuote:e,showWarningModal:y,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:()=>{E(!1),g(!0),t(_.confirmSwap)},onChangeSettings:()=>t(_.settings)}))))}i(du,"Home");import{i18n as fu}from"@lingui/core";import{List as ch,ListItemButton as mh,Radio as dh,RadioRoot as fh,Typography as gh}from"@rango-dev/ui";import wt from"react";import{styled as Qn}from"@rango-dev/ui";var pt=Qn("div",{height:"100%",overflow:"hidden"}),xo=Qn("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto"}),_i=Qn("div",{width:80,display:"flex",justifyContent:"flex-end"}),Di=Qn("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});function Vn(){let{setLanguage:t,language:e}=d();return{activeLanguage:e,languages:ta,defaultLanguage:Ut,changeLanguage:r=>t(r||Ut)}}i(Vn,"useLanguage");function gu(){let{activeLanguage:t,changeLanguage:e,languages:o}=Vn(),n=o.map(r=>{let{local:s,label:a,SVGFlag:l}=r;return{id:s,value:s,title:wt.createElement(gh,{variant:"title",size:"xmedium"},a),onClick:()=>e(r.local),end:wt.createElement(dh,{value:s}),start:wt.createElement(l,null)}});return wt.createElement(K,{header:{title:fu.t("Language")}},wt.createElement(pt,null,wt.createElement(fh,{value:t},wt.createElement(ch,{type:wt.createElement(mh,{title:fu.t("language"),id:"_",onClick:()=>console.log()}),items:n}))))}i(gu,"LanguagePage");import{i18n as ut}from"@lingui/core";import{Button as kh,Checkbox as Th,Image as wh,ListItemButton as xh,NotFound as vh,Typography as Ah}from"@rango-dev/ui";import ke,{useState as bh}from"react";import{Checkbox as Sh,Skeleton as yu}from"@rango-dev/ui";import vo from"react";import{ListItem as hh,styled as yh}from"@rango-dev/ui";var hu=yh(hh,{height:61});var Ch=30;function Fi(){return vo.createElement(xo,null,Array.from(Array(Ch),t=>vo.createElement(hu,{hasDivider:!0,key:t,start:vo.createElement(yu,{variant:"circular",width:35,height:35}),title:vo.createElement(yu,{variant:"text",size:"large",width:90}),end:vo.createElement(Sh,{checked:!1})})))}i(Fi,"LoadingLiquiditySourceList");function Oi({sourceType:t}){let e=d().fetchStatus,o=d().swappers(),n=d().disabledLiquiditySources,[r,s]=bh(""),a=d().toggleLiquiditySource,l=Ko(o,n),p={Exchanges:ut.t("Exchanges"),Bridges:ut.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&(u.push("BRIDGE"),u.push("AGGREGATOR"));let m=l.filter(g=>u.includes(g.type)),c=m.length===m.filter(g=>g.selected).length,h=i(()=>{m.forEach(g=>{c?a(g.groupTitle):g.selected||a(g.groupTitle)})},"toggleAllSources"),f=m.map(g=>{let{selected:v,groupTitle:k,logo:T}=g;return{start:ke.createElement(wh,{src:T,size:22,type:"circular"}),onClick:()=>a(k),end:ke.createElement(Th,{checked:v}),title:ke.createElement(Ah,{variant:"title",size:"xmedium"},ut.t(k)),...g}}),x=i(g=>{let v=g.target.value;s(v)},"searchHandler"),w=f;return r&&(w=f.filter(g=>Xe(g.groupTitle,r))),ke.createElement(K,{header:{title:ut.t(t),suffix:ke.createElement(_i,null,ke.createElement(kh,{variant:"ghost",size:"xsmall",onClick:h},c?ut.t("Deselect all"):ut.t("Select all")))}},ke.createElement(pt,null,ke.createElement(lt,{value:r,setValue:s,fullWidth:!0,color:"light",variant:"contained",placeholder:ut.t("Search {sourceType}",{sourceType:p[t]}),onChange:x}),e==="loading"&&ke.createElement(Fi,null),!w.length&&r?ke.createElement(Di,null,ke.createElement(vh,{title:ut.t("No results found"),description:ut.t("Try using different keywords")})):e==="success"&&ke.createElement(xo,null,w.map(g=>ke.createElement(ke.Fragment,{key:g.id},ke.createElement(xh,{style:{height:"61px"},...g,selected:!1,hasDivider:!0}))))))}i(Oi,"LiquiditySourcePage");import{i18n as Au}from"@lingui/core";import{Divider as Gi,getCountCategories as _h,SelectableCategoryList as Dh}from"@rango-dev/ui";import ct,{useState as bu}from"react";import{i18n as qi}from"@lingui/core";import{Divider as xu,Image as Nh,ListItemButton as Lh,NotFound as Ph,Typography as vu}from"@rango-dev/ui";import Oe,{useEffect as Mh,useState as $h}from"react";import{BlockchainCategories as Ui}from"@rango-dev/ui";import{TransactionType as jn}from"rango-sdk";var Eh=i((t,e)=>{switch(e){case Ui.ALL:return!0;case Ui.UTXO:return t.type===jn.TRANSFER;case Ui.OTHER:return t.type!==jn.TRANSFER&&t.type!==jn.COSMOS&&t.type!==jn.EVM;default:return t.type===e}},"filterByType"),Su=i((t,e,o)=>t.filter(n=>Eh(n,o)).filter(n=>bt(n.name,e)||bt(n.displayName,e)),"filterBlockchains");import{ImageContainer as Ih,styled as Cu}from"@rango-dev/ui";var ku=Cu("div",{display:"flex",flexDirection:"column",overflow:"hidden"}),Xn=Cu("ul",{padding:0,margin:0,listStyle:"none",overflowY:"auto",paddingRight:"$5",[`& ${Ih}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as Wh,Skeleton as Tu}from"@rango-dev/ui";import Kn from"react";var Bh=20;function wu(){return Kn.createElement(Xn,null,Array.from(Array(Bh),t=>Kn.createElement(Wh,{key:t,hasDivider:!0,start:Kn.createElement(Tu,{variant:"circular",width:35,height:35}),title:Kn.createElement(Tu,{variant:"text",size:"large",width:90})})))}i(wu,"LoadingBlockchainList");function zi(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r}=t,[s,a]=$h(e),{fetchStatus:l}=d();Mh(()=>{a([...Su(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?Oe.createElement(Oe.Fragment,null,Oe.createElement(xu,{size:32}),Oe.createElement(Ph,{title:qi.t("No results found"),description:qi.t("Try using different keywords")})):Oe.createElement(Xn,{key:`${r}-${o}`},s.map(u=>Oe.createElement(Lh,{key:`${u.name}-${u.chainId}`,hasDivider:!0,onClick:()=>n(u),start:Oe.createElement(Nh,{src:u.logo,size:30}),title:Oe.createElement(vu,{variant:"title",size:"medium"},u.displayName),id:u.chainId}))),"renderList");return Oe.createElement(ku,null,Oe.createElement(vu,{variant:"label",size:"large"},qi.t("Select Blockchain")),Oe.createElement(xu,{size:4}),l==="loading"&&Oe.createElement(wu,null),l==="success"&&p())}i(zi,"BlockchainList");function Hi(t){let{type:e}=t,o=St(),[n,r]=bu(""),[s,a]=bu("ALL"),l=U.use.setToBlockchain(),p=U.use.setFromBlockchain(),u=d().fetchStatus,m=d().blockchains({type:e}),h=_h(m)!==1;return ct.createElement(K,{header:{title:Au.t("Select Blockchain")}},ct.createElement(Gi,{size:12}),h&&ct.createElement(ct.Fragment,null,ct.createElement(Dh,{setCategory:a,category:s,blockchains:m,isLoading:u==="loading"}),ct.createElement(Gi,{size:24})),ct.createElement(lt,{value:n,autoFocus:!0,placeholder:Au.t("Search Blockchain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),ct.createElement(Gi,{size:16}),ct.createElement(zi,{list:m,searchedFor:n,blockchainCategory:s,onChange:f=>{e==="source"?p(f):l(f),o()}}))}i(Hi,"SelectBlockchainPage");import{i18n as er}from"@lingui/core";import{Divider as Vu}from"@rango-dev/ui";import Jt,{useState as ty}from"react";import{useNavigate as oy}from"react-router-dom";import{i18n as ji}from"@lingui/core";import{BlockchainsChip as Yn,Divider as Bu,Image as Nu,Skeleton as zh,Tooltip as Gh,Typography as Xi}from"@rango-dev/ui";import le from"react";import{useEffect as Uh}from"react";var Eu=["ETH","COSMOS","OSMOSIS"];function Qi(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Fh),o?.limit&&t.length>o.limit){let s=o.limit,a=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let p=0;p<=l;p++){let u=n[p];a=a.filter(m=>u.name!==m)}}n.sort(Oh(a)),r=n.splice(s)}return{list:n,more:r}}i(Qi,"prepare");function Fh(t,e){let o=Eu,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),s=n>-1,a=r>-1;return s&&a?n>r?1:-1:s?-1:a?1:0}i(Fh,"sortByMostUsedBlockchains");function Oh(t){return i(function(o,n){let r=t.findIndex(p=>p===o.name),s=t.findIndex(p=>p===n.name),a=r>-1,l=s>-1;return a&&l?r>s?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(Oh,"generateSortByPreferredBlockchainsFor");function Iu(t,e){return!!e.list.find(o=>o.name===t)}i(Iu,"isInVisibleList");function Vi(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=d();Uh(()=>{if(e?.selected){let s=Qi(t,o,e);Iu(e.selected,s)||n(e?.selected)}},[e?.selected]);let r=Qi(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Vi,"usePrepareBlockchainList");import{styled as qh}from"@rango-dev/ui";var Wu=qh("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var Hh=12;function Ki(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:s}=t,a=Vi(e,{limit:10,selected:n?.name}),{fetchStatus:l}=d(),p=U.use.resetToBlockchain(),u=U.use.resetFromBlockchain(),m=a.more.length>0,c=a.more.length===1,h=!c&&m;return le.createElement(le.Fragment,null,le.createElement(Bu,{size:12}),le.createElement(Xi,{variant:"label",size:"large"},ji.t("Select Blockchain")),le.createElement(Bu,{size:12}),le.createElement(Wu,null,l==="loading"&&Array.from(Array(Hh),f=>le.createElement(zh,{key:f,variant:"rounded",height:50})),l==="success"&&le.createElement(le.Fragment,null,le.createElement(Yn,{selected:!n,onClick:()=>{o==="from"?u():p()}},le.createElement(Xi,{variant:"body",size:"xsmall",color:"secondary500"},ji.t("All"))),a.list.map(f=>le.createElement(Gh,{key:f.name,content:f.shortName,side:"bottom",sideOffset:2,container:O()},le.createElement(Yn,{key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},le.createElement(Nu,{src:f.logo,size:30})))),c?le.createElement(Yn,{key:a.more[0].name,selected:!!n&&n.name===a.more[0].name,onClick:()=>r(a.more[0])},le.createElement(Nu,{src:a.more[0].logo,size:30})):null,h?le.createElement(Yn,{onClick:s,key:"more-blockchains"},le.createElement(Xi,{variant:"body",size:"xsmall",color:"secondary500"},ji._("More +{count}",{count:a.more.length}))):null)))}i(Ki,"BlockchainsSection");import{i18n as is}from"@lingui/core";import{darkTheme as qu,Divider as Yt,ExternalLinkIcon as jh,Image as Xh,ListItemButton as Kh,NotFound as Yh,PinIcon as Jh,Skeleton as zu,Typography as Rn,VirtualizedList as Zh}from"@rango-dev/ui";import D,{forwardRef as Rh,useEffect as Gu,useState as Hu}from"react";import{Divider as Ou,ListItem as Vh,Skeleton as Ao}from"@rango-dev/ui";import Ve from"react";import{css as Kt,darkTheme as Lu,ImageContainer as Qh,styled as Qe,Typography as Pu}from"@rango-dev/ui";var Yi=Kt({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),Ji=Kt({position:"relative",height:12,width:"30%",maxWidth:"150px"}),Zi=Kt({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),Ri=Kt({transform:"translateY(12px)",visibility:"hidden","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${Lu} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),es=Kt({}),ts=Kt(),Mu=Qe("div",{display:"flex",flexDirection:"column",flexGrow:1}),os=Qe("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Jn=Qe("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${Ji}`]:{[`& .${Ri}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${es}`]:{bottom:"-15px"},[`& .${Yi}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${Zi}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),ns=Qe("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),rs=Qe(Pu,{}),$u=Qe("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${ts}`]:{$$color:"$colors$neutral600",[`.${Lu} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Zn=Qe("div",{display:"flex",alignItems:"end",flexDirection:"column"}),FN=Qe("div",{display:"flex",alignItems:"center"}),_u=Qe("div",{position:"relative",[`& ${Qh}`]:{borderRadius:"$xm",overflow:"hidden"}}),Du=Qe("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),Fu=Qe(Pu,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function Uu(t){return Ve.createElement(Jn,null,Array.from(Array(t.size),e=>Ve.createElement(Vh,{key:e,hasDivider:!0,start:Ve.createElement(Ao,{variant:"circular",width:35,height:35}),end:Ve.createElement(Zn,null,Ve.createElement(Ao,{variant:"text",size:"large",width:70}),Ve.createElement(Ou,{size:4}),Ve.createElement(Ao,{variant:"text",size:"medium",width:50})),title:Ve.createElement("div",null,Ve.createElement(Ao,{variant:"text",size:"large",width:90}),Ve.createElement(Ou,{size:4}),Ve.createElement(Ao,{variant:"text",size:"medium",width:90}))})))}i(Uu,"LoadingTokenList");var ss=20,ey=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:s,customCssForTagTitle:a}=t,l=e.length;return D.createElement("div",{className:Ji()},o?D.createElement("div",{className:Yi()},o):D.createElement(os,{className:Zi()},D.createElement(Rn,{variant:"title",size:"xmedium"},r.symbol),D.createElement(Yt,{direction:"horizontal",size:4}),D.createElement(ns,{css:s},D.createElement(rs,{variant:"body",size:"xsmall",css:a},r.blockchain))),!!e&&D.createElement("div",{className:`${Ri()} ${!o&&es()}`},D.createElement("a",{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",D.createElement(Yt,{size:4,direction:"horizontal"}),D.createElement(jh,{color:"gray",size:12}))))},"renderDesc");function Qu(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r}=t,[s,a]=Hu(e),l=d().fetchStatus,p=d().blockchains(),[u,m]=Hu(!0),{getBalanceFor:c,loading:h}=H(),{isTokenPinned:f}=d(),x=Rh((v,k)=>D.createElement("div",{...v,ref:k,style:{...v.style,height:`${parseFloat(v.style?.height)+8*2}px`}})),w=i(()=>{a(e.slice(0,s.length+ss))},"loadNextPage");Gu(()=>{m(e.length>s.length)},[s.length]),Gu(()=>{a(e.slice(0,ss))},[e]);let g=i(()=>!s.length&&o?D.createElement(D.Fragment,null,D.createElement(Yt,{size:32}),D.createElement(Yh,{title:is.t("No results found"),description:is.t("Try using different keywords")})):D.createElement(Zh,{Item:({index:v,style:k})=>{let T=s[v],A=Qo(c(T)),y=T.address||"",E=p.find(M=>M.name===T.blockchain),b=Sn(T.symbol,E?.color||""),S={$$color:b[`${T.symbol}100`],[`.${qu} &`]:{$$color:b[`${T.symbol}900`]},backgroundColor:"$$color"},B={$$color:b[`${T.symbol}700`],[`.${qu} &`]:{$$color:b[`${T.symbol}100`]},color:"$$color"};return D.createElement("div",{style:{...k,paddingRight:5}},D.createElement(Kh,{style:{height:k?.height,width:"100%",overflow:"hidden"},"tab-index":v,key:`${T.symbol}${T.address}`,id:`${T.symbol}${T.address}`,hasDivider:!0,onClick:()=>n(s[v]),start:D.createElement(_u,null,D.createElement(Xh,{src:T.image,size:30}),f(T,t.type)&&D.createElement(Du,null,D.createElement(Jh,{size:12,color:"gray"}))),title:E?.type==="COSMOS"||T.name||!T.name&&!y?D.createElement(os,null,D.createElement(Rn,{variant:"title",size:"xmedium"},T.symbol),D.createElement(Yt,{direction:"horizontal",size:4}),D.createElement(ns,{css:S},D.createElement(rs,{variant:"body",size:"xsmall",css:B},T.blockchain))):void 0,description:E?.info&&y&&E.type!=="COSMOS"?ey({address:y,token:s[v],customCssForTag:S,customCssForTagTitle:B,name:T.name,url:E.info.addressUrl.split("{wallet}").join(y)}):T.name||void 0,end:h?D.createElement(Zn,null,D.createElement(zu,{variant:"text",size:"large",width:70}),D.createElement(Yt,{size:4}),D.createElement(zu,{variant:"text",size:"medium",width:50})):A&&D.createElement($u,null,D.createElement(Fu,{variant:"title",size:"small"},A.amount),D.createElement("div",null),A.usdValue&&D.createElement(Rn,{variant:"body",className:ts(),size:"xsmall"},`$${A.usdValue}`))}))},hasNextPage:u,itemCount:s.length,loadNextPage:w,innerElementType:x,size:60,key:`${r}-${o}`}),"renderList");return D.createElement(Mu,null,D.createElement(Rn,{variant:"label",size:"large"},is.t("Select Token")),D.createElement(Yt,{size:4}),l==="loading"&&D.createElement(Uu,{size:ss}),l==="success"&&D.createElement(Jn,null,g()))}i(Qu,"TokenList");function as(t){let{type:e}=t,o=oy(),n=St(),{fromBlockchain:r,toBlockchain:s,setFromToken:a,setToToken:l,setFromBlockchain:p,setToBlockchain:u}=U(),m=H.use.getBalanceFor(),[c,h]=ty(""),{isTokenPinned:f}=d(),w=(e==="source"?r:s)?.name??"",g=d().blockchains({type:e}),v=d().tokens({type:e,blockchain:w,searchFor:c}),T=Hs(v,m,i(b=>f(b,e),"checkIsTokenPinned")),A=i(b=>{e==="source"?p(b):u(b)},"updateBlockchain"),y=i(b=>{e==="source"?a({token:b,meta:{blockchains:g,tokens:v}}):l({token:b,meta:{blockchains:g,tokens:v}})},"updateToken"),E={source:er.t("Source"),destination:er.t("Destination")};return Jt.createElement(K,{header:{title:er.t("Swap {type}",{type:E[e]})}},Jt.createElement(Ki,{blockchains:g,type:e=="source"?"from":"to",blockchain:e==="source"?r:s,onMoreClick:()=>o(_.blockchains),onChange:b=>{A(b)}}),Jt.createElement(Vu,{size:24}),Jt.createElement(lt,{value:c,autoFocus:!0,placeholder:er.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>h(""),onChange:b=>h(b.target.value)}),Jt.createElement(Vu,{size:16}),Jt.createElement(Qu,{list:T,selectedBlockchain:w,searchedFor:c,type:e,onChange:b=>{y(b);let S=g.find(B=>b.blockchain===B.name);S&&A(S),n()}}))}i(as,"SelectSwapItemsPage");import{i18n as Mt}from"@lingui/core";import{ChevronRightIcon as us,Divider as cs,InfoIcon as uy,List as cy,ListItemButton as my,Skeleton as dy,Switch as fy,Tooltip as gy,Typography as $t}from"@rango-dev/ui";import j from"react";import{useNavigate as hy}from"react-router-dom";import{i18n as Zu}from"@lingui/core";import{Divider as sy,InfoIcon as ay,TextField as ly,Tooltip as py,Typography as Ru}from"@rango-dev/ui";import Ne from"react";import{Chip as ny,styled as bo,TextField as ry}from"@rango-dev/ui";var ju=bo("div",{paddingTop:"$5",padding:"$10 $5"}),Xu=bo("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${ry}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),Ku=bo("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),tr=bo("div",{maxWidth:"280px",padding:"$10"}),Yu=bo(ny,{width:"61px",flexShrink:0});import{i18n as ls}from"@lingui/core";import{Typography as iy}from"@rango-dev/ui";import Eo from"react";function Ju(){return Eo.createElement(tr,null,Eo.createElement(iy,{variant:"label",size:"medium",color:"neutral700"},ls.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage"),Eo.createElement("br",null),Eo.createElement("br",null),Eo.createElement("b",null,ls.t("Warning")),":",ls.t("This setting is applied per step, e.g. 1Inch, Thorchain, etc. and only that step will be reverted, not the whole transaction")))}i(Ju,"SlippageTooltipContent");function ps(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=d();return Ne.createElement(ju,null,Ne.createElement(Ku,null,Ne.createElement(Ru,{variant:"title",size:"xmedium"},Zu.t("Slippage tolerance per swap")),Ne.createElement(sy,{direction:"horizontal",size:4}),Ne.createElement(py,{container:O(),side:"top",sideOffset:4,content:Ne.createElement(Ju,null)},Ne.createElement(ay,{color:"gray"}))),Ne.createElement(Xu,null,oa.map((r,s)=>{let a=`slippage-${s}`;return Ne.createElement(Ne.Fragment,null,Ne.createElement(Yu,{key:a,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`}))}),Ne.createElement(ly,{type:"number",min:"0.01",max:"30",step:"0.01",fullWidth:!0,variant:"contained",value:o||"",color:"dark",onChange:r=>{let s=r.target.value,a=parseFloat(s);a>=sa&&a<=ia?n(a):n(null)},suffix:o&&Ne.createElement(Ru,{variant:"body",size:"small"},"%"),placeholder:Zu.t("Custom")})))}i(ps,"Slippage");function ec(){let t=hy(),{theme:e}=d().config,o=d().fetchStatus,n=d().swappers(),r=d().disabledLiquiditySources,{config:{features:s}}=d(),a=Pe("theme",s),l=Pe("liquiditySource",s),p=Pe("language",s),u=d().infiniteApprove,m=d().toggleInfiniteApprove,c=Ko(n,r),h=c.filter(S=>S.type==="BRIDGE"||S.type==="AGGREGATOR"),f=h.length,x=h.filter(S=>S.selected).length,w=c.filter(S=>S.type==="DEX"),g=w.length,v=w.filter(S=>S.selected).length,k=i((S,B)=>{switch(o){case"loading":return j.createElement(dy,{variant:"text",size:"medium",width:50});case"failed":return j.createElement($t,{variant:"body",size:"medium",color:"$error500"},Mt.t("Loading failed"));default:return j.createElement($t,{variant:"body",size:"medium"},`${S} / ${B}`)}},"handleEndItem"),T={id:"bridge-item",title:j.createElement($t,{variant:"title",size:"xmedium"},Mt.t("Enabled bridges")),end:j.createElement(j.Fragment,null,k(x,f),j.createElement(cs,{direction:"horizontal",size:8}),j.createElement(us,{color:"black"})),onClick:()=>t(_.bridges)},A={id:"exchange-item",title:j.createElement($t,{variant:"title",size:"xmedium"},Mt.t("Enabled exchanges")),end:j.createElement(j.Fragment,null,k(v,g),j.createElement(cs,{direction:"horizontal",size:8}),j.createElement(us,{color:"gray"})),onClick:()=>t(_.exchanges)},y={id:"theme-item",title:j.createElement($t,{variant:"title",size:"xmedium"},Mt.t("Theme")),end:j.createElement(us,{color:"gray"}),onClick:()=>t(_.themes)},E={id:"infinite-approval-item",title:j.createElement(j.Fragment,null,j.createElement($t,{variant:"title",size:"xmedium"},Mt.t("Infinite approval")),j.createElement(cs,{direction:"horizontal",size:4}),j.createElement(gy,{side:"top",sideOffset:4,container:O(),content:j.createElement(tr,null,j.createElement($t,{variant:"label",size:"medium",color:"neutral700"},Mt.t("Enabling the 'Infinite approval' mode grants unrestricted access to smart contracts of DEXes/Bridges, allowing them to utilize the approved token amount without limitations.")))},j.createElement(uy,{color:"gray"}))),end:j.createElement(fy,{checked:u}),onClick:m},b=l?[]:[T,A];return!e?.singleTheme&&!a&&b.push(y),b.push(E),j.createElement(K,{header:{title:Mt.t("Settings")}},j.createElement(pt,null,j.createElement(ps,null),j.createElement(cy,{type:j.createElement(my,{title:"_",id:"_",onClick:()=>console.log()}),items:b})))}i(ec,"SettingsPage");import{cancelSwap as iS}from"@rango-dev/queue-manager-rango-preset";import{useManager as sS}from"@rango-dev/queue-manager-react";import Pc from"react";import{i18n as mt}from"@lingui/core";import{getCurrentBlockchainOfOrNull as Uy,getCurrentStep as qy,getRelatedWalletOrNull as zy}from"@rango-dev/queue-manager-rango-preset";import{Button as Ac,CopyIcon as Gy,Divider as Hy,IconButton as Qy,QuoteCost as Vy,StepDetails as jy,Typography as eo,useCopyToClipboard as Xy}from"@rango-dev/ui";import{useWallets as Ky}from"@rango-dev/wallets-react";import bc from"bignumber.js";import{PendingSwapNetworkStatus as dr}from"rango-types";import Y,{useEffect as Ec,useRef as Yy,useState as Ic}from"react";import{useNavigate as Jy}from"react-router-dom";import{i18n as xt}from"@lingui/core";var yy=[xt.t("Sunday"),xt.t("Monday"),xt.t("Tuesday"),xt.t("Wednesday"),xt.t("Thursday"),xt.t("Friday"),xt.t("Saturday")];function tc(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?xt.t("Today"):`${yy[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(tc,"timeSince");function oc(t){return t.finishTime?tc(parseInt(t.finishTime)):tc(parseInt(t.creationTime))}i(oc,"getSwapDate");import{Modal as vy}from"@rango-dev/ui";import{PendingSwapNetworkStatus as rr}from"rango-types";import ir from"react";import{i18n as or}from"@lingui/core";import{Button as nc,Divider as ms,MessageBox as Sy,Typography as rc}from"@rango-dev/ui";import nt from"react";var ic=i(({onCancel:t,onClose:e})=>nt.createElement(nt.Fragment,null,nt.createElement(ms,{size:20}),nt.createElement(Sy,{type:"error",title:or.t("Cancel Swap"),description:or.t("Are you sure you want to cancel this swap?")}),nt.createElement(ms,{size:32}),nt.createElement(nc,{variant:"contained",type:"primary",size:"large",onClick:t},nt.createElement(rc,{variant:"title",size:"medium",color:"neutral100"},or.t("Yes, Cancel it"))),nt.createElement(ms,{size:12}),nt.createElement(nc,{variant:"outlined",type:"primary",size:"large",onClick:e},nt.createElement(rc,{variant:"title",size:"medium",color:"primary"},or.t("No, Continue")))),"CancelContent");import{i18n as nr}from"@lingui/core";import{Button as sc,Divider as ds,MessageBox as Cy,Typography as ac}from"@rango-dev/ui";import rt from"react";var lc=i(({onDelete:t,onClose:e})=>rt.createElement(rt.Fragment,null,rt.createElement(ds,{size:20}),rt.createElement(Cy,{type:"error",title:nr.t("Delete Transaction"),description:nr.t("Are you sure you want to delete this swap?")}),rt.createElement(ds,{size:32}),rt.createElement(sc,{variant:"contained",type:"primary",size:"large",onClick:t},rt.createElement(ac,{variant:"title",size:"medium",color:"neutral100"},nr.t("Yes, Delete it"))),rt.createElement(ds,{size:12}),rt.createElement(sc,{variant:"outlined",type:"primary",size:"large",onClick:e},rt.createElement(ac,{variant:"title",size:"medium",color:"primary"},nr.t("No, Cancel")))),"DeleteContent");import{i18n as fs}from"@lingui/core";import{PendingSwapNetworkStatus as gs}from"rango-types";var hs={[gs.WaitingForNetworkChange]:{type:"loading",title:fs.t("Change Network")},[gs.WaitingForConnectingWallet]:{type:"warning",title:fs.t("Connect Wallet")},[gs.NetworkChanged]:{type:"success",title:fs.t("Network Changed")}};import{MessageBox as Ty,Wallet as wy}from"@rango-dev/ui";import{useWallets as xy}from"@rango-dev/wallets-react";import Io from"react";import{styled as ky}from"@rango-dev/ui";var pc=ky("div",{display:"flex",justifyContent:"center"});var uc=i(t=>{let{type:e,title:o,currentStepWallet:n,message:r,showWalletButton:s}=t,{connect:a,getWalletInfo:l,state:p}=xy(),u=n?.walletType,m=u?kr(p(u)):null,c=u?l(u):null;return Io.createElement(Io.Fragment,null,Io.createElement(Ty,{type:e,title:o,description:r}),s&&!!u&&!!m&&!!c&&Io.createElement(pc,null,Io.createElement(wy,{container:O(),title:c.name,image:c.img,type:u,state:m,link:c.installLink,onClick:async()=>a(u)})))},"WalletStateContent");function ys(t){let{state:e,onClose:o,onDelete:n,onCancel:r,currentStepWallet:s,message:a}=t,l=e===rr.WaitingForNetworkChange||e===rr.WaitingForConnectingWallet||e===rr.NetworkChanged;return ir.createElement(vy,{open:!!e,onClose:o,container:document.getElementById(Te)||document.body},l&&ir.createElement(uc,{type:hs[e].type,title:hs[e].title,currentStepWallet:s,message:a,showWalletButton:e!==rr.WaitingForNetworkChange}),e==="delete"&&ir.createElement(lc,{onClose:o,onDelete:n}),e==="cancel"&&ir.createElement(ic,{onClose:o,onCancel:r}))}i(ys,"SwapDetailsModal");import{i18n as Wo}from"@lingui/core";import{Button as Ss,Divider as sr,MessageBox as cc,Modal as Ay,TokenAmount as by,Typography as ar}from"@rango-dev/ui";import me from"react";import{useNavigate as Ey}from"react-router-dom";function Cs(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:s,realUsdValue:a,realValue:l,token:p,chain:u,percentageChange:m,description:c,diagnosisUrl:h}=t,f=Ey();return me.createElement(Ay,{open:e,onClose:o,container:document.getElementById(Te)||document.body},n==="success"?me.createElement(cc,{type:"success",title:Wo.t("Swap Successful")},me.createElement(by,{direction:"vertical",tooltipContainer:O(),type:"output",centerAlign:!0,price:{value:r,usdValue:s,realUsdValue:a,realValue:l},token:p,chain:u,percentageChange:m}),me.createElement(sr,{size:12}),me.createElement(ar,{variant:"body",size:"medium",color:"neutral700",align:"center"},c)):me.createElement(cc,{type:"error",title:Wo.t("Transaction Failed"),description:c}),me.createElement(sr,{size:32}),n==="success"&&me.createElement(Ss,{variant:"contained",type:"primary",size:"large",onClick:()=>{f("../../")}},me.createElement(ar,{variant:"title",size:"medium",color:"neutral100"},Wo.t("Done"))),me.createElement(sr,{size:12}),h&&me.createElement(me.Fragment,null,me.createElement(Ss,{variant:"contained",type:"primary",size:"large",onClick:()=>window.open(h,"_blank")},me.createElement(ar,{variant:"title",size:"medium",color:"primary"},Wo.t("Diagnosis"))),me.createElement(sr,{size:12})),me.createElement(Ss,{variant:"outlined",type:"primary",size:"large",onClick:o},me.createElement(ar,{variant:"title",size:"medium",color:"primary"},Wo.t("See Details"))))}i(Cs,"SwapDetailsCompleteModal");import Fy from"react";import{i18n as My}from"@lingui/core";import{Alert as yc,IconButton as $y,LinkIcon as _y}from"@rango-dev/ui";import vt,{Fragment as Dy}from"react";import{Alert as Iy,ChevronDownIcon as Wy,ChevronUpIcon as By,IconButton as Ny}from"@rango-dev/ui";import lr,{useState as Ly}from"react";function mc(t){let{message:e}=t,[o,n]=Ly(!1);return lr.createElement(Iy,{type:"error",title:e.shortMessage,action:e.detailedMessage.content&&lr.createElement(Ny,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},o?lr.createElement(By,{size:12,color:"gray"}):lr.createElement(Wy,{size:12,color:"gray"})),footer:o?e.detailedMessage.content:void 0})}i(mc,"FailedAlert");import{styled as Py}from"@rango-dev/ui";var dc=Py("div",{display:"flex",flexDirection:"column",gap:"$10"});import{i18n as fc}from"@lingui/core";import{Alert as ks,Button as gc}from"@rango-dev/ui";import{PendingSwapNetworkStatus as Ts}from"rango-types";import Bo from"react";function hc(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?Bo.createElement(ks,{type:"warning",title:n.shortMessage,action:Bo.createElement(gc,{size:"xxsmall",type:"warning",onClick:()=>{o(Ts.WaitingForNetworkChange),e().catch(s=>{console.log(s)})}},fc.t("Change"))}):r===Ts.WaitingForConnectingWallet?Bo.createElement(ks,{type:"warning",title:n.shortMessage,action:Bo.createElement(gc,{size:"xxsmall",type:"warning",onClick:()=>{o(Ts.WaitingForConnectingWallet)}},fc.t("Connect"))}):Bo.createElement(ks,{type:"warning",title:n.shortMessage})}i(hc,"WarningAlert");function ws(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:s,hasAlreadyProceededToSign:a}=t,l=io(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l;return vt.createElement(dc,null,s.explorerUrl?.map((m,c,h)=>{let f=c+m.url,x=c===h.length-1,w=x&&u||p,g=x&&s.status==="failed";return vt.createElement(Dy,{key:f},vt.createElement(yc,{type:w&&"loading"||g&&"error"||"success",title:m.description?`${m.description} Tx`:My.t("View transaction"),action:m.url&&vt.createElement($y,{variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},vt.createElement(_y,{size:16}))}))}),(u&&!a||p&&!s.explorerUrl?.length)&&vt.createElement(yc,{type:"loading",title:r.shortMessage}),s.status!=="failed"&&l&&vt.createElement(hc,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),s.status==="failed"&&vt.createElement(mc,{message:r}))}i(ws,"SwapDetailsAlerts");var Sc=2e3;var Cc=i(({swap:t,blockchains:e,...o})=>{let n=t.hasAlreadyProceededToSign!==!1;return t.steps.map((r,s)=>{let a=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:r.fromSymbol,image:r.fromLogo??""},chain:{displayName:Ye(r.fromBlockchain,e)??"",image:r.fromBlockchainLogo??""},price:{value:I(a,6,6),realValue:a}},to:{token:{displayName:r.toSymbol,image:r.toLogo},chain:{displayName:Ye(r.toBlockchain,e)??"",image:r.toBlockchainLogo??""},price:{value:I(r.outputAmount||r.expectedOutputAmountHumanReadable,6,6),realValue:r.outputAmount||r.expectedOutputAmountHumanReadable}},swapper:{displayName:r.swapperId,image:r.swapperLogo??""},alerts:Fy.createElement(ws,{step:r,hasAlreadyProceededToSign:n,...o})}})},"getSteps");function kc(t){if(io(t)&&t.status!=="failed"&&t.status!=="success")return"warning";switch(t.status){case"created":return"default";case"approved":case"waitingForApproval":case"running":return"in-progress";case"failed":return"error";case"success":return"completed"}}i(kc,"getStepState");import{css as pr,darkTheme as Oy,styled as Zt}from"@rango-dev/ui";var ur=Zt("div",{display:"flex",width:"100%",flexDirection:"column",alignItems:"center",height:"0",flexGrow:1}),cr=Zt("div",{width:"100%"}),Tc=Zt("div",{padding:"$0 $20 $20 $20",width:"100%",overflow:"auto"}),xM=Zt("div",{display:"flex",flexDirection:"column",gap:"$10"}),wc=Zt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),vM=Zt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),Rt=pr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${Oy} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),mr=pr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),xc=pr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),vc=pr({width:"100%",padding:"0 $20 $10"});function xs(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:s,connect:a,getWalletInfo:l}=Ky(),p=d().blockchains(),u=d().tokens(),m=U.use.retry(),c=Jy(),[h,f]=Xy(Sc),x=Yy(null),[w,g]=Ic(null),[v,k]=Ic(null),T=i(()=>{r(),g(null)},"onCancel"),A=_e.use.getUnreadNotifications(),y=_e.use.setAsRead(),E=A(),b=qy(e),S=b?.networkStatus;Ec(()=>{E.find(de=>de.requestId===e.requestId)&&(e.status==="success"||e.status==="failed")&&(k(e.status),y(e.requestId))},[e.status]),Ec(()=>{q?g(dr.WaitingForNetworkChange):S===dr.WaitingForConnectingWallet||S===dr.NetworkChanged?g(S):g(null)},[S]);let B=va(e),M=b?Uy(e,b):null,N=b?zy(e,b):null,C=oc(e),$=Aa(e),L=i(ue=>!!l(ue)?.mobileWallet,"isMobileWallet"),q=S===dr.WaitingForNetworkChange&&!!M&&!!N?.walletType&&(L(N.walletType)||s(N.walletType,M)),R=q?a.bind(null,N.walletType,M):void 0,ee=xa(e,b),Q=Cc({swap:e,switchNetwork:R,showNetworkModal:S,setNetworkModal:g,message:ee,blockchains:p}),re=Q.length,[ye,Se]=[e.steps[0],e.steps[re-1]],Ce=Se.outputAmount||Se.expectedOutputAmountHumanReadable,_t=e.steps.reduce((ue,de)=>ue+parseFloat(de.feeInUsd||""),0),oo=e.steps.find(ue=>ue.diagnosisUrl)?.diagnosisUrl,dt=I(parseFloat(I(Ce,6,6))*(Se.toUsdPrice||0),4,4),At=I(parseFloat(e.inputAmount)*(ye.fromUsdPrice||0),4,4),F=Ce?ie(new bc(Ce).multipliedBy(Se.toUsdPrice||0)):"",z=ie(new bc(e.inputAmount).multipliedBy(ye.fromUsdPrice||0)),X=Me(At,dt),Ie=e.status==="success"?mt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:I(Ce,6,6),token:Q[re-1].to.token.displayName,conciseAddress:Vo(e.wallets[Q[re-1].to.chain.displayName]?.address||""),chain:Q[re-1].to.chain.displayName}}):`${mt.t("Transaction was not sent.")} ${B?mt.t({id:"{amount} {symbol} on {blockchain} remain in your wallet",values:{amount:B.outputAmount,symbol:B.symbol,blockchain:B.blockchain}}):""}`;return Y.createElement(K,{noPadding:!0,header:{title:mt.t("Swap and Bridge"),onCancel:e.status==="running"?()=>g("cancel"):void 0,suffix:e.status!=="running"&&Y.createElement(Ht,null,Y.createElement(Ac,{variant:"ghost",type:"error",size:"xsmall",onClick:()=>g("delete")},Y.createElement(eo,{size:"medium",variant:"label",color:"error"},mt.t("Delete"))))},footer:$&&!v&&Y.createElement(Ac,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:()=>{m(e,{blockchains:p,tokens:u}),setTimeout(()=>{c("../../")},0)}},mt.t("Try again"))},Y.createElement(ur,null,Y.createElement(cr,null,Y.createElement("div",{className:Rt()},Y.createElement(eo,{variant:"label",size:"large",color:"neutral700"},`${mt.t("Request ID")}:`),Y.createElement("div",{className:mr()},Y.createElement(eo,{variant:"label",size:"small",color:"neutral700"},o),Y.createElement(Qy,{variant:"ghost",onClick:f.bind(null,o||"")},Y.createElement(Gy,{size:16,color:"gray"})))),Y.createElement("div",{className:Rt()},Y.createElement(eo,{variant:"label",size:"large",color:"neutral700"},`${mt.t(e.finishTime?"Finished at":"Created at")}:`),Y.createElement(eo,{variant:"label",size:"small",color:"neutral700"},C))),Y.createElement("div",{className:xc()},Y.createElement(Vy,{fee:I(String(_t),2,2),time:Fo(Oo(e.steps)),steps:re}),Y.createElement(co,{from:{price:{value:I(e.inputAmount,6,6),usdValue:At,realUsdValue:z,realValue:e.inputAmount},token:{displayName:Q[0].from.token.displayName,image:Q[0].from.token.image},chain:{image:Q[0].from.chain.image,displayName:Q[0].from.chain.displayName}},to:{price:{value:I(Ce,6,6),usdValue:dt,realUsdValue:F,realValue:Ce},token:{displayName:Q[re-1].to.token.displayName,image:Q[re-1].to.token.image},chain:{image:Q[re-1].to.chain.image,displayName:Q[re-1].to.chain.displayName}},percentageChange:I(X,2,2),warningLevel:st(X??0)})),Y.createElement("div",{className:vc()},Y.createElement(eo,{variant:"title",size:"small"},mt.t("Swaps steps"))),Y.createElement(Hy,{size:8}),Y.createElement(Tc,{ref:x},Q.map((ue,de)=>{let _o=de,it=kc(e.steps[de]),Yc=it==="error"||it==="in-progress"||it==="warning"||it==="completed"&&de===Q.length-1;return Y.createElement(jy,{key:_o,step:ue,type:"swap-progress",ref:x,state:it,hasSeparator:de!==0,tabIndex:_o,isFocused:Yc,tooltipContainer:O()})}))),Y.createElement(ys,{state:w,onClose:()=>g(null),onCancel:T,onDelete:n,message:ee.detailedMessage.content,currentStepWallet:N}),Y.createElement(Cs,{open:!!v,diagnosisUrl:oo,onClose:()=>k(null),status:e.status==="success"?"success":"failed",priceValue:I(Ce,6,6),usdValue:dt,realUsdValue:F,realValue:ie(Ce),percentageChange:I(X,2,2),token:{displayName:Q[re-1].to.token.displayName,image:Q[re-1].to.token.image},chain:{image:Q[re-1].to.chain.image},description:Ie}))}i(xs,"SwapDetails");import{i18n as Lo}from"@lingui/core";import{CopyIcon as oS,IconButton as nS,NotFound as rS,Skeleton as Nc,Typography as gr}from"@rango-dev/ui";import pe from"react";import{i18n as Zy}from"@lingui/core";import{Divider as Ry,Skeleton as eS,Typography as tS}from"@rango-dev/ui";import se from"react";import{css as je,styled as vs}from"@rango-dev/ui";var Wc=vs("div",{width:"100%",height:"100%",padding:"$10 $20"}),No=vs("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),fr=vs("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),t$=je({display:"flex",justifyContent:"space-between",alignItems:"center"}),o$=je({display:"flex",justifyContent:"space-between",alignItems:"center"}),n$=je({paddingTop:"$15",display:"flex"}),r$=je({padding:"$15 $0"}),i$=je({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),s$=je({paddingBottom:"$10"}),a$=je({display:"flex",justifyContent:"start",alignItems:"center"}),l$=je({paddingTop:"$5",display:"flex",alignItems:"center"}),p$=je({display:"flex",alignItems:"center"}),u$=je({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),Bc=je({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function As(){return se.createElement(Wc,null,se.createElement(ho,{type:"swap-preview"}),se.createElement("div",{className:"swaps-steps"},se.createElement(tS,{variant:"title",size:"small"},Zy.t("Swaps steps"))),se.createElement(se.Fragment,null,se.createElement(No,null,se.createElement(tt,{separator:!1}),se.createElement("div",{className:Bc()},se.createElement(Ry,{direction:"horizontal",size:20}),se.createElement(eS,{height:22,variant:"rectangular"}))),se.createElement(fr,null),se.createElement(No,null,se.createElement(tt,{separator:!1})),se.createElement(fr,null),se.createElement(No,null,se.createElement(tt,{separator:!1})),se.createElement(fr,null),se.createElement(No,null,se.createElement(tt,{separator:!1}))))}i(As,"LoadingSwapDetails");function Lc(t){let{requestId:e,showSkeleton:o}=t;return pe.createElement(K,{noPadding:!0,header:{title:Lo.t("Swap and Bridge"),suffix:pe.createElement(Ht,null)}},o&&pe.createElement(ur,null,pe.createElement(cr,null,pe.createElement("div",{className:Rt()},pe.createElement(gr,{variant:"label",size:"large",color:"neutral700"},`${Lo.t("Request ID")}:`),pe.createElement("div",{className:mr()},pe.createElement(gr,{variant:"label",size:"small",color:"neutral700"},pe.createElement(Nc,{width:60,height:10,variant:"rounded"})),pe.createElement(nS,{variant:"ghost"},pe.createElement(oS,{size:16,color:"gray"})))),pe.createElement("div",{className:Rt()},pe.createElement(gr,{variant:"label",size:"large",color:"neutral700"},`${Lo.t("Created at")}:`),pe.createElement(gr,{variant:"label",size:"small",color:"neutral700"},pe.createElement(Nc,{width:60,height:10,variant:"rounded"})))),pe.createElement(As,null)),!o&&pe.createElement(wc,null,pe.createElement(rS,{title:Lo.t("Not found"),description:Lo.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(Lc,"SwapDetailsPlaceholder");function Mc(){let{manager:t,state:e}=sS(),o=!e.loadedFromPersistor,n=Xt(t),r=Ae.use.selectedSwapRequestId(),s=St(),{fetchStatus:a}=d(),l=o||a==="loading",p=n.find(({swap:h})=>h.requestId===r),u=i(()=>{if(p?.id){let h=t?.get(p.id);h&&iS(h)}},"onCancel"),m=i(async()=>{if(p?.id)try{t?.deleteQueue(p.id),s()}catch(h){console.log(h)}},"onDelete"),c=p?.swap;return!c||l?Pc.createElement(Lc,{requestId:r||"",showSkeleton:l}):Pc.createElement(xs,{swap:c,requestId:r||"",onCancel:u,onDelete:m})}i(Mc,"SwapDetailsPage");import{i18n as Po}from"@lingui/core";import{AutoThemeIcon as aS,DarkModeIcon as lS,LightModeIcon as pS,List as uS,ListItemButton as cS,Radio as bs,RadioRoot as mS,Typography as Es}from"@rango-dev/ui";import be from"react";function $c(){let{setTheme:t,theme:e}=d(),o=[{id:"light",value:"light",title:be.createElement(Es,{variant:"title",size:"xmedium"},Po.t("Light")),onClick:()=>t("light"),start:be.createElement(pS,{color:"gray"}),end:be.createElement(bs,{value:"light"})},{id:"dark",value:"dark",title:be.createElement(Es,{variant:"title",size:"xmedium"},Po.t("Dark")),onClick:()=>t("dark"),start:be.createElement(lS,{color:"gray"}),end:be.createElement(bs,{value:"dark"})},{id:"auto",value:"auto",title:be.createElement(Es,{variant:"title",size:"xmedium"},Po.t("Auto")),onClick:()=>t("auto"),start:be.createElement(aS,{color:"gray"}),end:be.createElement(bs,{value:"auto"})}];return be.createElement(K,{header:{title:Po.t("Theme")}},be.createElement(pt,null,be.createElement(mS,{onValueChange:n=>t(n),value:e},be.createElement(uS,{type:be.createElement(cS,{title:Po.t("Theme"),id:"_",onClick:()=>console.log()}),items:o}))))}i($c,"ThemePage");function _c(){return dS([{path:_.home,element:Ee.createElement(du,null)},{path:_.fromSwap,children:[{index:!0,element:Ee.createElement(as,{type:"source"})},{path:_.blockchains,element:Ee.createElement(Hi,{type:"source"})}]},{path:_.toSwap,children:[{index:!0,element:Ee.createElement(as,{type:"destination"})},{path:_.blockchains,element:Ee.createElement(Hi,{type:"destination"})}]},{path:_.settings,children:[{index:!0,element:Ee.createElement(ec,null)},{path:_.themes,element:Ee.createElement($c,null)},{path:_.languages,element:Ee.createElement(gu,null)},{path:_.exchanges,element:Ee.createElement(Oi,{sourceType:"Exchanges"})},{path:_.bridges,element:Ee.createElement(Oi,{sourceType:"Bridges"})}]},{path:_.swaps,children:[{index:!0,element:Ee.createElement(lu,null)},{path:_.swapDetails,element:Ee.createElement(Mc,null)}]},{path:_.wallets,element:Ee.createElement(Bl,null)},{path:_.confirmSwap,element:Ee.createElement(Rp,null)}])}i(_c,"AppRoutes");import{isApprovalTX as fS,MainEvents as Fc,RouteEventType as Oc,StepEventType as to,StepExecutionEventStatus as gS,useEvents as hS}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Uc}from"react";import{StepExecutionBlockedEventStatus as Is}from"@rango-dev/queue-manager-rango-preset";var Dc=[Is.WAITING_FOR_CHANGE_WALLET_ACCOUNT,Is.WAITING_FOR_NETWORK_CHANGE,Is.WAITING_FOR_WALLET_CONNECT];function qc(){let t=d().tokens(),e=H.use.connectedWallets(),o=H.use.getWalletsDetails(),n=_e.use.setNotification(),r=_e.use.setAsRead(),s=hS();return Uc(()=>(s.on(Fc.StepEvent,a=>{let{event:l,step:p,route:u}=a;if(l.type===to.TX_EXECUTION&&l.status===gS.TX_SENT&&!fS(p)||l.type===to.SUCCEEDED){let c=e.find(f=>f.chain===p?.fromBlockchain),h=p?.fromBlockchain!==p?.toBlockchain&&e.find(f=>f.chain===p?.toBlockchain);c&&o([c],t),h&&o([h],t)}l.type===to.TX_EXECUTION_BLOCKED&&Dc.includes(l.status)||l.type===to.FAILED?n(l,u):(l.type===to.TX_EXECUTION||l.type===to.CHECK_STATUS)&&r(u.requestId)}),()=>s.all.clear()),[s,e.length]),Uc(()=>(s.on(Fc.RouteEvent,a=>{let{event:l,route:p}=a;(l.type===Oc.FAILED||l.type===Oc.SUCCEEDED)&&n(l,p)}),()=>s.all.clear()),[s,e.length]),null}i(qc,"WidgetEvents");import{globalCss as yS}from"@rango-dev/ui";var zc=i(()=>yS({"@import":["url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')","url('https://fonts.cdnfonts.com/css/times-new-roman')"]})(),"globalFont");import{styled as SS}from"@rango-dev/ui";var Gc=SS("div",{display:"flex",justifyContent:"center",alignItems:"center",fontFamily:"$widget",boxSizing:"border-box","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function hr(){zc();let{config:t}=d(),{activeTheme:e}=Cn(t?.theme||{}),{activeLanguage:o,changeLanguage:n}=Vn(),[r,s]=Qc(""),[a,l]=Qc(),p=kS(un);return Hc(()=>{_e.persist.rehydrate(),p.onConnectWallet(s)},[]),Hc(()=>{n(t?.language)},[t?.language]),Mo.createElement(CS,{language:o},Mo.createElement(Gc,{id:"swap-container",className:e()},Mo.createElement(qc,null),Mo.createElement(Fa,{lastConnectedWallet:r,disconnectedWallet:a,clearDisconnectedWallet:()=>{l(void 0)}},Mo.createElement(_c,null))))}i(hr,"Main");import Bs,{useMemo as FS}from"react";import{checkWaitingForNetworkChange as TS,makeQueueDefinition as wS}from"@rango-dev/queue-manager-rango-preset";import{Provider as xS}from"@rango-dev/queue-manager-react";import{useWallets as vS}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as AS}from"@rango-dev/wallets-shared";import{isEvmBlockchain as bS}from"rango-types";import ES,{useMemo as IS}from"react";function WS(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:s,getWalletInfo:a}=vS(),l=IS(()=>wS({API_KEY:t.apiKey||Dt("API_KEY"),BASE_URL:Dt("BASE_URL")}),[t.apiKey]),p=d().blockchains(),m={blockchains:H.use.connectedWallets().map(k=>({accounts:[k],name:k.chain}))},c=i(async(k,T)=>{if(s(k,T))return r(k,T)},"switchNetwork"),h=i(k=>!!a(k).mobileWallet,"isMobileWallet"),f=p.filter(k=>k.enabled).reduce((k,T)=>(k[T.name]=T,k),{}),x=p.filter(bS),w=i(k=>{let{supportedChains:T}=a(k);return zo(T)},"getSupportedChainNames"),g=e(),v={meta:{blockchains:f,evmBasedChains:x,evmNetworkChainInfo:AS(x),getSupportedChainNames:w},getSigners:o,wallets:m,providers:g,switchNetwork:c,canSwitchNetworkTo:s,connect:r,state:n,isMobileWallet:h};return ES.createElement(xS,{queuesDefs:[l],context:v,onPersistedDataLoaded:k=>{TS(k)},isPaused:!1},t.children)}i(WS,"QueueManager");var Vc=WS;import{useManager as MS}from"@rango-dev/queue-manager-react";import $S,{createContext as _S,useContext as DS}from"react";import{cancelSwap as BS,getCurrentBlockchainOfOrNull as NS,getCurrentStep as LS,getRelatedWalletOrNull as PS}from"@rango-dev/queue-manager-rango-preset";var $o=class{constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return Xt(this.manager)}getCurrentStep(e){return this.getCurrentStepInfo(e).step}getCurrentStepWallet(e){return this.getCurrentStepInfo(e).wallet}getCurrentStepNetwork(e){return this.getCurrentStepInfo(e).network}retry(e,o){return this.actions.retrySwap(e,o)}cancel(e){let o=this.manager?.get(e);o&&BS(o)}getCurrentStepInfo(e){let o=LS(e);return{step:o,wallet:o?PS(e,o):null,network:o?NS(e,o):null}}};i($o,"WidgetHistory");var jc=_S(void 0);function Ws(t){let{manager:e}=MS(),o=U.use.retry(),n=new $o(e,{retrySwap:o}),r=H.use.connectedWallets(),s=H.use.loading(),a=Gs(r),l=H.use.getWalletsDetails(),p=d().blockchains(),u=d().tokens(),m=d().swappers(),c=d().fetchStatus,h={history:n,wallets:{isLoading:s,details:r,totalBalance:a,refetch:l},meta:{blockchains:p,tokens:u,swappers:m,loadingStatus:c}};return $S.createElement(jc.Provider,{value:h},t.children)}i(Ws,"WidgetInfo");function Xc(){let t=DS(jc);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(Xc,"useWidget");function yr(t){let{onUpdateState:e,config:o}=t;return FS(()=>{Xs({API_KEY:o?.apiKey||Do,BASE_URL:o?.apiUrl||Ps})},[o]),Bs.createElement(cn,{config:o,onUpdateState:e},Bs.createElement(Vc,{apiKey:o.apiKey},Bs.createElement(Ws,null,t.children)))}i(yr,"WidgetProvider");function Kc(t){return t.config?.externalWallets?Ns.createElement(hr,null):Ns.createElement(yr,{config:t.config??Sr},Ns.createElement(hr,null))}i(Kc,"Widget");export{MD as MainEvents,HD as Networks,jD as PendingSwapNetworkStatus,$D as RouteEventType,_D as StepEventType,DD as StepExecutionBlockedEventStatus,FD as StepExecutionEventStatus,zD as WalletEvents,QD as WalletTypes,Kc as Widget,yr as WidgetProvider,cn as WidgetWallets,Hr as customizedThemeTokens,qD as readAccountAddress,Fl as useWallets,Xc as useWidget,OD as useWidgetEvents};
2
2
  //# sourceMappingURL=index.js.map