@rango-dev/widget-embedded 0.64.4-next.4 → 0.64.4-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- package/dist/index.js.map +3 -3
- package/dist/store/slices/config.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/store/slices/config.ts +23 -19
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var kT=Object.defineProperty;var r=(t,e)=>kT(t,"name",{value:e,configurable:!0});import{Networks as Hee,readAccountAddress as qee}from"@rango-dev/internal-blockchains";import{EventSeverity as Vee,RouteEventType as Kee,StepEventType as jee,StepExecutionBlockedEventStatus as Xee,StepExecutionEventStatus as Yee}from"@rango-dev/queue-manager-rango-preset";import{useWallets as sT,Events as Jee}from"@rango-dev/wallets-react";import{PendingSwapNetworkStatus as ete}from"rango-types";import{Divider as jk}from"@rango-dev/ui";import fo,{useEffect as Xk,useRef as Yk,useState as wd}from"react";import{WalletState as bT}from"@rango-dev/ui";import{useWallets as xT}from"@rango-dev/wallets-react";import{useReducer as IT}from"react";import{i18n as Oe}from"@lingui/core";var Ye=(a=>(a[a.NO_RESULT=0]="NO_RESULT",a[a.REQUEST_FAILED=1]="REQUEST_FAILED",a[a.REQUEST_CANCELED=2]="REQUEST_CANCELED",a[a.BRIDGE_LIMIT=3]="BRIDGE_LIMIT",a[a.INSUFFICIENT_SLIPPAGE=4]="INSUFFICIENT_SLIPPAGE",a))(Ye||{});var Vn=(s=>(s.QUOTE_INPUT_UPDATE="quoteInputUpdate",s.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",s.ROUTE_REQUESTED="routeRequested",s.ROUTE_NOT_FOUND="routeNotFound",s.ROUTE_FETCH_FAILED="routeFetchFailed",s.ROUTE_CHANGED="routeChanged",s))(Vn||{}),ti=(n=>(n.CONNECT="connect",n.DISCONNECT="disconnect",n.DETECTED="detected",n))(ti||{}),Ze=(f=>(f.CLICK_CONNECT_WALLET="clickConnectWallet",f.TOKEN_SELECTED="tokenSelected",f.CHAIN_FILTER_APPLIED="chainFilterApplied",f.SETTINGS_CHANGED="settingsChanged",f.ROUTE_FEE_VIEWED="routeFeeViewed",f.DESTINATION_ADDRESS_SET="destinationAddressSet",f.GAS_WARNING_SHOWN="gasWarningShown",f.GAS_WARNING_BYPASSED="gasWarningBypassed",f.SWAP_INITIATED="swapInitiated",f.SWAP_WALLETS_MODAL_SHOWN="swapWalletsModalShown",f.SWAP_WALLETS_CONFIRMED="swapWalletsConfirmed",f.SWAP_STARTED="swapStarted",f.SWAP_RESUMED="swapResumed",f.SWAP_RETRIED="swapRetried",f.SWAP_CANCELLED="swapCancelled",f))(Ze||{}),sn=(a=>(a.RouteEvent="routeEvent",a.StepEvent="stepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(sn||{});var te=r(()=>({genericServerError:Oe.t("Failed Network, Please retry your swap."),moduleLoadError:Oe.t("A network error occurred while processing your request. Please check your internet connection or refresh the page and try again."),liquiditySourcesError:{title:Oe.t("Please reset your liquidity sources."),description:Oe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Oe.t("No Routes Found."),description:Oe.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:Oe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Oe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Oe.t("High Price Impact"),title:Oe.t("Price impact is too high!"),description:Oe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Oe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Oe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Oe.t("USD Price Unknown"),title:Oe.t("USD Price Unknown, Cannot calculate Price Impact."),description:Oe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Oe.t("Confirm USD Price Unknown")}}),"errorMessages");function _p(t){return t.type===0?t.diagnosisMessage??te().noResultError.title:t.type===1?t.diagnosisMessage??te().genericServerError:""}r(_p,"getQuoteErrorMessage");var wT=["failed to fetch dynamically imported module","error loading dynamically imported module","importing a module script failed","failed to load module script","unable to preload css","loading chunk","loading css chunk","chunkloaderror"];function vT(t){return typeof t=="string"?t:t instanceof Error?`${t.name} ${t.message}`:""}r(vT,"toMessage");function ET(t){let e=vT(t).toLowerCase();return!!e&&wT.some(o=>e.includes(o))}r(ET,"isModuleLoadError");function Tt(t){return ET(t)?new Error(te().moduleLoadError,{cause:t}):null}r(Tt,"tryRefineError");function Mp(t,e){return Tt(t)?.message??e}r(Mp,"tryRefineErrorMessage");function Dp(t){return!!t.derivationPath}r(Dp,"isStateOnDerivationPathStep");function $p(t){return!!t.namespace}r($p,"isStateOnNamespace");var oi={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function Fp(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return oi;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:oi;default:throw new Error("Action hasn't been defined.")}}r(Fp,"reducer");function ln(){let{state:t,disconnect:e,connect:o}=xT(),[n,i]=IT(Fp,oi),a=r(async(d,m,h)=>{i({type:"reset"});try{let g=m?.map(f=>({...f,network:void 0}));return await o(d.type,g),{status:"connected"}}catch(g){let f=Mp(g,g?.message?`Error: ${g.message}`:"An unknown error happened during connecting wallet.");if(h?.disconnectOnError)try{await u(d)}catch{console.warn("An error happened during disconnecting wallet after error on connecting.")}throw new Error(f,{cause:g})}},"runConnect"),s=r(async(d,m)=>{let h=d.state===bT.DISCONNECTED,g=m?.forceConnectToNamespaces;if(h){let f=d.properties?.find(C=>C.name==="namespaces")?.value,T=d.properties?.find(C=>C.name==="derivationPath")?.value;if(g){let C=g.find(y=>!f?.data?.map(k=>k.value).includes(y));if(C)throw new Error(`One of the forced namespaces is not available in the wallet. Forced namespace: ${C}`);if(g.length>1&&T)throw new Error("Derivation path is not supported when multiple namespaces are selected.");return g.length===1&&g[0]&&T?(i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:g[0]}}),{status:"derivation-path"}):await a(d,g.map(y=>({namespace:y})),{...m,disconnectOnError:!0})}if(!f?.data?.length)return await a(d,void 0,m);if(f?.data.length&&f.data.length>1)return i({type:"needsNamespace",payload:{targetWallet:d,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(f?.data.length===1&&f.data[0]){if(T){let C=f.data[0];return i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:C.value}}),{status:"derivation-path"}}return await a(d,f?.data?.map(C=>({namespace:C.value})),m)}}if(!m?.forceConnectToNamespaces){let f=d.properties?.find(T=>T.name==="namespaces")?.value;if(f?.data.length&&f.data.length>1)return i({type:"detached",payload:{targetWallet:d,selectedNamespaces:null}}),{status:"Detached"}}return m?.disconnectIfConnected?(await u(d),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=r(async(d,m)=>{let h=d.properties?.find(y=>y.name==="namespaces")?.value,g=d.properties?.find(y=>y.name==="derivationPath")?.value,f=h?.selection==="single",T=m[0];if(!T)throw new Error("To confirm a namespace, you should select at least one namespace.");if(f&&g)return i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:T}}),{status:"derivation-path"};if(!$p(n))throw new Error("Something went wrong on handling namespace. Please retry.");let C=m.map(y=>({namespace:y}));return i({type:"detached",payload:{targetWallet:d,selectedNamespaces:C??null}}),{status:"Detached"}},"handleNamespace"),l=r(async(d,m,h)=>{if(!m)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Dp(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let f=[{namespace:n.derivationPath.namespace,derivationPath:m}],T=d.properties?.find(k=>k.name==="namespaces")?.value,C=!!T?.data&&T.data.length>1,y=!!h?.forceConnectToNamespaces;return C&&!y?(i({type:"detached",payload:{targetWallet:d,selectedNamespaces:f??null,derivationPath:m}}),{status:"Detached"}):await a(d,f)},"handleDerivationPath"),p=r(()=>n,"getState"),u=r(async d=>{let m=t(d.type);return m.connected||m.connecting?(await e(d.type),Po(p)?(i({type:"needsNamespace",payload:{targetWallet:d}}),{status:"namespace"}):{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:c,handleDerivationPath:l,getState:p,resetState:d=>{i(d==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}r(ln,"useStatefulConnect");import{WalletTypes as Dt}from"@rango-dev/provider-all";import{WalletState as Ci}from"@rango-dev/ui";import{useWallets as zC}from"@rango-dev/wallets-react";import{useCallback as QC,useEffect as Yu}from"react";import DC,{createContext as $C,useContext as FC,useEffect as OC,useRef as UC}from"react";import{create as _C}from"zustand";import{persist as MC}from"zustand/middleware";import{allProviders as NT,WalletTypes as WT}from"@rango-dev/provider-all";var as=class{static{r(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()}},cn=new as;import{Provider as AT}from"@hub3js/core";function Up({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let i=t.find(a=>a.id===n);i?o.push(i):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else if(n instanceof AT)o.push(n);else throw new Error(`Invalid item in widget config 'wallets': expected a wallet type string (e.g. 'metamask') or a hub 'Provider' instance, but received ${typeof n}.`)}),o}return t}r(Up,"matchAndGenerateProviders");function ni(t){return t.map(e=>e.id)}r(ni,"configWalletsToWalletName");function zp(t,e){return e.find(o=>o.name===t)?.displayName}r(zp,"getBlockchainDisplayNameFor");function Ct(t,e){return e.find(o=>o.name===t)?.shortName}r(Ct,"getBlockchainShortNameFor");function Qp(t,e){return e.find(o=>o.name===t)?.logo}r(Qp,"getBlockchainImage");function Kn(t,e){return e.find(o=>o.id===t)?.title}r(Kn,"getSwapperDisplayName");function Lo(t,e){return e.find(o=>o.name===t)??null}r(Lo,"findBlockchain");function ss(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}r(ss,"isTokenNative");function kt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}r(kt,"createTokenHash");function Bo(t,e){return t.addressPatterns.filter(i=>new RegExp(i).test(e)).length>0}r(Bo,"isValidTokenAddress");function ri(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}r(ri,"createTokenExplorerUrl");function jn(t){let{config:e,meta:o}=t,n={},i=e.tokens,a=r(c=>{c.forEach(l=>{typeof l!="string"&&(l=kt(l));let p=o.tokensMapByTokenHash.get(l);p&&(n[l]=p)})},"addTokens");if(Array.isArray(i))return i.length>0?(a(i),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!i)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(i);let c=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(l=>{let p=o.tokensMapByBlockchainName[l];!c.has(l)&&p&&a(p)})}return s.forEach(c=>{let l=i[c];if(!l&&o.tokensMapByBlockchainName?.[c]){a(o.tokensMapByBlockchainName[c]);return}l&&(l.isExcluded&&o.tokensMapByBlockchainName[c]?(a(o.tokensMapByBlockchainName[c]),l.tokens.forEach(p=>{let u=kt(p);delete n[u]})):a(l.tokens))}),Object.values(n)}r(jn,"matchTokensFromConfigWithMeta");function ii(t){let{config:e}=t,o=e.from?.blockchains||[],n=e.to?.blockchains||[];if(!o.length||!n.length)return[];let i=[...o,...n],a=new Set(i);return Array.from(a)}r(ii,"getSupportedBlockchainsFromConfig");function PT(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}r(PT,"makeProvidersOptionsFromConfig");var Xn={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/manifests/tonconnect/manifest.json"}},LT={clientUrl:void 0},BT={liquiditySources:void 0};function Hp(t){let o=NT().map(a=>a()),n=ni(o);return o.filter((a,s)=>!(n[s]===WT.LEDGER_WALLET&&(!t.ledgerWallet?.apiKey||!t.ledgerWallet?.dAppIdentifier)))}r(Hp,"generateProviders");var qp=r((t,e,o)=>{let n={...Xn,...t},i=Hp(n);return{config:n,iframe:LT,campaignMode:BT,allProviders:i,getLiquiditySources:()=>{let{config:a,campaignMode:s}=o();return s.liquiditySources?.length?s.liquiditySources:a.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:a,campaignMode:s}=o();return s.liquiditySources?.length?[]:a},excludeLiquiditySources:()=>{let{config:a,campaignMode:s}=o();return s.liquiditySources?.length?!1:!!a.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:a}=o();return!!a.liquiditySources?.length},updateConfig:a=>{let s=o().config,{_tokensMapByTokenHash:c,_tokensMapByBlockchainName:l}=o(),p=jn({type:"source",config:{blockchains:a.from?.blockchains,tokens:a.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}}),u=jn({type:"destination",config:{blockchains:a.to?.blockchains,tokens:a.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}});cn.set("supportedSourceTokens",p),cn.set("supportedDestinationTokens",u),e({config:{...s,...a}})},updateCampaignMode:(a,s)=>{let c=o().campaignMode;e({campaignMode:{...c,[a]:s}})},updateIframe:(a,s)=>{let c=o().iframe;e({iframe:{...c,[a]:s}})},buildAndSetProviders:()=>{let{config:a}=o(),s=Hp(a);e({allProviders:s})},getAvailableProviders:()=>{let{allProviders:a,config:s}=o(),c=PT(s);return Up({allProviders:a,configWallets:s.wallets,options:c})}}},"createConfigSlice");import{TransactionType as Gp}from"rango-types";var Vp=[Gp.EVM,Gp.SOLANA],ai="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as XT}from"rango-sdk";function Kp(){return process.env.REACT_APP_RANGO_API_KEY}r(Kp,"getApiKeyFromEnv");function jp(){let t=Kp();if(t)return t;throw new Error("Ensure you have set REACT_APP_RANGO_API_KEY in your env variables.")}r(jp,"getApiKeyFromEnvOrThrow");function Xp(){return Kp()||"NOT_SET"}r(Xp,"getApiKeyFromEnvOrNotSet");import{getBlockChainNameFromId as UT,HYPERLIQUID_SIGN_NETWORK as zT,Networks as ms,readAccountAddress as QT}from"@rango-dev/internal-blockchains";import{BlockchainCategories as HT,detectInstallLink as qT,WalletState as ut}from"@rango-dev/ui";import un from"bignumber.js";import{isAddress as GT}from"ethers";import _T from"bignumber.js";var pe=new _T(0);var _o="~",Yp=[];import{BlockchainCategories as cs,WalletState as OT}from"@rango-dev/ui";import{TransactionType as ps}from"rango-sdk";import{UI_ID as MT}from"@rango-dev/ui";var Zp="https://api.rango.exchange",Jp="https://explorer.rango.exchange",wt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...MT};var Rp="Roboto",ls=[{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"}];function pn(t){return Array.from(new Set(t))}r(pn,"removeDuplicateFrom");function si(t,e){let o;return n;function n(...i){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...i)},e)}}r(si,"debounce");function pt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}r(pt,"containsText");function ou(t,e){return t.toLowerCase()===e.toLowerCase()}r(ou,"exactText");function nu(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}r(nu,"startWithText");var W=r(()=>document.getElementById(wt.SWAP_BOX_ID),"getContainer"),Mo=r(()=>document.getElementById(wt.EXPANDED_BOX_ID),"getExpanded");function ru(t,e,o){let n=!!e&&ou(e,t),i=!!o&&ou(o,t);return n!==i?n?-1:1:0}r(ru,"compareExactMatchText");function us(t,e,o){let n=!!e&&pt(e,t),i=!!o&&pt(o,t);return n!==i?n?-1:1:n&&i&&e?.length!==o?.length?e?.length-o?.length:0}r(us,"compareContainsText");function ds(t,e,o){let n=!!e&&nu(e,t),i=!!o&&nu(o,t);return n!==i?n?-1:1:n&&i&&e?.length!==o?.length?e?.length-o?.length:0}r(ds,"compareStartWithText");function iu(t,e,o){if(!o)return 0;let n=ru(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let i=ru(o,t.name,e.name);if(i)return i}if(o.length>=2){let i=ds(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=us(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=ds(o,t.name,e.name);if(i)return i}if(o.length>=3){let i=us(o,t.name,e.name);if(i!==0)return i}if(o.length>=4){let i=ds(o,t.address,e.address);if(i)return i}if(o.length>=4){let i=us(o,t.address,e.address);if(i!==0)return i}return 0}r(iu,"compareWithSearchFor");var li=r((t,e)=>{switch(e){case cs.ALL:return!0;case cs.UTXO:return t===ps.TRANSFER;case cs.OTHER:return t!==ps.TRANSFER&&t!==ps.EVM;default:return t===e}},"isBlockchainTypeInCategory"),au=r(t=>ls.find(o=>o.value===t)?.url,"getFontUrlByName");function su(t,e){let o=!!t.find(n=>n.state===OT.CONNECTED);return e===!1&&o}r(su,"isSingleWalletActive");function lu(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}r(lu,"memoizedResult");function cu(t,e){let o=new Set;return e.forEach(n=>{o.add(n.blockchain)}),t.filter(n=>o.has(n.name))}r(cu,"filterBlockchainsWithAtLeastOneToken");function pu(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}r(pu,"detectMobileScreens");import{BigNumber as Tu}from"bignumber.js";function uu(t){return t.replace(/^0+(?=\d)/g,"")}r(uu,"removeLeadingZeros");function du(t){return t.replace(/^\.(\d+)/,"0.$1")}r(du,"ensureLeadingZeroForDecimal");function mu(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}r(mu,"formatThousandsWithCommas");function fu(t){return t.replace(/\s+/g,"-")}r(fu,"replaceSpacesWithDash");function gu(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}r(gu,"stripTrailingZeros");function hu(t){return t=t.replace(/[^\d.]/g,"").replace(/\./g,(e,o,n)=>n.indexOf(".")===o?".":""),t}r(hu,"parseNumericValue");function ci(t){return/^0+(?:\.0+)?$/.test(t)}r(ci,"isZeroValue");function yu(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}r(yu,"isValidCurrencyFormat");function Su(t){return/\d+$/.test(t)}r(Su,"isColorKeyOverridden");var Yn=r(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=r((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Tu(t),i=1,a=1e3;for(let s=0;s<60;s++)if(new Tu(n.toFixed(s,i)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,i);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),i);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),i);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),i);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))),i);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),i)},"numberToString");var pi=r(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Mt=r((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Zn=r(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Cu(t){return ci(t)?"0":t.endsWith(".")?t.slice(0,-1):gu(t)}r(Cu,"sanitizeInputAmount");function VT(t,e){let o=t?.get("EVM");return o?.network?UT(o.network,e)??o.network:null}r(VT,"getConnectedEvmChainName");function Jn(t,e){return jT(t,e)?ut.PARTIALLY_CONNECTED:e.connected?ut.CONNECTED:e.connecting?ut.CONNECTING:e.installed?ut.DISCONNECTED:ut.NOT_INSTALLED}r(Jn,"getWalletConnectionStatus");function ku(t,e,o,n){return o.filter(i=>!Yp.includes(i)).filter(i=>{let{supportedChains:a,isContractWallet:s}=e(i),{installed:c,namespaces:l}=t(i);return s&&(!c||!!n&&VT(l,a)!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(i=>{let{name:a,img:s,installLink:c,showOnMobile:l,needsNamespace:p,supportedChains:u,needsDerivationPath:d,properties:m,isHub:h}=e(i),g=pn(u.map(T=>T.type)),f=Jn(e(i),t(i));return{title:a,image:s,link:qT(c),state:f,type:i,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:m,isHub:h}})}r(ku,"mapWalletTypesToWalletInfo");function mi(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}r(mi,"walletAndSupportedChainsNames");function wu(t,e,o,n,i){let a=[];function s(l,p,u){if(!!!a.find(m=>m.chain===l)){let m={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(m)}}r(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=QT(l),d=c.length>0,m=c.includes(u),h=u===ms.Unknown;if(d&&!m&&!h)return;let f=u===ms.Unknown&>(p);if(h&&!f)return;if(o.includes(u)||f)if(i)s(u,p.toLowerCase(),i);else{let C=c.filter(k=>o.includes(k));C.forEach(k=>{s(k,p.toLowerCase())}),C.includes(zT)&&s(ms.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}r(wu,"prepareAccountsForWalletStore");function Do(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((i,a)=>{let s=i.from.blockchain,c=i.to.blockchain;if(n.add(s),i.internalSwaps){let{internalSwaps:l}=i;l.forEach((p,u)=>{let d=p.from.blockchain,m=p.to.blockchain,h=a===o.swaps.length-1,g=u===l.length-1;(!h&&!g||h&&c!==d||e==="all")&&n.add(d),e==="all"&&n.add(m)})}e==="all"&&n.add(c)}),Array.from(n)}r(Do,"getQuoteChains");function Rn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}r(Rn,"isAccountAndWalletMatched");var vu=r(t=>{let e=Object.values(t).reduce((o,n)=>{let i=n.usdValue?fs(n.usdValue,n.decimals):pe.toFixed();return o.plus(i)},new un(pe));return KT(e.toString())},"calculateWalletUsdValue");function KT(t){let e=t.toString().split(".");return e[0]&&(e[0]=mu(e[0])),e.join(".")}r(KT,"numberWithThousandSeparator");function fs(t,e){return new un(t).shiftedBy(-e).toFixed()}r(fs,"representAmountInNumber");function fi(t){if(!t)return null;let e=fs(t.amount,t.decimals),o=t.usdValue?fs(t.usdValue,t.decimals):null,n=M(e,8,8),i=o?M(o,4,4):null;return t?{...t,amount:n,usdValue:i}:null}r(fi,"formatBalance");function Eu(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new un(t.usdValue).shiftedBy(-t.decimals):pe,n=e&&e.usdValue?new un(e.usdValue).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new un(t.amount).shiftedBy(-t.decimals):pe,n=e&&e.amount?new un(e.amount).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}r(Eu,"compareTokenBalance");function Kt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}r(Kt,"areTokensEqual");function bu(t){return t.sort((e,o)=>+(o.state===ut.CONNECTED)-+(e.state===ut.CONNECTED)||+(o.state===ut.PARTIALLY_CONNECTED)-+(e.state===ut.PARTIALLY_CONNECTED)||+(o.state===ut.DISCONNECTED||o.state===ut.CONNECTING)-+(e.state===ut.DISCONNECTED||e.state===ut.CONNECTING))}r(bu,"sortWalletsBasedOnConnectionState");function uo(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),i=t.slice(-e);return`${n}${".".repeat(o)}${i}`}r(uo,"getConciseAddress");function xu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}r(xu,"getAddress");var Iu=r((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function gs(t){return t.map(e=>e.state).join("-")}r(gs,"hashWalletsState");function Au(t,e){let o=new Set;return t.forEach(i=>{i.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(i=>o.has(i.type))}r(Au,"filterBlockchainsByWalletTypes");function Nu(t,e){return e===HT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(li(n,e))return!0;return!1})}r(Nu,"filterWalletsByCategory");function jT(t,e){if(!t.needsNamespace||!e.connected)return!1;let n=t.needsNamespace.data.filter(i=>!i.unsupported);return t.needsNamespace.selection==="multiple"&&n.some(i=>!e.namespaces?.get(i.value)?.connected)}r(jT,"checkIsWalletPartiallyConnected");var hs={API_KEY:Xp()};function jt(t){return hs[t]||""}r(jt,"getConfig");function Wu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),hs=e,hs}r(Wu,"initConfig");var Pu=20,Lu=25,ys="theme-widget",Ss=r((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Kt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Kt(a,t));let i=n.isExcluded;return!i&&!o||i&&o}}}return o},"isTokenExcludedInConfig"),Ts=r((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),Bu=r((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var gi,dt=r(()=>gi||(gi=new XT(jt("API_KEY"),jt("BASE_URL")),gi),"httpService");import{i18n as _u}from"@lingui/core";var hi=[.5,1,3],yi=1,dn=5,er=30,Si=0;function Ti(t,e){let o=t.map(a=>a.swapperGroup),n=[];return pn(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(c=>c.swapperGroup===a);if(s){let c=!0;o&&(c=o.some(l=>l===s.swapperGroup)),c&&s.types.map(l=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:l,selected:!e.includes(s.swapperGroup)})})}}),n}r(Ti,"getUniqueSwappersGroups");function Mu(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}r(Mu,"sortLiquiditySourcesByGroupTitle");function nt(t,e){return e?.[t]==="hidden"}r(nt,"isFeatureHidden");function mn(t,e){return e?.[t]==="enabled"}r(mn,"isRoutingEnabled");var Du=r((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function fn(t){return t==Si?{type:"error",message:_u.t("Slippage must be greater than or equal to 0.01")}:t>dn&&t<=er?{type:"warning",message:_u.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}r(fn,"getSlippageValidation");var $u=r((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,i=Array.from(n?.values()||[]);if(!o||!o?.type)return i;let a=e().config;if(o.type==="custom-token"){let l=ii({config:a}),p=i;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>Vp.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return i.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:i,config:a,_customTokens:s}=e(),c=Array.from(n.values()),l=e()._blockchainsMapByName;if(!o||!o.type)return c;let p=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",d=cn.get(u);d?.length||(d=jn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:i}}),cn.set(u,d)),d=Du(d,s,a.features);let m=e().blockchains({type:o.type});return d.filter(g=>o.blockchain&&g.blockchain!==o.blockchain||!m.some(f=>f.name===g.blockchain)?!1:o.searchFor?!!(pt(g.symbol,o.searchFor)||pt(g.address||"",o.searchFor)||pt(g.name||"",o.searchFor)):!0).sort((g,f)=>{let T=e().isTokenPinned(g,o.type),C=e().isTokenPinned(f,o.type);if(T!==C)return T?-1:1;if(o.getBalanceFor){let N=o.getBalanceFor(g),I=o.getBalanceFor(f),b=Eu(N,I);if(b!==0)return b}let y=l.get(g.blockchain),k=l.get(f.blockchain),w=ss(g,y),v=ss(f,k);if(w!==v)return w?-1:1;if(g.isPopular!==f.isPopular)return g.isPopular?-1:1;if(o.searchFor){let N=iu(g,f,o.searchFor);if(N)return N}return g.isSecondaryCoin!==f.isSecondaryCoin?g.isSecondaryCoin?1:-1:y&&k?y.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,i=e().customTokens(),a=kt(o),s=n.get(a);return s||(s=i.find(c=>kt(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Kt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),i=n.liquiditySources?.length?n.liquiditySources:null,a=i??o.liquiditySources,s=i?!1:o.excludeLiquiditySources;return e()._swappers.filter(p=>{let u=a?.includes(p.swapperGroup);return s||!a||a.length===0?!u:u}).sort(Mu)},fetch:async()=>{try{let{routing:o}=e().config,n=mn("enableCentralizedSwappers",o),i=await dt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,c={},l=i.popularTokens,p=i.swappers.filter(d=>d.enabled);i.blockchains.sort((d,m)=>d.sort-m.sort).forEach(d=>{d.enabled&&a.set(d.name,d)}),i.tokens.forEach(d=>{let m=kt(d);c[d.blockchain]||(c[d.blockchain]=[]),s.set(m,d),c[d.blockchain]?.push(m)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c,_popularTokens:l,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as YT,Catalonia as ZT,Chinese as Fu,Denmark as JT,English as RT,Finland as eC,French as tC,German as oC,Greece as nC,Hungary as rC,India as iC,Indonesian as aC,Italian as sC,Japanese as lC,Korea as cC,Lithuania as pC,Malay as uC,Netherlands as dC,Pakistan as mC,Philippines as fC,Poland as gC,Portuguese as hC,Russian as yC,SaudiArabia as SC,Serbia as TC,Slovakia as CC,SouthAfrica as kC,Spanish as wC,Swahili as vC,Swedish as EC,Thai as bC,Turkish as xC,Ukrainian as IC,Vietnamese as AC}from"@rango-dev/ui";var Ou=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:kC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:SC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:YT},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:ZT},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Fu},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Fu},{title:"Danish",label:"Dansk",local:"da",SVGFlag:JT},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:dC},{title:"English",label:"English",local:"en",SVGFlag:RT},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:fC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:eC},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:tC},{title:"German",label:"Deutsch",local:"de",SVGFlag:oC},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:nC},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:iC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:rC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:aC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:sC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:lC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:cC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:pC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:uC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:gC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:hC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:yC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:TC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:CC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:wC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:vC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:EC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:bC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:xC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:IC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:mC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:AC}],gn="en";var Uu=r((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:yi,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],quoteTokensRate:"default",changeQuoteTokensRate:()=>t(o=>({quoteTokensRate:o.quoteTokensRate==="default"?"reversed":"default"})),addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,c)=>{let l=s===o,p=c<=9;return l&&p}))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(i=>{if(n)return{disabledLiquiditySources:[]};let a=pn(o.map(s=>s.swapperGroup));return a.length===i.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(i=>i!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:i}=o,a=nt("theme",n),s=nt("language",n),c=nt("liquiditySource",n),l=i?.singleTheme,p=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...l&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||gn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||gn}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(i=>i.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,i=ii({config:o});return i.length?n.filter(a=>i.includes(a.blockchain)):n}}),"createSettingsSlice");import bs from"bignumber.js";import NC from"mitt";var ge=NC(),WC={on:ge.on,off:ge.off};var zu=r(t=>(e,o,n)=>t(r((...a)=>{let[s,...c]=a;e(l=>({...typeof s=="function"?s(l):s,lastUpdatedAt:+new Date}),...c)},"modifedSet"),o,n),"keepLastUpdated");import Qu from"bignumber.js";function Xt(t){return`${t.blockchain}${_o}${t.address}${_o}${t.symbol}`}r(Xt,"createAssetKey");function Hu(t,e){return`${Xt(e)}${_o}${t}`}r(Hu,"createBalanceKey");function tr(t){let[e,o,n]=t.split(_o);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}r(tr,"extractAssetFromBalanceKey");function ks(t,e,o){return e.balances?.forEach(n=>{let i=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Xt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:i?new Qu(i??pe).multipliedBy(o[s].amount).toString():""})})}),o}r(ks,"computeNextBalancesWithNewPrices");function ws(t,e){let o={};return t.balances?.forEach(n=>{let i=Hu(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Qu(c??pe).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[i]=p}),o}r(ws,"createBalanceStateForNewAccount");function vs(t,e){for(let o in e){let n=tr(o);if(n){let i=Xt(n);t[i]||(t[i]=[]),t[i].includes(o)||(t[i]=[...t[i],o])}}return t}r(vs,"updateAggregatedBalanceStateForNewAccount");function PC(t,e){let o=tr(e);if(!o)return t;let n=Xt(o);return t[n]&&(t[n]=t[n].filter(i=>i!==e)),t}r(PC,"removeBalanceFromAggregatedBalance");function Es(t,e,o){let n=t.connectedWallets.filter(l=>e.includes(l.walletType));t.connectedWallets.forEach(l=>{e.includes(l.walletType)||(n=n.filter(p=>!(p.chain===l.chain&&p.address===l.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(l=>o.chains?.includes(l.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(l=>l.namespace?o.namespaces?.includes(l.namespace):!1));let i={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(l=>{let p=tr(l);if(!p)return;!!n.find(d=>Hu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=PC(a,l):s[l]&&(i[l]=s[l])}),{_balances:i,_aggregatedBalances:a}}r(Es,"computeNextStateAfterWalletBalanceRemoval");function LC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}r(LC,"matchWalletDetailsWithConnectedWallet");var BC=lu(),qu=zu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(i=>o.find(a=>Rn(a,i))?{...i,loading:!0,error:!1}:i)}))},setConnectedWalletRetrievedData:(o,n)=>{t(i=>({fetchingWallets:!1,connectedWallets:i.connectedWallets.map(a=>o.find(s=>Rn(s,a))?{...a,loading:!1,error:!1,explorerUrl:LC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(i=>o.find(a=>Rn(a,i))?{...i,loading:!1,error:!0}:i)}))},addConnectedWallet:(o,n,i)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Rn(c,l)));if(s.length>0){let c=s.map(l=>{let p=!a.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:p,namespace:n,derivationPath:i,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!c.some(d=>d.walletType===u.walletType&&d.chain===u.chain)),...c]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:i}=o,a=n.reduce((l,p)=>((l[p.blockchain]||=[]).push(p),l),{}),s=new Set,c=i.reduce((l,p)=>{let u=`${p.address}-${p.chain}`;return s.has(u)||(s.add(u),a[p.chain]&&(l[p.address]||(l[p.address]=[]),l[p.address]?.push(...a[p.chain]||[]))),l},{});Object.entries(c).forEach(async([l,p])=>{try{let{balances:u}=await dt().getMultipleTokenBalance({assets:p.map(({symbol:d,address:m,blockchain:h})=>({symbol:d,address:m,blockchain:h})),walletAddress:l});if(u){let d=e()._balances,m=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let g={blockChain:h.asset.blockchain,balances:[h],address:l},f={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};ks(f,g,d);let T=ws(g,e);m=vs(m,T),d={...d,...T}}),t(h=>({_balances:{...h._balances,...d},_aggregatedBalances:m}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(i=>{let a=!!o.find(c=>c.chain===i.chain&&c.walletType!==i.walletType&&i.selected),s=!!o.find(c=>c.chain===i.chain&&c.walletType===i.walletType&&!i.selected);return a?{...i,selected:!1}:s?{...i,selected:!0}:i});t({connectedWallets:n})},newWalletConnected:async(o,n,i,a)=>{let s=o[0];s&&(ge.emit("walletEvent",{type:"connect",payload:{walletType:s.walletType,accounts:o,chain:s.chain??null,walletName:a?.walletName??s.walletType}}),e().addConnectedWallet(o,n,i),e().fetchBalances(o))},removeBalancesForWallet:(o,n)=>{let i={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Es(i,[o],n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(i=>i.walletType===o);if(ge.emit("walletEvent",{type:"disconnect",payload:{walletType:o,walletName:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let i=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:i})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let i=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(i=i.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=i.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(c=>a.includes(c.chain)?(a=a.filter(l=>l!==c.chain),{...c,selected:!0}):c);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:i=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),i&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0||!o[0])return;let i=[...new Set(o.map(l=>l.walletType))];e().setConnectedWalletAsRefetching(o);let a=o.map(l=>({address:l.address,blockchain:l.chain})),s;try{s=await dt().getWalletsDetails(a)}catch(l){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${l}`);return}let c=s.wallets;if(c){let l=e()._balances,p=e()._aggregatedBalances;c.forEach(d=>{if(d.failed)return;let m={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};ks(m,d,l);let{_balances:h,_aggregatedBalances:g}=Es(m,i,{chains:[d.blockChain]});if(p=g,l=h,!e().connectedWallets.find(T=>i.includes(T.walletType)&&T.address===d.address&&T.chain===d.blockChain))return;let f=ws(d,e);p=vs(p,f),l={...l,...f}}),t(d=>({_balances:{...d._balances,...l},_aggregatedBalances:p})),e().setConnectedWalletRetrievedData(o,c);let{retryOnFailedBalances:u=!0}=n||{};if(u){let d=c.filter(m=>m.failed).map(m=>{let h=e().connectedWallets.find(g=>g.chain===m.blockChain&&g.address)?.walletType;return h?{chain:m.blockChain,walletType:h,address:m.address}:null}).filter(m=>!!m);d.length>0&&await e().fetchMainTokensBalances(d,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),i=Xt(o),a=e()._aggregatedBalances[i]||[];if(a.length===0||!a[0])return null;let s=a[0];if(a.length===1&&n[s])return n[s];let c=n[a[0]];if(!c)return null;let l=c;return a.forEach(p=>{let u=n[p];if(!u)return;let d=new bs(u.amount),m=new bs(l.amount);d.isGreaterThan(m)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(_o);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>BC(()=>e().connectedWallets.map(n=>{let i=e().getBalancesForWalletAddress(n.address),a=Object.keys(i);return{...n,balances:a.reduce((s,c)=>{let l=i[c],p=tr(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new bs(l.amount).shiftedBy(-l.decimals):pe;s.push({chain:n.chain,symbol:p.symbol,ticker:p.symbol,address:p.address,rawAmount:l.amount,decimal:l.decimals,amount:d.toString(),isSupported:!!u,logo:u?.image||null,usdPrice:u?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Gu(t){return _C()(MC((...e)=>({...qu(...e),...$u(...e),...Uu(...e),...qp(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,quoteTokensRate:e.quoteTokensRate}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(i=>({...i,warning:!0}))),n}}))}r(Gu,"createAppStore");var Vu=$C(null);function S(){let t=FC(Vu);if(OC(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}r(S,"useAppStore");function Ku(t){let e=UC();return e.current||(e.current=Gu(t.config)),DC.createElement(Vu.Provider,{value:e.current},t.children)}r(Ku,"AppStoreProvider");function oe(t){ge.emit("uiEvent",t)}r(oe,"emitUiEvent");function ju(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};oe({type:t.type,payload:n}),o||e()}r(ju,"emitPreventableEvent");function hn(t){ge.emit("quoteEvent",t)}r(hn,"emitQuoteEvent");function Xu(t){ge.emit("walletEvent",{type:"detected",payload:t})}r(Xu,"emitWalletDetected");var Zu=new Set,HC=new Set([Dt.LEDGER,Dt.TREZOR,Dt.WALLET_CONNECT_2,Dt.TON_CONNECT,Dt.DEFAULT]),qC=new Set([Dt.DEFAULT,Dt.WALLET_CONNECT_2,Dt.LEDGER]);function xt(t){let{chain:e}=t||{},{getAvailableProviders:o}=S(),{state:n,getWalletInfo:i}=zC(),{handleDisconnect:a}=ln(),s=ni(o()),c=ku(n,i,s,e);c=pu()?c.filter(m=>m.showOnMobile!==!1&&n(m.type).installed):c;let l=bu(c);Yu(()=>{c.forEach(m=>{if(HC.has(m.type))return;m.state!==Ci.NOT_INSTALLED&&!Zu.has(m.type)&&(Zu.add(m.type),Xu({walletName:m.type}))})},[gs(c)]);let p=QC(()=>{let m=c?.filter(h=>h.state===Ci.CONNECTING)||[];for(let h of m)a(h)},[gs(c)]);Yu(()=>()=>{p()},[]);let u=r(m=>{let h=m.find(f=>f.type===Dt.DEFAULT);return!h||h.state===Ci.NOT_INSTALLED?!1:m.filter(f=>f.state!=Ci.NOT_INSTALLED&&!qC.has(f.type)&&i(f.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=r(m=>m==Dt.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(m=>!d(m.type)),terminateConnectingWallets:p}}r(xt,"useWalletList");import{Modal as jC}from"@rango-dev/ui";import XC from"react";import{create as KC}from"zustand";var Ju="rango-widget";var or=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(Ju),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{r(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 VC=r(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),mo=VC;var re=mo(KC()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,showCompactTokenSelector:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:i}=e();!i&&n?t({showActivateTabModal:!0}):(i||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})},setShowCompactTokenSelector:o=>{t({showCompactTokenSelector:o})}}))),Fo=new or({onInit:()=>re.setState({tabManagerInitiated:!0}),onClaim:()=>re.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>re.setState({isActiveTab:!1})});function ie(t){let{watermark:e}=re();return XC.createElement(jC,{hasWatermark:e==="FULL",...t},t.children)}r(ie,"WatermarkedModal");import{i18n as Tn}from"@lingui/core";import{getSupportedChainsFromNamespace as pk}from"@rango-dev/internal-blockchains";import{Alert as uk,Button as dk,Divider as Cn,Image as mk,MessageBox as fk,RadioRoot as gk,WalletImageContainer as hk}from"@rango-dev/ui";import le,{useEffect as yk,useMemo as Sk,useState as Tk}from"react";import{i18n as RC}from"@lingui/core";import{Typography as ad}from"@rango-dev/ui";import yn from"react";function ki(t,e){return t.find(o=>o.name===e)?.logo}r(ki,"getBlockchainLogo");import{darkTheme as YC,Image as ZC,styled as Yt,Typography as JC}from"@rango-dev/ui";var wi=Yt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${YC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),vi=Yt("div",{display:"flex",gap:"$8",alignItems:"center"}),ed=Yt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),td=Yt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),od=Yt("div",{display:"flex",gap:"$6",alignItems:"center"}),nd=Yt("div",{paddingLeft:"48px"}),rd=Yt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),id=Yt(JC,{maxWidth:"100px",whiteSpace:"nowrap"}),Ei=Yt(ZC,{variants:{disabled:{true:{opacity:"0.5"}}}});function bi(t){let{namespace:e}=t,o=S().blockchains();return yn.createElement(wi,{unsupported:!0},yn.createElement(vi,null,yn.createElement(Ei,{src:ki(o,e.id),size:40,disabled:!0}),yn.createElement(td,null,yn.createElement(ad,{variant:"label",size:"large"},e.label),yn.createElement(ad,{variant:"body",size:"xsmall"},RC.t("(Currently not supported)")))))}r(bi,"NamespaceUnsupportedItem");import{Checkbox as sk,Radio as lk}from"@rango-dev/ui";import Ns from"react";import{i18n as As}from"@lingui/core";import{getSupportedChainsFromNamespace as tk}from"@rango-dev/internal-blockchains";import{ChevronDownIcon as ok,ChevronUpIcon as nk,Divider as rk,Typography as nr}from"@rango-dev/ui";import We,{useEffect as ik,useState as ak}from"react";import{Image as ld,Tooltip as cd,Typography as ek}from"@rango-dev/ui";import $t from"react";import{styled as sd}from"@rango-dev/ui";var xs=sd("div",{display:"flex",alignItems:"center",padding:0,margin:0}),xi=sd("div",{marginLeft:"-5px",listStyleType:"none",backgroundColor:"$background",borderRadius:"$lg",minWidth:"15px",height:"15px",variants:{firstItem:{true:{marginLeft:0}}},display:"flex",alignItems:"center",justifyContent:"center"});var Is=3;function pd(t){let{chains:e}=t;return $t.createElement(xs,{id:"widget-supported-chains-container"},e.slice(0,Is).map((o,n)=>$t.createElement(cd,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},$t.createElement(xi,{firstItem:n===0},$t.createElement(ld,{src:o.logo,size:15})))),e.length>Is&&$t.createElement(cd,{container:W(),side:"bottom",align:"start",sideOffset:4,content:$t.createElement(xs,null,e.map((o,n)=>$t.createElement(xi,{key:o.name,firstItem:n===0},$t.createElement(ld,{src:o.logo,size:15}))))},$t.createElement(xi,null,$t.createElement(ek,{variant:"body",size:"xsmall"},"+",e.length-Is))))}r(pd,"SupportedChainsList");function Oo(t){let{namespace:e,error:o,suffix:n,connected:i,address:a,onClick:s}=t,[c,l]=ak(!1),p=S().blockchains();ik(()=>l(!1),[o]);let u=tk(e,p),d=!o&&!i&&u.length>1;return We.createElement(wi,{hasError:!!o,clickable:!!s,onClick:s},We.createElement(vi,null,We.createElement(Ei,{src:ki(p,e.id),size:40}),We.createElement(ed,{showSupportedChains:d||i||!!o},We.createElement(od,null,We.createElement(nr,{variant:"label",size:"large"},e.label),i&&We.createElement(nr,{variant:"body",size:"small",color:"success500"},As.t("Connected")),!!o&&We.createElement(nr,{variant:"body",size:"small",color:"error500"},As.t("Connection failed"))),d&&We.createElement(pd,{chains:u}),i&&We.createElement(id,{variant:"body",size:"small",color:"neutral700"},a),o&&We.createElement(rd,{onClick:()=>l(m=>!m)},We.createElement(nr,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},As.t("See why")),c?We.createElement(nk,{size:12,color:"gray"}):We.createElement(ok,{size:12,color:"gray"}))),n),!!o&&c&&We.createElement(We.Fragment,null,We.createElement(rk,{size:4}),We.createElement(nd,null,We.createElement(nr,{variant:"body",size:"small",color:"neutral700"},o))))}r(Oo,"NamespaceItem");function ud(t){let{onClick:e,type:o,namespace:n}=t;return Ns.createElement(Oo,{namespace:n,onClick:e,suffix:o==="radio"?Ns.createElement(lk,{value:n.value}):Ns.createElement(sk,{checked:t.value})})}r(ud,"NamespaceListItem");import{Button as ck,styled as dd}from"@rango-dev/ui";var Ii=dd("ul",{padding:0,paddingBottom:"$20",margin:0}),Sn=dd(ck,{minHeight:"$40"});function rr(t){let{targetWallet:e}=t.value,o=e.properties?.find(g=>g.name==="namespaces"),n=o?.value.selection==="single",i=o?.value,a=e.image,s=S().blockchains(),[c,l]=Tk([]),p=Sk(()=>i?.data.filter(g=>!g.unsupported),[e?.type]),u=r(g=>{l(n?[g]:f=>f.includes(g)?f.filter(T=>T!==g):f.concat(g))},"onSelect"),d=p?.length===c.length,m=r(()=>{if(n)throw new Error("onSelectAll should not be called on single selection mode.");d?l([]):p&&l(p.map(g=>g.value))},"onSelectAll"),h=r(g=>n?le.createElement(gk,{value:c?.[0]},g):le.createElement(le.Fragment,null,g),"wrapRadioRoot");return yk(()=>{if(!n&&p)if(t.value.defaultSelectedChains?.length){let g=p.filter(f=>pk(f,s).some(T=>t.value.defaultSelectedChains?.includes(T.name)));l(g.map(f=>f.value))}else l(p.map(g=>g.value))},[]),le.createElement(le.Fragment,null,le.createElement(fk,{type:"info",title:Tn.t("Connect {wallet}",{wallet:e.title}),description:Tn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(hk,null,le.createElement(mk,{src:a,size:45}))}),n?le.createElement(le.Fragment,null,le.createElement(Cn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(uk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:Tn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(dk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:m},d?Tn.t("Deselect all"):Tn.t("Select all")),le.createElement(Cn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(Ii,null,h(le.createElement(le.Fragment,null,i?.data.map((g,f,T)=>le.createElement(le.Fragment,{key:g.id},g.unsupported?le.createElement(bi,{namespace:g}):le.createElement(ud,{value:c.includes(g.value),namespace:g,type:n?"radio":"checkbox",onClick:()=>u(g.value)}),f!==T.length-1&&le.createElement(Cn,{size:10})))))),le.createElement(Cn,{size:20}),le.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!c.length,onClick:()=>t.onConfirm(c)},Tn.t("Connect")))}r(rr,"Namespaces");import{i18n as ir}from"@lingui/core";import{Alert as xk,Button as Ik,Divider as kn,Image as Ak,MessageBox as Nk,WalletImageContainer as Wk}from"@rango-dev/ui";import{useWallets as Pk}from"@rango-dev/wallets-react";import me from"react";import{styled as Ck}from"@rango-dev/ui";var md=Ck("div",{display:"flex",justifyContent:"end"});import{i18n as Ws}from"@lingui/core";import{Button as kk,Spinner as wk}from"@rango-dev/ui";import Ps,{useLayoutEffect as vk,useRef as Ek,useState as bk}from"react";function fd(t){let{namespace:e,initialConnect:o,disabled:n,state:i,handleConnect:a,handleDisconnect:s}=t,[c,l]=bk(null),p=Ek(!1);vk(()=>{o&&!p.current&&u()},[]);let u=r(async g=>{try{p.current=!0,await a(g)}catch(f){l(Tt(f)??f)}finally{p.current=!1}},"handleConnectNamespace"),d=r(async()=>{l(null),i.connected?await s():u({shouldAskForDerivationPath:!0})},"handleButtonClick"),m=r(()=>{let g=i.accounts?.[0]?.split(":"),f=g?.[g.length-1];return!i.connected||!f?null:uo(f)},"getConnectedAddress"),h=r(()=>i.connected?Ws.t("Disconnect"):c?Ws.t("Try again"):Ws.t("Connect"),"getButtonText");return Ps.createElement(Oo,{namespace:e,connected:i.connected,error:c?.message,address:m(),suffix:i.connecting?Ps.createElement(wk,{color:"info"}):Ps.createElement(kk,{id:"widget-name-space-connect-btn",variant:"ghost",type:i.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}r(fd,"NamespaceDetachedItem");function ar(t){let{value:e,selectedNamespaces:o,onConfirm:n,confirmText:i=ir.t("Done"),onDisconnectWallet:a,navigateToDerivationPath:s}=t,{targetWallet:c}=e,{connect:l,disconnect:p,state:u}=Pk(),d=c.type,m=u(d),h=c.properties?.find(w=>w.name==="namespaces"),g=c.properties?.find(w=>w.name==="derivationPath"),f=h?.value.selection==="single",T=r(async(w,v)=>{f&&await p(d),g&&v?.shouldAskForDerivationPath?s(w):await l(d,[{namespace:w,network:"",derivationPath:v?.derivationPath??void 0}])},"handleConnectNamespace"),C=r(async w=>{await p(d,[w])},"handleDisconnectNamespace"),y=r(()=>f?me.createElement(me.Fragment,null,me.createElement(kn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(xk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:ir.t("This wallet can only connect to one chain at a time.")}),me.createElement(kn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(kn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(md,null,me.createElement(Ik,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:m.connecting||!m.connected,onClick:a},ir.t("Disconnect wallet"))),me.createElement(kn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),k=r(w=>{if(w.unsupported)return me.createElement(bi,{namespace:w});let v=o?.find(b=>b.namespace===w.value),N=m.namespaces?.get(w.value);if(!N)throw new Error(`State for ${w.value} was not found!`);let I=f&&m.connecting;return me.createElement(fd,{namespace:w,initialConnect:!!v,disabled:I,state:N,handleConnect:async b=>T(w.value,{derivationPath:v?.derivationPath,shouldAskForDerivationPath:b?.shouldAskForDerivationPath}),handleDisconnect:async()=>C(w.value)})},"renderNamespaceItem");return me.createElement(me.Fragment,null,me.createElement(Nk,{type:"info",title:ir.t("Connect {wallet}",{wallet:c.title}),description:ir.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:me.createElement(Wk,null,me.createElement(Ak,{src:c.image,size:45}))}),y(),me.createElement(Ii,{id:"widget-detached-namespace-list"},c.needsNamespace?.data.map((w,v,N)=>me.createElement(me.Fragment,{key:w.id},k(w),v!==N.length-1&&me.createElement(kn,{size:10})))),me.createElement(kn,{size:20}),me.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},i))}r(ar,"Detached");import{i18n as wn}from"@lingui/core";import{Divider as _k,Image as Mk,MessageBox as Dk,Select as $k,TextField as Fk}from"@rango-dev/ui";import{useWallets as Ok}from"@rango-dev/wallets-react";import It,{useEffect as Uk,useMemo as zk,useState as yd}from"react";var Ai={id:"custom",label:"Custom",generateDerivationPath:t=>t};function gd(t,e){let o=t.filter(n=>n.namespace===e);return o.length?[...o,Ai]:[]}r(gd,"getDerivationPaths");import{Button as Lk,styled as Ls,Typography as Bk}from"@rango-dev/ui";var hd=Ls("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Bs=Ls(Bk,{paddingLeft:"$10"}),_s={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},hM=Ls(Lk,{minHeight:"$40"});var Sd="0";function sr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:i}=t.value,{getWalletInfo:a}=Ok(),[s,c]=yd(null),[l,p]=yd(Sd),u=s===Ai.id,d=zk(()=>gd(a(i).needsDerivationPath?.data??[],o),[i,o]),m=r(({value:g})=>{let f=d?.find(T=>T.id===g);f&&(s===Ai.id&&Number.isNaN(Number(l))&&p(Sd),c(f.id))},"handleDerivationPathItemClick"),h=r(()=>{let g=d.find(f=>f.id===s);if(g)e(g.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return Uk(()=>{c(d[0]?.id||null)},[d]),It.createElement(It.Fragment,null,It.createElement(Dk,{type:"info",title:wn.t("Select Derivation Path"),description:wn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:i}}),icon:It.createElement(Mk,{src:n,size:45})}),It.createElement(hd,{className:"_derivation_path_inputs_container"},It.createElement(Bs,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},wn.t("Choose Derivation Path Template")),It.createElement($k,{id:"widget-derivation-path-template-select",value:s||"",options:d.map(g=>({value:g.id,label:g.label})),variant:"filled",handleItemClick:m,styles:{trigger:_s}}),It.createElement(_k,{size:20}),It.createElement(Bs,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},u?wn.t("Enter Path"):wn.t("Enter Index")),It.createElement(Fk,{id:"widget-derivation-path-template-input",type:u?"text":"number",variant:"contained",value:l,onChange:g=>p(g.target.value),style:_s})),It.createElement(Sn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!d||!s||!l},wn.t("Confirm")))}r(sr,"DerivationPath");import{i18n as vn}from"@lingui/core";import{Image as qk,MessageBox as Ds,WalletImageContainer as Gk,WalletState as Vk}from"@rango-dev/ui";import{useWallets as Kk}from"@rango-dev/wallets-react";import Uo from"react";import{keyframes as Qk,styled as Ms}from"@rango-dev/ui";var AM=Ms("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Td=Ms("div",{position:"relative"}),Hk=Qk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Cd=Ms("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Hk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function $s(t){let{wallet:e,error:o}=t,{type:n,image:i}=e,{state:a,getWalletInfo:s}=Kk();return Jn(s(n),a(n))===Vk.CONNECTED?Uo.createElement(Ds,{type:"success",title:vn.t("Wallet Connected"),description:vn.t("Your wallet is connected, you can use it to swap.")}):o?Uo.createElement(Ds,{type:"error",title:vn.t("Failed to Connect"),description:o||vn.t("Your wallet is not connected. Please try again.")}):Uo.createElement(Ds,{type:"loading",title:vn.t("Connecting to your wallet"),description:vn.t("Click connect in your wallet popup."),icon:Uo.createElement(Td,null,Uo.createElement(Gk,null,Uo.createElement(qk,{src:i,size:45})),Uo.createElement(Cd,null))})}r($s,"ConnectStatus");function kd(t,e){return t().status==="init"&&!!e}r(kd,"isOnStatus");function lr(t){return t().status==="namespace"}r(lr,"isOnNamespace");function cr(t){return t().status==="derivationPath"}r(cr,"isOnDerivationPath");function Po(t){return t().status==="detached"}r(Po,"isOnDetached");var Zk=3e3,Jk=300;function pr(t){let e=Yk(),[o,n]=wd(!1),[i,a]=wd(),s=r(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=xt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:m,handleDisconnect:h}=ln(),g=r(v=>{u(t.wallet,v).then(k).catch(s)},"handleConfirmNamespaces"),f=r(()=>{C()},"handleDetachedConfirm"),T=r(v=>{if(!v)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(t.wallet,v).then(k).catch(s)},"handleDerivationPathConfirm"),C=r(()=>{n(!1)},"handleClosingModal"),y=r(()=>{a(void 0),m(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=r((v,N)=>{let I=v.status==="connected",b=["disconnected","disconnected-unhandled"].includes(v.status);I?(t.onConnect?.(),N||(e.current=setTimeout(C,Zk))):b&&C()},"afterConnected"),w=r(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return Xk(()=>{if(t.wallet){y();let v=!1,N=!0;r(()=>{setTimeout(()=>{N=!1,v||n(!0)},Jk)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(b=>{["namespace","Detached","derivation-path"].includes(b.status)||(v=!0),k(b,N)}).catch(s)}},[t.wallet]),fo.createElement(ie,{id:t.id,open:o,onClose:C,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},kd(d,t.wallet)&&fo.createElement(fo.Fragment,null,fo.createElement($s,{wallet:{type:t.wallet.type,image:t.wallet.image},error:i}),fo.createElement(jk,{direction:"vertical",size:32})),lr(d)&&fo.createElement(rr,{onConfirm:g,value:d().namespace}),cr(d)&&fo.createElement(sr,{onConfirm:T,value:d().derivationPath}),Po(d)&&fo.createElement(ar,{onConfirm:f,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}r(pr,"StatefulConnectModal");import ns from"react";import Rk,{Fragment as ew}from"react";import{MemoryRouter as tw,useInRouterContext as ow}from"react-router";function Ni({children:t}){let o=ow()?ew:tw;return Rk.createElement(o,null,t)}r(Ni,"AppRouter");import{I18nManager as X0}from"@rango-dev/ui";import Np from"react";import Qe from"react";import{useRoutes as N0}from"react-router-dom";var $={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 bn,useRef as Di}from"react";import at from"bignumber.js";import{create as Rd}from"zustand";import{subscribeWithSelector as em}from"zustand/middleware";import{createContext as nw,useContext as rw}from"react";var vd=nw({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=rw(vd);return{swapMode:t,isMultiMode:e}}r(rt,"useSwapMode");import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as sw,RouteEventType as MD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as ur}from"rango-types";import{i18n as Wi}from"@lingui/core";var zo=r(()=>({connectWallet:Wi.t("Connect Wallet"),swap:Wi.t("Swap"),swapAnyway:Wi.t("Swap anyway"),ethWarning:Wi.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Fs(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]}r(Fs,"getFeeLabel");var Os=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],Ed=100,bd=30,xd=15,Id=60;var Ad=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Nd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as aw}from"@rango-dev/queue-manager-rango-preset";import kD from"bignumber.js";function Pd(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}r(Pd,"getRequiredBalanceOfWallet");function Jt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}r(Jt,"getPriceImpactLevel");function Pi(t,e,o){let n=t.steps[0],i=t.steps[t.steps.length-1],a=aw(t.steps);if(!i||!n)return{fromBlockchain:null,fromToken:void 0,toBlockchain:null,toToken:void 0,inputAmount:""};let s={blockchain:i.toBlockchain,symbol:i.toSymbol,address:i.toSymbolAddress},c=Lo(a?a.toBlockchain:n.fromBlockchain,e),l=Lo(i.toBlockchain,e),p=o(a?{blockchain:c?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:c?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),u=o(s),d=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:c,fromToken:p,toBlockchain:l,toToken:u,inputAmount:d}}r(Pi,"createRetryQuote");function En(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:i}=t,a=Qo(o),s=it(o);if(o&&a&&s){let p=Zt(a.toString(),s.toString());if(!!p&&Dd(a,p)){let d=Bi(o?.swaps,n),m=Jt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:m}}}if(e&&Od(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Zt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=_i(o.swaps),l=i>dn;if(Fd(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<i)return{type:3,slippage:i.toString()}}else return{type:2,recommendedSlippages:$d(o,i),minRequiredSlippage:c};return null}r(En,"generateQuoteWarnings");function Ld(t){return![4].includes(t.type)}r(Ld,"isQuoteWarningConfirmationRequired");function Zt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Us(t.toString(),e.toString());return n&&n<0?n:null}r(Zt,"getPriceImpact");var Bd=r(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"),Li=r((t,e)=>e.sort((o,n)=>{let i=r(p=>p.scores?.find(u=>u.preferenceType===t)?.score??0,"getScore"),a=i(o),s=i(n);if(a!==s)return s-a;let c=o.requestId.toLowerCase(),l=n.requestId.toLowerCase();return c.localeCompare(l)}),"sortQuotesBy"),_d=r((t,e,o)=>{let n=e[0];if(!e.length||!n)return null;if(!t)return{requestAmount:o,validationStatus:null,...n};let i=new Set(t.swaps.map(s=>s.swapperId)),a=e.find(s=>{let c=new Set(s.swaps.map(l=>l.swapperId));return Array.from(i).every(l=>c.has(l))});return{requestAmount:o,validationStatus:null,...a||n}},"getDefaultQuote"),Md=r(t=>{let e=r((o,n)=>{let i=Os.indexOf(o.value),a=Os.indexOf(n.value);return i!==-1&&a!==-1?i-a:i!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Dd(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return Ad.some(({threshold:n,minInput:i})=>o<=n&&t.gte(new Ge(i)))}r(Dd,"hasHighValueLoss");function Ud(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Ge(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ge(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}r(Ud,"hasLimitError");function zd(t){let e=(t||[]).filter(c=>{let l=c.fromAmountMinValue?new Ge(c.fromAmountMinValue):null,p=c.fromAmountMaxValue?new Ge(c.fromAmountMaxValue):null;return c.fromAmountRestrictionType==="EXCLUSIVE"?l?.gte(c.fromAmount)||p?.lte(c.fromAmount):l?.gt(c.fromAmount)||p?.lt(c.fromAmount)})[0];if(!e)return{swap:void 0,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new Ge(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ge(e.fromAmountMaxValue):null,i=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!i&&o&&o.gt(e.fromAmount)?(a=vt.t({id:"Required: >= {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=te().bridgeLimitErrors.increaseAmount):i&&o&&o.gte(e.fromAmount)&&(a=vt.t({id:"Required: > {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=te().bridgeLimitErrors.increaseAmount),!i&&n&&n.lt(e.fromAmount)?(a=vt.t({id:"Required: <= {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=te().bridgeLimitErrors.decreaseAmount):i&&n&&n.lte(e.fromAmount)&&(a=vt.t({id:"Required: < {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=te().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}r(zd,"getLimitErrorMessage");function Qd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:i,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:zo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!i||i==="0"?{title:zo().swap,action:"confirm-swap",disabled:!0}:s?{title:zo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:zo().ethWarning,action:"confirm-warning",disabled:!1}:{title:zo().swap,action:"confirm-swap",disabled:!1}:{title:zo().connectWallet,action:"connect-wallet",disabled:!1}}r(Qd,"getSwapButtonState");function zs(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(pe))&&e&&e!=="0"&&n!==0)}r(zs,"canComputePriceImpact");function Qs(t,e){let o=pe;for(let n=0;n<t.fee.length;n++){let i=t.fee[n];if(!i||i.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(i.asset)?.usdPrice||null;o=o.plus(new Ge(i.amount).multipliedBy(a||0))}return o}r(Qs,"getUsdFeeOfStep");function Bi(t,e){return t.reduce((o,n)=>o.plus(Qs(n,e)),pe)}r(Bi,"getTotalFeeInUsd");function Hs(t){let e=pe,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}r(Hs,"getUsdFee");function qs(t){return t.reduce((e,o)=>e.plus(Hs(o)),pe)}r(qs,"getTotalFeesInUsd");function Hd(t){return t.reduce((e,o)=>{for(let n of o.fee){let i=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[i]=[...a[i]||[],n]}return e},{payable:{},nonePayable:{}})}r(Hd,"getFeesGroup");function qd(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?Object.fromEntries(e):null}r(qd,"checkSlippageErrors");function $d(t,e){let o=new Map;return t?.swaps.forEach((n,i)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(i,n.recommendedSlippage.slippage)}),o.size>0?Object.fromEntries(o):null}r($d,"checkSlippageWarnings");function _i(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}r(_i,"getMinRequiredSlippage");function Fd(t,e){return e?parseFloat(t)>=parseFloat(e):!0}r(Fd,"hasProperSlippage");function Gd(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:i,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:c,excludeLiquiditySources:l,slippage:p,affiliateRef:u,affiliatePercent:d,affiliateWallets:m,destination:h,contractCall:g}=t,f=a?.reduce((y,k)=>(y[k.chain]=k.address,y),{}),T=[];return i?.forEach(y=>{T.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:d??void 0,affiliateWallets:m??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:T,selectedWallets:f??{},slippage:p.toString(),contractCall:g,...h&&{destination:h},...l&&{swapperGroups:s.concat(c??[]),swappersGroupsExclude:!0},...!l&&{swapperGroups:c?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}r(Gd,"createQuoteRequestBody");function Vd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}r(Vd,"getWalletsForNewSwap");function Qo(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}r(Qo,"getUsdInputFrom");function it(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1]?.to.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}r(it,"getUsdOutputFrom");function Us(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(Ed).toNumber()}r(Us,"getPercentageChange");function Od(t,e){let o=Qo(t),n=it(t),i=it(e);if(!o||!n||!i)return!1;let a=Us(n.toString(),i.toString());return Nd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}r(Od,"isOutputAmountChangedExcessively");function Kd(t,e,o){let n=t.validationStatus,i=Do({filter:"required",quote:t});return e.sort((s,c)=>i.indexOf(s.chain)-i.indexOf(c.chain)).flatMap(s=>Pd(s,n)||[]).filter(s=>!s.ok).map(s=>{let c=s.asset.symbol,l=M(new Ge(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=M(new Ge(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=vt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=vt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=vt.t(" for input and network fee")),vt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:p,symbol:c,reason:u,currentAmount:l,blockchain:Ct(s.asset.blockchain,o)}})})}r(Kd,"generateBalanceWarnings");function dr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==ur.NetworkChanged}r(dr,"isNetworkStatusInWarningState");function jd(t,e,o){let n="bellow button or",i=t.extraMessage,a=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(n)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(n,"")),dr(e)){i=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?sw(t,e):null)?.walletType,d=u?o?.(u)?.name:null;switch(e?.networkStatus){case ur.WaitingForConnectingWallet:i=d?vt.t("Connect {wallet}",{wallet:d}):i;break;case ur.WaitingForQueue:i=i||vt.t("Waiting for other running tasks to be finished");break;case ur.WaitingForNetworkChange:i=i||vt.t("Waiting for changing wallet network");break;case ur.NetworkChangeFailed:i=i||vt.t("The network switch could not be completed. Please try again, or switch the network manually in your wallet.");break;default:i=i||"";break}}a=a||"",i=i||"";let c=Tt(i)??Tt(a);c&&(a=[i,a].filter(Boolean).join(`
|
|
2
|
-
`),i=c.message);let l=i?.indexOf("code")!==-1&&i?.indexOf("reason")!==-1;return{shortMessage:i,detailedMessage:{content:a,long:l}}}r(jd,"getSwapMessages");function Xd(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}r(Xd,"getLastConvertedTokenInFailedSwap");function Yd(t){return t.status==="failed"}r(Yd,"shouldRetrySwap");function Zd(t,e,o,n,i,a){if(!n||t)return!0;let s=Do({filter:"all",quote:n}),c=Do({filter:"required",quote:n}),l=s.every(d=>i.some(m=>m.chain===d)),p=c.every(d=>i.some(m=>m.chain===d)),u=o&&a?Bo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}r(Zd,"isConfirmSwapDisabled");function Jd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}r(Jd,"isTokensIdentical");var Mi=r((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),tm=r(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new at(0),outputUsdValue:new at(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,i=pe,a=o.inputUsdValue;return Zn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=Qo(e)??pe,i=it(e)??pe),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:i,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new at(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new at(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new at(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:Mi(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 at(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),sanitizeInputAmount:e=>{let o=Cu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=hu(e);ci(e)||(o=uu(o),o=du(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new at(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Mi(n.fromToken,o)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:i,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Mi(n??null,s),outputUsdValue:new at(0),toBlockchain:i,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?Mi(e.toToken,e.outputAmount?.toString()||""):new at(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new at(0),inputUsdValue:new at(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new at(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})}),"initializer"),om=Rd()(em(tm)),nm=Rd()(em(tm)),lw=mo(om),cw=mo(nm);function z(){let{swapMode:t}=rt();return mo(t==="refuel"?nm:om)}r(z,"useQuoteStore");var rm=r((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ge.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&&ge.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})},"subscribeCallback"),im=lw.subscribe(rm),am=cw.subscribe(rm);function sm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:i,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=S().config,d=S().fetchStatus,m=S().blockchains(),{findToken:h}=S(),{setAffiliateRef:g,setAffiliatePercent:f,setAffiliateWallets:T}=S(),C=u?.from?.tokens,y=u?.from?.blockchains,k=u?.to?.tokens,w=u?.to?.blockchains,v=Di(void 0),N=Di(void 0),I=Di(void 0),b=Di(void 0);bn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),bn(()=>{if(d==="success"){i();let x=m.find(A=>A.name===u?.from?.blockchain),E=u?.from?.token,L=E&&h(E);(x||!x&&I.current)&&n(x??null),L?a({token:L,meta:{blockchains:m}}):!L&&v.current&&a({token:null}),I.current=u?.from?.blockchain,v.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,d]),bn(()=>{Ss(s,C)&&a({token:null}),Ts(l,y)&&n(null)},[C,y]),bn(()=>{Ss(c,k)&&a({token:null}),Ts(p,w)&&o(null)},[k,w]),bn(()=>{if(d==="success"){i();let x=m.find(A=>A.name===u?.to?.blockchain),E=u?.to?.token,L=E&&h(E);(x||!x&&b.current)&&o(x??null),L?e({token:L,meta:{blockchains:m}}):!L&&N.current&&e({token:null}),b.current=u?.to?.blockchain,N.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),bn(()=>{g(u?.affiliate?.ref??null),f(u?.affiliate?.percent??null),T(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}r(sm,"useSyncStoresWithConfig");import{useEffect as Ks,useRef as pw}from"react";import{useInRouterContext as uw,useLocation as dw,useSearchParams as mw}from"react-router-dom";function Gs(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}r(Gs,"convertTokenSearchParamToAsset");function Vs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}r(Vs,"tokenToSearchParam");function Xs(){let t=dw(),[e,o]=mw(),{fromBlockchain:n,toBlockchain:i,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:m}=z()(),h=S().fetchStatus,g=S().blockchains(),f=uw(),{updateIframe:T,updateCampaignMode:C}=S(),y=S().isInCampaignMode(),k=pw(),{findToken:w}=S(),v=r(()=>{let I={};for(let[P,Z]of e.entries())(P.startsWith("utm_")||P.startsWith("privy_"))&&(I[P]=Z);let b=e.get("fromAmount"),x=e.get("fromBlockchain"),E=e.get("fromToken"),L=e.get("toBlockchain"),A=e.get("toToken"),O=e.get("autoConnect"),q=e.get("clientUrl"),j=e.get("liquiditySources"),ee=e.get("blockchain");return{fromAmount:b,fromBlockchain:x,fromToken:E,toBlockchain:L,toToken:A,autoConnect:O,clientUrl:q,liquiditySources:j,extraQueryParams:I,blockchain:ee}},"getUrlSearchParams"),N=r(I=>{for(let b in I)I[b]||delete I[b];o(I,{replace:!0})},"updateUrlSearchParams");Ks(()=>{let{autoConnect:I,clientUrl:b,extraQueryParams:x,blockchain:E}=v();f&&h==="success"&&N({fromBlockchain:n?.name,fromToken:Vs(a),toBlockchain:i?.name,toToken:Vs(s),fromAmount:c,autoConnect:I??void 0,clientUrl:b??void 0,blockchain:E??void 0,liquiditySources:y?k.current:void 0,...x})},[t.pathname,c,n,a,i,s,y,h]),Ks(()=>{if(!f)return;let I=v();if(!k.current&&I.liquiditySources&&(k.current=I.liquiditySources),I.fromAmount&&m(I.fromAmount),h==="success"){let b=g.find(q=>q.name===I.fromBlockchain),x=I.fromToken&&b&&Gs(I.fromToken,b),E=x?w(x):void 0,L=g.find(q=>q.name===I.toBlockchain),A=I.toToken&&L&&Gs(I.toToken,L),O=A?w(A):void 0;b&&(l(b),E&&u({token:E,meta:{blockchains:g}})),L&&(p(L),O&&d({token:O,meta:{blockchains:g}}))}},[h]),Ks(()=>{let{clientUrl:I,liquiditySources:b}=v();T("clientUrl",I||void 0),C("liquiditySources",b?.split(",")??void 0)},[])}r(Xs,"useSyncUrlAndStore");import{i18n as An}from"@lingui/core";import{Alert as _v,Button as Mv,darkTheme as Dv,Divider as bl,DoneIcon as $v,styled as Fv,TextField as Ov,Typography as Uv}from"@rango-dev/ui";import Ke,{useState as zv}from"react";import{useNavigate as Qv,useSearchParams as Hv}from"react-router-dom";import{ChevronRightIcon as fw,Divider as dm,Image as gw,Typography as mm}from"@rango-dev/ui";import At from"react";import{darkTheme as lm,styled as Ys}from"@rango-dev/ui";var cm=Ys("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${lm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${lm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),pm=Ys("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),um=Ys("div",{display:"flex"});function Zs(t){let{onClick:e,value:o,title:n,hasLogo:i,placeholder:a,disabled:s}=t;return At.createElement(pm,null,At.createElement(mm,{size:"large",variant:"label"},n),At.createElement(dm,{size:10}),At.createElement(cm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},At.createElement(um,null,i&&At.createElement(At.Fragment,null,At.createElement(gw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),At.createElement(dm,{size:4,direction:"horizontal"})),At.createElement(mm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),At.createElement(fw,{size:12,color:"black"})))}r(Zs,"BlockchainSelectorButton");import{i18n as tl}from"@lingui/core";import{Button as vw,Divider as Sm,MessageBox as Ew}from"@rango-dev/ui";import go,{useEffect as Tm,useState as ol}from"react";import{i18n as $i}from"@lingui/core";import{Divider as Ho,ExternalLinkIcon as Sw,Image as Tw,InfoIcon as Cw,Tooltip as kw,Typography as fr}from"@rango-dev/ui";import fe from"react";var fm="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as hw,darkTheme as xn,styled as mr,Typography as yw}from"@rango-dev/ui";var Js=mr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),gm=mr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${xn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}}}),Rs=mr(hw,{minHeight:"$40"}),hm=mr(yw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),ym=mr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var ww=9;function el(t){let{open:e,onClose:o,token:n,onExit:i,onSubmitClick:a,blockchain:s}=t,c=n.address?ri({contractAddress:n.address,blockchainMeta:s}):void 0,l=r(()=>window.open(fm,"_blank"),"onClickLearnMore");return fe.createElement(ie,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:i,container:W()},fe.createElement(gm,null,fe.createElement(Tw,{src:n.image===""?ai:n.image,size:45,type:"circular"}),fe.createElement(Ho,{size:4}),fe.createElement(ym,null,fe.createElement(hm,{variant:"title",size:"medium"},n.symbol),n.symbol.length>ww&&fe.createElement(kw,{content:n.symbol,container:W()},fe.createElement(Cw,{size:12,color:"gray"}))),fe.createElement(fr,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),fe.createElement(Ho,{size:4}),fe.createElement(fr,{variant:"body",size:"medium"},c?fe.createElement(Js,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(Sw,{size:12,color:"gray"})):fe.createElement(Js,null,n.address)),fe.createElement(Ho,{size:4}),n.coinSource&&fe.createElement(fr,{className:"_coin-source",variant:"body",size:"xsmall"},$i.t("via")," ",fe.createElement(fr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Ho,{size:"32"}),fe.createElement(fr,{size:"medium",variant:"body",className:"_custom-token-description"},$i.t("This token is not part of our verified token list. please verify its source and make sure to understand all associated risks before proceeding."))),fe.createElement(Ho,{size:40}),fe.createElement(Ho,{size:10}),fe.createElement(Rs,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},$i.t("Import Anyway")),fe.createElement(Ho,{size:10}),fe.createElement(Rs,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},$i.t("Learn More")))}r(el,"CustomTokenModal");function gr(t){let{token:e,blockchain:o,error:n,address:i,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=S(),[d,m]=ol(!1),[h,g]=ol(!1),[f,T]=ol(!1),C=r(()=>{o&&a?.({blockchain:o.name,tokenAddress:i})},"getCustomToken"),y=r(()=>{n?.type!=="network-error"&&s?.(),m(!1)},"closeErrorModal"),k=r(()=>{T(!0),y()},"handleErrorModalButtonClick"),w=r(()=>{f&&n?.type==="network-error"&&(T(!1),C()),l()},"handleExit"),v=r(()=>{e&&(u(e),c())},"handleSubmit");return Tm(()=>{n&&m(!0)},[n]),Tm(()=>{o&&e&&g(!0)},[o,e]),go.createElement(go.Fragment,null,go.createElement(ie,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},go.createElement(Ew,{title:n?.title??"",type:"error",description:n?.message||tl.t("Failed Network, Please retry.")},go.createElement(Sm,{size:40}),go.createElement(Sm,{size:10}),go.createElement(vw,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:k},n?.type==="network-error"?tl.t("Retry"):tl.t("Add another custom token")))),o&&e&&go.createElement(el,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}r(gr,"ImportCustomToken");import{useManager as Av}from"@rango-dev/queue-manager-react";import{BottomLogo as Nv,Divider as Rm,Header as Wv}from"@rango-dev/ui";import Le,{useEffect as Ki,useLayoutEffect as Pv,useRef as ef,useState as tf}from"react";import{useRef as bw}from"react";function Fi(){return window.self!==window.top}r(Fi,"isAppLoadedIntoIframe");function nl(){let t=bw(null),{iframe:e}=S(),o=Fi()&&e.clientUrl,n=r(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:r(s=>{t.current=new ResizeObserver(c=>{for(let l of c)n({type:"widget_height",data:{height:l.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:r(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}r(nl,"useIframe");import{useNavigate as xw}from"react-router-dom";function Ve(){let t=xw();return()=>t(-1)}r(Ve,"useNavigateBack");import{createTheme as pl,darkTheme as Ow,lightTheme as Uw}from"@rango-dev/ui";import{useEffect as zw,useState as Qw}from"react";import{theme as $w,darkColors as Fw}from"@rango-dev/ui";import ll from"react";var Oi=16,Ui=255,Cm=.11;function Iw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,i){return n+i+i},"")}`:`#${t}`}r(Iw,"expandShortHexColor");function Aw(t,e){return t.padStart(e,"0")}r(Aw,"pad");function rl(t){let e=Math.min(Math.max(Math.round(t),0),Ui);return Aw(e.toString(Oi),2)}r(rl,"intToHex");function Nw(t){return`#${rl(t.red)}${rl(t.green)}${rl(t.blue)}`}r(Nw,"rgbToHex");function Ww(t){let e=parseInt(t.slice(1,3),Oi),o=parseInt(t.slice(3,5),Oi),n=parseInt(t.slice(5,7),Oi);return{red:e,green:o,blue:n}}r(Ww,"hexToRGB");function Pw(t,e){let o=1-Cm*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}r(Pw,"generateShade");function Lw(t,e){let o=Cm*e;return{red:t.red+(Ui-t.red)*o,green:t.green+(Ui-t.green)*o,blue:t.blue+(Ui-t.blue)*o}}r(Lw,"generateTint");function Bw(t){return km(t,Pw)}r(Bw,"calculateShades");function _w(t){return km(t,Lw)}r(_w,"calculateTints");function km(t,e){let o=Ww(t),n=[];for(let i=1;i<9;i++)n.push(Nw(e(o,i)));return n}r(km,"calculateColors");function il(t,e,o){let a=_w(t).reverse().concat(t),s=Bw(t),c=a.concat(s),l={},p=c.length;for(let u=0;u<p;u++){let d=100+(o?p-1-u:u)*50,m=c[u];m&&(l[`${e}${d}`]=m)}return l}r(il,"createTintsAndShades");function al(t,e,o){let n={...t};for(let i in e){let a=e[i],s=i==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(i)&&!Su(i)){let l=Iw(a);Object.assign(n,il(l,i,s))}}return{...n,...e}}r(al,"expandToGenerateThemeColors");var wm=r(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Mw=r(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=wm(o%52)+e;return wm(o%52)+e},"toAlphabeticName"),Dw=r((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),sl=r(t=>Mw(Dw(5381,JSON.stringify(t))>>>0),"toHash");function cl(t){let e=$w.colors,o={...e,...Fw},n,i;if(t?.light){let s={colors:al(e,t.light)};n={id:`${ys}-light-${sl(s)}`,tokens:s}}if(t?.dark){let s={colors:al(o,t.dark,{reverseNeutralRange:!0})};i={id:`${ys}-dark-${sl(s)}`,tokens:s}}return{light:n,dark:i}}r(cl,"customizedThemeTokens");function vm(t,e){if(t.length<=1)return t.map(({element:n,key:i})=>ll.cloneElement(n,{key:i}));let o=[];return t.forEach((n,i)=>{let{element:a,key:s}=n;if(o.push(ll.cloneElement(a,{key:s})),i<t.length-1){let c=`divider-${i}`;o.push(ll.cloneElement(e,{key:c}))}}),o}r(vm,"joinList");function Em(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}r(Em,"doesWindowPreferDarkColorScheme");function ho(t){let{colors:e,fontFamily:o=Rp,borderRadius:n=Pu,secondaryBorderRadius:i=Lu}=t,[a,s]=Qw(Em()?"dark":"light"),{theme:c}=S(),{dark:l,light:p}=cl(e),u=pl({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${i}px`},fonts:{widget:o}}),d=[u.className,Uw.className],m=[u.className,Ow.className];if(p){let g=pl(p.id,p.tokens);d.push(g.className)}if(l){let g=pl(l.id,l.tokens);m.push(g.className)}return zw(()=>{let g=r(f=>{f.matches?s("dark"):s("light")},"switchThemeListener");return Em()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:r(()=>{let g=d.join(" "),f=m.join(" ");return c==="auto"?a==="dark"?f:g:c==="dark"?f:g},"getActiveTheme"),mode:c==="auto"?a:c}}r(ho,"useTheme");var Et=r(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let i=o.list.getStorage();i?.swapDetails&&e.push({id:n,swap:i?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as bm}from"@lingui/core";import{Alert as Hw,Button as qw}from"@rango-dev/ui";import xm from"react";function ul(t){return xm.createElement(Hw,{action:xm.createElement(qw,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},bm.t("Activate this tab")),type:"warning",variant:"alarm",title:bm.t("Another tab is open and handles transactions.")})}r(ul,"ActivateTabAlert");import{i18n as dl}from"@lingui/core";import{Button as Gw,Divider as Vw,MessageBox as Kw}from"@rango-dev/ui";import zi from"react";function ml(t){let{open:e,onClose:o,onConfirm:n}=t;return zi.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},zi.createElement(Kw,{title:dl.t("Activate current tab"),type:"warning",description:dl.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.")},zi.createElement(Vw,{size:20}),zi.createElement(Gw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},dl.t("Confirm"))))}r(ml,"ActivateTabModal");import{ChevronLeftIcon as Yw}from"@rango-dev/ui";import _m from"react";import{css as jw,darkTheme as Im,IconButton as Xw,styled as qo}from"@rango-dev/ui";var Ft=qo(Xw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Im} &`]:{backgroundColor:"$neutral"}}}),Am=qo("div",{position:"absolute",background:"$secondary500",[`.${Im} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),yo=qo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Nm=qo("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"}}}}),Wm=qo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Pm=qo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Lm=jw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),Bm=qo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function fl(t){return _m.createElement(Ft,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},_m.createElement(Yw,{color:"black",size:16}))}r(fl,"BackButton");import{i18n as Zw}from"@lingui/core";import{Button as Jw,Typography as Rw}from"@rango-dev/ui";import gl from"react";function hl(t){return gl.createElement(yo,null,gl.createElement(Jw,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},gl.createElement(Rw,{variant:"label",size:"medium",color:"error500"},Zw.t("Cancel"))))}r(hl,"CancelButton");import{i18n as ev}from"@lingui/core";import{Image as tv,Tooltip as ov,WalletIcon as nv,WalletState as Mm}from"@rango-dev/ui";import Go from"react";function yl(t){let{list:e}=xt(),o=e.filter(i=>i.state===Mm.CONNECTED||i.state===Mm.PARTIALLY_CONNECTED),n=o.length?Go.createElement("div",{className:Lm()},o.map(i=>Go.createElement(Bm,{key:i.title},Go.createElement(tv,{src:i.image,size:14})))):ev.t("Connect Wallet");return Go.createElement(ov,{container:t.container,side:"bottom",content:n},Go.createElement(Ft,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&Go.createElement(Am,null),Go.createElement(nv,{size:18,color:"black"})))}r(yl,"WalletButton");import{i18n as Hi}from"@lingui/core";import{NotificationsIcon as Tv,Popover as Cv,SettingsIcon as kv,Tooltip as qi,TransactionIcon as wv}from"@rango-dev/ui";import _e from"react";import{Notifications as sv}from"@rango-dev/ui";import lv from"react";import{useNavigate as cv}from"react-router-dom";import{create as rv}from"zustand";import{persist as iv,subscribeWithSelector as av}from"zustand/middleware";var Pe=mo(rv()(iv(av((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let i=n.steps[0],a=n.steps[n.steps.length-1];if(!i||!a)return;let s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:i.fromBlockchain,address:i.fromSymbolAddress,symbol:i.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},c=e().notifications.filter(l=>l.requestId!==n.requestId);t(()=>({notifications:[...c,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(i=>i.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((i,a)=>i.route.creationTime&&!a.route.creationTime?-1:!i.route.creationTime&&a.route.creationTime?1:!i.route.creationTime&&!a.route.creationTime?a.creationTime-i.creationTime:a.route.creationTime-i.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:i}=e();if(!n){let a=[];i.forEach(s=>{o.some(l=>l.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,...i})=>i)}return t}})));function Sl(){let t=cv(),{getNotifications:e,clearNotifications:o}=Pe(),n=e(),i=S().blockchains(),{findToken:a}=S();return lv.createElement(sv,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Qp(c,i),getTokenImage:c=>a(c)?.image,onClickItem:r(c=>{t(`${$.swaps}/${c}`)},"onClickItem"),onClearAll:o})}r(Sl,"NotificationContent");import{useManager as pv}from"@rango-dev/queue-manager-react";import{InProgressIcon as uv}from"@rango-dev/ui";import Dm from"react";var dv=r(()=>{let{manager:t}=pv();return Et(t).map(({swap:o})=>o).find(o=>o.status==="running")?Dm.createElement(Pm,{id:"widget-header-history-badge-container"},Dm.createElement(uv,{color:"info",size:6})):null},"InProgressTransactionBadge"),$m=dv;import{EventSeverity as mv}from"@rango-dev/queue-manager-rango-preset";import{Typography as fv}from"@rango-dev/ui";import Fm from"react";function Om(){let{getNotifications:t}=Pe(),e=t(),o=e.length,n=!!e.find(i=>i.event.messageSeverity===mv.WARNING);return o?Fm.createElement(Nm,{isSever:n},Fm.createElement(fv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}r(Om,"NotificationsBadge");import{RefreshProgressButton as gv}from"@rango-dev/ui";import Tl,{useEffect as hv,useState as Um}from"react";var yv=1e3,zm=60,Sv=100;function Qi({onClick:t}){let[e,o]=Um(0),[n,i]=Um(!1),a=r(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");hv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===zm&&c()},yv):s(l),document.addEventListener("visibilitychange",()=>a(l)),()=>{document.removeEventListener("visibilitychange",()=>a(l)),l&&clearInterval(l)}},[e,t]);let s=r(l=>{l&&clearInterval(l),o(0)},"clearTimeout"),c=r(()=>{t?.(),o(0),i(!0)},"handleRefreshClick");return Tl.createElement(Ft,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},Tl.createElement(Wm,{onTransitionEnd:()=>i(!1),isRefetched:n},Tl.createElement(gv,{size:22,color:t?"black":"gray",progress:e/zm*Sv})))}r(Qi,"RefreshButton");function Vo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:i=[],container:a}=t,{config:{features:s}}=S(),c=nt("notification",s)||i.includes("notifications");return _e.createElement(_e.Fragment,null,!i.includes("refresh")&&_e.createElement(qi,{container:a||W(),side:"top",content:Hi.t("Refresh")},_e.createElement(Qi,{onClick:e})),!c&&_e.createElement(Cv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(Sl,null)},_e.createElement("div",null,_e.createElement(qi,{container:W(),side:"top",content:Hi.t("Notifications")},_e.createElement(Ft,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(Tv,{size:18,color:"black"}),_e.createElement(Om,null))))),!i.includes("settings")&&_e.createElement(qi,{container:W(),side:"top",content:Hi.t("Settings")},_e.createElement(Ft,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},_e.createElement(kv,{size:18,color:"black"}))),!i.includes("history")&&_e.createElement(qi,{container:W(),side:"top",content:Hi.t("History")},_e.createElement(Ft,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(wv,{size:18,color:"black"}),_e.createElement($m,null))))}r(Vo,"HeaderButtons");import{i18n as Cl}from"@lingui/core";import{Divider as Hm,MessageBox as bv,RefreshIcon as xv}from"@rango-dev/ui";import In from"react";import{Button as vv,styled as Ev}from"@rango-dev/ui";var Qm=Ev(vv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function kl(t){let{open:e,onClose:o}=t;return In.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},In.createElement(bv,{title:Cl.t("Something went wrong"),type:"error",description:Cl.t("Something went wrong. Please refresh the app.")},In.createElement(Hm,{size:30}),In.createElement(Qm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},In.createElement(xv,{size:20,color:"primary"}),In.createElement(Hm,{size:4,direction:"horizontal"}),Cl.t("Refresh"))))}r(kl,"RefreshModal");var qm="700px",Gm="425px",Vm="550px",Km="640px",jm="800px";function wl(t){let e=t.target;if(e){let o=e.scrollTop,n=W();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}r(wl,"onScrollContentAttachStatusToContainer");import{css as Iv,styled as Gi}from"@rango-dev/ui";var Vi=Iv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Xm=Gi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:qm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Gm,[`@media screen and (min-height: ${jm})`]:{minHeight:Vm}}},showBanner:{true:{overflow:"visible"}}}}),Ym=Gi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Zm=Gi("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"}}}),Jm=Gi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=nl(),{children:n,header:i,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=S(),[u,d]=tf(!1),{config:{features:m,theme:h}}=S(),{watermark:g}=re(),f=g==="FULL",{activeTheme:T}=ho(h||{}),[C,y]=tf(!1),k=nt("connectWalletButton",m),{isActiveTab:w,tabManagerInitiated:v,showActivateTabModal:N,setShowActivateTabModal:I,activateCurrentTab:b,setShowCompactTokenSelector:x}=re(),E=Ve(),{manager:L}=Av(),O=Et(L).map(({swap:Y})=>Y).some(Y=>Y.status==="running"),q=r(()=>b(Fo.forceClaim,O),"onActivateTab"),j=r(()=>{i.onWallet?.()},"onConnectWallet"),ee=typeof i.hasBackButton>"u"||i.hasBackButton,P=ef(null),Z=ef(null);return Ki(()=>{let Y=(p?.swapBoxBanner?.routes?.length??0)===0,ue=!!p?.swapBoxBanner?.routes?.some(Ee=>location.pathname.endsWith(Ee));y(!!p?.swapBoxBanner&&(Y||ue))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),Ki(()=>(Fi()&&Z.current&&e(Z.current),()=>{o()}),[]),Ki(()=>(P.current?.addEventListener("scroll",wl),()=>{P.current?.removeEventListener("scroll",wl)}),[]),Ki(()=>{d(c==="failed")},[c]),Pv(()=>{if(!Z.current)return;let Y=new ResizeObserver(ue=>{for(let Ee of ue)Ee.contentRect&&x(Ee.contentRect.height<parseInt(Km))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Le.createElement(Xm,{height:s,id:wt.SWAP_BOX_ID,className:`${T()} ${Vi()}`,ref:Z,showBanner:C},Le.createElement(Wv,{prefix:ee?Le.createElement(fl,{onClick:()=>{E(),i.onBack?.()}}):null,title:i.title,suffix:Le.createElement(Le.Fragment,null,i.suffix,i.onWallet&&!k&&Le.createElement(yl,{container:W(),onClick:j,isConnected:!!l?.length}),i.onCancel&&Le.createElement(hl,{onClick:i.onCancel}))}),Le.createElement(Ym,{ref:P},n),Le.createElement(ml,{open:N,onClose:()=>I(!1),onConfirm:q}),Le.createElement(Zm,null,Le.createElement("div",{className:"footer__content"},v&&!w&&Le.createElement("div",{className:"footer__alert"},Le.createElement(ul,{onActivateTab:q}),Le.createElement(Rm,{size:10})),a),Le.createElement(Rm,{size:12}),Le.createElement("div",{className:`footer__logo ${f?"logo__show":"logo__hidden"}`},Le.createElement(Nv,null))),C&&Le.createElement(Jm,null,p?.swapBoxBanner?.element),Le.createElement(kl,{open:u,onClose:()=>d(!1)}))}r(se,"Layout");import{styled as Lv}from"@rango-dev/ui";var of="$20 $20 $10 $20",vl=Lv("div",{padding:of,overflowY:"auto",flexGrow:1});import{styled as Bv}from"@rango-dev/ui";var ce=Bv("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 So}from"@lingui/core";import{useState as El}from"react";function nf(){let[t,e]=El(!1),[o,n]=El(null),[i,a]=El(null),{findToken:s}=S(),c=S().customTokens(),l=r(()=>{a(null),e(!1),n(null)},"resetState");function p(d,m){switch(d){case"duplicated":return{type:d,title:So.t("Duplicate Token"),message:So.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:So.t("Token Already Exists"),message:So.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:d,title:So.t("Token Not Found"),message:So.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:m}})};case"network-error":return{type:d,title:So.t("Network error"),message:So.t("An error occurred while retrieving token data.")}}}return r(p,"produceErrorMessage"),{fetchCustomToken:r(async({blockchain:d,tokenAddress:m})=>{e(!0);try{if(c.some(C=>C.address?.toLowerCase()===m.toLowerCase())){let C=p("duplicated");n(C);return}let g=await dt().getCustomToken({blockchain:d,address:m});if(!g||!g.token||g.error){let C=p("not-found",d);n(C);return}let f=g.token;if(s({blockchain:f.blockchain,address:f.address,symbol:f.symbol})){let C=p("token-exist");n(C);return}return a({...f,warning:!0})}catch(h){if(h.code==="ERR_BAD_REQUEST"){let g=p("not-found",d);n(g);return}n(p("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:i,loading:t,error:o,resetState:l}}r(nf,"useFetchCustomToken");var qv=Fv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${Dv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function rf(){let t=Qv(),[e]=Hv(),o=Ve(),n=S().blockchains(),i=e.get("blockchain")||"",a=Lo(i,n),[s,c]=zv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:m}=nf(),h=!!a&&Bo(a,s),g=!a||!s||!h,f=r(()=>{a&&l({blockchain:i,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:An.t("Add Custom Token")}},Ke.createElement(ce,null,Ke.createElement(qv,null,Ke.createElement("div",null,Ke.createElement(Zs,{onClick:()=>t($.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:An.t("Select chain"),placeholder:An.t("Select chain")}),Ke.createElement(bl,{size:"24"}),Ke.createElement(Uv,{size:"large",variant:"label"},An.t("Enter Address")),Ke.createElement(bl,{size:10}),Ke.createElement(Ov,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:An.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement($v,{color:"success",size:12}),onChange:T=>c(T.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(bl,{size:4}),Ke.createElement(_v,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement(Mv,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:f},An.t("Import"))),Ke.createElement(gr,{token:p,blockchain:a??void 0,address:s,error:d??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{d?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:m,onExitImportModal:m})))}r(rf,"AddCustomTokenPage");import{i18n as rc}from"@lingui/core";import{useManager as Ab}from"@rango-dev/queue-manager-react";import{Alert as Nb,Button as Wb,css as ac,Divider as ic,IconButton as Xg,styled as Pb,Typography as Lb,WalletIcon as Bb}from"@rango-dev/ui";import $e,{useEffect as ka,useLayoutEffect as _b,useRef as Mb,useState as xr}from"react";import{useNavigate as Db}from"react-router-dom";import{i18n as jo}from"@lingui/core";import{Alert as cE,BalanceErrors as pE,Button as Nf,ChevronLeftIcon as uE,Divider as Pl,MessageBox as dE,Typography as Ll}from"@rango-dev/ui";import ae,{useCallback as mE,useEffect as Ri,useMemo as fE,useState as Wn}from"react";import{useNavigate as gE}from"react-router-dom";import{i18n as Nl}from"@lingui/core";import{Alert as Xv,ChevronDownIcon as Yv,CloseIcon as Zv,Divider as df,IconButton as mf,PasteIcon as Jv,Typography as Rv,WalletIcon as eE}from"@rango-dev/ui";import Me,{useEffect as ff,useRef as gf}from"react";import Zi,{useRef as Kv}from"react";import*as Nn from"@radix-ui/react-collapsible";import{keyframes as af,styled as ji}from"@rango-dev/ui";var xl=300,Gv=af({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Vv=af({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),sf=ji(Nn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Il=ji(Nn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Xi=ji(Nn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Gv} ${xl}ms ease-out`},false:{animation:`${Vv} ${xl}ms ease-out`}}}}),Yi=ji("div",{transition:`all ${xl}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Ji(t){let{open:e,hasSelected:o,onOpenChange:n,children:i,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Kv(null);return Zi.createElement(sf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&Zi.createElement(Il,{className:"collapsible_trigger",onClick:a},s),Zi.createElement(Xi,{className:"collapsible_content",open:e},i),c==="bottom"&&Zi.createElement(Il,{className:"collapsible_trigger",onClick:a},s))}r(Ji,"CustomCollapsible");import{darkTheme as lf,styled as Al,TextField as jv}from"@rango-dev/ui";var cf=Al("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),pf=Al(jv,{backgroundColor:"$neutral100"}),uf=Al("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${lf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${lf} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function hf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:i,setCustomDestination:a}=z()(),{config:s}=S(),c=S().blockchains(),l=zp(e.name,c),p=gf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!i&&e&&!Bo(e,i),g=r(()=>{a("")},"handleClear"),f=r(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let k=await navigator.clipboard.readText();a(k),p?.current?.focus()}},"handlePaste"),T=r(()=>i?Me.createElement(mf,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(Zv,{size:12,color:"gray"})):d?null:Me.createElement(mf,{id:"widget-custom-destination-paste-icon-btn",onClick:f,variant:"ghost"},Me.createElement(Jv,{size:16})),"renderSuffix");ff(()=>{!!u&&i===null&&(a(u),o(!0))},[u]);let C=gf(null);return ff(()=>{if(!i){C.current=null;return}n&&Bo(e,i)&&C.current!==i&&(C.current=i,oe({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[i,n,e]),Me.createElement(cf,null,Me.createElement(Ji,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(uf,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(eE,{size:18,color:"info"}),Me.createElement(df,{size:4,direction:"horizontal"}),Me.createElement(Rv,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Nl.t("Send to a different address"))),Me.createElement(Yi,{orientation:n?"up":"down"},Me.createElement(Yv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(pf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:i?"8px":"5px"},autoFocus:!i,placeholder:Nl.t("Enter {blockchainName} address",{blockchainName:l}),value:i||"",suffix:T(),onChange:y=>{let k=y.target.value;a(k)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(df,{size:4}),Me.createElement(Xv,{variant:"alarm",type:"error",title:Nl.t({values:{destination:i},id:"Address {destination} doesn't match the blockchain address pattern."})})))}r(hf,"CustomDestination");import{css as tE,IconButton as oE,SelectableWalletButton as nE,styled as To}from"@rango-dev/ui";var yf=To("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Sf=To("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Tf=To(nE,{justifyContent:"center"}),Cf=To("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),kf=To(oE,{position:"absolute",left:"$20"}),wf=To("div",{paddingTop:"$20"}),vf=tE({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Ef=To("div",{display:"flex"}),bf=To("div",{overflow:"visible",width:"100%"});import{i18n as xf}from"@lingui/core";import{warn as rE}from"@rango-dev/logging-core";import{makeInfo as iE,SelectableWallet as aE,Typography as If,WalletState as hr}from"@rango-dev/ui";import Ko,{useEffect as sE,useState as Af}from"react";var lE=7;function Wl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:i,limit:a,onShowMore:s}=t,c=re.use.isActiveTab(),{connectedWallets:l}=S(),[p,u]=Af(),{list:d}=xt({chain:e}),[m,h]=Af(d),g=d.length,f=a&&g-a>0;return sE(()=>{h(T=>{let C=d.findIndex(y=>n(y.type,e));return f&&C>1?[d[C]].concat(d.filter((y,k)=>k!==C)):T.map(y=>d.find(k=>k.type===y.type)??y)})},[JSON.stringify(d)]),Ko.createElement(Ko.Fragment,null,m.slice(0,a).map(T=>{let C=xu({connectedWallets:l,walletType:T.type,chain:e}),y=T.state===hr.CONNECTED||T.state===hr.PARTIALLY_CONNECTED,k=C?uo(C,lE):"",w=y&&!!T.needsNamespace&&!k,v=r(async()=>{T.state===hr.DISCONNECTED||w?u(T):i({walletType:T.type,chain:e,address:C??""})},"onSelectableWalletClick"),N=iE(T.state),I=r(()=>w?xf.t("Chain not connected"):k||N.description,"getWalletDescription"),b=r(()=>T.state===hr.CONNECTED||T.state===hr.PARTIALLY_CONNECTED?w?"neutral600":"neutral700":N.color,"getWalletDescriptionColor");return Ko.createElement(aE,{key:T.type,id:"widget-wallets-list-selectable-wallet-btn",description:I(),descriptionColor:b(),onClick:v,selected:n(T.type,e),disabled:!c,...T})}),Ko.createElement(pr,{id:"widget-wallets-list-stateful-connect-modal",wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{u(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):rE(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),f&&Ko.createElement(Tf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Ko.createElement(If,{variant:"label",size:"medium"},xf.t("Show more wallets"),Ko.createElement(If,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}r(Wl,"WalletList");var hE=2;function Wf(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:i,loading:a}=t,s=gE(),c=S().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:m,setCustomDestination:h}=z()(),{config:g,connectedWallets:f,setWalletsAsSelected:T}=S(),[C,y]=Wn(""),[k,w]=Wn([]),[v,N]=Wn(""),[I,b]=Wn(!!m),x=fE(()=>Do({filter:"all",quote:l}),[l]),E=Do({filter:"required",quote:l}),L=c.find(B=>B.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),A=r(B=>E.includes(B),"isWalletRequiredFor"),O=mE(()=>f.filter(B=>B.selected&&x.includes(B.chain)),[f,x]),[q,j]=Wn(O()),[ee,P]=Wn([]),Z=r((B,V)=>P(Q=>Q.concat({blockchain:B,walletType:V})),"addNextSelectedWallets"),Y=k.length>0,ue=r((B,V)=>!!q.find(Q=>Q.walletType===B&&Q.chain===V&&Q.selected&&(A(V)||!A(V)&&!m)),"isSelected"),Ee=r((B,V,Q)=>{let X=!1;return B.map(G=>{if(G.chain===V){let J=G.selected;return!X&&Q?(X=!0,J=!0):Q||(J=!1),{...G,selected:J}}return G})},"updateSelectableWallets"),Vt=r(B=>{b(B),B?A(L?.name??"")||j(V=>Ee(V,L?.name||"",!1)):(h(""),j(V=>Ee(V,L?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),be=r(B=>{if(C&&y(""),ue(B.walletType,B.chain))return;let Q=f.find(X=>X.walletType===B.walletType&&X.chain===B.chain);Q&&(n(),B.chain===L?.name&&I&&!A(L.name)&&(b(!1),h(null)),j(X=>X.filter(G=>G.chain!==B.chain).concat({...Q,selected:!0})))},"onChange"),He=r(()=>{let B=q.filter(V=>V.selected);oe({type:"swapWalletsConfirmed",payload:{routeId:l?.requestId??""}}),T(B),p(B),d(!0),o()},"onConfirmBalance"),Xe=r(async()=>{w([]),N("");let B=await i?.({selectedWallets:q.filter(Q=>Q.selected),customDestination:m}),V=B.warnings;V?.balance?.messages&&w(V.balance.messages),B.error&&N(_p(B.error)),!B.error&&!V?.balance?.messages.length?He():w(V?.balance?.messages??[])},"onConfirmWallets");Ri(()=>{j(B=>{let V=[];return B.forEach(Q=>{!f.some(G=>G.chain===Q.chain&&G.walletType===Q.walletType&&G.address===Q.address)||V.push(Q)}),V=V.concat(f.filter(Q=>!!!V.find(G=>G.chain===Q.chain)&&Q.selected&&x.includes(Q.chain))),V})},[f,x]),Ri(()=>{let B=[];ee.length>0&&(ee.forEach(V=>{let Q=f.find(X=>X.chain===V.blockchain&&X.walletType===V.walletType);Q?be(Q):B.push(V)}),P(B))},[f,ee]);let St=l?.requestId??"";Ri(()=>{if(!e)return;let B=E.filter(V=>!f.some(Q=>Q.chain===V));oe({type:"swapWalletsModalShown",payload:{chainsRequired:E.length,chainsPending:B.length}})},[e]),Ri(()=>{Y&&oe({type:"gasWarningShown",payload:{routeId:St}})},[Y,St]);let ct=document.getElementById(wt.SWAP_BOX_ID);return ae.createElement(ie,{id:"widget-confirm-wallets-modal",open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!C,container:ct,...!C&&{styles:{container:{height:"100%"}},footer:ae.createElement(Ef,null,ae.createElement(Nf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Zd(a,I,m,l,q,L),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},jo.t("Confirm")))},...C&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(Cf,null,ae.createElement(kf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(uE,{size:16})),ae.createElement(Ll,{variant:"headline",size:"small"},jo.t({id:"Your {blockchainName} wallets",values:{blockchainName:Ct(C,c)}})))},anchor:"center"},ae.createElement(ie,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:Y,onClose:w.bind(null,[]),container:ct},ae.createElement(dE,{title:jo.t("Insufficient account balance"),type:"error",description:ae.createElement(pE,{messages:k??[]})},ae.createElement(Nf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{oe({type:"gasWarningBypassed",payload:{routeId:St}}),He()}},jo.t("Proceed anyway")))),C&&ae.createElement(wf,null,ae.createElement("div",{className:vf()},ae.createElement(Wl,{chain:C,quoteChains:x,isSelected:ue,selectWallet:be,onShowMore:()=>y(C),onConnect:B=>{Z(C,B)}}))),!C&&ae.createElement(ae.Fragment,null,v&&ae.createElement(ae.Fragment,null,ae.createElement(cE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:jo.t(v)}),ae.createElement(Pl,{size:12})),ae.createElement(bf,null,x.map((B,V)=>{let Q=c.find(U=>U.name===B),X=`wallet-${V}`,G=V===x.length-1,J=G&&L&&g?.customDestination!==!1;return ae.createElement("div",{key:X},ae.createElement(yf,null,ae.createElement(Ll,{variant:"title",size:"xmedium"},jo.t({id:"Your {blockchainName} wallets",values:{blockchainName:Q?.shortName}})),ae.createElement(Ll,{variant:"label",color:"$neutral700",size:"medium"},jo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:Q?.shortName}}))),ae.createElement(Pl,{size:24}),ae.createElement(Sf,null,ae.createElement(Wl,{chain:B,quoteChains:x,isSelected:ue,selectWallet:be,limit:hE,onShowMore:()=>y(Q?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(Pl,{size:32}),J&&ae.createElement(hf,{blockchain:L,open:I,handleOpenChange:Vt}))}))))}r(Wf,"ConfirmWalletsModal");import{i18n as QE}from"@lingui/core";import{Alert as HE,Button as qE,Divider as Yf,InfoIcon as GE}from"@rango-dev/ui";import Ue from"react";import{Alert as TE,Button as CE,Divider as Ml,NoRouteIcon as kE,RefreshIcon as wE,Typography as $f}from"@rango-dev/ui";import mt from"react";import{i18n as Pf}from"@lingui/core";var yE=24,SE=60;function Lf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:te().genericServerError,action:{onClick:n,title:Pf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:te().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Pf.t("Reset")}},description:te().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:te().noResultError.description}}r(Lf,"makeInfo");var Bl=(o=>(o[o.small=yE]="small",o[o.large=SE]="large",o))(Bl||{}),_l=(o=>(o.small="small",o.large="medium",o))(_l||{});import{styled as ea}from"@rango-dev/ui";var Bf=ea("div",{display:"flex",flexDirection:"column",alignItems:"center"}),_f=ea("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Mf=ea("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Df=ea("div",{padding:"$6 $0"});function yr(t){let{fetch:e,error:o,size:n="small",skipAlerts:i}=t,a=S().getDisabledLiquiditySources(),s=S().toggleAllLiquiditySources,c=S().swappers(),l=Lf(o,a,()=>s(c,!0),e);return i&&(l.alert=null),mt.createElement(Bf,{id:"widget-no-result-container"},mt.createElement(kE,{size:Bl[n],color:"gray"}),mt.createElement(Ml,{size:4}),mt.createElement($f,{variant:"title",size:_l[n]},te().noResultError.title),n==="large"&&mt.createElement(Ml,{size:4}),!!l.description&&mt.createElement(_f,{size:n},mt.createElement($f,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement(Ml,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Mf,{size:n},mt.createElement(TE,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&mt.createElement(CE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement(Df,null,mt.createElement(wE,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}r(yr,"NoResult");import{i18n as Sr}from"@lingui/core";import{Button as WE,Divider as PE,MessageBox as LE,Typography as BE,WarningIcon as _E}from"@rango-dev/ui";import Rt from"react";import{InfoIcon as xE,Tooltip as IE,Typography as AE}from"@rango-dev/ui";import Pn from"react";import{Button as vE,darkTheme as EE,styled as Xo,Typography as bE}from"@rango-dev/ui";var Ff=Xo("div",{width:"100%"}),Dl=Xo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Of=Xo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${EE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Uf=Xo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),zf=Xo(bE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Qf=Xo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),Hf=Xo(vE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var NE=35;function qf(t){let{title:e,value:o,valueColor:n}=t,i=W();return Pn.createElement(Of,null,Pn.createElement(AE,{size:"medium",variant:"label",className:"_title"},e),Pn.createElement(Uf,null,Pn.createElement(zf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>NE&&Pn.createElement(IE,{content:o,container:i},Pn.createElement(xE,{size:12,color:"gray"}))))}r(qf,"QuoteErrorsModalItem");function Gf(t){let{open:e,onClose:o,onConfirm:n,warning:i,confirmationDisabled:a}=t,s=i.warningLevel==="high"?"error":"warning",c=[{title:Sr.t("Swapping"),value:M(i.inputUsdValue)},{title:Sr.t("Gas cost"),value:M(i.totalFee,2,2)},{title:Sr.t("Receiving"),value:M(i.outputUsdValue)},{title:Sr.t("Price impact"),value:M(i.priceImpact,2,2),valueColor:`${s}500`}];return Rt.createElement(ie,{id:"widget-high-value-loss-warning-modal",footer:Rt.createElement(WE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Rt.createElement(_E,null),fullWidth:!0,disabled:a,onClick:n},te().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Rt.createElement(LE,{type:s,title:te().highValueLossError.impactTitle,description:te().highValueLossError.description}),Rt.createElement(Dl,null,Rt.createElement(PE,{size:"4"}),Rt.createElement(BE,{size:"small",variant:"title"},Sr.t("Details")),Rt.createElement(Dl,null,c.map((l,p)=>Rt.createElement(qf,{key:p,...l})))))}r(Gf,"HighValueLossWarningModal");import{i18n as Ln}from"@lingui/core";function Vf(t,e){let o={alertType:"warning",title:"",action:null,actionButtonTitle:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=Ln.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Ln.t("Increase")),o;if(t){switch(t.type){case 0:{Jt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=te().highValueLossError.title;break}case 4:{o.title=Ln.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=te().unknownPriceError.title;break}case 2:{o.title=Ln.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Ln.t("Increase");break}case 3:{o.title=Ln.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}r(Vf,"makeAlerts");function Kf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}r(Kf,"getRequiredSlippage");import{i18n as Bn}from"@lingui/core";import{Button as ME,Divider as $l,MessageBox as DE,WarningIcon as $E}from"@rango-dev/ui";import wo from"react";import{useNavigate as FE}from"react-router-dom";function jf(t){let{open:e,onClose:o,onConfirm:n,warning:i,confirmationDisabled:a}=t,s=FE();return wo.createElement(ie,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},wo.createElement(DE,{type:"warning",title:i.type===3?Bn.t("High slippage"):Bn.t("Low slippage"),description:i.type===3?Bn.t("Caution, your slippage is high. Your trade may be front run."):Bn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:i.minRequiredSlippage}})},wo.createElement($l,{size:18}),wo.createElement($l,{size:32}),wo.createElement(Hf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},wo.createElement($E,{color:"white",size:16}),Bn.t("Swap anyway")),wo.createElement($l,{size:10}),wo.createElement(ME,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Bn.t("Change Slippage"))))}r(jf,"SlippageWarningModal");import{Button as OE,MessageBox as UE,WarningIcon as zE}from"@rango-dev/ui";import ta from"react";function Xf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:i}=t;return ta.createElement(ie,{id:"widget-unknown-price-warning-modal",footer:ta.createElement(OE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:ta.createElement(zE,null),fullWidth:!0,disabled:i,onClick:n},te().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},ta.createElement(UE,{type:"warning",title:te().unknownPriceError.impactTitle,description:te().unknownPriceError.description}))}r(Xf,"UnknownPriceWarningModal");function Tr(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:i,confirmationDisabled:a,skipAlerts:s,refetchQuote:c,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:u,onChangeSettings:d,onChangeSlippage:m}=t,h={confirmationDisabled:a,open:i,onClose:p,onConfirm:u},g=o?.type===0||o?.type===1,f=Vf(e,o?.type===3||o?.type===4?o:null);f&&!n&&(f.action=null);let T=!!f&&!s,C=r(y=>{if(y==="change-slippage"){let k=o?.type===3||o?.type===4?o:null,w=Kf(e,k);m?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,g&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Yf,{size:10}),Ue.createElement(yr,{skipAlerts:s,error:o,fetch:c})),T&&Ue.createElement(Ff,null,Ue.createElement(Yf,{size:10}),Ue.createElement(HE,{id:"widget-quote-warning-and-errors-alert",title:f.title,type:f.alertType,variant:"alarm",...f.action==="show-info"&&{action:Ue.createElement(Qf,{onClick:l},Ue.createElement(GE,{size:12,color:"gray"}))},...(f.action==="change-settings"||f.action==="change-slippage")&&{action:Ue.createElement(qE,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:f.alertType,onClick:()=>C(f.action)},f.actionButtonTitle||QE.t("Change"))}})),e&&Ue.createElement(Ue.Fragment,null,e.type===0&&Ue.createElement(Gf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(jf,{...h,warning:e}),e.type===1&&Ue.createElement(Xf,{...h,warning:e})))}r(Tr,"QuoteWarningsAndErrors");import kb from"bignumber.js";import ya from"react";import{i18n as Yo}from"@lingui/core";import{Alert as cb,CampaignQuoteTag as pb,Divider as Mn,FullExpandedQuote as ub,InfoIcon as jl,NumericTooltip as Xl,QuoteTag as db,StepDetails as mb,TokenAmount as fb,Typography as Dn,useIsTruncated as Yl}from"@rango-dev/ui";import Zl from"bignumber.js";import F,{useRef as fa,useState as gb}from"react";import{styled as Fl}from"@rango-dev/ui";var Ol=Fl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Zf=Fl("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),Jf=Fl("div",{width:"100%",display:"flex"});import*as oa from"@radix-ui/react-collapsible";import{Button as VE,css as na,darkTheme as De,Image as Rf,styled as je,Typography as Ul}from"@rango-dev/ui";var KE=300,eg=je(oa.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),tg=na({padding:"$10 $15"}),og=je(VE,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${De} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${De} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${De} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),ng=je("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",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${De} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}}}}]}),rg=na({width:"100%",padding:"$15 $15 $10 $15"}),ig=na({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),_n=na({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),ag=je(oa.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:{[`& ${Rf}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Rf}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),sg=je("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"}}}}),lg=je(Xi,{width:"100%",background:"inherit"}),zl=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${KE}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),dH=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),cg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),pg=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),Ql=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"$30"}),Hl=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,flex:"0 1 auto"}),ql=je("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"}}}}),ug=je("div",{display:"flex"}),ra=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),dg=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ot}from"@lingui/core";import{ChevronDownIcon as XE,CloseIcon as YE,Divider as sa,IconButton as ZE,NumericTooltip as JE,QuoteCost as RE,Typography as Nt}from"@rango-dev/ui";import eb from"bignumber.js";import R,{useState as hg}from"react";import{css as jE,styled as ia}from"@rango-dev/ui";var aa=ia("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Gl=ia("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),mg=ia("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),fg=ia("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),gg=jE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var tb=r(t=>t.fee.isZero()?null:R.createElement(aa,null,R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},t.label),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(t.fee,4,4))),"NonPayableFee");function Vl(t){let[e,o]=hg(!1),[n,i]=hg(!1),{steps:a,quote:s,time:c,feeWarning:l,timeWarning:p,showModalFee:u,fullExpandedMode:d=!1}=t,m=s?.swaps??[],h=d?Mo():W(),g=Hd(m),f=Object.values(g.payable).reduce((C,y)=>C.plus(qs(y)),new eb(0)),T=M(f,2,2);return R.createElement(R.Fragment,null,R.createElement(RE,{onClickFee:u?C=>{C.stopPropagation(),!e&&s&&oe({type:"routeFeeViewed",payload:{routeId:s.requestId}}),o(!e)}:void 0,fee:T,feeWarning:l,timeWarning:p,time:c,steps:a,tooltipGas:u?Ot.t("View more info"):void 0,tooltipContainer:h}),R.createElement(ie,{id:"widget-quote-cost-explanation-modal",container:h,open:e,anchor:d?"center":"bottom",styles:{container:{maxWidth:d?"484px":"unset"}},header:R.createElement(fg,{style:{textAlign:d?"left":"center"}},R.createElement(Nt,{variant:"title",size:"medium"},Ot.t("Gas & Fee Explanation")),R.createElement(ZE,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(YE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(mg,null,R.createElement(Nt,{variant:"title",size:"small"},Ot.t("Details")),R.createElement(sa,{size:10}),Object.entries(g.payable).flatMap(([C,y])=>y.map((k,w)=>{let v=`payable-fee-${w}`,N=Hs(k);return R.createElement(aa,{key:v},R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},Fs(C,Ot.t)),R.createElement(JE,{content:k.amount,container:h},R.createElement(Nt,{variant:"label",size:"medium"},M(k.amount,2,2),k.asset.symbol," ($",M(N,4,4),")")))})),R.createElement(aa,{className:"total_payable_fee"},R.createElement(Nt,{variant:"label",size:"medium"},Ot.t("Total Payable Fee")),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(f,4,4))),R.createElement(Gl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Ji,{triggerAnchor:"bottom",onClickTrigger:()=>i(C=>!C),trigger:R.createElement("div",{className:gg()},R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},n?Ot.t("Hide non-payable fees"):Ot.t("Show non-payable fees")),R.createElement(sa,{size:4,direction:"horizontal"}),R.createElement(Yi,{orientation:n?"up":"down"},R.createElement(XE,{size:12,color:"gray"}))),open:n},R.createElement(Nt,{size:"small",variant:"title"},Ot.t("Description")),R.createElement(sa,{size:4}),R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},Ot.t(`The following fees are considered in the transaction output and
|
|
3
|
-
you won\u2019t need to pay extra gas for them.`)),R.createElement(sa,{size:10}),Object.entries(g.nonePayable).map(([C,y],k)=>{let w=qs(y),v=Fs(C,Ot.t),N=`non-payable-fee-${k}`;return R.createElement(tb,{key:N,fee:w,label:v})}),R.createElement(Gl,null)))))}r(Vl,"QuoteCostDetails");import{i18n as Tg}from"@lingui/core";import{TokenAmount as Cg}from"@rango-dev/ui";import la from"react";import{css as ob,styled as nb}from"@rango-dev/ui";var yg=nb("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Sg=ob({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function Cr(t){let{from:e,to:o,percentageChange:n,warningLevel:i}=t;return la.createElement(yg,null,la.createElement(Cg,{direction:"horizontal",label:Tg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:W(),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}}),la.createElement("div",{className:Sg()}),la.createElement(Cg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:Tg.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:i}))}r(Cr,"QuoteSummary");import{i18n as bg}from"@lingui/core";import{ChevronDownIcon as ab,ChevronRightIcon as sb,Divider as Kl,Image as lb,Tooltip as ma,Typography as pa}from"@rango-dev/ui";import H from"react";import{useLayoutEffect as rb,useState as kr}from"react";var kg=480,wg=768,vg=1024,Eg=1200,ib=r(()=>{let[t,e]=kr(!1),[o,n]=kr(!1),[i,a]=kr(!1),[s,c]=kr(!1),[l,p]=kr(!1),u=r(()=>{e(window.innerWidth<=kg),n(window.innerWidth>kg&&window.innerWidth<=wg),a(window.innerWidth>wg&&window.innerWidth<=vg),c(window.innerWidth>vg&&window.innerWidth<=Eg),p(window.innerWidth>Eg)},"handleResize");return rb(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:i,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),ca=ib;var ua=4,da=6,wr=r(t=>{let{content:e,src:o,className:n,open:i,state:a,container:s}=t,c=s||W();return H.createElement(ma,{container:c,side:"bottom",sideOffset:4,open:i,content:e},H.createElement(sg,{className:n,state:a},H.createElement(lb,{src:o,size:16})))},"ImageComponent");function xg(t){let{quoteRef:e,selected:o,setExpanded:n,steps:i,expanded:a,type:s,container:c}=t,l=c||W(),p=i.length,u=Bd(i),{isTablet:d,isMobile:m}=ca();return H.createElement(ag,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},H.createElement("div",{className:_n()},H.createElement(pa,{variant:"body",size:"xsmall"},bg.t("Via:")),H.createElement(Kl,{direction:"horizontal",size:4}),i.map((h,g)=>{let f=`item-${g}`,T=H.createElement(zl,null,H.createElement(sb,{size:12,color:"black"}));return m||d?H.createElement(H.Fragment,{key:f},H.createElement(wr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&H.createElement(H.Fragment,null,T)):H.createElement(H.Fragment,{key:f},p<=ua||p>ua&&g<ua-1?H.createElement(H.Fragment,null,H.createElement(wr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&H.createElement(H.Fragment,null,T)):g===ua-1&&H.createElement(ma,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:_n()},T,i.map((C,y)=>{let k=`image-${y}`;return y>=g&&H.createElement(H.Fragment,{key:k},H.createElement(wr,{content:C.swapper.displayName,src:C.swapper.image??"",state:C.state,open:!1}),y!==p-1&&H.createElement(H.Fragment,null,T))}))},H.createElement(ql,{state:i.find((C,y)=>y>=g&&(C.state==="error"||C.state==="warning"))?.state},H.createElement(pa,{size:"xsmall",variant:"body"},"+",p-g))))})),H.createElement("div",{className:_n()},H.createElement("div",{className:"blockchains_section"},H.createElement("div",{className:_n()},H.createElement(pa,{variant:"body",size:"xsmall"},bg.t("Chains:")),H.createElement(Kl,{direction:"horizontal",size:4}),u.map((h,g)=>H.createElement(H.Fragment,{key:h.displayName},u.length<=da||u.length>da&&g<da-1?H.createElement(ma,{container:l,side:"bottom",content:h.displayName,sideOffset:4},H.createElement(wr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===da-1&&H.createElement(ma,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:_n()},u.map((f,T)=>T>=g&&H.createElement(wr,{key:f.displayName,content:"",src:f.image??"",open:!1,className:T>g?"blockchainImage":"",container:c})))},H.createElement(ql,{className:"blockchainImage"},H.createElement(pa,{size:"xsmall",variant:"body"},"+",u.length-g))))),H.createElement(Kl,{direction:"horizontal",size:32}))),H.createElement(zl,{orientation:a?"up":"down"},H.createElement(ab,{size:12,color:"black"}))))}r(xg,"QuoteTrigger");function Jl(t){let{quote:e,input:o,output:n,error:i,warning:a,type:s,selected:c=!1,tagHidden:l=!0,showModalFee:p=!0,onClickAllRoutes:u,fullExpandedMode:d=!1,container:m}=t,h=S().blockchains(),{findToken:g}=S(),f=S().swappers(),{customSlippage:T,slippage:C}=S(),y=T||C,[k,w]=gb(t.expanded),v=fa(null),N=M(n.value,6,6),I=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:b}}=S(),x=Zt(o.usdValue,n.usdValue??null),E=M(x,2,2),L=Jt(x??0),A=r((G,J)=>G.map((U,de)=>{let qe,ot=i?.type===3&&i.swap.swapperId===U.swapperId,po=i?.type===4&&!!i.recommendedSlippages?.[de],qn=a?.type===2&&!!a.recommendedSlippages?.[de],Wo=ot||po,ei=qn;Wo?qe="error":ei&&(qe="warning");let an=Wo?Yo.t("Slippage Error"):Yo.t("Slippage Warning");return ot&&(an=Yo.t("Bridge Limit Error")),{swapper:{displayName:Kn(U.swapperId,f)??"",image:U.swapperLogo},from:{token:{displayName:U.from.symbol,image:U.from.logo},chain:{displayName:Ct(U.from.blockchain,h)??"",image:U.from.blockchainLogo},price:{value:de===0&&!J?M(o.value,6,6):M(U.fromAmount,6,6),usdValue:M((U.from.usdPrice??0)*parseFloat(U.fromAmount),4,4),realValue:de===0?o.value:U.fromAmount,realUsdValue:new Zl(U.from.usdPrice??0).multipliedBy(U.fromAmount).toString()}},to:{token:{displayName:U.to.symbol,image:U.to.logo},chain:{displayName:Ct(U.to.blockchain,h)||"",image:U.to.blockchainLogo},price:{value:M(U.toAmount,6,6),usdValue:M((U.to.usdPrice??0)*parseFloat(U.toAmount),4,4),realValue:U.toAmount,realUsdValue:new Zl(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:qe,alerts:Wo||ei?F.createElement(Zf,{dense:d},F.createElement(cb,{variant:"alarm",type:Wo?"error":"warning",title:an,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(Jf,null,ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},i.fromAmountRangeError),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Yo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(po||qn)&&!ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Yo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...i?.type===4&&{minRequiredSlippage:i.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Yo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Yn(U.estimatedTimeInSeconds),fee:M(Qs(U,g),2,2),internalSwaps:U.internalSwaps?A(U.internalSwaps):void 0}}),"getQuoteSteps"),O=A(e?.swaps??[]),q=O.length,j=m||W(),ee=Md(t.quote.tags||[]),P=!!u,Z=pi(e?.swaps),Y=Yn(Z),ue=Bi(e?.swaps??[],g),Ee=M(ue,2,2),Vt=ue.gte(new Zl(bd)),be=Z/Id>=xd,He=fa(null),Xe=Yl(o.value,He),St=fa(null),ct=Yl(n.value,St),B=fa(null),V=Yl(I,B),Q=O[q-1],X=O[0];return!X||!Q?null:d?F.createElement(ub,{selected:c,fee:Ee,time:Y,tooltipContainer:Mo(),steps:O,tags:ee,campaignTag:b?.campaignTag,id:"widget-quote-full-expanded-quote-container",quoteCost:F.createElement(Vl,{quote:e,fullExpandedMode:!0,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:E,warningLevel:L,outputPrice:{value:N,usdValue:I,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(ng,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:rg()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(ug,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&b?.campaignTag?F.createElement(pb,{routeTag:G,...b.campaignTag}):F.createElement(db,{label:G.label,value:G.value}),F.createElement(Mn,{size:4,direction:"horizontal"}))})),F.createElement(ra,null),!P&&F.createElement(Mn,{size:4})):null,F.createElement("div",{id:"portal-root",className:ig()},F.createElement(Vl,{quote:e,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),P&&F.createElement(og,{onClick:G=>{G.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Dn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Yo.t("See All Routes")))),s==="basic"&&F.createElement(pg,null,F.createElement(Hl,{ref:He,size:"small",variant:"body"},o.value),Xe&&F.createElement(Xl,{content:o.value,container:j,open:o.value?void 0:!1},F.createElement(jl,{size:12,color:"gray"})),F.createElement(Ql,{size:"small",variant:"body"},O[0]?.from.token.displayName),F.createElement(Dn,{size:"small",variant:"body"},"="),F.createElement(Hl,{ref:St,size:"small",variant:"body"},n.value),ct&&F.createElement(Xl,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(jl,{size:12,color:"gray"})),F.createElement(Ql,{size:"small",variant:"body"},Q?.to.token.displayName),F.createElement(Mn,{size:2,direction:"horizontal"}),F.createElement(dg,{ref:B,color:"$neutral600",size:"xsmall",variant:"body"},`($${I})`),V&&F.createElement(Xl,{content:n.usdValue,container:j},F.createElement(jl,{size:12,color:"gray"}))),s==="list-item"&&F.createElement(fb,{id:"widget-quote-token-amount-container",tooltipContainer:j,type:"output",direction:"vertical",price:{value:N,usdValue:I,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:Q.to.token.displayName,image:Q.to.token.image},chain:{image:Q.to.chain.image},percentageChange:E,warningLevel:L}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(Cr,{from:X.from,to:Q.to,percentageChange:E,warningLevel:L}),F.createElement(Mn,{size:4}))),F.createElement(eg,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:w},F.createElement(xg,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:k,steps:O}),F.createElement(lg,{open:k},F.createElement(cg,null),F.createElement("div",{className:tg()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(mb,{type:"quote-details",className:"widget-quote-step-details-container",key:U,tooltipContainer:j,step:G,hasSeparator:J!==O.length-1,state:G.state})})))))}r(Jl,"Quote");import{Divider as Tb,Skeleton as Cb}from"@rango-dev/ui";import no from"react";import{darkTheme as hb,styled as ga}from"@rango-dev/ui";var Ig=ga("div",{$$color:"$colors$neutral100",[`.${hb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Ag=ga("div",{paddingTop:"$2"}),Ng=ga("div",{paddingLeft:"$8"}),Wg=ga("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as Ug,Divider as Wt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as yb,styled as oo}from"@rango-dev/ui";var Rl=oo("div",{display:"flex"}),Pg=oo("div",{padding:"$10 $0 $20"}),Lg=oo("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),Bg=oo("div",{display:"flex",justifyContent:"start",alignItems:"center"}),_g=oo("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Mg=oo("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Dg=oo("div",{width:"65%",display:"flex",justifyContent:"start"}),$g=oo("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Fg=oo("div",{padding:"$15 $0 $15 $0"}),Og=yb({display:"flex",justifyContent:"space-between",alignItems:"center"});function vr(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(_g,null,K.createElement(Dg,null,K.createElement(Ug,{loading:!0,size:"medium"}),K.createElement(Wt,{size:8,direction:"horizontal"}),K.createElement($g,null,K.createElement(ft,{height:10,width:60,variant:"rounded"}),K.createElement(Wt,{size:4}),K.createElement(ft,{height:15,variant:"rounded"}))),K.createElement(ft,{height:12,width:64,variant:"rounded"})),i=e==="basic"&&!o;return K.createElement("div",null,!o&&K.createElement(K.Fragment,null,K.createElement(Rl,null,K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"})),K.createElement(ra,null),!i&&K.createElement(Wt,{size:4})),K.createElement("div",{className:Og()},K.createElement(Rl,null,K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"})),i&&K.createElement(ft,{width:85,height:24,variant:"rounded"})),e==="basic"&&K.createElement(Pg,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Lg,null,K.createElement(Bg,null,K.createElement(Ug,{loading:!0,size:"medium"}),K.createElement(Wt,{direction:"horizontal",size:4}),K.createElement(ft,{height:15,width:150,variant:"rounded"})),K.createElement(Wt,{size:10}),K.createElement(ft,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&K.createElement(K.Fragment,null,K.createElement(Wt,{size:4}),K.createElement(Fg,null,n,K.createElement(Mg,null),n),K.createElement(Wt,{size:12})))}r(vr,"QuoteSummarySkeleton");import{ChainToken as Gg,Divider as tc,NextIcon as Sb,Skeleton as ha}from"@rango-dev/ui";import Be from"react";import{styled as Er}from"@rango-dev/ui";var zg=Er("div",{display:"flex",alignItems:"start"}),Qg=Er("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),ec=Er("div",{display:"flex",alignItems:"center",flexGrow:1}),Hg=Er("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),qg=Er("div",{display:"flex",alignItems:"center"});function Ut(t){let{separator:e=!0}=t;return Be.createElement(Be.Fragment,null,Be.createElement(qg,null,Be.createElement(ha,{height:22,width:22,variant:"circular"}),Be.createElement(tc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:15,width:148,variant:"rounded"})),Be.createElement(zg,null,Be.createElement(Wg,{hideSeparator:!e}),Be.createElement(Qg,{extraSpace:e},Be.createElement(ec,null,Be.createElement(Gg,{size:"small",loading:!0}),Be.createElement(tc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:12,variant:"rounded"})),Be.createElement(Hg,null,Be.createElement(Sb,{color:"gray",size:16})),Be.createElement(ec,null,Be.createElement(Gg,{size:"small",loading:!0}),Be.createElement(tc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:12,variant:"rounded"})))))}r(Ut,"StepSkeleton");function br(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return no.createElement(Ig,{expanded:o,rounded:e!=="basic"},no.createElement(vr,{type:e,tagHidden:n}),no.createElement(Ag,null,no.createElement(Cb,{height:15,variant:"rounded"})),o&&no.createElement(Ng,null,no.createElement(Tb,{size:24}),no.createElement(Ut,null),no.createElement(Ut,null),no.createElement(Ut,{separator:!1})))}r(br,"QuoteSkeleton");function Zo(t){let{quote:e,type:o,loading:n,error:i,warning:a,expanded:s=!1,tagHidden:c,onClick:l,showModalFee:p,selected:u,id:d,onClickAllRoutes:m,fullExpandedMode:h=!1,container:g}=t,{inputAmount:f,inputUsdValue:T}=z()(),C=e?.outputAmount?new kb(e?.outputAmount):null,y=e?it(e):null,w=!(i&&(i.type===0||i.type===1))&&e&&!n;return n?ya.createElement(Ol,null,ya.createElement(br,{tagHidden:c,type:o,expanded:s})):w?ya.createElement(Ol,{onClick:()=>l?.(e),id:d},ya.createElement(Jl,{quote:e,error:i,container:g,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:f,usdValue:T?.toString()??""},output:{value:C?.toString()??"",usdValue:y?.toString()??""}})):null}r(Zo,"QuoteInfo");import{warn as bb}from"@rango-dev/logging-core";import{calculatePendingSwap as xb}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Ib}from"react";import{useRef as wb,useState as vb}from"react";var Eb=2e3;function Sa({request:t}){let[e,o]=vb(!1),n=wb(null),i=r(()=>n.current?.abort(),"cancelFetch"),a=r(async c=>(await new Promise(l=>setTimeout(l,Eb)),await s(c,!1)),"retryFetch"),s=r(async(c,l=!1)=>{i(),n.current=new AbortController,o(!0);try{let p=await t(c,{signal:n.current.signal});return n.current=null,p}catch(p){if(l)return await a(c);throw p}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:i}}r(Sa,"useFetch");function Vg(){let{fetch:t,loading:e,cancelFetch:o}=Sa({request:async(n,i)=>await dt().confirmRoute(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(Vg,"useFetchConfirmQuote");function Ta(t){if(!t.swaps)throw new Error(te().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=oc(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}r(Ta,"throwErrorIfResponseIsNotValid");function oc(t){if(Ud(t)){let{swap:n,fromAmountRangeError:i,recommendation:a}=zd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:i}}:null}let o=qd(t);if(o){let n=_i(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}r(oc,"getQuoteError");function Kg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:i,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=En({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=Kd(e,i,n.blockchains);return p.length===0||(c.balance={messages:p}),c}r(Kg,"generateWarnings");function Ca(t){return t?.code==="ERR_CANCELED"?{type:2}:t.cause?t.cause:t?.code==="ERR_BAD_REQUEST"?{type:0,diagnosisMessage:t.response.data.error}:{type:1,diagnosisMessage:t.message}}r(Ca,"handleQuoteErrors");function nc(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:i,selectedQuote:a,customDestination:s,resetAlerts:c}=z()(),{slippage:l,customSlippage:p}=S(),u=S().getDisabledLiquiditySources(),d=S().blockchains(),m=S().tokens(),{findToken:h}=S(),{swapMode:g}=rt(),f=p||l,{fetch:T,cancelFetch:C,loading:y}=Vg();return Ib(()=>C,[]),{loading:y,fetch:r(async w=>{let v=w.selectedWallets,N=w?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let I=v.reduce((x,E)=>(x[E.chain]=E.address,x),{}),b={requestId:a?.requestId||"",selectedWallets:I,destination:N||void 0};try{return await T(b,!0).then(x=>{let{result:E}=x;if(!E)throw new Error(x.error??"Error fetching updated quote");Ta({diagnosisMessages:E.diagnosisMessages,requestId:E.requestId,swaps:E.result?.swaps});let L={outputAmount:E.result?.outputAmount,requestId:E.requestId,resultType:E.result?.resultType,swaps:E.result?.swaps||[],validationStatus:E.validationStatus,requestAmount:E.requestAmount};i(L);let A={slippage:f.toString(),disabledSwappersGroups:u},O=Kg({previousQuote:a??void 0,currentQuote:L,meta:{blockchains:d},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=xb({inputAmount:o.toString(),bestRoute:E,wallets:Vd(v),settings:A,validateBalanceOrFee:!q,meta:{blockchains:d,tokens:m},swapMode:g});return{quote:L,swap:j,error:null,warnings:O}})}catch(x){let E=Ca(x);return E.type!==2&&bb(new Error("confirm swap error"),{tags:{...E,type:Ye[E.type],initialQuote:a,requestBody:b}}),{swap:null,error:E,warnings:null}}},"fetch"),cancelFetch:C}}r(nc,"useConfirmSwap");function jg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}r(jg,"toNumberOrNull");function $n(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=Qo(t),i=it(t);return{routeId:t.requestId,sourceChain:e?.from.blockchain??"",destinationChain:o?.to.blockchain??"",sourceTokenSymbol:e?.from.symbol??"",sourceTokenAddress:e?.from.address??null,destinationTokenSymbol:o?.to.symbol??"",destinationTokenAddress:o?.to.address??null,sourceTokenAmount:jg(t.requestAmount),destinationTokenAmount:jg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:i?i.toNumber():null}}r($n,"buildSwapEstimatePayload");var $b=Pb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Xg}`]:{width:"$48",height:"$48"}}),Fb=ac({flexGrow:1,paddingRight:"$10"}),Ob=ac({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Ub=ac({display:"flex",justifyContent:"space-between",alignItems:"center"});function Yg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:i,quoteWarningsConfirmed:a}=z()(),s=Db(),[c,l]=xr(""),p=!n,[u,d]=xr(!1),[m,h]=xr(!1),{isActiveTab:g}=re(),f=S().getDisabledLiquiditySources(),T=Mb(f),{manager:C}=Ab(),{fetch:y,loading:k,cancelFetch:w}=nc(),[v,N]=xr({swap:null,error:null,warnings:null}),[I,b]=xr(!1),x=r(async({selectedWallets:P,customDestination:Z})=>{let Y=await y?.({selectedWallets:P,customDestination:Z});return N(Y),Y},"onConfirmSwap"),E=r(async()=>{if(v.swap&&n)try{await C?.create("swap",{swapDetails:v.swap},{id:v.swap.requestId});let P=`../${$.swaps}/${v.swap.requestId}`;s(P,{replace:!0}),setTimeout(()=>{e("")},0)}catch(P){l("Error: "+P?.message)}},"addNewSwap"),L=r(async()=>{h(!0),await E(),h(!1)},"onConfirm"),A=r(async()=>{v.warnings?.quote&&Ld(v.warnings.quote)&&!a?b(!0):(t&&oe({type:"swapStarted",payload:{...$n(t),stepCount:t.swaps.length}}),await L())},"onStartConfirmSwap"),O=r(async()=>{N({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:i}).then(P=>{N(P)}).catch(P=>console.error(P))},"onRefresh");ka(()=>{!!T.current.length&&!f.length&&O(),T.current=f},[f.length]),ka(()=>{p&&w()},[p]),ka(()=>{p&&d(p)},[p]),ka(()=>{p||y({selectedWallets:o,customDestination:i}).then(P=>N(P)).catch(P=>console.error(P))},[]),_b(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=v.warnings?.quote??null,j=v.error,ee=[];if(c&&ee.push($e.createElement(Nb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let P=`../${$.settings}`;ee.push($e.createElement(Tr,{warning:q,error:j,couldChangeSettings:!1,refetchQuote:O,skipAlerts:j?.type===4||q?.type===2,showWarningModal:I,confirmationDisabled:!g,onOpenWarningModal:()=>b(!0),onCloseWarningModal:()=>b(!1),onConfirmWarningModal:async()=>{b(!1),await E()},onChangeSettings:()=>s(P)}))}return $e.createElement(se,{header:{title:rc.t("Confirm Swap"),onWallet:()=>{let P=`../${$.wallets}`;s(P)}},footer:$e.createElement($b,null,$e.createElement("div",{className:Fb()},$e.createElement(Wb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||m,disabled:!!v.error||!g,onClick:A},rc.t("Start Swap"))),$e.createElement(Xg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||m,disabled:!g,onClick:d.bind(null,!0)},$e.createElement(Bb,{size:24})))},u&&$e.createElement(Wf,{open:u,onClose:()=>d(!1),onCancel:w,loading:k,onCheckBalance:x}),$e.createElement(ce,null,$e.createElement("div",{className:Ub()},$e.createElement(Lb,{variant:"title",size:"small"},rc.t("You get")),$e.createElement("div",{className:Ob()},$e.createElement(Qi,{onClick:!k&&!u&&!I?O:void 0}))),$e.createElement(ic,{size:"12"}),vm(ee.map((P,Z)=>({element:P,key:`alert-${Z}`})),$e.createElement(ic,{size:10})),ee.length>0?$e.createElement(ic,{size:10}):null,$e.createElement(Zo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:v.error,loading:k,warning:v.warnings?.quote??null})))}r(Yg,"ConfirmSwapPage");import{i18n as io}from"@lingui/core";import{Button as Sc,CustomTokensZeroStateDarkIcon as ax,CustomTokensZeroStateIcon as sx,DeleteIcon as lx,Divider as Pr,IconButton as cx,MessageBox as px,NotFound as ux,styled as Cc}from"@rango-dev/ui";import Se,{useState as Tc}from"react";import{useNavigate as dx}from"react-router-dom";import{CloseIcon as zb,IconButton as Qb,SearchIcon as Hb,TextField as qb}from"@rango-dev/ui";import Fn from"react";import{styled as Zg}from"@rango-dev/ui";var Jg=Zg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),Rg=Zg("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function Pt(t){let{variant:e,fullWidth:o,color:n,size:i,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,m=s.length?Fn.createElement(Qb,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Fn.createElement(zb,{color:"gray",size:10})):null;return p&&(m=p),Fn.createElement(Rg,null,Fn.createElement(qb,{prefix:Fn.createElement(Jg,null,Fn.createElement(Hb,{color:"black"})),id:u,suffix:m,fullWidth:o,color:n,variant:e,style:{borderRadius:25,alignItems:"center",...c},size:i,value:s,onChange:a,...d}))}r(Pt,"SearchInput");import{i18n as yc}from"@lingui/core";import{Button as jb,CustomTokenWarning as Xb,darkTheme as uh,Divider as ro,ExternalLinkIcon as Yb,Image as Zb,ListItem as Jb,NotFound as Rb,PinIcon as ex,Skeleton as Jo,Typography as Nr,VirtualizedList as tx}from"@rango-dev/ui";import _,{useState as ox}from"react";import{useTranslation as nx}from"react-i18next";import{Divider as ch,ListItem as Kb,Skeleton as Ar}from"@rango-dev/ui";import Lt from"react";import{css as On,darkTheme as sc,ImageContainer as Gb,ListItemButton as Vb,styled as st,Typography as eh}from"@rango-dev/ui";var lc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),cc=On({position:"relative",height:12,width:"30%",maxWidth:"150px"}),pc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),uc=On({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${sc} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),dc=On({}),mc=On(),th=st("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),fc=st("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),wa=st("ul",{flexGrow:1,height:"100%",padding:0,margin:0,display:"flex",flexDirection:"column",listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${cc}`]:{[`& .${uc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${dc}`]:{bottom:"-15px"},[`& .${lc}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${pc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),oh=st(Vb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),gc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),hc=st(eh,{}),nh=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${mc}`]:{$$color:"$colors$neutral600",[`.${sc} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ir=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),SV=st("div",{display:"flex",alignItems:"center"}),rh=st("div",{position:"relative",[`& ${Gb}`]:{borderRadius:"$xm",overflow:"hidden"}}),ih=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),ah=st(eh,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),sh=st("a",{"& svg:hover":{color:"$colors$info"}}),lh=st("div",{paddingRight:"$5","& .widget-token-list-item-btn":{width:"100%",overflow:"hidden",height:"60px"},"& .widget-token-list-item-import-btn":{height:"$20",padding:"0 $10","& ._text":{display:"flex",justifyContent:"center",alignItems:"center"},"& ._typography":{[`.${sc} &`]:{color:"$foreground"}}}});function ph(t){return Lt.createElement(wa,null,Array.from(Array(t.size),(e,o)=>Lt.createElement(Kb,{key:o,hasDivider:!0,start:Lt.createElement(Ar,{variant:"circular",width:35,height:35}),end:Lt.createElement(Ir,null,Lt.createElement(Ar,{variant:"text",size:"large",width:70}),Lt.createElement(ch,{size:4}),Lt.createElement(Ar,{variant:"text",size:"medium",width:50})),title:Lt.createElement("div",null,Lt.createElement(Ar,{variant:"text",size:"large",width:90}),Lt.createElement(ch,{size:4}),Lt.createElement(Ar,{variant:"text",size:"medium",width:90}))})))}r(ph,"LoadingTokenList");var rx=20,ix=r(t=>{let{address:e,name:o,url:n,token:i,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return _.createElement("div",{className:cc()},o?_.createElement("div",{className:lc()},o):_.createElement(fc,{className:pc()},_.createElement(Nr,{variant:"title",size:"xmedium"},i.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(gc,{css:a},_.createElement(hc,{variant:"body",size:"xsmall",css:s},i.blockchain))),!!e&&_.createElement("div",{className:`${uc()} ${!o&&dc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",_.createElement(ro,{size:4,direction:"horizontal"}),_.createElement(sh,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Yb,{size:12}))))},"renderDesc");function Wr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:i,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=S().fetchStatus,u=S().blockchains(),{getBalanceFor:d,fetchingWallets:m}=S(),{isTokenPinned:h}=S(),{setFromToken:g,setToToken:f}=z()(),{t:T}=nx(),C=Ve(),[y,k]=ox(null),w=r(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):f({token:y,meta:{blockchains:u}})},"updateToken"),v=r(()=>{w(),C()},"handleImportToken"),N=r(x=>{if(x.customToken){let{customToken:L,...A}=x;return _.createElement(jb,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:r(q=>{q.stopPropagation(),k({...A,warning:!0})},"handleClick")},_.createElement(Nr,{variant:"body",size:"xsmall",color:"background"},T("import")))}let E=fi(d(x));return s?s(x):m?_.createElement(Ir,null,_.createElement(Jo,{variant:"text",size:"large",width:70}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:50})):E&&_.createElement(nh,null,_.createElement(ah,{variant:"title",size:"small"},E.amount),_.createElement("div",null),E.usdValue&&_.createElement(Nr,{variant:"body",className:mc(),size:"xsmall"},`$${E.usdValue}`))},"endRenderer"),I=r(()=>_.createElement(tx,{style:{flexGrow:1,minHeight:0},itemContent:x=>{let E=e[x];if(E==="skeleton")return _.createElement(Jb,{hasDivider:!0,start:_.createElement(Jo,{variant:"circular",width:35,height:35}),end:_.createElement(Ir,null,_.createElement(Jo,{variant:"text",size:"large",width:70}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Jo,{variant:"text",size:"large",width:90}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:90}))});let L=u.find(Z=>Z.name===E?.blockchain);if(!L||!E)return null;let A=E.address,O=il(L.color,"main"),q={$$color:O.main150,[`.${uh} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${uh} &`]:{$$color:O.main150},color:"$$color"},ee=r(()=>{typeof E!="string"&&!E.customToken&&n?.(E)},"handleClick"),P=A?ri({contractAddress:A,blockchainMeta:L}):void 0;return _.createElement(lh,null,_.createElement(oh,{"tab-index":x,key:`${E.symbol}${A}`,id:`${E.symbol}${A}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:E?.customToken,onClick:ee,start:_.createElement(rh,null,_.createElement(Zb,{src:E.image===""?ai:E.image,size:30}),t.type!=="custom-token"&&E&&h(E,t.type)&&_.createElement(ih,null,_.createElement(ex,{size:12,color:"gray"}))),title:E.name||!E.name&&!A?_.createElement(fc,null,_.createElement(Nr,{variant:"title",size:"xmedium"},E.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(gc,{css:q},_.createElement(hc,{variant:"body",size:"xsmall",css:j},E.blockchain)),l&&E.warning&&_.createElement(_.Fragment,null,_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(Xb,{container:W()}))):void 0,description:typeof E!="string"&&L.info&&A&&P?ix({address:A,token:E,customCssForTag:q,customCssForTagTitle:j,name:E.name,url:P}):E.name||void 0,end:N(E)}))},totalCount:e.length,key:`${i}-${o}`}),"renderList"),b=y?Lo(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Nr,{variant:"label",size:"large"},yc.t("Select Token")),_.createElement(ro,{size:4})),_.createElement(th,null,_.createElement(ro,{size:4}),p==="loading"&&_.createElement(ph,{size:rx}),p==="success"&&(e.length?_.createElement(_.Fragment,null,_.createElement(gr,{token:y,address:y?.address??"",blockchain:b??void 0,onImport:v,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),_.createElement(wa,{as:"ul"},I())):!!o&&_.createElement(Rb,{title:yc.t("No results found"),description:yc.t("Try using different keywords")}))))}r(Wr,"TokenList");var mx=Cc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),fx=Cc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),gx=Cc(cx,{"&:hover":{"& svg":{color:"$secondary550"}}});function dh(){let[t,e]=Tc(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:i,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=ho({}),p=dx(),[u,d]=Tc(!1),[m,h]=Tc(),g=r(y=>{let k=y.target.value;e(k)},"handleSearch"),f=l==="dark",T=n.filter(y=>pt(y.symbol,t)||pt(y.address||"",t)||pt(y.name||"",t)),C=r(()=>{if(m){let y=a?kt(a):null,k=i?kt(i):null,w=kt(m);y===w?c({token:null}):k===w&&s({token:null}),o(m)}d(!1)},"handleDeleteCustomToken");return Se.createElement(se,{header:{title:io.t("Custom Tokens")}},Se.createElement(ce,null,Se.createElement(mx,null,n.length?Se.createElement(Se.Fragment,null,Se.createElement(Pt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:io.t("Search Token"),onChange:g}),Se.createElement(Pr,{size:16}),Se.createElement(Wr,{list:T,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>Se.createElement(gx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},Se.createElement(lx,{size:12,color:"gray"}))})):Se.createElement(fx,null,Se.createElement(ux,{icon:f?Se.createElement(ax,{size:200}):Se.createElement(sx,{size:200}),title:io.t("No custom tokens"),description:io.t("press the button to add your custom token")})),Se.createElement(Pr,{size:20}),Se.createElement(Sc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},io.t("Add Custom Token"))),Se.createElement(ie,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},Se.createElement(px,{title:io.t("Delete Custom Token"),type:"error",description:io.t("Are you sure you want to Delete this Token?")},Se.createElement(Pr,{size:40}),Se.createElement(Pr,{size:10}),Se.createElement(Sc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:C},io.t("Yes, Delete it")),Se.createElement(Pr,{size:12}),Se.createElement(Sc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},io.t("No, Continue"))))))}r(dh,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as Mx}from"@rango-dev/queue-manager-react";import{Button as Ic,darkTheme as Dx,Divider as vo,MessageBox as $x,NotFound as Fx,styled as Ac,Tabs as Ox,Typography as ba}from"@rango-dev/ui";import{TransactionStatus as _r}from"rango-types";import ne,{useMemo as Ph,useState as Mr}from"react";import{useNavigate as Ux}from"react-router-dom";import{FilterIcon as wx,Popover as vx}from"@rango-dev/ui";import Ro from"react";import{css as hx,darkTheme as va,IconButton as yx,styled as Lr}from"@rango-dev/ui";var kc=Lr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${va} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),mh=Lr(yx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${va} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${va} &`]:{backgroundColor:"$neutral"},[`& ${kc}::before`]:{backgroundColor:"$secondary100",[`.${va} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),fh=Lr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),gh=Lr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),hh=hx({display:"flex",justifyContent:"space-between",alignItems:"center"}),yh=Lr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Sh}from"@lingui/core";import{Button as Sx,Divider as Th,ListItemButton as Tx,Radio as Cx,RadioRoot as kx,Typography as Ch}from"@rango-dev/ui";import gt from"react";function kh(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(gh,null,gt.createElement("div",{className:hh()},gt.createElement(Ch,{size:"small",variant:"body"},Sh.t("Status")),gt.createElement(Sx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Sh.t("Reset"))),gt.createElement(Th,{size:10}),gt.createElement(kx,{value:e},gt.createElement(yh,null,t.list.map((n,i)=>gt.createElement(Tx,{key:n.id,className:"widget-filter-selector-list-item-btn",style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=i,id:n.id,title:gt.createElement(gt.Fragment,null,gt.createElement(Th,{direction:"horizontal",size:4}),gt.createElement(Ch,{size:"medium",variant:"body"},n.title)),start:gt.createElement(Cx,{value:n.id}),onClick:o})))))}r(kh,"FilterSelectorContent");function wc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:i,open:a}=t;return Ro.createElement("div",null,Ro.createElement(vx,{open:a,align:"end",onOpenChange:o,container:W(),content:Ro.createElement(kh,{list:i,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Ro.createElement(mh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Ro.createElement(kc,{isSelect:!!n},Ro.createElement(wx,{size:16,color:"black"}),!!n&&Ro.createElement(fh,null)))))}r(wc,"FilterSelector");import{i18n as xx}from"@lingui/core";import{getCurrentStep as Ix}from"@rango-dev/queue-manager-rango-preset";import{Divider as xh,GroupedVirtualizedList as Ax,Skeleton as Nx,SwapListItem as Ih,Typography as Wx}from"@rango-dev/ui";import et,{useCallback as Ah,useEffect as Px,useRef as Lx,useState as Bx}from"react";function wh(t,e){let o=[],n=0;do{let i=t[n];i&&(o.push(Math.min(i,e)),e-=i),n++}while(e>0&&n<=t.length);return o}r(wh,"calculateGroupsSoFar");import{css as Ex,darkTheme as bx,styled as Br}from"@rango-dev/ui";var vc=Ex(),vh=Br("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),Ec=Br("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${vc}`]:{$$color:"$colors$neutral600",[`.${bx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),bc=Br("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Eh=Br("div",{gap:"$10",display:"flex",flexDirection:"column"}),bh=Br("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var _x=10;function xc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:i}=t,[a,s]=Bx([]),c=Lx(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=Ah(wh,[]),m=Ah(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,_x),s(d(p,c.current)))},[e.length]);if(Px(()=>{i||m()},[i,m]),i){let h=[1,2];return et.createElement(et.Fragment,null,[h,h].map((f,T)=>et.createElement(Ec,{key:T},et.createElement(bc,null,et.createElement(Nx,{variant:"text",width:60,size:"small"}),et.createElement(xh,{size:16})),et.createElement(xh,{size:4}),et.createElement(Eh,null,f.map((y,k)=>et.createElement(Ih,{isLoading:!0,key:k}))))))}return et.createElement(Ax,{style:{flexGrow:1,minHeight:0},endReached:()=>{c.current<e.length&&m()},groupCounts:a,groupContent:h=>et.createElement(Ec,null,et.createElement(bc,null,et.createElement(Wx,{variant:"label",size:"medium",className:vc()},u[h]))),itemContent:(h,g)=>{let f=l[h];if(!f)return null;let T=Ix(f),C=f.steps[0],y=f.steps[f.steps.length-1];return!C||!y?null:et.createElement(vh,{key:f.requestId},et.createElement(Ih,{className:"widget-history-group-list-swap-item-btn",requestId:f.requestId,creationTime:f.creationTime,status:f.status,onClick:o,currentStep:T,tooltipContainer:W(),onlyShowTime:u[g]===xx.t("Today"),swapTokenData:{from:{token:{image:C.fromLogo,displayName:C.fromSymbol},blockchain:{image:C.fromBlockchainLogo||""},amount:M(f.inputAmount,6,6),realAmount:f.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:M(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}r(xc,"HistoryGroupedList");import{i18n as Ea}from"@lingui/core";import Nh from"dayjs";var Wh=r(t=>{let e=new Map([["today",{title:Ea.t("Today"),swaps:[]}],["week",{title:Ea.t("This week"),swaps:[]}],["month",{title:Ea.t("This month"),swaps:[]}],["year",{title:Ea.t("This year"),swaps:[]}]]);function o(l,p){e.has(l)||e.set(l,{title:l,swaps:[]}),e.get(l)?.swaps.push(p)}r(o,"addYearsToOutput");let n=Nh();t.forEach(l=>{let p=Number(l.creationTime),u=Nh(p);if(n.isSame(u,"day"))e.get("today")?.swaps.push(l);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(l);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(l);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(l);else{let d=new Date(p).getFullYear().toString();o(d,l)}});let i=Array.from(e.values()).filter(l=>l.swaps.length>0),a=i.flatMap(l=>l.swaps),s=i.map(l=>l.swaps.length),c=i.map(l=>l.title);return{swaps:a,groupCounts:s,groups:c}},"groupSwapsByDate");var zx=Ac("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),Qx=Ac("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Hx=Ac("div",{"._typography":{color:"$neutral700",[`.${Dx}&`]:{color:"$neutral900"}}}),qx=r((t,e)=>t?.length?t.filter(o=>Mt(o.fromBlockchain,e)||Mt(o.toBlockchain,e)||Mt(o.toSymbol,e)||Mt(o.fromSymbol,e)).length:!1,"isStepContainsText");function Lh(){let t=Ux(),{manager:e,state:o}=Mx(),n=Et(e).map(({swap:b})=>b),[i,a]=Mr(""),[s,c]=Mr(!1),l=!o.loadedFromPersistor,[p,u]=Mr(""),[d,m]=Mr(!1),[h,g]=Mr("all"),f=r(b=>{let x=b.target.value;a(x)},"handleSearch"),{isMultiMode:T}=rt(),C=[{id:_r.SUCCESS,title:Fe.t("Complete")},{id:_r.RUNNING,title:Fe.t("Running")},{id:_r.FAILED,title:Fe.t("Failed")}],y=[{id:"all",title:Fe.t("All")},{id:"swap",title:Fe.t("Swap")},{id:"refuel",title:Fe.t("Refuel")}],k=Ph(()=>!i&&!p&&h==="all"?n:n.filter(b=>{let{inputAmount:x,status:E,steps:L,requestId:A,mode:O}=b;return(!i||Mt(x,i)||Mt(E,i)||qx(L,i)||Mt(A,i))&&(!p||p===E)&&(h==="all"?!0:h==="swap"?!O||O==="swap":h==="refuel"?O==="refuel":!1)}),[n,i,p,h]),w=!k?.length&&!l,v=r(()=>m(!1),"onCloseModal"),N=r(async()=>{try{await e?.clearQueue(),m(!1)}catch(b){console.log(b)}},"onClear"),I=Ph(()=>!n.some(b=>b.status===_r.SUCCESS||b.status===_r.FAILED),[n]);return ne.createElement(se,{header:{title:Fe.t("History"),suffix:ne.createElement(yo,null,ne.createElement(Ic,{id:"widget-history-clear-btn",disabled:I,variant:"ghost",size:"xsmall",onClick:()=>m(!0)},ne.createElement(ba,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},ne.createElement(ce,null,ne.createElement(Qx,null,ne.createElement(Pt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Fe.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:f,style:{height:36},value:i}),ne.createElement(vo,{size:10,direction:"horizontal"}),ne.createElement(wc,{filterBy:p,open:s,onOpenChange:b=>c(b),onClickItem:b=>u(b),list:C})),ne.createElement(vo,{size:"16"}),T&&!l&&ne.createElement(ne.Fragment,null,ne.createElement(Ox,{items:y,onChange:b=>g(b.id),value:h,type:"secondary"}),ne.createElement(vo,{size:"12"})),ne.createElement(zx,null,w&&ne.createElement(bh,null,ne.createElement(vo,{size:32}),ne.createElement(Fx,{title:i?Fe.t("No results found"):Fe.t("No transactions"),titleColor:i?void 0:"$info",hasIcon:!!i,description:i?Fe.t("Try using different keywords"):Fe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!w&&ne.createElement(xc,{list:k,onSwapClick:t,groupBy:Wh,isLoading:l}))),ne.createElement(ie,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},ne.createElement(vo,{size:20}),ne.createElement($x,{type:"warning",title:Fe.t("Clear Transaction History"),description:ne.createElement(Hx,null,ne.createElement(ba,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ne.createElement(vo,{size:"24"}),ne.createElement(ba,{variant:"body",size:"small"},Fe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ne.createElement(vo,{size:30}),ne.createElement(Ic,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:N},Fe.t("Yes, Clear the history")),ne.createElement(vo,{size:10}),ne.createElement(Ic,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},ne.createElement(ba,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}r(Lh,"HistoryPage");import{i18n as sy}from"@lingui/core";import{Button as xI,Divider as Qc,styled as II,WarningIcon as AI}from"@rango-dev/ui";import NI from"bignumber.js";import Ce,{useEffect as ly,useState as cy}from"react";import{useNavigate as WI}from"react-router-dom";import{i18n as _h}from"@lingui/core";import{Alert as Vx,Divider as Nc,NoRouteIcon as Kx,Typography as jx}from"@rango-dev/ui";import en from"react";import{styled as Gx}from"@rango-dev/ui";var Bh=Gx("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Wc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Kt(t,e)?en.createElement(Bh,null,en.createElement(Nc,{size:10}),en.createElement(Kx,{size:24,color:"gray"}),en.createElement(Nc,{size:4}),en.createElement(jx,{variant:"title",size:"small"},_h.t("No Routes Found")),en.createElement(Nc,{size:4}),en.createElement(Vx,{title:_h.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}r(Wc,"SameTokensWarning");import{Alert as Xx,Button as Yx}from"@rango-dev/ui";import Dh from"react";import{i18n as xa}from"@lingui/core";function Mh(t){let e=null;return t===Si?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:xa.t("Reset"),title:xa.t("Slippage cannot be set lower than 0.01%.")},e):t>dn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:xa.t("Change"),title:xa.t("Caution, your slippage is high!")},e):null}r(Mh,"makeAlerts");function $h(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:i}=S(),{onChangeSettings:a}=t,c=Mh(o!==null?o:e),l=r(p=>{p==="reset-slippage"?(n(yi),i(null)):p==="change-settings"&&a()},"onClickActionButton");return c?Dh.createElement(Xx,{title:c.title,type:c.alertType,variant:"alarm",action:Dh.createElement(Yx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}r($h,"SlippageWarningsAndErrors");import{i18n as tI}from"@lingui/core";import{IconButton as oI,ReverseIcon as nI,Skeleton as rI,Tooltip as iI,Typography as Dr}from"@rango-dev/ui";import ht from"react";import Ia from"bignumber.js";function Oh(t){let{error:e,isDarkTheme:o,warning:n}=t,{quoteError:i,slippageError:a}=e,{quoteWarning:s,slippageWarning:c}=n,l=!!a||i?.type===4,p=!!c||s?.type===2;return l?"$error500":p?"$warning500":o?"$neutral600":"$neutral700"}r(Oh,"getSlippageColor");function Uh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new Ia(e),i=new Ia(o),a=n.dividedBy(i),s;return a.isLessThan(1)?s=a.toFixed(14).replace(/\.?0+$/,""):a.toFixed(0).length>10?s=a.toFixed(0).slice(0,10):s=a.toFixed(2),{displayValue:s,rawValue:a.toFixed()}}r(Uh,"getUsdExchangeRate");function zh(t,e){let o=new Ia(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,Ia.ROUND_DOWN).toFormat(2)}`}r(zh,"formatTokenValueInUsd");import{darkTheme as Rx,styled as Lc,Typography as eI}from"@rango-dev/ui";var Qh=Lc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),Hh=Lc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${Rx} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Bc=Lc(eI,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function _c(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:i}=S(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:m}=ho({}),h=fn(d),g=m==="dark",f=n==="default",T={quoteError:a,slippageError:h?.type==="error"?h.message:null},C={quoteWarning:s,slippageWarning:h?.type==="warning"?h.message:null},y=p?.swaps[0]?.from||c,k=p?.swaps[p?.swaps.length-1]?.to||l,w=f?y:k,v=f?k:y,N=Number(f?p?.outputAmount:p?.requestAmount),I=Number(f?p?.requestAmount:p?.outputAmount),b=N||w.usdPrice,x=I||v.usdPrice,{rawValue:E,displayValue:L}=Uh({toTokenUsdPrice:x,fromTokenUsdPrice:b});return ht.createElement(Qh,null,ht.createElement(Dr,{variant:T||C?"label":"body",size:T||C?"medium":"small",color:Oh({error:T,warning:C,isDarkTheme:g})},tI.t("Slippage:")," ",d,"%"),u?ht.createElement(rI,{height:16,width:104,variant:"rounded"}):b&&x&&ht.createElement(Hh,null,ht.createElement(Dr,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Bc,{className:"rate-text",variant:"body",size:"small"},v.symbol),ht.createElement(oI,{id:"widget-home-page-change-rate-button",onClick:i},ht.createElement(nI,{size:14,color:"secondary"})),ht.createElement(iI,{container:W(),side:"top",sideOffset:4,content:ht.createElement(Dr,{className:"rate-text",variant:"body",size:"small"},E)},ht.createElement(Dr,{className:"rate-text",variant:"body",size:"small"},L)),ht.createElement(Bc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement(Dr,{color:"neutral600",variant:"body",size:"small"},"~",zh(Number(E),w.usdPrice))))}r(_c,"SwapMetrics");import{i18n as uI}from"@lingui/core";import{Header as dI}from"@rango-dev/ui";import Eo,{useEffect as mI,useState as fI}from"react";import{i18n as sI}from"@lingui/core";import{Divider as Dc,FullExpandedQuote as lI,Typography as cI}from"@rango-dev/ui";import ve from"react";import{styled as Mc}from"@rango-dev/ui";var qh=Mc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Gh=Mc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Vh=Mc("div",{width:"146px"});import{i18n as $r}from"@lingui/core";import{Select as aI}from"@rango-dev/ui";import Kh from"react";function Aa(t){let{updateQuotePartialState:e,sortStrategy:o}=z()(),n=[{value:"SMART",label:$r.t("Smart Routing")},{value:"FEE",label:$r.t("Lowest Fee")},{value:"SPEED",label:$r.t("Fastest Transfer")},{value:"NET_OUTPUT",label:$r.t("Maximum Return")},{value:"PRICE",label:$r.t("Maximum Output")}];return Kh.createElement(Vh,null,Kh.createElement(aI,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:i=>{e("sortStrategy",i.value)},variant:"filled"}))}r(Aa,"SelectStrategy");var jh=3;function Fr(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:i,hasSort:a=!0,fullExpandedMode:s=!1,container:c}=t,{selectedQuote:l,quotes:p,updateQuotePartialState:u,fromToken:d,toToken:m,sortStrategy:h,error:g}=z()(),{slippage:f,customSlippage:T}=S(),{findToken:C}=S(),y=c||W(),k=!!p&&p.results.length,w=T??f,{config:{__UNSTABLE_OR_INTERNAL__:v}}=S(),N=r(x=>{if(!d||!m||!p)return null;let E={requestAmount:p.requestAmount,validationStatus:null,...x};return En({currentQuote:E,userSlippage:w,findToken:C})},"getQuoteWarning"),I=g?.type===0||g?.type===1,b=p?.results?Li(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Gh,null,ve.createElement(cI,{size:"xmedium",variant:"title"},sI.t("Sort by")),ve.createElement(Aa,{container:y})),ve.createElement(Dc,{size:"10"})),e&&Array.from({length:jh},(x,E)=>ve.createElement(ve.Fragment,{key:E},s?ve.createElement(lI,{campaignTag:v?.campaignTag,loading:!0}):ve.createElement(br,{tagHidden:!1,type:"list-item",expanded:!1}),E!==jh-1&&ve.createElement(Dc,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?b.map((x,E)=>{let L=N(x),A=oc(x.swaps),O=b.length-1===E;return ve.createElement(ve.Fragment,{key:x.requestId},ve.createElement(Zo,{id:"widget-quotes-quote-info-container",showModalFee:i,container:y,selected:l?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:A?.options||null,warning:L,fullExpandedMode:s,onClick:q=>{A||u("warning",L),u("error",A?.options||null),o(q)},type:"list-item"}),!O&&ve.createElement(Dc,{size:16}))}):I&&ve.createElement(qh,null,ve.createElement(yr,{size:s?"large":"small",error:g,fetch:n}))))}r(Fr,"Quotes");import{darkTheme as pI,styled as Xh}from"@rango-dev/ui";var Yh=Xh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${pI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Zh=Xh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var gI=100;function $c(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:i,isVisible:a}=t,[s,c]=fI(!1),l=s?"":"is-hidden",{config:p}=S(),u=p?.variant==="full-expanded",d=Mo();return mI(()=>{let m=null;return a?m=setTimeout(()=>{c(!0)},gI):(c(!1),m&&clearTimeout(m)),()=>{m&&clearTimeout(m)}},[a]),Eo.createElement(Yh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Vi()} widget-expanded-quotes-container`,id:wt.EXPANDED_BOX_ID},Eo.createElement(dI,{title:uI.t("Routes"),suffix:Eo.createElement(Eo.Fragment,null,Eo.createElement(Aa,{container:d}),Eo.createElement(Vo,{container:d,onClickRefresh:i,hidden:["history","notifications","settings"]}))}),Eo.createElement(Zh,null,Eo.createElement(Fr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Mo(),onClickOnQuote:n,fullExpandedMode:u})))}r($c,"ExpandedQuotes");import{i18n as ry}from"@lingui/core";import{SwapInput as iy}from"@rango-dev/ui";import TI from"bignumber.js";import Or from"react";import{ReverseIcon as SI}from"@rango-dev/ui";import Oc from"react";import{keyframes as hI,styled as Jh}from"@rango-dev/ui";var Fc=450,yI=hI({"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)"}}),Rh=Jh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),ey=Jh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${yI} ${Fc}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 Uc(){let t=z().use.switchFromAndTo();return Oc.createElement(Rh,null,Oc.createElement(ey,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Fc),t()}},Oc.createElement(SI,{size:12})))}r(Uc,"SwitchFromAndToButton");import{styled as ty}from"@rango-dev/ui";var oy=ty("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),ny=ty("div",{position:"relative"});function zc(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:i}=t,{fromToken:a,fromBlockchain:s,toToken:c,toBlockchain:l,setInputAmount:p,sanitizeInputAmount:u,inputAmount:d,inputUsdValue:m,outputAmount:h,outputUsdValue:g,selectedQuote:f}=z()(),{swapMode:T}=rt(),{connectedWallets:C,getBalanceFor:y}=S(),k=a?y(a):null,w=fi(k)?.amount??"0",v=k?new TI(k.amount).shiftedBy(-k.decimals):pe,N=!!s&&Iu(C,s.name),I=!zs(f,d,m),b=!zs(f,d,g),x=!m||!g||!g.gt(0)?null:Zt(m.toString(),g.toString());return Or.createElement(oy,null,Or.createElement(ny,null,Or.createElement(iy,{label:ry.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:w,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:d,usdValue:I?void 0:M(m,4,4),realUsdValue:I?void 0:m?.toString(),error:I?te().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:N,tooltipContainer:W(),onSelectMaxBalance:()=>{let E=v.isGreaterThan(pe)?v.toFixed():"";p(E)},anyWalletConnected:C.length>0}),T==="swap"&&Or.createElement(Uc,null)),Or.createElement(iy,{selectionType:T==="swap"?"token":"chain",sharpBottomStyle:!i&&(!!f||e),label:ry.t("To"),mode:"To",id:"widget-swap-to-input",fetchingQuote:e,chain:{displayName:l?.displayName||"",image:l?.logo},token:{displayName:c?.symbol||"",image:c?.image,securityWarning:!!c?.warning},percentageChange:M(Zt(m,g),2,2),warningLevel:Jt(x??0),price:{value:M(h,6,6),usdValue:b?void 0:M(g,4,4),realValue:h?.toString(),realUsdValue:b?void 0:g?.toString(),error:b?te().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}r(zc,"Inputs");import{warn as CI}from"@rango-dev/logging-core";import{useCallback as kI,useEffect as wI,useRef as vI,useState as EI}from"react";function ay(){let{fetch:t,loading:e,cancelFetch:o}=Sa({request:async(n,i)=>await dt().getAllRoutes(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(ay,"useFetchAllQuotes");var bI=600;function Na({refetchQuote:t}){let{fetch:e,cancelFetch:o}=ay(),{excludeLiquiditySources:n,routing:i}=S().config,{connectedWallets:a}=S(),c=a.some(be=>be.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:m,sortStrategy:h,resetQuote:g,error:f,warning:T,setSelectedQuote:C,updateQuotePartialState:y}=z()(),{slippage:k,customSlippage:w,affiliatePercent:v,affiliateRef:N,affiliateWallets:I,fetchStatus:b}=S(),x=S().getLiquiditySources(),E=S().getDisabledLiquiditySources(),L=S().excludeLiquiditySources(),{findToken:A}=S(),{swapMode:O}=rt(),[q,j]=EI(!0),ee=vI(u),P=w??k,Y=!l||!p||Kt(l,p)||!Zn(u),ue=r(be=>{j(be)},"resetState"),Ee=r(be=>{let{fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,slippage:Q,affiliateRef:X,affiliatePercent:G,affiliateWallets:J}=be;if(q||ue(!0),!Y&&He&&Xe){g();let U=Gd({fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:Q,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});mn("experimental",i)&&(U.experimental=!0),mn("avoidNativeFee",i)&&(U.avoidNativeFee=!0),mn("enableCentralizedSwappers",i)&&(U.enableCentralizedSwappers=!0),i?.maxLength&&(U.maxLength=i.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let qe=Li(h,de.results),ot=_d(m,qe,de.requestAmount);j(!1),y("quotes",de),C(ot),de.results?.length&&ot&&hn({type:"routeRequested",payload:{...$n(ot),routeCount:de.results.length}}),Ta({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let po=ot&&En({currentQuote:ot,userSlippage:P,findToken:A});y("warning",po)}).catch(de=>{let qe=Ca(de);qe.type===0?hn({type:"routeNotFound",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,sourceTokenSymbol:He.symbol,sourceTokenAddress:He.address,destinationTokenSymbol:Xe.symbol,destinationTokenAddress:Xe.address,inputAmountUsd:d?d.toNumber():null}}):qe.type===1&&hn({type:"routeFetchFailed",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,errorCode:String(de?.response?.status??"")}}),(qe.type===0||qe.type===1)&&g(),qe.type!==2&&(y("error",qe),j(!1),CI(new Error("quote error"),{tags:{...qe,type:Ye[qe.type],requestBody:U}}))})}},"fetch"),Vt=kI(si(be=>{Ee(be)},bI),[Y]);return wI(()=>{if(!t){j(!1);return}if(b!=="success")return;if(Y){j(!1),(m||f||T)&&g();return}if(!Zn(u)&&d?.eq(0)){ue(!1),o();return}g(),ue(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Vt),ee.current=u,be({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:L,disabledLiquiditySources:E,slippage:P,affiliateRef:N,affiliatePercent:v,affiliateWallets:I,contractCall:c}),o},[b,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,x?.length,n,E.length,P,N,v,c,JSON.stringify(I)]),{fetch:()=>Ee({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:L,disabledLiquiditySources:E,slippage:P,affiliateRef:N,affiliatePercent:v,affiliateWallets:I,contractCall:c}),loading:q}}r(Na,"useSwapInput");var PI=II("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),LI=300;function py(){let t=WI(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:i,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:m}=z()(),[h,g]=cy(!1),{isLargeScreen:f,isExtraLargeScreen:T}=ca(),{fetch:C,loading:y}=Na({refetchQuote:a}),{config:k,fetchStatus:w,connectedWallets:v,customSlippage:N,slippage:I,setSlippage:b,setCustomSlippage:x}=S(),{isActiveTab:E}=re(),[L,A]=cy(!1),O=N!==null?N:I,{swapMode:q}=rt(),j=fn(O),P=Qd({fetchMetaStatus:w,fetchingQuote:y,inputAmount:n,quote:i,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=Bu(f,T,k?.variant),Y=!!n&&!!e&&!!o&&new NI(n).gt(0)&&!Jd(e,o),ue=Y&&w==="success"&&y,Ee=j?.quoteValidation||c,He=(!Z||Z&&l?.results.length)&&(Ee||s),Xe=!!e&&!!o,St=Xe&&!!j,ct=(i||s)&&!L?C:void 0,B=r(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},LI)):t(J)},"onHandleNavigation"),V=r(J=>{i?.requestId!==J.requestId&&(i&&hn({type:"routeChanged",payload:{sourceChain:J.swaps[0]?.from.blockchain??"",destinationChain:J.swaps[J.swaps.length-1]?.to.blockchain??"",fromRouteId:i.requestId,toRouteId:J.requestId}}),A(!1),p(J))},"onClickOnQuote"),Q=r(J=>{if(J){if(hi.includes(J)){b(J),x(null);return}x(J)}},"onChangeSlippage"),X=r(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");ly(()=>{u(),m("refetchQuote",!0)},[]),ly(()=>{g(Y)},[Y]);let G=r(()=>{P.action==="connect-wallet"?ju({type:"clickConnectWallet"},()=>{B($.wallets)}):P.action==="confirm-warning"?A(!0):i&&(oe({type:"swapInitiated",payload:{...$n(i),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(PI,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(xI,{id:`widget-swap-${P.action}-btn`,type:"primary",size:"large",disabled:P.disabled||!E,prefix:P.action==="confirm-warning"&&Ce.createElement(AI,null),fullWidth:!0,onClick:G},P.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:k.title||(q==="swap"?sy.t("Swap"):sy.t("Refuel")),suffix:Ce.createElement(Vo,{hidden:Z?["refresh"]:void 0,onClickRefresh:ct,onClickHistory:()=>B($.swaps),onClickSettings:()=>{B($.settings)}})}},Ce.createElement(ce,null,Ce.createElement(zc,{fetchingQuote:ue,fetchMetaStatus:w,isExpandable:Z,onClickToken:X}),Ce.createElement(Qc,{size:"2"}),Z?null:Ce.createElement(Zo,{quote:i,loading:ue,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:Ee,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{m("refetchQuote",!1),B($.routes)}:void 0}),Xe&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Qc,{size:8}),Ce.createElement(_c,{quoteError:s,quoteWarning:Ee,fromToken:e,toToken:o,quote:i,loading:ue})),He?Ce.createElement(Ce.Fragment,null,Ce.createElement(Tr,{warning:Ee,error:s,skipAlerts:!!j,couldChangeSettings:!0,refetchQuote:C,showWarningModal:L,confirmationDisabled:!E,onOpenWarningModal:()=>A(!0),onCloseWarningModal:()=>A(!1),onChangeSlippage:Q,onConfirmWarningModal:()=>{A(!1),d(!0),B($.confirmSwap)},onChangeSettings:()=>B($.settings)})):null,St&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Qc,{size:"10"}),Ce.createElement($h,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Wc,null))),Z?Ce.createElement($c,{loading:ue,onClickOnQuote:V,fetch:C,onClickRefresh:ct,isVisible:h}):null)}r(py,"Home");import{i18n as uy}from"@lingui/core";import{Alert as BI,Divider as _I,List as MI,ListItemButton as DI,Radio as $I,RadioRoot as FI,Typography as OI}from"@rango-dev/ui";import zt from"react";function bo(){let{setLanguage:t,language:e,config:o}=S(),n=Ou,i=o?.language||gn;return{activeLanguage:e||i,languages:n,defaultLanguage:i,changeLanguage:a=>t(a||gn),resetLanguage:()=>t(null)}}r(bo,"useLanguage");function dy(){let{activeLanguage:t,changeLanguage:e,languages:o}=bo(),n=Ve(),i=o.map(a=>{let{local:s,label:c,SVGFlag:l}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:zt.createElement(OI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:zt.createElement($I,{value:s}),start:zt.createElement(l,null)}});return zt.createElement(se,{header:{title:uy.t("Language")}},zt.createElement(ce,null,zt.createElement(BI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),zt.createElement(_I,{size:"8"}),zt.createElement(FI,{value:t},zt.createElement(MI,{type:zt.createElement(DI,{title:uy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:i}))))}r(dy,"LanguagePage");import{i18n as ao}from"@lingui/core";import{Button as qI,Checkbox as GI,Image as VI,ListItemButton as KI,NotFound as jI,Typography as XI}from"@rango-dev/ui";import tt,{useState as YI}from"react";import{Checkbox as QI,Skeleton as fy}from"@rango-dev/ui";import zr from"react";import{styled as Hc}from"@rango-dev/ui";var Ur=Hc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),qc=Hc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Gc=Hc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as UI,styled as zI}from"@rango-dev/ui";var my=zI(UI,{height:61});var HI=30;function Vc(){return zr.createElement(Ur,null,Array.from(Array(HI),(t,e)=>zr.createElement(my,{hasDivider:!0,key:e,start:zr.createElement(fy,{variant:"circular",width:35,height:35}),title:zr.createElement(fy,{variant:"text",size:"large",width:90}),end:zr.createElement(QI,{checked:!1})})))}r(Vc,"LoadingLiquiditySourceList");function Kc({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[i,a]=YI(""),s=S().toggleLiquiditySource,c=S().isInCampaignMode(),l=Ti(o,n),p={Exchanges:ao.t("Exchanges"),Bridges:ao.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let d=l.filter(y=>u.includes(y.type)),m=d.length===d.filter(y=>y.selected).length,h=t==="Exchanges"?"exchanges":"bridges",g=r(()=>{let y=!m;oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:y?"selectAll":"deselectAll",previousSelectedCount:d.filter(k=>k.selected).length,totalCount:d.length}}),d.forEach(k=>{m?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),f=d.map(y=>{let{selected:k,groupTitle:w,logo:v,id:N,...I}=y;return{id:`widget-setting-liquidity-source-${fu(N.toLowerCase())}-item-btn`,start:tt.createElement(VI,{src:v,size:22,type:"circular"}),onClick:()=>{c||(oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:"individual",sources:[{id:w,enabled:!k}]}}),s(w))},end:tt.createElement(GI,{checked:k,disabled:c}),title:tt.createElement(XI,{variant:"title",size:"xmedium"},ao.t(w)),selected:k,groupTitle:w,logo:v,...I}}),T=r(y=>{let k=y.target.value;a(k)},"handleSearch"),C=f;return i&&(C=f.filter(y=>Mt(y.groupTitle,i))),tt.createElement(se,{header:{title:ao.t(t),suffix:tt.createElement(qc,null,tt.createElement(qI,{id:`widget-liquidity-source-${m?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},m?ao.t("Deselect all"):ao.t("Select all")))}},tt.createElement(ce,{view:!0},tt.createElement(Pt,{value:i,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:ao.t("Search {sourceType}",{sourceType:p[t]}),onChange:T}),e==="loading"&&tt.createElement(Vc,null),!C.length&&i?tt.createElement(Gc,null,tt.createElement(jI,{title:ao.t("No results found"),description:ao.t("Try using different keywords")})):e==="success"&&tt.createElement(Ur,{disabled:c,className:"widget-liquidity-source-list"},C.map(y=>{let{groupTitle:k,...w}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(KI,{style:{height:"61px"},...w,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}r(Kc,"LiquiditySourcePage");import{i18n as ZI}from"@lingui/core";import Wa from"react";import{useNavigate as JI}from"react-router-dom";function gy(){let t=JI(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:i,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=Na({refetchQuote:n}),p=r(m=>{i(m),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${$.settings}`,d=`../${$.wallets}`;return Wa.createElement(se,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:ZI.t("Routes"),suffix:Wa.createElement(Vo,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Wa.createElement(ce,null,Wa.createElement(Fr,{fetch:c,loading:l,onClickOnQuote:p})))}r(gy,"RoutesPage");import{i18n as wy}from"@lingui/core";import{Divider as vy,getCategoriesCount as lA,SelectableCategoryList as cA}from"@rango-dev/ui";import so,{useMemo as pA,useState as Ey}from"react";import{useNavigate as uA}from"react-router-dom";import{i18n as jc}from"@lingui/core";import{Divider as oA,Image as nA,ListItemButton as rA,NotFound as iA,Typography as ky}from"@rango-dev/ui";import yt,{useEffect as aA,useState as sA}from"react";var hy=r((t,e,o)=>t.filter(n=>li(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as RI,styled as yy}from"@rango-dev/ui";var Sy=yy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Pa=yy(vl,{padding:0,margin:0,listStyle:"none",[`& ${RI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as eA,Skeleton as Ty}from"@rango-dev/ui";import La from"react";var tA=20;function Cy(){return La.createElement(Pa,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(tA),t=>La.createElement(eA,{key:t,hasDivider:!0,start:La.createElement(Ty,{variant:"circular",width:35,height:35}),title:La.createElement(Ty,{variant:"text",size:"large",width:90})})))}r(Cy,"LoadingBlockchainList");function Xc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:i,showTitle:a=!0}=t,[s,c]=sA(e),{fetchStatus:l}=S();aA(()=>{c([...hy(e,o,i)])},[e,o,i]);let p=r(()=>!s.length&&o?yt.createElement(iA,{title:jc.t("No results found"),description:jc.t("Try using different keywords")}):yt.createElement(Pa,{as:"ul",key:`${i}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(rA,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(nA,{src:u.logo,size:30}),title:yt.createElement(ky,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(ky,{variant:"label",size:"large"},jc.t("Select Chain")),yt.createElement(oA,{size:4})),yt.createElement(Sy,null,l==="loading"&&yt.createElement(Cy,null),l==="success"&&p()))}r(Xc,"BlockchainList");function Ba(t){let{type:e}=t,o=Ve(),[n,i]=Ey(""),[a,s]=Ey("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=S(),m=uA(),{swapMode:h}=rt(),g=S().blockchains({type:e}),f=S().tokens(),T=pA(()=>cu(g,f),[g.length,f.length]),C=lA(T),y=!t.hideCategory&&C!==1,k=r(w=>{if(e==="custom-token")m(`..?blockchain=${w.name}`,{replace:!0});else{if(oe({type:"chainFilterApplied",payload:{side:e==="source"?"from":"to",chain:w.name,filterSource:"expanded"}}),e==="source")l(w);else if(h==="swap")c(w);else{let v=d(w);v&&p({token:v,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return so.createElement(se,{header:{title:wy.t("Select Chain")}},so.createElement(ce,{view:!0},y&&so.createElement(so.Fragment,null,so.createElement(cA,{setCategory:s,category:a,blockchains:T,isLoading:u==="loading"}),so.createElement(vy,{size:24})),so.createElement(Pt,{value:n,autoFocus:!0,placeholder:wy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>i(""),onChange:w=>i(w.target.value)}),so.createElement(vy,{size:16}),so.createElement(Xc,{list:T,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:k})))}r(Ba,"SelectBlockchainPage");import{i18n as Da}from"@lingui/core";import{Divider as Ly,Spinner as xA}from"@rango-dev/ui";import xo,{useEffect as IA,useState as AA}from"react";import{useNavigate as NA}from"react-router-dom";import{i18n as Jc}from"@lingui/core";import{BlockchainsChip as _a,Divider as Ay,Image as Ny,Skeleton as yA,Tooltip as SA,Typography as Rc}from"@rango-dev/ui";import xe from"react";import{useEffect as fA}from"react";var by=["ETH"];function Yc(t,e,o){let n=JSON.parse(JSON.stringify(t)),i=[];if(n.sort(dA),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let c=o.limit-e.length;for(let l=0;l<=c;l++){let p=n[l];s=s.filter(u=>p?.name!==u)}}n.sort(mA(s)),i=n.splice(a)}return{list:n,more:i}}r(Yc,"prepare");function dA(t,e){let o=by,n=o.findIndex(c=>c===t.name),i=o.findIndex(c=>c===e.name),a=n>-1,s=i>-1;return a&&s?n>i?1:-1:a?-1:s?1:0}r(dA,"sortByMostUsedBlockchains");function mA(t){return r(function(o,n){let i=t.findIndex(l=>l===o.name),a=t.findIndex(l=>l===n.name),s=i>-1,c=a>-1;return s&&c?i>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}r(mA,"generateSortByPreferredBlockchainsFor");function xy(t,e){return!!e.list.find(o=>o.name===t)}r(xy,"isInVisibleList");function Zc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();fA(()=>{if(e?.selected){let a=Yc(t,o,e);xy(e.selected,a)||n(e?.selected)}},[e?.selected]);let i=Yc(t,o,e);return{list:i.list,more:i.more,history:[]}}r(Zc,"usePrepareBlockchainList");import{styled as gA}from"@rango-dev/ui";var Iy=gA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var TA=6,CA=12;function ep(t){let{blockchains:e,type:o,blockchain:n,onChange:i,onMoreClick:a}=t,{showCompactTokenSelector:s}=re(),c=Zc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=S(),p=z().use.resetToBlockchain(),u=z().use.resetFromBlockchain(),d=c.more.length>0,m=c.more[0],h=c.more.length===1&&m,g=!h&&d;return xe.createElement(xe.Fragment,null,!s&&xe.createElement(xe.Fragment,null,xe.createElement(Ay,{size:12}),xe.createElement(Rc,{variant:"label",size:"large"},Jc.t("Select Chain"))),xe.createElement(Ay,{size:12}),xe.createElement(Iy,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?TA:CA),(f,T)=>xe.createElement(yA,{key:T,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(_a,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(Rc,{variant:"body",size:"xsmall",color:"secondary500"},Jc.t("All"))),c.list.map(f=>xe.createElement(SA,{key:f.name,content:f.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(_a,{className:"widget-blockchains-section-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>i(f)},xe.createElement(Ny,{src:f.logo,size:30})))),h?xe.createElement(_a,{className:"widget-blockchains-section-only-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>i(m)},xe.createElement(Ny,{src:m.logo,size:30})):null,g?xe.createElement(_a,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(Rc,{variant:"body",size:"xsmall",color:"secondary500"},Jc._("More +{count}",{count:c.more.length}))):null)))}r(ep,"BlockchainsSection");import{useCallback as wA,useRef as vA,useState as tp}from"react";function op(){let t=S().blockchains(),e=vA(null),{customTokens:o}=S(),[n,i]=tp(!1),[a,s]=tp([]),[c,l]=tp(null),p=r(async(m,h)=>{l(null),i(!0),s([]);try{let g=await dt().searchCustomTokens({query:m,blockchain:h},{signal:e.current?.signal}),f=new Set(o().map(y=>Xt(y))),T=new Set(t.map(y=>y.name)),C=g.tokens.filter(y=>T.has(y.blockchain)&&!f.has(Xt(y)));s(C),i(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&i(!1)}},"fetch"),u=wA(si((m,h)=>{e.current?.signal.aborted||p(m,h)},600),[t.length]);return{fetch:(m,h)=>{e.current=new AbortController,s([]),i(!0),u(m,h)},cancel:r(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}r(op,"useSearchCustomTokens");function Wy(t){return t.trim()?"search":"default "}r(Wy,"getTokenSelectionMethod");function Ma(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}r(Ma,"shouldSearchForCustomTokens");function Py(t,e,o,n,i){let a=[...t];return Ma(t,o,i)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}r(Py,"prepareTokensList");function $a(t){let{type:e}=t,o=NA(),n=Ve(),{fromBlockchain:i,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=S(),{fetch:d,loading:m,tokens:h,cancel:g}=op(),[f,T]=AA(""),C=e==="source"?i:a,y=C?.name??"",k=S().blockchains({type:e}),w=S().tokens({type:e,blockchain:y,searchFor:f,getBalanceFor:u}),v=Py(w,h,f,m,C?.name),N=r(A=>{e==="source"?l(A):p(A)},"updateBlockchain"),I=r(A=>{e==="source"?s({token:A,meta:{blockchains:k}}):c({token:A,meta:{blockchains:k}})},"updateToken"),b=e==="source"?"from":"to",x=r(A=>{oe({type:"chainFilterApplied",payload:{side:b,chain:A.name,filterSource:"featured"}})},"emitChainFilterApplied"),E=r(A=>{oe({type:"tokenSelected",payload:{side:b,tokenName:A.name,tokenSymbol:A.symbol,tokenAddress:A.address,chain:A.blockchain,selectionMethod:Wy(f),activeChainFilter:y||"all"}})},"emitTokenSelected"),L={source:Da.t("Source"),destination:Da.t("Destination")};return IA(()=>(Ma(w,f,C?.name)&&d(f,C?.name??void 0),()=>{g()}),[w.length,f,C?.name]),xo.createElement(se,{header:{title:Da.t("Swap {type}",{type:L[e]})}},xo.createElement(ce,null,xo.createElement(ep,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?i:a,onMoreClick:()=>o($.blockchains),onChange:A=>{x(A),N(A)}}),xo.createElement(Ly,{size:24}),xo.createElement(Pt,{value:f,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:Da.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>T(""),onChange:A=>T(A.target.value),suffix:Ma(w,f,C?.name)&&m?xo.createElement(xA,{size:12,color:"secondary"}):void 0}),xo.createElement(Ly,{size:16}),xo.createElement(Wr,{list:v,selectedBlockchain:y,searchedFor:f,type:e,onChange:A=>{E(A),I(A);let O=k.find(q=>A.blockchain===q.name);O&&N(O),n()}})))}r($a,"SelectSwapItemsPage");import{i18n as ap}from"@lingui/core";import{Alert as oN,Button as nN,styled as rN}from"@rango-dev/ui";import tn from"react";import{useInRouterContext as iN,useSearchParams as aN}from"react-router-dom";import{i18n as Fy}from"@lingui/core";import{Alert as BA,Divider as rp,InfoIcon as _A,SlippageIcon as MA,TextField as DA,Tooltip as $A,Typography as Oy}from"@rango-dev/ui";import ze from"react";import{Chip as WA,styled as Qr,TextField as PA}from"@rango-dev/ui";var By=Qr("div",{paddingTop:"$5",padding:"$10 $5"}),_y=Qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${PA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),My=Qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Fa=Qr("div",{maxWidth:"280px",padding:"$10"}),Dy=Qr(WA,{width:"61px",flexShrink:0});import{i18n as np}from"@lingui/core";import{Typography as LA}from"@rango-dev/ui";import Hr from"react";function $y(){return Hr.createElement(Fa,null,Hr.createElement(LA,{variant:"label",size:"medium",color:"neutral700"},np.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Hr.createElement("br",null),Hr.createElement("br",null),Hr.createElement("b",null,np.t("Warning")),":\xA0",np.t("This setting is applied to each step (e.g. 1Inch, Thorchain, etc.), meaning only that specific step will be reverted, not the entire route.")))}r($y,"SlippageTooltipContent");function ip(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),i=o!==null?fn(o):null,a=o??t,s=r((u,d)=>{u!==d&&oe({type:"settingsChanged",payload:{setting:"slippage",previousValue:u,newValue:d}})},"emitSlippageChanged"),c=r(u=>{let d=u.target.value,m=parseFloat(d);if(isNaN(m))return n(null);let h=m;m>er&&(h=er),s(a,h),n(h)},"onSlippageValueChange"),l=r(u=>{s(a,u),o!==null&&n(null),e(u)},"onClickSlippageChip"),p=r(u=>{let d=u.target,m=d.value;yu(m)||(d.value=m.slice(0,-1))},"onInput");return ze.createElement(By,null,ze.createElement(My,null,ze.createElement(MA,{size:16,color:"gray"}),ze.createElement(rp,{direction:"horizontal",size:4}),ze.createElement(Oy,{variant:"title",size:"xmedium"},Fy.t("Slippage tolerance per swap")),ze.createElement(rp,{direction:"horizontal",size:4}),ze.createElement($A,{container:W(),side:"top",sideOffset:4,content:ze.createElement($y,null)},ze.createElement(_A,{color:"gray"}))),ze.createElement(_y,null,hi.map((u,d)=>{let m=`slippage-${d}`;return ze.createElement(Dy,{id:`widget-slippage-chip-${u.toString()}%-btn`,key:m,onClick:()=>l(u),selected:o===null&&u===t,label:`${u.toString()}%`})}),ze.createElement(DA,{type:"number",min:"0.01",max:"30",step:"0.01",status:i?.type||(o?"success":"default"),id:"widget-slippage-chip-text-input",onInput:p,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:c,suffix:o&&ze.createElement(Oy,{variant:"body",size:"small"},"%"),placeholder:Fy.t("Custom")})),i&&ze.createElement(ze.Fragment,null,ze.createElement(rp,{size:10}),ze.createElement(BA,{id:"widget-slippage-alert",variant:"alarm",type:i.type,title:i.message})))}r(ip,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as Uy,BridgesIcon as FA,ChevronRightIcon as Oa,DarkModeIcon as zy,Divider as qr,ExchangeIcon as OA,InfinityIcon as UA,InfoIcon as zA,LanguageIcon as QA,LightModeIcon as Qy,List as HA,ListItem as qA,ListItemButton as GA,Skeleton as VA,styled as KA,Switch as jA,Tabs as XA,TargetIcon as YA,Tooltip as ZA,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as JA}from"react-router-dom";var RA=KA("div",{width:"202px",height:"$40"}),eN=[{id:"light",icon:D.createElement(Qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:D.createElement(zy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:D.createElement(Uy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Auto"))}],tN=r(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(Uy,{...e});case"dark":return D.createElement(zy,{...e});default:return D.createElement(Qy,{...e})}},"getThemeIcon");function Hy(){let t=JA(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:i,languages:a}=bo(),s=a.find(P=>P.local===i)?.label,c=S().fetchStatus,l=S().swappers(),p=S().getDisabledLiquiditySources(),{config:{features:u}}=S(),d=S().customTokens(),m=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),f=nt("customTokens",u),T=S().infiniteApprove,C=S().toggleInfiniteApprove,y=Ti(l,p),k=y.filter(P=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(P.type)),w=k.length,v=k.filter(P=>P.selected).length,N=y.filter(P=>P.type==="DEX"),I=N.length,b=N.filter(P=>P.selected).length,x=r((P,Z)=>{switch(c){case"loading":return D.createElement(VA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(lt,{variant:"body",size:"medium",color:"$error500"},bt.t("Loading failed"));default:return D.createElement(lt,{variant:"body",size:"medium"},`${P} / ${Z}`)}},"handleSwapperEndItem"),E={id:"widget-setting-bridge-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Bridges")),end:D.createElement(D.Fragment,null,x(v,w),D.createElement(qr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(FA,{color:"gray",size:16})},L={id:"widget-setting-exchange-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Exchanges")),end:D.createElement(D.Fragment,null,x(b,I),D.createElement(qr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),start:D.createElement(OA,{color:"gray",size:16}),onClick:()=>t($.exchanges)},A={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},`${d.length}`),D.createElement(qr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),start:D.createElement(YA,{color:"gray",size:16}),onClick:()=>t($.customTokens)},O={id:"widget-setting-language-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Language")),start:D.createElement(QA,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},s),D.createElement(qr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),onClick:()=>t($.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Infinite approval")),D.createElement(qr,{direction:"horizontal",size:4}),D.createElement(ZA,{side:"top",sideOffset:4,container:W(),content:D.createElement(Fa,null,D.createElement(lt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,bt.t("Warning")),":\xA0",bt.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},D.createElement(zA,{color:"gray"}))),start:D.createElement(UA,{color:"gray",size:16}),end:D.createElement(jA,{checked:T}),onClick:()=>{oe({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:T,newValue:!T}}),C()}},j={id:"widget-setting-theme-item-btn",type:D.createElement(qA,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Theme")),end:D.createElement(RA,null,D.createElement(XA,{container:W(),items:eN,value:n,className:"widget-setting-theme-item-tabs-container",onChange:P=>o(P.id),type:"primary",borderRadius:"small"})),start:tN(n)},ee=h?[]:[E,L];return f||ee.push(A),g||ee.push(O),ee.push(q),!e?.singleTheme&&!m&&ee.push(j),D.createElement(HA,{type:D.createElement(GA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}r(Hy,"SettingsLists");var sN=rN("div",{paddingLeft:"$8"});function qy(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=aN(),i=iN(),a=r(()=>{i&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return tn.createElement(se,{header:{title:ap.t("Settings")}},tn.createElement(ce,null,o&&tn.createElement(oN,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:ap.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:tn.createElement(sN,null,tn.createElement(nN,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},ap.t("Reset")))}),tn.createElement(ip,null),tn.createElement(Hy,null)))}r(qy,"SettingsPage");import{i18n as y0}from"@lingui/core";import{cancelSwap as S0}from"@rango-dev/queue-manager-rango-preset";import{useManager as T0}from"@rango-dev/queue-manager-react";import{Alert as C0}from"@rango-dev/ui";import vp from"react";import{useParams as k0}from"react-router-dom";import{i18n as Ht}from"@lingui/core";import{getCurrentNamespaceOfOrNull as n0,getCurrentStep as r0,getRelatedWalletOrNull as i0}from"@rango-dev/queue-manager-rango-preset";import{Button as FS,Divider as a0,QuoteCost as s0,StepDetails as l0,Typography as yp}from"@rango-dev/ui";import{useWallets as c0}from"@rango-dev/wallets-react";import OS from"bignumber.js";import{PendingSwapNetworkStatus as Qn}from"rango-types";import we,{useEffect as Sp,useRef as Tp,useState as ja}from"react";import{useNavigate as p0}from"react-router-dom";import{i18n as Io}from"@lingui/core";var lN=[Io.t("Sunday"),Io.t("Monday"),Io.t("Tuesday"),Io.t("Wednesday"),Io.t("Thursday"),Io.t("Friday"),Io.t("Saturday")];function Gy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),i=e.getFullYear();return`${e.getDay()===new Date().getDay()?Io.t("Today"):`${lN[e.getDay()]} ${o} ${n} ${i}`}, ${new Date(t).toLocaleTimeString()}`}r(Gy,"timeSince");function Vy(t){return t.finishTime?Gy(parseInt(t.finishTime)):Gy(parseInt(t.creationTime))}r(Vy,"getSwapDate");import Gr from"react";import{i18n as Ua}from"@lingui/core";import{Button as Ky,Divider as sp,MessageBox as cN}from"@rango-dev/ui";import Ao from"react";var jy=r(({onCancel:t,onClose:e})=>Ao.createElement(Ao.Fragment,null,Ao.createElement(sp,{size:20}),Ao.createElement(cN,{type:"error",title:Ua.t("Cancel Swap"),description:Ua.t("Are you sure you want to cancel this swap?")}),Ao.createElement(sp,{size:32}),Ao.createElement(Ky,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Ua.t("Yes, Cancel it")),Ao.createElement(sp,{size:12}),Ao.createElement(Ky,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Ua.t("No, Continue"))),"CancelContent");import{i18n as za}from"@lingui/core";import{Button as Xy,Divider as lp,MessageBox as pN,Typography as uN}from"@rango-dev/ui";import lo from"react";var Yy=r(({onDelete:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(lp,{size:20}),lo.createElement(pN,{type:"error",title:za.t("Delete Transaction"),description:za.t("Are you sure you want to delete this swap?")}),lo.createElement(lp,{size:32}),lo.createElement(Xy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},za.t("Yes, Delete it")),lo.createElement(lp,{size:12}),lo.createElement(Xy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},lo.createElement(uN,{variant:"title",size:"medium",color:"primary"},za.t("No, Cancel")))),"DeleteContent");import{i18n as dN}from"@lingui/core";import{Button as mN,Divider as fN,MessageBox as gN}from"@rango-dev/ui";import on from"react";var Zy=r(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return on.createElement(on.Fragment,null,on.createElement(gN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&on.createElement(on.Fragment,null,on.createElement(fN,{size:"30"}),on.createElement(mN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},dN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as BN,getCurrentStep as _N,getRelatedWalletOrNull as MN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as DN}from"@rango-dev/ui";import{useWallets as $N}from"@rango-dev/wallets-react";import rS from"react";import{i18n as Un}from"@lingui/core";import{Alert as eS,Button as SN,Checkbox as TN,Divider as qa,Image as CN,MessageBox as kN,Spinner as wN,WarningIcon as vN}from"@rango-dev/ui";import{useWallets as EN}from"@rango-dev/wallets-react";import Te,{useState as bN}from"react";import{css as hN,darkTheme as yN,styled as cp}from"@rango-dev/ui";var Jy=hN({wordWrap:"break-word",display:"block"}),Ry=cp("img",{width:"100%"}),Qa=cp("div",{position:"relative"}),Ha=cp("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${yN} &`]:{$$color:"$warning600"}});var tS=r(t=>{let{wallet:e,namespace:o,onClose:n}=t,[i,a]=bN(null),{list:s}=xt(),c=re.use.isActiveTab(),{state:l,connect:p}=EN(),u=s.find(v=>v.type===e.walletType),d=u?.needsNamespace?.data.find(v=>v.value===o?.namespace);if(!u)return null;let m=l(e.walletType),h=o?.namespace?m.namespaces?.get(o.namespace):null,g=m.connecting||h?.connecting,f=h?.connected,T=r(()=>f?Un.t("Done"):i?Un.t("Try again"):Un.t("Connect"),"getButtonTitle"),C=r(()=>g?Te.createElement(wN,{color:"info"}):i||f?null:Te.createElement(TN,{checked:!0,disabled:!0}),"getNamespaceSuffix"),y=r(async()=>{try{a(null),await p(u.type,o?.namespace?[{namespace:o?.namespace,network:void 0,derivationPath:e.derivationPath}]:void 0)}catch(v){a(Tt(v)??v)}},"handleConnect"),k=r(async()=>{if(f){n();return}y()},"handleClickButton"),w=r(()=>{if(!f)return null;let v=h?.accounts?.[0]?.split(":"),N=v?.[v?.length-1];return N?uo(N):null},"getAddress");return Te.createElement(Te.Fragment,null,Te.createElement(kN,{type:"warning",title:Un.t("Connect {wallet}",{wallet:u.title}),description:Un.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Te.createElement(Qa,null,Te.createElement(CN,{src:u.image,size:45}),Te.createElement(Ha,null,Te.createElement(vN,{color:"warning",size:10})))}),f&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:10}),Te.createElement(eS,{type:"success",variant:"alarm",title:Un.t("Wallet connected successfully.")})),i&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:10}),Te.createElement(eS,{type:"error",title:i?.message,variant:"alarm"})),d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:30}),Te.createElement(Oo,{namespace:d,suffix:C(),error:i?.message,connected:f,address:w()})),Te.createElement(qa,{size:"40"}),Te.createElement(SN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},T()))},"ConnectWalletContent");import{i18n as oS}from"@lingui/core";import{Button as xN,detectInstallLink as IN,Divider as AN,Image as NN,MessageBox as WN,WarningIcon as PN}from"@rango-dev/ui";import{useWallets as LN}from"@rango-dev/wallets-react";import co from"react";var nS=r(t=>{let{walletType:e}=t,{getWalletInfo:o}=LN(),n=e?o(e):null;if(!n)return null;let i=r(()=>window.open(IN(n.installLink),"_blank"),"handleButtonClick");return co.createElement(co.Fragment,null,co.createElement(WN,{type:"warning",title:oS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:co.createElement(Qa,null,co.createElement(NN,{src:n.img,size:45}),co.createElement(Ha,null,co.createElement(PN,{color:"warning",size:10})))}),co.createElement(AN,{size:"40"}),co.createElement(xN,{type:"primary",id:"widget-install-wallet-btn",onClick:i},oS.t("Install")))},"InstallWalletContent");var iS=r(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:i}=$N(),a=_N(e),s=a?MN(e,a):null,c=s?.walletType,l=c?Jn(i(c),n(c)):null,p=a?BN(e,a):null;return c?l===DN.NOT_INSTALLED?rS.createElement(nS,{walletType:c}):rS.createElement(tS,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function pp(t){let{isOpen:e,state:o,switchNetworkModalState:n,onClose:i,onDelete:a,onCancel:s,swap:c,message:l,handleSwitchNetwork:p}=t;return Gr.createElement(ie,{open:e,onClose:i,container:W()},o==="connectWallet"&&Gr.createElement(iS,{swap:c,message:l,onClose:i}),o==="switchNetwork"&&n&&Gr.createElement(Zy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Gr.createElement(Yy,{onClose:i,onDelete:()=>{i(),a()}}),o==="cancel"&&Gr.createElement(jy,{onClose:i,onCancel:()=>{i(),s()}}))}r(pp,"SwapDetailsModal");import{i18n as Vr}from"@lingui/core";import{Button as up,Divider as Kr,MessageBox as lS,TokenAmount as FN,Typography as cS}from"@rango-dev/ui";import ke from"react";import{Link as ON,useNavigate as UN}from"react-router-dom";var aS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",sS="/profile";function dp(t){let{open:e,onClose:o,status:n,priceValue:i,usdValue:a,realUsdValue:s,realValue:c,token:l,chain:p,percentageChange:u,description:d,diagnosisUrl:m}=t,h=UN(),{showProfileBanner:g}=re();return ke.createElement(ie,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(wt.SWAP_BOX_ID)||document.body},n==="success"?ke.createElement(lS,{type:"success",title:Vr.t("Swap Successful")},ke.createElement(FN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:i,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),ke.createElement(Kr,{size:12}),ke.createElement(cS,{className:Jy(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ke.createElement(lS,{type:"error",title:Vr.t("Transaction Failed"),description:d}),ke.createElement(Kr,{size:30}),n==="success"&&ke.createElement(ke.Fragment,null,g&&ke.createElement(ke.Fragment,null,ke.createElement(ON,{to:sS},ke.createElement(Ry,{src:aS,alt:"Profile Banner"})),ke.createElement(Kr,{size:30})),ke.createElement(up,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Vr.t("Done"))),ke.createElement(Kr,{size:12}),m&&ke.createElement(ke.Fragment,null,ke.createElement(up,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(m,"_blank")},Vr.t("Diagnosis")),ke.createElement(Kr,{size:12})),ke.createElement(up,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ke.createElement(cS,{variant:"title",size:"medium",color:"primary"},Vr.t("See Details"))))}r(dp,"SwapDetailsCompleteModal");import{i18n as Ka}from"@lingui/core";import{CopyIcon as JN,DoneIcon as RN,IconButton as e0,RangoExplorerIcon as t0,Tooltip as LS,Typography as BS,useCopyToClipboard as o0}from"@rango-dev/ui";import Bt from"react";import ZN from"react";import{i18n as KN}from"@lingui/core";import{Alert as AS,IconButton as jN,LinkIcon as XN}from"@rango-dev/ui";import No,{Fragment as YN}from"react";import{Alert as QN,ChevronDownIcon as HN,IconButton as qN}from"@rango-dev/ui";import zn,{useState as GN}from"react";import{css as jr,darkTheme as pS,styled as Qt,Typography as zN}from"@rango-dev/ui";var uS=Qt(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${pS} &`]:{color:"$secondary500"}}}}}),dS=Qt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),mS=Qt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),fS=Qt("div",{padding:"$0 $20 $20 $20"}),PY=Qt("div",{display:"flex",flexDirection:"column",gap:"$10"}),gS=Qt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),LY=Qt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),nn=jr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${pS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),hS=jr({padding:"$5 0"}),Ga=jr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),yS=jr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),SS=jr({width:"100%",padding:"0 $20 $10"}),TS=Qt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),CS=Qt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Va=Qt(zN,{wordBreak:"break-word"});import{styled as mp}from"@rango-dev/ui";var kS=mp("div",{display:"flex",flexDirection:"column",gap:"$10"}),wS=mp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),vS=mp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function ES(t){let{message:e}=t,[o,n]=GN(!1);return zn.createElement(QN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&zn.createElement(qN,{id:"widget-swap-details-failed-btn",onClick:()=>n(i=>!i),variant:"ghost",size:"xsmall"},zn.createElement(wS,{rotated:o},zn.createElement(HN,{size:12,color:"gray"}))),footer:zn.createElement(vS,{open:o},zn.createElement(Va,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}r(ES,"FailedAlert");import{i18n as bS}from"@lingui/core";import{Alert as fp,Button as xS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as VN}from"rango-types";import Xr from"react";function IS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:i,showNetworkModal:a}=t;return e?Xr.createElement(fp,{type:"warning",id:"widget-swap-details-change-network-alert",title:i.shortMessage,action:Xr.createElement(xS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},bS.t("Change"))}):a===VN.WaitingForConnectingWallet?Xr.createElement(fp,{type:"warning",title:i.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Xr.createElement(xS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},bS.t("Connect"))}):Xr.createElement(fp,{id:"widget-swap-details-short-alert",type:"warning",title:i.shortMessage})}r(IS,"WarningAlert");function gp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:i,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=dr(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,d=u&&!c||p&&!s.explorerUrl?.length;return No.createElement(kS,null,s.explorerUrl?.map((m,h,g)=>{let f=h+m.url,T=h===g.length-1,C=(T&&u||p)&&!d,y=T&&s.status==="failed";return No.createElement(YN,{key:f},No.createElement(AS,{id:"widget-swap-details-tx-alert",type:T&&(C&&"loading"||y&&"error")||"success",title:m.description?`${m.description} Tx`:KN.t("View transaction"),action:m.url&&No.createElement(jN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},No.createElement(XN,{size:12}))}))}),d&&No.createElement(AS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&No.createElement(IS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:i,message:a}),s.status==="failed"&&No.createElement(ES,{message:a}))}r(gp,"SwapDetailsAlerts");var NS=2e3;var WS=r(({swap:t,blockchains:e,swappers:o,...n})=>{let i=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let c=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:M(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:Ct(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:M(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Kn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:Ct(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:Ct(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:Kn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:ZN.createElement(gp,{step:a,hasAlreadyProceededToSign:i,...n})}})},"getSteps");function PS(t){if(dr(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"}}r(PS,"getStepState");function _S(t){let{requestId:e}=t,[o,n]=o0(NS);return Bt.createElement(mS,{className:nn()},Bt.createElement(BS,{variant:"label",size:"large",color:"neutral700"},Ka.t("Request ID")),Bt.createElement("div",{className:Ga()},Bt.createElement(BS,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(LS,{container:W(),content:o?Ka.t("Copied To Clipboard"):Ka.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Bt.createElement(e0,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Bt.createElement(RN,{size:16,color:"secondary"}):Bt.createElement(JN,{size:16,color:"gray"}))),Bt.createElement(TS,{target:"_blank",href:`${Jp}/swap/${e}`},Bt.createElement(LS,{container:W(),content:Ka.t("View on Rango Explorer"),side:"bottom"},Bt.createElement(t0,{size:20})))))}r(_S,"RequestIdRow");import{i18n as MS}from"@lingui/core";import{Typography as DS}from"@rango-dev/ui";import hp from"react";function $S(t){let{date:e,isFinished:o}=t;return hp.createElement("div",{className:nn()},hp.createElement(DS,{variant:"label",size:"large",color:"neutral700"},o?MS.t("Finished at"):MS.t("Created at")),hp.createElement(DS,{variant:"label",size:"small",color:"neutral700"},e))}r($S,"SwapDateRow");var u0=3e3;function Cp(t){let{swap:e,requestId:o,onDelete:n,onCancel:i}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=c0(),l=S().blockchains(),p=S().swappers(),{findToken:u}=S(),d=z().use.retry(),m=p0(),h=Tp(null),[g,f]=ja(!1),[T,C]=ja(null),[y,k]=ja(null),[w,v]=ja(null),N=Tp(T),I=Tp(y),b=Pe.use.getNotifications(),x=Pe.use.removeNotification(),E=b(),L=r0(e),A=L?.networkStatus,O=r(Ne=>{f(!0),C(Ne)},"handleChangeModalState"),q=r(()=>{f(!1)},"handleCloseModal"),j=r(()=>{k({type:"loading",title:Ht.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=r(()=>{k({type:"success",title:Ht.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),P=r(Ne=>{k({type:"error",title:Ht.t("Network Switch Failed"),description:Ne?.message||Q.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Xd(e),Y=L?n0(e,L):null,ue=L?i0(e,L):null,Ee=Vy(e),Vt=Yd(e),be=r(Ne=>!!c(Ne)?.mobileWallet,"checkIsMobileWallet"),He=!!A&&[Qn.WaitingForNetworkChange,Qn.NetworkChangeFailed].includes(A),Xe=!!ue?.walletType&&be(ue.walletType),St=!!ue&&!!Y&&a(ue.walletType,Y.network,Y),ct=!!Y&&He&&(Xe||St),B=r(()=>{ct&&(j(),s(ue.walletType,[{namespace:Y.namespace,network:Y.network}]).then(()=>{ee()}).catch(Ne=>{P(Tt(Ne)??Ne)}))},"handleSwitchNetwork"),V=r(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),Q=jd(e,L,c),X=WS({swap:e,switchNetworkIsAvailable:ct,handleSwitchNetworkClick:V,showNetworkModal:A,setNetworkModal:O,message:Q,blockchains:l,swappers:p}),G=X.length,[J,U]=[e.steps[0],e.steps[G-1]],de=U?.outputAmount||U?.expectedOutputAmountHumanReadable,qe=e.steps.reduce((Ne,_t)=>Ne+parseFloat(_t.feeInUsd||""),0),ot=e.steps.find(Ne=>Ne.diagnosisUrl)?.diagnosisUrl,po=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),qn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),Wo=de?new OS(de).multipliedBy(U.toUsdPrice||0).toString():"",ei=new OS(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),an=Zt(qn,po),is=Q.detailedMessage.content||Q.shortMessage,TT=e.status==="success"?Ht.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:M(de,6,6),token:X[G-1]?.to.token.displayName,conciseAddress:uo(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):we.createElement(CS,null,we.createElement(yp,{variant:"body",size:"medium",color:"neutral700",align:"center"},is?"":Ht.t("Transaction was not sent."),Z?`${Ht.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Z.outputAmount,symbol:Z.symbol,blockchain:Z.blockchain}})}`:""),is&&we.createElement(Va,{align:"center",variant:"body",size:"medium",color:"neutral700"},we.createElement("b",null,"Reason:")," ",is));return Sp(()=>{E.find(_t=>_t.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),x(e.requestId),q()):w&&v(null))},[e.status,e.requestId]),Sp(()=>{if(ct){if(O("switchNetwork"),A===Qn.WaitingForNetworkChange){j();return}if(A===Qn.NetworkChangeFailed){P();return}return}if(A===Qn.WaitingForConnectingWallet){O("connectWallet");return}if(A===Qn.NetworkChanged){O("switchNetwork"),ee();return}T&&["connectWallet","switchNetwork"].includes(T)&&q()},[A]),Sp(()=>{if(N.current=T,I.current=y,T==="switchNetwork"&&y?.type==="success"){let Ne=setTimeout(()=>{N.current==="switchNetwork"&&I.current?.type==="success"&&q()},u0);return()=>clearTimeout(Ne)}},[T,y]),we.createElement(se,{header:{title:Ht.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&we.createElement(yo,null,we.createElement(FS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},we.createElement(yp,{size:"medium",variant:"label",color:"error"},Ht.t("Delete"))))},footer:Vt&&!w&&we.createElement(FS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{oe({type:"swapRetried",payload:{routeId:e.requestId}});let Ne=Pi(e,l,u);d(Ne),setTimeout(()=>{m("../../")},0)}},Ht.t("Try again"))},we.createElement(uS,{compact:!0,ref:h},we.createElement(_S,{requestId:o}),we.createElement($S,{date:Ee,isFinished:!!e.finishTime}),we.createElement("div",{className:yS()},we.createElement(s0,{fee:M(String(qe),2,2),time:Yn(pi(e.steps)),steps:G}),we.createElement(Cr,{from:{price:{value:M(e.inputAmount,6,6),usdValue:qn,realUsdValue:ei,realValue:e.inputAmount},token:{displayName:X[0]?.from.token.displayName||"",image:X[0]?.from.token.image},chain:{image:X[0]?.from.chain.image,displayName:X[0]?.from.chain.displayName||""}},to:{price:{value:M(de,6,6),usdValue:po,realUsdValue:Wo,realValue:de||""},token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image,displayName:X[G-1]?.to.chain.displayName||""}},percentageChange:M(an,2,2),warningLevel:Jt(an??0)})),we.createElement("div",{className:SS()},we.createElement(yp,{variant:"title",size:"small"},Ht.t("Swaps steps"))),we.createElement(a0,{size:8}),we.createElement(fS,null,X.map((Ne,_t)=>{let Bp=_t,Gn=e.steps[_t]&&PS(e.steps[_t]),CT=Gn==="error"||Gn==="in-progress"||Gn==="warning"||Gn==="completed"&&_t===X.length-1;return we.createElement(l0,{className:"widget-swap-details-step-item-container",key:Bp,step:Ne,type:"swap-progress",ref:h,state:Gn,hasSeparator:_t!==0,tabIndex:Bp,isFocused:CT,tooltipContainer:W()})}))),we.createElement(pp,{isOpen:g,state:T,switchNetworkModalState:y,onClose:q,onCancel:i,onDelete:n,message:Q.detailedMessage.content,swap:e,handleSwitchNetwork:V}),we.createElement(dp,{open:!!w,diagnosisUrl:ot,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(de,6,6),usdValue:po,realUsdValue:Wo,realValue:de||"",percentageChange:M(an,2,2),token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image},description:TT}))}r(Cp,"SwapDetails");import{i18n as Ya}from"@lingui/core";import{Divider as QS,NotFound as h0,Skeleton as Zr,Typography as Za}from"@rango-dev/ui";import Ae from"react";import{i18n as d0}from"@lingui/core";import{Divider as m0,Skeleton as f0,Typography as g0}from"@rango-dev/ui";import Ie from"react";import{css as qt,styled as kp}from"@rango-dev/ui";var US=kp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Yr=kp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Xa=kp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),l9=qt({display:"flex",justifyContent:"space-between",alignItems:"center"}),c9=qt({paddingTop:"$15",display:"flex"}),p9=qt({padding:"$15 $0"}),u9=qt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),d9=qt({paddingBottom:"$10"}),m9=qt({display:"flex",justifyContent:"start",alignItems:"center"}),f9=qt({paddingTop:"$5",display:"flex",alignItems:"center"}),g9=qt({display:"flex",alignItems:"center"}),h9=qt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),zS=qt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function wp(){return Ie.createElement(US,null,Ie.createElement(vr,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(g0,{variant:"title",size:"small"},d0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Yr,null,Ie.createElement(Ut,{separator:!1}),Ie.createElement("div",{className:zS()},Ie.createElement(m0,{direction:"horizontal",size:20}),Ie.createElement(f0,{height:22,variant:"rectangular"}))),Ie.createElement(Xa,null),Ie.createElement(Yr,null,Ie.createElement(Ut,{separator:!1})),Ie.createElement(Xa,null),Ie.createElement(Yr,null,Ie.createElement(Ut,{separator:!1})),Ie.createElement(Xa,null),Ie.createElement(Yr,null,Ie.createElement(Ut,{separator:!1}))))}r(wp,"LoadingSwapDetails");function HS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:Ya.t("Swap Details"),suffix:Ae.createElement(yo,null)}},o&&Ae.createElement(dS,null,Ae.createElement("div",{className:nn()},Ae.createElement(Za,{variant:"label",size:"large",color:"neutral700"},`${Ya.t("Request ID")}`),Ae.createElement("div",{className:Ga()},Ae.createElement(Za,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"})),Ae.createElement(QS,{direction:"horizontal",size:4}),Ae.createElement(Zr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(QS,{direction:"horizontal",size:4}),Ae.createElement(Zr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:nn()},Ae.createElement(Za,{className:hS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"})),Ae.createElement(Za,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(wp,null)),!o&&Ae.createElement(gS,null,Ae.createElement(h0,{title:Ya.t("Not found"),description:Ya.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}r(HS,"SwapDetailsPlaceholder");function qS(){let{manager:t,state:e}=T0(),o=!e.loadedFromPersistor,n=Et(t),{requestId:i}=k0(),a=Ve(),{fetchStatus:s}=S();if(!i)return vp.createElement(C0,{containerStyles:{margin:"20px"},type:"error",title:y0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=i?n.find(({swap:m})=>m.requestId===i):void 0,p=r(()=>{if(l?.id){let m=t?.get(l.id);m&&(oe({type:"swapCancelled",payload:{routeId:i}}),S0(m))}},"onCancel"),u=r(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(m){console.log(m)}},"onDelete"),d=l?.swap;return!d||c?vp.createElement(HS,{requestId:i,showSkeleton:c}):vp.createElement(Cp,{swap:d,requestId:i,onCancel:p,onDelete:u})}r(qS,"SwapDetailsPage");import{i18n as GS}from"@lingui/core";import{Divider as w0,getCategoriesCount as v0,SelectableCategoryList as E0,styled as KS,Typography as b0,Wallet as x0}from"@rango-dev/ui";import Gt,{useState as VS}from"react";var I0=KS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),A0=KS(ce,{textAlign:"center"});function jS(){let{fetchStatus:t}=S(),[e,o]=VS("ALL"),n=S().blockchains(),{config:i}=S(),[a,s]=VS(),c=re.use.isActiveTab(),{list:l}=xt(),p=Au(l,n),d=v0(p)!==1,m=Nu(l,e),h=r(g=>{su(l,i.multiWallets)||s(g)},"handleWalletItemClick");return Gt.createElement(se,{header:{title:GS.t("Connect Wallets")}},Gt.createElement(A0,null,d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(E0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),Gt.createElement(w0,{size:24})),Gt.createElement(b0,{variant:"title",size:"xmedium",align:"center"},GS.t("Choose a wallet to connect.")),Gt.createElement(I0,null,m.map((g,f)=>{let T=`wallet-${f}-${g.type}`;return Gt.createElement(x0,{key:T,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),Gt.createElement(pr,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}r(jS,"WalletsPage");function XS(){return sm(),Xs(),N0([{path:$.home,element:Qe.createElement(py,null)},{path:$.routes,element:Qe.createElement(gy,null)},{path:$.fromSwap,children:[{index:!0,element:Qe.createElement($a,{type:"source"})},{path:$.blockchains,element:Qe.createElement(Ba,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:Qe.createElement($a,{type:"destination"})},{path:$.blockchains,element:Qe.createElement(Ba,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:Qe.createElement(qy,null)},{path:$.languages,element:Qe.createElement(dy,null)},{path:$.exchanges,element:Qe.createElement(Kc,{sourceType:"Exchanges"})},{path:$.bridges,element:Qe.createElement(Kc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:Qe.createElement(dh,null)},{path:$.addCustomTokens,children:[{index:!0,element:Qe.createElement(rf,null)},{path:$.blockchains,element:Qe.createElement(Ba,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:Qe.createElement(Lh,null)},{path:$.swapDetails,element:Qe.createElement(qS,null)}]},{path:$.wallets,element:Qe.createElement(jS,null)},{path:$.confirmSwap,element:Qe.createElement(Yg,null)}])}r(XS,"AppRoutes");import{useQueueManager as G0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as V0}from"rango-sdk";import{useContext as K0,useEffect as Ip,useState as aT}from"react";import{WalletTypes as Rr}from"@rango-dev/provider-all";import{Provider as B0}from"@rango-dev/wallets-react";import Ja,{createContext as _0,useEffect as RS,useMemo as M0,useRef as eT}from"react";import{useEffect as W0}from"react";function YS(t){return t.map(e=>typeof e=="string"?e:e.id).join("-")}r(YS,"hashProviders");function Ep(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:i}=S(),a=n();return W0(()=>{o(),i()},[YS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}r(Ep,"useWalletProviders");import{Events as Jr}from"@rango-dev/wallets-react";import{isEvmBlockchain as P0}from"rango-sdk";function ZS(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,blockchains:i}=S(),{onConnectWalletHandler:a,onDisconnectWalletHandler:s}=t,c=i().filter(P0).map(u=>u.name),l=r((u,d)=>{let[m,,h,g,f]=u,T={walletType:m,network:g.network??void 0,accounts:h};a.current?a.current(T):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let C=wu(m,h,c,d.supportedChainNames,f.isContractWallet);C.length&&e(C,f.namespace,g.derivationPath,{walletName:m})},"onAccountsEvent");return{handler:r((u,d,m,h,g)=>{if(d===Jr.ACCOUNTS){let f=mi(g.supportedBlockchains);m&&l([u,d,m,h,g],{supportedChainNames:f})}if(d===Jr.PROVIDER_DISCONNECTED&&(o(u),s.current?s.current(u):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),d===Jr.NAMESPACE_DISCONNECTED&&n(u,m),d===Jr.CONNECTED&&m){let f={walletType:u,network:h.network??void 0,accounts:h.accounts??void 0};a.current?a.current(f):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(d===Jr.NETWORK&&m){let f={walletType:u,network:m,accounts:h.accounts??void 0};a.current?a.current(f):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handler")}}r(ZS,"useUpdates");import{Events as L0}from"@rango-dev/wallets-react";function JS(t,e){let[o,n,i,a,s]=e;n!==L0.PROVIDER_DISCONNECTED&&t(o,n,i,a,s)}r(JS,"propagateEvents");var Ra=_0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function D0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:i}=S(),a=S().blockchains(),s=S().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=Ep(s.wallets,c),p=eT(),u=eT(),{handler:d}=ZS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});RS(()=>{n().catch(console.log)},[]),RS(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,i]);let m=re.use.isActiveTab(),h=M0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Ja.createElement(Ra.Provider,{value:h},Ja.createElement(B0,{allBlockChains:a,providers:l,onUpdateState:(g,f,T,C,y)=>{let k=[g,f,T,C,y];d(...k),t.onUpdateState&&JS(t.onUpdateState,k)},autoConnect:!!m,configs:{wallets:s.wallets,walletOptions:{[Rr.TON_CONNECT]:{provider:{manifestUrl:s.tonConnect?.manifestUrl}},[Rr.OKX]:{provider:{tonConnectManifestUrl:s.tonConnect?.manifestUrl}},[Rr.TREZOR]:{provider:{manifest:s.trezorManifest}},[Rr.WALLET_CONNECT_2]:{provider:{WC_PROJECT_ID:s.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:s.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink,meta:a}},[Rr.LEDGER_WALLET]:{provider:s.ledgerWallet}}}},t.children))}r(D0,"Main");function es(t){let{config:e,...o}=t;return Ja.createElement(Ku,{config:e},Ja.createElement(D0,{...o,config:e}))}r(es,"WidgetWallets");import{globalCss as $0}from"@rango-dev/ui";var tT=r(()=>$0({"@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");import{useWallets as F0}from"@rango-dev/wallets-react";import{useEffect as O0,useRef as U0}from"react";function oT(){let{connect:t,state:e}=F0(),o=U0({}),{fetchStatus:n}=S(),i=new URLSearchParams(location.search).get("autoConnect")||"",a=e(i);O0(()=>{n==="success"&&i&&a.installed&&!a.connecting&&!a.connected&&!o.current[i]&&(o.current[i]=!0,t(i))},[a,n])}r(oT,"useForceAutoConnect");import{isApprovalTX as z0,RouteEventType as nT,StepEventType as rT,StepExecutionEventStatus as Q0,WidgetEvents as ts}from"@rango-dev/queue-manager-rango-preset";import{useEffect as iT}from"react";function bp(){let t=Pe.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();iT(()=>{let i=r(a=>{let{event:s,step:c,route:l}=a;if(s.type===rT.TX_EXECUTION&&s.status===Q0.TX_SENT&&!z0(c)||s.type===rT.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let m=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);m&&u.push(m)}if(c?.fromBlockchain!==c?.toBlockchain){let m=l.wallets[c?.toBlockchain];if(m){let h=e.find(g=>g.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&g.walletType===m.walletType&&g.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let m=n(),g=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(f=>m.some(T=>T.blockchain===f.blockchain&&T.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&T.symbol?.toLocaleLowerCase()===f.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return ge.on(ts.StepEvent,i),()=>ge.off(ts.StepEvent,i)},[ge,e]),iT(()=>{let i=r(a=>{let{event:s,route:c}=a;(s.type===nT.FAILED||s.type===nT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ge.on(ts.RouteEvent,i),()=>ge.off(ts.RouteEvent,i)},[ge])}r(bp,"useSubscribeToWidgetEvents");import{useManager as H0}from"@rango-dev/queue-manager-react";import{useEffect as q0}from"react";function xp(){let{isSynced:t,syncNotifications:e}=Pe(),{manager:o,state:n}=H0();q0(()=>{if(Pe.persist.hasHydrated()&&n.loadedFromPersistor&&!t){let a=Et(o);e(a),a.forEach(({swap:s})=>{if(!(s.status==="running"&&s.steps.length>1))return;let l=s.steps.findIndex(p=>p.status!=="success");l!==-1&&oe({type:"swapResumed",payload:{routeId:s.requestId,stepCount:s.steps.length,stepNumber:l+1}})})}},[Pe.persist.hasHydrated(),n.loadedFromPersistor,t])}r(xp,"useSyncNotifications");function Ap(){oT(),tT(),bp(),xp();let t=S().blockchains(),{canSwitchNetworkTo:e}=sT(),[o,n]=aT(null),[i,a]=aT(),s=K0(Ra),c=t.filter(V0);Ip(()=>()=>im(),[]),Ip(()=>()=>am(),[]),G0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:i,evmChains:c,canSwitchNetworkTo:e}),Ip(()=>(Fo.init(),Pe.persist.hasHydrated()||Pe.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),Fo.destroy),[])}r(Ap,"useBootstrap");import{styled as j0}from"@rango-dev/ui";var lT=j0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left",height:"100%","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function rn(){Ap();let{config:t}=S(),{activeTheme:e}=ho(t?.theme||{}),{activeLanguage:o}=bo();return Np.createElement(X0,{language:o},Np.createElement(lT,{id:"swap-container",className:e()},Np.createElement(XS,null)))}r(rn,"Main");import{setSolanaSignerConfig as hW}from"@rango-dev/signer-solana";import Pp,{useEffect as Lp,useMemo as yW}from"react";function cT(){let{setWatermark:t,setShowProfileBanner:e}=re();return{fetchApiConfig:r(async()=>{let n=await fetch(`${jt("BASE_URL")}/meta/dapp/config?apiKey=${jt("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let i=await n.json();t(i.config.watermark),e(i.config.banners.profile)},"fetchApiConfig")}}r(cT,"useFetchApiConfig");import{useState as Y0}from"react";var Z0=r(()=>{let[t,e]=Y0(null),o=r(a=>{let s=document.createElement("link");return s.href=a,s.rel="stylesheet",document.head.appendChild(s),s},"loadFont"),n=r(()=>{t&&(document.head.removeChild(t),e(null))},"unloadFont");return{handleLoadCustomFont:r(a=>{n();let s=au(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),pT=Z0;import{convertEvmBlockchainMetaToEvmChainInfo as J0}from"@rango-dev/internal-blockchains";import{checkWaitingForNetworkChange as R0,makeQueueDefinition as eW}from"@rango-dev/queue-manager-rango-preset";import{Provider as tW}from"@rango-dev/queue-manager-react";import{useWallets as oW}from"@rango-dev/wallets-react";import{isEvmBlockchain as nW}from"rango-types";import rW,{useMemo as iW}from"react";function aW(t){let{getSigners:e,state:o,connect:n,canSwitchNetworkTo:i,getWalletInfo:a,hubProvider:s}=oW(),c=iW(()=>eW({API_KEY:t.apiKey||jt("API_KEY"),BASE_URL:jt("BASE_URL"),emitter:{emit:ge.emit}}),[t.apiKey]),{blockchains:l,connectedWallets:p}=S(),u=l(),d={blockchains:p.map(k=>({accounts:[k],name:k.chain}))},m=r(async(k,w)=>i(k,w.network,w)?await n(k,[w]):void 0,"switchNetwork"),h=r(k=>!!a(k).mobileWallet,"isMobileWallet"),g=u.filter(k=>k.enabled).reduce((k,w)=>(k[w.name]=w,k),{}),f=u.filter(nW),T=r(k=>{let{supportedChains:w}=a(k);return mi(w)},"getSupportedChainNames"),C={meta:{blockchains:g,evmBasedChains:f,evmNetworkChainInfo:J0(f),getSupportedChainNames:T},getSigners:async k=>{try{return await e(k)}catch(w){throw Tt(w)??w}},wallets:d,switchNetwork:m,canSwitchNetworkTo:i,state:o,isMobileWallet:h,hubProvider:s},y=re.use.isActiveTab();return rW.createElement(tW,{queuesDefs:[c],context:C,onPersistedDataLoaded:k=>{R0(k)},isPaused:!y},t.children)}r(aW,"QueueManager");var uT=aW;import{useManager as uW}from"@rango-dev/queue-manager-react";import dW,{createContext as mW,useContext as fW}from"react";function dT(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:i,setToBlockchain:a,setToToken:s,setInputAmount:c}=z()();return r(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:m,toToken:h,requestAmount:g}=p,f={blockchains:e,tokens:o};if(u!==void 0){let T=e.find(C=>C.name===u)??null;n(T)}if(d!==void 0){let T=d?t(d)??null:null;i({meta:f,token:T})}if(m!==void 0){let T=e.find(C=>C.name===m)??null;a(T)}if(h!==void 0){let T=h?t(h)??null:null;s({meta:f,token:T})}g!==void 0&&c(g)},"updateQuoteInputs")}r(dT,"useUpdateQuoteInputs");import{cancelSwap as sW,getCurrentNamespaceOfOrNull as lW,getCurrentStep as cW,getRelatedWalletOrNull as pW}from"@rango-dev/queue-manager-rango-preset";var os=class{static{r(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return Et(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=Pi(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&sW(o)}getCurrentStepInfo(e){let o=cW(e);return{step:o,wallet:o?pW(e,o):null,network:o?lW(e,o)?.network:null}}};var mT=mW(void 0);function Wp(t){let{manager:e}=uW(),o=re.use.isActiveTab(),n=z().use.retry(),{findToken:i,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=S(),l=new os(e,{retrySwap:n,findToken:i}),{fetchingWallets:p}=S(),u=vu(a()),d=S().blockchains(),m=S().tokens(),h=S().swappers(),g=S().fetchStatus,f=bo().resetLanguage,T=Pe().getNotifications(),C=Pe().clearNotifications,y=dT(),{fromBlockchain:k,toBlockchain:w,fromToken:v,toToken:N,inputAmount:I}=z()(),b={isActiveTab:o,setCurrentTabAsActive:Fo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async x=>c(x)},meta:{blockchains:d,tokens:m,swappers:h,loadingStatus:g,findToken:i},resetLanguage:f,notifications:{list:T,clearAll:C},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:w?.name??null,toToken:N?{symbol:N.symbol,blockchain:N.blockchain,address:N.address}:null,requestAmount:I},updateQuoteInputs:y}};return dW.createElement(mT.Provider,{value:b},t.children)}r(Wp,"WidgetInfo");function fT(){let t=fW(mT);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}r(fT,"useWidget");import{Provider as gW}from"@hub3js/core";function gT(t){return typeof t=="string"||t instanceof gW}r(gT,"isHubWallet");function Hn(t){let{onUpdateState:e,config:o}=t,n=o?.wallets;if(n&&!n.every(gT))throw new Error("Legacy providers aren't supported anymore. Expected a provider with version '1.0.0'.");let i=t.config?.theme?.fontFamily,{fetchApiConfig:a}=cT(),{handleLoadCustomFont:s}=pT();return Lp(()=>{a().catch(console.log)},[]),Lp(()=>{i&&s(i)},[i]),yW(()=>{Wu({API_KEY:o?.apiKey||jp(),BASE_URL:o?.apiUrl||Zp})},[o.apiKey,o.apiUrl]),Lp(()=>{t.config?.signers?.customSolanaRPC&&hW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Pp.createElement(es,{config:{...o,wallets:n},onUpdateState:e},Pp.createElement(uT,{apiKey:o.apiKey},Pp.createElement(Wp,null,t.children)))}r(Hn,"WidgetProvider");function hT(t){let e=t.config?.externalWallets;return ns.createElement(Ni,null,e?ns.createElement(rn,null):ns.createElement(Hn,{config:t.config??Xn},ns.createElement(rn,null)))}r(hT,"Refuel");import rs from"react";function yT(t){let e=t.config?.externalWallets;return rs.createElement(Ni,null,e?rs.createElement(rn,null):rs.createElement(Hn,{config:t.config??Xn},rs.createElement(rn,null)))}r(yT,"Widget");function ST(){let{on:t,off:e}=ge;return{on:t,off:e}}r(ST,"useWidgetEvents");var yte={DerivationPath:sr,Namespaces:rr,Detached:ar,isOnDerivationPath:cr,isOnNamespace:lr,isOnDetached:Po};export{Vee as EventSeverity,sn as MainEvents,Hee as Networks,ete as PendingSwapNetworkStatus,Vn as QuoteEventTypes,hT as Refuel,Kee as RouteEventType,ls as SUPPORTED_FONTS,yte as StatefulConnect,jee as StepEventType,Xee as StepExecutionBlockedEventStatus,Yee as StepExecutionEventStatus,vd as SwapModeContext,wt as UI_ID,Ze as UiEventTypes,ti as WalletEventTypes,Jee as WalletEvents,yT as Widget,sn as WidgetEvents,Hn as WidgetProvider,es as WidgetWallets,cl as customizedThemeTokens,qee as readAccountAddress,ln as useStatefulConnect,xt as useWalletList,sT as useWallets,fT as useWidget,ST as useWidgetEvents,WC as widgetEventEmitter};
|
|
1
|
+
var wT=Object.defineProperty;var r=(t,e)=>wT(t,"name",{value:e,configurable:!0});import{Networks as Gee,readAccountAddress as Vee}from"@rango-dev/internal-blockchains";import{EventSeverity as jee,RouteEventType as Xee,StepEventType as Yee,StepExecutionBlockedEventStatus as Zee,StepExecutionEventStatus as Jee}from"@rango-dev/queue-manager-rango-preset";import{useWallets as lT,Events as ete}from"@rango-dev/wallets-react";import{PendingSwapNetworkStatus as ote}from"rango-types";import{Divider as Yk}from"@rango-dev/ui";import fo,{useEffect as Zk,useRef as Jk,useState as vd}from"react";import{WalletState as xT}from"@rango-dev/ui";import{useWallets as IT}from"@rango-dev/wallets-react";import{useReducer as AT}from"react";import{i18n as Oe}from"@lingui/core";var Ye=(a=>(a[a.NO_RESULT=0]="NO_RESULT",a[a.REQUEST_FAILED=1]="REQUEST_FAILED",a[a.REQUEST_CANCELED=2]="REQUEST_CANCELED",a[a.BRIDGE_LIMIT=3]="BRIDGE_LIMIT",a[a.INSUFFICIENT_SLIPPAGE=4]="INSUFFICIENT_SLIPPAGE",a))(Ye||{});var Vn=(s=>(s.QUOTE_INPUT_UPDATE="quoteInputUpdate",s.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",s.ROUTE_REQUESTED="routeRequested",s.ROUTE_NOT_FOUND="routeNotFound",s.ROUTE_FETCH_FAILED="routeFetchFailed",s.ROUTE_CHANGED="routeChanged",s))(Vn||{}),ti=(n=>(n.CONNECT="connect",n.DISCONNECT="disconnect",n.DETECTED="detected",n))(ti||{}),Ze=(f=>(f.CLICK_CONNECT_WALLET="clickConnectWallet",f.TOKEN_SELECTED="tokenSelected",f.CHAIN_FILTER_APPLIED="chainFilterApplied",f.SETTINGS_CHANGED="settingsChanged",f.ROUTE_FEE_VIEWED="routeFeeViewed",f.DESTINATION_ADDRESS_SET="destinationAddressSet",f.GAS_WARNING_SHOWN="gasWarningShown",f.GAS_WARNING_BYPASSED="gasWarningBypassed",f.SWAP_INITIATED="swapInitiated",f.SWAP_WALLETS_MODAL_SHOWN="swapWalletsModalShown",f.SWAP_WALLETS_CONFIRMED="swapWalletsConfirmed",f.SWAP_STARTED="swapStarted",f.SWAP_RESUMED="swapResumed",f.SWAP_RETRIED="swapRetried",f.SWAP_CANCELLED="swapCancelled",f))(Ze||{}),sn=(a=>(a.RouteEvent="routeEvent",a.StepEvent="stepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(sn||{});var te=r(()=>({genericServerError:Oe.t("Failed Network, Please retry your swap."),moduleLoadError:Oe.t("A network error occurred while processing your request. Please check your internet connection or refresh the page and try again."),liquiditySourcesError:{title:Oe.t("Please reset your liquidity sources."),description:Oe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Oe.t("No Routes Found."),description:Oe.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:Oe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Oe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Oe.t("High Price Impact"),title:Oe.t("Price impact is too high!"),description:Oe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Oe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Oe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Oe.t("USD Price Unknown"),title:Oe.t("USD Price Unknown, Cannot calculate Price Impact."),description:Oe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Oe.t("Confirm USD Price Unknown")}}),"errorMessages");function _p(t){return t.type===0?t.diagnosisMessage??te().noResultError.title:t.type===1?t.diagnosisMessage??te().genericServerError:""}r(_p,"getQuoteErrorMessage");var vT=["failed to fetch dynamically imported module","error loading dynamically imported module","importing a module script failed","failed to load module script","unable to preload css","loading chunk","loading css chunk","chunkloaderror"];function ET(t){return typeof t=="string"?t:t instanceof Error?`${t.name} ${t.message}`:""}r(ET,"toMessage");function bT(t){let e=ET(t).toLowerCase();return!!e&&vT.some(o=>e.includes(o))}r(bT,"isModuleLoadError");function Tt(t){return bT(t)?new Error(te().moduleLoadError,{cause:t}):null}r(Tt,"tryRefineError");function Mp(t,e){return Tt(t)?.message??e}r(Mp,"tryRefineErrorMessage");function Dp(t){return!!t.derivationPath}r(Dp,"isStateOnDerivationPathStep");function $p(t){return!!t.namespace}r($p,"isStateOnNamespace");var oi={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function Fp(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return oi;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:oi;default:throw new Error("Action hasn't been defined.")}}r(Fp,"reducer");function ln(){let{state:t,disconnect:e,connect:o}=IT(),[n,i]=AT(Fp,oi),a=r(async(d,m,h)=>{i({type:"reset"});try{let g=m?.map(f=>({...f,network:void 0}));return await o(d.type,g),{status:"connected"}}catch(g){let f=Mp(g,g?.message?`Error: ${g.message}`:"An unknown error happened during connecting wallet.");if(h?.disconnectOnError)try{await u(d)}catch{console.warn("An error happened during disconnecting wallet after error on connecting.")}throw new Error(f,{cause:g})}},"runConnect"),s=r(async(d,m)=>{let h=d.state===xT.DISCONNECTED,g=m?.forceConnectToNamespaces;if(h){let f=d.properties?.find(C=>C.name==="namespaces")?.value,T=d.properties?.find(C=>C.name==="derivationPath")?.value;if(g){let C=g.find(y=>!f?.data?.map(k=>k.value).includes(y));if(C)throw new Error(`One of the forced namespaces is not available in the wallet. Forced namespace: ${C}`);if(g.length>1&&T)throw new Error("Derivation path is not supported when multiple namespaces are selected.");return g.length===1&&g[0]&&T?(i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:g[0]}}),{status:"derivation-path"}):await a(d,g.map(y=>({namespace:y})),{...m,disconnectOnError:!0})}if(!f?.data?.length)return await a(d,void 0,m);if(f?.data.length&&f.data.length>1)return i({type:"needsNamespace",payload:{targetWallet:d,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(f?.data.length===1&&f.data[0]){if(T){let C=f.data[0];return i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:C.value}}),{status:"derivation-path"}}return await a(d,f?.data?.map(C=>({namespace:C.value})),m)}}if(!m?.forceConnectToNamespaces){let f=d.properties?.find(T=>T.name==="namespaces")?.value;if(f?.data.length&&f.data.length>1)return i({type:"detached",payload:{targetWallet:d,selectedNamespaces:null}}),{status:"Detached"}}return m?.disconnectIfConnected?(await u(d),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=r(async(d,m)=>{let h=d.properties?.find(y=>y.name==="namespaces")?.value,g=d.properties?.find(y=>y.name==="derivationPath")?.value,f=h?.selection==="single",T=m[0];if(!T)throw new Error("To confirm a namespace, you should select at least one namespace.");if(f&&g)return i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:T}}),{status:"derivation-path"};if(!$p(n))throw new Error("Something went wrong on handling namespace. Please retry.");let C=m.map(y=>({namespace:y}));return i({type:"detached",payload:{targetWallet:d,selectedNamespaces:C??null}}),{status:"Detached"}},"handleNamespace"),l=r(async(d,m,h)=>{if(!m)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Dp(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let f=[{namespace:n.derivationPath.namespace,derivationPath:m}],T=d.properties?.find(k=>k.name==="namespaces")?.value,C=!!T?.data&&T.data.length>1,y=!!h?.forceConnectToNamespaces;return C&&!y?(i({type:"detached",payload:{targetWallet:d,selectedNamespaces:f??null,derivationPath:m}}),{status:"Detached"}):await a(d,f)},"handleDerivationPath"),p=r(()=>n,"getState"),u=r(async d=>{let m=t(d.type);return m.connected||m.connecting?(await e(d.type),Po(p)?(i({type:"needsNamespace",payload:{targetWallet:d}}),{status:"namespace"}):{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:c,handleDerivationPath:l,getState:p,resetState:d=>{i(d==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}r(ln,"useStatefulConnect");import{WalletTypes as Dt}from"@rango-dev/provider-all";import{WalletState as Ci}from"@rango-dev/ui";import{useWallets as HC}from"@rango-dev/wallets-react";import{useCallback as qC,useEffect as Zu}from"react";import FC,{createContext as OC,useContext as UC,useEffect as zC,useRef as QC}from"react";import{create as DC}from"zustand";import{persist as $C}from"zustand/middleware";import{allProviders as WT,WalletTypes as ii}from"@rango-dev/provider-all";var as=class{static{r(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()}},cn=new as;import{Provider as NT}from"@hub3js/core";function Up({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let i=t.find(a=>a.id===n);i?o.push(i):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else if(n instanceof NT)o.push(n);else throw new Error(`Invalid item in widget config 'wallets': expected a wallet type string (e.g. 'metamask') or a hub 'Provider' instance, but received ${typeof n}.`)}),o}return t}r(Up,"matchAndGenerateProviders");function zp(t){return t.map(e=>e.id)}r(zp,"configWalletsToWalletName");function Qp(t,e){return e.find(o=>o.name===t)?.displayName}r(Qp,"getBlockchainDisplayNameFor");function Ct(t,e){return e.find(o=>o.name===t)?.shortName}r(Ct,"getBlockchainShortNameFor");function Hp(t,e){return e.find(o=>o.name===t)?.logo}r(Hp,"getBlockchainImage");function Kn(t,e){return e.find(o=>o.id===t)?.title}r(Kn,"getSwapperDisplayName");function Lo(t,e){return e.find(o=>o.name===t)??null}r(Lo,"findBlockchain");function ss(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}r(ss,"isTokenNative");function kt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}r(kt,"createTokenHash");function Bo(t,e){return t.addressPatterns.filter(i=>new RegExp(i).test(e)).length>0}r(Bo,"isValidTokenAddress");function ni(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}r(ni,"createTokenExplorerUrl");function jn(t){let{config:e,meta:o}=t,n={},i=e.tokens,a=r(c=>{c.forEach(l=>{typeof l!="string"&&(l=kt(l));let p=o.tokensMapByTokenHash.get(l);p&&(n[l]=p)})},"addTokens");if(Array.isArray(i))return i.length>0?(a(i),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!i)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(i);let c=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(l=>{let p=o.tokensMapByBlockchainName[l];!c.has(l)&&p&&a(p)})}return s.forEach(c=>{let l=i[c];if(!l&&o.tokensMapByBlockchainName?.[c]){a(o.tokensMapByBlockchainName[c]);return}l&&(l.isExcluded&&o.tokensMapByBlockchainName[c]?(a(o.tokensMapByBlockchainName[c]),l.tokens.forEach(p=>{let u=kt(p);delete n[u]})):a(l.tokens))}),Object.values(n)}r(jn,"matchTokensFromConfigWithMeta");function ri(t){let{config:e}=t,o=e.from?.blockchains||[],n=e.to?.blockchains||[];if(!o.length||!n.length)return[];let i=[...o,...n],a=new Set(i);return Array.from(a)}r(ri,"getSupportedBlockchainsFromConfig");function PT(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}r(PT,"makeProvidersOptionsFromConfig");var Xn={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default"},LT={clientUrl:void 0},BT={liquiditySources:void 0};function qp(t){return WT().map(n=>n()).filter(n=>MT(n.id,t))}r(qp,"generateProviders");var _T={[ii.LEDGER_WALLET]:"ledgerWallet",[ii.TREZOR]:"trezorManifest",[ii.TON_CONNECT]:"tonConnect",[ii.WALLET_CONNECT_2]:"walletConnectProjectId"};function MT(t,e){let o=_T[t];return!o||e[o]?!0:(console.warn(`${t} is listed in config wallets but ${o} config is not provided!`),!1)}r(MT,"hasRequiredConfig");var Gp=r((t,e,o)=>{let n={...Xn,...t},i=qp(n);return{config:n,iframe:LT,campaignMode:BT,allProviders:i,getLiquiditySources:()=>{let{config:a,campaignMode:s}=o();return s.liquiditySources?.length?s.liquiditySources:a.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:a,campaignMode:s}=o();return s.liquiditySources?.length?[]:a},excludeLiquiditySources:()=>{let{config:a,campaignMode:s}=o();return s.liquiditySources?.length?!1:!!a.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:a}=o();return!!a.liquiditySources?.length},updateConfig:a=>{let s=o().config,{_tokensMapByTokenHash:c,_tokensMapByBlockchainName:l}=o(),p=jn({type:"source",config:{blockchains:a.from?.blockchains,tokens:a.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}}),u=jn({type:"destination",config:{blockchains:a.to?.blockchains,tokens:a.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}});cn.set("supportedSourceTokens",p),cn.set("supportedDestinationTokens",u),e({config:{...s,...a}})},updateCampaignMode:(a,s)=>{let c=o().campaignMode;e({campaignMode:{...c,[a]:s}})},updateIframe:(a,s)=>{let c=o().iframe;e({iframe:{...c,[a]:s}})},buildAndSetProviders:()=>{let{config:a}=o(),s=qp(a);e({allProviders:s})},getAvailableProviders:()=>{let{allProviders:a,config:s}=o(),c=PT(s);return Up({allProviders:a,configWallets:s.wallets,options:c})}}},"createConfigSlice");import{TransactionType as Vp}from"rango-types";var Kp=[Vp.EVM,Vp.SOLANA],ai="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as ZT}from"rango-sdk";function jp(){return process.env.REACT_APP_RANGO_API_KEY}r(jp,"getApiKeyFromEnv");function Xp(){let t=jp();if(t)return t;throw new Error("Ensure you have set REACT_APP_RANGO_API_KEY in your env variables.")}r(Xp,"getApiKeyFromEnvOrThrow");function Yp(){return jp()||"NOT_SET"}r(Yp,"getApiKeyFromEnvOrNotSet");import{getBlockChainNameFromId as QT,HYPERLIQUID_SIGN_NETWORK as HT,Networks as ms,readAccountAddress as qT}from"@rango-dev/internal-blockchains";import{BlockchainCategories as GT,detectInstallLink as VT,WalletState as ut}from"@rango-dev/ui";import un from"bignumber.js";import{isAddress as KT}from"ethers";import DT from"bignumber.js";var pe=new DT(0);var _o="~",Zp=[];import{BlockchainCategories as cs,WalletState as zT}from"@rango-dev/ui";import{TransactionType as ps}from"rango-sdk";import{UI_ID as $T}from"@rango-dev/ui";var Jp="https://api.rango.exchange",Rp="https://explorer.rango.exchange",wt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...$T};var eu="Roboto",ls=[{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"}];function pn(t){return Array.from(new Set(t))}r(pn,"removeDuplicateFrom");function si(t,e){let o;return n;function n(...i){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...i)},e)}}r(si,"debounce");function pt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}r(pt,"containsText");function nu(t,e){return t.toLowerCase()===e.toLowerCase()}r(nu,"exactText");function ru(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}r(ru,"startWithText");var W=r(()=>document.getElementById(wt.SWAP_BOX_ID),"getContainer"),Mo=r(()=>document.getElementById(wt.EXPANDED_BOX_ID),"getExpanded");function iu(t,e,o){let n=!!e&&nu(e,t),i=!!o&&nu(o,t);return n!==i?n?-1:1:0}r(iu,"compareExactMatchText");function us(t,e,o){let n=!!e&&pt(e,t),i=!!o&&pt(o,t);return n!==i?n?-1:1:n&&i&&e?.length!==o?.length?e?.length-o?.length:0}r(us,"compareContainsText");function ds(t,e,o){let n=!!e&&ru(e,t),i=!!o&&ru(o,t);return n!==i?n?-1:1:n&&i&&e?.length!==o?.length?e?.length-o?.length:0}r(ds,"compareStartWithText");function au(t,e,o){if(!o)return 0;let n=iu(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let i=iu(o,t.name,e.name);if(i)return i}if(o.length>=2){let i=ds(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=us(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=ds(o,t.name,e.name);if(i)return i}if(o.length>=3){let i=us(o,t.name,e.name);if(i!==0)return i}if(o.length>=4){let i=ds(o,t.address,e.address);if(i)return i}if(o.length>=4){let i=us(o,t.address,e.address);if(i!==0)return i}return 0}r(au,"compareWithSearchFor");var li=r((t,e)=>{switch(e){case cs.ALL:return!0;case cs.UTXO:return t===ps.TRANSFER;case cs.OTHER:return t!==ps.TRANSFER&&t!==ps.EVM;default:return t===e}},"isBlockchainTypeInCategory"),su=r(t=>ls.find(o=>o.value===t)?.url,"getFontUrlByName");function lu(t,e){let o=!!t.find(n=>n.state===zT.CONNECTED);return e===!1&&o}r(lu,"isSingleWalletActive");function cu(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}r(cu,"memoizedResult");function pu(t,e){let o=new Set;return e.forEach(n=>{o.add(n.blockchain)}),t.filter(n=>o.has(n.name))}r(pu,"filterBlockchainsWithAtLeastOneToken");function uu(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}r(uu,"detectMobileScreens");import{BigNumber as Cu}from"bignumber.js";function du(t){return t.replace(/^0+(?=\d)/g,"")}r(du,"removeLeadingZeros");function mu(t){return t.replace(/^\.(\d+)/,"0.$1")}r(mu,"ensureLeadingZeroForDecimal");function fu(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}r(fu,"formatThousandsWithCommas");function gu(t){return t.replace(/\s+/g,"-")}r(gu,"replaceSpacesWithDash");function hu(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}r(hu,"stripTrailingZeros");function yu(t){return t=t.replace(/[^\d.]/g,"").replace(/\./g,(e,o,n)=>n.indexOf(".")===o?".":""),t}r(yu,"parseNumericValue");function ci(t){return/^0+(?:\.0+)?$/.test(t)}r(ci,"isZeroValue");function Su(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}r(Su,"isValidCurrencyFormat");function Tu(t){return/\d+$/.test(t)}r(Tu,"isColorKeyOverridden");var Yn=r(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=r((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Cu(t),i=1,a=1e3;for(let s=0;s<60;s++)if(new Cu(n.toFixed(s,i)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,i);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),i);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),i);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),i);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))),i);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),i)},"numberToString");var pi=r(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Mt=r((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Zn=r(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function ku(t){return ci(t)?"0":t.endsWith(".")?t.slice(0,-1):hu(t)}r(ku,"sanitizeInputAmount");function jT(t,e){let o=t?.get("EVM");return o?.network?QT(o.network,e)??o.network:null}r(jT,"getConnectedEvmChainName");function Jn(t,e){return YT(t,e)?ut.PARTIALLY_CONNECTED:e.connected?ut.CONNECTED:e.connecting?ut.CONNECTING:e.installed?ut.DISCONNECTED:ut.NOT_INSTALLED}r(Jn,"getWalletConnectionStatus");function wu(t,e,o,n){return o.filter(i=>!Zp.includes(i)).filter(i=>{let{supportedChains:a,isContractWallet:s}=e(i),{installed:c,namespaces:l}=t(i);return s&&(!c||!!n&&jT(l,a)!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(i=>{let{name:a,img:s,installLink:c,showOnMobile:l,needsNamespace:p,supportedChains:u,needsDerivationPath:d,properties:m,isHub:h}=e(i),g=pn(u.map(T=>T.type)),f=Jn(e(i),t(i));return{title:a,image:s,link:VT(c),state:f,type:i,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:m,isHub:h}})}r(wu,"mapWalletTypesToWalletInfo");function mi(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}r(mi,"walletAndSupportedChainsNames");function vu(t,e,o,n,i){let a=[];function s(l,p,u){if(!!!a.find(m=>m.chain===l)){let m={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(m)}}r(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=qT(l),d=c.length>0,m=c.includes(u),h=u===ms.Unknown;if(d&&!m&&!h)return;let f=u===ms.Unknown&&KT(p);if(h&&!f)return;if(o.includes(u)||f)if(i)s(u,p.toLowerCase(),i);else{let C=c.filter(k=>o.includes(k));C.forEach(k=>{s(k,p.toLowerCase())}),C.includes(HT)&&s(ms.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}r(vu,"prepareAccountsForWalletStore");function Do(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((i,a)=>{let s=i.from.blockchain,c=i.to.blockchain;if(n.add(s),i.internalSwaps){let{internalSwaps:l}=i;l.forEach((p,u)=>{let d=p.from.blockchain,m=p.to.blockchain,h=a===o.swaps.length-1,g=u===l.length-1;(!h&&!g||h&&c!==d||e==="all")&&n.add(d),e==="all"&&n.add(m)})}e==="all"&&n.add(c)}),Array.from(n)}r(Do,"getQuoteChains");function Rn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}r(Rn,"isAccountAndWalletMatched");var Eu=r(t=>{let e=Object.values(t).reduce((o,n)=>{let i=n.usdValue?fs(n.usdValue,n.decimals):pe.toFixed();return o.plus(i)},new un(pe));return XT(e.toString())},"calculateWalletUsdValue");function XT(t){let e=t.toString().split(".");return e[0]&&(e[0]=fu(e[0])),e.join(".")}r(XT,"numberWithThousandSeparator");function fs(t,e){return new un(t).shiftedBy(-e).toFixed()}r(fs,"representAmountInNumber");function fi(t){if(!t)return null;let e=fs(t.amount,t.decimals),o=t.usdValue?fs(t.usdValue,t.decimals):null,n=M(e,8,8),i=o?M(o,4,4):null;return t?{...t,amount:n,usdValue:i}:null}r(fi,"formatBalance");function bu(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new un(t.usdValue).shiftedBy(-t.decimals):pe,n=e&&e.usdValue?new un(e.usdValue).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new un(t.amount).shiftedBy(-t.decimals):pe,n=e&&e.amount?new un(e.amount).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}r(bu,"compareTokenBalance");function Kt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}r(Kt,"areTokensEqual");function xu(t){return t.sort((e,o)=>+(o.state===ut.CONNECTED)-+(e.state===ut.CONNECTED)||+(o.state===ut.PARTIALLY_CONNECTED)-+(e.state===ut.PARTIALLY_CONNECTED)||+(o.state===ut.DISCONNECTED||o.state===ut.CONNECTING)-+(e.state===ut.DISCONNECTED||e.state===ut.CONNECTING))}r(xu,"sortWalletsBasedOnConnectionState");function uo(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),i=t.slice(-e);return`${n}${".".repeat(o)}${i}`}r(uo,"getConciseAddress");function Iu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}r(Iu,"getAddress");var Au=r((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function gs(t){return t.map(e=>e.state).join("-")}r(gs,"hashWalletsState");function Nu(t,e){let o=new Set;return t.forEach(i=>{i.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(i=>o.has(i.type))}r(Nu,"filterBlockchainsByWalletTypes");function Wu(t,e){return e===GT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(li(n,e))return!0;return!1})}r(Wu,"filterWalletsByCategory");function YT(t,e){if(!t.needsNamespace||!e.connected)return!1;let n=t.needsNamespace.data.filter(i=>!i.unsupported);return t.needsNamespace.selection==="multiple"&&n.some(i=>!e.namespaces?.get(i.value)?.connected)}r(YT,"checkIsWalletPartiallyConnected");var hs={API_KEY:Yp()};function jt(t){return hs[t]||""}r(jt,"getConfig");function Pu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),hs=e,hs}r(Pu,"initConfig");var Lu=20,Bu=25,ys="theme-widget",Ss=r((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Kt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Kt(a,t));let i=n.isExcluded;return!i&&!o||i&&o}}}return o},"isTokenExcludedInConfig"),Ts=r((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),_u=r((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var gi,dt=r(()=>gi||(gi=new ZT(jt("API_KEY"),jt("BASE_URL")),gi),"httpService");import{i18n as Mu}from"@lingui/core";var hi=[.5,1,3],yi=1,dn=5,er=30,Si=0;function Ti(t,e){let o=t.map(a=>a.swapperGroup),n=[];return pn(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(c=>c.swapperGroup===a);if(s){let c=!0;o&&(c=o.some(l=>l===s.swapperGroup)),c&&s.types.map(l=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:l,selected:!e.includes(s.swapperGroup)})})}}),n}r(Ti,"getUniqueSwappersGroups");function Du(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}r(Du,"sortLiquiditySourcesByGroupTitle");function nt(t,e){return e?.[t]==="hidden"}r(nt,"isFeatureHidden");function mn(t,e){return e?.[t]==="enabled"}r(mn,"isRoutingEnabled");var $u=r((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function fn(t){return t==Si?{type:"error",message:Mu.t("Slippage must be greater than or equal to 0.01")}:t>dn&&t<=er?{type:"warning",message:Mu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}r(fn,"getSlippageValidation");var Fu=r((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,i=Array.from(n?.values()||[]);if(!o||!o?.type)return i;let a=e().config;if(o.type==="custom-token"){let l=ri({config:a}),p=i;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>Kp.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return i.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:i,config:a,_customTokens:s}=e(),c=Array.from(n.values()),l=e()._blockchainsMapByName;if(!o||!o.type)return c;let p=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",d=cn.get(u);d?.length||(d=jn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:i}}),cn.set(u,d)),d=$u(d,s,a.features);let m=e().blockchains({type:o.type});return d.filter(g=>o.blockchain&&g.blockchain!==o.blockchain||!m.some(f=>f.name===g.blockchain)?!1:o.searchFor?!!(pt(g.symbol,o.searchFor)||pt(g.address||"",o.searchFor)||pt(g.name||"",o.searchFor)):!0).sort((g,f)=>{let T=e().isTokenPinned(g,o.type),C=e().isTokenPinned(f,o.type);if(T!==C)return T?-1:1;if(o.getBalanceFor){let N=o.getBalanceFor(g),I=o.getBalanceFor(f),b=bu(N,I);if(b!==0)return b}let y=l.get(g.blockchain),k=l.get(f.blockchain),w=ss(g,y),v=ss(f,k);if(w!==v)return w?-1:1;if(g.isPopular!==f.isPopular)return g.isPopular?-1:1;if(o.searchFor){let N=au(g,f,o.searchFor);if(N)return N}return g.isSecondaryCoin!==f.isSecondaryCoin?g.isSecondaryCoin?1:-1:y&&k?y.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,i=e().customTokens(),a=kt(o),s=n.get(a);return s||(s=i.find(c=>kt(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Kt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),i=n.liquiditySources?.length?n.liquiditySources:null,a=i??o.liquiditySources,s=i?!1:o.excludeLiquiditySources;return e()._swappers.filter(p=>{let u=a?.includes(p.swapperGroup);return s||!a||a.length===0?!u:u}).sort(Du)},fetch:async()=>{try{let{routing:o}=e().config,n=mn("enableCentralizedSwappers",o),i=await dt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,c={},l=i.popularTokens,p=i.swappers.filter(d=>d.enabled);i.blockchains.sort((d,m)=>d.sort-m.sort).forEach(d=>{d.enabled&&a.set(d.name,d)}),i.tokens.forEach(d=>{let m=kt(d);c[d.blockchain]||(c[d.blockchain]=[]),s.set(m,d),c[d.blockchain]?.push(m)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c,_popularTokens:l,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as JT,Catalonia as RT,Chinese as Ou,Denmark as eC,English as tC,Finland as oC,French as nC,German as rC,Greece as iC,Hungary as aC,India as sC,Indonesian as lC,Italian as cC,Japanese as pC,Korea as uC,Lithuania as dC,Malay as mC,Netherlands as fC,Pakistan as gC,Philippines as hC,Poland as yC,Portuguese as SC,Russian as TC,SaudiArabia as CC,Serbia as kC,Slovakia as wC,SouthAfrica as vC,Spanish as EC,Swahili as bC,Swedish as xC,Thai as IC,Turkish as AC,Ukrainian as NC,Vietnamese as WC}from"@rango-dev/ui";var Uu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:vC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:CC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:JT},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:RT},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Ou},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Ou},{title:"Danish",label:"Dansk",local:"da",SVGFlag:eC},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:fC},{title:"English",label:"English",local:"en",SVGFlag:tC},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:hC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:oC},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:nC},{title:"German",label:"Deutsch",local:"de",SVGFlag:rC},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:iC},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:sC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:aC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:lC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:cC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:pC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:uC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:dC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:mC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:yC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:SC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:TC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:kC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:wC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:EC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:bC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:xC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:IC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:AC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:NC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:gC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:WC}],gn="en";var zu=r((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:yi,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],quoteTokensRate:"default",changeQuoteTokensRate:()=>t(o=>({quoteTokensRate:o.quoteTokensRate==="default"?"reversed":"default"})),addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,c)=>{let l=s===o,p=c<=9;return l&&p}))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(i=>{if(n)return{disabledLiquiditySources:[]};let a=pn(o.map(s=>s.swapperGroup));return a.length===i.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(i=>i!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:i}=o,a=nt("theme",n),s=nt("language",n),c=nt("liquiditySource",n),l=i?.singleTheme,p=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...l&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||gn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||gn}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(i=>i.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,i=ri({config:o});return i.length?n.filter(a=>i.includes(a.blockchain)):n}}),"createSettingsSlice");import bs from"bignumber.js";import PC from"mitt";var ge=PC(),LC={on:ge.on,off:ge.off};var Qu=r(t=>(e,o,n)=>t(r((...a)=>{let[s,...c]=a;e(l=>({...typeof s=="function"?s(l):s,lastUpdatedAt:+new Date}),...c)},"modifedSet"),o,n),"keepLastUpdated");import Hu from"bignumber.js";function Xt(t){return`${t.blockchain}${_o}${t.address}${_o}${t.symbol}`}r(Xt,"createAssetKey");function qu(t,e){return`${Xt(e)}${_o}${t}`}r(qu,"createBalanceKey");function tr(t){let[e,o,n]=t.split(_o);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}r(tr,"extractAssetFromBalanceKey");function ks(t,e,o){return e.balances?.forEach(n=>{let i=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Xt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:i?new Hu(i??pe).multipliedBy(o[s].amount).toString():""})})}),o}r(ks,"computeNextBalancesWithNewPrices");function ws(t,e){let o={};return t.balances?.forEach(n=>{let i=qu(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Hu(c??pe).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[i]=p}),o}r(ws,"createBalanceStateForNewAccount");function vs(t,e){for(let o in e){let n=tr(o);if(n){let i=Xt(n);t[i]||(t[i]=[]),t[i].includes(o)||(t[i]=[...t[i],o])}}return t}r(vs,"updateAggregatedBalanceStateForNewAccount");function BC(t,e){let o=tr(e);if(!o)return t;let n=Xt(o);return t[n]&&(t[n]=t[n].filter(i=>i!==e)),t}r(BC,"removeBalanceFromAggregatedBalance");function Es(t,e,o){let n=t.connectedWallets.filter(l=>e.includes(l.walletType));t.connectedWallets.forEach(l=>{e.includes(l.walletType)||(n=n.filter(p=>!(p.chain===l.chain&&p.address===l.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(l=>o.chains?.includes(l.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(l=>l.namespace?o.namespaces?.includes(l.namespace):!1));let i={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(l=>{let p=tr(l);if(!p)return;!!n.find(d=>qu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=BC(a,l):s[l]&&(i[l]=s[l])}),{_balances:i,_aggregatedBalances:a}}r(Es,"computeNextStateAfterWalletBalanceRemoval");function _C(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}r(_C,"matchWalletDetailsWithConnectedWallet");var MC=cu(),Gu=Qu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(i=>o.find(a=>Rn(a,i))?{...i,loading:!0,error:!1}:i)}))},setConnectedWalletRetrievedData:(o,n)=>{t(i=>({fetchingWallets:!1,connectedWallets:i.connectedWallets.map(a=>o.find(s=>Rn(s,a))?{...a,loading:!1,error:!1,explorerUrl:_C(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(i=>o.find(a=>Rn(a,i))?{...i,loading:!1,error:!0}:i)}))},addConnectedWallet:(o,n,i)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Rn(c,l)));if(s.length>0){let c=s.map(l=>{let p=!a.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:p,namespace:n,derivationPath:i,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!c.some(d=>d.walletType===u.walletType&&d.chain===u.chain)),...c]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:i}=o,a=n.reduce((l,p)=>((l[p.blockchain]||=[]).push(p),l),{}),s=new Set,c=i.reduce((l,p)=>{let u=`${p.address}-${p.chain}`;return s.has(u)||(s.add(u),a[p.chain]&&(l[p.address]||(l[p.address]=[]),l[p.address]?.push(...a[p.chain]||[]))),l},{});Object.entries(c).forEach(async([l,p])=>{try{let{balances:u}=await dt().getMultipleTokenBalance({assets:p.map(({symbol:d,address:m,blockchain:h})=>({symbol:d,address:m,blockchain:h})),walletAddress:l});if(u){let d=e()._balances,m=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let g={blockChain:h.asset.blockchain,balances:[h],address:l},f={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};ks(f,g,d);let T=ws(g,e);m=vs(m,T),d={...d,...T}}),t(h=>({_balances:{...h._balances,...d},_aggregatedBalances:m}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(i=>{let a=!!o.find(c=>c.chain===i.chain&&c.walletType!==i.walletType&&i.selected),s=!!o.find(c=>c.chain===i.chain&&c.walletType===i.walletType&&!i.selected);return a?{...i,selected:!1}:s?{...i,selected:!0}:i});t({connectedWallets:n})},newWalletConnected:async(o,n,i,a)=>{let s=o[0];s&&(ge.emit("walletEvent",{type:"connect",payload:{walletType:s.walletType,accounts:o,chain:s.chain??null,walletName:a?.walletName??s.walletType}}),e().addConnectedWallet(o,n,i),e().fetchBalances(o))},removeBalancesForWallet:(o,n)=>{let i={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Es(i,[o],n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(i=>i.walletType===o);if(ge.emit("walletEvent",{type:"disconnect",payload:{walletType:o,walletName:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let i=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:i})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let i=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(i=i.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=i.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(c=>a.includes(c.chain)?(a=a.filter(l=>l!==c.chain),{...c,selected:!0}):c);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:i=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),i&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0||!o[0])return;let i=[...new Set(o.map(l=>l.walletType))];e().setConnectedWalletAsRefetching(o);let a=o.map(l=>({address:l.address,blockchain:l.chain})),s;try{s=await dt().getWalletsDetails(a)}catch(l){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${l}`);return}let c=s.wallets;if(c){let l=e()._balances,p=e()._aggregatedBalances;c.forEach(d=>{if(d.failed)return;let m={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};ks(m,d,l);let{_balances:h,_aggregatedBalances:g}=Es(m,i,{chains:[d.blockChain]});if(p=g,l=h,!e().connectedWallets.find(T=>i.includes(T.walletType)&&T.address===d.address&&T.chain===d.blockChain))return;let f=ws(d,e);p=vs(p,f),l={...l,...f}}),t(d=>({_balances:{...d._balances,...l},_aggregatedBalances:p})),e().setConnectedWalletRetrievedData(o,c);let{retryOnFailedBalances:u=!0}=n||{};if(u){let d=c.filter(m=>m.failed).map(m=>{let h=e().connectedWallets.find(g=>g.chain===m.blockChain&&g.address)?.walletType;return h?{chain:m.blockChain,walletType:h,address:m.address}:null}).filter(m=>!!m);d.length>0&&await e().fetchMainTokensBalances(d,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),i=Xt(o),a=e()._aggregatedBalances[i]||[];if(a.length===0||!a[0])return null;let s=a[0];if(a.length===1&&n[s])return n[s];let c=n[a[0]];if(!c)return null;let l=c;return a.forEach(p=>{let u=n[p];if(!u)return;let d=new bs(u.amount),m=new bs(l.amount);d.isGreaterThan(m)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(_o);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>MC(()=>e().connectedWallets.map(n=>{let i=e().getBalancesForWalletAddress(n.address),a=Object.keys(i);return{...n,balances:a.reduce((s,c)=>{let l=i[c],p=tr(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new bs(l.amount).shiftedBy(-l.decimals):pe;s.push({chain:n.chain,symbol:p.symbol,ticker:p.symbol,address:p.address,rawAmount:l.amount,decimal:l.decimals,amount:d.toString(),isSupported:!!u,logo:u?.image||null,usdPrice:u?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Vu(t){return DC()($C((...e)=>({...Gu(...e),...Fu(...e),...zu(...e),...Gp(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,quoteTokensRate:e.quoteTokensRate}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(i=>({...i,warning:!0}))),n}}))}r(Vu,"createAppStore");var Ku=OC(null);function S(){let t=UC(Ku);if(zC(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}r(S,"useAppStore");function ju(t){let e=QC();return e.current||(e.current=Vu(t.config)),FC.createElement(Ku.Provider,{value:e.current},t.children)}r(ju,"AppStoreProvider");function oe(t){ge.emit("uiEvent",t)}r(oe,"emitUiEvent");function Xu(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};oe({type:t.type,payload:n}),o||e()}r(Xu,"emitPreventableEvent");function hn(t){ge.emit("quoteEvent",t)}r(hn,"emitQuoteEvent");function Yu(t){ge.emit("walletEvent",{type:"detected",payload:t})}r(Yu,"emitWalletDetected");var Ju=new Set,GC=new Set([Dt.LEDGER,Dt.TREZOR,Dt.WALLET_CONNECT_2,Dt.TON_CONNECT,Dt.DEFAULT]),VC=new Set([Dt.DEFAULT,Dt.WALLET_CONNECT_2,Dt.LEDGER]);function xt(t){let{chain:e}=t||{},{getAvailableProviders:o}=S(),{state:n,getWalletInfo:i}=HC(),{handleDisconnect:a}=ln(),s=zp(o()),c=wu(n,i,s,e);c=uu()?c.filter(m=>m.showOnMobile!==!1&&n(m.type).installed):c;let l=xu(c);Zu(()=>{c.forEach(m=>{if(GC.has(m.type))return;m.state!==Ci.NOT_INSTALLED&&!Ju.has(m.type)&&(Ju.add(m.type),Yu({walletName:m.type}))})},[gs(c)]);let p=qC(()=>{let m=c?.filter(h=>h.state===Ci.CONNECTING)||[];for(let h of m)a(h)},[gs(c)]);Zu(()=>()=>{p()},[]);let u=r(m=>{let h=m.find(f=>f.type===Dt.DEFAULT);return!h||h.state===Ci.NOT_INSTALLED?!1:m.filter(f=>f.state!=Ci.NOT_INSTALLED&&!VC.has(f.type)&&i(f.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=r(m=>m==Dt.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(m=>!d(m.type)),terminateConnectingWallets:p}}r(xt,"useWalletList");import{Modal as YC}from"@rango-dev/ui";import ZC from"react";import{create as XC}from"zustand";var Ru="rango-widget";var or=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(Ru),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{r(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 jC=r(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),mo=jC;var re=mo(XC()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,showCompactTokenSelector:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:i}=e();!i&&n?t({showActivateTabModal:!0}):(i||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})},setShowCompactTokenSelector:o=>{t({showCompactTokenSelector:o})}}))),Fo=new or({onInit:()=>re.setState({tabManagerInitiated:!0}),onClaim:()=>re.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>re.setState({isActiveTab:!1})});function ie(t){let{watermark:e}=re();return ZC.createElement(YC,{hasWatermark:e==="FULL",...t},t.children)}r(ie,"WatermarkedModal");import{i18n as Tn}from"@lingui/core";import{getSupportedChainsFromNamespace as dk}from"@rango-dev/internal-blockchains";import{Alert as mk,Button as fk,Divider as Cn,Image as gk,MessageBox as hk,RadioRoot as yk,WalletImageContainer as Sk}from"@rango-dev/ui";import le,{useEffect as Tk,useMemo as Ck,useState as kk}from"react";import{i18n as tk}from"@lingui/core";import{Typography as sd}from"@rango-dev/ui";import yn from"react";function ki(t,e){return t.find(o=>o.name===e)?.logo}r(ki,"getBlockchainLogo");import{darkTheme as JC,Image as RC,styled as Yt,Typography as ek}from"@rango-dev/ui";var wi=Yt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${JC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),vi=Yt("div",{display:"flex",gap:"$8",alignItems:"center"}),td=Yt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),od=Yt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),nd=Yt("div",{display:"flex",gap:"$6",alignItems:"center"}),rd=Yt("div",{paddingLeft:"48px"}),id=Yt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),ad=Yt(ek,{maxWidth:"100px",whiteSpace:"nowrap"}),Ei=Yt(RC,{variants:{disabled:{true:{opacity:"0.5"}}}});function bi(t){let{namespace:e}=t,o=S().blockchains();return yn.createElement(wi,{unsupported:!0},yn.createElement(vi,null,yn.createElement(Ei,{src:ki(o,e.id),size:40,disabled:!0}),yn.createElement(od,null,yn.createElement(sd,{variant:"label",size:"large"},e.label),yn.createElement(sd,{variant:"body",size:"xsmall"},tk.t("(Currently not supported)")))))}r(bi,"NamespaceUnsupportedItem");import{Checkbox as ck,Radio as pk}from"@rango-dev/ui";import Ns from"react";import{i18n as As}from"@lingui/core";import{getSupportedChainsFromNamespace as nk}from"@rango-dev/internal-blockchains";import{ChevronDownIcon as rk,ChevronUpIcon as ik,Divider as ak,Typography as nr}from"@rango-dev/ui";import We,{useEffect as sk,useState as lk}from"react";import{Image as cd,Tooltip as pd,Typography as ok}from"@rango-dev/ui";import $t from"react";import{styled as ld}from"@rango-dev/ui";var xs=ld("div",{display:"flex",alignItems:"center",padding:0,margin:0}),xi=ld("div",{marginLeft:"-5px",listStyleType:"none",backgroundColor:"$background",borderRadius:"$lg",minWidth:"15px",height:"15px",variants:{firstItem:{true:{marginLeft:0}}},display:"flex",alignItems:"center",justifyContent:"center"});var Is=3;function ud(t){let{chains:e}=t;return $t.createElement(xs,{id:"widget-supported-chains-container"},e.slice(0,Is).map((o,n)=>$t.createElement(pd,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},$t.createElement(xi,{firstItem:n===0},$t.createElement(cd,{src:o.logo,size:15})))),e.length>Is&&$t.createElement(pd,{container:W(),side:"bottom",align:"start",sideOffset:4,content:$t.createElement(xs,null,e.map((o,n)=>$t.createElement(xi,{key:o.name,firstItem:n===0},$t.createElement(cd,{src:o.logo,size:15}))))},$t.createElement(xi,null,$t.createElement(ok,{variant:"body",size:"xsmall"},"+",e.length-Is))))}r(ud,"SupportedChainsList");function Oo(t){let{namespace:e,error:o,suffix:n,connected:i,address:a,onClick:s}=t,[c,l]=lk(!1),p=S().blockchains();sk(()=>l(!1),[o]);let u=nk(e,p),d=!o&&!i&&u.length>1;return We.createElement(wi,{hasError:!!o,clickable:!!s,onClick:s},We.createElement(vi,null,We.createElement(Ei,{src:ki(p,e.id),size:40}),We.createElement(td,{showSupportedChains:d||i||!!o},We.createElement(nd,null,We.createElement(nr,{variant:"label",size:"large"},e.label),i&&We.createElement(nr,{variant:"body",size:"small",color:"success500"},As.t("Connected")),!!o&&We.createElement(nr,{variant:"body",size:"small",color:"error500"},As.t("Connection failed"))),d&&We.createElement(ud,{chains:u}),i&&We.createElement(ad,{variant:"body",size:"small",color:"neutral700"},a),o&&We.createElement(id,{onClick:()=>l(m=>!m)},We.createElement(nr,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},As.t("See why")),c?We.createElement(ik,{size:12,color:"gray"}):We.createElement(rk,{size:12,color:"gray"}))),n),!!o&&c&&We.createElement(We.Fragment,null,We.createElement(ak,{size:4}),We.createElement(rd,null,We.createElement(nr,{variant:"body",size:"small",color:"neutral700"},o))))}r(Oo,"NamespaceItem");function dd(t){let{onClick:e,type:o,namespace:n}=t;return Ns.createElement(Oo,{namespace:n,onClick:e,suffix:o==="radio"?Ns.createElement(pk,{value:n.value}):Ns.createElement(ck,{checked:t.value})})}r(dd,"NamespaceListItem");import{Button as uk,styled as md}from"@rango-dev/ui";var Ii=md("ul",{padding:0,paddingBottom:"$20",margin:0}),Sn=md(uk,{minHeight:"$40"});function rr(t){let{targetWallet:e}=t.value,o=e.properties?.find(g=>g.name==="namespaces"),n=o?.value.selection==="single",i=o?.value,a=e.image,s=S().blockchains(),[c,l]=kk([]),p=Ck(()=>i?.data.filter(g=>!g.unsupported),[e?.type]),u=r(g=>{l(n?[g]:f=>f.includes(g)?f.filter(T=>T!==g):f.concat(g))},"onSelect"),d=p?.length===c.length,m=r(()=>{if(n)throw new Error("onSelectAll should not be called on single selection mode.");d?l([]):p&&l(p.map(g=>g.value))},"onSelectAll"),h=r(g=>n?le.createElement(yk,{value:c?.[0]},g):le.createElement(le.Fragment,null,g),"wrapRadioRoot");return Tk(()=>{if(!n&&p)if(t.value.defaultSelectedChains?.length){let g=p.filter(f=>dk(f,s).some(T=>t.value.defaultSelectedChains?.includes(T.name)));l(g.map(f=>f.value))}else l(p.map(g=>g.value))},[]),le.createElement(le.Fragment,null,le.createElement(hk,{type:"info",title:Tn.t("Connect {wallet}",{wallet:e.title}),description:Tn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(Sk,null,le.createElement(gk,{src:a,size:45}))}),n?le.createElement(le.Fragment,null,le.createElement(Cn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(mk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:Tn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(fk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:m},d?Tn.t("Deselect all"):Tn.t("Select all")),le.createElement(Cn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(Ii,null,h(le.createElement(le.Fragment,null,i?.data.map((g,f,T)=>le.createElement(le.Fragment,{key:g.id},g.unsupported?le.createElement(bi,{namespace:g}):le.createElement(dd,{value:c.includes(g.value),namespace:g,type:n?"radio":"checkbox",onClick:()=>u(g.value)}),f!==T.length-1&&le.createElement(Cn,{size:10})))))),le.createElement(Cn,{size:20}),le.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!c.length,onClick:()=>t.onConfirm(c)},Tn.t("Connect")))}r(rr,"Namespaces");import{i18n as ir}from"@lingui/core";import{Alert as Ak,Button as Nk,Divider as kn,Image as Wk,MessageBox as Pk,WalletImageContainer as Lk}from"@rango-dev/ui";import{useWallets as Bk}from"@rango-dev/wallets-react";import me from"react";import{styled as wk}from"@rango-dev/ui";var fd=wk("div",{display:"flex",justifyContent:"end"});import{i18n as Ws}from"@lingui/core";import{Button as vk,Spinner as Ek}from"@rango-dev/ui";import Ps,{useLayoutEffect as bk,useRef as xk,useState as Ik}from"react";function gd(t){let{namespace:e,initialConnect:o,disabled:n,state:i,handleConnect:a,handleDisconnect:s}=t,[c,l]=Ik(null),p=xk(!1);bk(()=>{o&&!p.current&&u()},[]);let u=r(async g=>{try{p.current=!0,await a(g)}catch(f){l(Tt(f)??f)}finally{p.current=!1}},"handleConnectNamespace"),d=r(async()=>{l(null),i.connected?await s():u({shouldAskForDerivationPath:!0})},"handleButtonClick"),m=r(()=>{let g=i.accounts?.[0]?.split(":"),f=g?.[g.length-1];return!i.connected||!f?null:uo(f)},"getConnectedAddress"),h=r(()=>i.connected?Ws.t("Disconnect"):c?Ws.t("Try again"):Ws.t("Connect"),"getButtonText");return Ps.createElement(Oo,{namespace:e,connected:i.connected,error:c?.message,address:m(),suffix:i.connecting?Ps.createElement(Ek,{color:"info"}):Ps.createElement(vk,{id:"widget-name-space-connect-btn",variant:"ghost",type:i.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}r(gd,"NamespaceDetachedItem");function ar(t){let{value:e,selectedNamespaces:o,onConfirm:n,confirmText:i=ir.t("Done"),onDisconnectWallet:a,navigateToDerivationPath:s}=t,{targetWallet:c}=e,{connect:l,disconnect:p,state:u}=Bk(),d=c.type,m=u(d),h=c.properties?.find(w=>w.name==="namespaces"),g=c.properties?.find(w=>w.name==="derivationPath"),f=h?.value.selection==="single",T=r(async(w,v)=>{f&&await p(d),g&&v?.shouldAskForDerivationPath?s(w):await l(d,[{namespace:w,network:"",derivationPath:v?.derivationPath??void 0}])},"handleConnectNamespace"),C=r(async w=>{await p(d,[w])},"handleDisconnectNamespace"),y=r(()=>f?me.createElement(me.Fragment,null,me.createElement(kn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(Ak,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:ir.t("This wallet can only connect to one chain at a time.")}),me.createElement(kn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(kn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(fd,null,me.createElement(Nk,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:m.connecting||!m.connected,onClick:a},ir.t("Disconnect wallet"))),me.createElement(kn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),k=r(w=>{if(w.unsupported)return me.createElement(bi,{namespace:w});let v=o?.find(b=>b.namespace===w.value),N=m.namespaces?.get(w.value);if(!N)throw new Error(`State for ${w.value} was not found!`);let I=f&&m.connecting;return me.createElement(gd,{namespace:w,initialConnect:!!v,disabled:I,state:N,handleConnect:async b=>T(w.value,{derivationPath:v?.derivationPath,shouldAskForDerivationPath:b?.shouldAskForDerivationPath}),handleDisconnect:async()=>C(w.value)})},"renderNamespaceItem");return me.createElement(me.Fragment,null,me.createElement(Pk,{type:"info",title:ir.t("Connect {wallet}",{wallet:c.title}),description:ir.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:me.createElement(Lk,null,me.createElement(Wk,{src:c.image,size:45}))}),y(),me.createElement(Ii,{id:"widget-detached-namespace-list"},c.needsNamespace?.data.map((w,v,N)=>me.createElement(me.Fragment,{key:w.id},k(w),v!==N.length-1&&me.createElement(kn,{size:10})))),me.createElement(kn,{size:20}),me.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},i))}r(ar,"Detached");import{i18n as wn}from"@lingui/core";import{Divider as Dk,Image as $k,MessageBox as Fk,Select as Ok,TextField as Uk}from"@rango-dev/ui";import{useWallets as zk}from"@rango-dev/wallets-react";import It,{useEffect as Qk,useMemo as Hk,useState as Sd}from"react";var Ai={id:"custom",label:"Custom",generateDerivationPath:t=>t};function hd(t,e){let o=t.filter(n=>n.namespace===e);return o.length?[...o,Ai]:[]}r(hd,"getDerivationPaths");import{Button as _k,styled as Ls,Typography as Mk}from"@rango-dev/ui";var yd=Ls("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Bs=Ls(Mk,{paddingLeft:"$10"}),_s={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},SM=Ls(_k,{minHeight:"$40"});var Td="0";function sr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:i}=t.value,{getWalletInfo:a}=zk(),[s,c]=Sd(null),[l,p]=Sd(Td),u=s===Ai.id,d=Hk(()=>hd(a(i).needsDerivationPath?.data??[],o),[i,o]),m=r(({value:g})=>{let f=d?.find(T=>T.id===g);f&&(s===Ai.id&&Number.isNaN(Number(l))&&p(Td),c(f.id))},"handleDerivationPathItemClick"),h=r(()=>{let g=d.find(f=>f.id===s);if(g)e(g.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return Qk(()=>{c(d[0]?.id||null)},[d]),It.createElement(It.Fragment,null,It.createElement(Fk,{type:"info",title:wn.t("Select Derivation Path"),description:wn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:i}}),icon:It.createElement($k,{src:n,size:45})}),It.createElement(yd,{className:"_derivation_path_inputs_container"},It.createElement(Bs,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},wn.t("Choose Derivation Path Template")),It.createElement(Ok,{id:"widget-derivation-path-template-select",value:s||"",options:d.map(g=>({value:g.id,label:g.label})),variant:"filled",handleItemClick:m,styles:{trigger:_s}}),It.createElement(Dk,{size:20}),It.createElement(Bs,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},u?wn.t("Enter Path"):wn.t("Enter Index")),It.createElement(Uk,{id:"widget-derivation-path-template-input",type:u?"text":"number",variant:"contained",value:l,onChange:g=>p(g.target.value),style:_s})),It.createElement(Sn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!d||!s||!l},wn.t("Confirm")))}r(sr,"DerivationPath");import{i18n as vn}from"@lingui/core";import{Image as Vk,MessageBox as Ds,WalletImageContainer as Kk,WalletState as jk}from"@rango-dev/ui";import{useWallets as Xk}from"@rango-dev/wallets-react";import Uo from"react";import{keyframes as qk,styled as Ms}from"@rango-dev/ui";var WM=Ms("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Cd=Ms("div",{position:"relative"}),Gk=qk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),kd=Ms("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Gk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function $s(t){let{wallet:e,error:o}=t,{type:n,image:i}=e,{state:a,getWalletInfo:s}=Xk();return Jn(s(n),a(n))===jk.CONNECTED?Uo.createElement(Ds,{type:"success",title:vn.t("Wallet Connected"),description:vn.t("Your wallet is connected, you can use it to swap.")}):o?Uo.createElement(Ds,{type:"error",title:vn.t("Failed to Connect"),description:o||vn.t("Your wallet is not connected. Please try again.")}):Uo.createElement(Ds,{type:"loading",title:vn.t("Connecting to your wallet"),description:vn.t("Click connect in your wallet popup."),icon:Uo.createElement(Cd,null,Uo.createElement(Kk,null,Uo.createElement(Vk,{src:i,size:45})),Uo.createElement(kd,null))})}r($s,"ConnectStatus");function wd(t,e){return t().status==="init"&&!!e}r(wd,"isOnStatus");function lr(t){return t().status==="namespace"}r(lr,"isOnNamespace");function cr(t){return t().status==="derivationPath"}r(cr,"isOnDerivationPath");function Po(t){return t().status==="detached"}r(Po,"isOnDetached");var Rk=3e3,ew=300;function pr(t){let e=Jk(),[o,n]=vd(!1),[i,a]=vd(),s=r(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=xt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:m,handleDisconnect:h}=ln(),g=r(v=>{u(t.wallet,v).then(k).catch(s)},"handleConfirmNamespaces"),f=r(()=>{C()},"handleDetachedConfirm"),T=r(v=>{if(!v)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(t.wallet,v).then(k).catch(s)},"handleDerivationPathConfirm"),C=r(()=>{n(!1)},"handleClosingModal"),y=r(()=>{a(void 0),m(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=r((v,N)=>{let I=v.status==="connected",b=["disconnected","disconnected-unhandled"].includes(v.status);I?(t.onConnect?.(),N||(e.current=setTimeout(C,Rk))):b&&C()},"afterConnected"),w=r(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return Zk(()=>{if(t.wallet){y();let v=!1,N=!0;r(()=>{setTimeout(()=>{N=!1,v||n(!0)},ew)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(b=>{["namespace","Detached","derivation-path"].includes(b.status)||(v=!0),k(b,N)}).catch(s)}},[t.wallet]),fo.createElement(ie,{id:t.id,open:o,onClose:C,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},wd(d,t.wallet)&&fo.createElement(fo.Fragment,null,fo.createElement($s,{wallet:{type:t.wallet.type,image:t.wallet.image},error:i}),fo.createElement(Yk,{direction:"vertical",size:32})),lr(d)&&fo.createElement(rr,{onConfirm:g,value:d().namespace}),cr(d)&&fo.createElement(sr,{onConfirm:T,value:d().derivationPath}),Po(d)&&fo.createElement(ar,{onConfirm:f,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}r(pr,"StatefulConnectModal");import ns from"react";import tw,{Fragment as ow}from"react";import{MemoryRouter as nw,useInRouterContext as rw}from"react-router";function Ni({children:t}){let o=rw()?ow:nw;return tw.createElement(o,null,t)}r(Ni,"AppRouter");import{I18nManager as Z0}from"@rango-dev/ui";import Np from"react";import Qe from"react";import{useRoutes as P0}from"react-router-dom";var $={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 bn,useRef as Di}from"react";import at from"bignumber.js";import{create as em}from"zustand";import{subscribeWithSelector as tm}from"zustand/middleware";import{createContext as iw,useContext as aw}from"react";var Ed=iw({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=aw(Ed);return{swapMode:t,isMultiMode:e}}r(rt,"useSwapMode");import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as cw,RouteEventType as $D}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as ur}from"rango-types";import{i18n as Wi}from"@lingui/core";var zo=r(()=>({connectWallet:Wi.t("Connect Wallet"),swap:Wi.t("Swap"),swapAnyway:Wi.t("Swap anyway"),ethWarning:Wi.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Fs(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]}r(Fs,"getFeeLabel");var Os=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],bd=100,xd=30,Id=15,Ad=60;var Nd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Wd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as lw}from"@rango-dev/queue-manager-rango-preset";import vD from"bignumber.js";function Ld(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}r(Ld,"getRequiredBalanceOfWallet");function Jt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}r(Jt,"getPriceImpactLevel");function Pi(t,e,o){let n=t.steps[0],i=t.steps[t.steps.length-1],a=lw(t.steps);if(!i||!n)return{fromBlockchain:null,fromToken:void 0,toBlockchain:null,toToken:void 0,inputAmount:""};let s={blockchain:i.toBlockchain,symbol:i.toSymbol,address:i.toSymbolAddress},c=Lo(a?a.toBlockchain:n.fromBlockchain,e),l=Lo(i.toBlockchain,e),p=o(a?{blockchain:c?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:c?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),u=o(s),d=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:c,fromToken:p,toBlockchain:l,toToken:u,inputAmount:d}}r(Pi,"createRetryQuote");function En(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:i}=t,a=Qo(o),s=it(o);if(o&&a&&s){let p=Zt(a.toString(),s.toString());if(!!p&&$d(a,p)){let d=Bi(o?.swaps,n),m=Jt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:m}}}if(e&&Ud(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Zt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=_i(o.swaps),l=i>dn;if(Od(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<i)return{type:3,slippage:i.toString()}}else return{type:2,recommendedSlippages:Fd(o,i),minRequiredSlippage:c};return null}r(En,"generateQuoteWarnings");function Bd(t){return![4].includes(t.type)}r(Bd,"isQuoteWarningConfirmationRequired");function Zt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Us(t.toString(),e.toString());return n&&n<0?n:null}r(Zt,"getPriceImpact");var _d=r(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"),Li=r((t,e)=>e.sort((o,n)=>{let i=r(p=>p.scores?.find(u=>u.preferenceType===t)?.score??0,"getScore"),a=i(o),s=i(n);if(a!==s)return s-a;let c=o.requestId.toLowerCase(),l=n.requestId.toLowerCase();return c.localeCompare(l)}),"sortQuotesBy"),Md=r((t,e,o)=>{let n=e[0];if(!e.length||!n)return null;if(!t)return{requestAmount:o,validationStatus:null,...n};let i=new Set(t.swaps.map(s=>s.swapperId)),a=e.find(s=>{let c=new Set(s.swaps.map(l=>l.swapperId));return Array.from(i).every(l=>c.has(l))});return{requestAmount:o,validationStatus:null,...a||n}},"getDefaultQuote"),Dd=r(t=>{let e=r((o,n)=>{let i=Os.indexOf(o.value),a=Os.indexOf(n.value);return i!==-1&&a!==-1?i-a:i!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function $d(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return Nd.some(({threshold:n,minInput:i})=>o<=n&&t.gte(new Ge(i)))}r($d,"hasHighValueLoss");function zd(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Ge(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ge(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}r(zd,"hasLimitError");function Qd(t){let e=(t||[]).filter(c=>{let l=c.fromAmountMinValue?new Ge(c.fromAmountMinValue):null,p=c.fromAmountMaxValue?new Ge(c.fromAmountMaxValue):null;return c.fromAmountRestrictionType==="EXCLUSIVE"?l?.gte(c.fromAmount)||p?.lte(c.fromAmount):l?.gt(c.fromAmount)||p?.lt(c.fromAmount)})[0];if(!e)return{swap:void 0,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new Ge(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ge(e.fromAmountMaxValue):null,i=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!i&&o&&o.gt(e.fromAmount)?(a=vt.t({id:"Required: >= {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=te().bridgeLimitErrors.increaseAmount):i&&o&&o.gte(e.fromAmount)&&(a=vt.t({id:"Required: > {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=te().bridgeLimitErrors.increaseAmount),!i&&n&&n.lt(e.fromAmount)?(a=vt.t({id:"Required: <= {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=te().bridgeLimitErrors.decreaseAmount):i&&n&&n.lte(e.fromAmount)&&(a=vt.t({id:"Required: < {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=te().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}r(Qd,"getLimitErrorMessage");function Hd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:i,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:zo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!i||i==="0"?{title:zo().swap,action:"confirm-swap",disabled:!0}:s?{title:zo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:zo().ethWarning,action:"confirm-warning",disabled:!1}:{title:zo().swap,action:"confirm-swap",disabled:!1}:{title:zo().connectWallet,action:"connect-wallet",disabled:!1}}r(Hd,"getSwapButtonState");function zs(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(pe))&&e&&e!=="0"&&n!==0)}r(zs,"canComputePriceImpact");function Qs(t,e){let o=pe;for(let n=0;n<t.fee.length;n++){let i=t.fee[n];if(!i||i.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(i.asset)?.usdPrice||null;o=o.plus(new Ge(i.amount).multipliedBy(a||0))}return o}r(Qs,"getUsdFeeOfStep");function Bi(t,e){return t.reduce((o,n)=>o.plus(Qs(n,e)),pe)}r(Bi,"getTotalFeeInUsd");function Hs(t){let e=pe,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}r(Hs,"getUsdFee");function qs(t){return t.reduce((e,o)=>e.plus(Hs(o)),pe)}r(qs,"getTotalFeesInUsd");function qd(t){return t.reduce((e,o)=>{for(let n of o.fee){let i=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[i]=[...a[i]||[],n]}return e},{payable:{},nonePayable:{}})}r(qd,"getFeesGroup");function Gd(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?Object.fromEntries(e):null}r(Gd,"checkSlippageErrors");function Fd(t,e){let o=new Map;return t?.swaps.forEach((n,i)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(i,n.recommendedSlippage.slippage)}),o.size>0?Object.fromEntries(o):null}r(Fd,"checkSlippageWarnings");function _i(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}r(_i,"getMinRequiredSlippage");function Od(t,e){return e?parseFloat(t)>=parseFloat(e):!0}r(Od,"hasProperSlippage");function Vd(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:i,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:c,excludeLiquiditySources:l,slippage:p,affiliateRef:u,affiliatePercent:d,affiliateWallets:m,destination:h,contractCall:g}=t,f=a?.reduce((y,k)=>(y[k.chain]=k.address,y),{}),T=[];return i?.forEach(y=>{T.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:d??void 0,affiliateWallets:m??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:T,selectedWallets:f??{},slippage:p.toString(),contractCall:g,...h&&{destination:h},...l&&{swapperGroups:s.concat(c??[]),swappersGroupsExclude:!0},...!l&&{swapperGroups:c?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}r(Vd,"createQuoteRequestBody");function Kd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}r(Kd,"getWalletsForNewSwap");function Qo(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}r(Qo,"getUsdInputFrom");function it(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1]?.to.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}r(it,"getUsdOutputFrom");function Us(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(bd).toNumber()}r(Us,"getPercentageChange");function Ud(t,e){let o=Qo(t),n=it(t),i=it(e);if(!o||!n||!i)return!1;let a=Us(n.toString(),i.toString());return Wd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}r(Ud,"isOutputAmountChangedExcessively");function jd(t,e,o){let n=t.validationStatus,i=Do({filter:"required",quote:t});return e.sort((s,c)=>i.indexOf(s.chain)-i.indexOf(c.chain)).flatMap(s=>Ld(s,n)||[]).filter(s=>!s.ok).map(s=>{let c=s.asset.symbol,l=M(new Ge(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=M(new Ge(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=vt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=vt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=vt.t(" for input and network fee")),vt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:p,symbol:c,reason:u,currentAmount:l,blockchain:Ct(s.asset.blockchain,o)}})})}r(jd,"generateBalanceWarnings");function dr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==ur.NetworkChanged}r(dr,"isNetworkStatusInWarningState");function Xd(t,e,o){let n="bellow button or",i=t.extraMessage,a=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(n)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(n,"")),dr(e)){i=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?cw(t,e):null)?.walletType,d=u?o?.(u)?.name:null;switch(e?.networkStatus){case ur.WaitingForConnectingWallet:i=d?vt.t("Connect {wallet}",{wallet:d}):i;break;case ur.WaitingForQueue:i=i||vt.t("Waiting for other running tasks to be finished");break;case ur.WaitingForNetworkChange:i=i||vt.t("Waiting for changing wallet network");break;case ur.NetworkChangeFailed:i=i||vt.t("The network switch could not be completed. Please try again, or switch the network manually in your wallet.");break;default:i=i||"";break}}a=a||"",i=i||"";let c=Tt(i)??Tt(a);c&&(a=[i,a].filter(Boolean).join(`
|
|
2
|
+
`),i=c.message);let l=i?.indexOf("code")!==-1&&i?.indexOf("reason")!==-1;return{shortMessage:i,detailedMessage:{content:a,long:l}}}r(Xd,"getSwapMessages");function Yd(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}r(Yd,"getLastConvertedTokenInFailedSwap");function Zd(t){return t.status==="failed"}r(Zd,"shouldRetrySwap");function Jd(t,e,o,n,i,a){if(!n||t)return!0;let s=Do({filter:"all",quote:n}),c=Do({filter:"required",quote:n}),l=s.every(d=>i.some(m=>m.chain===d)),p=c.every(d=>i.some(m=>m.chain===d)),u=o&&a?Bo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}r(Jd,"isConfirmSwapDisabled");function Rd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}r(Rd,"isTokensIdentical");var Mi=r((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),om=r(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new at(0),outputUsdValue:new at(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,i=pe,a=o.inputUsdValue;return Zn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=Qo(e)??pe,i=it(e)??pe),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:i,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new at(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new at(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new at(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:Mi(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 at(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),sanitizeInputAmount:e=>{let o=ku(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=yu(e);ci(e)||(o=du(o),o=mu(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new at(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Mi(n.fromToken,o)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:i,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Mi(n??null,s),outputUsdValue:new at(0),toBlockchain:i,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?Mi(e.toToken,e.outputAmount?.toString()||""):new at(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new at(0),inputUsdValue:new at(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new at(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})}),"initializer"),nm=em()(tm(om)),rm=em()(tm(om)),pw=mo(nm),uw=mo(rm);function z(){let{swapMode:t}=rt();return mo(t==="refuel"?rm:nm)}r(z,"useQuoteStore");var im=r((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ge.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&&ge.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})},"subscribeCallback"),am=pw.subscribe(im),sm=uw.subscribe(im);function lm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:i,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=S().config,d=S().fetchStatus,m=S().blockchains(),{findToken:h}=S(),{setAffiliateRef:g,setAffiliatePercent:f,setAffiliateWallets:T}=S(),C=u?.from?.tokens,y=u?.from?.blockchains,k=u?.to?.tokens,w=u?.to?.blockchains,v=Di(void 0),N=Di(void 0),I=Di(void 0),b=Di(void 0);bn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),bn(()=>{if(d==="success"){i();let x=m.find(A=>A.name===u?.from?.blockchain),E=u?.from?.token,L=E&&h(E);(x||!x&&I.current)&&n(x??null),L?a({token:L,meta:{blockchains:m}}):!L&&v.current&&a({token:null}),I.current=u?.from?.blockchain,v.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,d]),bn(()=>{Ss(s,C)&&a({token:null}),Ts(l,y)&&n(null)},[C,y]),bn(()=>{Ss(c,k)&&a({token:null}),Ts(p,w)&&o(null)},[k,w]),bn(()=>{if(d==="success"){i();let x=m.find(A=>A.name===u?.to?.blockchain),E=u?.to?.token,L=E&&h(E);(x||!x&&b.current)&&o(x??null),L?e({token:L,meta:{blockchains:m}}):!L&&N.current&&e({token:null}),b.current=u?.to?.blockchain,N.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),bn(()=>{g(u?.affiliate?.ref??null),f(u?.affiliate?.percent??null),T(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}r(lm,"useSyncStoresWithConfig");import{useEffect as Ks,useRef as dw}from"react";import{useInRouterContext as mw,useLocation as fw,useSearchParams as gw}from"react-router-dom";function Gs(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}r(Gs,"convertTokenSearchParamToAsset");function Vs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}r(Vs,"tokenToSearchParam");function Xs(){let t=fw(),[e,o]=gw(),{fromBlockchain:n,toBlockchain:i,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:m}=z()(),h=S().fetchStatus,g=S().blockchains(),f=mw(),{updateIframe:T,updateCampaignMode:C}=S(),y=S().isInCampaignMode(),k=dw(),{findToken:w}=S(),v=r(()=>{let I={};for(let[P,Z]of e.entries())(P.startsWith("utm_")||P.startsWith("privy_"))&&(I[P]=Z);let b=e.get("fromAmount"),x=e.get("fromBlockchain"),E=e.get("fromToken"),L=e.get("toBlockchain"),A=e.get("toToken"),O=e.get("autoConnect"),q=e.get("clientUrl"),j=e.get("liquiditySources"),ee=e.get("blockchain");return{fromAmount:b,fromBlockchain:x,fromToken:E,toBlockchain:L,toToken:A,autoConnect:O,clientUrl:q,liquiditySources:j,extraQueryParams:I,blockchain:ee}},"getUrlSearchParams"),N=r(I=>{for(let b in I)I[b]||delete I[b];o(I,{replace:!0})},"updateUrlSearchParams");Ks(()=>{let{autoConnect:I,clientUrl:b,extraQueryParams:x,blockchain:E}=v();f&&h==="success"&&N({fromBlockchain:n?.name,fromToken:Vs(a),toBlockchain:i?.name,toToken:Vs(s),fromAmount:c,autoConnect:I??void 0,clientUrl:b??void 0,blockchain:E??void 0,liquiditySources:y?k.current:void 0,...x})},[t.pathname,c,n,a,i,s,y,h]),Ks(()=>{if(!f)return;let I=v();if(!k.current&&I.liquiditySources&&(k.current=I.liquiditySources),I.fromAmount&&m(I.fromAmount),h==="success"){let b=g.find(q=>q.name===I.fromBlockchain),x=I.fromToken&&b&&Gs(I.fromToken,b),E=x?w(x):void 0,L=g.find(q=>q.name===I.toBlockchain),A=I.toToken&&L&&Gs(I.toToken,L),O=A?w(A):void 0;b&&(l(b),E&&u({token:E,meta:{blockchains:g}})),L&&(p(L),O&&d({token:O,meta:{blockchains:g}}))}},[h]),Ks(()=>{let{clientUrl:I,liquiditySources:b}=v();T("clientUrl",I||void 0),C("liquiditySources",b?.split(",")??void 0)},[])}r(Xs,"useSyncUrlAndStore");import{i18n as An}from"@lingui/core";import{Alert as Dv,Button as $v,darkTheme as Fv,Divider as bl,DoneIcon as Ov,styled as Uv,TextField as zv,Typography as Qv}from"@rango-dev/ui";import Ke,{useState as Hv}from"react";import{useNavigate as qv,useSearchParams as Gv}from"react-router-dom";import{ChevronRightIcon as hw,Divider as mm,Image as yw,Typography as fm}from"@rango-dev/ui";import At from"react";import{darkTheme as cm,styled as Ys}from"@rango-dev/ui";var pm=Ys("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${cm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${cm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),um=Ys("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),dm=Ys("div",{display:"flex"});function Zs(t){let{onClick:e,value:o,title:n,hasLogo:i,placeholder:a,disabled:s}=t;return At.createElement(um,null,At.createElement(fm,{size:"large",variant:"label"},n),At.createElement(mm,{size:10}),At.createElement(pm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},At.createElement(dm,null,i&&At.createElement(At.Fragment,null,At.createElement(yw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),At.createElement(mm,{size:4,direction:"horizontal"})),At.createElement(fm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),At.createElement(hw,{size:12,color:"black"})))}r(Zs,"BlockchainSelectorButton");import{i18n as tl}from"@lingui/core";import{Button as bw,Divider as Tm,MessageBox as xw}from"@rango-dev/ui";import go,{useEffect as Cm,useState as ol}from"react";import{i18n as $i}from"@lingui/core";import{Divider as Ho,ExternalLinkIcon as Cw,Image as kw,InfoIcon as ww,Tooltip as vw,Typography as fr}from"@rango-dev/ui";import fe from"react";var gm="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as Sw,darkTheme as xn,styled as mr,Typography as Tw}from"@rango-dev/ui";var Js=mr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),hm=mr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${xn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}}}),Rs=mr(Sw,{minHeight:"$40"}),ym=mr(Tw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),Sm=mr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var Ew=9;function el(t){let{open:e,onClose:o,token:n,onExit:i,onSubmitClick:a,blockchain:s}=t,c=n.address?ni({contractAddress:n.address,blockchainMeta:s}):void 0,l=r(()=>window.open(gm,"_blank"),"onClickLearnMore");return fe.createElement(ie,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:i,container:W()},fe.createElement(hm,null,fe.createElement(kw,{src:n.image===""?ai:n.image,size:45,type:"circular"}),fe.createElement(Ho,{size:4}),fe.createElement(Sm,null,fe.createElement(ym,{variant:"title",size:"medium"},n.symbol),n.symbol.length>Ew&&fe.createElement(vw,{content:n.symbol,container:W()},fe.createElement(ww,{size:12,color:"gray"}))),fe.createElement(fr,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),fe.createElement(Ho,{size:4}),fe.createElement(fr,{variant:"body",size:"medium"},c?fe.createElement(Js,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(Cw,{size:12,color:"gray"})):fe.createElement(Js,null,n.address)),fe.createElement(Ho,{size:4}),n.coinSource&&fe.createElement(fr,{className:"_coin-source",variant:"body",size:"xsmall"},$i.t("via")," ",fe.createElement(fr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Ho,{size:"32"}),fe.createElement(fr,{size:"medium",variant:"body",className:"_custom-token-description"},$i.t("This token is not part of our verified token list. please verify its source and make sure to understand all associated risks before proceeding."))),fe.createElement(Ho,{size:40}),fe.createElement(Ho,{size:10}),fe.createElement(Rs,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},$i.t("Import Anyway")),fe.createElement(Ho,{size:10}),fe.createElement(Rs,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},$i.t("Learn More")))}r(el,"CustomTokenModal");function gr(t){let{token:e,blockchain:o,error:n,address:i,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=S(),[d,m]=ol(!1),[h,g]=ol(!1),[f,T]=ol(!1),C=r(()=>{o&&a?.({blockchain:o.name,tokenAddress:i})},"getCustomToken"),y=r(()=>{n?.type!=="network-error"&&s?.(),m(!1)},"closeErrorModal"),k=r(()=>{T(!0),y()},"handleErrorModalButtonClick"),w=r(()=>{f&&n?.type==="network-error"&&(T(!1),C()),l()},"handleExit"),v=r(()=>{e&&(u(e),c())},"handleSubmit");return Cm(()=>{n&&m(!0)},[n]),Cm(()=>{o&&e&&g(!0)},[o,e]),go.createElement(go.Fragment,null,go.createElement(ie,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},go.createElement(xw,{title:n?.title??"",type:"error",description:n?.message||tl.t("Failed Network, Please retry.")},go.createElement(Tm,{size:40}),go.createElement(Tm,{size:10}),go.createElement(bw,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:k},n?.type==="network-error"?tl.t("Retry"):tl.t("Add another custom token")))),o&&e&&go.createElement(el,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}r(gr,"ImportCustomToken");import{useManager as Wv}from"@rango-dev/queue-manager-react";import{BottomLogo as Pv,Divider as ef,Header as Lv}from"@rango-dev/ui";import Le,{useEffect as Ki,useLayoutEffect as Bv,useRef as tf,useState as of}from"react";import{useRef as Iw}from"react";function Fi(){return window.self!==window.top}r(Fi,"isAppLoadedIntoIframe");function nl(){let t=Iw(null),{iframe:e}=S(),o=Fi()&&e.clientUrl,n=r(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:r(s=>{t.current=new ResizeObserver(c=>{for(let l of c)n({type:"widget_height",data:{height:l.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:r(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}r(nl,"useIframe");import{useNavigate as Aw}from"react-router-dom";function Ve(){let t=Aw();return()=>t(-1)}r(Ve,"useNavigateBack");import{createTheme as pl,darkTheme as zw,lightTheme as Qw}from"@rango-dev/ui";import{useEffect as Hw,useState as qw}from"react";import{theme as Ow,darkColors as Uw}from"@rango-dev/ui";import ll from"react";var Oi=16,Ui=255,km=.11;function Nw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,i){return n+i+i},"")}`:`#${t}`}r(Nw,"expandShortHexColor");function Ww(t,e){return t.padStart(e,"0")}r(Ww,"pad");function rl(t){let e=Math.min(Math.max(Math.round(t),0),Ui);return Ww(e.toString(Oi),2)}r(rl,"intToHex");function Pw(t){return`#${rl(t.red)}${rl(t.green)}${rl(t.blue)}`}r(Pw,"rgbToHex");function Lw(t){let e=parseInt(t.slice(1,3),Oi),o=parseInt(t.slice(3,5),Oi),n=parseInt(t.slice(5,7),Oi);return{red:e,green:o,blue:n}}r(Lw,"hexToRGB");function Bw(t,e){let o=1-km*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}r(Bw,"generateShade");function _w(t,e){let o=km*e;return{red:t.red+(Ui-t.red)*o,green:t.green+(Ui-t.green)*o,blue:t.blue+(Ui-t.blue)*o}}r(_w,"generateTint");function Mw(t){return wm(t,Bw)}r(Mw,"calculateShades");function Dw(t){return wm(t,_w)}r(Dw,"calculateTints");function wm(t,e){let o=Lw(t),n=[];for(let i=1;i<9;i++)n.push(Pw(e(o,i)));return n}r(wm,"calculateColors");function il(t,e,o){let a=Dw(t).reverse().concat(t),s=Mw(t),c=a.concat(s),l={},p=c.length;for(let u=0;u<p;u++){let d=100+(o?p-1-u:u)*50,m=c[u];m&&(l[`${e}${d}`]=m)}return l}r(il,"createTintsAndShades");function al(t,e,o){let n={...t};for(let i in e){let a=e[i],s=i==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(i)&&!Tu(i)){let l=Nw(a);Object.assign(n,il(l,i,s))}}return{...n,...e}}r(al,"expandToGenerateThemeColors");var vm=r(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),$w=r(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=vm(o%52)+e;return vm(o%52)+e},"toAlphabeticName"),Fw=r((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),sl=r(t=>$w(Fw(5381,JSON.stringify(t))>>>0),"toHash");function cl(t){let e=Ow.colors,o={...e,...Uw},n,i;if(t?.light){let s={colors:al(e,t.light)};n={id:`${ys}-light-${sl(s)}`,tokens:s}}if(t?.dark){let s={colors:al(o,t.dark,{reverseNeutralRange:!0})};i={id:`${ys}-dark-${sl(s)}`,tokens:s}}return{light:n,dark:i}}r(cl,"customizedThemeTokens");function Em(t,e){if(t.length<=1)return t.map(({element:n,key:i})=>ll.cloneElement(n,{key:i}));let o=[];return t.forEach((n,i)=>{let{element:a,key:s}=n;if(o.push(ll.cloneElement(a,{key:s})),i<t.length-1){let c=`divider-${i}`;o.push(ll.cloneElement(e,{key:c}))}}),o}r(Em,"joinList");function bm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}r(bm,"doesWindowPreferDarkColorScheme");function ho(t){let{colors:e,fontFamily:o=eu,borderRadius:n=Lu,secondaryBorderRadius:i=Bu}=t,[a,s]=qw(bm()?"dark":"light"),{theme:c}=S(),{dark:l,light:p}=cl(e),u=pl({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${i}px`},fonts:{widget:o}}),d=[u.className,Qw.className],m=[u.className,zw.className];if(p){let g=pl(p.id,p.tokens);d.push(g.className)}if(l){let g=pl(l.id,l.tokens);m.push(g.className)}return Hw(()=>{let g=r(f=>{f.matches?s("dark"):s("light")},"switchThemeListener");return bm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:r(()=>{let g=d.join(" "),f=m.join(" ");return c==="auto"?a==="dark"?f:g:c==="dark"?f:g},"getActiveTheme"),mode:c==="auto"?a:c}}r(ho,"useTheme");var Et=r(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let i=o.list.getStorage();i?.swapDetails&&e.push({id:n,swap:i?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as xm}from"@lingui/core";import{Alert as Gw,Button as Vw}from"@rango-dev/ui";import Im from"react";function ul(t){return Im.createElement(Gw,{action:Im.createElement(Vw,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},xm.t("Activate this tab")),type:"warning",variant:"alarm",title:xm.t("Another tab is open and handles transactions.")})}r(ul,"ActivateTabAlert");import{i18n as dl}from"@lingui/core";import{Button as Kw,Divider as jw,MessageBox as Xw}from"@rango-dev/ui";import zi from"react";function ml(t){let{open:e,onClose:o,onConfirm:n}=t;return zi.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},zi.createElement(Xw,{title:dl.t("Activate current tab"),type:"warning",description:dl.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.")},zi.createElement(jw,{size:20}),zi.createElement(Kw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},dl.t("Confirm"))))}r(ml,"ActivateTabModal");import{ChevronLeftIcon as Jw}from"@rango-dev/ui";import Mm from"react";import{css as Yw,darkTheme as Am,IconButton as Zw,styled as qo}from"@rango-dev/ui";var Ft=qo(Zw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Am} &`]:{backgroundColor:"$neutral"}}}),Nm=qo("div",{position:"absolute",background:"$secondary500",[`.${Am} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),yo=qo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Wm=qo("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"}}}}),Pm=qo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Lm=qo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Bm=Yw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),_m=qo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function fl(t){return Mm.createElement(Ft,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Mm.createElement(Jw,{color:"black",size:16}))}r(fl,"BackButton");import{i18n as Rw}from"@lingui/core";import{Button as ev,Typography as tv}from"@rango-dev/ui";import gl from"react";function hl(t){return gl.createElement(yo,null,gl.createElement(ev,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},gl.createElement(tv,{variant:"label",size:"medium",color:"error500"},Rw.t("Cancel"))))}r(hl,"CancelButton");import{i18n as ov}from"@lingui/core";import{Image as nv,Tooltip as rv,WalletIcon as iv,WalletState as Dm}from"@rango-dev/ui";import Go from"react";function yl(t){let{list:e}=xt(),o=e.filter(i=>i.state===Dm.CONNECTED||i.state===Dm.PARTIALLY_CONNECTED),n=o.length?Go.createElement("div",{className:Bm()},o.map(i=>Go.createElement(_m,{key:i.title},Go.createElement(nv,{src:i.image,size:14})))):ov.t("Connect Wallet");return Go.createElement(rv,{container:t.container,side:"bottom",content:n},Go.createElement(Ft,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&Go.createElement(Nm,null),Go.createElement(iv,{size:18,color:"black"})))}r(yl,"WalletButton");import{i18n as Hi}from"@lingui/core";import{NotificationsIcon as kv,Popover as wv,SettingsIcon as vv,Tooltip as qi,TransactionIcon as Ev}from"@rango-dev/ui";import _e from"react";import{Notifications as cv}from"@rango-dev/ui";import pv from"react";import{useNavigate as uv}from"react-router-dom";import{create as av}from"zustand";import{persist as sv,subscribeWithSelector as lv}from"zustand/middleware";var Pe=mo(av()(sv(lv((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let i=n.steps[0],a=n.steps[n.steps.length-1];if(!i||!a)return;let s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:i.fromBlockchain,address:i.fromSymbolAddress,symbol:i.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},c=e().notifications.filter(l=>l.requestId!==n.requestId);t(()=>({notifications:[...c,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(i=>i.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((i,a)=>i.route.creationTime&&!a.route.creationTime?-1:!i.route.creationTime&&a.route.creationTime?1:!i.route.creationTime&&!a.route.creationTime?a.creationTime-i.creationTime:a.route.creationTime-i.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:i}=e();if(!n){let a=[];i.forEach(s=>{o.some(l=>l.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,...i})=>i)}return t}})));function Sl(){let t=uv(),{getNotifications:e,clearNotifications:o}=Pe(),n=e(),i=S().blockchains(),{findToken:a}=S();return pv.createElement(cv,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Hp(c,i),getTokenImage:c=>a(c)?.image,onClickItem:r(c=>{t(`${$.swaps}/${c}`)},"onClickItem"),onClearAll:o})}r(Sl,"NotificationContent");import{useManager as dv}from"@rango-dev/queue-manager-react";import{InProgressIcon as mv}from"@rango-dev/ui";import $m from"react";var fv=r(()=>{let{manager:t}=dv();return Et(t).map(({swap:o})=>o).find(o=>o.status==="running")?$m.createElement(Lm,{id:"widget-header-history-badge-container"},$m.createElement(mv,{color:"info",size:6})):null},"InProgressTransactionBadge"),Fm=fv;import{EventSeverity as gv}from"@rango-dev/queue-manager-rango-preset";import{Typography as hv}from"@rango-dev/ui";import Om from"react";function Um(){let{getNotifications:t}=Pe(),e=t(),o=e.length,n=!!e.find(i=>i.event.messageSeverity===gv.WARNING);return o?Om.createElement(Wm,{isSever:n},Om.createElement(hv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}r(Um,"NotificationsBadge");import{RefreshProgressButton as yv}from"@rango-dev/ui";import Tl,{useEffect as Sv,useState as zm}from"react";var Tv=1e3,Qm=60,Cv=100;function Qi({onClick:t}){let[e,o]=zm(0),[n,i]=zm(!1),a=r(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");Sv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Qm&&c()},Tv):s(l),document.addEventListener("visibilitychange",()=>a(l)),()=>{document.removeEventListener("visibilitychange",()=>a(l)),l&&clearInterval(l)}},[e,t]);let s=r(l=>{l&&clearInterval(l),o(0)},"clearTimeout"),c=r(()=>{t?.(),o(0),i(!0)},"handleRefreshClick");return Tl.createElement(Ft,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},Tl.createElement(Pm,{onTransitionEnd:()=>i(!1),isRefetched:n},Tl.createElement(yv,{size:22,color:t?"black":"gray",progress:e/Qm*Cv})))}r(Qi,"RefreshButton");function Vo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:i=[],container:a}=t,{config:{features:s}}=S(),c=nt("notification",s)||i.includes("notifications");return _e.createElement(_e.Fragment,null,!i.includes("refresh")&&_e.createElement(qi,{container:a||W(),side:"top",content:Hi.t("Refresh")},_e.createElement(Qi,{onClick:e})),!c&&_e.createElement(wv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(Sl,null)},_e.createElement("div",null,_e.createElement(qi,{container:W(),side:"top",content:Hi.t("Notifications")},_e.createElement(Ft,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(kv,{size:18,color:"black"}),_e.createElement(Um,null))))),!i.includes("settings")&&_e.createElement(qi,{container:W(),side:"top",content:Hi.t("Settings")},_e.createElement(Ft,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},_e.createElement(vv,{size:18,color:"black"}))),!i.includes("history")&&_e.createElement(qi,{container:W(),side:"top",content:Hi.t("History")},_e.createElement(Ft,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(Ev,{size:18,color:"black"}),_e.createElement(Fm,null))))}r(Vo,"HeaderButtons");import{i18n as Cl}from"@lingui/core";import{Divider as qm,MessageBox as Iv,RefreshIcon as Av}from"@rango-dev/ui";import In from"react";import{Button as bv,styled as xv}from"@rango-dev/ui";var Hm=xv(bv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function kl(t){let{open:e,onClose:o}=t;return In.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},In.createElement(Iv,{title:Cl.t("Something went wrong"),type:"error",description:Cl.t("Something went wrong. Please refresh the app.")},In.createElement(qm,{size:30}),In.createElement(Hm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},In.createElement(Av,{size:20,color:"primary"}),In.createElement(qm,{size:4,direction:"horizontal"}),Cl.t("Refresh"))))}r(kl,"RefreshModal");var Gm="700px",Vm="425px",Km="550px",jm="640px",Xm="800px";function wl(t){let e=t.target;if(e){let o=e.scrollTop,n=W();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}r(wl,"onScrollContentAttachStatusToContainer");import{css as Nv,styled as Gi}from"@rango-dev/ui";var Vi=Nv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Ym=Gi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:Gm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Vm,[`@media screen and (min-height: ${Xm})`]:{minHeight:Km}}},showBanner:{true:{overflow:"visible"}}}}),Zm=Gi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Jm=Gi("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"}}}),Rm=Gi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=nl(),{children:n,header:i,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=S(),[u,d]=of(!1),{config:{features:m,theme:h}}=S(),{watermark:g}=re(),f=g==="FULL",{activeTheme:T}=ho(h||{}),[C,y]=of(!1),k=nt("connectWalletButton",m),{isActiveTab:w,tabManagerInitiated:v,showActivateTabModal:N,setShowActivateTabModal:I,activateCurrentTab:b,setShowCompactTokenSelector:x}=re(),E=Ve(),{manager:L}=Wv(),O=Et(L).map(({swap:Y})=>Y).some(Y=>Y.status==="running"),q=r(()=>b(Fo.forceClaim,O),"onActivateTab"),j=r(()=>{i.onWallet?.()},"onConnectWallet"),ee=typeof i.hasBackButton>"u"||i.hasBackButton,P=tf(null),Z=tf(null);return Ki(()=>{let Y=(p?.swapBoxBanner?.routes?.length??0)===0,ue=!!p?.swapBoxBanner?.routes?.some(Ee=>location.pathname.endsWith(Ee));y(!!p?.swapBoxBanner&&(Y||ue))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),Ki(()=>(Fi()&&Z.current&&e(Z.current),()=>{o()}),[]),Ki(()=>(P.current?.addEventListener("scroll",wl),()=>{P.current?.removeEventListener("scroll",wl)}),[]),Ki(()=>{d(c==="failed")},[c]),Bv(()=>{if(!Z.current)return;let Y=new ResizeObserver(ue=>{for(let Ee of ue)Ee.contentRect&&x(Ee.contentRect.height<parseInt(jm))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Le.createElement(Ym,{height:s,id:wt.SWAP_BOX_ID,className:`${T()} ${Vi()}`,ref:Z,showBanner:C},Le.createElement(Lv,{prefix:ee?Le.createElement(fl,{onClick:()=>{E(),i.onBack?.()}}):null,title:i.title,suffix:Le.createElement(Le.Fragment,null,i.suffix,i.onWallet&&!k&&Le.createElement(yl,{container:W(),onClick:j,isConnected:!!l?.length}),i.onCancel&&Le.createElement(hl,{onClick:i.onCancel}))}),Le.createElement(Zm,{ref:P},n),Le.createElement(ml,{open:N,onClose:()=>I(!1),onConfirm:q}),Le.createElement(Jm,null,Le.createElement("div",{className:"footer__content"},v&&!w&&Le.createElement("div",{className:"footer__alert"},Le.createElement(ul,{onActivateTab:q}),Le.createElement(ef,{size:10})),a),Le.createElement(ef,{size:12}),Le.createElement("div",{className:`footer__logo ${f?"logo__show":"logo__hidden"}`},Le.createElement(Pv,null))),C&&Le.createElement(Rm,null,p?.swapBoxBanner?.element),Le.createElement(kl,{open:u,onClose:()=>d(!1)}))}r(se,"Layout");import{styled as _v}from"@rango-dev/ui";var nf="$20 $20 $10 $20",vl=_v("div",{padding:nf,overflowY:"auto",flexGrow:1});import{styled as Mv}from"@rango-dev/ui";var ce=Mv("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 So}from"@lingui/core";import{useState as El}from"react";function rf(){let[t,e]=El(!1),[o,n]=El(null),[i,a]=El(null),{findToken:s}=S(),c=S().customTokens(),l=r(()=>{a(null),e(!1),n(null)},"resetState");function p(d,m){switch(d){case"duplicated":return{type:d,title:So.t("Duplicate Token"),message:So.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:So.t("Token Already Exists"),message:So.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:d,title:So.t("Token Not Found"),message:So.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:m}})};case"network-error":return{type:d,title:So.t("Network error"),message:So.t("An error occurred while retrieving token data.")}}}return r(p,"produceErrorMessage"),{fetchCustomToken:r(async({blockchain:d,tokenAddress:m})=>{e(!0);try{if(c.some(C=>C.address?.toLowerCase()===m.toLowerCase())){let C=p("duplicated");n(C);return}let g=await dt().getCustomToken({blockchain:d,address:m});if(!g||!g.token||g.error){let C=p("not-found",d);n(C);return}let f=g.token;if(s({blockchain:f.blockchain,address:f.address,symbol:f.symbol})){let C=p("token-exist");n(C);return}return a({...f,warning:!0})}catch(h){if(h.code==="ERR_BAD_REQUEST"){let g=p("not-found",d);n(g);return}n(p("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:i,loading:t,error:o,resetState:l}}r(rf,"useFetchCustomToken");var Vv=Uv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${Fv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function af(){let t=qv(),[e]=Gv(),o=Ve(),n=S().blockchains(),i=e.get("blockchain")||"",a=Lo(i,n),[s,c]=Hv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:m}=rf(),h=!!a&&Bo(a,s),g=!a||!s||!h,f=r(()=>{a&&l({blockchain:i,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:An.t("Add Custom Token")}},Ke.createElement(ce,null,Ke.createElement(Vv,null,Ke.createElement("div",null,Ke.createElement(Zs,{onClick:()=>t($.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:An.t("Select chain"),placeholder:An.t("Select chain")}),Ke.createElement(bl,{size:"24"}),Ke.createElement(Qv,{size:"large",variant:"label"},An.t("Enter Address")),Ke.createElement(bl,{size:10}),Ke.createElement(zv,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:An.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement(Ov,{color:"success",size:12}),onChange:T=>c(T.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(bl,{size:4}),Ke.createElement(Dv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement($v,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:f},An.t("Import"))),Ke.createElement(gr,{token:p,blockchain:a??void 0,address:s,error:d??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{d?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:m,onExitImportModal:m})))}r(af,"AddCustomTokenPage");import{i18n as rc}from"@lingui/core";import{useManager as Wb}from"@rango-dev/queue-manager-react";import{Alert as Pb,Button as Lb,css as ac,Divider as ic,IconButton as Yg,styled as Bb,Typography as _b,WalletIcon as Mb}from"@rango-dev/ui";import $e,{useEffect as ka,useLayoutEffect as Db,useRef as $b,useState as xr}from"react";import{useNavigate as Fb}from"react-router-dom";import{i18n as jo}from"@lingui/core";import{Alert as uE,BalanceErrors as dE,Button as Wf,ChevronLeftIcon as mE,Divider as Pl,MessageBox as fE,Typography as Ll}from"@rango-dev/ui";import ae,{useCallback as gE,useEffect as Ri,useMemo as hE,useState as Wn}from"react";import{useNavigate as yE}from"react-router-dom";import{i18n as Nl}from"@lingui/core";import{Alert as Zv,ChevronDownIcon as Jv,CloseIcon as Rv,Divider as mf,IconButton as ff,PasteIcon as eE,Typography as tE,WalletIcon as oE}from"@rango-dev/ui";import Me,{useEffect as gf,useRef as hf}from"react";import Zi,{useRef as Xv}from"react";import*as Nn from"@radix-ui/react-collapsible";import{keyframes as sf,styled as ji}from"@rango-dev/ui";var xl=300,Kv=sf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),jv=sf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),lf=ji(Nn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Il=ji(Nn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Xi=ji(Nn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Kv} ${xl}ms ease-out`},false:{animation:`${jv} ${xl}ms ease-out`}}}}),Yi=ji("div",{transition:`all ${xl}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Ji(t){let{open:e,hasSelected:o,onOpenChange:n,children:i,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Xv(null);return Zi.createElement(lf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&Zi.createElement(Il,{className:"collapsible_trigger",onClick:a},s),Zi.createElement(Xi,{className:"collapsible_content",open:e},i),c==="bottom"&&Zi.createElement(Il,{className:"collapsible_trigger",onClick:a},s))}r(Ji,"CustomCollapsible");import{darkTheme as cf,styled as Al,TextField as Yv}from"@rango-dev/ui";var pf=Al("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),uf=Al(Yv,{backgroundColor:"$neutral100"}),df=Al("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${cf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${cf} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function yf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:i,setCustomDestination:a}=z()(),{config:s}=S(),c=S().blockchains(),l=Qp(e.name,c),p=hf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!i&&e&&!Bo(e,i),g=r(()=>{a("")},"handleClear"),f=r(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let k=await navigator.clipboard.readText();a(k),p?.current?.focus()}},"handlePaste"),T=r(()=>i?Me.createElement(ff,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(Rv,{size:12,color:"gray"})):d?null:Me.createElement(ff,{id:"widget-custom-destination-paste-icon-btn",onClick:f,variant:"ghost"},Me.createElement(eE,{size:16})),"renderSuffix");gf(()=>{!!u&&i===null&&(a(u),o(!0))},[u]);let C=hf(null);return gf(()=>{if(!i){C.current=null;return}n&&Bo(e,i)&&C.current!==i&&(C.current=i,oe({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[i,n,e]),Me.createElement(pf,null,Me.createElement(Ji,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(df,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(oE,{size:18,color:"info"}),Me.createElement(mf,{size:4,direction:"horizontal"}),Me.createElement(tE,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Nl.t("Send to a different address"))),Me.createElement(Yi,{orientation:n?"up":"down"},Me.createElement(Jv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(uf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:i?"8px":"5px"},autoFocus:!i,placeholder:Nl.t("Enter {blockchainName} address",{blockchainName:l}),value:i||"",suffix:T(),onChange:y=>{let k=y.target.value;a(k)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(mf,{size:4}),Me.createElement(Zv,{variant:"alarm",type:"error",title:Nl.t({values:{destination:i},id:"Address {destination} doesn't match the blockchain address pattern."})})))}r(yf,"CustomDestination");import{css as nE,IconButton as rE,SelectableWalletButton as iE,styled as To}from"@rango-dev/ui";var Sf=To("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Tf=To("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Cf=To(iE,{justifyContent:"center"}),kf=To("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),wf=To(rE,{position:"absolute",left:"$20"}),vf=To("div",{paddingTop:"$20"}),Ef=nE({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),bf=To("div",{display:"flex"}),xf=To("div",{overflow:"visible",width:"100%"});import{i18n as If}from"@lingui/core";import{warn as aE}from"@rango-dev/logging-core";import{makeInfo as sE,SelectableWallet as lE,Typography as Af,WalletState as hr}from"@rango-dev/ui";import Ko,{useEffect as cE,useState as Nf}from"react";var pE=7;function Wl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:i,limit:a,onShowMore:s}=t,c=re.use.isActiveTab(),{connectedWallets:l}=S(),[p,u]=Nf(),{list:d}=xt({chain:e}),[m,h]=Nf(d),g=d.length,f=a&&g-a>0;return cE(()=>{h(T=>{let C=d.findIndex(y=>n(y.type,e));return f&&C>1?[d[C]].concat(d.filter((y,k)=>k!==C)):T.map(y=>d.find(k=>k.type===y.type)??y)})},[JSON.stringify(d)]),Ko.createElement(Ko.Fragment,null,m.slice(0,a).map(T=>{let C=Iu({connectedWallets:l,walletType:T.type,chain:e}),y=T.state===hr.CONNECTED||T.state===hr.PARTIALLY_CONNECTED,k=C?uo(C,pE):"",w=y&&!!T.needsNamespace&&!k,v=r(async()=>{T.state===hr.DISCONNECTED||w?u(T):i({walletType:T.type,chain:e,address:C??""})},"onSelectableWalletClick"),N=sE(T.state),I=r(()=>w?If.t("Chain not connected"):k||N.description,"getWalletDescription"),b=r(()=>T.state===hr.CONNECTED||T.state===hr.PARTIALLY_CONNECTED?w?"neutral600":"neutral700":N.color,"getWalletDescriptionColor");return Ko.createElement(lE,{key:T.type,id:"widget-wallets-list-selectable-wallet-btn",description:I(),descriptionColor:b(),onClick:v,selected:n(T.type,e),disabled:!c,...T})}),Ko.createElement(pr,{id:"widget-wallets-list-stateful-connect-modal",wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{u(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):aE(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),f&&Ko.createElement(Cf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Ko.createElement(Af,{variant:"label",size:"medium"},If.t("Show more wallets"),Ko.createElement(Af,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}r(Wl,"WalletList");var SE=2;function Pf(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:i,loading:a}=t,s=yE(),c=S().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:m,setCustomDestination:h}=z()(),{config:g,connectedWallets:f,setWalletsAsSelected:T}=S(),[C,y]=Wn(""),[k,w]=Wn([]),[v,N]=Wn(""),[I,b]=Wn(!!m),x=hE(()=>Do({filter:"all",quote:l}),[l]),E=Do({filter:"required",quote:l}),L=c.find(B=>B.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),A=r(B=>E.includes(B),"isWalletRequiredFor"),O=gE(()=>f.filter(B=>B.selected&&x.includes(B.chain)),[f,x]),[q,j]=Wn(O()),[ee,P]=Wn([]),Z=r((B,V)=>P(Q=>Q.concat({blockchain:B,walletType:V})),"addNextSelectedWallets"),Y=k.length>0,ue=r((B,V)=>!!q.find(Q=>Q.walletType===B&&Q.chain===V&&Q.selected&&(A(V)||!A(V)&&!m)),"isSelected"),Ee=r((B,V,Q)=>{let X=!1;return B.map(G=>{if(G.chain===V){let J=G.selected;return!X&&Q?(X=!0,J=!0):Q||(J=!1),{...G,selected:J}}return G})},"updateSelectableWallets"),Vt=r(B=>{b(B),B?A(L?.name??"")||j(V=>Ee(V,L?.name||"",!1)):(h(""),j(V=>Ee(V,L?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),be=r(B=>{if(C&&y(""),ue(B.walletType,B.chain))return;let Q=f.find(X=>X.walletType===B.walletType&&X.chain===B.chain);Q&&(n(),B.chain===L?.name&&I&&!A(L.name)&&(b(!1),h(null)),j(X=>X.filter(G=>G.chain!==B.chain).concat({...Q,selected:!0})))},"onChange"),He=r(()=>{let B=q.filter(V=>V.selected);oe({type:"swapWalletsConfirmed",payload:{routeId:l?.requestId??""}}),T(B),p(B),d(!0),o()},"onConfirmBalance"),Xe=r(async()=>{w([]),N("");let B=await i?.({selectedWallets:q.filter(Q=>Q.selected),customDestination:m}),V=B.warnings;V?.balance?.messages&&w(V.balance.messages),B.error&&N(_p(B.error)),!B.error&&!V?.balance?.messages.length?He():w(V?.balance?.messages??[])},"onConfirmWallets");Ri(()=>{j(B=>{let V=[];return B.forEach(Q=>{!f.some(G=>G.chain===Q.chain&&G.walletType===Q.walletType&&G.address===Q.address)||V.push(Q)}),V=V.concat(f.filter(Q=>!!!V.find(G=>G.chain===Q.chain)&&Q.selected&&x.includes(Q.chain))),V})},[f,x]),Ri(()=>{let B=[];ee.length>0&&(ee.forEach(V=>{let Q=f.find(X=>X.chain===V.blockchain&&X.walletType===V.walletType);Q?be(Q):B.push(V)}),P(B))},[f,ee]);let St=l?.requestId??"";Ri(()=>{if(!e)return;let B=E.filter(V=>!f.some(Q=>Q.chain===V));oe({type:"swapWalletsModalShown",payload:{chainsRequired:E.length,chainsPending:B.length}})},[e]),Ri(()=>{Y&&oe({type:"gasWarningShown",payload:{routeId:St}})},[Y,St]);let ct=document.getElementById(wt.SWAP_BOX_ID);return ae.createElement(ie,{id:"widget-confirm-wallets-modal",open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!C,container:ct,...!C&&{styles:{container:{height:"100%"}},footer:ae.createElement(bf,null,ae.createElement(Wf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Jd(a,I,m,l,q,L),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},jo.t("Confirm")))},...C&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(kf,null,ae.createElement(wf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(mE,{size:16})),ae.createElement(Ll,{variant:"headline",size:"small"},jo.t({id:"Your {blockchainName} wallets",values:{blockchainName:Ct(C,c)}})))},anchor:"center"},ae.createElement(ie,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:Y,onClose:w.bind(null,[]),container:ct},ae.createElement(fE,{title:jo.t("Insufficient account balance"),type:"error",description:ae.createElement(dE,{messages:k??[]})},ae.createElement(Wf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{oe({type:"gasWarningBypassed",payload:{routeId:St}}),He()}},jo.t("Proceed anyway")))),C&&ae.createElement(vf,null,ae.createElement("div",{className:Ef()},ae.createElement(Wl,{chain:C,quoteChains:x,isSelected:ue,selectWallet:be,onShowMore:()=>y(C),onConnect:B=>{Z(C,B)}}))),!C&&ae.createElement(ae.Fragment,null,v&&ae.createElement(ae.Fragment,null,ae.createElement(uE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:jo.t(v)}),ae.createElement(Pl,{size:12})),ae.createElement(xf,null,x.map((B,V)=>{let Q=c.find(U=>U.name===B),X=`wallet-${V}`,G=V===x.length-1,J=G&&L&&g?.customDestination!==!1;return ae.createElement("div",{key:X},ae.createElement(Sf,null,ae.createElement(Ll,{variant:"title",size:"xmedium"},jo.t({id:"Your {blockchainName} wallets",values:{blockchainName:Q?.shortName}})),ae.createElement(Ll,{variant:"label",color:"$neutral700",size:"medium"},jo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:Q?.shortName}}))),ae.createElement(Pl,{size:24}),ae.createElement(Tf,null,ae.createElement(Wl,{chain:B,quoteChains:x,isSelected:ue,selectWallet:be,limit:SE,onShowMore:()=>y(Q?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(Pl,{size:32}),J&&ae.createElement(yf,{blockchain:L,open:I,handleOpenChange:Vt}))}))))}r(Pf,"ConfirmWalletsModal");import{i18n as qE}from"@lingui/core";import{Alert as GE,Button as VE,Divider as Zf,InfoIcon as KE}from"@rango-dev/ui";import Ue from"react";import{Alert as kE,Button as wE,Divider as Ml,NoRouteIcon as vE,RefreshIcon as EE,Typography as Ff}from"@rango-dev/ui";import mt from"react";import{i18n as Lf}from"@lingui/core";var TE=24,CE=60;function Bf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:te().genericServerError,action:{onClick:n,title:Lf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:te().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Lf.t("Reset")}},description:te().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:te().noResultError.description}}r(Bf,"makeInfo");var Bl=(o=>(o[o.small=TE]="small",o[o.large=CE]="large",o))(Bl||{}),_l=(o=>(o.small="small",o.large="medium",o))(_l||{});import{styled as ea}from"@rango-dev/ui";var _f=ea("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Mf=ea("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Df=ea("div",{variants:{size:{small:{width:"100%"},large:{}}}}),$f=ea("div",{padding:"$6 $0"});function yr(t){let{fetch:e,error:o,size:n="small",skipAlerts:i}=t,a=S().getDisabledLiquiditySources(),s=S().toggleAllLiquiditySources,c=S().swappers(),l=Bf(o,a,()=>s(c,!0),e);return i&&(l.alert=null),mt.createElement(_f,{id:"widget-no-result-container"},mt.createElement(vE,{size:Bl[n],color:"gray"}),mt.createElement(Ml,{size:4}),mt.createElement(Ff,{variant:"title",size:_l[n]},te().noResultError.title),n==="large"&&mt.createElement(Ml,{size:4}),!!l.description&&mt.createElement(Mf,{size:n},mt.createElement(Ff,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement(Ml,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Df,{size:n},mt.createElement(kE,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&mt.createElement(wE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement($f,null,mt.createElement(EE,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}r(yr,"NoResult");import{i18n as Sr}from"@lingui/core";import{Button as LE,Divider as BE,MessageBox as _E,Typography as ME,WarningIcon as DE}from"@rango-dev/ui";import Rt from"react";import{InfoIcon as AE,Tooltip as NE,Typography as WE}from"@rango-dev/ui";import Pn from"react";import{Button as bE,darkTheme as xE,styled as Xo,Typography as IE}from"@rango-dev/ui";var Of=Xo("div",{width:"100%"}),Dl=Xo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Uf=Xo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${xE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),zf=Xo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),Qf=Xo(IE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Hf=Xo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),qf=Xo(bE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var PE=35;function Gf(t){let{title:e,value:o,valueColor:n}=t,i=W();return Pn.createElement(Uf,null,Pn.createElement(WE,{size:"medium",variant:"label",className:"_title"},e),Pn.createElement(zf,null,Pn.createElement(Qf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>PE&&Pn.createElement(NE,{content:o,container:i},Pn.createElement(AE,{size:12,color:"gray"}))))}r(Gf,"QuoteErrorsModalItem");function Vf(t){let{open:e,onClose:o,onConfirm:n,warning:i,confirmationDisabled:a}=t,s=i.warningLevel==="high"?"error":"warning",c=[{title:Sr.t("Swapping"),value:M(i.inputUsdValue)},{title:Sr.t("Gas cost"),value:M(i.totalFee,2,2)},{title:Sr.t("Receiving"),value:M(i.outputUsdValue)},{title:Sr.t("Price impact"),value:M(i.priceImpact,2,2),valueColor:`${s}500`}];return Rt.createElement(ie,{id:"widget-high-value-loss-warning-modal",footer:Rt.createElement(LE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Rt.createElement(DE,null),fullWidth:!0,disabled:a,onClick:n},te().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Rt.createElement(_E,{type:s,title:te().highValueLossError.impactTitle,description:te().highValueLossError.description}),Rt.createElement(Dl,null,Rt.createElement(BE,{size:"4"}),Rt.createElement(ME,{size:"small",variant:"title"},Sr.t("Details")),Rt.createElement(Dl,null,c.map((l,p)=>Rt.createElement(Gf,{key:p,...l})))))}r(Vf,"HighValueLossWarningModal");import{i18n as Ln}from"@lingui/core";function Kf(t,e){let o={alertType:"warning",title:"",action:null,actionButtonTitle:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=Ln.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Ln.t("Increase")),o;if(t){switch(t.type){case 0:{Jt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=te().highValueLossError.title;break}case 4:{o.title=Ln.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=te().unknownPriceError.title;break}case 2:{o.title=Ln.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Ln.t("Increase");break}case 3:{o.title=Ln.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}r(Kf,"makeAlerts");function jf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}r(jf,"getRequiredSlippage");import{i18n as Bn}from"@lingui/core";import{Button as $E,Divider as $l,MessageBox as FE,WarningIcon as OE}from"@rango-dev/ui";import wo from"react";import{useNavigate as UE}from"react-router-dom";function Xf(t){let{open:e,onClose:o,onConfirm:n,warning:i,confirmationDisabled:a}=t,s=UE();return wo.createElement(ie,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},wo.createElement(FE,{type:"warning",title:i.type===3?Bn.t("High slippage"):Bn.t("Low slippage"),description:i.type===3?Bn.t("Caution, your slippage is high. Your trade may be front run."):Bn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:i.minRequiredSlippage}})},wo.createElement($l,{size:18}),wo.createElement($l,{size:32}),wo.createElement(qf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},wo.createElement(OE,{color:"white",size:16}),Bn.t("Swap anyway")),wo.createElement($l,{size:10}),wo.createElement($E,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Bn.t("Change Slippage"))))}r(Xf,"SlippageWarningModal");import{Button as zE,MessageBox as QE,WarningIcon as HE}from"@rango-dev/ui";import ta from"react";function Yf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:i}=t;return ta.createElement(ie,{id:"widget-unknown-price-warning-modal",footer:ta.createElement(zE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:ta.createElement(HE,null),fullWidth:!0,disabled:i,onClick:n},te().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},ta.createElement(QE,{type:"warning",title:te().unknownPriceError.impactTitle,description:te().unknownPriceError.description}))}r(Yf,"UnknownPriceWarningModal");function Tr(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:i,confirmationDisabled:a,skipAlerts:s,refetchQuote:c,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:u,onChangeSettings:d,onChangeSlippage:m}=t,h={confirmationDisabled:a,open:i,onClose:p,onConfirm:u},g=o?.type===0||o?.type===1,f=Kf(e,o?.type===3||o?.type===4?o:null);f&&!n&&(f.action=null);let T=!!f&&!s,C=r(y=>{if(y==="change-slippage"){let k=o?.type===3||o?.type===4?o:null,w=jf(e,k);m?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,g&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Zf,{size:10}),Ue.createElement(yr,{skipAlerts:s,error:o,fetch:c})),T&&Ue.createElement(Of,null,Ue.createElement(Zf,{size:10}),Ue.createElement(GE,{id:"widget-quote-warning-and-errors-alert",title:f.title,type:f.alertType,variant:"alarm",...f.action==="show-info"&&{action:Ue.createElement(Hf,{onClick:l},Ue.createElement(KE,{size:12,color:"gray"}))},...(f.action==="change-settings"||f.action==="change-slippage")&&{action:Ue.createElement(VE,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:f.alertType,onClick:()=>C(f.action)},f.actionButtonTitle||qE.t("Change"))}})),e&&Ue.createElement(Ue.Fragment,null,e.type===0&&Ue.createElement(Vf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(Xf,{...h,warning:e}),e.type===1&&Ue.createElement(Yf,{...h,warning:e})))}r(Tr,"QuoteWarningsAndErrors");import vb from"bignumber.js";import ya from"react";import{i18n as Yo}from"@lingui/core";import{Alert as ub,CampaignQuoteTag as db,Divider as Mn,FullExpandedQuote as mb,InfoIcon as jl,NumericTooltip as Xl,QuoteTag as fb,StepDetails as gb,TokenAmount as hb,Typography as Dn,useIsTruncated as Yl}from"@rango-dev/ui";import Zl from"bignumber.js";import F,{useRef as fa,useState as yb}from"react";import{styled as Fl}from"@rango-dev/ui";var Ol=Fl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Jf=Fl("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),Rf=Fl("div",{width:"100%",display:"flex"});import*as oa from"@radix-ui/react-collapsible";import{Button as jE,css as na,darkTheme as De,Image as eg,styled as je,Typography as Ul}from"@rango-dev/ui";var XE=300,tg=je(oa.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),og=na({padding:"$10 $15"}),ng=je(jE,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${De} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${De} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${De} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),rg=je("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",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${De} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}}}}]}),ig=na({width:"100%",padding:"$15 $15 $10 $15"}),ag=na({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),_n=na({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),sg=je(oa.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:{[`& ${eg}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${eg}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),lg=je("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"}}}}),cg=je(Xi,{width:"100%",background:"inherit"}),zl=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${XE}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),fH=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),pg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),ug=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),Ql=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"$30"}),Hl=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,flex:"0 1 auto"}),ql=je("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"}}}}),dg=je("div",{display:"flex"}),ra=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),mg=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ot}from"@lingui/core";import{ChevronDownIcon as ZE,CloseIcon as JE,Divider as sa,IconButton as RE,NumericTooltip as eb,QuoteCost as tb,Typography as Nt}from"@rango-dev/ui";import ob from"bignumber.js";import R,{useState as yg}from"react";import{css as YE,styled as ia}from"@rango-dev/ui";var aa=ia("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Gl=ia("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),fg=ia("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),gg=ia("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),hg=YE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var nb=r(t=>t.fee.isZero()?null:R.createElement(aa,null,R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},t.label),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(t.fee,4,4))),"NonPayableFee");function Vl(t){let[e,o]=yg(!1),[n,i]=yg(!1),{steps:a,quote:s,time:c,feeWarning:l,timeWarning:p,showModalFee:u,fullExpandedMode:d=!1}=t,m=s?.swaps??[],h=d?Mo():W(),g=qd(m),f=Object.values(g.payable).reduce((C,y)=>C.plus(qs(y)),new ob(0)),T=M(f,2,2);return R.createElement(R.Fragment,null,R.createElement(tb,{onClickFee:u?C=>{C.stopPropagation(),!e&&s&&oe({type:"routeFeeViewed",payload:{routeId:s.requestId}}),o(!e)}:void 0,fee:T,feeWarning:l,timeWarning:p,time:c,steps:a,tooltipGas:u?Ot.t("View more info"):void 0,tooltipContainer:h}),R.createElement(ie,{id:"widget-quote-cost-explanation-modal",container:h,open:e,anchor:d?"center":"bottom",styles:{container:{maxWidth:d?"484px":"unset"}},header:R.createElement(gg,{style:{textAlign:d?"left":"center"}},R.createElement(Nt,{variant:"title",size:"medium"},Ot.t("Gas & Fee Explanation")),R.createElement(RE,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(JE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(fg,null,R.createElement(Nt,{variant:"title",size:"small"},Ot.t("Details")),R.createElement(sa,{size:10}),Object.entries(g.payable).flatMap(([C,y])=>y.map((k,w)=>{let v=`payable-fee-${w}`,N=Hs(k);return R.createElement(aa,{key:v},R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},Fs(C,Ot.t)),R.createElement(eb,{content:k.amount,container:h},R.createElement(Nt,{variant:"label",size:"medium"},M(k.amount,2,2),k.asset.symbol," ($",M(N,4,4),")")))})),R.createElement(aa,{className:"total_payable_fee"},R.createElement(Nt,{variant:"label",size:"medium"},Ot.t("Total Payable Fee")),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(f,4,4))),R.createElement(Gl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Ji,{triggerAnchor:"bottom",onClickTrigger:()=>i(C=>!C),trigger:R.createElement("div",{className:hg()},R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},n?Ot.t("Hide non-payable fees"):Ot.t("Show non-payable fees")),R.createElement(sa,{size:4,direction:"horizontal"}),R.createElement(Yi,{orientation:n?"up":"down"},R.createElement(ZE,{size:12,color:"gray"}))),open:n},R.createElement(Nt,{size:"small",variant:"title"},Ot.t("Description")),R.createElement(sa,{size:4}),R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},Ot.t(`The following fees are considered in the transaction output and
|
|
3
|
+
you won\u2019t need to pay extra gas for them.`)),R.createElement(sa,{size:10}),Object.entries(g.nonePayable).map(([C,y],k)=>{let w=qs(y),v=Fs(C,Ot.t),N=`non-payable-fee-${k}`;return R.createElement(nb,{key:N,fee:w,label:v})}),R.createElement(Gl,null)))))}r(Vl,"QuoteCostDetails");import{i18n as Cg}from"@lingui/core";import{TokenAmount as kg}from"@rango-dev/ui";import la from"react";import{css as rb,styled as ib}from"@rango-dev/ui";var Sg=ib("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Tg=rb({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function Cr(t){let{from:e,to:o,percentageChange:n,warningLevel:i}=t;return la.createElement(Sg,null,la.createElement(kg,{direction:"horizontal",label:Cg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:W(),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}}),la.createElement("div",{className:Tg()}),la.createElement(kg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:Cg.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:i}))}r(Cr,"QuoteSummary");import{i18n as xg}from"@lingui/core";import{ChevronDownIcon as lb,ChevronRightIcon as cb,Divider as Kl,Image as pb,Tooltip as ma,Typography as pa}from"@rango-dev/ui";import H from"react";import{useLayoutEffect as ab,useState as kr}from"react";var wg=480,vg=768,Eg=1024,bg=1200,sb=r(()=>{let[t,e]=kr(!1),[o,n]=kr(!1),[i,a]=kr(!1),[s,c]=kr(!1),[l,p]=kr(!1),u=r(()=>{e(window.innerWidth<=wg),n(window.innerWidth>wg&&window.innerWidth<=vg),a(window.innerWidth>vg&&window.innerWidth<=Eg),c(window.innerWidth>Eg&&window.innerWidth<=bg),p(window.innerWidth>bg)},"handleResize");return ab(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:i,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),ca=sb;var ua=4,da=6,wr=r(t=>{let{content:e,src:o,className:n,open:i,state:a,container:s}=t,c=s||W();return H.createElement(ma,{container:c,side:"bottom",sideOffset:4,open:i,content:e},H.createElement(lg,{className:n,state:a},H.createElement(pb,{src:o,size:16})))},"ImageComponent");function Ig(t){let{quoteRef:e,selected:o,setExpanded:n,steps:i,expanded:a,type:s,container:c}=t,l=c||W(),p=i.length,u=_d(i),{isTablet:d,isMobile:m}=ca();return H.createElement(sg,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},H.createElement("div",{className:_n()},H.createElement(pa,{variant:"body",size:"xsmall"},xg.t("Via:")),H.createElement(Kl,{direction:"horizontal",size:4}),i.map((h,g)=>{let f=`item-${g}`,T=H.createElement(zl,null,H.createElement(cb,{size:12,color:"black"}));return m||d?H.createElement(H.Fragment,{key:f},H.createElement(wr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&H.createElement(H.Fragment,null,T)):H.createElement(H.Fragment,{key:f},p<=ua||p>ua&&g<ua-1?H.createElement(H.Fragment,null,H.createElement(wr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&H.createElement(H.Fragment,null,T)):g===ua-1&&H.createElement(ma,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:_n()},T,i.map((C,y)=>{let k=`image-${y}`;return y>=g&&H.createElement(H.Fragment,{key:k},H.createElement(wr,{content:C.swapper.displayName,src:C.swapper.image??"",state:C.state,open:!1}),y!==p-1&&H.createElement(H.Fragment,null,T))}))},H.createElement(ql,{state:i.find((C,y)=>y>=g&&(C.state==="error"||C.state==="warning"))?.state},H.createElement(pa,{size:"xsmall",variant:"body"},"+",p-g))))})),H.createElement("div",{className:_n()},H.createElement("div",{className:"blockchains_section"},H.createElement("div",{className:_n()},H.createElement(pa,{variant:"body",size:"xsmall"},xg.t("Chains:")),H.createElement(Kl,{direction:"horizontal",size:4}),u.map((h,g)=>H.createElement(H.Fragment,{key:h.displayName},u.length<=da||u.length>da&&g<da-1?H.createElement(ma,{container:l,side:"bottom",content:h.displayName,sideOffset:4},H.createElement(wr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===da-1&&H.createElement(ma,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:_n()},u.map((f,T)=>T>=g&&H.createElement(wr,{key:f.displayName,content:"",src:f.image??"",open:!1,className:T>g?"blockchainImage":"",container:c})))},H.createElement(ql,{className:"blockchainImage"},H.createElement(pa,{size:"xsmall",variant:"body"},"+",u.length-g))))),H.createElement(Kl,{direction:"horizontal",size:32}))),H.createElement(zl,{orientation:a?"up":"down"},H.createElement(lb,{size:12,color:"black"}))))}r(Ig,"QuoteTrigger");function Jl(t){let{quote:e,input:o,output:n,error:i,warning:a,type:s,selected:c=!1,tagHidden:l=!0,showModalFee:p=!0,onClickAllRoutes:u,fullExpandedMode:d=!1,container:m}=t,h=S().blockchains(),{findToken:g}=S(),f=S().swappers(),{customSlippage:T,slippage:C}=S(),y=T||C,[k,w]=yb(t.expanded),v=fa(null),N=M(n.value,6,6),I=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:b}}=S(),x=Zt(o.usdValue,n.usdValue??null),E=M(x,2,2),L=Jt(x??0),A=r((G,J)=>G.map((U,de)=>{let qe,ot=i?.type===3&&i.swap.swapperId===U.swapperId,po=i?.type===4&&!!i.recommendedSlippages?.[de],qn=a?.type===2&&!!a.recommendedSlippages?.[de],Wo=ot||po,ei=qn;Wo?qe="error":ei&&(qe="warning");let an=Wo?Yo.t("Slippage Error"):Yo.t("Slippage Warning");return ot&&(an=Yo.t("Bridge Limit Error")),{swapper:{displayName:Kn(U.swapperId,f)??"",image:U.swapperLogo},from:{token:{displayName:U.from.symbol,image:U.from.logo},chain:{displayName:Ct(U.from.blockchain,h)??"",image:U.from.blockchainLogo},price:{value:de===0&&!J?M(o.value,6,6):M(U.fromAmount,6,6),usdValue:M((U.from.usdPrice??0)*parseFloat(U.fromAmount),4,4),realValue:de===0?o.value:U.fromAmount,realUsdValue:new Zl(U.from.usdPrice??0).multipliedBy(U.fromAmount).toString()}},to:{token:{displayName:U.to.symbol,image:U.to.logo},chain:{displayName:Ct(U.to.blockchain,h)||"",image:U.to.blockchainLogo},price:{value:M(U.toAmount,6,6),usdValue:M((U.to.usdPrice??0)*parseFloat(U.toAmount),4,4),realValue:U.toAmount,realUsdValue:new Zl(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:qe,alerts:Wo||ei?F.createElement(Jf,{dense:d},F.createElement(ub,{variant:"alarm",type:Wo?"error":"warning",title:an,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(Rf,null,ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},i.fromAmountRangeError),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Yo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(po||qn)&&!ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Yo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...i?.type===4&&{minRequiredSlippage:i.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Yo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Yn(U.estimatedTimeInSeconds),fee:M(Qs(U,g),2,2),internalSwaps:U.internalSwaps?A(U.internalSwaps):void 0}}),"getQuoteSteps"),O=A(e?.swaps??[]),q=O.length,j=m||W(),ee=Dd(t.quote.tags||[]),P=!!u,Z=pi(e?.swaps),Y=Yn(Z),ue=Bi(e?.swaps??[],g),Ee=M(ue,2,2),Vt=ue.gte(new Zl(xd)),be=Z/Ad>=Id,He=fa(null),Xe=Yl(o.value,He),St=fa(null),ct=Yl(n.value,St),B=fa(null),V=Yl(I,B),Q=O[q-1],X=O[0];return!X||!Q?null:d?F.createElement(mb,{selected:c,fee:Ee,time:Y,tooltipContainer:Mo(),steps:O,tags:ee,campaignTag:b?.campaignTag,id:"widget-quote-full-expanded-quote-container",quoteCost:F.createElement(Vl,{quote:e,fullExpandedMode:!0,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:E,warningLevel:L,outputPrice:{value:N,usdValue:I,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(rg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:ig()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(dg,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&b?.campaignTag?F.createElement(db,{routeTag:G,...b.campaignTag}):F.createElement(fb,{label:G.label,value:G.value}),F.createElement(Mn,{size:4,direction:"horizontal"}))})),F.createElement(ra,null),!P&&F.createElement(Mn,{size:4})):null,F.createElement("div",{id:"portal-root",className:ag()},F.createElement(Vl,{quote:e,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),P&&F.createElement(ng,{onClick:G=>{G.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Dn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Yo.t("See All Routes")))),s==="basic"&&F.createElement(ug,null,F.createElement(Hl,{ref:He,size:"small",variant:"body"},o.value),Xe&&F.createElement(Xl,{content:o.value,container:j,open:o.value?void 0:!1},F.createElement(jl,{size:12,color:"gray"})),F.createElement(Ql,{size:"small",variant:"body"},O[0]?.from.token.displayName),F.createElement(Dn,{size:"small",variant:"body"},"="),F.createElement(Hl,{ref:St,size:"small",variant:"body"},n.value),ct&&F.createElement(Xl,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(jl,{size:12,color:"gray"})),F.createElement(Ql,{size:"small",variant:"body"},Q?.to.token.displayName),F.createElement(Mn,{size:2,direction:"horizontal"}),F.createElement(mg,{ref:B,color:"$neutral600",size:"xsmall",variant:"body"},`($${I})`),V&&F.createElement(Xl,{content:n.usdValue,container:j},F.createElement(jl,{size:12,color:"gray"}))),s==="list-item"&&F.createElement(hb,{id:"widget-quote-token-amount-container",tooltipContainer:j,type:"output",direction:"vertical",price:{value:N,usdValue:I,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:Q.to.token.displayName,image:Q.to.token.image},chain:{image:Q.to.chain.image},percentageChange:E,warningLevel:L}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(Cr,{from:X.from,to:Q.to,percentageChange:E,warningLevel:L}),F.createElement(Mn,{size:4}))),F.createElement(tg,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:w},F.createElement(Ig,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:k,steps:O}),F.createElement(cg,{open:k},F.createElement(pg,null),F.createElement("div",{className:og()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(gb,{type:"quote-details",className:"widget-quote-step-details-container",key:U,tooltipContainer:j,step:G,hasSeparator:J!==O.length-1,state:G.state})})))))}r(Jl,"Quote");import{Divider as kb,Skeleton as wb}from"@rango-dev/ui";import no from"react";import{darkTheme as Sb,styled as ga}from"@rango-dev/ui";var Ag=ga("div",{$$color:"$colors$neutral100",[`.${Sb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Ng=ga("div",{paddingTop:"$2"}),Wg=ga("div",{paddingLeft:"$8"}),Pg=ga("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as zg,Divider as Wt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as Tb,styled as oo}from"@rango-dev/ui";var Rl=oo("div",{display:"flex"}),Lg=oo("div",{padding:"$10 $0 $20"}),Bg=oo("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),_g=oo("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Mg=oo("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Dg=oo("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),$g=oo("div",{width:"65%",display:"flex",justifyContent:"start"}),Fg=oo("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Og=oo("div",{padding:"$15 $0 $15 $0"}),Ug=Tb({display:"flex",justifyContent:"space-between",alignItems:"center"});function vr(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(Mg,null,K.createElement($g,null,K.createElement(zg,{loading:!0,size:"medium"}),K.createElement(Wt,{size:8,direction:"horizontal"}),K.createElement(Fg,null,K.createElement(ft,{height:10,width:60,variant:"rounded"}),K.createElement(Wt,{size:4}),K.createElement(ft,{height:15,variant:"rounded"}))),K.createElement(ft,{height:12,width:64,variant:"rounded"})),i=e==="basic"&&!o;return K.createElement("div",null,!o&&K.createElement(K.Fragment,null,K.createElement(Rl,null,K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"})),K.createElement(ra,null),!i&&K.createElement(Wt,{size:4})),K.createElement("div",{className:Ug()},K.createElement(Rl,null,K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"})),i&&K.createElement(ft,{width:85,height:24,variant:"rounded"})),e==="basic"&&K.createElement(Lg,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Bg,null,K.createElement(_g,null,K.createElement(zg,{loading:!0,size:"medium"}),K.createElement(Wt,{direction:"horizontal",size:4}),K.createElement(ft,{height:15,width:150,variant:"rounded"})),K.createElement(Wt,{size:10}),K.createElement(ft,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&K.createElement(K.Fragment,null,K.createElement(Wt,{size:4}),K.createElement(Og,null,n,K.createElement(Dg,null),n),K.createElement(Wt,{size:12})))}r(vr,"QuoteSummarySkeleton");import{ChainToken as Vg,Divider as tc,NextIcon as Cb,Skeleton as ha}from"@rango-dev/ui";import Be from"react";import{styled as Er}from"@rango-dev/ui";var Qg=Er("div",{display:"flex",alignItems:"start"}),Hg=Er("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),ec=Er("div",{display:"flex",alignItems:"center",flexGrow:1}),qg=Er("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Gg=Er("div",{display:"flex",alignItems:"center"});function Ut(t){let{separator:e=!0}=t;return Be.createElement(Be.Fragment,null,Be.createElement(Gg,null,Be.createElement(ha,{height:22,width:22,variant:"circular"}),Be.createElement(tc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:15,width:148,variant:"rounded"})),Be.createElement(Qg,null,Be.createElement(Pg,{hideSeparator:!e}),Be.createElement(Hg,{extraSpace:e},Be.createElement(ec,null,Be.createElement(Vg,{size:"small",loading:!0}),Be.createElement(tc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:12,variant:"rounded"})),Be.createElement(qg,null,Be.createElement(Cb,{color:"gray",size:16})),Be.createElement(ec,null,Be.createElement(Vg,{size:"small",loading:!0}),Be.createElement(tc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:12,variant:"rounded"})))))}r(Ut,"StepSkeleton");function br(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return no.createElement(Ag,{expanded:o,rounded:e!=="basic"},no.createElement(vr,{type:e,tagHidden:n}),no.createElement(Ng,null,no.createElement(wb,{height:15,variant:"rounded"})),o&&no.createElement(Wg,null,no.createElement(kb,{size:24}),no.createElement(Ut,null),no.createElement(Ut,null),no.createElement(Ut,{separator:!1})))}r(br,"QuoteSkeleton");function Zo(t){let{quote:e,type:o,loading:n,error:i,warning:a,expanded:s=!1,tagHidden:c,onClick:l,showModalFee:p,selected:u,id:d,onClickAllRoutes:m,fullExpandedMode:h=!1,container:g}=t,{inputAmount:f,inputUsdValue:T}=z()(),C=e?.outputAmount?new vb(e?.outputAmount):null,y=e?it(e):null,w=!(i&&(i.type===0||i.type===1))&&e&&!n;return n?ya.createElement(Ol,null,ya.createElement(br,{tagHidden:c,type:o,expanded:s})):w?ya.createElement(Ol,{onClick:()=>l?.(e),id:d},ya.createElement(Jl,{quote:e,error:i,container:g,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:f,usdValue:T?.toString()??""},output:{value:C?.toString()??"",usdValue:y?.toString()??""}})):null}r(Zo,"QuoteInfo");import{warn as Ib}from"@rango-dev/logging-core";import{calculatePendingSwap as Ab}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Nb}from"react";import{useRef as Eb,useState as bb}from"react";var xb=2e3;function Sa({request:t}){let[e,o]=bb(!1),n=Eb(null),i=r(()=>n.current?.abort(),"cancelFetch"),a=r(async c=>(await new Promise(l=>setTimeout(l,xb)),await s(c,!1)),"retryFetch"),s=r(async(c,l=!1)=>{i(),n.current=new AbortController,o(!0);try{let p=await t(c,{signal:n.current.signal});return n.current=null,p}catch(p){if(l)return await a(c);throw p}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:i}}r(Sa,"useFetch");function Kg(){let{fetch:t,loading:e,cancelFetch:o}=Sa({request:async(n,i)=>await dt().confirmRoute(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(Kg,"useFetchConfirmQuote");function Ta(t){if(!t.swaps)throw new Error(te().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=oc(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}r(Ta,"throwErrorIfResponseIsNotValid");function oc(t){if(zd(t)){let{swap:n,fromAmountRangeError:i,recommendation:a}=Qd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:i}}:null}let o=Gd(t);if(o){let n=_i(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}r(oc,"getQuoteError");function jg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:i,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=En({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=jd(e,i,n.blockchains);return p.length===0||(c.balance={messages:p}),c}r(jg,"generateWarnings");function Ca(t){return t?.code==="ERR_CANCELED"?{type:2}:t.cause?t.cause:t?.code==="ERR_BAD_REQUEST"?{type:0,diagnosisMessage:t.response.data.error}:{type:1,diagnosisMessage:t.message}}r(Ca,"handleQuoteErrors");function nc(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:i,selectedQuote:a,customDestination:s,resetAlerts:c}=z()(),{slippage:l,customSlippage:p}=S(),u=S().getDisabledLiquiditySources(),d=S().blockchains(),m=S().tokens(),{findToken:h}=S(),{swapMode:g}=rt(),f=p||l,{fetch:T,cancelFetch:C,loading:y}=Kg();return Nb(()=>C,[]),{loading:y,fetch:r(async w=>{let v=w.selectedWallets,N=w?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let I=v.reduce((x,E)=>(x[E.chain]=E.address,x),{}),b={requestId:a?.requestId||"",selectedWallets:I,destination:N||void 0};try{return await T(b,!0).then(x=>{let{result:E}=x;if(!E)throw new Error(x.error??"Error fetching updated quote");Ta({diagnosisMessages:E.diagnosisMessages,requestId:E.requestId,swaps:E.result?.swaps});let L={outputAmount:E.result?.outputAmount,requestId:E.requestId,resultType:E.result?.resultType,swaps:E.result?.swaps||[],validationStatus:E.validationStatus,requestAmount:E.requestAmount};i(L);let A={slippage:f.toString(),disabledSwappersGroups:u},O=jg({previousQuote:a??void 0,currentQuote:L,meta:{blockchains:d},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=Ab({inputAmount:o.toString(),bestRoute:E,wallets:Kd(v),settings:A,validateBalanceOrFee:!q,meta:{blockchains:d,tokens:m},swapMode:g});return{quote:L,swap:j,error:null,warnings:O}})}catch(x){let E=Ca(x);return E.type!==2&&Ib(new Error("confirm swap error"),{tags:{...E,type:Ye[E.type],initialQuote:a,requestBody:b}}),{swap:null,error:E,warnings:null}}},"fetch"),cancelFetch:C}}r(nc,"useConfirmSwap");function Xg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}r(Xg,"toNumberOrNull");function $n(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=Qo(t),i=it(t);return{routeId:t.requestId,sourceChain:e?.from.blockchain??"",destinationChain:o?.to.blockchain??"",sourceTokenSymbol:e?.from.symbol??"",sourceTokenAddress:e?.from.address??null,destinationTokenSymbol:o?.to.symbol??"",destinationTokenAddress:o?.to.address??null,sourceTokenAmount:Xg(t.requestAmount),destinationTokenAmount:Xg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:i?i.toNumber():null}}r($n,"buildSwapEstimatePayload");var Ob=Bb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Yg}`]:{width:"$48",height:"$48"}}),Ub=ac({flexGrow:1,paddingRight:"$10"}),zb=ac({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Qb=ac({display:"flex",justifyContent:"space-between",alignItems:"center"});function Zg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:i,quoteWarningsConfirmed:a}=z()(),s=Fb(),[c,l]=xr(""),p=!n,[u,d]=xr(!1),[m,h]=xr(!1),{isActiveTab:g}=re(),f=S().getDisabledLiquiditySources(),T=$b(f),{manager:C}=Wb(),{fetch:y,loading:k,cancelFetch:w}=nc(),[v,N]=xr({swap:null,error:null,warnings:null}),[I,b]=xr(!1),x=r(async({selectedWallets:P,customDestination:Z})=>{let Y=await y?.({selectedWallets:P,customDestination:Z});return N(Y),Y},"onConfirmSwap"),E=r(async()=>{if(v.swap&&n)try{await C?.create("swap",{swapDetails:v.swap},{id:v.swap.requestId});let P=`../${$.swaps}/${v.swap.requestId}`;s(P,{replace:!0}),setTimeout(()=>{e("")},0)}catch(P){l("Error: "+P?.message)}},"addNewSwap"),L=r(async()=>{h(!0),await E(),h(!1)},"onConfirm"),A=r(async()=>{v.warnings?.quote&&Bd(v.warnings.quote)&&!a?b(!0):(t&&oe({type:"swapStarted",payload:{...$n(t),stepCount:t.swaps.length}}),await L())},"onStartConfirmSwap"),O=r(async()=>{N({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:i}).then(P=>{N(P)}).catch(P=>console.error(P))},"onRefresh");ka(()=>{!!T.current.length&&!f.length&&O(),T.current=f},[f.length]),ka(()=>{p&&w()},[p]),ka(()=>{p&&d(p)},[p]),ka(()=>{p||y({selectedWallets:o,customDestination:i}).then(P=>N(P)).catch(P=>console.error(P))},[]),Db(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=v.warnings?.quote??null,j=v.error,ee=[];if(c&&ee.push($e.createElement(Pb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let P=`../${$.settings}`;ee.push($e.createElement(Tr,{warning:q,error:j,couldChangeSettings:!1,refetchQuote:O,skipAlerts:j?.type===4||q?.type===2,showWarningModal:I,confirmationDisabled:!g,onOpenWarningModal:()=>b(!0),onCloseWarningModal:()=>b(!1),onConfirmWarningModal:async()=>{b(!1),await E()},onChangeSettings:()=>s(P)}))}return $e.createElement(se,{header:{title:rc.t("Confirm Swap"),onWallet:()=>{let P=`../${$.wallets}`;s(P)}},footer:$e.createElement(Ob,null,$e.createElement("div",{className:Ub()},$e.createElement(Lb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||m,disabled:!!v.error||!g,onClick:A},rc.t("Start Swap"))),$e.createElement(Yg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||m,disabled:!g,onClick:d.bind(null,!0)},$e.createElement(Mb,{size:24})))},u&&$e.createElement(Pf,{open:u,onClose:()=>d(!1),onCancel:w,loading:k,onCheckBalance:x}),$e.createElement(ce,null,$e.createElement("div",{className:Qb()},$e.createElement(_b,{variant:"title",size:"small"},rc.t("You get")),$e.createElement("div",{className:zb()},$e.createElement(Qi,{onClick:!k&&!u&&!I?O:void 0}))),$e.createElement(ic,{size:"12"}),Em(ee.map((P,Z)=>({element:P,key:`alert-${Z}`})),$e.createElement(ic,{size:10})),ee.length>0?$e.createElement(ic,{size:10}):null,$e.createElement(Zo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:v.error,loading:k,warning:v.warnings?.quote??null})))}r(Zg,"ConfirmSwapPage");import{i18n as io}from"@lingui/core";import{Button as Sc,CustomTokensZeroStateDarkIcon as lx,CustomTokensZeroStateIcon as cx,DeleteIcon as px,Divider as Pr,IconButton as ux,MessageBox as dx,NotFound as mx,styled as Cc}from"@rango-dev/ui";import Se,{useState as Tc}from"react";import{useNavigate as fx}from"react-router-dom";import{CloseIcon as Hb,IconButton as qb,SearchIcon as Gb,TextField as Vb}from"@rango-dev/ui";import Fn from"react";import{styled as Jg}from"@rango-dev/ui";var Rg=Jg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),eh=Jg("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function Pt(t){let{variant:e,fullWidth:o,color:n,size:i,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,m=s.length?Fn.createElement(qb,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Fn.createElement(Hb,{color:"gray",size:10})):null;return p&&(m=p),Fn.createElement(eh,null,Fn.createElement(Vb,{prefix:Fn.createElement(Rg,null,Fn.createElement(Gb,{color:"black"})),id:u,suffix:m,fullWidth:o,color:n,variant:e,style:{borderRadius:25,alignItems:"center",...c},size:i,value:s,onChange:a,...d}))}r(Pt,"SearchInput");import{i18n as yc}from"@lingui/core";import{Button as Yb,CustomTokenWarning as Zb,darkTheme as dh,Divider as ro,ExternalLinkIcon as Jb,Image as Rb,ListItem as ex,NotFound as tx,PinIcon as ox,Skeleton as Jo,Typography as Nr,VirtualizedList as nx}from"@rango-dev/ui";import _,{useState as rx}from"react";import{useTranslation as ix}from"react-i18next";import{Divider as ph,ListItem as Xb,Skeleton as Ar}from"@rango-dev/ui";import Lt from"react";import{css as On,darkTheme as sc,ImageContainer as Kb,ListItemButton as jb,styled as st,Typography as th}from"@rango-dev/ui";var lc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),cc=On({position:"relative",height:12,width:"30%",maxWidth:"150px"}),pc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),uc=On({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${sc} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),dc=On({}),mc=On(),oh=st("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),fc=st("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),wa=st("ul",{flexGrow:1,height:"100%",padding:0,margin:0,display:"flex",flexDirection:"column",listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${cc}`]:{[`& .${uc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${dc}`]:{bottom:"-15px"},[`& .${lc}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${pc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),nh=st(jb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),gc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),hc=st(th,{}),rh=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${mc}`]:{$$color:"$colors$neutral600",[`.${sc} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ir=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),CV=st("div",{display:"flex",alignItems:"center"}),ih=st("div",{position:"relative",[`& ${Kb}`]:{borderRadius:"$xm",overflow:"hidden"}}),ah=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),sh=st(th,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),lh=st("a",{"& svg:hover":{color:"$colors$info"}}),ch=st("div",{paddingRight:"$5","& .widget-token-list-item-btn":{width:"100%",overflow:"hidden",height:"60px"},"& .widget-token-list-item-import-btn":{height:"$20",padding:"0 $10","& ._text":{display:"flex",justifyContent:"center",alignItems:"center"},"& ._typography":{[`.${sc} &`]:{color:"$foreground"}}}});function uh(t){return Lt.createElement(wa,null,Array.from(Array(t.size),(e,o)=>Lt.createElement(Xb,{key:o,hasDivider:!0,start:Lt.createElement(Ar,{variant:"circular",width:35,height:35}),end:Lt.createElement(Ir,null,Lt.createElement(Ar,{variant:"text",size:"large",width:70}),Lt.createElement(ph,{size:4}),Lt.createElement(Ar,{variant:"text",size:"medium",width:50})),title:Lt.createElement("div",null,Lt.createElement(Ar,{variant:"text",size:"large",width:90}),Lt.createElement(ph,{size:4}),Lt.createElement(Ar,{variant:"text",size:"medium",width:90}))})))}r(uh,"LoadingTokenList");var ax=20,sx=r(t=>{let{address:e,name:o,url:n,token:i,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return _.createElement("div",{className:cc()},o?_.createElement("div",{className:lc()},o):_.createElement(fc,{className:pc()},_.createElement(Nr,{variant:"title",size:"xmedium"},i.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(gc,{css:a},_.createElement(hc,{variant:"body",size:"xsmall",css:s},i.blockchain))),!!e&&_.createElement("div",{className:`${uc()} ${!o&&dc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",_.createElement(ro,{size:4,direction:"horizontal"}),_.createElement(lh,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Jb,{size:12}))))},"renderDesc");function Wr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:i,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=S().fetchStatus,u=S().blockchains(),{getBalanceFor:d,fetchingWallets:m}=S(),{isTokenPinned:h}=S(),{setFromToken:g,setToToken:f}=z()(),{t:T}=ix(),C=Ve(),[y,k]=rx(null),w=r(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):f({token:y,meta:{blockchains:u}})},"updateToken"),v=r(()=>{w(),C()},"handleImportToken"),N=r(x=>{if(x.customToken){let{customToken:L,...A}=x;return _.createElement(Yb,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:r(q=>{q.stopPropagation(),k({...A,warning:!0})},"handleClick")},_.createElement(Nr,{variant:"body",size:"xsmall",color:"background"},T("import")))}let E=fi(d(x));return s?s(x):m?_.createElement(Ir,null,_.createElement(Jo,{variant:"text",size:"large",width:70}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:50})):E&&_.createElement(rh,null,_.createElement(sh,{variant:"title",size:"small"},E.amount),_.createElement("div",null),E.usdValue&&_.createElement(Nr,{variant:"body",className:mc(),size:"xsmall"},`$${E.usdValue}`))},"endRenderer"),I=r(()=>_.createElement(nx,{style:{flexGrow:1,minHeight:0},itemContent:x=>{let E=e[x];if(E==="skeleton")return _.createElement(ex,{hasDivider:!0,start:_.createElement(Jo,{variant:"circular",width:35,height:35}),end:_.createElement(Ir,null,_.createElement(Jo,{variant:"text",size:"large",width:70}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Jo,{variant:"text",size:"large",width:90}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:90}))});let L=u.find(Z=>Z.name===E?.blockchain);if(!L||!E)return null;let A=E.address,O=il(L.color,"main"),q={$$color:O.main150,[`.${dh} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${dh} &`]:{$$color:O.main150},color:"$$color"},ee=r(()=>{typeof E!="string"&&!E.customToken&&n?.(E)},"handleClick"),P=A?ni({contractAddress:A,blockchainMeta:L}):void 0;return _.createElement(ch,null,_.createElement(nh,{"tab-index":x,key:`${E.symbol}${A}`,id:`${E.symbol}${A}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:E?.customToken,onClick:ee,start:_.createElement(ih,null,_.createElement(Rb,{src:E.image===""?ai:E.image,size:30}),t.type!=="custom-token"&&E&&h(E,t.type)&&_.createElement(ah,null,_.createElement(ox,{size:12,color:"gray"}))),title:E.name||!E.name&&!A?_.createElement(fc,null,_.createElement(Nr,{variant:"title",size:"xmedium"},E.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(gc,{css:q},_.createElement(hc,{variant:"body",size:"xsmall",css:j},E.blockchain)),l&&E.warning&&_.createElement(_.Fragment,null,_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(Zb,{container:W()}))):void 0,description:typeof E!="string"&&L.info&&A&&P?sx({address:A,token:E,customCssForTag:q,customCssForTagTitle:j,name:E.name,url:P}):E.name||void 0,end:N(E)}))},totalCount:e.length,key:`${i}-${o}`}),"renderList"),b=y?Lo(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Nr,{variant:"label",size:"large"},yc.t("Select Token")),_.createElement(ro,{size:4})),_.createElement(oh,null,_.createElement(ro,{size:4}),p==="loading"&&_.createElement(uh,{size:ax}),p==="success"&&(e.length?_.createElement(_.Fragment,null,_.createElement(gr,{token:y,address:y?.address??"",blockchain:b??void 0,onImport:v,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),_.createElement(wa,{as:"ul"},I())):!!o&&_.createElement(tx,{title:yc.t("No results found"),description:yc.t("Try using different keywords")}))))}r(Wr,"TokenList");var gx=Cc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),hx=Cc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),yx=Cc(ux,{"&:hover":{"& svg":{color:"$secondary550"}}});function mh(){let[t,e]=Tc(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:i,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=ho({}),p=fx(),[u,d]=Tc(!1),[m,h]=Tc(),g=r(y=>{let k=y.target.value;e(k)},"handleSearch"),f=l==="dark",T=n.filter(y=>pt(y.symbol,t)||pt(y.address||"",t)||pt(y.name||"",t)),C=r(()=>{if(m){let y=a?kt(a):null,k=i?kt(i):null,w=kt(m);y===w?c({token:null}):k===w&&s({token:null}),o(m)}d(!1)},"handleDeleteCustomToken");return Se.createElement(se,{header:{title:io.t("Custom Tokens")}},Se.createElement(ce,null,Se.createElement(gx,null,n.length?Se.createElement(Se.Fragment,null,Se.createElement(Pt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:io.t("Search Token"),onChange:g}),Se.createElement(Pr,{size:16}),Se.createElement(Wr,{list:T,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>Se.createElement(yx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},Se.createElement(px,{size:12,color:"gray"}))})):Se.createElement(hx,null,Se.createElement(mx,{icon:f?Se.createElement(lx,{size:200}):Se.createElement(cx,{size:200}),title:io.t("No custom tokens"),description:io.t("press the button to add your custom token")})),Se.createElement(Pr,{size:20}),Se.createElement(Sc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},io.t("Add Custom Token"))),Se.createElement(ie,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},Se.createElement(dx,{title:io.t("Delete Custom Token"),type:"error",description:io.t("Are you sure you want to Delete this Token?")},Se.createElement(Pr,{size:40}),Se.createElement(Pr,{size:10}),Se.createElement(Sc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:C},io.t("Yes, Delete it")),Se.createElement(Pr,{size:12}),Se.createElement(Sc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},io.t("No, Continue"))))))}r(mh,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as $x}from"@rango-dev/queue-manager-react";import{Button as Ic,darkTheme as Fx,Divider as vo,MessageBox as Ox,NotFound as Ux,styled as Ac,Tabs as zx,Typography as ba}from"@rango-dev/ui";import{TransactionStatus as _r}from"rango-types";import ne,{useMemo as Lh,useState as Mr}from"react";import{useNavigate as Qx}from"react-router-dom";import{FilterIcon as Ex,Popover as bx}from"@rango-dev/ui";import Ro from"react";import{css as Sx,darkTheme as va,IconButton as Tx,styled as Lr}from"@rango-dev/ui";var kc=Lr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${va} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),fh=Lr(Tx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${va} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${va} &`]:{backgroundColor:"$neutral"},[`& ${kc}::before`]:{backgroundColor:"$secondary100",[`.${va} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),gh=Lr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),hh=Lr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),yh=Sx({display:"flex",justifyContent:"space-between",alignItems:"center"}),Sh=Lr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Th}from"@lingui/core";import{Button as Cx,Divider as Ch,ListItemButton as kx,Radio as wx,RadioRoot as vx,Typography as kh}from"@rango-dev/ui";import gt from"react";function wh(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(hh,null,gt.createElement("div",{className:yh()},gt.createElement(kh,{size:"small",variant:"body"},Th.t("Status")),gt.createElement(Cx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Th.t("Reset"))),gt.createElement(Ch,{size:10}),gt.createElement(vx,{value:e},gt.createElement(Sh,null,t.list.map((n,i)=>gt.createElement(kx,{key:n.id,className:"widget-filter-selector-list-item-btn",style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=i,id:n.id,title:gt.createElement(gt.Fragment,null,gt.createElement(Ch,{direction:"horizontal",size:4}),gt.createElement(kh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(wx,{value:n.id}),onClick:o})))))}r(wh,"FilterSelectorContent");function wc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:i,open:a}=t;return Ro.createElement("div",null,Ro.createElement(bx,{open:a,align:"end",onOpenChange:o,container:W(),content:Ro.createElement(wh,{list:i,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Ro.createElement(fh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Ro.createElement(kc,{isSelect:!!n},Ro.createElement(Ex,{size:16,color:"black"}),!!n&&Ro.createElement(gh,null)))))}r(wc,"FilterSelector");import{i18n as Ax}from"@lingui/core";import{getCurrentStep as Nx}from"@rango-dev/queue-manager-rango-preset";import{Divider as Ih,GroupedVirtualizedList as Wx,Skeleton as Px,SwapListItem as Ah,Typography as Lx}from"@rango-dev/ui";import et,{useCallback as Nh,useEffect as Bx,useRef as _x,useState as Mx}from"react";function vh(t,e){let o=[],n=0;do{let i=t[n];i&&(o.push(Math.min(i,e)),e-=i),n++}while(e>0&&n<=t.length);return o}r(vh,"calculateGroupsSoFar");import{css as xx,darkTheme as Ix,styled as Br}from"@rango-dev/ui";var vc=xx(),Eh=Br("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),Ec=Br("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${vc}`]:{$$color:"$colors$neutral600",[`.${Ix} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),bc=Br("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),bh=Br("div",{gap:"$10",display:"flex",flexDirection:"column"}),xh=Br("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var Dx=10;function xc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:i}=t,[a,s]=Mx([]),c=_x(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=Nh(vh,[]),m=Nh(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,Dx),s(d(p,c.current)))},[e.length]);if(Bx(()=>{i||m()},[i,m]),i){let h=[1,2];return et.createElement(et.Fragment,null,[h,h].map((f,T)=>et.createElement(Ec,{key:T},et.createElement(bc,null,et.createElement(Px,{variant:"text",width:60,size:"small"}),et.createElement(Ih,{size:16})),et.createElement(Ih,{size:4}),et.createElement(bh,null,f.map((y,k)=>et.createElement(Ah,{isLoading:!0,key:k}))))))}return et.createElement(Wx,{style:{flexGrow:1,minHeight:0},endReached:()=>{c.current<e.length&&m()},groupCounts:a,groupContent:h=>et.createElement(Ec,null,et.createElement(bc,null,et.createElement(Lx,{variant:"label",size:"medium",className:vc()},u[h]))),itemContent:(h,g)=>{let f=l[h];if(!f)return null;let T=Nx(f),C=f.steps[0],y=f.steps[f.steps.length-1];return!C||!y?null:et.createElement(Eh,{key:f.requestId},et.createElement(Ah,{className:"widget-history-group-list-swap-item-btn",requestId:f.requestId,creationTime:f.creationTime,status:f.status,onClick:o,currentStep:T,tooltipContainer:W(),onlyShowTime:u[g]===Ax.t("Today"),swapTokenData:{from:{token:{image:C.fromLogo,displayName:C.fromSymbol},blockchain:{image:C.fromBlockchainLogo||""},amount:M(f.inputAmount,6,6),realAmount:f.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:M(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}r(xc,"HistoryGroupedList");import{i18n as Ea}from"@lingui/core";import Wh from"dayjs";var Ph=r(t=>{let e=new Map([["today",{title:Ea.t("Today"),swaps:[]}],["week",{title:Ea.t("This week"),swaps:[]}],["month",{title:Ea.t("This month"),swaps:[]}],["year",{title:Ea.t("This year"),swaps:[]}]]);function o(l,p){e.has(l)||e.set(l,{title:l,swaps:[]}),e.get(l)?.swaps.push(p)}r(o,"addYearsToOutput");let n=Wh();t.forEach(l=>{let p=Number(l.creationTime),u=Wh(p);if(n.isSame(u,"day"))e.get("today")?.swaps.push(l);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(l);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(l);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(l);else{let d=new Date(p).getFullYear().toString();o(d,l)}});let i=Array.from(e.values()).filter(l=>l.swaps.length>0),a=i.flatMap(l=>l.swaps),s=i.map(l=>l.swaps.length),c=i.map(l=>l.title);return{swaps:a,groupCounts:s,groups:c}},"groupSwapsByDate");var Hx=Ac("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),qx=Ac("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Gx=Ac("div",{"._typography":{color:"$neutral700",[`.${Fx}&`]:{color:"$neutral900"}}}),Vx=r((t,e)=>t?.length?t.filter(o=>Mt(o.fromBlockchain,e)||Mt(o.toBlockchain,e)||Mt(o.toSymbol,e)||Mt(o.fromSymbol,e)).length:!1,"isStepContainsText");function Bh(){let t=Qx(),{manager:e,state:o}=$x(),n=Et(e).map(({swap:b})=>b),[i,a]=Mr(""),[s,c]=Mr(!1),l=!o.loadedFromPersistor,[p,u]=Mr(""),[d,m]=Mr(!1),[h,g]=Mr("all"),f=r(b=>{let x=b.target.value;a(x)},"handleSearch"),{isMultiMode:T}=rt(),C=[{id:_r.SUCCESS,title:Fe.t("Complete")},{id:_r.RUNNING,title:Fe.t("Running")},{id:_r.FAILED,title:Fe.t("Failed")}],y=[{id:"all",title:Fe.t("All")},{id:"swap",title:Fe.t("Swap")},{id:"refuel",title:Fe.t("Refuel")}],k=Lh(()=>!i&&!p&&h==="all"?n:n.filter(b=>{let{inputAmount:x,status:E,steps:L,requestId:A,mode:O}=b;return(!i||Mt(x,i)||Mt(E,i)||Vx(L,i)||Mt(A,i))&&(!p||p===E)&&(h==="all"?!0:h==="swap"?!O||O==="swap":h==="refuel"?O==="refuel":!1)}),[n,i,p,h]),w=!k?.length&&!l,v=r(()=>m(!1),"onCloseModal"),N=r(async()=>{try{await e?.clearQueue(),m(!1)}catch(b){console.log(b)}},"onClear"),I=Lh(()=>!n.some(b=>b.status===_r.SUCCESS||b.status===_r.FAILED),[n]);return ne.createElement(se,{header:{title:Fe.t("History"),suffix:ne.createElement(yo,null,ne.createElement(Ic,{id:"widget-history-clear-btn",disabled:I,variant:"ghost",size:"xsmall",onClick:()=>m(!0)},ne.createElement(ba,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},ne.createElement(ce,null,ne.createElement(qx,null,ne.createElement(Pt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Fe.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:f,style:{height:36},value:i}),ne.createElement(vo,{size:10,direction:"horizontal"}),ne.createElement(wc,{filterBy:p,open:s,onOpenChange:b=>c(b),onClickItem:b=>u(b),list:C})),ne.createElement(vo,{size:"16"}),T&&!l&&ne.createElement(ne.Fragment,null,ne.createElement(zx,{items:y,onChange:b=>g(b.id),value:h,type:"secondary"}),ne.createElement(vo,{size:"12"})),ne.createElement(Hx,null,w&&ne.createElement(xh,null,ne.createElement(vo,{size:32}),ne.createElement(Ux,{title:i?Fe.t("No results found"):Fe.t("No transactions"),titleColor:i?void 0:"$info",hasIcon:!!i,description:i?Fe.t("Try using different keywords"):Fe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!w&&ne.createElement(xc,{list:k,onSwapClick:t,groupBy:Ph,isLoading:l}))),ne.createElement(ie,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},ne.createElement(vo,{size:20}),ne.createElement(Ox,{type:"warning",title:Fe.t("Clear Transaction History"),description:ne.createElement(Gx,null,ne.createElement(ba,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ne.createElement(vo,{size:"24"}),ne.createElement(ba,{variant:"body",size:"small"},Fe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ne.createElement(vo,{size:30}),ne.createElement(Ic,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:N},Fe.t("Yes, Clear the history")),ne.createElement(vo,{size:10}),ne.createElement(Ic,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},ne.createElement(ba,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}r(Bh,"HistoryPage");import{i18n as ly}from"@lingui/core";import{Button as AI,Divider as Qc,styled as NI,WarningIcon as WI}from"@rango-dev/ui";import PI from"bignumber.js";import Ce,{useEffect as cy,useState as py}from"react";import{useNavigate as LI}from"react-router-dom";import{i18n as Mh}from"@lingui/core";import{Alert as jx,Divider as Nc,NoRouteIcon as Xx,Typography as Yx}from"@rango-dev/ui";import en from"react";import{styled as Kx}from"@rango-dev/ui";var _h=Kx("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Wc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Kt(t,e)?en.createElement(_h,null,en.createElement(Nc,{size:10}),en.createElement(Xx,{size:24,color:"gray"}),en.createElement(Nc,{size:4}),en.createElement(Yx,{variant:"title",size:"small"},Mh.t("No Routes Found")),en.createElement(Nc,{size:4}),en.createElement(jx,{title:Mh.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}r(Wc,"SameTokensWarning");import{Alert as Zx,Button as Jx}from"@rango-dev/ui";import $h from"react";import{i18n as xa}from"@lingui/core";function Dh(t){let e=null;return t===Si?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:xa.t("Reset"),title:xa.t("Slippage cannot be set lower than 0.01%.")},e):t>dn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:xa.t("Change"),title:xa.t("Caution, your slippage is high!")},e):null}r(Dh,"makeAlerts");function Fh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:i}=S(),{onChangeSettings:a}=t,c=Dh(o!==null?o:e),l=r(p=>{p==="reset-slippage"?(n(yi),i(null)):p==="change-settings"&&a()},"onClickActionButton");return c?$h.createElement(Zx,{title:c.title,type:c.alertType,variant:"alarm",action:$h.createElement(Jx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}r(Fh,"SlippageWarningsAndErrors");import{i18n as nI}from"@lingui/core";import{IconButton as rI,ReverseIcon as iI,Skeleton as aI,Tooltip as sI,Typography as Dr}from"@rango-dev/ui";import ht from"react";import Ia from"bignumber.js";function Uh(t){let{error:e,isDarkTheme:o,warning:n}=t,{quoteError:i,slippageError:a}=e,{quoteWarning:s,slippageWarning:c}=n,l=!!a||i?.type===4,p=!!c||s?.type===2;return l?"$error500":p?"$warning500":o?"$neutral600":"$neutral700"}r(Uh,"getSlippageColor");function zh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new Ia(e),i=new Ia(o),a=n.dividedBy(i),s;return a.isLessThan(1)?s=a.toFixed(14).replace(/\.?0+$/,""):a.toFixed(0).length>10?s=a.toFixed(0).slice(0,10):s=a.toFixed(2),{displayValue:s,rawValue:a.toFixed()}}r(zh,"getUsdExchangeRate");function Qh(t,e){let o=new Ia(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,Ia.ROUND_DOWN).toFormat(2)}`}r(Qh,"formatTokenValueInUsd");import{darkTheme as tI,styled as Lc,Typography as oI}from"@rango-dev/ui";var Hh=Lc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),qh=Lc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${tI} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Bc=Lc(oI,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function _c(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:i}=S(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:m}=ho({}),h=fn(d),g=m==="dark",f=n==="default",T={quoteError:a,slippageError:h?.type==="error"?h.message:null},C={quoteWarning:s,slippageWarning:h?.type==="warning"?h.message:null},y=p?.swaps[0]?.from||c,k=p?.swaps[p?.swaps.length-1]?.to||l,w=f?y:k,v=f?k:y,N=Number(f?p?.outputAmount:p?.requestAmount),I=Number(f?p?.requestAmount:p?.outputAmount),b=N||w.usdPrice,x=I||v.usdPrice,{rawValue:E,displayValue:L}=zh({toTokenUsdPrice:x,fromTokenUsdPrice:b});return ht.createElement(Hh,null,ht.createElement(Dr,{variant:T||C?"label":"body",size:T||C?"medium":"small",color:Uh({error:T,warning:C,isDarkTheme:g})},nI.t("Slippage:")," ",d,"%"),u?ht.createElement(aI,{height:16,width:104,variant:"rounded"}):b&&x&&ht.createElement(qh,null,ht.createElement(Dr,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Bc,{className:"rate-text",variant:"body",size:"small"},v.symbol),ht.createElement(rI,{id:"widget-home-page-change-rate-button",onClick:i},ht.createElement(iI,{size:14,color:"secondary"})),ht.createElement(sI,{container:W(),side:"top",sideOffset:4,content:ht.createElement(Dr,{className:"rate-text",variant:"body",size:"small"},E)},ht.createElement(Dr,{className:"rate-text",variant:"body",size:"small"},L)),ht.createElement(Bc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement(Dr,{color:"neutral600",variant:"body",size:"small"},"~",Qh(Number(E),w.usdPrice))))}r(_c,"SwapMetrics");import{i18n as mI}from"@lingui/core";import{Header as fI}from"@rango-dev/ui";import Eo,{useEffect as gI,useState as hI}from"react";import{i18n as cI}from"@lingui/core";import{Divider as Dc,FullExpandedQuote as pI,Typography as uI}from"@rango-dev/ui";import ve from"react";import{styled as Mc}from"@rango-dev/ui";var Gh=Mc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Vh=Mc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Kh=Mc("div",{width:"146px"});import{i18n as $r}from"@lingui/core";import{Select as lI}from"@rango-dev/ui";import jh from"react";function Aa(t){let{updateQuotePartialState:e,sortStrategy:o}=z()(),n=[{value:"SMART",label:$r.t("Smart Routing")},{value:"FEE",label:$r.t("Lowest Fee")},{value:"SPEED",label:$r.t("Fastest Transfer")},{value:"NET_OUTPUT",label:$r.t("Maximum Return")},{value:"PRICE",label:$r.t("Maximum Output")}];return jh.createElement(Kh,null,jh.createElement(lI,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:i=>{e("sortStrategy",i.value)},variant:"filled"}))}r(Aa,"SelectStrategy");var Xh=3;function Fr(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:i,hasSort:a=!0,fullExpandedMode:s=!1,container:c}=t,{selectedQuote:l,quotes:p,updateQuotePartialState:u,fromToken:d,toToken:m,sortStrategy:h,error:g}=z()(),{slippage:f,customSlippage:T}=S(),{findToken:C}=S(),y=c||W(),k=!!p&&p.results.length,w=T??f,{config:{__UNSTABLE_OR_INTERNAL__:v}}=S(),N=r(x=>{if(!d||!m||!p)return null;let E={requestAmount:p.requestAmount,validationStatus:null,...x};return En({currentQuote:E,userSlippage:w,findToken:C})},"getQuoteWarning"),I=g?.type===0||g?.type===1,b=p?.results?Li(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Vh,null,ve.createElement(uI,{size:"xmedium",variant:"title"},cI.t("Sort by")),ve.createElement(Aa,{container:y})),ve.createElement(Dc,{size:"10"})),e&&Array.from({length:Xh},(x,E)=>ve.createElement(ve.Fragment,{key:E},s?ve.createElement(pI,{campaignTag:v?.campaignTag,loading:!0}):ve.createElement(br,{tagHidden:!1,type:"list-item",expanded:!1}),E!==Xh-1&&ve.createElement(Dc,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?b.map((x,E)=>{let L=N(x),A=oc(x.swaps),O=b.length-1===E;return ve.createElement(ve.Fragment,{key:x.requestId},ve.createElement(Zo,{id:"widget-quotes-quote-info-container",showModalFee:i,container:y,selected:l?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:A?.options||null,warning:L,fullExpandedMode:s,onClick:q=>{A||u("warning",L),u("error",A?.options||null),o(q)},type:"list-item"}),!O&&ve.createElement(Dc,{size:16}))}):I&&ve.createElement(Gh,null,ve.createElement(yr,{size:s?"large":"small",error:g,fetch:n}))))}r(Fr,"Quotes");import{darkTheme as dI,styled as Yh}from"@rango-dev/ui";var Zh=Yh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${dI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Jh=Yh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var yI=100;function $c(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:i,isVisible:a}=t,[s,c]=hI(!1),l=s?"":"is-hidden",{config:p}=S(),u=p?.variant==="full-expanded",d=Mo();return gI(()=>{let m=null;return a?m=setTimeout(()=>{c(!0)},yI):(c(!1),m&&clearTimeout(m)),()=>{m&&clearTimeout(m)}},[a]),Eo.createElement(Zh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Vi()} widget-expanded-quotes-container`,id:wt.EXPANDED_BOX_ID},Eo.createElement(fI,{title:mI.t("Routes"),suffix:Eo.createElement(Eo.Fragment,null,Eo.createElement(Aa,{container:d}),Eo.createElement(Vo,{container:d,onClickRefresh:i,hidden:["history","notifications","settings"]}))}),Eo.createElement(Jh,null,Eo.createElement(Fr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Mo(),onClickOnQuote:n,fullExpandedMode:u})))}r($c,"ExpandedQuotes");import{i18n as iy}from"@lingui/core";import{SwapInput as ay}from"@rango-dev/ui";import kI from"bignumber.js";import Or from"react";import{ReverseIcon as CI}from"@rango-dev/ui";import Oc from"react";import{keyframes as SI,styled as Rh}from"@rango-dev/ui";var Fc=450,TI=SI({"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)"}}),ey=Rh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),ty=Rh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${TI} ${Fc}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 Uc(){let t=z().use.switchFromAndTo();return Oc.createElement(ey,null,Oc.createElement(ty,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Fc),t()}},Oc.createElement(CI,{size:12})))}r(Uc,"SwitchFromAndToButton");import{styled as oy}from"@rango-dev/ui";var ny=oy("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),ry=oy("div",{position:"relative"});function zc(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:i}=t,{fromToken:a,fromBlockchain:s,toToken:c,toBlockchain:l,setInputAmount:p,sanitizeInputAmount:u,inputAmount:d,inputUsdValue:m,outputAmount:h,outputUsdValue:g,selectedQuote:f}=z()(),{swapMode:T}=rt(),{connectedWallets:C,getBalanceFor:y}=S(),k=a?y(a):null,w=fi(k)?.amount??"0",v=k?new kI(k.amount).shiftedBy(-k.decimals):pe,N=!!s&&Au(C,s.name),I=!zs(f,d,m),b=!zs(f,d,g),x=!m||!g||!g.gt(0)?null:Zt(m.toString(),g.toString());return Or.createElement(ny,null,Or.createElement(ry,null,Or.createElement(ay,{label:iy.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:w,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:d,usdValue:I?void 0:M(m,4,4),realUsdValue:I?void 0:m?.toString(),error:I?te().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:N,tooltipContainer:W(),onSelectMaxBalance:()=>{let E=v.isGreaterThan(pe)?v.toFixed():"";p(E)},anyWalletConnected:C.length>0}),T==="swap"&&Or.createElement(Uc,null)),Or.createElement(ay,{selectionType:T==="swap"?"token":"chain",sharpBottomStyle:!i&&(!!f||e),label:iy.t("To"),mode:"To",id:"widget-swap-to-input",fetchingQuote:e,chain:{displayName:l?.displayName||"",image:l?.logo},token:{displayName:c?.symbol||"",image:c?.image,securityWarning:!!c?.warning},percentageChange:M(Zt(m,g),2,2),warningLevel:Jt(x??0),price:{value:M(h,6,6),usdValue:b?void 0:M(g,4,4),realValue:h?.toString(),realUsdValue:b?void 0:g?.toString(),error:b?te().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}r(zc,"Inputs");import{warn as wI}from"@rango-dev/logging-core";import{useCallback as vI,useEffect as EI,useRef as bI,useState as xI}from"react";function sy(){let{fetch:t,loading:e,cancelFetch:o}=Sa({request:async(n,i)=>await dt().getAllRoutes(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(sy,"useFetchAllQuotes");var II=600;function Na({refetchQuote:t}){let{fetch:e,cancelFetch:o}=sy(),{excludeLiquiditySources:n,routing:i}=S().config,{connectedWallets:a}=S(),c=a.some(be=>be.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:m,sortStrategy:h,resetQuote:g,error:f,warning:T,setSelectedQuote:C,updateQuotePartialState:y}=z()(),{slippage:k,customSlippage:w,affiliatePercent:v,affiliateRef:N,affiliateWallets:I,fetchStatus:b}=S(),x=S().getLiquiditySources(),E=S().getDisabledLiquiditySources(),L=S().excludeLiquiditySources(),{findToken:A}=S(),{swapMode:O}=rt(),[q,j]=xI(!0),ee=bI(u),P=w??k,Y=!l||!p||Kt(l,p)||!Zn(u),ue=r(be=>{j(be)},"resetState"),Ee=r(be=>{let{fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,slippage:Q,affiliateRef:X,affiliatePercent:G,affiliateWallets:J}=be;if(q||ue(!0),!Y&&He&&Xe){g();let U=Vd({fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:Q,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});mn("experimental",i)&&(U.experimental=!0),mn("avoidNativeFee",i)&&(U.avoidNativeFee=!0),mn("enableCentralizedSwappers",i)&&(U.enableCentralizedSwappers=!0),i?.maxLength&&(U.maxLength=i.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let qe=Li(h,de.results),ot=Md(m,qe,de.requestAmount);j(!1),y("quotes",de),C(ot),de.results?.length&&ot&&hn({type:"routeRequested",payload:{...$n(ot),routeCount:de.results.length}}),Ta({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let po=ot&&En({currentQuote:ot,userSlippage:P,findToken:A});y("warning",po)}).catch(de=>{let qe=Ca(de);qe.type===0?hn({type:"routeNotFound",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,sourceTokenSymbol:He.symbol,sourceTokenAddress:He.address,destinationTokenSymbol:Xe.symbol,destinationTokenAddress:Xe.address,inputAmountUsd:d?d.toNumber():null}}):qe.type===1&&hn({type:"routeFetchFailed",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,errorCode:String(de?.response?.status??"")}}),(qe.type===0||qe.type===1)&&g(),qe.type!==2&&(y("error",qe),j(!1),wI(new Error("quote error"),{tags:{...qe,type:Ye[qe.type],requestBody:U}}))})}},"fetch"),Vt=vI(si(be=>{Ee(be)},II),[Y]);return EI(()=>{if(!t){j(!1);return}if(b!=="success")return;if(Y){j(!1),(m||f||T)&&g();return}if(!Zn(u)&&d?.eq(0)){ue(!1),o();return}g(),ue(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Vt),ee.current=u,be({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:L,disabledLiquiditySources:E,slippage:P,affiliateRef:N,affiliatePercent:v,affiliateWallets:I,contractCall:c}),o},[b,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,x?.length,n,E.length,P,N,v,c,JSON.stringify(I)]),{fetch:()=>Ee({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:L,disabledLiquiditySources:E,slippage:P,affiliateRef:N,affiliatePercent:v,affiliateWallets:I,contractCall:c}),loading:q}}r(Na,"useSwapInput");var BI=NI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),_I=300;function uy(){let t=LI(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:i,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:m}=z()(),[h,g]=py(!1),{isLargeScreen:f,isExtraLargeScreen:T}=ca(),{fetch:C,loading:y}=Na({refetchQuote:a}),{config:k,fetchStatus:w,connectedWallets:v,customSlippage:N,slippage:I,setSlippage:b,setCustomSlippage:x}=S(),{isActiveTab:E}=re(),[L,A]=py(!1),O=N!==null?N:I,{swapMode:q}=rt(),j=fn(O),P=Hd({fetchMetaStatus:w,fetchingQuote:y,inputAmount:n,quote:i,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=_u(f,T,k?.variant),Y=!!n&&!!e&&!!o&&new PI(n).gt(0)&&!Rd(e,o),ue=Y&&w==="success"&&y,Ee=j?.quoteValidation||c,He=(!Z||Z&&l?.results.length)&&(Ee||s),Xe=!!e&&!!o,St=Xe&&!!j,ct=(i||s)&&!L?C:void 0,B=r(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},_I)):t(J)},"onHandleNavigation"),V=r(J=>{i?.requestId!==J.requestId&&(i&&hn({type:"routeChanged",payload:{sourceChain:J.swaps[0]?.from.blockchain??"",destinationChain:J.swaps[J.swaps.length-1]?.to.blockchain??"",fromRouteId:i.requestId,toRouteId:J.requestId}}),A(!1),p(J))},"onClickOnQuote"),Q=r(J=>{if(J){if(hi.includes(J)){b(J),x(null);return}x(J)}},"onChangeSlippage"),X=r(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");cy(()=>{u(),m("refetchQuote",!0)},[]),cy(()=>{g(Y)},[Y]);let G=r(()=>{P.action==="connect-wallet"?Xu({type:"clickConnectWallet"},()=>{B($.wallets)}):P.action==="confirm-warning"?A(!0):i&&(oe({type:"swapInitiated",payload:{...$n(i),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(BI,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(AI,{id:`widget-swap-${P.action}-btn`,type:"primary",size:"large",disabled:P.disabled||!E,prefix:P.action==="confirm-warning"&&Ce.createElement(WI,null),fullWidth:!0,onClick:G},P.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:k.title||(q==="swap"?ly.t("Swap"):ly.t("Refuel")),suffix:Ce.createElement(Vo,{hidden:Z?["refresh"]:void 0,onClickRefresh:ct,onClickHistory:()=>B($.swaps),onClickSettings:()=>{B($.settings)}})}},Ce.createElement(ce,null,Ce.createElement(zc,{fetchingQuote:ue,fetchMetaStatus:w,isExpandable:Z,onClickToken:X}),Ce.createElement(Qc,{size:"2"}),Z?null:Ce.createElement(Zo,{quote:i,loading:ue,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:Ee,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{m("refetchQuote",!1),B($.routes)}:void 0}),Xe&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Qc,{size:8}),Ce.createElement(_c,{quoteError:s,quoteWarning:Ee,fromToken:e,toToken:o,quote:i,loading:ue})),He?Ce.createElement(Ce.Fragment,null,Ce.createElement(Tr,{warning:Ee,error:s,skipAlerts:!!j,couldChangeSettings:!0,refetchQuote:C,showWarningModal:L,confirmationDisabled:!E,onOpenWarningModal:()=>A(!0),onCloseWarningModal:()=>A(!1),onChangeSlippage:Q,onConfirmWarningModal:()=>{A(!1),d(!0),B($.confirmSwap)},onChangeSettings:()=>B($.settings)})):null,St&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Qc,{size:"10"}),Ce.createElement(Fh,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Wc,null))),Z?Ce.createElement($c,{loading:ue,onClickOnQuote:V,fetch:C,onClickRefresh:ct,isVisible:h}):null)}r(uy,"Home");import{i18n as dy}from"@lingui/core";import{Alert as MI,Divider as DI,List as $I,ListItemButton as FI,Radio as OI,RadioRoot as UI,Typography as zI}from"@rango-dev/ui";import zt from"react";function bo(){let{setLanguage:t,language:e,config:o}=S(),n=Uu,i=o?.language||gn;return{activeLanguage:e||i,languages:n,defaultLanguage:i,changeLanguage:a=>t(a||gn),resetLanguage:()=>t(null)}}r(bo,"useLanguage");function my(){let{activeLanguage:t,changeLanguage:e,languages:o}=bo(),n=Ve(),i=o.map(a=>{let{local:s,label:c,SVGFlag:l}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:zt.createElement(zI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:zt.createElement(OI,{value:s}),start:zt.createElement(l,null)}});return zt.createElement(se,{header:{title:dy.t("Language")}},zt.createElement(ce,null,zt.createElement(MI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),zt.createElement(DI,{size:"8"}),zt.createElement(UI,{value:t},zt.createElement($I,{type:zt.createElement(FI,{title:dy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:i}))))}r(my,"LanguagePage");import{i18n as ao}from"@lingui/core";import{Button as VI,Checkbox as KI,Image as jI,ListItemButton as XI,NotFound as YI,Typography as ZI}from"@rango-dev/ui";import tt,{useState as JI}from"react";import{Checkbox as qI,Skeleton as gy}from"@rango-dev/ui";import zr from"react";import{styled as Hc}from"@rango-dev/ui";var Ur=Hc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),qc=Hc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Gc=Hc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as QI,styled as HI}from"@rango-dev/ui";var fy=HI(QI,{height:61});var GI=30;function Vc(){return zr.createElement(Ur,null,Array.from(Array(GI),(t,e)=>zr.createElement(fy,{hasDivider:!0,key:e,start:zr.createElement(gy,{variant:"circular",width:35,height:35}),title:zr.createElement(gy,{variant:"text",size:"large",width:90}),end:zr.createElement(qI,{checked:!1})})))}r(Vc,"LoadingLiquiditySourceList");function Kc({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[i,a]=JI(""),s=S().toggleLiquiditySource,c=S().isInCampaignMode(),l=Ti(o,n),p={Exchanges:ao.t("Exchanges"),Bridges:ao.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let d=l.filter(y=>u.includes(y.type)),m=d.length===d.filter(y=>y.selected).length,h=t==="Exchanges"?"exchanges":"bridges",g=r(()=>{let y=!m;oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:y?"selectAll":"deselectAll",previousSelectedCount:d.filter(k=>k.selected).length,totalCount:d.length}}),d.forEach(k=>{m?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),f=d.map(y=>{let{selected:k,groupTitle:w,logo:v,id:N,...I}=y;return{id:`widget-setting-liquidity-source-${gu(N.toLowerCase())}-item-btn`,start:tt.createElement(jI,{src:v,size:22,type:"circular"}),onClick:()=>{c||(oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:"individual",sources:[{id:w,enabled:!k}]}}),s(w))},end:tt.createElement(KI,{checked:k,disabled:c}),title:tt.createElement(ZI,{variant:"title",size:"xmedium"},ao.t(w)),selected:k,groupTitle:w,logo:v,...I}}),T=r(y=>{let k=y.target.value;a(k)},"handleSearch"),C=f;return i&&(C=f.filter(y=>Mt(y.groupTitle,i))),tt.createElement(se,{header:{title:ao.t(t),suffix:tt.createElement(qc,null,tt.createElement(VI,{id:`widget-liquidity-source-${m?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},m?ao.t("Deselect all"):ao.t("Select all")))}},tt.createElement(ce,{view:!0},tt.createElement(Pt,{value:i,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:ao.t("Search {sourceType}",{sourceType:p[t]}),onChange:T}),e==="loading"&&tt.createElement(Vc,null),!C.length&&i?tt.createElement(Gc,null,tt.createElement(YI,{title:ao.t("No results found"),description:ao.t("Try using different keywords")})):e==="success"&&tt.createElement(Ur,{disabled:c,className:"widget-liquidity-source-list"},C.map(y=>{let{groupTitle:k,...w}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(XI,{style:{height:"61px"},...w,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}r(Kc,"LiquiditySourcePage");import{i18n as RI}from"@lingui/core";import Wa from"react";import{useNavigate as eA}from"react-router-dom";function hy(){let t=eA(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:i,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=Na({refetchQuote:n}),p=r(m=>{i(m),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${$.settings}`,d=`../${$.wallets}`;return Wa.createElement(se,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:RI.t("Routes"),suffix:Wa.createElement(Vo,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Wa.createElement(ce,null,Wa.createElement(Fr,{fetch:c,loading:l,onClickOnQuote:p})))}r(hy,"RoutesPage");import{i18n as vy}from"@lingui/core";import{Divider as Ey,getCategoriesCount as pA,SelectableCategoryList as uA}from"@rango-dev/ui";import so,{useMemo as dA,useState as by}from"react";import{useNavigate as mA}from"react-router-dom";import{i18n as jc}from"@lingui/core";import{Divider as rA,Image as iA,ListItemButton as aA,NotFound as sA,Typography as wy}from"@rango-dev/ui";import yt,{useEffect as lA,useState as cA}from"react";var yy=r((t,e,o)=>t.filter(n=>li(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as tA,styled as Sy}from"@rango-dev/ui";var Ty=Sy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Pa=Sy(vl,{padding:0,margin:0,listStyle:"none",[`& ${tA}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as oA,Skeleton as Cy}from"@rango-dev/ui";import La from"react";var nA=20;function ky(){return La.createElement(Pa,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(nA),t=>La.createElement(oA,{key:t,hasDivider:!0,start:La.createElement(Cy,{variant:"circular",width:35,height:35}),title:La.createElement(Cy,{variant:"text",size:"large",width:90})})))}r(ky,"LoadingBlockchainList");function Xc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:i,showTitle:a=!0}=t,[s,c]=cA(e),{fetchStatus:l}=S();lA(()=>{c([...yy(e,o,i)])},[e,o,i]);let p=r(()=>!s.length&&o?yt.createElement(sA,{title:jc.t("No results found"),description:jc.t("Try using different keywords")}):yt.createElement(Pa,{as:"ul",key:`${i}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(aA,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(iA,{src:u.logo,size:30}),title:yt.createElement(wy,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(wy,{variant:"label",size:"large"},jc.t("Select Chain")),yt.createElement(rA,{size:4})),yt.createElement(Ty,null,l==="loading"&&yt.createElement(ky,null),l==="success"&&p()))}r(Xc,"BlockchainList");function Ba(t){let{type:e}=t,o=Ve(),[n,i]=by(""),[a,s]=by("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=S(),m=mA(),{swapMode:h}=rt(),g=S().blockchains({type:e}),f=S().tokens(),T=dA(()=>pu(g,f),[g.length,f.length]),C=pA(T),y=!t.hideCategory&&C!==1,k=r(w=>{if(e==="custom-token")m(`..?blockchain=${w.name}`,{replace:!0});else{if(oe({type:"chainFilterApplied",payload:{side:e==="source"?"from":"to",chain:w.name,filterSource:"expanded"}}),e==="source")l(w);else if(h==="swap")c(w);else{let v=d(w);v&&p({token:v,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return so.createElement(se,{header:{title:vy.t("Select Chain")}},so.createElement(ce,{view:!0},y&&so.createElement(so.Fragment,null,so.createElement(uA,{setCategory:s,category:a,blockchains:T,isLoading:u==="loading"}),so.createElement(Ey,{size:24})),so.createElement(Pt,{value:n,autoFocus:!0,placeholder:vy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>i(""),onChange:w=>i(w.target.value)}),so.createElement(Ey,{size:16}),so.createElement(Xc,{list:T,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:k})))}r(Ba,"SelectBlockchainPage");import{i18n as Da}from"@lingui/core";import{Divider as By,Spinner as AA}from"@rango-dev/ui";import xo,{useEffect as NA,useState as WA}from"react";import{useNavigate as PA}from"react-router-dom";import{i18n as Jc}from"@lingui/core";import{BlockchainsChip as _a,Divider as Ny,Image as Wy,Skeleton as TA,Tooltip as CA,Typography as Rc}from"@rango-dev/ui";import xe from"react";import{useEffect as hA}from"react";var xy=["ETH"];function Yc(t,e,o){let n=JSON.parse(JSON.stringify(t)),i=[];if(n.sort(fA),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let c=o.limit-e.length;for(let l=0;l<=c;l++){let p=n[l];s=s.filter(u=>p?.name!==u)}}n.sort(gA(s)),i=n.splice(a)}return{list:n,more:i}}r(Yc,"prepare");function fA(t,e){let o=xy,n=o.findIndex(c=>c===t.name),i=o.findIndex(c=>c===e.name),a=n>-1,s=i>-1;return a&&s?n>i?1:-1:a?-1:s?1:0}r(fA,"sortByMostUsedBlockchains");function gA(t){return r(function(o,n){let i=t.findIndex(l=>l===o.name),a=t.findIndex(l=>l===n.name),s=i>-1,c=a>-1;return s&&c?i>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}r(gA,"generateSortByPreferredBlockchainsFor");function Iy(t,e){return!!e.list.find(o=>o.name===t)}r(Iy,"isInVisibleList");function Zc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();hA(()=>{if(e?.selected){let a=Yc(t,o,e);Iy(e.selected,a)||n(e?.selected)}},[e?.selected]);let i=Yc(t,o,e);return{list:i.list,more:i.more,history:[]}}r(Zc,"usePrepareBlockchainList");import{styled as yA}from"@rango-dev/ui";var Ay=yA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var kA=6,wA=12;function ep(t){let{blockchains:e,type:o,blockchain:n,onChange:i,onMoreClick:a}=t,{showCompactTokenSelector:s}=re(),c=Zc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=S(),p=z().use.resetToBlockchain(),u=z().use.resetFromBlockchain(),d=c.more.length>0,m=c.more[0],h=c.more.length===1&&m,g=!h&&d;return xe.createElement(xe.Fragment,null,!s&&xe.createElement(xe.Fragment,null,xe.createElement(Ny,{size:12}),xe.createElement(Rc,{variant:"label",size:"large"},Jc.t("Select Chain"))),xe.createElement(Ny,{size:12}),xe.createElement(Ay,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?kA:wA),(f,T)=>xe.createElement(TA,{key:T,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(_a,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(Rc,{variant:"body",size:"xsmall",color:"secondary500"},Jc.t("All"))),c.list.map(f=>xe.createElement(CA,{key:f.name,content:f.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(_a,{className:"widget-blockchains-section-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>i(f)},xe.createElement(Wy,{src:f.logo,size:30})))),h?xe.createElement(_a,{className:"widget-blockchains-section-only-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>i(m)},xe.createElement(Wy,{src:m.logo,size:30})):null,g?xe.createElement(_a,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(Rc,{variant:"body",size:"xsmall",color:"secondary500"},Jc._("More +{count}",{count:c.more.length}))):null)))}r(ep,"BlockchainsSection");import{useCallback as EA,useRef as bA,useState as tp}from"react";function op(){let t=S().blockchains(),e=bA(null),{customTokens:o}=S(),[n,i]=tp(!1),[a,s]=tp([]),[c,l]=tp(null),p=r(async(m,h)=>{l(null),i(!0),s([]);try{let g=await dt().searchCustomTokens({query:m,blockchain:h},{signal:e.current?.signal}),f=new Set(o().map(y=>Xt(y))),T=new Set(t.map(y=>y.name)),C=g.tokens.filter(y=>T.has(y.blockchain)&&!f.has(Xt(y)));s(C),i(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&i(!1)}},"fetch"),u=EA(si((m,h)=>{e.current?.signal.aborted||p(m,h)},600),[t.length]);return{fetch:(m,h)=>{e.current=new AbortController,s([]),i(!0),u(m,h)},cancel:r(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}r(op,"useSearchCustomTokens");function Py(t){return t.trim()?"search":"default "}r(Py,"getTokenSelectionMethod");function Ma(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}r(Ma,"shouldSearchForCustomTokens");function Ly(t,e,o,n,i){let a=[...t];return Ma(t,o,i)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}r(Ly,"prepareTokensList");function $a(t){let{type:e}=t,o=PA(),n=Ve(),{fromBlockchain:i,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=S(),{fetch:d,loading:m,tokens:h,cancel:g}=op(),[f,T]=WA(""),C=e==="source"?i:a,y=C?.name??"",k=S().blockchains({type:e}),w=S().tokens({type:e,blockchain:y,searchFor:f,getBalanceFor:u}),v=Ly(w,h,f,m,C?.name),N=r(A=>{e==="source"?l(A):p(A)},"updateBlockchain"),I=r(A=>{e==="source"?s({token:A,meta:{blockchains:k}}):c({token:A,meta:{blockchains:k}})},"updateToken"),b=e==="source"?"from":"to",x=r(A=>{oe({type:"chainFilterApplied",payload:{side:b,chain:A.name,filterSource:"featured"}})},"emitChainFilterApplied"),E=r(A=>{oe({type:"tokenSelected",payload:{side:b,tokenName:A.name,tokenSymbol:A.symbol,tokenAddress:A.address,chain:A.blockchain,selectionMethod:Py(f),activeChainFilter:y||"all"}})},"emitTokenSelected"),L={source:Da.t("Source"),destination:Da.t("Destination")};return NA(()=>(Ma(w,f,C?.name)&&d(f,C?.name??void 0),()=>{g()}),[w.length,f,C?.name]),xo.createElement(se,{header:{title:Da.t("Swap {type}",{type:L[e]})}},xo.createElement(ce,null,xo.createElement(ep,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?i:a,onMoreClick:()=>o($.blockchains),onChange:A=>{x(A),N(A)}}),xo.createElement(By,{size:24}),xo.createElement(Pt,{value:f,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:Da.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>T(""),onChange:A=>T(A.target.value),suffix:Ma(w,f,C?.name)&&m?xo.createElement(AA,{size:12,color:"secondary"}):void 0}),xo.createElement(By,{size:16}),xo.createElement(Wr,{list:v,selectedBlockchain:y,searchedFor:f,type:e,onChange:A=>{E(A),I(A);let O=k.find(q=>A.blockchain===q.name);O&&N(O),n()}})))}r($a,"SelectSwapItemsPage");import{i18n as ap}from"@lingui/core";import{Alert as rN,Button as iN,styled as aN}from"@rango-dev/ui";import tn from"react";import{useInRouterContext as sN,useSearchParams as lN}from"react-router-dom";import{i18n as Oy}from"@lingui/core";import{Alert as MA,Divider as rp,InfoIcon as DA,SlippageIcon as $A,TextField as FA,Tooltip as OA,Typography as Uy}from"@rango-dev/ui";import ze from"react";import{Chip as LA,styled as Qr,TextField as BA}from"@rango-dev/ui";var _y=Qr("div",{paddingTop:"$5",padding:"$10 $5"}),My=Qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${BA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Dy=Qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Fa=Qr("div",{maxWidth:"280px",padding:"$10"}),$y=Qr(LA,{width:"61px",flexShrink:0});import{i18n as np}from"@lingui/core";import{Typography as _A}from"@rango-dev/ui";import Hr from"react";function Fy(){return Hr.createElement(Fa,null,Hr.createElement(_A,{variant:"label",size:"medium",color:"neutral700"},np.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Hr.createElement("br",null),Hr.createElement("br",null),Hr.createElement("b",null,np.t("Warning")),":\xA0",np.t("This setting is applied to each step (e.g. 1Inch, Thorchain, etc.), meaning only that specific step will be reverted, not the entire route.")))}r(Fy,"SlippageTooltipContent");function ip(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),i=o!==null?fn(o):null,a=o??t,s=r((u,d)=>{u!==d&&oe({type:"settingsChanged",payload:{setting:"slippage",previousValue:u,newValue:d}})},"emitSlippageChanged"),c=r(u=>{let d=u.target.value,m=parseFloat(d);if(isNaN(m))return n(null);let h=m;m>er&&(h=er),s(a,h),n(h)},"onSlippageValueChange"),l=r(u=>{s(a,u),o!==null&&n(null),e(u)},"onClickSlippageChip"),p=r(u=>{let d=u.target,m=d.value;Su(m)||(d.value=m.slice(0,-1))},"onInput");return ze.createElement(_y,null,ze.createElement(Dy,null,ze.createElement($A,{size:16,color:"gray"}),ze.createElement(rp,{direction:"horizontal",size:4}),ze.createElement(Uy,{variant:"title",size:"xmedium"},Oy.t("Slippage tolerance per swap")),ze.createElement(rp,{direction:"horizontal",size:4}),ze.createElement(OA,{container:W(),side:"top",sideOffset:4,content:ze.createElement(Fy,null)},ze.createElement(DA,{color:"gray"}))),ze.createElement(My,null,hi.map((u,d)=>{let m=`slippage-${d}`;return ze.createElement($y,{id:`widget-slippage-chip-${u.toString()}%-btn`,key:m,onClick:()=>l(u),selected:o===null&&u===t,label:`${u.toString()}%`})}),ze.createElement(FA,{type:"number",min:"0.01",max:"30",step:"0.01",status:i?.type||(o?"success":"default"),id:"widget-slippage-chip-text-input",onInput:p,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:c,suffix:o&&ze.createElement(Uy,{variant:"body",size:"small"},"%"),placeholder:Oy.t("Custom")})),i&&ze.createElement(ze.Fragment,null,ze.createElement(rp,{size:10}),ze.createElement(MA,{id:"widget-slippage-alert",variant:"alarm",type:i.type,title:i.message})))}r(ip,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as zy,BridgesIcon as UA,ChevronRightIcon as Oa,DarkModeIcon as Qy,Divider as qr,ExchangeIcon as zA,InfinityIcon as QA,InfoIcon as HA,LanguageIcon as qA,LightModeIcon as Hy,List as GA,ListItem as VA,ListItemButton as KA,Skeleton as jA,styled as XA,Switch as YA,Tabs as ZA,TargetIcon as JA,Tooltip as RA,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as eN}from"react-router-dom";var tN=XA("div",{width:"202px",height:"$40"}),oN=[{id:"light",icon:D.createElement(Hy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:D.createElement(Qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:D.createElement(zy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Auto"))}],nN=r(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(zy,{...e});case"dark":return D.createElement(Qy,{...e});default:return D.createElement(Hy,{...e})}},"getThemeIcon");function qy(){let t=eN(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:i,languages:a}=bo(),s=a.find(P=>P.local===i)?.label,c=S().fetchStatus,l=S().swappers(),p=S().getDisabledLiquiditySources(),{config:{features:u}}=S(),d=S().customTokens(),m=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),f=nt("customTokens",u),T=S().infiniteApprove,C=S().toggleInfiniteApprove,y=Ti(l,p),k=y.filter(P=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(P.type)),w=k.length,v=k.filter(P=>P.selected).length,N=y.filter(P=>P.type==="DEX"),I=N.length,b=N.filter(P=>P.selected).length,x=r((P,Z)=>{switch(c){case"loading":return D.createElement(jA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(lt,{variant:"body",size:"medium",color:"$error500"},bt.t("Loading failed"));default:return D.createElement(lt,{variant:"body",size:"medium"},`${P} / ${Z}`)}},"handleSwapperEndItem"),E={id:"widget-setting-bridge-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Bridges")),end:D.createElement(D.Fragment,null,x(v,w),D.createElement(qr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(UA,{color:"gray",size:16})},L={id:"widget-setting-exchange-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Exchanges")),end:D.createElement(D.Fragment,null,x(b,I),D.createElement(qr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),start:D.createElement(zA,{color:"gray",size:16}),onClick:()=>t($.exchanges)},A={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},`${d.length}`),D.createElement(qr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),start:D.createElement(JA,{color:"gray",size:16}),onClick:()=>t($.customTokens)},O={id:"widget-setting-language-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Language")),start:D.createElement(qA,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},s),D.createElement(qr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),onClick:()=>t($.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Infinite approval")),D.createElement(qr,{direction:"horizontal",size:4}),D.createElement(RA,{side:"top",sideOffset:4,container:W(),content:D.createElement(Fa,null,D.createElement(lt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,bt.t("Warning")),":\xA0",bt.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},D.createElement(HA,{color:"gray"}))),start:D.createElement(QA,{color:"gray",size:16}),end:D.createElement(YA,{checked:T}),onClick:()=>{oe({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:T,newValue:!T}}),C()}},j={id:"widget-setting-theme-item-btn",type:D.createElement(VA,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Theme")),end:D.createElement(tN,null,D.createElement(ZA,{container:W(),items:oN,value:n,className:"widget-setting-theme-item-tabs-container",onChange:P=>o(P.id),type:"primary",borderRadius:"small"})),start:nN(n)},ee=h?[]:[E,L];return f||ee.push(A),g||ee.push(O),ee.push(q),!e?.singleTheme&&!m&&ee.push(j),D.createElement(GA,{type:D.createElement(KA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}r(qy,"SettingsLists");var cN=aN("div",{paddingLeft:"$8"});function Gy(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=lN(),i=sN(),a=r(()=>{i&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return tn.createElement(se,{header:{title:ap.t("Settings")}},tn.createElement(ce,null,o&&tn.createElement(rN,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:ap.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:tn.createElement(cN,null,tn.createElement(iN,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},ap.t("Reset")))}),tn.createElement(ip,null),tn.createElement(qy,null)))}r(Gy,"SettingsPage");import{i18n as T0}from"@lingui/core";import{cancelSwap as C0}from"@rango-dev/queue-manager-rango-preset";import{useManager as k0}from"@rango-dev/queue-manager-react";import{Alert as w0}from"@rango-dev/ui";import vp from"react";import{useParams as v0}from"react-router-dom";import{i18n as Ht}from"@lingui/core";import{getCurrentNamespaceOfOrNull as i0,getCurrentStep as a0,getRelatedWalletOrNull as s0}from"@rango-dev/queue-manager-rango-preset";import{Button as OS,Divider as l0,QuoteCost as c0,StepDetails as p0,Typography as yp}from"@rango-dev/ui";import{useWallets as u0}from"@rango-dev/wallets-react";import US from"bignumber.js";import{PendingSwapNetworkStatus as Qn}from"rango-types";import we,{useEffect as Sp,useRef as Tp,useState as ja}from"react";import{useNavigate as d0}from"react-router-dom";import{i18n as Io}from"@lingui/core";var pN=[Io.t("Sunday"),Io.t("Monday"),Io.t("Tuesday"),Io.t("Wednesday"),Io.t("Thursday"),Io.t("Friday"),Io.t("Saturday")];function Vy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),i=e.getFullYear();return`${e.getDay()===new Date().getDay()?Io.t("Today"):`${pN[e.getDay()]} ${o} ${n} ${i}`}, ${new Date(t).toLocaleTimeString()}`}r(Vy,"timeSince");function Ky(t){return t.finishTime?Vy(parseInt(t.finishTime)):Vy(parseInt(t.creationTime))}r(Ky,"getSwapDate");import Gr from"react";import{i18n as Ua}from"@lingui/core";import{Button as jy,Divider as sp,MessageBox as uN}from"@rango-dev/ui";import Ao from"react";var Xy=r(({onCancel:t,onClose:e})=>Ao.createElement(Ao.Fragment,null,Ao.createElement(sp,{size:20}),Ao.createElement(uN,{type:"error",title:Ua.t("Cancel Swap"),description:Ua.t("Are you sure you want to cancel this swap?")}),Ao.createElement(sp,{size:32}),Ao.createElement(jy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Ua.t("Yes, Cancel it")),Ao.createElement(sp,{size:12}),Ao.createElement(jy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Ua.t("No, Continue"))),"CancelContent");import{i18n as za}from"@lingui/core";import{Button as Yy,Divider as lp,MessageBox as dN,Typography as mN}from"@rango-dev/ui";import lo from"react";var Zy=r(({onDelete:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(lp,{size:20}),lo.createElement(dN,{type:"error",title:za.t("Delete Transaction"),description:za.t("Are you sure you want to delete this swap?")}),lo.createElement(lp,{size:32}),lo.createElement(Yy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},za.t("Yes, Delete it")),lo.createElement(lp,{size:12}),lo.createElement(Yy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},lo.createElement(mN,{variant:"title",size:"medium",color:"primary"},za.t("No, Cancel")))),"DeleteContent");import{i18n as fN}from"@lingui/core";import{Button as gN,Divider as hN,MessageBox as yN}from"@rango-dev/ui";import on from"react";var Jy=r(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return on.createElement(on.Fragment,null,on.createElement(yN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&on.createElement(on.Fragment,null,on.createElement(hN,{size:"30"}),on.createElement(gN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},fN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as MN,getCurrentStep as DN,getRelatedWalletOrNull as $N}from"@rango-dev/queue-manager-rango-preset";import{WalletState as FN}from"@rango-dev/ui";import{useWallets as ON}from"@rango-dev/wallets-react";import iS from"react";import{i18n as Un}from"@lingui/core";import{Alert as tS,Button as CN,Checkbox as kN,Divider as qa,Image as wN,MessageBox as vN,Spinner as EN,WarningIcon as bN}from"@rango-dev/ui";import{useWallets as xN}from"@rango-dev/wallets-react";import Te,{useState as IN}from"react";import{css as SN,darkTheme as TN,styled as cp}from"@rango-dev/ui";var Ry=SN({wordWrap:"break-word",display:"block"}),eS=cp("img",{width:"100%"}),Qa=cp("div",{position:"relative"}),Ha=cp("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${TN} &`]:{$$color:"$warning600"}});var oS=r(t=>{let{wallet:e,namespace:o,onClose:n}=t,[i,a]=IN(null),{list:s}=xt(),c=re.use.isActiveTab(),{state:l,connect:p}=xN(),u=s.find(v=>v.type===e.walletType),d=u?.needsNamespace?.data.find(v=>v.value===o?.namespace);if(!u)return null;let m=l(e.walletType),h=o?.namespace?m.namespaces?.get(o.namespace):null,g=m.connecting||h?.connecting,f=h?.connected,T=r(()=>f?Un.t("Done"):i?Un.t("Try again"):Un.t("Connect"),"getButtonTitle"),C=r(()=>g?Te.createElement(EN,{color:"info"}):i||f?null:Te.createElement(kN,{checked:!0,disabled:!0}),"getNamespaceSuffix"),y=r(async()=>{try{a(null),await p(u.type,o?.namespace?[{namespace:o?.namespace,network:void 0,derivationPath:e.derivationPath}]:void 0)}catch(v){a(Tt(v)??v)}},"handleConnect"),k=r(async()=>{if(f){n();return}y()},"handleClickButton"),w=r(()=>{if(!f)return null;let v=h?.accounts?.[0]?.split(":"),N=v?.[v?.length-1];return N?uo(N):null},"getAddress");return Te.createElement(Te.Fragment,null,Te.createElement(vN,{type:"warning",title:Un.t("Connect {wallet}",{wallet:u.title}),description:Un.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Te.createElement(Qa,null,Te.createElement(wN,{src:u.image,size:45}),Te.createElement(Ha,null,Te.createElement(bN,{color:"warning",size:10})))}),f&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:10}),Te.createElement(tS,{type:"success",variant:"alarm",title:Un.t("Wallet connected successfully.")})),i&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:10}),Te.createElement(tS,{type:"error",title:i?.message,variant:"alarm"})),d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:30}),Te.createElement(Oo,{namespace:d,suffix:C(),error:i?.message,connected:f,address:w()})),Te.createElement(qa,{size:"40"}),Te.createElement(CN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},T()))},"ConnectWalletContent");import{i18n as nS}from"@lingui/core";import{Button as AN,detectInstallLink as NN,Divider as WN,Image as PN,MessageBox as LN,WarningIcon as BN}from"@rango-dev/ui";import{useWallets as _N}from"@rango-dev/wallets-react";import co from"react";var rS=r(t=>{let{walletType:e}=t,{getWalletInfo:o}=_N(),n=e?o(e):null;if(!n)return null;let i=r(()=>window.open(NN(n.installLink),"_blank"),"handleButtonClick");return co.createElement(co.Fragment,null,co.createElement(LN,{type:"warning",title:nS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:co.createElement(Qa,null,co.createElement(PN,{src:n.img,size:45}),co.createElement(Ha,null,co.createElement(BN,{color:"warning",size:10})))}),co.createElement(WN,{size:"40"}),co.createElement(AN,{type:"primary",id:"widget-install-wallet-btn",onClick:i},nS.t("Install")))},"InstallWalletContent");var aS=r(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:i}=ON(),a=DN(e),s=a?$N(e,a):null,c=s?.walletType,l=c?Jn(i(c),n(c)):null,p=a?MN(e,a):null;return c?l===FN.NOT_INSTALLED?iS.createElement(rS,{walletType:c}):iS.createElement(oS,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function pp(t){let{isOpen:e,state:o,switchNetworkModalState:n,onClose:i,onDelete:a,onCancel:s,swap:c,message:l,handleSwitchNetwork:p}=t;return Gr.createElement(ie,{open:e,onClose:i,container:W()},o==="connectWallet"&&Gr.createElement(aS,{swap:c,message:l,onClose:i}),o==="switchNetwork"&&n&&Gr.createElement(Jy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Gr.createElement(Zy,{onClose:i,onDelete:()=>{i(),a()}}),o==="cancel"&&Gr.createElement(Xy,{onClose:i,onCancel:()=>{i(),s()}}))}r(pp,"SwapDetailsModal");import{i18n as Vr}from"@lingui/core";import{Button as up,Divider as Kr,MessageBox as cS,TokenAmount as UN,Typography as pS}from"@rango-dev/ui";import ke from"react";import{Link as zN,useNavigate as QN}from"react-router-dom";var sS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",lS="/profile";function dp(t){let{open:e,onClose:o,status:n,priceValue:i,usdValue:a,realUsdValue:s,realValue:c,token:l,chain:p,percentageChange:u,description:d,diagnosisUrl:m}=t,h=QN(),{showProfileBanner:g}=re();return ke.createElement(ie,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(wt.SWAP_BOX_ID)||document.body},n==="success"?ke.createElement(cS,{type:"success",title:Vr.t("Swap Successful")},ke.createElement(UN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:i,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),ke.createElement(Kr,{size:12}),ke.createElement(pS,{className:Ry(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ke.createElement(cS,{type:"error",title:Vr.t("Transaction Failed"),description:d}),ke.createElement(Kr,{size:30}),n==="success"&&ke.createElement(ke.Fragment,null,g&&ke.createElement(ke.Fragment,null,ke.createElement(zN,{to:lS},ke.createElement(eS,{src:sS,alt:"Profile Banner"})),ke.createElement(Kr,{size:30})),ke.createElement(up,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Vr.t("Done"))),ke.createElement(Kr,{size:12}),m&&ke.createElement(ke.Fragment,null,ke.createElement(up,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(m,"_blank")},Vr.t("Diagnosis")),ke.createElement(Kr,{size:12})),ke.createElement(up,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ke.createElement(pS,{variant:"title",size:"medium",color:"primary"},Vr.t("See Details"))))}r(dp,"SwapDetailsCompleteModal");import{i18n as Ka}from"@lingui/core";import{CopyIcon as e0,DoneIcon as t0,IconButton as o0,RangoExplorerIcon as n0,Tooltip as BS,Typography as _S,useCopyToClipboard as r0}from"@rango-dev/ui";import Bt from"react";import RN from"react";import{i18n as XN}from"@lingui/core";import{Alert as NS,IconButton as YN,LinkIcon as ZN}from"@rango-dev/ui";import No,{Fragment as JN}from"react";import{Alert as qN,ChevronDownIcon as GN,IconButton as VN}from"@rango-dev/ui";import zn,{useState as KN}from"react";import{css as jr,darkTheme as uS,styled as Qt,Typography as HN}from"@rango-dev/ui";var dS=Qt(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${uS} &`]:{color:"$secondary500"}}}}}),mS=Qt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),fS=Qt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),gS=Qt("div",{padding:"$0 $20 $20 $20"}),BY=Qt("div",{display:"flex",flexDirection:"column",gap:"$10"}),hS=Qt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),_Y=Qt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),nn=jr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${uS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),yS=jr({padding:"$5 0"}),Ga=jr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),SS=jr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),TS=jr({width:"100%",padding:"0 $20 $10"}),CS=Qt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),kS=Qt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Va=Qt(HN,{wordBreak:"break-word"});import{styled as mp}from"@rango-dev/ui";var wS=mp("div",{display:"flex",flexDirection:"column",gap:"$10"}),vS=mp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),ES=mp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function bS(t){let{message:e}=t,[o,n]=KN(!1);return zn.createElement(qN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&zn.createElement(VN,{id:"widget-swap-details-failed-btn",onClick:()=>n(i=>!i),variant:"ghost",size:"xsmall"},zn.createElement(vS,{rotated:o},zn.createElement(GN,{size:12,color:"gray"}))),footer:zn.createElement(ES,{open:o},zn.createElement(Va,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}r(bS,"FailedAlert");import{i18n as xS}from"@lingui/core";import{Alert as fp,Button as IS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as jN}from"rango-types";import Xr from"react";function AS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:i,showNetworkModal:a}=t;return e?Xr.createElement(fp,{type:"warning",id:"widget-swap-details-change-network-alert",title:i.shortMessage,action:Xr.createElement(IS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},xS.t("Change"))}):a===jN.WaitingForConnectingWallet?Xr.createElement(fp,{type:"warning",title:i.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Xr.createElement(IS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},xS.t("Connect"))}):Xr.createElement(fp,{id:"widget-swap-details-short-alert",type:"warning",title:i.shortMessage})}r(AS,"WarningAlert");function gp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:i,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=dr(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,d=u&&!c||p&&!s.explorerUrl?.length;return No.createElement(wS,null,s.explorerUrl?.map((m,h,g)=>{let f=h+m.url,T=h===g.length-1,C=(T&&u||p)&&!d,y=T&&s.status==="failed";return No.createElement(JN,{key:f},No.createElement(NS,{id:"widget-swap-details-tx-alert",type:T&&(C&&"loading"||y&&"error")||"success",title:m.description?`${m.description} Tx`:XN.t("View transaction"),action:m.url&&No.createElement(YN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},No.createElement(ZN,{size:12}))}))}),d&&No.createElement(NS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&No.createElement(AS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:i,message:a}),s.status==="failed"&&No.createElement(bS,{message:a}))}r(gp,"SwapDetailsAlerts");var WS=2e3;var PS=r(({swap:t,blockchains:e,swappers:o,...n})=>{let i=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let c=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:M(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:Ct(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:M(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Kn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:Ct(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:Ct(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:Kn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:RN.createElement(gp,{step:a,hasAlreadyProceededToSign:i,...n})}})},"getSteps");function LS(t){if(dr(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"}}r(LS,"getStepState");function MS(t){let{requestId:e}=t,[o,n]=r0(WS);return Bt.createElement(fS,{className:nn()},Bt.createElement(_S,{variant:"label",size:"large",color:"neutral700"},Ka.t("Request ID")),Bt.createElement("div",{className:Ga()},Bt.createElement(_S,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(BS,{container:W(),content:o?Ka.t("Copied To Clipboard"):Ka.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Bt.createElement(o0,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Bt.createElement(t0,{size:16,color:"secondary"}):Bt.createElement(e0,{size:16,color:"gray"}))),Bt.createElement(CS,{target:"_blank",href:`${Rp}/swap/${e}`},Bt.createElement(BS,{container:W(),content:Ka.t("View on Rango Explorer"),side:"bottom"},Bt.createElement(n0,{size:20})))))}r(MS,"RequestIdRow");import{i18n as DS}from"@lingui/core";import{Typography as $S}from"@rango-dev/ui";import hp from"react";function FS(t){let{date:e,isFinished:o}=t;return hp.createElement("div",{className:nn()},hp.createElement($S,{variant:"label",size:"large",color:"neutral700"},o?DS.t("Finished at"):DS.t("Created at")),hp.createElement($S,{variant:"label",size:"small",color:"neutral700"},e))}r(FS,"SwapDateRow");var m0=3e3;function Cp(t){let{swap:e,requestId:o,onDelete:n,onCancel:i}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=u0(),l=S().blockchains(),p=S().swappers(),{findToken:u}=S(),d=z().use.retry(),m=d0(),h=Tp(null),[g,f]=ja(!1),[T,C]=ja(null),[y,k]=ja(null),[w,v]=ja(null),N=Tp(T),I=Tp(y),b=Pe.use.getNotifications(),x=Pe.use.removeNotification(),E=b(),L=a0(e),A=L?.networkStatus,O=r(Ne=>{f(!0),C(Ne)},"handleChangeModalState"),q=r(()=>{f(!1)},"handleCloseModal"),j=r(()=>{k({type:"loading",title:Ht.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=r(()=>{k({type:"success",title:Ht.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),P=r(Ne=>{k({type:"error",title:Ht.t("Network Switch Failed"),description:Ne?.message||Q.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Yd(e),Y=L?i0(e,L):null,ue=L?s0(e,L):null,Ee=Ky(e),Vt=Zd(e),be=r(Ne=>!!c(Ne)?.mobileWallet,"checkIsMobileWallet"),He=!!A&&[Qn.WaitingForNetworkChange,Qn.NetworkChangeFailed].includes(A),Xe=!!ue?.walletType&&be(ue.walletType),St=!!ue&&!!Y&&a(ue.walletType,Y.network,Y),ct=!!Y&&He&&(Xe||St),B=r(()=>{ct&&(j(),s(ue.walletType,[{namespace:Y.namespace,network:Y.network}]).then(()=>{ee()}).catch(Ne=>{P(Tt(Ne)??Ne)}))},"handleSwitchNetwork"),V=r(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),Q=Xd(e,L,c),X=PS({swap:e,switchNetworkIsAvailable:ct,handleSwitchNetworkClick:V,showNetworkModal:A,setNetworkModal:O,message:Q,blockchains:l,swappers:p}),G=X.length,[J,U]=[e.steps[0],e.steps[G-1]],de=U?.outputAmount||U?.expectedOutputAmountHumanReadable,qe=e.steps.reduce((Ne,_t)=>Ne+parseFloat(_t.feeInUsd||""),0),ot=e.steps.find(Ne=>Ne.diagnosisUrl)?.diagnosisUrl,po=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),qn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),Wo=de?new US(de).multipliedBy(U.toUsdPrice||0).toString():"",ei=new US(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),an=Zt(qn,po),is=Q.detailedMessage.content||Q.shortMessage,CT=e.status==="success"?Ht.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:M(de,6,6),token:X[G-1]?.to.token.displayName,conciseAddress:uo(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):we.createElement(kS,null,we.createElement(yp,{variant:"body",size:"medium",color:"neutral700",align:"center"},is?"":Ht.t("Transaction was not sent."),Z?`${Ht.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Z.outputAmount,symbol:Z.symbol,blockchain:Z.blockchain}})}`:""),is&&we.createElement(Va,{align:"center",variant:"body",size:"medium",color:"neutral700"},we.createElement("b",null,"Reason:")," ",is));return Sp(()=>{E.find(_t=>_t.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),x(e.requestId),q()):w&&v(null))},[e.status,e.requestId]),Sp(()=>{if(ct){if(O("switchNetwork"),A===Qn.WaitingForNetworkChange){j();return}if(A===Qn.NetworkChangeFailed){P();return}return}if(A===Qn.WaitingForConnectingWallet){O("connectWallet");return}if(A===Qn.NetworkChanged){O("switchNetwork"),ee();return}T&&["connectWallet","switchNetwork"].includes(T)&&q()},[A]),Sp(()=>{if(N.current=T,I.current=y,T==="switchNetwork"&&y?.type==="success"){let Ne=setTimeout(()=>{N.current==="switchNetwork"&&I.current?.type==="success"&&q()},m0);return()=>clearTimeout(Ne)}},[T,y]),we.createElement(se,{header:{title:Ht.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&we.createElement(yo,null,we.createElement(OS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},we.createElement(yp,{size:"medium",variant:"label",color:"error"},Ht.t("Delete"))))},footer:Vt&&!w&&we.createElement(OS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{oe({type:"swapRetried",payload:{routeId:e.requestId}});let Ne=Pi(e,l,u);d(Ne),setTimeout(()=>{m("../../")},0)}},Ht.t("Try again"))},we.createElement(dS,{compact:!0,ref:h},we.createElement(MS,{requestId:o}),we.createElement(FS,{date:Ee,isFinished:!!e.finishTime}),we.createElement("div",{className:SS()},we.createElement(c0,{fee:M(String(qe),2,2),time:Yn(pi(e.steps)),steps:G}),we.createElement(Cr,{from:{price:{value:M(e.inputAmount,6,6),usdValue:qn,realUsdValue:ei,realValue:e.inputAmount},token:{displayName:X[0]?.from.token.displayName||"",image:X[0]?.from.token.image},chain:{image:X[0]?.from.chain.image,displayName:X[0]?.from.chain.displayName||""}},to:{price:{value:M(de,6,6),usdValue:po,realUsdValue:Wo,realValue:de||""},token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image,displayName:X[G-1]?.to.chain.displayName||""}},percentageChange:M(an,2,2),warningLevel:Jt(an??0)})),we.createElement("div",{className:TS()},we.createElement(yp,{variant:"title",size:"small"},Ht.t("Swaps steps"))),we.createElement(l0,{size:8}),we.createElement(gS,null,X.map((Ne,_t)=>{let Bp=_t,Gn=e.steps[_t]&&LS(e.steps[_t]),kT=Gn==="error"||Gn==="in-progress"||Gn==="warning"||Gn==="completed"&&_t===X.length-1;return we.createElement(p0,{className:"widget-swap-details-step-item-container",key:Bp,step:Ne,type:"swap-progress",ref:h,state:Gn,hasSeparator:_t!==0,tabIndex:Bp,isFocused:kT,tooltipContainer:W()})}))),we.createElement(pp,{isOpen:g,state:T,switchNetworkModalState:y,onClose:q,onCancel:i,onDelete:n,message:Q.detailedMessage.content,swap:e,handleSwitchNetwork:V}),we.createElement(dp,{open:!!w,diagnosisUrl:ot,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(de,6,6),usdValue:po,realUsdValue:Wo,realValue:de||"",percentageChange:M(an,2,2),token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image},description:CT}))}r(Cp,"SwapDetails");import{i18n as Ya}from"@lingui/core";import{Divider as HS,NotFound as S0,Skeleton as Zr,Typography as Za}from"@rango-dev/ui";import Ae from"react";import{i18n as f0}from"@lingui/core";import{Divider as g0,Skeleton as h0,Typography as y0}from"@rango-dev/ui";import Ie from"react";import{css as qt,styled as kp}from"@rango-dev/ui";var zS=kp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Yr=kp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Xa=kp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),p9=qt({display:"flex",justifyContent:"space-between",alignItems:"center"}),u9=qt({paddingTop:"$15",display:"flex"}),d9=qt({padding:"$15 $0"}),m9=qt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),f9=qt({paddingBottom:"$10"}),g9=qt({display:"flex",justifyContent:"start",alignItems:"center"}),h9=qt({paddingTop:"$5",display:"flex",alignItems:"center"}),y9=qt({display:"flex",alignItems:"center"}),S9=qt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),QS=qt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function wp(){return Ie.createElement(zS,null,Ie.createElement(vr,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(y0,{variant:"title",size:"small"},f0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Yr,null,Ie.createElement(Ut,{separator:!1}),Ie.createElement("div",{className:QS()},Ie.createElement(g0,{direction:"horizontal",size:20}),Ie.createElement(h0,{height:22,variant:"rectangular"}))),Ie.createElement(Xa,null),Ie.createElement(Yr,null,Ie.createElement(Ut,{separator:!1})),Ie.createElement(Xa,null),Ie.createElement(Yr,null,Ie.createElement(Ut,{separator:!1})),Ie.createElement(Xa,null),Ie.createElement(Yr,null,Ie.createElement(Ut,{separator:!1}))))}r(wp,"LoadingSwapDetails");function qS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:Ya.t("Swap Details"),suffix:Ae.createElement(yo,null)}},o&&Ae.createElement(mS,null,Ae.createElement("div",{className:nn()},Ae.createElement(Za,{variant:"label",size:"large",color:"neutral700"},`${Ya.t("Request ID")}`),Ae.createElement("div",{className:Ga()},Ae.createElement(Za,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"})),Ae.createElement(HS,{direction:"horizontal",size:4}),Ae.createElement(Zr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(HS,{direction:"horizontal",size:4}),Ae.createElement(Zr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:nn()},Ae.createElement(Za,{className:yS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"})),Ae.createElement(Za,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(wp,null)),!o&&Ae.createElement(hS,null,Ae.createElement(S0,{title:Ya.t("Not found"),description:Ya.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}r(qS,"SwapDetailsPlaceholder");function GS(){let{manager:t,state:e}=k0(),o=!e.loadedFromPersistor,n=Et(t),{requestId:i}=v0(),a=Ve(),{fetchStatus:s}=S();if(!i)return vp.createElement(w0,{containerStyles:{margin:"20px"},type:"error",title:T0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=i?n.find(({swap:m})=>m.requestId===i):void 0,p=r(()=>{if(l?.id){let m=t?.get(l.id);m&&(oe({type:"swapCancelled",payload:{routeId:i}}),C0(m))}},"onCancel"),u=r(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(m){console.log(m)}},"onDelete"),d=l?.swap;return!d||c?vp.createElement(qS,{requestId:i,showSkeleton:c}):vp.createElement(Cp,{swap:d,requestId:i,onCancel:p,onDelete:u})}r(GS,"SwapDetailsPage");import{i18n as VS}from"@lingui/core";import{Divider as E0,getCategoriesCount as b0,SelectableCategoryList as x0,styled as jS,Typography as I0,Wallet as A0}from"@rango-dev/ui";import Gt,{useState as KS}from"react";var N0=jS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),W0=jS(ce,{textAlign:"center"});function XS(){let{fetchStatus:t}=S(),[e,o]=KS("ALL"),n=S().blockchains(),{config:i}=S(),[a,s]=KS(),c=re.use.isActiveTab(),{list:l}=xt(),p=Nu(l,n),d=b0(p)!==1,m=Wu(l,e),h=r(g=>{lu(l,i.multiWallets)||s(g)},"handleWalletItemClick");return Gt.createElement(se,{header:{title:VS.t("Connect Wallets")}},Gt.createElement(W0,null,d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(x0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),Gt.createElement(E0,{size:24})),Gt.createElement(I0,{variant:"title",size:"xmedium",align:"center"},VS.t("Choose a wallet to connect.")),Gt.createElement(N0,null,m.map((g,f)=>{let T=`wallet-${f}-${g.type}`;return Gt.createElement(A0,{key:T,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),Gt.createElement(pr,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}r(XS,"WalletsPage");function YS(){return lm(),Xs(),P0([{path:$.home,element:Qe.createElement(uy,null)},{path:$.routes,element:Qe.createElement(hy,null)},{path:$.fromSwap,children:[{index:!0,element:Qe.createElement($a,{type:"source"})},{path:$.blockchains,element:Qe.createElement(Ba,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:Qe.createElement($a,{type:"destination"})},{path:$.blockchains,element:Qe.createElement(Ba,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:Qe.createElement(Gy,null)},{path:$.languages,element:Qe.createElement(my,null)},{path:$.exchanges,element:Qe.createElement(Kc,{sourceType:"Exchanges"})},{path:$.bridges,element:Qe.createElement(Kc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:Qe.createElement(mh,null)},{path:$.addCustomTokens,children:[{index:!0,element:Qe.createElement(af,null)},{path:$.blockchains,element:Qe.createElement(Ba,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:Qe.createElement(Bh,null)},{path:$.swapDetails,element:Qe.createElement(GS,null)}]},{path:$.wallets,element:Qe.createElement(XS,null)},{path:$.confirmSwap,element:Qe.createElement(Zg,null)}])}r(YS,"AppRoutes");import{useQueueManager as K0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as j0}from"rango-sdk";import{useContext as X0,useEffect as Ip,useState as sT}from"react";import{WalletTypes as Rr}from"@rango-dev/provider-all";import{Provider as M0}from"@rango-dev/wallets-react";import Ja,{createContext as D0,useEffect as eT,useMemo as $0,useRef as tT}from"react";import{useEffect as L0}from"react";function ZS(t){return t.map(e=>typeof e=="string"?e:e.id).join("-")}r(ZS,"hashProviders");function Ep(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:i}=S(),a=n();return L0(()=>{o(),i()},[ZS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}r(Ep,"useWalletProviders");import{Events as Jr}from"@rango-dev/wallets-react";import{isEvmBlockchain as B0}from"rango-sdk";function JS(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,blockchains:i}=S(),{onConnectWalletHandler:a,onDisconnectWalletHandler:s}=t,c=i().filter(B0).map(u=>u.name),l=r((u,d)=>{let[m,,h,g,f]=u,T={walletType:m,network:g.network??void 0,accounts:h};a.current?a.current(T):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let C=vu(m,h,c,d.supportedChainNames,f.isContractWallet);C.length&&e(C,f.namespace,g.derivationPath,{walletName:m})},"onAccountsEvent");return{handler:r((u,d,m,h,g)=>{if(d===Jr.ACCOUNTS){let f=mi(g.supportedBlockchains);m&&l([u,d,m,h,g],{supportedChainNames:f})}if(d===Jr.PROVIDER_DISCONNECTED&&(o(u),s.current?s.current(u):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),d===Jr.NAMESPACE_DISCONNECTED&&n(u,m),d===Jr.CONNECTED&&m){let f={walletType:u,network:h.network??void 0,accounts:h.accounts??void 0};a.current?a.current(f):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(d===Jr.NETWORK&&m){let f={walletType:u,network:m,accounts:h.accounts??void 0};a.current?a.current(f):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handler")}}r(JS,"useUpdates");import{Events as _0}from"@rango-dev/wallets-react";function RS(t,e){let[o,n,i,a,s]=e;n!==_0.PROVIDER_DISCONNECTED&&t(o,n,i,a,s)}r(RS,"propagateEvents");var Ra=D0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function F0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:i}=S(),a=S().blockchains(),s=S().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=Ep(s.wallets,c),p=tT(),u=tT(),{handler:d}=JS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});eT(()=>{n().catch(console.log)},[]),eT(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,i]);let m=re.use.isActiveTab(),h=$0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Ja.createElement(Ra.Provider,{value:h},Ja.createElement(M0,{allBlockChains:a,providers:l,onUpdateState:(g,f,T,C,y)=>{let k=[g,f,T,C,y];d(...k),t.onUpdateState&&RS(t.onUpdateState,k)},autoConnect:!!m,configs:{wallets:s.wallets,walletOptions:{[Rr.TON_CONNECT]:{provider:{manifestUrl:s.tonConnect?.manifestUrl}},[Rr.OKX]:{provider:{tonConnectManifestUrl:s.tonConnect?.manifestUrl}},[Rr.TREZOR]:{provider:{manifest:s.trezorManifest}},[Rr.WALLET_CONNECT_2]:{provider:{WC_PROJECT_ID:s.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:s.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink,meta:a}},[Rr.LEDGER_WALLET]:{provider:s.ledgerWallet}}}},t.children))}r(F0,"Main");function es(t){let{config:e,...o}=t;return Ja.createElement(ju,{config:e},Ja.createElement(F0,{...o,config:e}))}r(es,"WidgetWallets");import{globalCss as O0}from"@rango-dev/ui";var oT=r(()=>O0({"@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");import{useWallets as U0}from"@rango-dev/wallets-react";import{useEffect as z0,useRef as Q0}from"react";function nT(){let{connect:t,state:e}=U0(),o=Q0({}),{fetchStatus:n}=S(),i=new URLSearchParams(location.search).get("autoConnect")||"",a=e(i);z0(()=>{n==="success"&&i&&a.installed&&!a.connecting&&!a.connected&&!o.current[i]&&(o.current[i]=!0,t(i))},[a,n])}r(nT,"useForceAutoConnect");import{isApprovalTX as H0,RouteEventType as rT,StepEventType as iT,StepExecutionEventStatus as q0,WidgetEvents as ts}from"@rango-dev/queue-manager-rango-preset";import{useEffect as aT}from"react";function bp(){let t=Pe.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();aT(()=>{let i=r(a=>{let{event:s,step:c,route:l}=a;if(s.type===iT.TX_EXECUTION&&s.status===q0.TX_SENT&&!H0(c)||s.type===iT.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let m=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);m&&u.push(m)}if(c?.fromBlockchain!==c?.toBlockchain){let m=l.wallets[c?.toBlockchain];if(m){let h=e.find(g=>g.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&g.walletType===m.walletType&&g.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let m=n(),g=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(f=>m.some(T=>T.blockchain===f.blockchain&&T.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&T.symbol?.toLocaleLowerCase()===f.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return ge.on(ts.StepEvent,i),()=>ge.off(ts.StepEvent,i)},[ge,e]),aT(()=>{let i=r(a=>{let{event:s,route:c}=a;(s.type===rT.FAILED||s.type===rT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ge.on(ts.RouteEvent,i),()=>ge.off(ts.RouteEvent,i)},[ge])}r(bp,"useSubscribeToWidgetEvents");import{useManager as G0}from"@rango-dev/queue-manager-react";import{useEffect as V0}from"react";function xp(){let{isSynced:t,syncNotifications:e}=Pe(),{manager:o,state:n}=G0();V0(()=>{if(Pe.persist.hasHydrated()&&n.loadedFromPersistor&&!t){let a=Et(o);e(a),a.forEach(({swap:s})=>{if(!(s.status==="running"&&s.steps.length>1))return;let l=s.steps.findIndex(p=>p.status!=="success");l!==-1&&oe({type:"swapResumed",payload:{routeId:s.requestId,stepCount:s.steps.length,stepNumber:l+1}})})}},[Pe.persist.hasHydrated(),n.loadedFromPersistor,t])}r(xp,"useSyncNotifications");function Ap(){nT(),oT(),bp(),xp();let t=S().blockchains(),{canSwitchNetworkTo:e}=lT(),[o,n]=sT(null),[i,a]=sT(),s=X0(Ra),c=t.filter(j0);Ip(()=>()=>am(),[]),Ip(()=>()=>sm(),[]),K0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:i,evmChains:c,canSwitchNetworkTo:e}),Ip(()=>(Fo.init(),Pe.persist.hasHydrated()||Pe.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),Fo.destroy),[])}r(Ap,"useBootstrap");import{styled as Y0}from"@rango-dev/ui";var cT=Y0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left",height:"100%","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function rn(){Ap();let{config:t}=S(),{activeTheme:e}=ho(t?.theme||{}),{activeLanguage:o}=bo();return Np.createElement(Z0,{language:o},Np.createElement(cT,{id:"swap-container",className:e()},Np.createElement(YS,null)))}r(rn,"Main");import{setSolanaSignerConfig as SW}from"@rango-dev/signer-solana";import Pp,{useEffect as Lp,useMemo as TW}from"react";function pT(){let{setWatermark:t,setShowProfileBanner:e}=re();return{fetchApiConfig:r(async()=>{let n=await fetch(`${jt("BASE_URL")}/meta/dapp/config?apiKey=${jt("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let i=await n.json();t(i.config.watermark),e(i.config.banners.profile)},"fetchApiConfig")}}r(pT,"useFetchApiConfig");import{useState as J0}from"react";var R0=r(()=>{let[t,e]=J0(null),o=r(a=>{let s=document.createElement("link");return s.href=a,s.rel="stylesheet",document.head.appendChild(s),s},"loadFont"),n=r(()=>{t&&(document.head.removeChild(t),e(null))},"unloadFont");return{handleLoadCustomFont:r(a=>{n();let s=su(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),uT=R0;import{convertEvmBlockchainMetaToEvmChainInfo as eW}from"@rango-dev/internal-blockchains";import{checkWaitingForNetworkChange as tW,makeQueueDefinition as oW}from"@rango-dev/queue-manager-rango-preset";import{Provider as nW}from"@rango-dev/queue-manager-react";import{useWallets as rW}from"@rango-dev/wallets-react";import{isEvmBlockchain as iW}from"rango-types";import aW,{useMemo as sW}from"react";function lW(t){let{getSigners:e,state:o,connect:n,canSwitchNetworkTo:i,getWalletInfo:a,hubProvider:s}=rW(),c=sW(()=>oW({API_KEY:t.apiKey||jt("API_KEY"),BASE_URL:jt("BASE_URL"),emitter:{emit:ge.emit}}),[t.apiKey]),{blockchains:l,connectedWallets:p}=S(),u=l(),d={blockchains:p.map(k=>({accounts:[k],name:k.chain}))},m=r(async(k,w)=>i(k,w.network,w)?await n(k,[w]):void 0,"switchNetwork"),h=r(k=>!!a(k).mobileWallet,"isMobileWallet"),g=u.filter(k=>k.enabled).reduce((k,w)=>(k[w.name]=w,k),{}),f=u.filter(iW),T=r(k=>{let{supportedChains:w}=a(k);return mi(w)},"getSupportedChainNames"),C={meta:{blockchains:g,evmBasedChains:f,evmNetworkChainInfo:eW(f),getSupportedChainNames:T},getSigners:async k=>{try{return await e(k)}catch(w){throw Tt(w)??w}},wallets:d,switchNetwork:m,canSwitchNetworkTo:i,state:o,isMobileWallet:h,hubProvider:s},y=re.use.isActiveTab();return aW.createElement(nW,{queuesDefs:[c],context:C,onPersistedDataLoaded:k=>{tW(k)},isPaused:!y},t.children)}r(lW,"QueueManager");var dT=lW;import{useManager as mW}from"@rango-dev/queue-manager-react";import fW,{createContext as gW,useContext as hW}from"react";function mT(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:i,setToBlockchain:a,setToToken:s,setInputAmount:c}=z()();return r(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:m,toToken:h,requestAmount:g}=p,f={blockchains:e,tokens:o};if(u!==void 0){let T=e.find(C=>C.name===u)??null;n(T)}if(d!==void 0){let T=d?t(d)??null:null;i({meta:f,token:T})}if(m!==void 0){let T=e.find(C=>C.name===m)??null;a(T)}if(h!==void 0){let T=h?t(h)??null:null;s({meta:f,token:T})}g!==void 0&&c(g)},"updateQuoteInputs")}r(mT,"useUpdateQuoteInputs");import{cancelSwap as cW,getCurrentNamespaceOfOrNull as pW,getCurrentStep as uW,getRelatedWalletOrNull as dW}from"@rango-dev/queue-manager-rango-preset";var os=class{static{r(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return Et(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=Pi(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&cW(o)}getCurrentStepInfo(e){let o=uW(e);return{step:o,wallet:o?dW(e,o):null,network:o?pW(e,o)?.network:null}}};var fT=gW(void 0);function Wp(t){let{manager:e}=mW(),o=re.use.isActiveTab(),n=z().use.retry(),{findToken:i,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=S(),l=new os(e,{retrySwap:n,findToken:i}),{fetchingWallets:p}=S(),u=Eu(a()),d=S().blockchains(),m=S().tokens(),h=S().swappers(),g=S().fetchStatus,f=bo().resetLanguage,T=Pe().getNotifications(),C=Pe().clearNotifications,y=mT(),{fromBlockchain:k,toBlockchain:w,fromToken:v,toToken:N,inputAmount:I}=z()(),b={isActiveTab:o,setCurrentTabAsActive:Fo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async x=>c(x)},meta:{blockchains:d,tokens:m,swappers:h,loadingStatus:g,findToken:i},resetLanguage:f,notifications:{list:T,clearAll:C},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:w?.name??null,toToken:N?{symbol:N.symbol,blockchain:N.blockchain,address:N.address}:null,requestAmount:I},updateQuoteInputs:y}};return fW.createElement(fT.Provider,{value:b},t.children)}r(Wp,"WidgetInfo");function gT(){let t=hW(fT);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}r(gT,"useWidget");import{Provider as yW}from"@hub3js/core";function hT(t){return typeof t=="string"||t instanceof yW}r(hT,"isHubWallet");function Hn(t){let{onUpdateState:e,config:o}=t,n=o?.wallets;if(n&&!n.every(hT))throw new Error("Legacy providers aren't supported anymore. Expected a provider with version '1.0.0'.");let i=t.config?.theme?.fontFamily,{fetchApiConfig:a}=pT(),{handleLoadCustomFont:s}=uT();return Lp(()=>{a().catch(console.log)},[]),Lp(()=>{i&&s(i)},[i]),TW(()=>{Pu({API_KEY:o?.apiKey||Xp(),BASE_URL:o?.apiUrl||Jp})},[o.apiKey,o.apiUrl]),Lp(()=>{t.config?.signers?.customSolanaRPC&&SW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Pp.createElement(es,{config:{...o,wallets:n},onUpdateState:e},Pp.createElement(dT,{apiKey:o.apiKey},Pp.createElement(Wp,null,t.children)))}r(Hn,"WidgetProvider");function yT(t){let e=t.config?.externalWallets;return ns.createElement(Ni,null,e?ns.createElement(rn,null):ns.createElement(Hn,{config:t.config??Xn},ns.createElement(rn,null)))}r(yT,"Refuel");import rs from"react";function ST(t){let e=t.config?.externalWallets;return rs.createElement(Ni,null,e?rs.createElement(rn,null):rs.createElement(Hn,{config:t.config??Xn},rs.createElement(rn,null)))}r(ST,"Widget");function TT(){let{on:t,off:e}=ge;return{on:t,off:e}}r(TT,"useWidgetEvents");var Tte={DerivationPath:sr,Namespaces:rr,Detached:ar,isOnDerivationPath:cr,isOnNamespace:lr,isOnDetached:Po};export{jee as EventSeverity,sn as MainEvents,Gee as Networks,ote as PendingSwapNetworkStatus,Vn as QuoteEventTypes,yT as Refuel,Xee as RouteEventType,ls as SUPPORTED_FONTS,Tte as StatefulConnect,Yee as StepEventType,Zee as StepExecutionBlockedEventStatus,Jee as StepExecutionEventStatus,Ed as SwapModeContext,wt as UI_ID,Ze as UiEventTypes,ti as WalletEventTypes,ete as WalletEvents,ST as Widget,sn as WidgetEvents,Hn as WidgetProvider,es as WidgetWallets,cl as customizedThemeTokens,Vee as readAccountAddress,ln as useStatefulConnect,xt as useWalletList,lT as useWallets,gT as useWidget,TT as useWidgetEvents,LC as widgetEventEmitter};
|
|
4
4
|
//# sourceMappingURL=index.js.map
|