@rango-dev/widget-embedded 0.31.1-next.2 → 0.32.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 (193) hide show
  1. package/dist/components/AppRoutes.d.ts.map +1 -1
  2. package/dist/components/BlockchainList/BlockchainList.d.ts.map +1 -1
  3. package/dist/components/BlockchainList/BlockchainList.styles.d.ts +4 -1
  4. package/dist/components/BlockchainList/BlockchainList.styles.d.ts.map +1 -1
  5. package/dist/components/BlockchainList/BlockchainList.types.d.ts +1 -0
  6. package/dist/components/BlockchainList/BlockchainList.types.d.ts.map +1 -1
  7. package/dist/components/BlockchainSelectorButton/BlockchainSelectorButton.d.ts +4 -0
  8. package/dist/components/BlockchainSelectorButton/BlockchainSelectorButton.d.ts.map +1 -0
  9. package/dist/components/BlockchainSelectorButton/BlockchainSelectorButton.styles.d.ts +483 -0
  10. package/dist/components/BlockchainSelectorButton/BlockchainSelectorButton.styles.d.ts.map +1 -0
  11. package/dist/components/BlockchainSelectorButton/BlockchainSelectorButton.types.d.ts +12 -0
  12. package/dist/components/BlockchainSelectorButton/BlockchainSelectorButton.types.d.ts.map +1 -0
  13. package/dist/components/BlockchainSelectorButton/index.d.ts +2 -0
  14. package/dist/components/BlockchainSelectorButton/index.d.ts.map +1 -0
  15. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts +1 -0
  16. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts.map +1 -1
  17. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +11 -0
  18. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  19. package/dist/components/ConfirmWalletsModal/WalletList.styles.d.ts +3 -0
  20. package/dist/components/ConfirmWalletsModal/WalletList.styles.d.ts.map +1 -1
  21. package/dist/components/CustomCollapsible/CustomCollapsible.styles.d.ts +4 -0
  22. package/dist/components/CustomCollapsible/CustomCollapsible.styles.d.ts.map +1 -1
  23. package/dist/components/CustomDestination/CustomDestination.d.ts.map +1 -1
  24. package/dist/components/CustomDestination/CustomDestination.styles.d.ts +5 -2
  25. package/dist/components/CustomDestination/CustomDestination.styles.d.ts.map +1 -1
  26. package/dist/components/CustomTokenModal/CustomTokenModal.d.ts +4 -0
  27. package/dist/components/CustomTokenModal/CustomTokenModal.d.ts.map +1 -0
  28. package/dist/components/CustomTokenModal/CustomTokenModal.helpers.d.ts +3 -0
  29. package/dist/components/CustomTokenModal/CustomTokenModal.helpers.d.ts.map +1 -0
  30. package/dist/components/CustomTokenModal/CustomTokenModal.styles.d.ts +323 -0
  31. package/dist/components/CustomTokenModal/CustomTokenModal.styles.d.ts.map +1 -0
  32. package/dist/components/CustomTokenModal/CustomTokenModal.types.d.ts +9 -0
  33. package/dist/components/CustomTokenModal/CustomTokenModal.types.d.ts.map +1 -0
  34. package/dist/components/CustomTokenModal/index.d.ts +2 -0
  35. package/dist/components/CustomTokenModal/index.d.ts.map +1 -0
  36. package/dist/components/FilterSelector/FilterSelector.style.d.ts +6 -0
  37. package/dist/components/FilterSelector/FilterSelector.style.d.ts.map +1 -1
  38. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts +8 -0
  39. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts.map +1 -1
  40. package/dist/components/HistoryGroupedList/HistoryGroupedList.styles.d.ts +6 -0
  41. package/dist/components/HistoryGroupedList/HistoryGroupedList.styles.d.ts.map +1 -1
  42. package/dist/components/Layout/Layout.styles.d.ts +4 -0
  43. package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
  44. package/dist/components/Layout/PageContainer.d.ts +1 -0
  45. package/dist/components/Layout/PageContainer.d.ts.map +1 -1
  46. package/dist/components/Layout/ScrollableArea.d.ts +1 -0
  47. package/dist/components/Layout/ScrollableArea.d.ts.map +1 -1
  48. package/dist/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.d.ts +1 -0
  49. package/dist/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.d.ts.map +1 -1
  50. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts +14 -0
  51. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -1
  52. package/dist/components/NoResult/NoResult.styles.d.ts +4 -0
  53. package/dist/components/NoResult/NoResult.styles.d.ts.map +1 -1
  54. package/dist/components/Quote/Quote.styles.d.ts +22 -1
  55. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  56. package/dist/components/Quote/QuoteCostDetails.styles.d.ts +5 -0
  57. package/dist/components/Quote/QuoteCostDetails.styles.d.ts.map +1 -1
  58. package/dist/components/Quote/QuoteSummary.styles.d.ts +2 -0
  59. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +1 -1
  60. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts +4 -0
  61. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts.map +1 -1
  62. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts +10 -0
  63. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts.map +1 -1
  64. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts +5 -0
  65. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts.map +1 -1
  66. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts +4 -0
  67. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
  68. package/dist/components/Quotes/Quotes.styles.d.ts +3 -0
  69. package/dist/components/Quotes/Quotes.styles.d.ts.map +1 -1
  70. package/dist/components/RefreshModal/RefreshModal.styles.d.ts +2 -1
  71. package/dist/components/RefreshModal/RefreshModal.styles.d.ts.map +1 -1
  72. package/dist/components/SearchInput/SearchInput.styles.d.ts +1 -0
  73. package/dist/components/SearchInput/SearchInput.styles.d.ts.map +1 -1
  74. package/dist/components/SettingsContainer/SettingsContainer.style.d.ts +3 -0
  75. package/dist/components/SettingsContainer/SettingsContainer.style.d.ts.map +1 -1
  76. package/dist/components/Slippage/Slippage.styles.d.ts +5 -0
  77. package/dist/components/Slippage/Slippage.styles.d.ts.map +1 -1
  78. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +15 -0
  79. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  80. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.styles.d.ts +3 -0
  81. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.styles.d.ts.map +1 -1
  82. package/dist/components/SwapDetailsModal/SwapDetailsModal.styles.d.ts +2 -0
  83. package/dist/components/SwapDetailsModal/SwapDetailsModal.styles.d.ts.map +1 -1
  84. package/dist/components/SwitchFromAndTo/SwitchFromAndTo.styles.d.ts +2 -0
  85. package/dist/components/SwitchFromAndTo/SwitchFromAndTo.styles.d.ts.map +1 -1
  86. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  87. package/dist/components/TokenList/TokenList.styles.d.ts +18 -0
  88. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  89. package/dist/components/TokenList/TokenList.types.d.ts +5 -2
  90. package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
  91. package/dist/components/WalletDerivationPathModal/WalletDerivationPathModal.styles.d.ts +2 -0
  92. package/dist/components/WalletDerivationPathModal/WalletDerivationPathModal.styles.d.ts.map +1 -1
  93. package/dist/components/WalletModal/WalletModalContent.styles.d.ts +4 -0
  94. package/dist/components/WalletModal/WalletModalContent.styles.d.ts.map +1 -1
  95. package/dist/components/WalletNamespacesModal/WalletNamespacesModal.styles.d.ts +1 -0
  96. package/dist/components/WalletNamespacesModal/WalletNamespacesModal.styles.d.ts.map +1 -1
  97. package/dist/constants/customTokens.d.ts +2 -0
  98. package/dist/constants/customTokens.d.ts.map +1 -0
  99. package/dist/constants/navigationRoutes.d.ts +2 -0
  100. package/dist/constants/navigationRoutes.d.ts.map +1 -1
  101. package/dist/constants/searchParams.d.ts +1 -0
  102. package/dist/constants/searchParams.d.ts.map +1 -1
  103. package/dist/containers/App/App.styles.d.ts +1 -0
  104. package/dist/containers/App/App.styles.d.ts.map +1 -1
  105. package/dist/containers/ExpandedQuotes/ExpandedQuotes.styles.d.ts +2 -0
  106. package/dist/containers/ExpandedQuotes/ExpandedQuotes.styles.d.ts.map +1 -1
  107. package/dist/containers/Inputs/Inputs.styles.d.ts +2 -0
  108. package/dist/containers/Inputs/Inputs.styles.d.ts.map +1 -1
  109. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +3 -0
  110. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -1
  111. package/dist/containers/Settings/Lists.d.ts.map +1 -1
  112. package/dist/hooks/useFetchCustomToken.d.ts +16 -0
  113. package/dist/hooks/useFetchCustomToken.d.ts.map +1 -0
  114. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +2 -2
  115. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  116. package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.d.ts.map +1 -1
  117. package/dist/hooks/useTheme.d.ts +1 -0
  118. package/dist/hooks/useTheme.d.ts.map +1 -1
  119. package/dist/index.js +2 -2
  120. package/dist/index.js.map +4 -4
  121. package/dist/pages/AddCustomTokenPage.d.ts +3 -0
  122. package/dist/pages/AddCustomTokenPage.d.ts.map +1 -0
  123. package/dist/pages/CustomTokensPage.d.ts +3 -0
  124. package/dist/pages/CustomTokensPage.d.ts.map +1 -0
  125. package/dist/pages/SelectBlockchainPage.d.ts +2 -1
  126. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  127. package/dist/store/AppStore.d.ts +2 -0
  128. package/dist/store/AppStore.d.ts.map +1 -1
  129. package/dist/store/app.d.ts +2 -0
  130. package/dist/store/app.d.ts.map +1 -1
  131. package/dist/store/quote.d.ts.map +1 -1
  132. package/dist/store/slices/data.d.ts +4 -3
  133. package/dist/store/slices/data.d.ts.map +1 -1
  134. package/dist/store/slices/settings.d.ts +7 -2
  135. package/dist/store/slices/settings.d.ts.map +1 -1
  136. package/dist/store/utils/data.d.ts +4 -1
  137. package/dist/store/utils/data.d.ts.map +1 -1
  138. package/dist/types/config.d.ts +3 -1
  139. package/dist/types/config.d.ts.map +1 -1
  140. package/dist/utils/meta.d.ts +1 -0
  141. package/dist/utils/meta.d.ts.map +1 -1
  142. package/dist/utils/quote.d.ts +1 -0
  143. package/dist/utils/quote.d.ts.map +1 -1
  144. package/dist/utils/settings.d.ts +3 -2
  145. package/dist/utils/settings.d.ts.map +1 -1
  146. package/dist/utils/swap.d.ts.map +1 -1
  147. package/dist/widget-embedded.build.json +1 -1
  148. package/package.json +4 -4
  149. package/src/components/AppRoutes.tsx +30 -0
  150. package/src/components/BlockchainList/BlockchainList.styles.ts +3 -1
  151. package/src/components/BlockchainList/BlockchainList.tsx +26 -17
  152. package/src/components/BlockchainList/BlockchainList.types.ts +1 -0
  153. package/src/components/BlockchainSelectorButton/BlockchainSelectorButton.styles.ts +49 -0
  154. package/src/components/BlockchainSelectorButton/BlockchainSelectorButton.tsx +47 -0
  155. package/src/components/BlockchainSelectorButton/BlockchainSelectorButton.types.ts +11 -0
  156. package/src/components/BlockchainSelectorButton/index.ts +1 -0
  157. package/src/components/CustomDestination/CustomDestination.tsx +5 -3
  158. package/src/components/CustomTokenModal/CustomTokenModal.helpers.ts +19 -0
  159. package/src/components/CustomTokenModal/CustomTokenModal.styles.ts +57 -0
  160. package/src/components/CustomTokenModal/CustomTokenModal.tsx +92 -0
  161. package/src/components/CustomTokenModal/CustomTokenModal.types.ts +9 -0
  162. package/src/components/CustomTokenModal/index.ts +1 -0
  163. package/src/components/TokenList/TokenList.styles.ts +1 -0
  164. package/src/components/TokenList/TokenList.tsx +76 -51
  165. package/src/components/TokenList/TokenList.types.ts +5 -2
  166. package/src/constants/customTokens.ts +6 -0
  167. package/src/constants/navigationRoutes.ts +2 -0
  168. package/src/constants/searchParams.ts +3 -0
  169. package/src/containers/Settings/Lists.tsx +25 -1
  170. package/src/hooks/useFetchCustomToken.ts +114 -0
  171. package/src/hooks/useSwapInput.ts +8 -3
  172. package/src/hooks/useSyncUrlAndStore/useSyncUrlAndStore.ts +6 -1
  173. package/src/hooks/useTheme.ts +5 -1
  174. package/src/pages/AddCustomTokenPage.tsx +210 -0
  175. package/src/pages/CustomTokensPage.tsx +184 -0
  176. package/src/pages/HistoryPage.tsx +2 -2
  177. package/src/pages/LiquiditySourcePage.tsx +2 -2
  178. package/src/pages/SelectBlockchainPage.tsx +15 -8
  179. package/src/pages/SelectSwapItemsPage.tsx +1 -1
  180. package/src/store/app.ts +1 -0
  181. package/src/store/quote.ts +12 -2
  182. package/src/store/slices/data.ts +61 -8
  183. package/src/store/slices/settings.ts +35 -2
  184. package/src/store/utils/data.ts +26 -1
  185. package/src/store/wallets.ts +1 -1
  186. package/src/types/config.ts +4 -1
  187. package/src/utils/meta.ts +12 -1
  188. package/src/utils/quote.ts +16 -3
  189. package/src/utils/settings.ts +13 -1
  190. package/src/utils/swap.ts +7 -7
  191. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts +0 -3
  192. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts.map +0 -1
  193. package/src/components/ConfirmWalletsModal/ConfirmWallets.helpers.ts +0 -10
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
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,error:!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};
1
+ var yh=Object.defineProperty;var i=(t,e)=>yh(t,"name",{value:e,configurable:!0});import{EventSeverity as m6,RouteEventType as d6,StepEventType as f6,StepExecutionBlockedEventStatus as g6,StepExecutionEventStatus as h6}from"@rango-dev/queue-manager-rango-preset";import{readAccountAddress as S6,useWallets as Vr,Events as T6}from"@rango-dev/wallets-react";import{Networks as k6,WalletTypes as v6}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as b6}from"rango-types";import{UI_ID as Sh}from"@rango-dev/ui";var Xn="c6381a79-2817-4602-83bf-6a641a409e32",op="https://api.rango.exchange",np="https://explorer.rango.exchange",ke={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...Sh};var rp="Roboto",Zi=[{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 ga,Provider as uy}from"@rango-dev/wallets-react";import{isEvmBlockchain as my}from"rango-sdk";import gr,{createContext as dy,useEffect as tc,useMemo as fy,useRef as oc}from"react";import{useEffect as Fh}from"react";import{create as Dh}from"zustand";import{subscribeWithSelector as _h}from"zustand/middleware";import Th from"mitt";var xe=Th(),Yn={on:xe.on,off:xe.off};import{RangoClient as Lh}from"rango-sdk";import{BlockchainCategories as Eh,WalletState as It}from"@rango-dev/ui";import{readAccountAddress as Ih}from"@rango-dev/wallets-react";import{detectInstallLink as Ah,getCosmosExperimentalChainInfo as Nh,isEvmAddress as Wh,KEPLR_COMPATIBLE_WALLETS as vE,Networks as hp}from"@rango-dev/wallets-shared";import na from"bignumber.js";import{isCosmosBlockchain as Mh}from"rango-types";import Ch from"bignumber.js";var Ge=new Ch(0);import{WalletTypes as kh}from"@rango-dev/wallets-shared";var ip=[kh.LEAP];import{BlockchainCategories as Ji,WalletState as wh}from"@rango-dev/ui";import{TransactionType as Zn}from"rango-sdk";function Wo(t){return Array.from(new Set(t))}i(Wo,"removeDuplicateFrom");function ta(t,e){return t.length===e.length&&t.every((o,n)=>o===e[n])}i(ta,"areEqual");function up(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(up,"debounce");function nt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(nt,"containsText");function lp(t,e){return t.toLowerCase()===e.toLowerCase()}i(lp,"exactText");function pp(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(pp,"startWithText");var B=i(()=>document.getElementById(ke.SWAP_BOX_ID),"getContainer"),on=i(()=>document.getElementById(ke.EXPANDED_BOX_ID),"getExpanded");function cp(t,e,o){let n=!!e&&lp(e,t),r=!!o&&lp(o,t);return n!==r?n?-1:1:0}i(cp,"compareExactMatchText");function Ri(t,e,o){let n=!!e&&nt(e,t),r=!!o&&nt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(Ri,"compareContainsText");function ea(t,e,o){let n=!!e&&pp(e,t),r=!!o&&pp(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ea,"compareStartWithText");function mp(t,e,o){if(!o)return 0;let n=cp(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=cp(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ea(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=Ri(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ea(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=Ri(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ea(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=Ri(o,t.address,e.address);if(r!==0)return r}return 0}i(mp,"compareWithSearchFor");var Jn=i((t,e)=>{switch(e){case Ji.ALL:return!0;case Ji.UTXO:return t===Zn.TRANSFER;case Ji.OTHER:return t!==Zn.TRANSFER&&t!==Zn.COSMOS&&t!==Zn.EVM;default:return t===e}},"isBlockchainTypeInCategory"),dp=i(t=>Zi.find(o=>o.value===t)?.url,"getFontUrlByName");function Rn(t,e){let o=!!t.find(n=>n.state===wh.CONNECTED);return e===!1&&o}i(Rn,"isSingleWalletActive");function er(t,e){return e.find(o=>o.name===t)?.displayName}i(er,"getBlockchainDisplayNameFor");function ct(t,e){return e.find(o=>o.name===t)?.shortName}i(ct,"getBlockchainShortNameFor");function fp(t,e){return e.find(o=>o.name===t)?.logo}i(fp,"getBlockchainImage");function nn(t,e){return e.find(o=>o.id===t)?.title}i(nn,"getSwapperDisplayName");function rn(t,e){return e.find(o=>o.name===t)??null}i(rn,"findBlockchain");function oa(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(oa,"isTokenNative");function Qe(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(Qe,"createTokenHash");function Mo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Mo,"isValidTokenAddress");import{BigNumber as gp}from"bignumber.js";var an=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"),D=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new gp(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new gp(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 tr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Et=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),sn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function ra(t){switch(!0){case t.connected:return It.CONNECTED;case t.connecting:return It.CONNECTING;case!t.installed:return It.NOT_INSTALLED;default:return It.DISCONNECTED}}i(ra,"mapStatusToWalletState");function yp(t,e,o,n){return o.filter(r=>!ip.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:m,needsDerivationPath:d}=e(r),g=Wo(m.map(y=>y.type)),f=ra(t(r));return{title:a,image:s,link:Ah(l),state:f,type:r,showOnMobile:p,namespaces:c,singleNamespace:u,blockchainTypes:g,needsDerivationPath:d}})}i(yp,"mapWalletTypesToWalletInfo");function rr(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(rr,"walletAndSupportedChainsNames");function Sp(t,e,o,n,r){let a=[];function s(p,c){if(!!!a.find(m=>m.chain===p)){let m={address:c,chain:p,walletType:t};a.push(m)}}i(s,"addAccount");let l=n||[];return e.forEach(p=>{let{address:c,network:u}=Ih(p),m=l.length>0,d=l.includes(u),g=u===hp.Unknown;if(m&&!d&&!g)return;let y=u===hp.Unknown&&Wh(c);if(g&&!y)return;o.includes(u)||y?r?s(u,c.toLowerCase()):l.filter(T=>o.includes(T)).forEach(T=>{s(T,c.toLowerCase())}):s(u,c)}),a}i(Sp,"prepareAccountsForWalletStore");function io(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 m=c.from.blockchain,d=c.to.blockchain,g=a===o.swaps.length-1,f=u===p.length-1;(!g&&!f||g&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(d)})}e==="all"&&n.add(l)}),Array.from(n)}i(io,"getQuoteWallets");function ir(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(ir,"isAccountAndWalletMatched");function Tp(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 na(r.amount.amount).shiftedBy(-r.amount.decimals).toFixed(),logo:"",usdPrice:e(r.asset)?.usdPrice||null}))||[]}i(Tp,"makeBalanceFor");function Cp(t){return{...t,loading:!1,error:!0}}i(Cp,"resetConnectedWalletState");var kp=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=D(n?.flatMap(a=>a.accounts)?.flatMap(a=>a?.balances)?.map(a=>new na(a?.amount||Ge).multipliedBy(a?.usdPrice||0))?.reduce((a,s)=>a.plus(s),Ge)||Ge).toString();return Bh(r)},"calculateWalletUsdValue");function Bh(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(Bh,"numberWithThousandSeparator");var ar=i((t,e)=>{let o=Nh(Object.entries(t).map(([,n])=>n).filter(Mh));return o&&o[e]?.experimental},"isExperimentalChain");function sr(t){return t?{...t,amount:D(t.amount,8,8),usdValue:D(t.usdValue,4,4)}:null}i(sr,"formatBalance");function vp(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(vp,"compareTokenBalance");function ao(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(ao,"areTokensEqual");function xp(t){return t.sort((e,o)=>+(o.state===It.CONNECTED)-+(e.state===It.CONNECTED)||+(o.state===It.DISCONNECTED||o.state===It.CONNECTING)-+(e.state===It.DISCONNECTED||e.state===It.CONNECTING))}i(xp,"sortWalletsBasedOnConnectionState");function lr(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(lr,"getConciseAddress");function bp({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(bp,"getAddress");function pr(t){return t.flatMap(e=>e.balances).reduce((e,o)=>{let n={amount:o?.amount??"",decimals:o?.decimal??0,usdValue:o?.usdPrice?new na(o?.usdPrice??Ge).multipliedBy(o?.amount).toString():""},r=o?Qe({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(pr,"makeTokensBalance");var wp=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 Ip(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(Ip,"filterBlockchainsByWalletTypes");function Ap(t,e){return e===Eh.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Jn(n,e))return!0;return!1})}i(Ap,"filterWalletsByCategory");var ia={API_KEY:Xn};function ut(t){return ia[t]||""}i(ut,"getConfig");function Np(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ia=e,ia}i(Np,"initConfig");var Wp=20,Mp=25,aa="theme-widget",sa=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>ao(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>ao(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),la=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),Bp=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var cr,qt=i(()=>cr||(cr=new Lh(ut("API_KEY"),ut("BASE_URL")),cr),"httpService");import{WidgetEvents as Lp}from"@rango-dev/queue-manager-rango-preset";var pa=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(pa||{}),ur=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(ur||{}),ca=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(ca||{}),so=(a=>(a[a.RouteEvent=Lp.RouteEvent]="RouteEvent",a[a.StepEvent=Lp.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(so||{});var Ph=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Ht=Ph;var oe=Ht(Dh()(_h((t,e)=>({connectedWallets:[],balances:{},loading:!1,connectWallet:(o,n)=>{xe.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)&&xe.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:pr(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=>ir(p,l))?{...l,loading:!0}:l)}));try{let s=o.map(({address:c,chain:u})=>({address:c,blockchain:u})),p=(await qt().getWalletsDetails(s)).wallets;if(p)t(c=>{let u=c.connectedWallets.map(d=>{let g=o.find(y=>ir(y,d)),f=p.find(y=>y.address===d.address&&y.blockChain===d.chain);return f?.failed&&g&&r&&a([g],n,!1),g&&f?{...d,explorerUrl:f.explorerUrl,balances:Tp(f,n),loading:!1}:d});return{loading:!1,balances:pr(u),connectedWallets:u}});else throw new Error("Wallet not found")}catch{t(l=>{let p=l.connectedWallets.map(u=>o.find(m=>ir(m,u))?Cp(u):u);return{loading:!1,balances:pr(p),connectedWallets:p}})}},getBalanceFor:o=>{let{balances:n}=e(),r=Qe(o);return n[r]??null}}))));import{allProviders as $h}from"@rango-dev/provider-all";function mr(t,e){let o=$h({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(mr,"matchAndGenerateProviders");function Pp(t,e){return mr(t,e).map(r=>r.config.type)}i(Pp,"configWalletsToWalletName");function Dp(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(Dp,"hashProviders");function ua(t,e){let o=oe.use.clearConnectedWallet(),n=mr(t,e);return Fh(()=>{o(),n=mr(t,e)},[Dp(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:n}}i(ua,"useWalletProviders");import ry,{createContext as iy,useContext as ay,useEffect as sy,useRef as ly}from"react";import{create as oy}from"zustand";import{persist as ny}from"zustand/middleware";var ma=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()}},Bo=new ma;function ln(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(p=>{typeof p!="string"&&(p=Qe(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=Qe(c);delete n[u]})):a(p.tokens))}),Object.values(n)}i(ln,"matchTokensFromConfigWithMeta");function dr(t){let{config:e}=t,o=e.from?.blockchains||[],n=e.to?.blockchains||[];if(!o.length||!n.length)return[];let r=[...o,...n],a=new Set(r);return Array.from(a)}i(dr,"getSupportedBlockchainsFromConfig");var da={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"}},Oh={clientUrl:void 0},Uh={liquiditySources:void 0},_p=i((t,e,o)=>({config:{...da,...t},iframe:Oh,campaignMode:Uh,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=ln({type:"source",config:{blockchains:n.from?.blockchains,tokens:n.from?.tokens},meta:{tokensMapByBlockchainName:s,tokensMapByTokenHash:a}}),p=ln({type:"destination",config:{blockchains:n.to?.blockchains,tokens:n.to?.tokens},meta:{tokensMapByBlockchainName:s,tokensMapByTokenHash:a}});Bo.set("supportedSourceTokens",l),Bo.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");import{TransactionType as $p}from"rango-types";var Fp=[$p.EVM,$p.SOLANA];function fr(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Wo(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(fr,"getUniqueSwappersGroups");function Op(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Op,"sortLiquiditySourcesByGroupTitle");function Ze(t,e){return e?.[t]==="hidden"}i(Ze,"isFeatureHidden");function Up(t,e){return e?.[t]==="enabled"}i(Up,"isFeatureEnabled");var zp=i((t,e,o)=>Ze("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");var Qp=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;if(o.type==="custom-token"){let p=dr({config:a}),c=r;return p.length>0&&(c=c.filter(u=>p.includes(u.name))),c.filter(u=>Fp.includes(u.type))}let 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,_customTokens:s}=e(),l=Array.from(n.values()),p=e()._blockchainsMapByName;if(!o||!o.type)return l;let c=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=Bo.get(u);m?.length||(m=ln({type:o.type,config:{blockchains:a[c]?.blockchains,tokens:a[c]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Bo.set(u,m)),m=zp(m,s,a.features);let d=e().blockchains({type:o.type});return m.filter(f=>o.blockchain&&f.blockchain!==o.blockchain||!d.some(y=>y.name===f.blockchain)?!1:o.searchFor?!!(nt(f.symbol,o.searchFor)||nt(f.address||"",o.searchFor)||nt(f.name||"",o.searchFor)):!0).sort((f,y)=>{let S=e().isTokenPinned(f,o.type),C=e().isTokenPinned(y,o.type);if(S!==C)return S?-1:1;if(o.getBalanceFor){let A=o.getBalanceFor(f),b=o.getBalanceFor(y),x=vp(A,b);if(x!==0)return x}let T=p.get(f.blockchain),k=p.get(y.blockchain),v=oa(f,T),w=oa(y,k);if(v!==w)return v?-1:1;if(f.isPopular!==y.isPopular)return f.isPopular?-1:1;if(o.searchFor){let A=mp(f,y,o.searchFor);if(A)return A}return f.isSecondaryCoin!==y.isSecondaryCoin?f.isSecondaryCoin?1:-1:T&&k?T.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=Qe(o),s=n.get(a);return s||(s=r.find(l=>Qe(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>ao(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(Op)},fetch:async()=>{try{let{enableCentralizedSwappers:o}=e().config,n=await qt().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,g)=>d.sort-g.sort).forEach(d=>{d.enabled&&u.has(d.name)&&r.set(d.name,d)}),l.forEach(d=>{let g=Qe(d);s[d.blockchain]||(s[d.blockchain]=[]),a.set(g,d),s[d.blockchain].push(g)}),t({_blockchainsMapByName:r,_tokensMapByTokenHash:a,_tokensMapByBlockchainName:s,_popularTokens:p,_swappers:c})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Chinese as zh,English as Qh,Finland as qh,French as Hh,German as Gh,Greece as Vh,Italian as Kh,Japanese as jh,Netherlands as Xh,Poland as Yh,Portuguese as Zh,Russian as Jh,Spanish as Rh,Swedish as ey,Ukrainian as ty}from"@rango-dev/ui";var qp=[{title:"English",label:"English",local:"en",SVGFlag:Qh},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:Rh},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:Hh},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:jh},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:Zh},{title:"Chinese",label:"\u4E2D\u56FD\u4EBA",local:"zh",SVGFlag:zh},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:Jh},{title:"German",label:"Deutsch",local:"de",SVGFlag:Gh},{title:"Ukrainian",label:"\u0423\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:ty},{title:"Swedish",label:"svenska",local:"sv",SVGFlag:ey},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:qh},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:Xh},{title:"Greek",label:"Grieks",local:"el",SVGFlag:Vh},{title:"Italian",label:"Italiana",local:"it",SVGFlag:Kh},{title:"Polish",label:"Polski",local:"pl",SVGFlag:Yh}],Lo="en";var Hp=[.5,1,3],Gp=1,Vp=5,Kp=100,jp=0;var Xp=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Gp,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],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=Wo(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=Ze("theme",n),s=Ze("language",n),l=Ze("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||Lo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...c&&{language:o.language||Lo}})},setCustomToken:o=>t(n=>({_customTokens:[o,...n._customTokens]})),deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(r=>r.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,r=dr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");function Yp(t){return oy()(ny((...e)=>({...Qp(...e),...Xp(...e),..._p(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,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(Yp,"createAppStore");var Zp=iy(null);function h(){let t=ay(Zp);if(sy(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(h,"useAppStore");function Jp(t){let e=ly();return e.current||(e.current=Yp(t.config)),ry.createElement(Zp.Provider,{value:e.current},t.children)}i(Jp,"AppStoreProvider");import{create as cy}from"zustand";var Rp="rango-widget";var pn=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(Rp),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 ue=Ht(cy()((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})}}))),lo=new pn({onInit:()=>ue.setState({tabManagerInitiated:!0}),onClaim:()=>ue.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ue.setState({isActiveTab:!1})});var hr=dy({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function gy(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}=ua(l.wallets,p),{connectWallet:u,disconnectWallet:m}=oe(),d=oc(),g=oc();tc(()=>{n().catch(console.log)},[]),tc(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:l,dappConfig:t.config})},[t.config,r]);let f=a.filter(my).map(T=>T.name),y=i((T,k,v,w,A)=>{if(k===ga.ACCOUNTS)if(v){let b=rr(A.supportedBlockchains),x=Sp(T,v,f,b,A.isContractWallet);x.length&&u(x,s)}else m(T),g.current?g.current(T):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?");if(k===ga.ACCOUNTS&&w.connected){let b=`${T}-${w.network}-${v}`;w.connected&&(d.current?d.current(b):console.warn("onConnectWallet handler hasn't been set. Are you sure?"))}if(k===ga.NETWORK&&w.network){let b=`${T}-${w.network}`;d.current?d.current(b):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}t.onUpdateState&&t.onUpdateState(T,k,v,w,A)},"onUpdateState"),S=ue.use.isActiveTab(),C=fy(()=>({onConnectWallet:T=>{d.current=T},onDisconnectWallet:T=>{g.current=T}}),[]);return gr.createElement(hr.Provider,{value:C},gr.createElement(uy,{allBlockChains:a,providers:c,onUpdateState:y,autoConnect:!!S},t.children))}i(gy,"Main");function yr(t){let{config:e,...o}=t;return gr.createElement(Jp,{config:e},gr.createElement(gy,{...o,config:e}))}i(yr,"WidgetWallets");import Xi from"react";import hy,{Fragment as yy}from"react";import{MemoryRouter as Sy,useInRouterContext as Ty}from"react-router";function nc({children:t}){let o=Ty()?yy:Sy;return hy.createElement(o,null,t)}i(nc,"AppRouter");import{I18nManager as Iw}from"@rango-dev/ui";import Rl from"react";import Ue from"react";import{useRoutes as dw}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as _o,useRef as Er}from"react";import Je from"bignumber.js";import{create as vy}from"zustand";import{subscribeWithSelector as xy}from"zustand/middleware";import{getLastSuccessfulStep as ky}from"@rango-dev/queue-manager-rango-preset";import fA from"bignumber.js";function ha(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(ha,"getFeeLabel");var ya=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],rc=30;import{i18n as ht}from"@lingui/core";import{RouteEventType as R0}from"@rango-dev/queue-manager-rango-preset";import Ve from"bignumber.js";import{PendingSwapNetworkStatus as Tr}from"rango-types";import{i18n as qe}from"@lingui/core";var re=i(()=>({genericServerError:qe.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:qe.t("Please reset your liquidity sources."),description:qe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:qe.t("No Routes Found."),description:qe.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:qe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:qe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:qe.t("High Price Impact"),title:qe.t("Price impact is too high!"),description:qe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:qe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:qe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:qe.t("USD Price Unknown"),title:qe.t("USD Price Unknown, Cannot calculate Price Impact."),description:qe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:qe.t("Confirm USD Price Unknown")}}),"errorMessages");function ic(t){switch(t.type){case 0:return t.diagnosisMessage??re().noResultError.title;case 1:return re().genericServerError;default:return""}}i(ic,"getQuoteErrorMessage");import{i18n as Sr}from"@lingui/core";var po=i(()=>({connectWallet:Sr.t("Connect Wallet"),swap:Sr.t("Swap"),swapAnyway:Sr.t("Swap anyway"),ethWarning:Sr.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function ac(t,e){return(parseInt(e.toFixed(2)||"0")<=-10&&t?.gte(new Ve(400))||parseInt(e.toFixed(2)||"0")<=-5&&t?.gte(new Ve(1e3)))??!1}i(ac,"hasHighValueLoss");function sc(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ve(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(sc,"hasLimitError");function lc(t){let e=(t||[]).filter(l=>{let p=l.fromAmountMinValue?new Ve(l.fromAmountMinValue):null,c=l.fromAmountMaxValue?new Ve(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 Ve(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ve(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=ht.t({id:"Required: >= {min} {symbol}",values:{min:D(o,6,6),symbol:e.from.symbol}}),s=re().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=ht.t({id:"Required: > {min} {symbol}",values:{min:D(o,6,6),symbol:e.from.symbol}}),s=re().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=ht.t({id:"Required: <= {max} {symbol}",values:{max:D(n,6,6),symbol:e.from.symbol}}),s=re().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=ht.t({id:"Required: < {max} {symbol}",values:{max:D(n,6,6),symbol:e.from.symbol}}),s=re().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(lc,"getLimitErrorMessage");function pc(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:p}=t;return e!=="success"?{title:po().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:po().swap,action:"confirm-swap",disabled:!0}:s?{title:po().swapAnyway,action:"confirm-warning",disabled:!1}:p?{title:po().ethWarning,action:"confirm-warning",disabled:!1}:{title:po().swap,action:"confirm-swap",disabled:!1}:{title:po().connectWallet,action:"connect-wallet",disabled:!1}}i(pc,"getSwapButtonState");function Sa(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(Ge))&&e&&e!=="0"&&n!==0)}i(Sa,"canComputePriceImpact");function Ta(t,e){let o=Ge;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 Ve(r.amount).multipliedBy(a||0))}return o}i(Ta,"getUsdFeeOfStep");function Cr(t,e){return t.reduce((o,n)=>o.plus(Ta(n,e)),Ge)}i(Cr,"getTotalFeeInUsd");function Ca(t){let e=Ge;return e=e.plus(new Ve(t.amount).multipliedBy(t.price||0)),e}i(Ca,"getUsdFee");function cc(t){return t.reduce((e,o)=>e.plus(Ca(o)),Ge)}i(cc,"getTotalFeesInUsd");function uc(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(uc,"getFeesGroup");function mc(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(mc,"checkSlippageErrors");function dc(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(dc,"checkSlippageWarnings");function kr(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(kr,"getMinRequiredSlippage");function fc(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(fc,"hasProperSlippage");function gc(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:p,slippage:c,affiliateRef:u,affiliatePercent:m,affiliateWallets:d,destination:g,enableCentralizedSwappers:f}=t,y=a?.reduce((T,k)=>(T[k.chain]=k.address,T),{}),S=[];return r?.forEach(T=>{S.push({blockchain:T.chain,addresses:[T.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:m??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:y??{},slippage:c.toString(),...g&&{destination:g},...p&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!p&&{swapperGroups:l?.filter(T=>!s.includes(T)),swappersGroupsExclude:!1},enableCentralizedSwappers:f}}i(gc,"createQuoteRequestBody");function hc(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(hc,"getWalletsForNewSwap");function Po(t){return t?.outputAmount||null}i(Po,"getQuoteOutputAmount");function yc(t,e){return new Ve(e).div(new Ve(t)).minus(1).multipliedBy(100).toNumber()}i(yc,"getPercentageChange");function Sc(t,e){let o=Po(t),n=Po(e);if(!o||!n)return!1;let r=mt(o,n);return r?r<=-1:!0}i(Sc,"isOutputAmountChangedALot");function Tc(t,e,o){let n=t.validationStatus,r=io({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>wc(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,p=D(new Ve(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),c=D(new Ve(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=ht.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=ht.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=ht.t(" for input and network fee")),ht.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:ct(s.asset.blockchain,o)}})})}i(Tc,"generateBalanceWarnings");function Vt(t,e){return(t?new Ve(t):Ge).multipliedBy(e||0)}i(Vt,"calcOutputUsdValue");function cn(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Tr.NetworkChanged}i(cn,"isNetworkStatusInWarningState");function Cc(t,e){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),cn(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case Tr.WaitingForConnectingWallet:n=n||ht.t("Waiting for connecting wallet");break;case Tr.WaitingForQueue:n=n||ht.t("Waiting for other running tasks to be finished");break;case Tr.WaitingForNetworkChange:n=n||ht.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(Cc,"getSwapMessages");function kc(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(kc,"getLastConvertedTokenInFailedSwap");function vc(t){return t.status==="failed"}i(vc,"shouldRetrySwap");function xc(t,e,o,n,r,a){if(!n||t)return!0;let s=io({filter:"all",quote:n}),l=io({filter:"required",quote:n}),p=s.every(m=>r.some(d=>d.chain===m)),c=l.every(m=>r.some(d=>d.chain===m)),u=o&&a?Mo(a,o):!1;return!e&&!p||e&&!o||e&&!!o&&(!u||!c)}i(xc,"isConfirmSwapDisabled");function bc(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(bc,"isTokensIdentical");function co(t){let e=t?.swaps||[];return e[e.length-1].to.usdPrice}i(co,"getQuoteToTokenUsdPrice");function un(t){return(t?.swaps||[])[0].from.usdPrice}i(un,"getQuoteFromTokenUsdPrice");function ka(t,e){let o=t?.swaps||[],n=e?.swaps||[];return o.length!==n.length}i(ka,"isNumberOfSwapsChanged");function va(t,e){let o=t?.swaps.map(r=>r.swapperId)||[],n=e?.swaps.map(r=>r.swapperId)||[];return!ta(o,n)}i(va,"isQuoteSwappersUpdated");function xa(t,e){let o=t?.swaps.map(r=>r.to.symbol)||[],n=e?.swaps.map(r=>r.to.symbol)||[];return!ta(o,n)}i(xa,"isQuoteInternalCoinsUpdated");function Ic(t,e){return ka(t,e)||va(t,e)||xa(t,e)}i(Ic,"isQuoteChanged");function wc(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(wc,"getRequiredBalanceOfWallet");function Lt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Lt,"getPriceImpactLevel");function xr(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=ky(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=rn(a?a.toBlockchain:n.fromBlockchain,e),p=rn(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),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:c,toBlockchain:p,toToken:u,inputAmount:m}}i(xr,"createRetryQuote");function Do(t,e){let{fromToken:o,toToken:n,findToken:r,userSlippage:a}=e,s=Vt(t.requestAmount,un(t)||o?.usdPrice),l=Vt(t.outputAmount,co(t)||n?.usdPrice);if(t&&s&&l){let u=mt(s.toString(),l.toString());if(!!u&&ac(s,u)){let d=Cr(t?.swaps,r),g=Lt(u);return{type:0,inputUsdValue:s,outputUsdValue:l,priceImpact:u,totalFee:d,warningLevel:g}}}else if(t&&(!s||!l))return{type:1};let p=kr(t.swaps),c=a>Vp;if(fc(e.userSlippage.toString(),p)){if(c&&parseFloat(p??"0")<a)return{type:3,slippage:a.toString()}}else return{type:2,recommendedSlippages:dc(t,a),minRequiredSlippage:p};return null}i(Do,"generateQuoteWarnings");function mt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:yc(t.toString(),e.toString());return n&&n<0?n:null}i(mt,"getPriceImpact");var Ac=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"),br=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"),Nc=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"),Wc=i(t=>{let e=i((o,n)=>{let r=ya.indexOf(o.value),a=ya.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");var wr=i((t,e)=>t?.usdPrice?new Je(e||Ge).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),q=Ht(vy()(xy(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Je(0),outputUsdValue:new Je(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=Ge,a=o.inputUsdValue;return sn(o.inputAmount)?(e&&(n=e?.outputAmount?new Je(e?.outputAmount):null,a=Vt(o.inputAmount,un(e)||o.fromToken?.usdPrice),r=Vt(e.outputAmount,co(e)||o.toToken?.usdPrice)),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new Je(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new Je(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new Je(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:wr(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 Je(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 Je(0),selectedQuote:null},...!!o.fromToken&&{inputUsdValue:wr(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:wr(n??null,s),outputUsdValue:new Je(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?wr(e.toToken,e.outputAmount?.toString()||""):new Je(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new Je(0),inputUsdValue:new Je(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new Je(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})})))),Mc=q.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&xe.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&&xe.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 Bc(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:p,toBlockchain:c}=q(),u=h().config,m=h().fetchStatus,d=h().blockchains(),g=h().tokens(),{findToken:f}=h(),{setAffiliateRef:y,setAffiliatePercent:S,setAffiliateWallets:C}=h(),T=u?.from?.tokens,k=u?.from?.blockchains,v=u?.to?.tokens,w=u?.to?.blockchains,A=Er(void 0),b=Er(void 0),x=Er(void 0),E=Er(void 0);_o(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),_o(()=>{if(m==="success"){r();let I=d.find(N=>N.name===u?.from?.blockchain),P=u?.from?.token,H=P&&f(P);(I||!I&&x.current)&&n(I??null),H?a({token:H,meta:{blockchains:d,tokens:g}}):!H&&A.current&&a({token:null}),x.current=u?.from?.blockchain,A.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,m]),_o(()=>{sa(s,T)&&a({token:null}),la(p,k)&&n(null)},[T,k]),_o(()=>{sa(l,v)&&a({token:null}),la(c,w)&&o(null)},[v,w]),_o(()=>{if(m==="success"){r();let I=d.find(N=>N.name===u?.to?.blockchain),P=u?.to?.token,H=P&&f(P);(I||!I&&E.current)&&o(I??null),H?e({token:H,meta:{blockchains:d,tokens:g}}):!H&&b.current&&e({token:null}),E.current=u?.to?.blockchain,b.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,m]),_o(()=>{y(u?.affiliate?.ref??null),S(u?.affiliate?.percent??null),C(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(Bc,"useSyncStoresWithConfig");import{useEffect as Ea,useRef as by}from"react";import{useInRouterContext as wy,useLocation as Ey,useSearchParams as Iy}from"react-router-dom";function ba(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(ba,"convertTokenSearchParamToAsset");function wa(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(wa,"tokenToSearchParam");function Aa(){let t=Ey(),[e,o]=Iy(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:p,setToBlockchain:c,setFromToken:u,setToToken:m,setInputAmount:d}=q(),g=h().fetchStatus,f=h().blockchains(),y=h().tokens(),S=wy(),{updateIframe:C,updateCampaignMode:T}=h(),k=h().isInCampaignMode(),v=by(),{findToken:w}=h(),A=i(()=>{let x={};for(let[K,ge]of e.entries())K.startsWith("utm_")&&(x[K]=ge);let E=e.get("fromAmount"),I=e.get("fromBlockchain"),P=e.get("fromToken"),H=e.get("toBlockchain"),N=e.get("toToken"),J=e.get("autoConnect"),ne=e.get("clientUrl"),L=e.get("liquiditySources"),M=e.get("blockchain");return{fromAmount:E,fromBlockchain:I,fromToken:P,toBlockchain:H,toToken:N,autoConnect:J,clientUrl:ne,liquiditySources:L,utmQueryParams:x,blockchain:M}},"getUrlSearchParams"),b=i(x=>{for(let E in x)x[E]||delete x[E];o(x,{replace:!0})},"updateUrlSearchParams");Ea(()=>{let{autoConnect:x,clientUrl:E,utmQueryParams:I,blockchain:P}=A();S&&g==="success"&&b({fromBlockchain:n?.name,fromToken:wa(a),toBlockchain:r?.name,toToken:wa(s),fromAmount:l,autoConnect:x??void 0,clientUrl:E??void 0,blockchain:P??void 0,liquiditySources:k?v.current:void 0,...I})},[t.pathname,l,n,a,r,s,k]),Ea(()=>{if(!S)return;let x=A();if(!v.current&&x.liquiditySources&&(v.current=x.liquiditySources),x.fromAmount&&d(x.fromAmount),g==="success"){let E=f.find(N=>N.name===x.fromBlockchain),I=x.fromToken&&E?w(ba(x.fromToken,E)):void 0,P=f.find(N=>N.name===x.toBlockchain),H=x.toToken&&P?w(ba(x.toToken,P)):void 0;E&&(p(E),I&&u({token:I,meta:{blockchains:f,tokens:y}})),P&&(c(P),H&&m({token:H,meta:{blockchains:f,tokens:y}}))}},[g]),Ea(()=>{let{clientUrl:x,liquiditySources:E}=A();C("clientUrl",x||void 0),T("liquiditySources",E?.split(",")??void 0)},[])}i(Aa,"useSyncUrlAndStore");import{i18n as Nt}from"@lingui/core";import{Alert as JS,Button as Su,darkTheme as RS,Divider as fn,DoneIcon as eT,MessageBox as tT,styled as oT,TextField as nT,Typography as rT}from"@rango-dev/ui";import be,{useEffect as iT,useState as Pr}from"react";import{useNavigate as aT,useSearchParams as sT}from"react-router-dom";import{ChevronRightIcon as Ay,Divider as $c,Image as Ny,Typography as Fc}from"@rango-dev/ui";import yt from"react";import{darkTheme as Lc,styled as Na}from"@rango-dev/ui";var Pc=Na("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Lc} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Lc} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),Dc=Na("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),_c=Na("div",{display:"flex"});function Wa(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return yt.createElement(Dc,null,yt.createElement(Fc,{size:"large",variant:"label"},n),yt.createElement($c,{size:10}),yt.createElement(Pc,{onClick:s?void 0:e,disabled:s},yt.createElement(_c,null,r&&yt.createElement(yt.Fragment,null,yt.createElement(Ny,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),yt.createElement($c,{size:4,direction:"horizontal"})),yt.createElement(Fc,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),yt.createElement(Ay,{size:12,color:"black"})))}i(Wa,"BlockchainSelectorButton");import{Modal as Wy}from"@rango-dev/ui";import My from"react";function X(t){let{watermark:e}=ue();return My.createElement(Wy,{hasWatermark:e==="FULL",...t},t.children)}i(X,"WatermarkedModal");import{i18n as Ba}from"@lingui/core";import{Button as By,Divider as mn,ExternalLinkIcon as Ly,Image as Py,Typography as Fo}from"@rango-dev/ui";import De from"react";function Oc(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(Oc,"generateExplorerLink");import{darkTheme as $o,styled as Uc}from"@rango-dev/ui";var Ma=Uc("a",{textDecoration:"none",color:"$colors$neutral700",[`.${$o} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${$o} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${$o} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${$o} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),zc=Uc("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${$o} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${$o} &`]:{color:"$colors$neutral900"}}});function La(t){let{open:e,onClose:o,token:n,onSubmitClick:r,blockchain:a}=t,s=Oc(n.address,a);return De.createElement(X,{open:e,dismissible:!0,onClose:o,container:B()},De.createElement(zc,null,De.createElement(Py,{src:n.image,size:45,type:"circular"}),De.createElement(Fo,{variant:"title",size:"medium"},n.name),De.createElement(Fo,{variant:"body",size:"small",className:"_blockchain-name"},a.displayName),De.createElement(mn,{size:4}),De.createElement(Fo,{variant:"body",size:"medium"},s?De.createElement(Ma,{hasHover:!0,href:s,target:"_blank",rel:"nofollow noreferrer"},n.address,De.createElement(Ly,{size:12,color:"gray"})):De.createElement(Ma,null,n.address)),De.createElement(mn,{size:4}),n.coinSource&&De.createElement(Fo,{className:"_coin-source",variant:"body",size:"xsmall"},Ba.t("via")," ",De.createElement(Fo,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),De.createElement(mn,{size:"32"}),De.createElement(Fo,{size:"medium",variant:"body",className:"_custom-token-description"},Ba.t("This token doesn't appear on the active token list(s). Make sure this is the token that you want to trade."))),De.createElement(mn,{size:40}),De.createElement(mn,{size:10}),De.createElement(By,{variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:r},Ba.t("Import")))}i(La,"CustomTokenModal");import{useManager as VS}from"@rango-dev/queue-manager-react";import{BottomLogo as KS,Divider as du,Header as jS}from"@rango-dev/ui";import Ie,{useEffect as os,useRef as fu,useState as XS}from"react";import{useRef as Dy}from"react";function Ir(){return window.self!==window.top}i(Ir,"isAppLoadedIntoIframe");function Pa(){let t=Dy(null),{iframe:e}=h(),o=Ir()&&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(Pa,"useIframe");import{useNavigate as _y}from"react-router-dom";function Re(){let t=_y();return()=>t(-1)}i(Re,"useNavigateBack");import{createTheme as za,darkTheme as Yy,lightTheme as Zy}from"@rango-dev/ui";import{useEffect as Jy,useState as Ry}from"react";import{theme as jy,darkColors as Xy}from"@rango-dev/ui";import Oa from"react";function $y(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i($y,"expandShortHexColor");function Fy(t){return/[0-9]+$/.test(t)}i(Fy,"isOverridingColor");function Oy(t,e){return t.padStart(e,"0")}i(Oy,"pad");function Da(t){let e=Math.min(Math.max(Math.round(t),0),255);return Oy(e.toString(16),2)}i(Da,"intToHex");function Uy(t){return`#${Da(t.red)}${Da(t.green)}${Da(t.blue)}`}i(Uy,"rgbToHex");function zy(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(zy,"hexToRGB");function Qy(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(Qy,"generateShade");function qy(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(qy,"generateTint");function Hy(t){return Qc(t,Qy)}i(Hy,"calculateShades");function Gy(t){return Qc(t,qy)}i(Gy,"calculateTints");function Qc(t,e){let o=zy(t),n=[];for(let r=1;r<9;r++)n.push(Uy(e(o,r)));return n}i(Qc,"calculateColors");function _a(t,e,o){let a=Gy(t).reverse().concat(t),s=Hy(t),l=a.concat(s),p={},c=l.length;for(let u=0;u<c;u++){let m=100+(o?c-1-u:u)*50;p[`${e}${m}`]=l[u]}return p}i(_a,"createTintsAndShades");function $a(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)&&!Fy(r)){let p=$y(a);Object.assign(n,_a(p,r,s))}}return{...n,...e}}i($a,"expandToGenerateThemeColors");var qc=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Vy=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=qc(o%52)+e;return qc(o%52)+e},"toAlphabeticName"),Ky=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),Fa=i(t=>Vy(Ky(5381,JSON.stringify(t))>>>0),"toHash");function Ua(t){let e=jy.colors,o={...e,...Xy},n,r;if(t?.light){let s={colors:$a(e,t.light)};n={id:`${aa}-light-${Fa(s)}`,tokens:s}}if(t?.dark){let s={colors:$a(o,t.dark,{reverseNeutralRange:!0})};r={id:`${aa}-dark-${Fa(s)}`,tokens:s}}return{light:n,dark:r}}i(Ua,"customizedThemeTokens");function Hc(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>Oa.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(Oa.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(Oa.cloneElement(e,{key:l}))}}),o}i(Hc,"joinList");function Gc(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(Gc,"doesWindowPreferDarkColorScheme");function Oo(t){let{colors:e,fontFamily:o=rp,borderRadius:n=Wp,secondaryBorderRadius:r=Mp}=t,[a,s]=Ry(Gc()?"dark":"light"),{theme:l}=h(),{dark:p,light:c}=Ua(e),u=za({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[u.className,Zy.className],d=[u.className,Yy.className];if(c){let f=za(c.id,c.tokens);m.push(f.className)}if(p){let f=za(p.id,p.tokens);d.push(f.className)}return Jy(()=>{let f=i(y=>{y.matches?s("dark"):s("light")},"switchThemeListener");return Gc()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",f),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",f)}},[]),{activeTheme:i(()=>{let f=m.join(" "),y=d.join(" ");return l==="auto"?a==="dark"?y:f:l==="dark"?y:f},"getActiveTheme"),mode:l==="auto"?a:l}}i(Oo,"useTheme");var dt=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 Vc}from"@lingui/core";import{Alert as eS,Button as tS}from"@rango-dev/ui";import Kc from"react";function Qa(t){return Kc.createElement(eS,{action:Kc.createElement(tS,{onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},Vc.t("Activate this tab")),type:"warning",variant:"alarm",title:Vc.t("Another tab is open and handles transactions.")})}i(Qa,"ActivateTabAlert");import{i18n as qa}from"@lingui/core";import{Button as oS,Divider as nS,MessageBox as rS}from"@rango-dev/ui";import Ar from"react";function Ha(t){let{open:e,onClose:o,onConfirm:n}=t;return Ar.createElement(X,{open:e,dismissible:!0,onClose:o,container:B()},Ar.createElement(rS,{title:qa.t("Activate current tab"),type:"warning",description:qa.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.")},Ar.createElement(nS,{size:20}),Ar.createElement(oS,{variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},qa.t("Confirm"))))}i(Ha,"ActivateTabModal");import{ChevronLeftIcon as sS}from"@rango-dev/ui";import eu from"react";import{css as iS,darkTheme as jc,IconButton as aS,styled as uo}from"@rango-dev/ui";var At=uo(aS,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${jc} &`]:{backgroundColor:"$neutral"}}}),Xc=uo("div",{position:"absolute",background:"$secondary500",[`.${jc} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Kt=uo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Yc=uo("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"}}}}),Zc=uo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Jc=uo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Rc=iS({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),Nr=uo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function Ga(t){return eu.createElement(At,{variant:"ghost",size:"small",onClick:t.onClick},eu.createElement(sS,{color:"black",size:16}))}i(Ga,"BackButton");import{i18n as lS}from"@lingui/core";import{Button as pS,Typography as cS}from"@rango-dev/ui";import Va from"react";function Ka(t){return Va.createElement(Kt,null,Va.createElement(pS,{variant:"ghost",onClick:t.onClick,size:"xsmall"},Va.createElement(cS,{variant:"label",size:"medium",color:"error500"},lS.t("Cancel"))))}i(Ka,"CancelButton");import{i18n as SS}from"@lingui/core";import{Image as TS,Tooltip as CS,WalletIcon as kS}from"@rango-dev/ui";import fo from"react";import{WalletState as ja}from"@rango-dev/ui";import{useWallets as uS}from"@rango-dev/wallets-react";import{detectMobileScreens as mS,KEPLR_COMPATIBLE_WALLETS as dS,WalletTypes as Uo}from"@rango-dev/wallets-shared";import{useCallback as fS,useEffect as gS,useState as hS}from"react";var yS=Object.values(Uo);function mo(t){let{chain:e,onBeforeConnect:o,onConnect:n,onError:r}=t,{config:a}=h(),{state:s,disconnect:l,getWalletInfo:p,connect:c}=uS(),{connectedWallets:u}=oe(),m=h().blockchains(),d=Pp(a?.wallets,{trezorManifest:a?.trezorManifest,walletConnectProjectId:a?.walletConnectProjectId,walletConnectListedDesktopWalletLink:a.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink})||yS,g=yp(s,p,d,e);g=mS()?g.filter(b=>b.showOnMobile!==!1&&s(b.type).installed):g;let f=xp(g),[y,S]=hS(""),C=i(b=>!u.find(x=>x.walletType===b&&x.chain===e),"isExperimentalChainNotAdded"),T=i(async(b,x)=>{let E=s(b);try{if(y&&S(""),E.connected)await l(b);else{if(Rn(g,a.multiWallets))return;o?.(b),await c(b,void 0,x),n?.(b)}}catch(I){r?.(I?.message),S("Error: "+I?.message)}},"handleClick"),k=fS(()=>{let b=g?.filter(x=>x.state===ja.CONNECTING)||[];for(let x of b)l(x.type)},[Ep(g)]),v=i(async b=>{s(b).connected&&await l(b)},"disconnectWallet");gS(()=>()=>{k()},[]);let w=i(b=>{let x=b.find(I=>I.type===Uo.DEFAULT);return!x||x.state===ja.NOT_INSTALLED?!1:b.filter(I=>I.state!=ja.NOT_INSTALLED&&![Uo.DEFAULT,Uo.WALLET_CONNECT_2,Uo.LEDGER].includes(I.type)&&p(I.type).supportedChains.filter(P=>P.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),A=i((b,x,E)=>ar(E,x)&&C(b)&&!dS.includes(b)||b==Uo.DEFAULT&&!w(g),"shouldExcludeWallet");return{list:f.filter(b=>!A(b.type,e??"",m)),error:y,handleClick:T,disconnectConnectingWallets:k,disconnectWallet:v}}i(mo,"useWalletList");function Xa(t){let{list:e}=mo({}),o=e.filter(r=>r.state==="connected"),n=o.length?fo.createElement("div",{className:Rc()},o.map(r=>fo.createElement(Nr,{key:r.title},fo.createElement(TS,{src:r.image,size:14})))):SS.t("Connect Wallet");return fo.createElement(CS,{container:t.container,side:"bottom",content:n},fo.createElement(At,{variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&fo.createElement(Xc,null),fo.createElement(kS,{size:18,color:"black"})))}i(Xa,"WalletButton");import{i18n as Mr}from"@lingui/core";import{NotificationsIcon as $S,Popover as FS,SettingsIcon as OS,Tooltip as Br,TransactionIcon as US}from"@rango-dev/ui";import _e from"react";import{Notifications as wS}from"@rango-dev/ui";import ES from"react";import{useNavigate as IS}from"react-router-dom";import{create as vS}from"zustand";import{persist as xS,subscribeWithSelector as bS}from"zustand/middleware";var Ne=Ht(vS()(xS(bS((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 Ya(){let t=IS(),{getNotifications:e,clearNotifications:o}=Ne(),n=e(),r=h().blockchains(),{findToken:a}=h();return ES.createElement(wS,{list:n,getBlockchainImage:l=>fp(l,r)??"",getTokenImage:l=>a(l)?.image??"",onClickItem:i(l=>{t(`${F.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(Ya,"NotificationContent");import{useManager as AS}from"@rango-dev/queue-manager-react";import{InProgressIcon as NS}from"@rango-dev/ui";import tu from"react";var WS=i(()=>{let{manager:t}=AS();return dt(t).map(({swap:o})=>o).find(o=>o.status==="running")?tu.createElement(Jc,null,tu.createElement(NS,{color:"info",size:6})):null},"InProgressTransactionBadge"),ou=WS;import{EventSeverity as MS}from"@rango-dev/queue-manager-rango-preset";import{Typography as BS}from"@rango-dev/ui";import nu from"react";function ru(){let{getNotifications:t}=Ne(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===MS.WARNING);return o?nu.createElement(Yc,{isSever:n},nu.createElement(BS,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(ru,"NotificationsBadge");import{RefreshProgressButton as LS}from"@rango-dev/ui";import Za,{useEffect as PS,useState as iu}from"react";var DS=1e3,au=60,_S=100;function Wr({onClick:t}){let[e,o]=iu(0),[n,r]=iu(!1),a=i(p=>{document.hidden&&p&&s(p)},"handleVisibilityChange");PS(()=>{let p;return t?p=window.setInterval(()=>{o(c=>c+1),e===au&&l()},DS):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 Za.createElement(At,{variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},Za.createElement(Zc,{onTransitionEnd:()=>r(!1),isRefetched:n},Za.createElement(LS,{size:22,color:t?"black":"gray",progress:e/au*_S})))}i(Wr,"RefreshButton");function go(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=h(),l=Ze("notification",s)||r.includes("notifications");return _e.createElement(_e.Fragment,null,!r.includes("refresh")&&_e.createElement(Br,{container:a||B(),side:"top",content:Mr.t("Refresh")},_e.createElement(Wr,{onClick:e})),!l&&_e.createElement(FS,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:B(),content:_e.createElement(Ya,null)},_e.createElement("div",null,_e.createElement(Br,{container:B(),side:"top",content:Mr.t("Notifications")},_e.createElement(At,{size:"small",variant:"ghost"},_e.createElement($S,{size:18,color:"black"}),_e.createElement(ru,null))))),!r.includes("settings")&&_e.createElement(Br,{container:B(),side:"top",content:Mr.t("Settings")},_e.createElement(At,{size:"small",variant:"ghost",onClick:n},_e.createElement(OS,{size:18,color:"black"}))),!r.includes("history")&&_e.createElement(Br,{container:B(),side:"top",content:Mr.t("Transactions History")},_e.createElement(At,{size:"small",variant:"ghost",onClick:o},_e.createElement(US,{size:18,color:"black"}),_e.createElement(ou,null))))}i(go,"HeaderButtons");import{i18n as Ja}from"@lingui/core";import{Divider as lu,MessageBox as qS,RefreshIcon as HS}from"@rango-dev/ui";import zo from"react";import{Button as zS,styled as QS}from"@rango-dev/ui";var su=QS(zS,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Ra(t){let{open:e,onClose:o}=t;return zo.createElement(X,{open:e,dismissible:!0,onClose:o,container:B()},zo.createElement(qS,{title:Ja.t("Something went wrong"),type:"error",description:Ja.t("Something went wrong. Please refresh the app.")},zo.createElement(lu,{size:30}),zo.createElement(su,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},zo.createElement(HS,{size:20,color:"primary"}),zo.createElement(lu,{size:4,direction:"horizontal"}),Ja.t("Refresh"))))}i(Ra,"RefreshModal");function es(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(es,"onScrollContentAttachStatusToContainer");import{css as GS,styled as ts}from"@rango-dev/ui";var pu="700px",Lr=GS({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),cu=ts("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:pu},fixed:{height:pu}}}}),uu=ts("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),mu=ts("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 ie(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=Pa(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l}=h(),[p,c]=XS(!1),u=oe.use.connectedWallets(),{config:{features:m,theme:d}}=h(),{watermark:g}=ue(),f=g==="FULL",{activeTheme:y}=Oo(d||{}),S=Ze("connectWalletButton",m),{isActiveTab:C,tabManagerInitiated:T,showActivateTabModal:k,setShowActivateTabModal:v,activateCurrentTab:w}=ue(),A=Re(),{manager:b}=VS(),E=dt(b).map(({swap:ne})=>ne).some(ne=>ne.status==="running"),I=i(()=>w(lo.forceClaim,E),"onActivateTab"),P=i(()=>{r.onWallet?.()},"onConnectWallet"),H=typeof r.hasBackButton>"u"||r.hasBackButton,N=fu(null),J=fu(null);return os(()=>(Ir()&&J.current&&e(J.current),()=>{o()}),[]),os(()=>(N.current?.addEventListener("scroll",es),()=>{N.current?.removeEventListener("scroll",es)}),[]),os(()=>{c(l==="failed")},[l]),Ie.createElement(cu,{height:s,id:ke.SWAP_BOX_ID,className:`${y()} ${Lr()}`,ref:J},Ie.createElement(jS,{prefix:Ie.createElement(Ie.Fragment,null,H&&Ie.createElement(Ga,{onClick:()=>{A(),r.onBack&&r.onBack()}})),title:r.title,suffix:Ie.createElement(Ie.Fragment,null,r.suffix,r.onWallet&&!S&&Ie.createElement(Xa,{container:B(),onClick:P,isConnected:!!u?.length}),r.onCancel&&Ie.createElement(Ka,{onClick:r.onCancel}))}),Ie.createElement(uu,{ref:N},n),Ie.createElement(Ha,{open:k,onClose:()=>v(!1),onConfirm:I}),Ie.createElement(mu,null,Ie.createElement("div",{className:"footer__content"},T&&!C&&Ie.createElement("div",{className:"footer__alert"},Ie.createElement(Qa,{onActivateTab:I}),Ie.createElement(du,{size:10})),a),Ie.createElement(du,{size:12}),Ie.createElement("div",{className:`footer__logo ${f?"logo__show":"logo__hidden"}`},Ie.createElement(KS,null))),Ie.createElement(Ra,{open:p,onClose:()=>c(!1)}))}i(ie,"Layout");import{styled as YS}from"@rango-dev/ui";var gu="$20 $20 $10 $20",dn=YS("div",{padding:gu,overflowY:"auto",flexGrow:1});import{styled as ZS}from"@rango-dev/ui";var le=ZS("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 Qo}from"@lingui/core";import{useState as hu}from"react";function yu(){let[t,e]=hu(!1),[o,n]=hu(void 0),{findToken:r}=h(),a=h().customTokens();function s(p,c){switch(p){case"duplicated":return{title:Qo.t("Duplicate Token"),message:Qo.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{title:Qo.t("Token Already Exists"),message:Qo.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{title:Qo.t("Token Not Found"),message:Qo.t(`Sorry, no token was found on ${c} blockchain with the provided address. please make sure you have entered the right token address.`)}}}return i(s,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:p,tokenAddress:c})=>{e(!0);try{if(a.some(y=>y.address?.toLowerCase()===c.toLowerCase())){let y=s("duplicated");n(y);return}let m=await fetch(`${ut("BASE_URL")}/meta/token?apiKey=${ut("API_KEY")}&blockchain=${p}&address=${c}`),d=m.headers.get("content-type"),g=d&&d.includes("application/json")&&await m.json();if(!g||g.error){let y=s("not-found",p);n(y);return}if(r({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let y=s("token-exist");n(y);return}return g}catch(u){throw n(void 0),new Error(u.message)}finally{e(!1)}},"fetchCustomToken"),loading:t,error:o}}i(yu,"useFetchCustomToken");var lT=oT("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${RS} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}}),pT=1e3;function Tu(){let t=aT(),[e]=sT(),o=Re(),{setCustomToken:n}=h(),r=h().blockchains(),a=e.get("blockchain")||"",s=rn(a,r),[l,p]=Pr(""),[c,u]=Pr(!1),[m,d]=Pr(),{fetchCustomToken:g,loading:f,error:y}=yu(),[S,C]=Pr(""),T=!!s&&Mo(s,l),k=!s||!l||!T,v=i(async()=>{if(s)try{let b=await g({blockchain:a,tokenAddress:l});C(""),b&&d(b)}catch(b){b.message==="Failed to fetch"&&(C(Nt.t("Network Error")),u(!0))}},"getCustomToken"),w=i(()=>{y&&p(""),u(!1)},"closeErrorModal"),A=i(async()=>{S&&setTimeout(async()=>{await v()},pT),w()},"handleErrorModalButtonClick");return iT(()=>{y&&u(!0)},[y]),be.createElement(ie,{header:{title:Nt.t("Add Custom Token")}},be.createElement(le,null,be.createElement(lT,null,be.createElement("div",null,be.createElement(Wa,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!s?.logo,value:s?{name:s.displayName,logo:s.logo}:void 0,title:Nt.t("Select chain"),placeholder:Nt.t("Select chain")}),be.createElement(fn,{size:"24"}),be.createElement(rT,{size:"large",variant:"label"},Nt.t("Enter Address")),be.createElement(fn,{size:10}),be.createElement(nT,{fullWidth:!0,disabled:!s,variant:"contained",placeholder:Nt.t("Enter token address"),size:"large",value:l,suffix:!!l&&T&&be.createElement(eT,{color:"success",size:12}),onChange:b=>p(b.target.value)}),!T&&!!l&&be.createElement(be.Fragment,null,be.createElement(fn,{size:4}),be.createElement(JS,{type:"error",variant:"alarm",title:"Invalid Address"}))),be.createElement(Su,{disabled:k,type:"primary",variant:"contained",loading:f,size:"large",onClick:v},Nt.t("Import"))),be.createElement(X,{open:c,dismissible:!0,onClose:w,container:B()},be.createElement(tT,{title:y?.title||S,type:"error",description:y?.message||Nt.t("Failed Network, Please retry.")},be.createElement(fn,{size:40}),be.createElement(fn,{size:10}),be.createElement(Su,{variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:A},S?Nt.t("Retry"):Nt.t("Add another custom token")))),s&&m&&be.createElement(La,{blockchain:s,token:m,onSubmitClick:()=>{m&&(n(m),d(void 0),o())},onClose:()=>d(void 0),open:!!s&&!!m})))}i(Tu,"AddCustomTokenPage");import{i18n as Fs}from"@lingui/core";import{useManager as Ck}from"@rango-dev/queue-manager-react";import{Alert as Ed,Button as kk,css as Us,Divider as Os,IconButton as Id,styled as vk,Typography as xk,WalletIcon as bk}from"@rango-dev/ui";import Be,{useEffect as fi,useLayoutEffect as wk,useRef as Ek,useState as In}from"react";import{useNavigate as Ik}from"react-router-dom";import{i18n as Co}from"@lingui/core";import{Alert as rm,BalanceErrors as pC,Button as im,ChevronLeftIcon as cC,Divider as Kr,MessageBox as uC,Typography as ys}from"@rango-dev/ui";import R,{useCallback as mC,useEffect as am,useMemo as dC,useState as ko}from"react";import{useNavigate as fC}from"react-router-dom";import{i18n as Dr}from"@lingui/core";function _r(t){switch(t.type){case 0:return Dr.t("Route has been updated.");case 3:return Dr.t("Output amount changed to {newOutputAmount} ({percentageChange}% change).",{newOutputAmount:t.newOutputAmount,percentageChange:t.percentageChange});case 1:return Dr.t("Route swappers has been updated.");case 2:return Dr.t("Route internal coins has been updated.");default:return""}}i(_r,"getQuoteUpdateWarningMessage");import{i18n as as}from"@lingui/core";import{Alert as gT,ChevronDownIcon as hT,CloseIcon as yT,Divider as Eu,IconButton as Iu,PasteIcon as ST,Typography as TT,WalletIcon as CT}from"@rango-dev/ui";import $e,{useEffect as kT,useRef as vT}from"react";import Ur,{useRef as dT}from"react";import*as qo from"@radix-ui/react-collapsible";import{keyframes as Cu,styled as $r}from"@rango-dev/ui";var ns=300,uT=Cu({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),mT=Cu({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),ku=$r(qo.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),rs=$r(qo.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Fr=$r(qo.Content,{overflow:"hidden",variants:{open:{true:{animation:`${uT} ${ns}ms ease-out`},false:{animation:`${mT} ${ns}ms ease-out`}}}}),Or=$r("div",{transition:`all ${ns}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function zr(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,p=dT(null);return Ur.createElement(ku,{ref:p,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&Ur.createElement(rs,{className:"collapsible_trigger",onClick:a},s),Ur.createElement(Fr,{className:"collapsible_content",open:e},r),l==="bottom"&&Ur.createElement(rs,{className:"collapsible_trigger",onClick:a},s))}i(zr,"CustomCollapsible");import{darkTheme as vu,styled as is,TextField as fT}from"@rango-dev/ui";var xu=is("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),bu=is(fT,{backgroundColor:"$neutral100",padding:"$15"}),wu=is("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${vu} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${vu} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Au(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=q(),{config:s}=h(),l=h().blockchains(),p=er(e.name,l),c=vT(null),u=s?.defaultCustomDestinations?.[e.name],m=navigator?.userAgent.includes("Firefox"),g=n&&!!r&&e&&!Mo(e,r),f=i(()=>{a("")},"handleClear"),y=i(async C=>{if(C.preventDefault(),navigator.clipboard!==void 0){let T=await navigator.clipboard.readText();a(T),c?.current?.focus()}},"handlePaste"),S=i(()=>r?$e.createElement(Iu,{onClick:f,variant:"ghost"},$e.createElement(yT,{size:12,color:"gray"})):m?null:$e.createElement(Iu,{onClick:y,variant:"ghost"},$e.createElement(ST,{size:16})),"renderSuffix");return kT(()=>{!!u&&r===null&&(a(u),o(!0))},[u]),$e.createElement(xu,null,$e.createElement(zr,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:$e.createElement(wu,null,$e.createElement("div",{className:"button__content"},$e.createElement(CT,{size:18,color:"info"}),$e.createElement(Eu,{size:4,direction:"horizontal"}),$e.createElement(TT,{variant:"label",size:"medium",color:n?"$neutral600":void 0},as.t("Send to a different address"))),$e.createElement(Or,{orientation:n?"up":"down"},$e.createElement(hT,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},$e.createElement(bu,{ref:c,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:as.t("Enter {blockchainName} address",{blockchainName:p}),value:r||"",suffix:S(),onChange:C=>{let T=C.target.value;a(T)}})),g&&$e.createElement($e.Fragment,null,$e.createElement(Eu,{size:4}),$e.createElement(gT,{variant:"alarm",type:"error",title:as.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(Au,"CustomDestination");import{css as xT,darkTheme as ss,IconButton as bT,styled as Pt}from"@rango-dev/ui";var Nu=Pt("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Wu=Pt("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),wT=Pt("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${ss} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$secondary100",[`.${ss} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$secondary100",[`.${ss} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Mu=Pt(wT,{alignSelf:"stretch",minHeight:"93px"}),Bu=Pt("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Lu=Pt(bT,{position:"absolute",left:"$20"}),Pu=Pt("div",{paddingTop:"$20"}),Du=xT({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),_u=Pt("div",{display:"flex"}),$u=Pt("div",{overflow:"visible",width:"100%"});import{i18n as St}from"@lingui/core";import{Button as iC,Divider as gs,Image as aC,MessageBox as Gr,SelectableWallet as sC,Typography as tm,WalletState as om}from"@rango-dev/ui";import fe,{useEffect as nm,useState as To}from"react";import{i18n as ju}from"@lingui/core";import{Divider as YT,getCategoriesCount as ZT,SelectableCategoryList as JT,styled as Yu,Typography as RT,Wallet as eC,WalletState as Xu}from"@rango-dev/ui";import ft,{useState as hn}from"react";import{i18n as Vo}from"@lingui/core";import{Button as NT,Divider as Uu,Image as WT,MessageBox as MT,Select as BT,TextField as LT}from"@rango-dev/ui";import{namespaces as PT}from"@rango-dev/wallets-shared";import et,{useEffect as DT,useState as zu}from"react";import{keyframes as ET,styled as Qr}from"@rango-dev/ui";var HL=Qr("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Ho=Qr("div",{position:"relative"}),IT=ET({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Go=Qr("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${IT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),qr=Qr("div",{"& img":{borderRadius:"50%"}});import{styled as Fu,Typography as AT}from"@rango-dev/ui";var Ou=Fu("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),ls=Fu(AT,{paddingLeft:"$10"}),ps={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"};var qu={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Qu(t){let e=t?PT[t].derivationPaths:null;return e?[...e,qu]:[]}i(Qu,"getDerivationPaths");function ho(t){let{onClose:e,onConfirm:o,selectedNamespace:n,image:r,type:a,open:s}=t,[l,p]=zu(null),[c,u]=zu("0"),m=l===qu.id,d=Qu(n),g=i(({value:y})=>{let S=d?.find(C=>C.id===y);S&&p(S.id)},"handleDerivationPathItemClick"),f=i(()=>{let y=d.find(S=>S.id===l);if(y)o(y.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return DT(()=>{p(Qu(n)[0]?.id||null)},[n]),et.createElement(X,{open:s,onClose:e,container:document.getElementById(ke.SWAP_BOX_ID)||document.body},et.createElement(Uu,{size:20}),et.createElement(MT,{type:"info",title:Vo.t("Select Derivation Path"),description:Vo.t(`In order to connect to ${a}, you must first select a Derivation Path`),icon:et.createElement(Ho,null,et.createElement(qr,null,et.createElement(WT,{src:r,size:45})),et.createElement(Go,null))}),et.createElement(Ou,null,et.createElement(ls,{variant:"body",size:"xsmall",color:"$neutral600"},Vo.t("Choose Derivation Path Template")),et.createElement(BT,{value:l||"",options:d.map(y=>({value:y.id,label:y.label})),variant:"filled",handleItemClick:g,styles:{trigger:ps}}),et.createElement(Uu,{size:20}),et.createElement(ls,{variant:"body",size:"xsmall",color:"$neutral600"},m?Vo.t("Enter Path"):Vo.t("Enter Index")),et.createElement(LT,{type:m?"text":"number",variant:"contained",value:c,onChange:y=>u(y.target.value),style:ps})),et.createElement(NT,{type:"primary",onClick:f,disabled:!d||!l||!c},Vo.t("Confirm")))}i(ho,"WalletDerivationPathModal");import{Divider as FT}from"@rango-dev/ui";import us from"react";import{i18n as Ko}from"@lingui/core";import{Image as _T,MessageBox as cs,WalletState as $T}from"@rango-dev/ui";import yo from"react";function Hu(t){let{state:e,image:o,error:n}=t;return e===$T.CONNECTED?yo.createElement(cs,{type:"success",title:Ko.t("Wallet Connected"),description:Ko.t("Your wallet is connected, you can use it to swap.")}):n?yo.createElement(cs,{type:"error",title:Ko.t("Failed to Connect"),description:n||Ko.t("Your wallet is not connected. Please try again.")}):yo.createElement(cs,{type:"loading",title:Ko.t("Connecting to your wallet"),description:Ko.t("Click connect in your wallet popup."),icon:yo.createElement(Ho,null,yo.createElement(qr,null,yo.createElement(_T,{src:o,size:45})),yo.createElement(Go,null))})}i(Hu,"ModalContent");function gn(t){let{open:e,onClose:o,...n}=t;return us.createElement(X,{open:e,onClose:o,container:document.getElementById(ke.SWAP_BOX_ID)||document.body},us.createElement(Hu,{...n}),us.createElement(FT,{direction:"vertical",size:32}))}i(gn,"WalletModal");import{i18n as ms}from"@lingui/core";import{Button as UT,Checkbox as zT,Divider as QT,Image as Vu,ListItemButton as qT,MessageBox as HT,Radio as GT,RadioRoot as VT}from"@rango-dev/ui";import{namespaces as Ku}from"@rango-dev/wallets-shared";import Fe,{useMemo as KT,useState as jT}from"react";import{styled as OT}from"@rango-dev/ui";var Gu=OT("ul",{padding:0,paddingTop:"$4",paddingBottom:"$4"});var XT=i((t,e)=>t.find(o=>o.name===e)?.logo,"getBlockchainLogo");function So(t){let{singleNamespace:e,availableNamespaces:o}=t,[n,r]=jT([]),a=h().blockchains(),s=KT(()=>o?.map(c=>({name:c,logo:XT(a,Ku[c].mainBlockchain),title:Ku[c].title})),[o]),l=i(c=>{r(e?[c]:u=>u.includes(c)?u.filter(m=>m!==c):u.concat(c))},"onSelect"),p=i(c=>e?Fe.createElement(VT,{value:n?.[0]},c):Fe.createElement(Fe.Fragment,null,c),"wrapRadioRoot");return Fe.createElement(X,{open:t.open,onClose:t.onClose,container:document.getElementById(ke.SWAP_BOX_ID)||document.body},Fe.createElement(QT,{size:20}),Fe.createElement(HT,{type:"info",title:ms.t("Select chain types"),description:ms.t("This wallet supports multiple chains. Select which chain you'd like to connect to."),icon:Fe.createElement(Ho,null,Fe.createElement(Nr,null,Fe.createElement(Vu,{src:t.image,size:45})),Fe.createElement(Go,null))}),Fe.createElement(Gu,null,p(Fe.createElement(Fe.Fragment,null,s?.map(c=>Fe.createElement(qT,{key:c.name,id:c.name,title:c.title,hasDivider:!0,style:{height:60},onClick:()=>l(c.name),start:Fe.createElement(Vu,{src:c.logo,size:22}),end:e?Fe.createElement(GT,{value:c.name}):Fe.createElement(zT,{checked:n.includes(c.name)})}))))),Fe.createElement(UT,{type:"primary",disabled:!n.length,onClick:()=>t.onConfirm(n)},ms.t("Confirm")))}i(So,"WalletNamespacesModal");var tC=Yu("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),oC=Yu(le,{textAlign:"center"}),Hr=3e3,ds=300;function Zu(){let{fetchStatus:t}=h(),[e,o]=hn("ALL"),n=h().blockchains(),{config:r}=h(),[a,s]=hn(!1),[l,p]=hn(null),[c,u]=hn(null),[m,d]=hn(""),g=null,f=ue.use.isActiveTab(),{list:y,handleClick:S,error:C,disconnectConnectingWallets:T}=mo({onBeforeConnect:L=>{g=setTimeout(()=>{s(!0),d(L)},ds)},onConnect:L=>{g&&clearTimeout(g),setTimeout(()=>{m===L&&s(!1)},Hr)}}),k=i(()=>{T(),s(!1)},"handleCloseWalletModal"),v=i(()=>{l&&p({...l,open:!1})},"handleCloseNamespaceModal"),w=i(()=>{c&&u({...c,open:!1})},"handleCloseDerivationPathModal"),A=y.find(L=>L.type===m),b=A?.image||"",x=A?.state||Xu.NOT_INSTALLED,E=Ip(y,n),P=ZT(E)!==1,H=Ap(y,e),N=i(L=>{Rn(y,r.multiWallets)||(L.namespaces?.length&&L.state===Xu.DISCONNECTED?L.namespaces.length>1?p({open:!0,providerType:L.type,providerImage:L.image,availableNamespaces:L.namespaces,singleNamespace:L.singleNamespace}):L.needsDerivationPath?u({open:!0,providerType:L.type,providerImage:L.image,namespace:L.namespaces[0]}):S(L.type):S(L.type))},"handleWalletItemClick"),J=i(L=>{let M=H.find(K=>K.type===l?.providerType);M?.singleNamespace&&M?.needsDerivationPath&&L[0]?u({open:!0,providerType:M.type,providerImage:M.image,namespace:L[0]}):S(l?.providerType,L.map(K=>({namespace:K}))),v()},"handleConfirmNamespaces"),ne=i(L=>{L&&c?.namespace&&S(c.providerType,[{namespace:c.namespace,derivationPath:L}]),w()},"handleDerivationPathConfirm");return ft.createElement(ie,{header:{title:ju.t("Connect Wallets")}},ft.createElement(oC,null,P&&ft.createElement(ft.Fragment,null,ft.createElement(JT,{setCategory:o,category:e,blockchains:E,isLoading:t==="loading"}),ft.createElement(YT,{size:24})),ft.createElement(RT,{variant:"title",size:"xmedium",align:"center"},ju.t("Choose a wallet to connect.")),ft.createElement(tC,null,H.map((L,M)=>{let K=`wallet-${M}-${L.type}`;return ft.createElement(eC,{key:K,...L,container:B(),onClick:()=>N(L),isLoading:t==="loading",disabled:!f})}),ft.createElement(gn,{open:!!a,onClose:k,image:b,state:x,error:C}),ft.createElement(So,{open:!!l?.open,onClose:v,onConfirm:J,image:l?.providerImage,availableNamespaces:l?.availableNamespaces,singleNamespace:l?.singleNamespace}),ft.createElement(ho,{open:!!c?.open,selectedNamespace:c?.namespace,type:c?.providerType,image:c?.providerImage,onClose:w,onConfirm:ne}))))}i(Zu,"WalletsPage");import{keyframes as nC,styled as fs}from"@rango-dev/ui";var Ju=fs("div",{position:"relative"}),rC=nC({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Ru=fs("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${rC} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),em=fs("div",{"& img":{borderRadius:"50%"}});var lC=7;function hs(t){let{chain:e,isSelected:o,selectWallet:n,limit:r,onShowMore:a,onConnect:s}=t,l=ue.use.isActiveTab(),p=oe.use.connectedWallets(),{blockchains:c}=h(),[u,m]=To(""),[d,g]=To(null),[f,y]=To(!1),[S,C]=To(null),[T,k]=To(null),[v,w]=To(null),{suggestAndConnect:A}=Vr(),b=null,{list:x,error:E,handleClick:I,disconnectWallet:P,disconnectConnectingWallets:H}=mo({chain:e,onBeforeConnect:W=>{b=setTimeout(()=>{m(W)},ds)},onConnect:W=>{s?.(W),b&&clearTimeout(b),setTimeout(()=>{m("")},Hr)}}),[N,J]=To(x),ne=x.length,L=r&&ne-r>0,M=i(async W=>{y(!1),C("in-progress");try{await A(W.walletType,W.chain),C("completed")}catch{C("rejected")}},"addExperimentalChain"),K=i(()=>{T&&k({...T,open:!1})},"handleCloseNamespaceModal"),ge=i(()=>{v&&w({...v,open:!1})},"handleCloseDerivationPathModal"),Y=i(W=>{k({open:!0,providerType:W.type,providerImage:W.image,availableNamespaces:W.namespaces,singleNamespace:W.singleNamespace})},"handleOpenNamespacesModal"),ae=i(W=>{let me=N.find(de=>de.type===T?.providerType);me?.singleNamespace&&me?.needsDerivationPath&&W[0]?w({open:!0,providerType:me.type,providerImage:me.image,namespace:W[0]}):I(T?.providerType,W.map(de=>({namespace:de}))),K()},"handleConfirmNamespaces"),he=i(W=>{W&&v?.namespace&&I(v.providerType,[{namespace:v.namespace,derivationPath:W}]),ge()},"handleDerivationPathConfirm");nm(()=>{J(W=>{let me=x.findIndex(de=>o(de.type,e));return L&&me>1?[x[me]].concat(x.filter((de,ze)=>ze!==me)):W.map(de=>x.find(ze=>ze.type===de.type)??de)})},[JSON.stringify(x)]);let Ce=document.getElementById(ke.SWAP_BOX_ID);nm(()=>{let W=null;return(S==="completed"||S==="rejected")&&(W=setTimeout(()=>C(null),Hr)),()=>{W&&clearTimeout(W)}},[S]);let O=i(()=>{H(),m("")},"handleCloseWalletModal");return fe.createElement(fe.Fragment,null,N.slice(0,r).map(W=>{let me=bp({connectedWallets:p,walletType:W.type,chain:e}),de=me?lr(me,lC):"",ze=ar(c(),e),$=!p.find(ce=>ce.walletType===W.type&&ce.chain===e),Q=ze&&$&&W.state===om.CONNECTED,j=Q?St.t({id:"Add {chain} chain",values:{chain:e}}):de,pe=i(async()=>{W.state===om.DISCONNECTED?W.namespaces?.length?W.namespaces.length>1?Y(W):W.needsDerivationPath?w({open:!0,providerType:W.type,providerImage:W.image,namespace:W.namespaces[0]}):I(W.type):I(W.type):W.namespaces&&!de?(await P(W.type),Y(W)):Q?(g({walletType:W.type,chain:e,address:me??""}),y(!0)):n({walletType:W.type,chain:e,address:me??""})},"onSelectableWalletClick"),te=d?.chain?er(d.chain,c()):void 0;return fe.createElement(fe.Fragment,{key:`${W.title}_${te}`},fe.createElement(gn,{open:u===W.type,onClose:O,image:W.image,state:W.state,error:E}),fe.createElement(So,{open:!!T?.open,onClose:K,onConfirm:ae,image:T?.providerImage,availableNamespaces:T?.availableNamespaces,singleNamespace:T?.singleNamespace}),fe.createElement(ho,{open:!!v?.open,selectedNamespace:v?.namespace,type:v?.providerType,image:v?.providerImage,onClose:ge,onConfirm:he}),!!d&&fe.createElement(X,{open:!!d&&f,container:Ce,onClose:()=>{g(null)}},fe.createElement(Gr,{title:St.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:te}}),type:"warning",description:St.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:te}})},fe.createElement(gs,{size:18}),fe.createElement(gs,{size:32}),fe.createElement(iC,{onClick:M.bind(null,d),variant:"outlined",type:"primary",fullWidth:!0,size:"large"},St.t("Confirm")))),S&&fe.createElement(X,{open:!!S,onClose:C.bind(null,null),container:Ce},S==="in-progress"&&fe.createElement(Gr,{type:"loading",title:St.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:te}}),description:St.t({id:"You should connect a {blockchainDisplayName} supported wallet or choose a different {blockchainDisplayName} address",values:{blockchainDisplayName:te}}),icon:fe.createElement(Ju,null,fe.createElement(em,null,fe.createElement(aC,{src:W.image,size:45})),fe.createElement(Ru,null))}),S==="completed"&&fe.createElement(Gr,{type:"success",title:St.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:te}}),description:St.t({id:"{blockchainDisplayName} is added to your wallet, you can use it to swap.",values:{blockchainDisplayName:te}})}),S==="rejected"&&fe.createElement(Gr,{type:"error",title:St.t("Request Rejected"),description:St.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:te}})}),fe.createElement(gs,{direction:"vertical",size:32})),fe.createElement(sC,{key:W.type,description:j,onClick:pe,selected:o(W.type,e),disabled:!l,...W}))}),L&&fe.createElement(Mu,{selected:!1,onClick:a},fe.createElement(tm,{variant:"label",size:"medium"},St.t("Show more wallets"),fe.createElement(tm,{variant:"label",size:"medium",color:"$primary"},"\xA0+",ne-(r??0)))))}i(hs,"WalletList");var gC=2;function sm(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=fC(),l=h().blockchains(),{selectedQuote:p,setSelectedWallets:c,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:m,customDestination:d,setCustomDestination:g}=q(),{connectedWallets:f,selectWallets:y}=oe(),{config:S}=h(),[C,T]=ko(""),[k,v]=ko([]),[w,A]=ko(""),[b,x]=ko(null),[E,I]=ko(!!d),P=dC(()=>io({filter:"all",quote:p}),[p]),H=io({filter:"required",quote:p}),N=l.find($=>$.name===p?.swaps[p?.swaps.length-1].to.blockchain),J=i($=>H.includes($),"isWalletRequiredFor"),ne=mC(()=>f.filter($=>$.selected&&P.includes($.chain)),[f,P]),[L,M]=ko(ne()),[K,ge]=ko([]),Y=i(($,Q)=>ge(j=>j.concat({blockchain:$,walletType:Q})),"addNextSelectedWallets"),ae=k.length>0,he=i(($,Q)=>!!L.find(j=>j.walletType===$&&j.chain===Q&&j.selected&&(J(Q)||!J(Q)&&!d)),"isSelected"),Ce=i(($,Q,j)=>{let pe=!1;return $.map(te=>{if(te.chain===Q){let ce=te.selected;return!pe&&j?(pe=!0,ce=!0):j||(ce=!1),{...te,selected:ce}}return te})},"updateSelectableWallets"),O=i($=>{I($),$?J(N?.name??"")||M(Q=>Ce(Q,N?.name||"",!1)):(g(""),M(Q=>Ce(Q,N?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),W=i($=>{if(C&&T(""),he($.walletType,$.chain))return;let j=f.find(pe=>pe.walletType===$.walletType&&pe.chain===$.chain);j&&(n(),$.chain===N?.name&&E&&!J(N.name)&&(I(!1),g(null)),M(pe=>pe.filter(te=>te.chain!==$.chain).concat({...j,selected:!0})))},"onChange"),me=i(()=>{let $=L.filter(Q=>Q.selected);y($),c($),m(!0),o()},"onConfirmBalance"),de=i(async()=>{v([]),A(""),x(null);let $=await r?.({selectedWallets:L.filter(j=>j.selected),customDestination:d}),Q=$.warnings;Q?.balance?.messages&&v(Q.balance.messages),Q?.quoteUpdate&&x(Q.quoteUpdate),$.error&&A(ic($.error)),!$.error&&!Q?.balance?.messages.length?me():v(Q?.balance?.messages??[])},"onConfirmWallets");am(()=>{M($=>{let Q=[];return $.forEach(j=>{!f.some(te=>te.chain===j.chain&&te.walletType===j.walletType&&te.address===j.address)||Q.push(j)}),Q=Q.concat(f.filter(j=>!!!Q.find(te=>te.chain===j.chain)&&j.selected&&P.includes(j.chain))),Q})},[f,P]),am(()=>{let $=[];K.length>0&&(K.forEach(Q=>{let j=f.find(pe=>pe.chain===Q.blockchain&&pe.walletType===Q.walletType);j?W(j):$.push(Q)}),ge($))},[f,K]);let ze=document.getElementById(ke.SWAP_BOX_ID);return R.createElement(X,{open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!C,container:ze,...!C&&{styles:{container:{height:"100%"}},footer:R.createElement(_u,null,R.createElement(im,{loading:a,disabled:xc(a,E,d,p,L,N),onClick:de,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Co.t("Confirm")))},...C&&{styles:{container:{height:"100%",padding:"$0"}},header:R.createElement(Bu,null,R.createElement(Lu,{variant:"ghost",onClick:T.bind(null,"")},R.createElement(cC,{size:16})),R.createElement(ys,{variant:"headline",size:"small"},Co.t({id:"Your {blockchainName} wallets",values:{blockchainName:ct(C,l)}})))},anchor:"center"},R.createElement(X,{open:ae,onClose:v.bind(null,[]),container:ze},R.createElement(uC,{title:Co.t("Insufficient account balance"),type:"error",description:R.createElement(pC,{messages:k??[]})},R.createElement(im,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:me},Co.t("Proceed anyway")))),C&&R.createElement(Pu,null,R.createElement("div",{className:Du()},R.createElement(hs,{chain:C,isSelected:he,selectWallet:W,onShowMore:()=>T(C),onConnect:$=>{Y(C,$)}}))),!C&&R.createElement(R.Fragment,null,w&&R.createElement(R.Fragment,null,R.createElement(rm,{variant:"alarm",type:"error",title:Co.t(w)}),R.createElement(Kr,{size:12})),b&&R.createElement(R.Fragment,null,R.createElement(rm,{variant:"alarm",type:"warning",title:_r(b)}),R.createElement(Kr,{size:12})),R.createElement($u,null,P.map(($,Q)=>{let j=l.find(ve=>ve.name===$),pe=`wallet-${Q}`,te=Q===P.length-1,ce=te&&N&&S?.customDestination!==!1;return R.createElement("div",{key:pe},R.createElement(Nu,null,R.createElement(ys,{variant:"title",size:"xmedium"},Co.t({id:"Your {blockchainName} wallets",values:{blockchainName:j?.shortName}})),R.createElement(ys,{variant:"label",color:"$neutral700",size:"medium"},Co.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:j?.shortName}}))),R.createElement(Kr,{size:24}),R.createElement(Wu,null,R.createElement(hs,{chain:$,isSelected:he,selectWallet:W,limit:gC,onShowMore:()=>T(j?.name??""),onConnect:ve=>{Y($,ve)}})),!te&&R.createElement(Kr,{size:32}),ce&&R.createElement(Au,{blockchain:N,open:E,handleOpenChange:O}))}))))}i(sm,"ConfirmWalletsModal");import{i18n as PC}from"@lingui/core";import{Alert as DC,Button as _C,InfoIcon as $C}from"@rango-dev/ui";import it from"react";import{Alert as SC,Button as TC,Divider as Cs,NoRouteIcon as CC,RefreshIcon as kC,Typography as fm}from"@rango-dev/ui";import rt from"react";import{i18n as lm}from"@lingui/core";var hC=24,yC=60;function pm(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:re().genericServerError,action:{onClick:n,title:lm.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:re().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:lm.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(pm,"makeInfo");var Ss=(o=>(o[o.small=hC]="small",o[o.large=yC]="large",o))(Ss||{}),Ts=(o=>(o.small="small",o.large="medium",o))(Ts||{});import{styled as jr}from"@rango-dev/ui";var cm=jr("div",{display:"flex",flexDirection:"column",alignItems:"center"}),um=jr("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),mm=jr("div",{variants:{size:{small:{width:"100%"},large:{}}}}),dm=jr("div",{padding:"$6 $0"});function yn(t){let{fetch:e,error:o,size:n="small"}=t,r=h().getDisabledLiquiditySources(),a=h().toggleAllLiquiditySources,s=h().swappers(),l=pm(o,r,()=>a(s,!0),e);return rt.createElement(cm,null,rt.createElement(CC,{size:Ss[n],color:"gray"}),rt.createElement(Cs,{size:4}),rt.createElement(fm,{variant:"title",size:Ts[n]},re().noResultError.title),n==="large"&&rt.createElement(Cs,{size:4}),!!l.description&&rt.createElement(um,{size:n},rt.createElement(fm,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),rt.createElement(Cs,{size:n==="large"?"24":"4"}),!!l.alert&&rt.createElement(mm,{size:n},rt.createElement(SC,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&rt.createElement(TC,{size:"xsmall",type:l.alert.type,prefix:rt.createElement(dm,null,rt.createElement(kC,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(yn,"NoResult");import{i18n as Sn}from"@lingui/core";import{Button as xC,Divider as bC,MessageBox as wC,Typography as EC,WarningIcon as IC}from"@rango-dev/ui";import Dt from"react";import{Typography as Sm}from"@rango-dev/ui";import vs from"react";import{darkTheme as vC,styled as Xr}from"@rango-dev/ui";var gm=Xr("div",{width:"100%"}),ks=Xr("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),hm=Xr("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${vC} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),ym=Xr("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function Tm(t){let{title:e,value:o,valueColor:n}=t;return vs.createElement(hm,null,vs.createElement(Sm,{size:"medium",variant:"label",className:"_title"},e),vs.createElement(Sm,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(Tm,"QuoteErrorsModalItem");function Cm(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:Sn.t("Swapping"),value:D(r.inputUsdValue,4,4)},{title:Sn.t("Gas cost"),value:D(r.totalFee,2,2)},{title:Sn.t("Receiving"),value:D(r.outputUsdValue,4,4)},{title:Sn.t("Price impact"),value:D(r.priceImpact,2,2),valueColor:`${s}500`}];return Dt.createElement(X,{footer:Dt.createElement(xC,{type:"primary",size:"large",prefix:Dt.createElement(IC,null),fullWidth:!0,disabled:a,onClick:n},re().highValueLossError.confirmMessage),open:e,onClose:o,container:B()},Dt.createElement(wC,{type:s,title:re().highValueLossError.impactTitle,description:re().highValueLossError.description}),Dt.createElement(ks,null,Dt.createElement(bC,{size:"4"}),Dt.createElement(EC,{size:"small",variant:"title"},Sn.t("Details")),Dt.createElement(ks,null,l.map((p,c)=>Dt.createElement(Tm,{key:c,...p})))))}i(Cm,"HighValueLossWarningModal");import{i18n as xs}from"@lingui/core";function km(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=xs.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&&(Lt(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=xs.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=xs.t("Caution, your slippage is high."),o.action="change-settings"),o):null}i(km,"makeAlerts");import{i18n as jo}from"@lingui/core";import{Button as vm,Divider as xm,MessageBox as AC,Typography as NC}from"@rango-dev/ui";import vo from"react";import{useNavigate as WC}from"react-router-dom";function bm(t){let{customSlippage:e,slippage:o}=h(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,p=WC(),c=e??o;return vo.createElement(X,{anchor:"bottom",open:n,prefix:vo.createElement(vm,{size:"small",variant:"ghost",onClick:()=>p("../"+F.settings)},vo.createElement(NC,{variant:"label",size:"medium",color:"$neutral900"},jo.t("Change settings"))),container:B(),onClose:r},vo.createElement(AC,{type:"warning",title:s.type===3?jo.t("High slippage"):jo.t("Low slippage"),description:s.type===3?jo.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:c}}):jo.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:s.minRequiredSlippage}})},vo.createElement(xm,{size:18}),vo.createElement(xm,{size:32}),vo.createElement(vm,{size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:l,onClick:a},jo.t("Confirm anyway"))))}i(bm,"SlippageWarningModal");import{Button as MC,MessageBox as BC,WarningIcon as LC}from"@rango-dev/ui";import Yr from"react";function wm(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Yr.createElement(X,{footer:Yr.createElement(MC,{type:"primary",size:"large",prefix:Yr.createElement(LC,null),fullWidth:!0,disabled:r,onClick:n},re().unknownPriceError.confirmMessage),open:e,onClose:o,container:B()},Yr.createElement(BC,{type:"warning",title:re().unknownPriceError.impactTitle,description:re().unknownPriceError.description}))}i(wm,"UnknownPriceWarningModal");function Tn(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,refetchQuote:s,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:c,onChangeSettings:u}=t,m={confirmationDisabled:a,open:r,onClose:p,onConfirm:c},d=o?.type===0||o?.type===1,g=km(e,o?.type===3||o?.type===4?o:null);return g&&!n&&(g.action=null),it.createElement(it.Fragment,null,d&&it.createElement(yn,{error:o,fetch:s}),!!g&&it.createElement(gm,null,it.createElement(DC,{title:g.title,type:g.alertType,variant:"alarm",...g.action==="show-info"&&{action:it.createElement(ym,{onClick:l},it.createElement($C,{size:12,color:"gray"}))},...g.action==="change-settings"&&{action:it.createElement(_C,{size:"xxsmall",type:g.alertType,onClick:u},PC.t("Change"))}})),e&&it.createElement(it.Fragment,null,e.type===0&&it.createElement(Cm,{...m,warning:e}),(e.type===3||e.type===2)&&it.createElement(bm,{...m,warning:e}),e.type===1&&it.createElement(wm,{...m,warning:e})))}i(Tn,"QuoteWarningsAndErrors");import fk from"bignumber.js";import ci from"react";import{i18n as xo}from"@lingui/core";import{Alert as tk,Divider as Yo,FullExpandedQuote as ok,InfoIcon as nk,NumericTooltip as rd,QuoteTag as rk,StepDetails as ik,TokenAmount as ak,Typography as Zo}from"@rango-dev/ui";import Ms from"bignumber.js";import U,{useRef as sk,useState as lk}from"react";import{styled as bs}from"@rango-dev/ui";var ws=bs("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Em=bs("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Im=bs("div",{width:"100%",display:"flex"});import*as Zr from"@radix-ui/react-collapsible";import{Button as FC,css as Cn,darkTheme as We,Image as Am,styled as Ke,Typography as OC}from"@rango-dev/ui";var UC=300,Nm=Ke(Zr.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${We} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${We} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${We} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),Wm=Cn({padding:"$10 $15"}),Mm=Ke(FC,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${We} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${We} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${We} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),Bm=Ke("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",[`.${We} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${We} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${We} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${We} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${We} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${We} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${We} &`]:{backgroundColor:"$neutral400"}}}}]}),Lm=Cn({width:"100%",padding:"$15 $15 $10 $15"}),Pm=Cn({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),Xo=Cn({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),Dm=Cn({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${We} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),_m=Ke(Zr.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:{[`& ${Am}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Am}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${We} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${We} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${We} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),$m=Ke("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"}}}}),Fm=Ke(Fr,{width:"100%",background:"inherit"}),Es=Ke("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${UC}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),l$=Ke("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),Om=Ke("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${We} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Um=Ke("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),Is=Ke(OC,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),zm=Ke("div",{display:"flex",flexWrap:"wrap"}),As=Ke("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"}}}}),Qm=Ke("div",{display:"flex"}),Jr=Ke("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${We} &`]:{borderTopColor:"$neutral800"}});import{i18n as Wt}from"@lingui/core";import{ChevronDownIcon as QC,CloseIcon as qC,Divider as ti,IconButton as HC,NumericTooltip as GC,QuoteCost as VC,Typography as Tt}from"@rango-dev/ui";import ee,{useState as Vm}from"react";import{css as zC,styled as Rr}from"@rango-dev/ui";var ei=Rr("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Ns=Rr("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),qm=Rr("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Hm=Rr("div",{padding:"$20 $20 $10",textAlign:"center",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Gm=zC({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var KC=i(t=>t.fee.isZero()?null:ee.createElement(ei,null,ee.createElement(Tt,{variant:"label",size:"medium",color:"neutral600"},t.label),ee.createElement(Tt,{variant:"label",size:"medium"},"$",D(t.fee,4,4))),"NonPayableFee");function Km(t){let[e,o]=Vm(!1),[n,r]=Vm(!1),{steps:a,quote:s,fee:l,time:p,feeWarning:c,showModalFee:u}=t,m=s?.swaps??[],d=B(),g=uc(m);return ee.createElement(ee.Fragment,null,ee.createElement(VC,{onClickFee:u?f=>{f.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:c,time:p,steps:a,tooltipGas:u?Wt.t("View more info"):void 0,tooltipContainer:d}),ee.createElement(X,{container:d,open:e,header:ee.createElement(Hm,null,ee.createElement(Tt,{variant:"title",size:"medium"},Wt.t("Gas & Fee Explanation")),ee.createElement(HC,{onClick:()=>o(!1),variant:"ghost"},ee.createElement(qC,{color:"gray",size:14}))),onClose:()=>{o(!1)}},ee.createElement(qm,null,ee.createElement(Tt,{variant:"title",size:"small"},Wt.t("Details")),ee.createElement(ti,{size:10}),Object.entries(g.payable).flatMap(([f,y])=>y.map((S,C)=>{let T=`payable-fee-${C}`,k=Ca(S);return ee.createElement(ei,{key:T},ee.createElement(Tt,{variant:"label",size:"medium",color:"neutral600"},ha(f,Wt.t)),ee.createElement(GC,{content:S.amount,container:d},ee.createElement(Tt,{variant:"label",size:"medium"},D(S.amount,2,2)," ",S.asset.symbol," ($",D(k,4,4),")")))})),ee.createElement(ei,{className:"total_payable_fee"},ee.createElement(Tt,{variant:"label",size:"medium"},Wt.t("Total Payable Fee")),ee.createElement(Tt,{variant:"label",size:"medium"},"$",D(l,4,4))),ee.createElement(Ns,null),Object.keys(g.nonePayable).length&&ee.createElement(zr,{triggerAnchor:"bottom",onClickTrigger:()=>r(f=>!f),trigger:ee.createElement("div",{className:Gm()},ee.createElement(Tt,{size:"small",variant:"body",color:"neutral700"},n?Wt.t("Hide non-payable fees"):Wt.t("Show non-payable fees")),ee.createElement(ti,{size:4,direction:"horizontal"}),ee.createElement(Or,{orientation:n?"up":"down"},ee.createElement(QC,{size:12,color:"gray"}))),open:n},ee.createElement(Tt,{size:"small",variant:"title"},Wt.t("Description")),ee.createElement(ti,{size:4}),ee.createElement(Tt,{size:"small",variant:"body",color:"neutral700"},Wt.t(`The following fees are considered in the transaction output and
2
+ you won\u2019t need to pay extra gas for them.`)),ee.createElement(ti,{size:10}),Object.entries(g.nonePayable).map(([f,y],S)=>{let C=cc(y),T=ha(f,Wt.t),k=`non-payable-fee-${S}`;return ee.createElement(KC,{key:k,fee:C,label:T})}),ee.createElement(Ns,null)))))}i(Km,"QuoteCostDetails");import{i18n as Ym}from"@lingui/core";import{TokenAmount as Zm}from"@rango-dev/ui";import oi from"react";import{css as jC,styled as XC}from"@rango-dev/ui";var jm=XC("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Xm=jC({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function kn(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return oi.createElement(jm,null,oi.createElement(Zm,{direction:"horizontal",label:Ym.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}}),oi.createElement("div",{className:Xm()}),oi.createElement(Zm,{direction:"horizontal",tooltipContainer:B(),label:Ym.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(kn,"QuoteSummary");import{i18n as od}from"@lingui/core";import{ChevronDownIcon as JC,ChevronRightIcon as RC,Divider as Ws,Image as ek,Tooltip as si,Typography as ri}from"@rango-dev/ui";import z from"react";import{useLayoutEffect as YC,useState as vn}from"react";var Jm=480,Rm=768,ed=1024,td=1200,ZC=i(()=>{let[t,e]=vn(!1),[o,n]=vn(!1),[r,a]=vn(!1),[s,l]=vn(!1),[p,c]=vn(!1),u=i(()=>{e(window.innerWidth<=Jm),n(window.innerWidth>Jm&&window.innerWidth<=Rm),a(window.innerWidth>Rm&&window.innerWidth<=ed),l(window.innerWidth>ed&&window.innerWidth<=td),c(window.innerWidth>td)},"handleResize");return YC(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:p}},"useScreenDetect"),ni=ZC;var ii=4,ai=6,xn=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||B();return z.createElement(si,{container:l,side:"bottom",sideOffset:4,open:r,content:e},z.createElement($m,{className:n,state:a},z.createElement(ek,{src:o,size:16})))},"ImageComponent");function nd(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,p=l||B(),c=r.length,u=Ac(r),{isTablet:m,isMobile:d}=ni();return z.createElement(_m,{listItem:s==="list-item",ref:g=>e.current=g,selected:o,onClick:g=>{g.stopPropagation(),n(f=>!f)}},z.createElement("div",{className:Xo()},z.createElement(ri,{variant:"body",size:"xsmall"},od.t("Via:")),z.createElement(Ws,{direction:"horizontal",size:4}),r.map((g,f)=>{let y=`item-${f}`,S=z.createElement(Es,null,z.createElement(RC,{size:12,color:"black"}));return d||m?z.createElement(z.Fragment,{key:y},z.createElement(xn,{content:g.swapper.displayName,src:g.swapper.image,state:g.state,container:l}),f!==c-1&&z.createElement(z.Fragment,null,S)):z.createElement(z.Fragment,{key:y},c<=ii||c>ii&&f<ii-1?z.createElement(z.Fragment,null,z.createElement(xn,{content:g.swapper.displayName,src:g.swapper.image,state:g.state,container:l}),f!==c-1&&z.createElement(z.Fragment,null,S)):f===ii-1&&z.createElement(si,{container:p,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:Xo()},S,r.map((C,T)=>{let k=`image-${T}`;return T>=f&&z.createElement(z.Fragment,{key:k},z.createElement(xn,{content:C.swapper.displayName,src:C.swapper.image,state:C.state,open:!1}),T!==c-1&&z.createElement(z.Fragment,null,S))}))},z.createElement(As,{state:r.find((C,T)=>T>=f&&(C.state==="error"||C.state==="warning"))?.state},z.createElement(ri,{size:"xsmall",variant:"body"},"+",c-f))))})),z.createElement("div",{className:Xo()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:Xo()},z.createElement(ri,{variant:"body",size:"xsmall"},od.t("Chains:")),z.createElement(Ws,{direction:"horizontal",size:4}),u.map((g,f)=>z.createElement(z.Fragment,{key:g.displayName},u.length<=ai||u.length>ai&&f<ai-1?z.createElement(si,{container:p,side:"bottom",content:g.displayName,sideOffset:4},z.createElement(xn,{content:"",src:g.image,open:!1,className:f!==0?"blockchainImage":""})):f===ai-1&&z.createElement(si,{container:p,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:Xo()},u.map((y,S)=>S>=f&&z.createElement(xn,{key:y.displayName,content:"",src:y.image,open:!1,className:S>f?"blockchainImage":"",container:l})))},z.createElement(As,{className:"blockchainImage"},z.createElement(ri,{size:"xsmall",variant:"body"},"+",u.length-f))))),z.createElement(Ws,{direction:"horizontal",size:32}))),z.createElement(Es,{orientation:a?"up":"down"},z.createElement(JC,{size:12,color:"black"}))))}i(nd,"QuoteTrigger");function Bs(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:m=!1,container:d}=t,g=h().blockchains(),{findToken:f}=h(),y=h().swappers(),{customSlippage:S,slippage:C}=h(),T=S||C,[k,v]=lk(t.expanded),w=sk(null),A=D(o.value,6,6),b=D(n.value,6,6),x=n.usdValue?D(n.usdValue,4,4):"",E=mt(o.usdValue,n.usdValue??null),I=D(E,2,2),P=Lt(E??0),H=i((he,Ce)=>he.map((O,W)=>{let me,de=r?.type===3&&r.swap.swapperId===O.swapperId,ze=r?.type===4&&r.recommendedSlippages?.has(W),$=a?.type===2&&a.recommendedSlippages?.has(W),Q=de||ze,j=$;Q?me="error":j&&(me="warning");let pe=Q?xo.t("Slippage Error"):xo.t("Slippage Warning");return de&&(pe=xo.t("Bridge Limit Error")),{swapper:{displayName:nn(O.swapperId,y)??"",image:O.swapperLogo},from:{token:{displayName:O.from.symbol,image:O.from.logo},chain:{displayName:ct(O.from.blockchain,g)??"",image:O.from.blockchainLogo},price:{value:W===0&&!Ce?D(o.value,6,6):D(O.fromAmount,6,6),usdValue:D((O.from.usdPrice??0)*parseFloat(O.fromAmount),4,4),realValue:W===0?o.value:O.fromAmount,realUsdValue:new Ms(O.from.usdPrice??0).multipliedBy(O.fromAmount).toString()}},to:{token:{displayName:O.to.symbol,image:O.to.logo},chain:{displayName:ct(O.to.blockchain,g)||"",image:O.to.blockchainLogo},price:{value:D(O.toAmount,6,6),usdValue:D((O.to.usdPrice??0)*parseFloat(O.toAmount),4,4),realValue:O.toAmount,realUsdValue:new Ms(O.to.usdPrice??0).multipliedBy(O.toAmount).toString()}},state:me,alerts:Q||j?U.createElement(Em,{dense:m},U.createElement(tk,{variant:"alarm",type:Q?"error":"warning",title:pe,footer:U.createElement(Im,null,de&&U.createElement("div",null,U.createElement(Zo,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(Yo,{direction:"vertical",size:2}),U.createElement(Zo,{size:"xsmall",variant:"body",color:"neutral900"},xo.t({id:"Yours: {amount} {symbol}",values:{amount:D(O.fromAmount,6,6),symbol:O?.from.symbol}}))),(ze||$)&&!de&&U.createElement("div",null,U.createElement(Zo,{size:"xsmall",variant:"body",color:"neutral900"},xo.t({id:"Minimum required slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(W)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(W)}}})),U.createElement(Yo,{direction:"vertical",size:2}),U.createElement(Zo,{size:"xsmall",variant:"body",color:"neutral900"},xo.t({id:"Yours: {userSlippage}",values:{userSlippage:T}}))))})):void 0,time:an(O.estimatedTimeInSeconds),fee:D(Ta(O,f),2,2),internalSwaps:O.internalSwaps?H(O.internalSwaps):void 0}}),"getQuoteSteps"),N=H(e?.swaps??[]),J=N.length,ne=d||B(),L=Wc(t.quote.tags||[]),M=!!u,K=an(tr(e?.swaps)),ge=Cr(e?.swaps??[],f),Y=D(ge,2,2),ae=ge.gte(new Ms(rc));return m?U.createElement(ok,{selected:l,fee:Y,time:K,tooltipContainer:on(),steps:N,tags:L,feeWarning:ae,percentageChange:I,warningLevel:P,outputPrice:{value:b,usdValue:x,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement(Bm,{selected:l,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:Lm()},!p&&L.length?U.createElement(U.Fragment,null,U.createElement(Qm,null,L.map((he,Ce)=>{let O=`${he.value}_${Ce}`;return U.createElement(U.Fragment,{key:O},U.createElement(rk,{label:he.label,value:he.value}),U.createElement(Yo,{size:4,direction:"horizontal"}))})),U.createElement(Jr,null),!M&&U.createElement(Yo,{size:4})):null,U.createElement("div",{id:"portal-root",className:Pm()},U.createElement(Km,{quote:e,time:K,fee:Y,feeWarning:ae,showModalFee:c,steps:J}),M&&U.createElement(Mm,{onClick:he=>{he.stopPropagation(),u()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(Zo,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},xo.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:Dm()},U.createElement(Um,null,U.createElement(nk,{size:12,color:"gray"})),U.createElement(zm,null,U.createElement(Is,{size:"small",variant:"body"},`${A} ${N[0].from.token.displayName} = `),U.createElement(rd,{content:n.value,container:ne,open:n.value?void 0:!1},U.createElement(Is,{size:"small",variant:"body"},"\xA0",`${b} ${N[N.length-1].to.token.displayName}`))),U.createElement(rd,{content:n.usdValue,container:ne},U.createElement(Yo,{size:2,direction:"horizontal"}),U.createElement(Zo,{color:"$neutral600",size:"xsmall",variant:"body"},`($${x})`))),s==="list-item"&&U.createElement(ak,{tooltipContainer:ne,type:"output",direction:"vertical",price:{value:b,usdValue:x,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:N[J-1].to.token.displayName,image:N[J-1].to.token.image},chain:{image:N[J-1].to.chain.image},percentageChange:I,warningLevel:P}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement(kn,{from:N[0].from,to:N[J-1].to,percentageChange:I,warningLevel:P}),U.createElement(Yo,{size:4}))),U.createElement(Nm,{selected:l,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:v},U.createElement(nd,{type:s,quoteRef:w,selected:l,setExpanded:v,container:ne,expanded:k,steps:N}),U.createElement(Fm,{open:k},U.createElement(Om,null),U.createElement("div",{className:Wm()},N.map((he,Ce)=>{let O=`item-${Ce}`;return U.createElement(ik,{type:"quote-details",key:O,tooltipContainer:ne,step:he,hasSeparator:Ce!==N.length-1,state:he.state})})))))}i(Bs,"Quote");import{Divider as mk,Skeleton as dk}from"@rango-dev/ui";import $t from"react";import{darkTheme as pk,styled as li}from"@rango-dev/ui";var id=li("div",{$$color:"$colors$neutral100",[`.${pk} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),ad=li("div",{paddingTop:"$2"}),sd=li("div",{paddingLeft:"$8"}),ld=li("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as Sd,Divider as Ct,Skeleton as at}from"@rango-dev/ui";import G from"react";import{css as ck,styled as _t}from"@rango-dev/ui";var Ls=_t("div",{display:"flex"}),pd=_t("div",{padding:"$10 $0 $20"}),cd=_t("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),ud=_t("div",{display:"flex",justifyContent:"start",alignItems:"center"}),md=_t("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),dd=_t("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),fd=_t("div",{width:"65%",display:"flex",justifyContent:"start"}),gd=_t("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),hd=_t("div",{padding:"$15 $0 $15 $0"}),yd=ck({display:"flex",justifyContent:"space-between",alignItems:"center"});function bn(t){let{type:e,tagHidden:o=!0}=t,n=G.createElement(md,null,G.createElement(fd,null,G.createElement(Sd,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),G.createElement(Ct,{size:8,direction:"horizontal"}),G.createElement(gd,null,G.createElement(at,{height:10,width:60,variant:"rounded"}),G.createElement(Ct,{size:4}),G.createElement(at,{height:15,variant:"rounded"}))),G.createElement(at,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return G.createElement("div",null,!o&&G.createElement(G.Fragment,null,G.createElement(Ls,null,G.createElement(at,{width:65,height:20,variant:"rounded"}),G.createElement(Ct,{size:4,direction:"horizontal"}),G.createElement(at,{width:65,height:20,variant:"rounded"}),G.createElement(Ct,{size:4,direction:"horizontal"}),G.createElement(at,{width:65,height:20,variant:"rounded"})),G.createElement(Jr,null),!r&&G.createElement(Ct,{size:4})),G.createElement("div",{className:yd()},G.createElement(Ls,null,G.createElement(at,{width:60,height:10,variant:"rounded"}),G.createElement(Ct,{size:4,direction:"horizontal"}),G.createElement(at,{width:60,height:10,variant:"rounded"}),G.createElement(Ct,{size:4,direction:"horizontal"}),G.createElement(at,{width:60,height:10,variant:"rounded"})),r&&G.createElement(at,{width:85,height:24,variant:"rounded"})),e==="basic"&&G.createElement(pd,null,G.createElement(at,{height:15,width:148,variant:"rounded"})),e==="list-item"&&G.createElement(cd,null,G.createElement(ud,null,G.createElement(Sd,{loading:!0,size:"medium",chainImage:"",tokenImage:""}),G.createElement(Ct,{direction:"horizontal",size:4}),G.createElement(at,{height:15,width:150,variant:"rounded"})),G.createElement(Ct,{size:10}),G.createElement(at,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&G.createElement(G.Fragment,null,G.createElement(Ct,{size:4}),G.createElement(hd,null,n,G.createElement(dd,null),n),G.createElement(Ct,{size:12})))}i(bn,"QuoteSummarySkeleton");import{ChainToken as xd,Divider as Ds,NextIcon as uk,Skeleton as pi}from"@rango-dev/ui";import Me from"react";import{styled as wn}from"@rango-dev/ui";var Td=wn("div",{display:"flex",alignItems:"start"}),Cd=wn("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Ps=wn("div",{display:"flex",alignItems:"center",flexGrow:1}),kd=wn("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),vd=wn("div",{display:"flex",alignItems:"center"});function Mt(t){let{separator:e=!0}=t;return Me.createElement(Me.Fragment,null,Me.createElement(vd,null,Me.createElement(pi,{height:22,width:22,variant:"circular"}),Me.createElement(Ds,{direction:"horizontal",size:8}),Me.createElement(pi,{height:15,width:148,variant:"rounded"})),Me.createElement(Td,null,Me.createElement(ld,{hideSeparator:!e}),Me.createElement(Cd,{extraSpace:e},Me.createElement(Ps,null,Me.createElement(xd,{size:"small",loading:!0,chainImage:"",tokenImage:""}),Me.createElement(Ds,{direction:"horizontal",size:8}),Me.createElement(pi,{height:12,variant:"rounded"})),Me.createElement(kd,null,Me.createElement(uk,{color:"gray",size:16})),Me.createElement(Ps,null,Me.createElement(xd,{size:"small",loading:!0,chainImage:"",tokenImage:""}),Me.createElement(Ds,{direction:"horizontal",size:8}),Me.createElement(pi,{height:12,variant:"rounded"})))))}i(Mt,"StepSkeleton");function En(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return $t.createElement(id,{expanded:o,rounded:e!=="basic"},$t.createElement(bn,{type:e,tagHidden:n}),$t.createElement(ad,null,$t.createElement(dk,{height:15,variant:"rounded"})),o&&$t.createElement(sd,null,$t.createElement(mk,{size:24}),$t.createElement(Mt,null),$t.createElement(Mt,null),$t.createElement(Mt,{separator:!1})))}i(En,"QuoteSkeleton");function bo(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:p,showModalFee:c,selected:u,onClickAllRoutes:m,fullExpandedMode:d=!1,container:g}=t,{inputAmount:f,inputUsdValue:y,toToken:S}=q(),C=e?.outputAmount?new fk(e?.outputAmount):null,T=e?.outputAmount?Vt(e?.outputAmount,co(e)||S?.usdPrice):null,v=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?ci.createElement(ws,null,ci.createElement(En,{tagHidden:l,type:o,expanded:s})):v?ci.createElement(ws,{onClick:()=>p?.(e)},ci.createElement(Bs,{quote:e,error:r,container:g,showModalFee:c,warning:a,tagHidden:l,selected:u,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:d,input:{value:f,usdValue:y?.toString()??""},output:{value:C?.toString()??"",usdValue:T?.toString()??""}})):null}i(bo,"QuoteInfo");import{calculatePendingSwap as Sk}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Tk}from"react";import{useRef as gk,useState as hk}from"react";var yk=2e3;function ui({request:t}){let[e,o]=hk(!1),n=gk(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(p=>setTimeout(p,yk)),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(ui,"useFetch");function bd(){let{fetch:t,loading:e,cancelFetch:o}=ui({request:async(n,r)=>await qt().confirmRouteRequest(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(bd,"useFetchConfirmQuote");function mi(t){if(!t.swaps)throw new Error(re().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=_s(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(mi,"throwErrorIfResponseIsNotValid");function _s(t){if(sc(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=lc(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=mc(t);if(o){let n=kr(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(_s,"getQuoteError");function wd(t,e,o){let n=!1;t&&(n=Ic(t,e));let r={quote:null,quoteUpdate:null,balance:null},a=Do(e,{fromToken:o.fromToken,toToken:o.toToken,findToken:o.findToken,userSlippage:o.userSlippage});a&&(r.quote=a),t&&n&&(Sc(t,e)?r.quoteUpdate={type:3,newOutputAmount:D(Po(e)),percentageChange:D(mt(Po(t)??"",Po(e)??""),null,2)}:ka(t,e)?r.quoteUpdate={type:0}:va(t,e)?r.quoteUpdate={type:1}:xa(t,e)&&(r.quoteUpdate={type:2}));let s=Tc(e,o.selectedWallets,o.meta.blockchains);return s.length===0||(r.balance={messages:s}),r}i(wd,"generateWarnings");function di(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(di,"handleQuoteErrors");function $s(){let{fromToken:t,toToken:e,inputAmount:o,setSelectedQuote:n,selectedQuote:r,customDestination:a,setQuoteWarningsConfirmed:s,resetAlerts:l}=q(),{slippage:p,customSlippage:c}=h(),u=h().getDisabledLiquiditySources(),m=h().blockchains(),d=h().tokens(),{findToken:g}=h(),f=c||p,{fetch:y,cancelFetch:S,loading:C}=bd();return Tk(()=>S,[]),{loading:C,fetch:i(async k=>{let v=k.selectedWallets,w=k?.customDestination??a;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((x,E)=>(x[E.chain]=E.address,x),{}),b={requestId:r?.requestId||"",selectedWallets:A,destination:w||void 0};try{return await y(b,!0).then(x=>{let{result:E}=x;mi({diagnosisMessages:E.diagnosisMessages,requestId:E.requestId,swaps:E.result?.swaps});let I={outputAmount:E.result?.outputAmount,requestId:E.requestId,resultType:E.result?.resultType,swaps:E.result?.swaps||[],validationStatus:E.validationStatus,requestAmount:E.requestAmount};n(I);let P={slippage:f.toString(),disabledSwappersGroups:u},H=wd(r??void 0,I,{fromToken:t,toToken:e,meta:{blockchains:m},findToken:g,selectedWallets:v,userSlippage:f});H.quoteUpdate&&s(!1),l();let N=!!H.balance,J=Sk(o.toString(),E,hc(v),P,!N,{blockchains:m,tokens:d});return{quote:I,swap:J,error:null,warnings:H}})}catch(x){return di(x)}},"fetch"),cancelFetch:S}}i($s,"useConfirmSwap");var Ak=vk("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Id}`]:{width:"$48",height:"$48"}}),Nk=Us({flexGrow:1,paddingRight:"$10"}),Wk=Us({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Mk=Us({display:"flex",justifyContent:"space-between",alignItems:"center"});function Ad(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=q(),s=Ik(),[l,p]=In(""),c=!n,[u,m]=In(!1),[d,g]=In(!1),{isActiveTab:f}=ue(),y=h().getDisabledLiquiditySources(),S=Ek(y),{manager:C}=Ck(),{fetch:T,loading:k,cancelFetch:v}=$s(),[w,A]=In({swap:null,error:null,warnings:null}),[b,x]=In(!1),E=i(async({selectedWallets:M,customDestination:K})=>{let ge=await T?.({selectedWallets:M,customDestination:K});return A(ge),ge},"onConfirmSwap"),I=i(async()=>{if(w.swap&&n)try{await C?.create("swap",{swapDetails:w.swap},{id:w.swap.requestId});let M=`../${F.swaps}/${w.swap.requestId}`;s(M,{replace:!0}),setTimeout(()=>{e("")},0)}catch(M){p("Error: "+M?.message)}},"addNewSwap"),P=i(async()=>{g(!0),await I(),g(!1)},"onConfirm"),H=i(async()=>{w?.warnings?.quote&&!a?x(!0):await P()},"onStartConfirmSwap"),N=i(async()=>{A({error:null,swap:null,warnings:null}),T({selectedWallets:o,customDestination:r}).then(M=>{A(M)}).catch(M=>console.error(M))},"onRefresh");fi(()=>{!!S.current.length&&!y.length&&N(),S.current=y},[y.length]),fi(()=>{c&&v()},[c]),fi(()=>{c&&m(c)},[c]),fi(()=>{c||T({selectedWallets:o,customDestination:r}).then(M=>A(M)).catch(M=>console.error(M))},[]),wk(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let J=w.warnings?.quote??null,ne=w.error,L=[];if(l&&L.push(Be.createElement(Ed,{type:"error",variant:"alarm",title:l})),w.warnings?.quoteUpdate&&L.push(Be.createElement(Ed,{variant:"alarm",type:"warning",title:w.warnings.quoteUpdate&&_r(w.warnings.quoteUpdate)})),J||ne){let M=`../${F.settings}`;L.push(Be.createElement(Tn,{warning:J,error:ne,couldChangeSettings:!1,refetchQuote:N,showWarningModal:b,confirmationDisabled:!f,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:async()=>{x(!1),await I()},onChangeSettings:()=>s(M)}))}return Be.createElement(ie,{header:{title:Fs.t("Confirm Swap"),onWallet:()=>{let M=`../${F.wallets}`;s(M)}},footer:Be.createElement(Ak,null,Be.createElement("div",{className:Nk()},Be.createElement(kk,{variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||d,disabled:!!w.error||!f,onClick:H},Fs.t("Start Swap"))),Be.createElement(Id,{variant:"contained",type:"primary",size:"large",loading:k||d,disabled:!f,onClick:m.bind(null,!0)},Be.createElement(bk,{size:24})))},u&&Be.createElement(sm,{open:u,onClose:()=>m(!1),onCancel:v,loading:k,onCheckBalance:E}),Be.createElement(le,null,Be.createElement("div",{className:Mk()},Be.createElement(xk,{variant:"title",size:"small"},Fs.t("You get")),Be.createElement("div",{className:Wk()},Be.createElement(Wr,{onClick:!k&&!u&&!b?N:void 0}))),Be.createElement(Os,{size:"12"}),Hc(L.map((M,K)=>({element:M,key:`alert-${K}`})),Be.createElement(Os,{size:10})),L.length>0?Be.createElement(Os,{size:10}):null,Be.createElement(bo,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:w.error,loading:k,warning:w.warnings?.quote??null})))}i(Ad,"ConfirmSwapPage");import{i18n as Ft}from"@lingui/core";import{Button as Rs,CustomTokensZeroStateDarkIcon as Yk,CustomTokensZeroStateIcon as Zk,DeleteIcon as Jk,Divider as Mn,IconButton as Rk,MessageBox as ev,NotFound as tv,styled as tl}from"@rango-dev/ui";import Te,{useState as el}from"react";import{useNavigate as ov}from"react-router-dom";import{CloseIcon as Lk,IconButton as Pk,SearchIcon as Dk,TextField as _k}from"@rango-dev/ui";import An from"react";import{styled as Bk}from"@rango-dev/ui";var Nd=Bk("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function kt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:p,...c}=t;return An.createElement(_k,{prefix:An.createElement(Nd,null,An.createElement(Dk,{color:"black"})),suffix:!!s.length&&An.createElement(Pk,{variant:"ghost",onClick:()=>p?.(""),size:"small"},An.createElement(Lk,{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(kt,"SearchInput");import{i18n as Zs}from"@lingui/core";import{darkTheme as Ud,Divider as Ro,ExternalLinkIcon as qk,Image as Hk,ListItemButton as Gk,NotFound as Vk,PinIcon as Kk,Skeleton as zd,Typography as yi,VirtualizedList as jk}from"@rango-dev/ui";import V,{useEffect as Qd,useState as qd}from"react";import{useWallets as $k}from"@rango-dev/wallets-react";import{useEffect as Fk,useRef as Ok,useState as Uk}from"react";function zs(t){let{connectedWallets:e}=oe(),{getWalletInfo:o}=$k(),n=Ok([]),[r,a]=Uk(0);return Fk(()=>{let s=i(p=>{p.type==="disconnect"&&o(p.payload.walletType).supportedChains.some(m=>m.name===t)&&a(m=>m+1)},"handleWalletEvent");return Yn.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(m=>m!==c),a(m=>m+1))}),()=>Yn.off("walletEvent",s)):a(p=>p+1)},[e,t,o]),{balanceKey:r}}i(zs,"useObserveBalanceChanges");import{Divider as Fd,ListItem as Qk,Skeleton as Nn}from"@rango-dev/ui";import vt from"react";import{css as Jo,darkTheme as Wd,ImageContainer as zk,styled as gt,Typography as Md}from"@rango-dev/ui";var Qs=Jo({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),qs=Jo({position:"relative",height:12,width:"30%",maxWidth:"150px"}),Hs=Jo({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),Gs=Jo({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${Wd} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),Vs=Jo({}),Ks=Jo(),Bd=gt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),js=gt("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),gi=gt("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${qs}`]:{[`& .${Gs}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${Vs}`]:{bottom:"-15px"},[`& .${Qs}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${Hs}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Xs=gt("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Ys=gt(Md,{}),Ld=gt("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${Ks}`]:{$$color:"$colors$neutral600",[`.${Wd} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),hi=gt("div",{display:"flex",alignItems:"end",flexDirection:"column"}),dO=gt("div",{display:"flex",alignItems:"center"}),Pd=gt("div",{position:"relative",[`& ${zk}`]:{borderRadius:"$xm",overflow:"hidden"}}),Dd=gt("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),_d=gt(Md,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),$d=gt("a",{"& svg:hover":{color:"$colors$info"}});function Od(t){return vt.createElement(gi,null,Array.from(Array(t.size),e=>vt.createElement(Qk,{key:e,hasDivider:!0,start:vt.createElement(Nn,{variant:"circular",width:35,height:35}),end:vt.createElement(hi,null,vt.createElement(Nn,{variant:"text",size:"large",width:70}),vt.createElement(Fd,{size:4}),vt.createElement(Nn,{variant:"text",size:"medium",width:50})),title:vt.createElement("div",null,vt.createElement(Nn,{variant:"text",size:"large",width:90}),vt.createElement(Fd,{size:4}),vt.createElement(Nn,{variant:"text",size:"medium",width:90}))})))}i(Od,"LoadingTokenList");var Js=20,Xk=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return V.createElement("div",{className:qs()},o?V.createElement("div",{className:Qs()},o):V.createElement(js,{className:Hs()},V.createElement(yi,{variant:"title",size:"xmedium"},r.symbol),V.createElement(Ro,{direction:"horizontal",size:4}),V.createElement(Xs,{css:a},V.createElement(Ys,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&V.createElement("div",{className:`${Gs()} ${!o&&Vs()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",V.createElement(Ro,{size:4,direction:"horizontal"}),V.createElement($d,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:p=>p.stopPropagation()},V.createElement(qk,{size:12}))))},"renderDesc");function Wn(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s}=t,[l,p]=qd(e),c=h().fetchStatus,u=h().blockchains(),[m,d]=qd(!0),{getBalanceFor:g,loading:f}=oe(),{isTokenPinned:y}=h(),{balanceKey:S}=zs(r),C=i(()=>{p(e.slice(0,l.length+Js))},"loadNextPage");Qd(()=>{d(e.length>l.length)},[l.length]),Qd(()=>{p(e.slice(0,Js))},[e.length,r,S]);let T=i(v=>{let w=sr(g(v));return s?s(v):f?V.createElement(hi,null,V.createElement(zd,{variant:"text",size:"large",width:70}),V.createElement(Ro,{size:4}),V.createElement(zd,{variant:"text",size:"medium",width:50})):w&&V.createElement(Ld,null,V.createElement(_d,{variant:"title",size:"small"},w.amount),V.createElement("div",null),w.usdValue&&V.createElement(yi,{variant:"body",className:Ks(),size:"xsmall"},`$${w.usdValue}`))},"endRenderer"),k=i(()=>V.createElement(jk,{endReached:m?C:void 0,itemContent:v=>{let w=l[v],A=w.address||"",b=u.find(P=>P.name===w.blockchain),x=_a(b.color,"main"),E={$$color:x.main150,[`.${Ud} &`]:{$$color:x.main750},backgroundColor:"$$color"},I={$$color:x.main750,[`.${Ud} &`]:{$$color:x.main150},color:"$$color"};return V.createElement("div",{style:{paddingRight:5}},V.createElement(Gk,{style:{width:"100%",overflow:"hidden",height:"60px"},"tab-index":v,key:`${w.symbol}${w.address}`,id:`${w.symbol}${w.address}`,hasDivider:!0,onClick:()=>n&&n(l[v]),start:V.createElement(Pd,null,V.createElement(Hk,{src:w.image,size:30}),t.type!=="custom-token"&&y(w,t.type)&&V.createElement(Dd,null,V.createElement(Kk,{size:12,color:"gray"}))),title:b?.type==="COSMOS"||w.name||!w.name&&!A?V.createElement(js,null,V.createElement(yi,{variant:"title",size:"xmedium"},w.symbol),V.createElement(Ro,{direction:"horizontal",size:4}),V.createElement(Xs,{css:E},V.createElement(Ys,{variant:"body",size:"xsmall",css:I},w.blockchain))):void 0,description:b?.info&&A&&b.type!=="COSMOS"?Xk({address:A,token:l[v],customCssForTag:E,customCssForTagTitle:I,name:w.name,url:b.info.addressUrl.split("{wallet}").join(A)}):w.name||void 0,end:T(w)}))},totalCount:l.length,key:`${r}-${o}-${S}`}),"renderList");return V.createElement(V.Fragment,null,a&&V.createElement(V.Fragment,null,V.createElement(yi,{variant:"label",size:"large"},Zs.t("Select Token")),V.createElement(Ro,{size:4})),V.createElement(Bd,null,V.createElement(Ro,{size:4}),c==="loading"&&V.createElement(Od,{size:Js}),c==="success"&&(l.length?V.createElement(gi,{as:"ul"},k()):!!o&&V.createElement(Vk,{title:Zs.t("No results found"),description:Zs.t("Try using different keywords")}))))}i(Wn,"TokenList");var nv=tl("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),rv=tl("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),iv=tl(Rk,{"&:hover":{"& svg":{color:"$secondary550"}}});function Hd(){let[t,e]=el(""),{deleteCustomToken:o}=h(),n=h().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=q(),{mode:p}=Oo({}),c=ov(),[u,m]=el(!1),[d,g]=el(),f=i(T=>{let k=T.target.value;e(k)},"handleSearch"),y=p==="dark",S=n.filter(T=>nt(T.symbol,t)||nt(T.address||"",t)||nt(T.name||"",t)),C=i(()=>{if(d){let T=a?Qe(a):null,k=r?Qe(r):null,v=Qe(d);T===v?l({token:null}):k===v&&s({token:null}),o(d)}m(!1)},"handleDeleteCustomToken");return Te.createElement(ie,{header:{title:Ft.t("Custom Tokens")}},Te.createElement(le,null,Te.createElement(nv,null,n.length?Te.createElement(Te.Fragment,null,Te.createElement(kt,{value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Ft.t("Search Token"),onChange:f}),Te.createElement(Mn,{size:16}),Te.createElement(Wn,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,action:T=>Te.createElement(iv,{variant:"ghost",onClick:()=>{m(!0),g(T)}},Te.createElement(Jk,{size:12,color:"gray"}))})):Te.createElement(rv,null,Te.createElement(tv,{icon:y?Te.createElement(Yk,{size:200}):Te.createElement(Zk,{size:200}),title:Ft.t("No custom tokens"),description:Ft.t("press the button to add your custom token")})),Te.createElement(Mn,{size:20}),Te.createElement(Rs,{type:"primary",variant:"contained",size:"large",onClick:()=>c(F.addCustomTokens)},Ft.t("Add Custom Token"))),Te.createElement(X,{open:u,dismissible:!0,onClose:()=>m(!1),container:B()},Te.createElement(ev,{title:Ft.t("Delete Custom Token"),type:"error",description:Ft.t("Are you sure you want to Delete this Token?")},Te.createElement(Mn,{size:40}),Te.createElement(Mn,{size:10}),Te.createElement(Rs,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:C},Ft.t("Yes, Delete it")),Te.createElement(Mn,{size:12}),Te.createElement(Rs,{fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},Ft.t("No, Continue"))))))}i(Hd,"CustomTokensPage");import{i18n as Xe}from"@lingui/core";import{useManager as bv}from"@rango-dev/queue-manager-react";import{Button as ll,darkTheme as wv,Divider as Jt,MessageBox as Ev,NotFound as Iv,styled as pl,Typography as Ci}from"@rango-dev/ui";import{TransactionStatus as Pn}from"rango-types";import se,{useMemo as cf,useState as ki}from"react";import{useNavigate as Av}from"react-router-dom";import{FilterIcon as mv,Popover as dv}from"@rango-dev/ui";import wo from"react";import{css as av,darkTheme as Si,IconButton as sv,styled as Bn}from"@rango-dev/ui";var ol=Bn("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${Si} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),Gd=Bn(sv,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Si} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Si} &`]:{backgroundColor:"$neutral"},[`& ${ol}::before`]:{backgroundColor:"$secondary100",[`.${Si} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Vd=Bn("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Kd=Bn("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),jd=av({display:"flex",justifyContent:"space-between",alignItems:"center"}),Xd=Bn("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Yd}from"@lingui/core";import{Button as lv,Divider as Zd,ListItemButton as pv,Radio as cv,RadioRoot as uv,Typography as Jd}from"@rango-dev/ui";import st from"react";function Rd(t){let{filterBy:e,onClickItem:o}=t;return st.createElement(Kd,null,st.createElement("div",{className:jd()},st.createElement(Jd,{size:"small",variant:"body"},Yd.t("Status")),st.createElement(lv,{variant:"ghost",size:"xxsmall",onClick:()=>o("")},Yd.t("Reset"))),st.createElement(Zd,{size:10}),st.createElement(uv,{value:e},st.createElement(Xd,null,t.list.map((n,r)=>st.createElement(pv,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:st.createElement(st.Fragment,null,st.createElement(Zd,{direction:"horizontal",size:4}),st.createElement(Jd,{size:"medium",variant:"body"},n.title)),start:st.createElement(cv,{value:n.id}),onClick:o})))))}i(Rd,"FilterSelectorContent");function nl(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return wo.createElement("div",null,wo.createElement(dv,{open:a,align:"end",onOpenChange:o,container:B(),content:wo.createElement(Rd,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},wo.createElement(Gd,{variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},wo.createElement(ol,{isSelect:!!n},wo.createElement(mv,{size:16,color:"black"}),!!n&&wo.createElement(Vd,null)))))}i(nl,"FilterSelector");import{i18n as hv}from"@lingui/core";import{Divider as rf,GroupedVirtualizedList as yv,Skeleton as Sv,SwapListItem as af,Typography as Tv}from"@rango-dev/ui";import je,{useCallback as sf,useEffect as Cv,useRef as kv,useState as vv}from"react";function ef(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(ef,"calculateGroupsSoFar");import{css as fv,darkTheme as gv,styled as Ln}from"@rango-dev/ui";var rl=fv(),tf=Ln("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),il=Ln("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${rl}`]:{$$color:"$colors$neutral600",[`.${gv} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),al=Ln("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),of=Ln("div",{gap:"$10",display:"flex",flexDirection:"column"}),nf=Ln("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var xv=10;function sl(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=vv([]),l=kv(0),{swaps:p,groupCounts:c,groups:u}=n(e),m=sf(ef,[]),d=sf(()=>{let g=e.length-l.current;g&&(l.current+=Math.min(g,xv),s(m(c,l.current)))},[e.length]);if(Cv(()=>{r||d()},[r,d]),r){let g=[1,2];return je.createElement(je.Fragment,null,[g,g].map((y,S)=>je.createElement(il,{key:S},je.createElement(al,null,je.createElement(Sv,{variant:"text",width:60,size:"small"}),je.createElement(rf,{size:16})),je.createElement(rf,{size:4}),je.createElement(of,null,y.map((T,k)=>je.createElement(af,{isLoading:!0,key:k}))))))}return je.createElement(yv,{endReached:()=>{l.current<e.length&&d()},groupCounts:a,groupContent:g=>je.createElement(il,null,je.createElement(al,null,je.createElement(Tv,{variant:"label",size:"medium",className:rl()},u[g]))),itemContent:(g,f)=>{let y=p[g];if(!y)return null;let S=y.steps[0],C=y.steps[y.steps.length-1];return je.createElement(tf,{key:y.requestId},je.createElement(af,{requestId:y.requestId,creationTime:y.creationTime,status:y.status,onClick:o,tooltipContainer:B(),onlyShowTime:u[f]===hv.t("Today"),swapTokenData:{from:{token:{image:S.fromLogo,displayName:S.fromSymbol},blockchain:{image:S.fromBlockchainLogo||""},amount:D(y.inputAmount,6,6),realAmount:y.inputAmount},to:{token:{image:C.toLogo,displayName:C.toSymbol},blockchain:{image:C.toBlockchainLogo||""},amount:D(C.outputAmount||C.expectedOutputAmountHumanReadable||"",6,6),realAmount:C.outputAmount||C.expectedOutputAmountHumanReadable||""}}}))}})}i(sl,"HistoryGroupedList");import{i18n as Ti}from"@lingui/core";import lf from"dayjs";var pf=i(t=>{let e=new Map([["today",{title:Ti.t("Today"),swaps:[]}],["week",{title:Ti.t("This week"),swaps:[]}],["month",{title:Ti.t("This month"),swaps:[]}],["year",{title:Ti.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=lf();t.forEach(p=>{let c=Number(p.creationTime),u=lf(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 m=new Date(c).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 Nv=pl("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),Wv=pl("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Mv=pl("div",{"._typography":{color:"$neutral700",[`.${wv}&`]:{color:"$neutral900"}}}),Bv=[{id:Pn.SUCCESS,title:Xe.t("Complete")},{id:Pn.RUNNING,title:Xe.t("Running")},{id:Pn.FAILED,title:Xe.t("Failed")}],Lv=i((t,e)=>t?.length?t.filter(o=>Et(o.fromBlockchain,e)||Et(o.toBlockchain,e)||Et(o.toSymbol,e)||Et(o.fromSymbol,e)).length:!1,"isStepContainsText");function uf(){let t=Av(),{manager:e,state:o}=bv(),n=dt(e).map(({swap:k})=>k),[r,a]=ki(""),[s,l]=ki(!1),p=!o.loadedFromPersistor,[c,u]=ki(""),[m,d]=ki(!1),g=i(k=>{let v=k.target.value;a(v)},"handleSearch"),f=cf(()=>!r&&!c?n:n.filter(k=>{let{inputAmount:v,status:w,steps:A,requestId:b}=k;return(!r||Et(v,r)||Et(w,r)||Lv(A,r)||Et(b,r))&&(!c||c===w)}),[n,r,c]),y=!f?.length&&!p,S=i(()=>d(!1),"onCloseModal"),C=i(async()=>{try{await e?.clearQueue(),d(!1)}catch(k){console.log(k)}},"onClear"),T=cf(()=>!n.some(k=>k.status===Pn.SUCCESS||k.status===Pn.FAILED),[n]);return se.createElement(ie,{header:{title:Xe.t("History"),suffix:se.createElement(Kt,null,se.createElement(ll,{disabled:T,variant:"ghost",size:"xsmall",onClick:()=>d(!0)},se.createElement(Ci,{size:"medium",variant:"label",color:"error"},Xe.t("Clear all Txs"))))}},se.createElement(le,null,se.createElement(Wv,null,se.createElement(kt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Xe.t("Search Transaction"),autoFocus:!0,onChange:g,style:{height:36},value:r}),se.createElement(Jt,{size:10,direction:"horizontal"}),se.createElement(nl,{filterBy:c,open:s,onOpenChange:k=>l(k),onClickItem:k=>u(k),list:Bv})),se.createElement(Jt,{size:"16"}),se.createElement(Nv,null,y&&se.createElement(nf,null,se.createElement(Jt,{size:32}),se.createElement(Iv,{title:r?Xe.t("No results found"):Xe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Xe.t("Try using different keywords"):Xe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!y&&se.createElement(sl,{list:f,onSwapClick:t,groupBy:pf,isLoading:p}))),se.createElement(X,{open:m,onClose:S,container:B()},se.createElement(Jt,{size:20}),se.createElement(Ev,{type:"warning",title:Xe.t("Clear History"),description:se.createElement(Mv,null,se.createElement(Ci,{variant:"body",size:"medium"},Xe.t("This would clear all succeeded/failed transactions from widget. Do you wish to proceed?")),se.createElement(Jt,{size:"24"}),se.createElement(Ci,{variant:"body",size:"small"},Xe.t("Hint: This does not clear your transaction history on blockchain. Only hides them in this page.")))}),se.createElement(Jt,{size:40}),se.createElement(Jt,{size:10}),se.createElement(ll,{variant:"contained",type:"primary",size:"large",onClick:C},Xe.t("Yes, Clear history")),se.createElement(Jt,{size:10}),se.createElement(ll,{variant:"outlined",type:"primary",size:"large",onClick:S},se.createElement(Ci,{variant:"title",size:"medium",color:"primary"},Xe.t("No, Cancel")))))}i(uf,"HistoryPage");import{i18n as Jv}from"@lingui/core";import{Button as Rv,Divider as Wf,styled as ex,WarningIcon as tx}from"@rango-dev/ui";import ox from"bignumber.js";import tt,{useEffect as Mf,useState as Bf}from"react";import{useNavigate as nx}from"react-router-dom";import{i18n as Ov}from"@lingui/core";import{Header as Uv}from"@rango-dev/ui";import Rt,{useEffect as zv,useState as Qv}from"react";import{i18n as Dv}from"@lingui/core";import{Divider as ul,FullExpandedQuote as _v,Typography as $v}from"@rango-dev/ui";import we from"react";import{styled as cl}from"@rango-dev/ui";var mf=cl("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),df=cl("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),ff=cl("div",{width:"146px"});import{i18n as Dn}from"@lingui/core";import{Select as Pv}from"@rango-dev/ui";import gf from"react";function vi(t){let{updateQuotePartialState:e,sortStrategy:o}=q(),n=[{value:"SMART",label:Dn.t("Smart Routing")},{value:"FEE",label:Dn.t("Lowest Fee")},{value:"SPEED",label:Dn.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Dn.t("Maximum Return")},{value:"PRICE",label:Dn.t("Maximum Output")}];return gf.createElement(ff,null,gf.createElement(Pv,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(vi,"SelectStrategy");var hf=3;function _n(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:m,toToken:d,sortStrategy:g,error:f}=q(),{slippage:y,customSlippage:S}=h(),{findToken:C}=h(),T=l||B(),k=!!c&&c.results.length,v=S??y,w=i(x=>{if(!m||!d||!c)return null;let E={requestAmount:c.requestAmount,...x};return Do(E,{fromToken:m,toToken:d,userSlippage:v,findToken:C})},"getQuoteWarning"),A=f?.type===0||f?.type===1,b=c?.results?br(g,c?.results):[];return we.createElement(we.Fragment,null,a&&we.createElement(we.Fragment,null,we.createElement(df,null,we.createElement($v,{size:"xmedium",variant:"title"},Dv.t("Sort by")),we.createElement(vi,{container:T})),we.createElement(ul,{size:"10"})),e&&Array.from({length:hf},(x,E)=>we.createElement(we.Fragment,{key:E},s?we.createElement(_v,{loading:!0}):we.createElement(En,{tagHidden:!1,type:"list-item",expanded:!1}),E!==hf-1&&we.createElement(ul,{size:16}))),!e&&we.createElement(we.Fragment,null,k?b.map((x,E)=>{let I=w(x),P=_s(x.swaps),H=b.length-1===E;return we.createElement(we.Fragment,{key:x.requestId},we.createElement(bo,{showModalFee:r,container:T,selected:p?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:c.requestAmount},loading:e,error:P?.options||null,warning:I,fullExpandedMode:s,onClick:N=>{P||u("warning",I),u("error",P?.options||null),o(N)},type:"list-item"}),!H&&we.createElement(ul,{size:16}))}):A&&we.createElement(mf,null,we.createElement(yn,{size:s?"large":"small",error:f,fetch:n}))))}i(_n,"Quotes");import{darkTheme as Fv,styled as yf}from"@rango-dev/ui";var Sf=yf("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${Fv} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Tf=yf("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var qv=100;function ml(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=Qv(!1),p=s?"":"is-hidden",{config:c}=h(),u=c?.variant==="full-expanded",m=on();return zv(()=>{let d=null;return a?d=setTimeout(()=>{l(!0)},qv):(l(!1),d&&clearTimeout(d)),()=>{d&&clearTimeout(d)}},[a]),Rt.createElement(Sf,{expandMode:c?.variant==="full-expanded"?"full":"default",className:`${p} ${Lr()}`,id:ke.EXPANDED_BOX_ID},Rt.createElement(Uv,{title:Ov.t("Routes"),suffix:Rt.createElement(Rt.Fragment,null,Rt.createElement(vi,{container:m}),Rt.createElement(go,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),Rt.createElement(Tf,null,Rt.createElement(_n,{showModalFee:!1,fetch:e,hasSort:!1,loading:o,container:on(),onClickOnQuote:n,fullExpandedMode:u})))}i(ml,"ExpandedQuotes");import{i18n as Ef}from"@lingui/core";import{SwapInput as If}from"@rango-dev/ui";import $n from"react";import{ReverseIcon as Vv}from"@rango-dev/ui";import fl from"react";import{keyframes as Hv,styled as Cf}from"@rango-dev/ui";var dl=450,Gv=Hv({"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)"}}),kf=Cf("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),vf=Cf("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${Gv} ${dl}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 gl(){let t=q.use.switchFromAndTo();return fl.createElement(kf,null,fl.createElement(vf,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},dl),t()}},fl.createElement(Vv,{size:12})))}i(gl,"SwitchFromAndToButton");import{styled as xf}from"@rango-dev/ui";var bf=xf("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),wf=xf("div",{position:"relative"});function hl(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:p,setInputAmount:c,inputAmount:u,inputUsdValue:m,outputAmount:d,outputUsdValue:g,selectedQuote:f}=q(),{connectedWallets:y,getBalanceFor:S}=oe(),C=a?S(a):null,T=sr(C)?.amount??"0",k=s&&a?D(C?.amount,C?.decimals):"0",v=!!s&&wp(y,s.name),w=!Sa(f,u,m),A=!Sa(f,u,g),b=!m||!g||!g.gt(0)?null:mt(m.toString(),g.toString());return $n.createElement(bf,null,$n.createElement(wf,null,$n.createElement(If,{label:Ef.t("From"),mode:"From",onInputChange:c,balance:T,chain:{displayName:s?.displayName||"",image:s?.logo||""},token:{displayName:a?.symbol||"",image:a?.image||""},onClickToken:()=>n("from"),price:{value:u,usdValue:w?void 0:D(m,4,4),realUsdValue:w?void 0:m?.toString(),error:w?re().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:v,tooltipContainer:B(),onSelectMaxBalance:()=>{c(k.split(",").join(""))},anyWalletConnected:y.length>0}),$n.createElement(gl,null)),$n.createElement(If,{sharpBottomStyle:!r&&(!!f||e),label:Ef.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:p?.displayName||"",image:p?.logo||""},token:{displayName:l?.symbol||"",image:l?.image||""},percentageChange:D(mt(m,g),2,2),warningLevel:Lt(b??0),price:{value:D(d,6,6),usdValue:A?void 0:D(g,4,4),realValue:d?.toString(),realUsdValue:A?void 0:g?.toString(),error:A?re().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:B()}))}i(hl,"Inputs");import{useCallback as Kv,useEffect as jv,useRef as Xv,useState as Yv}from"react";function Af(){let{fetch:t,loading:e,cancelFetch:o}=ui({request:async(n,r)=>await qt().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Af,"useFetchAllQuotes");var Zv=600;function xi({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Af(),{excludeLiquiditySources:n,features:r,enableCentralizedSwappers:a}=h().config,s=oe.use.connectedWallets(),{fromToken:l,toToken:p,inputAmount:c,inputUsdValue:u,selectedQuote:m,sortStrategy:d,resetQuote:g,error:f,warning:y,setSelectedQuote:S,updateQuotePartialState:C}=q(),{slippage:T,customSlippage:k,affiliatePercent:v,affiliateRef:w,affiliateWallets:A,fetchStatus:b}=h(),x=h().getLiquiditySources(),E=h().getDisabledLiquiditySources(),I=h().excludeLiquiditySources(),{findToken:P}=h(),[H,N]=Yv(!0),J=Xv(c),ne=k??T,M=!l||!p||ao(l,p)||!sn(c),K=i(ae=>{N(ae)},"resetState"),ge=i(ae=>{let{fromToken:he,toToken:Ce,inputAmount:O,liquiditySources:W,excludeLiquiditySources:me,disabledLiquiditySources:de,slippage:ze,affiliateRef:$,affiliatePercent:Q,affiliateWallets:j}=ae;if(H||K(!0),!M&&he&&Ce){g();let pe=gc({fromToken:he,toToken:Ce,inputAmount:O,liquiditySources:W,excludeLiquiditySources:me,disabledLiquiditySources:de,wallets:s,slippage:ze,affiliateRef:$,affiliatePercent:Q,affiliateWallets:j,enableCentralizedSwappers:a});Up("experimentalRoute",r)&&(pe.experimental=!0),e(pe).then(te=>{let ce=br(d,te.results),ve=Nc(m,ce,te.requestAmount);N(!1),C("quotes",te),S(ve),mi({diagnosisMessages:te.diagnosisMessages,requestId:ve?.requestId||"",swaps:ve?.swaps});let jn=co(ve)||Ce?.usdPrice,ro=un(ve)||he?.usdPrice,Yi=ve&&Do(ve,{fromToken:{...he,usdPrice:ro},toToken:{...Ce,usdPrice:jn},userSlippage:ne,findToken:P});C("warning",Yi)}).catch(te=>{let{error:ce}=di(te);(ce?.type===0||ce?.type===1)&&g(),ce?.type!==2&&(C("error",ce),N(!1))})}},"fetch"),Y=Kv(up(ae=>{ge(ae)},Zv),[M]);return jv(()=>{if(!t){N(!1);return}if(b!=="success")return;if(M){N(!1),(m||f||y)&&g();return}if(!sn(c)||u?.eq(0)){K(!1),o();return}g(),K(!0);let ae=ge;return J.current&&J.current!=c&&(ae=Y),J.current=c,ae({inputAmount:c,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:I,disabledLiquiditySources:E,slippage:ne,affiliateRef:w,affiliatePercent:v,affiliateWallets:A}),o},[b,c,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,M,x?.length,n,E.length,ne,w,v,JSON.stringify(A)]),{fetch:()=>ge({inputAmount:c,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:I,disabledLiquiditySources:E,slippage:ne,affiliateRef:w,affiliatePercent:v,affiliateWallets:A}),loading:H}}i(xi,"useSwapInput");function Nf(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};xe.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Nf,"emitPreventableEvent");var rx=ex("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),ix=300;function Lf(){let t=nx(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:p,setSelectedQuote:c,resetQuoteWallets:u,setQuoteWarningsConfirmed:m,updateQuotePartialState:d}=q(),[g,f]=Bf(!1),{isLargeScreen:y,isExtraLargeScreen:S}=ni(),{fetch:C,loading:T}=xi({refetchQuote:a}),{config:k,fetchStatus:v}=h(),{connectedWallets:w}=oe(),{isActiveTab:A}=ue(),[b,x]=Bf(!1),I=pc({fetchMetaStatus:v,fetchingQuote:T,inputAmount:n,quote:r,anyWalletConnected:w.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),P=Bp(y,S,k?.variant),H=!!n&&!!e&&!!o&&new ox(n).gt(0)&&!bc(e,o),N=H&&v==="success"&&T,L=(!P||P&&p?.results.length)&&(l||s);Mf(()=>{u(),d("refetchQuote",!0)},[]),Mf(()=>{f(H)},[H]);let M=(r||s)&&!b?C:void 0,K=i(Y=>{P&&g?(f(!1),setTimeout(()=>{t(Y)},ix)):t(Y)},"onHandleNavigation"),ge=i(Y=>{r?.requestId!==Y.requestId&&(x(!1),c(Y))},"onClickOnQuote");return tt.createElement(rx,null,tt.createElement(ie,{height:"auto",footer:tt.createElement(Rv,{type:"primary",size:"large",disabled:I.disabled||!A,prefix:I.action==="confirm-warning"&&tt.createElement(tx,null),fullWidth:!0,onClick:()=>{I.action==="connect-wallet"?Nf({type:"clickConnectWallet"},()=>K(F.wallets)):I.action==="confirm-warning"?x(!0):K(F.confirmSwap)}},I.title),header:{onWallet:()=>{K(F.wallets)},hasBackButton:!1,title:k.title||Jv.t("Swap"),suffix:tt.createElement(go,{hidden:P?["refresh"]:void 0,onClickRefresh:M,onClickHistory:()=>K(F.swaps),onClickSettings:()=>{K(F.settings)}})}},tt.createElement(le,null,tt.createElement(hl,{fetchingQuote:N,fetchMetaStatus:v,isExpandable:P,onClickToken:Y=>{K(Y==="from"?F.fromSwap:F.toSwap)}}),tt.createElement(Wf,{size:"2"}),P?null:tt.createElement(bo,{quote:r,loading:N,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:p&&p.results.length>1?()=>{d("refetchQuote",!1),K(F.routes)}:void 0}),L?tt.createElement(tt.Fragment,null,tt.createElement(Wf,{size:"10"}),tt.createElement(Tn,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:C,showWarningModal:b,confirmationDisabled:!A,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:()=>{x(!1),m(!0),K(F.confirmSwap)},onChangeSettings:()=>K(F.settings)})):null)),P?tt.createElement(ml,{loading:N,onClickOnQuote:ge,fetch:C,onClickRefresh:M,isVisible:g}):null)}i(Lf,"Home");import{i18n as Pf}from"@lingui/core";import{Alert as ax,Divider as sx,List as lx,ListItemButton as px,Radio as cx,RadioRoot as ux,Typography as mx}from"@rango-dev/ui";import Bt from"react";function eo(){let{setLanguage:t,language:e,config:o}=h(),n=qp,r=o?.language||Lo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||Lo),resetLanguage:()=>t(null)}}i(eo,"useLanguage");function Df(){let{activeLanguage:t,changeLanguage:e,languages:o}=eo(),n=Re(),r=o.map(a=>{let{local:s,label:l,SVGFlag:p}=a;return{id:s,value:s,title:Bt.createElement(mx,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:Bt.createElement(cx,{value:s}),start:Bt.createElement(p,null)}});return Bt.createElement(ie,{header:{title:Pf.t("Language")}},Bt.createElement(le,null,Bt.createElement(ax,{type:"warning",variant:"alarm",title:"Important Notice: Machine translations are in use"}),Bt.createElement(sx,{size:"8"}),Bt.createElement(ux,{value:t},Bt.createElement(lx,{type:Bt.createElement(px,{title:Pf.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(Df,"LanguagePage");import{i18n as Ot}from"@lingui/core";import{Button as yx,Checkbox as Sx,Image as Tx,ListItemButton as Cx,NotFound as kx,Typography as vx}from"@rango-dev/ui";import Ye,{useState as xx}from"react";import{Checkbox as gx,Skeleton as $f}from"@rango-dev/ui";import On from"react";import{styled as yl}from"@rango-dev/ui";var Fn=yl("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Sl=yl("div",{width:80,display:"flex",justifyContent:"flex-end"}),Tl=yl("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as dx,styled as fx}from"@rango-dev/ui";var _f=fx(dx,{height:61});var hx=30;function Cl(){return On.createElement(Fn,null,Array.from(Array(hx),(t,e)=>On.createElement(_f,{hasDivider:!0,key:e,start:On.createElement($f,{variant:"circular",width:35,height:35}),title:On.createElement($f,{variant:"text",size:"large",width:90}),end:On.createElement(gx,{checked:!1})})))}i(Cl,"LoadingLiquiditySourceList");function kl({sourceType:t}){let e=h().fetchStatus,o=h().swappers(),n=h().getDisabledLiquiditySources(),[r,a]=xx(""),s=h().toggleLiquiditySource,l=h().isInCampaignMode(),p=fr(o,n),c={Exchanges:Ot.t("Exchanges"),Bridges:Ot.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=p.filter(C=>u.includes(C.type)),d=m.length===m.filter(C=>C.selected).length,g=i(()=>{m.forEach(C=>{d?s(C.groupTitle):C.selected||s(C.groupTitle)})},"toggleAllSources"),f=m.map(C=>{let{selected:T,groupTitle:k,logo:v}=C;return{start:Ye.createElement(Tx,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(k)},end:Ye.createElement(Sx,{checked:T,disabled:l}),title:Ye.createElement(vx,{variant:"title",size:"xmedium"},Ot.t(k)),...C}}),y=i(C=>{let T=C.target.value;a(T)},"handleSearch"),S=f;return r&&(S=f.filter(C=>Et(C.groupTitle,r))),Ye.createElement(ie,{header:{title:Ot.t(t),suffix:Ye.createElement(Sl,null,Ye.createElement(yx,{variant:"ghost",size:"xsmall",onClick:g},d?Ot.t("Deselect all"):Ot.t("Select all")))}},Ye.createElement(le,{view:!0},Ye.createElement(kt,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:Ot.t("Search {sourceType}",{sourceType:c[t]}),onChange:y}),e==="loading"&&Ye.createElement(Cl,null),!S.length&&r?Ye.createElement(Tl,null,Ye.createElement(kx,{title:Ot.t("No results found"),description:Ot.t("Try using different keywords")})):e==="success"&&Ye.createElement(Fn,{disabled:l},S.map(C=>{let{groupTitle:T,...k}=C;return Ye.createElement(Ye.Fragment,{key:C.id},Ye.createElement(Cx,{style:{height:"61px"},...k,selected:!1,hasDivider:!0}))}))))}i(kl,"LiquiditySourcePage");import{i18n as bx}from"@lingui/core";import bi from"react";import{useNavigate as wx}from"react-router-dom";function Ff(){let t=wx(),e=Re(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=q(),{fetch:l,loading:p}=xi({refetchQuote:n}),c=i(d=>{r(d),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${F.settings}`,m=`../${F.wallets}`;return bi.createElement(ie,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:bx.t("Routes"),suffix:bi.createElement(go,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},bi.createElement(le,null,bi.createElement(_n,{fetch:l,loading:p,onClickOnQuote:c})))}i(Ff,"RoutesPage");import{i18n as Gf}from"@lingui/core";import{Divider as Vf,getCategoriesCount as Dx,SelectableCategoryList as _x}from"@rango-dev/ui";import Ut,{useState as Kf}from"react";import{useNavigate as $x}from"react-router-dom";import{i18n as vl}from"@lingui/core";import{Divider as Nx,Image as Wx,ListItemButton as Mx,NotFound as Bx,Typography as Hf}from"@rango-dev/ui";import lt,{useEffect as Lx,useState as Px}from"react";var Of=i((t,e,o)=>t.filter(n=>Jn(n.type,o)).filter(n=>nt(n.name,e)||nt(n.displayName,e)),"filterBlockchains");import{ImageContainer as Ex,styled as Uf}from"@rango-dev/ui";var zf=Uf("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),wi=Uf(dn,{padding:0,margin:0,listStyle:"none",[`& ${Ex}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as Ix,Skeleton as Qf}from"@rango-dev/ui";import Ei from"react";var Ax=20;function qf(){return Ei.createElement(wi,null,Array.from(Array(Ax),t=>Ei.createElement(Ix,{key:t,hasDivider:!0,start:Ei.createElement(Qf,{variant:"circular",width:35,height:35}),title:Ei.createElement(Qf,{variant:"text",size:"large",width:90})})))}i(qf,"LoadingBlockchainList");function xl(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,l]=Px(e),{fetchStatus:p}=h();Lx(()=>{l([...Of(e,o,r)])},[e,o,r]);let c=i(()=>!s.length&&o?lt.createElement(Bx,{title:vl.t("No results found"),description:vl.t("Try using different keywords")}):lt.createElement(wi,{as:"ul",key:`${r}-${o}`},s.map(u=>lt.createElement(Mx,{key:`${u.name}-${u.chainId}`,hasDivider:!0,onClick:()=>n(u),start:lt.createElement(Wx,{src:u.logo,size:30}),title:lt.createElement(Hf,{variant:"title",size:"medium"},u.displayName),id:u.chainId}))),"renderList");return lt.createElement(lt.Fragment,null,a&&lt.createElement(lt.Fragment,null,lt.createElement(Hf,{variant:"label",size:"large"},vl.t("Select Blockchain")),lt.createElement(Nx,{size:4})),lt.createElement(zf,null,p==="loading"&&lt.createElement(qf,null),p==="success"&&c()))}i(xl,"BlockchainList");function Ii(t){let{type:e}=t,o=Re(),[n,r]=Kf(""),[a,s]=Kf("ALL"),l=q.use.setToBlockchain(),p=q.use.setFromBlockchain(),{fetchStatus:c}=h(),u=$x(),m=h().blockchains({type:e}),d=Dx(m),g=!t.hideCategory&&d!==1;return Ut.createElement(ie,{header:{title:Gf.t("Select Blockchain")}},Ut.createElement(le,{view:!0},g&&Ut.createElement(Ut.Fragment,null,Ut.createElement(_x,{setCategory:s,category:a,blockchains:m,isLoading:c==="loading"}),Ut.createElement(Vf,{size:24})),Ut.createElement(kt,{value:n,autoFocus:!0,placeholder:Gf.t("Search Blockchain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),Ut.createElement(Vf,{size:16}),Ut.createElement(xl,{list:m,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:f=>{e==="custom-token"?u(`..?blockchain=${f.name}`,{replace:!0}):(e==="source"?p(f):l(f),o())}})))}i(Ii,"SelectBlockchainPage");import{i18n as Ni}from"@lingui/core";import{Divider as Rf}from"@rango-dev/ui";import Eo,{useState as Gx}from"react";import{useNavigate as Vx}from"react-router-dom";import{i18n as El}from"@lingui/core";import{BlockchainsChip as Ai,Divider as Zf,Image as Jf,Skeleton as Qx,Tooltip as qx,Typography as Il}from"@rango-dev/ui";import Oe from"react";import{useEffect as Ux}from"react";var jf=["ETH","COSMOS","OSMOSIS"];function bl(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Fx),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(Ox(s)),r=n.splice(a)}return{list:n,more:r}}i(bl,"prepare");function Fx(t,e){let o=jf,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(Fx,"sortByMostUsedBlockchains");function Ox(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(Ox,"generateSortByPreferredBlockchainsFor");function Xf(t,e){return!!e.list.find(o=>o.name===t)}i(Xf,"isInVisibleList");function wl(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=h();Ux(()=>{if(e?.selected){let a=bl(t,o,e);Xf(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=bl(t,o,e);return{list:r.list,more:r.more,history:[]}}i(wl,"usePrepareBlockchainList");import{styled as zx}from"@rango-dev/ui";var Yf=zx("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var Hx=12;function Al(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,s=wl(e,{limit:10,selected:n?.name}),{fetchStatus:l}=h(),p=q.use.resetToBlockchain(),c=q.use.resetFromBlockchain(),u=s.more.length>0,m=s.more.length===1,d=!m&&u;return Oe.createElement(Oe.Fragment,null,Oe.createElement(Zf,{size:12}),Oe.createElement(Il,{variant:"label",size:"large"},El.t("Select Blockchain")),Oe.createElement(Zf,{size:12}),Oe.createElement(Yf,null,l==="loading"&&Array.from(Array(Hx),g=>Oe.createElement(Qx,{key:g,variant:"rounded",height:50})),l==="success"&&Oe.createElement(Oe.Fragment,null,Oe.createElement(Ai,{selected:!n,onClick:()=>{o==="from"?c():p()}},Oe.createElement(Il,{variant:"body",size:"xsmall",color:"secondary500"},El.t("All"))),s.list.map(g=>Oe.createElement(qx,{key:g.name,content:g.shortName,side:"bottom",sideOffset:2,container:B()},Oe.createElement(Ai,{key:g.name,selected:!!n&&n.name===g.name,onClick:()=>r(g)},Oe.createElement(Jf,{src:g.logo,size:30})))),m?Oe.createElement(Ai,{key:s.more[0].name,selected:!!n&&n.name===s.more[0].name,onClick:()=>r(s.more[0])},Oe.createElement(Jf,{src:s.more[0].logo,size:30})):null,d?Oe.createElement(Ai,{onClick:a,key:"more-blockchains"},Oe.createElement(Il,{variant:"body",size:"xsmall",color:"secondary500"},El._("More +{count}",{count:s.more.length}))):null)))}i(Al,"BlockchainsSection");function Nl(t){let{type:e}=t,o=Vx(),n=Re(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:p,setToBlockchain:c}=q(),u=oe.use.getBalanceFor(),[m,d]=Gx(""),f=(e==="source"?r:a)?.name??"",y=h().blockchains({type:e}),S=h().tokens({type:e,blockchain:f,searchFor:m,getBalanceFor:u}),C=i(v=>{e==="source"?p(v):c(v)},"updateBlockchain"),T=i(v=>{e==="source"?s({token:v,meta:{blockchains:y,tokens:S}}):l({token:v,meta:{blockchains:y,tokens:S}})},"updateToken"),k={source:Ni.t("Source"),destination:Ni.t("Destination")};return Eo.createElement(ie,{header:{title:Ni.t("Swap {type}",{type:k[e]})}},Eo.createElement(le,null,Eo.createElement(Al,{blockchains:y,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:v=>{C(v)}}),Eo.createElement(Rf,{size:24}),Eo.createElement(kt,{value:m,autoFocus:!0,placeholder:Ni.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>d(""),onChange:v=>d(v.target.value)}),Eo.createElement(Rf,{size:16}),Eo.createElement(Wn,{list:S,selectedBlockchain:f,searchedFor:m,type:e,onChange:v=>{T(v);let w=y.find(A=>v.blockchain===A.name);w&&C(w),n()}})))}i(Nl,"SelectSwapItemsPage");import{i18n as Bl}from"@lingui/core";import{Alert as Sb,Button as Tb,styled as Cb}from"@rango-dev/ui";import Io from"react";import{useInRouterContext as kb,useSearchParams as vb}from"react-router-dom";import{i18n as ig}from"@lingui/core";import{Divider as Yx,InfoIcon as Zx,TextField as Jx,Tooltip as Rx,Typography as ag}from"@rango-dev/ui";import xt from"react";import{Chip as Kx,styled as Un,TextField as jx}from"@rango-dev/ui";var eg=Un("div",{paddingTop:"$5",padding:"$10 $5"}),tg=Un("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${jx}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),og=Un("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Wi=Un("div",{maxWidth:"280px",padding:"$10"}),ng=Un(Kx,{width:"61px",flexShrink:0});import{i18n as Wl}from"@lingui/core";import{Typography as Xx}from"@rango-dev/ui";import zn from"react";function rg(){return zn.createElement(Wi,null,zn.createElement(Xx,{variant:"label",size:"medium",color:"neutral700"},Wl.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage"),zn.createElement("br",null),zn.createElement("br",null),zn.createElement("b",null,Wl.t("Warning")),":",Wl.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(rg,"SlippageTooltipContent");function Ml(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=h();return xt.createElement(eg,null,xt.createElement(og,null,xt.createElement(ag,{variant:"title",size:"xmedium"},ig.t("Slippage tolerance per swap")),xt.createElement(Yx,{direction:"horizontal",size:4}),xt.createElement(Rx,{container:B(),side:"top",sideOffset:4,content:xt.createElement(rg,null)},xt.createElement(Zx,{color:"gray"}))),xt.createElement(tg,null,Hp.map((r,a)=>{let s=`slippage-${a}`;return xt.createElement(ng,{key:s,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`})}),xt.createElement(Jx,{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>=jp&&s<=Kp?n(s):n(null)},suffix:o&&xt.createElement(ag,{variant:"body",size:"small"},"%"),placeholder:ig.t("Custom")})))}i(Ml,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as sg,BridgesIcon as eb,ChevronRightIcon as Mi,DarkModeIcon as lg,Divider as Qn,ExchangeIcon as tb,InfinityIcon as ob,InfoIcon as nb,LanguageIcon as rb,LightModeIcon as pg,List as ib,ListItem as ab,ListItemButton as sb,Skeleton as lb,styled as pb,Switch as cb,Tabs as ub,TargetIcon as mb,Tooltip as db,Typography as ot}from"@rango-dev/ui";import _ from"react";import{useNavigate as fb}from"react-router-dom";var gb=pb("div",{width:"202px",height:"$40"}),hb=[{id:"light",icon:_.createElement(pg,{color:"black",size:24}),tooltip:_.createElement(ot,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:_.createElement(lg,{color:"black",size:24}),tooltip:_.createElement(ot,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:_.createElement(sg,{color:"black",size:24}),tooltip:_.createElement(ot,{size:"xsmall",variant:"body"},bt.t("Auto"))}],yb=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return _.createElement(sg,{...e});case"dark":return _.createElement(lg,{...e});default:return _.createElement(pg,{...e})}},"getThemeIcon");function cg(){let t=fb(),{theme:e}=h().config,{setTheme:o,theme:n}=h(),{activeLanguage:r,languages:a}=eo(),s=a.find(M=>M.local===r)?.label,l=h().fetchStatus,p=h().swappers(),c=h().getDisabledLiquiditySources(),{config:{features:u}}=h(),m=h().customTokens(),d=Ze("theme",u),g=Ze("liquiditySource",u),f=Ze("language",u),y=Ze("customTokens",u),S=h().infiniteApprove,C=h().toggleInfiniteApprove,T=fr(p,c),k=T.filter(M=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(M.type)),v=k.length,w=k.filter(M=>M.selected).length,A=T.filter(M=>M.type==="DEX"),b=A.length,x=A.filter(M=>M.selected).length,E=i((M,K)=>{switch(l){case"loading":return _.createElement(lb,{variant:"text",size:"medium",width:50});case"failed":return _.createElement(ot,{variant:"body",size:"medium",color:"$error500"},bt.t("Loading failed"));default:return _.createElement(ot,{variant:"body",size:"medium"},`${M} / ${K}`)}},"handleSwapperEndItem"),I={id:"bridge-item",title:_.createElement(ot,{variant:"title",size:"xmedium"},bt.t("Bridges")),end:_.createElement(_.Fragment,null,E(w,v),_.createElement(Qn,{direction:"horizontal",size:8}),_.createElement(Mi,{color:"black"})),onClick:()=>t(F.bridges),start:_.createElement(eb,{color:"gray",size:16})},P={id:"exchange-item",title:_.createElement(ot,{variant:"title",size:"xmedium"},bt.t("Exchanges")),end:_.createElement(_.Fragment,null,E(x,b),_.createElement(Qn,{direction:"horizontal",size:8}),_.createElement(Mi,{color:"black"})),start:_.createElement(tb,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},H={id:"custom-tokens-item",title:_.createElement(ot,{variant:"title",size:"xmedium"},bt.t("Custom Tokens")),end:_.createElement(_.Fragment,null,_.createElement(ot,{variant:"body",size:"medium"},`${m.length}`),_.createElement(Qn,{direction:"horizontal",size:8}),_.createElement(Mi,{color:"black"})),start:_.createElement(mb,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},N={id:"language-item",title:_.createElement(ot,{variant:"title",size:"xmedium"},bt.t("Language")),start:_.createElement(rb,{color:"gray",size:16}),end:_.createElement(_.Fragment,null,_.createElement(ot,{variant:"body",size:"medium"},s),_.createElement(Qn,{direction:"horizontal",size:8}),_.createElement(Mi,{color:"black"})),onClick:()=>t(F.languages)},J={id:"infinite-approval-item",title:_.createElement(_.Fragment,null,_.createElement(ot,{variant:"title",size:"xmedium"},bt.t("Infinite approval")),_.createElement(Qn,{direction:"horizontal",size:4}),_.createElement(db,{side:"top",sideOffset:4,container:B(),content:_.createElement(Wi,null,_.createElement(ot,{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.")))},_.createElement(nb,{color:"gray"}))),start:_.createElement(ob,{color:"gray",size:16}),end:_.createElement(cb,{checked:S}),onClick:C},ne={id:"theme-item",type:_.createElement(ab,null),title:_.createElement(ot,{variant:"title",size:"xmedium"},bt.t("Theme")),end:_.createElement(gb,null,_.createElement(ub,{container:B(),items:hb,value:n,onChange:M=>o(M.id),type:"primary",borderRadius:"small"})),start:yb(n)},L=g?[]:[I,P];return y||L.push(H),f||L.push(N),L.push(J),!e?.singleTheme&&!d&&L.push(ne),_.createElement(ib,{type:_.createElement(sb,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:L})}i(cg,"SettingsLists");var xb=Cb("div",{paddingLeft:"$8"});function ug(){let{isInCampaignMode:t,updateCampaignMode:e}=h(),o=t(),[,n]=vb(),r=kb(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Io.createElement(ie,{header:{title:Bl.t("Settings")}},Io.createElement(le,null,o&&Io.createElement(Sb,{type:"info",variant:"alarm",title:Bl.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:Io.createElement(xb,null,Io.createElement(Tb,{type:"secondary",size:"small",onClick:a},Bl.t("Reset")))}),Io.createElement(Ml,null),Io.createElement(cg,null)))}i(ug,"SettingsPage");import{i18n as lw}from"@lingui/core";import{cancelSwap as pw}from"@rango-dev/queue-manager-rango-preset";import{useManager as cw}from"@rango-dev/queue-manager-react";import{Alert as uw}from"@rango-dev/ui";import Xl from"react";import{useParams as mw}from"react-router-dom";import{i18n as pt}from"@lingui/core";import{getCurrentBlockchainOfOrNull as qb,getCurrentStep as Hb,getRelatedWalletOrNull as Gb}from"@rango-dev/queue-manager-rango-preset";import{Button as qg,CopyIcon as Vb,Divider as Kb,DoneIcon as jb,IconButton as Xb,QuoteCost as Yb,RangoExplorerIcon as Zb,StepDetails as Jb,Tooltip as Hg,Typography as No,useCopyToClipboard as Rb}from"@rango-dev/ui";import{useWallets as ew}from"@rango-dev/wallets-react";import Gg from"bignumber.js";import{PendingSwapNetworkStatus as zi}from"rango-types";import Z,{useEffect as Vg,useRef as tw,useState as Kg}from"react";import{useNavigate as ow}from"react-router-dom";import{i18n as to}from"@lingui/core";var bb=[to.t("Sunday"),to.t("Monday"),to.t("Tuesday"),to.t("Wednesday"),to.t("Thursday"),to.t("Friday"),to.t("Saturday")];function mg(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?to.t("Today"):`${bb[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(mg,"timeSince");function dg(t){return t.finishTime?mg(parseInt(t.finishTime)):mg(parseInt(t.creationTime))}i(dg,"getSwapDate");import{PendingSwapNetworkStatus as Di}from"rango-types";import _i from"react";import{i18n as Bi}from"@lingui/core";import{Button as fg,Divider as Ll,MessageBox as wb}from"@rango-dev/ui";import oo from"react";var gg=i(({onCancel:t,onClose:e})=>oo.createElement(oo.Fragment,null,oo.createElement(Ll,{size:20}),oo.createElement(wb,{type:"error",title:Bi.t("Cancel Swap"),description:Bi.t("Are you sure you want to cancel this swap?")}),oo.createElement(Ll,{size:32}),oo.createElement(fg,{variant:"contained",type:"primary",size:"large",onClick:t},Bi.t("Yes, Cancel it")),oo.createElement(Ll,{size:12}),oo.createElement(fg,{variant:"outlined",type:"primary",size:"large",onClick:e},Bi.t("No, Continue"))),"CancelContent");import{i18n as Li}from"@lingui/core";import{Button as hg,Divider as Pl,MessageBox as Eb,Typography as Ib}from"@rango-dev/ui";import zt from"react";var yg=i(({onDelete:t,onClose:e})=>zt.createElement(zt.Fragment,null,zt.createElement(Pl,{size:20}),zt.createElement(Eb,{type:"error",title:Li.t("Delete Transaction"),description:Li.t("Are you sure you want to delete this swap?")}),zt.createElement(Pl,{size:32}),zt.createElement(hg,{variant:"contained",type:"primary",size:"large",onClick:t},Li.t("Yes, Delete it")),zt.createElement(Pl,{size:12}),zt.createElement(hg,{variant:"outlined",type:"primary",size:"large",onClick:e},zt.createElement(Ib,{variant:"title",size:"medium",color:"primary"},Li.t("No, Cancel")))),"DeleteContent");import{i18n as Dl}from"@lingui/core";import{PendingSwapNetworkStatus as _l}from"rango-types";var $l={[_l.WaitingForNetworkChange]:{type:"loading",title:Dl.t("Change Network")},[_l.WaitingForConnectingWallet]:{type:"warning",title:Dl.t("Connect Wallet")},[_l.NetworkChanged]:{type:"success",title:Dl.t("Network Changed")}};import{debug as Pi}from"@rango-dev/logging-core";import{MessageBox as Ab,Wallet as Nb}from"@rango-dev/ui";import{useWallets as Wb}from"@rango-dev/wallets-react";import Ao,{useState as Cg}from"react";import{styled as Sg}from"@rango-dev/ui";var Tg=Sg("div",{display:"flex",justifyContent:"center"}),$V=Sg("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}});var kg=i(t=>{let{type:e,title:o,currentStepWallet:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,{connect:l,getWalletInfo:p,state:c}=Wb(),[u,m]=Cg(null),[d,g]=Cg(null),f=n?.walletType,y=f?ra(c(f)):null,S=f?p(f):null,C=a&&!!f&&!!y&&!!S,T=i(()=>{u&&m({...u,open:!1})},"handleCloseNamespaceModal"),k=i(()=>{d&&g({...d,open:!1})},"handleCloseDerivationPathModal"),v=i(()=>{f&&S&&(S.namespaces?.length?S.namespaces.length>1?m({open:!0,providerType:f,providerImage:S.img,availableNamespaces:S.namespaces,singleNamespace:S.singleNamespace}):S.needsDerivationPath?g({open:!0,providerType:f,providerImage:S.img,namespace:S.namespaces[0]}):l(f).catch(b=>Pi(b)):l(f).catch(b=>Pi(b)))},"handleWalletItemClick"),w=i(b=>{S?.needsDerivationPath&&S?.singleNamespace&&b[0]&&f?g({open:!0,providerType:f,providerImage:S.img,namespace:b[0]}):l(u?.providerType,void 0,b.map(x=>({namespace:x}))).catch(x=>Pi(x)),T()},"handleConfirmNamespaces"),A=i(b=>{b&&d?.namespace&&l(d?.providerType,void 0,[{namespace:d.namespace,derivationPath:b}]).catch(x=>Pi(x)),k()},"handleDerivationPathConfirm");return Ao.createElement(Ao.Fragment,null,Ao.createElement(Ab,{type:e,title:o,description:r}),C&&Ao.createElement(Tg,null,Ao.createElement(Nb,{container:B(),title:S.name,image:S.img,type:f,state:y,link:S.installLink,disabled:s,onClick:v})),Ao.createElement(So,{open:!!u?.open,onClose:T,onConfirm:w,image:u?.providerImage,availableNamespaces:u?.availableNamespaces,singleNamespace:u?.singleNamespace}),Ao.createElement(ho,{open:!!d?.open,selectedNamespace:d?.namespace,type:d?.providerType,image:d?.providerImage,onClose:k,onConfirm:A}))},"WalletStateContent");function Fl(t){let{state:e,onClose:o,onDelete:n,onCancel:r,currentStepWallet:a,message:s,walletButtonDisabled:l}=t,p=e===Di.WaitingForNetworkChange||e===Di.WaitingForConnectingWallet||e===Di.NetworkChanged;return _i.createElement(X,{open:!!e,onClose:o,container:document.getElementById(ke.SWAP_BOX_ID)||document.body},p&&_i.createElement(kg,{type:$l[e].type,title:$l[e].title,currentStepWallet:a,message:s,walletButtonDisabled:l,showWalletButton:e!==Di.WaitingForNetworkChange}),e==="delete"&&_i.createElement(yg,{onClose:o,onDelete:n}),e==="cancel"&&_i.createElement(gg,{onClose:o,onCancel:r}))}i(Fl,"SwapDetailsModal");import{i18n as qn}from"@lingui/core";import{Button as Ol,Divider as $i,MessageBox as vg,TokenAmount as Mb,Typography as Ul}from"@rango-dev/ui";import He from"react";import{useNavigate as Bb}from"react-router-dom";function zl(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:p,chain:c,percentageChange:u,description:m,diagnosisUrl:d}=t,g=Bb();return He.createElement(X,{open:e,onClose:o,container:document.getElementById(ke.SWAP_BOX_ID)||document.body},n==="success"?He.createElement(vg,{type:"success",title:qn.t("Swap Successful")},He.createElement(Mb,{direction:"vertical",tooltipContainer:B(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:p,chain:c,percentageChange:u}),He.createElement($i,{size:12}),He.createElement(Ul,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):He.createElement(vg,{type:"error",title:qn.t("Transaction Failed"),description:m}),He.createElement($i,{size:32}),n==="success"&&He.createElement(Ol,{variant:"contained",type:"primary",size:"large",onClick:()=>{g("../../")}},He.createElement(Ul,{variant:"title",size:"medium",color:"neutral100"},qn.t("Done"))),He.createElement($i,{size:12}),d&&He.createElement(He.Fragment,null,He.createElement(Ol,{variant:"contained",type:"primary",size:"large",onClick:()=>window.open(d,"_blank")},qn.t("Diagnosis")),He.createElement($i,{size:12})),He.createElement(Ol,{variant:"outlined",type:"primary",size:"large",onClick:o},He.createElement(Ul,{variant:"title",size:"medium",color:"primary"},qn.t("See Details"))))}i(zl,"SwapDetailsCompleteModal");import Qb from"react";import{i18n as Fb}from"@lingui/core";import{Alert as Og,IconButton as Ob,LinkIcon as Ub}from"@rango-dev/ui";import no,{Fragment as zb}from"react";import{Alert as Pb,ChevronDownIcon as Db,IconButton as _b}from"@rango-dev/ui";import tn,{useState as $b}from"react";import{css as Hn,darkTheme as xg,styled as Qt,Typography as Lb}from"@rango-dev/ui";var bg=Qt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Fi=Qt("div",{width:"100%","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${xg} &`]:{color:"$secondary500"}}}}}),wg=Qt(dn,{padding:"$0 $20 $20 $20"}),C2=Qt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Eg=Qt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),k2=Qt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),en=Hn({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${xg} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Ig=Hn({padding:"$5 0"}),Oi=Hn({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),Ag=Hn({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),Ng=Hn({width:"100%",padding:"0 $20 $10"}),Wg=Qt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),Mg=Qt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Ui=Qt(Lb,{wordBreak:"break-word"});import{styled as Ql}from"@rango-dev/ui";var Bg=Ql("div",{display:"flex",flexDirection:"column",gap:"$10"}),Lg=Ql("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Pg=Ql("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function Dg(t){let{message:e}=t,[o,n]=$b(!1);return tn.createElement(Pb,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&tn.createElement(_b,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},tn.createElement(Lg,{rotated:o},tn.createElement(Db,{size:12,color:"gray"}))),footer:tn.createElement(Pg,{open:o},tn.createElement(Ui,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Dg,"FailedAlert");import{i18n as _g}from"@lingui/core";import{Alert as ql,Button as $g}from"@rango-dev/ui";import{PendingSwapNetworkStatus as Hl}from"rango-types";import Gn from"react";function Fg(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?Gn.createElement(ql,{type:"warning",title:n.shortMessage,action:Gn.createElement($g,{size:"xxsmall",type:"warning",onClick:()=>{o(Hl.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},_g.t("Change"))}):r===Hl.WaitingForConnectingWallet?Gn.createElement(ql,{type:"warning",title:n.shortMessage,action:Gn.createElement($g,{size:"xxsmall",type:"warning",onClick:()=>{o(Hl.WaitingForConnectingWallet)}},_g.t("Connect"))}):Gn.createElement(ql,{type:"warning",title:n.shortMessage})}i(Fg,"WarningAlert");function Gl(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=cn(a),p=a.status==="waitingForApproval"&&!l,c=a.status==="running"&&!l,u=c&&!s||p&&!a.explorerUrl?.length;return no.createElement(Bg,null,a.explorerUrl?.map((m,d,g)=>{let f=d+m.url,y=d===g.length-1,S=(y&&c||p)&&!u,C=y&&a.status==="failed";return no.createElement(zb,{key:f},no.createElement(Og,{type:y&&(S&&"loading"||C&&"error")||"success",title:m.description?`${m.description} Tx`:Fb.t("View transaction"),action:m.url&&no.createElement(Ob,{variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},no.createElement(Ub,{size:12}))}))}),u&&no.createElement(Og,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&no.createElement(Fg,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&no.createElement(Dg,{message:r}))}i(Gl,"SwapDetailsAlerts");var Ug=2e3;var zg=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:ct(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:D(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:ct(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:D(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:nn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(p=>({from:{chain:{displayName:ct(p.fromBlockchain,e)??"",image:p.fromBlockchainLogo??""}},to:{chain:{displayName:ct(p.toBlockchain,e)??"",image:p.toBlockchainLogo??""}},swapper:{displayName:nn(p.swapperId,o)??"",image:p.swapperLogo??"",type:p.swapperType}})):[],alerts:Qb.createElement(Gl,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function Qg(t){if(cn(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(Qg,"getStepState");function Vl(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=ew(),p=h().blockchains(),c=h().swappers(),{findToken:u}=h(),m=q.use.retry(),d=ue.use.isActiveTab(),g=ow(),[f,y]=Rb(Ug),S=tw(null),[C,T]=Kg(null),[k,v]=Kg(null),w=i(()=>{r(),T(null)},"onCancel"),A=Ne.use.getNotifications(),b=Ne.use.removeNotification(),x=A(),E=Hb(e),I=E?.networkStatus;Vg(()=>{x.find(ve=>ve.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),b(e.requestId)):k&&v(null))},[e.status,e.requestId]),Vg(()=>{M?T(zi.WaitingForNetworkChange):I===zi.WaitingForConnectingWallet||I===zi.NetworkChanged?T(I):T(null)},[I]);let P=kc(e),H=E?qb(e,E):null,N=E?Gb(e,E):null,J=dg(e),ne=vc(e),L=i(ce=>!!l(ce)?.mobileWallet,"isMobileWallet"),M=I===zi.WaitingForNetworkChange&&!!H&&!!N?.walletType&&(L(N.walletType)||a(N.walletType,H)),K=M?s.bind(null,N.walletType,H):void 0,ge=Cc(e,E),Y=zg({swap:e,switchNetwork:K,showNetworkModal:I,setNetworkModal:T,message:ge,blockchains:p,swappers:c}),ae=Y.length,[he,Ce]=[e.steps[0],e.steps[ae-1]],O=Ce.outputAmount||Ce.expectedOutputAmountHumanReadable,W=e.steps.reduce((ce,ve)=>ce+parseFloat(ve.feeInUsd||""),0),me=e.steps.find(ce=>ce.diagnosisUrl)?.diagnosisUrl,de=D(parseFloat(O||"0")*(Ce.toUsdPrice||0),4,4),ze=D(parseFloat(e.inputAmount)*(he.fromUsdPrice||0),4,4),$=O?new Gg(O).multipliedBy(Ce.toUsdPrice||0).toString():"",Q=new Gg(e.inputAmount).multipliedBy(he.fromUsdPrice||0).toString(),j=mt(ze,de),pe=ge.detailedMessage.content||ge.shortMessage,te=e.status==="success"?pt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:D(O,6,6),token:Y[ae-1].to.token.displayName,conciseAddress:lr(e.wallets[Y[ae-1].to.chain.displayName]?.address||""),chain:Y[ae-1].to.chain.displayName}}):Z.createElement(Mg,null,Z.createElement(No,{variant:"body",size:"medium",color:"neutral700",align:"center"},pe?"":pt.t("Transaction was not sent."),P?`${pt.t({id:"{amount} {symbol} on {blockchain} remain in your wallet",values:{amount:P.outputAmount,symbol:P.symbol,blockchain:P.blockchain}})}`:""),pe&&Z.createElement(Ui,{align:"center",variant:"body",size:"medium",color:"neutral700"},Z.createElement("b",null,"Reason:")," ",pe));return Z.createElement(ie,{header:{title:pt.t("Swap Details"),onCancel:e.status==="running"?()=>T("cancel"):void 0,suffix:e.status!=="running"&&Z.createElement(Kt,null,Z.createElement(qg,{variant:"ghost",type:"error",size:"xsmall",onClick:()=>T("delete")},Z.createElement(No,{size:"medium",variant:"label",color:"error"},pt.t("Delete"))))},footer:ne&&!k&&Z.createElement(qg,{fullWidth:!0,variant:"contained",type:"primary",size:"large",onClick:()=>{let ce=xr(e,p,u);m(ce),setTimeout(()=>{g("../../")},0)}},pt.t("Try again"))},Z.createElement(le,{compact:!0,view:!0},Z.createElement(Fi,null,Z.createElement("div",{className:en()},Z.createElement(No,{variant:"label",size:"large",color:"neutral700"},`${pt.t("Request ID")}:`),Z.createElement("div",{className:Oi()},Z.createElement(No,{variant:"label",size:"small",color:"neutral700"},o),Z.createElement(Hg,{container:B(),content:f?pt.t("Copied To Clipboard"):pt.t("Copy Request ID"),open:f||void 0,side:"bottom",alignOffset:-16,align:"end"},Z.createElement(Xb,{variant:"ghost",onClick:y.bind(null,o||"")},f?Z.createElement(jb,{size:16,color:"secondary"}):Z.createElement(Vb,{size:16,color:"gray"}))),Z.createElement(Wg,{target:"_blank",href:`${np}/swap/${o}`},Z.createElement(Hg,{container:B(),content:pt.t("View on Rango Explorer"),side:"bottom"},Z.createElement(Zb,{size:20}))))),Z.createElement("div",{className:en()},Z.createElement(No,{variant:"label",size:"large",color:"neutral700"},e.finishTime?pt.t("Finished at"):pt.t("Created at")),Z.createElement(No,{variant:"label",size:"small",color:"neutral700"},J))),Z.createElement("div",{className:Ag()},Z.createElement(Yb,{fee:D(String(W),2,2),time:an(tr(e.steps)),steps:ae}),Z.createElement(kn,{from:{price:{value:D(e.inputAmount,6,6),usdValue:ze,realUsdValue:Q,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:D(O,6,6),usdValue:de,realUsdValue:$,realValue:O||""},token:{displayName:Y[ae-1].to.token.displayName,image:Y[ae-1].to.token.image},chain:{image:Y[ae-1].to.chain.image,displayName:Y[ae-1].to.chain.displayName}},percentageChange:D(j,2,2),warningLevel:Lt(j??0)})),Z.createElement("div",{className:Ng()},Z.createElement(No,{variant:"title",size:"small"},pt.t("Swaps steps"))),Z.createElement(Kb,{size:8}),Z.createElement(wg,{ref:S},Y.map((ce,ve)=>{let jn=ve,ro=Qg(e.steps[ve]),Yi=ro==="error"||ro==="in-progress"||ro==="warning"||ro==="completed"&&ve===Y.length-1;return Z.createElement(Jb,{key:jn,step:ce,type:"swap-progress",ref:S,state:ro,hasSeparator:ve!==0,tabIndex:jn,isFocused:Yi,tooltipContainer:B()})}))),Z.createElement(Fl,{state:C,onClose:()=>T(null),onCancel:w,onDelete:n,message:ge.detailedMessage.content,currentStepWallet:N,walletButtonDisabled:!d}),Z.createElement(zl,{open:!!k,diagnosisUrl:me,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:D(O,6,6),usdValue:de,realUsdValue:$,realValue:O||"",percentageChange:D(j,2,2),token:{displayName:Y[ae-1].to.token.displayName,image:Y[ae-1].to.token.image},chain:{image:Y[ae-1].to.chain.image},description:te}))}i(Vl,"SwapDetails");import{i18n as qi}from"@lingui/core";import{Divider as Yg,NotFound as sw,Skeleton as Kn,Typography as Hi}from"@rango-dev/ui";import Ee from"react";import{i18n as nw}from"@lingui/core";import{Divider as rw,Skeleton as iw,Typography as aw}from"@rango-dev/ui";import Ae from"react";import{css as wt,styled as Kl}from"@rango-dev/ui";var jg=Kl("div",{width:"100%",height:"100%",padding:"$10 $20"}),Vn=Kl("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Qi=Kl("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),L5=wt({display:"flex",justifyContent:"space-between",alignItems:"center"}),P5=wt({display:"flex",justifyContent:"space-between",alignItems:"center"}),D5=wt({paddingTop:"$15",display:"flex"}),_5=wt({padding:"$15 $0"}),$5=wt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),F5=wt({paddingBottom:"$10"}),O5=wt({display:"flex",justifyContent:"start",alignItems:"center"}),U5=wt({paddingTop:"$5",display:"flex",alignItems:"center"}),z5=wt({display:"flex",alignItems:"center"}),Q5=wt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),Xg=wt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function jl(){return Ae.createElement(jg,null,Ae.createElement(bn,{type:"swap-preview"}),Ae.createElement("div",{className:"swaps-steps"},Ae.createElement(aw,{variant:"title",size:"small"},nw.t("Swaps steps"))),Ae.createElement(Ae.Fragment,null,Ae.createElement(Vn,null,Ae.createElement(Mt,{separator:!1}),Ae.createElement("div",{className:Xg()},Ae.createElement(rw,{direction:"horizontal",size:20}),Ae.createElement(iw,{height:22,variant:"rectangular"}))),Ae.createElement(Qi,null),Ae.createElement(Vn,null,Ae.createElement(Mt,{separator:!1})),Ae.createElement(Qi,null),Ae.createElement(Vn,null,Ae.createElement(Mt,{separator:!1})),Ae.createElement(Qi,null),Ae.createElement(Vn,null,Ae.createElement(Mt,{separator:!1}))))}i(jl,"LoadingSwapDetails");function Zg(t){let{requestId:e,showSkeleton:o}=t;return Ee.createElement(ie,{header:{title:qi.t("Swap Details"),suffix:Ee.createElement(Kt,null)}},o&&Ee.createElement(bg,null,Ee.createElement(Fi,null,Ee.createElement("div",{className:en()},Ee.createElement(Hi,{variant:"label",size:"large",color:"neutral700"},`${qi.t("Request ID")}:`),Ee.createElement("div",{className:Oi()},Ee.createElement(Hi,{variant:"label",size:"small",color:"neutral700"},Ee.createElement(Kn,{width:60,height:10,variant:"rounded"})),Ee.createElement(Yg,{direction:"horizontal",size:4}),Ee.createElement(Kn,{width:16,height:16,variant:"rectangular"}),Ee.createElement(Yg,{direction:"horizontal",size:4}),Ee.createElement(Kn,{width:16,height:16,variant:"rectangular"}))),Ee.createElement("div",{className:en()},Ee.createElement(Hi,{className:Ig(),variant:"label",size:"large",color:"neutral700"},Ee.createElement(Kn,{width:60,height:10,variant:"rounded"})),Ee.createElement(Hi,{variant:"label",size:"small",color:"neutral700"},Ee.createElement(Kn,{width:60,height:10,variant:"rounded"})))),Ee.createElement(jl,null)),!o&&Ee.createElement(Eg,null,Ee.createElement(sw,{title:qi.t("Not found"),description:qi.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(Zg,"SwapDetailsPlaceholder");function Jg(){let{manager:t,state:e}=cw(),o=!e.loadedFromPersistor,n=dt(t),{requestId:r}=mw(),a=Re(),{fetchStatus:s}=h();if(!r)return Xl.createElement(uw,{containerStyles:{margin:"20px"},type:"error",title:lw.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&&pw(d)}},"onCancel"),u=i(async()=>{if(p?.id)try{t?.deleteQueue(p.id),a()}catch(d){console.log(d)}},"onDelete"),m=p?.swap;return!m||l?Xl.createElement(Zg,{requestId:r,showSkeleton:l}):Xl.createElement(Vl,{swap:m,requestId:r,onCancel:c,onDelete:u})}i(Jg,"SwapDetailsPage");function Rg(){return Bc(),Aa(),dw([{path:F.home,element:Ue.createElement(Lf,null)},{path:F.routes,element:Ue.createElement(Ff,null)},{path:F.fromSwap,children:[{index:!0,element:Ue.createElement(Nl,{type:"source"})},{path:F.blockchains,element:Ue.createElement(Ii,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:Ue.createElement(Nl,{type:"destination"})},{path:F.blockchains,element:Ue.createElement(Ii,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:Ue.createElement(ug,null)},{path:F.languages,element:Ue.createElement(Df,null)},{path:F.exchanges,element:Ue.createElement(kl,{sourceType:"Exchanges"})},{path:F.bridges,element:Ue.createElement(kl,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:Ue.createElement(Hd,null)},{path:F.addCustomTokens,children:[{index:!0,element:Ue.createElement(Tu,null)},{path:F.blockchains,element:Ue.createElement(Ii,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:Ue.createElement(uf,null)},{path:F.swapDetails,element:Ue.createElement(Jg,null)}]},{path:F.wallets,element:Ue.createElement(Zu,null)},{path:F.confirmSwap,element:Ue.createElement(Ad,null)}])}i(Rg,"AppRoutes");import{useQueueManager as vw}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as xw}from"@rango-dev/wallets-shared";import{isEvmBlockchain as bw}from"rango-sdk";import{useContext as ww,useEffect as ah,useState as sh}from"react";import{globalCss as fw}from"@rango-dev/ui";var eh=i(()=>fw({"@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 th(){let{setWatermark:t}=ue();return{fetchApiConfig:i(async()=>{let o=await fetch(`${ut("BASE_URL")}/meta/dapp/config?apiKey=${ut("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(th,"useFetchApiConfig");import{useWallets as gw}from"@rango-dev/wallets-react";import{useEffect as hw,useRef as yw}from"react";function oh(){let{connect:t,state:e}=gw(),o=yw({}),{fetchStatus:n}=h(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);hw(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(oh,"useForceAutoConnect");import{isApprovalTX as Sw,RouteEventType as nh,StepEventType as rh,StepExecutionEventStatus as Tw,WidgetEvents as Gi}from"@rango-dev/queue-manager-rango-preset";import{useEffect as ih}from"react";function Yl(){let t=oe.use.connectedWallets(),e=oe.use.getWalletsDetails(),o=Ne.use.setNotification(),{findToken:n}=h();ih(()=>{let r=i(a=>{let{event:s,step:l,route:p}=a;if(s.type===rh.TX_EXECUTION&&s.status===Tw.TX_SENT&&!Sw(l)||s.type===rh.SUCCEEDED){let u=t.find(d=>d.chain===l?.fromBlockchain),m=l?.fromBlockchain!==l?.toBlockchain&&t.find(d=>d.chain===l?.toBlockchain);u&&e([u],n),m&&e([m],n)}o(s,p)},"handleStepEvent");return xe.on(Gi.StepEvent,r),()=>xe.off(Gi.StepEvent,r)},[xe,t]),ih(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===nh.FAILED||s.type===nh.SUCCEEDED)&&o(s,l)},"handleRouteEvent");return xe.on(Gi.RouteEvent,r),()=>xe.off(Gi.RouteEvent,r)},[xe])}i(Yl,"useSubscribeToWidgetEvents");import{useManager as Cw}from"@rango-dev/queue-manager-react";import{useEffect as kw}from"react";function Zl(){let{isSynced:t,syncNotifications:e}=Ne(),{manager:o,state:n}=Cw();kw(()=>{Ne.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(dt(o))},[Ne.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Zl,"useSyncNotifications");function Jl(){oh(),eh(),Yl(),Zl();let t=h().blockchains(),{canSwitchNetworkTo:e}=Vr(),[o,n]=sh(""),[r,a]=sh(),s=ww(hr),l=t.filter(bw),{fetchApiConfig:p}=th();ah(()=>()=>Mc(),[]),vw({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),ah(()=>(lo.init(),Ne.persist.hasHydrated()||Ne.persist.rehydrate(),s.onConnectWallet(n),s.onDisconnectWallet(c=>{a(c),c===xw(o)?.[0]&&n("")}),p().catch(console.log),lo.destroy),[])}i(Jl,"useBootstrap");import{styled as Ew}from"@rango-dev/ui";var lh=Ew("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function Vi(){Jl();let{config:t}=h(),{activeTheme:e}=Oo(t?.theme||{}),{activeLanguage:o}=eo();return Rl.createElement(Iw,{language:o},Rl.createElement(lh,{id:"swap-container",className:e()},Rl.createElement(Rg,null)))}i(Vi,"Main");import{setSolanaSignerConfig as Kw}from"@rango-dev/signer-solana";import tp,{useEffect as fh,useMemo as jw}from"react";import{useState as Aw}from"react";var Nw=i(()=>{let[t,e]=Aw(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=dp(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),ph=Nw;import{checkWaitingForNetworkChange as Ww,makeQueueDefinition as Mw}from"@rango-dev/queue-manager-rango-preset";import{Provider as Bw}from"@rango-dev/queue-manager-react";import{useWallets as Lw}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as Pw}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Dw}from"rango-types";import _w,{useMemo as $w}from"react";function Fw(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=Lw(),l=$w(()=>Mw({API_KEY:t.apiKey||ut("API_KEY"),BASE_URL:ut("BASE_URL"),emitter:{emit:xe.emit}}),[t.apiKey]),p=h().blockchains(),u={blockchains:oe.use.connectedWallets().map(k=>({accounts:[k],name:k.chain}))},m=i(async(k,v)=>{if(a(k,v))return r(k,v)},"switchNetwork"),d=i(k=>!!s(k).mobileWallet,"isMobileWallet"),g=p.filter(k=>k.enabled).reduce((k,v)=>(k[v.name]=v,k),{}),f=p.filter(Dw),y=i(k=>{let{supportedChains:v}=s(k);return rr(v)},"getSupportedChainNames"),S=e(),C={meta:{blockchains:g,evmBasedChains:f,evmNetworkChainInfo:Pw(f),getSupportedChainNames:y},getSigners:o,wallets:u,providers:S,switchNetwork:m,canSwitchNetworkTo:a,connect:r,state:n,isMobileWallet:d},T=ue.use.isActiveTab();return _w.createElement(Bw,{queuesDefs:[l],context:C,onPersistedDataLoaded:k=>{Ww(k)},isPaused:!T},t.children)}i(Fw,"QueueManager");var ch=Fw;import{useManager as qw}from"@rango-dev/queue-manager-react";import Hw,{createContext as Gw,useContext as Vw}from"react";function uh(){let{findToken:t}=h(),e=h().blockchains(),o=h().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=q();return i(c=>{let{fromBlockchain:u,fromToken:m,toBlockchain:d,toToken:g,requestAmount:f}=c,y={blockchains:e,tokens:o};if(u!==void 0){let S=e.find(C=>C.name===u)??null;n(S)}if(m!==void 0){let S=m?t(m)??null:null;r({meta:y,token:S})}if(d!==void 0){let S=e.find(C=>C.name===d)??null;a(S)}if(g!==void 0){let S=g?t(g)??null:null;s({meta:y,token:S})}f!==void 0&&l(f)},"updateQuoteInputs")}i(uh,"useUpdateQuoteInputs");import{cancelSwap as Ow,getCurrentBlockchainOfOrNull as Uw,getCurrentStep as zw,getRelatedWalletOrNull as Qw}from"@rango-dev/queue-manager-rango-preset";var Ki=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return dt(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=xr(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&Ow(o)}getCurrentStepInfo(e){let o=zw(e);return{step:o,wallet:o?Qw(e,o):null,network:o?Uw(e,o):null}}};var mh=Gw(void 0);function ep(t){let{manager:e}=qw(),o=ue.use.isActiveTab(),n=q.use.retry(),{findToken:r}=h(),a=new Ki(e,{retrySwap:n,findToken:r}),s=oe.use.connectedWallets(),l=oe.use.loading(),p=kp(s),c=oe.use.getWalletsDetails(),u=h().blockchains(),m=h().tokens(),d=h().swappers(),g=h().fetchStatus,f=eo().resetLanguage,y=Ne().getNotifications(),S=Ne().clearNotifications,C=uh(),{fromBlockchain:T,toBlockchain:k,fromToken:v,toToken:w,inputAmount:A}=q(),b={isActiveTab:o,setCurrentTabAsActive:lo.forceClaim,history:a,wallets:{isLoading:l,details:s,totalBalance:p,refetch:x=>c(x,r)},meta:{blockchains:u,tokens:m,swappers:d,loadingStatus:g,findToken:r},resetLanguage:f,notifications:{list:y,clearAll:S},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:k?.name??null,toToken:w?{symbol:w.symbol,blockchain:w.blockchain,address:w.address}:null,requestAmount:A},updateQuoteInputs:C}};return Hw.createElement(mh.Provider,{value:b},t.children)}i(ep,"WidgetInfo");function dh(){let t=Vw(mh);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(dh,"useWidget");function ji(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=ph();return fh(()=>{n&&r(n)},[n]),jw(()=>{Np({API_KEY:o?.apiKey||Xn,BASE_URL:o?.apiUrl||op})},[o.apiKey,o.apiUrl]),fh(()=>{t.config?.signers?.customSolanaRPC&&Kw("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),tp.createElement(yr,{config:o,onUpdateState:e},tp.createElement(ch,{apiKey:o.apiKey},tp.createElement(ep,null,t.children)))}i(ji,"WidgetProvider");function gh(t){let e=t.config?.externalWallets;return Xi.createElement(nc,null,e?Xi.createElement(Vi,null):Xi.createElement(ji,{config:t.config??da},Xi.createElement(Vi,null)))}i(gh,"Widget");function hh(){let{on:t,off:e}=xe;return{on:t,off:e}}i(hh,"useWidgetEvents");export{m6 as EventSeverity,so as MainEvents,k6 as Networks,b6 as PendingSwapNetworkStatus,pa as QuoteEventTypes,d6 as RouteEventType,Zi as SUPPORTED_FONTS,f6 as StepEventType,g6 as StepExecutionBlockedEventStatus,h6 as StepExecutionEventStatus,ke as UI_ID,ca as UiEventTypes,ur as WalletEventTypes,T6 as WalletEvents,v6 as WalletTypes,gh as Widget,so as WidgetEvents,ji as WidgetProvider,yr as WidgetWallets,Ua as customizedThemeTokens,S6 as readAccountAddress,mo as useWalletList,Vr as useWallets,dh as useWidget,hh as useWidgetEvents,Yn as widgetEventEmitter};
3
3
  //# sourceMappingURL=index.js.map