@rango-dev/widget-embedded 0.30.1 → 0.31.1-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +1 -653
  3. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  4. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  5. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  6. package/dist/components/CustomDestination/CustomDestination.d.ts +4 -0
  7. package/dist/components/CustomDestination/CustomDestination.d.ts.map +1 -0
  8. package/dist/components/CustomDestination/CustomDestination.styles.d.ts +495 -0
  9. package/dist/components/CustomDestination/CustomDestination.styles.d.ts.map +1 -0
  10. package/dist/components/CustomDestination/CustomDestination.types.d.ts +7 -0
  11. package/dist/components/CustomDestination/CustomDestination.types.d.ts.map +1 -0
  12. package/dist/components/FilterSelector/FilterSelector.d.ts +4 -0
  13. package/dist/components/FilterSelector/FilterSelector.d.ts.map +1 -0
  14. package/dist/components/FilterSelector/FilterSelector.style.d.ts +962 -0
  15. package/dist/components/FilterSelector/FilterSelector.style.d.ts.map +1 -0
  16. package/dist/components/FilterSelector/FilterSelector.type.d.ts +14 -0
  17. package/dist/components/FilterSelector/FilterSelector.type.d.ts.map +1 -0
  18. package/dist/components/FilterSelector/FilterSelectorContent.d.ts +4 -0
  19. package/dist/components/FilterSelector/FilterSelectorContent.d.ts.map +1 -0
  20. package/dist/components/FilterSelector/index.d.ts +2 -0
  21. package/dist/components/FilterSelector/index.d.ts.map +1 -0
  22. package/dist/components/Quote/Quote.styles.d.ts +3 -3
  23. package/dist/components/RefreshModal/RefreshModal.styles.d.ts +3 -3
  24. package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
  25. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  26. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  27. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  28. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  29. package/dist/containers/Inputs/Inputs.d.ts.map +1 -1
  30. package/dist/containers/Wallets/Wallets.d.ts.map +1 -1
  31. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -1
  32. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +5 -1
  33. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -1
  34. package/dist/hooks/useObserveBalanceChanges/index.d.ts +2 -0
  35. package/dist/hooks/useObserveBalanceChanges/index.d.ts.map +1 -0
  36. package/dist/hooks/useObserveBalanceChanges/useObserveBalanceChanges.d.ts +4 -0
  37. package/dist/hooks/useObserveBalanceChanges/useObserveBalanceChanges.d.ts.map +1 -0
  38. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +2 -2
  39. package/dist/hooks/useTheme.d.ts.map +1 -1
  40. package/dist/hooks/useUpdateQuoteInputs/index.d.ts +2 -0
  41. package/dist/hooks/useUpdateQuoteInputs/index.d.ts.map +1 -0
  42. package/dist/hooks/useUpdateQuoteInputs/useUpdateQuoteInputs.d.ts +3 -0
  43. package/dist/hooks/useUpdateQuoteInputs/useUpdateQuoteInputs.d.ts.map +1 -0
  44. package/dist/index.d.ts +4 -4
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +2 -2
  47. package/dist/index.js.map +4 -4
  48. package/dist/pages/HistoryPage.d.ts.map +1 -1
  49. package/dist/pages/Home.d.ts.map +1 -1
  50. package/dist/pages/WalletsPage.d.ts.map +1 -1
  51. package/dist/services/cacheService.d.ts +21 -0
  52. package/dist/services/cacheService.d.ts.map +1 -0
  53. package/dist/store/notification.d.ts.map +1 -1
  54. package/dist/store/slices/config.d.ts +2 -1
  55. package/dist/store/slices/config.d.ts.map +1 -1
  56. package/dist/store/slices/data.d.ts +2 -1
  57. package/dist/store/slices/data.d.ts.map +1 -1
  58. package/dist/store/utils/data.d.ts +20 -0
  59. package/dist/store/utils/data.d.ts.map +1 -0
  60. package/dist/store/utils/data.test.d.ts +2 -0
  61. package/dist/store/utils/data.test.d.ts.map +1 -0
  62. package/dist/store/utils/index.d.ts +2 -0
  63. package/dist/store/utils/index.d.ts.map +1 -0
  64. package/dist/test-utils/fixtures.d.ts +1 -0
  65. package/dist/test-utils/fixtures.d.ts.map +1 -1
  66. package/dist/types/config.d.ts +5 -0
  67. package/dist/types/config.d.ts.map +1 -1
  68. package/dist/types/event.d.ts +21 -15
  69. package/dist/types/event.d.ts.map +1 -1
  70. package/dist/types/notification.d.ts +1 -0
  71. package/dist/types/notification.d.ts.map +1 -1
  72. package/dist/types/quote.d.ts +9 -1
  73. package/dist/types/quote.d.ts.map +1 -1
  74. package/dist/types/wallets.d.ts +1 -1
  75. package/dist/types/wallets.d.ts.map +1 -1
  76. package/dist/utils/events.d.ts +8 -0
  77. package/dist/utils/events.d.ts.map +1 -0
  78. package/dist/utils/settings.d.ts +1 -1
  79. package/dist/utils/swap.d.ts +1 -1
  80. package/dist/utils/swap.d.ts.map +1 -1
  81. package/dist/widget-embedded.build.json +1 -1
  82. package/package.json +10 -10
  83. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +1 -49
  84. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +61 -179
  85. package/src/components/ConfirmWalletsModal/WalletList.tsx +16 -4
  86. package/src/components/CustomDestination/CustomDestination.styles.ts +45 -0
  87. package/src/components/CustomDestination/CustomDestination.tsx +148 -0
  88. package/src/components/CustomDestination/CustomDestination.types.ts +7 -0
  89. package/src/components/FilterSelector/FilterSelector.style.ts +95 -0
  90. package/src/components/FilterSelector/FilterSelector.tsx +42 -0
  91. package/src/components/FilterSelector/FilterSelector.type.ts +15 -0
  92. package/src/components/FilterSelector/FilterSelectorContent.tsx +60 -0
  93. package/src/components/FilterSelector/index.ts +1 -0
  94. package/src/components/SearchInput/SearchInput.tsx +2 -0
  95. package/src/components/SwapDetails/SwapDetails.styles.ts +10 -0
  96. package/src/components/SwapDetails/SwapDetails.tsx +25 -13
  97. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +28 -13
  98. package/src/components/TokenList/TokenList.tsx +8 -2
  99. package/src/containers/Inputs/Inputs.tsx +1 -0
  100. package/src/containers/Wallets/Wallets.tsx +7 -2
  101. package/src/containers/WidgetInfo/WidgetInfo.tsx +26 -0
  102. package/src/containers/WidgetInfo/WidgetInfo.types.ts +5 -1
  103. package/src/hooks/useObserveBalanceChanges/index.ts +1 -0
  104. package/src/hooks/useObserveBalanceChanges/useObserveBalanceChanges.ts +68 -0
  105. package/src/hooks/useTheme.ts +11 -5
  106. package/src/hooks/useUpdateQuoteInputs/index.ts +1 -0
  107. package/src/hooks/useUpdateQuoteInputs/useUpdateQuoteInputs.ts +50 -0
  108. package/src/index.ts +4 -0
  109. package/src/pages/HistoryPage.tsx +180 -26
  110. package/src/pages/Home.tsx +6 -3
  111. package/src/pages/WalletsPage.tsx +29 -13
  112. package/src/services/cacheService.ts +35 -0
  113. package/src/store/notification.ts +13 -1
  114. package/src/store/quote.ts +1 -1
  115. package/src/store/slices/config.ts +39 -1
  116. package/src/store/slices/data.test.ts +84 -0
  117. package/src/store/slices/data.ts +44 -24
  118. package/src/store/utils/data.test.ts +175 -0
  119. package/src/store/utils/data.ts +117 -0
  120. package/src/store/utils/index.ts +1 -0
  121. package/src/test-utils/fixtures.ts +14 -7
  122. package/src/types/config.ts +3 -1
  123. package/src/types/event.ts +32 -16
  124. package/src/types/notification.ts +1 -0
  125. package/src/types/quote.ts +11 -0
  126. package/src/types/wallets.ts +1 -1
  127. package/src/utils/events.ts +27 -0
  128. package/src/utils/swap.ts +4 -4
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- var Rf=Object.defineProperty;var i=(t,e)=>Rf(t,"name",{value:e,configurable:!0});import{EventSeverity as M2,RouteEventType as L2,StepEventType as B2,StepExecutionBlockedEventStatus as P2,StepExecutionEventStatus as _2}from"@rango-dev/queue-manager-rango-preset";import{readAccountAddress as $2,useWallets as wr,Events as F2}from"@rango-dev/wallets-react";import{Networks as U2,WalletTypes as Q2}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as q2}from"rango-types";import{UI_ID as eg}from"@rango-dev/ui";var In="c6381a79-2817-4602-83bf-6a641a409e32",dl="https://api.rango.exchange",fl="https://explorer.rango.exchange",he={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...eg};var gl="Roboto",wi=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];import{Events as Ui,Provider as Kg}from"@rango-dev/wallets-react";import{isEvmBlockchain as jg}from"rango-sdk";import Hn,{createContext as Yg,useEffect as pp,useMemo as Zg,useRef as cp}from"react";import{useEffect as kg}from"react";import{create as Sg}from"zustand";import{subscribeWithSelector as Cg}from"zustand/middleware";import tg from"mitt";var we=tg(),og={on:we.on,off:we.off};import{RangoClient as hg}from"rango-sdk";import{BlockchainCategories as pg,WalletState as Ct}from"@rango-dev/ui";import{readAccountAddress as cg}from"@rango-dev/wallets-react";import{detectInstallLink as ug,getCosmosExperimentalChainInfo as mg,isEvmAddress as dg,KEPLR_COMPATIBLE_WALLETS as ux,Networks as Il}from"@rango-dev/wallets-shared";import Ni from"bignumber.js";import{isCosmosBlockchain as fg}from"rango-types";import ng from"bignumber.js";var $e=new ng(0);import{WalletTypes as rg}from"@rango-dev/wallets-shared";var hl=[rg.LEAP];import{BlockchainCategories as xi,WalletState as lg}from"@rango-dev/ui";import{TransactionType as An}from"rango-sdk";function To(t){return Array.from(new Set(t))}i(To,"removeDuplicateFrom");function Ii(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(Ii,"areEqual");function vl(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(vl,"debounce");function Et(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(Et,"containsText");function Cl(t,e){return t.toLowerCase()===e.toLowerCase()}i(Cl,"exactText");function Tl(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(Tl,"startWithText");var _=i(()=>document.getElementById(he.SWAP_BOX_ID),"getContainer"),Qo=i(()=>document.getElementById(he.EXPANDED_BOX_ID),"getExpanded");function kl(t,e,o){let n=!!e&&Cl(e,t),r=!!o&&Cl(o,t);return n!==r?n?-1:1:0}i(kl,"compareExactMatchText");function bi(t,e,o){let n=!!e&&Et(e,t),r=!!o&&Et(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(bi,"compareContainsText");function Ei(t,e,o){let n=!!e&&Tl(e,t),r=!!o&&Tl(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(Ei,"compareStartWithText");function wl(t,e,o){if(!o)return 0;let n=kl(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=kl(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=Ei(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=bi(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=Ei(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=bi(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=Ei(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=bi(o,t.address,e.address);if(r!==0)return r}return 0}i(wl,"compareWithSearchFor");var Wn=i((t,e)=>{switch(e){case xi.ALL:return!0;case xi.UTXO:return t===An.TRANSFER;case xi.OTHER:return t!==An.TRANSFER&&t!==An.COSMOS&&t!==An.EVM;default:return t===e}},"isBlockchainTypeInCategory"),xl=i(t=>wi.find(o=>o.value===t)?.url,"getFontUrlByName");function Nn(t,e){let o=!!t.find(n=>n.state===lg.CONNECTED);return e===!1&&o}i(Nn,"isSingleWalletActive");function Mn(t,e){return e.find(o=>o.name===t)?.displayName}i(Mn,"getBlockchainDisplayNameFor");function Je(t,e){return e.find(o=>o.name===t)?.shortName}i(Je,"getBlockchainShortNameFor");function bl(t,e){return e.find(o=>o.name===t)?.logo}i(bl,"getBlockchainImage");function zo(t,e){return e.find(o=>o.id===t)?.title}i(zo,"getSwapperDisplayName");function Ai(t,e){return e.find(o=>o.name===t)??null}i(Ai,"findBlockchain");function Wi(t,e){if(!e||!t)return!1;for(let o of e.feeAssets)if(t?.blockchain===o?.blockchain&&t?.symbol===o?.symbol&&t?.address===o?.address)return!0;return!1}i(Wi,"isTokenNative");function Ft(t){return`${t.blockchain}-${t.symbol}-${t.address??""}`}i(Ft,"createTokenHash");import{BigNumber as El}from"bignumber.js";var qo=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),M=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new El(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new El(n.toFixed(s,r)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),r);for(let s=e||4;s<17;s++)if(n.gte(Math.pow(10,-s)))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,s))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var Ln=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var St=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Ho=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Mi(t){switch(!0){case t.connected:return Ct.CONNECTED;case t.connecting:return Ct.CONNECTING;case!t.installed:return Ct.NOT_INSTALLED;default:return Ct.DISCONNECTED}}i(Mi,"mapStatusToWalletState");function Al(t,e,o,n){return o.filter(r=>!hl.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:p}=t(r);return s&&(!l||!!n&&p!==n)?!1:n?!!a.find(c=>c.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:p,namespaces:u,singleNamespace:c,supportedChains:m,needsDerivationPath:f}=e(r),d=To(m.map(S=>S.type)),g=Mi(t(r));return{title:a,image:s,link:ug(l),state:g,type:r,showOnMobile:p,namespaces:u,singleNamespace:c,blockchainTypes:d,needsDerivationPath:f}})}i(Al,"mapWalletTypesToWalletInfo");function _n(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(_n,"walletAndSupportedChainsNames");function Wl(t,e,o,n,r){let a=[];function s(p,u){if(!!!a.find(m=>m.chain===p)){let m={address:u,chain:p,walletType:t};a.push(m)}}i(s,"addAccount");let l=n||[];return e.forEach(p=>{let{address:u,network:c}=cg(p),m=l.length>0,f=l.includes(c),d=c===Il.Unknown;if(m&&!f&&!d)return;let S=c===Il.Unknown&&dg(u);if(d&&!S)return;o.includes(c)||S?r?s(c,u.toLowerCase()):l.filter(T=>o.includes(T)).forEach(T=>{s(T,u.toLowerCase())}):s(c,u)}),a}i(Wl,"prepareAccountsForWalletStore");function Jt(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:p}=r;p.forEach((u,c)=>{let m=u.from.blockchain,f=u.to.blockchain,d=a===o.swaps.length-1,g=c===p.length-1;(!d&&!g||d&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(f)})}e==="all"&&n.add(l)}),Array.from(n)}i(Jt,"getQuoteWallets");function Dn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Dn,"isAccountAndWalletMatched");function Nl(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 Ni(r.amount.amount).shiftedBy(-r.amount.decimals).toFixed(),logo:"",usdPrice:e(r.asset)?.usdPrice||null}))||[]}i(Nl,"makeBalanceFor");function Ml(t){return{...t,loading:!1,error:!0}}i(Ml,"resetConnectedWalletState");var Ll=i(t=>{let e=new Set,n=t?.reduce((a,s)=>a.findIndex(l=>l.address===s.address&&l.chain===s.chain)===-1?[...a,s]:a,[])?.map(a=>{let s={name:a.chain,accounts:[]};return e.has(a.address)||e.add(a.address),e.forEach(l=>{a.address===l&&s.accounts.push(a)}),s}),r=M(n?.flatMap(a=>a.accounts)?.flatMap(a=>a?.balances)?.map(a=>new Ni(a?.amount||$e).multipliedBy(a?.usdPrice||0))?.reduce((a,s)=>a.plus(s),$e)||$e).toString();return gg(r)},"calculateWalletUsdValue");function gg(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(gg,"numberWithThousandSeparator");var $n=i((t,e)=>{let o=mg(Object.entries(t).map(([,n])=>n).filter(fg));return o&&o[e]?.experimental},"isExperimentalChain");function Fn(t){return t?{...t,amount:M(t.amount,8,8),usdValue:M(t.usdValue,4,4)}:null}i(Fn,"formatBalance");function Bl(t,e){return t?.usdValue||e?.usdValue?parseFloat(e?.usdValue||"0")-parseFloat(t?.usdValue||"0"):t?.amount||e?.amount?parseFloat(e?.amount||"0")-parseFloat(t?.amount||"0"):0}i(Bl,"compareTokenBalance");function Rt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Rt,"areTokensEqual");function Pl(t){return t.sort((e,o)=>+(o.state===Ct.CONNECTED)-+(e.state===Ct.CONNECTED)||+(o.state===Ct.DISCONNECTED||o.state===Ct.CONNECTING)-+(e.state===Ct.DISCONNECTED||e.state===Ct.CONNECTING))}i(Pl,"sortWalletsBasedOnConnectionState");function On(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(On,"getConciseAddress");function _l({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(_l,"getAddress");function Un(t){return t.flatMap(e=>e.balances).reduce((e,o)=>{let n={amount:o?.amount??"",decimals:o?.decimal??0,usdValue:o?.usdPrice?new Ni(o?.usdPrice??$e).multipliedBy(o?.amount).toString():""},r=o?Ft({symbol:o.symbol,blockchain:o.chain,address:o.address}):null,a=r?e[r]:null;return r&&(!a||a&&a.amount<n.amount)&&(e[r]=n),e},{})}i(Un,"makeTokensBalance");var Dl=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function $l(t){return t.map(e=>e.state).join("-")}i($l,"hashWalletsState");function Fl(t,e){let o=new Set;return t.forEach(r=>{r.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(r=>o.has(r.type))}i(Fl,"filterBlockchainsByWalletTypes");function Ol(t,e){return e===pg.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Wn(n,e))return!0;return!1})}i(Ol,"filterWalletsByCategory");var Li={API_KEY:In};function It(t){return Li[t]||""}i(It,"getConfig");function Ul(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Li=e,Li}i(Ul,"initConfig");var Ql=20,zl=25,Bi="theme-widget",Go=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Rt(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Rt(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),Pi=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),ql=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Qn,Ot=i(()=>Qn||(Qn=new hg(It("API_KEY"),It("BASE_URL")),Qn),"httpService");import{WidgetEvents as Hl}from"@rango-dev/queue-manager-rango-preset";var _i=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(_i||{}),Di=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(Di||{}),Vo=(r=>(r[r.RouteEvent=Hl.RouteEvent]="RouteEvent",r[r.StepEvent=Hl.StepEvent]="StepEvent",r.QuoteEvent="quoteEvent",r.WalletEvent="walletEvent",r))(Vo||{});var yg=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"),Ut=yg;var te=Ut(Sg()(Cg((t,e)=>({connectedWallets:[],balances:{},loading:!1,connectWallet:(o,n)=>{we.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}});let r=e().getWalletsDetails;t(a=>({loading:!0,connectedWallets:a.connectedWallets.filter(s=>s.walletType!==o[0].walletType).concat(o.map(s=>{let l=!a.connectedWallets.some(p=>p.chain===s.chain&&p.selected&&p.walletType!==s.walletType);return{balances:[],address:s.address,chain:s.chain,explorerUrl:null,walletType:s.walletType,selected:l,loading:!0,error:!1}}))})),r(o,n)},disconnectWallet:o=>{t(n=>{n.connectedWallets.find(l=>l.walletType===o)&&we.emit("walletEvent",{type:"disconnect",payload:{walletType:o}});let r=n.connectedWallets.filter(l=>l.selected&&l.walletType!==o).map(l=>l.chain),a=n.connectedWallets.filter(l=>l.walletType!==o).map(l=>r.includes(l.chain)?l:(r.push(l.chain),{...l,selected:!0}));return{balances:Un(a),connectedWallets:a}})},selectWallets:o=>t(n=>({connectedWallets:n.connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r})})),clearConnectedWallet:()=>t(()=>({connectedWallets:[],selectedWallets:[]})),getWalletsDetails:async(o,n,r=!0)=>{let a=e().getWalletsDetails;t(s=>({loading:!0,connectedWallets:s.connectedWallets.map(l=>o.find(p=>Dn(p,l))?{...l,loading:!0}:l)}));try{let s=o.map(({address:u,chain:c})=>({address:u,blockchain:c})),p=(await Ot().getWalletsDetails(s)).wallets;if(p)t(u=>{let c=u.connectedWallets.map(f=>{let d=o.find(S=>Dn(S,f)),g=p.find(S=>S.address===f.address&&S.blockChain===f.chain);return g?.failed&&d&&r&&a([d],n,!1),d&&g?{...f,explorerUrl:g.explorerUrl,balances:Nl(g,n),loading:!1}:f});return{loading:!1,balances:Un(c),connectedWallets:c}});else throw new Error("Wallet not found")}catch{t(l=>{let p=l.connectedWallets.map(c=>o.find(m=>Dn(m,c))?Ml(c):c);return{loading:!1,balances:Un(p),connectedWallets:p}})}},getBalanceFor:o=>{let{balances:n}=e(),r=Ft(o);return n[r]??null}}))));import{allProviders as Tg}from"@rango-dev/provider-all";function zn(t,e){let o=Tg({walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0});if(t){let n=[];return t.forEach(r=>{if(typeof r=="string"){let a=o.find(s=>s.config.type===r);a?n.push(a):console.warn(`Couldn't find ${r} provider. Please make sure you are passing the correct name.`)}else n.push(r)}),n}return o}i(zn,"matchAndGenerateProviders");function Gl(t,e){return zn(t,e).map(r=>r.config.type)}i(Gl,"configWalletsToWalletName");function Vl(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(Vl,"hashProviders");function $i(t,e){let o=te.use.clearConnectedWallet(),n=zn(t,e);return kg(()=>{o(),n=zn(t,e)},[Vl(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:n}}i($i,"useWalletProviders");import Qg,{createContext as zg,useContext as qg,useEffect as Hg,useRef as Gg}from"react";import{create as Og}from"zustand";import{persist as Ug}from"zustand/middleware";var Fi={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"}},vg={clientUrl:void 0},wg={liquiditySources:void 0},Xl=i((t,e,o)=>({config:{...Fi,...t},iframe:vg,campaignMode:wg,getLiquiditySources:()=>{let{config:n,campaignMode:r}=o();return r.liquiditySources?.length?r.liquiditySources:n.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:n,campaignMode:r}=o();return r.liquiditySources?.length?[]:n},excludeLiquiditySources:()=>{let{config:n,campaignMode:r}=o();return r.liquiditySources?.length?!1:!!n.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:n}=o();return!!n.liquiditySources?.length},updateConfig:n=>{let r=o().config;e({config:{...r,...n}})},updateCampaignMode:(n,r)=>{let a=o().campaignMode;e({campaignMode:{...a,[n]:r}})},updateIframe:(n,r)=>{let a=o().iframe;e({iframe:{...a,[n]:r}})}}),"createConfigSlice");function qn(t,e){let o=t.map(a=>a.swapperGroup),n=[];return To(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(p=>p===s.swapperGroup)),l&&s.types.map(p=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:p,selected:!e.includes(s.swapperGroup)})})}}),n}i(qn,"getUniqueSwappersGroups");function Kl(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Kl,"sortLiquiditySourcesByGroupTitle");function Re(t,e){return e?.[t]==="hidden"}i(Re,"isFeatureHidden");function jl(t,e){return e?.[t]==="enabled"}i(jl,"isFeatureEnabled");var Yl=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config,s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(p=>!(s.length>0&&!s.includes(p.name)))},tokens:o=>{let n=e()._tokensMapByTokenHash,r=Array.from(n?.values()||[]),a=e()._blockchainsMapByName;if(!o||!o?.type)return r;let s=e().config,l=(o.type==="source"?s.from?.tokens:s.to?.tokens)??{},p=e().blockchains({type:o.type});return r.filter(c=>l&&Go(c,l)||o.blockchain&&c.blockchain!==o.blockchain||!p.some(m=>m.name===c.blockchain)?!1:o.searchFor?!!(Et(c.symbol,o.searchFor)||Et(c.address||"",o.searchFor)||Et(c.name||"",o.searchFor)):!0).sort((c,m)=>{let f=e().isTokenPinned(c,o.type),d=e().isTokenPinned(m,o.type);if(f!==d)return f?-1:1;if(o.getBalanceFor){let T=o.getBalanceFor(c),k=o.getBalanceFor(m),v=Bl(T,k);if(v!==0)return v}let g=a.get(c.blockchain),S=a.get(m.blockchain),C=Wi(c,g),y=Wi(m,S);if(C!==y)return C?-1:1;if(c.isPopular!==m.isPopular)return c.isPopular?-1:1;if(o.searchFor){let T=wl(c,m,o.searchFor);if(T)return T}return c.isSecondaryCoin!==m.isSecondaryCoin?c.isSecondaryCoin?1:-1:g&&S?g.sort-S.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=Ft(o);return n.get(r)},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Rt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(u=>{let c=a?.includes(u.swapperGroup);return s||!a||a.length===0?!c:c}).sort(Kl)},fetch:async()=>{try{let{enableCentralizedSwappers:o}=e().config,n=await Ot().getAllMetadata({enableCentralizedSwappers:o});t({fetchStatus:"success"});let r=new Map,a=new Map,s=[],l=n.popularTokens,p=n.swappers,u=new Set;n.tokens.forEach(m=>{u.add(m.blockchain),s.push(m)}),n.blockchains.sort((m,f)=>m.sort-f.sort).forEach(m=>{m.enabled&&u.has(m.name)&&r.set(m.name,m)}),s.forEach(m=>{let f=Ft(m);a.set(f,m)}),t({_blockchainsMapByName:r,_tokensMapByTokenHash:a,_popularTokens:l,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Chinese as xg,English as bg,Finland as Eg,French as Ig,German as Ag,Greece as Wg,Italian as Ng,Japanese as Mg,Netherlands as Lg,Poland as Bg,Portuguese as Pg,Russian as _g,Spanish as Dg,Swedish as $g,Ukrainian as Fg}from"@rango-dev/ui";var Zl=[{title:"English",label:"English",local:"en",SVGFlag:bg},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:Dg},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:Ig},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:Mg},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:Pg},{title:"Chinese",label:"\u4E2D\u56FD\u4EBA",local:"zh",SVGFlag:xg},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:_g},{title:"German",label:"Deutsch",local:"de",SVGFlag:Ag},{title:"Ukrainian",label:"\u0423\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:Fg},{title:"Swedish",label:"svenska",local:"sv",SVGFlag:$g},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:Eg},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:Lg},{title:"Greek",label:"Grieks",local:"el",SVGFlag:Wg},{title:"Italian",label:"Italiana",local:"it",SVGFlag:Ng},{title:"Polish",label:"Polski",local:"pl",SVGFlag:Bg}],ko="en";var Jl=[.5,1,3],Rl=1,ep=5,tp=100,op=0;var np=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Rl,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let p=s===o,u=l<=9;return p&&u}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},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 a=To(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),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,theme:r}=o,a=Re("theme",n),s=Re("language",n),l=Re("liquiditySource",n),p=r?.singleTheme,u=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...p&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||ko},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...u&&{language:o.language||ko}})}}),"createSettingsSlice");function rp(t){return Og()(Ug((...e)=>({...Yl(...e),...np(...e),...Xl(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(rp,"createAppStore");var ip=zg(null);function h(){let t=qg(ip);if(Hg(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(h,"useAppStore");function ap(t){let e=Gg();return e.current||(e.current=rp(t.config)),Qg.createElement(ip.Provider,{value:e.current},t.children)}i(ap,"AppStoreProvider");import{create as Xg}from"zustand";var sp="rango-widget";var Xo=class{static{i(this,"TabManager")}tabId;state="not-initiated";lastTryClaim;events={};channel;constructor(e){this.channel=new BroadcastChannel(sp),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}init=()=>{this.initEvents(),this.tryClaim()};forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};isClaimed=()=>this.state==="claimed";destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};initEvents(){this.channel.addEventListener("message",this.handleMessageEvent),document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("resume",this.handleResume)}claimedByCurrentTab(e){let o=this.lastTryClaim&&this.lastTryClaim<e;if(this.isClaimed()||o){let n={name:"pong"};this.channel.postMessage(n);return}}handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};alreadyClaimedByAnotherTab(){this.resetLastCheck()}async tryClaim(){return this.setLastCheck(),new Promise(e=>{setTimeout(()=>{this.check(),e()},300)})}check(){this.state==="not-initiated"&&this.events.onInit?.(),this.lastTryClaim?(this.claim(),this.resetLastCheck()):this.state="not-claimed"}claim(){this.state="claimed",this.events.onClaim?.()}setLastCheck(){this.lastTryClaim=Date.now();let e={name:"ping",pingAt:this.lastTryClaim};this.channel.postMessage(e)}resetLastCheck(){this.lastTryClaim=void 0}forceRelease(e){if(this.isClaimed()){this.state="not-claimed",this.events.onRelease?.();let o={name:"force-release",candidateId:e};this.channel.postMessage(o)}}};var ae=Ut(Xg()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",fetchingApiConfig:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})}}))),eo=new Xo({onInit:()=>ae.setState({tabManagerInitiated:!0}),onClaim:()=>ae.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ae.setState({isActiveTab:!1})});var Gn=Yg({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function Jg(t){let{updateConfig:e,updateSettings:o,fetch:n}=h(),r=h().blockchains(),{findToken:a}=h(),s=h().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:p}=$i(s.wallets,l),{connectWallet:u,disconnectWallet:c}=te(),m=cp(),f=cp();pp(()=>{n().catch(console.log)},[]),pp(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config]);let d=r.filter(jg).map(y=>y.name),g=i((y,T,k,v,I)=>{if(T===Ui.ACCOUNTS)if(k){let W=_n(I.supportedBlockchains),x=Wl(y,k,d,W,I.isContractWallet);x.length&&u(x,a)}else c(y),f.current?f.current(y):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?");if(T===Ui.ACCOUNTS&&v.connected){let W=`${y}-${v.network}-${k}`;v.connected&&(m.current?m.current(W):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(T===Ui.NETWORK&&v.network){let W=`${y}-${v.network}`;m.current?m.current(W):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(y,T,k,v,I)},"onUpdateState"),S=ae.use.isActiveTab(),C=Zg(()=>({onConnectWallet:y=>{m.current=y},onDisconnectWallet:y=>{f.current=y}}),[]);return Hn.createElement(Gn.Provider,{value:C},Hn.createElement(Kg,{allBlockChains:r,providers:p,onUpdateState:g,autoConnect:!!S},t.children))}i(Jg,"Main");function Vn(t){let{config:e,...o}=t;return Hn.createElement(ap,{config:e},Hn.createElement(Jg,{...o,config:e}))}i(Vn,"WidgetWallets");import vi from"react";import Rg,{Fragment as eh}from"react";import{MemoryRouter as th,useInRouterContext as oh}from"react-router";function up({children:t}){let o=oh()?eh:th;return Rg.createElement(o,null,t)}i(up,"AppRouter");import{I18nManager as hw}from"@rango-dev/ui";import cl from"react";import Ge from"react";import{useRoutes as ow}from"react-router-dom";var q={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as xo,useRef as nr}from"react";import Oe from"bignumber.js";import{create as ih}from"zustand";import{subscribeWithSelector as ah}from"zustand/middleware";import{getLastSuccessfulStep as rh}from"@rango-dev/queue-manager-rango-preset";import VE from"bignumber.js";function Qi(t,e){return{"Network Fee":e("Network Fee"),"Swapper Fee":e("Protocol Fee"),"Affiliate Fee":e("Affiliate Fee"),"Outbound network fee":e("Outbound Fee"),"Rango Fee":e("Rango Fee")}[t]}i(Qi,"getFeeLabel");var zi=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],mp=30;import{i18n as pt}from"@lingui/core";import{RouteEventType as NE}from"@rango-dev/queue-manager-rango-preset";import Fe from"bignumber.js";import{PendingSwapNetworkStatus as jn}from"rango-types";function Xn(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Xn,"isValidAddress");import{i18n as Be}from"@lingui/core";var oe=i(()=>({genericServerError:Be.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Be.t("Please reset your liquidity sources."),description:Be.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Be.t("No Routes Found."),description:Be.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:Be.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Be.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Be.t("High Price Impact"),title:Be.t("Price impact is too high!"),description:Be.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Be.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Be.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Be.t("USD Price Unknown"),title:Be.t("USD Price Unknown, Cannot calculate Price Impact."),description:Be.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Be.t("Confirm USD Price Unknown")}}),"errorMessages");function dp(t){switch(t.type){case 0:return t.diagnosisMessage??oe().noResultError.title;case 1:return oe().genericServerError;default:return""}}i(dp,"getQuoteErrorMessage");import{i18n as Kn}from"@lingui/core";var to=i(()=>({connectWallet:Kn.t("Connect Wallet"),swap:Kn.t("Swap"),swapAnyway:Kn.t("Swap anyway"),ethWarning:Kn.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function fp(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new Fe(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new Fe(1e3)))??!1}i(fp,"hasHighValueLoss");function gp(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Fe(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Fe(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(gp,"hasLimitError");function hp(t){let e=(t||[]).filter(l=>{let p=l.fromAmountMinValue?new Fe(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new Fe(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 Fe(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Fe(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=pt.t({id:"Required: >= {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=pt.t({id:"Required: > {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=pt.t({id:"Required: <= {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=pt.t({id:"Required: < {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(hp,"getLimitErrorMessage");function yp(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:p}=t;return e!=="success"?{title:to().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:to().swap,action:"confirm-swap",disabled:!0}:s?{title:to().swapAnyway,action:"confirm-warning",disabled:!1}:p?{title:to().ethWarning,action:"confirm-warning",disabled:!1}:{title:to().swap,action:"confirm-swap",disabled:!1}:{title:to().connectWallet,action:"connect-wallet",disabled:!1}}i(yp,"getSwapButtonState");function qi(t,e,o){return!((!o||o.lte($e))&&t&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t)}i(qi,"canComputePriceImpact");function Hi(t,e){let o=$e;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Fe(r.amount).multipliedBy(a||0))}return o}i(Hi,"getUsdFeeOfStep");function Yn(t,e){return t.reduce((o,n)=>o.plus(Hi(n,e)),$e)}i(Yn,"getTotalFeeInUsd");function Gi(t){let e=$e;return e=e.plus(new Fe(t.amount).multipliedBy(t.price||0)),e}i(Gi,"getUsdFee");function Sp(t){return t.reduce((e,o)=>e.plus(Gi(o)),$e)}i(Sp,"getTotalFeesInUsd");function Cp(t){return t.reduce((e,o)=>{for(let n of o.fee){let r=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[r]=[...a[r]||[],n]}return e},{payable:{},nonePayable:{}})}i(Cp,"getFeesGroup");function Tp(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(Tp,"checkSlippageErrors");function kp(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(kp,"checkSlippageWarnings");function Zn(t){return t.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(Zn,"getMinRequiredSlippage");function vp(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(vp,"hasProperSlippage");function wp(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:p,slippage:u,affiliateRef:c,affiliatePercent:m,affiliateWallets:f,destination:d,enableCentralizedSwappers:g}=t,S=a?.reduce((T,k)=>(T[k.chain]=k.address,T),{}),C=[];return r?.forEach(T=>{C.push({blockchain:T.chain,addresses:[T.address]})}),{amount:n.toString(),affiliateRef:c??void 0,affiliatePercent:m??void 0,affiliateWallets:f??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:C,selectedWallets:S??{},slippage:u.toString(),...d&&{destination:d},...p&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!p&&{swapperGroups:l?.filter(T=>!s.includes(T)),swappersGroupsExclude:!1},enableCentralizedSwappers:g}}i(wp,"createQuoteRequestBody");function xp(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(xp,"getWalletsForNewSwap");function vo(t){return t?.outputAmount||null}i(vo,"getQuoteOutputAmount");function bp(t,e){return new Fe(e).div(new Fe(t)).minus(1).multipliedBy(100).toNumber()}i(bp,"getPercentageChange");function Ep(t,e){let o=vo(t),n=vo(e);if(!o||!n)return!1;let r=et(o,n);return r?r<=-1:!0}i(Ep,"isOutputAmountChangedALot");function Ip(t,e,o){let n=t.validationStatus,r=Jt({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>Bp(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,p=M(new Fe(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),u=M(new Fe(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),c="";return s.reason==="FEE"&&(c=pt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(c=pt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(c=pt.t(" for input and network fee")),pt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:u,symbol:l,reason:c,currentAmount:p,blockchain:Je(s.asset.blockchain,o)}})})}i(Ip,"generateBalanceWarnings");function Jn(t,e){return(t?new Fe(t):$e).multipliedBy(e||0)}i(Jn,"calcOutputUsdValue");function Ko(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==jn.NetworkChanged}i(Ko,"isNetworkStatusInWarningState");function Ap(t,e){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),Ko(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case jn.WaitingForConnectingWallet:n=n||pt.t("Waiting for connecting wallet");break;case jn.WaitingForQueue:n=n||pt.t("Waiting for other running tasks to be finished");break;case jn.WaitingForNetworkChange:n=n||pt.t("Waiting for changing wallet network");break;default:n=n||"";break}r=r||"",n=n||"";let s=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:r,long:s}}}i(Ap,"getSwapMessages");function Wp(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(Wp,"getLastConvertedTokenInFailedSwap");function Np(t){return t.status==="failed"}i(Np,"shouldRetrySwap");function Mp(t,e,o,n,r,a){if(!n||t)return!0;let s=Jt({filter:"all",quote:n}),l=Jt({filter:"required",quote:n}),p=s.every(m=>r.some(f=>f.chain===m)),u=l.every(m=>r.some(f=>f.chain===m)),c=o&&a?Xn(a,o):!1;return!e&&!p||e&&!o||e&&!!o&&(!c||!u)}i(Mp,"isConfirmSwapDisabled");function Lp(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Lp,"isTokensIdentical");function er(t){let e=t?.swaps||[];return e[e.length-1].to.usdPrice}i(er,"getQuoteToTokenUsdPrice");function Vi(t,e){let o=t?.swaps||[],n=e?.swaps||[];return o.length!==n.length}i(Vi,"isNumberOfSwapsChanged");function Xi(t,e){let o=t?.swaps.map(r=>r.swapperId)||[],n=e?.swaps.map(r=>r.swapperId)||[];return!Ii(o,n)}i(Xi,"isQuoteSwappersUpdated");function Ki(t,e){let o=t?.swaps.map(r=>r.to.symbol)||[],n=e?.swaps.map(r=>r.to.symbol)||[];return!Ii(o,n)}i(Ki,"isQuoteInternalCoinsUpdated");function _p(t,e){return Vi(t,e)||Xi(t,e)||Ki(t,e)}i(_p,"isQuoteChanged");function Bp(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(Bp,"getRequiredBalanceOfWallet");function At(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(At,"getPriceImpactLevel");function tr(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=rh(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=Ai(a?a.toBlockchain:n.fromBlockchain,e),p=Ai(r.toBlockchain,e),u=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),c=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:u,toBlockchain:p,toToken:c,inputAmount:m}}i(tr,"createRetryQuote");function wo(t,e){let{fromToken:o,toToken:n,findToken:r,userSlippage:a}=e,s=oo(o,t.requestAmount),l=oo(n,t?.outputAmount??"");if(t&&s&&l){let c=et(s.toString(),l.toString());if(!!c&&fp(s,c)){let f=Yn(t?.swaps,r),d=At(c);return{type:0,inputUsdValue:s,outputUsdValue:l,priceImpact:c,totalFee:f,warningLevel:d}}}else if(t&&(!s||!l))return{type:1};let p=Zn(t.swaps),u=a>ep;if(vp(e.userSlippage.toString(),p)){if(u&&parseFloat(p??"0")<a)return{type:3,slippage:a.toString()}}else return{type:2,recommendedSlippages:kp(t,a),minRequiredSlippage:p};return null}i(wo,"generateQuoteWarnings");function et(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:bp(t.toString(),e.toString());return n&&n<0?n:null}i(et,"getPriceImpact");var Dp=i(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),or=i((t,e)=>e.sort((o,n)=>{let r=i(u=>u.scores?.find(c=>c.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),p=n.requestId.toLowerCase();return l.localeCompare(p)}),"sortQuotesBy"),$p=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,...r||e[0]}},"getDefaultQuote"),Fp=i(t=>{let e=i((o,n)=>{let r=zi.indexOf(o.value),a=zi.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");var oo=i((t,e)=>t?.usdPrice?new Oe(e||$e).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),Y=Ut(ih()(ah(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Oe(0),outputUsdValue:new Oe(0),toBlockchain:null,toToken:null,refetchQuote:!0,sortStrategy:"SMART",selectedQuote:null,quotes:null,error:null,warning:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null,quoteWarningsConfirmed:!1,updateQuotePartialState:(e,o)=>t(n=>({...n,[e]:o})),setSelectedQuote:e=>t(o=>{let n=null,r=$e;return Ho(o.inputAmount)?(e&&(n=e?.outputAmount?new Oe(e?.outputAmount):null,r=Jn(e?.outputAmount,er(e)||o.toToken?.usdPrice)),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new Oe(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new Oe(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new Oe(0)}})},setFromToken:e=>t(o=>({fromToken:e.token,...e.token&&{fromBlockchain:e.meta.blockchains.find(n=>n.name===e.token.blockchain)??null},...!!o.inputAmount&&{inputUsdValue:oo(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{selectedQuote:null,toToken:null,outputAmount:null,outputUsdValue:new Oe(0)}})},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 Oe(0),outputUsdValue:new Oe(0),selectedQuote:null},...!!o.fromToken&&{inputUsdValue:oo(o.fromToken,e)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:oo(n??null,s),outputUsdValue:new Oe(0),toBlockchain:r,toToken:a,selectedQuote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:e.toToken?oo(e.toToken,e.outputAmount?.toString()||""):new Oe(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new Oe(0),inputUsdValue:new Oe(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new Oe(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})})))),Op=Y.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&we.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&we.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function Up(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:p,toBlockchain:u}=Y(),c=h().config,m=h().fetchStatus,f=h().blockchains(),d=h().tokens(),{findToken:g}=h(),{setAffiliateRef:S,setAffiliatePercent:C,setAffiliateWallets:y}=h(),T=c?.from?.tokens,k=c?.from?.blockchains,v=c?.to?.tokens,I=c?.to?.blockchains,W=nr(void 0),x=nr(void 0),w=nr(void 0),b=nr(void 0);xo(()=>{typeof c.amount<"u"&&t(c.amount.toString())},[c?.amount]),xo(()=>{if(m==="success"){r();let E=f.find(A=>A.name===c?.from?.blockchain),P=c?.from?.token,Q=P&&g(P);(E||!E&&w.current)&&n(E??null),Q?a({token:Q,meta:{blockchains:f,tokens:d}}):!Q&&W.current&&a({token:null}),w.current=c?.from?.blockchain,W.current=c?.from?.token}},[c?.from?.token?.symbol,c?.from?.token?.address,c?.from?.token?.blockchain,c?.from?.blockchain,m]),xo(()=>{Go(s,T)&&a({token:null}),Pi(p,k)&&n(null)},[T,k]),xo(()=>{Go(l,v)&&a({token:null}),Pi(u,I)&&o(null)},[v,I]),xo(()=>{if(m==="success"){r();let E=f.find(A=>A.name===c?.to?.blockchain),P=c?.to?.token,Q=P&&g(P);(E||!E&&b.current)&&o(E??null),Q?e({token:Q,meta:{blockchains:f,tokens:d}}):!Q&&x.current&&e({token:null}),b.current=c?.to?.blockchain,x.current=c?.to?.token}},[c?.to?.token?.symbol,c?.to?.token?.address,c?.to?.token?.blockchain,c?.to?.blockchain,m]),xo(()=>{S(c?.affiliate?.ref??null),C(c?.affiliate?.percent??null),y(c?.affiliate?.wallets??null)},[c?.affiliate?.ref,c?.affiliate?.percent,c?.affiliate?.wallets])}i(Up,"useSyncStoresWithConfig");import{useEffect as Zi,useRef as sh}from"react";import{useInRouterContext as lh,useLocation as ph,useSearchParams as ch}from"react-router-dom";function ji(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(ji,"convertTokenSearchParamToAsset");function Yi(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Yi,"tokenToSearchParam");function Ji(){let t=ph(),[e,o]=ch(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:p,setToBlockchain:u,setFromToken:c,setToToken:m,setInputAmount:f}=Y(),d=h().fetchStatus,g=h().blockchains(),S=h().tokens(),C=lh(),{updateIframe:y,updateCampaignMode:T}=h(),k=h().isInCampaignMode(),v=sh(),{findToken:I}=h(),W=i(()=>{let w={};for(let[B,Z]of e.entries())B.startsWith("utm_")&&(w[B]=Z);let b=e.get("fromAmount"),E=e.get("fromBlockchain"),P=e.get("fromToken"),Q=e.get("toBlockchain"),A=e.get("toToken"),z=e.get("autoConnect"),j=e.get("clientUrl"),G=e.get("liquiditySources");return{fromAmount:b,fromBlockchain:E,fromToken:P,toBlockchain:Q,toToken:A,autoConnect:z,clientUrl:j,liquiditySources:G,utmQueryParams:w}},"getUrlSearchParams"),x=i(w=>{for(let b in w)w[b]||delete w[b];o(w,{replace:!0})},"updateUrlSearchParams");Zi(()=>{let{autoConnect:w,clientUrl:b,utmQueryParams:E}=W();C&&d==="success"&&x({fromBlockchain:n?.name,fromToken:Yi(a),toBlockchain:r?.name,toToken:Yi(s),fromAmount:l,autoConnect:w??void 0,clientUrl:b??void 0,liquiditySources:k?v.current:void 0,...E})},[t.pathname,l,n,a,r,s,k]),Zi(()=>{if(!C)return;let w=W();if(!v.current&&w.liquiditySources&&(v.current=w.liquiditySources),w.fromAmount&&f(w.fromAmount),d==="success"){let b=g.find(A=>A.name===w.fromBlockchain),E=w.fromToken&&b?I(ji(w.fromToken,b)):void 0,P=g.find(A=>A.name===w.toBlockchain),Q=w.toToken&&P?I(ji(w.toToken,P)):void 0;b&&(p(b),E&&c({token:E,meta:{blockchains:g,tokens:S}})),P&&(u(P),Q&&m({token:Q,meta:{blockchains:g,tokens:S}}))}},[d]),Zi(()=>{let{clientUrl:w,liquiditySources:b}=W();y("clientUrl",w||void 0),T("liquiditySources",b?.split(",")??void 0)},[])}i(Ji,"useSyncUrlAndStore");import{i18n as es}from"@lingui/core";import{useManager as DC}from"@rango-dev/queue-manager-react";import{Alert as Cm,Button as $C,css as os,Divider as ts,IconButton as Tm,styled as FC,Typography as OC,WalletIcon as UC}from"@rango-dev/ui";import Ie,{useEffect as Gr,useLayoutEffect as QC,useRef as zC,useState as un}from"react";import{useNavigate as qC}from"react-router-dom";import{i18n as kt}from"@lingui/core";import{Alert as Ba,BalanceErrors as TS,Button as Zc,ChevronDownIcon as kS,ChevronLeftIcon as vS,CloseIcon as wS,Divider as Ro,IconButton as Jc,MessageBox as xS,PasteIcon as bS,Typography as xr,WalletIcon as ES}from"@rango-dev/ui";import $,{useCallback as IS,useEffect as Rc,useMemo as AS,useRef as WS,useState as uo}from"react";import{useNavigate as NS}from"react-router-dom";import{i18n as rr}from"@lingui/core";function ir(t){switch(t.type){case 0:return rr.t("Route has been updated.");case 3:return rr.t("Output amount changed to {newOutputAmount} ({percentageChange}% change).",{newOutputAmount:t.newOutputAmount,percentageChange:t.percentageChange});case 1:return rr.t("Route swappers has been updated.");case 2:return rr.t("Route internal coins has been updated.");default:return""}}i(ir,"getQuoteUpdateWarningMessage");import{Modal as mh}from"@rango-dev/ui";import dh from"react";function re(t){let{watermark:e}=ae();return dh.createElement(mh,{hasWatermark:e==="FULL",...t},t.children)}i(re,"WatermarkedModal");import pr,{useRef as hh}from"react";import*as bo from"@radix-ui/react-collapsible";import{keyframes as zp,styled as ar}from"@rango-dev/ui";var Ri=300,fh=zp({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),gh=zp({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),qp=ar(bo.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),ea=ar(bo.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),sr=ar(bo.Content,{overflow:"hidden",variants:{open:{true:{animation:`${fh} ${Ri}ms ease-out`},false:{animation:`${gh} ${Ri}ms ease-out`}}}}),lr=ar("div",{transition:`all ${Ri}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function cr(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,p=hh(null);return pr.createElement(qp,{ref:p,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&pr.createElement(ea,{className:"collapsible_trigger",onClick:a},s),pr.createElement(sr,{className:"collapsible_content",open:e},r),l==="bottom"&&pr.createElement(ea,{className:"collapsible_trigger",onClick:a},s))}i(cr,"CustomCollapsible");import{css as Hp,darkTheme as jo,IconButton as yh,styled as tt,TextField as Sh}from"@rango-dev/ui";var Gp=tt("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Vp=tt("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Ch=tt("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${jo} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$secondary100",[`.${jo} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$secondary100",[`.${jo} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Xp=tt(Ch,{alignSelf:"stretch",minHeight:"93px"}),Kp=tt("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),jp=tt(yh,{position:"absolute",left:"$20"}),Yp=tt("div",{paddingTop:"$20"}),Zp=Hp({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Jp=tt("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),Rp=Hp({paddingTop:"$5"}),ec=tt("div",{display:"flex"}),tc=tt(Sh,{backgroundColor:"$neutral100",padding:"$15"}),oc=tt("div",{overflow:"visible",width:"100%"}),nc=tt("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${jo} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${jo} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});import{i18n as ct}from"@lingui/core";import{Button as hS,Divider as Ma,Image as yS,MessageBox as vr,SelectableWallet as SS,Typography as Kc,WalletState as jc}from"@rango-dev/ui";import ue,{useEffect as Yc,useState as co}from"react";import{WalletState as ta}from"@rango-dev/ui";import{useWallets as Th}from"@rango-dev/wallets-react";import{detectMobileScreens as kh,KEPLR_COMPATIBLE_WALLETS as vh,WalletTypes as Eo}from"@rango-dev/wallets-shared";import{useCallback as wh,useEffect as xh,useState as bh}from"react";var Eh=Object.values(Eo);function no(t){let{chain:e,onBeforeConnect:o,onConnect:n,onError:r}=t,{config:a}=h(),{state:s,disconnect:l,getWalletInfo:p,connect:u}=Th(),{connectedWallets:c}=te(),m=h().blockchains(),f=Gl(a?.wallets,{trezorManifest:a?.trezorManifest,walletConnectProjectId:a?.walletConnectProjectId,walletConnectListedDesktopWalletLink:a.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink})||Eh,d=Al(s,p,f,e);d=kh()?d.filter(x=>x.showOnMobile!==!1&&s(x.type).installed):d;let g=Pl(d),[S,C]=bh(""),y=i(x=>!c.find(w=>w.walletType===x&&w.chain===e),"isExperimentalChainNotAdded"),T=i(async(x,w)=>{let b=s(x);try{if(S&&C(""),b.connected)await l(x);else{if(Nn(d,a.multiWallets))return;o?.(x),await u(x,void 0,w),n?.(x)}}catch(E){r?.(E?.message),C("Error: "+E?.message)}},"handleClick"),k=wh(()=>{let x=d?.filter(w=>w.state===ta.CONNECTING)||[];for(let w of x)l(w.type)},[$l(d)]),v=i(async x=>{s(x).connected&&await l(x)},"disconnectWallet");xh(()=>()=>{k()},[]);let I=i(x=>{let w=x.find(E=>E.type===Eo.DEFAULT);return!w||w.state===ta.NOT_INSTALLED?!1:x.filter(E=>E.state!=ta.NOT_INSTALLED&&![Eo.DEFAULT,Eo.WALLET_CONNECT_2,Eo.LEDGER].includes(E.type)&&p(E.type).supportedChains.filter(P=>P.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),W=i((x,w,b)=>$n(b,w)&&y(x)&&!vh.includes(x)||x==Eo.DEFAULT&&!I(d),"shouldExcludeWallet");return{list:g.filter(x=>!W(x.type,e??"",m)),error:S,handleClick:T,disconnectConnectingWallets:k,disconnectWallet:v}}i(no,"useWalletList");import{i18n as Qc}from"@lingui/core";import{Divider as sS,getCategoriesCount as lS,SelectableCategoryList as pS,styled as qc,Typography as cS,Wallet as uS,WalletState as zc}from"@rango-dev/ui";import rt,{useState as Jo}from"react";import{useManager as My}from"@rango-dev/queue-manager-react";import{BottomLogo as Ly,Divider as Ac,Header as By}from"@rango-dev/ui";import Te,{useEffect as wa,useRef as Wc,useState as Py}from"react";import{useRef as Ih}from"react";function ur(){return window.self!==window.top}i(ur,"isAppLoadedIntoIframe");function oa(){let t=Ih(null),{iframe:e}=h(),o=ur()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let p of l)n({type:"widget_height",data:{height:p.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(oa,"useIframe");import{useNavigate as Ah}from"react-router-dom";function ot(){let t=Ah();return()=>t(-1)}i(ot,"useNavigateBack");import{createTheme as pa,darkTheme as zh,lightTheme as qh}from"@rango-dev/ui";import{useEffect as Hh,useState as Gh}from"react";import{theme as Uh,darkColors as Qh}from"@rango-dev/ui";import sa from"react";function Wh(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(Wh,"expandShortHexColor");function Nh(t){return/[0-9]+$/.test(t)}i(Nh,"isOverridingColor");function Mh(t,e){return t.padStart(e,"0")}i(Mh,"pad");function na(t){let e=Math.min(Math.max(Math.round(t),0),255);return Mh(e.toString(16),2)}i(na,"intToHex");function Lh(t){return`#${na(t.red)}${na(t.green)}${na(t.blue)}`}i(Lh,"rgbToHex");function Bh(t){let e=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);return{red:e,green:o,blue:n}}i(Bh,"hexToRGB");function Ph(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(Ph,"generateShade");function _h(t,e){let o=.11*e;return{red:t.red+(255-t.red)*o,green:t.green+(255-t.green)*o,blue:t.blue+(255-t.blue)*o}}i(_h,"generateTint");function Dh(t){return rc(t,Ph)}i(Dh,"calculateShades");function $h(t){return rc(t,_h)}i($h,"calculateTints");function rc(t,e){let o=Bh(t),n=[];for(let r=1;r<9;r++)n.push(Lh(e(o,r)));return n}i(rc,"calculateColors");function ra(t,e,o){let a=$h(t).reverse().concat(t),s=Dh(t),l=a.concat(s),p={},u=l.length;for(let c=0;c<u;c++){let m=100+(o?u-1-c:c)*50;p[`${e}${m}`]=l[c]}return p}i(ra,"createTintsAndShades");function ia(t,e,o){let n={...t};for(let r in e){let a=e[r],s=r==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(r)&&!Nh(r)){let p=Wh(a);Object.assign(n,ra(p,r,s))}}return{...n,...e}}i(ia,"expandToGenerateThemeColors");var ic=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Fh=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=ic(o%52)+e;return ic(o%52)+e},"toAlphabeticName"),Oh=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),aa=i(t=>Fh(Oh(5381,JSON.stringify(t))>>>0),"toHash");function la(t){let e=Uh.colors,o={...e,...Qh},n,r;if(t?.light){let s={colors:ia(e,t.light)};n={id:`${Bi}-light-${aa(s)}`,tokens:s}}if(t?.dark){let s={colors:ia(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Bi}-dark-${aa(s)}`,tokens:s}}return{light:n,dark:r}}i(la,"customizedThemeTokens");function ac(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>sa.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(sa.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(sa.cloneElement(e,{key:l}))}}),o}i(ac,"joinList");function mr(t){let{colors:e,fontFamily:o=gl,borderRadius:n=Ql,secondaryBorderRadius:r=zl}=t,[a,s]=Gh("light"),{theme:l}=h(),{dark:p,light:u}=la(e),c=pa({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[c.className,qh.className],f=[c.className,zh.className];if(u){let g=pa(u.id,u.tokens);m.push(g.className)}if(p){let g=pa(p.id,p.tokens);f.push(g.className)}return Hh(()=>{let g=i(S=>{S.matches?s("dark"):s("light")},"switchThemeListener");return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:i(()=>{let g=m.join(" "),S=f.join(" ");return l==="auto"?a==="dark"?S:g:l==="dark"?S:g},"getActiveTheme")}}i(mr,"useTheme");var nt=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");import{i18n as sc}from"@lingui/core";import{Alert as Vh,Button as Xh}from"@rango-dev/ui";import lc from"react";function ca(t){return lc.createElement(Vh,{action:lc.createElement(Xh,{onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},sc.t("Activate this tab")),type:"warning",variant:"alarm",title:sc.t("Another tab is open and handles transactions.")})}i(ca,"ActivateTabAlert");import{i18n as ua}from"@lingui/core";import{Button as Kh,Divider as jh,MessageBox as Yh}from"@rango-dev/ui";import dr from"react";function ma(t){let{open:e,onClose:o,onConfirm:n}=t;return dr.createElement(re,{open:e,dismissible:!0,onClose:o,container:_()},dr.createElement(Yh,{title:ua.t("Activate current tab"),type:"warning",description:ua.t("Currently, some transactions are running and being handled by other browser tab. If you activate this tab, all transactions that are already in the transaction sign step will expire.")},dr.createElement(jh,{size:20}),dr.createElement(Kh,{variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},ua.t("Confirm"))))}i(ma,"ActivateTabModal");import{ChevronLeftIcon as Rh}from"@rango-dev/ui";import gc from"react";import{css as Zh,darkTheme as pc,IconButton as Jh,styled as ro}from"@rango-dev/ui";var Tt=ro(Jh,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${pc} &`]:{backgroundColor:"$neutral"}}}),cc=ro("div",{position:"absolute",background:"$secondary500",[`.${pc} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Io=ro("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),uc=ro("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),mc=ro("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),dc=ro("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),fc=Zh({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),fr=ro("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function da(t){return gc.createElement(Tt,{variant:"ghost",size:"small",onClick:t.onClick},gc.createElement(Rh,{color:"black",size:16}))}i(da,"BackButton");import{i18n as ey}from"@lingui/core";import{Button as ty,Typography as oy}from"@rango-dev/ui";import fa from"react";function ga(t){return fa.createElement(Io,null,fa.createElement(ty,{variant:"ghost",onClick:t.onClick,size:"xsmall"},fa.createElement(oy,{variant:"label",size:"medium",color:"error500"},ey.t("Cancel"))))}i(ga,"CancelButton");import{i18n as ny}from"@lingui/core";import{Image as ry,Tooltip as iy,WalletIcon as ay}from"@rango-dev/ui";import io from"react";function ha(t){let{list:e}=no({}),o=e.filter(r=>r.state==="connected"),n=o.length?io.createElement("div",{className:fc()},o.map(r=>io.createElement(fr,{key:r.title},io.createElement(ry,{src:r.image,size:14})))):ny.t("Connect Wallet");return io.createElement(iy,{container:t.container,side:"bottom",content:n},io.createElement(Tt,{variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&io.createElement(cc,null),io.createElement(ay,{size:18,color:"black"})))}i(ha,"WalletButton");import{i18n as hr}from"@lingui/core";import{NotificationsIcon as vy,Popover as wy,SettingsIcon as xy,Tooltip as yr,TransactionIcon as by}from"@rango-dev/ui";import Ne from"react";import{Notifications as cy}from"@rango-dev/ui";import uy from"react";import{useNavigate as my}from"react-router-dom";import{create as sy}from"zustand";import{persist as ly,subscribeWithSelector as py}from"zustand/middleware";var xe=Ut(sy()(ly(py((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(p=>p.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>a.creationTime-r.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(p=>p.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function ya(){let t=my(),{getNotifications:e,clearNotifications:o}=xe(),n=e(),r=h().blockchains(),{findToken:a}=h();return uy.createElement(cy,{list:n,getBlockchainImage:l=>bl(l,r)??"",getTokenImage:l=>a(l)?.image??"",onClickItem:i(l=>{t(`${q.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(ya,"NotificationContent");import{useManager as dy}from"@rango-dev/queue-manager-react";import{InProgressIcon as fy}from"@rango-dev/ui";import hc from"react";var gy=i(()=>{let{manager:t}=dy();return nt(t).map(({swap:o})=>o).find(o=>o.status==="running")?hc.createElement(dc,null,hc.createElement(fy,{color:"info",size:6})):null},"InProgressTransactionBadge"),yc=gy;import{EventSeverity as hy}from"@rango-dev/queue-manager-rango-preset";import{Typography as yy}from"@rango-dev/ui";import Sc from"react";function Cc(){let{getNotifications:t}=xe(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===hy.WARNING);return o?Sc.createElement(uc,{isSever:n},Sc.createElement(yy,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(Cc,"NotificationsBadge");import{RefreshProgressButton as Sy}from"@rango-dev/ui";import Sa,{useEffect as Cy,useState as Tc}from"react";var Ty=1e3,kc=60,ky=100;function gr({onClick:t}){let[e,o]=Tc(0),[n,r]=Tc(!1),a=i(p=>{document.hidden&&p&&s(p)},"handleVisibilityChange");Cy(()=>{let p;return t?p=window.setInterval(()=>{o(u=>u+1),e===kc&&l()},Ty):s(p),document.addEventListener("visibilitychange",()=>a(p)),()=>{document.removeEventListener("visibilitychange",()=>a(p)),p&&clearInterval(p)}},[e,t]);let s=i(p=>{p&&clearInterval(p),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return Sa.createElement(Tt,{variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},Sa.createElement(mc,{onTransitionEnd:()=>r(!1),isRefetched:n},Sa.createElement(Sy,{size:22,color:t?"black":"gray",progress:e/kc*ky})))}i(gr,"RefreshButton");function ao(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=h(),l=Re("notification",s)||r.includes("notifications");return Ne.createElement(Ne.Fragment,null,!r.includes("refresh")&&Ne.createElement(yr,{container:a||_(),side:"top",content:hr.t("Refresh")},Ne.createElement(gr,{onClick:e})),!l&&Ne.createElement(wy,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:_(),content:Ne.createElement(ya,null)},Ne.createElement("div",null,Ne.createElement(yr,{container:_(),side:"top",content:hr.t("Notifications")},Ne.createElement(Tt,{size:"small",variant:"ghost"},Ne.createElement(vy,{size:18,color:"black"}),Ne.createElement(Cc,null))))),!r.includes("settings")&&Ne.createElement(yr,{container:_(),side:"top",content:hr.t("Settings")},Ne.createElement(Tt,{size:"small",variant:"ghost",onClick:n},Ne.createElement(xy,{size:18,color:"black"}))),!r.includes("history")&&Ne.createElement(yr,{container:_(),side:"top",content:hr.t("Transactions History")},Ne.createElement(Tt,{size:"small",variant:"ghost",onClick:o},Ne.createElement(by,{size:18,color:"black"}),Ne.createElement(yc,null))))}i(ao,"HeaderButtons");import{i18n as Ca}from"@lingui/core";import{Divider as wc,MessageBox as Ay,RefreshIcon as Wy}from"@rango-dev/ui";import Ao from"react";import{Button as Ey,styled as Iy}from"@rango-dev/ui";var vc=Iy(Ey,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Ta(t){let{open:e,onClose:o}=t;return Ao.createElement(re,{open:e,dismissible:!0,onClose:o,container:_()},Ao.createElement(Ay,{title:Ca.t("Something went wrong"),type:"error",description:Ca.t("Something went wrong. Please refresh the app.")},Ao.createElement(wc,{size:30}),Ao.createElement(vc,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},Ao.createElement(Wy,{size:20,color:"primary"}),Ao.createElement(wc,{size:4,direction:"horizontal"}),Ca.t("Refresh"))))}i(Ta,"RefreshModal");function ka(t){let e=t.target;if(e){let o=e.scrollTop,n=_();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(ka,"onScrollContentAttachStatusToContainer");import{css as Ny,styled as va}from"@rango-dev/ui";var xc="700px",Sr=Ny({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),bc=va("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:xc},fixed:{height:xc}}}}),Ec=va("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Ic=va("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}});function ce(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=oa(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l}=h(),[p,u]=Py(!1),c=te.use.connectedWallets(),{config:{features:m,theme:f}}=h(),{watermark:d}=ae(),g=d==="FULL",{activeTheme:S}=mr(f||{}),C=Re("connectWalletButton",m),{isActiveTab:y,tabManagerInitiated:T,showActivateTabModal:k,setShowActivateTabModal:v,activateCurrentTab:I}=ae(),W=ot(),{manager:x}=My(),b=nt(x).map(({swap:j})=>j).some(j=>j.status==="running"),E=i(()=>I(eo.forceClaim,b),"onActivateTab"),P=i(()=>{r.onWallet?.()},"onConnectWallet"),Q=typeof r.hasBackButton>"u"||r.hasBackButton,A=Wc(null),z=Wc(null);return wa(()=>(ur()&&z.current&&e(z.current),()=>{o()}),[]),wa(()=>(A.current?.addEventListener("scroll",ka),()=>{A.current?.removeEventListener("scroll",ka)}),[]),wa(()=>{u(l==="failed")},[l]),Te.createElement(bc,{height:s,id:he.SWAP_BOX_ID,className:`${S()} ${Sr()}`,ref:z},Te.createElement(By,{prefix:Te.createElement(Te.Fragment,null,Q&&Te.createElement(da,{onClick:()=>{W(),r.onBack&&r.onBack()}})),title:r.title,suffix:Te.createElement(Te.Fragment,null,r.suffix,r.onWallet&&!C&&Te.createElement(ha,{container:_(),onClick:P,isConnected:!!c?.length}),r.onCancel&&Te.createElement(ga,{onClick:r.onCancel}))}),Te.createElement(Ec,{ref:A},n),Te.createElement(ma,{open:k,onClose:()=>v(!1),onConfirm:E}),Te.createElement(Ic,null,Te.createElement("div",{className:"footer__content"},T&&!y&&Te.createElement("div",{className:"footer__alert"},Te.createElement(ca,{onActivateTab:E}),Te.createElement(Ac,{size:10})),a),Te.createElement(Ac,{size:12}),Te.createElement("div",{className:`footer__logo ${g?"logo__show":"logo__hidden"}`},Te.createElement(Ly,null))),Te.createElement(Ta,{open:p,onClose:()=>u(!1)}))}i(ce,"Layout");import{styled as _y}from"@rango-dev/ui";var Nc="$20 $20 $10 $20",Yo=_y("div",{padding:Nc,overflowY:"auto",flexGrow:1});import{styled as Dy}from"@rango-dev/ui";var fe=Dy("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as Mo}from"@lingui/core";import{Button as Uy,Divider as Bc,Image as Qy,MessageBox as zy,Select as qy,TextField as Hy}from"@rango-dev/ui";import{namespaces as Gy}from"@rango-dev/wallets-shared";import qe,{useEffect as Vy,useState as Pc}from"react";import{keyframes as $y,styled as Cr}from"@rango-dev/ui";var yN=Cr("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Wo=Cr("div",{position:"relative"}),Fy=$y({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),No=Cr("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Fy} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Tr=Cr("div",{"& img":{borderRadius:"50%"}});import{styled as Mc,Typography as Oy}from"@rango-dev/ui";var Lc=Mc("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),xa=Mc(Oy,{paddingLeft:"$10"}),ba={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"};var Dc={id:"custom",label:"Custom",generateDerivationPath:t=>t};function _c(t){let e=t?Gy[t].derivationPaths:null;return e?[...e,Dc]:[]}i(_c,"getDerivationPaths");function so(t){let{onClose:e,onConfirm:o,selectedNamespace:n,image:r,type:a,open:s}=t,[l,p]=Pc(null),[u,c]=Pc("0"),m=l===Dc.id,f=_c(n),d=i(({value:S})=>{let C=f?.find(y=>y.id===S);C&&p(C.id)},"handleDerivationPathItemClick"),g=i(()=>{let S=f.find(C=>C.id===l);if(S)o(S.generateDerivationPath(u));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return Vy(()=>{p(_c(n)[0]?.id||null)},[n]),qe.createElement(re,{open:s,onClose:e,container:document.getElementById(he.SWAP_BOX_ID)||document.body},qe.createElement(Bc,{size:20}),qe.createElement(zy,{type:"info",title:Mo.t("Select Derivation Path"),description:Mo.t(`In order to connect to ${a}, you must first select a Derivation Path`),icon:qe.createElement(Wo,null,qe.createElement(Tr,null,qe.createElement(Qy,{src:r,size:45})),qe.createElement(No,null))}),qe.createElement(Lc,null,qe.createElement(xa,{variant:"body",size:"xsmall",color:"$neutral600"},Mo.t("Choose Derivation Path Template")),qe.createElement(qy,{value:l||"",options:f.map(S=>({value:S.id,label:S.label})),variant:"filled",handleItemClick:d,styles:{trigger:ba}}),qe.createElement(Bc,{size:20}),qe.createElement(xa,{variant:"body",size:"xsmall",color:"$neutral600"},m?Mo.t("Enter Path"):Mo.t("Enter Index")),qe.createElement(Hy,{type:m?"text":"number",variant:"contained",value:u,onChange:S=>c(S.target.value),style:ba})),qe.createElement(Uy,{type:"primary",onClick:g,disabled:!f||!l||!u},Mo.t("Confirm")))}i(so,"WalletDerivationPathModal");import{Divider as jy}from"@rango-dev/ui";import Ia from"react";import{i18n as Lo}from"@lingui/core";import{Image as Xy,MessageBox as Ea,WalletState as Ky}from"@rango-dev/ui";import lo from"react";function $c(t){let{state:e,image:o,error:n}=t;return e===Ky.CONNECTED?lo.createElement(Ea,{type:"success",title:Lo.t("Wallet Connected"),description:Lo.t("Your wallet is connected, you can use it to swap.")}):n?lo.createElement(Ea,{type:"error",title:Lo.t("Failed to Connect"),description:n||Lo.t("Your wallet is not connected. Please try again.")}):lo.createElement(Ea,{type:"loading",title:Lo.t("Connecting to your wallet"),description:Lo.t("Click connect in your wallet popup."),icon:lo.createElement(Wo,null,lo.createElement(Tr,null,lo.createElement(Xy,{src:o,size:45})),lo.createElement(No,null))})}i($c,"ModalContent");function Zo(t){let{open:e,onClose:o,...n}=t;return Ia.createElement(re,{open:e,onClose:o,container:document.getElementById(he.SWAP_BOX_ID)||document.body},Ia.createElement($c,{...n}),Ia.createElement(jy,{direction:"vertical",size:32}))}i(Zo,"WalletModal");import{i18n as Aa}from"@lingui/core";import{Button as Zy,Checkbox as Jy,Divider as Ry,Image as Oc,ListItemButton as eS,MessageBox as tS,Radio as oS,RadioRoot as nS}from"@rango-dev/ui";import{namespaces as Uc}from"@rango-dev/wallets-shared";import Me,{useMemo as rS,useState as iS}from"react";import{styled as Yy}from"@rango-dev/ui";var Fc=Yy("ul",{padding:0,paddingTop:"$4",paddingBottom:"$4"});var aS=i((t,e)=>t.find(o=>o.name===e)?.logo,"getBlockchainLogo");function po(t){let{singleNamespace:e,availableNamespaces:o}=t,[n,r]=iS([]),a=h().blockchains(),s=rS(()=>o?.map(u=>({name:u,logo:aS(a,Uc[u].mainBlockchain),title:Uc[u].title})),[o]),l=i(u=>{r(e?[u]:c=>c.includes(u)?c.filter(m=>m!==u):c.concat(u))},"onSelect"),p=i(u=>e?Me.createElement(nS,{value:n?.[0]},u):Me.createElement(Me.Fragment,null,u),"wrapRadioRoot");return Me.createElement(re,{open:t.open,onClose:t.onClose,container:document.getElementById(he.SWAP_BOX_ID)||document.body},Me.createElement(Ry,{size:20}),Me.createElement(tS,{type:"info",title:Aa.t("Select chain types"),description:Aa.t("This wallet supports multiple chains. Select which chain you'd like to connect to."),icon:Me.createElement(Wo,null,Me.createElement(fr,null,Me.createElement(Oc,{src:t.image,size:45})),Me.createElement(No,null))}),Me.createElement(Fc,null,p(Me.createElement(Me.Fragment,null,s?.map(u=>Me.createElement(eS,{key:u.name,id:u.name,title:u.title,hasDivider:!0,style:{height:60},onClick:()=>l(u.name),start:Me.createElement(Oc,{src:u.logo,size:22}),end:e?Me.createElement(oS,{value:u.name}):Me.createElement(Jy,{checked:n.includes(u.name)})}))))),Me.createElement(Zy,{type:"primary",disabled:!n.length,onClick:()=>t.onConfirm(n)},Aa.t("Confirm")))}i(po,"WalletNamespacesModal");var mS=qc("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),dS=qc(fe,{textAlign:"center"}),kr=3e3,Wa=300;function Hc(){let{fetchStatus:t}=h(),[e,o]=Jo("ALL"),n=h().blockchains(),{config:r}=h(),[a,s]=Jo(!1),[l,p]=Jo(null),[u,c]=Jo(null),[m,f]=Jo(""),d=null,g=ae.use.isActiveTab(),{list:S,handleClick:C,error:y,disconnectConnectingWallets:T}=no({onBeforeConnect:G=>{d=setTimeout(()=>{s(!0),f(G)},Wa)},onConnect:()=>{d&&clearTimeout(d),setTimeout(()=>{s(!1)},kr)}}),k=i(()=>{T(),s(!1)},"handleCloseWalletModal"),v=i(()=>{l&&p({...l,open:!1})},"handleCloseNamespaceModal"),I=i(()=>{u&&c({...u,open:!1})},"handleCloseDerivationPathModal"),W=S.find(G=>G.type===m),x=W?.image||"",w=W?.state||zc.NOT_INSTALLED,b=Fl(S,n),P=lS(b)!==1,Q=Ol(S,e),A=i((G,B)=>{Nn(S,r.multiWallets)||(B.namespaces&&B.state===zc.DISCONNECTED?p({open:!0,providerType:G,providerImage:B.image,availableNamespaces:B.namespaces,singleNamespace:B.singleNamespace}):C(G))},"handleWalletItemClick"),z=i(G=>{let B=Q.find(Z=>Z.type===l?.providerType);B?.singleNamespace&&B?.needsDerivationPath&&G[0]?c({open:!0,providerType:B.type,providerImage:B.image,namespace:G[0]}):C(l?.providerType,G.map(Z=>({namespace:Z}))),v()},"handleConfirmNamespaces"),j=i(G=>{G&&u?.namespace&&C(u.providerType,[{namespace:u.namespace,derivationPath:G}]),I()},"handleDerivationPathConfirm");return rt.createElement(ce,{header:{title:Qc.t("Connect Wallets")}},rt.createElement(dS,null,P&&rt.createElement(rt.Fragment,null,rt.createElement(pS,{setCategory:o,category:e,blockchains:b,isLoading:t==="loading"}),rt.createElement(sS,{size:24})),rt.createElement(cS,{variant:"title",size:"xmedium",align:"center"},Qc.t("Choose a wallet to connect.")),rt.createElement(mS,null,Q.map((G,B)=>{let Z=`wallet-${B}-${G.type}`;return rt.createElement(uS,{key:Z,...G,container:_(),onClick:ie=>A(ie,G),isLoading:t==="loading",disabled:!g})}),rt.createElement(Zo,{open:!!a,onClose:k,image:x,state:w,error:y}),rt.createElement(po,{open:!!l?.open,onClose:v,onConfirm:z,image:l?.providerImage,availableNamespaces:l?.availableNamespaces,singleNamespace:l?.singleNamespace}),rt.createElement(so,{open:!!u?.open,selectedNamespace:u?.namespace,type:u?.providerType,image:u?.providerImage,onClose:I,onConfirm:j}))))}i(Hc,"WalletsPage");import{keyframes as fS,styled as Na}from"@rango-dev/ui";var Gc=Na("div",{position:"relative"}),gS=fS({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Vc=Na("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${gS} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Xc=Na("div",{"& img":{borderRadius:"50%"}});var CS=7;function La(t){let{chain:e,isSelected:o,selectWallet:n,limit:r,onShowMore:a,onConnect:s}=t,l=ae.use.isActiveTab(),p=te.use.connectedWallets(),{blockchains:u}=h(),[c,m]=co(""),[f,d]=co(null),[g,S]=co(!1),[C,y]=co(null),[T,k]=co(null),[v,I]=co(null),{suggestAndConnect:W}=wr(),x=null,{list:w,error:b,handleClick:E,disconnectWallet:P,disconnectConnectingWallets:Q}=no({chain:e,onBeforeConnect:L=>{x=setTimeout(()=>{m(L)},Wa)},onConnect:L=>{s?.(L),x&&clearTimeout(x),setTimeout(()=>{m("")},kr)}}),[A,z]=co(w),j=w.length,G=r&&j-r>0,B=i(async L=>{S(!1),y("in-progress");try{await W(L.walletType,L.chain),y("completed")}catch{y("rejected")}},"addExperimentalChain"),Z=i(()=>{T&&k({...T,open:!1})},"handleCloseNamespaceModal"),ie=i(()=>{v&&I({...v,open:!1})},"handleCloseDerivationPathModal"),J=i(L=>{k({open:!0,providerType:L.type,providerImage:L.image,availableNamespaces:L.namespaces,singleNamespace:L.singleNamespace})},"handleOpenNamespacesModal"),ne=i(L=>{let me=A.find(se=>se.type===T?.providerType);me?.singleNamespace&&me?.needsDerivationPath&&L[0]?I({open:!0,providerType:me.type,providerImage:me.image,namespace:L[0]}):E(T?.providerType,L.map(se=>({namespace:se}))),Z()},"handleConfirmNamespaces"),ge=i(L=>{L&&v?.namespace&&E(v.providerType,[{namespace:v.namespace,derivationPath:L}]),ie()},"handleDerivationPathConfirm");Yc(()=>{z(L=>{let me=w.findIndex(se=>o(se.type,e));return G&&me>1?[w[me]].concat(w.filter((se,_e)=>_e!==me)):L.map(se=>w.find(_e=>_e.type===se.type)??se)})},[JSON.stringify(w)]);let Ce=document.getElementById(he.SWAP_BOX_ID);Yc(()=>{let L=null;return(C==="completed"||C==="rejected")&&(L=setTimeout(()=>y(null),kr)),()=>{L&&clearTimeout(L)}},[C]);let D=i(()=>{Q(),m("")},"handleCloseWalletModal");return ue.createElement(ue.Fragment,null,A.slice(0,r).map(L=>{let me=_l({connectedWallets:p,walletType:L.type,chain:e}),se=me?On(me,CS):"",_e=$n(u(),e),lt=!p.find(de=>de.walletType===L.type&&de.chain===e),De=_e&&lt&&L.state===jc.CONNECTED,Ve=De?ct.t({id:"Add {chain} chain",values:{chain:e}}):se,Xe=i(async()=>{L.state===jc.DISCONNECTED?L.namespaces?J(L):E(L.type):L.namespaces&&!se?(await P(L.type),J(L)):De?(d({walletType:L.type,chain:e,address:me??""}),S(!0)):n({walletType:L.type,chain:e,address:me??""})},"onClick"),ve=f?.chain?Mn(f.chain,u()):void 0;return ue.createElement(ue.Fragment,{key:`${L.title}_${ve}`},ue.createElement(Zo,{open:c===L.type,onClose:D,image:L.image,state:L.state,error:b}),ue.createElement(po,{open:!!T?.open,onClose:Z,onConfirm:ne,image:T?.providerImage,availableNamespaces:T?.availableNamespaces,singleNamespace:T?.singleNamespace}),ue.createElement(so,{open:!!v?.open,selectedNamespace:v?.namespace,type:v?.providerType,image:v?.providerImage,onClose:ie,onConfirm:ge}),!!f&&ue.createElement(re,{open:!!f&&g,container:Ce,onClose:()=>{d(null)}},ue.createElement(vr,{title:ct.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:ve}}),type:"warning",description:ct.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:ve}})},ue.createElement(Ma,{size:18}),ue.createElement(Ma,{size:32}),ue.createElement(hS,{onClick:B.bind(null,f),variant:"outlined",type:"primary",fullWidth:!0,size:"large"},ct.t("Confirm")))),C&&ue.createElement(re,{open:!!C,onClose:y.bind(null,null),container:Ce},C==="in-progress"&&ue.createElement(vr,{type:"loading",title:ct.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:ve}}),description:ct.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:ve}}),icon:ue.createElement(Gc,null,ue.createElement(Xc,null,ue.createElement(yS,{src:L.image,size:45})),ue.createElement(Vc,null))}),C==="completed"&&ue.createElement(vr,{type:"success",title:ct.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:ve}}),description:ct.t({id:"{blockchainDisplayName} is added to your wallet, you can use it to swap.",values:{blockchainDisplayName:ve}})}),C==="rejected"&&ue.createElement(vr,{type:"error",title:ct.t("Request Rejected"),description:ct.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:ve}})}),ue.createElement(Ma,{direction:"vertical",size:32})),ue.createElement(SS,{key:L.type,description:Ve,onClick:Xe,selected:o(L.type,e),disabled:!l,...L}))}),G&&ue.createElement(Xp,{selected:!1,onClick:a},ue.createElement(Kc,{variant:"label",size:"medium"},ct.t("Show more wallets"),ue.createElement(Kc,{variant:"label",size:"medium",color:"$primary"},"\xA0+",j-(r??0)))))}i(La,"WalletList");var MS=2;function eu(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=NS(),l=h().config,p=WS(null),u=h().blockchains(),{selectedQuote:c,setSelectedWallets:m,quoteWalletsConfirmed:f,setQuoteWalletConfirmed:d,customDestination:g,setCustomDestination:S}=Y(),{connectedWallets:C,selectWallets:y}=te(),[T,k]=uo(""),[v,I]=uo([]),[W,x]=uo(""),[w,b]=uo(null),[E,P]=uo(!!g),Q=navigator?.userAgent.includes("Firefox"),A=AS(()=>Jt({filter:"all",quote:c}),[c]),z=Jt({filter:"required",quote:c}),j=u.find(N=>N.name===c?.swaps[c?.swaps.length-1].to.blockchain),G=i(N=>z.includes(N),"isWalletRequiredFor"),B=IS(()=>C.filter(N=>N.selected&&A.includes(N.chain)),[C,A]),[Z,ie]=uo(B()),[J,ne]=uo([]),ge=i((N,V)=>ne(X=>X.concat({blockchain:N,walletType:V})),"addNextSelectedWallets"),Ce=v.length>0,D=i((N,V)=>!!Z.find(X=>X.walletType===N&&X.chain===V&&X.selected&&(G(V)||!G(V)&&!g)),"isSelected"),L=!!g&&E&&j&&!Xn(j,g),me=i(()=>{P(!1),S(null),ie(N=>{let V=!1;return N.map(X=>!V&&X.chain===j?.name?(V=!0,{...X,selected:!0}):X)})},"resetCustomDestination"),se=i(()=>S(""),"handleClearCustomDestination"),_e=i(async N=>{if(N.preventDefault(),navigator.clipboard!==void 0){let V=await navigator.clipboard.readText();S(V),p?.current?.focus()}},"handlePasteCustomDestination"),lt=i(N=>{N?G(j?.name??"")||ie(V=>V.map(X=>X.chain===j?.name?{...X,selected:!1}:X)):me()},"handleCustomDestinationCollapsibleOpenChange"),De=i(N=>{if(T&&k(""),D(N.walletType,N.chain))return;let X=C.find(Ke=>Ke.walletType===N.walletType&&Ke.chain===N.chain);X&&(n(),N.chain===j?.name&&E&&!G(j.name)&&(P(!1),S(null)),ie(Ke=>Ke.filter(yt=>yt.chain!==N.chain).concat({...X,selected:!0})))},"onChange"),Ve=i(()=>{let N=Z.filter(V=>V.selected);y(N),m(N),d(!0),o()},"onConfirmBalance"),Xe=i(async()=>{I([]),x(""),b(null);let N=await r?.({selectedWallets:Z.filter(X=>X.selected),customDestination:g}),V=N.warnings;V?.balance?.messages&&I(V.balance.messages),V?.quoteUpdate&&b(V.quoteUpdate),N.error&&x(dp(N.error)),!N.error&&!V?.balance?.messages.length?Ve():I(V?.balance?.messages??[])},"onConfirmWallets"),ve=i(()=>g?$.createElement(Jc,{onClick:se,variant:"ghost"},$.createElement(wS,{size:12,color:"gray"})):Q?null:$.createElement(Jc,{onClick:_e,variant:"ghost"},$.createElement(bS,{size:16})),"renderCustomDestinationSuffix");Rc(()=>{ie(N=>{let V=[];return N.forEach(X=>{!C.some(yt=>yt.chain===X.chain&&yt.walletType===X.walletType&&yt.address===X.address)||V.push(X)}),V=V.concat(C.filter(X=>!!!V.find(yt=>yt.chain===X.chain)&&X.selected&&A.includes(X.chain))),V})},[C,A]),Rc(()=>{let N=[];J.length>0&&(J.forEach(V=>{let X=C.find(Ke=>Ke.chain===V.blockchain&&Ke.walletType===V.walletType);X?De(X):N.push(V)}),ne(N))},[C,J]);let de=document.getElementById(he.SWAP_BOX_ID);return $.createElement(re,{open:e,onClose:()=>{f||s("../",{replace:!0}),o()},dismissible:!T,container:de,...!T&&{footer:$.createElement(ec,null,$.createElement(Zc,{loading:a,disabled:Mp(a,E,g,c,Z,j),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},kt.t("Confirm")))},...T&&{styles:{container:{padding:"$0"}},header:$.createElement(Kp,null,$.createElement(jp,{variant:"ghost",onClick:k.bind(null,"")},$.createElement(vS,{size:16})),$.createElement(xr,{variant:"headline",size:"small"},kt.t({id:"Your {blockchainName} wallets",values:{blockchainName:Je(T,u)}})))},anchor:"center"},$.createElement(re,{open:Ce,onClose:I.bind(null,[]),container:de},$.createElement(xS,{title:kt.t("Insufficient account balance"),type:"error",description:$.createElement(TS,{messages:v??[]})},$.createElement(Zc,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:Ve},kt.t("Proceed anyway")))),T&&$.createElement(Yp,null,$.createElement("div",{className:Zp()},$.createElement(La,{chain:T,isSelected:D,selectWallet:De,onShowMore:()=>k(T),onConnect:N=>{ge(T,N)}}))),!T&&$.createElement($.Fragment,null,W&&$.createElement($.Fragment,null,$.createElement(Ba,{variant:"alarm",type:"error",title:kt.t(W)}),$.createElement(Ro,{size:12})),w&&$.createElement($.Fragment,null,$.createElement(Ba,{variant:"alarm",type:"warning",title:ir(w)}),$.createElement(Ro,{size:12})),$.createElement(oc,null,A.map((N,V)=>{let X=u.find(Zt=>Zt.name===N),Ke=`wallet-${V}`,yt=V===A.length-1;return $.createElement("div",{key:Ke},$.createElement(Gp,null,$.createElement(xr,{variant:"title",size:"xmedium"},kt.t({id:"Your {blockchainName} wallets",values:{blockchainName:X?.shortName}})),$.createElement(xr,{variant:"label",color:"$neutral700",size:"medium"},kt.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:X?.shortName}}))),$.createElement(Ro,{size:24}),$.createElement(Vp,null,$.createElement(La,{chain:N,isSelected:D,selectWallet:De,limit:MS,onShowMore:()=>k(X?.name??""),onConnect:Zt=>{ge(N,Zt)}})),!yt&&$.createElement(Ro,{size:32}),yt&&l?.customDestination!==!1&&$.createElement(Jp,null,$.createElement(cr,{onOpenChange:lt,hasSelected:!0,open:E,triggerAnchor:"top",trigger:$.createElement(nc,null,$.createElement("div",{className:"button__content"},$.createElement(ES,{size:18,color:"info"}),$.createElement(Ro,{size:4,direction:"horizontal"}),$.createElement(xr,{variant:"label",size:"medium",color:E?"$neutral600":void 0},kt.t("Send to a different address"))),$.createElement(lr,{orientation:E?"up":"down"},$.createElement(kS,{size:10,color:"secondary"}))),onClickTrigger:()=>P(Zt=>!Zt)},$.createElement(tc,{ref:p,style:{padding:0,paddingRight:g?"8px":"5px"},autoFocus:!0,placeholder:kt.t("Enter {blockchainName} address",{blockchainName:Mn(N,u)}),value:g||"",suffix:ve(),onChange:Zt=>{let Jf=Zt.target.value;S(Jf)},...!g&&{autoFocus:!0}})),L&&$.createElement("div",{className:Rp()},$.createElement(Ba,{variant:"alarm",type:"error",title:kt.t({values:{destination:g},id:"Address {destination} doesn't match the blockchain address pattern."})}))))}))))}i(eu,"ConfirmWalletsModal");import{i18n as YS}from"@lingui/core";import{Alert as ZS,Button as JS,InfoIcon as RS}from"@rango-dev/ui";import Ye from"react";import{Alert as PS,Button as _S,Divider as Da,NoRouteIcon as DS,RefreshIcon as $S,Typography as su}from"@rango-dev/ui";import je from"react";import{i18n as tu}from"@lingui/core";var LS=24,BS=60;function ou(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:oe().genericServerError,action:{onClick:n,title:tu.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:oe().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:tu.t("Reset")}},description:oe().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:oe().noResultError.description}}i(ou,"makeInfo");var Pa=(o=>(o[o.small=LS]="small",o[o.large=BS]="large",o))(Pa||{}),_a=(o=>(o.small="small",o.large="medium",o))(_a||{});import{styled as br}from"@rango-dev/ui";var nu=br("div",{display:"flex",flexDirection:"column",alignItems:"center"}),ru=br("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),iu=br("div",{variants:{size:{small:{width:"100%"},large:{}}}}),au=br("div",{padding:"$6 $0"});function en(t){let{fetch:e,error:o,size:n="small"}=t,r=h().getDisabledLiquiditySources(),a=h().toggleAllLiquiditySources,s=h().swappers(),l=ou(o,r,()=>a(s,!0),e);return je.createElement(nu,null,je.createElement(DS,{size:Pa[n],color:"gray"}),je.createElement(Da,{size:4}),je.createElement(su,{variant:"title",size:_a[n]},oe().noResultError.title),n==="large"&&je.createElement(Da,{size:4}),!!l.description&&je.createElement(ru,{size:n},je.createElement(su,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),je.createElement(Da,{size:n==="large"?"24":"4"}),!!l.alert&&je.createElement(iu,{size:n},je.createElement(PS,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&je.createElement(_S,{size:"xsmall",type:l.alert.type,prefix:je.createElement(au,null,je.createElement($S,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(en,"NoResult");import{i18n as tn}from"@lingui/core";import{Button as OS,Divider as US,MessageBox as QS,Typography as zS,WarningIcon as qS}from"@rango-dev/ui";import Wt from"react";import{Typography as uu}from"@rango-dev/ui";import Fa from"react";import{darkTheme as FS,styled as Er}from"@rango-dev/ui";var lu=Er("div",{width:"100%"}),$a=Er("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),pu=Er("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${FS} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),cu=Er("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function mu(t){let{title:e,value:o,valueColor:n}=t;return Fa.createElement(pu,null,Fa.createElement(uu,{size:"medium",variant:"label",className:"_title"},e),Fa.createElement(uu,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(mu,"QuoteErrorsModalItem");function du(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:tn.t("Swapping"),value:M(r.inputUsdValue,4,4)},{title:tn.t("Gas cost"),value:M(r.totalFee,2,2)},{title:tn.t("Receiving"),value:M(r.outputUsdValue,4,4)},{title:tn.t("Price impact"),value:M(r.priceImpact,2,2),valueColor:`${s}500`}];return Wt.createElement(re,{footer:Wt.createElement(OS,{type:"primary",size:"large",prefix:Wt.createElement(qS,null),fullWidth:!0,disabled:a,onClick:n},oe().highValueLossError.confirmMessage),open:e,onClose:o,container:_()},Wt.createElement(QS,{type:s,title:oe().highValueLossError.impactTitle,description:oe().highValueLossError.description}),Wt.createElement($a,null,Wt.createElement(US,{size:"4"}),Wt.createElement(zS,{size:"small",variant:"title"},tn.t("Details")),Wt.createElement($a,null,l.map((p,u)=>Wt.createElement(mu,{key:u,...p})))))}i(du,"HighValueLossWarningModal");import{i18n as Oa}from"@lingui/core";function fu(t,e){let o={alertType:"warning",title:"",action:null};return e?(o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=Oa.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o):t?(t.type===0&&(At(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=oe().highValueLossError.title),t.type===1&&(o.title=oe().unknownPriceError.title),t.type===2&&(o.title=Oa.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=Oa.t("Caution, your slippage is high."),o.action="change-settings"),o):null}i(fu,"makeAlerts");import{i18n as Bo}from"@lingui/core";import{Button as gu,Divider as hu,MessageBox as HS,Typography as GS}from"@rango-dev/ui";import mo from"react";import{useNavigate as VS}from"react-router-dom";function yu(t){let{customSlippage:e,slippage:o}=h(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,p=VS(),u=e??o;return mo.createElement(re,{anchor:"bottom",open:n,prefix:mo.createElement(gu,{size:"small",variant:"ghost",onClick:()=>p("../"+q.settings)},mo.createElement(GS,{variant:"label",size:"medium",color:"$neutral900"},Bo.t("Change settings"))),container:_(),onClose:r},mo.createElement(HS,{type:"warning",title:s.type===3?Bo.t("High slippage"):Bo.t("Low slippage"),description:s.type===3?Bo.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:u}}):Bo.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:s.minRequiredSlippage}})},mo.createElement(hu,{size:18}),mo.createElement(hu,{size:32}),mo.createElement(gu,{size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:l,onClick:a},Bo.t("Confirm anyway"))))}i(yu,"SlippageWarningModal");import{Button as XS,MessageBox as KS,WarningIcon as jS}from"@rango-dev/ui";import Ir from"react";function Su(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Ir.createElement(re,{footer:Ir.createElement(XS,{type:"primary",size:"large",prefix:Ir.createElement(jS,null),fullWidth:!0,disabled:r,onClick:n},oe().unknownPriceError.confirmMessage),open:e,onClose:o,container:_()},Ir.createElement(KS,{type:"warning",title:oe().unknownPriceError.impactTitle,description:oe().unknownPriceError.description}))}i(Su,"UnknownPriceWarningModal");function on(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,refetchQuote:s,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:u,onChangeSettings:c}=t,m={confirmationDisabled:a,open:r,onClose:p,onConfirm:u},f=o?.type===0||o?.type===1,d=fu(e,o?.type===3||o?.type===4?o:null);return d&&!n&&(d.action=null),Ye.createElement(Ye.Fragment,null,f&&Ye.createElement(en,{error:o,fetch:s}),!!d&&Ye.createElement(lu,null,Ye.createElement(ZS,{title:d.title,type:d.alertType,variant:"alarm",...d.action==="show-info"&&{action:Ye.createElement(cu,{onClick:l},Ye.createElement(RS,{size:12,color:"gray"}))},...d.action==="change-settings"&&{action:Ye.createElement(JS,{size:"xxsmall",type:d.alertType,onClick:c},YS.t("Change"))}})),e&&Ye.createElement(Ye.Fragment,null,e.type===0&&Ye.createElement(du,{...m,warning:e}),(e.type===3||e.type===2)&&Ye.createElement(yu,{...m,warning:e}),e.type===1&&Ye.createElement(Su,{...m,warning:e})))}i(on,"QuoteWarningsAndErrors");import NC from"bignumber.js";import Qr from"react";import{i18n as fo}from"@lingui/core";import{Alert as yC,Divider as _o,FullExpandedQuote as SC,InfoIcon as CC,NumericTooltip as Zu,QuoteTag as TC,StepDetails as kC,TokenAmount as vC,Typography as Do}from"@rango-dev/ui";import Xa from"bignumber.js";import F,{useRef as wC,useState as xC}from"react";import{styled as Ua}from"@rango-dev/ui";var Qa=Ua("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Cu=Ua("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Tu=Ua("div",{width:"100%",display:"flex"});import*as Ar from"@radix-ui/react-collapsible";import{Button as eC,css as nn,darkTheme as be,Image as ku,styled as Ue,Typography as tC}from"@rango-dev/ui";var oC=300,vu=Ue(Ar.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${be} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),wu=nn({padding:"$10 $15"}),xu=Ue(eC,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${be} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${be} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${be} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),bu=Ue("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${be} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${be} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${be} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${be} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${be} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${be} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${be} &`]:{backgroundColor:"$neutral400"}}}}]}),Eu=nn({width:"100%",padding:"$15 $15 $10 $15"}),Iu=nn({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),Po=nn({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),Au=nn({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${be} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Wu=Ue(Ar.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:{[`& ${ku}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${ku}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${be} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${be} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Nu=Ue("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),Mu=Ue(sr,{width:"100%",background:"inherit"}),za=Ue("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${oC}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),$B=Ue("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),Lu=Ue("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${be} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Bu=Ue("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),qa=Ue(tC,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Pu=Ue("div",{display:"flex",flexWrap:"wrap"}),Ha=Ue("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),_u=Ue("div",{display:"flex"}),Wr=Ue("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${be} &`]:{borderTopColor:"$neutral800"}});import{i18n as vt}from"@lingui/core";import{ChevronDownIcon as rC,CloseIcon as iC,Divider as Lr,IconButton as aC,NumericTooltip as sC,QuoteCost as lC,Typography as ut}from"@rango-dev/ui";import R,{useState as Ou}from"react";import{css as nC,styled as Nr}from"@rango-dev/ui";var Mr=Nr("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Ga=Nr("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),Du=Nr("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),$u=Nr("div",{padding:"$20 $20 $10",textAlign:"center",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Fu=nC({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var pC=i(t=>t.fee.isZero()?null:R.createElement(Mr,null,R.createElement(ut,{variant:"label",size:"medium",color:"neutral600"},t.label),R.createElement(ut,{variant:"label",size:"medium"},"$",M(t.fee,4,4))),"NonPayableFee");function Uu(t){let[e,o]=Ou(!1),[n,r]=Ou(!1),{steps:a,quote:s,fee:l,time:p,feeWarning:u,showModalFee:c}=t,m=s?.swaps??[],f=_(),d=Cp(m);return R.createElement(R.Fragment,null,R.createElement(lC,{onClickFee:c?g=>{g.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:u,time:p,steps:a,tooltipGas:c?vt.t("View more info"):void 0,tooltipContainer:f}),R.createElement(re,{container:f,open:e,header:R.createElement($u,null,R.createElement(ut,{variant:"title",size:"medium"},vt.t("Gas & Fee Explanation")),R.createElement(aC,{onClick:()=>o(!1),variant:"ghost"},R.createElement(iC,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(Du,null,R.createElement(ut,{variant:"title",size:"small"},vt.t("Details")),R.createElement(Lr,{size:10}),Object.entries(d.payable).flatMap(([g,S])=>S.map((C,y)=>{let T=`payable-fee-${y}`,k=Gi(C);return R.createElement(Mr,{key:T},R.createElement(ut,{variant:"label",size:"medium",color:"neutral600"},Qi(g,vt.t)),R.createElement(sC,{content:C.amount,container:f},R.createElement(ut,{variant:"label",size:"medium"},M(C.amount,2,2)," ",C.asset.symbol," ($",M(k,4,4),")")))})),R.createElement(Mr,{className:"total_payable_fee"},R.createElement(ut,{variant:"label",size:"medium"},vt.t("Total Payable Fee")),R.createElement(ut,{variant:"label",size:"medium"},"$",M(l,4,4))),R.createElement(Ga,null),Object.keys(d.nonePayable).length&&R.createElement(cr,{triggerAnchor:"bottom",onClickTrigger:()=>r(g=>!g),trigger:R.createElement("div",{className:Fu()},R.createElement(ut,{size:"small",variant:"body",color:"neutral700"},n?vt.t("Hide non-payable fees"):vt.t("Show non-payable fees")),R.createElement(Lr,{size:4,direction:"horizontal"}),R.createElement(lr,{orientation:n?"up":"down"},R.createElement(rC,{size:12,color:"gray"}))),open:n},R.createElement(ut,{size:"small",variant:"title"},vt.t("Description")),R.createElement(Lr,{size:4}),R.createElement(ut,{size:"small",variant:"body",color:"neutral700"},vt.t(`The following fees are considered in the transaction output and
2
- you won\u2019t need to pay extra gas for them.`)),R.createElement(Lr,{size:10}),Object.entries(d.nonePayable).map(([g,S],C)=>{let y=Sp(S),T=Qi(g,vt.t),k=`non-payable-fee-${C}`;return R.createElement(pC,{key:k,fee:y,label:T})}),R.createElement(Ga,null)))))}i(Uu,"QuoteCostDetails");import{i18n as qu}from"@lingui/core";import{TokenAmount as Hu}from"@rango-dev/ui";import Br from"react";import{css as cC,styled as uC}from"@rango-dev/ui";var Qu=uC("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),zu=cC({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function rn(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Br.createElement(Qu,null,Br.createElement(Hu,{direction:"horizontal",label:qu.t("Swap input"),type:"input",tooltipContainer:_(),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}}),Br.createElement("div",{className:zu()}),Br.createElement(Hu,{direction:"horizontal",tooltipContainer:_(),label:qu.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(rn,"QuoteSummary");import{i18n as ju}from"@lingui/core";import{ChevronDownIcon as fC,ChevronRightIcon as gC,Divider as Va,Image as hC,Tooltip as Fr,Typography as _r}from"@rango-dev/ui";import O from"react";import{useLayoutEffect as mC,useState as an}from"react";var Gu=480,Vu=768,Xu=1024,Ku=1200,dC=i(()=>{let[t,e]=an(!1),[o,n]=an(!1),[r,a]=an(!1),[s,l]=an(!1),[p,u]=an(!1),c=i(()=>{e(window.innerWidth<=Gu),n(window.innerWidth>Gu&&window.innerWidth<=Vu),a(window.innerWidth>Vu&&window.innerWidth<=Xu),l(window.innerWidth>Xu&&window.innerWidth<=Ku),u(window.innerWidth>Ku)},"handleResize");return mC(()=>(c(),window.addEventListener("resize",c),()=>window.removeEventListener("resize",c)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:p}},"useScreenDetect"),Pr=dC;var Dr=4,$r=6,sn=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||_();return O.createElement(Fr,{container:l,side:"bottom",sideOffset:4,open:r,content:e},O.createElement(Nu,{className:n,state:a},O.createElement(hC,{src:o,size:16})))},"ImageComponent");function Yu(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,p=l||_(),u=r.length,c=Dp(r),{isTablet:m,isMobile:f}=Pr();return O.createElement(Wu,{listItem:s==="list-item",ref:d=>e.current=d,selected:o,onClick:d=>{d.stopPropagation(),n(g=>!g)}},O.createElement("div",{className:Po()},O.createElement(_r,{variant:"body",size:"xsmall"},ju.t("Via:")),O.createElement(Va,{direction:"horizontal",size:4}),r.map((d,g)=>{let S=`item-${g}`,C=O.createElement(za,null,O.createElement(gC,{size:12,color:"black"}));return f||m?O.createElement(O.Fragment,{key:S},O.createElement(sn,{content:d.swapper.displayName,src:d.swapper.image,state:d.state,container:l}),g!==u-1&&O.createElement(O.Fragment,null,C)):O.createElement(O.Fragment,{key:S},u<=Dr||u>Dr&&g<Dr-1?O.createElement(O.Fragment,null,O.createElement(sn,{content:d.swapper.displayName,src:d.swapper.image,state:d.state,container:l}),g!==u-1&&O.createElement(O.Fragment,null,C)):g===Dr-1&&O.createElement(Fr,{container:p,side:"bottom",align:"end",sideOffset:4,content:O.createElement("div",{className:Po()},C,r.map((y,T)=>{let k=`image-${T}`;return T>=g&&O.createElement(O.Fragment,{key:k},O.createElement(sn,{content:y.swapper.displayName,src:y.swapper.image,state:y.state,open:!1}),T!==u-1&&O.createElement(O.Fragment,null,C))}))},O.createElement(Ha,{state:r.find((y,T)=>T>=g&&(y.state==="error"||y.state==="warning"))?.state},O.createElement(_r,{size:"xsmall",variant:"body"},"+",u-g))))})),O.createElement("div",{className:Po()},O.createElement("div",{className:"blockchains_section"},O.createElement("div",{className:Po()},O.createElement(_r,{variant:"body",size:"xsmall"},ju.t("Chains:")),O.createElement(Va,{direction:"horizontal",size:4}),c.map((d,g)=>O.createElement(O.Fragment,{key:d.displayName},c.length<=$r||c.length>$r&&g<$r-1?O.createElement(Fr,{container:p,side:"bottom",content:d.displayName,sideOffset:4},O.createElement(sn,{content:"",src:d.image,open:!1,className:g!==0?"blockchainImage":""})):g===$r-1&&O.createElement(Fr,{container:p,side:"bottom",align:"end",sideOffset:4,content:O.createElement("div",{className:Po()},c.map((S,C)=>C>=g&&O.createElement(sn,{key:S.displayName,content:"",src:S.image,open:!1,className:C>g?"blockchainImage":"",container:l})))},O.createElement(Ha,{className:"blockchainImage"},O.createElement(_r,{size:"xsmall",variant:"body"},"+",c.length-g))))),O.createElement(Va,{direction:"horizontal",size:32}))),O.createElement(za,{orientation:a?"up":"down"},O.createElement(fC,{size:12,color:"black"}))))}i(Yu,"QuoteTrigger");function Ka(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:p=!0,showModalFee:u=!0,onClickAllRoutes:c,fullExpandedMode:m=!1,container:f}=t,d=h().blockchains(),{findToken:g}=h(),S=h().swappers(),{customSlippage:C,slippage:y}=h(),T=C||y,[k,v]=xC(t.expanded),I=wC(null),W=M(o.value,6,6),x=M(n.value,6,6),w=n.usdValue?M(n.usdValue,4,4):"",b=et(o.usdValue,n.usdValue??null),E=M(b,2,2),P=At(b??0),Q=i((ge,Ce)=>ge.map((D,L)=>{let me,se=r?.type===3&&r.swap.swapperId===D.swapperId,_e=r?.type===4&&r.recommendedSlippages?.has(L),lt=a?.type===2&&a.recommendedSlippages?.has(L),De=se||_e,Ve=lt;De?me="error":Ve&&(me="warning");let Xe=De?fo.t("Slippage Error"):fo.t("Slippage Warning");return se&&(Xe=fo.t("Bridge Limit Error")),{swapper:{displayName:zo(D.swapperId,S)??"",image:D.swapperLogo},from:{token:{displayName:D.from.symbol,image:D.from.logo},chain:{displayName:Je(D.from.blockchain,d)??"",image:D.from.blockchainLogo},price:{value:L===0&&!Ce?M(o.value,6,6):M(D.fromAmount,6,6),usdValue:M((D.from.usdPrice??0)*parseFloat(D.fromAmount),4,4),realValue:L===0?o.value:D.fromAmount,realUsdValue:new Xa(D.from.usdPrice??0).multipliedBy(D.fromAmount).toString()}},to:{token:{displayName:D.to.symbol,image:D.to.logo},chain:{displayName:Je(D.to.blockchain,d)||"",image:D.to.blockchainLogo},price:{value:M(D.toAmount,6,6),usdValue:M((D.to.usdPrice??0)*parseFloat(D.toAmount),4,4),realValue:D.toAmount,realUsdValue:new Xa(D.to.usdPrice??0).multipliedBy(D.toAmount).toString()}},state:me,alerts:De||Ve?F.createElement(Cu,{dense:m},F.createElement(yC,{variant:"alarm",type:De?"error":"warning",title:Xe,footer:F.createElement(Tu,null,se&&F.createElement("div",null,F.createElement(Do,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),F.createElement(_o,{direction:"vertical",size:2}),F.createElement(Do,{size:"xsmall",variant:"body",color:"neutral900"},fo.t({id:"Yours: {amount} {symbol}",values:{amount:M(D.fromAmount,6,6),symbol:D?.from.symbol}}))),(_e||lt)&&!se&&F.createElement("div",null,F.createElement(Do,{size:"xsmall",variant:"body",color:"neutral900"},fo.t({id:"Minimum required slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(L)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(L)}}})),F.createElement(_o,{direction:"vertical",size:2}),F.createElement(Do,{size:"xsmall",variant:"body",color:"neutral900"},fo.t({id:"Yours: {userSlippage}",values:{userSlippage:T}}))))})):void 0,time:qo(D.estimatedTimeInSeconds),fee:M(Hi(D,g),2,2),internalSwaps:D.internalSwaps?Q(D.internalSwaps):void 0}}),"getQuoteSteps"),A=Q(e?.swaps??[]),z=A.length,j=f||_(),G=Fp(t.quote.tags||[]),B=!!c,Z=qo(Ln(e?.swaps)),ie=Yn(e?.swaps??[],g),J=M(ie,2,2),ne=ie.gte(new Xa(mp));return m?F.createElement(SC,{selected:l,fee:J,time:Z,tooltipContainer:Qo(),steps:A,tags:G,feeWarning:ne,percentageChange:E,warningLevel:P,outputPrice:{value:x,usdValue:w,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(bu,{selected:l,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:Eu()},!p&&G.length?F.createElement(F.Fragment,null,F.createElement(_u,null,G.map((ge,Ce)=>{let D=`${ge.value}_${Ce}`;return F.createElement(F.Fragment,{key:D},F.createElement(TC,{label:ge.label,value:ge.value}),F.createElement(_o,{size:4,direction:"horizontal"}))})),F.createElement(Wr,null),!B&&F.createElement(_o,{size:4})):null,F.createElement("div",{id:"portal-root",className:Iu()},F.createElement(Uu,{quote:e,time:Z,fee:J,feeWarning:ne,showModalFee:u,steps:z}),B&&F.createElement(xu,{onClick:ge=>{ge.stopPropagation(),c()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Do,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},fo.t("See All Routes")))),s==="basic"&&F.createElement("div",{className:Au()},F.createElement(Bu,null,F.createElement(CC,{size:12,color:"gray"})),F.createElement(Pu,null,F.createElement(qa,{size:"small",variant:"body"},`${W} ${A[0].from.token.displayName} = `),F.createElement(Zu,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(qa,{size:"small",variant:"body"},"\xA0",`${x} ${A[A.length-1].to.token.displayName}`))),F.createElement(Zu,{content:n.usdValue,container:j},F.createElement(_o,{size:2,direction:"horizontal"}),F.createElement(Do,{color:"$neutral600",size:"xsmall",variant:"body"},`($${w})`))),s==="list-item"&&F.createElement(vC,{tooltipContainer:j,type:"output",direction:"vertical",price:{value:x,usdValue:w,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:A[z-1].to.token.displayName,image:A[z-1].to.token.image},chain:{image:A[z-1].to.chain.image},percentageChange:E,warningLevel:P}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(rn,{from:A[0].from,to:A[z-1].to,percentageChange:E,warningLevel:P}),F.createElement(_o,{size:4}))),F.createElement(vu,{selected:l,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:v},F.createElement(Yu,{type:s,quoteRef:I,selected:l,setExpanded:v,container:j,expanded:k,steps:A}),F.createElement(Mu,{open:k},F.createElement(Lu,null),F.createElement("div",{className:wu()},A.map((ge,Ce)=>{let D=`item-${Ce}`;return F.createElement(kC,{type:"quote-details",key:D,tooltipContainer:j,step:ge,hasSeparator:Ce!==A.length-1,state:ge.state})})))))}i(Ka,"Quote");import{Divider as AC,Skeleton as WC}from"@rango-dev/ui";import Mt from"react";import{darkTheme as bC,styled as Or}from"@rango-dev/ui";var Ju=Or("div",{$$color:"$colors$neutral100",[`.${bC} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Ru=Or("div",{paddingTop:"$2"}),em=Or("div",{paddingLeft:"$8"}),tm=Or("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as um,Divider as mt,Skeleton as Ze}from"@rango-dev/ui";import H from"react";import{css as EC,styled as Nt}from"@rango-dev/ui";var ja=Nt("div",{display:"flex"}),om=Nt("div",{padding:"$10 $0 $20"}),nm=Nt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),rm=Nt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),im=Nt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),am=Nt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),sm=Nt("div",{width:"65%",display:"flex",justifyContent:"start"}),lm=Nt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),pm=Nt("div",{padding:"$15 $0 $15 $0"}),cm=EC({display:"flex",justifyContent:"space-between",alignItems:"center"});function ln(t){let{type:e,tagHidden:o=!0}=t,n=H.createElement(im,null,H.createElement(sm,null,H.createElement(um,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),H.createElement(mt,{size:8,direction:"horizontal"}),H.createElement(lm,null,H.createElement(Ze,{height:10,width:60,variant:"rounded"}),H.createElement(mt,{size:4}),H.createElement(Ze,{height:15,variant:"rounded"}))),H.createElement(Ze,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return H.createElement("div",null,!o&&H.createElement(H.Fragment,null,H.createElement(ja,null,H.createElement(Ze,{width:65,height:20,variant:"rounded"}),H.createElement(mt,{size:4,direction:"horizontal"}),H.createElement(Ze,{width:65,height:20,variant:"rounded"}),H.createElement(mt,{size:4,direction:"horizontal"}),H.createElement(Ze,{width:65,height:20,variant:"rounded"})),H.createElement(Wr,null),!r&&H.createElement(mt,{size:4})),H.createElement("div",{className:cm()},H.createElement(ja,null,H.createElement(Ze,{width:60,height:10,variant:"rounded"}),H.createElement(mt,{size:4,direction:"horizontal"}),H.createElement(Ze,{width:60,height:10,variant:"rounded"}),H.createElement(mt,{size:4,direction:"horizontal"}),H.createElement(Ze,{width:60,height:10,variant:"rounded"})),r&&H.createElement(Ze,{width:85,height:24,variant:"rounded"})),e==="basic"&&H.createElement(om,null,H.createElement(Ze,{height:15,width:148,variant:"rounded"})),e==="list-item"&&H.createElement(nm,null,H.createElement(rm,null,H.createElement(um,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),H.createElement(mt,{direction:"horizontal",size:4}),H.createElement(Ze,{height:15,width:150,variant:"rounded"})),H.createElement(mt,{size:10}),H.createElement(Ze,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&H.createElement(H.Fragment,null,H.createElement(mt,{size:4}),H.createElement(pm,null,n,H.createElement(am,null),n),H.createElement(mt,{size:12})))}i(ln,"QuoteSummarySkeleton");import{ChainToken as hm,Divider as Za,NextIcon as IC,Skeleton as Ur}from"@rango-dev/ui";import Ee from"react";import{styled as pn}from"@rango-dev/ui";var mm=pn("div",{display:"flex",alignItems:"start"}),dm=pn("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Ya=pn("div",{display:"flex",alignItems:"center",flexGrow:1}),fm=pn("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),gm=pn("div",{display:"flex",alignItems:"center"});function wt(t){let{separator:e=!0}=t;return Ee.createElement(Ee.Fragment,null,Ee.createElement(gm,null,Ee.createElement(Ur,{height:22,width:22,variant:"circular"}),Ee.createElement(Za,{direction:"horizontal",size:8}),Ee.createElement(Ur,{height:15,width:148,variant:"rounded"})),Ee.createElement(mm,null,Ee.createElement(tm,{hideSeparator:!e}),Ee.createElement(dm,{extraSpace:e},Ee.createElement(Ya,null,Ee.createElement(hm,{size:"small",loading:!0,chainImage:"",tokenImage:""}),Ee.createElement(Za,{direction:"horizontal",size:8}),Ee.createElement(Ur,{height:12,variant:"rounded"})),Ee.createElement(fm,null,Ee.createElement(IC,{color:"gray",size:16})),Ee.createElement(Ya,null,Ee.createElement(hm,{size:"small",loading:!0,chainImage:"",tokenImage:""}),Ee.createElement(Za,{direction:"horizontal",size:8}),Ee.createElement(Ur,{height:12,variant:"rounded"})))))}i(wt,"StepSkeleton");function cn(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Mt.createElement(Ju,{expanded:o,rounded:e!=="basic"},Mt.createElement(ln,{type:e,tagHidden:n}),Mt.createElement(Ru,null,Mt.createElement(WC,{height:15,variant:"rounded"})),o&&Mt.createElement(em,null,Mt.createElement(AC,{size:24}),Mt.createElement(wt,null),Mt.createElement(wt,null),Mt.createElement(wt,{separator:!1})))}i(cn,"QuoteSkeleton");function go(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:p,showModalFee:u,selected:c,onClickAllRoutes:m,fullExpandedMode:f=!1,container:d}=t,{inputAmount:g,inputUsdValue:S,toToken:C}=Y(),y=e?.outputAmount?new NC(e?.outputAmount):null,T=e?.outputAmount?Jn(e?.outputAmount,er(e)||C?.usdPrice):null,v=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?Qr.createElement(Qa,null,Qr.createElement(cn,{tagHidden:l,type:o,expanded:s})):v?Qr.createElement(Qa,{onClick:()=>p?.(e)},Qr.createElement(Ka,{quote:e,error:r,container:d,showModalFee:u,warning:a,tagHidden:l,selected:c,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:f,input:{value:g,usdValue:S?.toString()??""},output:{value:y?.toString()??"",usdValue:T?.toString()??""}})):null}i(go,"QuoteInfo");import{calculatePendingSwap as PC}from"@rango-dev/queue-manager-rango-preset";import{useEffect as _C}from"react";import{useRef as MC,useState as LC}from"react";var BC=2e3;function zr({request:t}){let[e,o]=LC(!1),n=MC(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(p=>setTimeout(p,BC)),await s(l,!1)),"retryFetch"),s=i(async(l,p=!1)=>{r(),n.current=new AbortController,o(!0);try{let u=await t(l,{signal:n.current.signal});return n.current=null,u}catch(u){if(p)return await a(l);throw u}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(zr,"useFetch");function ym(){let{fetch:t,loading:e,cancelFetch:o}=zr({request:async(n,r)=>await Ot().confirmRouteRequest(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(ym,"useFetchConfirmQuote");function qr(t){if(!t.swaps)throw new Error(oe().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=Ja(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(qr,"throwErrorIfResponseIsNotValid");function Ja(t){if(gp(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=hp(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=Tp(t);if(o){let n=Zn(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(Ja,"getQuoteError");function Sm(t,e,o){let n=!1;t&&(n=_p(t,e));let r={quote:null,quoteUpdate:null,balance:null},a=wo(e,{fromToken:o.fromToken,toToken:o.toToken,findToken:o.findToken,userSlippage:o.userSlippage});a&&(r.quote=a),t&&n&&(Ep(t,e)?r.quoteUpdate={type:3,newOutputAmount:M(vo(e)),percentageChange:M(et(vo(t)??"",vo(e)??""),null,2)}:Vi(t,e)?r.quoteUpdate={type:0}:Xi(t,e)?r.quoteUpdate={type:1}:Ki(t,e)&&(r.quoteUpdate={type:2}));let s=Ip(e,o.selectedWallets,o.meta.blockchains);return s.length===0||(r.balance={messages:s}),r}i(Sm,"generateWarnings");function Hr(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(Hr,"handleQuoteErrors");function Ra(){let{fromToken:t,toToken:e,inputAmount:o,setSelectedQuote:n,selectedQuote:r,customDestination:a,setQuoteWarningsConfirmed:s,resetAlerts:l}=Y(),{slippage:p,customSlippage:u}=h(),c=h().getDisabledLiquiditySources(),m=h().blockchains(),f=h().tokens(),{findToken:d}=h(),g=u||p,{fetch:S,cancelFetch:C,loading:y}=ym();return _C(()=>C,[]),{loading:y,fetch:i(async k=>{let v=k.selectedWallets,I=k?.customDestination??a;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let W=v.reduce((w,b)=>(w[b.chain]=b.address,w),{}),x={requestId:r?.requestId||"",selectedWallets:W,destination:I||void 0};try{return await S(x,!0).then(w=>{let{result:b}=w;qr({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let E={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};n(E);let P={slippage:g.toString(),disabledSwappersGroups:c},Q=Sm(r??void 0,E,{fromToken:t,toToken:e,meta:{blockchains:m},findToken:d,selectedWallets:v,userSlippage:g});Q.quoteUpdate&&s(!1),l();let A=!!Q.balance,z=PC(o.toString(),b,xp(v),P,!A,{blockchains:m,tokens:f});return{quote:E,swap:z,error:null,warnings:Q}})}catch(w){return Hr(w)}},"fetch"),cancelFetch:C}}i(Ra,"useConfirmSwap");var HC=FC("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Tm}`]:{width:"$48",height:"$48"}}),GC=os({flexGrow:1,paddingRight:"$10"}),VC=os({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),XC=os({display:"flex",justifyContent:"space-between",alignItems:"center"});function km(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=Y(),s=qC(),[l,p]=un(""),u=!n,[c,m]=un(!1),[f,d]=un(!1),{isActiveTab:g}=ae(),S=h().getDisabledLiquiditySources(),C=zC(S),{manager:y}=DC(),{fetch:T,loading:k,cancelFetch:v}=Ra(),[I,W]=un({swap:null,error:null,warnings:null}),[x,w]=un(!1),b=i(async({selectedWallets:B,customDestination:Z})=>{let ie=await T?.({selectedWallets:B,customDestination:Z});return W(ie),ie},"onConfirmSwap"),E=i(async()=>{if(I.swap&&n)try{await y?.create("swap",{swapDetails:I.swap},{id:I.swap.requestId});let B=`../${q.swaps}/${I.swap.requestId}`;s(B,{replace:!0}),setTimeout(()=>{e("")},0)}catch(B){p("Error: "+B?.message)}},"addNewSwap"),P=i(async()=>{d(!0),await E(),d(!1)},"onConfirm"),Q=i(async()=>{I?.warnings?.quote&&!a?w(!0):await P()},"onStartConfirmSwap"),A=i(async()=>{W({error:null,swap:null,warnings:null}),T({selectedWallets:o,customDestination:r}).then(B=>{W(B)}).catch(B=>console.error(B))},"onRefresh");Gr(()=>{!!C.current.length&&!S.length&&A(),C.current=S},[S.length]),Gr(()=>{u&&v()},[u]),Gr(()=>{u&&m(u)},[u]),Gr(()=>{u||T({selectedWallets:o,customDestination:r}).then(B=>W(B)).catch(B=>console.error(B))},[]),QC(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let z=I.warnings?.quote??null,j=I.error,G=[];if(l&&G.push(Ie.createElement(Cm,{type:"error",variant:"alarm",title:l})),I.warnings?.quoteUpdate&&G.push(Ie.createElement(Cm,{variant:"alarm",type:"warning",title:I.warnings.quoteUpdate&&ir(I.warnings.quoteUpdate)})),z||j){let B=`../${q.settings}`;G.push(Ie.createElement(on,{warning:z,error:j,couldChangeSettings:!1,refetchQuote:A,showWarningModal:x,confirmationDisabled:!g,onOpenWarningModal:()=>w(!0),onCloseWarningModal:()=>w(!1),onConfirmWarningModal:async()=>{w(!1),await E()},onChangeSettings:()=>s(B)}))}return Ie.createElement(ce,{header:{title:es.t("Confirm Swap"),onWallet:()=>{let B=`../${q.wallets}`;s(B)}},footer:Ie.createElement(HC,null,Ie.createElement("div",{className:GC()},Ie.createElement($C,{variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||f,disabled:!!I.error||!g,onClick:Q},es.t("Start Swap"))),Ie.createElement(Tm,{variant:"contained",type:"primary",size:"large",loading:k||f,disabled:!g,onClick:m.bind(null,!0)},Ie.createElement(UC,{size:24})))},c&&Ie.createElement(eu,{open:c,onClose:()=>m(!1),onCancel:v,loading:k,onCheckBalance:b}),Ie.createElement(fe,null,Ie.createElement("div",{className:XC()},Ie.createElement(OC,{variant:"title",size:"small"},es.t("You get")),Ie.createElement("div",{className:VC()},Ie.createElement(gr,{onClick:!k&&!c&&!x?A:void 0}))),Ie.createElement(ts,{size:"12"}),ac(G.map((B,Z)=>({element:B,key:`alert-${Z}`})),Ie.createElement(ts,{size:10})),G.length>0?Ie.createElement(ts,{size:10}):null,Ie.createElement(go,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:I.error,loading:k,warning:I.warnings?.quote??null})))}i(km,"ConfirmSwapPage");import{i18n as Xr}from"@lingui/core";import{useManager as pT}from"@rango-dev/queue-manager-react";import{Divider as Lm,NotFound as cT,styled as uT}from"@rango-dev/ui";import Bt,{useState as mT}from"react";import{useNavigate as dT}from"react-router-dom";import{i18n as YC}from"@lingui/core";import{Divider as Em,GroupedVirtualizedList as ZC,Skeleton as JC,SwapListItem as Im,Typography as RC}from"@rango-dev/ui";import Qe,{useCallback as Am,useEffect as eT,useRef as tT,useState as oT}from"react";function vm(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(vm,"calculateGroupsSoFar");import{css as KC,darkTheme as jC,styled as mn}from"@rango-dev/ui";var ns=KC(),wm=mn("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),rs=mn("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${ns}`]:{$$color:"$colors$neutral600",[`.${jC} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),is=mn("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),xm=mn("div",{gap:"$10",display:"flex",flexDirection:"column"}),bm=mn("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var nT=10;function as(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=oT([]),l=tT(0),{swaps:p,groupCounts:u,groups:c}=n(e),m=Am(vm,[]),f=Am(()=>{let d=e.length-l.current;d&&(l.current+=Math.min(d,nT),s(m(u,l.current)))},[e.length]);if(eT(()=>{r||f()},[r,f]),r){let d=[1,2];return Qe.createElement(Qe.Fragment,null,[d,d].map((S,C)=>Qe.createElement(rs,{key:C},Qe.createElement(is,null,Qe.createElement(JC,{variant:"text",width:60,size:"small"}),Qe.createElement(Em,{size:16})),Qe.createElement(Em,{size:4}),Qe.createElement(xm,null,S.map((T,k)=>Qe.createElement(Im,{isLoading:!0,key:k}))))))}return Qe.createElement(ZC,{endReached:()=>{l.current<e.length&&f()},groupCounts:a,groupContent:d=>Qe.createElement(rs,null,Qe.createElement(is,null,Qe.createElement(RC,{variant:"label",size:"medium",className:ns()},c[d]))),itemContent:(d,g)=>{let S=p[d];if(!S)return null;let C=S.steps[0],y=S.steps[S.steps.length-1];return Qe.createElement(wm,{key:S.requestId},Qe.createElement(Im,{requestId:S.requestId,creationTime:S.creationTime,status:S.status,onClick:o,tooltipContainer:_(),onlyShowTime:c[g]===YC.t("Today"),swapTokenData:{from:{token:{image:C.fromLogo,displayName:C.fromSymbol},blockchain:{image:C.fromBlockchainLogo||""},amount:M(S.inputAmount,6,6),realAmount:S.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:M(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(as,"HistoryGroupedList");import{CloseIcon as iT,IconButton as aT,SearchIcon as sT,TextField as lT}from"@rango-dev/ui";import dn from"react";import{styled as rT}from"@rango-dev/ui";var Wm=rT("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function Lt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,setValue:l,...p}=t;return dn.createElement(lT,{prefix:dn.createElement(Wm,null,dn.createElement(sT,{color:"black"})),suffix:!!s.length&&dn.createElement(aT,{variant:"ghost",onClick:()=>l?.(""),size:"small"},dn.createElement(iT,{color:"gray",size:10})),fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center"},size:r,value:s,onChange:a,...p})}i(Lt,"SearchInput");import{i18n as Vr}from"@lingui/core";import Nm from"dayjs";var Mm=i(t=>{let e=new Map([["today",{title:Vr.t("Today"),swaps:[]}],["week",{title:Vr.t("This week"),swaps:[]}],["month",{title:Vr.t("This month"),swaps:[]}],["year",{title:Vr.t("This year"),swaps:[]}]]);function o(p,u){e.has(p)||e.set(p,{title:p,swaps:[]}),e.get(p)?.swaps.push(u)}i(o,"addYearsToOutput");let n=Nm();t.forEach(p=>{let u=Number(p.creationTime),c=Nm(u);if(n.isSame(c,"day"))e.get("today")?.swaps.push(p);else if(n.isSame(c,"week"))e.get("week")?.swaps.push(p);else if(n.isSame(c,"month"))e.get("month")?.swaps.push(p);else if(n.isSame(c,"year"))e.get("year")?.swaps.push(p);else{let m=new Date(u).getFullYear().toString();o(m,p)}});let r=Array.from(e.values()).filter(p=>p.swaps.length>0),a=r.flatMap(p=>p.swaps),s=r.map(p=>p.swaps.length),l=r.map(p=>p.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var fT=uT("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),gT=i((t,e)=>t?.length?t.filter(o=>St(o.fromBlockchain,e)||St(o.toBlockchain,e)||St(o.toSymbol,e)||St(o.fromSymbol,e)).length:!1,"isStepContainsText");function Bm(){let t=dT(),{manager:e,state:o}=pT(),n=nt(e).map(({swap:c})=>c),[r,a]=mT(""),s=!o.loadedFromPersistor,l=i(c=>{let m=c.target.value;a(m)},"searchHandler"),p=n;r&&(p=n.filter(c=>St(c.inputAmount,r)||St(c.status,r)||gT(c.steps,r)||St(c.requestId,r)));let u=!p?.length&&!s;return Bt.createElement(ce,{header:{title:Xr.t("History")}},Bt.createElement(fe,null,Bt.createElement(Lt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Xr.t("Search Transaction"),autoFocus:!0,onChange:l,value:r}),Bt.createElement(Lm,{size:"16"}),Bt.createElement(fT,null,u&&Bt.createElement(bm,null,Bt.createElement(Lm,{size:32}),Bt.createElement(cT,{title:Xr.t("No results found"),description:r?Xr.t("Try using different keywords"):""})),!u&&Bt.createElement(as,{list:p,onSwapClick:t,groupBy:Mm,isLoading:s}))))}i(Bm,"HistoryPage");import{i18n as PT}from"@lingui/core";import{Button as _T,Divider as Zm,styled as DT,WarningIcon as $T}from"@rango-dev/ui";import FT from"bignumber.js";import He,{useEffect as Jm,useState as Rm}from"react";import{useNavigate as OT}from"react-router-dom";import{i18n as kT}from"@lingui/core";import{Header as vT}from"@rango-dev/ui";import Vt,{useEffect as wT,useState as xT}from"react";import{i18n as yT}from"@lingui/core";import{Divider as ls,FullExpandedQuote as ST,Typography as CT}from"@rango-dev/ui";import ye from"react";import{styled as ss}from"@rango-dev/ui";var Pm=ss("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),_m=ss("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Dm=ss("div",{width:"146px"});import{i18n as fn}from"@lingui/core";import{Select as hT}from"@rango-dev/ui";import $m from"react";function Kr(t){let{updateQuotePartialState:e,sortStrategy:o}=Y(),n=[{value:"SMART",label:fn.t("Smart Routing")},{value:"FEE",label:fn.t("Lowest Fee")},{value:"SPEED",label:fn.t("Fastest Transfer")},{value:"NET_OUTPUT",label:fn.t("Maximum Return")},{value:"PRICE",label:fn.t("Maximum Output")}];return $m.createElement(Dm,null,$m.createElement(hT,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(Kr,"SelectStrategy");var Fm=3;function gn(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:p,quotes:u,updateQuotePartialState:c,fromToken:m,toToken:f,sortStrategy:d,error:g}=Y(),{slippage:S,customSlippage:C}=h(),{findToken:y}=h(),T=l||_(),k=!!u&&u.results.length,v=C??S,I=i(w=>{if(!m||!f||!u)return null;let b={requestAmount:u.requestAmount,...w};return wo(b,{fromToken:m,toToken:f,userSlippage:v,findToken:y})},"getQuoteWarning"),W=g?.type===0||g?.type===1,x=u?.results?or(d,u?.results):[];return ye.createElement(ye.Fragment,null,a&&ye.createElement(ye.Fragment,null,ye.createElement(_m,null,ye.createElement(CT,{size:"xmedium",variant:"title"},yT.t("Sort by")),ye.createElement(Kr,{container:T})),ye.createElement(ls,{size:"10"})),e&&Array.from({length:Fm},(w,b)=>ye.createElement(ye.Fragment,{key:b},s?ye.createElement(ST,{loading:!0}):ye.createElement(cn,{tagHidden:!1,type:"list-item",expanded:!1}),b!==Fm-1&&ye.createElement(ls,{size:16}))),!e&&ye.createElement(ye.Fragment,null,k?x.map((w,b)=>{let E=I(w),P=Ja(w.swaps),Q=x.length-1===b;return ye.createElement(ye.Fragment,{key:w.requestId},ye.createElement(go,{showModalFee:r,container:T,selected:p?.requestId===w.requestId,tagHidden:!1,quote:{...w,requestAmount:u.requestAmount},loading:e,error:P?.options||null,warning:E,fullExpandedMode:s,onClick:A=>{P||c("warning",E),c("error",P?.options||null),o(A)},type:"list-item"}),!Q&&ye.createElement(ls,{size:16}))}):W&&ye.createElement(Pm,null,ye.createElement(en,{size:s?"large":"small",error:g,fetch:n}))))}i(gn,"Quotes");import{darkTheme as TT,styled as Om}from"@rango-dev/ui";var Um=Om("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${TT} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Qm=Om("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var bT=100;function ps(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=xT(!1),p=s?"":"is-hidden",{config:u}=h(),c=u?.variant==="full-expanded",m=Qo();return wT(()=>{let f=null;return a?f=setTimeout(()=>{l(!0)},bT):(l(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),Vt.createElement(Um,{expandMode:u?.variant==="full-expanded"?"full":"default",className:`${p} ${Sr()}`,id:he.EXPANDED_BOX_ID},Vt.createElement(vT,{title:kT.t("Routes"),suffix:Vt.createElement(Vt.Fragment,null,Vt.createElement(Kr,{container:m}),Vt.createElement(ao,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),Vt.createElement(Qm,null,Vt.createElement(gn,{showModalFee:!1,fetch:e,hasSort:!1,loading:o,container:Qo(),onClickOnQuote:n,fullExpandedMode:c})))}i(ps,"ExpandedQuotes");import{i18n as Km}from"@lingui/core";import{SwapInput as jm}from"@rango-dev/ui";import hn from"react";import{ReverseIcon as AT}from"@rango-dev/ui";import us from"react";import{keyframes as ET,styled as zm}from"@rango-dev/ui";var cs=450,IT=ET({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),qm=zm("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Hm=zm("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${IT} ${cs}ms ease-in-out forwards`}},"&:hover":{color:"$secondary500",transform:"translateY(1px) scale(1.04)",boxShadow:"1px 1px 1px 1px rgba(0, 0, 0, 0.05)"}});function ms(){let t=Y.use.switchFromAndTo();return us.createElement(qm,null,us.createElement(Hm,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},cs),t()}},us.createElement(AT,{size:12})))}i(ms,"SwitchFromAndToButton");import{styled as Gm}from"@rango-dev/ui";var Vm=Gm("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),Xm=Gm("div",{position:"relative"});function ds(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:p,setInputAmount:u,inputAmount:c,inputUsdValue:m,outputAmount:f,outputUsdValue:d,selectedQuote:g}=Y(),{connectedWallets:S,getBalanceFor:C}=te(),y=a?C(a):null,T=Fn(y)?.amount??"0",k=s&&a?M(y?.amount,y?.decimals):"0",v=!!s&&Dl(S,s.name),I=!qi(g,c,m),W=!qi(g,c,d),x=!m||!d||!d.gt(0)?null:et(m.toString(),d.toString());return hn.createElement(Vm,null,hn.createElement(Xm,null,hn.createElement(jm,{label:Km.t("From"),mode:"From",onInputChange:u,balance:T,chain:{displayName:s?.displayName||"",image:s?.logo||""},token:{displayName:a?.symbol||"",image:a?.image||""},onClickToken:()=>n("from"),price:{value:c,usdValue:I?void 0:M(m,4,4),realUsdValue:I?void 0:m?.toString(),error:I?oe().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:v,tooltipContainer:_(),onSelectMaxBalance:()=>{u(k.split(",").join(""))}}),hn.createElement(ms,null)),hn.createElement(jm,{sharpBottomStyle:!r&&(!!g||e),label:Km.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:p?.displayName||"",image:p?.logo||""},token:{displayName:l?.symbol||"",image:l?.image||""},percentageChange:M(et(m,d),2,2),warningLevel:At(x??0),price:{value:M(f,6,6),usdValue:W?void 0:M(d,4,4),realValue:f?.toString(),realUsdValue:W?void 0:d?.toString(),error:W?oe().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:_()}))}i(ds,"Inputs");import{useCallback as WT,useEffect as NT,useRef as MT,useState as LT}from"react";function Ym(){let{fetch:t,loading:e,cancelFetch:o}=zr({request:async(n,r)=>await Ot().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Ym,"useFetchAllQuotes");var BT=600;function jr({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Ym(),{excludeLiquiditySources:n,features:r,enableCentralizedSwappers:a}=h().config,s=te.use.connectedWallets(),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:c,selectedQuote:m,sortStrategy:f,resetQuote:d,error:g,warning:S,setSelectedQuote:C,updateQuotePartialState:y}=Y(),{slippage:T,customSlippage:k,affiliatePercent:v,affiliateRef:I,affiliateWallets:W,fetchStatus:x}=h(),w=h().getLiquiditySources(),b=h().getDisabledLiquiditySources(),E=h().excludeLiquiditySources(),{findToken:P}=h(),[Q,A]=LT(!0),z=MT(u),j=k??T,B=!l||!p||Rt(l,p)||!Ho(u),Z=i(ne=>{A(ne)},"resetState"),ie=i(ne=>{let{fromToken:ge,toToken:Ce,inputAmount:D,liquiditySources:L,excludeLiquiditySources:me,disabledLiquiditySources:se,slippage:_e,affiliateRef:lt,affiliatePercent:De,affiliateWallets:Ve}=ne;if(Q||Z(!0),!B&&ge&&Ce){d();let Xe=wp({fromToken:ge,toToken:Ce,inputAmount:D,liquiditySources:L,excludeLiquiditySources:me,disabledLiquiditySources:se,wallets:s,slippage:_e,affiliateRef:lt,affiliatePercent:De,affiliateWallets:Ve,enableCentralizedSwappers:a});jl("experimentalRoute",r)&&(Xe.experimental=!0),e(Xe).then(ve=>{let de=or(f,ve.results),N=$p(m,de,ve.requestAmount);A(!1),y("quotes",ve),C(N),qr({diagnosisMessages:ve.diagnosisMessages,requestId:N?.requestId||"",swaps:N?.swaps});let V=N&&wo(N,{fromToken:ge,toToken:Ce,userSlippage:j,findToken:P});y("warning",V)}).catch(ve=>{let{error:de}=Hr(ve);(de?.type===0||de?.type===1)&&d(),de?.type!==2&&(y("error",de),A(!1))})}},"fetch"),J=WT(vl(ne=>{ie(ne)},BT),[B]);return NT(()=>{if(!t){A(!1);return}if(x!=="success")return;if(B){A(!1),(m||g||S)&&d();return}if(!Ho(u)||c?.eq(0)){Z(!1),o();return}d(),Z(!0);let ne=ie;return z.current&&z.current!=u&&(ne=J),z.current=u,ne({inputAmount:u,fromToken:l,toToken:p,liquiditySources:w,excludeLiquiditySources:E,disabledLiquiditySources:b,slippage:j,affiliateRef:I,affiliatePercent:v,affiliateWallets:W}),o},[x,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,B,w?.length,n,b.length,j,I,v,JSON.stringify(W)]),{fetch:()=>ie({inputAmount:u,fromToken:l,toToken:p,liquiditySources:w,excludeLiquiditySources:E,disabledLiquiditySources:b,slippage:j,affiliateRef:I,affiliatePercent:v,affiliateWallets:W}),loading:Q}}i(jr,"useSwapInput");var UT=DT("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),QT=300;function ed(){let t=OT(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:p,setSelectedQuote:u,resetQuoteWallets:c,setQuoteWarningsConfirmed:m,updateQuotePartialState:f}=Y(),[d,g]=Rm(!1),{isLargeScreen:S,isExtraLargeScreen:C}=Pr(),{fetch:y,loading:T}=jr({refetchQuote:a}),{config:k,fetchStatus:v}=h(),{connectedWallets:I}=te(),{isActiveTab:W}=ae(),[x,w]=Rm(!1),E=yp({fetchMetaStatus:v,fetchingQuote:T,inputAmount:n,quote:r,anyWalletConnected:I.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),P=ql(S,C,k?.variant),Q=!!n&&!!e&&!!o&&new FT(n).gt(0)&&!Lp(e,o),A=Q&&v==="success"&&T,G=(!P||P&&p?.results.length)&&(l||s);Jm(()=>{c(),f("refetchQuote",!0)},[]),Jm(()=>{g(Q)},[Q]);let B=(r||s)&&!x?y:void 0,Z=i(J=>{P&&d?(g(!1),setTimeout(()=>{t(J)},QT)):t(J)},"onHandleNavigation"),ie=i(J=>{r?.requestId!==J.requestId&&(w(!1),u(J))},"onClickOnQuote");return He.createElement(UT,null,He.createElement(ce,{height:"auto",footer:He.createElement(_T,{type:"primary",size:"large",disabled:E.disabled||!W,prefix:E.action==="confirm-warning"&&He.createElement($T,null),fullWidth:!0,onClick:()=>{E.action==="connect-wallet"?Z(q.wallets):E.action==="confirm-warning"?w(!0):Z(q.confirmSwap)}},E.title),header:{onWallet:()=>{Z(q.wallets)},hasBackButton:!1,title:k.title||PT.t("Swap"),suffix:He.createElement(ao,{hidden:P?["refresh"]:void 0,onClickRefresh:B,onClickHistory:()=>Z(q.swaps),onClickSettings:()=>{Z(q.settings)}})}},He.createElement(fe,null,He.createElement(ds,{fetchingQuote:A,fetchMetaStatus:v,isExpandable:P,onClickToken:J=>{Z(J==="from"?q.fromSwap:q.toSwap)}}),He.createElement(Zm,{size:"2"}),P?null:He.createElement(go,{quote:r,loading:A,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:p&&p.results.length>1?()=>{f("refetchQuote",!1),Z(q.routes)}:void 0}),G?He.createElement(He.Fragment,null,He.createElement(Zm,{size:"10"}),He.createElement(on,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:y,showWarningModal:x,confirmationDisabled:!W,onOpenWarningModal:()=>w(!0),onCloseWarningModal:()=>w(!1),onConfirmWarningModal:()=>{w(!1),m(!0),Z(q.confirmSwap)},onChangeSettings:()=>Z(q.settings)})):null)),P?He.createElement(ps,{loading:A,onClickOnQuote:ie,fetch:y,onClickRefresh:B,isVisible:d}):null)}i(ed,"Home");import{i18n as td}from"@lingui/core";import{Alert as zT,Divider as qT,List as HT,ListItemButton as GT,Radio as VT,RadioRoot as XT,Typography as KT}from"@rango-dev/ui";import xt from"react";function Xt(){let{setLanguage:t,language:e,config:o}=h(),n=Zl,r=o?.language||ko;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||ko),resetLanguage:()=>t(null)}}i(Xt,"useLanguage");function od(){let{activeLanguage:t,changeLanguage:e,languages:o}=Xt(),n=ot(),r=o.map(a=>{let{local:s,label:l,SVGFlag:p}=a;return{id:s,value:s,title:xt.createElement(KT,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:xt.createElement(VT,{value:s}),start:xt.createElement(p,null)}});return xt.createElement(ce,{header:{title:td.t("Language")}},xt.createElement(fe,null,xt.createElement(zT,{type:"warning",variant:"alarm",title:"Important Notice: Machine translations are in use"}),xt.createElement(qT,{size:"8"}),xt.createElement(XT,{value:t},xt.createElement(HT,{type:xt.createElement(GT,{title:td.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(od,"LanguagePage");import{i18n as Pt}from"@lingui/core";import{Button as RT,Checkbox as ek,Image as tk,ListItemButton as ok,NotFound as nk,Typography as rk}from"@rango-dev/ui";import ze,{useState as ik}from"react";import{Checkbox as ZT,Skeleton as rd}from"@rango-dev/ui";import Sn from"react";import{styled as fs}from"@rango-dev/ui";var yn=fs("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),gs=fs("div",{width:80,display:"flex",justifyContent:"flex-end"}),hs=fs("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as jT,styled as YT}from"@rango-dev/ui";var nd=YT(jT,{height:61});var JT=30;function ys(){return Sn.createElement(yn,null,Array.from(Array(JT),(t,e)=>Sn.createElement(nd,{hasDivider:!0,key:e,start:Sn.createElement(rd,{variant:"circular",width:35,height:35}),title:Sn.createElement(rd,{variant:"text",size:"large",width:90}),end:Sn.createElement(ZT,{checked:!1})})))}i(ys,"LoadingLiquiditySourceList");function Ss({sourceType:t}){let e=h().fetchStatus,o=h().swappers(),n=h().getDisabledLiquiditySources(),[r,a]=ik(""),s=h().toggleLiquiditySource,l=h().isInCampaignMode(),p=qn(o,n),u={Exchanges:Pt.t("Exchanges"),Bridges:Pt.t("Bridges")},c=[];t==="Exchanges"&&c.push("DEX"),t==="Bridges"&&c.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=p.filter(y=>c.includes(y.type)),f=m.length===m.filter(y=>y.selected).length,d=i(()=>{m.forEach(y=>{f?s(y.groupTitle):y.selected||s(y.groupTitle)})},"toggleAllSources"),g=m.map(y=>{let{selected:T,groupTitle:k,logo:v}=y;return{start:ze.createElement(tk,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(k)},end:ze.createElement(ek,{checked:T,disabled:l}),title:ze.createElement(rk,{variant:"title",size:"xmedium"},Pt.t(k)),...y}}),S=i(y=>{let T=y.target.value;a(T)},"searchHandler"),C=g;return r&&(C=g.filter(y=>St(y.groupTitle,r))),ze.createElement(ce,{header:{title:Pt.t(t),suffix:ze.createElement(gs,null,ze.createElement(RT,{variant:"ghost",size:"xsmall",onClick:d},f?Pt.t("Deselect all"):Pt.t("Select all")))}},ze.createElement(fe,{view:!0},ze.createElement(Lt,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:Pt.t("Search {sourceType}",{sourceType:u[t]}),onChange:S}),e==="loading"&&ze.createElement(ys,null),!C.length&&r?ze.createElement(hs,null,ze.createElement(nk,{title:Pt.t("No results found"),description:Pt.t("Try using different keywords")})):e==="success"&&ze.createElement(yn,{disabled:l},C.map(y=>{let{groupTitle:T,...k}=y;return ze.createElement(ze.Fragment,{key:y.id},ze.createElement(ok,{style:{height:"61px"},...k,selected:!1,hasDivider:!0}))}))))}i(Ss,"LiquiditySourcePage");import{i18n as ak}from"@lingui/core";import Yr from"react";import{useNavigate as sk}from"react-router-dom";function id(){let t=sk(),e=ot(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=Y(),{fetch:l,loading:p}=jr({refetchQuote:n}),u=i(f=>{r(f),a("refetchQuote",!1),e()},"onClickOnQuote"),c=`../${q.settings}`,m=`../${q.wallets}`;return Yr.createElement(ce,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:ak.t("Routes"),suffix:Yr.createElement(ao,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(c),a("refetchQuote",!0)}})}},Yr.createElement(fe,null,Yr.createElement(gn,{fetch:l,loading:p,onClickOnQuote:u})))}i(id,"RoutesPage");import{i18n as dd}from"@lingui/core";import{Divider as fd,getCategoriesCount as hk,SelectableCategoryList as yk}from"@rango-dev/ui";import _t,{useState as gd}from"react";import{i18n as Cs}from"@lingui/core";import{Divider as ud,Image as uk,ListItemButton as mk,NotFound as dk,Typography as md}from"@rango-dev/ui";import it,{useEffect as fk,useState as gk}from"react";var ad=i((t,e,o)=>t.filter(n=>Wn(n.type,o)).filter(n=>Et(n.name,e)||Et(n.displayName,e)),"filterBlockchains");import{ImageContainer as lk,styled as sd}from"@rango-dev/ui";var ld=sd("div",{display:"flex",flexDirection:"column",overflow:"hidden"}),Zr=sd(Yo,{padding:0,margin:0,listStyle:"none",[`& ${lk}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as pk,Skeleton as pd}from"@rango-dev/ui";import Jr from"react";var ck=20;function cd(){return Jr.createElement(Zr,null,Array.from(Array(ck),t=>Jr.createElement(pk,{key:t,hasDivider:!0,start:Jr.createElement(pd,{variant:"circular",width:35,height:35}),title:Jr.createElement(pd,{variant:"text",size:"large",width:90})})))}i(cd,"LoadingBlockchainList");function Ts(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r}=t,[a,s]=gk(e),{fetchStatus:l}=h();fk(()=>{s([...ad(e,o,r)])},[e,o,r]);let p=i(()=>!a.length&&o?it.createElement(it.Fragment,null,it.createElement(ud,{size:32}),it.createElement(dk,{title:Cs.t("No results found"),description:Cs.t("Try using different keywords")})):it.createElement(Zr,{as:"ul",key:`${r}-${o}`},a.map(u=>it.createElement(mk,{key:`${u.name}-${u.chainId}`,hasDivider:!0,onClick:()=>n(u),start:it.createElement(uk,{src:u.logo,size:30}),title:it.createElement(md,{variant:"title",size:"medium"},u.displayName),id:u.chainId}))),"renderList");return it.createElement(ld,null,it.createElement(md,{variant:"label",size:"large"},Cs.t("Select Blockchain")),it.createElement(ud,{size:4}),l==="loading"&&it.createElement(cd,null),l==="success"&&p())}i(Ts,"BlockchainList");function ks(t){let{type:e}=t,o=ot(),[n,r]=gd(""),[a,s]=gd("ALL"),l=Y.use.setToBlockchain(),p=Y.use.setFromBlockchain(),u=h().fetchStatus,c=h().blockchains({type:e}),f=hk(c)!==1;return _t.createElement(ce,{header:{title:dd.t("Select Blockchain")}},_t.createElement(fe,{view:!0},f&&_t.createElement(_t.Fragment,null,_t.createElement(yk,{setCategory:s,category:a,blockchains:c,isLoading:u==="loading"}),_t.createElement(fd,{size:24})),_t.createElement(Lt,{value:n,autoFocus:!0,placeholder:dd.t("Search Blockchain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:d=>r(d.target.value)}),_t.createElement(fd,{size:16}),_t.createElement(Ts,{list:c,searchedFor:n,blockchainCategory:a,onChange:d=>{e==="source"?p(d):l(d),o()}})))}i(ks,"SelectBlockchainPage");import{i18n as ni}from"@lingui/core";import{Divider as Dd}from"@rango-dev/ui";import ho,{useState as Pk}from"react";import{useNavigate as _k}from"react-router-dom";import{i18n as xs}from"@lingui/core";import{BlockchainsChip as Rr,Divider as Cd,Image as Td,Skeleton as vk,Tooltip as wk,Typography as bs}from"@rango-dev/ui";import Le from"react";import{useEffect as Tk}from"react";var hd=["ETH","COSMOS","OSMOSIS"];function vs(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Sk),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let p=0;p<=l;p++){let u=n[p];s=s.filter(c=>u.name!==c)}}n.sort(Ck(s)),r=n.splice(a)}return{list:n,more:r}}i(vs,"prepare");function Sk(t,e){let o=hd,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(Sk,"sortByMostUsedBlockchains");function Ck(t){return i(function(o,n){let r=t.findIndex(p=>p===o.name),a=t.findIndex(p=>p===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(Ck,"generateSortByPreferredBlockchainsFor");function yd(t,e){return!!e.list.find(o=>o.name===t)}i(yd,"isInVisibleList");function ws(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=h();Tk(()=>{if(e?.selected){let a=vs(t,o,e);yd(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=vs(t,o,e);return{list:r.list,more:r.more,history:[]}}i(ws,"usePrepareBlockchainList");import{styled as kk}from"@rango-dev/ui";var Sd=kk("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var xk=12;function Es(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,s=ws(e,{limit:10,selected:n?.name}),{fetchStatus:l}=h(),p=Y.use.resetToBlockchain(),u=Y.use.resetFromBlockchain(),c=s.more.length>0,m=s.more.length===1,f=!m&&c;return Le.createElement(Le.Fragment,null,Le.createElement(Cd,{size:12}),Le.createElement(bs,{variant:"label",size:"large"},xs.t("Select Blockchain")),Le.createElement(Cd,{size:12}),Le.createElement(Sd,null,l==="loading"&&Array.from(Array(xk),d=>Le.createElement(vk,{key:d,variant:"rounded",height:50})),l==="success"&&Le.createElement(Le.Fragment,null,Le.createElement(Rr,{selected:!n,onClick:()=>{o==="from"?u():p()}},Le.createElement(bs,{variant:"body",size:"xsmall",color:"secondary500"},xs.t("All"))),s.list.map(d=>Le.createElement(wk,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:_()},Le.createElement(Rr,{key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},Le.createElement(Td,{src:d.logo,size:30})))),m?Le.createElement(Rr,{key:s.more[0].name,selected:!!n&&n.name===s.more[0].name,onClick:()=>r(s.more[0])},Le.createElement(Td,{src:s.more[0].logo,size:30})):null,f?Le.createElement(Rr,{onClick:a,key:"more-blockchains"},Le.createElement(bs,{variant:"body",size:"xsmall",color:"secondary500"},xs._("More +{count}",{count:s.more.length}))):null)))}i(Es,"BlockchainsSection");import{i18n as Ds}from"@lingui/core";import{darkTheme as Md,Divider as Fo,ExternalLinkIcon as Ik,Image as Ak,ListItemButton as Wk,NotFound as Nk,PinIcon as Mk,Skeleton as Ld,Typography as oi,VirtualizedList as Lk}from"@rango-dev/ui";import K,{useEffect as Bd,useState as Pd}from"react";import{Divider as Wd,ListItem as Ek,Skeleton as Cn}from"@rango-dev/ui";import dt from"react";import{css as $o,darkTheme as kd,ImageContainer as bk,styled as at,Typography as vd}from"@rango-dev/ui";var Is=$o({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),As=$o({position:"relative",height:12,width:"30%",maxWidth:"150px"}),Ws=$o({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),Ns=$o({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${kd} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),Ms=$o({}),Ls=$o(),wd=at("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Bs=at("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),ei=at("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${As}`]:{[`& .${Ns}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${Ms}`]:{bottom:"-15px"},[`& .${Is}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${Ws}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Ps=at("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),_s=at(vd,{}),xd=at("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${Ls}`]:{$$color:"$colors$neutral600",[`.${kd} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),ti=at("div",{display:"flex",alignItems:"end",flexDirection:"column"}),kU=at("div",{display:"flex",alignItems:"center"}),bd=at("div",{position:"relative",[`& ${bk}`]:{borderRadius:"$xm",overflow:"hidden"}}),Ed=at("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),Id=at(vd,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),Ad=at("a",{"& svg:hover":{color:"$colors$info"}});function Nd(t){return dt.createElement(ei,null,Array.from(Array(t.size),e=>dt.createElement(Ek,{key:e,hasDivider:!0,start:dt.createElement(Cn,{variant:"circular",width:35,height:35}),end:dt.createElement(ti,null,dt.createElement(Cn,{variant:"text",size:"large",width:70}),dt.createElement(Wd,{size:4}),dt.createElement(Cn,{variant:"text",size:"medium",width:50})),title:dt.createElement("div",null,dt.createElement(Cn,{variant:"text",size:"large",width:90}),dt.createElement(Wd,{size:4}),dt.createElement(Cn,{variant:"text",size:"medium",width:90}))})))}i(Nd,"LoadingTokenList");var $s=20,Bk=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return K.createElement("div",{className:As()},o?K.createElement("div",{className:Is()},o):K.createElement(Bs,{className:Ws()},K.createElement(oi,{variant:"title",size:"xmedium"},r.symbol),K.createElement(Fo,{direction:"horizontal",size:4}),K.createElement(Ps,{css:a},K.createElement(_s,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&K.createElement("div",{className:`${Ns()} ${!o&&Ms()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",K.createElement(Fo,{size:4,direction:"horizontal"}),K.createElement(Ad,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},K.createElement(Ik,{size:12}))))},"renderDesc");function _d(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r}=t,[a,s]=Pd(e),l=h().fetchStatus,p=h().blockchains(),[u,c]=Pd(!0),{getBalanceFor:m,loading:f}=te(),{isTokenPinned:d}=h(),g=i(()=>{s(e.slice(0,a.length+$s))},"loadNextPage");Bd(()=>{c(e.length>a.length)},[a.length]),Bd(()=>{s(e.slice(0,$s))},[e.length,r]);let S=i(()=>!a.length&&o?K.createElement(K.Fragment,null,K.createElement(Fo,{size:32}),K.createElement(Nk,{title:Ds.t("No results found"),description:Ds.t("Try using different keywords")})):K.createElement(Lk,{endReached:u?g:void 0,itemContent:C=>{let y=a[C],T=Fn(m(y)),k=y.address||"",v=p.find(w=>w.name===y.blockchain),I=ra(v.color,"main"),W={$$color:I.main150,[`.${Md} &`]:{$$color:I.main750},backgroundColor:"$$color"},x={$$color:I.main750,[`.${Md} &`]:{$$color:I.main150},color:"$$color"};return K.createElement("div",{style:{paddingRight:5}},K.createElement(Wk,{style:{width:"100%",overflow:"hidden",height:"60px"},"tab-index":C,key:`${y.symbol}${y.address}`,id:`${y.symbol}${y.address}`,hasDivider:!0,onClick:()=>n(a[C]),start:K.createElement(bd,null,K.createElement(Ak,{src:y.image,size:30}),d(y,t.type)&&K.createElement(Ed,null,K.createElement(Mk,{size:12,color:"gray"}))),title:v?.type==="COSMOS"||y.name||!y.name&&!k?K.createElement(Bs,null,K.createElement(oi,{variant:"title",size:"xmedium"},y.symbol),K.createElement(Fo,{direction:"horizontal",size:4}),K.createElement(Ps,{css:W},K.createElement(_s,{variant:"body",size:"xsmall",css:x},y.blockchain))):void 0,description:v?.info&&k&&v.type!=="COSMOS"?Bk({address:k,token:a[C],customCssForTag:W,customCssForTagTitle:x,name:y.name,url:v.info.addressUrl.split("{wallet}").join(k)}):y.name||void 0,end:f?K.createElement(ti,null,K.createElement(Ld,{variant:"text",size:"large",width:70}),K.createElement(Fo,{size:4}),K.createElement(Ld,{variant:"text",size:"medium",width:50})):T&&K.createElement(xd,null,K.createElement(Id,{variant:"title",size:"small"},T.amount),K.createElement("div",null),T.usdValue&&K.createElement(oi,{variant:"body",className:Ls(),size:"xsmall"},`$${T.usdValue}`))}))},totalCount:a.length,key:`${r}-${o}`}),"renderList");return K.createElement(wd,null,K.createElement(oi,{variant:"label",size:"large"},Ds.t("Select Token")),K.createElement(Fo,{size:4}),l==="loading"&&K.createElement(Nd,{size:$s}),l==="success"&&K.createElement(ei,{as:"ul"},S()))}i(_d,"TokenList");function Fs(t){let{type:e}=t,o=_k(),n=ot(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:p,setToBlockchain:u}=Y(),c=te.use.getBalanceFor(),[m,f]=Pk(""),g=(e==="source"?r:a)?.name??"",S=h().blockchains({type:e}),C=h().tokens({type:e,blockchain:g,searchFor:m,getBalanceFor:c}),y=i(v=>{e==="source"?p(v):u(v)},"updateBlockchain"),T=i(v=>{e==="source"?s({token:v,meta:{blockchains:S,tokens:C}}):l({token:v,meta:{blockchains:S,tokens:C}})},"updateToken"),k={source:ni.t("Source"),destination:ni.t("Destination")};return ho.createElement(ce,{header:{title:ni.t("Swap {type}",{type:k[e]})}},ho.createElement(fe,null,ho.createElement(Es,{blockchains:S,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(q.blockchains),onChange:v=>{y(v)}}),ho.createElement(Dd,{size:24}),ho.createElement(Lt,{value:m,autoFocus:!0,placeholder:ni.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>f(""),onChange:v=>f(v.target.value)}),ho.createElement(Dd,{size:16}),ho.createElement(_d,{list:C,selectedBlockchain:g,searchedFor:m,type:e,onChange:v=>{T(v);let I=S.find(W=>v.blockchain===W.name);I&&y(I),n()}})))}i(Fs,"SelectSwapItemsPage");import{i18n as zs}from"@lingui/core";import{Alert as av,Button as sv,styled as lv}from"@rango-dev/ui";import yo from"react";import{useInRouterContext as pv,useSearchParams as cv}from"react-router-dom";import{i18n as zd}from"@lingui/core";import{Divider as Ok,InfoIcon as Uk,TextField as Qk,Tooltip as zk,Typography as qd}from"@rango-dev/ui";import ft from"react";import{Chip as Dk,styled as Tn,TextField as $k}from"@rango-dev/ui";var $d=Tn("div",{paddingTop:"$5",padding:"$10 $5"}),Fd=Tn("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${$k}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),Od=Tn("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),ri=Tn("div",{maxWidth:"280px",padding:"$10"}),Ud=Tn(Dk,{width:"61px",flexShrink:0});import{i18n as Os}from"@lingui/core";import{Typography as Fk}from"@rango-dev/ui";import kn from"react";function Qd(){return kn.createElement(ri,null,kn.createElement(Fk,{variant:"label",size:"medium",color:"neutral700"},Os.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage"),kn.createElement("br",null),kn.createElement("br",null),kn.createElement("b",null,Os.t("Warning")),":",Os.t("This setting is applied per step (e.g. 1Inch, Thorchain, etc) which means only the step will be reverted, not the whole transaction.")))}i(Qd,"SlippageTooltipContent");function Us(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=h();return ft.createElement($d,null,ft.createElement(Od,null,ft.createElement(qd,{variant:"title",size:"xmedium"},zd.t("Slippage tolerance per swap")),ft.createElement(Ok,{direction:"horizontal",size:4}),ft.createElement(zk,{container:_(),side:"top",sideOffset:4,content:ft.createElement(Qd,null)},ft.createElement(Uk,{color:"gray"}))),ft.createElement(Fd,null,Jl.map((r,a)=>{let s=`slippage-${a}`;return ft.createElement(Ud,{key:s,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`})}),ft.createElement(Qk,{type:"number",min:"0.01",max:"30",step:"0.01",fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:r=>{let a=r.target.value,s=parseFloat(a);s>=op&&s<=tp?n(s):n(null)},suffix:o&&ft.createElement(qd,{variant:"body",size:"small"},"%"),placeholder:zd.t("Custom")})))}i(Us,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as Hd,BridgesIcon as qk,ChevronRightIcon as Qs,DarkModeIcon as Gd,Divider as ii,ExchangeIcon as Hk,InfinityIcon as Gk,InfoIcon as Vk,LanguageIcon as Xk,LightModeIcon as Vd,List as Kk,ListItem as jk,ListItemButton as Yk,Skeleton as Zk,styled as Jk,Switch as Rk,Tabs as ev,Tooltip as tv,Typography as st}from"@rango-dev/ui";import U from"react";import{useNavigate as ov}from"react-router-dom";var nv=Jk("div",{width:"202px",height:"$40"}),rv=[{id:"light",icon:U.createElement(Vd,{color:"black",size:24}),tooltip:U.createElement(st,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:U.createElement(Gd,{color:"black",size:24}),tooltip:U.createElement(st,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:U.createElement(Hd,{color:"black",size:24}),tooltip:U.createElement(st,{size:"xsmall",variant:"body"},bt.t("Auto"))}],iv=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return U.createElement(Hd,{...e});case"dark":return U.createElement(Gd,{...e});default:return U.createElement(Vd,{...e})}},"getThemeIcon");function Xd(){let t=ov(),{theme:e}=h().config,{setTheme:o,theme:n}=h(),{activeLanguage:r,languages:a}=Xt(),s=a.find(z=>z.local===r)?.label,l=h().fetchStatus,p=h().swappers(),u=h().getDisabledLiquiditySources(),{config:{features:c}}=h(),m=Re("theme",c),f=Re("liquiditySource",c),d=Re("language",c),g=h().infiniteApprove,S=h().toggleInfiniteApprove,C=qn(p,u),y=C.filter(z=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(z.type)),T=y.length,k=y.filter(z=>z.selected).length,v=C.filter(z=>z.type==="DEX"),I=v.length,W=v.filter(z=>z.selected).length,x=i((z,j)=>{switch(l){case"loading":return U.createElement(Zk,{variant:"text",size:"medium",width:50});case"failed":return U.createElement(st,{variant:"body",size:"medium",color:"$error500"},bt.t("Loading failed"));default:return U.createElement(st,{variant:"body",size:"medium"},`${z} / ${j}`)}},"handleSwapperEndItem"),w={id:"bridge-item",title:U.createElement(st,{variant:"title",size:"xmedium"},bt.t("Bridges")),end:U.createElement(U.Fragment,null,x(k,T),U.createElement(ii,{direction:"horizontal",size:8}),U.createElement(Qs,{color:"black"})),onClick:()=>t(q.bridges),start:U.createElement(qk,{color:"gray",size:16})},b={id:"exchange-item",title:U.createElement(st,{variant:"title",size:"xmedium"},bt.t("Exchanges")),end:U.createElement(U.Fragment,null,x(W,I),U.createElement(ii,{direction:"horizontal",size:8}),U.createElement(Qs,{color:"black"})),start:U.createElement(Hk,{color:"gray",size:16}),onClick:()=>t(q.exchanges)},E={id:"language-item",title:U.createElement(st,{variant:"title",size:"xmedium"},bt.t("Language")),start:U.createElement(Xk,{color:"gray",size:16}),end:U.createElement(U.Fragment,null,U.createElement(st,{variant:"body",size:"medium"},s),U.createElement(ii,{direction:"horizontal",size:8}),U.createElement(Qs,{color:"black"})),onClick:()=>t(q.languages)},P={id:"infinite-approval-item",title:U.createElement(U.Fragment,null,U.createElement(st,{variant:"title",size:"xmedium"},bt.t("Infinite approval")),U.createElement(ii,{direction:"horizontal",size:4}),U.createElement(tv,{side:"top",sideOffset:4,container:_(),content:U.createElement(ri,null,U.createElement(st,{variant:"label",size:"medium",color:"neutral700"},bt.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.")))},U.createElement(Vk,{color:"gray"}))),start:U.createElement(Gk,{color:"gray",size:16}),end:U.createElement(Rk,{checked:g}),onClick:S},Q={id:"theme-item",type:U.createElement(jk,null),title:U.createElement(st,{variant:"title",size:"xmedium"},bt.t("Theme")),end:U.createElement(nv,null,U.createElement(ev,{container:_(),items:rv,value:n,onChange:z=>o(z.id),type:"primary",borderRadius:"small"})),start:iv(n)},A=f?[]:[w,b];return d||A.push(E),A.push(P),!e?.singleTheme&&!m&&A.push(Q),U.createElement(Kk,{type:U.createElement(Yk,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:A})}i(Xd,"SettingsLists");var uv=lv("div",{paddingLeft:"$8"});function Kd(){let{isInCampaignMode:t,updateCampaignMode:e}=h(),o=t(),[,n]=cv(),r=pv(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return yo.createElement(ce,{header:{title:zs.t("Settings")}},yo.createElement(fe,null,o&&yo.createElement(av,{type:"info",variant:"alarm",title:zs.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:yo.createElement(uv,null,yo.createElement(sv,{type:"secondary",size:"small",onClick:a},zs.t("Reset")))}),yo.createElement(Us,null),yo.createElement(Xd,null)))}i(Kd,"SettingsPage");import{i18n as Zv}from"@lingui/core";import{cancelSwap as Jv}from"@rango-dev/queue-manager-rango-preset";import{useManager as Rv}from"@rango-dev/queue-manager-react";import{Alert as ew}from"@rango-dev/ui";import al from"react";import{useParams as tw}from"react-router-dom";import{i18n as gt}from"@lingui/core";import{getCurrentBlockchainOfOrNull as Lv,getCurrentStep as Bv,getRelatedWalletOrNull as Pv}from"@rango-dev/queue-manager-rango-preset";import{Button as Ef,CopyIcon as _v,Divider as Dv,IconButton as $v,QuoteCost as Fv,RangoExplorerIcon as Ov,StepDetails as Uv,Tooltip as Qv,Typography as Co,useCopyToClipboard as zv}from"@rango-dev/ui";import{useWallets as qv}from"@rango-dev/wallets-react";import If from"bignumber.js";import{PendingSwapNetworkStatus as fi}from"rango-types";import ee,{useEffect as Af,useRef as Hv,useState as Wf}from"react";import{useNavigate as Gv}from"react-router-dom";import{i18n as Kt}from"@lingui/core";var mv=[Kt.t("Sunday"),Kt.t("Monday"),Kt.t("Tuesday"),Kt.t("Wednesday"),Kt.t("Thursday"),Kt.t("Friday"),Kt.t("Saturday")];function jd(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?Kt.t("Today"):`${mv[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(jd,"timeSince");function Yd(t){return t.finishTime?jd(parseInt(t.finishTime)):jd(parseInt(t.creationTime))}i(Yd,"getSwapDate");import{PendingSwapNetworkStatus as li}from"rango-types";import pi from"react";import{i18n as ai}from"@lingui/core";import{Button as Zd,Divider as qs,MessageBox as dv}from"@rango-dev/ui";import jt from"react";var Jd=i(({onCancel:t,onClose:e})=>jt.createElement(jt.Fragment,null,jt.createElement(qs,{size:20}),jt.createElement(dv,{type:"error",title:ai.t("Cancel Swap"),description:ai.t("Are you sure you want to cancel this swap?")}),jt.createElement(qs,{size:32}),jt.createElement(Zd,{variant:"contained",type:"primary",size:"large",onClick:t},ai.t("Yes, Cancel it")),jt.createElement(qs,{size:12}),jt.createElement(Zd,{variant:"outlined",type:"primary",size:"large",onClick:e},ai.t("No, Continue"))),"CancelContent");import{i18n as si}from"@lingui/core";import{Button as Rd,Divider as Hs,MessageBox as fv,Typography as gv}from"@rango-dev/ui";import Dt from"react";var ef=i(({onDelete:t,onClose:e})=>Dt.createElement(Dt.Fragment,null,Dt.createElement(Hs,{size:20}),Dt.createElement(fv,{type:"error",title:si.t("Delete Transaction"),description:si.t("Are you sure you want to delete this swap?")}),Dt.createElement(Hs,{size:32}),Dt.createElement(Rd,{variant:"contained",type:"primary",size:"large",onClick:t},si.t("Yes, Delete it")),Dt.createElement(Hs,{size:12}),Dt.createElement(Rd,{variant:"outlined",type:"primary",size:"large",onClick:e},Dt.createElement(gv,{variant:"title",size:"medium",color:"primary"},si.t("No, Cancel")))),"DeleteContent");import{i18n as Gs}from"@lingui/core";import{PendingSwapNetworkStatus as Vs}from"rango-types";var Xs={[Vs.WaitingForNetworkChange]:{type:"loading",title:Gs.t("Change Network")},[Vs.WaitingForConnectingWallet]:{type:"warning",title:Gs.t("Connect Wallet")},[Vs.NetworkChanged]:{type:"success",title:Gs.t("Network Changed")}};import{debug as Ks}from"@rango-dev/logging-core";import{MessageBox as hv,Wallet as yv}from"@rango-dev/ui";import{useWallets as Sv}from"@rango-dev/wallets-react";import So,{useState as nf}from"react";import{styled as tf}from"@rango-dev/ui";var of=tf("div",{display:"flex",justifyContent:"center"}),pz=tf("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}});var rf=i(t=>{let{type:e,title:o,currentStepWallet:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,{connect:l,getWalletInfo:p,state:u}=Sv(),[c,m]=nf(null),[f,d]=nf(null),g=n?.walletType,S=g?Mi(u(g)):null,C=g?p(g):null,y=a&&!!g&&!!S&&!!C,T=i(()=>{c&&m({...c,open:!1})},"handleCloseNamespaceModal"),k=i(()=>{f&&d({...f,open:!1})},"handleCloseDerivationPathModal"),v=i(W=>{C?.needsDerivationPath&&C?.singleNamespace&&W[0]&&g?d({open:!0,providerType:g,providerImage:C.img,namespace:W[0]}):l(c?.providerType,void 0,W.map(x=>({namespace:x}))).catch(x=>Ks(x)),T()},"handleConfirmNamespaces"),I=i(W=>{W&&f?.namespace&&l(f?.providerType,void 0,[{namespace:f.namespace,derivationPath:W}]).catch(x=>Ks(x)),k()},"handleDerivationPathConfirm");return So.createElement(So.Fragment,null,So.createElement(hv,{type:e,title:o,description:r}),y&&So.createElement(of,null,So.createElement(yv,{container:_(),title:C.name,image:C.img,type:g,state:S,link:C.installLink,disabled:s,onClick:async()=>{C.namespaces?m({open:!0,providerType:g,providerImage:C.img,availableNamespaces:C.namespaces,singleNamespace:C.singleNamespace}):l(g).catch(W=>Ks(W))}})),So.createElement(po,{open:!!c?.open,onClose:T,onConfirm:v,image:c?.providerImage,availableNamespaces:c?.availableNamespaces,singleNamespace:c?.singleNamespace}),So.createElement(so,{open:!!f?.open,selectedNamespace:f?.namespace,type:f?.providerType,image:f?.providerImage,onClose:k,onConfirm:I}))},"WalletStateContent");function js(t){let{state:e,onClose:o,onDelete:n,onCancel:r,currentStepWallet:a,message:s,walletButtonDisabled:l}=t,p=e===li.WaitingForNetworkChange||e===li.WaitingForConnectingWallet||e===li.NetworkChanged;return pi.createElement(re,{open:!!e,onClose:o,container:document.getElementById(he.SWAP_BOX_ID)||document.body},p&&pi.createElement(rf,{type:Xs[e].type,title:Xs[e].title,currentStepWallet:a,message:s,walletButtonDisabled:l,showWalletButton:e!==li.WaitingForNetworkChange}),e==="delete"&&pi.createElement(ef,{onClose:o,onDelete:n}),e==="cancel"&&pi.createElement(Jd,{onClose:o,onCancel:r}))}i(js,"SwapDetailsModal");import{i18n as vn}from"@lingui/core";import{Button as Ys,Divider as ci,MessageBox as af,TokenAmount as Cv,Typography as Zs}from"@rango-dev/ui";import Pe from"react";import{useNavigate as Tv}from"react-router-dom";function Js(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:p,chain:u,percentageChange:c,description:m,diagnosisUrl:f}=t,d=Tv();return Pe.createElement(re,{open:e,onClose:o,container:document.getElementById(he.SWAP_BOX_ID)||document.body},n==="success"?Pe.createElement(af,{type:"success",title:vn.t("Swap Successful")},Pe.createElement(Cv,{direction:"vertical",tooltipContainer:_(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:p,chain:u,percentageChange:c}),Pe.createElement(ci,{size:12}),Pe.createElement(Zs,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):Pe.createElement(af,{type:"error",title:vn.t("Transaction Failed"),description:m}),Pe.createElement(ci,{size:32}),n==="success"&&Pe.createElement(Ys,{variant:"contained",type:"primary",size:"large",onClick:()=>{d("../../")}},Pe.createElement(Zs,{variant:"title",size:"medium",color:"neutral100"},vn.t("Done"))),Pe.createElement(ci,{size:12}),f&&Pe.createElement(Pe.Fragment,null,Pe.createElement(Ys,{variant:"contained",type:"primary",size:"large",onClick:()=>window.open(f,"_blank")},vn.t("Diagnosis")),Pe.createElement(ci,{size:12})),Pe.createElement(Ys,{variant:"outlined",type:"primary",size:"large",onClick:o},Pe.createElement(Zs,{variant:"title",size:"medium",color:"primary"},vn.t("See Details"))))}i(Js,"SwapDetailsCompleteModal");import Mv from"react";import{i18n as Iv}from"@lingui/core";import{Alert as vf,IconButton as Av,LinkIcon as Wv}from"@rango-dev/ui";import Yt,{Fragment as Nv}from"react";import{Alert as wv,ChevronDownIcon as xv,IconButton as bv}from"@rango-dev/ui";import Uo,{useState as Ev}from"react";import{css as wn,darkTheme as kv,styled as $t,Typography as vv}from"@rango-dev/ui";var sf=$t("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),ui=$t("div",{width:"100%"}),lf=$t(Yo,{padding:"$0 $20 $20 $20"}),Vz=$t("div",{display:"flex",flexDirection:"column",gap:"$10"}),pf=$t("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),Xz=$t("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),Oo=wn({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${kv} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),cf=wn({padding:"$5 0"}),mi=wn({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),uf=wn({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),mf=wn({width:"100%",padding:"0 $20 $10"}),df=$t("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),ff=$t("div",{display:"flex",flexDirection:"column",gap:"$5"}),di=$t(vv,{wordBreak:"break-word"});import{styled as Rs}from"@rango-dev/ui";var gf=Rs("div",{display:"flex",flexDirection:"column",gap:"$10"}),hf=Rs("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),yf=Rs("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function Sf(t){let{message:e}=t,[o,n]=Ev(!1);return Uo.createElement(wv,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&Uo.createElement(bv,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},Uo.createElement(hf,{rotated:o},Uo.createElement(xv,{size:12,color:"gray"}))),footer:Uo.createElement(yf,{open:o},Uo.createElement(di,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Sf,"FailedAlert");import{i18n as Cf}from"@lingui/core";import{Alert as el,Button as Tf}from"@rango-dev/ui";import{PendingSwapNetworkStatus as tl}from"rango-types";import xn from"react";function kf(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?xn.createElement(el,{type:"warning",title:n.shortMessage,action:xn.createElement(Tf,{size:"xxsmall",type:"warning",onClick:()=>{o(tl.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Cf.t("Change"))}):r===tl.WaitingForConnectingWallet?xn.createElement(el,{type:"warning",title:n.shortMessage,action:xn.createElement(Tf,{size:"xxsmall",type:"warning",onClick:()=>{o(tl.WaitingForConnectingWallet)}},Cf.t("Connect"))}):xn.createElement(el,{type:"warning",title:n.shortMessage})}i(kf,"WarningAlert");function ol(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=Ko(a),p=a.status==="waitingForApproval"&&!l,u=a.status==="running"&&!l,c=u&&!s||p&&!a.explorerUrl?.length;return Yt.createElement(gf,null,a.explorerUrl?.map((m,f,d)=>{let g=f+m.url,S=f===d.length-1,C=(S&&u||p)&&!c,y=S&&a.status==="failed";return Yt.createElement(Nv,{key:g},Yt.createElement(vf,{type:S&&(C&&"loading"||y&&"error")||"success",title:m.description?`${m.description} Tx`:Iv.t("View transaction"),action:m.url&&Yt.createElement(Av,{variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},Yt.createElement(Wv,{size:12}))}))}),c&&Yt.createElement(vf,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&Yt.createElement(kf,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&Yt.createElement(Sf,{message:r}))}i(ol,"SwapDetailsAlerts");var wf=2e3;var xf=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:Je(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:M(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:Je(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:M(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:zo(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(p=>({from:{chain:{displayName:Je(p.fromBlockchain,e)??"",image:p.fromBlockchainLogo??""}},to:{chain:{displayName:Je(p.toBlockchain,e)??"",image:p.toBlockchainLogo??""}},swapper:{displayName:zo(p.swapperId,o)??"",image:p.swapperLogo??"",type:p.swapperType}})):[],alerts:Mv.createElement(ol,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function bf(t){if(Ko(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(bf,"getStepState");function nl(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=qv(),p=h().blockchains(),u=h().swappers(),{findToken:c}=h(),m=Y.use.retry(),f=ae.use.isActiveTab(),d=Gv(),[g,S]=zv(wf),C=Hv(null),[y,T]=Wf(null),[k,v]=Wf(null),I=i(()=>{r(),T(null)},"onCancel"),W=xe.use.getNotifications(),x=xe.use.removeNotification(),w=W(),b=Bv(e),E=b?.networkStatus;Af(()=>{w.find(N=>N.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),x(e.requestId)):k&&v(null))},[e.status,e.requestId]),Af(()=>{B?T(fi.WaitingForNetworkChange):E===fi.WaitingForConnectingWallet||E===fi.NetworkChanged?T(E):T(null)},[E]);let P=Wp(e),Q=b?Lv(e,b):null,A=b?Pv(e,b):null,z=Yd(e),j=Np(e),G=i(de=>!!l(de)?.mobileWallet,"isMobileWallet"),B=E===fi.WaitingForNetworkChange&&!!Q&&!!A?.walletType&&(G(A.walletType)||a(A.walletType,Q)),Z=B?s.bind(null,A.walletType,Q):void 0,ie=Ap(e,b),J=xf({swap:e,switchNetwork:Z,showNetworkModal:E,setNetworkModal:T,message:ie,blockchains:p,swappers:u}),ne=J.length,[ge,Ce]=[e.steps[0],e.steps[ne-1]],D=Ce.outputAmount||Ce.expectedOutputAmountHumanReadable,L=e.steps.reduce((de,N)=>de+parseFloat(N.feeInUsd||""),0),me=e.steps.find(de=>de.diagnosisUrl)?.diagnosisUrl,se=M(parseFloat(M(D,6,6))*(Ce.toUsdPrice||0),4,4),_e=M(parseFloat(e.inputAmount)*(ge.fromUsdPrice||0),4,4),lt=D?new If(D).multipliedBy(Ce.toUsdPrice||0).toString():"",De=new If(e.inputAmount).multipliedBy(ge.fromUsdPrice||0).toString(),Ve=et(_e,se),Xe=ie.detailedMessage.content||ie.shortMessage,ve=e.status==="success"?gt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:M(D,6,6),token:J[ne-1].to.token.displayName,conciseAddress:On(e.wallets[J[ne-1].to.chain.displayName]?.address||""),chain:J[ne-1].to.chain.displayName}}):ee.createElement(ff,null,ee.createElement(Co,{variant:"body",size:"medium",color:"neutral700",align:"center"},Xe?"":gt.t("Transaction was not sent."),P?`${gt.t({id:"{amount} {symbol} on {blockchain} remain in your wallet",values:{amount:P.outputAmount,symbol:P.symbol,blockchain:P.blockchain}})}`:""),Xe&&ee.createElement(di,{align:"center",variant:"body",size:"medium",color:"neutral700"},ee.createElement("b",null,"Reason:")," ",Xe));return ee.createElement(ce,{header:{title:gt.t("Swap Details"),onCancel:e.status==="running"?()=>T("cancel"):void 0,suffix:e.status!=="running"&&ee.createElement(Io,null,ee.createElement(Ef,{variant:"ghost",type:"error",size:"xsmall",onClick:()=>T("delete")},ee.createElement(Co,{size:"medium",variant:"label",color:"error"},gt.t("Delete"))))},footer:j&&!k&&ee.createElement(Ef,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:()=>{let de=tr(e,p,c);m(de),setTimeout(()=>{d("../../")},0)}},gt.t("Try again"))},ee.createElement(fe,{compact:!0,view:!0},ee.createElement(ui,null,ee.createElement("div",{className:Oo()},ee.createElement(Co,{variant:"label",size:"large",color:"neutral700"},`${gt.t("Request ID")}:`),ee.createElement("div",{className:mi()},ee.createElement(Co,{variant:"label",size:"small",color:"neutral700"},o),ee.createElement($v,{variant:"ghost",onClick:S.bind(null,o||"")},ee.createElement(_v,{size:16,color:"gray"})),ee.createElement(df,{target:"_blank",href:`${fl}/swap/${o}`},ee.createElement(Qv,{container:_(),content:gt.t("View on Rango Explorer"),side:"bottom"},ee.createElement(Ov,{size:20}))))),ee.createElement("div",{className:Oo()},ee.createElement(Co,{variant:"label",size:"large",color:"neutral700"},e.finishTime?gt.t("Finished at"):gt.t("Created at")),ee.createElement(Co,{variant:"label",size:"small",color:"neutral700"},z))),ee.createElement("div",{className:uf()},ee.createElement(Fv,{fee:M(String(L),2,2),time:qo(Ln(e.steps)),steps:ne}),ee.createElement(rn,{from:{price:{value:M(e.inputAmount,6,6),usdValue:_e,realUsdValue:De,realValue:e.inputAmount},token:{displayName:J[0].from.token.displayName,image:J[0].from.token.image},chain:{image:J[0].from.chain.image,displayName:J[0].from.chain.displayName}},to:{price:{value:M(D,6,6),usdValue:se,realUsdValue:lt,realValue:D||""},token:{displayName:J[ne-1].to.token.displayName,image:J[ne-1].to.token.image},chain:{image:J[ne-1].to.chain.image,displayName:J[ne-1].to.chain.displayName}},percentageChange:M(Ve,2,2),warningLevel:At(Ve??0)})),ee.createElement("div",{className:mf()},ee.createElement(Co,{variant:"title",size:"small"},gt.t("Swaps steps"))),ee.createElement(Dv,{size:8}),ee.createElement(lf,{ref:C},J.map((de,N)=>{let V=N,X=bf(e.steps[N]),Ke=X==="error"||X==="in-progress"||X==="warning"||X==="completed"&&N===J.length-1;return ee.createElement(Uv,{key:V,step:de,type:"swap-progress",ref:C,state:X,hasSeparator:N!==0,tabIndex:V,isFocused:Ke,tooltipContainer:_()})}))),ee.createElement(js,{state:y,onClose:()=>T(null),onCancel:I,onDelete:n,message:ie.detailedMessage.content,currentStepWallet:A,walletButtonDisabled:!f}),ee.createElement(Js,{open:!!k,diagnosisUrl:me,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(D,6,6),usdValue:se,realUsdValue:lt,realValue:D||"",percentageChange:M(Ve,2,2),token:{displayName:J[ne-1].to.token.displayName,image:J[ne-1].to.token.image},chain:{image:J[ne-1].to.chain.image},description:ve}))}i(nl,"SwapDetails");import{i18n as hi}from"@lingui/core";import{Divider as Lf,NotFound as Yv,Skeleton as En,Typography as yi}from"@rango-dev/ui";import Se from"react";import{i18n as Vv}from"@lingui/core";import{Divider as Xv,Skeleton as Kv,Typography as jv}from"@rango-dev/ui";import ke from"react";import{css as ht,styled as rl}from"@rango-dev/ui";var Nf=rl("div",{width:"100%",height:"100%",padding:"$10 $20"}),bn=rl("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),gi=rl("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),iH=ht({display:"flex",justifyContent:"space-between",alignItems:"center"}),aH=ht({display:"flex",justifyContent:"space-between",alignItems:"center"}),sH=ht({paddingTop:"$15",display:"flex"}),lH=ht({padding:"$15 $0"}),pH=ht({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),cH=ht({paddingBottom:"$10"}),uH=ht({display:"flex",justifyContent:"start",alignItems:"center"}),mH=ht({paddingTop:"$5",display:"flex",alignItems:"center"}),dH=ht({display:"flex",alignItems:"center"}),fH=ht({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),Mf=ht({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function il(){return ke.createElement(Nf,null,ke.createElement(ln,{type:"swap-preview"}),ke.createElement("div",{className:"swaps-steps"},ke.createElement(jv,{variant:"title",size:"small"},Vv.t("Swaps steps"))),ke.createElement(ke.Fragment,null,ke.createElement(bn,null,ke.createElement(wt,{separator:!1}),ke.createElement("div",{className:Mf()},ke.createElement(Xv,{direction:"horizontal",size:20}),ke.createElement(Kv,{height:22,variant:"rectangular"}))),ke.createElement(gi,null),ke.createElement(bn,null,ke.createElement(wt,{separator:!1})),ke.createElement(gi,null),ke.createElement(bn,null,ke.createElement(wt,{separator:!1})),ke.createElement(gi,null),ke.createElement(bn,null,ke.createElement(wt,{separator:!1}))))}i(il,"LoadingSwapDetails");function Bf(t){let{requestId:e,showSkeleton:o}=t;return Se.createElement(ce,{header:{title:hi.t("Swap Details"),suffix:Se.createElement(Io,null)}},o&&Se.createElement(sf,null,Se.createElement(ui,null,Se.createElement("div",{className:Oo()},Se.createElement(yi,{variant:"label",size:"large",color:"neutral700"},`${hi.t("Request ID")}:`),Se.createElement("div",{className:mi()},Se.createElement(yi,{variant:"label",size:"small",color:"neutral700"},Se.createElement(En,{width:60,height:10,variant:"rounded"})),Se.createElement(Lf,{direction:"horizontal",size:4}),Se.createElement(En,{width:16,height:16,variant:"rectangular"}),Se.createElement(Lf,{direction:"horizontal",size:4}),Se.createElement(En,{width:16,height:16,variant:"rectangular"}))),Se.createElement("div",{className:Oo()},Se.createElement(yi,{className:cf(),variant:"label",size:"large",color:"neutral700"},Se.createElement(En,{width:60,height:10,variant:"rounded"})),Se.createElement(yi,{variant:"label",size:"small",color:"neutral700"},Se.createElement(En,{width:60,height:10,variant:"rounded"})))),Se.createElement(il,null)),!o&&Se.createElement(pf,null,Se.createElement(Yv,{title:hi.t("Not found"),description:hi.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(Bf,"SwapDetailsPlaceholder");function Pf(){let{manager:t,state:e}=Rv(),o=!e.loadedFromPersistor,n=nt(t),{requestId:r}=tw(),a=ot(),{fetchStatus:s}=h();if(!r)return al.createElement(ew,{containerStyles:{margin:"20px"},type:"error",title:Zv.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",p=r?n.find(({swap:f})=>f.requestId===r):void 0,u=i(()=>{if(p?.id){let f=t?.get(p.id);f&&Jv(f)}},"onCancel"),c=i(async()=>{if(p?.id)try{t?.deleteQueue(p.id),a()}catch(f){console.log(f)}},"onDelete"),m=p?.swap;return!m||l?al.createElement(Bf,{requestId:r,showSkeleton:l}):al.createElement(nl,{swap:m,requestId:r,onCancel:u,onDelete:c})}i(Pf,"SwapDetailsPage");function _f(){return Up(),Ji(),ow([{path:q.home,element:Ge.createElement(ed,null)},{path:q.routes,element:Ge.createElement(id,null)},{path:q.fromSwap,children:[{index:!0,element:Ge.createElement(Fs,{type:"source"})},{path:q.blockchains,element:Ge.createElement(ks,{type:"source"})}]},{path:q.toSwap,children:[{index:!0,element:Ge.createElement(Fs,{type:"destination"})},{path:q.blockchains,element:Ge.createElement(ks,{type:"destination"})}]},{path:q.settings,children:[{index:!0,element:Ge.createElement(Kd,null)},{path:q.languages,element:Ge.createElement(od,null)},{path:q.exchanges,element:Ge.createElement(Ss,{sourceType:"Exchanges"})},{path:q.bridges,element:Ge.createElement(Ss,{sourceType:"Bridges"})}]},{path:q.swaps,children:[{index:!0,element:Ge.createElement(Bm,null)},{path:q.swapDetails,element:Ge.createElement(Pf,null)}]},{path:q.wallets,element:Ge.createElement(Hc,null)},{path:q.confirmSwap,element:Ge.createElement(km,null)}])}i(_f,"AppRoutes");import{useQueueManager as uw}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as mw}from"@rango-dev/wallets-shared";import{isEvmBlockchain as dw}from"rango-sdk";import{useContext as fw,useEffect as zf,useState as qf}from"react";import{globalCss as nw}from"@rango-dev/ui";var Df=i(()=>nw({"@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')"})(),"globalFont");function $f(){let{setWatermark:t}=ae();return{fetchApiConfig:i(async()=>{let o=await fetch(`${It("BASE_URL")}/meta/dapp/config?apiKey=${It("API_KEY")}`);if(!o.ok)throw new Error(`Request failed with status: ${o.status} `);let n=await o.json();t(n.config.watermark)},"fetchApiConfig")}}i($f,"useFetchApiConfig");import{useWallets as rw}from"@rango-dev/wallets-react";import{useEffect as iw,useRef as aw}from"react";function Ff(){let{connect:t,state:e}=rw(),o=aw({}),{fetchStatus:n}=h(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);iw(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(Ff,"useForceAutoConnect");import{isApprovalTX as sw,RouteEventType as Of,StepEventType as Uf,StepExecutionEventStatus as lw,WidgetEvents as Si}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Qf}from"react";function sl(){let t=te.use.connectedWallets(),e=te.use.getWalletsDetails(),o=xe.use.setNotification(),{findToken:n}=h();Qf(()=>{let r=i(a=>{let{event:s,step:l,route:p}=a;if(s.type===Uf.TX_EXECUTION&&s.status===lw.TX_SENT&&!sw(l)||s.type===Uf.SUCCEEDED){let c=t.find(f=>f.chain===l?.fromBlockchain),m=l?.fromBlockchain!==l?.toBlockchain&&t.find(f=>f.chain===l?.toBlockchain);c&&e([c],n),m&&e([m],n)}o(s,p)},"handleStepEvent");return we.on(Si.StepEvent,r),()=>we.off(Si.StepEvent,r)},[we,t]),Qf(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===Of.FAILED||s.type===Of.SUCCEEDED)&&o(s,l)},"handleRouteEvent");return we.on(Si.RouteEvent,r),()=>we.off(Si.RouteEvent,r)},[we])}i(sl,"useSubscribeToWidgetEvents");import{useManager as pw}from"@rango-dev/queue-manager-react";import{useEffect as cw}from"react";function ll(){let{isSynced:t,syncNotifications:e}=xe(),{manager:o,state:n}=pw();cw(()=>{xe.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(nt(o))},[xe.persist.hasHydrated(),n.loadedFromPersistor,t])}i(ll,"useSyncNotifications");function pl(){Ff(),Df(),sl(),ll();let t=h().blockchains(),{canSwitchNetworkTo:e}=wr(),[o,n]=qf(""),[r,a]=qf(),s=fw(Gn),l=t.filter(dw),{fetchApiConfig:p}=$f();zf(()=>()=>Op(),[]),uw({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),zf(()=>(eo.init(),xe.persist.hasHydrated()||xe.persist.rehydrate(),s.onConnectWallet(n),s.onDisconnectWallet(u=>{a(u),u===mw(o)?.[0]&&n("")}),p().catch(console.log),eo.destroy),[])}i(pl,"useBootstrap");import{styled as gw}from"@rango-dev/ui";var Hf=gw("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function Ci(){pl();let{config:t}=h(),{activeTheme:e}=mr(t?.theme||{}),{activeLanguage:o}=Xt();return cl.createElement(hw,{language:o},cl.createElement(Hf,{id:"swap-container",className:e()},cl.createElement(_f,null)))}i(Ci,"Main");import{setSolanaSignerConfig as Dw}from"@rango-dev/signer-solana";import ml,{useEffect as jf,useMemo as $w}from"react";import{useState as yw}from"react";var Sw=i(()=>{let[t,e]=yw(null),o=i(a=>{let s=document.createElement("link");return s.href=a,s.rel="stylesheet",document.head.appendChild(s),s},"loadFont"),n=i(()=>{t&&(document.head.removeChild(t),e(null))},"unloadFont");return{handleLoadCustomFont:i(a=>{n();let s=xl(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),Gf=Sw;import{checkWaitingForNetworkChange as Cw,makeQueueDefinition as Tw}from"@rango-dev/queue-manager-rango-preset";import{Provider as kw}from"@rango-dev/queue-manager-react";import{useWallets as vw}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as ww}from"@rango-dev/wallets-shared";import{isEvmBlockchain as xw}from"rango-types";import bw,{useMemo as Ew}from"react";function Iw(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=vw(),l=Ew(()=>Tw({API_KEY:t.apiKey||It("API_KEY"),BASE_URL:It("BASE_URL"),emitter:{emit:we.emit}}),[t.apiKey]),p=h().blockchains(),c={blockchains:te.use.connectedWallets().map(k=>({accounts:[k],name:k.chain}))},m=i(async(k,v)=>{if(a(k,v))return r(k,v)},"switchNetwork"),f=i(k=>!!s(k).mobileWallet,"isMobileWallet"),d=p.filter(k=>k.enabled).reduce((k,v)=>(k[v.name]=v,k),{}),g=p.filter(xw),S=i(k=>{let{supportedChains:v}=s(k);return _n(v)},"getSupportedChainNames"),C=e(),y={meta:{blockchains:d,evmBasedChains:g,evmNetworkChainInfo:ww(g),getSupportedChainNames:S},getSigners:o,wallets:c,providers:C,switchNetwork:m,canSwitchNetworkTo:a,connect:r,state:n,isMobileWallet:f},T=ae.use.isActiveTab();return bw.createElement(kw,{queuesDefs:[l],context:y,onPersistedDataLoaded:k=>{Cw(k)},isPaused:!T},t.children)}i(Iw,"QueueManager");var Vf=Iw;import{useManager as Lw}from"@rango-dev/queue-manager-react";import Bw,{createContext as Pw,useContext as _w}from"react";import{cancelSwap as Aw,getCurrentBlockchainOfOrNull as Ww,getCurrentStep as Nw,getRelatedWalletOrNull as Mw}from"@rango-dev/queue-manager-rango-preset";var Ti=class{static{i(this,"WidgetHistory")}manager;actions;constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return nt(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){let n=tr(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&Aw(o)}getCurrentStepInfo(e){let o=Nw(e);return{step:o,wallet:o?Mw(e,o):null,network:o?Ww(e,o):null}}};var Xf=Pw(void 0);function ul(t){let{manager:e}=Lw(),o=ae.use.isActiveTab(),n=Y.use.retry(),{findToken:r}=h(),a=new Ti(e,{retrySwap:n,findToken:r}),s=te.use.connectedWallets(),l=te.use.loading(),p=Ll(s),u=te.use.getWalletsDetails(),c=h().blockchains(),m=h().tokens(),f=h().swappers(),d=h().fetchStatus,g=Xt().resetLanguage,S=xe().getNotifications(),C=xe().clearNotifications,y={isActiveTab:o,setCurrentTabAsActive:eo.forceClaim,history:a,wallets:{isLoading:l,details:s,totalBalance:p,refetch:T=>u(T,r)},meta:{blockchains:c,tokens:m,swappers:f,loadingStatus:d,findToken:r},resetLanguage:g,notifications:{list:S,clearAll:C}};return Bw.createElement(Xf.Provider,{value:y},t.children)}i(ul,"WidgetInfo");function Kf(){let t=_w(Xf);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(Kf,"useWidget");function ki(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=Gf();return jf(()=>{n&&r(n)},[n]),$w(()=>{Ul({API_KEY:o?.apiKey||In,BASE_URL:o?.apiUrl||dl})},[o.apiKey,o.apiUrl]),jf(()=>{t.config?.signers?.customSolanaRPC&&Dw("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),ml.createElement(Vn,{config:o,onUpdateState:e},ml.createElement(Vf,{apiKey:o.apiKey},ml.createElement(ul,null,t.children)))}i(ki,"WidgetProvider");function Yf(t){let e=t.config?.externalWallets;return vi.createElement(up,null,e?vi.createElement(Ci,null):vi.createElement(ki,{config:t.config??Fi},vi.createElement(Ci,null)))}i(Yf,"Widget");function Zf(){let{on:t,off:e}=we;return{on:t,off:e}}i(Zf,"useWidgetEvents");export{M2 as EventSeverity,Vo as MainEvents,U2 as Networks,q2 as PendingSwapNetworkStatus,_i as QuoteEventTypes,L2 as RouteEventType,wi as SUPPORTED_FONTS,B2 as StepEventType,P2 as StepExecutionBlockedEventStatus,_2 as StepExecutionEventStatus,he as UI_ID,Di as WalletEventTypes,F2 as WalletEvents,Q2 as WalletTypes,Yf as Widget,Vo as WidgetEvents,ki as WidgetProvider,Vn as WidgetWallets,la as customizedThemeTokens,$2 as readAccountAddress,no as useWalletList,wr as useWallets,Kf as useWidget,Zf as useWidgetEvents,og as widgetEventEmitter};
1
+ var Bg=Object.defineProperty;var i=(t,e)=>Bg(t,"name",{value:e,configurable:!0});import{EventSeverity as F4,RouteEventType as O4,StepEventType as U4,StepExecutionBlockedEventStatus as Q4,StepExecutionEventStatus as z4}from"@rango-dev/queue-manager-rango-preset";import{readAccountAddress as H4,useWallets as Ar,Events as G4}from"@rango-dev/wallets-react";import{Networks as K4,WalletTypes as j4}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as Y4}from"rango-types";import{UI_ID as Lg}from"@rango-dev/ui";var Nn="c6381a79-2817-4602-83bf-6a641a409e32",Nl="https://api.rango.exchange",Ml="https://explorer.rango.exchange",Ce={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...Lg};var Bl="Roboto",Mi=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];import{Events as Yi,Provider as Eh}from"@rango-dev/wallets-react";import{isEvmBlockchain as Ih}from"rango-sdk";import Xn,{createContext as Ah,useEffect as Ep,useMemo as Wh,useRef as Ip}from"react";import{useEffect as Rg}from"react";import{create as Yg}from"zustand";import{subscribeWithSelector as Zg}from"zustand/middleware";import Pg from"mitt";var ke=Pg(),Mn={on:ke.on,off:ke.off};import{RangoClient as jg}from"rango-sdk";import{BlockchainCategories as Qg,WalletState as Ct}from"@rango-dev/ui";import{readAccountAddress as zg}from"@rango-dev/wallets-react";import{detectInstallLink as qg,getCosmosExperimentalChainInfo as Hg,isEvmAddress as Gg,KEPLR_COMPATIBLE_WALLETS as sb,Networks as Hl}from"@rango-dev/wallets-shared";import Fi from"bignumber.js";import{isCosmosBlockchain as Vg}from"rango-types";import Dg from"bignumber.js";var Ue=new Dg(0);import{WalletTypes as _g}from"@rango-dev/wallets-shared";var Ll=[_g.LEAP];import{BlockchainCategories as Bi,WalletState as Ug}from"@rango-dev/ui";import{TransactionType as Bn}from"rango-sdk";function vo(t){return Array.from(new Set(t))}i(vo,"removeDuplicateFrom");function Di(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(Di,"areEqual");function Ol(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Ol,"debounce");function bt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(bt,"containsText");function _l(t,e){return t.toLowerCase()===e.toLowerCase()}i(_l,"exactText");function $l(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i($l,"startWithText");var B=i(()=>document.getElementById(Ce.SWAP_BOX_ID),"getContainer"),Ho=i(()=>document.getElementById(Ce.EXPANDED_BOX_ID),"getExpanded");function Fl(t,e,o){let n=!!e&&_l(e,t),r=!!o&&_l(o,t);return n!==r?n?-1:1:0}i(Fl,"compareExactMatchText");function Li(t,e,o){let n=!!e&&bt(e,t),r=!!o&&bt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(Li,"compareContainsText");function Pi(t,e,o){let n=!!e&&$l(e,t),r=!!o&&$l(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(Pi,"compareStartWithText");function Ul(t,e,o){if(!o)return 0;let n=Fl(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=Fl(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=Pi(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=Li(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=Pi(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=Li(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=Pi(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=Li(o,t.address,e.address);if(r!==0)return r}return 0}i(Ul,"compareWithSearchFor");var Ln=i((t,e)=>{switch(e){case Bi.ALL:return!0;case Bi.UTXO:return t===Bn.TRANSFER;case Bi.OTHER:return t!==Bn.TRANSFER&&t!==Bn.COSMOS&&t!==Bn.EVM;default:return t===e}},"isBlockchainTypeInCategory"),Ql=i(t=>Mi.find(o=>o.value===t)?.url,"getFontUrlByName");function Pn(t,e){let o=!!t.find(n=>n.state===Ug.CONNECTED);return e===!1&&o}i(Pn,"isSingleWalletActive");function Dn(t,e){return e.find(o=>o.name===t)?.displayName}i(Dn,"getBlockchainDisplayNameFor");function tt(t,e){return e.find(o=>o.name===t)?.shortName}i(tt,"getBlockchainShortNameFor");function zl(t,e){return e.find(o=>o.name===t)?.logo}i(zl,"getBlockchainImage");function Go(t,e){return e.find(o=>o.id===t)?.title}i(Go,"getSwapperDisplayName");function _i(t,e){return e.find(o=>o.name===t)??null}i(_i,"findBlockchain");function $i(t,e){if(!e||!t)return!1;for(let o of e.feeAssets)if(t?.blockchain===o?.blockchain&&t?.symbol===o?.symbol&&t?.address===o?.address)return!0;return!1}i($i,"isTokenNative");function ct(t){return`${t.blockchain}-${t.symbol}-${t.address??""}`}i(ct,"createTokenHash");import{BigNumber as ql}from"bignumber.js";var Vo=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),M=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new ql(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new ql(n.toFixed(s,r)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),r);for(let s=e||4;s<17;s++)if(n.gte(Math.pow(10,-s)))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,s))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var _n=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var St=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Ko=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Oi(t){switch(!0){case t.connected:return Ct.CONNECTED;case t.connecting:return Ct.CONNECTING;case!t.installed:return Ct.NOT_INSTALLED;default:return Ct.DISCONNECTED}}i(Oi,"mapStatusToWalletState");function Gl(t,e,o,n){return o.filter(r=>!Ll.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:p}=t(r);return s&&(!l||!!n&&p!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:p,namespaces:c,singleNamespace:u,supportedChains:f,needsDerivationPath:d}=e(r),m=vo(f.map(T=>T.type)),g=Oi(t(r));return{title:a,image:s,link:qg(l),state:g,type:r,showOnMobile:p,namespaces:c,singleNamespace:u,blockchainTypes:m,needsDerivationPath:d}})}i(Gl,"mapWalletTypesToWalletInfo");function On(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(On,"walletAndSupportedChainsNames");function Vl(t,e,o,n,r){let a=[];function s(p,c){if(!!!a.find(f=>f.chain===p)){let f={address:c,chain:p,walletType:t};a.push(f)}}i(s,"addAccount");let l=n||[];return e.forEach(p=>{let{address:c,network:u}=zg(p),f=l.length>0,d=l.includes(u),m=u===Hl.Unknown;if(f&&!d&&!m)return;let T=u===Hl.Unknown&&Gg(c);if(m&&!T)return;o.includes(u)||T?r?s(u,c.toLowerCase()):l.filter(y=>o.includes(y)).forEach(y=>{s(y,c.toLowerCase())}):s(u,c)}),a}i(Vl,"prepareAccountsForWalletStore");function Zt(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:p}=r;p.forEach((c,u)=>{let f=c.from.blockchain,d=c.to.blockchain,m=a===o.swaps.length-1,g=u===p.length-1;(!m&&!g||m&&l!==f||e==="all")&&n.add(f),e==="all"&&n.add(d)})}e==="all"&&n.add(l)}),Array.from(n)}i(Zt,"getQuoteWallets");function Un(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Un,"isAccountAndWalletMatched");function Kl(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 Fi(r.amount.amount).shiftedBy(-r.amount.decimals).toFixed(),logo:"",usdPrice:e(r.asset)?.usdPrice||null}))||[]}i(Kl,"makeBalanceFor");function jl(t){return{...t,loading:!1,error:!0}}i(jl,"resetConnectedWalletState");var Xl=i(t=>{let e=new Set,n=t?.reduce((a,s)=>a.findIndex(l=>l.address===s.address&&l.chain===s.chain)===-1?[...a,s]:a,[])?.map(a=>{let s={name:a.chain,accounts:[]};return e.has(a.address)||e.add(a.address),e.forEach(l=>{a.address===l&&s.accounts.push(a)}),s}),r=M(n?.flatMap(a=>a.accounts)?.flatMap(a=>a?.balances)?.map(a=>new Fi(a?.amount||Ue).multipliedBy(a?.usdPrice||0))?.reduce((a,s)=>a.plus(s),Ue)||Ue).toString();return Kg(r)},"calculateWalletUsdValue");function Kg(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(Kg,"numberWithThousandSeparator");var Qn=i((t,e)=>{let o=Hg(Object.entries(t).map(([,n])=>n).filter(Vg));return o&&o[e]?.experimental},"isExperimentalChain");function zn(t){return t?{...t,amount:M(t.amount,8,8),usdValue:M(t.usdValue,4,4)}:null}i(zn,"formatBalance");function Yl(t,e){return t?.usdValue||e?.usdValue?parseFloat(e?.usdValue||"0")-parseFloat(t?.usdValue||"0"):t?.amount||e?.amount?parseFloat(e?.amount||"0")-parseFloat(t?.amount||"0"):0}i(Yl,"compareTokenBalance");function Jt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Jt,"areTokensEqual");function Zl(t){return t.sort((e,o)=>+(o.state===Ct.CONNECTED)-+(e.state===Ct.CONNECTED)||+(o.state===Ct.DISCONNECTED||o.state===Ct.CONNECTING)-+(e.state===Ct.DISCONNECTED||e.state===Ct.CONNECTING))}i(Zl,"sortWalletsBasedOnConnectionState");function qn(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(qn,"getConciseAddress");function Jl({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(Jl,"getAddress");function Hn(t){return t.flatMap(e=>e.balances).reduce((e,o)=>{let n={amount:o?.amount??"",decimals:o?.decimal??0,usdValue:o?.usdPrice?new Fi(o?.usdPrice??Ue).multipliedBy(o?.amount).toString():""},r=o?ct({symbol:o.symbol,blockchain:o.chain,address:o.address}):null,a=r?e[r]:null;return r&&(!a||a&&a.amount<n.amount)&&(e[r]=n),e},{})}i(Hn,"makeTokensBalance");var Rl=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function ep(t){return t.map(e=>e.state).join("-")}i(ep,"hashWalletsState");function tp(t,e){let o=new Set;return t.forEach(r=>{r.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(r=>o.has(r.type))}i(tp,"filterBlockchainsByWalletTypes");function op(t,e){return e===Qg.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Ln(n,e))return!0;return!1})}i(op,"filterWalletsByCategory");var Ui={API_KEY:Nn};function Et(t){return Ui[t]||""}i(Et,"getConfig");function np(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Ui=e,Ui}i(np,"initConfig");var rp=20,ip=25,Qi="theme-widget",zi=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Jt(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Jt(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),qi=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),ap=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Gn,$t=i(()=>Gn||(Gn=new jg(Et("API_KEY"),Et("BASE_URL")),Gn),"httpService");import{WidgetEvents as sp}from"@rango-dev/queue-manager-rango-preset";var Hi=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(Hi||{}),Vn=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(Vn||{}),Gi=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(Gi||{}),Rt=(a=>(a[a.RouteEvent=sp.RouteEvent]="RouteEvent",a[a.StepEvent=sp.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Rt||{});var Xg=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=Xg;var te=Ft(Yg()(Zg((t,e)=>({connectedWallets:[],balances:{},loading:!1,connectWallet:(o,n)=>{ke.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}});let r=e().getWalletsDetails;t(a=>({loading:!0,connectedWallets:a.connectedWallets.filter(s=>s.walletType!==o[0].walletType).concat(o.map(s=>{let l=!a.connectedWallets.some(p=>p.chain===s.chain&&p.selected&&p.walletType!==s.walletType);return{balances:[],address:s.address,chain:s.chain,explorerUrl:null,walletType:s.walletType,selected:l,loading:!0,error:!1}}))})),r(o,n)},disconnectWallet:o=>{t(n=>{n.connectedWallets.find(l=>l.walletType===o)&&ke.emit("walletEvent",{type:"disconnect",payload:{walletType:o}});let r=n.connectedWallets.filter(l=>l.selected&&l.walletType!==o).map(l=>l.chain),a=n.connectedWallets.filter(l=>l.walletType!==o).map(l=>r.includes(l.chain)?l:(r.push(l.chain),{...l,selected:!0}));return{balances:Hn(a),connectedWallets:a}})},selectWallets:o=>t(n=>({connectedWallets:n.connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r})})),clearConnectedWallet:()=>t(()=>({connectedWallets:[],selectedWallets:[]})),getWalletsDetails:async(o,n,r=!0)=>{let a=e().getWalletsDetails;t(s=>({loading:!0,connectedWallets:s.connectedWallets.map(l=>o.find(p=>Un(p,l))?{...l,loading:!0}:l)}));try{let s=o.map(({address:c,chain:u})=>({address:c,blockchain:u})),p=(await $t().getWalletsDetails(s)).wallets;if(p)t(c=>{let u=c.connectedWallets.map(d=>{let m=o.find(T=>Un(T,d)),g=p.find(T=>T.address===d.address&&T.blockChain===d.chain);return g?.failed&&m&&r&&a([m],n,!1),m&&g?{...d,explorerUrl:g.explorerUrl,balances:Kl(g,n),loading:!1}:d});return{loading:!1,balances:Hn(u),connectedWallets:u}});else throw new Error("Wallet not found")}catch{t(l=>{let p=l.connectedWallets.map(u=>o.find(f=>Un(f,u))?jl(u):u);return{loading:!1,balances:Hn(p),connectedWallets:p}})}},getBalanceFor:o=>{let{balances:n}=e(),r=ct(o);return n[r]??null}}))));import{allProviders as Jg}from"@rango-dev/provider-all";function Kn(t,e){let o=Jg({walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0});if(t){let n=[];return t.forEach(r=>{if(typeof r=="string"){let a=o.find(s=>s.config.type===r);a?n.push(a):console.warn(`Couldn't find ${r} provider. Please make sure you are passing the correct name.`)}else n.push(r)}),n}return o}i(Kn,"matchAndGenerateProviders");function lp(t,e){return Kn(t,e).map(r=>r.config.type)}i(lp,"configWalletsToWalletName");function pp(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(pp,"hashProviders");function Vi(t,e){let o=te.use.clearConnectedWallet(),n=Kn(t,e);return Rg(()=>{o(),n=Kn(t,e)},[pp(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:n}}i(Vi,"useWalletProviders");import Ch,{createContext as Th,useContext as kh,useEffect as vh,useRef as xh}from"react";import{create as yh}from"zustand";import{persist as Sh}from"zustand/middleware";var Ki=class{static{i(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},xo=new Ki;function jo(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(p=>{typeof p!="string"&&(p=ct(p));let c=o.tokensMapByTokenHash.get(p);c&&(n[p]=c)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(p=>{l.has(p)||a(o.tokensMapByBlockchainName[p])})}return s.forEach(l=>{let p=r[l];if(!p&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}p&&(p.isExcluded?(a(o.tokensMapByBlockchainName[l]),p.tokens.forEach(c=>{let u=ct(c);delete n[u]})):a(p.tokens))}),Object.values(n)}i(jo,"matchTokensFromConfigWithMeta");var ji={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"}},eh={clientUrl:void 0},th={liquiditySources:void 0},cp=i((t,e,o)=>({config:{...ji,...t},iframe:eh,campaignMode:th,getLiquiditySources:()=>{let{config:n,campaignMode:r}=o();return r.liquiditySources?.length?r.liquiditySources:n.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:n,campaignMode:r}=o();return r.liquiditySources?.length?[]:n},excludeLiquiditySources:()=>{let{config:n,campaignMode:r}=o();return r.liquiditySources?.length?!1:!!n.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:n}=o();return!!n.liquiditySources?.length},updateConfig:n=>{let r=o().config,{_tokensMapByTokenHash:a,_tokensMapByBlockchainName:s}=o(),l=jo({type:"source",config:{blockchains:n.from?.blockchains,tokens:n.from?.tokens},meta:{tokensMapByBlockchainName:s,tokensMapByTokenHash:a}}),p=jo({type:"destination",config:{blockchains:n.to?.blockchains,tokens:n.to?.tokens},meta:{tokensMapByBlockchainName:s,tokensMapByTokenHash:a}});xo.set("supportedSourceTokens",l),xo.set("supportedDestinationTokens",p),e({config:{...r,...n}})},updateCampaignMode:(n,r)=>{let a=o().campaignMode;e({campaignMode:{...a,[n]:r}})},updateIframe:(n,r)=>{let a=o().iframe;e({iframe:{...a,[n]:r}})}}),"createConfigSlice");function jn(t,e){let o=t.map(a=>a.swapperGroup),n=[];return vo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(p=>p===s.swapperGroup)),l&&s.types.map(p=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:p,selected:!e.includes(s.swapperGroup)})})}}),n}i(jn,"getUniqueSwappersGroups");function up(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(up,"sortLiquiditySourcesByGroupTitle");function ot(t,e){return e?.[t]==="hidden"}i(ot,"isFeatureHidden");function mp(t,e){return e?.[t]==="enabled"}i(mp,"isFeatureEnabled");var dp=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config,s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(p=>!(s.length>0&&!s.includes(p.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a}=e(),s=Array.from(n.values()),l=e()._blockchainsMapByName;if(!o||!o.type)return s;let p=o.type==="source"?"from":"to",c=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",u=xo.get(c);u?.length||(u=jo({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),xo.set(c,u));let f=e().blockchains({type:o.type});return u.filter(m=>o.blockchain&&m.blockchain!==o.blockchain||!f.some(g=>g.name===m.blockchain)?!1:o.searchFor?!!(bt(m.symbol,o.searchFor)||bt(m.address||"",o.searchFor)||bt(m.name||"",o.searchFor)):!0).sort((m,g)=>{let T=e().isTokenPinned(m,o.type),S=e().isTokenPinned(g,o.type);if(T!==S)return T?-1:1;if(o.getBalanceFor){let b=o.getBalanceFor(m),N=o.getBalanceFor(g),w=Yl(b,N);if(w!==0)return w}let C=l.get(m.blockchain),y=l.get(g.blockchain),k=$i(m,C),x=$i(g,y);if(k!==x)return k?-1:1;if(m.isPopular!==g.isPopular)return m.isPopular?-1:1;if(o.searchFor){let b=Ul(m,g,o.searchFor);if(b)return b}return m.isSecondaryCoin!==g.isSecondaryCoin?m.isSecondaryCoin?1:-1:C&&y?C.sort-y.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=ct(o);return n.get(r)},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Jt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(c=>{let u=a?.includes(c.swapperGroup);return s||!a||a.length===0?!u:u}).sort(up)},fetch:async()=>{try{let{enableCentralizedSwappers:o}=e().config,n=await $t().getAllMetadata({enableCentralizedSwappers:o});t({fetchStatus:"success"});let r=new Map,a=new Map,s={},l=[],p=n.popularTokens,c=n.swappers,u=new Set;n.tokens.forEach(d=>{u.add(d.blockchain),l.push(d)}),n.blockchains.sort((d,m)=>d.sort-m.sort).forEach(d=>{d.enabled&&u.has(d.name)&&r.set(d.name,d)}),l.forEach(d=>{let m=ct(d);s[d.blockchain]||(s[d.blockchain]=[]),a.set(m,d),s[d.blockchain].push(m)}),t({_blockchainsMapByName:r,_tokensMapByTokenHash:a,_tokensMapByBlockchainName:s,_popularTokens:p,_swappers:c})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Chinese as oh,English as nh,Finland as rh,French as ih,German as ah,Greece as sh,Italian as lh,Japanese as ph,Netherlands as ch,Poland as uh,Portuguese as mh,Russian as dh,Spanish as fh,Swedish as gh,Ukrainian as hh}from"@rango-dev/ui";var fp=[{title:"English",label:"English",local:"en",SVGFlag:nh},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:fh},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:ih},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:ph},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:mh},{title:"Chinese",label:"\u4E2D\u56FD\u4EBA",local:"zh",SVGFlag:oh},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:dh},{title:"German",label:"Deutsch",local:"de",SVGFlag:ah},{title:"Ukrainian",label:"\u0423\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:hh},{title:"Swedish",label:"svenska",local:"sv",SVGFlag:gh},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:rh},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:ch},{title:"Greek",label:"Grieks",local:"el",SVGFlag:sh},{title:"Italian",label:"Italiana",local:"it",SVGFlag:lh},{title:"Polish",label:"Polski",local:"pl",SVGFlag:uh}],wo="en";var gp=[.5,1,3],hp=1,yp=5,Sp=100,Cp=0;var Tp=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:hp,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let p=s===o,c=l<=9;return p&&c}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},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 a=vo(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),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,theme:r}=o,a=ot("theme",n),s=ot("language",n),l=ot("liquiditySource",n),p=r?.singleTheme,c=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...p&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||wo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...c&&{language:o.language||wo}})}}),"createSettingsSlice");function kp(t){return yh()(Sh((...e)=>({...dp(...e),...Tp(...e),...cp(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(kp,"createAppStore");var vp=Th(null);function h(){let t=kh(vp);if(vh(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(h,"useAppStore");function xp(t){let e=xh();return e.current||(e.current=kp(t.config)),Ch.createElement(vp.Provider,{value:e.current},t.children)}i(xp,"AppStoreProvider");import{create as bh}from"zustand";var wp="rango-widget";var Xo=class{constructor(e){this.state="not-initiated";this.events={};this.init=()=>{this.initEvents(),this.tryClaim()};this.forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};this.isClaimed=()=>this.state==="claimed";this.destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};this.handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};this.handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};this.handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};this.channel=new BroadcastChannel(wp),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{i(this,"TabManager")}initEvents(){this.channel.addEventListener("message",this.handleMessageEvent),document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("resume",this.handleResume)}claimedByCurrentTab(e){let o=this.lastTryClaim&&this.lastTryClaim<e;if(this.isClaimed()||o){let n={name:"pong"};this.channel.postMessage(n);return}}alreadyClaimedByAnotherTab(){this.resetLastCheck()}async tryClaim(){return this.setLastCheck(),new Promise(e=>{setTimeout(()=>{this.check(),e()},300)})}check(){this.state==="not-initiated"&&this.events.onInit?.(),this.lastTryClaim?(this.claim(),this.resetLastCheck()):this.state="not-claimed"}claim(){this.state="claimed",this.events.onClaim?.()}setLastCheck(){this.lastTryClaim=Date.now();let e={name:"ping",pingAt:this.lastTryClaim};this.channel.postMessage(e)}resetLastCheck(){this.lastTryClaim=void 0}forceRelease(e){if(this.isClaimed()){this.state="not-claimed",this.events.onRelease?.();let o={name:"force-release",candidateId:e};this.channel.postMessage(o)}}};var pe=Ft(bh()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",fetchingApiConfig:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})}}))),eo=new Xo({onInit:()=>pe.setState({tabManagerInitiated:!0}),onClaim:()=>pe.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>pe.setState({isActiveTab:!1})});var Yn=Ah({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function Nh(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=h(),a=h().blockchains(),{findToken:s}=h(),l=h().config,p={walletConnectProjectId:l?.walletConnectProjectId,trezorManifest:l?.trezorManifest,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:c}=Vi(l.wallets,p),{connectWallet:u,disconnectWallet:f}=te(),d=Ip(),m=Ip();Ep(()=>{n().catch(console.log)},[]),Ep(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:l,dappConfig:t.config})},[t.config,r]);let g=a.filter(Ih).map(y=>y.name),T=i((y,k,x,b,N)=>{if(k===Yi.ACCOUNTS)if(x){let w=On(N.supportedBlockchains),v=Vl(y,x,g,w,N.isContractWallet);v.length&&u(v,s)}else f(y),m.current?m.current(y):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?");if(k===Yi.ACCOUNTS&&b.connected){let w=`${y}-${b.network}-${x}`;b.connected&&(d.current?d.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(k===Yi.NETWORK&&b.network){let w=`${y}-${b.network}`;d.current?d.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(y,k,x,b,N)},"onUpdateState"),S=pe.use.isActiveTab(),C=Wh(()=>({onConnectWallet:y=>{d.current=y},onDisconnectWallet:y=>{m.current=y}}),[]);return Xn.createElement(Yn.Provider,{value:C},Xn.createElement(Eh,{allBlockChains:a,providers:c,onUpdateState:T,autoConnect:!!S},t.children))}i(Nh,"Main");function Zn(t){let{config:e,...o}=t;return Xn.createElement(xp,{config:e},Xn.createElement(Nh,{...o,config:e}))}i(Zn,"WidgetWallets");import Ni from"react";import Mh,{Fragment as Bh}from"react";import{MemoryRouter as Lh,useInRouterContext as Ph}from"react-router";function Ap({children:t}){let o=Ph()?Bh:Lh;return Mh.createElement(o,null,t)}i(Ap,"AppRouter");import{I18nManager as mw}from"@rango-dev/ui";import Il from"react";import Xe from"react";import{useRoutes as Jx}from"react-router-dom";var G={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as Io,useRef as lr}from"react";import Ve from"bignumber.js";import{create as $h}from"zustand";import{subscribeWithSelector as Fh}from"zustand/middleware";import{getLastSuccessfulStep as _h}from"@rango-dev/queue-manager-rango-preset";import JI from"bignumber.js";function Zi(t,e){return{"Network Fee":e("Network Fee"),"Swapper Fee":e("Protocol Fee"),"Affiliate Fee":e("Affiliate Fee"),"Outbound network fee":e("Outbound Fee"),"Rango Fee":e("Rango Fee")}[t]}i(Zi,"getFeeLabel");var Ji=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],Wp=30;import{i18n as ut}from"@lingui/core";import{RouteEventType as _I}from"@rango-dev/queue-manager-rango-preset";import Qe from"bignumber.js";import{PendingSwapNetworkStatus as er}from"rango-types";function Jn(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Jn,"isValidAddress");import{i18n as Fe}from"@lingui/core";var re=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."),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 Np(t){switch(t.type){case 0:return t.diagnosisMessage??re().noResultError.title;case 1:return re().genericServerError;default:return""}}i(Np,"getQuoteErrorMessage");import{i18n as Rn}from"@lingui/core";var to=i(()=>({connectWallet:Rn.t("Connect Wallet"),swap:Rn.t("Swap"),swapAnyway:Rn.t("Swap anyway"),ethWarning:Rn.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Mp(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new Qe(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new Qe(1e3)))??!1}i(Mp,"hasHighValueLoss");function Bp(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Qe(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Qe(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(Bp,"hasLimitError");function Lp(t){let e=(t||[]).filter(l=>{let p=l.fromAmountMinValue?new Qe(l.fromAmountMinValue):null,c=l.fromAmountMaxValue?new Qe(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 Qe(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Qe(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=ut.t({id:"Required: >= {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=re().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=ut.t({id:"Required: > {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=re().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=ut.t({id:"Required: <= {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=re().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=ut.t({id:"Required: < {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=re().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Lp,"getLimitErrorMessage");function Pp(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:p}=t;return e!=="success"?{title:to().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:to().swap,action:"confirm-swap",disabled:!0}:s?{title:to().swapAnyway,action:"confirm-warning",disabled:!1}:p?{title:to().ethWarning,action:"confirm-warning",disabled:!1}:{title:to().swap,action:"confirm-swap",disabled:!1}:{title:to().connectWallet,action:"connect-wallet",disabled:!1}}i(Pp,"getSwapButtonState");function Ri(t,e,o){return!((!o||o.lte(Ue))&&t&&e&&e!=="0"&&parseFloat(e||"0")!==0&&t)}i(Ri,"canComputePriceImpact");function ea(t,e){let o=Ue;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Qe(r.amount).multipliedBy(a||0))}return o}i(ea,"getUsdFeeOfStep");function tr(t,e){return t.reduce((o,n)=>o.plus(ea(n,e)),Ue)}i(tr,"getTotalFeeInUsd");function ta(t){let e=Ue;return e=e.plus(new Qe(t.amount).multipliedBy(t.price||0)),e}i(ta,"getUsdFee");function Dp(t){return t.reduce((e,o)=>e.plus(ta(o)),Ue)}i(Dp,"getTotalFeesInUsd");function _p(t){return t.reduce((e,o)=>{for(let n of o.fee){let r=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[r]=[...a[r]||[],n]}return e},{payable:{},nonePayable:{}})}i(_p,"getFeesGroup");function $p(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i($p,"checkSlippageErrors");function Fp(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(Fp,"checkSlippageWarnings");function or(t){return t.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(or,"getMinRequiredSlippage");function Op(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Op,"hasProperSlippage");function Up(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:p,slippage:c,affiliateRef:u,affiliatePercent:f,affiliateWallets:d,destination:m,enableCentralizedSwappers:g}=t,T=a?.reduce((y,k)=>(y[k.chain]=k.address,y),{}),S=[];return r?.forEach(y=>{S.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:f??void 0,affiliateWallets:d??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:S,selectedWallets:T??{},slippage:c.toString(),...m&&{destination:m},...p&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!p&&{swapperGroups:l?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1},enableCentralizedSwappers:g}}i(Up,"createQuoteRequestBody");function Qp(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Qp,"getWalletsForNewSwap");function bo(t){return t?.outputAmount||null}i(bo,"getQuoteOutputAmount");function zp(t,e){return new Qe(e).div(new Qe(t)).minus(1).multipliedBy(100).toNumber()}i(zp,"getPercentageChange");function qp(t,e){let o=bo(t),n=bo(e);if(!o||!n)return!1;let r=nt(o,n);return r?r<=-1:!0}i(qp,"isOutputAmountChangedALot");function Hp(t,e,o){let n=t.validationStatus,r=Zt({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>Yp(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,p=M(new Qe(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),c=M(new Qe(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=ut.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=ut.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=ut.t(" for input and network fee")),ut.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:tt(s.asset.blockchain,o)}})})}i(Hp,"generateBalanceWarnings");function nr(t,e){return(t?new Qe(t):Ue).multipliedBy(e||0)}i(nr,"calcOutputUsdValue");function Yo(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==er.NetworkChanged}i(Yo,"isNetworkStatusInWarningState");function Gp(t,e){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),Yo(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case er.WaitingForConnectingWallet:n=n||ut.t("Waiting for connecting wallet");break;case er.WaitingForQueue:n=n||ut.t("Waiting for other running tasks to be finished");break;case er.WaitingForNetworkChange:n=n||ut.t("Waiting for changing wallet network");break;default:n=n||"";break}r=r||"",n=n||"";let s=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:r,long:s}}}i(Gp,"getSwapMessages");function Vp(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(Vp,"getLastConvertedTokenInFailedSwap");function Kp(t){return t.status==="failed"}i(Kp,"shouldRetrySwap");function jp(t,e,o,n,r,a){if(!n||t)return!0;let s=Zt({filter:"all",quote:n}),l=Zt({filter:"required",quote:n}),p=s.every(f=>r.some(d=>d.chain===f)),c=l.every(f=>r.some(d=>d.chain===f)),u=o&&a?Jn(a,o):!1;return!e&&!p||e&&!o||e&&!!o&&(!u||!c)}i(jp,"isConfirmSwapDisabled");function Xp(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Xp,"isTokensIdentical");function ir(t){let e=t?.swaps||[];return e[e.length-1].to.usdPrice}i(ir,"getQuoteToTokenUsdPrice");function oa(t,e){let o=t?.swaps||[],n=e?.swaps||[];return o.length!==n.length}i(oa,"isNumberOfSwapsChanged");function na(t,e){let o=t?.swaps.map(r=>r.swapperId)||[],n=e?.swaps.map(r=>r.swapperId)||[];return!Di(o,n)}i(na,"isQuoteSwappersUpdated");function ra(t,e){let o=t?.swaps.map(r=>r.to.symbol)||[],n=e?.swaps.map(r=>r.to.symbol)||[];return!Di(o,n)}i(ra,"isQuoteInternalCoinsUpdated");function Jp(t,e){return oa(t,e)||na(t,e)||ra(t,e)}i(Jp,"isQuoteChanged");function Yp(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(Yp,"getRequiredBalanceOfWallet");function It(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(It,"getPriceImpactLevel");function ar(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=_h(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=_i(a?a.toBlockchain:n.fromBlockchain,e),p=_i(r.toBlockchain,e),c=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),u=o(s),f=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:c,toBlockchain:p,toToken:u,inputAmount:f}}i(ar,"createRetryQuote");function Eo(t,e){let{fromToken:o,toToken:n,findToken:r,userSlippage:a}=e,s=oo(o,t.requestAmount),l=oo(n,t?.outputAmount??"");if(t&&s&&l){let u=nt(s.toString(),l.toString());if(!!u&&Mp(s,u)){let d=tr(t?.swaps,r),m=It(u);return{type:0,inputUsdValue:s,outputUsdValue:l,priceImpact:u,totalFee:d,warningLevel:m}}}else if(t&&(!s||!l))return{type:1};let p=or(t.swaps),c=a>yp;if(Op(e.userSlippage.toString(),p)){if(c&&parseFloat(p??"0")<a)return{type:3,slippage:a.toString()}}else return{type:2,recommendedSlippages:Fp(t,a),minRequiredSlippage:p};return null}i(Eo,"generateQuoteWarnings");function nt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:zp(t.toString(),e.toString());return n&&n<0?n:null}i(nt,"getPriceImpact");var Rp=i(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),sr=i((t,e)=>e.sort((o,n)=>{let r=i(c=>c.scores?.find(u=>u.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),p=n.requestId.toLowerCase();return l.localeCompare(p)}),"sortQuotesBy"),ec=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,...r||e[0]}},"getDefaultQuote"),tc=i(t=>{let e=i((o,n)=>{let r=Ji.indexOf(o.value),a=Ji.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");var oo=i((t,e)=>t?.usdPrice?new Ve(e||Ue).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),H=Ft($h()(Fh(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Ve(0),outputUsdValue:new Ve(0),toBlockchain:null,toToken:null,refetchQuote:!0,sortStrategy:"SMART",selectedQuote:null,quotes:null,error:null,warning:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null,quoteWarningsConfirmed:!1,updateQuotePartialState:(e,o)=>t(n=>({...n,[e]:o})),setSelectedQuote:e=>t(o=>{let n=null,r=Ue;return Ko(o.inputAmount)?(e&&(n=e?.outputAmount?new Ve(e?.outputAmount):null,r=nr(e?.outputAmount,ir(e)||o.toToken?.usdPrice)),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new Ve(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new Ve(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new Ve(0)}})},setFromToken:e=>t(o=>({fromToken:e.token,...e.token&&{fromBlockchain:e.meta.blockchains.find(n=>n.name===e.token.blockchain)??null},...!!o.inputAmount&&{inputUsdValue:oo(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{selectedQuote:null,toToken:null,outputAmount:null,outputUsdValue:new Ve(0)}})},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:null,outputUsdValue:new Ve(0),selectedQuote:null},...!!o.fromToken&&{inputUsdValue:oo(o.fromToken,e)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:oo(n??null,s),outputUsdValue:new Ve(0),toBlockchain:r,toToken:a,selectedQuote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:e.toToken?oo(e.toToken,e.outputAmount?.toString()||""):new Ve(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new Ve(0),inputUsdValue:new Ve(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new Ve(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})})))),oc=H.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ke.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&ke.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function nc(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:p,toBlockchain:c}=H(),u=h().config,f=h().fetchStatus,d=h().blockchains(),m=h().tokens(),{findToken:g}=h(),{setAffiliateRef:T,setAffiliatePercent:S,setAffiliateWallets:C}=h(),y=u?.from?.tokens,k=u?.from?.blockchains,x=u?.to?.tokens,b=u?.to?.blockchains,N=lr(void 0),w=lr(void 0),v=lr(void 0),E=lr(void 0);Io(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),Io(()=>{if(f==="success"){r();let A=d.find(I=>I.name===u?.from?.blockchain),L=u?.from?.token,q=L&&g(L);(A||!A&&v.current)&&n(A??null),q?a({token:q,meta:{blockchains:d,tokens:m}}):!q&&N.current&&a({token:null}),v.current=u?.from?.blockchain,N.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,f]),Io(()=>{zi(s,y)&&a({token:null}),qi(p,k)&&n(null)},[y,k]),Io(()=>{zi(l,x)&&a({token:null}),qi(c,b)&&o(null)},[x,b]),Io(()=>{if(f==="success"){r();let A=d.find(I=>I.name===u?.to?.blockchain),L=u?.to?.token,q=L&&g(L);(A||!A&&E.current)&&o(A??null),q?e({token:q,meta:{blockchains:d,tokens:m}}):!q&&w.current&&e({token:null}),E.current=u?.to?.blockchain,w.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,f]),Io(()=>{T(u?.affiliate?.ref??null),S(u?.affiliate?.percent??null),C(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(nc,"useSyncStoresWithConfig");import{useEffect as sa,useRef as Oh}from"react";import{useInRouterContext as Uh,useLocation as Qh,useSearchParams as zh}from"react-router-dom";function ia(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(ia,"convertTokenSearchParamToAsset");function aa(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(aa,"tokenToSearchParam");function la(){let t=Qh(),[e,o]=zh(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:p,setToBlockchain:c,setFromToken:u,setToToken:f,setInputAmount:d}=H(),m=h().fetchStatus,g=h().blockchains(),T=h().tokens(),S=Uh(),{updateIframe:C,updateCampaignMode:y}=h(),k=h().isInCampaignMode(),x=Oh(),{findToken:b}=h(),N=i(()=>{let v={};for(let[_,X]of e.entries())_.startsWith("utm_")&&(v[_]=X);let E=e.get("fromAmount"),A=e.get("fromBlockchain"),L=e.get("fromToken"),q=e.get("toBlockchain"),I=e.get("toToken"),Q=e.get("autoConnect"),oe=e.get("clientUrl"),P=e.get("liquiditySources");return{fromAmount:E,fromBlockchain:A,fromToken:L,toBlockchain:q,toToken:I,autoConnect:Q,clientUrl:oe,liquiditySources:P,utmQueryParams:v}},"getUrlSearchParams"),w=i(v=>{for(let E in v)v[E]||delete v[E];o(v,{replace:!0})},"updateUrlSearchParams");sa(()=>{let{autoConnect:v,clientUrl:E,utmQueryParams:A}=N();S&&m==="success"&&w({fromBlockchain:n?.name,fromToken:aa(a),toBlockchain:r?.name,toToken:aa(s),fromAmount:l,autoConnect:v??void 0,clientUrl:E??void 0,liquiditySources:k?x.current:void 0,...A})},[t.pathname,l,n,a,r,s,k]),sa(()=>{if(!S)return;let v=N();if(!x.current&&v.liquiditySources&&(x.current=v.liquiditySources),v.fromAmount&&d(v.fromAmount),m==="success"){let E=g.find(I=>I.name===v.fromBlockchain),A=v.fromToken&&E?b(ia(v.fromToken,E)):void 0,L=g.find(I=>I.name===v.toBlockchain),q=v.toToken&&L?b(ia(v.toToken,L)):void 0;E&&(p(E),A&&u({token:A,meta:{blockchains:g,tokens:T}})),L&&(c(L),q&&f({token:q,meta:{blockchains:g,tokens:T}}))}},[m]),sa(()=>{let{clientUrl:v,liquiditySources:E}=N();C("clientUrl",v||void 0),y("liquiditySources",E?.split(",")??void 0)},[])}i(la,"useSyncUrlAndStore");import{i18n as ds}from"@lingui/core";import{useManager as ST}from"@rango-dev/queue-manager-react";import{Alert as Om,Button as CT,css as gs,Divider as fs,IconButton as Um,styled as TT,Typography as kT,WalletIcon as vT}from"@rango-dev/ui";import Ne,{useEffect as Yr,useLayoutEffect as xT,useRef as wT,useState as un}from"react";import{useNavigate as bT}from"react-router-dom";import{i18n as uo}from"@lingui/core";import{Alert as yu,BalanceErrors as sC,Button as Su,ChevronLeftIcon as lC,Divider as Wr,MessageBox as pC,Typography as Va}from"@rango-dev/ui";import J,{useCallback as cC,useEffect as Cu,useMemo as uC,useState as mo}from"react";import{useNavigate as mC}from"react-router-dom";import{i18n as pr}from"@lingui/core";function cr(t){switch(t.type){case 0:return pr.t("Route has been updated.");case 3:return pr.t("Output amount changed to {newOutputAmount} ({percentageChange}% change).",{newOutputAmount:t.newOutputAmount,percentageChange:t.percentageChange});case 1:return pr.t("Route swappers has been updated.");case 2:return pr.t("Route internal coins has been updated.");default:return""}}i(cr,"getQuoteUpdateWarningMessage");import{Modal as Hh}from"@rango-dev/ui";import Gh from"react";function ne(t){let{watermark:e}=pe();return Gh.createElement(Hh,{hasWatermark:e==="FULL",...t},t.children)}i(ne,"WatermarkedModal");import{i18n as ma}from"@lingui/core";import{Alert as Yh,ChevronDownIcon as Zh,CloseIcon as Jh,Divider as uc,IconButton as mc,PasteIcon as Rh,Typography as ey,WalletIcon as ty}from"@rango-dev/ui";import Le,{useEffect as oy,useRef as ny}from"react";import fr,{useRef as jh}from"react";import*as Ao from"@radix-ui/react-collapsible";import{keyframes as ic,styled as ur}from"@rango-dev/ui";var pa=300,Vh=ic({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Kh=ic({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),ac=ur(Ao.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),ca=ur(Ao.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),mr=ur(Ao.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Vh} ${pa}ms ease-out`},false:{animation:`${Kh} ${pa}ms ease-out`}}}}),dr=ur("div",{transition:`all ${pa}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function gr(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,p=jh(null);return fr.createElement(ac,{ref:p,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&fr.createElement(ca,{className:"collapsible_trigger",onClick:a},s),fr.createElement(mr,{className:"collapsible_content",open:e},r),l==="bottom"&&fr.createElement(ca,{className:"collapsible_trigger",onClick:a},s))}i(gr,"CustomCollapsible");import{darkTheme as sc,styled as ua,TextField as Xh}from"@rango-dev/ui";var lc=ua("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),pc=ua(Xh,{backgroundColor:"$neutral100",padding:"$15"}),cc=ua("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${sc} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${sc} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function dc(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=H(),{config:s}=h(),l=h().blockchains(),p=Dn(e.name,l),c=ny(null),u=s?.defaultCustomDestinations?.[e.name],f=navigator?.userAgent.includes("Firefox"),m=n&&!!r&&e&&!Jn(e,r),g=i(()=>{a("")},"handleClear"),T=i(async C=>{if(C.preventDefault(),navigator.clipboard!==void 0){let y=await navigator.clipboard.readText();a(y),c?.current?.focus()}},"handlePaste"),S=i(()=>r?Le.createElement(mc,{onClick:g,variant:"ghost"},Le.createElement(Jh,{size:12,color:"gray"})):f?null:Le.createElement(mc,{onClick:T,variant:"ghost"},Le.createElement(Rh,{size:16})),"renderSuffix");return oy(()=>{!!u&&r===null&&(a(u),o(!0))},[u]),Le.createElement(lc,null,Le.createElement(gr,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Le.createElement(cc,null,Le.createElement("div",{className:"button__content"},Le.createElement(ty,{size:18,color:"info"}),Le.createElement(uc,{size:4,direction:"horizontal"}),Le.createElement(ey,{variant:"label",size:"medium",color:n?"$neutral600":void 0},ma.t("Send to a different address"))),Le.createElement(dr,{orientation:n?"up":"down"},Le.createElement(Zh,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Le.createElement(pc,{ref:c,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:ma.t("Enter {blockchainName} address",{blockchainName:p}),value:r||"",suffix:S(),onChange:C=>{let y=C.target.value;a(y)}})),m&&Le.createElement(Le.Fragment,null,Le.createElement(uc,{size:4}),Le.createElement(Yh,{variant:"alarm",type:"error",title:ma.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(dc,"CustomDestination");import{css as ry,darkTheme as da,IconButton as iy,styled as At}from"@rango-dev/ui";var fc=At("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),gc=At("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),ay=At("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${da} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$secondary100",[`.${da} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$secondary100",[`.${da} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),hc=At(ay,{alignSelf:"stretch",minHeight:"93px"}),yc=At("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Sc=At(iy,{position:"absolute",left:"$20"}),Cc=At("div",{paddingTop:"$20"}),Tc=ry({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),kc=At("div",{display:"flex"}),vc=At("div",{overflow:"visible",width:"100%"});import{i18n as mt}from"@lingui/core";import{Button as nC,Divider as Ha,Image as rC,MessageBox as Ir,SelectableWallet as iC,Typography as fu,WalletState as gu}from"@rango-dev/ui";import de,{useEffect as hu,useState as co}from"react";import{WalletState as fa}from"@rango-dev/ui";import{useWallets as sy}from"@rango-dev/wallets-react";import{detectMobileScreens as ly,KEPLR_COMPATIBLE_WALLETS as py,WalletTypes as Wo}from"@rango-dev/wallets-shared";import{useCallback as cy,useEffect as uy,useState as my}from"react";var dy=Object.values(Wo);function no(t){let{chain:e,onBeforeConnect:o,onConnect:n,onError:r}=t,{config:a}=h(),{state:s,disconnect:l,getWalletInfo:p,connect:c}=sy(),{connectedWallets:u}=te(),f=h().blockchains(),d=lp(a?.wallets,{trezorManifest:a?.trezorManifest,walletConnectProjectId:a?.walletConnectProjectId,walletConnectListedDesktopWalletLink:a.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink})||dy,m=Gl(s,p,d,e);m=ly()?m.filter(w=>w.showOnMobile!==!1&&s(w.type).installed):m;let g=Zl(m),[T,S]=my(""),C=i(w=>!u.find(v=>v.walletType===w&&v.chain===e),"isExperimentalChainNotAdded"),y=i(async(w,v)=>{let E=s(w);try{if(T&&S(""),E.connected)await l(w);else{if(Pn(m,a.multiWallets))return;o?.(w),await c(w,void 0,v),n?.(w)}}catch(A){r?.(A?.message),S("Error: "+A?.message)}},"handleClick"),k=cy(()=>{let w=m?.filter(v=>v.state===fa.CONNECTING)||[];for(let v of w)l(v.type)},[ep(m)]),x=i(async w=>{s(w).connected&&await l(w)},"disconnectWallet");uy(()=>()=>{k()},[]);let b=i(w=>{let v=w.find(A=>A.type===Wo.DEFAULT);return!v||v.state===fa.NOT_INSTALLED?!1:w.filter(A=>A.state!=fa.NOT_INSTALLED&&![Wo.DEFAULT,Wo.WALLET_CONNECT_2,Wo.LEDGER].includes(A.type)&&p(A.type).supportedChains.filter(L=>L.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),N=i((w,v,E)=>Qn(E,v)&&C(w)&&!py.includes(w)||w==Wo.DEFAULT&&!b(m),"shouldExcludeWallet");return{list:g.filter(w=>!N(w.type,e??"",f)),error:T,handleClick:y,disconnectConnectingWallets:k,disconnectWallet:x}}i(no,"useWalletList");import{i18n as su}from"@lingui/core";import{Divider as jS,getCategoriesCount as XS,SelectableCategoryList as YS,styled as pu,Typography as ZS,Wallet as JS,WalletState as lu}from"@rango-dev/ui";import at,{useState as Ro}from"react";import{useManager as SS}from"@rango-dev/queue-manager-react";import{BottomLogo as CS,Divider as jc,Header as TS}from"@rango-dev/ui";import we,{useEffect as _a,useRef as Xc,useState as kS}from"react";import{useRef as fy}from"react";function hr(){return window.self!==window.top}i(hr,"isAppLoadedIntoIframe");function ga(){let t=fy(null),{iframe:e}=h(),o=hr()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let p of l)n({type:"widget_height",data:{height:p.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(ga,"useIframe");import{useNavigate as gy}from"react-router-dom";function rt(){let t=gy();return()=>t(-1)}i(rt,"useNavigateBack");import{createTheme as va,darkTheme as Wy,lightTheme as Ny}from"@rango-dev/ui";import{useEffect as My,useState as By}from"react";import{theme as Iy,darkColors as Ay}from"@rango-dev/ui";import Ta from"react";function hy(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(hy,"expandShortHexColor");function yy(t){return/[0-9]+$/.test(t)}i(yy,"isOverridingColor");function Sy(t,e){return t.padStart(e,"0")}i(Sy,"pad");function ha(t){let e=Math.min(Math.max(Math.round(t),0),255);return Sy(e.toString(16),2)}i(ha,"intToHex");function Cy(t){return`#${ha(t.red)}${ha(t.green)}${ha(t.blue)}`}i(Cy,"rgbToHex");function Ty(t){let e=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);return{red:e,green:o,blue:n}}i(Ty,"hexToRGB");function ky(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(ky,"generateShade");function vy(t,e){let o=.11*e;return{red:t.red+(255-t.red)*o,green:t.green+(255-t.green)*o,blue:t.blue+(255-t.blue)*o}}i(vy,"generateTint");function xy(t){return xc(t,ky)}i(xy,"calculateShades");function wy(t){return xc(t,vy)}i(wy,"calculateTints");function xc(t,e){let o=Ty(t),n=[];for(let r=1;r<9;r++)n.push(Cy(e(o,r)));return n}i(xc,"calculateColors");function ya(t,e,o){let a=wy(t).reverse().concat(t),s=xy(t),l=a.concat(s),p={},c=l.length;for(let u=0;u<c;u++){let f=100+(o?c-1-u:u)*50;p[`${e}${f}`]=l[u]}return p}i(ya,"createTintsAndShades");function Sa(t,e,o){let n={...t};for(let r in e){let a=e[r],s=r==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(r)&&!yy(r)){let p=hy(a);Object.assign(n,ya(p,r,s))}}return{...n,...e}}i(Sa,"expandToGenerateThemeColors");var wc=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),by=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=wc(o%52)+e;return wc(o%52)+e},"toAlphabeticName"),Ey=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),Ca=i(t=>by(Ey(5381,JSON.stringify(t))>>>0),"toHash");function ka(t){let e=Iy.colors,o={...e,...Ay},n,r;if(t?.light){let s={colors:Sa(e,t.light)};n={id:`${Qi}-light-${Ca(s)}`,tokens:s}}if(t?.dark){let s={colors:Sa(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Qi}-dark-${Ca(s)}`,tokens:s}}return{light:n,dark:r}}i(ka,"customizedThemeTokens");function bc(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>Ta.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(Ta.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(Ta.cloneElement(e,{key:l}))}}),o}i(bc,"joinList");function Ec(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(Ec,"doesWindowPreferDarkColorScheme");function yr(t){let{colors:e,fontFamily:o=Bl,borderRadius:n=rp,secondaryBorderRadius:r=ip}=t,[a,s]=By(Ec()?"dark":"light"),{theme:l}=h(),{dark:p,light:c}=ka(e),u=va({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),f=[u.className,Ny.className],d=[u.className,Wy.className];if(c){let g=va(c.id,c.tokens);f.push(g.className)}if(p){let g=va(p.id,p.tokens);d.push(g.className)}return My(()=>{let g=i(T=>{T.matches?s("dark"):s("light")},"switchThemeListener");return Ec()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:i(()=>{let g=f.join(" "),T=d.join(" ");return l==="auto"?a==="dark"?T:g:l==="dark"?T:g},"getActiveTheme")}}i(yr,"useTheme");var it=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");import{i18n as Ic}from"@lingui/core";import{Alert as Ly,Button as Py}from"@rango-dev/ui";import Ac from"react";function xa(t){return Ac.createElement(Ly,{action:Ac.createElement(Py,{onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},Ic.t("Activate this tab")),type:"warning",variant:"alarm",title:Ic.t("Another tab is open and handles transactions.")})}i(xa,"ActivateTabAlert");import{i18n as wa}from"@lingui/core";import{Button as Dy,Divider as _y,MessageBox as $y}from"@rango-dev/ui";import Sr from"react";function ba(t){let{open:e,onClose:o,onConfirm:n}=t;return Sr.createElement(ne,{open:e,dismissible:!0,onClose:o,container:B()},Sr.createElement($y,{title:wa.t("Activate current tab"),type:"warning",description:wa.t("Currently, some transactions are running and being handled by other browser tab. If you activate this tab, all transactions that are already in the transaction sign step will expire.")},Sr.createElement(_y,{size:20}),Sr.createElement(Dy,{variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},wa.t("Confirm"))))}i(ba,"ActivateTabModal");import{ChevronLeftIcon as Uy}from"@rango-dev/ui";import Dc from"react";import{css as Fy,darkTheme as Wc,IconButton as Oy,styled as ro}from"@rango-dev/ui";var Tt=ro(Oy,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Wc} &`]:{backgroundColor:"$neutral"}}}),Nc=ro("div",{position:"absolute",background:"$secondary500",[`.${Wc} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Ut=ro("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Mc=ro("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),Bc=ro("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Lc=ro("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Pc=Fy({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),Cr=ro("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function Ea(t){return Dc.createElement(Tt,{variant:"ghost",size:"small",onClick:t.onClick},Dc.createElement(Uy,{color:"black",size:16}))}i(Ea,"BackButton");import{i18n as Qy}from"@lingui/core";import{Button as zy,Typography as qy}from"@rango-dev/ui";import Ia from"react";function Aa(t){return Ia.createElement(Ut,null,Ia.createElement(zy,{variant:"ghost",onClick:t.onClick,size:"xsmall"},Ia.createElement(qy,{variant:"label",size:"medium",color:"error500"},Qy.t("Cancel"))))}i(Aa,"CancelButton");import{i18n as Hy}from"@lingui/core";import{Image as Gy,Tooltip as Vy,WalletIcon as Ky}from"@rango-dev/ui";import io from"react";function Wa(t){let{list:e}=no({}),o=e.filter(r=>r.state==="connected"),n=o.length?io.createElement("div",{className:Pc()},o.map(r=>io.createElement(Cr,{key:r.title},io.createElement(Gy,{src:r.image,size:14})))):Hy.t("Connect Wallet");return io.createElement(Vy,{container:t.container,side:"bottom",content:n},io.createElement(Tt,{variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&io.createElement(Nc,null),io.createElement(Ky,{size:18,color:"black"})))}i(Wa,"WalletButton");import{i18n as kr}from"@lingui/core";import{NotificationsIcon as pS,Popover as cS,SettingsIcon as uS,Tooltip as vr,TransactionIcon as mS}from"@rango-dev/ui";import Pe from"react";import{Notifications as Zy}from"@rango-dev/ui";import Jy from"react";import{useNavigate as Ry}from"react-router-dom";import{create as jy}from"zustand";import{persist as Xy,subscribeWithSelector as Yy}from"zustand/middleware";var Ie=Ft(jy()(Xy(Yy((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(p=>p.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(p=>p.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function Na(){let t=Ry(),{getNotifications:e,clearNotifications:o}=Ie(),n=e(),r=h().blockchains(),{findToken:a}=h();return Jy.createElement(Zy,{list:n,getBlockchainImage:l=>zl(l,r)??"",getTokenImage:l=>a(l)?.image??"",onClickItem:i(l=>{t(`${G.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(Na,"NotificationContent");import{useManager as eS}from"@rango-dev/queue-manager-react";import{InProgressIcon as tS}from"@rango-dev/ui";import _c from"react";var oS=i(()=>{let{manager:t}=eS();return it(t).map(({swap:o})=>o).find(o=>o.status==="running")?_c.createElement(Lc,null,_c.createElement(tS,{color:"info",size:6})):null},"InProgressTransactionBadge"),$c=oS;import{EventSeverity as nS}from"@rango-dev/queue-manager-rango-preset";import{Typography as rS}from"@rango-dev/ui";import Fc from"react";function Oc(){let{getNotifications:t}=Ie(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===nS.WARNING);return o?Fc.createElement(Mc,{isSever:n},Fc.createElement(rS,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(Oc,"NotificationsBadge");import{RefreshProgressButton as iS}from"@rango-dev/ui";import Ma,{useEffect as aS,useState as Uc}from"react";var sS=1e3,Qc=60,lS=100;function Tr({onClick:t}){let[e,o]=Uc(0),[n,r]=Uc(!1),a=i(p=>{document.hidden&&p&&s(p)},"handleVisibilityChange");aS(()=>{let p;return t?p=window.setInterval(()=>{o(c=>c+1),e===Qc&&l()},sS):s(p),document.addEventListener("visibilitychange",()=>a(p)),()=>{document.removeEventListener("visibilitychange",()=>a(p)),p&&clearInterval(p)}},[e,t]);let s=i(p=>{p&&clearInterval(p),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return Ma.createElement(Tt,{variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},Ma.createElement(Bc,{onTransitionEnd:()=>r(!1),isRefetched:n},Ma.createElement(iS,{size:22,color:t?"black":"gray",progress:e/Qc*lS})))}i(Tr,"RefreshButton");function ao(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=h(),l=ot("notification",s)||r.includes("notifications");return Pe.createElement(Pe.Fragment,null,!r.includes("refresh")&&Pe.createElement(vr,{container:a||B(),side:"top",content:kr.t("Refresh")},Pe.createElement(Tr,{onClick:e})),!l&&Pe.createElement(cS,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:B(),content:Pe.createElement(Na,null)},Pe.createElement("div",null,Pe.createElement(vr,{container:B(),side:"top",content:kr.t("Notifications")},Pe.createElement(Tt,{size:"small",variant:"ghost"},Pe.createElement(pS,{size:18,color:"black"}),Pe.createElement(Oc,null))))),!r.includes("settings")&&Pe.createElement(vr,{container:B(),side:"top",content:kr.t("Settings")},Pe.createElement(Tt,{size:"small",variant:"ghost",onClick:n},Pe.createElement(uS,{size:18,color:"black"}))),!r.includes("history")&&Pe.createElement(vr,{container:B(),side:"top",content:kr.t("Transactions History")},Pe.createElement(Tt,{size:"small",variant:"ghost",onClick:o},Pe.createElement(mS,{size:18,color:"black"}),Pe.createElement($c,null))))}i(ao,"HeaderButtons");import{i18n as Ba}from"@lingui/core";import{Divider as qc,MessageBox as gS,RefreshIcon as hS}from"@rango-dev/ui";import No from"react";import{Button as dS,styled as fS}from"@rango-dev/ui";var zc=fS(dS,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function La(t){let{open:e,onClose:o}=t;return No.createElement(ne,{open:e,dismissible:!0,onClose:o,container:B()},No.createElement(gS,{title:Ba.t("Something went wrong"),type:"error",description:Ba.t("Something went wrong. Please refresh the app.")},No.createElement(qc,{size:30}),No.createElement(zc,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},No.createElement(hS,{size:20,color:"primary"}),No.createElement(qc,{size:4,direction:"horizontal"}),Ba.t("Refresh"))))}i(La,"RefreshModal");function Pa(t){let e=t.target;if(e){let o=e.scrollTop,n=B();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(Pa,"onScrollContentAttachStatusToContainer");import{css as yS,styled as Da}from"@rango-dev/ui";var Hc="700px",xr=yS({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Gc=Da("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:Hc},fixed:{height:Hc}}}}),Vc=Da("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Kc=Da("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}});function me(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=ga(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l}=h(),[p,c]=kS(!1),u=te.use.connectedWallets(),{config:{features:f,theme:d}}=h(),{watermark:m}=pe(),g=m==="FULL",{activeTheme:T}=yr(d||{}),S=ot("connectWalletButton",f),{isActiveTab:C,tabManagerInitiated:y,showActivateTabModal:k,setShowActivateTabModal:x,activateCurrentTab:b}=pe(),N=rt(),{manager:w}=SS(),E=it(w).map(({swap:oe})=>oe).some(oe=>oe.status==="running"),A=i(()=>b(eo.forceClaim,E),"onActivateTab"),L=i(()=>{r.onWallet?.()},"onConnectWallet"),q=typeof r.hasBackButton>"u"||r.hasBackButton,I=Xc(null),Q=Xc(null);return _a(()=>(hr()&&Q.current&&e(Q.current),()=>{o()}),[]),_a(()=>(I.current?.addEventListener("scroll",Pa),()=>{I.current?.removeEventListener("scroll",Pa)}),[]),_a(()=>{c(l==="failed")},[l]),we.createElement(Gc,{height:s,id:Ce.SWAP_BOX_ID,className:`${T()} ${xr()}`,ref:Q},we.createElement(TS,{prefix:we.createElement(we.Fragment,null,q&&we.createElement(Ea,{onClick:()=>{N(),r.onBack&&r.onBack()}})),title:r.title,suffix:we.createElement(we.Fragment,null,r.suffix,r.onWallet&&!S&&we.createElement(Wa,{container:B(),onClick:L,isConnected:!!u?.length}),r.onCancel&&we.createElement(Aa,{onClick:r.onCancel}))}),we.createElement(Vc,{ref:I},n),we.createElement(ba,{open:k,onClose:()=>x(!1),onConfirm:A}),we.createElement(Kc,null,we.createElement("div",{className:"footer__content"},y&&!C&&we.createElement("div",{className:"footer__alert"},we.createElement(xa,{onActivateTab:A}),we.createElement(jc,{size:10})),a),we.createElement(jc,{size:12}),we.createElement("div",{className:`footer__logo ${g?"logo__show":"logo__hidden"}`},we.createElement(CS,null))),we.createElement(La,{open:p,onClose:()=>c(!1)}))}i(me,"Layout");import{styled as vS}from"@rango-dev/ui";var Yc="$20 $20 $10 $20",Zo=vS("div",{padding:Yc,overflowY:"auto",flexGrow:1});import{styled as xS}from"@rango-dev/ui";var ye=xS("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as Lo}from"@lingui/core";import{Button as IS,Divider as Rc,Image as AS,MessageBox as WS,Select as NS,TextField as MS}from"@rango-dev/ui";import{namespaces as BS}from"@rango-dev/wallets-shared";import Ke,{useEffect as LS,useState as eu}from"react";import{keyframes as wS,styled as wr}from"@rango-dev/ui";var $M=wr("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Mo=wr("div",{position:"relative"}),bS=wS({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Bo=wr("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${bS} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),br=wr("div",{"& img":{borderRadius:"50%"}});import{styled as Zc,Typography as ES}from"@rango-dev/ui";var Jc=Zc("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),$a=Zc(ES,{paddingLeft:"$10"}),Fa={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"};var ou={id:"custom",label:"Custom",generateDerivationPath:t=>t};function tu(t){let e=t?BS[t].derivationPaths:null;return e?[...e,ou]:[]}i(tu,"getDerivationPaths");function so(t){let{onClose:e,onConfirm:o,selectedNamespace:n,image:r,type:a,open:s}=t,[l,p]=eu(null),[c,u]=eu("0"),f=l===ou.id,d=tu(n),m=i(({value:T})=>{let S=d?.find(C=>C.id===T);S&&p(S.id)},"handleDerivationPathItemClick"),g=i(()=>{let T=d.find(S=>S.id===l);if(T)o(T.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return LS(()=>{p(tu(n)[0]?.id||null)},[n]),Ke.createElement(ne,{open:s,onClose:e,container:document.getElementById(Ce.SWAP_BOX_ID)||document.body},Ke.createElement(Rc,{size:20}),Ke.createElement(WS,{type:"info",title:Lo.t("Select Derivation Path"),description:Lo.t(`In order to connect to ${a}, you must first select a Derivation Path`),icon:Ke.createElement(Mo,null,Ke.createElement(br,null,Ke.createElement(AS,{src:r,size:45})),Ke.createElement(Bo,null))}),Ke.createElement(Jc,null,Ke.createElement($a,{variant:"body",size:"xsmall",color:"$neutral600"},Lo.t("Choose Derivation Path Template")),Ke.createElement(NS,{value:l||"",options:d.map(T=>({value:T.id,label:T.label})),variant:"filled",handleItemClick:m,styles:{trigger:Fa}}),Ke.createElement(Rc,{size:20}),Ke.createElement($a,{variant:"body",size:"xsmall",color:"$neutral600"},f?Lo.t("Enter Path"):Lo.t("Enter Index")),Ke.createElement(MS,{type:f?"text":"number",variant:"contained",value:c,onChange:T=>u(T.target.value),style:Fa})),Ke.createElement(IS,{type:"primary",onClick:g,disabled:!d||!l||!c},Lo.t("Confirm")))}i(so,"WalletDerivationPathModal");import{Divider as _S}from"@rango-dev/ui";import Ua from"react";import{i18n as Po}from"@lingui/core";import{Image as PS,MessageBox as Oa,WalletState as DS}from"@rango-dev/ui";import lo from"react";function nu(t){let{state:e,image:o,error:n}=t;return e===DS.CONNECTED?lo.createElement(Oa,{type:"success",title:Po.t("Wallet Connected"),description:Po.t("Your wallet is connected, you can use it to swap.")}):n?lo.createElement(Oa,{type:"error",title:Po.t("Failed to Connect"),description:n||Po.t("Your wallet is not connected. Please try again.")}):lo.createElement(Oa,{type:"loading",title:Po.t("Connecting to your wallet"),description:Po.t("Click connect in your wallet popup."),icon:lo.createElement(Mo,null,lo.createElement(br,null,lo.createElement(PS,{src:o,size:45})),lo.createElement(Bo,null))})}i(nu,"ModalContent");function Jo(t){let{open:e,onClose:o,...n}=t;return Ua.createElement(ne,{open:e,onClose:o,container:document.getElementById(Ce.SWAP_BOX_ID)||document.body},Ua.createElement(nu,{...n}),Ua.createElement(_S,{direction:"vertical",size:32}))}i(Jo,"WalletModal");import{i18n as Qa}from"@lingui/core";import{Button as FS,Checkbox as OS,Divider as US,Image as iu,ListItemButton as QS,MessageBox as zS,Radio as qS,RadioRoot as HS}from"@rango-dev/ui";import{namespaces as au}from"@rango-dev/wallets-shared";import De,{useMemo as GS,useState as VS}from"react";import{styled as $S}from"@rango-dev/ui";var ru=$S("ul",{padding:0,paddingTop:"$4",paddingBottom:"$4"});var KS=i((t,e)=>t.find(o=>o.name===e)?.logo,"getBlockchainLogo");function po(t){let{singleNamespace:e,availableNamespaces:o}=t,[n,r]=VS([]),a=h().blockchains(),s=GS(()=>o?.map(c=>({name:c,logo:KS(a,au[c].mainBlockchain),title:au[c].title})),[o]),l=i(c=>{r(e?[c]:u=>u.includes(c)?u.filter(f=>f!==c):u.concat(c))},"onSelect"),p=i(c=>e?De.createElement(HS,{value:n?.[0]},c):De.createElement(De.Fragment,null,c),"wrapRadioRoot");return De.createElement(ne,{open:t.open,onClose:t.onClose,container:document.getElementById(Ce.SWAP_BOX_ID)||document.body},De.createElement(US,{size:20}),De.createElement(zS,{type:"info",title:Qa.t("Select chain types"),description:Qa.t("This wallet supports multiple chains. Select which chain you'd like to connect to."),icon:De.createElement(Mo,null,De.createElement(Cr,null,De.createElement(iu,{src:t.image,size:45})),De.createElement(Bo,null))}),De.createElement(ru,null,p(De.createElement(De.Fragment,null,s?.map(c=>De.createElement(QS,{key:c.name,id:c.name,title:c.title,hasDivider:!0,style:{height:60},onClick:()=>l(c.name),start:De.createElement(iu,{src:c.logo,size:22}),end:e?De.createElement(qS,{value:c.name}):De.createElement(OS,{checked:n.includes(c.name)})}))))),De.createElement(FS,{type:"primary",disabled:!n.length,onClick:()=>t.onConfirm(n)},Qa.t("Confirm")))}i(po,"WalletNamespacesModal");var RS=pu("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),eC=pu(ye,{textAlign:"center"}),Er=3e3,za=300;function cu(){let{fetchStatus:t}=h(),[e,o]=Ro("ALL"),n=h().blockchains(),{config:r}=h(),[a,s]=Ro(!1),[l,p]=Ro(null),[c,u]=Ro(null),[f,d]=Ro(""),m=null,g=pe.use.isActiveTab(),{list:T,handleClick:S,error:C,disconnectConnectingWallets:y}=no({onBeforeConnect:P=>{m=setTimeout(()=>{s(!0),d(P)},za)},onConnect:P=>{m&&clearTimeout(m),setTimeout(()=>{f===P&&s(!1)},Er)}}),k=i(()=>{y(),s(!1)},"handleCloseWalletModal"),x=i(()=>{l&&p({...l,open:!1})},"handleCloseNamespaceModal"),b=i(()=>{c&&u({...c,open:!1})},"handleCloseDerivationPathModal"),N=T.find(P=>P.type===f),w=N?.image||"",v=N?.state||lu.NOT_INSTALLED,E=tp(T,n),L=XS(E)!==1,q=op(T,e),I=i(P=>{Pn(T,r.multiWallets)||(P.namespaces?.length&&P.state===lu.DISCONNECTED?P.namespaces.length>1?p({open:!0,providerType:P.type,providerImage:P.image,availableNamespaces:P.namespaces,singleNamespace:P.singleNamespace}):P.needsDerivationPath?u({open:!0,providerType:P.type,providerImage:P.image,namespace:P.namespaces[0]}):S(P.type):S(P.type))},"handleWalletItemClick"),Q=i(P=>{let _=q.find(X=>X.type===l?.providerType);_?.singleNamespace&&_?.needsDerivationPath&&P[0]?u({open:!0,providerType:_.type,providerImage:_.image,namespace:P[0]}):S(l?.providerType,P.map(X=>({namespace:X}))),x()},"handleConfirmNamespaces"),oe=i(P=>{P&&c?.namespace&&S(c.providerType,[{namespace:c.namespace,derivationPath:P}]),b()},"handleDerivationPathConfirm");return at.createElement(me,{header:{title:su.t("Connect Wallets")}},at.createElement(eC,null,L&&at.createElement(at.Fragment,null,at.createElement(YS,{setCategory:o,category:e,blockchains:E,isLoading:t==="loading"}),at.createElement(jS,{size:24})),at.createElement(ZS,{variant:"title",size:"xmedium",align:"center"},su.t("Choose a wallet to connect.")),at.createElement(RS,null,q.map((P,_)=>{let X=`wallet-${_}-${P.type}`;return at.createElement(JS,{key:X,...P,container:B(),onClick:()=>I(P),isLoading:t==="loading",disabled:!g})}),at.createElement(Jo,{open:!!a,onClose:k,image:w,state:v,error:C}),at.createElement(po,{open:!!l?.open,onClose:x,onConfirm:Q,image:l?.providerImage,availableNamespaces:l?.availableNamespaces,singleNamespace:l?.singleNamespace}),at.createElement(so,{open:!!c?.open,selectedNamespace:c?.namespace,type:c?.providerType,image:c?.providerImage,onClose:b,onConfirm:oe}))))}i(cu,"WalletsPage");import{keyframes as tC,styled as qa}from"@rango-dev/ui";var uu=qa("div",{position:"relative"}),oC=tC({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),mu=qa("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${oC} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),du=qa("div",{"& img":{borderRadius:"50%"}});var aC=7;function Ga(t){let{chain:e,isSelected:o,selectWallet:n,limit:r,onShowMore:a,onConnect:s}=t,l=pe.use.isActiveTab(),p=te.use.connectedWallets(),{blockchains:c}=h(),[u,f]=co(""),[d,m]=co(null),[g,T]=co(!1),[S,C]=co(null),[y,k]=co(null),[x,b]=co(null),{suggestAndConnect:N}=Ar(),w=null,{list:v,error:E,handleClick:A,disconnectWallet:L,disconnectConnectingWallets:q}=no({chain:e,onBeforeConnect:W=>{w=setTimeout(()=>{f(W)},za)},onConnect:W=>{s?.(W),w&&clearTimeout(w),setTimeout(()=>{f("")},Er)}}),[I,Q]=co(v),oe=v.length,P=r&&oe-r>0,_=i(async W=>{T(!1),C("in-progress");try{await N(W.walletType,W.chain),C("completed")}catch{C("rejected")}},"addExperimentalChain"),X=i(()=>{y&&k({...y,open:!1})},"handleCloseNamespaceModal"),Se=i(()=>{x&&b({...x,open:!1})},"handleCloseDerivationPathModal"),Y=i(W=>{k({open:!0,providerType:W.type,providerImage:W.image,availableNamespaces:W.namespaces,singleNamespace:W.singleNamespace})},"handleOpenNamespacesModal"),ie=i(W=>{let ce=I.find(ue=>ue.type===y?.providerType);ce?.singleNamespace&&ce?.needsDerivationPath&&W[0]?b({open:!0,providerType:ce.type,providerImage:ce.image,namespace:W[0]}):A(y?.providerType,W.map(ue=>({namespace:ue}))),X()},"handleConfirmNamespaces"),he=i(W=>{W&&x?.namespace&&A(x.providerType,[{namespace:x.namespace,derivationPath:W}]),Se()},"handleDerivationPathConfirm");hu(()=>{Q(W=>{let ce=v.findIndex(ue=>o(ue.type,e));return P&&ce>1?[v[ce]].concat(v.filter((ue,$e)=>$e!==ce)):W.map(ue=>v.find($e=>$e.type===ue.type)??ue)})},[JSON.stringify(v)]);let Te=document.getElementById(Ce.SWAP_BOX_ID);hu(()=>{let W=null;return(S==="completed"||S==="rejected")&&(W=setTimeout(()=>C(null),Er)),()=>{W&&clearTimeout(W)}},[S]);let $=i(()=>{q(),f("")},"handleCloseWalletModal");return de.createElement(de.Fragment,null,I.slice(0,r).map(W=>{let ce=Jl({connectedWallets:p,walletType:W.type,chain:e}),ue=ce?qn(ce,aC):"",$e=Qn(c(),e),D=!p.find(le=>le.walletType===W.type&&le.chain===e),z=$e&&D&&W.state===gu.CONNECTED,K=z?mt.t({id:"Add {chain} chain",values:{chain:e}}):ue,se=i(async()=>{W.state===gu.DISCONNECTED?W.namespaces?.length?W.namespaces.length>1?Y(W):W.needsDerivationPath?b({open:!0,providerType:W.type,providerImage:W.image,namespace:W.namespaces[0]}):A(W.type):A(W.type):W.namespaces&&!ue?(await L(W.type),Y(W)):z?(m({walletType:W.type,chain:e,address:ce??""}),T(!0)):n({walletType:W.type,chain:e,address:ce??""})},"onSelectableWalletClick"),ee=d?.chain?Dn(d.chain,c()):void 0;return de.createElement(de.Fragment,{key:`${W.title}_${ee}`},de.createElement(Jo,{open:u===W.type,onClose:$,image:W.image,state:W.state,error:E}),de.createElement(po,{open:!!y?.open,onClose:X,onConfirm:ie,image:y?.providerImage,availableNamespaces:y?.availableNamespaces,singleNamespace:y?.singleNamespace}),de.createElement(so,{open:!!x?.open,selectedNamespace:x?.namespace,type:x?.providerType,image:x?.providerImage,onClose:Se,onConfirm:he}),!!d&&de.createElement(ne,{open:!!d&&g,container:Te,onClose:()=>{m(null)}},de.createElement(Ir,{title:mt.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:ee}}),type:"warning",description:mt.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:ee}})},de.createElement(Ha,{size:18}),de.createElement(Ha,{size:32}),de.createElement(nC,{onClick:_.bind(null,d),variant:"outlined",type:"primary",fullWidth:!0,size:"large"},mt.t("Confirm")))),S&&de.createElement(ne,{open:!!S,onClose:C.bind(null,null),container:Te},S==="in-progress"&&de.createElement(Ir,{type:"loading",title:mt.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:ee}}),description:mt.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:ee}}),icon:de.createElement(uu,null,de.createElement(du,null,de.createElement(rC,{src:W.image,size:45})),de.createElement(mu,null))}),S==="completed"&&de.createElement(Ir,{type:"success",title:mt.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:ee}}),description:mt.t({id:"{blockchainDisplayName} is added to your wallet, you can use it to swap.",values:{blockchainDisplayName:ee}})}),S==="rejected"&&de.createElement(Ir,{type:"error",title:mt.t("Request Rejected"),description:mt.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:ee}})}),de.createElement(Ha,{direction:"vertical",size:32})),de.createElement(iC,{key:W.type,description:K,onClick:se,selected:o(W.type,e),disabled:!l,...W}))}),P&&de.createElement(hc,{selected:!1,onClick:a},de.createElement(fu,{variant:"label",size:"medium"},mt.t("Show more wallets"),de.createElement(fu,{variant:"label",size:"medium",color:"$primary"},"\xA0+",oe-(r??0)))))}i(Ga,"WalletList");var dC=2;function Tu(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=mC(),l=h().blockchains(),{selectedQuote:p,setSelectedWallets:c,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:f,customDestination:d,setCustomDestination:m}=H(),{connectedWallets:g,selectWallets:T}=te(),{config:S}=h(),[C,y]=mo(""),[k,x]=mo([]),[b,N]=mo(""),[w,v]=mo(null),[E,A]=mo(!!d),L=uC(()=>Zt({filter:"all",quote:p}),[p]),q=Zt({filter:"required",quote:p}),I=l.find(D=>D.name===p?.swaps[p?.swaps.length-1].to.blockchain),Q=i(D=>q.includes(D),"isWalletRequiredFor"),oe=cC(()=>g.filter(D=>D.selected&&L.includes(D.chain)),[g,L]),[P,_]=mo(oe()),[X,Se]=mo([]),Y=i((D,z)=>Se(K=>K.concat({blockchain:D,walletType:z})),"addNextSelectedWallets"),ie=k.length>0,he=i((D,z)=>!!P.find(K=>K.walletType===D&&K.chain===z&&K.selected&&(Q(z)||!Q(z)&&!d)),"isSelected"),Te=i((D,z,K)=>{let se=!1;return D.map(ee=>{if(ee.chain===z){let le=ee.selected;return!se&&K?(se=!0,le=!0):K||(le=!1),{...ee,selected:le}}return ee})},"updateSelectableWallets"),$=i(D=>{A(D),D?Q(I?.name??"")||_(z=>Te(z,I?.name||"",!1)):(m(""),_(z=>Te(z,I?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),W=i(D=>{if(C&&y(""),he(D.walletType,D.chain))return;let K=g.find(se=>se.walletType===D.walletType&&se.chain===D.chain);K&&(n(),D.chain===I?.name&&E&&!Q(I.name)&&(A(!1),m(null)),_(se=>se.filter(ee=>ee.chain!==D.chain).concat({...K,selected:!0})))},"onChange"),ce=i(()=>{let D=P.filter(z=>z.selected);T(D),c(D),f(!0),o()},"onConfirmBalance"),ue=i(async()=>{x([]),N(""),v(null);let D=await r?.({selectedWallets:P.filter(K=>K.selected),customDestination:d}),z=D.warnings;z?.balance?.messages&&x(z.balance.messages),z?.quoteUpdate&&v(z.quoteUpdate),D.error&&N(Np(D.error)),!D.error&&!z?.balance?.messages.length?ce():x(z?.balance?.messages??[])},"onConfirmWallets");Cu(()=>{_(D=>{let z=[];return D.forEach(K=>{!g.some(ee=>ee.chain===K.chain&&ee.walletType===K.walletType&&ee.address===K.address)||z.push(K)}),z=z.concat(g.filter(K=>!!!z.find(ee=>ee.chain===K.chain)&&K.selected&&L.includes(K.chain))),z})},[g,L]),Cu(()=>{let D=[];X.length>0&&(X.forEach(z=>{let K=g.find(se=>se.chain===z.blockchain&&se.walletType===z.walletType);K?W(K):D.push(z)}),Se(D))},[g,X]);let $e=document.getElementById(Ce.SWAP_BOX_ID);return J.createElement(ne,{open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!C,container:$e,...!C&&{styles:{container:{height:"100%"}},footer:J.createElement(kc,null,J.createElement(Su,{loading:a,disabled:jp(a,E,d,p,P,I),onClick:ue,variant:"contained",type:"primary",fullWidth:!0,size:"large"},uo.t("Confirm")))},...C&&{styles:{container:{height:"100%",padding:"$0"}},header:J.createElement(yc,null,J.createElement(Sc,{variant:"ghost",onClick:y.bind(null,"")},J.createElement(lC,{size:16})),J.createElement(Va,{variant:"headline",size:"small"},uo.t({id:"Your {blockchainName} wallets",values:{blockchainName:tt(C,l)}})))},anchor:"center"},J.createElement(ne,{open:ie,onClose:x.bind(null,[]),container:$e},J.createElement(pC,{title:uo.t("Insufficient account balance"),type:"error",description:J.createElement(sC,{messages:k??[]})},J.createElement(Su,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:ce},uo.t("Proceed anyway")))),C&&J.createElement(Cc,null,J.createElement("div",{className:Tc()},J.createElement(Ga,{chain:C,isSelected:he,selectWallet:W,onShowMore:()=>y(C),onConnect:D=>{Y(C,D)}}))),!C&&J.createElement(J.Fragment,null,b&&J.createElement(J.Fragment,null,J.createElement(yu,{variant:"alarm",type:"error",title:uo.t(b)}),J.createElement(Wr,{size:12})),w&&J.createElement(J.Fragment,null,J.createElement(yu,{variant:"alarm",type:"warning",title:cr(w)}),J.createElement(Wr,{size:12})),J.createElement(vc,null,L.map((D,z)=>{let K=l.find(Ee=>Ee.name===D),se=`wallet-${z}`,ee=z===L.length-1,le=ee&&I&&S?.customDestination!==!1;return J.createElement("div",{key:se},J.createElement(fc,null,J.createElement(Va,{variant:"title",size:"xmedium"},uo.t({id:"Your {blockchainName} wallets",values:{blockchainName:K?.shortName}})),J.createElement(Va,{variant:"label",color:"$neutral700",size:"medium"},uo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:K?.shortName}}))),J.createElement(Wr,{size:24}),J.createElement(gc,null,J.createElement(Ga,{chain:D,isSelected:he,selectWallet:W,limit:dC,onShowMore:()=>y(K?.name??""),onConnect:Ee=>{Y(D,Ee)}})),!ee&&J.createElement(Wr,{size:32}),le&&J.createElement(dc,{blockchain:I,open:E,handleOpenChange:$}))}))))}i(Tu,"ConfirmWalletsModal");import{i18n as BC}from"@lingui/core";import{Alert as LC,Button as PC,InfoIcon as DC}from"@rango-dev/ui";import Ze from"react";import{Alert as hC,Button as yC,Divider as Xa,NoRouteIcon as SC,RefreshIcon as CC,Typography as Iu}from"@rango-dev/ui";import Ye from"react";import{i18n as ku}from"@lingui/core";var fC=24,gC=60;function vu(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:re().genericServerError,action:{onClick:n,title:ku.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:re().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:ku.t("Reset")}},description:re().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:re().noResultError.description}}i(vu,"makeInfo");var Ka=(o=>(o[o.small=fC]="small",o[o.large=gC]="large",o))(Ka||{}),ja=(o=>(o.small="small",o.large="medium",o))(ja||{});import{styled as Nr}from"@rango-dev/ui";var xu=Nr("div",{display:"flex",flexDirection:"column",alignItems:"center"}),wu=Nr("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),bu=Nr("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Eu=Nr("div",{padding:"$6 $0"});function en(t){let{fetch:e,error:o,size:n="small"}=t,r=h().getDisabledLiquiditySources(),a=h().toggleAllLiquiditySources,s=h().swappers(),l=vu(o,r,()=>a(s,!0),e);return Ye.createElement(xu,null,Ye.createElement(SC,{size:Ka[n],color:"gray"}),Ye.createElement(Xa,{size:4}),Ye.createElement(Iu,{variant:"title",size:ja[n]},re().noResultError.title),n==="large"&&Ye.createElement(Xa,{size:4}),!!l.description&&Ye.createElement(wu,{size:n},Ye.createElement(Iu,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),Ye.createElement(Xa,{size:n==="large"?"24":"4"}),!!l.alert&&Ye.createElement(bu,{size:n},Ye.createElement(hC,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&Ye.createElement(yC,{size:"xsmall",type:l.alert.type,prefix:Ye.createElement(Eu,null,Ye.createElement(CC,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(en,"NoResult");import{i18n as tn}from"@lingui/core";import{Button as kC,Divider as vC,MessageBox as xC,Typography as wC,WarningIcon as bC}from"@rango-dev/ui";import Wt from"react";import{Typography as Mu}from"@rango-dev/ui";import Za from"react";import{darkTheme as TC,styled as Mr}from"@rango-dev/ui";var Au=Mr("div",{width:"100%"}),Ya=Mr("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Wu=Mr("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${TC} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Nu=Mr("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function Bu(t){let{title:e,value:o,valueColor:n}=t;return Za.createElement(Wu,null,Za.createElement(Mu,{size:"medium",variant:"label",className:"_title"},e),Za.createElement(Mu,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(Bu,"QuoteErrorsModalItem");function Lu(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:tn.t("Swapping"),value:M(r.inputUsdValue,4,4)},{title:tn.t("Gas cost"),value:M(r.totalFee,2,2)},{title:tn.t("Receiving"),value:M(r.outputUsdValue,4,4)},{title:tn.t("Price impact"),value:M(r.priceImpact,2,2),valueColor:`${s}500`}];return Wt.createElement(ne,{footer:Wt.createElement(kC,{type:"primary",size:"large",prefix:Wt.createElement(bC,null),fullWidth:!0,disabled:a,onClick:n},re().highValueLossError.confirmMessage),open:e,onClose:o,container:B()},Wt.createElement(xC,{type:s,title:re().highValueLossError.impactTitle,description:re().highValueLossError.description}),Wt.createElement(Ya,null,Wt.createElement(vC,{size:"4"}),Wt.createElement(wC,{size:"small",variant:"title"},tn.t("Details")),Wt.createElement(Ya,null,l.map((p,c)=>Wt.createElement(Bu,{key:c,...p})))))}i(Lu,"HighValueLossWarningModal");import{i18n as Ja}from"@lingui/core";function Pu(t,e){let o={alertType:"warning",title:"",action:null};return e?(o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=Ja.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o):t?(t.type===0&&(It(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=re().highValueLossError.title),t.type===1&&(o.title=re().unknownPriceError.title),t.type===2&&(o.title=Ja.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=Ja.t("Caution, your slippage is high."),o.action="change-settings"),o):null}i(Pu,"makeAlerts");import{i18n as Do}from"@lingui/core";import{Button as Du,Divider as _u,MessageBox as EC,Typography as IC}from"@rango-dev/ui";import fo from"react";import{useNavigate as AC}from"react-router-dom";function $u(t){let{customSlippage:e,slippage:o}=h(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,p=AC(),c=e??o;return fo.createElement(ne,{anchor:"bottom",open:n,prefix:fo.createElement(Du,{size:"small",variant:"ghost",onClick:()=>p("../"+G.settings)},fo.createElement(IC,{variant:"label",size:"medium",color:"$neutral900"},Do.t("Change settings"))),container:B(),onClose:r},fo.createElement(EC,{type:"warning",title:s.type===3?Do.t("High slippage"):Do.t("Low slippage"),description:s.type===3?Do.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:c}}):Do.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:s.minRequiredSlippage}})},fo.createElement(_u,{size:18}),fo.createElement(_u,{size:32}),fo.createElement(Du,{size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:l,onClick:a},Do.t("Confirm anyway"))))}i($u,"SlippageWarningModal");import{Button as WC,MessageBox as NC,WarningIcon as MC}from"@rango-dev/ui";import Br from"react";function Fu(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Br.createElement(ne,{footer:Br.createElement(WC,{type:"primary",size:"large",prefix:Br.createElement(MC,null),fullWidth:!0,disabled:r,onClick:n},re().unknownPriceError.confirmMessage),open:e,onClose:o,container:B()},Br.createElement(NC,{type:"warning",title:re().unknownPriceError.impactTitle,description:re().unknownPriceError.description}))}i(Fu,"UnknownPriceWarningModal");function on(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,refetchQuote:s,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:c,onChangeSettings:u}=t,f={confirmationDisabled:a,open:r,onClose:p,onConfirm:c},d=o?.type===0||o?.type===1,m=Pu(e,o?.type===3||o?.type===4?o:null);return m&&!n&&(m.action=null),Ze.createElement(Ze.Fragment,null,d&&Ze.createElement(en,{error:o,fetch:s}),!!m&&Ze.createElement(Au,null,Ze.createElement(LC,{title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Ze.createElement(Nu,{onClick:l},Ze.createElement(DC,{size:12,color:"gray"}))},...m.action==="change-settings"&&{action:Ze.createElement(PC,{size:"xxsmall",type:m.alertType,onClick:u},BC.t("Change"))}})),e&&Ze.createElement(Ze.Fragment,null,e.type===0&&Ze.createElement(Lu,{...f,warning:e}),(e.type===3||e.type===2)&&Ze.createElement($u,{...f,warning:e}),e.type===1&&Ze.createElement(Fu,{...f,warning:e})))}i(on,"QuoteWarningsAndErrors");import mT from"bignumber.js";import Vr from"react";import{i18n as go}from"@lingui/core";import{Alert as RC,Divider as $o,FullExpandedQuote as eT,InfoIcon as tT,NumericTooltip as ym,QuoteTag as oT,StepDetails as nT,TokenAmount as rT,Typography as Fo}from"@rango-dev/ui";import as from"bignumber.js";import F,{useRef as iT,useState as aT}from"react";import{styled as Ra}from"@rango-dev/ui";var es=Ra("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Ou=Ra("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Uu=Ra("div",{width:"100%",display:"flex"});import*as Lr from"@radix-ui/react-collapsible";import{Button as _C,css as nn,darkTheme as Ae,Image as Qu,styled as ze,Typography as $C}from"@rango-dev/ui";var FC=300,zu=ze(Lr.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Ae} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Ae} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Ae} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),qu=nn({padding:"$10 $15"}),Hu=ze(_C,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${Ae} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${Ae} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${Ae} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),Gu=ze("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${Ae} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${Ae} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${Ae} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${Ae} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${Ae} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${Ae} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${Ae} &`]:{backgroundColor:"$neutral400"}}}}]}),Vu=nn({width:"100%",padding:"$15 $15 $10 $15"}),Ku=nn({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),_o=nn({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),ju=nn({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${Ae} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Xu=ze(Lr.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:{[`& ${Qu}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Qu}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Ae} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Ae} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Ae} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Yu=ze("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),Zu=ze(mr,{width:"100%",background:"inherit"}),ts=ze("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${FC}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),tD=ze("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),Ju=ze("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${Ae} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Ru=ze("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),os=ze($C,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),em=ze("div",{display:"flex",flexWrap:"wrap"}),ns=ze("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),tm=ze("div",{display:"flex"}),Pr=ze("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${Ae} &`]:{borderTopColor:"$neutral800"}});import{i18n as kt}from"@lingui/core";import{ChevronDownIcon as UC,CloseIcon as QC,Divider as $r,IconButton as zC,NumericTooltip as qC,QuoteCost as HC,Typography as dt}from"@rango-dev/ui";import R,{useState as im}from"react";import{css as OC,styled as Dr}from"@rango-dev/ui";var _r=Dr("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),rs=Dr("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),om=Dr("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),nm=Dr("div",{padding:"$20 $20 $10",textAlign:"center",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),rm=OC({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var GC=i(t=>t.fee.isZero()?null:R.createElement(_r,null,R.createElement(dt,{variant:"label",size:"medium",color:"neutral600"},t.label),R.createElement(dt,{variant:"label",size:"medium"},"$",M(t.fee,4,4))),"NonPayableFee");function am(t){let[e,o]=im(!1),[n,r]=im(!1),{steps:a,quote:s,fee:l,time:p,feeWarning:c,showModalFee:u}=t,f=s?.swaps??[],d=B(),m=_p(f);return R.createElement(R.Fragment,null,R.createElement(HC,{onClickFee:u?g=>{g.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:c,time:p,steps:a,tooltipGas:u?kt.t("View more info"):void 0,tooltipContainer:d}),R.createElement(ne,{container:d,open:e,header:R.createElement(nm,null,R.createElement(dt,{variant:"title",size:"medium"},kt.t("Gas & Fee Explanation")),R.createElement(zC,{onClick:()=>o(!1),variant:"ghost"},R.createElement(QC,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(om,null,R.createElement(dt,{variant:"title",size:"small"},kt.t("Details")),R.createElement($r,{size:10}),Object.entries(m.payable).flatMap(([g,T])=>T.map((S,C)=>{let y=`payable-fee-${C}`,k=ta(S);return R.createElement(_r,{key:y},R.createElement(dt,{variant:"label",size:"medium",color:"neutral600"},Zi(g,kt.t)),R.createElement(qC,{content:S.amount,container:d},R.createElement(dt,{variant:"label",size:"medium"},M(S.amount,2,2)," ",S.asset.symbol," ($",M(k,4,4),")")))})),R.createElement(_r,{className:"total_payable_fee"},R.createElement(dt,{variant:"label",size:"medium"},kt.t("Total Payable Fee")),R.createElement(dt,{variant:"label",size:"medium"},"$",M(l,4,4))),R.createElement(rs,null),Object.keys(m.nonePayable).length&&R.createElement(gr,{triggerAnchor:"bottom",onClickTrigger:()=>r(g=>!g),trigger:R.createElement("div",{className:rm()},R.createElement(dt,{size:"small",variant:"body",color:"neutral700"},n?kt.t("Hide non-payable fees"):kt.t("Show non-payable fees")),R.createElement($r,{size:4,direction:"horizontal"}),R.createElement(dr,{orientation:n?"up":"down"},R.createElement(UC,{size:12,color:"gray"}))),open:n},R.createElement(dt,{size:"small",variant:"title"},kt.t("Description")),R.createElement($r,{size:4}),R.createElement(dt,{size:"small",variant:"body",color:"neutral700"},kt.t(`The following fees are considered in the transaction output and
2
+ you won\u2019t need to pay extra gas for them.`)),R.createElement($r,{size:10}),Object.entries(m.nonePayable).map(([g,T],S)=>{let C=Dp(T),y=Zi(g,kt.t),k=`non-payable-fee-${S}`;return R.createElement(GC,{key:k,fee:C,label:y})}),R.createElement(rs,null)))))}i(am,"QuoteCostDetails");import{i18n as pm}from"@lingui/core";import{TokenAmount as cm}from"@rango-dev/ui";import Fr from"react";import{css as VC,styled as KC}from"@rango-dev/ui";var sm=KC("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),lm=VC({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function rn(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Fr.createElement(sm,null,Fr.createElement(cm,{direction:"horizontal",label:pm.t("Swap input"),type:"input",tooltipContainer:B(),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}}),Fr.createElement("div",{className:lm()}),Fr.createElement(cm,{direction:"horizontal",tooltipContainer:B(),label:pm.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(rn,"QuoteSummary");import{i18n as gm}from"@lingui/core";import{ChevronDownIcon as YC,ChevronRightIcon as ZC,Divider as is,Image as JC,Tooltip as qr,Typography as Ur}from"@rango-dev/ui";import O from"react";import{useLayoutEffect as jC,useState as an}from"react";var um=480,mm=768,dm=1024,fm=1200,XC=i(()=>{let[t,e]=an(!1),[o,n]=an(!1),[r,a]=an(!1),[s,l]=an(!1),[p,c]=an(!1),u=i(()=>{e(window.innerWidth<=um),n(window.innerWidth>um&&window.innerWidth<=mm),a(window.innerWidth>mm&&window.innerWidth<=dm),l(window.innerWidth>dm&&window.innerWidth<=fm),c(window.innerWidth>fm)},"handleResize");return jC(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:p}},"useScreenDetect"),Or=XC;var Qr=4,zr=6,sn=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||B();return O.createElement(qr,{container:l,side:"bottom",sideOffset:4,open:r,content:e},O.createElement(Yu,{className:n,state:a},O.createElement(JC,{src:o,size:16})))},"ImageComponent");function hm(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,p=l||B(),c=r.length,u=Rp(r),{isTablet:f,isMobile:d}=Or();return O.createElement(Xu,{listItem:s==="list-item",ref:m=>e.current=m,selected:o,onClick:m=>{m.stopPropagation(),n(g=>!g)}},O.createElement("div",{className:_o()},O.createElement(Ur,{variant:"body",size:"xsmall"},gm.t("Via:")),O.createElement(is,{direction:"horizontal",size:4}),r.map((m,g)=>{let T=`item-${g}`,S=O.createElement(ts,null,O.createElement(ZC,{size:12,color:"black"}));return d||f?O.createElement(O.Fragment,{key:T},O.createElement(sn,{content:m.swapper.displayName,src:m.swapper.image,state:m.state,container:l}),g!==c-1&&O.createElement(O.Fragment,null,S)):O.createElement(O.Fragment,{key:T},c<=Qr||c>Qr&&g<Qr-1?O.createElement(O.Fragment,null,O.createElement(sn,{content:m.swapper.displayName,src:m.swapper.image,state:m.state,container:l}),g!==c-1&&O.createElement(O.Fragment,null,S)):g===Qr-1&&O.createElement(qr,{container:p,side:"bottom",align:"end",sideOffset:4,content:O.createElement("div",{className:_o()},S,r.map((C,y)=>{let k=`image-${y}`;return y>=g&&O.createElement(O.Fragment,{key:k},O.createElement(sn,{content:C.swapper.displayName,src:C.swapper.image,state:C.state,open:!1}),y!==c-1&&O.createElement(O.Fragment,null,S))}))},O.createElement(ns,{state:r.find((C,y)=>y>=g&&(C.state==="error"||C.state==="warning"))?.state},O.createElement(Ur,{size:"xsmall",variant:"body"},"+",c-g))))})),O.createElement("div",{className:_o()},O.createElement("div",{className:"blockchains_section"},O.createElement("div",{className:_o()},O.createElement(Ur,{variant:"body",size:"xsmall"},gm.t("Chains:")),O.createElement(is,{direction:"horizontal",size:4}),u.map((m,g)=>O.createElement(O.Fragment,{key:m.displayName},u.length<=zr||u.length>zr&&g<zr-1?O.createElement(qr,{container:p,side:"bottom",content:m.displayName,sideOffset:4},O.createElement(sn,{content:"",src:m.image,open:!1,className:g!==0?"blockchainImage":""})):g===zr-1&&O.createElement(qr,{container:p,side:"bottom",align:"end",sideOffset:4,content:O.createElement("div",{className:_o()},u.map((T,S)=>S>=g&&O.createElement(sn,{key:T.displayName,content:"",src:T.image,open:!1,className:S>g?"blockchainImage":"",container:l})))},O.createElement(ns,{className:"blockchainImage"},O.createElement(Ur,{size:"xsmall",variant:"body"},"+",u.length-g))))),O.createElement(is,{direction:"horizontal",size:32}))),O.createElement(ts,{orientation:a?"up":"down"},O.createElement(YC,{size:12,color:"black"}))))}i(hm,"QuoteTrigger");function ss(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:p=!0,showModalFee:c=!0,onClickAllRoutes:u,fullExpandedMode:f=!1,container:d}=t,m=h().blockchains(),{findToken:g}=h(),T=h().swappers(),{customSlippage:S,slippage:C}=h(),y=S||C,[k,x]=aT(t.expanded),b=iT(null),N=M(o.value,6,6),w=M(n.value,6,6),v=n.usdValue?M(n.usdValue,4,4):"",E=nt(o.usdValue,n.usdValue??null),A=M(E,2,2),L=It(E??0),q=i((he,Te)=>he.map(($,W)=>{let ce,ue=r?.type===3&&r.swap.swapperId===$.swapperId,$e=r?.type===4&&r.recommendedSlippages?.has(W),D=a?.type===2&&a.recommendedSlippages?.has(W),z=ue||$e,K=D;z?ce="error":K&&(ce="warning");let se=z?go.t("Slippage Error"):go.t("Slippage Warning");return ue&&(se=go.t("Bridge Limit Error")),{swapper:{displayName:Go($.swapperId,T)??"",image:$.swapperLogo},from:{token:{displayName:$.from.symbol,image:$.from.logo},chain:{displayName:tt($.from.blockchain,m)??"",image:$.from.blockchainLogo},price:{value:W===0&&!Te?M(o.value,6,6):M($.fromAmount,6,6),usdValue:M(($.from.usdPrice??0)*parseFloat($.fromAmount),4,4),realValue:W===0?o.value:$.fromAmount,realUsdValue:new as($.from.usdPrice??0).multipliedBy($.fromAmount).toString()}},to:{token:{displayName:$.to.symbol,image:$.to.logo},chain:{displayName:tt($.to.blockchain,m)||"",image:$.to.blockchainLogo},price:{value:M($.toAmount,6,6),usdValue:M(($.to.usdPrice??0)*parseFloat($.toAmount),4,4),realValue:$.toAmount,realUsdValue:new as($.to.usdPrice??0).multipliedBy($.toAmount).toString()}},state:ce,alerts:z||K?F.createElement(Ou,{dense:f},F.createElement(RC,{variant:"alarm",type:z?"error":"warning",title:se,footer:F.createElement(Uu,null,ue&&F.createElement("div",null,F.createElement(Fo,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),F.createElement($o,{direction:"vertical",size:2}),F.createElement(Fo,{size:"xsmall",variant:"body",color:"neutral900"},go.t({id:"Yours: {amount} {symbol}",values:{amount:M($.fromAmount,6,6),symbol:$?.from.symbol}}))),($e||D)&&!ue&&F.createElement("div",null,F.createElement(Fo,{size:"xsmall",variant:"body",color:"neutral900"},go.t({id:"Minimum required slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(W)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(W)}}})),F.createElement($o,{direction:"vertical",size:2}),F.createElement(Fo,{size:"xsmall",variant:"body",color:"neutral900"},go.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Vo($.estimatedTimeInSeconds),fee:M(ea($,g),2,2),internalSwaps:$.internalSwaps?q($.internalSwaps):void 0}}),"getQuoteSteps"),I=q(e?.swaps??[]),Q=I.length,oe=d||B(),P=tc(t.quote.tags||[]),_=!!u,X=Vo(_n(e?.swaps)),Se=tr(e?.swaps??[],g),Y=M(Se,2,2),ie=Se.gte(new as(Wp));return f?F.createElement(eT,{selected:l,fee:Y,time:X,tooltipContainer:Ho(),steps:I,tags:P,feeWarning:ie,percentageChange:A,warningLevel:L,outputPrice:{value:w,usdValue:v,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(Gu,{selected:l,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:Vu()},!p&&P.length?F.createElement(F.Fragment,null,F.createElement(tm,null,P.map((he,Te)=>{let $=`${he.value}_${Te}`;return F.createElement(F.Fragment,{key:$},F.createElement(oT,{label:he.label,value:he.value}),F.createElement($o,{size:4,direction:"horizontal"}))})),F.createElement(Pr,null),!_&&F.createElement($o,{size:4})):null,F.createElement("div",{id:"portal-root",className:Ku()},F.createElement(am,{quote:e,time:X,fee:Y,feeWarning:ie,showModalFee:c,steps:Q}),_&&F.createElement(Hu,{onClick:he=>{he.stopPropagation(),u()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Fo,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},go.t("See All Routes")))),s==="basic"&&F.createElement("div",{className:ju()},F.createElement(Ru,null,F.createElement(tT,{size:12,color:"gray"})),F.createElement(em,null,F.createElement(os,{size:"small",variant:"body"},`${N} ${I[0].from.token.displayName} = `),F.createElement(ym,{content:n.value,container:oe,open:n.value?void 0:!1},F.createElement(os,{size:"small",variant:"body"},"\xA0",`${w} ${I[I.length-1].to.token.displayName}`))),F.createElement(ym,{content:n.usdValue,container:oe},F.createElement($o,{size:2,direction:"horizontal"}),F.createElement(Fo,{color:"$neutral600",size:"xsmall",variant:"body"},`($${v})`))),s==="list-item"&&F.createElement(rT,{tooltipContainer:oe,type:"output",direction:"vertical",price:{value:w,usdValue:v,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:I[Q-1].to.token.displayName,image:I[Q-1].to.token.image},chain:{image:I[Q-1].to.chain.image},percentageChange:A,warningLevel:L}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(rn,{from:I[0].from,to:I[Q-1].to,percentageChange:A,warningLevel:L}),F.createElement($o,{size:4}))),F.createElement(zu,{selected:l,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:x},F.createElement(hm,{type:s,quoteRef:b,selected:l,setExpanded:x,container:oe,expanded:k,steps:I}),F.createElement(Zu,{open:k},F.createElement(Ju,null),F.createElement("div",{className:qu()},I.map((he,Te)=>{let $=`item-${Te}`;return F.createElement(nT,{type:"quote-details",key:$,tooltipContainer:oe,step:he,hasSeparator:Te!==I.length-1,state:he.state})})))))}i(ss,"Quote");import{Divider as cT,Skeleton as uT}from"@rango-dev/ui";import Mt from"react";import{darkTheme as sT,styled as Hr}from"@rango-dev/ui";var Sm=Hr("div",{$$color:"$colors$neutral100",[`.${sT} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Cm=Hr("div",{paddingTop:"$2"}),Tm=Hr("div",{paddingLeft:"$8"}),km=Hr("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as Mm,Divider as ft,Skeleton as Je}from"@rango-dev/ui";import V from"react";import{css as lT,styled as Nt}from"@rango-dev/ui";var ls=Nt("div",{display:"flex"}),vm=Nt("div",{padding:"$10 $0 $20"}),xm=Nt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),wm=Nt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),bm=Nt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Em=Nt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Im=Nt("div",{width:"65%",display:"flex",justifyContent:"start"}),Am=Nt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Wm=Nt("div",{padding:"$15 $0 $15 $0"}),Nm=lT({display:"flex",justifyContent:"space-between",alignItems:"center"});function ln(t){let{type:e,tagHidden:o=!0}=t,n=V.createElement(bm,null,V.createElement(Im,null,V.createElement(Mm,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),V.createElement(ft,{size:8,direction:"horizontal"}),V.createElement(Am,null,V.createElement(Je,{height:10,width:60,variant:"rounded"}),V.createElement(ft,{size:4}),V.createElement(Je,{height:15,variant:"rounded"}))),V.createElement(Je,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return V.createElement("div",null,!o&&V.createElement(V.Fragment,null,V.createElement(ls,null,V.createElement(Je,{width:65,height:20,variant:"rounded"}),V.createElement(ft,{size:4,direction:"horizontal"}),V.createElement(Je,{width:65,height:20,variant:"rounded"}),V.createElement(ft,{size:4,direction:"horizontal"}),V.createElement(Je,{width:65,height:20,variant:"rounded"})),V.createElement(Pr,null),!r&&V.createElement(ft,{size:4})),V.createElement("div",{className:Nm()},V.createElement(ls,null,V.createElement(Je,{width:60,height:10,variant:"rounded"}),V.createElement(ft,{size:4,direction:"horizontal"}),V.createElement(Je,{width:60,height:10,variant:"rounded"}),V.createElement(ft,{size:4,direction:"horizontal"}),V.createElement(Je,{width:60,height:10,variant:"rounded"})),r&&V.createElement(Je,{width:85,height:24,variant:"rounded"})),e==="basic"&&V.createElement(vm,null,V.createElement(Je,{height:15,width:148,variant:"rounded"})),e==="list-item"&&V.createElement(xm,null,V.createElement(wm,null,V.createElement(Mm,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),V.createElement(ft,{direction:"horizontal",size:4}),V.createElement(Je,{height:15,width:150,variant:"rounded"})),V.createElement(ft,{size:10}),V.createElement(Je,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&V.createElement(V.Fragment,null,V.createElement(ft,{size:4}),V.createElement(Wm,null,n,V.createElement(Em,null),n),V.createElement(ft,{size:12})))}i(ln,"QuoteSummarySkeleton");import{ChainToken as _m,Divider as cs,NextIcon as pT,Skeleton as Gr}from"@rango-dev/ui";import We from"react";import{styled as pn}from"@rango-dev/ui";var Bm=pn("div",{display:"flex",alignItems:"start"}),Lm=pn("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),ps=pn("div",{display:"flex",alignItems:"center",flexGrow:1}),Pm=pn("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Dm=pn("div",{display:"flex",alignItems:"center"});function vt(t){let{separator:e=!0}=t;return We.createElement(We.Fragment,null,We.createElement(Dm,null,We.createElement(Gr,{height:22,width:22,variant:"circular"}),We.createElement(cs,{direction:"horizontal",size:8}),We.createElement(Gr,{height:15,width:148,variant:"rounded"})),We.createElement(Bm,null,We.createElement(km,{hideSeparator:!e}),We.createElement(Lm,{extraSpace:e},We.createElement(ps,null,We.createElement(_m,{size:"small",loading:!0,chainImage:"",tokenImage:""}),We.createElement(cs,{direction:"horizontal",size:8}),We.createElement(Gr,{height:12,variant:"rounded"})),We.createElement(Pm,null,We.createElement(pT,{color:"gray",size:16})),We.createElement(ps,null,We.createElement(_m,{size:"small",loading:!0,chainImage:"",tokenImage:""}),We.createElement(cs,{direction:"horizontal",size:8}),We.createElement(Gr,{height:12,variant:"rounded"})))))}i(vt,"StepSkeleton");function cn(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Mt.createElement(Sm,{expanded:o,rounded:e!=="basic"},Mt.createElement(ln,{type:e,tagHidden:n}),Mt.createElement(Cm,null,Mt.createElement(uT,{height:15,variant:"rounded"})),o&&Mt.createElement(Tm,null,Mt.createElement(cT,{size:24}),Mt.createElement(vt,null),Mt.createElement(vt,null),Mt.createElement(vt,{separator:!1})))}i(cn,"QuoteSkeleton");function ho(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:p,showModalFee:c,selected:u,onClickAllRoutes:f,fullExpandedMode:d=!1,container:m}=t,{inputAmount:g,inputUsdValue:T,toToken:S}=H(),C=e?.outputAmount?new mT(e?.outputAmount):null,y=e?.outputAmount?nr(e?.outputAmount,ir(e)||S?.usdPrice):null,x=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?Vr.createElement(es,null,Vr.createElement(cn,{tagHidden:l,type:o,expanded:s})):x?Vr.createElement(es,{onClick:()=>p?.(e)},Vr.createElement(ss,{quote:e,error:r,container:m,showModalFee:c,warning:a,tagHidden:l,selected:u,type:o,expanded:s,onClickAllRoutes:f,fullExpandedMode:d,input:{value:g,usdValue:T?.toString()??""},output:{value:C?.toString()??"",usdValue:y?.toString()??""}})):null}i(ho,"QuoteInfo");import{calculatePendingSwap as hT}from"@rango-dev/queue-manager-rango-preset";import{useEffect as yT}from"react";import{useRef as dT,useState as fT}from"react";var gT=2e3;function Kr({request:t}){let[e,o]=fT(!1),n=dT(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(p=>setTimeout(p,gT)),await s(l,!1)),"retryFetch"),s=i(async(l,p=!1)=>{r(),n.current=new AbortController,o(!0);try{let c=await t(l,{signal:n.current.signal});return n.current=null,c}catch(c){if(p)return await a(l);throw c}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(Kr,"useFetch");function $m(){let{fetch:t,loading:e,cancelFetch:o}=Kr({request:async(n,r)=>await $t().confirmRouteRequest(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i($m,"useFetchConfirmQuote");function jr(t){if(!t.swaps)throw new Error(re().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=us(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(jr,"throwErrorIfResponseIsNotValid");function us(t){if(Bp(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Lp(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=$p(t);if(o){let n=or(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(us,"getQuoteError");function Fm(t,e,o){let n=!1;t&&(n=Jp(t,e));let r={quote:null,quoteUpdate:null,balance:null},a=Eo(e,{fromToken:o.fromToken,toToken:o.toToken,findToken:o.findToken,userSlippage:o.userSlippage});a&&(r.quote=a),t&&n&&(qp(t,e)?r.quoteUpdate={type:3,newOutputAmount:M(bo(e)),percentageChange:M(nt(bo(t)??"",bo(e)??""),null,2)}:oa(t,e)?r.quoteUpdate={type:0}:na(t,e)?r.quoteUpdate={type:1}:ra(t,e)&&(r.quoteUpdate={type:2}));let s=Hp(e,o.selectedWallets,o.meta.blockchains);return s.length===0||(r.balance={messages:s}),r}i(Fm,"generateWarnings");function Xr(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(Xr,"handleQuoteErrors");function ms(){let{fromToken:t,toToken:e,inputAmount:o,setSelectedQuote:n,selectedQuote:r,customDestination:a,setQuoteWarningsConfirmed:s,resetAlerts:l}=H(),{slippage:p,customSlippage:c}=h(),u=h().getDisabledLiquiditySources(),f=h().blockchains(),d=h().tokens(),{findToken:m}=h(),g=c||p,{fetch:T,cancelFetch:S,loading:C}=$m();return yT(()=>S,[]),{loading:C,fetch:i(async k=>{let x=k.selectedWallets,b=k?.customDestination??a;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let N=x.reduce((v,E)=>(v[E.chain]=E.address,v),{}),w={requestId:r?.requestId||"",selectedWallets:N,destination:b||void 0};try{return await T(w,!0).then(v=>{let{result:E}=v;jr({diagnosisMessages:E.diagnosisMessages,requestId:E.requestId,swaps:E.result?.swaps});let A={outputAmount:E.result?.outputAmount,requestId:E.requestId,resultType:E.result?.resultType,swaps:E.result?.swaps||[],validationStatus:E.validationStatus,requestAmount:E.requestAmount};n(A);let L={slippage:g.toString(),disabledSwappersGroups:u},q=Fm(r??void 0,A,{fromToken:t,toToken:e,meta:{blockchains:f},findToken:m,selectedWallets:x,userSlippage:g});q.quoteUpdate&&s(!1),l();let I=!!q.balance,Q=hT(o.toString(),E,Qp(x),L,!I,{blockchains:f,tokens:d});return{quote:A,swap:Q,error:null,warnings:q}})}catch(v){return Xr(v)}},"fetch"),cancelFetch:S}}i(ms,"useConfirmSwap");var ET=TT("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Um}`]:{width:"$48",height:"$48"}}),IT=gs({flexGrow:1,paddingRight:"$10"}),AT=gs({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),WT=gs({display:"flex",justifyContent:"space-between",alignItems:"center"});function Qm(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=H(),s=bT(),[l,p]=un(""),c=!n,[u,f]=un(!1),[d,m]=un(!1),{isActiveTab:g}=pe(),T=h().getDisabledLiquiditySources(),S=wT(T),{manager:C}=ST(),{fetch:y,loading:k,cancelFetch:x}=ms(),[b,N]=un({swap:null,error:null,warnings:null}),[w,v]=un(!1),E=i(async({selectedWallets:_,customDestination:X})=>{let Se=await y?.({selectedWallets:_,customDestination:X});return N(Se),Se},"onConfirmSwap"),A=i(async()=>{if(b.swap&&n)try{await C?.create("swap",{swapDetails:b.swap},{id:b.swap.requestId});let _=`../${G.swaps}/${b.swap.requestId}`;s(_,{replace:!0}),setTimeout(()=>{e("")},0)}catch(_){p("Error: "+_?.message)}},"addNewSwap"),L=i(async()=>{m(!0),await A(),m(!1)},"onConfirm"),q=i(async()=>{b?.warnings?.quote&&!a?v(!0):await L()},"onStartConfirmSwap"),I=i(async()=>{N({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(_=>{N(_)}).catch(_=>console.error(_))},"onRefresh");Yr(()=>{!!S.current.length&&!T.length&&I(),S.current=T},[T.length]),Yr(()=>{c&&x()},[c]),Yr(()=>{c&&f(c)},[c]),Yr(()=>{c||y({selectedWallets:o,customDestination:r}).then(_=>N(_)).catch(_=>console.error(_))},[]),xT(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let Q=b.warnings?.quote??null,oe=b.error,P=[];if(l&&P.push(Ne.createElement(Om,{type:"error",variant:"alarm",title:l})),b.warnings?.quoteUpdate&&P.push(Ne.createElement(Om,{variant:"alarm",type:"warning",title:b.warnings.quoteUpdate&&cr(b.warnings.quoteUpdate)})),Q||oe){let _=`../${G.settings}`;P.push(Ne.createElement(on,{warning:Q,error:oe,couldChangeSettings:!1,refetchQuote:I,showWarningModal:w,confirmationDisabled:!g,onOpenWarningModal:()=>v(!0),onCloseWarningModal:()=>v(!1),onConfirmWarningModal:async()=>{v(!1),await A()},onChangeSettings:()=>s(_)}))}return Ne.createElement(me,{header:{title:ds.t("Confirm Swap"),onWallet:()=>{let _=`../${G.wallets}`;s(_)}},footer:Ne.createElement(ET,null,Ne.createElement("div",{className:IT()},Ne.createElement(CT,{variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||d,disabled:!!b.error||!g,onClick:q},ds.t("Start Swap"))),Ne.createElement(Um,{variant:"contained",type:"primary",size:"large",loading:k||d,disabled:!g,onClick:f.bind(null,!0)},Ne.createElement(vT,{size:24})))},u&&Ne.createElement(Tu,{open:u,onClose:()=>f(!1),onCancel:x,loading:k,onCheckBalance:E}),Ne.createElement(ye,null,Ne.createElement("div",{className:WT()},Ne.createElement(kT,{variant:"title",size:"small"},ds.t("You get")),Ne.createElement("div",{className:AT()},Ne.createElement(Tr,{onClick:!k&&!u&&!w?I:void 0}))),Ne.createElement(fs,{size:"12"}),bc(P.map((_,X)=>({element:_,key:`alert-${X}`})),Ne.createElement(fs,{size:10})),P.length>0?Ne.createElement(fs,{size:10}):null,Ne.createElement(ho,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:b.error,loading:k,warning:b.warnings?.quote??null})))}i(Qm,"ConfirmSwapPage");import{i18n as He}from"@lingui/core";import{useManager as RT}from"@rango-dev/queue-manager-react";import{Button as vs,darkTheme as ek,Divider as Gt,MessageBox as tk,NotFound as ok,styled as xs,Typography as Rr}from"@rango-dev/ui";import{TransactionStatus as gn}from"rango-types";import ae,{useMemo as sd,useState as ei}from"react";import{useNavigate as nk}from"react-router-dom";import{FilterIcon as _T,Popover as $T}from"@rango-dev/ui";import yo from"react";import{css as NT,darkTheme as Zr,IconButton as MT,styled as mn}from"@rango-dev/ui";var hs=mn("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${Zr} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),zm=mn(MT,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Zr} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Zr} &`]:{backgroundColor:"$neutral"},[`& ${hs}::before`]:{backgroundColor:"$secondary100",[`.${Zr} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),qm=mn("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Hm=mn("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Gm=NT({display:"flex",justifyContent:"space-between",alignItems:"center"}),Vm=mn("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Km}from"@lingui/core";import{Button as BT,Divider as jm,ListItemButton as LT,Radio as PT,RadioRoot as DT,Typography as Xm}from"@rango-dev/ui";import Re from"react";function Ym(t){let{filterBy:e,onClickItem:o}=t;return Re.createElement(Hm,null,Re.createElement("div",{className:Gm()},Re.createElement(Xm,{size:"small",variant:"body"},Km.t("Status")),Re.createElement(BT,{variant:"ghost",size:"xxsmall",onClick:()=>o("")},Km.t("Reset"))),Re.createElement(jm,{size:10}),Re.createElement(DT,{value:e},Re.createElement(Vm,null,t.list.map((n,r)=>Re.createElement(LT,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:Re.createElement(Re.Fragment,null,Re.createElement(jm,{direction:"horizontal",size:4}),Re.createElement(Xm,{size:"medium",variant:"body"},n.title)),start:Re.createElement(PT,{value:n.id}),onClick:o})))))}i(Ym,"FilterSelectorContent");function ys(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return yo.createElement("div",null,yo.createElement($T,{open:a,align:"end",onOpenChange:o,container:B(),content:yo.createElement(Ym,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},yo.createElement(zm,{variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},yo.createElement(hs,{isSelect:!!n},yo.createElement(_T,{size:16,color:"black"}),!!n&&yo.createElement(qm,null)))))}i(ys,"FilterSelector");import{i18n as UT}from"@lingui/core";import{Divider as td,GroupedVirtualizedList as QT,Skeleton as zT,SwapListItem as od,Typography as qT}from"@rango-dev/ui";import qe,{useCallback as nd,useEffect as HT,useRef as GT,useState as VT}from"react";function Zm(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(Zm,"calculateGroupsSoFar");import{css as FT,darkTheme as OT,styled as dn}from"@rango-dev/ui";var Ss=FT(),Jm=dn("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),Cs=dn("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${Ss}`]:{$$color:"$colors$neutral600",[`.${OT} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ts=dn("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Rm=dn("div",{gap:"$10",display:"flex",flexDirection:"column"}),ed=dn("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var KT=10;function ks(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=VT([]),l=GT(0),{swaps:p,groupCounts:c,groups:u}=n(e),f=nd(Zm,[]),d=nd(()=>{let m=e.length-l.current;m&&(l.current+=Math.min(m,KT),s(f(c,l.current)))},[e.length]);if(HT(()=>{r||d()},[r,d]),r){let m=[1,2];return qe.createElement(qe.Fragment,null,[m,m].map((T,S)=>qe.createElement(Cs,{key:S},qe.createElement(Ts,null,qe.createElement(zT,{variant:"text",width:60,size:"small"}),qe.createElement(td,{size:16})),qe.createElement(td,{size:4}),qe.createElement(Rm,null,T.map((y,k)=>qe.createElement(od,{isLoading:!0,key:k}))))))}return qe.createElement(QT,{endReached:()=>{l.current<e.length&&d()},groupCounts:a,groupContent:m=>qe.createElement(Cs,null,qe.createElement(Ts,null,qe.createElement(qT,{variant:"label",size:"medium",className:Ss()},u[m]))),itemContent:(m,g)=>{let T=p[m];if(!T)return null;let S=T.steps[0],C=T.steps[T.steps.length-1];return qe.createElement(Jm,{key:T.requestId},qe.createElement(od,{requestId:T.requestId,creationTime:T.creationTime,status:T.status,onClick:o,tooltipContainer:B(),onlyShowTime:u[g]===UT.t("Today"),swapTokenData:{from:{token:{image:S.fromLogo,displayName:S.fromSymbol},blockchain:{image:S.fromBlockchainLogo||""},amount:M(T.inputAmount,6,6),realAmount:T.inputAmount},to:{token:{image:C.toLogo,displayName:C.toSymbol},blockchain:{image:C.toBlockchainLogo||""},amount:M(C.outputAmount||C.expectedOutputAmountHumanReadable||"",6,6),realAmount:C.outputAmount||C.expectedOutputAmountHumanReadable||""}}}))}})}i(ks,"HistoryGroupedList");import{CloseIcon as XT,IconButton as YT,SearchIcon as ZT,TextField as JT}from"@rango-dev/ui";import fn from"react";import{styled as jT}from"@rango-dev/ui";var rd=jT("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function Bt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:p,...c}=t;return fn.createElement(JT,{prefix:fn.createElement(rd,null,fn.createElement(ZT,{color:"black"})),suffix:!!s.length&&fn.createElement(YT,{variant:"ghost",onClick:()=>p?.(""),size:"small"},fn.createElement(XT,{color:"gray",size:10})),fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...l},size:r,value:s,onChange:a,...c})}i(Bt,"SearchInput");import{i18n as Jr}from"@lingui/core";import id from"dayjs";var ad=i(t=>{let e=new Map([["today",{title:Jr.t("Today"),swaps:[]}],["week",{title:Jr.t("This week"),swaps:[]}],["month",{title:Jr.t("This month"),swaps:[]}],["year",{title:Jr.t("This year"),swaps:[]}]]);function o(p,c){e.has(p)||e.set(p,{title:p,swaps:[]}),e.get(p)?.swaps.push(c)}i(o,"addYearsToOutput");let n=id();t.forEach(p=>{let c=Number(p.creationTime),u=id(c);if(n.isSame(u,"day"))e.get("today")?.swaps.push(p);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(p);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(p);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(p);else{let f=new Date(c).getFullYear().toString();o(f,p)}});let r=Array.from(e.values()).filter(p=>p.swaps.length>0),a=r.flatMap(p=>p.swaps),s=r.map(p=>p.swaps.length),l=r.map(p=>p.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var rk=xs("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),ik=xs("div",{display:"flex",justifyContent:"center",alignItems:"center"}),ak=xs("div",{"._typography":{color:"$neutral700",[`.${ek}&`]:{color:"$neutral900"}}}),sk=[{id:gn.SUCCESS,title:He.t("Complete")},{id:gn.RUNNING,title:He.t("Running")},{id:gn.FAILED,title:He.t("Failed")}],lk=i((t,e)=>t?.length?t.filter(o=>St(o.fromBlockchain,e)||St(o.toBlockchain,e)||St(o.toSymbol,e)||St(o.fromSymbol,e)).length:!1,"isStepContainsText");function ld(){let t=nk(),{manager:e,state:o}=RT(),n=it(e).map(({swap:k})=>k),[r,a]=ei(""),[s,l]=ei(!1),p=!o.loadedFromPersistor,[c,u]=ei(""),[f,d]=ei(!1),m=i(k=>{let x=k.target.value;a(x)},"searchHandler"),g=sd(()=>!r&&!c?n:n.filter(k=>{let{inputAmount:x,status:b,steps:N,requestId:w}=k;return(!r||St(x,r)||St(b,r)||lk(N,r)||St(w,r))&&(!c||c===b)}),[n,r,c]),T=!g?.length&&!p,S=i(()=>d(!1),"onCloseModal"),C=i(async()=>{try{await e?.clearQueue(),d(!1)}catch(k){console.log(k)}},"onClear"),y=sd(()=>!n.some(k=>k.status===gn.SUCCESS||k.status===gn.FAILED),[n]);return ae.createElement(me,{header:{title:He.t("History"),suffix:ae.createElement(Ut,null,ae.createElement(vs,{disabled:y,variant:"ghost",size:"xsmall",onClick:()=>d(!0)},ae.createElement(Rr,{size:"medium",variant:"label",color:"error"},He.t("Clear all Txs"))))}},ae.createElement(ye,null,ae.createElement(ik,null,ae.createElement(Bt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:He.t("Search Transaction"),autoFocus:!0,onChange:m,style:{height:36},value:r}),ae.createElement(Gt,{size:10,direction:"horizontal"}),ae.createElement(ys,{filterBy:c,open:s,onOpenChange:k=>l(k),onClickItem:k=>u(k),list:sk})),ae.createElement(Gt,{size:"16"}),ae.createElement(rk,null,T&&ae.createElement(ed,null,ae.createElement(Gt,{size:32}),ae.createElement(ok,{title:r?He.t("No results found"):He.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?He.t("Try using different keywords"):He.t("Your transaction history is stored locally and will appear here after you start a swap")})),!T&&ae.createElement(ks,{list:g,onSwapClick:t,groupBy:ad,isLoading:p}))),ae.createElement(ne,{open:f,onClose:S,container:B()},ae.createElement(Gt,{size:20}),ae.createElement(tk,{type:"warning",title:He.t("Clear History"),description:ae.createElement(ak,null,ae.createElement(Rr,{variant:"body",size:"medium"},He.t("This would clear all succeeded/failed transactions from widget. Do you wish to proceed?")),ae.createElement(Gt,{size:"24"}),ae.createElement(Rr,{variant:"body",size:"small"},He.t("Hint: This does not clear your transaction history on blockchain. Only hides them in this page.")))}),ae.createElement(Gt,{size:40}),ae.createElement(Gt,{size:10}),ae.createElement(vs,{variant:"contained",type:"primary",size:"large",onClick:C},He.t("Yes, Clear history")),ae.createElement(Gt,{size:10}),ae.createElement(vs,{variant:"outlined",type:"primary",size:"large",onClick:S},ae.createElement(Rr,{variant:"title",size:"medium",color:"primary"},He.t("No, Cancel")))))}i(ld,"HistoryPage");import{i18n as Ik}from"@lingui/core";import{Button as Ak,Divider as Id,styled as Wk,WarningIcon as Nk}from"@rango-dev/ui";import Mk from"bignumber.js";import je,{useEffect as Ad,useState as Wd}from"react";import{useNavigate as Bk}from"react-router-dom";import{i18n as fk}from"@lingui/core";import{Header as gk}from"@rango-dev/ui";import Vt,{useEffect as hk,useState as yk}from"react";import{i18n as ck}from"@lingui/core";import{Divider as bs,FullExpandedQuote as uk,Typography as mk}from"@rango-dev/ui";import ve from"react";import{styled as ws}from"@rango-dev/ui";var pd=ws("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),cd=ws("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),ud=ws("div",{width:"146px"});import{i18n as hn}from"@lingui/core";import{Select as pk}from"@rango-dev/ui";import md from"react";function ti(t){let{updateQuotePartialState:e,sortStrategy:o}=H(),n=[{value:"SMART",label:hn.t("Smart Routing")},{value:"FEE",label:hn.t("Lowest Fee")},{value:"SPEED",label:hn.t("Fastest Transfer")},{value:"NET_OUTPUT",label:hn.t("Maximum Return")},{value:"PRICE",label:hn.t("Maximum Output")}];return md.createElement(ud,null,md.createElement(pk,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(ti,"SelectStrategy");var dd=3;function yn(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:p,quotes:c,updateQuotePartialState:u,fromToken:f,toToken:d,sortStrategy:m,error:g}=H(),{slippage:T,customSlippage:S}=h(),{findToken:C}=h(),y=l||B(),k=!!c&&c.results.length,x=S??T,b=i(v=>{if(!f||!d||!c)return null;let E={requestAmount:c.requestAmount,...v};return Eo(E,{fromToken:f,toToken:d,userSlippage:x,findToken:C})},"getQuoteWarning"),N=g?.type===0||g?.type===1,w=c?.results?sr(m,c?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(cd,null,ve.createElement(mk,{size:"xmedium",variant:"title"},ck.t("Sort by")),ve.createElement(ti,{container:y})),ve.createElement(bs,{size:"10"})),e&&Array.from({length:dd},(v,E)=>ve.createElement(ve.Fragment,{key:E},s?ve.createElement(uk,{loading:!0}):ve.createElement(cn,{tagHidden:!1,type:"list-item",expanded:!1}),E!==dd-1&&ve.createElement(bs,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?w.map((v,E)=>{let A=b(v),L=us(v.swaps),q=w.length-1===E;return ve.createElement(ve.Fragment,{key:v.requestId},ve.createElement(ho,{showModalFee:r,container:y,selected:p?.requestId===v.requestId,tagHidden:!1,quote:{...v,requestAmount:c.requestAmount},loading:e,error:L?.options||null,warning:A,fullExpandedMode:s,onClick:I=>{L||u("warning",A),u("error",L?.options||null),o(I)},type:"list-item"}),!q&&ve.createElement(bs,{size:16}))}):N&&ve.createElement(pd,null,ve.createElement(en,{size:s?"large":"small",error:g,fetch:n}))))}i(yn,"Quotes");import{darkTheme as dk,styled as fd}from"@rango-dev/ui";var gd=fd("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${dk} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),hd=fd("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var Sk=100;function Es(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=yk(!1),p=s?"":"is-hidden",{config:c}=h(),u=c?.variant==="full-expanded",f=Ho();return hk(()=>{let d=null;return a?d=setTimeout(()=>{l(!0)},Sk):(l(!1),d&&clearTimeout(d)),()=>{d&&clearTimeout(d)}},[a]),Vt.createElement(gd,{expandMode:c?.variant==="full-expanded"?"full":"default",className:`${p} ${xr()}`,id:Ce.EXPANDED_BOX_ID},Vt.createElement(gk,{title:fk.t("Routes"),suffix:Vt.createElement(Vt.Fragment,null,Vt.createElement(ti,{container:f}),Vt.createElement(ao,{container:f,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),Vt.createElement(hd,null,Vt.createElement(yn,{showModalFee:!1,fetch:e,hasSort:!1,loading:o,container:Ho(),onClickOnQuote:n,fullExpandedMode:u})))}i(Es,"ExpandedQuotes");import{i18n as xd}from"@lingui/core";import{SwapInput as wd}from"@rango-dev/ui";import Sn from"react";import{ReverseIcon as kk}from"@rango-dev/ui";import As from"react";import{keyframes as Ck,styled as yd}from"@rango-dev/ui";var Is=450,Tk=Ck({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),Sd=yd("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Cd=yd("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${Tk} ${Is}ms ease-in-out forwards`}},"&:hover":{color:"$secondary500",transform:"translateY(1px) scale(1.04)",boxShadow:"1px 1px 1px 1px rgba(0, 0, 0, 0.05)"}});function Ws(){let t=H.use.switchFromAndTo();return As.createElement(Sd,null,As.createElement(Cd,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Is),t()}},As.createElement(kk,{size:12})))}i(Ws,"SwitchFromAndToButton");import{styled as Td}from"@rango-dev/ui";var kd=Td("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),vd=Td("div",{position:"relative"});function Ns(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:p,setInputAmount:c,inputAmount:u,inputUsdValue:f,outputAmount:d,outputUsdValue:m,selectedQuote:g}=H(),{connectedWallets:T,getBalanceFor:S}=te(),C=a?S(a):null,y=zn(C)?.amount??"0",k=s&&a?M(C?.amount,C?.decimals):"0",x=!!s&&Rl(T,s.name),b=!Ri(g,u,f),N=!Ri(g,u,m),w=!f||!m||!m.gt(0)?null:nt(f.toString(),m.toString());return Sn.createElement(kd,null,Sn.createElement(vd,null,Sn.createElement(wd,{label:xd.t("From"),mode:"From",onInputChange:c,balance:y,chain:{displayName:s?.displayName||"",image:s?.logo||""},token:{displayName:a?.symbol||"",image:a?.image||""},onClickToken:()=>n("from"),price:{value:u,usdValue:b?void 0:M(f,4,4),realUsdValue:b?void 0:f?.toString(),error:b?re().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:x,tooltipContainer:B(),onSelectMaxBalance:()=>{c(k.split(",").join(""))},anyWalletConnected:T.length>0}),Sn.createElement(Ws,null)),Sn.createElement(wd,{sharpBottomStyle:!r&&(!!g||e),label:xd.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:p?.displayName||"",image:p?.logo||""},token:{displayName:l?.symbol||"",image:l?.image||""},percentageChange:M(nt(f,m),2,2),warningLevel:It(w??0),price:{value:M(d,6,6),usdValue:N?void 0:M(m,4,4),realValue:d?.toString(),realUsdValue:N?void 0:m?.toString(),error:N?re().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:B()}))}i(Ns,"Inputs");import{useCallback as vk,useEffect as xk,useRef as wk,useState as bk}from"react";function bd(){let{fetch:t,loading:e,cancelFetch:o}=Kr({request:async(n,r)=>await $t().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(bd,"useFetchAllQuotes");var Ek=600;function oi({refetchQuote:t}){let{fetch:e,cancelFetch:o}=bd(),{excludeLiquiditySources:n,features:r,enableCentralizedSwappers:a}=h().config,s=te.use.connectedWallets(),{fromToken:l,toToken:p,inputAmount:c,inputUsdValue:u,selectedQuote:f,sortStrategy:d,resetQuote:m,error:g,warning:T,setSelectedQuote:S,updateQuotePartialState:C}=H(),{slippage:y,customSlippage:k,affiliatePercent:x,affiliateRef:b,affiliateWallets:N,fetchStatus:w}=h(),v=h().getLiquiditySources(),E=h().getDisabledLiquiditySources(),A=h().excludeLiquiditySources(),{findToken:L}=h(),[q,I]=bk(!0),Q=wk(c),oe=k??y,_=!l||!p||Jt(l,p)||!Ko(c),X=i(ie=>{I(ie)},"resetState"),Se=i(ie=>{let{fromToken:he,toToken:Te,inputAmount:$,liquiditySources:W,excludeLiquiditySources:ce,disabledLiquiditySources:ue,slippage:$e,affiliateRef:D,affiliatePercent:z,affiliateWallets:K}=ie;if(q||X(!0),!_&&he&&Te){m();let se=Up({fromToken:he,toToken:Te,inputAmount:$,liquiditySources:W,excludeLiquiditySources:ce,disabledLiquiditySources:ue,wallets:s,slippage:$e,affiliateRef:D,affiliatePercent:z,affiliateWallets:K,enableCentralizedSwappers:a});mp("experimentalRoute",r)&&(se.experimental=!0),e(se).then(ee=>{let le=sr(d,ee.results),Ee=ec(f,le,ee.requestAmount);I(!1),C("quotes",ee),S(Ee),jr({diagnosisMessages:ee.diagnosisMessages,requestId:Ee?.requestId||"",swaps:Ee?.swaps});let Wn=Ee&&Eo(Ee,{fromToken:he,toToken:Te,userSlippage:oe,findToken:L});C("warning",Wn)}).catch(ee=>{let{error:le}=Xr(ee);(le?.type===0||le?.type===1)&&m(),le?.type!==2&&(C("error",le),I(!1))})}},"fetch"),Y=vk(Ol(ie=>{Se(ie)},Ek),[_]);return xk(()=>{if(!t){I(!1);return}if(w!=="success")return;if(_){I(!1),(f||g||T)&&m();return}if(!Ko(c)||u?.eq(0)){X(!1),o();return}m(),X(!0);let ie=Se;return Q.current&&Q.current!=c&&(ie=Y),Q.current=c,ie({inputAmount:c,fromToken:l,toToken:p,liquiditySources:v,excludeLiquiditySources:A,disabledLiquiditySources:E,slippage:oe,affiliateRef:b,affiliatePercent:x,affiliateWallets:N}),o},[w,c,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,_,v?.length,n,E.length,oe,b,x,JSON.stringify(N)]),{fetch:()=>Se({inputAmount:c,fromToken:l,toToken:p,liquiditySources:v,excludeLiquiditySources:A,disabledLiquiditySources:E,slippage:oe,affiliateRef:b,affiliatePercent:x,affiliateWallets:N}),loading:q}}i(oi,"useSwapInput");function Ed(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};ke.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Ed,"emitPreventableEvent");var Lk=Wk("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),Pk=300;function Nd(){let t=Bk(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:p,setSelectedQuote:c,resetQuoteWallets:u,setQuoteWarningsConfirmed:f,updateQuotePartialState:d}=H(),[m,g]=Wd(!1),{isLargeScreen:T,isExtraLargeScreen:S}=Or(),{fetch:C,loading:y}=oi({refetchQuote:a}),{config:k,fetchStatus:x}=h(),{connectedWallets:b}=te(),{isActiveTab:N}=pe(),[w,v]=Wd(!1),A=Pp({fetchMetaStatus:x,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:b.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),L=ap(T,S,k?.variant),q=!!n&&!!e&&!!o&&new Mk(n).gt(0)&&!Xp(e,o),I=q&&x==="success"&&y,P=(!L||L&&p?.results.length)&&(l||s);Ad(()=>{u(),d("refetchQuote",!0)},[]),Ad(()=>{g(q)},[q]);let _=(r||s)&&!w?C:void 0,X=i(Y=>{L&&m?(g(!1),setTimeout(()=>{t(Y)},Pk)):t(Y)},"onHandleNavigation"),Se=i(Y=>{r?.requestId!==Y.requestId&&(v(!1),c(Y))},"onClickOnQuote");return je.createElement(Lk,null,je.createElement(me,{height:"auto",footer:je.createElement(Ak,{type:"primary",size:"large",disabled:A.disabled||!N,prefix:A.action==="confirm-warning"&&je.createElement(Nk,null),fullWidth:!0,onClick:()=>{A.action==="connect-wallet"?Ed({type:"clickConnectWallet"},()=>X(G.wallets)):A.action==="confirm-warning"?v(!0):X(G.confirmSwap)}},A.title),header:{onWallet:()=>{X(G.wallets)},hasBackButton:!1,title:k.title||Ik.t("Swap"),suffix:je.createElement(ao,{hidden:L?["refresh"]:void 0,onClickRefresh:_,onClickHistory:()=>X(G.swaps),onClickSettings:()=>{X(G.settings)}})}},je.createElement(ye,null,je.createElement(Ns,{fetchingQuote:I,fetchMetaStatus:x,isExpandable:L,onClickToken:Y=>{X(Y==="from"?G.fromSwap:G.toSwap)}}),je.createElement(Id,{size:"2"}),L?null:je.createElement(ho,{quote:r,loading:I,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:p&&p.results.length>1?()=>{d("refetchQuote",!1),X(G.routes)}:void 0}),P?je.createElement(je.Fragment,null,je.createElement(Id,{size:"10"}),je.createElement(on,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:C,showWarningModal:w,confirmationDisabled:!N,onOpenWarningModal:()=>v(!0),onCloseWarningModal:()=>v(!1),onConfirmWarningModal:()=>{v(!1),f(!0),X(G.confirmSwap)},onChangeSettings:()=>X(G.settings)})):null)),L?je.createElement(Es,{loading:I,onClickOnQuote:Se,fetch:C,onClickRefresh:_,isVisible:m}):null)}i(Nd,"Home");import{i18n as Md}from"@lingui/core";import{Alert as Dk,Divider as _k,List as $k,ListItemButton as Fk,Radio as Ok,RadioRoot as Uk,Typography as Qk}from"@rango-dev/ui";import xt from"react";function Kt(){let{setLanguage:t,language:e,config:o}=h(),n=fp,r=o?.language||wo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||wo),resetLanguage:()=>t(null)}}i(Kt,"useLanguage");function Bd(){let{activeLanguage:t,changeLanguage:e,languages:o}=Kt(),n=rt(),r=o.map(a=>{let{local:s,label:l,SVGFlag:p}=a;return{id:s,value:s,title:xt.createElement(Qk,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:xt.createElement(Ok,{value:s}),start:xt.createElement(p,null)}});return xt.createElement(me,{header:{title:Md.t("Language")}},xt.createElement(ye,null,xt.createElement(Dk,{type:"warning",variant:"alarm",title:"Important Notice: Machine translations are in use"}),xt.createElement(_k,{size:"8"}),xt.createElement(Uk,{value:t},xt.createElement($k,{type:xt.createElement(Fk,{title:Md.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(Bd,"LanguagePage");import{i18n as Lt}from"@lingui/core";import{Button as Vk,Checkbox as Kk,Image as jk,ListItemButton as Xk,NotFound as Yk,Typography as Zk}from"@rango-dev/ui";import Ge,{useState as Jk}from"react";import{Checkbox as Hk,Skeleton as Pd}from"@rango-dev/ui";import Tn from"react";import{styled as Ms}from"@rango-dev/ui";var Cn=Ms("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Bs=Ms("div",{width:80,display:"flex",justifyContent:"flex-end"}),Ls=Ms("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as zk,styled as qk}from"@rango-dev/ui";var Ld=qk(zk,{height:61});var Gk=30;function Ps(){return Tn.createElement(Cn,null,Array.from(Array(Gk),(t,e)=>Tn.createElement(Ld,{hasDivider:!0,key:e,start:Tn.createElement(Pd,{variant:"circular",width:35,height:35}),title:Tn.createElement(Pd,{variant:"text",size:"large",width:90}),end:Tn.createElement(Hk,{checked:!1})})))}i(Ps,"LoadingLiquiditySourceList");function Ds({sourceType:t}){let e=h().fetchStatus,o=h().swappers(),n=h().getDisabledLiquiditySources(),[r,a]=Jk(""),s=h().toggleLiquiditySource,l=h().isInCampaignMode(),p=jn(o,n),c={Exchanges:Lt.t("Exchanges"),Bridges:Lt.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let f=p.filter(C=>u.includes(C.type)),d=f.length===f.filter(C=>C.selected).length,m=i(()=>{f.forEach(C=>{d?s(C.groupTitle):C.selected||s(C.groupTitle)})},"toggleAllSources"),g=f.map(C=>{let{selected:y,groupTitle:k,logo:x}=C;return{start:Ge.createElement(jk,{src:x,size:22,type:"circular"}),onClick:()=>{l||s(k)},end:Ge.createElement(Kk,{checked:y,disabled:l}),title:Ge.createElement(Zk,{variant:"title",size:"xmedium"},Lt.t(k)),...C}}),T=i(C=>{let y=C.target.value;a(y)},"searchHandler"),S=g;return r&&(S=g.filter(C=>St(C.groupTitle,r))),Ge.createElement(me,{header:{title:Lt.t(t),suffix:Ge.createElement(Bs,null,Ge.createElement(Vk,{variant:"ghost",size:"xsmall",onClick:m},d?Lt.t("Deselect all"):Lt.t("Select all")))}},Ge.createElement(ye,{view:!0},Ge.createElement(Bt,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:Lt.t("Search {sourceType}",{sourceType:c[t]}),onChange:T}),e==="loading"&&Ge.createElement(Ps,null),!S.length&&r?Ge.createElement(Ls,null,Ge.createElement(Yk,{title:Lt.t("No results found"),description:Lt.t("Try using different keywords")})):e==="success"&&Ge.createElement(Cn,{disabled:l},S.map(C=>{let{groupTitle:y,...k}=C;return Ge.createElement(Ge.Fragment,{key:C.id},Ge.createElement(Xk,{style:{height:"61px"},...k,selected:!1,hasDivider:!0}))}))))}i(Ds,"LiquiditySourcePage");import{i18n as Rk}from"@lingui/core";import ni from"react";import{useNavigate as ev}from"react-router-dom";function Dd(){let t=ev(),e=rt(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=H(),{fetch:l,loading:p}=oi({refetchQuote:n}),c=i(d=>{r(d),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${G.settings}`,f=`../${G.wallets}`;return ni.createElement(me,{header:{onWallet:()=>{t(f),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:Rk.t("Routes"),suffix:ni.createElement(ao,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},ni.createElement(ye,null,ni.createElement(yn,{fetch:l,loading:p,onClickOnQuote:c})))}i(Dd,"RoutesPage");import{i18n as qd}from"@lingui/core";import{Divider as Hd,getCategoriesCount as pv,SelectableCategoryList as cv}from"@rango-dev/ui";import Pt,{useState as Gd}from"react";import{i18n as _s}from"@lingui/core";import{Divider as Qd,Image as rv,ListItemButton as iv,NotFound as av,Typography as zd}from"@rango-dev/ui";import st,{useEffect as sv,useState as lv}from"react";var _d=i((t,e,o)=>t.filter(n=>Ln(n.type,o)).filter(n=>bt(n.name,e)||bt(n.displayName,e)),"filterBlockchains");import{ImageContainer as tv,styled as $d}from"@rango-dev/ui";var Fd=$d("div",{display:"flex",flexDirection:"column",overflow:"hidden"}),ri=$d(Zo,{padding:0,margin:0,listStyle:"none",[`& ${tv}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as ov,Skeleton as Od}from"@rango-dev/ui";import ii from"react";var nv=20;function Ud(){return ii.createElement(ri,null,Array.from(Array(nv),t=>ii.createElement(ov,{key:t,hasDivider:!0,start:ii.createElement(Od,{variant:"circular",width:35,height:35}),title:ii.createElement(Od,{variant:"text",size:"large",width:90})})))}i(Ud,"LoadingBlockchainList");function $s(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r}=t,[a,s]=lv(e),{fetchStatus:l}=h();sv(()=>{s([..._d(e,o,r)])},[e,o,r]);let p=i(()=>!a.length&&o?st.createElement(st.Fragment,null,st.createElement(Qd,{size:32}),st.createElement(av,{title:_s.t("No results found"),description:_s.t("Try using different keywords")})):st.createElement(ri,{as:"ul",key:`${r}-${o}`},a.map(c=>st.createElement(iv,{key:`${c.name}-${c.chainId}`,hasDivider:!0,onClick:()=>n(c),start:st.createElement(rv,{src:c.logo,size:30}),title:st.createElement(zd,{variant:"title",size:"medium"},c.displayName),id:c.chainId}))),"renderList");return st.createElement(Fd,null,st.createElement(zd,{variant:"label",size:"large"},_s.t("Select Blockchain")),st.createElement(Qd,{size:4}),l==="loading"&&st.createElement(Ud,null),l==="success"&&p())}i($s,"BlockchainList");function Fs(t){let{type:e}=t,o=rt(),[n,r]=Gd(""),[a,s]=Gd("ALL"),l=H.use.setToBlockchain(),p=H.use.setFromBlockchain(),c=h().fetchStatus,u=h().blockchains({type:e}),d=pv(u)!==1;return Pt.createElement(me,{header:{title:qd.t("Select Blockchain")}},Pt.createElement(ye,{view:!0},d&&Pt.createElement(Pt.Fragment,null,Pt.createElement(cv,{setCategory:s,category:a,blockchains:u,isLoading:c==="loading"}),Pt.createElement(Hd,{size:24})),Pt.createElement(Bt,{value:n,autoFocus:!0,placeholder:qd.t("Search Blockchain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:m=>r(m.target.value)}),Pt.createElement(Hd,{size:16}),Pt.createElement($s,{list:u,searchedFor:n,blockchainCategory:a,onChange:m=>{e==="source"?p(m):l(m),o()}})))}i(Fs,"SelectBlockchainPage");import{i18n as ci}from"@lingui/core";import{Divider as df}from"@rango-dev/ui";import So,{useState as Mv}from"react";import{useNavigate as Bv}from"react-router-dom";import{i18n as Qs}from"@lingui/core";import{BlockchainsChip as ai,Divider as Xd,Image as Yd,Skeleton as gv,Tooltip as hv,Typography as zs}from"@rango-dev/ui";import _e from"react";import{useEffect as dv}from"react";var Vd=["ETH","COSMOS","OSMOSIS"];function Os(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(uv),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let p=0;p<=l;p++){let c=n[p];s=s.filter(u=>c.name!==u)}}n.sort(mv(s)),r=n.splice(a)}return{list:n,more:r}}i(Os,"prepare");function uv(t,e){let o=Vd,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(uv,"sortByMostUsedBlockchains");function mv(t){return i(function(o,n){let r=t.findIndex(p=>p===o.name),a=t.findIndex(p=>p===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(mv,"generateSortByPreferredBlockchainsFor");function Kd(t,e){return!!e.list.find(o=>o.name===t)}i(Kd,"isInVisibleList");function Us(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=h();dv(()=>{if(e?.selected){let a=Os(t,o,e);Kd(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Os(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Us,"usePrepareBlockchainList");import{styled as fv}from"@rango-dev/ui";var jd=fv("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var yv=12;function qs(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,s=Us(e,{limit:10,selected:n?.name}),{fetchStatus:l}=h(),p=H.use.resetToBlockchain(),c=H.use.resetFromBlockchain(),u=s.more.length>0,f=s.more.length===1,d=!f&&u;return _e.createElement(_e.Fragment,null,_e.createElement(Xd,{size:12}),_e.createElement(zs,{variant:"label",size:"large"},Qs.t("Select Blockchain")),_e.createElement(Xd,{size:12}),_e.createElement(jd,null,l==="loading"&&Array.from(Array(yv),m=>_e.createElement(gv,{key:m,variant:"rounded",height:50})),l==="success"&&_e.createElement(_e.Fragment,null,_e.createElement(ai,{selected:!n,onClick:()=>{o==="from"?c():p()}},_e.createElement(zs,{variant:"body",size:"xsmall",color:"secondary500"},Qs.t("All"))),s.list.map(m=>_e.createElement(hv,{key:m.name,content:m.shortName,side:"bottom",sideOffset:2,container:B()},_e.createElement(ai,{key:m.name,selected:!!n&&n.name===m.name,onClick:()=>r(m)},_e.createElement(Yd,{src:m.logo,size:30})))),f?_e.createElement(ai,{key:s.more[0].name,selected:!!n&&n.name===s.more[0].name,onClick:()=>r(s.more[0])},_e.createElement(Yd,{src:s.more[0].logo,size:30})):null,d?_e.createElement(ai,{onClick:a,key:"more-blockchains"},_e.createElement(zs,{variant:"body",size:"xsmall",color:"secondary500"},Qs._("More +{count}",{count:s.more.length}))):null)))}i(qs,"BlockchainsSection");import{i18n as el}from"@lingui/core";import{darkTheme as lf,Divider as Uo,ExternalLinkIcon as wv,Image as bv,ListItemButton as Ev,NotFound as Iv,PinIcon as Av,Skeleton as pf,Typography as pi,VirtualizedList as Wv}from"@rango-dev/ui";import j,{useEffect as cf,useState as uf}from"react";import{useWallets as Sv}from"@rango-dev/wallets-react";import{useEffect as Cv,useRef as Tv,useState as kv}from"react";function Hs(t){let{connectedWallets:e}=te(),{getWalletInfo:o}=Sv(),n=Tv([]),[r,a]=kv(0);return Cv(()=>{let s=i(p=>{p.type==="disconnect"&&o(p.payload.walletType).supportedChains.some(f=>f.name===t)&&a(f=>f+1)},"handleWalletEvent");return Mn.on("walletEvent",s),t?(e.filter(p=>p.chain===t).forEach(p=>{let{walletType:c}=p,u=n.current.includes(c);p.loading&&!u?n.current=n.current.concat(c):!p.loading&&u&&(n.current=n.current.filter(f=>f!==c),a(f=>f+1))}),()=>Mn.off("walletEvent",s)):a(p=>p+1)},[e,t,o]),{balanceKey:r}}i(Hs,"useObserveBalanceChanges");import{Divider as af,ListItem as xv,Skeleton as kn}from"@rango-dev/ui";import gt from"react";import{css as Oo,darkTheme as Zd,ImageContainer as vv,styled as lt,Typography as Jd}from"@rango-dev/ui";var Gs=Oo({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),Vs=Oo({position:"relative",height:12,width:"30%",maxWidth:"150px"}),Ks=Oo({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),js=Oo({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${Zd} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),Xs=Oo({}),Ys=Oo(),Rd=lt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Zs=lt("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),si=lt("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${Vs}`]:{[`& .${js}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${Xs}`]:{bottom:"-15px"},[`& .${Gs}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${Ks}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Js=lt("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Rs=lt(Jd,{}),ef=lt("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${Ys}`]:{$$color:"$colors$neutral600",[`.${Zd} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),li=lt("div",{display:"flex",alignItems:"end",flexDirection:"column"}),vz=lt("div",{display:"flex",alignItems:"center"}),tf=lt("div",{position:"relative",[`& ${vv}`]:{borderRadius:"$xm",overflow:"hidden"}}),of=lt("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),nf=lt(Jd,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),rf=lt("a",{"& svg:hover":{color:"$colors$info"}});function sf(t){return gt.createElement(si,null,Array.from(Array(t.size),e=>gt.createElement(xv,{key:e,hasDivider:!0,start:gt.createElement(kn,{variant:"circular",width:35,height:35}),end:gt.createElement(li,null,gt.createElement(kn,{variant:"text",size:"large",width:70}),gt.createElement(af,{size:4}),gt.createElement(kn,{variant:"text",size:"medium",width:50})),title:gt.createElement("div",null,gt.createElement(kn,{variant:"text",size:"large",width:90}),gt.createElement(af,{size:4}),gt.createElement(kn,{variant:"text",size:"medium",width:90}))})))}i(sf,"LoadingTokenList");var tl=20,Nv=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return j.createElement("div",{className:Vs()},o?j.createElement("div",{className:Gs()},o):j.createElement(Zs,{className:Ks()},j.createElement(pi,{variant:"title",size:"xmedium"},r.symbol),j.createElement(Uo,{direction:"horizontal",size:4}),j.createElement(Js,{css:a},j.createElement(Rs,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&j.createElement("div",{className:`${js()} ${!o&&Xs()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",j.createElement(Uo,{size:4,direction:"horizontal"}),j.createElement(rf,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},j.createElement(wv,{size:12}))))},"renderDesc");function mf(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r}=t,[a,s]=uf(e),l=h().fetchStatus,p=h().blockchains(),[c,u]=uf(!0),{getBalanceFor:f,loading:d}=te(),{isTokenPinned:m}=h(),{balanceKey:g}=Hs(r),T=i(()=>{s(e.slice(0,a.length+tl))},"loadNextPage");cf(()=>{u(e.length>a.length)},[a.length]),cf(()=>{s(e.slice(0,tl))},[e.length,r,g]);let S=i(()=>!a.length&&o?j.createElement(j.Fragment,null,j.createElement(Uo,{size:32}),j.createElement(Iv,{title:el.t("No results found"),description:el.t("Try using different keywords")})):j.createElement(Wv,{endReached:c?T:void 0,itemContent:C=>{let y=a[C],k=zn(f(y)),x=y.address||"",b=p.find(E=>E.name===y.blockchain),N=ya(b.color,"main"),w={$$color:N.main150,[`.${lf} &`]:{$$color:N.main750},backgroundColor:"$$color"},v={$$color:N.main750,[`.${lf} &`]:{$$color:N.main150},color:"$$color"};return j.createElement("div",{style:{paddingRight:5}},j.createElement(Ev,{style:{width:"100%",overflow:"hidden",height:"60px"},"tab-index":C,key:`${y.symbol}${y.address}`,id:`${y.symbol}${y.address}`,hasDivider:!0,onClick:()=>n(a[C]),start:j.createElement(tf,null,j.createElement(bv,{src:y.image,size:30}),m(y,t.type)&&j.createElement(of,null,j.createElement(Av,{size:12,color:"gray"}))),title:b?.type==="COSMOS"||y.name||!y.name&&!x?j.createElement(Zs,null,j.createElement(pi,{variant:"title",size:"xmedium"},y.symbol),j.createElement(Uo,{direction:"horizontal",size:4}),j.createElement(Js,{css:w},j.createElement(Rs,{variant:"body",size:"xsmall",css:v},y.blockchain))):void 0,description:b?.info&&x&&b.type!=="COSMOS"?Nv({address:x,token:a[C],customCssForTag:w,customCssForTagTitle:v,name:y.name,url:b.info.addressUrl.split("{wallet}").join(x)}):y.name||void 0,end:d?j.createElement(li,null,j.createElement(pf,{variant:"text",size:"large",width:70}),j.createElement(Uo,{size:4}),j.createElement(pf,{variant:"text",size:"medium",width:50})):k&&j.createElement(ef,null,j.createElement(nf,{variant:"title",size:"small"},k.amount),j.createElement("div",null),k.usdValue&&j.createElement(pi,{variant:"body",className:Ys(),size:"xsmall"},`$${k.usdValue}`))}))},totalCount:a.length,key:`${r}-${o}-${g}`}),"renderList");return j.createElement(Rd,null,j.createElement(pi,{variant:"label",size:"large"},el.t("Select Token")),j.createElement(Uo,{size:4}),l==="loading"&&j.createElement(sf,{size:tl}),l==="success"&&j.createElement(si,{as:"ul"},S()))}i(mf,"TokenList");function ol(t){let{type:e}=t,o=Bv(),n=rt(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:p,setToBlockchain:c}=H(),u=te.use.getBalanceFor(),[f,d]=Mv(""),g=(e==="source"?r:a)?.name??"",T=h().blockchains({type:e}),S=h().tokens({type:e,blockchain:g,searchFor:f,getBalanceFor:u}),C=i(x=>{e==="source"?p(x):c(x)},"updateBlockchain"),y=i(x=>{e==="source"?s({token:x,meta:{blockchains:T,tokens:S}}):l({token:x,meta:{blockchains:T,tokens:S}})},"updateToken"),k={source:ci.t("Source"),destination:ci.t("Destination")};return So.createElement(me,{header:{title:ci.t("Swap {type}",{type:k[e]})}},So.createElement(ye,null,So.createElement(qs,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(G.blockchains),onChange:x=>{C(x)}}),So.createElement(df,{size:24}),So.createElement(Bt,{value:f,autoFocus:!0,placeholder:ci.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>d(""),onChange:x=>d(x.target.value)}),So.createElement(df,{size:16}),So.createElement(mf,{list:S,selectedBlockchain:g,searchedFor:f,type:e,onChange:x=>{y(x);let b=T.find(N=>x.blockchain===N.name);b&&C(b),n()}})))}i(ol,"SelectSwapItemsPage");import{i18n as al}from"@lingui/core";import{Alert as nx,Button as rx,styled as ix}from"@rango-dev/ui";import Co from"react";import{useInRouterContext as ax,useSearchParams as sx}from"react-router-dom";import{i18n as Cf}from"@lingui/core";import{Divider as _v,InfoIcon as $v,TextField as Fv,Tooltip as Ov,Typography as Tf}from"@rango-dev/ui";import ht from"react";import{Chip as Lv,styled as vn,TextField as Pv}from"@rango-dev/ui";var ff=vn("div",{paddingTop:"$5",padding:"$10 $5"}),gf=vn("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${Pv}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),hf=vn("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),ui=vn("div",{maxWidth:"280px",padding:"$10"}),yf=vn(Lv,{width:"61px",flexShrink:0});import{i18n as nl}from"@lingui/core";import{Typography as Dv}from"@rango-dev/ui";import xn from"react";function Sf(){return xn.createElement(ui,null,xn.createElement(Dv,{variant:"label",size:"medium",color:"neutral700"},nl.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage"),xn.createElement("br",null),xn.createElement("br",null),xn.createElement("b",null,nl.t("Warning")),":",nl.t("This setting is applied per step (e.g. 1Inch, Thorchain, etc) which means only the step will be reverted, not the whole transaction.")))}i(Sf,"SlippageTooltipContent");function rl(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=h();return ht.createElement(ff,null,ht.createElement(hf,null,ht.createElement(Tf,{variant:"title",size:"xmedium"},Cf.t("Slippage tolerance per swap")),ht.createElement(_v,{direction:"horizontal",size:4}),ht.createElement(Ov,{container:B(),side:"top",sideOffset:4,content:ht.createElement(Sf,null)},ht.createElement($v,{color:"gray"}))),ht.createElement(gf,null,gp.map((r,a)=>{let s=`slippage-${a}`;return ht.createElement(yf,{key:s,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`})}),ht.createElement(Fv,{type:"number",min:"0.01",max:"30",step:"0.01",fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:r=>{let a=r.target.value,s=parseFloat(a);s>=Cp&&s<=Sp?n(s):n(null)},suffix:o&&ht.createElement(Tf,{variant:"body",size:"small"},"%"),placeholder:Cf.t("Custom")})))}i(rl,"Slippage");import{i18n as wt}from"@lingui/core";import{AutoThemeIcon as kf,BridgesIcon as Uv,ChevronRightIcon as il,DarkModeIcon as vf,Divider as mi,ExchangeIcon as Qv,InfinityIcon as zv,InfoIcon as qv,LanguageIcon as Hv,LightModeIcon as xf,List as Gv,ListItem as Vv,ListItemButton as Kv,Skeleton as jv,styled as Xv,Switch as Yv,Tabs as Zv,Tooltip as Jv,Typography as pt}from"@rango-dev/ui";import U from"react";import{useNavigate as Rv}from"react-router-dom";var ex=Xv("div",{width:"202px",height:"$40"}),tx=[{id:"light",icon:U.createElement(xf,{color:"black",size:24}),tooltip:U.createElement(pt,{size:"xsmall",variant:"body"},wt.t("Light"))},{id:"dark",icon:U.createElement(vf,{color:"black",size:24}),tooltip:U.createElement(pt,{size:"xsmall",variant:"body"},wt.t("Dark"))},{id:"auto",icon:U.createElement(kf,{color:"black",size:24}),tooltip:U.createElement(pt,{size:"xsmall",variant:"body"},wt.t("Auto"))}],ox=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return U.createElement(kf,{...e});case"dark":return U.createElement(vf,{...e});default:return U.createElement(xf,{...e})}},"getThemeIcon");function wf(){let t=Rv(),{theme:e}=h().config,{setTheme:o,theme:n}=h(),{activeLanguage:r,languages:a}=Kt(),s=a.find(Q=>Q.local===r)?.label,l=h().fetchStatus,p=h().swappers(),c=h().getDisabledLiquiditySources(),{config:{features:u}}=h(),f=ot("theme",u),d=ot("liquiditySource",u),m=ot("language",u),g=h().infiniteApprove,T=h().toggleInfiniteApprove,S=jn(p,c),C=S.filter(Q=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(Q.type)),y=C.length,k=C.filter(Q=>Q.selected).length,x=S.filter(Q=>Q.type==="DEX"),b=x.length,N=x.filter(Q=>Q.selected).length,w=i((Q,oe)=>{switch(l){case"loading":return U.createElement(jv,{variant:"text",size:"medium",width:50});case"failed":return U.createElement(pt,{variant:"body",size:"medium",color:"$error500"},wt.t("Loading failed"));default:return U.createElement(pt,{variant:"body",size:"medium"},`${Q} / ${oe}`)}},"handleSwapperEndItem"),v={id:"bridge-item",title:U.createElement(pt,{variant:"title",size:"xmedium"},wt.t("Bridges")),end:U.createElement(U.Fragment,null,w(k,y),U.createElement(mi,{direction:"horizontal",size:8}),U.createElement(il,{color:"black"})),onClick:()=>t(G.bridges),start:U.createElement(Uv,{color:"gray",size:16})},E={id:"exchange-item",title:U.createElement(pt,{variant:"title",size:"xmedium"},wt.t("Exchanges")),end:U.createElement(U.Fragment,null,w(N,b),U.createElement(mi,{direction:"horizontal",size:8}),U.createElement(il,{color:"black"})),start:U.createElement(Qv,{color:"gray",size:16}),onClick:()=>t(G.exchanges)},A={id:"language-item",title:U.createElement(pt,{variant:"title",size:"xmedium"},wt.t("Language")),start:U.createElement(Hv,{color:"gray",size:16}),end:U.createElement(U.Fragment,null,U.createElement(pt,{variant:"body",size:"medium"},s),U.createElement(mi,{direction:"horizontal",size:8}),U.createElement(il,{color:"black"})),onClick:()=>t(G.languages)},L={id:"infinite-approval-item",title:U.createElement(U.Fragment,null,U.createElement(pt,{variant:"title",size:"xmedium"},wt.t("Infinite approval")),U.createElement(mi,{direction:"horizontal",size:4}),U.createElement(Jv,{side:"top",sideOffset:4,container:B(),content:U.createElement(ui,null,U.createElement(pt,{variant:"label",size:"medium",color:"neutral700"},wt.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.")))},U.createElement(qv,{color:"gray"}))),start:U.createElement(zv,{color:"gray",size:16}),end:U.createElement(Yv,{checked:g}),onClick:T},q={id:"theme-item",type:U.createElement(Vv,null),title:U.createElement(pt,{variant:"title",size:"xmedium"},wt.t("Theme")),end:U.createElement(ex,null,U.createElement(Zv,{container:B(),items:tx,value:n,onChange:Q=>o(Q.id),type:"primary",borderRadius:"small"})),start:ox(n)},I=d?[]:[v,E];return m||I.push(A),I.push(L),!e?.singleTheme&&!f&&I.push(q),U.createElement(Gv,{type:U.createElement(Kv,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:I})}i(wf,"SettingsLists");var lx=ix("div",{paddingLeft:"$8"});function bf(){let{isInCampaignMode:t,updateCampaignMode:e}=h(),o=t(),[,n]=sx(),r=ax(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Co.createElement(me,{header:{title:al.t("Settings")}},Co.createElement(ye,null,o&&Co.createElement(nx,{type:"info",variant:"alarm",title:al.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:Co.createElement(lx,null,Co.createElement(rx,{type:"secondary",size:"small",onClick:a},al.t("Reset")))}),Co.createElement(rl,null),Co.createElement(wf,null)))}i(bf,"SettingsPage");import{i18n as Kx}from"@lingui/core";import{cancelSwap as jx}from"@rango-dev/queue-manager-rango-preset";import{useManager as Xx}from"@rango-dev/queue-manager-react";import{Alert as Yx}from"@rango-dev/ui";import xl from"react";import{useParams as Zx}from"react-router-dom";import{i18n as et}from"@lingui/core";import{getCurrentBlockchainOfOrNull as Ax,getCurrentStep as Wx,getRelatedWalletOrNull as Nx}from"@rango-dev/queue-manager-rango-preset";import{Button as ng,CopyIcon as Mx,Divider as Bx,DoneIcon as Lx,IconButton as Px,QuoteCost as Dx,RangoExplorerIcon as _x,StepDetails as $x,Tooltip as rg,Typography as ko,useCopyToClipboard as Fx}from"@rango-dev/ui";import{useWallets as Ox}from"@rango-dev/wallets-react";import ig from"bignumber.js";import{PendingSwapNetworkStatus as vi}from"rango-types";import Z,{useEffect as ag,useRef as Ux,useState as sg}from"react";import{useNavigate as Qx}from"react-router-dom";import{i18n as jt}from"@lingui/core";var px=[jt.t("Sunday"),jt.t("Monday"),jt.t("Tuesday"),jt.t("Wednesday"),jt.t("Thursday"),jt.t("Friday"),jt.t("Saturday")];function Ef(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?jt.t("Today"):`${px[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Ef,"timeSince");function If(t){return t.finishTime?Ef(parseInt(t.finishTime)):Ef(parseInt(t.creationTime))}i(If,"getSwapDate");import{PendingSwapNetworkStatus as hi}from"rango-types";import yi from"react";import{i18n as di}from"@lingui/core";import{Button as Af,Divider as sl,MessageBox as cx}from"@rango-dev/ui";import Xt from"react";var Wf=i(({onCancel:t,onClose:e})=>Xt.createElement(Xt.Fragment,null,Xt.createElement(sl,{size:20}),Xt.createElement(cx,{type:"error",title:di.t("Cancel Swap"),description:di.t("Are you sure you want to cancel this swap?")}),Xt.createElement(sl,{size:32}),Xt.createElement(Af,{variant:"contained",type:"primary",size:"large",onClick:t},di.t("Yes, Cancel it")),Xt.createElement(sl,{size:12}),Xt.createElement(Af,{variant:"outlined",type:"primary",size:"large",onClick:e},di.t("No, Continue"))),"CancelContent");import{i18n as fi}from"@lingui/core";import{Button as Nf,Divider as ll,MessageBox as ux,Typography as mx}from"@rango-dev/ui";import Dt from"react";var Mf=i(({onDelete:t,onClose:e})=>Dt.createElement(Dt.Fragment,null,Dt.createElement(ll,{size:20}),Dt.createElement(ux,{type:"error",title:fi.t("Delete Transaction"),description:fi.t("Are you sure you want to delete this swap?")}),Dt.createElement(ll,{size:32}),Dt.createElement(Nf,{variant:"contained",type:"primary",size:"large",onClick:t},fi.t("Yes, Delete it")),Dt.createElement(ll,{size:12}),Dt.createElement(Nf,{variant:"outlined",type:"primary",size:"large",onClick:e},Dt.createElement(mx,{variant:"title",size:"medium",color:"primary"},fi.t("No, Cancel")))),"DeleteContent");import{i18n as pl}from"@lingui/core";import{PendingSwapNetworkStatus as cl}from"rango-types";var ul={[cl.WaitingForNetworkChange]:{type:"loading",title:pl.t("Change Network")},[cl.WaitingForConnectingWallet]:{type:"warning",title:pl.t("Connect Wallet")},[cl.NetworkChanged]:{type:"success",title:pl.t("Network Changed")}};import{debug as gi}from"@rango-dev/logging-core";import{MessageBox as dx,Wallet as fx}from"@rango-dev/ui";import{useWallets as gx}from"@rango-dev/wallets-react";import To,{useState as Pf}from"react";import{styled as Bf}from"@rango-dev/ui";var Lf=Bf("div",{display:"flex",justifyContent:"center"}),uH=Bf("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}});var Df=i(t=>{let{type:e,title:o,currentStepWallet:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,{connect:l,getWalletInfo:p,state:c}=gx(),[u,f]=Pf(null),[d,m]=Pf(null),g=n?.walletType,T=g?Oi(c(g)):null,S=g?p(g):null,C=a&&!!g&&!!T&&!!S,y=i(()=>{u&&f({...u,open:!1})},"handleCloseNamespaceModal"),k=i(()=>{d&&m({...d,open:!1})},"handleCloseDerivationPathModal"),x=i(()=>{g&&S&&(S.namespaces?.length?S.namespaces.length>1?f({open:!0,providerType:g,providerImage:S.img,availableNamespaces:S.namespaces,singleNamespace:S.singleNamespace}):S.needsDerivationPath?m({open:!0,providerType:g,providerImage:S.img,namespace:S.namespaces[0]}):l(g).catch(w=>gi(w)):l(g).catch(w=>gi(w)))},"handleWalletItemClick"),b=i(w=>{S?.needsDerivationPath&&S?.singleNamespace&&w[0]&&g?m({open:!0,providerType:g,providerImage:S.img,namespace:w[0]}):l(u?.providerType,void 0,w.map(v=>({namespace:v}))).catch(v=>gi(v)),y()},"handleConfirmNamespaces"),N=i(w=>{w&&d?.namespace&&l(d?.providerType,void 0,[{namespace:d.namespace,derivationPath:w}]).catch(v=>gi(v)),k()},"handleDerivationPathConfirm");return To.createElement(To.Fragment,null,To.createElement(dx,{type:e,title:o,description:r}),C&&To.createElement(Lf,null,To.createElement(fx,{container:B(),title:S.name,image:S.img,type:g,state:T,link:S.installLink,disabled:s,onClick:x})),To.createElement(po,{open:!!u?.open,onClose:y,onConfirm:b,image:u?.providerImage,availableNamespaces:u?.availableNamespaces,singleNamespace:u?.singleNamespace}),To.createElement(so,{open:!!d?.open,selectedNamespace:d?.namespace,type:d?.providerType,image:d?.providerImage,onClose:k,onConfirm:N}))},"WalletStateContent");function ml(t){let{state:e,onClose:o,onDelete:n,onCancel:r,currentStepWallet:a,message:s,walletButtonDisabled:l}=t,p=e===hi.WaitingForNetworkChange||e===hi.WaitingForConnectingWallet||e===hi.NetworkChanged;return yi.createElement(ne,{open:!!e,onClose:o,container:document.getElementById(Ce.SWAP_BOX_ID)||document.body},p&&yi.createElement(Df,{type:ul[e].type,title:ul[e].title,currentStepWallet:a,message:s,walletButtonDisabled:l,showWalletButton:e!==hi.WaitingForNetworkChange}),e==="delete"&&yi.createElement(Mf,{onClose:o,onDelete:n}),e==="cancel"&&yi.createElement(Wf,{onClose:o,onCancel:r}))}i(ml,"SwapDetailsModal");import{i18n as wn}from"@lingui/core";import{Button as dl,Divider as Si,MessageBox as _f,TokenAmount as hx,Typography as fl}from"@rango-dev/ui";import Oe from"react";import{useNavigate as yx}from"react-router-dom";function gl(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:p,chain:c,percentageChange:u,description:f,diagnosisUrl:d}=t,m=yx();return Oe.createElement(ne,{open:e,onClose:o,container:document.getElementById(Ce.SWAP_BOX_ID)||document.body},n==="success"?Oe.createElement(_f,{type:"success",title:wn.t("Swap Successful")},Oe.createElement(hx,{direction:"vertical",tooltipContainer:B(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:p,chain:c,percentageChange:u}),Oe.createElement(Si,{size:12}),Oe.createElement(fl,{variant:"body",size:"medium",color:"neutral700",align:"center"},f)):Oe.createElement(_f,{type:"error",title:wn.t("Transaction Failed"),description:f}),Oe.createElement(Si,{size:32}),n==="success"&&Oe.createElement(dl,{variant:"contained",type:"primary",size:"large",onClick:()=>{m("../../")}},Oe.createElement(fl,{variant:"title",size:"medium",color:"neutral100"},wn.t("Done"))),Oe.createElement(Si,{size:12}),d&&Oe.createElement(Oe.Fragment,null,Oe.createElement(dl,{variant:"contained",type:"primary",size:"large",onClick:()=>window.open(d,"_blank")},wn.t("Diagnosis")),Oe.createElement(Si,{size:12})),Oe.createElement(dl,{variant:"outlined",type:"primary",size:"large",onClick:o},Oe.createElement(fl,{variant:"title",size:"medium",color:"primary"},wn.t("See Details"))))}i(gl,"SwapDetailsCompleteModal");import Ix from"react";import{i18n as xx}from"@lingui/core";import{Alert as Rf,IconButton as wx,LinkIcon as bx}from"@rango-dev/ui";import Yt,{Fragment as Ex}from"react";import{Alert as Cx,ChevronDownIcon as Tx,IconButton as kx}from"@rango-dev/ui";import zo,{useState as vx}from"react";import{css as bn,darkTheme as $f,styled as _t,Typography as Sx}from"@rango-dev/ui";var Ff=_t("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Ci=_t("div",{width:"100%","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${$f} &`]:{color:"$secondary500"}}}}}),Of=_t(Zo,{padding:"$0 $20 $20 $20"}),jH=_t("div",{display:"flex",flexDirection:"column",gap:"$10"}),Uf=_t("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),XH=_t("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),Qo=bn({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${$f} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Qf=bn({padding:"$5 0"}),Ti=bn({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),zf=bn({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),qf=bn({width:"100%",padding:"0 $20 $10"}),Hf=_t("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),Gf=_t("div",{display:"flex",flexDirection:"column",gap:"$5"}),ki=_t(Sx,{wordBreak:"break-word"});import{styled as hl}from"@rango-dev/ui";var Vf=hl("div",{display:"flex",flexDirection:"column",gap:"$10"}),Kf=hl("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),jf=hl("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function Xf(t){let{message:e}=t,[o,n]=vx(!1);return zo.createElement(Cx,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&zo.createElement(kx,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},zo.createElement(Kf,{rotated:o},zo.createElement(Tx,{size:12,color:"gray"}))),footer:zo.createElement(jf,{open:o},zo.createElement(ki,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Xf,"FailedAlert");import{i18n as Yf}from"@lingui/core";import{Alert as yl,Button as Zf}from"@rango-dev/ui";import{PendingSwapNetworkStatus as Sl}from"rango-types";import En from"react";function Jf(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?En.createElement(yl,{type:"warning",title:n.shortMessage,action:En.createElement(Zf,{size:"xxsmall",type:"warning",onClick:()=>{o(Sl.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Yf.t("Change"))}):r===Sl.WaitingForConnectingWallet?En.createElement(yl,{type:"warning",title:n.shortMessage,action:En.createElement(Zf,{size:"xxsmall",type:"warning",onClick:()=>{o(Sl.WaitingForConnectingWallet)}},Yf.t("Connect"))}):En.createElement(yl,{type:"warning",title:n.shortMessage})}i(Jf,"WarningAlert");function Cl(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=Yo(a),p=a.status==="waitingForApproval"&&!l,c=a.status==="running"&&!l,u=c&&!s||p&&!a.explorerUrl?.length;return Yt.createElement(Vf,null,a.explorerUrl?.map((f,d,m)=>{let g=d+f.url,T=d===m.length-1,S=(T&&c||p)&&!u,C=T&&a.status==="failed";return Yt.createElement(Ex,{key:g},Yt.createElement(Rf,{type:T&&(S&&"loading"||C&&"error")||"success",title:f.description?`${f.description} Tx`:xx.t("View transaction"),action:f.url&&Yt.createElement(wx,{variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},Yt.createElement(bx,{size:12}))}))}),u&&Yt.createElement(Rf,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&Yt.createElement(Jf,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&Yt.createElement(Xf,{message:r}))}i(Cl,"SwapDetailsAlerts");var eg=2e3;var tg=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:tt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:M(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:tt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:M(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Go(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(p=>({from:{chain:{displayName:tt(p.fromBlockchain,e)??"",image:p.fromBlockchainLogo??""}},to:{chain:{displayName:tt(p.toBlockchain,e)??"",image:p.toBlockchainLogo??""}},swapper:{displayName:Go(p.swapperId,o)??"",image:p.swapperLogo??"",type:p.swapperType}})):[],alerts:Ix.createElement(Cl,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function og(t){if(Yo(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(og,"getStepState");function Tl(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=Ox(),p=h().blockchains(),c=h().swappers(),{findToken:u}=h(),f=H.use.retry(),d=pe.use.isActiveTab(),m=Qx(),[g,T]=Fx(eg),S=Ux(null),[C,y]=sg(null),[k,x]=sg(null),b=i(()=>{r(),y(null)},"onCancel"),N=Ie.use.getNotifications(),w=Ie.use.removeNotification(),v=N(),E=Wx(e),A=E?.networkStatus;ag(()=>{v.find(Ee=>Ee.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(x(e.status),w(e.requestId)):k&&x(null))},[e.status,e.requestId]),ag(()=>{_?y(vi.WaitingForNetworkChange):A===vi.WaitingForConnectingWallet||A===vi.NetworkChanged?y(A):y(null)},[A]);let L=Vp(e),q=E?Ax(e,E):null,I=E?Nx(e,E):null,Q=If(e),oe=Kp(e),P=i(le=>!!l(le)?.mobileWallet,"isMobileWallet"),_=A===vi.WaitingForNetworkChange&&!!q&&!!I?.walletType&&(P(I.walletType)||a(I.walletType,q)),X=_?s.bind(null,I.walletType,q):void 0,Se=Gp(e,E),Y=tg({swap:e,switchNetwork:X,showNetworkModal:A,setNetworkModal:y,message:Se,blockchains:p,swappers:c}),ie=Y.length,[he,Te]=[e.steps[0],e.steps[ie-1]],$=Te.outputAmount||Te.expectedOutputAmountHumanReadable,W=e.steps.reduce((le,Ee)=>le+parseFloat(Ee.feeInUsd||""),0),ce=e.steps.find(le=>le.diagnosisUrl)?.diagnosisUrl,ue=M(parseFloat($||"0")*(Te.toUsdPrice||0),4,4),$e=M(parseFloat(e.inputAmount)*(he.fromUsdPrice||0),4,4),D=$?new ig($).multipliedBy(Te.toUsdPrice||0).toString():"",z=new ig(e.inputAmount).multipliedBy(he.fromUsdPrice||0).toString(),K=nt($e,ue),se=Se.detailedMessage.content||Se.shortMessage,ee=e.status==="success"?et.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:M($,6,6),token:Y[ie-1].to.token.displayName,conciseAddress:qn(e.wallets[Y[ie-1].to.chain.displayName]?.address||""),chain:Y[ie-1].to.chain.displayName}}):Z.createElement(Gf,null,Z.createElement(ko,{variant:"body",size:"medium",color:"neutral700",align:"center"},se?"":et.t("Transaction was not sent."),L?`${et.t({id:"{amount} {symbol} on {blockchain} remain in your wallet",values:{amount:L.outputAmount,symbol:L.symbol,blockchain:L.blockchain}})}`:""),se&&Z.createElement(ki,{align:"center",variant:"body",size:"medium",color:"neutral700"},Z.createElement("b",null,"Reason:")," ",se));return Z.createElement(me,{header:{title:et.t("Swap Details"),onCancel:e.status==="running"?()=>y("cancel"):void 0,suffix:e.status!=="running"&&Z.createElement(Ut,null,Z.createElement(ng,{variant:"ghost",type:"error",size:"xsmall",onClick:()=>y("delete")},Z.createElement(ko,{size:"medium",variant:"label",color:"error"},et.t("Delete"))))},footer:oe&&!k&&Z.createElement(ng,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:()=>{let le=ar(e,p,u);f(le),setTimeout(()=>{m("../../")},0)}},et.t("Try again"))},Z.createElement(ye,{compact:!0,view:!0},Z.createElement(Ci,null,Z.createElement("div",{className:Qo()},Z.createElement(ko,{variant:"label",size:"large",color:"neutral700"},`${et.t("Request ID")}:`),Z.createElement("div",{className:Ti()},Z.createElement(ko,{variant:"label",size:"small",color:"neutral700"},o),Z.createElement(rg,{container:B(),content:g?et.t("Copied To Clipboard"):et.t("Copy Request ID"),open:g||void 0,side:"bottom",alignOffset:-16,align:"end"},Z.createElement(Px,{variant:"ghost",onClick:T.bind(null,o||"")},g?Z.createElement(Lx,{size:16,color:"secondary"}):Z.createElement(Mx,{size:16,color:"gray"}))),Z.createElement(Hf,{target:"_blank",href:`${Ml}/swap/${o}`},Z.createElement(rg,{container:B(),content:et.t("View on Rango Explorer"),side:"bottom"},Z.createElement(_x,{size:20}))))),Z.createElement("div",{className:Qo()},Z.createElement(ko,{variant:"label",size:"large",color:"neutral700"},e.finishTime?et.t("Finished at"):et.t("Created at")),Z.createElement(ko,{variant:"label",size:"small",color:"neutral700"},Q))),Z.createElement("div",{className:zf()},Z.createElement(Dx,{fee:M(String(W),2,2),time:Vo(_n(e.steps)),steps:ie}),Z.createElement(rn,{from:{price:{value:M(e.inputAmount,6,6),usdValue:$e,realUsdValue:z,realValue:e.inputAmount},token:{displayName:Y[0].from.token.displayName,image:Y[0].from.token.image},chain:{image:Y[0].from.chain.image,displayName:Y[0].from.chain.displayName}},to:{price:{value:M($,6,6),usdValue:ue,realUsdValue:D,realValue:$||""},token:{displayName:Y[ie-1].to.token.displayName,image:Y[ie-1].to.token.image},chain:{image:Y[ie-1].to.chain.image,displayName:Y[ie-1].to.chain.displayName}},percentageChange:M(K,2,2),warningLevel:It(K??0)})),Z.createElement("div",{className:qf()},Z.createElement(ko,{variant:"title",size:"small"},et.t("Swaps steps"))),Z.createElement(Bx,{size:8}),Z.createElement(Of,{ref:S},Y.map((le,Ee)=>{let Wn=Ee,qo=og(e.steps[Ee]),Mg=qo==="error"||qo==="in-progress"||qo==="warning"||qo==="completed"&&Ee===Y.length-1;return Z.createElement($x,{key:Wn,step:le,type:"swap-progress",ref:S,state:qo,hasSeparator:Ee!==0,tabIndex:Wn,isFocused:Mg,tooltipContainer:B()})}))),Z.createElement(ml,{state:C,onClose:()=>y(null),onCancel:b,onDelete:n,message:Se.detailedMessage.content,currentStepWallet:I,walletButtonDisabled:!d}),Z.createElement(gl,{open:!!k,diagnosisUrl:ce,onClose:()=>x(null),status:e.status==="success"?"success":"failed",priceValue:M($,6,6),usdValue:ue,realUsdValue:D,realValue:$||"",percentageChange:M(K,2,2),token:{displayName:Y[ie-1].to.token.displayName,image:Y[ie-1].to.token.image},chain:{image:Y[ie-1].to.chain.image},description:ee}))}i(Tl,"SwapDetails");import{i18n as wi}from"@lingui/core";import{Divider as cg,NotFound as Vx,Skeleton as An,Typography as bi}from"@rango-dev/ui";import xe from"react";import{i18n as zx}from"@lingui/core";import{Divider as qx,Skeleton as Hx,Typography as Gx}from"@rango-dev/ui";import be from"react";import{css as yt,styled as kl}from"@rango-dev/ui";var lg=kl("div",{width:"100%",height:"100%",padding:"$10 $20"}),In=kl("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),xi=kl("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),sV=yt({display:"flex",justifyContent:"space-between",alignItems:"center"}),lV=yt({display:"flex",justifyContent:"space-between",alignItems:"center"}),pV=yt({paddingTop:"$15",display:"flex"}),cV=yt({padding:"$15 $0"}),uV=yt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),mV=yt({paddingBottom:"$10"}),dV=yt({display:"flex",justifyContent:"start",alignItems:"center"}),fV=yt({paddingTop:"$5",display:"flex",alignItems:"center"}),gV=yt({display:"flex",alignItems:"center"}),hV=yt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),pg=yt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function vl(){return be.createElement(lg,null,be.createElement(ln,{type:"swap-preview"}),be.createElement("div",{className:"swaps-steps"},be.createElement(Gx,{variant:"title",size:"small"},zx.t("Swaps steps"))),be.createElement(be.Fragment,null,be.createElement(In,null,be.createElement(vt,{separator:!1}),be.createElement("div",{className:pg()},be.createElement(qx,{direction:"horizontal",size:20}),be.createElement(Hx,{height:22,variant:"rectangular"}))),be.createElement(xi,null),be.createElement(In,null,be.createElement(vt,{separator:!1})),be.createElement(xi,null),be.createElement(In,null,be.createElement(vt,{separator:!1})),be.createElement(xi,null),be.createElement(In,null,be.createElement(vt,{separator:!1}))))}i(vl,"LoadingSwapDetails");function ug(t){let{requestId:e,showSkeleton:o}=t;return xe.createElement(me,{header:{title:wi.t("Swap Details"),suffix:xe.createElement(Ut,null)}},o&&xe.createElement(Ff,null,xe.createElement(Ci,null,xe.createElement("div",{className:Qo()},xe.createElement(bi,{variant:"label",size:"large",color:"neutral700"},`${wi.t("Request ID")}:`),xe.createElement("div",{className:Ti()},xe.createElement(bi,{variant:"label",size:"small",color:"neutral700"},xe.createElement(An,{width:60,height:10,variant:"rounded"})),xe.createElement(cg,{direction:"horizontal",size:4}),xe.createElement(An,{width:16,height:16,variant:"rectangular"}),xe.createElement(cg,{direction:"horizontal",size:4}),xe.createElement(An,{width:16,height:16,variant:"rectangular"}))),xe.createElement("div",{className:Qo()},xe.createElement(bi,{className:Qf(),variant:"label",size:"large",color:"neutral700"},xe.createElement(An,{width:60,height:10,variant:"rounded"})),xe.createElement(bi,{variant:"label",size:"small",color:"neutral700"},xe.createElement(An,{width:60,height:10,variant:"rounded"})))),xe.createElement(vl,null)),!o&&xe.createElement(Uf,null,xe.createElement(Vx,{title:wi.t("Not found"),description:wi.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(ug,"SwapDetailsPlaceholder");function mg(){let{manager:t,state:e}=Xx(),o=!e.loadedFromPersistor,n=it(t),{requestId:r}=Zx(),a=rt(),{fetchStatus:s}=h();if(!r)return xl.createElement(Yx,{containerStyles:{margin:"20px"},type:"error",title:Kx.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",p=r?n.find(({swap:d})=>d.requestId===r):void 0,c=i(()=>{if(p?.id){let d=t?.get(p.id);d&&jx(d)}},"onCancel"),u=i(async()=>{if(p?.id)try{t?.deleteQueue(p.id),a()}catch(d){console.log(d)}},"onDelete"),f=p?.swap;return!f||l?xl.createElement(ug,{requestId:r,showSkeleton:l}):xl.createElement(Tl,{swap:f,requestId:r,onCancel:c,onDelete:u})}i(mg,"SwapDetailsPage");function dg(){return nc(),la(),Jx([{path:G.home,element:Xe.createElement(Nd,null)},{path:G.routes,element:Xe.createElement(Dd,null)},{path:G.fromSwap,children:[{index:!0,element:Xe.createElement(ol,{type:"source"})},{path:G.blockchains,element:Xe.createElement(Fs,{type:"source"})}]},{path:G.toSwap,children:[{index:!0,element:Xe.createElement(ol,{type:"destination"})},{path:G.blockchains,element:Xe.createElement(Fs,{type:"destination"})}]},{path:G.settings,children:[{index:!0,element:Xe.createElement(bf,null)},{path:G.languages,element:Xe.createElement(Bd,null)},{path:G.exchanges,element:Xe.createElement(Ds,{sourceType:"Exchanges"})},{path:G.bridges,element:Xe.createElement(Ds,{sourceType:"Bridges"})}]},{path:G.swaps,children:[{index:!0,element:Xe.createElement(ld,null)},{path:G.swapDetails,element:Xe.createElement(mg,null)}]},{path:G.wallets,element:Xe.createElement(cu,null)},{path:G.confirmSwap,element:Xe.createElement(Qm,null)}])}i(dg,"AppRoutes");import{useQueueManager as sw}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as lw}from"@rango-dev/wallets-shared";import{isEvmBlockchain as pw}from"rango-sdk";import{useContext as cw,useEffect as Tg,useState as kg}from"react";import{globalCss as Rx}from"@rango-dev/ui";var fg=i(()=>Rx({"@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')"})(),"globalFont");function gg(){let{setWatermark:t}=pe();return{fetchApiConfig:i(async()=>{let o=await fetch(`${Et("BASE_URL")}/meta/dapp/config?apiKey=${Et("API_KEY")}`);if(!o.ok)throw new Error(`Request failed with status: ${o.status} `);let n=await o.json();t(n.config.watermark)},"fetchApiConfig")}}i(gg,"useFetchApiConfig");import{useWallets as ew}from"@rango-dev/wallets-react";import{useEffect as tw,useRef as ow}from"react";function hg(){let{connect:t,state:e}=ew(),o=ow({}),{fetchStatus:n}=h(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);tw(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(hg,"useForceAutoConnect");import{isApprovalTX as nw,RouteEventType as yg,StepEventType as Sg,StepExecutionEventStatus as rw,WidgetEvents as Ei}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Cg}from"react";function wl(){let t=te.use.connectedWallets(),e=te.use.getWalletsDetails(),o=Ie.use.setNotification(),{findToken:n}=h();Cg(()=>{let r=i(a=>{let{event:s,step:l,route:p}=a;if(s.type===Sg.TX_EXECUTION&&s.status===rw.TX_SENT&&!nw(l)||s.type===Sg.SUCCEEDED){let u=t.find(d=>d.chain===l?.fromBlockchain),f=l?.fromBlockchain!==l?.toBlockchain&&t.find(d=>d.chain===l?.toBlockchain);u&&e([u],n),f&&e([f],n)}o(s,p)},"handleStepEvent");return ke.on(Ei.StepEvent,r),()=>ke.off(Ei.StepEvent,r)},[ke,t]),Cg(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===yg.FAILED||s.type===yg.SUCCEEDED)&&o(s,l)},"handleRouteEvent");return ke.on(Ei.RouteEvent,r),()=>ke.off(Ei.RouteEvent,r)},[ke])}i(wl,"useSubscribeToWidgetEvents");import{useManager as iw}from"@rango-dev/queue-manager-react";import{useEffect as aw}from"react";function bl(){let{isSynced:t,syncNotifications:e}=Ie(),{manager:o,state:n}=iw();aw(()=>{Ie.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(it(o))},[Ie.persist.hasHydrated(),n.loadedFromPersistor,t])}i(bl,"useSyncNotifications");function El(){hg(),fg(),wl(),bl();let t=h().blockchains(),{canSwitchNetworkTo:e}=Ar(),[o,n]=kg(""),[r,a]=kg(),s=cw(Yn),l=t.filter(pw),{fetchApiConfig:p}=gg();Tg(()=>()=>oc(),[]),sw({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),Tg(()=>(eo.init(),Ie.persist.hasHydrated()||Ie.persist.rehydrate(),s.onConnectWallet(n),s.onDisconnectWallet(c=>{a(c),c===lw(o)?.[0]&&n("")}),p().catch(console.log),eo.destroy),[])}i(El,"useBootstrap");import{styled as uw}from"@rango-dev/ui";var vg=uw("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function Ii(){El();let{config:t}=h(),{activeTheme:e}=yr(t?.theme||{}),{activeLanguage:o}=Kt();return Il.createElement(mw,{language:o},Il.createElement(vg,{id:"swap-container",className:e()},Il.createElement(dg,null)))}i(Ii,"Main");import{setSolanaSignerConfig as Bw}from"@rango-dev/signer-solana";import Wl,{useEffect as Ag,useMemo as Lw}from"react";import{useState as dw}from"react";var fw=i(()=>{let[t,e]=dw(null),o=i(a=>{let s=document.createElement("link");return s.href=a,s.rel="stylesheet",document.head.appendChild(s),s},"loadFont"),n=i(()=>{t&&(document.head.removeChild(t),e(null))},"unloadFont");return{handleLoadCustomFont:i(a=>{n();let s=Ql(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),xg=fw;import{checkWaitingForNetworkChange as gw,makeQueueDefinition as hw}from"@rango-dev/queue-manager-rango-preset";import{Provider as yw}from"@rango-dev/queue-manager-react";import{useWallets as Sw}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as Cw}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Tw}from"rango-types";import kw,{useMemo as vw}from"react";function xw(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=Sw(),l=vw(()=>hw({API_KEY:t.apiKey||Et("API_KEY"),BASE_URL:Et("BASE_URL"),emitter:{emit:ke.emit}}),[t.apiKey]),p=h().blockchains(),u={blockchains:te.use.connectedWallets().map(k=>({accounts:[k],name:k.chain}))},f=i(async(k,x)=>{if(a(k,x))return r(k,x)},"switchNetwork"),d=i(k=>!!s(k).mobileWallet,"isMobileWallet"),m=p.filter(k=>k.enabled).reduce((k,x)=>(k[x.name]=x,k),{}),g=p.filter(Tw),T=i(k=>{let{supportedChains:x}=s(k);return On(x)},"getSupportedChainNames"),S=e(),C={meta:{blockchains:m,evmBasedChains:g,evmNetworkChainInfo:Cw(g),getSupportedChainNames:T},getSigners:o,wallets:u,providers:S,switchNetwork:f,canSwitchNetworkTo:a,connect:r,state:n,isMobileWallet:d},y=pe.use.isActiveTab();return kw.createElement(yw,{queuesDefs:[l],context:C,onPersistedDataLoaded:k=>{gw(k)},isPaused:!y},t.children)}i(xw,"QueueManager");var wg=xw;import{useManager as Aw}from"@rango-dev/queue-manager-react";import Ww,{createContext as Nw,useContext as Mw}from"react";function bg(){let{findToken:t}=h(),e=h().blockchains(),o=h().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=H();return i(c=>{let{fromBlockchain:u,fromToken:f,toBlockchain:d,toToken:m,requestAmount:g}=c,T={blockchains:e,tokens:o};if(u!==void 0){let S=e.find(C=>C.name===u)??null;n(S)}if(f!==void 0){let S=f?t(f)??null:null;r({meta:T,token:S})}if(d!==void 0){let S=e.find(C=>C.name===d)??null;a(S)}if(m!==void 0){let S=m?t(m)??null:null;s({meta:T,token:S})}g!==void 0&&l(g)},"updateQuoteInputs")}i(bg,"useUpdateQuoteInputs");import{cancelSwap as ww,getCurrentBlockchainOfOrNull as bw,getCurrentStep as Ew,getRelatedWalletOrNull as Iw}from"@rango-dev/queue-manager-rango-preset";var Ai=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return it(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){let n=ar(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&ww(o)}getCurrentStepInfo(e){let o=Ew(e);return{step:o,wallet:o?Iw(e,o):null,network:o?bw(e,o):null}}};var Eg=Nw(void 0);function Al(t){let{manager:e}=Aw(),o=pe.use.isActiveTab(),n=H.use.retry(),{findToken:r}=h(),a=new Ai(e,{retrySwap:n,findToken:r}),s=te.use.connectedWallets(),l=te.use.loading(),p=Xl(s),c=te.use.getWalletsDetails(),u=h().blockchains(),f=h().tokens(),d=h().swappers(),m=h().fetchStatus,g=Kt().resetLanguage,T=Ie().getNotifications(),S=Ie().clearNotifications,C=bg(),{fromBlockchain:y,toBlockchain:k,fromToken:x,toToken:b,inputAmount:N}=H(),w={isActiveTab:o,setCurrentTabAsActive:eo.forceClaim,history:a,wallets:{isLoading:l,details:s,totalBalance:p,refetch:v=>c(v,r)},meta:{blockchains:u,tokens:f,swappers:d,loadingStatus:m,findToken:r},resetLanguage:g,notifications:{list:T,clearAll:S},quote:{quoteInputs:{fromBlockchain:y?.name??null,fromToken:x?{symbol:x.symbol,blockchain:x.blockchain,address:x.address}:null,toBlockchain:k?.name??null,toToken:b?{symbol:b.symbol,blockchain:b.blockchain,address:b.address}:null,requestAmount:N},updateQuoteInputs:C}};return Ww.createElement(Eg.Provider,{value:w},t.children)}i(Al,"WidgetInfo");function Ig(){let t=Mw(Eg);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(Ig,"useWidget");function Wi(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=xg();return Ag(()=>{n&&r(n)},[n]),Lw(()=>{np({API_KEY:o?.apiKey||Nn,BASE_URL:o?.apiUrl||Nl})},[o.apiKey,o.apiUrl]),Ag(()=>{t.config?.signers?.customSolanaRPC&&Bw("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Wl.createElement(Zn,{config:o,onUpdateState:e},Wl.createElement(wg,{apiKey:o.apiKey},Wl.createElement(Al,null,t.children)))}i(Wi,"WidgetProvider");function Wg(t){let e=t.config?.externalWallets;return Ni.createElement(Ap,null,e?Ni.createElement(Ii,null):Ni.createElement(Wi,{config:t.config??ji},Ni.createElement(Ii,null)))}i(Wg,"Widget");function Ng(){let{on:t,off:e}=ke;return{on:t,off:e}}i(Ng,"useWidgetEvents");export{F4 as EventSeverity,Rt as MainEvents,K4 as Networks,Y4 as PendingSwapNetworkStatus,Hi as QuoteEventTypes,O4 as RouteEventType,Mi as SUPPORTED_FONTS,U4 as StepEventType,Q4 as StepExecutionBlockedEventStatus,z4 as StepExecutionEventStatus,Ce as UI_ID,Gi as UiEventTypes,Vn as WalletEventTypes,G4 as WalletEvents,j4 as WalletTypes,Wg as Widget,Rt as WidgetEvents,Wi as WidgetProvider,Zn as WidgetWallets,ka as customizedThemeTokens,H4 as readAccountAddress,no as useWalletList,Ar as useWallets,Ig as useWidget,Ng as useWidgetEvents,Mn as widgetEventEmitter};
3
3
  //# sourceMappingURL=index.js.map