@rango-dev/widget-embedded 0.0.0-experimental-bd29bb27-20261013 → 0.0.0-experimental-b508b277-20261016

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 CHANGED
@@ -1,4 +1,4 @@
1
- var TT=Object.defineProperty;var r=(t,e)=>TT(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 iT,Events as Jee,WalletEventTypes as Ree}from"@rango-dev/wallets-react";import{PendingSwapNetworkStatus as tte}from"rango-types";import{Divider as Vk}from"@rango-dev/ui";import mo,{useEffect as Kk,useRef as jk,useState as Td}from"react";import{WalletState as ET}from"@rango-dev/ui";import{useWallets as bT}from"@rango-dev/wallets-react";import{useReducer as xT}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||{});import{WidgetEvents as Lp}from"@rango-dev/queue-manager-rango-preset";import{WalletEventChannel as CT}from"@rango-dev/wallets-react";var qn=(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))(qn||{}),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||{}),Gn=(a=>(a[a.RouteEvent=Lp.RouteEvent]="RouteEvent",a[a.StepEvent=Lp.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent=`${CT}`,a.UiEvent="uiEvent",a))(Gn||{});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 Bp(t){return t.type===0?t.diagnosisMessage??te().noResultError.title:t.type===1?t.diagnosisMessage??te().genericServerError:""}r(Bp,"getQuoteErrorMessage");var kT=["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 wT(t){return typeof t=="string"?t:t instanceof Error?`${t.name} ${t.message}`:""}r(wT,"toMessage");function vT(t){let e=wT(t).toLowerCase();return!!e&&kT.some(o=>e.includes(o))}r(vT,"isModuleLoadError");function Tt(t){return vT(t)?new Error(te().moduleLoadError,{cause:t}):null}r(Tt,"tryRefineError");function _p(t,e){return Tt(t)?.message??e}r(_p,"tryRefineErrorMessage");function Mp(t){return!!t.derivationPath}r(Mp,"isStateOnDerivationPathStep");function Dp(t){return!!t.namespace}r(Dp,"isStateOnNamespace");var ti={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function $p(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 ti;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:ti;default:throw new Error("Action hasn't been defined.")}}r($p,"reducer");function an(){let{state:t,disconnect:e,connect:o}=bT(),[n,i]=xT($p,ti),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=_p(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===ET.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(!Dp(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(!Mp(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),Wo(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(an,"useStatefulConnect");import{WalletTypes as tr}from"@rango-dev/provider-all";import{WalletState as vs}from"@rango-dev/ui";import{useWallets as OC}from"@rango-dev/wallets-react";import{useCallback as UC,useEffect as zC}from"react";import _C,{createContext as MC,useContext as DC,useEffect as $C,useRef as FC}from"react";import{create as LC}from"zustand";import{persist as BC}from"zustand/middleware";import{allProviders as AT,WalletTypes as ri}from"@rango-dev/provider-all";var rs=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()}},sn=new rs;import{Provider as IT}from"@hub3js/core";function Op({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 IT)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(Op,"matchAndGenerateProviders");function Up(t){return t.map(e=>e.id)}r(Up,"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 Vn(t,e){return e.find(o=>o.id===t)?.title}r(Vn,"getSwapperDisplayName");function Po(t,e){return e.find(o=>o.name===t)??null}r(Po,"findBlockchain");function is(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(is,"isTokenNative");function kt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}r(kt,"createTokenHash");function Lo(t,e){return t.addressPatterns.filter(i=>new RegExp(i).test(e)).length>0}r(Lo,"isValidTokenAddress");function oi(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}r(oi,"createTokenExplorerUrl");function Kn(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(Kn,"matchTokensFromConfigWithMeta");function ni(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(ni,"getSupportedBlockchainsFromConfig");function NT(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}r(NT,"makeProvidersOptionsFromConfig");var jn={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default"},WT={clientUrl:void 0},PT={liquiditySources:void 0};function Hp(t){return AT().map(n=>n()).filter(n=>BT(n.id,t))}r(Hp,"generateProviders");var LT={[ri.LEDGER_WALLET]:"ledgerWallet",[ri.TREZOR]:"trezorManifest",[ri.TON_CONNECT]:"tonConnect",[ri.WALLET_CONNECT_2]:"walletConnectProjectId"};function BT(t,e){let o=LT[t];return!o||e[o]?!0:(console.warn(`${t} is listed in config wallets but ${o} config is not provided!`),!1)}r(BT,"hasRequiredConfig");var qp=r((t,e,o)=>{let n={...jn,...t},i=Hp(n);return{config:n,iframe:WT,campaignMode:PT,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=Kn({type:"source",config:{blockchains:a.from?.blockchains,tokens:a.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}}),u=Kn({type:"destination",config:{blockchains:a.to?.blockchains,tokens:a.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}});sn.set("supportedSourceTokens",p),sn.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=NT(s);return Op({allProviders:a,configWallets:s.wallets,options:c})}}},"createConfigSlice");import{TransactionType as Gp}from"rango-types";var Vp=[Gp.EVM,Gp.SOLANA],ii="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 us,readAccountAddress as QT}from"@rango-dev/internal-blockchains";import{BlockchainCategories as HT,detectInstallLink as qT,WalletState as ut}from"@rango-dev/ui";import cn from"bignumber.js";import{isAddress as GT}from"ethers";import _T from"bignumber.js";var pe=new _T(0);var Bo="~",Yp=[];import{BlockchainCategories as ss,WalletState as OT}from"@rango-dev/ui";import{TransactionType as ls}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",as=[{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 ln(t){return Array.from(new Set(t))}r(ln,"removeDuplicateFrom");function ai(t,e){let o;return n;function n(...i){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...i)},e)}}r(ai,"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"),_o=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 cs(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(cs,"compareContainsText");function ps(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(ps,"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=ps(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=cs(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=ps(o,t.name,e.name);if(i)return i}if(o.length>=3){let i=cs(o,t.name,e.name);if(i!==0)return i}if(o.length>=4){let i=ps(o,t.address,e.address);if(i)return i}if(o.length>=4){let i=cs(o,t.address,e.address);if(i!==0)return i}return 0}r(iu,"compareWithSearchFor");var si=r((t,e)=>{switch(e){case ss.ALL:return!0;case ss.UTXO:return t===ls.TRANSFER;case ss.OTHER:return t!==ls.TRANSFER&&t!==ls.EVM;default:return t===e}},"isBlockchainTypeInCategory"),au=r(t=>as.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 li(t){return/^0+(?:\.0+)?$/.test(t)}r(li,"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 Xn=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 ci=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"),Yn=r(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Cu(t){return li(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 Zn(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(Zn,"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=ln(u.map(T=>T.type)),f=Zn(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 di(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}r(di,"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===us.Unknown;if(d&&!m&&!h)return;let f=u===us.Unknown&&GT(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(us.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}r(wu,"prepareAccountsForWalletStore");function Mo(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(Mo,"getQuoteChains");function Jn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}r(Jn,"isAccountAndWalletMatched");var vu=r(t=>{let e=Object.values(t).reduce((o,n)=>{let i=n.usdValue?ds(n.usdValue,n.decimals):pe.toFixed();return o.plus(i)},new cn(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 ds(t,e){return new cn(t).shiftedBy(-e).toFixed()}r(ds,"representAmountInNumber");function mi(t){if(!t)return null;let e=ds(t.amount,t.decimals),o=t.usdValue?ds(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(mi,"formatBalance");function Eu(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new cn(t.usdValue).shiftedBy(-t.decimals):pe,n=e&&e.usdValue?new cn(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 cn(t.amount).shiftedBy(-t.decimals):pe,n=e&&e.amount?new cn(e.amount).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}r(Eu,"compareTokenBalance");function Vt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}r(Vt,"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 po(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(po,"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 Au(t){return t.map(e=>e.state).join("-")}r(Au,"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===HT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(si(n,e))return!0;return!1})}r(Wu,"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 ms={API_KEY:Xp()};function Kt(t){return ms[t]||""}r(Kt,"getConfig");function Pu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ms=e,ms}r(Pu,"initConfig");var Lu=20,Bu=25,fs="theme-widget",gs=r((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Vt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Vt(a,t));let i=n.isExcluded;return!i&&!o||i&&o}}}return o},"isTokenExcludedInConfig"),hs=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 fi,dt=r(()=>fi||(fi=new XT(Kt("API_KEY"),Kt("BASE_URL")),fi),"httpService");import{i18n as Mu}from"@lingui/core";var gi=[.5,1,3],hi=1,pn=5,Rn=30,yi=0;function Si(t,e){let o=t.map(a=>a.swapperGroup),n=[];return ln(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(Si,"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 un(t,e){return e?.[t]==="enabled"}r(un,"isRoutingEnabled");var $u=r((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function dn(t){return t==yi?{type:"error",message:Mu.t("Slippage must be greater than or equal to 0.01")}:t>pn&&t<=Rn?{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(dn,"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=ni({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=sn.get(u);d?.length||(d=Kn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:i}}),sn.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=Eu(N,I);if(b!==0)return b}let y=l.get(g.blockchain),k=l.get(f.blockchain),w=is(g,y),v=is(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=>Vt(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=un("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 Ou,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 Uu=[{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:Ou},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Ou},{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}],mn="en";var zu=r((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:hi,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=ln(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||mn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||mn}})},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=ni({config:o});return i.length?n.filter(a=>i.includes(a.blockchain)):n}}),"createSettingsSlice");import ws from"bignumber.js";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 jt(t){return`${t.blockchain}${Bo}${t.address}${Bo}${t.symbol}`}r(jt,"createAssetKey");function qu(t,e){return`${jt(e)}${Bo}${t}`}r(qu,"createBalanceKey");function er(t){let[e,o,n]=t.split(Bo);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}r(er,"extractAssetFromBalanceKey");function Ss(t,e,o){return e.balances?.forEach(n=>{let i=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[jt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:i?new Hu(i??pe).multipliedBy(o[s].amount).toString():""})})}),o}r(Ss,"computeNextBalancesWithNewPrices");function Ts(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(Ts,"createBalanceStateForNewAccount");function Cs(t,e){for(let o in e){let n=er(o);if(n){let i=jt(n);t[i]||(t[i]=[]),t[i].includes(o)||(t[i]=[...t[i],o])}}return t}r(Cs,"updateAggregatedBalanceStateForNewAccount");function NC(t,e){let o=er(e);if(!o)return t;let n=jt(o);return t[n]&&(t[n]=t[n].filter(i=>i!==e)),t}r(NC,"removeBalanceFromAggregatedBalance");function ks(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=er(l);if(!p)return;!!n.find(d=>qu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=NC(a,l):s[l]&&(i[l]=s[l])}),{_balances:i,_aggregatedBalances:a}}r(ks,"computeNextStateAfterWalletBalanceRemoval");function WC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}r(WC,"matchWalletDetailsWithConnectedWallet");var PC=lu(),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=>Jn(a,i))?{...i,loading:!0,error:!1}:i)}))},setConnectedWalletRetrievedData:(o,n)=>{t(i=>({fetchingWallets:!1,connectedWallets:i.connectedWallets.map(a=>o.find(s=>Jn(s,a))?{...a,loading:!1,error:!1,explorerUrl:WC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(i=>o.find(a=>Jn(a,i))?{...i,loading:!1,error:!0}:i)}))},addConnectedWallet:(o,n,i)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Jn(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};Ss(f,g,d);let T=Ts(g,e);m=Cs(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)=>{o[0]&&(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}=ks(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=>{if(e().connectedWallets.find(i=>i.walletType===o)){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};Ss(m,d,l);let{_balances:h,_aggregatedBalances:g}=ks(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=Ts(d,e);p=Cs(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=jt(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 ws(u.amount),m=new ws(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(Bo);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>PC(()=>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=er(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new ws(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 LC()(BC((...e)=>({...Gu(...e),...Fu(...e),...zu(...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(Vu,"createAppStore");var Ku=MC(null);function S(){let t=DC(Ku);if($C(()=>{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=FC();return e.current||(e.current=Vu(t.config)),_C.createElement(Ku.Provider,{value:e.current},t.children)}r(ju,"AppStoreProvider");var QC=new Set([tr.DEFAULT,tr.WALLET_CONNECT_2,tr.LEDGER]);function xt(t){let{chain:e}=t||{},{getAvailableProviders:o}=S(),{state:n,getWalletInfo:i}=OC(),{handleDisconnect:a}=an(),s=Up(o()),c=ku(n,i,s,e);c=pu()?c.filter(m=>m.showOnMobile!==!1&&n(m.type).installed):c;let l=bu(c),p=UC(()=>{let m=c?.filter(h=>h.state===vs.CONNECTING)||[];for(let h of m)a(h)},[Au(c)]);zC(()=>()=>{p()},[]);let u=r(m=>{let h=m.find(f=>f.type===tr.DEFAULT);return!h||h.state===vs.NOT_INSTALLED?!1:m.filter(f=>f.state!=vs.NOT_INSTALLED&&!QC.has(f.type)&&i(f.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=r(m=>m==tr.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(m=>!d(m.type)),terminateConnectingWallets:p}}r(xt,"useWalletList");import{Modal as VC}from"@rango-dev/ui";import KC from"react";import{create as GC}from"zustand";var Xu="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(Xu),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 qC=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"),uo=qC;var re=uo(GC()((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})}}))),$o=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 KC.createElement(VC,{hasWatermark:e==="FULL",...t},t.children)}r(ie,"WatermarkedModal");import{i18n as hn}from"@lingui/core";import{getSupportedChainsFromNamespace as lk}from"@rango-dev/internal-blockchains";import{Alert as ck,Button as pk,Divider as yn,Image as uk,MessageBox as dk,RadioRoot as mk,WalletImageContainer as fk}from"@rango-dev/ui";import le,{useEffect as gk,useMemo as hk,useState as yk}from"react";import{i18n as ZC}from"@lingui/core";import{Typography as nd}from"@rango-dev/ui";import fn from"react";function Ti(t,e){return t.find(o=>o.name===e)?.logo}r(Ti,"getBlockchainLogo");import{darkTheme as jC,Image as XC,styled as Xt,Typography as YC}from"@rango-dev/ui";var Ci=Xt("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"}}}}),ki=Xt("div",{display:"flex",gap:"$8",alignItems:"center"}),Zu=Xt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),Ju=Xt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Ru=Xt("div",{display:"flex",gap:"$6",alignItems:"center"}),ed=Xt("div",{paddingLeft:"48px"}),td=Xt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),od=Xt(YC,{maxWidth:"100px",whiteSpace:"nowrap"}),wi=Xt(XC,{variants:{disabled:{true:{opacity:"0.5"}}}});function vi(t){let{namespace:e}=t,o=S().blockchains();return fn.createElement(Ci,{unsupported:!0},fn.createElement(ki,null,fn.createElement(wi,{src:Ti(o,e.id),size:40,disabled:!0}),fn.createElement(Ju,null,fn.createElement(nd,{variant:"label",size:"large"},e.label),fn.createElement(nd,{variant:"body",size:"xsmall"},ZC.t("(Currently not supported)")))))}r(vi,"NamespaceUnsupportedItem");import{Checkbox as ik,Radio as ak}from"@rango-dev/ui";import Is from"react";import{i18n as xs}from"@lingui/core";import{getSupportedChainsFromNamespace as RC}from"@rango-dev/internal-blockchains";import{ChevronDownIcon as ek,ChevronUpIcon as tk,Divider as ok,Typography as nr}from"@rango-dev/ui";import We,{useEffect as nk,useState as rk}from"react";import{Image as id,Tooltip as ad,Typography as JC}from"@rango-dev/ui";import Dt from"react";import{styled as rd}from"@rango-dev/ui";var Es=rd("div",{display:"flex",alignItems:"center",padding:0,margin:0}),Ei=rd("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 bs=3;function sd(t){let{chains:e}=t;return Dt.createElement(Es,{id:"widget-supported-chains-container"},e.slice(0,bs).map((o,n)=>Dt.createElement(ad,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},Dt.createElement(Ei,{firstItem:n===0},Dt.createElement(id,{src:o.logo,size:15})))),e.length>bs&&Dt.createElement(ad,{container:W(),side:"bottom",align:"start",sideOffset:4,content:Dt.createElement(Es,null,e.map((o,n)=>Dt.createElement(Ei,{key:o.name,firstItem:n===0},Dt.createElement(id,{src:o.logo,size:15}))))},Dt.createElement(Ei,null,Dt.createElement(JC,{variant:"body",size:"xsmall"},"+",e.length-bs))))}r(sd,"SupportedChainsList");function Fo(t){let{namespace:e,error:o,suffix:n,connected:i,address:a,onClick:s}=t,[c,l]=rk(!1),p=S().blockchains();nk(()=>l(!1),[o]);let u=RC(e,p),d=!o&&!i&&u.length>1;return We.createElement(Ci,{hasError:!!o,clickable:!!s,onClick:s},We.createElement(ki,null,We.createElement(wi,{src:Ti(p,e.id),size:40}),We.createElement(Zu,{showSupportedChains:d||i||!!o},We.createElement(Ru,null,We.createElement(nr,{variant:"label",size:"large"},e.label),i&&We.createElement(nr,{variant:"body",size:"small",color:"success500"},xs.t("Connected")),!!o&&We.createElement(nr,{variant:"body",size:"small",color:"error500"},xs.t("Connection failed"))),d&&We.createElement(sd,{chains:u}),i&&We.createElement(od,{variant:"body",size:"small",color:"neutral700"},a),o&&We.createElement(td,{onClick:()=>l(m=>!m)},We.createElement(nr,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},xs.t("See why")),c?We.createElement(tk,{size:12,color:"gray"}):We.createElement(ek,{size:12,color:"gray"}))),n),!!o&&c&&We.createElement(We.Fragment,null,We.createElement(ok,{size:4}),We.createElement(ed,null,We.createElement(nr,{variant:"body",size:"small",color:"neutral700"},o))))}r(Fo,"NamespaceItem");function ld(t){let{onClick:e,type:o,namespace:n}=t;return Is.createElement(Fo,{namespace:n,onClick:e,suffix:o==="radio"?Is.createElement(ak,{value:n.value}):Is.createElement(ik,{checked:t.value})})}r(ld,"NamespaceListItem");import{Button as sk,styled as cd}from"@rango-dev/ui";var bi=cd("ul",{padding:0,paddingBottom:"$20",margin:0}),gn=cd(sk,{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]=yk([]),p=hk(()=>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(mk,{value:c?.[0]},g):le.createElement(le.Fragment,null,g),"wrapRadioRoot");return gk(()=>{if(!n&&p)if(t.value.defaultSelectedChains?.length){let g=p.filter(f=>lk(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(dk,{type:"info",title:hn.t("Connect {wallet}",{wallet:e.title}),description:hn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(fk,null,le.createElement(uk,{src:a,size:45}))}),n?le.createElement(le.Fragment,null,le.createElement(yn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(ck,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:hn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(yn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(yn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(pk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:m},d?hn.t("Deselect all"):hn.t("Select all")),le.createElement(yn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(bi,null,h(le.createElement(le.Fragment,null,i?.data.map((g,f,T)=>le.createElement(le.Fragment,{key:g.id},g.unsupported?le.createElement(vi,{namespace:g}):le.createElement(ld,{value:c.includes(g.value),namespace:g,type:n?"radio":"checkbox",onClick:()=>u(g.value)}),f!==T.length-1&&le.createElement(yn,{size:10})))))),le.createElement(yn,{size:20}),le.createElement(gn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!c.length,onClick:()=>t.onConfirm(c)},hn.t("Connect")))}r(rr,"Namespaces");import{i18n as ir}from"@lingui/core";import{Alert as Ek,Button as bk,Divider as Sn,Image as xk,MessageBox as Ik,WalletImageContainer as Ak}from"@rango-dev/ui";import{useWallets as Nk}from"@rango-dev/wallets-react";import me from"react";import{styled as Sk}from"@rango-dev/ui";var pd=Sk("div",{display:"flex",justifyContent:"end"});import{i18n as As}from"@lingui/core";import{Button as Tk,Spinner as Ck}from"@rango-dev/ui";import Ns,{useLayoutEffect as kk,useRef as wk,useState as vk}from"react";function ud(t){let{namespace:e,initialConnect:o,disabled:n,state:i,handleConnect:a,handleDisconnect:s}=t,[c,l]=vk(null),p=wk(!1);kk(()=>{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:po(f)},"getConnectedAddress"),h=r(()=>i.connected?As.t("Disconnect"):c?As.t("Try again"):As.t("Connect"),"getButtonText");return Ns.createElement(Fo,{namespace:e,connected:i.connected,error:c?.message,address:m(),suffix:i.connecting?Ns.createElement(Ck,{color:"info"}):Ns.createElement(Tk,{id:"widget-name-space-connect-btn",variant:"ghost",type:i.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}r(ud,"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}=Nk(),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(Sn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(Ek,{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(Sn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(Sn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(pd,null,me.createElement(bk,{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(Sn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),k=r(w=>{if(w.unsupported)return me.createElement(vi,{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(ud,{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(Ik,{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(Ak,null,me.createElement(xk,{src:c.image,size:45}))}),y(),me.createElement(bi,{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(Sn,{size:10})))),me.createElement(Sn,{size:20}),me.createElement(gn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},i))}r(ar,"Detached");import{i18n as Tn}from"@lingui/core";import{Divider as Lk,Image as Bk,MessageBox as _k,Select as Mk,TextField as Dk}from"@rango-dev/ui";import{useWallets as $k}from"@rango-dev/wallets-react";import It,{useEffect as Fk,useMemo as Ok,useState as fd}from"react";var xi={id:"custom",label:"Custom",generateDerivationPath:t=>t};function dd(t,e){let o=t.filter(n=>n.namespace===e);return o.length?[...o,xi]:[]}r(dd,"getDerivationPaths");import{Button as Wk,styled as Ws,Typography as Pk}from"@rango-dev/ui";var md=Ws("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Ps=Ws(Pk,{paddingLeft:"$10"}),Ls={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},cM=Ws(Wk,{minHeight:"$40"});var gd="0";function sr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:i}=t.value,{getWalletInfo:a}=$k(),[s,c]=fd(null),[l,p]=fd(gd),u=s===xi.id,d=Ok(()=>dd(a(i).needsDerivationPath?.data??[],o),[i,o]),m=r(({value:g})=>{let f=d?.find(T=>T.id===g);f&&(s===xi.id&&Number.isNaN(Number(l))&&p(gd),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 Fk(()=>{c(d[0]?.id||null)},[d]),It.createElement(It.Fragment,null,It.createElement(_k,{type:"info",title:Tn.t("Select Derivation Path"),description:Tn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:i}}),icon:It.createElement(Bk,{src:n,size:45})}),It.createElement(md,{className:"_derivation_path_inputs_container"},It.createElement(Ps,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},Tn.t("Choose Derivation Path Template")),It.createElement(Mk,{id:"widget-derivation-path-template-select",value:s||"",options:d.map(g=>({value:g.id,label:g.label})),variant:"filled",handleItemClick:m,styles:{trigger:Ls}}),It.createElement(Lk,{size:20}),It.createElement(Ps,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},u?Tn.t("Enter Path"):Tn.t("Enter Index")),It.createElement(Dk,{id:"widget-derivation-path-template-input",type:u?"text":"number",variant:"contained",value:l,onChange:g=>p(g.target.value),style:Ls})),It.createElement(gn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!d||!s||!l},Tn.t("Confirm")))}r(sr,"DerivationPath");import{i18n as Cn}from"@lingui/core";import{Image as Qk,MessageBox as _s,WalletImageContainer as Hk,WalletState as qk}from"@rango-dev/ui";import{useWallets as Gk}from"@rango-dev/wallets-react";import Oo from"react";import{keyframes as Uk,styled as Bs}from"@rango-dev/ui";var kM=Bs("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),hd=Bs("div",{position:"relative"}),zk=Uk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),yd=Bs("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${zk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function Ms(t){let{wallet:e,error:o}=t,{type:n,image:i}=e,{state:a,getWalletInfo:s}=Gk();return Zn(s(n),a(n))===qk.CONNECTED?Oo.createElement(_s,{type:"success",title:Cn.t("Wallet Connected"),description:Cn.t("Your wallet is connected, you can use it to swap.")}):o?Oo.createElement(_s,{type:"error",title:Cn.t("Failed to Connect"),description:o||Cn.t("Your wallet is not connected. Please try again.")}):Oo.createElement(_s,{type:"loading",title:Cn.t("Connecting to your wallet"),description:Cn.t("Click connect in your wallet popup."),icon:Oo.createElement(hd,null,Oo.createElement(Hk,null,Oo.createElement(Qk,{src:i,size:45})),Oo.createElement(yd,null))})}r(Ms,"ConnectStatus");function Sd(t,e){return t().status==="init"&&!!e}r(Sd,"isOnStatus");function lr(t){return t().status==="namespace"}r(lr,"isOnNamespace");function cr(t){return t().status==="derivationPath"}r(cr,"isOnDerivationPath");function Wo(t){return t().status==="detached"}r(Wo,"isOnDetached");var Xk=3e3,Yk=300;function pr(t){let e=jk(),[o,n]=Td(!1),[i,a]=Td(),s=r(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=xt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:m,handleDisconnect:h}=an(),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,Xk))):b&&C()},"afterConnected"),w=r(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return Kk(()=>{if(t.wallet){y();let v=!1,N=!0;r(()=>{setTimeout(()=>{N=!1,v||n(!0)},Yk)},"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]),mo.createElement(ie,{id:t.id,open:o,onClose:C,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},Sd(d,t.wallet)&&mo.createElement(mo.Fragment,null,mo.createElement(Ms,{wallet:{type:t.wallet.type,image:t.wallet.image},error:i}),mo.createElement(Vk,{direction:"vertical",size:32})),lr(d)&&mo.createElement(rr,{onConfirm:g,value:d().namespace}),cr(d)&&mo.createElement(sr,{onConfirm:T,value:d().derivationPath}),Wo(d)&&mo.createElement(ar,{onConfirm:f,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}r(pr,"StatefulConnectModal");import ts from"react";import Zk,{Fragment as Jk}from"react";import{MemoryRouter as Rk,useInRouterContext as ew}from"react-router";function Ii({children:t}){let o=ew()?Jk:Rk;return Zk.createElement(o,null,t)}r(Ii,"AppRouter");import{I18nManager as X0}from"@rango-dev/ui";import Ip 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 wn,useRef as _i}from"react";import at from"bignumber.js";import{create as Yd}from"zustand";import{subscribeWithSelector as Zd}from"zustand/middleware";import{createContext as tw,useContext as ow}from"react";var Cd=tw({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=ow(Cd);return{swapMode:t,isMultiMode:e}}r(rt,"useSwapMode");import nw from"mitt";var we=nw(),rw={on:we.on,off:we.off};import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as sw,RouteEventType as WD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as ur}from"rango-types";import{i18n as Ai}from"@lingui/core";var Uo=r(()=>({connectWallet:Ai.t("Connect Wallet"),swap:Ai.t("Swap"),swapAnyway:Ai.t("Swap anyway"),ethWarning:Ai.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Ds(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(Ds,"getFeeLabel");var $s=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],kd=100,wd=30,vd=15,Ed=60;var bd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],xd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as aw}from"@rango-dev/queue-manager-rango-preset";import hD from"bignumber.js";function Ad(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(Ad,"getRequiredBalanceOfWallet");function Zt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}r(Zt,"getPriceImpactLevel");function Ni(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=Po(a?a.toBlockchain:n.fromBlockchain,e),l=Po(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(Ni,"createRetryQuote");function kn(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:i}=t,a=zo(o),s=it(o);if(o&&a&&s){let p=Yt(a.toString(),s.toString());if(!!p&&Bd(a,p)){let d=Pi(o?.swaps,n),m=Zt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:m}}}if(e&&Dd(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Yt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=Li(o.swaps),l=i>pn;if(Md(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(kn,"generateQuoteWarnings");function Nd(t){return![4].includes(t.type)}r(Nd,"isQuoteWarningConfirmationRequired");function Yt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Fs(t.toString(),e.toString());return n&&n<0?n:null}r(Yt,"getPriceImpact");var Wd=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"),Wi=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"),Pd=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"),Ld=r(t=>{let e=r((o,n)=>{let i=$s.indexOf(o.value),a=$s.indexOf(n.value);return i!==-1&&a!==-1?i-a:i!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Bd(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return bd.some(({threshold:n,minInput:i})=>o<=n&&t.gte(new Ge(i)))}r(Bd,"hasHighValueLoss");function $d(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($d,"hasLimitError");function Fd(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(Fd,"getLimitErrorMessage");function Od(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:i,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:Uo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!i||i==="0"?{title:Uo().swap,action:"confirm-swap",disabled:!0}:s?{title:Uo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:Uo().ethWarning,action:"confirm-warning",disabled:!1}:{title:Uo().swap,action:"confirm-swap",disabled:!1}:{title:Uo().connectWallet,action:"connect-wallet",disabled:!1}}r(Od,"getSwapButtonState");function Os(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(pe))&&e&&e!=="0"&&n!==0)}r(Os,"canComputePriceImpact");function Us(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(Us,"getUsdFeeOfStep");function Pi(t,e){return t.reduce((o,n)=>o.plus(Us(n,e)),pe)}r(Pi,"getTotalFeeInUsd");function zs(t){let e=pe,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}r(zs,"getUsdFee");function Qs(t){return t.reduce((e,o)=>e.plus(zs(o)),pe)}r(Qs,"getTotalFeesInUsd");function Ud(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(Ud,"getFeesGroup");function zd(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(zd,"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 Li(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(Li,"getMinRequiredSlippage");function Md(t,e){return e?parseFloat(t)>=parseFloat(e):!0}r(Md,"hasProperSlippage");function Qd(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(Qd,"createQuoteRequestBody");function Hd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}r(Hd,"getWalletsForNewSwap");function zo(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}r(zo,"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 Fs(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(kd).toNumber()}r(Fs,"getPercentageChange");function Dd(t,e){let o=zo(t),n=it(t),i=it(e);if(!o||!n||!i)return!1;let a=Fs(n.toString(),i.toString());return xd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}r(Dd,"isOutputAmountChangedExcessively");function qd(t,e,o){let n=t.validationStatus,i=Mo({filter:"required",quote:t});return e.sort((s,c)=>i.indexOf(s.chain)-i.indexOf(c.chain)).flatMap(s=>Ad(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(qd,"generateBalanceWarnings");function dr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==ur.NetworkChanged}r(dr,"isNetworkStatusInWarningState");function Gd(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(Gd,"getSwapMessages");function Vd(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(Vd,"getLastConvertedTokenInFailedSwap");function Kd(t){return t.status==="failed"}r(Kd,"shouldRetrySwap");function jd(t,e,o,n,i,a){if(!n||t)return!0;let s=Mo({filter:"all",quote:n}),c=Mo({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?Lo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}r(jd,"isConfirmSwapDisabled");function Xd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}r(Xd,"isTokensIdentical");var Bi=r((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),Jd=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 Yn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=zo(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:Bi(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);li(e)||(o=uu(o),o=du(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new at(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Bi(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:Bi(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?Bi(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"),Rd=Yd()(Zd(Jd)),em=Yd()(Zd(Jd)),lw=uo(Rd),cw=uo(em);function z(){let{swapMode:t}=rt();return uo(t==="refuel"?em:Rd)}r(z,"useQuoteStore");var tm=r((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&we.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&we.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})},"subscribeCallback"),om=lw.subscribe(tm),nm=cw.subscribe(tm);function rm(){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=_i(void 0),N=_i(void 0),I=_i(void 0),b=_i(void 0);wn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),wn(()=>{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]),wn(()=>{gs(s,C)&&a({token:null}),hs(l,y)&&n(null)},[C,y]),wn(()=>{gs(c,k)&&a({token:null}),hs(p,w)&&o(null)},[k,w]),wn(()=>{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]),wn(()=>{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(rm,"useSyncStoresWithConfig");import{useEffect as Gs,useRef as pw}from"react";import{useInRouterContext as uw,useLocation as dw,useSearchParams as mw}from"react-router-dom";function Hs(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}r(Hs,"convertTokenSearchParamToAsset");function qs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}r(qs,"tokenToSearchParam");function Ks(){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");Gs(()=>{let{autoConnect:I,clientUrl:b,extraQueryParams:x,blockchain:E}=v();f&&h==="success"&&N({fromBlockchain:n?.name,fromToken:qs(a),toBlockchain:i?.name,toToken:qs(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]),Gs(()=>{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&&Hs(I.fromToken,b),E=x?w(x):void 0,L=g.find(q=>q.name===I.toBlockchain),A=I.toToken&&L&&Hs(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]),Gs(()=>{let{clientUrl:I,liquiditySources:b}=v();T("clientUrl",I||void 0),C("liquiditySources",b?.split(",")??void 0)},[])}r(Ks,"useSyncUrlAndStore");import{i18n as bn}from"@lingui/core";import{Alert as _v,Button as Mv,darkTheme as Dv,Divider as vl,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 cm,Image as gw,Typography as pm}from"@rango-dev/ui";import At from"react";import{darkTheme as im,styled as js}from"@rango-dev/ui";var am=js("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${im} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${im} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),sm=js("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),lm=js("div",{display:"flex"});function Xs(t){let{onClick:e,value:o,title:n,hasLogo:i,placeholder:a,disabled:s}=t;return At.createElement(sm,null,At.createElement(pm,{size:"large",variant:"label"},n),At.createElement(cm,{size:10}),At.createElement(am,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},At.createElement(lm,null,i&&At.createElement(At.Fragment,null,At.createElement(gw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),At.createElement(cm,{size:4,direction:"horizontal"})),At.createElement(pm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),At.createElement(fw,{size:12,color:"black"})))}r(Xs,"BlockchainSelectorButton");import{i18n as Rs}from"@lingui/core";import{Button as vw,Divider as gm,MessageBox as Ew}from"@rango-dev/ui";import fo,{useEffect as hm,useState as el}from"react";import{i18n as Mi}from"@lingui/core";import{Divider as Qo,ExternalLinkIcon as Sw,Image as Tw,InfoIcon as Cw,Tooltip as kw,Typography as fr}from"@rango-dev/ui";import fe from"react";var um="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as hw,darkTheme as vn,styled as mr,Typography as yw}from"@rango-dev/ui";var Ys=mr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${vn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${vn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${vn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${vn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),dm=mr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${vn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${vn} &`]:{color:"$colors$neutral900"}}}),Zs=mr(hw,{minHeight:"$40"}),mm=mr(yw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),fm=mr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var ww=9;function Js(t){let{open:e,onClose:o,token:n,onExit:i,onSubmitClick:a,blockchain:s}=t,c=n.address?oi({contractAddress:n.address,blockchainMeta:s}):void 0,l=r(()=>window.open(um,"_blank"),"onClickLearnMore");return fe.createElement(ie,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:i,container:W()},fe.createElement(dm,null,fe.createElement(Tw,{src:n.image===""?ii:n.image,size:45,type:"circular"}),fe.createElement(Qo,{size:4}),fe.createElement(fm,null,fe.createElement(mm,{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(Qo,{size:4}),fe.createElement(fr,{variant:"body",size:"medium"},c?fe.createElement(Ys,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(Sw,{size:12,color:"gray"})):fe.createElement(Ys,null,n.address)),fe.createElement(Qo,{size:4}),n.coinSource&&fe.createElement(fr,{className:"_coin-source",variant:"body",size:"xsmall"},Mi.t("via")," ",fe.createElement(fr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Qo,{size:"32"}),fe.createElement(fr,{size:"medium",variant:"body",className:"_custom-token-description"},Mi.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(Qo,{size:40}),fe.createElement(Qo,{size:10}),fe.createElement(Zs,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Mi.t("Import Anyway")),fe.createElement(Qo,{size:10}),fe.createElement(Zs,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},Mi.t("Learn More")))}r(Js,"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]=el(!1),[h,g]=el(!1),[f,T]=el(!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 hm(()=>{n&&m(!0)},[n]),hm(()=>{o&&e&&g(!0)},[o,e]),fo.createElement(fo.Fragment,null,fo.createElement(ie,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},fo.createElement(Ew,{title:n?.title??"",type:"error",description:n?.message||Rs.t("Failed Network, Please retry.")},fo.createElement(gm,{size:40}),fo.createElement(gm,{size:10}),fo.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"?Rs.t("Retry"):Rs.t("Add another custom token")))),o&&e&&fo.createElement(Js,{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 Ym,Header as Wv}from"@rango-dev/ui";import Le,{useEffect as Gi,useLayoutEffect as Pv,useRef as Zm,useState as Jm}from"react";import{useRef as bw}from"react";function Di(){return window.self!==window.top}r(Di,"isAppLoadedIntoIframe");function tl(){let t=bw(null),{iframe:e}=S(),o=Di()&&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(tl,"useIframe");import{useNavigate as xw}from"react-router-dom";function Ve(){let t=xw();return()=>t(-1)}r(Ve,"useNavigateBack");import{createTheme as ll,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 al from"react";var $i=16,Fi=255,ym=.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 ol(t){let e=Math.min(Math.max(Math.round(t),0),Fi);return Aw(e.toString($i),2)}r(ol,"intToHex");function Nw(t){return`#${ol(t.red)}${ol(t.green)}${ol(t.blue)}`}r(Nw,"rgbToHex");function Ww(t){let e=parseInt(t.slice(1,3),$i),o=parseInt(t.slice(3,5),$i),n=parseInt(t.slice(5,7),$i);return{red:e,green:o,blue:n}}r(Ww,"hexToRGB");function Pw(t,e){let o=1-ym*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}r(Pw,"generateShade");function Lw(t,e){let o=ym*e;return{red:t.red+(Fi-t.red)*o,green:t.green+(Fi-t.green)*o,blue:t.blue+(Fi-t.blue)*o}}r(Lw,"generateTint");function Bw(t){return Sm(t,Pw)}r(Bw,"calculateShades");function _w(t){return Sm(t,Lw)}r(_w,"calculateTints");function Sm(t,e){let o=Ww(t),n=[];for(let i=1;i<9;i++)n.push(Nw(e(o,i)));return n}r(Sm,"calculateColors");function nl(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(nl,"createTintsAndShades");function rl(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,nl(l,i,s))}}return{...n,...e}}r(rl,"expandToGenerateThemeColors");var Tm=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=Tm(o%52)+e;return Tm(o%52)+e},"toAlphabeticName"),Dw=r((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),il=r(t=>Mw(Dw(5381,JSON.stringify(t))>>>0),"toHash");function sl(t){let e=$w.colors,o={...e,...Fw},n,i;if(t?.light){let s={colors:rl(e,t.light)};n={id:`${fs}-light-${il(s)}`,tokens:s}}if(t?.dark){let s={colors:rl(o,t.dark,{reverseNeutralRange:!0})};i={id:`${fs}-dark-${il(s)}`,tokens:s}}return{light:n,dark:i}}r(sl,"customizedThemeTokens");function Cm(t,e){if(t.length<=1)return t.map(({element:n,key:i})=>al.cloneElement(n,{key:i}));let o=[];return t.forEach((n,i)=>{let{element:a,key:s}=n;if(o.push(al.cloneElement(a,{key:s})),i<t.length-1){let c=`divider-${i}`;o.push(al.cloneElement(e,{key:c}))}}),o}r(Cm,"joinList");function km(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}r(km,"doesWindowPreferDarkColorScheme");function go(t){let{colors:e,fontFamily:o=Rp,borderRadius:n=Lu,secondaryBorderRadius:i=Bu}=t,[a,s]=Qw(km()?"dark":"light"),{theme:c}=S(),{dark:l,light:p}=sl(e),u=ll({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=ll(p.id,p.tokens);d.push(g.className)}if(l){let g=ll(l.id,l.tokens);m.push(g.className)}return zw(()=>{let g=r(f=>{f.matches?s("dark"):s("light")},"switchThemeListener");return km()&&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(go,"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 wm}from"@lingui/core";import{Alert as Hw,Button as qw}from"@rango-dev/ui";import vm from"react";function cl(t){return vm.createElement(Hw,{action:vm.createElement(qw,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},wm.t("Activate this tab")),type:"warning",variant:"alarm",title:wm.t("Another tab is open and handles transactions.")})}r(cl,"ActivateTabAlert");import{i18n as pl}from"@lingui/core";import{Button as Gw,Divider as Vw,MessageBox as Kw}from"@rango-dev/ui";import Oi from"react";function ul(t){let{open:e,onClose:o,onConfirm:n}=t;return Oi.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},Oi.createElement(Kw,{title:pl.t("Activate current tab"),type:"warning",description:pl.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.")},Oi.createElement(Vw,{size:20}),Oi.createElement(Gw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},pl.t("Confirm"))))}r(ul,"ActivateTabModal");import{ChevronLeftIcon as Yw}from"@rango-dev/ui";import Pm from"react";import{css as jw,darkTheme as Em,IconButton as Xw,styled as Ho}from"@rango-dev/ui";var $t=Ho(Xw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Em} &`]:{backgroundColor:"$neutral"}}}),bm=Ho("div",{position:"absolute",background:"$secondary500",[`.${Em} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),ho=Ho("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),xm=Ho("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"}}}}),Im=Ho("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Am=Ho("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Nm=jw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),Wm=Ho("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function dl(t){return Pm.createElement($t,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Pm.createElement(Yw,{color:"black",size:16}))}r(dl,"BackButton");import{i18n as Zw}from"@lingui/core";import{Button as Jw,Typography as Rw}from"@rango-dev/ui";import ml from"react";function fl(t){return ml.createElement(ho,null,ml.createElement(Jw,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},ml.createElement(Rw,{variant:"label",size:"medium",color:"error500"},Zw.t("Cancel"))))}r(fl,"CancelButton");import{i18n as ev}from"@lingui/core";import{Image as tv,Tooltip as ov,WalletIcon as nv,WalletState as Lm}from"@rango-dev/ui";import qo from"react";function gl(t){let{list:e}=xt(),o=e.filter(i=>i.state===Lm.CONNECTED||i.state===Lm.PARTIALLY_CONNECTED),n=o.length?qo.createElement("div",{className:Nm()},o.map(i=>qo.createElement(Wm,{key:i.title},qo.createElement(tv,{src:i.image,size:14})))):ev.t("Connect Wallet");return qo.createElement(ov,{container:t.container,side:"bottom",content:n},qo.createElement($t,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&qo.createElement(bm,null),qo.createElement(nv,{size:18,color:"black"})))}r(gl,"WalletButton");import{i18n as zi}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=uo(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 hl(){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(hl,"NotificationContent");import{useManager as pv}from"@rango-dev/queue-manager-react";import{InProgressIcon as uv}from"@rango-dev/ui";import Bm from"react";var dv=r(()=>{let{manager:t}=pv();return Et(t).map(({swap:o})=>o).find(o=>o.status==="running")?Bm.createElement(Am,{id:"widget-header-history-badge-container"},Bm.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 Mm from"react";function Dm(){let{getNotifications:t}=Pe(),e=t(),o=e.length,n=!!e.find(i=>i.event.messageSeverity===mv.WARNING);return o?Mm.createElement(xm,{isSever:n},Mm.createElement(fv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}r(Dm,"NotificationsBadge");import{RefreshProgressButton as gv}from"@rango-dev/ui";import yl,{useEffect as hv,useState as $m}from"react";var yv=1e3,Fm=60,Sv=100;function Ui({onClick:t}){let[e,o]=$m(0),[n,i]=$m(!1),a=r(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");hv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Fm&&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 yl.createElement($t,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},yl.createElement(Im,{onTransitionEnd:()=>i(!1),isRefetched:n},yl.createElement(gv,{size:22,color:t?"black":"gray",progress:e/Fm*Sv})))}r(Ui,"RefreshButton");function Go(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:zi.t("Refresh")},_e.createElement(Ui,{onClick:e})),!c&&_e.createElement(Cv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(hl,null)},_e.createElement("div",null,_e.createElement(Qi,{container:W(),side:"top",content:zi.t("Notifications")},_e.createElement($t,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(Tv,{size:18,color:"black"}),_e.createElement(Dm,null))))),!i.includes("settings")&&_e.createElement(Qi,{container:W(),side:"top",content:zi.t("Settings")},_e.createElement($t,{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:zi.t("History")},_e.createElement($t,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(wv,{size:18,color:"black"}),_e.createElement(_m,null))))}r(Go,"HeaderButtons");import{i18n as Sl}from"@lingui/core";import{Divider as Um,MessageBox as bv,RefreshIcon as xv}from"@rango-dev/ui";import En from"react";import{Button as vv,styled as Ev}from"@rango-dev/ui";var Om=Ev(vv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Tl(t){let{open:e,onClose:o}=t;return En.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},En.createElement(bv,{title:Sl.t("Something went wrong"),type:"error",description:Sl.t("Something went wrong. Please refresh the app.")},En.createElement(Um,{size:30}),En.createElement(Om,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},En.createElement(xv,{size:20,color:"primary"}),En.createElement(Um,{size:4,direction:"horizontal"}),Sl.t("Refresh"))))}r(Tl,"RefreshModal");var zm="700px",Qm="425px",Hm="550px",qm="640px",Gm="800px";function Cl(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(Cl,"onScrollContentAttachStatusToContainer");import{css as Iv,styled as Hi}from"@rango-dev/ui";var qi=Iv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Vm=Hi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:zm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Qm,[`@media screen and (min-height: ${Gm})`]:{minHeight:Hm}}},showBanner:{true:{overflow:"visible"}}}}),Km=Hi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),jm=Hi("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"}}}),Xm=Hi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=tl(),{children:n,header:i,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=S(),[u,d]=Jm(!1),{config:{features:m,theme:h}}=S(),{watermark:g}=re(),f=g==="FULL",{activeTheme:T}=go(h||{}),[C,y]=Jm(!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($o.forceClaim,O),"onActivateTab"),j=r(()=>{i.onWallet?.()},"onConnectWallet"),ee=typeof i.hasBackButton>"u"||i.hasBackButton,P=Zm(null),Z=Zm(null);return Gi(()=>{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]),Gi(()=>(Di()&&Z.current&&e(Z.current),()=>{o()}),[]),Gi(()=>(P.current?.addEventListener("scroll",Cl),()=>{P.current?.removeEventListener("scroll",Cl)}),[]),Gi(()=>{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(qm))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Le.createElement(Vm,{height:s,id:wt.SWAP_BOX_ID,className:`${T()} ${qi()}`,ref:Z,showBanner:C},Le.createElement(Wv,{prefix:ee?Le.createElement(dl,{onClick:()=>{E(),i.onBack?.()}}):null,title:i.title,suffix:Le.createElement(Le.Fragment,null,i.suffix,i.onWallet&&!k&&Le.createElement(gl,{container:W(),onClick:j,isConnected:!!l?.length}),i.onCancel&&Le.createElement(fl,{onClick:i.onCancel}))}),Le.createElement(Km,{ref:P},n),Le.createElement(ul,{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(cl,{onActivateTab:q}),Le.createElement(Ym,{size:10})),a),Le.createElement(Ym,{size:12}),Le.createElement("div",{className:`footer__logo ${f?"logo__show":"logo__hidden"}`},Le.createElement(Nv,null))),C&&Le.createElement(Xm,null,p?.swapBoxBanner?.element),Le.createElement(Tl,{open:u,onClose:()=>d(!1)}))}r(se,"Layout");import{styled as Lv}from"@rango-dev/ui";var Rm="$20 $20 $10 $20",kl=Lv("div",{padding:Rm,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 yo}from"@lingui/core";import{useState as wl}from"react";function ef(){let[t,e]=wl(!1),[o,n]=wl(null),[i,a]=wl(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:yo.t("Duplicate Token"),message:yo.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:yo.t("Token Already Exists"),message:yo.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:yo.t("Token Not Found"),message:yo.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:yo.t("Network error"),message:yo.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(ef,"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 tf(){let t=Qv(),[e]=Hv(),o=Ve(),n=S().blockchains(),i=e.get("blockchain")||"",a=Po(i,n),[s,c]=zv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:m}=ef(),h=!!a&&Lo(a,s),g=!a||!s||!h,f=r(()=>{a&&l({blockchain:i,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:bn.t("Add Custom Token")}},Ke.createElement(ce,null,Ke.createElement(qv,null,Ke.createElement("div",null,Ke.createElement(Xs,{onClick:()=>t($.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:bn.t("Select chain"),placeholder:bn.t("Select chain")}),Ke.createElement(vl,{size:"24"}),Ke.createElement(Uv,{size:"large",variant:"label"},bn.t("Enter Address")),Ke.createElement(vl,{size:10}),Ke.createElement(Ov,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:bn.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(vl,{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},bn.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(tf,"AddCustomTokenPage");import{i18n as oc}from"@lingui/core";import{useManager as Ab}from"@rango-dev/queue-manager-react";import{Alert as Nb,Button as Wb,css as rc,Divider as nc,IconButton as Kg,styled as Pb,Typography as Lb,WalletIcon as Bb}from"@rango-dev/ui";import $e,{useEffect as Ta,useLayoutEffect as _b,useRef as Mb,useState as xr}from"react";import{useNavigate as Db}from"react-router-dom";import{i18n as Ko}from"@lingui/core";import{Alert as cE,BalanceErrors as pE,Button as If,ChevronLeftIcon as uE,Divider as Nl,MessageBox as dE,Typography as Wl}from"@rango-dev/ui";import ae,{useCallback as mE,useEffect as Zi,useMemo as fE,useState as An}from"react";import{useNavigate as gE}from"react-router-dom";function oe(t){we.emit("uiEvent",t)}r(oe,"emitUiEvent");function of(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};oe({type:t.type,payload:n}),o||e()}r(of,"emitPreventableEvent");function xn(t){we.emit("quoteEvent",t)}r(xn,"emitQuoteEvent");import{i18n as Il}from"@lingui/core";import{Alert as Xv,ChevronDownIcon as Yv,CloseIcon as Zv,Divider as pf,IconButton as uf,PasteIcon as Jv,Typography as Rv,WalletIcon as eE}from"@rango-dev/ui";import Me,{useEffect as df,useRef as mf}from"react";import Xi,{useRef as Kv}from"react";import*as In from"@radix-ui/react-collapsible";import{keyframes as nf,styled as Vi}from"@rango-dev/ui";var El=300,Gv=nf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Vv=nf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),rf=Vi(In.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),bl=Vi(In.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Ki=Vi(In.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Gv} ${El}ms ease-out`},false:{animation:`${Vv} ${El}ms ease-out`}}}}),ji=Vi("div",{transition:`all ${El}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Yi(t){let{open:e,hasSelected:o,onOpenChange:n,children:i,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Kv(null);return Xi.createElement(rf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&Xi.createElement(bl,{className:"collapsible_trigger",onClick:a},s),Xi.createElement(Ki,{className:"collapsible_content",open:e},i),c==="bottom"&&Xi.createElement(bl,{className:"collapsible_trigger",onClick:a},s))}r(Yi,"CustomCollapsible");import{darkTheme as af,styled as xl,TextField as jv}from"@rango-dev/ui";var sf=xl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),lf=xl(jv,{backgroundColor:"$neutral100"}),cf=xl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${af} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${af} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function ff(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=mf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!i&&e&&!Lo(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(uf,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(Zv,{size:12,color:"gray"})):d?null:Me.createElement(uf,{id:"widget-custom-destination-paste-icon-btn",onClick:f,variant:"ghost"},Me.createElement(Jv,{size:16})),"renderSuffix");df(()=>{!!u&&i===null&&(a(u),o(!0))},[u]);let C=mf(null);return df(()=>{if(!i){C.current=null;return}n&&Lo(e,i)&&C.current!==i&&(C.current=i,oe({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[i,n,e]),Me.createElement(sf,null,Me.createElement(Yi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(cf,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(eE,{size:18,color:"info"}),Me.createElement(pf,{size:4,direction:"horizontal"}),Me.createElement(Rv,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Il.t("Send to a different address"))),Me.createElement(ji,{orientation:n?"up":"down"},Me.createElement(Yv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(lf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:i?"8px":"5px"},autoFocus:!i,placeholder:Il.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(pf,{size:4}),Me.createElement(Xv,{variant:"alarm",type:"error",title:Il.t({values:{destination:i},id:"Address {destination} doesn't match the blockchain address pattern."})})))}r(ff,"CustomDestination");import{css as tE,IconButton as oE,SelectableWalletButton as nE,styled as So}from"@rango-dev/ui";var gf=So("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),hf=So("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),yf=So(nE,{justifyContent:"center"}),Sf=So("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Tf=So(oE,{position:"absolute",left:"$20"}),Cf=So("div",{paddingTop:"$20"}),kf=tE({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),wf=So("div",{display:"flex"}),vf=So("div",{overflow:"visible",width:"100%"});import{i18n as Ef}from"@lingui/core";import{warn as rE}from"@rango-dev/logging-core";import{makeInfo as iE,SelectableWallet as aE,Typography as bf,WalletState as hr}from"@rango-dev/ui";import Vo,{useEffect as sE,useState as xf}from"react";var lE=7;function Al(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:i,limit:a,onShowMore:s}=t,c=re.use.isActiveTab(),{connectedWallets:l}=S(),[p,u]=xf(),{list:d}=xt({chain:e}),[m,h]=xf(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)]),Vo.createElement(Vo.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?po(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?Ef.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 Vo.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})}),Vo.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&&Vo.createElement(yf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Vo.createElement(bf,{variant:"label",size:"medium"},Ef.t("Show more wallets"),Vo.createElement(bf,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}r(Al,"WalletList");var hE=2;function Af(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]=An(""),[k,w]=An([]),[v,N]=An(""),[I,b]=An(!!m),x=fE(()=>Mo({filter:"all",quote:l}),[l]),E=Mo({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]=An(O()),[ee,P]=An([]),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"),Gt=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(Bp(B.error)),!B.error&&!V?.balance?.messages.length?He():w(V?.balance?.messages??[])},"onConfirmWallets");Zi(()=>{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]),Zi(()=>{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??"";Zi(()=>{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]),Zi(()=>{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(wf,null,ae.createElement(If,{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"},Ko.t("Confirm")))},...C&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(Sf,null,ae.createElement(Tf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(uE,{size:16})),ae.createElement(Wl,{variant:"headline",size:"small"},Ko.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:Ko.t("Insufficient account balance"),type:"error",description:ae.createElement(pE,{messages:k??[]})},ae.createElement(If,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{oe({type:"gasWarningBypassed",payload:{routeId:St}}),He()}},Ko.t("Proceed anyway")))),C&&ae.createElement(Cf,null,ae.createElement("div",{className:kf()},ae.createElement(Al,{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:Ko.t(v)}),ae.createElement(Nl,{size:12})),ae.createElement(vf,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(gf,null,ae.createElement(Wl,{variant:"title",size:"xmedium"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:Q?.shortName}})),ae.createElement(Wl,{variant:"label",color:"$neutral700",size:"medium"},Ko.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:Q?.shortName}}))),ae.createElement(Nl,{size:24}),ae.createElement(hf,null,ae.createElement(Al,{chain:B,quoteChains:x,isSelected:ue,selectWallet:be,limit:hE,onShowMore:()=>y(Q?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(Nl,{size:32}),J&&ae.createElement(ff,{blockchain:L,open:I,handleOpenChange:Gt}))}))))}r(Af,"ConfirmWalletsModal");import{i18n as QE}from"@lingui/core";import{Alert as HE,Button as qE,Divider as jf,InfoIcon as GE}from"@rango-dev/ui";import Ue from"react";import{Alert as TE,Button as CE,Divider as Bl,NoRouteIcon as kE,RefreshIcon as wE,Typography as Mf}from"@rango-dev/ui";import mt from"react";import{i18n as Nf}from"@lingui/core";var yE=24,SE=60;function Wf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:te().genericServerError,action:{onClick:n,title:Nf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:te().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Nf.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(Wf,"makeInfo");var Pl=(o=>(o[o.small=yE]="small",o[o.large=SE]="large",o))(Pl||{}),Ll=(o=>(o.small="small",o.large="medium",o))(Ll||{});import{styled as Ji}from"@rango-dev/ui";var Pf=Ji("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Lf=Ji("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Bf=Ji("div",{variants:{size:{small:{width:"100%"},large:{}}}}),_f=Ji("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=Wf(o,a,()=>s(c,!0),e);return i&&(l.alert=null),mt.createElement(Pf,{id:"widget-no-result-container"},mt.createElement(kE,{size:Pl[n],color:"gray"}),mt.createElement(Bl,{size:4}),mt.createElement(Mf,{variant:"title",size:Ll[n]},te().noResultError.title),n==="large"&&mt.createElement(Bl,{size:4}),!!l.description&&mt.createElement(Lf,{size:n},mt.createElement(Mf,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement(Bl,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Bf,{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(_f,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 Jt from"react";import{InfoIcon as xE,Tooltip as IE,Typography as AE}from"@rango-dev/ui";import Nn from"react";import{Button as vE,darkTheme as EE,styled as jo,Typography as bE}from"@rango-dev/ui";var Df=jo("div",{width:"100%"}),_l=jo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),$f=jo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${EE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ff=jo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),Of=jo(bE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Uf=jo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),zf=jo(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 Nn.createElement($f,null,Nn.createElement(AE,{size:"medium",variant:"label",className:"_title"},e),Nn.createElement(Ff,null,Nn.createElement(Of,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>NE&&Nn.createElement(IE,{content:o,container:i},Nn.createElement(xE,{size:12,color:"gray"}))))}r(Qf,"QuoteErrorsModalItem");function Hf(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 Jt.createElement(ie,{id:"widget-high-value-loss-warning-modal",footer:Jt.createElement(WE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Jt.createElement(_E,null),fullWidth:!0,disabled:a,onClick:n},te().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Jt.createElement(LE,{type:s,title:te().highValueLossError.impactTitle,description:te().highValueLossError.description}),Jt.createElement(_l,null,Jt.createElement(PE,{size:"4"}),Jt.createElement(BE,{size:"small",variant:"title"},Sr.t("Details")),Jt.createElement(_l,null,c.map((l,p)=>Jt.createElement(Qf,{key:p,...l})))))}r(Hf,"HighValueLossWarningModal");import{i18n as Wn}from"@lingui/core";function qf(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=Wn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Wn.t("Increase")),o;if(t){switch(t.type){case 0:{Zt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=te().highValueLossError.title;break}case 4:{o.title=Wn.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=Wn.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=Wn.t("Increase");break}case 3:{o.title=Wn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}r(qf,"makeAlerts");function Gf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}r(Gf,"getRequiredSlippage");import{i18n as Pn}from"@lingui/core";import{Button as ME,Divider as Ml,MessageBox as DE,WarningIcon as $E}from"@rango-dev/ui";import ko from"react";import{useNavigate as FE}from"react-router-dom";function Vf(t){let{open:e,onClose:o,onConfirm:n,warning:i,confirmationDisabled:a}=t,s=FE();return ko.createElement(ie,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},ko.createElement(DE,{type:"warning",title:i.type===3?Pn.t("High slippage"):Pn.t("Low slippage"),description:i.type===3?Pn.t("Caution, your slippage is high. Your trade may be front run."):Pn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:i.minRequiredSlippage}})},ko.createElement(Ml,{size:18}),ko.createElement(Ml,{size:32}),ko.createElement(zf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},ko.createElement($E,{color:"white",size:16}),Pn.t("Swap anyway")),ko.createElement(Ml,{size:10}),ko.createElement(ME,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Pn.t("Change Slippage"))))}r(Vf,"SlippageWarningModal");import{Button as OE,MessageBox as UE,WarningIcon as zE}from"@rango-dev/ui";import Ri from"react";function Kf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:i}=t;return Ri.createElement(ie,{id:"widget-unknown-price-warning-modal",footer:Ri.createElement(OE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ri.createElement(zE,null),fullWidth:!0,disabled:i,onClick:n},te().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},Ri.createElement(UE,{type:"warning",title:te().unknownPriceError.impactTitle,description:te().unknownPriceError.description}))}r(Kf,"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=qf(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=Gf(e,k);m?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,g&&Ue.createElement(Ue.Fragment,null,Ue.createElement(jf,{size:10}),Ue.createElement(yr,{skipAlerts:s,error:o,fetch:c})),T&&Ue.createElement(Df,null,Ue.createElement(jf,{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(Uf,{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(Hf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(Vf,{...h,warning:e}),e.type===1&&Ue.createElement(Kf,{...h,warning:e})))}r(Tr,"QuoteWarningsAndErrors");import kb from"bignumber.js";import ga from"react";import{i18n as Xo}from"@lingui/core";import{Alert as cb,CampaignQuoteTag as pb,Divider as Bn,FullExpandedQuote as ub,InfoIcon as Vl,NumericTooltip as Kl,QuoteTag as db,StepDetails as mb,TokenAmount as fb,Typography as _n,useIsTruncated as jl}from"@rango-dev/ui";import Xl from"bignumber.js";import F,{useRef as da,useState as gb}from"react";import{styled as Dl}from"@rango-dev/ui";var $l=Dl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Xf=Dl("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),Yf=Dl("div",{width:"100%",display:"flex"});import*as ea from"@radix-ui/react-collapsible";import{Button as VE,css as ta,darkTheme as De,Image as Zf,styled as je,Typography as Fl}from"@rango-dev/ui";var KE=300,Jf=je(ea.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"}}]}),Rf=ta({padding:"$10 $15"}),eg=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"}}}),tg=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"}}}}]}),og=ta({width:"100%",padding:"$15 $15 $10 $15"}),ng=ta({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),Ln=ta({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),rg=je(ea.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:{[`& ${Zf}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Zf}`]:{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"}}}),ig=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"}}}}),ag=je(Ki,{width:"100%",background:"inherit"}),Ol=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)"}}}}),uH=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),sg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),lg=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),Ul=je(Fl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"$30"}),zl=je(Fl,{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"}}}}),cg=je("div",{display:"flex"}),oa=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),pg=je(Fl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ft}from"@lingui/core";import{ChevronDownIcon as XE,CloseIcon as YE,Divider as ia,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 fg}from"react";import{css as jE,styled as na}from"@rango-dev/ui";var ra=na("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Hl=na("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),ug=na("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),dg=na("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),mg=jE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var tb=r(t=>t.fee.isZero()?null:R.createElement(ra,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 ql(t){let[e,o]=fg(!1),[n,i]=fg(!1),{steps:a,quote:s,time:c,feeWarning:l,timeWarning:p,showModalFee:u,fullExpandedMode:d=!1}=t,m=s?.swaps??[],h=d?_o():W(),g=Ud(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?Ft.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(dg,{style:{textAlign:d?"left":"center"}},R.createElement(Nt,{variant:"title",size:"medium"},Ft.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(ug,null,R.createElement(Nt,{variant:"title",size:"small"},Ft.t("Details")),R.createElement(ia,{size:10}),Object.entries(g.payable).flatMap(([C,y])=>y.map((k,w)=>{let v=`payable-fee-${w}`,N=zs(k);return R.createElement(ra,{key:v},R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},Ds(C,Ft.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(ra,{className:"total_payable_fee"},R.createElement(Nt,{variant:"label",size:"medium"},Ft.t("Total Payable Fee")),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(f,4,4))),R.createElement(Hl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Yi,{triggerAnchor:"bottom",onClickTrigger:()=>i(C=>!C),trigger:R.createElement("div",{className:mg()},R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},n?Ft.t("Hide non-payable fees"):Ft.t("Show non-payable fees")),R.createElement(ia,{size:4,direction:"horizontal"}),R.createElement(ji,{orientation:n?"up":"down"},R.createElement(XE,{size:12,color:"gray"}))),open:n},R.createElement(Nt,{size:"small",variant:"title"},Ft.t("Description")),R.createElement(ia,{size:4}),R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},Ft.t(`The following fees are considered in the transaction output and
3
- you won\u2019t need to pay extra gas for them.`)),R.createElement(ia,{size:10}),Object.entries(g.nonePayable).map(([C,y],k)=>{let w=Qs(y),v=Ds(C,Ft.t),N=`non-payable-fee-${k}`;return R.createElement(tb,{key:N,fee:w,label:v})}),R.createElement(Hl,null)))))}r(ql,"QuoteCostDetails");import{i18n as yg}from"@lingui/core";import{TokenAmount as Sg}from"@rango-dev/ui";import aa from"react";import{css as ob,styled as nb}from"@rango-dev/ui";var gg=nb("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),hg=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 aa.createElement(gg,null,aa.createElement(Sg,{direction:"horizontal",label:yg.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}}),aa.createElement("div",{className:hg()}),aa.createElement(Sg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:yg.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 vg}from"@lingui/core";import{ChevronDownIcon as ab,ChevronRightIcon as sb,Divider as Gl,Image as lb,Tooltip as ua,Typography as la}from"@rango-dev/ui";import H from"react";import{useLayoutEffect as rb,useState as kr}from"react";var Tg=480,Cg=768,kg=1024,wg=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<=Tg),n(window.innerWidth>Tg&&window.innerWidth<=Cg),a(window.innerWidth>Cg&&window.innerWidth<=kg),c(window.innerWidth>kg&&window.innerWidth<=wg),p(window.innerWidth>wg)},"handleResize");return rb(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:i,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),sa=ib;var ca=4,pa=6,wr=r(t=>{let{content:e,src:o,className:n,open:i,state:a,container:s}=t,c=s||W();return H.createElement(ua,{container:c,side:"bottom",sideOffset:4,open:i,content:e},H.createElement(ig,{className:n,state:a},H.createElement(lb,{src:o,size:16})))},"ImageComponent");function Eg(t){let{quoteRef:e,selected:o,setExpanded:n,steps:i,expanded:a,type:s,container:c}=t,l=c||W(),p=i.length,u=Wd(i),{isTablet:d,isMobile:m}=sa();return H.createElement(rg,{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:Ln()},H.createElement(la,{variant:"body",size:"xsmall"},vg.t("Via:")),H.createElement(Gl,{direction:"horizontal",size:4}),i.map((h,g)=>{let f=`item-${g}`,T=H.createElement(Ol,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<=ca||p>ca&&g<ca-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===ca-1&&H.createElement(ua,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:Ln()},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(la,{size:"xsmall",variant:"body"},"+",p-g))))})),H.createElement("div",{className:Ln()},H.createElement("div",{className:"blockchains_section"},H.createElement("div",{className:Ln()},H.createElement(la,{variant:"body",size:"xsmall"},vg.t("Chains:")),H.createElement(Gl,{direction:"horizontal",size:4}),u.map((h,g)=>H.createElement(H.Fragment,{key:h.displayName},u.length<=pa||u.length>pa&&g<pa-1?H.createElement(ua,{container:l,side:"bottom",content:h.displayName,sideOffset:4},H.createElement(wr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===pa-1&&H.createElement(ua,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:Ln()},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(la,{size:"xsmall",variant:"body"},"+",u.length-g))))),H.createElement(Gl,{direction:"horizontal",size:32}))),H.createElement(Ol,{orientation:a?"up":"down"},H.createElement(ab,{size:12,color:"black"}))))}r(Eg,"QuoteTrigger");function Yl(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=da(null),N=M(n.value,6,6),I=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:b}}=S(),x=Yt(o.usdValue,n.usdValue??null),E=M(x,2,2),L=Zt(x??0),A=r((G,J)=>G.map((U,de)=>{let qe,ot=i?.type===3&&i.swap.swapperId===U.swapperId,co=i?.type===4&&!!i.recommendedSlippages?.[de],Qn=a?.type===2&&!!a.recommendedSlippages?.[de],No=ot||co,ei=Qn;No?qe="error":ei&&(qe="warning");let rn=No?Xo.t("Slippage Error"):Xo.t("Slippage Warning");return ot&&(rn=Xo.t("Bridge Limit Error")),{swapper:{displayName:Vn(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 Xl(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 Xl(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:qe,alerts:No||ei?F.createElement(Xf,{dense:d},F.createElement(cb,{variant:"alarm",type:No?"error":"warning",title:rn,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(Yf,null,ot&&F.createElement("div",null,F.createElement(_n,{size:"xsmall",variant:"body",color:"neutral900"},i.fromAmountRangeError),F.createElement(Bn,{direction:"vertical",size:2}),F.createElement(_n,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Xo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(co||Qn)&&!ot&&F.createElement("div",null,F.createElement(_n,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...i?.type===4&&{minRequiredSlippage:i.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(Bn,{direction:"vertical",size:2}),F.createElement(_n,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Xn(U.estimatedTimeInSeconds),fee:M(Us(U,g),2,2),internalSwaps:U.internalSwaps?A(U.internalSwaps):void 0}}),"getQuoteSteps"),O=A(e?.swaps??[]),q=O.length,j=m||W(),ee=Ld(t.quote.tags||[]),P=!!u,Z=ci(e?.swaps),Y=Xn(Z),ue=Pi(e?.swaps??[],g),Ee=M(ue,2,2),Gt=ue.gte(new Xl(wd)),be=Z/Ed>=vd,He=da(null),Xe=jl(o.value,He),St=da(null),ct=jl(n.value,St),B=da(null),V=jl(I,B),Q=O[q-1],X=O[0];return!X||!Q?null:d?F.createElement(ub,{selected:c,fee:Ee,time:Y,tooltipContainer:_o(),steps:O,tags:ee,campaignTag:b?.campaignTag,id:"widget-quote-full-expanded-quote-container",quoteCost:F.createElement(ql,{quote:e,fullExpandedMode:!0,time:Y,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:E,warningLevel:L,outputPrice:{value:N,usdValue:I,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(tg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:og()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(cg,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(Bn,{size:4,direction:"horizontal"}))})),F.createElement(oa,null),!P&&F.createElement(Bn,{size:4})):null,F.createElement("div",{id:"portal-root",className:ng()},F.createElement(ql,{quote:e,time:Y,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),P&&F.createElement(eg,{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(_n,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Xo.t("See All Routes")))),s==="basic"&&F.createElement(lg,null,F.createElement(zl,{ref:He,size:"small",variant:"body"},o.value),Xe&&F.createElement(Kl,{content:o.value,container:j,open:o.value?void 0:!1},F.createElement(Vl,{size:12,color:"gray"})),F.createElement(Ul,{size:"small",variant:"body"},O[0]?.from.token.displayName),F.createElement(_n,{size:"small",variant:"body"},"="),F.createElement(zl,{ref:St,size:"small",variant:"body"},n.value),ct&&F.createElement(Kl,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(Vl,{size:12,color:"gray"})),F.createElement(Ul,{size:"small",variant:"body"},Q?.to.token.displayName),F.createElement(Bn,{size:2,direction:"horizontal"}),F.createElement(pg,{ref:B,color:"$neutral600",size:"xsmall",variant:"body"},`($${I})`),V&&F.createElement(Kl,{content:n.usdValue,container:j},F.createElement(Vl,{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(Bn,{size:4}))),F.createElement(Jf,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:w},F.createElement(Eg,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:k,steps:O}),F.createElement(ag,{open:k},F.createElement(sg,null),F.createElement("div",{className:Rf()},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(Yl,"Quote");import{Divider as Tb,Skeleton as Cb}from"@rango-dev/ui";import oo from"react";import{darkTheme as hb,styled as ma}from"@rango-dev/ui";var bg=ma("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"}}}}),xg=ma("div",{paddingTop:"$2"}),Ig=ma("div",{paddingLeft:"$8"}),Ag=ma("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as Fg,Divider as Wt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as yb,styled as to}from"@rango-dev/ui";var Zl=to("div",{display:"flex"}),Ng=to("div",{padding:"$10 $0 $20"}),Wg=to("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),Pg=to("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Lg=to("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Bg=to("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),_g=to("div",{width:"65%",display:"flex",justifyContent:"start"}),Mg=to("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Dg=to("div",{padding:"$15 $0 $15 $0"}),$g=yb({display:"flex",justifyContent:"space-between",alignItems:"center"});function vr(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(Lg,null,K.createElement(_g,null,K.createElement(Fg,{loading:!0,size:"medium"}),K.createElement(Wt,{size:8,direction:"horizontal"}),K.createElement(Mg,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(Zl,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(oa,null),!i&&K.createElement(Wt,{size:4})),K.createElement("div",{className:$g()},K.createElement(Zl,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(Ng,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Wg,null,K.createElement(Pg,null,K.createElement(Fg,{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(Dg,null,n,K.createElement(Bg,null),n),K.createElement(Wt,{size:12})))}r(vr,"QuoteSummarySkeleton");import{ChainToken as Hg,Divider as Rl,NextIcon as Sb,Skeleton as fa}from"@rango-dev/ui";import Be from"react";import{styled as Er}from"@rango-dev/ui";var Og=Er("div",{display:"flex",alignItems:"start"}),Ug=Er("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Jl=Er("div",{display:"flex",alignItems:"center",flexGrow:1}),zg=Er("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Qg=Er("div",{display:"flex",alignItems:"center"});function Ot(t){let{separator:e=!0}=t;return Be.createElement(Be.Fragment,null,Be.createElement(Qg,null,Be.createElement(fa,{height:22,width:22,variant:"circular"}),Be.createElement(Rl,{direction:"horizontal",size:8}),Be.createElement(fa,{height:15,width:148,variant:"rounded"})),Be.createElement(Og,null,Be.createElement(Ag,{hideSeparator:!e}),Be.createElement(Ug,{extraSpace:e},Be.createElement(Jl,null,Be.createElement(Hg,{size:"small",loading:!0}),Be.createElement(Rl,{direction:"horizontal",size:8}),Be.createElement(fa,{height:12,variant:"rounded"})),Be.createElement(zg,null,Be.createElement(Sb,{color:"gray",size:16})),Be.createElement(Jl,null,Be.createElement(Hg,{size:"small",loading:!0}),Be.createElement(Rl,{direction:"horizontal",size:8}),Be.createElement(fa,{height:12,variant:"rounded"})))))}r(Ot,"StepSkeleton");function br(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return oo.createElement(bg,{expanded:o,rounded:e!=="basic"},oo.createElement(vr,{type:e,tagHidden:n}),oo.createElement(xg,null,oo.createElement(Cb,{height:15,variant:"rounded"})),o&&oo.createElement(Ig,null,oo.createElement(Tb,{size:24}),oo.createElement(Ot,null),oo.createElement(Ot,null),oo.createElement(Ot,{separator:!1})))}r(br,"QuoteSkeleton");function Yo(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?ga.createElement($l,null,ga.createElement(br,{tagHidden:c,type:o,expanded:s})):w?ga.createElement($l,{onClick:()=>l?.(e),id:d},ga.createElement(Yl,{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(Yo,"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 ha({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(ha,"useFetch");function qg(){let{fetch:t,loading:e,cancelFetch:o}=ha({request:async(n,i)=>await dt().confirmRoute(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(qg,"useFetchConfirmQuote");function ya(t){if(!t.swaps)throw new Error(te().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=ec(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}r(ya,"throwErrorIfResponseIsNotValid");function ec(t){if($d(t)){let{swap:n,fromAmountRangeError:i,recommendation:a}=Fd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:i}}:null}let o=zd(t);if(o){let n=Li(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}r(ec,"getQuoteError");function Gg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:i,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=kn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=qd(e,i,n.blockchains);return p.length===0||(c.balance={messages:p}),c}r(Gg,"generateWarnings");function Sa(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(Sa,"handleQuoteErrors");function tc(){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}=qg();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");ya({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=Gg({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:Hd(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=Sa(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(tc,"useConfirmSwap");function Vg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}r(Vg,"toNumberOrNull");function Mn(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=zo(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:Vg(t.requestAmount),destinationTokenAmount:Vg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:i?i.toNumber():null}}r(Mn,"buildSwapEstimatePayload");var $b=Pb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Kg}`]:{width:"$48",height:"$48"}}),Fb=rc({flexGrow:1,paddingRight:"$10"}),Ob=rc({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Ub=rc({display:"flex",justifyContent:"space-between",alignItems:"center"});function jg(){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}=tc(),[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&&Nd(v.warnings.quote)&&!a?b(!0):(t&&oe({type:"swapStarted",payload:{...Mn(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");Ta(()=>{!!T.current.length&&!f.length&&O(),T.current=f},[f.length]),Ta(()=>{p&&w()},[p]),Ta(()=>{p&&d(p)},[p]),Ta(()=>{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:oc.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},oc.t("Start Swap"))),$e.createElement(Kg,{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(Af,{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"},oc.t("You get")),$e.createElement("div",{className:Ob()},$e.createElement(Ui,{onClick:!k&&!u&&!I?O:void 0}))),$e.createElement(nc,{size:"12"}),Cm(ee.map((P,Z)=>({element:P,key:`alert-${Z}`})),$e.createElement(nc,{size:10})),ee.length>0?$e.createElement(nc,{size:10}):null,$e.createElement(Yo,{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(jg,"ConfirmSwapPage");import{i18n as ro}from"@lingui/core";import{Button as hc,CustomTokensZeroStateDarkIcon as ax,CustomTokensZeroStateIcon as sx,DeleteIcon as lx,Divider as Pr,IconButton as cx,MessageBox as px,NotFound as ux,styled as Sc}from"@rango-dev/ui";import ye,{useState as yc}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 Dn from"react";import{styled as Xg}from"@rango-dev/ui";var Yg=Xg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),Zg=Xg("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?Dn.createElement(Qb,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Dn.createElement(zb,{color:"gray",size:10})):null;return p&&(m=p),Dn.createElement(Zg,null,Dn.createElement(qb,{prefix:Dn.createElement(Yg,null,Dn.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 gc}from"@lingui/core";import{Button as jb,CustomTokenWarning as Xb,darkTheme as ch,Divider as no,ExternalLinkIcon as Yb,Image as Zb,ListItem as Jb,NotFound as Rb,PinIcon as ex,Skeleton as Zo,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 sh,ListItem as Kb,Skeleton as Ar}from"@rango-dev/ui";import Lt from"react";import{css as $n,darkTheme as ic,ImageContainer as Gb,ListItemButton as Vb,styled as st,Typography as Jg}from"@rango-dev/ui";var ac=$n({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),sc=$n({position:"relative",height:12,width:"30%",maxWidth:"150px"}),lc=$n({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),cc=$n({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${ic} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),pc=$n({}),uc=$n(),Rg=st("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),dc=st("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Ca=st("ul",{flexGrow:1,height:"100%",padding:0,margin:0,display:"flex",flexDirection:"column",listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${sc}`]:{[`& .${cc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${pc}`]:{bottom:"-15px"},[`& .${ac}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${lc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),eh=st(Vb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),mc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),fc=st(Jg,{}),th=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${uc}`]:{$$color:"$colors$neutral600",[`.${ic} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ir=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),yV=st("div",{display:"flex",alignItems:"center"}),oh=st("div",{position:"relative",[`& ${Gb}`]:{borderRadius:"$xm",overflow:"hidden"}}),nh=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),rh=st(Jg,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),ih=st("a",{"& svg:hover":{color:"$colors$info"}}),ah=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":{[`.${ic} &`]:{color:"$foreground"}}}});function lh(t){return Lt.createElement(Ca,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(sh,{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(sh,{size:4}),Lt.createElement(Ar,{variant:"text",size:"medium",width:90}))})))}r(lh,"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:sc()},o?_.createElement("div",{className:ac()},o):_.createElement(dc,{className:lc()},_.createElement(Nr,{variant:"title",size:"xmedium"},i.symbol),_.createElement(no,{direction:"horizontal",size:4}),_.createElement(mc,{css:a},_.createElement(fc,{variant:"body",size:"xsmall",css:s},i.blockchain))),!!e&&_.createElement("div",{className:`${cc()} ${!o&&pc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",_.createElement(no,{size:4,direction:"horizontal"}),_.createElement(ih,{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=mi(d(x));return s?s(x):m?_.createElement(Ir,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})):E&&_.createElement(th,null,_.createElement(rh,{variant:"title",size:"small"},E.amount),_.createElement("div",null),E.usdValue&&_.createElement(Nr,{variant:"body",className:uc(),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(Zo,{variant:"circular",width:35,height:35}),end:_.createElement(Ir,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Zo,{variant:"text",size:"large",width:90}),_.createElement(no,{size:4}),_.createElement(Zo,{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=nl(L.color,"main"),q={$$color:O.main150,[`.${ch} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${ch} &`]:{$$color:O.main150},color:"$$color"},ee=r(()=>{typeof E!="string"&&!E.customToken&&n?.(E)},"handleClick"),P=A?oi({contractAddress:A,blockchainMeta:L}):void 0;return _.createElement(ah,null,_.createElement(eh,{"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(oh,null,_.createElement(Zb,{src:E.image===""?ii:E.image,size:30}),t.type!=="custom-token"&&E&&h(E,t.type)&&_.createElement(nh,null,_.createElement(ex,{size:12,color:"gray"}))),title:E.name||!E.name&&!A?_.createElement(dc,null,_.createElement(Nr,{variant:"title",size:"xmedium"},E.symbol),_.createElement(no,{direction:"horizontal",size:4}),_.createElement(mc,{css:q},_.createElement(fc,{variant:"body",size:"xsmall",css:j},E.blockchain)),l&&E.warning&&_.createElement(_.Fragment,null,_.createElement(no,{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?Po(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Nr,{variant:"label",size:"large"},gc.t("Select Token")),_.createElement(no,{size:4})),_.createElement(Rg,null,_.createElement(no,{size:4}),p==="loading"&&_.createElement(lh,{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(Ca,{as:"ul"},I())):!!o&&_.createElement(Rb,{title:gc.t("No results found"),description:gc.t("Try using different keywords")}))))}r(Wr,"TokenList");var mx=Sc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),fx=Sc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),gx=Sc(cx,{"&:hover":{"& svg":{color:"$secondary550"}}});function ph(){let[t,e]=yc(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:i,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=go({}),p=dx(),[u,d]=yc(!1),[m,h]=yc(),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 ye.createElement(se,{header:{title:ro.t("Custom Tokens")}},ye.createElement(ce,null,ye.createElement(mx,null,n.length?ye.createElement(ye.Fragment,null,ye.createElement(Pt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:ro.t("Search Token"),onChange:g}),ye.createElement(Pr,{size:16}),ye.createElement(Wr,{list:T,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>ye.createElement(gx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},ye.createElement(lx,{size:12,color:"gray"}))})):ye.createElement(fx,null,ye.createElement(ux,{icon:f?ye.createElement(ax,{size:200}):ye.createElement(sx,{size:200}),title:ro.t("No custom tokens"),description:ro.t("press the button to add your custom token")})),ye.createElement(Pr,{size:20}),ye.createElement(hc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},ro.t("Add Custom Token"))),ye.createElement(ie,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},ye.createElement(px,{title:ro.t("Delete Custom Token"),type:"error",description:ro.t("Are you sure you want to Delete this Token?")},ye.createElement(Pr,{size:40}),ye.createElement(Pr,{size:10}),ye.createElement(hc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:C},ro.t("Yes, Delete it")),ye.createElement(Pr,{size:12}),ye.createElement(hc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},ro.t("No, Continue"))))))}r(ph,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as Mx}from"@rango-dev/queue-manager-react";import{Button as bc,darkTheme as Dx,Divider as wo,MessageBox as $x,NotFound as Fx,styled as xc,Tabs as Ox,Typography as va}from"@rango-dev/ui";import{TransactionStatus as _r}from"rango-types";import ne,{useMemo as Nh,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 Jo from"react";import{css as hx,darkTheme as ka,IconButton as yx,styled as Lr}from"@rango-dev/ui";var Tc=Lr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${ka} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),uh=Lr(yx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ka} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ka} &`]:{backgroundColor:"$neutral"},[`& ${Tc}::before`]:{backgroundColor:"$secondary100",[`.${ka} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),dh=Lr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),mh=Lr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),fh=hx({display:"flex",justifyContent:"space-between",alignItems:"center"}),gh=Lr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as hh}from"@lingui/core";import{Button as Sx,Divider as yh,ListItemButton as Tx,Radio as Cx,RadioRoot as kx,Typography as Sh}from"@rango-dev/ui";import gt from"react";function Th(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(mh,null,gt.createElement("div",{className:fh()},gt.createElement(Sh,{size:"small",variant:"body"},hh.t("Status")),gt.createElement(Sx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},hh.t("Reset"))),gt.createElement(yh,{size:10}),gt.createElement(kx,{value:e},gt.createElement(gh,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(yh,{direction:"horizontal",size:4}),gt.createElement(Sh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(Cx,{value:n.id}),onClick:o})))))}r(Th,"FilterSelectorContent");function Cc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:i,open:a}=t;return Jo.createElement("div",null,Jo.createElement(vx,{open:a,align:"end",onOpenChange:o,container:W(),content:Jo.createElement(Th,{list:i,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Jo.createElement(uh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Jo.createElement(Tc,{isSelect:!!n},Jo.createElement(wx,{size:16,color:"black"}),!!n&&Jo.createElement(dh,null)))))}r(Cc,"FilterSelector");import{i18n as xx}from"@lingui/core";import{getCurrentStep as Ix}from"@rango-dev/queue-manager-rango-preset";import{Divider as Eh,GroupedVirtualizedList as Ax,Skeleton as Nx,SwapListItem as bh,Typography as Wx}from"@rango-dev/ui";import et,{useCallback as xh,useEffect as Px,useRef as Lx,useState as Bx}from"react";function Ch(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(Ch,"calculateGroupsSoFar");import{css as Ex,darkTheme as bx,styled as Br}from"@rango-dev/ui";var kc=Ex(),kh=Br("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),wc=Br("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${kc}`]:{$$color:"$colors$neutral600",[`.${bx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),vc=Br("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),wh=Br("div",{gap:"$10",display:"flex",flexDirection:"column"}),vh=Br("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var _x=10;function Ec(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=xh(Ch,[]),m=xh(()=>{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(wc,{key:T},et.createElement(vc,null,et.createElement(Nx,{variant:"text",width:60,size:"small"}),et.createElement(Eh,{size:16})),et.createElement(Eh,{size:4}),et.createElement(wh,null,f.map((y,k)=>et.createElement(bh,{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(wc,null,et.createElement(vc,null,et.createElement(Wx,{variant:"label",size:"medium",className:kc()},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(kh,{key:f.requestId},et.createElement(bh,{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(Ec,"HistoryGroupedList");import{i18n as wa}from"@lingui/core";import Ih from"dayjs";var Ah=r(t=>{let e=new Map([["today",{title:wa.t("Today"),swaps:[]}],["week",{title:wa.t("This week"),swaps:[]}],["month",{title:wa.t("This month"),swaps:[]}],["year",{title:wa.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=Ih();t.forEach(l=>{let p=Number(l.creationTime),u=Ih(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=xc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),Qx=xc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Hx=xc("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 Wh(){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=Nh(()=>!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=Nh(()=>!n.some(b=>b.status===_r.SUCCESS||b.status===_r.FAILED),[n]);return ne.createElement(se,{header:{title:Fe.t("History"),suffix:ne.createElement(ho,null,ne.createElement(bc,{id:"widget-history-clear-btn",disabled:I,variant:"ghost",size:"xsmall",onClick:()=>m(!0)},ne.createElement(va,{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(wo,{size:10,direction:"horizontal"}),ne.createElement(Cc,{filterBy:p,open:s,onOpenChange:b=>c(b),onClickItem:b=>u(b),list:C})),ne.createElement(wo,{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(wo,{size:"12"})),ne.createElement(zx,null,w&&ne.createElement(vh,null,ne.createElement(wo,{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(Ec,{list:k,onSwapClick:t,groupBy:Ah,isLoading:l}))),ne.createElement(ie,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},ne.createElement(wo,{size:20}),ne.createElement($x,{type:"warning",title:Fe.t("Clear Transaction History"),description:ne.createElement(Hx,null,ne.createElement(va,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ne.createElement(wo,{size:"24"}),ne.createElement(va,{variant:"body",size:"small"},Fe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ne.createElement(wo,{size:30}),ne.createElement(bc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:N},Fe.t("Yes, Clear the history")),ne.createElement(wo,{size:10}),ne.createElement(bc,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},ne.createElement(va,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}r(Wh,"HistoryPage");import{i18n as iy}from"@lingui/core";import{Button as xI,Divider as Uc,styled as II,WarningIcon as AI}from"@rango-dev/ui";import NI from"bignumber.js";import Te,{useEffect as ay,useState as sy}from"react";import{useNavigate as WI}from"react-router-dom";import{i18n as Lh}from"@lingui/core";import{Alert as Vx,Divider as Ic,NoRouteIcon as Kx,Typography as jx}from"@rango-dev/ui";import Ro from"react";import{styled as Gx}from"@rango-dev/ui";var Ph=Gx("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Ac(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Vt(t,e)?Ro.createElement(Ph,null,Ro.createElement(Ic,{size:10}),Ro.createElement(Kx,{size:24,color:"gray"}),Ro.createElement(Ic,{size:4}),Ro.createElement(jx,{variant:"title",size:"small"},Lh.t("No Routes Found")),Ro.createElement(Ic,{size:4}),Ro.createElement(Vx,{title:Lh.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}r(Ac,"SameTokensWarning");import{Alert as Xx,Button as Yx}from"@rango-dev/ui";import _h from"react";import{i18n as Ea}from"@lingui/core";function Bh(t){let e=null;return t===yi?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:Ea.t("Reset"),title:Ea.t("Slippage cannot be set lower than 0.01%.")},e):t>pn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:Ea.t("Change"),title:Ea.t("Caution, your slippage is high!")},e):null}r(Bh,"makeAlerts");function Mh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:i}=S(),{onChangeSettings:a}=t,c=Bh(o!==null?o:e),l=r(p=>{p==="reset-slippage"?(n(hi),i(null)):p==="change-settings"&&a()},"onClickActionButton");return c?_h.createElement(Xx,{title:c.title,type:c.alertType,variant:"alarm",action:_h.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(Mh,"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 ba from"bignumber.js";function $h(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($h,"getSlippageColor");function Fh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new ba(e),i=new ba(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(Fh,"getUsdExchangeRate");function Oh(t,e){let o=new ba(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,ba.ROUND_DOWN).toFormat(2)}`}r(Oh,"formatTokenValueInUsd");import{darkTheme as Rx,styled as Wc,Typography as eI}from"@rango-dev/ui";var Uh=Wc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),zh=Wc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${Rx} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Pc=Wc(eI,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function Lc(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}=go({}),h=dn(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}=Fh({toTokenUsdPrice:x,fromTokenUsdPrice:b});return ht.createElement(Uh,null,ht.createElement(Dr,{variant:T||C?"label":"body",size:T||C?"medium":"small",color:$h({error:T,warning:C,isDarkTheme:g})},tI.t("Slippage:")," ",d,"%"),u?ht.createElement(rI,{height:16,width:104,variant:"rounded"}):b&&x&&ht.createElement(zh,null,ht.createElement(Dr,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Pc,{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(Pc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement(Dr,{color:"neutral600",variant:"body",size:"small"},"~",Oh(Number(E),w.usdPrice))))}r(Lc,"SwapMetrics");import{i18n as uI}from"@lingui/core";import{Header as dI}from"@rango-dev/ui";import vo,{useEffect as mI,useState as fI}from"react";import{i18n as sI}from"@lingui/core";import{Divider as _c,FullExpandedQuote as lI,Typography as cI}from"@rango-dev/ui";import ve from"react";import{styled as Bc}from"@rango-dev/ui";var Qh=Bc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Hh=Bc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),qh=Bc("div",{width:"146px"});import{i18n as $r}from"@lingui/core";import{Select as aI}from"@rango-dev/ui";import Gh from"react";function xa(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 Gh.createElement(qh,null,Gh.createElement(aI,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:i=>{e("sortStrategy",i.value)},variant:"filled"}))}r(xa,"SelectStrategy");var Vh=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 kn({currentQuote:E,userSlippage:w,findToken:C})},"getQuoteWarning"),I=g?.type===0||g?.type===1,b=p?.results?Wi(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Hh,null,ve.createElement(cI,{size:"xmedium",variant:"title"},sI.t("Sort by")),ve.createElement(xa,{container:y})),ve.createElement(_c,{size:"10"})),e&&Array.from({length:Vh},(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!==Vh-1&&ve.createElement(_c,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?b.map((x,E)=>{let L=N(x),A=ec(x.swaps),O=b.length-1===E;return ve.createElement(ve.Fragment,{key:x.requestId},ve.createElement(Yo,{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(_c,{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 Kh}from"@rango-dev/ui";var jh=Kh("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}}),Xh=Kh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var gI=100;function Mc(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=_o();return mI(()=>{let m=null;return a?m=setTimeout(()=>{c(!0)},gI):(c(!1),m&&clearTimeout(m)),()=>{m&&clearTimeout(m)}},[a]),vo.createElement(jh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${qi()} widget-expanded-quotes-container`,id:wt.EXPANDED_BOX_ID},vo.createElement(dI,{title:uI.t("Routes"),suffix:vo.createElement(vo.Fragment,null,vo.createElement(xa,{container:d}),vo.createElement(Go,{container:d,onClickRefresh:i,hidden:["history","notifications","settings"]}))}),vo.createElement(Xh,null,vo.createElement(Fr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:_o(),onClickOnQuote:n,fullExpandedMode:u})))}r(Mc,"ExpandedQuotes");import{i18n as oy}from"@lingui/core";import{SwapInput as ny}from"@rango-dev/ui";import TI from"bignumber.js";import Or from"react";import{ReverseIcon as SI}from"@rango-dev/ui";import $c from"react";import{keyframes as hI,styled as Yh}from"@rango-dev/ui";var Dc=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)"}}),Zh=Yh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Jh=Yh("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} ${Dc}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 Fc(){let t=z().use.switchFromAndTo();return $c.createElement(Zh,null,$c.createElement(Jh,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Dc),t()}},$c.createElement(SI,{size:12})))}r(Fc,"SwitchFromAndToButton");import{styled as Rh}from"@rango-dev/ui";var ey=Rh("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),ty=Rh("div",{position:"relative"});function Oc(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=mi(k)?.amount??"0",v=k?new TI(k.amount).shiftedBy(-k.decimals):pe,N=!!s&&Iu(C,s.name),I=!Os(f,d,m),b=!Os(f,d,g),x=!m||!g||!g.gt(0)?null:Yt(m.toString(),g.toString());return Or.createElement(ey,null,Or.createElement(ty,null,Or.createElement(ny,{label:oy.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(Fc,null)),Or.createElement(ny,{selectionType:T==="swap"?"token":"chain",sharpBottomStyle:!i&&(!!f||e),label:oy.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(Yt(m,g),2,2),warningLevel:Zt(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(Oc,"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 ry(){let{fetch:t,loading:e,cancelFetch:o}=ha({request:async(n,i)=>await dt().getAllRoutes(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(ry,"useFetchAllQuotes");var bI=600;function Ia({refetchQuote:t}){let{fetch:e,cancelFetch:o}=ry(),{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||Vt(l,p)||!Yn(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=Qd({fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:Q,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});un("experimental",i)&&(U.experimental=!0),un("avoidNativeFee",i)&&(U.avoidNativeFee=!0),un("enableCentralizedSwappers",i)&&(U.enableCentralizedSwappers=!0),i?.maxLength&&(U.maxLength=i.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let qe=Wi(h,de.results),ot=Pd(m,qe,de.requestAmount);j(!1),y("quotes",de),C(ot),de.results?.length&&ot&&xn({type:"routeRequested",payload:{...Mn(ot),routeCount:de.results.length}}),ya({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let co=ot&&kn({currentQuote:ot,userSlippage:P,findToken:A});y("warning",co)}).catch(de=>{let qe=Sa(de);qe.type===0?xn({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&&xn({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"),Gt=kI(ai(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(!Yn(u)&&d?.eq(0)){ue(!1),o();return}g(),ue(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Gt),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(Ia,"useSwapInput");var PI=II("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),LI=300;function ly(){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]=sy(!1),{isLargeScreen:f,isExtraLargeScreen:T}=sa(),{fetch:C,loading:y}=Ia({refetchQuote:a}),{config:k,fetchStatus:w,connectedWallets:v,customSlippage:N,slippage:I,setSlippage:b,setCustomSlippage:x}=S(),{isActiveTab:E}=re(),[L,A]=sy(!1),O=N!==null?N:I,{swapMode:q}=rt(),j=dn(O),P=Od({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 NI(n).gt(0)&&!Xd(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&&xn({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(gi.includes(J)){b(J),x(null);return}x(J)}},"onChangeSlippage"),X=r(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");ay(()=>{u(),m("refetchQuote",!0)},[]),ay(()=>{g(Y)},[Y]);let G=r(()=>{P.action==="connect-wallet"?of({type:"clickConnectWallet"},()=>{B($.wallets)}):P.action==="confirm-warning"?A(!0):i&&(oe({type:"swapInitiated",payload:{...Mn(i),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Te.createElement(PI,null,Te.createElement(se,{height:"auto",footer:Te.createElement(xI,{id:`widget-swap-${P.action}-btn`,type:"primary",size:"large",disabled:P.disabled||!E,prefix:P.action==="confirm-warning"&&Te.createElement(AI,null),fullWidth:!0,onClick:G},P.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:k.title||(q==="swap"?iy.t("Swap"):iy.t("Refuel")),suffix:Te.createElement(Go,{hidden:Z?["refresh"]:void 0,onClickRefresh:ct,onClickHistory:()=>B($.swaps),onClickSettings:()=>{B($.settings)}})}},Te.createElement(ce,null,Te.createElement(Oc,{fetchingQuote:ue,fetchMetaStatus:w,isExpandable:Z,onClickToken:X}),Te.createElement(Uc,{size:"2"}),Z?null:Te.createElement(Yo,{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&&Te.createElement(Te.Fragment,null,Te.createElement(Uc,{size:8}),Te.createElement(Lc,{quoteError:s,quoteWarning:Ee,fromToken:e,toToken:o,quote:i,loading:ue})),He?Te.createElement(Te.Fragment,null,Te.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&&Te.createElement(Te.Fragment,null,Te.createElement(Uc,{size:"10"}),Te.createElement(Mh,{onChangeSettings:()=>B($.settings)})),Te.createElement(Ac,null))),Z?Te.createElement(Mc,{loading:ue,onClickOnQuote:V,fetch:C,onClickRefresh:ct,isVisible:h}):null)}r(ly,"Home");import{i18n as cy}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 Ut from"react";function Eo(){let{setLanguage:t,language:e,config:o}=S(),n=Uu,i=o?.language||mn;return{activeLanguage:e||i,languages:n,defaultLanguage:i,changeLanguage:a=>t(a||mn),resetLanguage:()=>t(null)}}r(Eo,"useLanguage");function py(){let{activeLanguage:t,changeLanguage:e,languages:o}=Eo(),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:Ut.createElement(OI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Ut.createElement($I,{value:s}),start:Ut.createElement(l,null)}});return Ut.createElement(se,{header:{title:cy.t("Language")}},Ut.createElement(ce,null,Ut.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."}),Ut.createElement(_I,{size:"8"}),Ut.createElement(FI,{value:t},Ut.createElement(MI,{type:Ut.createElement(DI,{title:cy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:i}))))}r(py,"LanguagePage");import{i18n as io}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 dy}from"@rango-dev/ui";import zr from"react";import{styled as zc}from"@rango-dev/ui";var Ur=zc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Qc=zc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Hc=zc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as UI,styled as zI}from"@rango-dev/ui";var uy=zI(UI,{height:61});var HI=30;function qc(){return zr.createElement(Ur,null,Array.from(Array(HI),(t,e)=>zr.createElement(uy,{hasDivider:!0,key:e,start:zr.createElement(dy,{variant:"circular",width:35,height:35}),title:zr.createElement(dy,{variant:"text",size:"large",width:90}),end:zr.createElement(QI,{checked:!1})})))}r(qc,"LoadingLiquiditySourceList");function Gc({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[i,a]=YI(""),s=S().toggleLiquiditySource,c=S().isInCampaignMode(),l=Si(o,n),p={Exchanges:io.t("Exchanges"),Bridges:io.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"},io.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:io.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?io.t("Deselect all"):io.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:io.t("Search {sourceType}",{sourceType:p[t]}),onChange:T}),e==="loading"&&tt.createElement(qc,null),!C.length&&i?tt.createElement(Hc,null,tt.createElement(jI,{title:io.t("No results found"),description:io.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(Gc,"LiquiditySourcePage");import{i18n as ZI}from"@lingui/core";import Aa from"react";import{useNavigate as JI}from"react-router-dom";function my(){let t=JI(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:i,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=Ia({refetchQuote:n}),p=r(m=>{i(m),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${$.settings}`,d=`../${$.wallets}`;return Aa.createElement(se,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:ZI.t("Routes"),suffix:Aa.createElement(Go,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Aa.createElement(ce,null,Aa.createElement(Fr,{fetch:c,loading:l,onClickOnQuote:p})))}r(my,"RoutesPage");import{i18n as Cy}from"@lingui/core";import{Divider as ky,getCategoriesCount as lA,SelectableCategoryList as cA}from"@rango-dev/ui";import ao,{useMemo as pA,useState as wy}from"react";import{useNavigate as uA}from"react-router-dom";import{i18n as Vc}from"@lingui/core";import{Divider as oA,Image as nA,ListItemButton as rA,NotFound as iA,Typography as Ty}from"@rango-dev/ui";import yt,{useEffect as aA,useState as sA}from"react";var fy=r((t,e,o)=>t.filter(n=>si(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as RI,styled as gy}from"@rango-dev/ui";var hy=gy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Na=gy(kl,{padding:0,margin:0,listStyle:"none",[`& ${RI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as eA,Skeleton as yy}from"@rango-dev/ui";import Wa from"react";var tA=20;function Sy(){return Wa.createElement(Na,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(tA),t=>Wa.createElement(eA,{key:t,hasDivider:!0,start:Wa.createElement(yy,{variant:"circular",width:35,height:35}),title:Wa.createElement(yy,{variant:"text",size:"large",width:90})})))}r(Sy,"LoadingBlockchainList");function Kc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:i,showTitle:a=!0}=t,[s,c]=sA(e),{fetchStatus:l}=S();aA(()=>{c([...fy(e,o,i)])},[e,o,i]);let p=r(()=>!s.length&&o?yt.createElement(iA,{title:Vc.t("No results found"),description:Vc.t("Try using different keywords")}):yt.createElement(Na,{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(Ty,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(Ty,{variant:"label",size:"large"},Vc.t("Select Chain")),yt.createElement(oA,{size:4})),yt.createElement(hy,null,l==="loading"&&yt.createElement(Sy,null),l==="success"&&p()))}r(Kc,"BlockchainList");function Pa(t){let{type:e}=t,o=Ve(),[n,i]=wy(""),[a,s]=wy("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 ao.createElement(se,{header:{title:Cy.t("Select Chain")}},ao.createElement(ce,{view:!0},y&&ao.createElement(ao.Fragment,null,ao.createElement(cA,{setCategory:s,category:a,blockchains:T,isLoading:u==="loading"}),ao.createElement(ky,{size:24})),ao.createElement(Pt,{value:n,autoFocus:!0,placeholder:Cy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>i(""),onChange:w=>i(w.target.value)}),ao.createElement(ky,{size:16}),ao.createElement(Kc,{list:T,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:k})))}r(Pa,"SelectBlockchainPage");import{i18n as _a}from"@lingui/core";import{Divider as Wy,Spinner as xA}from"@rango-dev/ui";import bo,{useEffect as IA,useState as AA}from"react";import{useNavigate as NA}from"react-router-dom";import{i18n as Yc}from"@lingui/core";import{BlockchainsChip as La,Divider as xy,Image as Iy,Skeleton as yA,Tooltip as SA,Typography as Zc}from"@rango-dev/ui";import xe from"react";import{useEffect as fA}from"react";var vy=["ETH"];function jc(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(jc,"prepare");function dA(t,e){let o=vy,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 Ey(t,e){return!!e.list.find(o=>o.name===t)}r(Ey,"isInVisibleList");function Xc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();fA(()=>{if(e?.selected){let a=jc(t,o,e);Ey(e.selected,a)||n(e?.selected)}},[e?.selected]);let i=jc(t,o,e);return{list:i.list,more:i.more,history:[]}}r(Xc,"usePrepareBlockchainList");import{styled as gA}from"@rango-dev/ui";var by=gA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var TA=6,CA=12;function Jc(t){let{blockchains:e,type:o,blockchain:n,onChange:i,onMoreClick:a}=t,{showCompactTokenSelector:s}=re(),c=Xc(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(xy,{size:12}),xe.createElement(Zc,{variant:"label",size:"large"},Yc.t("Select Chain"))),xe.createElement(xy,{size:12}),xe.createElement(by,{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(La,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(Zc,{variant:"body",size:"xsmall",color:"secondary500"},Yc.t("All"))),c.list.map(f=>xe.createElement(SA,{key:f.name,content:f.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(La,{className:"widget-blockchains-section-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>i(f)},xe.createElement(Iy,{src:f.logo,size:30})))),h?xe.createElement(La,{className:"widget-blockchains-section-only-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>i(m)},xe.createElement(Iy,{src:m.logo,size:30})):null,g?xe.createElement(La,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(Zc,{variant:"body",size:"xsmall",color:"secondary500"},Yc._("More +{count}",{count:c.more.length}))):null)))}r(Jc,"BlockchainsSection");import{useCallback as wA,useRef as vA,useState as Rc}from"react";function ep(){let t=S().blockchains(),e=vA(null),{customTokens:o}=S(),[n,i]=Rc(!1),[a,s]=Rc([]),[c,l]=Rc(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=>jt(y))),T=new Set(t.map(y=>y.name)),C=g.tokens.filter(y=>T.has(y.blockchain)&&!f.has(jt(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(ai((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(ep,"useSearchCustomTokens");function Ay(t){return t.trim()?"search":"default "}r(Ay,"getTokenSelectionMethod");function Ba(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}r(Ba,"shouldSearchForCustomTokens");function Ny(t,e,o,n,i){let a=[...t];return Ba(t,o,i)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}r(Ny,"prepareTokensList");function Ma(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}=ep(),[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=Ny(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:Ay(f),activeChainFilter:y||"all"}})},"emitTokenSelected"),L={source:_a.t("Source"),destination:_a.t("Destination")};return IA(()=>(Ba(w,f,C?.name)&&d(f,C?.name??void 0),()=>{g()}),[w.length,f,C?.name]),bo.createElement(se,{header:{title:_a.t("Swap {type}",{type:L[e]})}},bo.createElement(ce,null,bo.createElement(Jc,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?i:a,onMoreClick:()=>o($.blockchains),onChange:A=>{x(A),N(A)}}),bo.createElement(Wy,{size:24}),bo.createElement(Pt,{value:f,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:_a.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>T(""),onChange:A=>T(A.target.value),suffix:Ba(w,f,C?.name)&&m?bo.createElement(xA,{size:12,color:"secondary"}):void 0}),bo.createElement(Wy,{size:16}),bo.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(Ma,"SelectSwapItemsPage");import{i18n as rp}from"@lingui/core";import{Alert as oN,Button as nN,styled as rN}from"@rango-dev/ui";import en from"react";import{useInRouterContext as iN,useSearchParams as aN}from"react-router-dom";import{i18n as Dy}from"@lingui/core";import{Alert as BA,Divider as op,InfoIcon as _A,SlippageIcon as MA,TextField as DA,Tooltip as $A,Typography as $y}from"@rango-dev/ui";import ze from"react";import{Chip as WA,styled as Qr,TextField as PA}from"@rango-dev/ui";var Py=Qr("div",{paddingTop:"$5",padding:"$10 $5"}),Ly=Qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${PA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),By=Qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Da=Qr("div",{maxWidth:"280px",padding:"$10"}),_y=Qr(WA,{width:"61px",flexShrink:0});import{i18n as tp}from"@lingui/core";import{Typography as LA}from"@rango-dev/ui";import Hr from"react";function My(){return Hr.createElement(Da,null,Hr.createElement(LA,{variant:"label",size:"medium",color:"neutral700"},tp.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,tp.t("Warning")),":\xA0",tp.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(My,"SlippageTooltipContent");function np(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),i=o!==null?dn(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>Rn&&(h=Rn),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(Py,null,ze.createElement(By,null,ze.createElement(MA,{size:16,color:"gray"}),ze.createElement(op,{direction:"horizontal",size:4}),ze.createElement($y,{variant:"title",size:"xmedium"},Dy.t("Slippage tolerance per swap")),ze.createElement(op,{direction:"horizontal",size:4}),ze.createElement($A,{container:W(),side:"top",sideOffset:4,content:ze.createElement(My,null)},ze.createElement(_A,{color:"gray"}))),ze.createElement(Ly,null,gi.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(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($y,{variant:"body",size:"small"},"%"),placeholder:Dy.t("Custom")})),i&&ze.createElement(ze.Fragment,null,ze.createElement(op,{size:10}),ze.createElement(BA,{id:"widget-slippage-alert",variant:"alarm",type:i.type,title:i.message})))}r(np,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as Fy,BridgesIcon as FA,ChevronRightIcon as $a,DarkModeIcon as Oy,Divider as qr,ExchangeIcon as OA,InfinityIcon as UA,InfoIcon as zA,LanguageIcon as QA,LightModeIcon as Uy,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(Uy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:D.createElement(Oy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:D.createElement(Fy,{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(Fy,{...e});case"dark":return D.createElement(Oy,{...e});default:return D.createElement(Uy,{...e})}},"getThemeIcon");function zy(){let t=JA(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:i,languages:a}=Eo(),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=Si(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($a,{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($a,{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($a,{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($a,{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(Da,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(zy,"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 en.createElement(se,{header:{title:rp.t("Settings")}},en.createElement(ce,null,o&&en.createElement(oN,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:rp.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:en.createElement(sN,null,en.createElement(nN,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},rp.t("Reset")))}),en.createElement(np,null),en.createElement(zy,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 kp from"react";import{useParams as k0}from"react-router-dom";import{i18n as Qt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as n0,getCurrentStep as r0,getRelatedWalletOrNull as i0}from"@rango-dev/queue-manager-rango-preset";import{Button as DS,Divider as a0,QuoteCost as s0,StepDetails as l0,Typography as gp}from"@rango-dev/ui";import{useWallets as c0}from"@rango-dev/wallets-react";import $S from"bignumber.js";import{PendingSwapNetworkStatus as Un}from"rango-types";import ke,{useEffect as hp,useRef as yp,useState as Va}from"react";import{useNavigate as p0}from"react-router-dom";import{i18n as xo}from"@lingui/core";var lN=[xo.t("Sunday"),xo.t("Monday"),xo.t("Tuesday"),xo.t("Wednesday"),xo.t("Thursday"),xo.t("Friday"),xo.t("Saturday")];function Hy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),i=e.getFullYear();return`${e.getDay()===new Date().getDay()?xo.t("Today"):`${lN[e.getDay()]} ${o} ${n} ${i}`}, ${new Date(t).toLocaleTimeString()}`}r(Hy,"timeSince");function qy(t){return t.finishTime?Hy(parseInt(t.finishTime)):Hy(parseInt(t.creationTime))}r(qy,"getSwapDate");import Gr from"react";import{i18n as Fa}from"@lingui/core";import{Button as Gy,Divider as ip,MessageBox as cN}from"@rango-dev/ui";import Io from"react";var Vy=r(({onCancel:t,onClose:e})=>Io.createElement(Io.Fragment,null,Io.createElement(ip,{size:20}),Io.createElement(cN,{type:"error",title:Fa.t("Cancel Swap"),description:Fa.t("Are you sure you want to cancel this swap?")}),Io.createElement(ip,{size:32}),Io.createElement(Gy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Fa.t("Yes, Cancel it")),Io.createElement(ip,{size:12}),Io.createElement(Gy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Fa.t("No, Continue"))),"CancelContent");import{i18n as Oa}from"@lingui/core";import{Button as Ky,Divider as ap,MessageBox as pN,Typography as uN}from"@rango-dev/ui";import so from"react";var jy=r(({onDelete:t,onClose:e})=>so.createElement(so.Fragment,null,so.createElement(ap,{size:20}),so.createElement(pN,{type:"error",title:Oa.t("Delete Transaction"),description:Oa.t("Are you sure you want to delete this swap?")}),so.createElement(ap,{size:32}),so.createElement(Ky,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Oa.t("Yes, Delete it")),so.createElement(ap,{size:12}),so.createElement(Ky,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},so.createElement(uN,{variant:"title",size:"medium",color:"primary"},Oa.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 tn from"react";var Xy=r(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return tn.createElement(tn.Fragment,null,tn.createElement(gN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&tn.createElement(tn.Fragment,null,tn.createElement(fN,{size:"30"}),tn.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 oS from"react";import{i18n as Fn}from"@lingui/core";import{Alert as Jy,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 Se,{useState as bN}from"react";import{css as hN,darkTheme as yN,styled as sp}from"@rango-dev/ui";var Yy=hN({wordWrap:"break-word",display:"block"}),Zy=sp("img",{width:"100%"}),Ua=sp("div",{position:"relative"}),za=sp("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${yN} &`]:{$$color:"$warning600"}});var Ry=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?Fn.t("Done"):i?Fn.t("Try again"):Fn.t("Connect"),"getButtonTitle"),C=r(()=>g?Se.createElement(wN,{color:"info"}):i||f?null:Se.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?po(N):null},"getAddress");return Se.createElement(Se.Fragment,null,Se.createElement(kN,{type:"warning",title:Fn.t("Connect {wallet}",{wallet:u.title}),description:Fn.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Se.createElement(Ua,null,Se.createElement(CN,{src:u.image,size:45}),Se.createElement(za,null,Se.createElement(vN,{color:"warning",size:10})))}),f&&!d&&Se.createElement(Se.Fragment,null,Se.createElement(Qa,{size:10}),Se.createElement(Jy,{type:"success",variant:"alarm",title:Fn.t("Wallet connected successfully.")})),i&&!d&&Se.createElement(Se.Fragment,null,Se.createElement(Qa,{size:10}),Se.createElement(Jy,{type:"error",title:i?.message,variant:"alarm"})),d&&Se.createElement(Se.Fragment,null,Se.createElement(Qa,{size:30}),Se.createElement(Fo,{namespace:d,suffix:C(),error:i?.message,connected:f,address:w()})),Se.createElement(Qa,{size:"40"}),Se.createElement(SN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},T()))},"ConnectWalletContent");import{i18n as eS}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 lo from"react";var tS=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 lo.createElement(lo.Fragment,null,lo.createElement(WN,{type:"warning",title:eS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:lo.createElement(Ua,null,lo.createElement(NN,{src:n.img,size:45}),lo.createElement(za,null,lo.createElement(PN,{color:"warning",size:10})))}),lo.createElement(AN,{size:"40"}),lo.createElement(xN,{type:"primary",id:"widget-install-wallet-btn",onClick:i},eS.t("Install")))},"InstallWalletContent");var nS=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?Zn(i(c),n(c)):null,p=a?BN(e,a):null;return c?l===DN.NOT_INSTALLED?oS.createElement(tS,{walletType:c}):oS.createElement(Ry,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function lp(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(nS,{swap:c,message:l,onClose:i}),o==="switchNetwork"&&n&&Gr.createElement(Xy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Gr.createElement(jy,{onClose:i,onDelete:()=>{i(),a()}}),o==="cancel"&&Gr.createElement(Vy,{onClose:i,onCancel:()=>{i(),s()}}))}r(lp,"SwapDetailsModal");import{i18n as Vr}from"@lingui/core";import{Button as cp,Divider as Kr,MessageBox as aS,TokenAmount as FN,Typography as sS}from"@rango-dev/ui";import Ce from"react";import{Link as ON,useNavigate as UN}from"react-router-dom";var rS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",iS="/profile";function pp(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 Ce.createElement(ie,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(wt.SWAP_BOX_ID)||document.body},n==="success"?Ce.createElement(aS,{type:"success",title:Vr.t("Swap Successful")},Ce.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}),Ce.createElement(Kr,{size:12}),Ce.createElement(sS,{className:Yy(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):Ce.createElement(aS,{type:"error",title:Vr.t("Transaction Failed"),description:d}),Ce.createElement(Kr,{size:30}),n==="success"&&Ce.createElement(Ce.Fragment,null,g&&Ce.createElement(Ce.Fragment,null,Ce.createElement(ON,{to:iS},Ce.createElement(Zy,{src:rS,alt:"Profile Banner"})),Ce.createElement(Kr,{size:30})),Ce.createElement(cp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Vr.t("Done"))),Ce.createElement(Kr,{size:12}),m&&Ce.createElement(Ce.Fragment,null,Ce.createElement(cp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(m,"_blank")},Vr.t("Diagnosis")),Ce.createElement(Kr,{size:12})),Ce.createElement(cp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},Ce.createElement(sS,{variant:"title",size:"medium",color:"primary"},Vr.t("See Details"))))}r(pp,"SwapDetailsCompleteModal");import{i18n as Ga}from"@lingui/core";import{CopyIcon as JN,DoneIcon as RN,IconButton as e0,RangoExplorerIcon as t0,Tooltip as WS,Typography as PS,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 xS,IconButton as jN,LinkIcon as XN}from"@rango-dev/ui";import Ao,{Fragment as YN}from"react";import{Alert as QN,ChevronDownIcon as HN,IconButton as qN}from"@rango-dev/ui";import On,{useState as GN}from"react";import{css as jr,darkTheme as lS,styled as zt,Typography as zN}from"@rango-dev/ui";var cS=zt(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${lS} &`]:{color:"$secondary500"}}}}}),pS=zt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),uS=zt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),dS=zt("div",{padding:"$0 $20 $20 $20"}),WY=zt("div",{display:"flex",flexDirection:"column",gap:"$10"}),mS=zt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),PY=zt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),on=jr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${lS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),fS=jr({padding:"$5 0"}),Ha=jr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),gS=jr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),hS=jr({width:"100%",padding:"0 $20 $10"}),yS=zt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),SS=zt("div",{display:"flex",flexDirection:"column",gap:"$5"}),qa=zt(zN,{wordBreak:"break-word"});import{styled as up}from"@rango-dev/ui";var TS=up("div",{display:"flex",flexDirection:"column",gap:"$10"}),CS=up("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),kS=up("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function wS(t){let{message:e}=t,[o,n]=GN(!1);return On.createElement(QN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&On.createElement(qN,{id:"widget-swap-details-failed-btn",onClick:()=>n(i=>!i),variant:"ghost",size:"xsmall"},On.createElement(CS,{rotated:o},On.createElement(HN,{size:12,color:"gray"}))),footer:On.createElement(kS,{open:o},On.createElement(qa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}r(wS,"FailedAlert");import{i18n as vS}from"@lingui/core";import{Alert as dp,Button as ES}from"@rango-dev/ui";import{PendingSwapNetworkStatus as VN}from"rango-types";import Xr from"react";function bS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:i,showNetworkModal:a}=t;return e?Xr.createElement(dp,{type:"warning",id:"widget-swap-details-change-network-alert",title:i.shortMessage,action:Xr.createElement(ES,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},vS.t("Change"))}):a===VN.WaitingForConnectingWallet?Xr.createElement(dp,{type:"warning",title:i.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Xr.createElement(ES,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},vS.t("Connect"))}):Xr.createElement(dp,{id:"widget-swap-details-short-alert",type:"warning",title:i.shortMessage})}r(bS,"WarningAlert");function mp(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 Ao.createElement(TS,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 Ao.createElement(YN,{key:f},Ao.createElement(xS,{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&&Ao.createElement(jN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},Ao.createElement(XN,{size:12}))}))}),d&&Ao.createElement(xS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&Ao.createElement(bS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:i,message:a}),s.status==="failed"&&Ao.createElement(wS,{message:a}))}r(mp,"SwapDetailsAlerts");var IS=2e3;var AS=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:Vn(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:Vn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:ZN.createElement(mp,{step:a,hasAlreadyProceededToSign:i,...n})}})},"getSteps");function NS(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(NS,"getStepState");function LS(t){let{requestId:e}=t,[o,n]=o0(IS);return Bt.createElement(uS,{className:on()},Bt.createElement(PS,{variant:"label",size:"large",color:"neutral700"},Ga.t("Request ID")),Bt.createElement("div",{className:Ha()},Bt.createElement(PS,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(WS,{container:W(),content:o?Ga.t("Copied To Clipboard"):Ga.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(yS,{target:"_blank",href:`${Jp}/swap/${e}`},Bt.createElement(WS,{container:W(),content:Ga.t("View on Rango Explorer"),side:"bottom"},Bt.createElement(t0,{size:20})))))}r(LS,"RequestIdRow");import{i18n as BS}from"@lingui/core";import{Typography as _S}from"@rango-dev/ui";import fp from"react";function MS(t){let{date:e,isFinished:o}=t;return fp.createElement("div",{className:on()},fp.createElement(_S,{variant:"label",size:"large",color:"neutral700"},o?BS.t("Finished at"):BS.t("Created at")),fp.createElement(_S,{variant:"label",size:"small",color:"neutral700"},e))}r(MS,"SwapDateRow");var u0=3e3;function Sp(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=yp(null),[g,f]=Va(!1),[T,C]=Va(null),[y,k]=Va(null),[w,v]=Va(null),N=yp(T),I=yp(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:Qt.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=r(()=>{k({type:"success",title:Qt.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),P=r(Ne=>{k({type:"error",title:Qt.t("Network Switch Failed"),description:Ne?.message||Q.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Vd(e),Y=L?n0(e,L):null,ue=L?i0(e,L):null,Ee=qy(e),Gt=Kd(e),be=r(Ne=>!!c(Ne)?.mobileWallet,"checkIsMobileWallet"),He=!!A&&[Un.WaitingForNetworkChange,Un.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=Gd(e,L,c),X=AS({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,co=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),Qn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),No=de?new $S(de).multipliedBy(U.toUsdPrice||0).toString():"",ei=new $S(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),rn=Yt(Qn,co),ns=Q.detailedMessage.content||Q.shortMessage,yT=e.status==="success"?Qt.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:po(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):ke.createElement(SS,null,ke.createElement(gp,{variant:"body",size:"medium",color:"neutral700",align:"center"},ns?"":Qt.t("Transaction was not sent."),Z?`${Qt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Z.outputAmount,symbol:Z.symbol,blockchain:Z.blockchain}})}`:""),ns&&ke.createElement(qa,{align:"center",variant:"body",size:"medium",color:"neutral700"},ke.createElement("b",null,"Reason:")," ",ns));return hp(()=>{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]),hp(()=>{if(ct){if(O("switchNetwork"),A===Un.WaitingForNetworkChange){j();return}if(A===Un.NetworkChangeFailed){P();return}return}if(A===Un.WaitingForConnectingWallet){O("connectWallet");return}if(A===Un.NetworkChanged){O("switchNetwork"),ee();return}T&&["connectWallet","switchNetwork"].includes(T)&&q()},[A]),hp(()=>{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]),ke.createElement(se,{header:{title:Qt.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&ke.createElement(ho,null,ke.createElement(DS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},ke.createElement(gp,{size:"medium",variant:"label",color:"error"},Qt.t("Delete"))))},footer:Gt&&!w&&ke.createElement(DS,{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=Ni(e,l,u);d(Ne),setTimeout(()=>{m("../../")},0)}},Qt.t("Try again"))},ke.createElement(cS,{compact:!0,ref:h},ke.createElement(LS,{requestId:o}),ke.createElement(MS,{date:Ee,isFinished:!!e.finishTime}),ke.createElement("div",{className:gS()},ke.createElement(s0,{fee:M(String(qe),2,2),time:Xn(ci(e.steps)),steps:G}),ke.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:co,realUsdValue:No,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(rn,2,2),warningLevel:Zt(rn??0)})),ke.createElement("div",{className:hS()},ke.createElement(gp,{variant:"title",size:"small"},Qt.t("Swaps steps"))),ke.createElement(a0,{size:8}),ke.createElement(dS,null,X.map((Ne,_t)=>{let Pp=_t,Hn=e.steps[_t]&&NS(e.steps[_t]),ST=Hn==="error"||Hn==="in-progress"||Hn==="warning"||Hn==="completed"&&_t===X.length-1;return ke.createElement(l0,{className:"widget-swap-details-step-item-container",key:Pp,step:Ne,type:"swap-progress",ref:h,state:Hn,hasSeparator:_t!==0,tabIndex:Pp,isFocused:ST,tooltipContainer:W()})}))),ke.createElement(lp,{isOpen:g,state:T,switchNetworkModalState:y,onClose:q,onCancel:i,onDelete:n,message:Q.detailedMessage.content,swap:e,handleSwitchNetwork:V}),ke.createElement(pp,{open:!!w,diagnosisUrl:ot,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(de,6,6),usdValue:co,realUsdValue:No,realValue:de||"",percentageChange:M(rn,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:yT}))}r(Sp,"SwapDetails");import{i18n as ja}from"@lingui/core";import{Divider as US,NotFound as h0,Skeleton as Zr,Typography as Xa}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 Ht,styled as Tp}from"@rango-dev/ui";var FS=Tp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Yr=Tp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Ka=Tp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),s9=Ht({display:"flex",justifyContent:"space-between",alignItems:"center"}),l9=Ht({paddingTop:"$15",display:"flex"}),c9=Ht({padding:"$15 $0"}),p9=Ht({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),u9=Ht({paddingBottom:"$10"}),d9=Ht({display:"flex",justifyContent:"start",alignItems:"center"}),m9=Ht({paddingTop:"$5",display:"flex",alignItems:"center"}),f9=Ht({display:"flex",alignItems:"center"}),g9=Ht({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),OS=Ht({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Cp(){return Ie.createElement(FS,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(Ot,{separator:!1}),Ie.createElement("div",{className:OS()},Ie.createElement(m0,{direction:"horizontal",size:20}),Ie.createElement(f0,{height:22,variant:"rectangular"}))),Ie.createElement(Ka,null),Ie.createElement(Yr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Ka,null),Ie.createElement(Yr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Ka,null),Ie.createElement(Yr,null,Ie.createElement(Ot,{separator:!1}))))}r(Cp,"LoadingSwapDetails");function zS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:ja.t("Swap Details"),suffix:Ae.createElement(ho,null)}},o&&Ae.createElement(pS,null,Ae.createElement("div",{className:on()},Ae.createElement(Xa,{variant:"label",size:"large",color:"neutral700"},`${ja.t("Request ID")}`),Ae.createElement("div",{className:Ha()},Ae.createElement(Xa,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"})),Ae.createElement(US,{direction:"horizontal",size:4}),Ae.createElement(Zr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(US,{direction:"horizontal",size:4}),Ae.createElement(Zr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:on()},Ae.createElement(Xa,{className:fS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"})),Ae.createElement(Xa,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(Cp,null)),!o&&Ae.createElement(mS,null,Ae.createElement(h0,{title:ja.t("Not found"),description:ja.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}r(zS,"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 kp.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?kp.createElement(zS,{requestId:i,showSkeleton:c}):kp.createElement(Sp,{swap:d,requestId:i,onCancel:p,onDelete:u})}r(QS,"SwapDetailsPage");import{i18n as HS}from"@lingui/core";import{Divider as w0,getCategoriesCount as v0,SelectableCategoryList as E0,styled as GS,Typography as b0,Wallet as x0}from"@rango-dev/ui";import qt,{useState as qS}from"react";var I0=GS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),A0=GS(ce,{textAlign:"center"});function VS(){let{fetchStatus:t}=S(),[e,o]=qS("ALL"),n=S().blockchains(),{config:i}=S(),[a,s]=qS(),c=re.use.isActiveTab(),{list:l}=xt(),p=Nu(l,n),d=v0(p)!==1,m=Wu(l,e),h=r(g=>{su(l,i.multiWallets)||s(g)},"handleWalletItemClick");return qt.createElement(se,{header:{title:HS.t("Connect Wallets")}},qt.createElement(A0,null,d&&qt.createElement(qt.Fragment,null,qt.createElement(E0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),qt.createElement(w0,{size:24})),qt.createElement(b0,{variant:"title",size:"xmedium",align:"center"},HS.t("Choose a wallet to connect.")),qt.createElement(I0,null,m.map((g,f)=>{let T=`wallet-${f}-${g.type}`;return qt.createElement(x0,{key:T,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),qt.createElement(pr,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}r(VS,"WalletsPage");function KS(){return rm(),Ks(),N0([{path:$.home,element:Qe.createElement(ly,null)},{path:$.routes,element:Qe.createElement(my,null)},{path:$.fromSwap,children:[{index:!0,element:Qe.createElement(Ma,{type:"source"})},{path:$.blockchains,element:Qe.createElement(Pa,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:Qe.createElement(Ma,{type:"destination"})},{path:$.blockchains,element:Qe.createElement(Pa,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:Qe.createElement(Qy,null)},{path:$.languages,element:Qe.createElement(py,null)},{path:$.exchanges,element:Qe.createElement(Gc,{sourceType:"Exchanges"})},{path:$.bridges,element:Qe.createElement(Gc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:Qe.createElement(ph,null)},{path:$.addCustomTokens,children:[{index:!0,element:Qe.createElement(tf,null)},{path:$.blockchains,element:Qe.createElement(Pa,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:Qe.createElement(Wh,null)},{path:$.swapDetails,element:Qe.createElement(QS,null)}]},{path:$.wallets,element:Qe.createElement(VS,null)},{path:$.confirmSwap,element:Qe.createElement(jg,null)}])}r(KS,"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 bp,useState as rT}from"react";import{WalletTypes as Rr}from"@rango-dev/provider-all";import{Provider as B0}from"@rango-dev/wallets-react";import Ya,{createContext as _0,useEffect as ZS,useMemo as M0,useRef as JS}from"react";import{useEffect as W0}from"react";function jS(t){return t.map(e=>typeof e=="string"?e:e.id).join("-")}r(jS,"hashProviders");function wp(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:i}=S(),a=n();return W0(()=>{o(),i()},[jS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}r(wp,"useWalletProviders");import{Events as Jr}from"@rango-dev/wallets-react";import{isEvmBlockchain as P0}from"rango-sdk";function XS(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)},"onAccountsEvent");return{handler:r((u,d,m,h,g)=>{if(d===Jr.ACCOUNTS){let f=di(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(XS,"useUpdates");import{Events as L0}from"@rango-dev/wallets-react";function YS(t,e){let[o,n,i,a,s]=e;n!==L0.PROVIDER_DISCONNECTED&&t(o,n,i,a,s)}r(YS,"propagateEvents");var Za=_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}=wp(s.wallets,c),p=JS(),u=JS(),{handler:d}=XS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});ZS(()=>{n().catch(console.log)},[]),ZS(()=>{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 Ya.createElement(Za.Provider,{value:h},Ya.createElement(B0,{allBlockChains:a,providers:l,emitter:we,onUpdateState:(g,f,T,C,y)=>{let k=[g,f,T,C,y];d(...k),t.onUpdateState&&YS(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 Ja(t){let{config:e,...o}=t;return Ya.createElement(ju,{config:e},Ya.createElement(D0,{...o,config:e}))}r(Ja,"WidgetWallets");import{globalCss as $0}from"@rango-dev/ui";var RS=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 eT(){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(eT,"useForceAutoConnect");import{isApprovalTX as z0,RouteEventType as tT,StepEventType as oT,StepExecutionEventStatus as Q0,WidgetEvents as Ra}from"@rango-dev/queue-manager-rango-preset";import{useEffect as nT}from"react";function vp(){let t=Pe.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();nT(()=>{let i=r(a=>{let{event:s,step:c,route:l}=a;if(s.type===oT.TX_EXECUTION&&s.status===Q0.TX_SENT&&!z0(c)||s.type===oT.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 we.on(Ra.StepEvent,i),()=>we.off(Ra.StepEvent,i)},[we,e]),nT(()=>{let i=r(a=>{let{event:s,route:c}=a;(s.type===tT.FAILED||s.type===tT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return we.on(Ra.RouteEvent,i),()=>we.off(Ra.RouteEvent,i)},[we])}r(vp,"useSubscribeToWidgetEvents");import{useManager as H0}from"@rango-dev/queue-manager-react";import{useEffect as q0}from"react";function Ep(){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(Ep,"useSyncNotifications");function xp(){eT(),RS(),vp(),Ep();let t=S().blockchains(),{canSwitchNetworkTo:e}=iT(),[o,n]=rT(null),[i,a]=rT(),s=K0(Za),c=t.filter(V0);bp(()=>()=>om(),[]),bp(()=>()=>nm(),[]),G0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:i,evmChains:c,canSwitchNetworkTo:e}),bp(()=>($o.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)}),$o.destroy),[])}r(xp,"useBootstrap");import{styled as j0}from"@rango-dev/ui";var aT=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 nn(){xp();let{config:t}=S(),{activeTheme:e}=go(t?.theme||{}),{activeLanguage:o}=Eo();return Ip.createElement(X0,{language:o},Ip.createElement(aT,{id:"swap-container",className:e()},Ip.createElement(KS,null)))}r(nn,"Main");import{setSolanaSignerConfig as hW}from"@rango-dev/signer-solana";import Np,{useEffect as Wp,useMemo as yW}from"react";function sT(){let{setWatermark:t,setShowProfileBanner:e}=re();return{fetchApiConfig:r(async()=>{let n=await fetch(`${Kt("BASE_URL")}/meta/dapp/config?apiKey=${Kt("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(sT,"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"),lT=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||Kt("API_KEY"),BASE_URL:Kt("BASE_URL"),emitter:{emit:we.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 di(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 cT=aW;import{useManager as uW}from"@rango-dev/queue-manager-react";import dW,{createContext as mW,useContext as fW}from"react";function pT(){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(pT,"useUpdateQuoteInputs");import{cancelSwap as sW,getCurrentNamespaceOfOrNull as lW,getCurrentStep as cW,getRelatedWalletOrNull as pW}from"@rango-dev/queue-manager-rango-preset";var es=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=Ni(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 uT=mW(void 0);function Ap(t){let{manager:e}=uW(),o=re.use.isActiveTab(),n=z().use.retry(),{findToken:i,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=S(),l=new es(e,{retrySwap:n,findToken:i}),{fetchingWallets:p}=S(),u=vu(a()),d=S().blockchains(),m=S().tokens(),h=S().swappers(),g=S().fetchStatus,f=Eo().resetLanguage,T=Pe().getNotifications(),C=Pe().clearNotifications,y=pT(),{fromBlockchain:k,toBlockchain:w,fromToken:v,toToken:N,inputAmount:I}=z()(),b={isActiveTab:o,setCurrentTabAsActive:$o.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(uT.Provider,{value:b},t.children)}r(Ap,"WidgetInfo");function dT(){let t=fW(uT);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}r(dT,"useWidget");import{Provider as gW}from"@hub3js/core";function mT(t){return typeof t=="string"||t instanceof gW}r(mT,"isHubWallet");function zn(t){let{onUpdateState:e,config:o}=t,n=o?.wallets;if(n&&!n.every(mT))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}=sT(),{handleLoadCustomFont:s}=lT();return Wp(()=>{a().catch(console.log)},[]),Wp(()=>{i&&s(i)},[i]),yW(()=>{Pu({API_KEY:o?.apiKey||jp(),BASE_URL:o?.apiUrl||Zp})},[o.apiKey,o.apiUrl]),Wp(()=>{t.config?.signers?.customSolanaRPC&&hW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Np.createElement(Ja,{config:{...o,wallets:n},onUpdateState:e},Np.createElement(cT,{apiKey:o.apiKey},Np.createElement(Ap,null,t.children)))}r(zn,"WidgetProvider");function fT(t){let e=t.config?.externalWallets;return ts.createElement(Ii,null,e?ts.createElement(nn,null):ts.createElement(zn,{config:t.config??jn},ts.createElement(nn,null)))}r(fT,"Refuel");import os from"react";function gT(t){let e=t.config?.externalWallets;return os.createElement(Ii,null,e?os.createElement(nn,null):os.createElement(zn,{config:t.config??jn},os.createElement(nn,null)))}r(gT,"Widget");function hT(){let{on:t,off:e}=we;return{on:t,off:e}}r(hT,"useWidgetEvents");var Ste={DerivationPath:sr,Namespaces:rr,Detached:ar,isOnDerivationPath:cr,isOnNamespace:lr,isOnDetached:Wo};export{Vee as EventSeverity,Gn as MainEvents,Hee as Networks,tte as PendingSwapNetworkStatus,qn as QuoteEventTypes,fT as Refuel,Kee as RouteEventType,as as SUPPORTED_FONTS,Ste as StatefulConnect,jee as StepEventType,Xee as StepExecutionBlockedEventStatus,Yee as StepExecutionEventStatus,Cd as SwapModeContext,wt as UI_ID,Ze as UiEventTypes,Ree as WalletEventTypes,Jee as WalletEvents,gT as Widget,Gn as WidgetEvents,zn as WidgetProvider,Ja as WidgetWallets,sl as customizedThemeTokens,qee as readAccountAddress,an as useStatefulConnect,xt as useWalletList,iT as useWallets,dT as useWidget,hT as useWidgetEvents,rw as widgetEventEmitter};
1
+ var CC=Object.defineProperty;var r=(t,e)=>CC(t,"name",{value:e,configurable:!0});import{Networks as qee,readAccountAddress as Gee}from"@rango-dev/internal-blockchains";import{EventSeverity as Kee,RouteEventType as jee,StepEventType as Xee,StepExecutionBlockedEventStatus as Yee,StepExecutionEventStatus as Zee}from"@rango-dev/queue-manager-rango-preset";import{useWallets as iC,Events as Ree,WalletEventTypes as ete}from"@rango-dev/wallets-react";import{PendingSwapNetworkStatus as ote}from"rango-types";import{Divider as Kk}from"@rango-dev/ui";import mo,{useEffect as jk,useRef as Xk,useState as Cd}from"react";import{WalletState as EC}from"@rango-dev/ui";import{useWallets as bC}from"@rango-dev/wallets-react";import{useReducer as xC}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||{});import{WidgetEvents as Lp}from"@rango-dev/queue-manager-rango-preset";import{WalletEventChannel as TC}from"@rango-dev/wallets-react";var qn=(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))(qn||{}),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||{}),Gn=(a=>(a[a.RouteEvent=Lp.RouteEvent]="RouteEvent",a[a.StepEvent=Lp.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent=`${TC}`,a.UiEvent="uiEvent",a))(Gn||{});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 Bp(t){return t.type===0?t.diagnosisMessage??te().noResultError.title:t.type===1?t.diagnosisMessage??te().genericServerError:""}r(Bp,"getQuoteErrorMessage");var kC=["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 wC(t){return typeof t=="string"?t:t instanceof Error?`${t.name} ${t.message}`:""}r(wC,"toMessage");function vC(t){let e=wC(t).toLowerCase();return!!e&&kC.some(o=>e.includes(o))}r(vC,"isModuleLoadError");function Ct(t){return vC(t)?new Error(te().moduleLoadError,{cause:t}):null}r(Ct,"tryRefineError");function _p(t,e){return Ct(t)?.message??e}r(_p,"tryRefineErrorMessage");function Mp(t){return!!t.derivationPath}r(Mp,"isStateOnDerivationPathStep");function Dp(t){return!!t.namespace}r(Dp,"isStateOnNamespace");var ti={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function $p(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 ti;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:ti;default:throw new Error("Action hasn't been defined.")}}r($p,"reducer");function an(){let{state:t,disconnect:e,connect:o}=bC(),[n,i]=xC($p,ti),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=_p(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===EC.DISCONNECTED,g=m?.forceConnectToNamespaces;if(h){let f=d.properties?.find(T=>T.name==="namespaces")?.value,C=d.properties?.find(T=>T.name==="derivationPath")?.value;if(g){let T=g.find(y=>!f?.data?.map(k=>k.value).includes(y));if(T)throw new Error(`One of the forced namespaces is not available in the wallet. Forced namespace: ${T}`);if(g.length>1&&C)throw new Error("Derivation path is not supported when multiple namespaces are selected.");return g.length===1&&g[0]&&C?(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(C){let T=f.data[0];return i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:T.value}}),{status:"derivation-path"}}return await a(d,f?.data?.map(T=>({namespace:T.value})),m)}}if(!m?.forceConnectToNamespaces){let f=d.properties?.find(C=>C.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",C=m[0];if(!C)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:C}}),{status:"derivation-path"};if(!Dp(n))throw new Error("Something went wrong on handling namespace. Please retry.");let T=m.map(y=>({namespace:y}));return i({type:"detached",payload:{targetWallet:d,selectedNamespaces:T??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(!Mp(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}],C=d.properties?.find(k=>k.name==="namespaces")?.value,T=!!C?.data&&C.data.length>1,y=!!h?.forceConnectToNamespaces;return T&&!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),Wo(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(an,"useStatefulConnect");import{WalletTypes as tr}from"@rango-dev/provider-all";import{WalletState as vs}from"@rango-dev/ui";import{useWallets as UT}from"@rango-dev/wallets-react";import{useCallback as zT,useEffect as QT}from"react";import MT,{createContext as DT,useContext as $T,useEffect as FT,useRef as OT}from"react";import{create as BT}from"zustand";import{persist as _T}from"zustand/middleware";import{allProviders as AC,RPC_URLS as NC,WalletTypes as ri}from"@rango-dev/provider-all";var rs=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()}},sn=new rs;import{Provider as IC}from"@hub3js/core";function Op({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 IC)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(Op,"matchAndGenerateProviders");function Up(t){return t.map(e=>e.id)}r(Up,"configWalletsToWalletName");function zp(t,e){return e.find(o=>o.name===t)?.displayName}r(zp,"getBlockchainDisplayNameFor");function Tt(t,e){return e.find(o=>o.name===t)?.shortName}r(Tt,"getBlockchainShortNameFor");function Qp(t,e){return e.find(o=>o.name===t)?.logo}r(Qp,"getBlockchainImage");function Vn(t,e){return e.find(o=>o.id===t)?.title}r(Vn,"getSwapperDisplayName");function Po(t,e){return e.find(o=>o.name===t)??null}r(Po,"findBlockchain");function is(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(is,"isTokenNative");function kt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}r(kt,"createTokenHash");function Lo(t,e){return t.addressPatterns.filter(i=>new RegExp(i).test(e)).length>0}r(Lo,"isValidTokenAddress");function oi(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}r(oi,"createTokenExplorerUrl");function Kn(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(Kn,"matchTokensFromConfigWithMeta");function ni(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(ni,"getSupportedBlockchainsFromConfig");function WC(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}r(WC,"makeProvidersOptionsFromConfig");var jn={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default"},PC={clientUrl:void 0},LC={liquiditySources:void 0};function Hp(t){return AC().map(n=>n(NC)).filter(n=>_C(n.id,t))}r(Hp,"generateProviders");var BC={[ri.LEDGER_WALLET]:"ledgerWallet",[ri.TREZOR]:"trezorManifest",[ri.TON_CONNECT]:"tonConnect",[ri.WALLET_CONNECT_2]:"walletConnectProjectId"};function _C(t,e){let o=BC[t];return!o||e[o]?!0:(console.warn(`${t} is listed in config wallets but ${o} config is not provided!`),!1)}r(_C,"hasRequiredConfig");var qp=r((t,e,o)=>{let n={...jn,...t},i=Hp(n);return{config:n,iframe:PC,campaignMode:LC,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=Kn({type:"source",config:{blockchains:a.from?.blockchains,tokens:a.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}}),u=Kn({type:"destination",config:{blockchains:a.to?.blockchains,tokens:a.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}});sn.set("supportedSourceTokens",p),sn.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=WC(s);return Op({allProviders:a,configWallets:s.wallets,options:c})}}},"createConfigSlice");import{TransactionType as Gp}from"rango-types";var Vp=[Gp.EVM,Gp.SOLANA],ii="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as YC}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 zC,HYPERLIQUID_SIGN_NETWORK as QC,Networks as us,readAccountAddress as HC}from"@rango-dev/internal-blockchains";import{BlockchainCategories as qC,detectInstallLink as GC,WalletState as ut}from"@rango-dev/ui";import cn from"bignumber.js";import{isAddress as VC}from"ethers";import MC from"bignumber.js";var pe=new MC(0);var Bo="~",Yp=[];import{BlockchainCategories as ss,WalletState as UC}from"@rango-dev/ui";import{TransactionType as ls}from"rango-sdk";import{UI_ID as DC}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",...DC};var Rp="Roboto",as=[{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 ln(t){return Array.from(new Set(t))}r(ln,"removeDuplicateFrom");function ai(t,e){let o;return n;function n(...i){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...i)},e)}}r(ai,"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"),_o=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 cs(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(cs,"compareContainsText");function ps(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(ps,"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=ps(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=cs(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=ps(o,t.name,e.name);if(i)return i}if(o.length>=3){let i=cs(o,t.name,e.name);if(i!==0)return i}if(o.length>=4){let i=ps(o,t.address,e.address);if(i)return i}if(o.length>=4){let i=cs(o,t.address,e.address);if(i!==0)return i}return 0}r(iu,"compareWithSearchFor");var si=r((t,e)=>{switch(e){case ss.ALL:return!0;case ss.UTXO:return t===ls.TRANSFER;case ss.OTHER:return t!==ls.TRANSFER&&t!==ls.EVM;default:return t===e}},"isBlockchainTypeInCategory"),au=r(t=>as.find(o=>o.value===t)?.url,"getFontUrlByName");function su(t,e){let o=!!t.find(n=>n.state===UC.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 Cu}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 li(t){return/^0+(?:\.0+)?$/.test(t)}r(li,"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 Xn=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 ci=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"),Yn=r(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Tu(t){return li(t)?"0":t.endsWith(".")?t.slice(0,-1):gu(t)}r(Tu,"sanitizeInputAmount");function KC(t,e){let o=t?.get("EVM");return o?.network?zC(o.network,e)??o.network:null}r(KC,"getConnectedEvmChainName");function Zn(t,e){return XC(t,e)?ut.PARTIALLY_CONNECTED:e.connected?ut.CONNECTED:e.connecting?ut.CONNECTING:e.installed?ut.DISCONNECTED:ut.NOT_INSTALLED}r(Zn,"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&&KC(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=ln(u.map(C=>C.type)),f=Zn(e(i),t(i));return{title:a,image:s,link:GC(c),state:f,type:i,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:m,isHub:h}})}r(ku,"mapWalletTypesToWalletInfo");function di(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}r(di,"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}=HC(l),d=c.length>0,m=c.includes(u),h=u===us.Unknown;if(d&&!m&&!h)return;let f=u===us.Unknown&&VC(p);if(h&&!f)return;if(o.includes(u)||f)if(i)s(u,p.toLowerCase(),i);else{let T=c.filter(k=>o.includes(k));T.forEach(k=>{s(k,p.toLowerCase())}),T.includes(QC)&&s(us.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}r(wu,"prepareAccountsForWalletStore");function Mo(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(Mo,"getQuoteChains");function Jn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}r(Jn,"isAccountAndWalletMatched");var vu=r(t=>{let e=Object.values(t).reduce((o,n)=>{let i=n.usdValue?ds(n.usdValue,n.decimals):pe.toFixed();return o.plus(i)},new cn(pe));return jC(e.toString())},"calculateWalletUsdValue");function jC(t){let e=t.toString().split(".");return e[0]&&(e[0]=mu(e[0])),e.join(".")}r(jC,"numberWithThousandSeparator");function ds(t,e){return new cn(t).shiftedBy(-e).toFixed()}r(ds,"representAmountInNumber");function mi(t){if(!t)return null;let e=ds(t.amount,t.decimals),o=t.usdValue?ds(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(mi,"formatBalance");function Eu(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new cn(t.usdValue).shiftedBy(-t.decimals):pe,n=e&&e.usdValue?new cn(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 cn(t.amount).shiftedBy(-t.decimals):pe,n=e&&e.amount?new cn(e.amount).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}r(Eu,"compareTokenBalance");function Vt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}r(Vt,"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 po(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(po,"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 Au(t){return t.map(e=>e.state).join("-")}r(Au,"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===qC.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(si(n,e))return!0;return!1})}r(Wu,"filterWalletsByCategory");function XC(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(XC,"checkIsWalletPartiallyConnected");var ms={API_KEY:Xp()};function Kt(t){return ms[t]||""}r(Kt,"getConfig");function Pu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ms=e,ms}r(Pu,"initConfig");var Lu=20,Bu=25,fs="theme-widget",gs=r((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Vt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Vt(a,t));let i=n.isExcluded;return!i&&!o||i&&o}}}return o},"isTokenExcludedInConfig"),hs=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 fi,dt=r(()=>fi||(fi=new YC(Kt("API_KEY"),Kt("BASE_URL")),fi),"httpService");import{i18n as Mu}from"@lingui/core";var gi=[.5,1,3],hi=1,pn=5,Rn=30,yi=0;function Si(t,e){let o=t.map(a=>a.swapperGroup),n=[];return ln(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(Si,"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 un(t,e){return e?.[t]==="enabled"}r(un,"isRoutingEnabled");var $u=r((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function dn(t){return t==yi?{type:"error",message:Mu.t("Slippage must be greater than or equal to 0.01")}:t>pn&&t<=Rn?{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(dn,"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=ni({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=sn.get(u);d?.length||(d=Kn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:i}}),sn.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 C=e().isTokenPinned(g,o.type),T=e().isTokenPinned(f,o.type);if(C!==T)return C?-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=is(g,y),v=is(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=>Vt(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=un("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 ZC,Catalonia as JC,Chinese as Ou,Denmark as RC,English as eT,Finland as tT,French as oT,German as nT,Greece as rT,Hungary as iT,India as aT,Indonesian as sT,Italian as lT,Japanese as cT,Korea as pT,Lithuania as uT,Malay as dT,Netherlands as mT,Pakistan as fT,Philippines as gT,Poland as hT,Portuguese as yT,Russian as ST,SaudiArabia as CT,Serbia as TT,Slovakia as kT,SouthAfrica as wT,Spanish as vT,Swahili as ET,Swedish as bT,Thai as xT,Turkish as IT,Ukrainian as AT,Vietnamese as NT}from"@rango-dev/ui";var Uu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:wT},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:CT},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:ZC},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:JC},{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:RC},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:mT},{title:"English",label:"English",local:"en",SVGFlag:eT},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:gT},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:tT},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:oT},{title:"German",label:"Deutsch",local:"de",SVGFlag:nT},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:rT},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:aT},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:iT},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:sT},{title:"Italian",label:"Italiana",local:"it",SVGFlag:lT},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:cT},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:pT},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:uT},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:dT},{title:"Polish",label:"Polski",local:"pl",SVGFlag:hT},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:yT},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:ST},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:TT},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:kT},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:vT},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:ET},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:bT},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:xT},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:IT},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:AT},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:fT},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:NT}],mn="en";var zu=r((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:hi,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=ln(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||mn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||mn}})},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=ni({config:o});return i.length?n.filter(a=>i.includes(a.blockchain)):n}}),"createSettingsSlice");import ws from"bignumber.js";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 jt(t){return`${t.blockchain}${Bo}${t.address}${Bo}${t.symbol}`}r(jt,"createAssetKey");function qu(t,e){return`${jt(e)}${Bo}${t}`}r(qu,"createBalanceKey");function er(t){let[e,o,n]=t.split(Bo);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}r(er,"extractAssetFromBalanceKey");function Ss(t,e,o){return e.balances?.forEach(n=>{let i=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[jt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:i?new Hu(i??pe).multipliedBy(o[s].amount).toString():""})})}),o}r(Ss,"computeNextBalancesWithNewPrices");function Cs(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(Cs,"createBalanceStateForNewAccount");function Ts(t,e){for(let o in e){let n=er(o);if(n){let i=jt(n);t[i]||(t[i]=[]),t[i].includes(o)||(t[i]=[...t[i],o])}}return t}r(Ts,"updateAggregatedBalanceStateForNewAccount");function WT(t,e){let o=er(e);if(!o)return t;let n=jt(o);return t[n]&&(t[n]=t[n].filter(i=>i!==e)),t}r(WT,"removeBalanceFromAggregatedBalance");function ks(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=er(l);if(!p)return;!!n.find(d=>qu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=WT(a,l):s[l]&&(i[l]=s[l])}),{_balances:i,_aggregatedBalances:a}}r(ks,"computeNextStateAfterWalletBalanceRemoval");function PT(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}r(PT,"matchWalletDetailsWithConnectedWallet");var LT=lu(),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=>Jn(a,i))?{...i,loading:!0,error:!1}:i)}))},setConnectedWalletRetrievedData:(o,n)=>{t(i=>({fetchingWallets:!1,connectedWallets:i.connectedWallets.map(a=>o.find(s=>Jn(s,a))?{...a,loading:!1,error:!1,explorerUrl:PT(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(i=>o.find(a=>Jn(a,i))?{...i,loading:!1,error:!0}:i)}))},addConnectedWallet:(o,n,i)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Jn(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};Ss(f,g,d);let C=Cs(g,e);m=Ts(m,C),d={...d,...C}}),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)=>{o[0]&&(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}=ks(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=>{if(e().connectedWallets.find(i=>i.walletType===o)){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};Ss(m,d,l);let{_balances:h,_aggregatedBalances:g}=ks(m,i,{chains:[d.blockChain]});if(p=g,l=h,!e().connectedWallets.find(C=>i.includes(C.walletType)&&C.address===d.address&&C.chain===d.blockChain))return;let f=Cs(d,e);p=Ts(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=jt(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 ws(u.amount),m=new ws(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(Bo);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>LT(()=>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=er(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new ws(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 BT()(_T((...e)=>({...Gu(...e),...Fu(...e),...zu(...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(Vu,"createAppStore");var Ku=DT(null);function S(){let t=$T(Ku);if(FT(()=>{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=OT();return e.current||(e.current=Vu(t.config)),MT.createElement(Ku.Provider,{value:e.current},t.children)}r(ju,"AppStoreProvider");var HT=new Set([tr.DEFAULT,tr.WALLET_CONNECT_2,tr.LEDGER]);function xt(t){let{chain:e}=t||{},{getAvailableProviders:o}=S(),{state:n,getWalletInfo:i}=UT(),{handleDisconnect:a}=an(),s=Up(o()),c=ku(n,i,s,e);c=pu()?c.filter(m=>m.showOnMobile!==!1&&n(m.type).installed):c;let l=bu(c),p=zT(()=>{let m=c?.filter(h=>h.state===vs.CONNECTING)||[];for(let h of m)a(h)},[Au(c)]);QT(()=>()=>{p()},[]);let u=r(m=>{let h=m.find(f=>f.type===tr.DEFAULT);return!h||h.state===vs.NOT_INSTALLED?!1:m.filter(f=>f.state!=vs.NOT_INSTALLED&&!HT.has(f.type)&&i(f.type).supportedChains.filter(C=>C.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=r(m=>m==tr.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(m=>!d(m.type)),terminateConnectingWallets:p}}r(xt,"useWalletList");import{Modal as KT}from"@rango-dev/ui";import jT from"react";import{create as VT}from"zustand";var Xu="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(Xu),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 GT=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"),uo=GT;var re=uo(VT()((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})}}))),$o=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 jT.createElement(KT,{hasWatermark:e==="FULL",...t},t.children)}r(ie,"WatermarkedModal");import{i18n as hn}from"@lingui/core";import{getSupportedChainsFromNamespace as ck}from"@rango-dev/internal-blockchains";import{Alert as pk,Button as uk,Divider as yn,Image as dk,MessageBox as mk,RadioRoot as fk,WalletImageContainer as gk}from"@rango-dev/ui";import le,{useEffect as hk,useMemo as yk,useState as Sk}from"react";import{i18n as JT}from"@lingui/core";import{Typography as nd}from"@rango-dev/ui";import fn from"react";function Ci(t,e){return t.find(o=>o.name===e)?.logo}r(Ci,"getBlockchainLogo");import{darkTheme as XT,Image as YT,styled as Xt,Typography as ZT}from"@rango-dev/ui";var Ti=Xt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${XT} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),ki=Xt("div",{display:"flex",gap:"$8",alignItems:"center"}),Zu=Xt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),Ju=Xt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Ru=Xt("div",{display:"flex",gap:"$6",alignItems:"center"}),ed=Xt("div",{paddingLeft:"48px"}),td=Xt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),od=Xt(ZT,{maxWidth:"100px",whiteSpace:"nowrap"}),wi=Xt(YT,{variants:{disabled:{true:{opacity:"0.5"}}}});function vi(t){let{namespace:e}=t,o=S().blockchains();return fn.createElement(Ti,{unsupported:!0},fn.createElement(ki,null,fn.createElement(wi,{src:Ci(o,e.id),size:40,disabled:!0}),fn.createElement(Ju,null,fn.createElement(nd,{variant:"label",size:"large"},e.label),fn.createElement(nd,{variant:"body",size:"xsmall"},JT.t("(Currently not supported)")))))}r(vi,"NamespaceUnsupportedItem");import{Checkbox as ak,Radio as sk}from"@rango-dev/ui";import Is from"react";import{i18n as xs}from"@lingui/core";import{getSupportedChainsFromNamespace as ek}from"@rango-dev/internal-blockchains";import{ChevronDownIcon as tk,ChevronUpIcon as ok,Divider as nk,Typography as nr}from"@rango-dev/ui";import We,{useEffect as rk,useState as ik}from"react";import{Image as id,Tooltip as ad,Typography as RT}from"@rango-dev/ui";import Dt from"react";import{styled as rd}from"@rango-dev/ui";var Es=rd("div",{display:"flex",alignItems:"center",padding:0,margin:0}),Ei=rd("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 bs=3;function sd(t){let{chains:e}=t;return Dt.createElement(Es,{id:"widget-supported-chains-container"},e.slice(0,bs).map((o,n)=>Dt.createElement(ad,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},Dt.createElement(Ei,{firstItem:n===0},Dt.createElement(id,{src:o.logo,size:15})))),e.length>bs&&Dt.createElement(ad,{container:W(),side:"bottom",align:"start",sideOffset:4,content:Dt.createElement(Es,null,e.map((o,n)=>Dt.createElement(Ei,{key:o.name,firstItem:n===0},Dt.createElement(id,{src:o.logo,size:15}))))},Dt.createElement(Ei,null,Dt.createElement(RT,{variant:"body",size:"xsmall"},"+",e.length-bs))))}r(sd,"SupportedChainsList");function Fo(t){let{namespace:e,error:o,suffix:n,connected:i,address:a,onClick:s}=t,[c,l]=ik(!1),p=S().blockchains();rk(()=>l(!1),[o]);let u=ek(e,p),d=!o&&!i&&u.length>1;return We.createElement(Ti,{hasError:!!o,clickable:!!s,onClick:s},We.createElement(ki,null,We.createElement(wi,{src:Ci(p,e.id),size:40}),We.createElement(Zu,{showSupportedChains:d||i||!!o},We.createElement(Ru,null,We.createElement(nr,{variant:"label",size:"large"},e.label),i&&We.createElement(nr,{variant:"body",size:"small",color:"success500"},xs.t("Connected")),!!o&&We.createElement(nr,{variant:"body",size:"small",color:"error500"},xs.t("Connection failed"))),d&&We.createElement(sd,{chains:u}),i&&We.createElement(od,{variant:"body",size:"small",color:"neutral700"},a),o&&We.createElement(td,{onClick:()=>l(m=>!m)},We.createElement(nr,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},xs.t("See why")),c?We.createElement(ok,{size:12,color:"gray"}):We.createElement(tk,{size:12,color:"gray"}))),n),!!o&&c&&We.createElement(We.Fragment,null,We.createElement(nk,{size:4}),We.createElement(ed,null,We.createElement(nr,{variant:"body",size:"small",color:"neutral700"},o))))}r(Fo,"NamespaceItem");function ld(t){let{onClick:e,type:o,namespace:n}=t;return Is.createElement(Fo,{namespace:n,onClick:e,suffix:o==="radio"?Is.createElement(sk,{value:n.value}):Is.createElement(ak,{checked:t.value})})}r(ld,"NamespaceListItem");import{Button as lk,styled as cd}from"@rango-dev/ui";var bi=cd("ul",{padding:0,paddingBottom:"$20",margin:0}),gn=cd(lk,{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]=Sk([]),p=yk(()=>i?.data.filter(g=>!g.unsupported),[e?.type]),u=r(g=>{l(n?[g]:f=>f.includes(g)?f.filter(C=>C!==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(fk,{value:c?.[0]},g):le.createElement(le.Fragment,null,g),"wrapRadioRoot");return hk(()=>{if(!n&&p)if(t.value.defaultSelectedChains?.length){let g=p.filter(f=>ck(f,s).some(C=>t.value.defaultSelectedChains?.includes(C.name)));l(g.map(f=>f.value))}else l(p.map(g=>g.value))},[]),le.createElement(le.Fragment,null,le.createElement(mk,{type:"info",title:hn.t("Connect {wallet}",{wallet:e.title}),description:hn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(gk,null,le.createElement(dk,{src:a,size:45}))}),n?le.createElement(le.Fragment,null,le.createElement(yn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(pk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:hn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(yn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(yn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(uk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:m},d?hn.t("Deselect all"):hn.t("Select all")),le.createElement(yn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(bi,null,h(le.createElement(le.Fragment,null,i?.data.map((g,f,C)=>le.createElement(le.Fragment,{key:g.id},g.unsupported?le.createElement(vi,{namespace:g}):le.createElement(ld,{value:c.includes(g.value),namespace:g,type:n?"radio":"checkbox",onClick:()=>u(g.value)}),f!==C.length-1&&le.createElement(yn,{size:10})))))),le.createElement(yn,{size:20}),le.createElement(gn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!c.length,onClick:()=>t.onConfirm(c)},hn.t("Connect")))}r(rr,"Namespaces");import{i18n as ir}from"@lingui/core";import{Alert as bk,Button as xk,Divider as Sn,Image as Ik,MessageBox as Ak,WalletImageContainer as Nk}from"@rango-dev/ui";import{useWallets as Wk}from"@rango-dev/wallets-react";import me from"react";import{styled as Ck}from"@rango-dev/ui";var pd=Ck("div",{display:"flex",justifyContent:"end"});import{i18n as As}from"@lingui/core";import{Button as Tk,Spinner as kk}from"@rango-dev/ui";import Ns,{useLayoutEffect as wk,useRef as vk,useState as Ek}from"react";function ud(t){let{namespace:e,initialConnect:o,disabled:n,state:i,handleConnect:a,handleDisconnect:s}=t,[c,l]=Ek(null),p=vk(!1);wk(()=>{o&&!p.current&&u()},[]);let u=r(async g=>{try{p.current=!0,await a(g)}catch(f){l(Ct(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:po(f)},"getConnectedAddress"),h=r(()=>i.connected?As.t("Disconnect"):c?As.t("Try again"):As.t("Connect"),"getButtonText");return Ns.createElement(Fo,{namespace:e,connected:i.connected,error:c?.message,address:m(),suffix:i.connecting?Ns.createElement(kk,{color:"info"}):Ns.createElement(Tk,{id:"widget-name-space-connect-btn",variant:"ghost",type:i.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}r(ud,"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}=Wk(),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",C=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"),T=r(async w=>{await p(d,[w])},"handleDisconnectNamespace"),y=r(()=>f?me.createElement(me.Fragment,null,me.createElement(Sn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(bk,{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(Sn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(Sn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(pd,null,me.createElement(xk,{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(Sn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),k=r(w=>{if(w.unsupported)return me.createElement(vi,{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(ud,{namespace:w,initialConnect:!!v,disabled:I,state:N,handleConnect:async b=>C(w.value,{derivationPath:v?.derivationPath,shouldAskForDerivationPath:b?.shouldAskForDerivationPath}),handleDisconnect:async()=>T(w.value)})},"renderNamespaceItem");return me.createElement(me.Fragment,null,me.createElement(Ak,{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(Nk,null,me.createElement(Ik,{src:c.image,size:45}))}),y(),me.createElement(bi,{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(Sn,{size:10})))),me.createElement(Sn,{size:20}),me.createElement(gn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},i))}r(ar,"Detached");import{i18n as Cn}from"@lingui/core";import{Divider as Bk,Image as _k,MessageBox as Mk,Select as Dk,TextField as $k}from"@rango-dev/ui";import{useWallets as Fk}from"@rango-dev/wallets-react";import It,{useEffect as Ok,useMemo as Uk,useState as fd}from"react";var xi={id:"custom",label:"Custom",generateDerivationPath:t=>t};function dd(t,e){let o=t.filter(n=>n.namespace===e);return o.length?[...o,xi]:[]}r(dd,"getDerivationPaths");import{Button as Pk,styled as Ws,Typography as Lk}from"@rango-dev/ui";var md=Ws("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Ps=Ws(Lk,{paddingLeft:"$10"}),Ls={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},pM=Ws(Pk,{minHeight:"$40"});var gd="0";function sr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:i}=t.value,{getWalletInfo:a}=Fk(),[s,c]=fd(null),[l,p]=fd(gd),u=s===xi.id,d=Uk(()=>dd(a(i).needsDerivationPath?.data??[],o),[i,o]),m=r(({value:g})=>{let f=d?.find(C=>C.id===g);f&&(s===xi.id&&Number.isNaN(Number(l))&&p(gd),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 Ok(()=>{c(d[0]?.id||null)},[d]),It.createElement(It.Fragment,null,It.createElement(Mk,{type:"info",title:Cn.t("Select Derivation Path"),description:Cn.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(md,{className:"_derivation_path_inputs_container"},It.createElement(Ps,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},Cn.t("Choose Derivation Path Template")),It.createElement(Dk,{id:"widget-derivation-path-template-select",value:s||"",options:d.map(g=>({value:g.id,label:g.label})),variant:"filled",handleItemClick:m,styles:{trigger:Ls}}),It.createElement(Bk,{size:20}),It.createElement(Ps,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},u?Cn.t("Enter Path"):Cn.t("Enter Index")),It.createElement($k,{id:"widget-derivation-path-template-input",type:u?"text":"number",variant:"contained",value:l,onChange:g=>p(g.target.value),style:Ls})),It.createElement(gn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!d||!s||!l},Cn.t("Confirm")))}r(sr,"DerivationPath");import{i18n as Tn}from"@lingui/core";import{Image as Hk,MessageBox as _s,WalletImageContainer as qk,WalletState as Gk}from"@rango-dev/ui";import{useWallets as Vk}from"@rango-dev/wallets-react";import Oo from"react";import{keyframes as zk,styled as Bs}from"@rango-dev/ui";var wM=Bs("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),hd=Bs("div",{position:"relative"}),Qk=zk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),yd=Bs("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Qk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function Ms(t){let{wallet:e,error:o}=t,{type:n,image:i}=e,{state:a,getWalletInfo:s}=Vk();return Zn(s(n),a(n))===Gk.CONNECTED?Oo.createElement(_s,{type:"success",title:Tn.t("Wallet Connected"),description:Tn.t("Your wallet is connected, you can use it to swap.")}):o?Oo.createElement(_s,{type:"error",title:Tn.t("Failed to Connect"),description:o||Tn.t("Your wallet is not connected. Please try again.")}):Oo.createElement(_s,{type:"loading",title:Tn.t("Connecting to your wallet"),description:Tn.t("Click connect in your wallet popup."),icon:Oo.createElement(hd,null,Oo.createElement(qk,null,Oo.createElement(Hk,{src:i,size:45})),Oo.createElement(yd,null))})}r(Ms,"ConnectStatus");function Sd(t,e){return t().status==="init"&&!!e}r(Sd,"isOnStatus");function lr(t){return t().status==="namespace"}r(lr,"isOnNamespace");function cr(t){return t().status==="derivationPath"}r(cr,"isOnDerivationPath");function Wo(t){return t().status==="detached"}r(Wo,"isOnDetached");var Yk=3e3,Zk=300;function pr(t){let e=Xk(),[o,n]=Cd(!1),[i,a]=Cd(),s=r(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=xt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:m,handleDisconnect:h}=an(),g=r(v=>{u(t.wallet,v).then(k).catch(s)},"handleConfirmNamespaces"),f=r(()=>{T()},"handleDetachedConfirm"),C=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"),T=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(T,Yk))):b&&T()},"afterConnected"),w=r(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return jk(()=>{if(t.wallet){y();let v=!1,N=!0;r(()=>{setTimeout(()=>{N=!1,v||n(!0)},Zk)},"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]),mo.createElement(ie,{id:t.id,open:o,onClose:T,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},Sd(d,t.wallet)&&mo.createElement(mo.Fragment,null,mo.createElement(Ms,{wallet:{type:t.wallet.type,image:t.wallet.image},error:i}),mo.createElement(Kk,{direction:"vertical",size:32})),lr(d)&&mo.createElement(rr,{onConfirm:g,value:d().namespace}),cr(d)&&mo.createElement(sr,{onConfirm:C,value:d().derivationPath}),Wo(d)&&mo.createElement(ar,{onConfirm:f,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}r(pr,"StatefulConnectModal");import ts from"react";import Jk,{Fragment as Rk}from"react";import{MemoryRouter as ew,useInRouterContext as tw}from"react-router";function Ii({children:t}){let o=tw()?Rk:ew;return Jk.createElement(o,null,t)}r(Ii,"AppRouter");import{I18nManager as Y0}from"@rango-dev/ui";import Ip from"react";import Qe from"react";import{useRoutes as W0}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 wn,useRef as _i}from"react";import at from"bignumber.js";import{create as Yd}from"zustand";import{subscribeWithSelector as Zd}from"zustand/middleware";import{createContext as ow,useContext as nw}from"react";var Td=ow({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=nw(Td);return{swapMode:t,isMultiMode:e}}r(rt,"useSwapMode");import rw from"mitt";var we=rw(),iw={on:we.on,off:we.off};import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as lw,RouteEventType as PD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as ur}from"rango-types";import{i18n as Ai}from"@lingui/core";var Uo=r(()=>({connectWallet:Ai.t("Connect Wallet"),swap:Ai.t("Swap"),swapAnyway:Ai.t("Swap anyway"),ethWarning:Ai.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Ds(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(Ds,"getFeeLabel");var $s=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],kd=100,wd=30,vd=15,Ed=60;var bd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],xd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as sw}from"@rango-dev/queue-manager-rango-preset";import yD from"bignumber.js";function Ad(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(Ad,"getRequiredBalanceOfWallet");function Zt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}r(Zt,"getPriceImpactLevel");function Ni(t,e,o){let n=t.steps[0],i=t.steps[t.steps.length-1],a=sw(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=Po(a?a.toBlockchain:n.fromBlockchain,e),l=Po(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(Ni,"createRetryQuote");function kn(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:i}=t,a=zo(o),s=it(o);if(o&&a&&s){let p=Yt(a.toString(),s.toString());if(!!p&&Bd(a,p)){let d=Pi(o?.swaps,n),m=Zt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:m}}}if(e&&Dd(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Yt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=Li(o.swaps),l=i>pn;if(Md(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(kn,"generateQuoteWarnings");function Nd(t){return![4].includes(t.type)}r(Nd,"isQuoteWarningConfirmationRequired");function Yt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Fs(t.toString(),e.toString());return n&&n<0?n:null}r(Yt,"getPriceImpact");var Wd=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"),Wi=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"),Pd=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"),Ld=r(t=>{let e=r((o,n)=>{let i=$s.indexOf(o.value),a=$s.indexOf(n.value);return i!==-1&&a!==-1?i-a:i!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Bd(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return bd.some(({threshold:n,minInput:i})=>o<=n&&t.gte(new Ge(i)))}r(Bd,"hasHighValueLoss");function $d(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($d,"hasLimitError");function Fd(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(Fd,"getLimitErrorMessage");function Od(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:i,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:Uo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!i||i==="0"?{title:Uo().swap,action:"confirm-swap",disabled:!0}:s?{title:Uo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:Uo().ethWarning,action:"confirm-warning",disabled:!1}:{title:Uo().swap,action:"confirm-swap",disabled:!1}:{title:Uo().connectWallet,action:"connect-wallet",disabled:!1}}r(Od,"getSwapButtonState");function Os(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(pe))&&e&&e!=="0"&&n!==0)}r(Os,"canComputePriceImpact");function Us(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(Us,"getUsdFeeOfStep");function Pi(t,e){return t.reduce((o,n)=>o.plus(Us(n,e)),pe)}r(Pi,"getTotalFeeInUsd");function zs(t){let e=pe,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}r(zs,"getUsdFee");function Qs(t){return t.reduce((e,o)=>e.plus(zs(o)),pe)}r(Qs,"getTotalFeesInUsd");function Ud(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(Ud,"getFeesGroup");function zd(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(zd,"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 Li(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(Li,"getMinRequiredSlippage");function Md(t,e){return e?parseFloat(t)>=parseFloat(e):!0}r(Md,"hasProperSlippage");function Qd(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),{}),C=[];return i?.forEach(y=>{C.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:C,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(Qd,"createQuoteRequestBody");function Hd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}r(Hd,"getWalletsForNewSwap");function zo(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}r(zo,"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 Fs(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(kd).toNumber()}r(Fs,"getPercentageChange");function Dd(t,e){let o=zo(t),n=it(t),i=it(e);if(!o||!n||!i)return!1;let a=Fs(n.toString(),i.toString());return xd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}r(Dd,"isOutputAmountChangedExcessively");function qd(t,e,o){let n=t.validationStatus,i=Mo({filter:"required",quote:t});return e.sort((s,c)=>i.indexOf(s.chain)-i.indexOf(c.chain)).flatMap(s=>Ad(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:Tt(s.asset.blockchain,o)}})})}r(qd,"generateBalanceWarnings");function dr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==ur.NetworkChanged}r(dr,"isNetworkStatusInWarningState");function Gd(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?lw(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=Ct(i)??Ct(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(Gd,"getSwapMessages");function Vd(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(Vd,"getLastConvertedTokenInFailedSwap");function Kd(t){return t.status==="failed"}r(Kd,"shouldRetrySwap");function jd(t,e,o,n,i,a){if(!n||t)return!0;let s=Mo({filter:"all",quote:n}),c=Mo({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?Lo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}r(jd,"isConfirmSwapDisabled");function Xd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}r(Xd,"isTokensIdentical");var Bi=r((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),Jd=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 Yn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=zo(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:Bi(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=Tu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=hu(e);li(e)||(o=uu(o),o=du(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new at(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Bi(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:Bi(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?Bi(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"),Rd=Yd()(Zd(Jd)),em=Yd()(Zd(Jd)),cw=uo(Rd),pw=uo(em);function z(){let{swapMode:t}=rt();return uo(t==="refuel"?em:Rd)}r(z,"useQuoteStore");var tm=r((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&we.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&we.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})},"subscribeCallback"),om=cw.subscribe(tm),nm=pw.subscribe(tm);function rm(){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:C}=S(),T=u?.from?.tokens,y=u?.from?.blockchains,k=u?.to?.tokens,w=u?.to?.blockchains,v=_i(void 0),N=_i(void 0),I=_i(void 0),b=_i(void 0);wn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),wn(()=>{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]),wn(()=>{gs(s,T)&&a({token:null}),hs(l,y)&&n(null)},[T,y]),wn(()=>{gs(c,k)&&a({token:null}),hs(p,w)&&o(null)},[k,w]),wn(()=>{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]),wn(()=>{g(u?.affiliate?.ref??null),f(u?.affiliate?.percent??null),C(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}r(rm,"useSyncStoresWithConfig");import{useEffect as Gs,useRef as uw}from"react";import{useInRouterContext as dw,useLocation as mw,useSearchParams as fw}from"react-router-dom";function Hs(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}r(Hs,"convertTokenSearchParamToAsset");function qs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}r(qs,"tokenToSearchParam");function Ks(){let t=mw(),[e,o]=fw(),{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=dw(),{updateIframe:C,updateCampaignMode:T}=S(),y=S().isInCampaignMode(),k=uw(),{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");Gs(()=>{let{autoConnect:I,clientUrl:b,extraQueryParams:x,blockchain:E}=v();f&&h==="success"&&N({fromBlockchain:n?.name,fromToken:qs(a),toBlockchain:i?.name,toToken:qs(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]),Gs(()=>{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&&Hs(I.fromToken,b),E=x?w(x):void 0,L=g.find(q=>q.name===I.toBlockchain),A=I.toToken&&L&&Hs(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]),Gs(()=>{let{clientUrl:I,liquiditySources:b}=v();C("clientUrl",I||void 0),T("liquiditySources",b?.split(",")??void 0)},[])}r(Ks,"useSyncUrlAndStore");import{i18n as bn}from"@lingui/core";import{Alert as Mv,Button as Dv,darkTheme as $v,Divider as vl,DoneIcon as Fv,styled as Ov,TextField as Uv,Typography as zv}from"@rango-dev/ui";import Ke,{useState as Qv}from"react";import{useNavigate as Hv,useSearchParams as qv}from"react-router-dom";import{ChevronRightIcon as gw,Divider as cm,Image as hw,Typography as pm}from"@rango-dev/ui";import At from"react";import{darkTheme as im,styled as js}from"@rango-dev/ui";var am=js("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${im} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${im} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),sm=js("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),lm=js("div",{display:"flex"});function Xs(t){let{onClick:e,value:o,title:n,hasLogo:i,placeholder:a,disabled:s}=t;return At.createElement(sm,null,At.createElement(pm,{size:"large",variant:"label"},n),At.createElement(cm,{size:10}),At.createElement(am,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},At.createElement(lm,null,i&&At.createElement(At.Fragment,null,At.createElement(hw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),At.createElement(cm,{size:4,direction:"horizontal"})),At.createElement(pm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),At.createElement(gw,{size:12,color:"black"})))}r(Xs,"BlockchainSelectorButton");import{i18n as Rs}from"@lingui/core";import{Button as Ew,Divider as gm,MessageBox as bw}from"@rango-dev/ui";import fo,{useEffect as hm,useState as el}from"react";import{i18n as Mi}from"@lingui/core";import{Divider as Qo,ExternalLinkIcon as Cw,Image as Tw,InfoIcon as kw,Tooltip as ww,Typography as fr}from"@rango-dev/ui";import fe from"react";var um="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as yw,darkTheme as vn,styled as mr,Typography as Sw}from"@rango-dev/ui";var Ys=mr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${vn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${vn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${vn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${vn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),dm=mr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${vn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${vn} &`]:{color:"$colors$neutral900"}}}),Zs=mr(yw,{minHeight:"$40"}),mm=mr(Sw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),fm=mr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var vw=9;function Js(t){let{open:e,onClose:o,token:n,onExit:i,onSubmitClick:a,blockchain:s}=t,c=n.address?oi({contractAddress:n.address,blockchainMeta:s}):void 0,l=r(()=>window.open(um,"_blank"),"onClickLearnMore");return fe.createElement(ie,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:i,container:W()},fe.createElement(dm,null,fe.createElement(Tw,{src:n.image===""?ii:n.image,size:45,type:"circular"}),fe.createElement(Qo,{size:4}),fe.createElement(fm,null,fe.createElement(mm,{variant:"title",size:"medium"},n.symbol),n.symbol.length>vw&&fe.createElement(ww,{content:n.symbol,container:W()},fe.createElement(kw,{size:12,color:"gray"}))),fe.createElement(fr,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),fe.createElement(Qo,{size:4}),fe.createElement(fr,{variant:"body",size:"medium"},c?fe.createElement(Ys,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(Cw,{size:12,color:"gray"})):fe.createElement(Ys,null,n.address)),fe.createElement(Qo,{size:4}),n.coinSource&&fe.createElement(fr,{className:"_coin-source",variant:"body",size:"xsmall"},Mi.t("via")," ",fe.createElement(fr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Qo,{size:"32"}),fe.createElement(fr,{size:"medium",variant:"body",className:"_custom-token-description"},Mi.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(Qo,{size:40}),fe.createElement(Qo,{size:10}),fe.createElement(Zs,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Mi.t("Import Anyway")),fe.createElement(Qo,{size:10}),fe.createElement(Zs,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},Mi.t("Learn More")))}r(Js,"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]=el(!1),[h,g]=el(!1),[f,C]=el(!1),T=r(()=>{o&&a?.({blockchain:o.name,tokenAddress:i})},"getCustomToken"),y=r(()=>{n?.type!=="network-error"&&s?.(),m(!1)},"closeErrorModal"),k=r(()=>{C(!0),y()},"handleErrorModalButtonClick"),w=r(()=>{f&&n?.type==="network-error"&&(C(!1),T()),l()},"handleExit"),v=r(()=>{e&&(u(e),c())},"handleSubmit");return hm(()=>{n&&m(!0)},[n]),hm(()=>{o&&e&&g(!0)},[o,e]),fo.createElement(fo.Fragment,null,fo.createElement(ie,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},fo.createElement(bw,{title:n?.title??"",type:"error",description:n?.message||Rs.t("Failed Network, Please retry.")},fo.createElement(gm,{size:40}),fo.createElement(gm,{size:10}),fo.createElement(Ew,{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"?Rs.t("Retry"):Rs.t("Add another custom token")))),o&&e&&fo.createElement(Js,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}r(gr,"ImportCustomToken");import{useManager as Nv}from"@rango-dev/queue-manager-react";import{BottomLogo as Wv,Divider as Ym,Header as Pv}from"@rango-dev/ui";import Le,{useEffect as Gi,useLayoutEffect as Lv,useRef as Zm,useState as Jm}from"react";import{useRef as xw}from"react";function Di(){return window.self!==window.top}r(Di,"isAppLoadedIntoIframe");function tl(){let t=xw(null),{iframe:e}=S(),o=Di()&&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(tl,"useIframe");import{useNavigate as Iw}from"react-router-dom";function Ve(){let t=Iw();return()=>t(-1)}r(Ve,"useNavigateBack");import{createTheme as ll,darkTheme as Uw,lightTheme as zw}from"@rango-dev/ui";import{useEffect as Qw,useState as Hw}from"react";import{theme as Fw,darkColors as Ow}from"@rango-dev/ui";import al from"react";var $i=16,Fi=255,ym=.11;function Aw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,i){return n+i+i},"")}`:`#${t}`}r(Aw,"expandShortHexColor");function Nw(t,e){return t.padStart(e,"0")}r(Nw,"pad");function ol(t){let e=Math.min(Math.max(Math.round(t),0),Fi);return Nw(e.toString($i),2)}r(ol,"intToHex");function Ww(t){return`#${ol(t.red)}${ol(t.green)}${ol(t.blue)}`}r(Ww,"rgbToHex");function Pw(t){let e=parseInt(t.slice(1,3),$i),o=parseInt(t.slice(3,5),$i),n=parseInt(t.slice(5,7),$i);return{red:e,green:o,blue:n}}r(Pw,"hexToRGB");function Lw(t,e){let o=1-ym*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}r(Lw,"generateShade");function Bw(t,e){let o=ym*e;return{red:t.red+(Fi-t.red)*o,green:t.green+(Fi-t.green)*o,blue:t.blue+(Fi-t.blue)*o}}r(Bw,"generateTint");function _w(t){return Sm(t,Lw)}r(_w,"calculateShades");function Mw(t){return Sm(t,Bw)}r(Mw,"calculateTints");function Sm(t,e){let o=Pw(t),n=[];for(let i=1;i<9;i++)n.push(Ww(e(o,i)));return n}r(Sm,"calculateColors");function nl(t,e,o){let a=Mw(t).reverse().concat(t),s=_w(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(nl,"createTintsAndShades");function rl(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=Aw(a);Object.assign(n,nl(l,i,s))}}return{...n,...e}}r(rl,"expandToGenerateThemeColors");var Cm=r(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Dw=r(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=Cm(o%52)+e;return Cm(o%52)+e},"toAlphabeticName"),$w=r((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),il=r(t=>Dw($w(5381,JSON.stringify(t))>>>0),"toHash");function sl(t){let e=Fw.colors,o={...e,...Ow},n,i;if(t?.light){let s={colors:rl(e,t.light)};n={id:`${fs}-light-${il(s)}`,tokens:s}}if(t?.dark){let s={colors:rl(o,t.dark,{reverseNeutralRange:!0})};i={id:`${fs}-dark-${il(s)}`,tokens:s}}return{light:n,dark:i}}r(sl,"customizedThemeTokens");function Tm(t,e){if(t.length<=1)return t.map(({element:n,key:i})=>al.cloneElement(n,{key:i}));let o=[];return t.forEach((n,i)=>{let{element:a,key:s}=n;if(o.push(al.cloneElement(a,{key:s})),i<t.length-1){let c=`divider-${i}`;o.push(al.cloneElement(e,{key:c}))}}),o}r(Tm,"joinList");function km(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}r(km,"doesWindowPreferDarkColorScheme");function go(t){let{colors:e,fontFamily:o=Rp,borderRadius:n=Lu,secondaryBorderRadius:i=Bu}=t,[a,s]=Hw(km()?"dark":"light"),{theme:c}=S(),{dark:l,light:p}=sl(e),u=ll({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${i}px`},fonts:{widget:o}}),d=[u.className,zw.className],m=[u.className,Uw.className];if(p){let g=ll(p.id,p.tokens);d.push(g.className)}if(l){let g=ll(l.id,l.tokens);m.push(g.className)}return Qw(()=>{let g=r(f=>{f.matches?s("dark"):s("light")},"switchThemeListener");return km()&&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(go,"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 wm}from"@lingui/core";import{Alert as qw,Button as Gw}from"@rango-dev/ui";import vm from"react";function cl(t){return vm.createElement(qw,{action:vm.createElement(Gw,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},wm.t("Activate this tab")),type:"warning",variant:"alarm",title:wm.t("Another tab is open and handles transactions.")})}r(cl,"ActivateTabAlert");import{i18n as pl}from"@lingui/core";import{Button as Vw,Divider as Kw,MessageBox as jw}from"@rango-dev/ui";import Oi from"react";function ul(t){let{open:e,onClose:o,onConfirm:n}=t;return Oi.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},Oi.createElement(jw,{title:pl.t("Activate current tab"),type:"warning",description:pl.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.")},Oi.createElement(Kw,{size:20}),Oi.createElement(Vw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},pl.t("Confirm"))))}r(ul,"ActivateTabModal");import{ChevronLeftIcon as Zw}from"@rango-dev/ui";import Pm from"react";import{css as Xw,darkTheme as Em,IconButton as Yw,styled as Ho}from"@rango-dev/ui";var $t=Ho(Yw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Em} &`]:{backgroundColor:"$neutral"}}}),bm=Ho("div",{position:"absolute",background:"$secondary500",[`.${Em} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),ho=Ho("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),xm=Ho("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"}}}}),Im=Ho("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Am=Ho("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Nm=Xw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),Wm=Ho("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function dl(t){return Pm.createElement($t,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Pm.createElement(Zw,{color:"black",size:16}))}r(dl,"BackButton");import{i18n as Jw}from"@lingui/core";import{Button as Rw,Typography as ev}from"@rango-dev/ui";import ml from"react";function fl(t){return ml.createElement(ho,null,ml.createElement(Rw,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},ml.createElement(ev,{variant:"label",size:"medium",color:"error500"},Jw.t("Cancel"))))}r(fl,"CancelButton");import{i18n as tv}from"@lingui/core";import{Image as ov,Tooltip as nv,WalletIcon as rv,WalletState as Lm}from"@rango-dev/ui";import qo from"react";function gl(t){let{list:e}=xt(),o=e.filter(i=>i.state===Lm.CONNECTED||i.state===Lm.PARTIALLY_CONNECTED),n=o.length?qo.createElement("div",{className:Nm()},o.map(i=>qo.createElement(Wm,{key:i.title},qo.createElement(ov,{src:i.image,size:14})))):tv.t("Connect Wallet");return qo.createElement(nv,{container:t.container,side:"bottom",content:n},qo.createElement($t,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&qo.createElement(bm,null),qo.createElement(rv,{size:18,color:"black"})))}r(gl,"WalletButton");import{i18n as zi}from"@lingui/core";import{NotificationsIcon as Tv,Popover as kv,SettingsIcon as wv,Tooltip as Qi,TransactionIcon as vv}from"@rango-dev/ui";import _e from"react";import{Notifications as lv}from"@rango-dev/ui";import cv from"react";import{useNavigate as pv}from"react-router-dom";import{create as iv}from"zustand";import{persist as av,subscribeWithSelector as sv}from"zustand/middleware";var Pe=uo(iv()(av(sv((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 hl(){let t=pv(),{getNotifications:e,clearNotifications:o}=Pe(),n=e(),i=S().blockchains(),{findToken:a}=S();return cv.createElement(lv,{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(hl,"NotificationContent");import{useManager as uv}from"@rango-dev/queue-manager-react";import{InProgressIcon as dv}from"@rango-dev/ui";import Bm from"react";var mv=r(()=>{let{manager:t}=uv();return Et(t).map(({swap:o})=>o).find(o=>o.status==="running")?Bm.createElement(Am,{id:"widget-header-history-badge-container"},Bm.createElement(dv,{color:"info",size:6})):null},"InProgressTransactionBadge"),_m=mv;import{EventSeverity as fv}from"@rango-dev/queue-manager-rango-preset";import{Typography as gv}from"@rango-dev/ui";import Mm from"react";function Dm(){let{getNotifications:t}=Pe(),e=t(),o=e.length,n=!!e.find(i=>i.event.messageSeverity===fv.WARNING);return o?Mm.createElement(xm,{isSever:n},Mm.createElement(gv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}r(Dm,"NotificationsBadge");import{RefreshProgressButton as hv}from"@rango-dev/ui";import yl,{useEffect as yv,useState as $m}from"react";var Sv=1e3,Fm=60,Cv=100;function Ui({onClick:t}){let[e,o]=$m(0),[n,i]=$m(!1),a=r(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");yv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Fm&&c()},Sv):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 yl.createElement($t,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},yl.createElement(Im,{onTransitionEnd:()=>i(!1),isRefetched:n},yl.createElement(hv,{size:22,color:t?"black":"gray",progress:e/Fm*Cv})))}r(Ui,"RefreshButton");function Go(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:zi.t("Refresh")},_e.createElement(Ui,{onClick:e})),!c&&_e.createElement(kv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(hl,null)},_e.createElement("div",null,_e.createElement(Qi,{container:W(),side:"top",content:zi.t("Notifications")},_e.createElement($t,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(Tv,{size:18,color:"black"}),_e.createElement(Dm,null))))),!i.includes("settings")&&_e.createElement(Qi,{container:W(),side:"top",content:zi.t("Settings")},_e.createElement($t,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},_e.createElement(wv,{size:18,color:"black"}))),!i.includes("history")&&_e.createElement(Qi,{container:W(),side:"top",content:zi.t("History")},_e.createElement($t,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(vv,{size:18,color:"black"}),_e.createElement(_m,null))))}r(Go,"HeaderButtons");import{i18n as Sl}from"@lingui/core";import{Divider as Um,MessageBox as xv,RefreshIcon as Iv}from"@rango-dev/ui";import En from"react";import{Button as Ev,styled as bv}from"@rango-dev/ui";var Om=bv(Ev,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Cl(t){let{open:e,onClose:o}=t;return En.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},En.createElement(xv,{title:Sl.t("Something went wrong"),type:"error",description:Sl.t("Something went wrong. Please refresh the app.")},En.createElement(Um,{size:30}),En.createElement(Om,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},En.createElement(Iv,{size:20,color:"primary"}),En.createElement(Um,{size:4,direction:"horizontal"}),Sl.t("Refresh"))))}r(Cl,"RefreshModal");var zm="700px",Qm="425px",Hm="550px",qm="640px",Gm="800px";function Tl(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(Tl,"onScrollContentAttachStatusToContainer");import{css as Av,styled as Hi}from"@rango-dev/ui";var qi=Av({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Vm=Hi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:zm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Qm,[`@media screen and (min-height: ${Gm})`]:{minHeight:Hm}}},showBanner:{true:{overflow:"visible"}}}}),Km=Hi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),jm=Hi("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"}}}),Xm=Hi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=tl(),{children:n,header:i,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=S(),[u,d]=Jm(!1),{config:{features:m,theme:h}}=S(),{watermark:g}=re(),f=g==="FULL",{activeTheme:C}=go(h||{}),[T,y]=Jm(!1),k=nt("connectWalletButton",m),{isActiveTab:w,tabManagerInitiated:v,showActivateTabModal:N,setShowActivateTabModal:I,activateCurrentTab:b,setShowCompactTokenSelector:x}=re(),E=Ve(),{manager:L}=Nv(),O=Et(L).map(({swap:Y})=>Y).some(Y=>Y.status==="running"),q=r(()=>b($o.forceClaim,O),"onActivateTab"),j=r(()=>{i.onWallet?.()},"onConnectWallet"),ee=typeof i.hasBackButton>"u"||i.hasBackButton,P=Zm(null),Z=Zm(null);return Gi(()=>{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]),Gi(()=>(Di()&&Z.current&&e(Z.current),()=>{o()}),[]),Gi(()=>(P.current?.addEventListener("scroll",Tl),()=>{P.current?.removeEventListener("scroll",Tl)}),[]),Gi(()=>{d(c==="failed")},[c]),Lv(()=>{if(!Z.current)return;let Y=new ResizeObserver(ue=>{for(let Ee of ue)Ee.contentRect&&x(Ee.contentRect.height<parseInt(qm))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Le.createElement(Vm,{height:s,id:wt.SWAP_BOX_ID,className:`${C()} ${qi()}`,ref:Z,showBanner:T},Le.createElement(Pv,{prefix:ee?Le.createElement(dl,{onClick:()=>{E(),i.onBack?.()}}):null,title:i.title,suffix:Le.createElement(Le.Fragment,null,i.suffix,i.onWallet&&!k&&Le.createElement(gl,{container:W(),onClick:j,isConnected:!!l?.length}),i.onCancel&&Le.createElement(fl,{onClick:i.onCancel}))}),Le.createElement(Km,{ref:P},n),Le.createElement(ul,{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(cl,{onActivateTab:q}),Le.createElement(Ym,{size:10})),a),Le.createElement(Ym,{size:12}),Le.createElement("div",{className:`footer__logo ${f?"logo__show":"logo__hidden"}`},Le.createElement(Wv,null))),T&&Le.createElement(Xm,null,p?.swapBoxBanner?.element),Le.createElement(Cl,{open:u,onClose:()=>d(!1)}))}r(se,"Layout");import{styled as Bv}from"@rango-dev/ui";var Rm="$20 $20 $10 $20",kl=Bv("div",{padding:Rm,overflowY:"auto",flexGrow:1});import{styled as _v}from"@rango-dev/ui";var ce=_v("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 yo}from"@lingui/core";import{useState as wl}from"react";function ef(){let[t,e]=wl(!1),[o,n]=wl(null),[i,a]=wl(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:yo.t("Duplicate Token"),message:yo.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:yo.t("Token Already Exists"),message:yo.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:yo.t("Token Not Found"),message:yo.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:yo.t("Network error"),message:yo.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(T=>T.address?.toLowerCase()===m.toLowerCase())){let T=p("duplicated");n(T);return}let g=await dt().getCustomToken({blockchain:d,address:m});if(!g||!g.token||g.error){let T=p("not-found",d);n(T);return}let f=g.token;if(s({blockchain:f.blockchain,address:f.address,symbol:f.symbol})){let T=p("token-exist");n(T);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(ef,"useFetchCustomToken");var Gv=Ov("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${$v} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function tf(){let t=Hv(),[e]=qv(),o=Ve(),n=S().blockchains(),i=e.get("blockchain")||"",a=Po(i,n),[s,c]=Qv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:m}=ef(),h=!!a&&Lo(a,s),g=!a||!s||!h,f=r(()=>{a&&l({blockchain:i,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:bn.t("Add Custom Token")}},Ke.createElement(ce,null,Ke.createElement(Gv,null,Ke.createElement("div",null,Ke.createElement(Xs,{onClick:()=>t($.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:bn.t("Select chain"),placeholder:bn.t("Select chain")}),Ke.createElement(vl,{size:"24"}),Ke.createElement(zv,{size:"large",variant:"label"},bn.t("Enter Address")),Ke.createElement(vl,{size:10}),Ke.createElement(Uv,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:bn.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement(Fv,{color:"success",size:12}),onChange:C=>c(C.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(vl,{size:4}),Ke.createElement(Mv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement(Dv,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:f},bn.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(tf,"AddCustomTokenPage");import{i18n as oc}from"@lingui/core";import{useManager as Nb}from"@rango-dev/queue-manager-react";import{Alert as Wb,Button as Pb,css as rc,Divider as nc,IconButton as Kg,styled as Lb,Typography as Bb,WalletIcon as _b}from"@rango-dev/ui";import $e,{useEffect as Ca,useLayoutEffect as Mb,useRef as Db,useState as xr}from"react";import{useNavigate as $b}from"react-router-dom";import{i18n as Ko}from"@lingui/core";import{Alert as pE,BalanceErrors as uE,Button as If,ChevronLeftIcon as dE,Divider as Nl,MessageBox as mE,Typography as Wl}from"@rango-dev/ui";import ae,{useCallback as fE,useEffect as Zi,useMemo as gE,useState as An}from"react";import{useNavigate as hE}from"react-router-dom";function oe(t){we.emit("uiEvent",t)}r(oe,"emitUiEvent");function of(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};oe({type:t.type,payload:n}),o||e()}r(of,"emitPreventableEvent");function xn(t){we.emit("quoteEvent",t)}r(xn,"emitQuoteEvent");import{i18n as Il}from"@lingui/core";import{Alert as Yv,ChevronDownIcon as Zv,CloseIcon as Jv,Divider as pf,IconButton as uf,PasteIcon as Rv,Typography as eE,WalletIcon as tE}from"@rango-dev/ui";import Me,{useEffect as df,useRef as mf}from"react";import Xi,{useRef as jv}from"react";import*as In from"@radix-ui/react-collapsible";import{keyframes as nf,styled as Vi}from"@rango-dev/ui";var El=300,Vv=nf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Kv=nf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),rf=Vi(In.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),bl=Vi(In.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Ki=Vi(In.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Vv} ${El}ms ease-out`},false:{animation:`${Kv} ${El}ms ease-out`}}}}),ji=Vi("div",{transition:`all ${El}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Yi(t){let{open:e,hasSelected:o,onOpenChange:n,children:i,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=jv(null);return Xi.createElement(rf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&Xi.createElement(bl,{className:"collapsible_trigger",onClick:a},s),Xi.createElement(Ki,{className:"collapsible_content",open:e},i),c==="bottom"&&Xi.createElement(bl,{className:"collapsible_trigger",onClick:a},s))}r(Yi,"CustomCollapsible");import{darkTheme as af,styled as xl,TextField as Xv}from"@rango-dev/ui";var sf=xl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),lf=xl(Xv,{backgroundColor:"$neutral100"}),cf=xl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${af} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${af} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function ff(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=mf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!i&&e&&!Lo(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"),C=r(()=>i?Me.createElement(uf,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(Jv,{size:12,color:"gray"})):d?null:Me.createElement(uf,{id:"widget-custom-destination-paste-icon-btn",onClick:f,variant:"ghost"},Me.createElement(Rv,{size:16})),"renderSuffix");df(()=>{!!u&&i===null&&(a(u),o(!0))},[u]);let T=mf(null);return df(()=>{if(!i){T.current=null;return}n&&Lo(e,i)&&T.current!==i&&(T.current=i,oe({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[i,n,e]),Me.createElement(sf,null,Me.createElement(Yi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(cf,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(tE,{size:18,color:"info"}),Me.createElement(pf,{size:4,direction:"horizontal"}),Me.createElement(eE,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Il.t("Send to a different address"))),Me.createElement(ji,{orientation:n?"up":"down"},Me.createElement(Zv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(lf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:i?"8px":"5px"},autoFocus:!i,placeholder:Il.t("Enter {blockchainName} address",{blockchainName:l}),value:i||"",suffix:C(),onChange:y=>{let k=y.target.value;a(k)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(pf,{size:4}),Me.createElement(Yv,{variant:"alarm",type:"error",title:Il.t({values:{destination:i},id:"Address {destination} doesn't match the blockchain address pattern."})})))}r(ff,"CustomDestination");import{css as oE,IconButton as nE,SelectableWalletButton as rE,styled as So}from"@rango-dev/ui";var gf=So("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),hf=So("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),yf=So(rE,{justifyContent:"center"}),Sf=So("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Cf=So(nE,{position:"absolute",left:"$20"}),Tf=So("div",{paddingTop:"$20"}),kf=oE({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),wf=So("div",{display:"flex"}),vf=So("div",{overflow:"visible",width:"100%"});import{i18n as Ef}from"@lingui/core";import{warn as iE}from"@rango-dev/logging-core";import{makeInfo as aE,SelectableWallet as sE,Typography as bf,WalletState as hr}from"@rango-dev/ui";import Vo,{useEffect as lE,useState as xf}from"react";var cE=7;function Al(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:i,limit:a,onShowMore:s}=t,c=re.use.isActiveTab(),{connectedWallets:l}=S(),[p,u]=xf(),{list:d}=xt({chain:e}),[m,h]=xf(d),g=d.length,f=a&&g-a>0;return lE(()=>{h(C=>{let T=d.findIndex(y=>n(y.type,e));return f&&T>1?[d[T]].concat(d.filter((y,k)=>k!==T)):C.map(y=>d.find(k=>k.type===y.type)??y)})},[JSON.stringify(d)]),Vo.createElement(Vo.Fragment,null,m.slice(0,a).map(C=>{let T=xu({connectedWallets:l,walletType:C.type,chain:e}),y=C.state===hr.CONNECTED||C.state===hr.PARTIALLY_CONNECTED,k=T?po(T,cE):"",w=y&&!!C.needsNamespace&&!k,v=r(async()=>{C.state===hr.DISCONNECTED||w?u(C):i({walletType:C.type,chain:e,address:T??""})},"onSelectableWalletClick"),N=aE(C.state),I=r(()=>w?Ef.t("Chain not connected"):k||N.description,"getWalletDescription"),b=r(()=>C.state===hr.CONNECTED||C.state===hr.PARTIALLY_CONNECTED?w?"neutral600":"neutral700":N.color,"getWalletDescriptionColor");return Vo.createElement(sE,{key:C.type,id:"widget-wallets-list-selectable-wallet-btn",description:I(),descriptionColor:b(),onClick:v,selected:n(C.type,e),disabled:!c,...C})}),Vo.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):iE(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),f&&Vo.createElement(yf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Vo.createElement(bf,{variant:"label",size:"medium"},Ef.t("Show more wallets"),Vo.createElement(bf,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}r(Al,"WalletList");var yE=2;function Af(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:i,loading:a}=t,s=hE(),c=S().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:m,setCustomDestination:h}=z()(),{config:g,connectedWallets:f,setWalletsAsSelected:C}=S(),[T,y]=An(""),[k,w]=An([]),[v,N]=An(""),[I,b]=An(!!m),x=gE(()=>Mo({filter:"all",quote:l}),[l]),E=Mo({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=fE(()=>f.filter(B=>B.selected&&x.includes(B.chain)),[f,x]),[q,j]=An(O()),[ee,P]=An([]),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"),Gt=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(T&&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??""}}),C(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(Bp(B.error)),!B.error&&!V?.balance?.messages.length?He():w(V?.balance?.messages??[])},"onConfirmWallets");Zi(()=>{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]),Zi(()=>{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??"";Zi(()=>{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]),Zi(()=>{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:!T,container:ct,...!T&&{styles:{container:{height:"100%"}},footer:ae.createElement(wf,null,ae.createElement(If,{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"},Ko.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(Sf,null,ae.createElement(Cf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(dE,{size:16})),ae.createElement(Wl,{variant:"headline",size:"small"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:Tt(T,c)}})))},anchor:"center"},ae.createElement(ie,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:Y,onClose:w.bind(null,[]),container:ct},ae.createElement(mE,{title:Ko.t("Insufficient account balance"),type:"error",description:ae.createElement(uE,{messages:k??[]})},ae.createElement(If,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{oe({type:"gasWarningBypassed",payload:{routeId:St}}),He()}},Ko.t("Proceed anyway")))),T&&ae.createElement(Tf,null,ae.createElement("div",{className:kf()},ae.createElement(Al,{chain:T,quoteChains:x,isSelected:ue,selectWallet:be,onShowMore:()=>y(T),onConnect:B=>{Z(T,B)}}))),!T&&ae.createElement(ae.Fragment,null,v&&ae.createElement(ae.Fragment,null,ae.createElement(pE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:Ko.t(v)}),ae.createElement(Nl,{size:12})),ae.createElement(vf,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(gf,null,ae.createElement(Wl,{variant:"title",size:"xmedium"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:Q?.shortName}})),ae.createElement(Wl,{variant:"label",color:"$neutral700",size:"medium"},Ko.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:Q?.shortName}}))),ae.createElement(Nl,{size:24}),ae.createElement(hf,null,ae.createElement(Al,{chain:B,quoteChains:x,isSelected:ue,selectWallet:be,limit:yE,onShowMore:()=>y(Q?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(Nl,{size:32}),J&&ae.createElement(ff,{blockchain:L,open:I,handleOpenChange:Gt}))}))))}r(Af,"ConfirmWalletsModal");import{i18n as HE}from"@lingui/core";import{Alert as qE,Button as GE,Divider as jf,InfoIcon as VE}from"@rango-dev/ui";import Ue from"react";import{Alert as TE,Button as kE,Divider as Bl,NoRouteIcon as wE,RefreshIcon as vE,Typography as Mf}from"@rango-dev/ui";import mt from"react";import{i18n as Nf}from"@lingui/core";var SE=24,CE=60;function Wf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:te().genericServerError,action:{onClick:n,title:Nf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:te().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Nf.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(Wf,"makeInfo");var Pl=(o=>(o[o.small=SE]="small",o[o.large=CE]="large",o))(Pl||{}),Ll=(o=>(o.small="small",o.large="medium",o))(Ll||{});import{styled as Ji}from"@rango-dev/ui";var Pf=Ji("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Lf=Ji("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Bf=Ji("div",{variants:{size:{small:{width:"100%"},large:{}}}}),_f=Ji("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=Wf(o,a,()=>s(c,!0),e);return i&&(l.alert=null),mt.createElement(Pf,{id:"widget-no-result-container"},mt.createElement(wE,{size:Pl[n],color:"gray"}),mt.createElement(Bl,{size:4}),mt.createElement(Mf,{variant:"title",size:Ll[n]},te().noResultError.title),n==="large"&&mt.createElement(Bl,{size:4}),!!l.description&&mt.createElement(Lf,{size:n},mt.createElement(Mf,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement(Bl,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Bf,{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(kE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement(_f,null,mt.createElement(vE,{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 PE,Divider as LE,MessageBox as BE,Typography as _E,WarningIcon as ME}from"@rango-dev/ui";import Jt from"react";import{InfoIcon as IE,Tooltip as AE,Typography as NE}from"@rango-dev/ui";import Nn from"react";import{Button as EE,darkTheme as bE,styled as jo,Typography as xE}from"@rango-dev/ui";var Df=jo("div",{width:"100%"}),_l=jo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),$f=jo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${bE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ff=jo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),Of=jo(xE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Uf=jo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),zf=jo(EE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var WE=35;function Qf(t){let{title:e,value:o,valueColor:n}=t,i=W();return Nn.createElement($f,null,Nn.createElement(NE,{size:"medium",variant:"label",className:"_title"},e),Nn.createElement(Ff,null,Nn.createElement(Of,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>WE&&Nn.createElement(AE,{content:o,container:i},Nn.createElement(IE,{size:12,color:"gray"}))))}r(Qf,"QuoteErrorsModalItem");function Hf(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 Jt.createElement(ie,{id:"widget-high-value-loss-warning-modal",footer:Jt.createElement(PE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Jt.createElement(ME,null),fullWidth:!0,disabled:a,onClick:n},te().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Jt.createElement(BE,{type:s,title:te().highValueLossError.impactTitle,description:te().highValueLossError.description}),Jt.createElement(_l,null,Jt.createElement(LE,{size:"4"}),Jt.createElement(_E,{size:"small",variant:"title"},Sr.t("Details")),Jt.createElement(_l,null,c.map((l,p)=>Jt.createElement(Qf,{key:p,...l})))))}r(Hf,"HighValueLossWarningModal");import{i18n as Wn}from"@lingui/core";function qf(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=Wn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Wn.t("Increase")),o;if(t){switch(t.type){case 0:{Zt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=te().highValueLossError.title;break}case 4:{o.title=Wn.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=Wn.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=Wn.t("Increase");break}case 3:{o.title=Wn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}r(qf,"makeAlerts");function Gf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}r(Gf,"getRequiredSlippage");import{i18n as Pn}from"@lingui/core";import{Button as DE,Divider as Ml,MessageBox as $E,WarningIcon as FE}from"@rango-dev/ui";import ko from"react";import{useNavigate as OE}from"react-router-dom";function Vf(t){let{open:e,onClose:o,onConfirm:n,warning:i,confirmationDisabled:a}=t,s=OE();return ko.createElement(ie,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},ko.createElement($E,{type:"warning",title:i.type===3?Pn.t("High slippage"):Pn.t("Low slippage"),description:i.type===3?Pn.t("Caution, your slippage is high. Your trade may be front run."):Pn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:i.minRequiredSlippage}})},ko.createElement(Ml,{size:18}),ko.createElement(Ml,{size:32}),ko.createElement(zf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},ko.createElement(FE,{color:"white",size:16}),Pn.t("Swap anyway")),ko.createElement(Ml,{size:10}),ko.createElement(DE,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Pn.t("Change Slippage"))))}r(Vf,"SlippageWarningModal");import{Button as UE,MessageBox as zE,WarningIcon as QE}from"@rango-dev/ui";import Ri from"react";function Kf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:i}=t;return Ri.createElement(ie,{id:"widget-unknown-price-warning-modal",footer:Ri.createElement(UE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ri.createElement(QE,null),fullWidth:!0,disabled:i,onClick:n},te().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},Ri.createElement(zE,{type:"warning",title:te().unknownPriceError.impactTitle,description:te().unknownPriceError.description}))}r(Kf,"UnknownPriceWarningModal");function Cr(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=qf(e,o?.type===3||o?.type===4?o:null);f&&!n&&(f.action=null);let C=!!f&&!s,T=r(y=>{if(y==="change-slippage"){let k=o?.type===3||o?.type===4?o:null,w=Gf(e,k);m?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,g&&Ue.createElement(Ue.Fragment,null,Ue.createElement(jf,{size:10}),Ue.createElement(yr,{skipAlerts:s,error:o,fetch:c})),C&&Ue.createElement(Df,null,Ue.createElement(jf,{size:10}),Ue.createElement(qE,{id:"widget-quote-warning-and-errors-alert",title:f.title,type:f.alertType,variant:"alarm",...f.action==="show-info"&&{action:Ue.createElement(Uf,{onClick:l},Ue.createElement(VE,{size:12,color:"gray"}))},...(f.action==="change-settings"||f.action==="change-slippage")&&{action:Ue.createElement(GE,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:f.alertType,onClick:()=>T(f.action)},f.actionButtonTitle||HE.t("Change"))}})),e&&Ue.createElement(Ue.Fragment,null,e.type===0&&Ue.createElement(Hf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(Vf,{...h,warning:e}),e.type===1&&Ue.createElement(Kf,{...h,warning:e})))}r(Cr,"QuoteWarningsAndErrors");import wb from"bignumber.js";import ga from"react";import{i18n as Xo}from"@lingui/core";import{Alert as pb,CampaignQuoteTag as ub,Divider as Bn,FullExpandedQuote as db,InfoIcon as Vl,NumericTooltip as Kl,QuoteTag as mb,StepDetails as fb,TokenAmount as gb,Typography as _n,useIsTruncated as jl}from"@rango-dev/ui";import Xl from"bignumber.js";import F,{useRef as da,useState as hb}from"react";import{styled as Dl}from"@rango-dev/ui";var $l=Dl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Xf=Dl("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),Yf=Dl("div",{width:"100%",display:"flex"});import*as ea from"@radix-ui/react-collapsible";import{Button as KE,css as ta,darkTheme as De,Image as Zf,styled as je,Typography as Fl}from"@rango-dev/ui";var jE=300,Jf=je(ea.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"}}]}),Rf=ta({padding:"$10 $15"}),eg=je(KE,{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"}}}),tg=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"}}}}]}),og=ta({width:"100%",padding:"$15 $15 $10 $15"}),ng=ta({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),Ln=ta({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),rg=je(ea.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:{[`& ${Zf}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Zf}`]:{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"}}}),ig=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"}}}}),ag=je(Ki,{width:"100%",background:"inherit"}),Ol=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${jE}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"}),sg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),lg=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),Ul=je(Fl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"$30"}),zl=je(Fl,{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"}}}}),cg=je("div",{display:"flex"}),oa=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),pg=je(Fl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ft}from"@lingui/core";import{ChevronDownIcon as YE,CloseIcon as ZE,Divider as ia,IconButton as JE,NumericTooltip as RE,QuoteCost as eb,Typography as Nt}from"@rango-dev/ui";import tb from"bignumber.js";import R,{useState as fg}from"react";import{css as XE,styled as na}from"@rango-dev/ui";var ra=na("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Hl=na("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),ug=na("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),dg=na("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),mg=XE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var ob=r(t=>t.fee.isZero()?null:R.createElement(ra,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 ql(t){let[e,o]=fg(!1),[n,i]=fg(!1),{steps:a,quote:s,time:c,feeWarning:l,timeWarning:p,showModalFee:u,fullExpandedMode:d=!1}=t,m=s?.swaps??[],h=d?_o():W(),g=Ud(m),f=Object.values(g.payable).reduce((T,y)=>T.plus(Qs(y)),new tb(0)),C=M(f,2,2);return R.createElement(R.Fragment,null,R.createElement(eb,{onClickFee:u?T=>{T.stopPropagation(),!e&&s&&oe({type:"routeFeeViewed",payload:{routeId:s.requestId}}),o(!e)}:void 0,fee:C,feeWarning:l,timeWarning:p,time:c,steps:a,tooltipGas:u?Ft.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(dg,{style:{textAlign:d?"left":"center"}},R.createElement(Nt,{variant:"title",size:"medium"},Ft.t("Gas & Fee Explanation")),R.createElement(JE,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(ZE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(ug,null,R.createElement(Nt,{variant:"title",size:"small"},Ft.t("Details")),R.createElement(ia,{size:10}),Object.entries(g.payable).flatMap(([T,y])=>y.map((k,w)=>{let v=`payable-fee-${w}`,N=zs(k);return R.createElement(ra,{key:v},R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},Ds(T,Ft.t)),R.createElement(RE,{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(ra,{className:"total_payable_fee"},R.createElement(Nt,{variant:"label",size:"medium"},Ft.t("Total Payable Fee")),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(f,4,4))),R.createElement(Hl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Yi,{triggerAnchor:"bottom",onClickTrigger:()=>i(T=>!T),trigger:R.createElement("div",{className:mg()},R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},n?Ft.t("Hide non-payable fees"):Ft.t("Show non-payable fees")),R.createElement(ia,{size:4,direction:"horizontal"}),R.createElement(ji,{orientation:n?"up":"down"},R.createElement(YE,{size:12,color:"gray"}))),open:n},R.createElement(Nt,{size:"small",variant:"title"},Ft.t("Description")),R.createElement(ia,{size:4}),R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},Ft.t(`The following fees are considered in the transaction output and
3
+ you won\u2019t need to pay extra gas for them.`)),R.createElement(ia,{size:10}),Object.entries(g.nonePayable).map(([T,y],k)=>{let w=Qs(y),v=Ds(T,Ft.t),N=`non-payable-fee-${k}`;return R.createElement(ob,{key:N,fee:w,label:v})}),R.createElement(Hl,null)))))}r(ql,"QuoteCostDetails");import{i18n as yg}from"@lingui/core";import{TokenAmount as Sg}from"@rango-dev/ui";import aa from"react";import{css as nb,styled as rb}from"@rango-dev/ui";var gg=rb("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),hg=nb({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function Tr(t){let{from:e,to:o,percentageChange:n,warningLevel:i}=t;return aa.createElement(gg,null,aa.createElement(Sg,{direction:"horizontal",label:yg.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}}),aa.createElement("div",{className:hg()}),aa.createElement(Sg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:yg.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(Tr,"QuoteSummary");import{i18n as vg}from"@lingui/core";import{ChevronDownIcon as sb,ChevronRightIcon as lb,Divider as Gl,Image as cb,Tooltip as ua,Typography as la}from"@rango-dev/ui";import H from"react";import{useLayoutEffect as ib,useState as kr}from"react";var Cg=480,Tg=768,kg=1024,wg=1200,ab=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<=Cg),n(window.innerWidth>Cg&&window.innerWidth<=Tg),a(window.innerWidth>Tg&&window.innerWidth<=kg),c(window.innerWidth>kg&&window.innerWidth<=wg),p(window.innerWidth>wg)},"handleResize");return ib(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:i,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),sa=ab;var ca=4,pa=6,wr=r(t=>{let{content:e,src:o,className:n,open:i,state:a,container:s}=t,c=s||W();return H.createElement(ua,{container:c,side:"bottom",sideOffset:4,open:i,content:e},H.createElement(ig,{className:n,state:a},H.createElement(cb,{src:o,size:16})))},"ImageComponent");function Eg(t){let{quoteRef:e,selected:o,setExpanded:n,steps:i,expanded:a,type:s,container:c}=t,l=c||W(),p=i.length,u=Wd(i),{isTablet:d,isMobile:m}=sa();return H.createElement(rg,{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:Ln()},H.createElement(la,{variant:"body",size:"xsmall"},vg.t("Via:")),H.createElement(Gl,{direction:"horizontal",size:4}),i.map((h,g)=>{let f=`item-${g}`,C=H.createElement(Ol,null,H.createElement(lb,{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,C)):H.createElement(H.Fragment,{key:f},p<=ca||p>ca&&g<ca-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,C)):g===ca-1&&H.createElement(ua,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:Ln()},C,i.map((T,y)=>{let k=`image-${y}`;return y>=g&&H.createElement(H.Fragment,{key:k},H.createElement(wr,{content:T.swapper.displayName,src:T.swapper.image??"",state:T.state,open:!1}),y!==p-1&&H.createElement(H.Fragment,null,C))}))},H.createElement(Ql,{state:i.find((T,y)=>y>=g&&(T.state==="error"||T.state==="warning"))?.state},H.createElement(la,{size:"xsmall",variant:"body"},"+",p-g))))})),H.createElement("div",{className:Ln()},H.createElement("div",{className:"blockchains_section"},H.createElement("div",{className:Ln()},H.createElement(la,{variant:"body",size:"xsmall"},vg.t("Chains:")),H.createElement(Gl,{direction:"horizontal",size:4}),u.map((h,g)=>H.createElement(H.Fragment,{key:h.displayName},u.length<=pa||u.length>pa&&g<pa-1?H.createElement(ua,{container:l,side:"bottom",content:h.displayName,sideOffset:4},H.createElement(wr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===pa-1&&H.createElement(ua,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:Ln()},u.map((f,C)=>C>=g&&H.createElement(wr,{key:f.displayName,content:"",src:f.image??"",open:!1,className:C>g?"blockchainImage":"",container:c})))},H.createElement(Ql,{className:"blockchainImage"},H.createElement(la,{size:"xsmall",variant:"body"},"+",u.length-g))))),H.createElement(Gl,{direction:"horizontal",size:32}))),H.createElement(Ol,{orientation:a?"up":"down"},H.createElement(sb,{size:12,color:"black"}))))}r(Eg,"QuoteTrigger");function Yl(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:C,slippage:T}=S(),y=C||T,[k,w]=hb(t.expanded),v=da(null),N=M(n.value,6,6),I=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:b}}=S(),x=Yt(o.usdValue,n.usdValue??null),E=M(x,2,2),L=Zt(x??0),A=r((G,J)=>G.map((U,de)=>{let qe,ot=i?.type===3&&i.swap.swapperId===U.swapperId,co=i?.type===4&&!!i.recommendedSlippages?.[de],Qn=a?.type===2&&!!a.recommendedSlippages?.[de],No=ot||co,ei=Qn;No?qe="error":ei&&(qe="warning");let rn=No?Xo.t("Slippage Error"):Xo.t("Slippage Warning");return ot&&(rn=Xo.t("Bridge Limit Error")),{swapper:{displayName:Vn(U.swapperId,f)??"",image:U.swapperLogo},from:{token:{displayName:U.from.symbol,image:U.from.logo},chain:{displayName:Tt(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 Xl(U.from.usdPrice??0).multipliedBy(U.fromAmount).toString()}},to:{token:{displayName:U.to.symbol,image:U.to.logo},chain:{displayName:Tt(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 Xl(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:qe,alerts:No||ei?F.createElement(Xf,{dense:d},F.createElement(pb,{variant:"alarm",type:No?"error":"warning",title:rn,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(Yf,null,ot&&F.createElement("div",null,F.createElement(_n,{size:"xsmall",variant:"body",color:"neutral900"},i.fromAmountRangeError),F.createElement(Bn,{direction:"vertical",size:2}),F.createElement(_n,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Xo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(co||Qn)&&!ot&&F.createElement("div",null,F.createElement(_n,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...i?.type===4&&{minRequiredSlippage:i.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(Bn,{direction:"vertical",size:2}),F.createElement(_n,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Xn(U.estimatedTimeInSeconds),fee:M(Us(U,g),2,2),internalSwaps:U.internalSwaps?A(U.internalSwaps):void 0}}),"getQuoteSteps"),O=A(e?.swaps??[]),q=O.length,j=m||W(),ee=Ld(t.quote.tags||[]),P=!!u,Z=ci(e?.swaps),Y=Xn(Z),ue=Pi(e?.swaps??[],g),Ee=M(ue,2,2),Gt=ue.gte(new Xl(wd)),be=Z/Ed>=vd,He=da(null),Xe=jl(o.value,He),St=da(null),ct=jl(n.value,St),B=da(null),V=jl(I,B),Q=O[q-1],X=O[0];return!X||!Q?null:d?F.createElement(db,{selected:c,fee:Ee,time:Y,tooltipContainer:_o(),steps:O,tags:ee,campaignTag:b?.campaignTag,id:"widget-quote-full-expanded-quote-container",quoteCost:F.createElement(ql,{quote:e,fullExpandedMode:!0,time:Y,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:E,warningLevel:L,outputPrice:{value:N,usdValue:I,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(tg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:og()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(cg,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&b?.campaignTag?F.createElement(ub,{routeTag:G,...b.campaignTag}):F.createElement(mb,{label:G.label,value:G.value}),F.createElement(Bn,{size:4,direction:"horizontal"}))})),F.createElement(oa,null),!P&&F.createElement(Bn,{size:4})):null,F.createElement("div",{id:"portal-root",className:ng()},F.createElement(ql,{quote:e,time:Y,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),P&&F.createElement(eg,{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(_n,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Xo.t("See All Routes")))),s==="basic"&&F.createElement(lg,null,F.createElement(zl,{ref:He,size:"small",variant:"body"},o.value),Xe&&F.createElement(Kl,{content:o.value,container:j,open:o.value?void 0:!1},F.createElement(Vl,{size:12,color:"gray"})),F.createElement(Ul,{size:"small",variant:"body"},O[0]?.from.token.displayName),F.createElement(_n,{size:"small",variant:"body"},"="),F.createElement(zl,{ref:St,size:"small",variant:"body"},n.value),ct&&F.createElement(Kl,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(Vl,{size:12,color:"gray"})),F.createElement(Ul,{size:"small",variant:"body"},Q?.to.token.displayName),F.createElement(Bn,{size:2,direction:"horizontal"}),F.createElement(pg,{ref:B,color:"$neutral600",size:"xsmall",variant:"body"},`($${I})`),V&&F.createElement(Kl,{content:n.usdValue,container:j},F.createElement(Vl,{size:12,color:"gray"}))),s==="list-item"&&F.createElement(gb,{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(Tr,{from:X.from,to:Q.to,percentageChange:E,warningLevel:L}),F.createElement(Bn,{size:4}))),F.createElement(Jf,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:w},F.createElement(Eg,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:k,steps:O}),F.createElement(ag,{open:k},F.createElement(sg,null),F.createElement("div",{className:Rf()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(fb,{type:"quote-details",className:"widget-quote-step-details-container",key:U,tooltipContainer:j,step:G,hasSeparator:J!==O.length-1,state:G.state})})))))}r(Yl,"Quote");import{Divider as Tb,Skeleton as kb}from"@rango-dev/ui";import oo from"react";import{darkTheme as yb,styled as ma}from"@rango-dev/ui";var bg=ma("div",{$$color:"$colors$neutral100",[`.${yb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),xg=ma("div",{paddingTop:"$2"}),Ig=ma("div",{paddingLeft:"$8"}),Ag=ma("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as Fg,Divider as Wt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as Sb,styled as to}from"@rango-dev/ui";var Zl=to("div",{display:"flex"}),Ng=to("div",{padding:"$10 $0 $20"}),Wg=to("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),Pg=to("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Lg=to("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Bg=to("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),_g=to("div",{width:"65%",display:"flex",justifyContent:"start"}),Mg=to("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Dg=to("div",{padding:"$15 $0 $15 $0"}),$g=Sb({display:"flex",justifyContent:"space-between",alignItems:"center"});function vr(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(Lg,null,K.createElement(_g,null,K.createElement(Fg,{loading:!0,size:"medium"}),K.createElement(Wt,{size:8,direction:"horizontal"}),K.createElement(Mg,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(Zl,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(oa,null),!i&&K.createElement(Wt,{size:4})),K.createElement("div",{className:$g()},K.createElement(Zl,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(Ng,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Wg,null,K.createElement(Pg,null,K.createElement(Fg,{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(Dg,null,n,K.createElement(Bg,null),n),K.createElement(Wt,{size:12})))}r(vr,"QuoteSummarySkeleton");import{ChainToken as Hg,Divider as Rl,NextIcon as Cb,Skeleton as fa}from"@rango-dev/ui";import Be from"react";import{styled as Er}from"@rango-dev/ui";var Og=Er("div",{display:"flex",alignItems:"start"}),Ug=Er("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Jl=Er("div",{display:"flex",alignItems:"center",flexGrow:1}),zg=Er("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Qg=Er("div",{display:"flex",alignItems:"center"});function Ot(t){let{separator:e=!0}=t;return Be.createElement(Be.Fragment,null,Be.createElement(Qg,null,Be.createElement(fa,{height:22,width:22,variant:"circular"}),Be.createElement(Rl,{direction:"horizontal",size:8}),Be.createElement(fa,{height:15,width:148,variant:"rounded"})),Be.createElement(Og,null,Be.createElement(Ag,{hideSeparator:!e}),Be.createElement(Ug,{extraSpace:e},Be.createElement(Jl,null,Be.createElement(Hg,{size:"small",loading:!0}),Be.createElement(Rl,{direction:"horizontal",size:8}),Be.createElement(fa,{height:12,variant:"rounded"})),Be.createElement(zg,null,Be.createElement(Cb,{color:"gray",size:16})),Be.createElement(Jl,null,Be.createElement(Hg,{size:"small",loading:!0}),Be.createElement(Rl,{direction:"horizontal",size:8}),Be.createElement(fa,{height:12,variant:"rounded"})))))}r(Ot,"StepSkeleton");function br(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return oo.createElement(bg,{expanded:o,rounded:e!=="basic"},oo.createElement(vr,{type:e,tagHidden:n}),oo.createElement(xg,null,oo.createElement(kb,{height:15,variant:"rounded"})),o&&oo.createElement(Ig,null,oo.createElement(Tb,{size:24}),oo.createElement(Ot,null),oo.createElement(Ot,null),oo.createElement(Ot,{separator:!1})))}r(br,"QuoteSkeleton");function Yo(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:C}=z()(),T=e?.outputAmount?new wb(e?.outputAmount):null,y=e?it(e):null,w=!(i&&(i.type===0||i.type===1))&&e&&!n;return n?ga.createElement($l,null,ga.createElement(br,{tagHidden:c,type:o,expanded:s})):w?ga.createElement($l,{onClick:()=>l?.(e),id:d},ga.createElement(Yl,{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:C?.toString()??""},output:{value:T?.toString()??"",usdValue:y?.toString()??""}})):null}r(Yo,"QuoteInfo");import{warn as xb}from"@rango-dev/logging-core";import{calculatePendingSwap as Ib}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Ab}from"react";import{useRef as vb,useState as Eb}from"react";var bb=2e3;function ha({request:t}){let[e,o]=Eb(!1),n=vb(null),i=r(()=>n.current?.abort(),"cancelFetch"),a=r(async c=>(await new Promise(l=>setTimeout(l,bb)),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(ha,"useFetch");function qg(){let{fetch:t,loading:e,cancelFetch:o}=ha({request:async(n,i)=>await dt().confirmRoute(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(qg,"useFetchConfirmQuote");function ya(t){if(!t.swaps)throw new Error(te().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=ec(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}r(ya,"throwErrorIfResponseIsNotValid");function ec(t){if($d(t)){let{swap:n,fromAmountRangeError:i,recommendation:a}=Fd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:i}}:null}let o=zd(t);if(o){let n=Li(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}r(ec,"getQuoteError");function Gg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:i,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=kn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=qd(e,i,n.blockchains);return p.length===0||(c.balance={messages:p}),c}r(Gg,"generateWarnings");function Sa(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(Sa,"handleQuoteErrors");function tc(){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:C,cancelFetch:T,loading:y}=qg();return Ab(()=>T,[]),{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 C(b,!0).then(x=>{let{result:E}=x;if(!E)throw new Error(x.error??"Error fetching updated quote");ya({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=Gg({previousQuote:a??void 0,currentQuote:L,meta:{blockchains:d},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=Ib({inputAmount:o.toString(),bestRoute:E,wallets:Hd(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=Sa(x);return E.type!==2&&xb(new Error("confirm swap error"),{tags:{...E,type:Ye[E.type],initialQuote:a,requestBody:b}}),{swap:null,error:E,warnings:null}}},"fetch"),cancelFetch:T}}r(tc,"useConfirmSwap");function Vg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}r(Vg,"toNumberOrNull");function Mn(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=zo(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:Vg(t.requestAmount),destinationTokenAmount:Vg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:i?i.toNumber():null}}r(Mn,"buildSwapEstimatePayload");var Fb=Lb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Kg}`]:{width:"$48",height:"$48"}}),Ob=rc({flexGrow:1,paddingRight:"$10"}),Ub=rc({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),zb=rc({display:"flex",justifyContent:"space-between",alignItems:"center"});function jg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:i,quoteWarningsConfirmed:a}=z()(),s=$b(),[c,l]=xr(""),p=!n,[u,d]=xr(!1),[m,h]=xr(!1),{isActiveTab:g}=re(),f=S().getDisabledLiquiditySources(),C=Db(f),{manager:T}=Nb(),{fetch:y,loading:k,cancelFetch:w}=tc(),[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 T?.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&&Nd(v.warnings.quote)&&!a?b(!0):(t&&oe({type:"swapStarted",payload:{...Mn(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");Ca(()=>{!!C.current.length&&!f.length&&O(),C.current=f},[f.length]),Ca(()=>{p&&w()},[p]),Ca(()=>{p&&d(p)},[p]),Ca(()=>{p||y({selectedWallets:o,customDestination:i}).then(P=>N(P)).catch(P=>console.error(P))},[]),Mb(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=v.warnings?.quote??null,j=v.error,ee=[];if(c&&ee.push($e.createElement(Wb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let P=`../${$.settings}`;ee.push($e.createElement(Cr,{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:oc.t("Confirm Swap"),onWallet:()=>{let P=`../${$.wallets}`;s(P)}},footer:$e.createElement(Fb,null,$e.createElement("div",{className:Ob()},$e.createElement(Pb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||m,disabled:!!v.error||!g,onClick:A},oc.t("Start Swap"))),$e.createElement(Kg,{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(_b,{size:24})))},u&&$e.createElement(Af,{open:u,onClose:()=>d(!1),onCancel:w,loading:k,onCheckBalance:x}),$e.createElement(ce,null,$e.createElement("div",{className:zb()},$e.createElement(Bb,{variant:"title",size:"small"},oc.t("You get")),$e.createElement("div",{className:Ub()},$e.createElement(Ui,{onClick:!k&&!u&&!I?O:void 0}))),$e.createElement(nc,{size:"12"}),Tm(ee.map((P,Z)=>({element:P,key:`alert-${Z}`})),$e.createElement(nc,{size:10})),ee.length>0?$e.createElement(nc,{size:10}):null,$e.createElement(Yo,{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(jg,"ConfirmSwapPage");import{i18n as ro}from"@lingui/core";import{Button as hc,CustomTokensZeroStateDarkIcon as sx,CustomTokensZeroStateIcon as lx,DeleteIcon as cx,Divider as Pr,IconButton as px,MessageBox as ux,NotFound as dx,styled as Sc}from"@rango-dev/ui";import ye,{useState as yc}from"react";import{useNavigate as mx}from"react-router-dom";import{CloseIcon as Qb,IconButton as Hb,SearchIcon as qb,TextField as Gb}from"@rango-dev/ui";import Dn from"react";import{styled as Xg}from"@rango-dev/ui";var Yg=Xg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),Zg=Xg("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?Dn.createElement(Hb,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Dn.createElement(Qb,{color:"gray",size:10})):null;return p&&(m=p),Dn.createElement(Zg,null,Dn.createElement(Gb,{prefix:Dn.createElement(Yg,null,Dn.createElement(qb,{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 gc}from"@lingui/core";import{Button as Xb,CustomTokenWarning as Yb,darkTheme as ch,Divider as no,ExternalLinkIcon as Zb,Image as Jb,ListItem as Rb,NotFound as ex,PinIcon as tx,Skeleton as Zo,Typography as Nr,VirtualizedList as ox}from"@rango-dev/ui";import _,{useState as nx}from"react";import{useTranslation as rx}from"react-i18next";import{Divider as sh,ListItem as jb,Skeleton as Ar}from"@rango-dev/ui";import Lt from"react";import{css as $n,darkTheme as ic,ImageContainer as Vb,ListItemButton as Kb,styled as st,Typography as Jg}from"@rango-dev/ui";var ac=$n({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),sc=$n({position:"relative",height:12,width:"30%",maxWidth:"150px"}),lc=$n({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),cc=$n({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${ic} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),pc=$n({}),uc=$n(),Rg=st("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),dc=st("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Ta=st("ul",{flexGrow:1,height:"100%",padding:0,margin:0,display:"flex",flexDirection:"column",listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${sc}`]:{[`& .${cc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${pc}`]:{bottom:"-15px"},[`& .${ac}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${lc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),eh=st(Kb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),mc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),fc=st(Jg,{}),th=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${uc}`]:{$$color:"$colors$neutral600",[`.${ic} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ir=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),SV=st("div",{display:"flex",alignItems:"center"}),oh=st("div",{position:"relative",[`& ${Vb}`]:{borderRadius:"$xm",overflow:"hidden"}}),nh=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),rh=st(Jg,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),ih=st("a",{"& svg:hover":{color:"$colors$info"}}),ah=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":{[`.${ic} &`]:{color:"$foreground"}}}});function lh(t){return Lt.createElement(Ta,null,Array.from(Array(t.size),(e,o)=>Lt.createElement(jb,{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(sh,{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(sh,{size:4}),Lt.createElement(Ar,{variant:"text",size:"medium",width:90}))})))}r(lh,"LoadingTokenList");var ix=20,ax=r(t=>{let{address:e,name:o,url:n,token:i,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return _.createElement("div",{className:sc()},o?_.createElement("div",{className:ac()},o):_.createElement(dc,{className:lc()},_.createElement(Nr,{variant:"title",size:"xmedium"},i.symbol),_.createElement(no,{direction:"horizontal",size:4}),_.createElement(mc,{css:a},_.createElement(fc,{variant:"body",size:"xsmall",css:s},i.blockchain))),!!e&&_.createElement("div",{className:`${cc()} ${!o&&pc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",_.createElement(no,{size:4,direction:"horizontal"}),_.createElement(ih,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Zb,{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:C}=rx(),T=Ve(),[y,k]=nx(null),w=r(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):f({token:y,meta:{blockchains:u}})},"updateToken"),v=r(()=>{w(),T()},"handleImportToken"),N=r(x=>{if(x.customToken){let{customToken:L,...A}=x;return _.createElement(Xb,{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"},C("import")))}let E=mi(d(x));return s?s(x):m?_.createElement(Ir,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})):E&&_.createElement(th,null,_.createElement(rh,{variant:"title",size:"small"},E.amount),_.createElement("div",null),E.usdValue&&_.createElement(Nr,{variant:"body",className:uc(),size:"xsmall"},`$${E.usdValue}`))},"endRenderer"),I=r(()=>_.createElement(ox,{style:{flexGrow:1,minHeight:0},itemContent:x=>{let E=e[x];if(E==="skeleton")return _.createElement(Rb,{hasDivider:!0,start:_.createElement(Zo,{variant:"circular",width:35,height:35}),end:_.createElement(Ir,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Zo,{variant:"text",size:"large",width:90}),_.createElement(no,{size:4}),_.createElement(Zo,{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=nl(L.color,"main"),q={$$color:O.main150,[`.${ch} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${ch} &`]:{$$color:O.main150},color:"$$color"},ee=r(()=>{typeof E!="string"&&!E.customToken&&n?.(E)},"handleClick"),P=A?oi({contractAddress:A,blockchainMeta:L}):void 0;return _.createElement(ah,null,_.createElement(eh,{"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(oh,null,_.createElement(Jb,{src:E.image===""?ii:E.image,size:30}),t.type!=="custom-token"&&E&&h(E,t.type)&&_.createElement(nh,null,_.createElement(tx,{size:12,color:"gray"}))),title:E.name||!E.name&&!A?_.createElement(dc,null,_.createElement(Nr,{variant:"title",size:"xmedium"},E.symbol),_.createElement(no,{direction:"horizontal",size:4}),_.createElement(mc,{css:q},_.createElement(fc,{variant:"body",size:"xsmall",css:j},E.blockchain)),l&&E.warning&&_.createElement(_.Fragment,null,_.createElement(no,{direction:"horizontal",size:4}),_.createElement(Yb,{container:W()}))):void 0,description:typeof E!="string"&&L.info&&A&&P?ax({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?Po(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Nr,{variant:"label",size:"large"},gc.t("Select Token")),_.createElement(no,{size:4})),_.createElement(Rg,null,_.createElement(no,{size:4}),p==="loading"&&_.createElement(lh,{size:ix}),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(Ta,{as:"ul"},I())):!!o&&_.createElement(ex,{title:gc.t("No results found"),description:gc.t("Try using different keywords")}))))}r(Wr,"TokenList");var fx=Sc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),gx=Sc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),hx=Sc(px,{"&:hover":{"& svg":{color:"$secondary550"}}});function ph(){let[t,e]=yc(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:i,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=go({}),p=mx(),[u,d]=yc(!1),[m,h]=yc(),g=r(y=>{let k=y.target.value;e(k)},"handleSearch"),f=l==="dark",C=n.filter(y=>pt(y.symbol,t)||pt(y.address||"",t)||pt(y.name||"",t)),T=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 ye.createElement(se,{header:{title:ro.t("Custom Tokens")}},ye.createElement(ce,null,ye.createElement(fx,null,n.length?ye.createElement(ye.Fragment,null,ye.createElement(Pt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:ro.t("Search Token"),onChange:g}),ye.createElement(Pr,{size:16}),ye.createElement(Wr,{list:C,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>ye.createElement(hx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},ye.createElement(cx,{size:12,color:"gray"}))})):ye.createElement(gx,null,ye.createElement(dx,{icon:f?ye.createElement(sx,{size:200}):ye.createElement(lx,{size:200}),title:ro.t("No custom tokens"),description:ro.t("press the button to add your custom token")})),ye.createElement(Pr,{size:20}),ye.createElement(hc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},ro.t("Add Custom Token"))),ye.createElement(ie,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},ye.createElement(ux,{title:ro.t("Delete Custom Token"),type:"error",description:ro.t("Are you sure you want to Delete this Token?")},ye.createElement(Pr,{size:40}),ye.createElement(Pr,{size:10}),ye.createElement(hc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},ro.t("Yes, Delete it")),ye.createElement(Pr,{size:12}),ye.createElement(hc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},ro.t("No, Continue"))))))}r(ph,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as Dx}from"@rango-dev/queue-manager-react";import{Button as bc,darkTheme as $x,Divider as wo,MessageBox as Fx,NotFound as Ox,styled as xc,Tabs as Ux,Typography as va}from"@rango-dev/ui";import{TransactionStatus as _r}from"rango-types";import ne,{useMemo as Nh,useState as Mr}from"react";import{useNavigate as zx}from"react-router-dom";import{FilterIcon as vx,Popover as Ex}from"@rango-dev/ui";import Jo from"react";import{css as yx,darkTheme as ka,IconButton as Sx,styled as Lr}from"@rango-dev/ui";var Cc=Lr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${ka} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),uh=Lr(Sx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ka} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ka} &`]:{backgroundColor:"$neutral"},[`& ${Cc}::before`]:{backgroundColor:"$secondary100",[`.${ka} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),dh=Lr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),mh=Lr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),fh=yx({display:"flex",justifyContent:"space-between",alignItems:"center"}),gh=Lr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as hh}from"@lingui/core";import{Button as Cx,Divider as yh,ListItemButton as Tx,Radio as kx,RadioRoot as wx,Typography as Sh}from"@rango-dev/ui";import gt from"react";function Ch(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(mh,null,gt.createElement("div",{className:fh()},gt.createElement(Sh,{size:"small",variant:"body"},hh.t("Status")),gt.createElement(Cx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},hh.t("Reset"))),gt.createElement(yh,{size:10}),gt.createElement(wx,{value:e},gt.createElement(gh,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(yh,{direction:"horizontal",size:4}),gt.createElement(Sh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(kx,{value:n.id}),onClick:o})))))}r(Ch,"FilterSelectorContent");function Tc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:i,open:a}=t;return Jo.createElement("div",null,Jo.createElement(Ex,{open:a,align:"end",onOpenChange:o,container:W(),content:Jo.createElement(Ch,{list:i,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Jo.createElement(uh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Jo.createElement(Cc,{isSelect:!!n},Jo.createElement(vx,{size:16,color:"black"}),!!n&&Jo.createElement(dh,null)))))}r(Tc,"FilterSelector");import{i18n as Ix}from"@lingui/core";import{getCurrentStep as Ax}from"@rango-dev/queue-manager-rango-preset";import{Divider as Eh,GroupedVirtualizedList as Nx,Skeleton as Wx,SwapListItem as bh,Typography as Px}from"@rango-dev/ui";import et,{useCallback as xh,useEffect as Lx,useRef as Bx,useState as _x}from"react";function Th(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(Th,"calculateGroupsSoFar");import{css as bx,darkTheme as xx,styled as Br}from"@rango-dev/ui";var kc=bx(),kh=Br("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),wc=Br("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${kc}`]:{$$color:"$colors$neutral600",[`.${xx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),vc=Br("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),wh=Br("div",{gap:"$10",display:"flex",flexDirection:"column"}),vh=Br("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var Mx=10;function Ec(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:i}=t,[a,s]=_x([]),c=Bx(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=xh(Th,[]),m=xh(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,Mx),s(d(p,c.current)))},[e.length]);if(Lx(()=>{i||m()},[i,m]),i){let h=[1,2];return et.createElement(et.Fragment,null,[h,h].map((f,C)=>et.createElement(wc,{key:C},et.createElement(vc,null,et.createElement(Wx,{variant:"text",width:60,size:"small"}),et.createElement(Eh,{size:16})),et.createElement(Eh,{size:4}),et.createElement(wh,null,f.map((y,k)=>et.createElement(bh,{isLoading:!0,key:k}))))))}return et.createElement(Nx,{style:{flexGrow:1,minHeight:0},endReached:()=>{c.current<e.length&&m()},groupCounts:a,groupContent:h=>et.createElement(wc,null,et.createElement(vc,null,et.createElement(Px,{variant:"label",size:"medium",className:kc()},u[h]))),itemContent:(h,g)=>{let f=l[h];if(!f)return null;let C=Ax(f),T=f.steps[0],y=f.steps[f.steps.length-1];return!T||!y?null:et.createElement(kh,{key:f.requestId},et.createElement(bh,{className:"widget-history-group-list-swap-item-btn",requestId:f.requestId,creationTime:f.creationTime,status:f.status,onClick:o,currentStep:C,tooltipContainer:W(),onlyShowTime:u[g]===Ix.t("Today"),swapTokenData:{from:{token:{image:T.fromLogo,displayName:T.fromSymbol},blockchain:{image:T.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(Ec,"HistoryGroupedList");import{i18n as wa}from"@lingui/core";import Ih from"dayjs";var Ah=r(t=>{let e=new Map([["today",{title:wa.t("Today"),swaps:[]}],["week",{title:wa.t("This week"),swaps:[]}],["month",{title:wa.t("This month"),swaps:[]}],["year",{title:wa.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=Ih();t.forEach(l=>{let p=Number(l.creationTime),u=Ih(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 Qx=xc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),Hx=xc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),qx=xc("div",{"._typography":{color:"$neutral700",[`.${$x}&`]:{color:"$neutral900"}}}),Gx=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 Wh(){let t=zx(),{manager:e,state:o}=Dx(),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:C}=rt(),T=[{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=Nh(()=>!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)||Gx(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=Nh(()=>!n.some(b=>b.status===_r.SUCCESS||b.status===_r.FAILED),[n]);return ne.createElement(se,{header:{title:Fe.t("History"),suffix:ne.createElement(ho,null,ne.createElement(bc,{id:"widget-history-clear-btn",disabled:I,variant:"ghost",size:"xsmall",onClick:()=>m(!0)},ne.createElement(va,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},ne.createElement(ce,null,ne.createElement(Hx,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(wo,{size:10,direction:"horizontal"}),ne.createElement(Tc,{filterBy:p,open:s,onOpenChange:b=>c(b),onClickItem:b=>u(b),list:T})),ne.createElement(wo,{size:"16"}),C&&!l&&ne.createElement(ne.Fragment,null,ne.createElement(Ux,{items:y,onChange:b=>g(b.id),value:h,type:"secondary"}),ne.createElement(wo,{size:"12"})),ne.createElement(Qx,null,w&&ne.createElement(vh,null,ne.createElement(wo,{size:32}),ne.createElement(Ox,{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(Ec,{list:k,onSwapClick:t,groupBy:Ah,isLoading:l}))),ne.createElement(ie,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},ne.createElement(wo,{size:20}),ne.createElement(Fx,{type:"warning",title:Fe.t("Clear Transaction History"),description:ne.createElement(qx,null,ne.createElement(va,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ne.createElement(wo,{size:"24"}),ne.createElement(va,{variant:"body",size:"small"},Fe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ne.createElement(wo,{size:30}),ne.createElement(bc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:N},Fe.t("Yes, Clear the history")),ne.createElement(wo,{size:10}),ne.createElement(bc,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},ne.createElement(va,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}r(Wh,"HistoryPage");import{i18n as iy}from"@lingui/core";import{Button as II,Divider as Uc,styled as AI,WarningIcon as NI}from"@rango-dev/ui";import WI from"bignumber.js";import Ce,{useEffect as ay,useState as sy}from"react";import{useNavigate as PI}from"react-router-dom";import{i18n as Lh}from"@lingui/core";import{Alert as Kx,Divider as Ic,NoRouteIcon as jx,Typography as Xx}from"@rango-dev/ui";import Ro from"react";import{styled as Vx}from"@rango-dev/ui";var Ph=Vx("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Ac(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Vt(t,e)?Ro.createElement(Ph,null,Ro.createElement(Ic,{size:10}),Ro.createElement(jx,{size:24,color:"gray"}),Ro.createElement(Ic,{size:4}),Ro.createElement(Xx,{variant:"title",size:"small"},Lh.t("No Routes Found")),Ro.createElement(Ic,{size:4}),Ro.createElement(Kx,{title:Lh.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}r(Ac,"SameTokensWarning");import{Alert as Yx,Button as Zx}from"@rango-dev/ui";import _h from"react";import{i18n as Ea}from"@lingui/core";function Bh(t){let e=null;return t===yi?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:Ea.t("Reset"),title:Ea.t("Slippage cannot be set lower than 0.01%.")},e):t>pn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:Ea.t("Change"),title:Ea.t("Caution, your slippage is high!")},e):null}r(Bh,"makeAlerts");function Mh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:i}=S(),{onChangeSettings:a}=t,c=Bh(o!==null?o:e),l=r(p=>{p==="reset-slippage"?(n(hi),i(null)):p==="change-settings"&&a()},"onClickActionButton");return c?_h.createElement(Yx,{title:c.title,type:c.alertType,variant:"alarm",action:_h.createElement(Zx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}r(Mh,"SlippageWarningsAndErrors");import{i18n as oI}from"@lingui/core";import{IconButton as nI,ReverseIcon as rI,Skeleton as iI,Tooltip as aI,Typography as Dr}from"@rango-dev/ui";import ht from"react";import ba from"bignumber.js";function $h(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($h,"getSlippageColor");function Fh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new ba(e),i=new ba(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(Fh,"getUsdExchangeRate");function Oh(t,e){let o=new ba(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,ba.ROUND_DOWN).toFormat(2)}`}r(Oh,"formatTokenValueInUsd");import{darkTheme as eI,styled as Wc,Typography as tI}from"@rango-dev/ui";var Uh=Wc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),zh=Wc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${eI} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Pc=Wc(tI,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function Lc(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}=go({}),h=dn(d),g=m==="dark",f=n==="default",C={quoteError:a,slippageError:h?.type==="error"?h.message:null},T={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}=Fh({toTokenUsdPrice:x,fromTokenUsdPrice:b});return ht.createElement(Uh,null,ht.createElement(Dr,{variant:C||T?"label":"body",size:C||T?"medium":"small",color:$h({error:C,warning:T,isDarkTheme:g})},oI.t("Slippage:")," ",d,"%"),u?ht.createElement(iI,{height:16,width:104,variant:"rounded"}):b&&x&&ht.createElement(zh,null,ht.createElement(Dr,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Pc,{className:"rate-text",variant:"body",size:"small"},v.symbol),ht.createElement(nI,{id:"widget-home-page-change-rate-button",onClick:i},ht.createElement(rI,{size:14,color:"secondary"})),ht.createElement(aI,{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(Pc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement(Dr,{color:"neutral600",variant:"body",size:"small"},"~",Oh(Number(E),w.usdPrice))))}r(Lc,"SwapMetrics");import{i18n as dI}from"@lingui/core";import{Header as mI}from"@rango-dev/ui";import vo,{useEffect as fI,useState as gI}from"react";import{i18n as lI}from"@lingui/core";import{Divider as _c,FullExpandedQuote as cI,Typography as pI}from"@rango-dev/ui";import ve from"react";import{styled as Bc}from"@rango-dev/ui";var Qh=Bc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Hh=Bc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),qh=Bc("div",{width:"146px"});import{i18n as $r}from"@lingui/core";import{Select as sI}from"@rango-dev/ui";import Gh from"react";function xa(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 Gh.createElement(qh,null,Gh.createElement(sI,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:i=>{e("sortStrategy",i.value)},variant:"filled"}))}r(xa,"SelectStrategy");var Vh=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:C}=S(),{findToken:T}=S(),y=c||W(),k=!!p&&p.results.length,w=C??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 kn({currentQuote:E,userSlippage:w,findToken:T})},"getQuoteWarning"),I=g?.type===0||g?.type===1,b=p?.results?Wi(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Hh,null,ve.createElement(pI,{size:"xmedium",variant:"title"},lI.t("Sort by")),ve.createElement(xa,{container:y})),ve.createElement(_c,{size:"10"})),e&&Array.from({length:Vh},(x,E)=>ve.createElement(ve.Fragment,{key:E},s?ve.createElement(cI,{campaignTag:v?.campaignTag,loading:!0}):ve.createElement(br,{tagHidden:!1,type:"list-item",expanded:!1}),E!==Vh-1&&ve.createElement(_c,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?b.map((x,E)=>{let L=N(x),A=ec(x.swaps),O=b.length-1===E;return ve.createElement(ve.Fragment,{key:x.requestId},ve.createElement(Yo,{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(_c,{size:16}))}):I&&ve.createElement(Qh,null,ve.createElement(yr,{size:s?"large":"small",error:g,fetch:n}))))}r(Fr,"Quotes");import{darkTheme as uI,styled as Kh}from"@rango-dev/ui";var jh=Kh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${uI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Xh=Kh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var hI=100;function Mc(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:i,isVisible:a}=t,[s,c]=gI(!1),l=s?"":"is-hidden",{config:p}=S(),u=p?.variant==="full-expanded",d=_o();return fI(()=>{let m=null;return a?m=setTimeout(()=>{c(!0)},hI):(c(!1),m&&clearTimeout(m)),()=>{m&&clearTimeout(m)}},[a]),vo.createElement(jh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${qi()} widget-expanded-quotes-container`,id:wt.EXPANDED_BOX_ID},vo.createElement(mI,{title:dI.t("Routes"),suffix:vo.createElement(vo.Fragment,null,vo.createElement(xa,{container:d}),vo.createElement(Go,{container:d,onClickRefresh:i,hidden:["history","notifications","settings"]}))}),vo.createElement(Xh,null,vo.createElement(Fr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:_o(),onClickOnQuote:n,fullExpandedMode:u})))}r(Mc,"ExpandedQuotes");import{i18n as oy}from"@lingui/core";import{SwapInput as ny}from"@rango-dev/ui";import TI from"bignumber.js";import Or from"react";import{ReverseIcon as CI}from"@rango-dev/ui";import $c from"react";import{keyframes as yI,styled as Yh}from"@rango-dev/ui";var Dc=450,SI=yI({"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)"}}),Zh=Yh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Jh=Yh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${SI} ${Dc}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 Fc(){let t=z().use.switchFromAndTo();return $c.createElement(Zh,null,$c.createElement(Jh,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Dc),t()}},$c.createElement(CI,{size:12})))}r(Fc,"SwitchFromAndToButton");import{styled as Rh}from"@rango-dev/ui";var ey=Rh("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),ty=Rh("div",{position:"relative"});function Oc(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:C}=rt(),{connectedWallets:T,getBalanceFor:y}=S(),k=a?y(a):null,w=mi(k)?.amount??"0",v=k?new TI(k.amount).shiftedBy(-k.decimals):pe,N=!!s&&Iu(T,s.name),I=!Os(f,d,m),b=!Os(f,d,g),x=!m||!g||!g.gt(0)?null:Yt(m.toString(),g.toString());return Or.createElement(ey,null,Or.createElement(ty,null,Or.createElement(ny,{label:oy.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:T.length>0}),C==="swap"&&Or.createElement(Fc,null)),Or.createElement(ny,{selectionType:C==="swap"?"token":"chain",sharpBottomStyle:!i&&(!!f||e),label:oy.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(Yt(m,g),2,2),warningLevel:Zt(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(Oc,"Inputs");import{warn as kI}from"@rango-dev/logging-core";import{useCallback as wI,useEffect as vI,useRef as EI,useState as bI}from"react";function ry(){let{fetch:t,loading:e,cancelFetch:o}=ha({request:async(n,i)=>await dt().getAllRoutes(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(ry,"useFetchAllQuotes");var xI=600;function Ia({refetchQuote:t}){let{fetch:e,cancelFetch:o}=ry(),{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:C,setSelectedQuote:T,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]=bI(!0),ee=EI(u),P=w??k,Y=!l||!p||Vt(l,p)||!Yn(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=Qd({fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:Q,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});un("experimental",i)&&(U.experimental=!0),un("avoidNativeFee",i)&&(U.avoidNativeFee=!0),un("enableCentralizedSwappers",i)&&(U.enableCentralizedSwappers=!0),i?.maxLength&&(U.maxLength=i.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let qe=Wi(h,de.results),ot=Pd(m,qe,de.requestAmount);j(!1),y("quotes",de),T(ot),de.results?.length&&ot&&xn({type:"routeRequested",payload:{...Mn(ot),routeCount:de.results.length}}),ya({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let co=ot&&kn({currentQuote:ot,userSlippage:P,findToken:A});y("warning",co)}).catch(de=>{let qe=Sa(de);qe.type===0?xn({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&&xn({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),kI(new Error("quote error"),{tags:{...qe,type:Ye[qe.type],requestBody:U}}))})}},"fetch"),Gt=wI(ai(be=>{Ee(be)},xI),[Y]);return vI(()=>{if(!t){j(!1);return}if(b!=="success")return;if(Y){j(!1),(m||f||C)&&g();return}if(!Yn(u)&&d?.eq(0)){ue(!1),o();return}g(),ue(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Gt),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(Ia,"useSwapInput");var LI=AI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),BI=300;function ly(){let t=PI(),{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]=sy(!1),{isLargeScreen:f,isExtraLargeScreen:C}=sa(),{fetch:T,loading:y}=Ia({refetchQuote:a}),{config:k,fetchStatus:w,connectedWallets:v,customSlippage:N,slippage:I,setSlippage:b,setCustomSlippage:x}=S(),{isActiveTab:E}=re(),[L,A]=sy(!1),O=N!==null?N:I,{swapMode:q}=rt(),j=dn(O),P=Od({fetchMetaStatus:w,fetchingQuote:y,inputAmount:n,quote:i,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=_u(f,C,k?.variant),Y=!!n&&!!e&&!!o&&new WI(n).gt(0)&&!Xd(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?T:void 0,B=r(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},BI)):t(J)},"onHandleNavigation"),V=r(J=>{i?.requestId!==J.requestId&&(i&&xn({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(gi.includes(J)){b(J),x(null);return}x(J)}},"onChangeSlippage"),X=r(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");ay(()=>{u(),m("refetchQuote",!0)},[]),ay(()=>{g(Y)},[Y]);let G=r(()=>{P.action==="connect-wallet"?of({type:"clickConnectWallet"},()=>{B($.wallets)}):P.action==="confirm-warning"?A(!0):i&&(oe({type:"swapInitiated",payload:{...Mn(i),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(LI,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(II,{id:`widget-swap-${P.action}-btn`,type:"primary",size:"large",disabled:P.disabled||!E,prefix:P.action==="confirm-warning"&&Ce.createElement(NI,null),fullWidth:!0,onClick:G},P.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:k.title||(q==="swap"?iy.t("Swap"):iy.t("Refuel")),suffix:Ce.createElement(Go,{hidden:Z?["refresh"]:void 0,onClickRefresh:ct,onClickHistory:()=>B($.swaps),onClickSettings:()=>{B($.settings)}})}},Ce.createElement(ce,null,Ce.createElement(Oc,{fetchingQuote:ue,fetchMetaStatus:w,isExpandable:Z,onClickToken:X}),Ce.createElement(Uc,{size:"2"}),Z?null:Ce.createElement(Yo,{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(Uc,{size:8}),Ce.createElement(Lc,{quoteError:s,quoteWarning:Ee,fromToken:e,toToken:o,quote:i,loading:ue})),He?Ce.createElement(Ce.Fragment,null,Ce.createElement(Cr,{warning:Ee,error:s,skipAlerts:!!j,couldChangeSettings:!0,refetchQuote:T,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(Uc,{size:"10"}),Ce.createElement(Mh,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Ac,null))),Z?Ce.createElement(Mc,{loading:ue,onClickOnQuote:V,fetch:T,onClickRefresh:ct,isVisible:h}):null)}r(ly,"Home");import{i18n as cy}from"@lingui/core";import{Alert as _I,Divider as MI,List as DI,ListItemButton as $I,Radio as FI,RadioRoot as OI,Typography as UI}from"@rango-dev/ui";import Ut from"react";function Eo(){let{setLanguage:t,language:e,config:o}=S(),n=Uu,i=o?.language||mn;return{activeLanguage:e||i,languages:n,defaultLanguage:i,changeLanguage:a=>t(a||mn),resetLanguage:()=>t(null)}}r(Eo,"useLanguage");function py(){let{activeLanguage:t,changeLanguage:e,languages:o}=Eo(),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:Ut.createElement(UI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Ut.createElement(FI,{value:s}),start:Ut.createElement(l,null)}});return Ut.createElement(se,{header:{title:cy.t("Language")}},Ut.createElement(ce,null,Ut.createElement(_I,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Ut.createElement(MI,{size:"8"}),Ut.createElement(OI,{value:t},Ut.createElement(DI,{type:Ut.createElement($I,{title:cy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:i}))))}r(py,"LanguagePage");import{i18n as io}from"@lingui/core";import{Button as GI,Checkbox as VI,Image as KI,ListItemButton as jI,NotFound as XI,Typography as YI}from"@rango-dev/ui";import tt,{useState as ZI}from"react";import{Checkbox as HI,Skeleton as dy}from"@rango-dev/ui";import zr from"react";import{styled as zc}from"@rango-dev/ui";var Ur=zc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Qc=zc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Hc=zc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as zI,styled as QI}from"@rango-dev/ui";var uy=QI(zI,{height:61});var qI=30;function qc(){return zr.createElement(Ur,null,Array.from(Array(qI),(t,e)=>zr.createElement(uy,{hasDivider:!0,key:e,start:zr.createElement(dy,{variant:"circular",width:35,height:35}),title:zr.createElement(dy,{variant:"text",size:"large",width:90}),end:zr.createElement(HI,{checked:!1})})))}r(qc,"LoadingLiquiditySourceList");function Gc({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[i,a]=ZI(""),s=S().toggleLiquiditySource,c=S().isInCampaignMode(),l=Si(o,n),p={Exchanges:io.t("Exchanges"),Bridges:io.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(KI,{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(VI,{checked:k,disabled:c}),title:tt.createElement(YI,{variant:"title",size:"xmedium"},io.t(w)),selected:k,groupTitle:w,logo:v,...I}}),C=r(y=>{let k=y.target.value;a(k)},"handleSearch"),T=f;return i&&(T=f.filter(y=>Mt(y.groupTitle,i))),tt.createElement(se,{header:{title:io.t(t),suffix:tt.createElement(Qc,null,tt.createElement(GI,{id:`widget-liquidity-source-${m?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},m?io.t("Deselect all"):io.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:io.t("Search {sourceType}",{sourceType:p[t]}),onChange:C}),e==="loading"&&tt.createElement(qc,null),!T.length&&i?tt.createElement(Hc,null,tt.createElement(XI,{title:io.t("No results found"),description:io.t("Try using different keywords")})):e==="success"&&tt.createElement(Ur,{disabled:c,className:"widget-liquidity-source-list"},T.map(y=>{let{groupTitle:k,...w}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(jI,{style:{height:"61px"},...w,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}r(Gc,"LiquiditySourcePage");import{i18n as JI}from"@lingui/core";import Aa from"react";import{useNavigate as RI}from"react-router-dom";function my(){let t=RI(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:i,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=Ia({refetchQuote:n}),p=r(m=>{i(m),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${$.settings}`,d=`../${$.wallets}`;return Aa.createElement(se,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:JI.t("Routes"),suffix:Aa.createElement(Go,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Aa.createElement(ce,null,Aa.createElement(Fr,{fetch:c,loading:l,onClickOnQuote:p})))}r(my,"RoutesPage");import{i18n as Ty}from"@lingui/core";import{Divider as ky,getCategoriesCount as cA,SelectableCategoryList as pA}from"@rango-dev/ui";import ao,{useMemo as uA,useState as wy}from"react";import{useNavigate as dA}from"react-router-dom";import{i18n as Vc}from"@lingui/core";import{Divider as nA,Image as rA,ListItemButton as iA,NotFound as aA,Typography as Cy}from"@rango-dev/ui";import yt,{useEffect as sA,useState as lA}from"react";var fy=r((t,e,o)=>t.filter(n=>si(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as eA,styled as gy}from"@rango-dev/ui";var hy=gy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Na=gy(kl,{padding:0,margin:0,listStyle:"none",[`& ${eA}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as tA,Skeleton as yy}from"@rango-dev/ui";import Wa from"react";var oA=20;function Sy(){return Wa.createElement(Na,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(oA),t=>Wa.createElement(tA,{key:t,hasDivider:!0,start:Wa.createElement(yy,{variant:"circular",width:35,height:35}),title:Wa.createElement(yy,{variant:"text",size:"large",width:90})})))}r(Sy,"LoadingBlockchainList");function Kc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:i,showTitle:a=!0}=t,[s,c]=lA(e),{fetchStatus:l}=S();sA(()=>{c([...fy(e,o,i)])},[e,o,i]);let p=r(()=>!s.length&&o?yt.createElement(aA,{title:Vc.t("No results found"),description:Vc.t("Try using different keywords")}):yt.createElement(Na,{as:"ul",key:`${i}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(iA,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(rA,{src:u.logo,size:30}),title:yt.createElement(Cy,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(Cy,{variant:"label",size:"large"},Vc.t("Select Chain")),yt.createElement(nA,{size:4})),yt.createElement(hy,null,l==="loading"&&yt.createElement(Sy,null),l==="success"&&p()))}r(Kc,"BlockchainList");function Pa(t){let{type:e}=t,o=Ve(),[n,i]=wy(""),[a,s]=wy("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=S(),m=dA(),{swapMode:h}=rt(),g=S().blockchains({type:e}),f=S().tokens(),C=uA(()=>cu(g,f),[g.length,f.length]),T=cA(C),y=!t.hideCategory&&T!==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 ao.createElement(se,{header:{title:Ty.t("Select Chain")}},ao.createElement(ce,{view:!0},y&&ao.createElement(ao.Fragment,null,ao.createElement(pA,{setCategory:s,category:a,blockchains:C,isLoading:u==="loading"}),ao.createElement(ky,{size:24})),ao.createElement(Pt,{value:n,autoFocus:!0,placeholder:Ty.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>i(""),onChange:w=>i(w.target.value)}),ao.createElement(ky,{size:16}),ao.createElement(Kc,{list:C,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:k})))}r(Pa,"SelectBlockchainPage");import{i18n as _a}from"@lingui/core";import{Divider as Wy,Spinner as IA}from"@rango-dev/ui";import bo,{useEffect as AA,useState as NA}from"react";import{useNavigate as WA}from"react-router-dom";import{i18n as Yc}from"@lingui/core";import{BlockchainsChip as La,Divider as xy,Image as Iy,Skeleton as SA,Tooltip as CA,Typography as Zc}from"@rango-dev/ui";import xe from"react";import{useEffect as gA}from"react";var vy=["ETH"];function jc(t,e,o){let n=JSON.parse(JSON.stringify(t)),i=[];if(n.sort(mA),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(fA(s)),i=n.splice(a)}return{list:n,more:i}}r(jc,"prepare");function mA(t,e){let o=vy,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(mA,"sortByMostUsedBlockchains");function fA(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(fA,"generateSortByPreferredBlockchainsFor");function Ey(t,e){return!!e.list.find(o=>o.name===t)}r(Ey,"isInVisibleList");function Xc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();gA(()=>{if(e?.selected){let a=jc(t,o,e);Ey(e.selected,a)||n(e?.selected)}},[e?.selected]);let i=jc(t,o,e);return{list:i.list,more:i.more,history:[]}}r(Xc,"usePrepareBlockchainList");import{styled as hA}from"@rango-dev/ui";var by=hA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var TA=6,kA=12;function Jc(t){let{blockchains:e,type:o,blockchain:n,onChange:i,onMoreClick:a}=t,{showCompactTokenSelector:s}=re(),c=Xc(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(xy,{size:12}),xe.createElement(Zc,{variant:"label",size:"large"},Yc.t("Select Chain"))),xe.createElement(xy,{size:12}),xe.createElement(by,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?TA:kA),(f,C)=>xe.createElement(SA,{key:C,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(La,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(Zc,{variant:"body",size:"xsmall",color:"secondary500"},Yc.t("All"))),c.list.map(f=>xe.createElement(CA,{key:f.name,content:f.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(La,{className:"widget-blockchains-section-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>i(f)},xe.createElement(Iy,{src:f.logo,size:30})))),h?xe.createElement(La,{className:"widget-blockchains-section-only-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>i(m)},xe.createElement(Iy,{src:m.logo,size:30})):null,g?xe.createElement(La,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(Zc,{variant:"body",size:"xsmall",color:"secondary500"},Yc._("More +{count}",{count:c.more.length}))):null)))}r(Jc,"BlockchainsSection");import{useCallback as vA,useRef as EA,useState as Rc}from"react";function ep(){let t=S().blockchains(),e=EA(null),{customTokens:o}=S(),[n,i]=Rc(!1),[a,s]=Rc([]),[c,l]=Rc(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=>jt(y))),C=new Set(t.map(y=>y.name)),T=g.tokens.filter(y=>C.has(y.blockchain)&&!f.has(jt(y)));s(T),i(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&i(!1)}},"fetch"),u=vA(ai((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(ep,"useSearchCustomTokens");function Ay(t){return t.trim()?"search":"default "}r(Ay,"getTokenSelectionMethod");function Ba(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}r(Ba,"shouldSearchForCustomTokens");function Ny(t,e,o,n,i){let a=[...t];return Ba(t,o,i)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}r(Ny,"prepareTokensList");function Ma(t){let{type:e}=t,o=WA(),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}=ep(),[f,C]=NA(""),T=e==="source"?i:a,y=T?.name??"",k=S().blockchains({type:e}),w=S().tokens({type:e,blockchain:y,searchFor:f,getBalanceFor:u}),v=Ny(w,h,f,m,T?.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:Ay(f),activeChainFilter:y||"all"}})},"emitTokenSelected"),L={source:_a.t("Source"),destination:_a.t("Destination")};return AA(()=>(Ba(w,f,T?.name)&&d(f,T?.name??void 0),()=>{g()}),[w.length,f,T?.name]),bo.createElement(se,{header:{title:_a.t("Swap {type}",{type:L[e]})}},bo.createElement(ce,null,bo.createElement(Jc,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?i:a,onMoreClick:()=>o($.blockchains),onChange:A=>{x(A),N(A)}}),bo.createElement(Wy,{size:24}),bo.createElement(Pt,{value:f,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:_a.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>C(""),onChange:A=>C(A.target.value),suffix:Ba(w,f,T?.name)&&m?bo.createElement(IA,{size:12,color:"secondary"}):void 0}),bo.createElement(Wy,{size:16}),bo.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(Ma,"SelectSwapItemsPage");import{i18n as rp}from"@lingui/core";import{Alert as nN,Button as rN,styled as iN}from"@rango-dev/ui";import en from"react";import{useInRouterContext as aN,useSearchParams as sN}from"react-router-dom";import{i18n as Dy}from"@lingui/core";import{Alert as _A,Divider as op,InfoIcon as MA,SlippageIcon as DA,TextField as $A,Tooltip as FA,Typography as $y}from"@rango-dev/ui";import ze from"react";import{Chip as PA,styled as Qr,TextField as LA}from"@rango-dev/ui";var Py=Qr("div",{paddingTop:"$5",padding:"$10 $5"}),Ly=Qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${LA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),By=Qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Da=Qr("div",{maxWidth:"280px",padding:"$10"}),_y=Qr(PA,{width:"61px",flexShrink:0});import{i18n as tp}from"@lingui/core";import{Typography as BA}from"@rango-dev/ui";import Hr from"react";function My(){return Hr.createElement(Da,null,Hr.createElement(BA,{variant:"label",size:"medium",color:"neutral700"},tp.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,tp.t("Warning")),":\xA0",tp.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(My,"SlippageTooltipContent");function np(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),i=o!==null?dn(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>Rn&&(h=Rn),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(Py,null,ze.createElement(By,null,ze.createElement(DA,{size:16,color:"gray"}),ze.createElement(op,{direction:"horizontal",size:4}),ze.createElement($y,{variant:"title",size:"xmedium"},Dy.t("Slippage tolerance per swap")),ze.createElement(op,{direction:"horizontal",size:4}),ze.createElement(FA,{container:W(),side:"top",sideOffset:4,content:ze.createElement(My,null)},ze.createElement(MA,{color:"gray"}))),ze.createElement(Ly,null,gi.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($A,{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($y,{variant:"body",size:"small"},"%"),placeholder:Dy.t("Custom")})),i&&ze.createElement(ze.Fragment,null,ze.createElement(op,{size:10}),ze.createElement(_A,{id:"widget-slippage-alert",variant:"alarm",type:i.type,title:i.message})))}r(np,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as Fy,BridgesIcon as OA,ChevronRightIcon as $a,DarkModeIcon as Oy,Divider as qr,ExchangeIcon as UA,InfinityIcon as zA,InfoIcon as QA,LanguageIcon as HA,LightModeIcon as Uy,List as qA,ListItem as GA,ListItemButton as VA,Skeleton as KA,styled as jA,Switch as XA,Tabs as YA,TargetIcon as ZA,Tooltip as JA,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as RA}from"react-router-dom";var eN=jA("div",{width:"202px",height:"$40"}),tN=[{id:"light",icon:D.createElement(Uy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:D.createElement(Oy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:D.createElement(Fy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Auto"))}],oN=r(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(Fy,{...e});case"dark":return D.createElement(Oy,{...e});default:return D.createElement(Uy,{...e})}},"getThemeIcon");function zy(){let t=RA(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:i,languages:a}=Eo(),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),C=S().infiniteApprove,T=S().toggleInfiniteApprove,y=Si(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(KA,{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($a,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(OA,{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($a,{color:"black"})),start:D.createElement(UA,{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($a,{color:"black"})),start:D.createElement(ZA,{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(HA,{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($a,{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(JA,{side:"top",sideOffset:4,container:W(),content:D.createElement(Da,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(QA,{color:"gray"}))),start:D.createElement(zA,{color:"gray",size:16}),end:D.createElement(XA,{checked:C}),onClick:()=>{oe({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:C,newValue:!C}}),T()}},j={id:"widget-setting-theme-item-btn",type:D.createElement(GA,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Theme")),end:D.createElement(eN,null,D.createElement(YA,{container:W(),items:tN,value:n,className:"widget-setting-theme-item-tabs-container",onChange:P=>o(P.id),type:"primary",borderRadius:"small"})),start:oN(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(qA,{type:D.createElement(VA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}r(zy,"SettingsLists");var lN=iN("div",{paddingLeft:"$8"});function Qy(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=sN(),i=aN(),a=r(()=>{i&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return en.createElement(se,{header:{title:rp.t("Settings")}},en.createElement(ce,null,o&&en.createElement(nN,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:rp.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:en.createElement(lN,null,en.createElement(rN,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},rp.t("Reset")))}),en.createElement(np,null),en.createElement(zy,null)))}r(Qy,"SettingsPage");import{i18n as S0}from"@lingui/core";import{cancelSwap as C0}from"@rango-dev/queue-manager-rango-preset";import{useManager as T0}from"@rango-dev/queue-manager-react";import{Alert as k0}from"@rango-dev/ui";import kp from"react";import{useParams as w0}from"react-router-dom";import{i18n as Qt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as r0,getCurrentStep as i0,getRelatedWalletOrNull as a0}from"@rango-dev/queue-manager-rango-preset";import{Button as DS,Divider as s0,QuoteCost as l0,StepDetails as c0,Typography as gp}from"@rango-dev/ui";import{useWallets as p0}from"@rango-dev/wallets-react";import $S from"bignumber.js";import{PendingSwapNetworkStatus as Un}from"rango-types";import ke,{useEffect as hp,useRef as yp,useState as Va}from"react";import{useNavigate as u0}from"react-router-dom";import{i18n as xo}from"@lingui/core";var cN=[xo.t("Sunday"),xo.t("Monday"),xo.t("Tuesday"),xo.t("Wednesday"),xo.t("Thursday"),xo.t("Friday"),xo.t("Saturday")];function Hy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),i=e.getFullYear();return`${e.getDay()===new Date().getDay()?xo.t("Today"):`${cN[e.getDay()]} ${o} ${n} ${i}`}, ${new Date(t).toLocaleTimeString()}`}r(Hy,"timeSince");function qy(t){return t.finishTime?Hy(parseInt(t.finishTime)):Hy(parseInt(t.creationTime))}r(qy,"getSwapDate");import Gr from"react";import{i18n as Fa}from"@lingui/core";import{Button as Gy,Divider as ip,MessageBox as pN}from"@rango-dev/ui";import Io from"react";var Vy=r(({onCancel:t,onClose:e})=>Io.createElement(Io.Fragment,null,Io.createElement(ip,{size:20}),Io.createElement(pN,{type:"error",title:Fa.t("Cancel Swap"),description:Fa.t("Are you sure you want to cancel this swap?")}),Io.createElement(ip,{size:32}),Io.createElement(Gy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Fa.t("Yes, Cancel it")),Io.createElement(ip,{size:12}),Io.createElement(Gy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Fa.t("No, Continue"))),"CancelContent");import{i18n as Oa}from"@lingui/core";import{Button as Ky,Divider as ap,MessageBox as uN,Typography as dN}from"@rango-dev/ui";import so from"react";var jy=r(({onDelete:t,onClose:e})=>so.createElement(so.Fragment,null,so.createElement(ap,{size:20}),so.createElement(uN,{type:"error",title:Oa.t("Delete Transaction"),description:Oa.t("Are you sure you want to delete this swap?")}),so.createElement(ap,{size:32}),so.createElement(Ky,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Oa.t("Yes, Delete it")),so.createElement(ap,{size:12}),so.createElement(Ky,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},so.createElement(dN,{variant:"title",size:"medium",color:"primary"},Oa.t("No, Cancel")))),"DeleteContent");import{i18n as mN}from"@lingui/core";import{Button as fN,Divider as gN,MessageBox as hN}from"@rango-dev/ui";import tn from"react";var Xy=r(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return tn.createElement(tn.Fragment,null,tn.createElement(hN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&tn.createElement(tn.Fragment,null,tn.createElement(gN,{size:"30"}),tn.createElement(fN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},mN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as _N,getCurrentStep as MN,getRelatedWalletOrNull as DN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as $N}from"@rango-dev/ui";import{useWallets as FN}from"@rango-dev/wallets-react";import oS from"react";import{i18n as Fn}from"@lingui/core";import{Alert as Jy,Button as CN,Checkbox as TN,Divider as Qa,Image as kN,MessageBox as wN,Spinner as vN,WarningIcon as EN}from"@rango-dev/ui";import{useWallets as bN}from"@rango-dev/wallets-react";import Se,{useState as xN}from"react";import{css as yN,darkTheme as SN,styled as sp}from"@rango-dev/ui";var Yy=yN({wordWrap:"break-word",display:"block"}),Zy=sp("img",{width:"100%"}),Ua=sp("div",{position:"relative"}),za=sp("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${SN} &`]:{$$color:"$warning600"}});var Ry=r(t=>{let{wallet:e,namespace:o,onClose:n}=t,[i,a]=xN(null),{list:s}=xt(),c=re.use.isActiveTab(),{state:l,connect:p}=bN(),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,C=r(()=>f?Fn.t("Done"):i?Fn.t("Try again"):Fn.t("Connect"),"getButtonTitle"),T=r(()=>g?Se.createElement(vN,{color:"info"}):i||f?null:Se.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(Ct(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?po(N):null},"getAddress");return Se.createElement(Se.Fragment,null,Se.createElement(wN,{type:"warning",title:Fn.t("Connect {wallet}",{wallet:u.title}),description:Fn.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Se.createElement(Ua,null,Se.createElement(kN,{src:u.image,size:45}),Se.createElement(za,null,Se.createElement(EN,{color:"warning",size:10})))}),f&&!d&&Se.createElement(Se.Fragment,null,Se.createElement(Qa,{size:10}),Se.createElement(Jy,{type:"success",variant:"alarm",title:Fn.t("Wallet connected successfully.")})),i&&!d&&Se.createElement(Se.Fragment,null,Se.createElement(Qa,{size:10}),Se.createElement(Jy,{type:"error",title:i?.message,variant:"alarm"})),d&&Se.createElement(Se.Fragment,null,Se.createElement(Qa,{size:30}),Se.createElement(Fo,{namespace:d,suffix:T(),error:i?.message,connected:f,address:w()})),Se.createElement(Qa,{size:"40"}),Se.createElement(CN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},C()))},"ConnectWalletContent");import{i18n as eS}from"@lingui/core";import{Button as IN,detectInstallLink as AN,Divider as NN,Image as WN,MessageBox as PN,WarningIcon as LN}from"@rango-dev/ui";import{useWallets as BN}from"@rango-dev/wallets-react";import lo from"react";var tS=r(t=>{let{walletType:e}=t,{getWalletInfo:o}=BN(),n=e?o(e):null;if(!n)return null;let i=r(()=>window.open(AN(n.installLink),"_blank"),"handleButtonClick");return lo.createElement(lo.Fragment,null,lo.createElement(PN,{type:"warning",title:eS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:lo.createElement(Ua,null,lo.createElement(WN,{src:n.img,size:45}),lo.createElement(za,null,lo.createElement(LN,{color:"warning",size:10})))}),lo.createElement(NN,{size:"40"}),lo.createElement(IN,{type:"primary",id:"widget-install-wallet-btn",onClick:i},eS.t("Install")))},"InstallWalletContent");var nS=r(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:i}=FN(),a=MN(e),s=a?DN(e,a):null,c=s?.walletType,l=c?Zn(i(c),n(c)):null,p=a?_N(e,a):null;return c?l===$N.NOT_INSTALLED?oS.createElement(tS,{walletType:c}):oS.createElement(Ry,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function lp(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(nS,{swap:c,message:l,onClose:i}),o==="switchNetwork"&&n&&Gr.createElement(Xy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Gr.createElement(jy,{onClose:i,onDelete:()=>{i(),a()}}),o==="cancel"&&Gr.createElement(Vy,{onClose:i,onCancel:()=>{i(),s()}}))}r(lp,"SwapDetailsModal");import{i18n as Vr}from"@lingui/core";import{Button as cp,Divider as Kr,MessageBox as aS,TokenAmount as ON,Typography as sS}from"@rango-dev/ui";import Te from"react";import{Link as UN,useNavigate as zN}from"react-router-dom";var rS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",iS="/profile";function pp(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=zN(),{showProfileBanner:g}=re();return Te.createElement(ie,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(wt.SWAP_BOX_ID)||document.body},n==="success"?Te.createElement(aS,{type:"success",title:Vr.t("Swap Successful")},Te.createElement(ON,{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}),Te.createElement(Kr,{size:12}),Te.createElement(sS,{className:Yy(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):Te.createElement(aS,{type:"error",title:Vr.t("Transaction Failed"),description:d}),Te.createElement(Kr,{size:30}),n==="success"&&Te.createElement(Te.Fragment,null,g&&Te.createElement(Te.Fragment,null,Te.createElement(UN,{to:iS},Te.createElement(Zy,{src:rS,alt:"Profile Banner"})),Te.createElement(Kr,{size:30})),Te.createElement(cp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Vr.t("Done"))),Te.createElement(Kr,{size:12}),m&&Te.createElement(Te.Fragment,null,Te.createElement(cp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(m,"_blank")},Vr.t("Diagnosis")),Te.createElement(Kr,{size:12})),Te.createElement(cp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},Te.createElement(sS,{variant:"title",size:"medium",color:"primary"},Vr.t("See Details"))))}r(pp,"SwapDetailsCompleteModal");import{i18n as Ga}from"@lingui/core";import{CopyIcon as RN,DoneIcon as e0,IconButton as t0,RangoExplorerIcon as o0,Tooltip as WS,Typography as PS,useCopyToClipboard as n0}from"@rango-dev/ui";import Bt from"react";import JN from"react";import{i18n as jN}from"@lingui/core";import{Alert as xS,IconButton as XN,LinkIcon as YN}from"@rango-dev/ui";import Ao,{Fragment as ZN}from"react";import{Alert as HN,ChevronDownIcon as qN,IconButton as GN}from"@rango-dev/ui";import On,{useState as VN}from"react";import{css as jr,darkTheme as lS,styled as zt,Typography as QN}from"@rango-dev/ui";var cS=zt(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${lS} &`]:{color:"$secondary500"}}}}}),pS=zt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),uS=zt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),dS=zt("div",{padding:"$0 $20 $20 $20"}),PY=zt("div",{display:"flex",flexDirection:"column",gap:"$10"}),mS=zt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),LY=zt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),on=jr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${lS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),fS=jr({padding:"$5 0"}),Ha=jr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),gS=jr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),hS=jr({width:"100%",padding:"0 $20 $10"}),yS=zt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),SS=zt("div",{display:"flex",flexDirection:"column",gap:"$5"}),qa=zt(QN,{wordBreak:"break-word"});import{styled as up}from"@rango-dev/ui";var CS=up("div",{display:"flex",flexDirection:"column",gap:"$10"}),TS=up("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),kS=up("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function wS(t){let{message:e}=t,[o,n]=VN(!1);return On.createElement(HN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&On.createElement(GN,{id:"widget-swap-details-failed-btn",onClick:()=>n(i=>!i),variant:"ghost",size:"xsmall"},On.createElement(TS,{rotated:o},On.createElement(qN,{size:12,color:"gray"}))),footer:On.createElement(kS,{open:o},On.createElement(qa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}r(wS,"FailedAlert");import{i18n as vS}from"@lingui/core";import{Alert as dp,Button as ES}from"@rango-dev/ui";import{PendingSwapNetworkStatus as KN}from"rango-types";import Xr from"react";function bS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:i,showNetworkModal:a}=t;return e?Xr.createElement(dp,{type:"warning",id:"widget-swap-details-change-network-alert",title:i.shortMessage,action:Xr.createElement(ES,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},vS.t("Change"))}):a===KN.WaitingForConnectingWallet?Xr.createElement(dp,{type:"warning",title:i.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Xr.createElement(ES,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},vS.t("Connect"))}):Xr.createElement(dp,{id:"widget-swap-details-short-alert",type:"warning",title:i.shortMessage})}r(bS,"WarningAlert");function mp(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 Ao.createElement(CS,null,s.explorerUrl?.map((m,h,g)=>{let f=h+m.url,C=h===g.length-1,T=(C&&u||p)&&!d,y=C&&s.status==="failed";return Ao.createElement(ZN,{key:f},Ao.createElement(xS,{id:"widget-swap-details-tx-alert",type:C&&(T&&"loading"||y&&"error")||"success",title:m.description?`${m.description} Tx`:jN.t("View transaction"),action:m.url&&Ao.createElement(XN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},Ao.createElement(YN,{size:12}))}))}),d&&Ao.createElement(xS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&Ao.createElement(bS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:i,message:a}),s.status==="failed"&&Ao.createElement(wS,{message:a}))}r(mp,"SwapDetailsAlerts");var IS=2e3;var AS=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:Tt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:M(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:Tt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:M(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Vn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:Tt(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:Tt(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:Vn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:JN.createElement(mp,{step:a,hasAlreadyProceededToSign:i,...n})}})},"getSteps");function NS(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(NS,"getStepState");function LS(t){let{requestId:e}=t,[o,n]=n0(IS);return Bt.createElement(uS,{className:on()},Bt.createElement(PS,{variant:"label",size:"large",color:"neutral700"},Ga.t("Request ID")),Bt.createElement("div",{className:Ha()},Bt.createElement(PS,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(WS,{container:W(),content:o?Ga.t("Copied To Clipboard"):Ga.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Bt.createElement(t0,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Bt.createElement(e0,{size:16,color:"secondary"}):Bt.createElement(RN,{size:16,color:"gray"}))),Bt.createElement(yS,{target:"_blank",href:`${Jp}/swap/${e}`},Bt.createElement(WS,{container:W(),content:Ga.t("View on Rango Explorer"),side:"bottom"},Bt.createElement(o0,{size:20})))))}r(LS,"RequestIdRow");import{i18n as BS}from"@lingui/core";import{Typography as _S}from"@rango-dev/ui";import fp from"react";function MS(t){let{date:e,isFinished:o}=t;return fp.createElement("div",{className:on()},fp.createElement(_S,{variant:"label",size:"large",color:"neutral700"},o?BS.t("Finished at"):BS.t("Created at")),fp.createElement(_S,{variant:"label",size:"small",color:"neutral700"},e))}r(MS,"SwapDateRow");var d0=3e3;function Sp(t){let{swap:e,requestId:o,onDelete:n,onCancel:i}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=p0(),l=S().blockchains(),p=S().swappers(),{findToken:u}=S(),d=z().use.retry(),m=u0(),h=yp(null),[g,f]=Va(!1),[C,T]=Va(null),[y,k]=Va(null),[w,v]=Va(null),N=yp(C),I=yp(y),b=Pe.use.getNotifications(),x=Pe.use.removeNotification(),E=b(),L=i0(e),A=L?.networkStatus,O=r(Ne=>{f(!0),T(Ne)},"handleChangeModalState"),q=r(()=>{f(!1)},"handleCloseModal"),j=r(()=>{k({type:"loading",title:Qt.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=r(()=>{k({type:"success",title:Qt.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),P=r(Ne=>{k({type:"error",title:Qt.t("Network Switch Failed"),description:Ne?.message||Q.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Vd(e),Y=L?r0(e,L):null,ue=L?a0(e,L):null,Ee=qy(e),Gt=Kd(e),be=r(Ne=>!!c(Ne)?.mobileWallet,"checkIsMobileWallet"),He=!!A&&[Un.WaitingForNetworkChange,Un.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(Ct(Ne)??Ne)}))},"handleSwitchNetwork"),V=r(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),Q=Gd(e,L,c),X=AS({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,co=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),Qn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),No=de?new $S(de).multipliedBy(U.toUsdPrice||0).toString():"",ei=new $S(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),rn=Yt(Qn,co),ns=Q.detailedMessage.content||Q.shortMessage,yC=e.status==="success"?Qt.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:po(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):ke.createElement(SS,null,ke.createElement(gp,{variant:"body",size:"medium",color:"neutral700",align:"center"},ns?"":Qt.t("Transaction was not sent."),Z?`${Qt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Z.outputAmount,symbol:Z.symbol,blockchain:Z.blockchain}})}`:""),ns&&ke.createElement(qa,{align:"center",variant:"body",size:"medium",color:"neutral700"},ke.createElement("b",null,"Reason:")," ",ns));return hp(()=>{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]),hp(()=>{if(ct){if(O("switchNetwork"),A===Un.WaitingForNetworkChange){j();return}if(A===Un.NetworkChangeFailed){P();return}return}if(A===Un.WaitingForConnectingWallet){O("connectWallet");return}if(A===Un.NetworkChanged){O("switchNetwork"),ee();return}C&&["connectWallet","switchNetwork"].includes(C)&&q()},[A]),hp(()=>{if(N.current=C,I.current=y,C==="switchNetwork"&&y?.type==="success"){let Ne=setTimeout(()=>{N.current==="switchNetwork"&&I.current?.type==="success"&&q()},d0);return()=>clearTimeout(Ne)}},[C,y]),ke.createElement(se,{header:{title:Qt.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&ke.createElement(ho,null,ke.createElement(DS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},ke.createElement(gp,{size:"medium",variant:"label",color:"error"},Qt.t("Delete"))))},footer:Gt&&!w&&ke.createElement(DS,{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=Ni(e,l,u);d(Ne),setTimeout(()=>{m("../../")},0)}},Qt.t("Try again"))},ke.createElement(cS,{compact:!0,ref:h},ke.createElement(LS,{requestId:o}),ke.createElement(MS,{date:Ee,isFinished:!!e.finishTime}),ke.createElement("div",{className:gS()},ke.createElement(l0,{fee:M(String(qe),2,2),time:Xn(ci(e.steps)),steps:G}),ke.createElement(Tr,{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:co,realUsdValue:No,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(rn,2,2),warningLevel:Zt(rn??0)})),ke.createElement("div",{className:hS()},ke.createElement(gp,{variant:"title",size:"small"},Qt.t("Swaps steps"))),ke.createElement(s0,{size:8}),ke.createElement(dS,null,X.map((Ne,_t)=>{let Pp=_t,Hn=e.steps[_t]&&NS(e.steps[_t]),SC=Hn==="error"||Hn==="in-progress"||Hn==="warning"||Hn==="completed"&&_t===X.length-1;return ke.createElement(c0,{className:"widget-swap-details-step-item-container",key:Pp,step:Ne,type:"swap-progress",ref:h,state:Hn,hasSeparator:_t!==0,tabIndex:Pp,isFocused:SC,tooltipContainer:W()})}))),ke.createElement(lp,{isOpen:g,state:C,switchNetworkModalState:y,onClose:q,onCancel:i,onDelete:n,message:Q.detailedMessage.content,swap:e,handleSwitchNetwork:V}),ke.createElement(pp,{open:!!w,diagnosisUrl:ot,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(de,6,6),usdValue:co,realUsdValue:No,realValue:de||"",percentageChange:M(rn,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:yC}))}r(Sp,"SwapDetails");import{i18n as ja}from"@lingui/core";import{Divider as US,NotFound as y0,Skeleton as Zr,Typography as Xa}from"@rango-dev/ui";import Ae from"react";import{i18n as m0}from"@lingui/core";import{Divider as f0,Skeleton as g0,Typography as h0}from"@rango-dev/ui";import Ie from"react";import{css as Ht,styled as Cp}from"@rango-dev/ui";var FS=Cp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Yr=Cp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Ka=Cp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),l9=Ht({display:"flex",justifyContent:"space-between",alignItems:"center"}),c9=Ht({paddingTop:"$15",display:"flex"}),p9=Ht({padding:"$15 $0"}),u9=Ht({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),d9=Ht({paddingBottom:"$10"}),m9=Ht({display:"flex",justifyContent:"start",alignItems:"center"}),f9=Ht({paddingTop:"$5",display:"flex",alignItems:"center"}),g9=Ht({display:"flex",alignItems:"center"}),h9=Ht({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),OS=Ht({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Tp(){return Ie.createElement(FS,null,Ie.createElement(vr,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(h0,{variant:"title",size:"small"},m0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Yr,null,Ie.createElement(Ot,{separator:!1}),Ie.createElement("div",{className:OS()},Ie.createElement(f0,{direction:"horizontal",size:20}),Ie.createElement(g0,{height:22,variant:"rectangular"}))),Ie.createElement(Ka,null),Ie.createElement(Yr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Ka,null),Ie.createElement(Yr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Ka,null),Ie.createElement(Yr,null,Ie.createElement(Ot,{separator:!1}))))}r(Tp,"LoadingSwapDetails");function zS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:ja.t("Swap Details"),suffix:Ae.createElement(ho,null)}},o&&Ae.createElement(pS,null,Ae.createElement("div",{className:on()},Ae.createElement(Xa,{variant:"label",size:"large",color:"neutral700"},`${ja.t("Request ID")}`),Ae.createElement("div",{className:Ha()},Ae.createElement(Xa,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"})),Ae.createElement(US,{direction:"horizontal",size:4}),Ae.createElement(Zr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(US,{direction:"horizontal",size:4}),Ae.createElement(Zr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:on()},Ae.createElement(Xa,{className:fS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"})),Ae.createElement(Xa,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Zr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(Tp,null)),!o&&Ae.createElement(mS,null,Ae.createElement(y0,{title:ja.t("Not found"),description:ja.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}r(zS,"SwapDetailsPlaceholder");function QS(){let{manager:t,state:e}=T0(),o=!e.loadedFromPersistor,n=Et(t),{requestId:i}=w0(),a=Ve(),{fetchStatus:s}=S();if(!i)return kp.createElement(k0,{containerStyles:{margin:"20px"},type:"error",title:S0.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?kp.createElement(zS,{requestId:i,showSkeleton:c}):kp.createElement(Sp,{swap:d,requestId:i,onCancel:p,onDelete:u})}r(QS,"SwapDetailsPage");import{i18n as HS}from"@lingui/core";import{Divider as v0,getCategoriesCount as E0,SelectableCategoryList as b0,styled as GS,Typography as x0,Wallet as I0}from"@rango-dev/ui";import qt,{useState as qS}from"react";var A0=GS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),N0=GS(ce,{textAlign:"center"});function VS(){let{fetchStatus:t}=S(),[e,o]=qS("ALL"),n=S().blockchains(),{config:i}=S(),[a,s]=qS(),c=re.use.isActiveTab(),{list:l}=xt(),p=Nu(l,n),d=E0(p)!==1,m=Wu(l,e),h=r(g=>{su(l,i.multiWallets)||s(g)},"handleWalletItemClick");return qt.createElement(se,{header:{title:HS.t("Connect Wallets")}},qt.createElement(N0,null,d&&qt.createElement(qt.Fragment,null,qt.createElement(b0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),qt.createElement(v0,{size:24})),qt.createElement(x0,{variant:"title",size:"xmedium",align:"center"},HS.t("Choose a wallet to connect.")),qt.createElement(A0,null,m.map((g,f)=>{let C=`wallet-${f}-${g.type}`;return qt.createElement(I0,{key:C,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),qt.createElement(pr,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}r(VS,"WalletsPage");function KS(){return rm(),Ks(),W0([{path:$.home,element:Qe.createElement(ly,null)},{path:$.routes,element:Qe.createElement(my,null)},{path:$.fromSwap,children:[{index:!0,element:Qe.createElement(Ma,{type:"source"})},{path:$.blockchains,element:Qe.createElement(Pa,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:Qe.createElement(Ma,{type:"destination"})},{path:$.blockchains,element:Qe.createElement(Pa,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:Qe.createElement(Qy,null)},{path:$.languages,element:Qe.createElement(py,null)},{path:$.exchanges,element:Qe.createElement(Gc,{sourceType:"Exchanges"})},{path:$.bridges,element:Qe.createElement(Gc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:Qe.createElement(ph,null)},{path:$.addCustomTokens,children:[{index:!0,element:Qe.createElement(tf,null)},{path:$.blockchains,element:Qe.createElement(Pa,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:Qe.createElement(Wh,null)},{path:$.swapDetails,element:Qe.createElement(QS,null)}]},{path:$.wallets,element:Qe.createElement(VS,null)},{path:$.confirmSwap,element:Qe.createElement(jg,null)}])}r(KS,"AppRoutes");import{useQueueManager as V0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as K0}from"rango-sdk";import{useContext as j0,useEffect as bp,useState as rC}from"react";import{WalletTypes as Rr}from"@rango-dev/provider-all";import{Provider as _0}from"@rango-dev/wallets-react";import Ya,{createContext as M0,useEffect as ZS,useMemo as D0,useRef as JS}from"react";import{useEffect as P0}from"react";function jS(t){return t.map(e=>typeof e=="string"?e:e.id).join("-")}r(jS,"hashProviders");function wp(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:i}=S(),a=n();return P0(()=>{o(),i()},[jS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}r(wp,"useWalletProviders");import{Events as Jr}from"@rango-dev/wallets-react";import{isEvmBlockchain as L0}from"rango-sdk";function XS(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,blockchains:i}=S(),{onConnectWalletHandler:a,onDisconnectWalletHandler:s}=t,c=i().filter(L0).map(u=>u.name),l=r((u,d)=>{let[m,,h,g,f]=u,C={walletType:m,network:g.network??void 0,accounts:h};a.current?a.current(C):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let T=wu(m,h,c,d.supportedChainNames,f.isContractWallet);T.length&&e(T,f.namespace,g.derivationPath)},"onAccountsEvent");return{handler:r((u,d,m,h,g)=>{if(d===Jr.ACCOUNTS){let f=di(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(XS,"useUpdates");import{Events as B0}from"@rango-dev/wallets-react";function YS(t,e){let[o,n,i,a,s]=e;n!==B0.PROVIDER_DISCONNECTED&&t(o,n,i,a,s)}r(YS,"propagateEvents");var Za=M0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function $0(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}=wp(s.wallets,c),p=JS(),u=JS(),{handler:d}=XS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});ZS(()=>{n().catch(console.log)},[]),ZS(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,i]);let m=re.use.isActiveTab(),h=D0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Ya.createElement(Za.Provider,{value:h},Ya.createElement(_0,{allBlockChains:a,providers:l,emitter:we,onUpdateState:(g,f,C,T,y)=>{let k=[g,f,C,T,y];d(...k),t.onUpdateState&&YS(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($0,"Main");function Ja(t){let{config:e,...o}=t;return Ya.createElement(ju,{config:e},Ya.createElement($0,{...o,config:e}))}r(Ja,"WidgetWallets");import{globalCss as F0}from"@rango-dev/ui";var RS=r(()=>F0({"@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 O0}from"@rango-dev/wallets-react";import{useEffect as U0,useRef as z0}from"react";function eC(){let{connect:t,state:e}=O0(),o=z0({}),{fetchStatus:n}=S(),i=new URLSearchParams(location.search).get("autoConnect")||"",a=e(i);U0(()=>{n==="success"&&i&&a.installed&&!a.connecting&&!a.connected&&!o.current[i]&&(o.current[i]=!0,t(i))},[a,n])}r(eC,"useForceAutoConnect");import{isApprovalTX as Q0,RouteEventType as tC,StepEventType as oC,StepExecutionEventStatus as H0,WidgetEvents as Ra}from"@rango-dev/queue-manager-rango-preset";import{useEffect as nC}from"react";function vp(){let t=Pe.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();nC(()=>{let i=r(a=>{let{event:s,step:c,route:l}=a;if(s.type===oC.TX_EXECUTION&&s.status===H0.TX_SENT&&!Q0(c)||s.type===oC.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(C=>C.blockchain===f.blockchain&&C.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&C.symbol?.toLocaleLowerCase()===f.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return we.on(Ra.StepEvent,i),()=>we.off(Ra.StepEvent,i)},[we,e]),nC(()=>{let i=r(a=>{let{event:s,route:c}=a;(s.type===tC.FAILED||s.type===tC.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return we.on(Ra.RouteEvent,i),()=>we.off(Ra.RouteEvent,i)},[we])}r(vp,"useSubscribeToWidgetEvents");import{useManager as q0}from"@rango-dev/queue-manager-react";import{useEffect as G0}from"react";function Ep(){let{isSynced:t,syncNotifications:e}=Pe(),{manager:o,state:n}=q0();G0(()=>{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(Ep,"useSyncNotifications");function xp(){eC(),RS(),vp(),Ep();let t=S().blockchains(),{canSwitchNetworkTo:e}=iC(),[o,n]=rC(null),[i,a]=rC(),s=j0(Za),c=t.filter(K0);bp(()=>()=>om(),[]),bp(()=>()=>nm(),[]),V0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:i,evmChains:c,canSwitchNetworkTo:e}),bp(()=>($o.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)}),$o.destroy),[])}r(xp,"useBootstrap");import{styled as X0}from"@rango-dev/ui";var aC=X0("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 nn(){xp();let{config:t}=S(),{activeTheme:e}=go(t?.theme||{}),{activeLanguage:o}=Eo();return Ip.createElement(Y0,{language:o},Ip.createElement(aC,{id:"swap-container",className:e()},Ip.createElement(KS,null)))}r(nn,"Main");import{setSolanaSignerConfig as yW}from"@rango-dev/signer-solana";import Np,{useEffect as Wp,useMemo as SW}from"react";function sC(){let{setWatermark:t,setShowProfileBanner:e}=re();return{fetchApiConfig:r(async()=>{let n=await fetch(`${Kt("BASE_URL")}/meta/dapp/config?apiKey=${Kt("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(sC,"useFetchApiConfig");import{useState as Z0}from"react";var J0=r(()=>{let[t,e]=Z0(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"),lC=J0;import{convertEvmBlockchainMetaToEvmChainInfo as R0}from"@rango-dev/internal-blockchains";import{checkWaitingForNetworkChange as eW,makeQueueDefinition as tW}from"@rango-dev/queue-manager-rango-preset";import{Provider as oW}from"@rango-dev/queue-manager-react";import{useWallets as nW}from"@rango-dev/wallets-react";import{isEvmBlockchain as rW}from"rango-types";import iW,{useMemo as aW}from"react";function sW(t){let{getSigners:e,state:o,connect:n,canSwitchNetworkTo:i,getWalletInfo:a,hubProvider:s}=nW(),c=aW(()=>tW({API_KEY:t.apiKey||Kt("API_KEY"),BASE_URL:Kt("BASE_URL"),emitter:{emit:we.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(rW),C=r(k=>{let{supportedChains:w}=a(k);return di(w)},"getSupportedChainNames"),T={meta:{blockchains:g,evmBasedChains:f,evmNetworkChainInfo:R0(f),getSupportedChainNames:C},getSigners:async k=>{try{return await e(k)}catch(w){throw Ct(w)??w}},wallets:d,switchNetwork:m,canSwitchNetworkTo:i,state:o,isMobileWallet:h,hubProvider:s},y=re.use.isActiveTab();return iW.createElement(oW,{queuesDefs:[c],context:T,onPersistedDataLoaded:k=>{eW(k)},isPaused:!y},t.children)}r(sW,"QueueManager");var cC=sW;import{useManager as dW}from"@rango-dev/queue-manager-react";import mW,{createContext as fW,useContext as gW}from"react";function pC(){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 C=e.find(T=>T.name===u)??null;n(C)}if(d!==void 0){let C=d?t(d)??null:null;i({meta:f,token:C})}if(m!==void 0){let C=e.find(T=>T.name===m)??null;a(C)}if(h!==void 0){let C=h?t(h)??null:null;s({meta:f,token:C})}g!==void 0&&c(g)},"updateQuoteInputs")}r(pC,"useUpdateQuoteInputs");import{cancelSwap as lW,getCurrentNamespaceOfOrNull as cW,getCurrentStep as pW,getRelatedWalletOrNull as uW}from"@rango-dev/queue-manager-rango-preset";var es=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=Ni(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&lW(o)}getCurrentStepInfo(e){let o=pW(e);return{step:o,wallet:o?uW(e,o):null,network:o?cW(e,o)?.network:null}}};var uC=fW(void 0);function Ap(t){let{manager:e}=dW(),o=re.use.isActiveTab(),n=z().use.retry(),{findToken:i,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=S(),l=new es(e,{retrySwap:n,findToken:i}),{fetchingWallets:p}=S(),u=vu(a()),d=S().blockchains(),m=S().tokens(),h=S().swappers(),g=S().fetchStatus,f=Eo().resetLanguage,C=Pe().getNotifications(),T=Pe().clearNotifications,y=pC(),{fromBlockchain:k,toBlockchain:w,fromToken:v,toToken:N,inputAmount:I}=z()(),b={isActiveTab:o,setCurrentTabAsActive:$o.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:C,clearAll:T},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 mW.createElement(uC.Provider,{value:b},t.children)}r(Ap,"WidgetInfo");function dC(){let t=gW(uC);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}r(dC,"useWidget");import{Provider as hW}from"@hub3js/core";function mC(t){return typeof t=="string"||t instanceof hW}r(mC,"isHubWallet");function zn(t){let{onUpdateState:e,config:o}=t,n=o?.wallets;if(n&&!n.every(mC))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}=sC(),{handleLoadCustomFont:s}=lC();return Wp(()=>{a().catch(console.log)},[]),Wp(()=>{i&&s(i)},[i]),SW(()=>{Pu({API_KEY:o?.apiKey||jp(),BASE_URL:o?.apiUrl||Zp})},[o.apiKey,o.apiUrl]),Wp(()=>{t.config?.signers?.customSolanaRPC&&yW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Np.createElement(Ja,{config:{...o,wallets:n},onUpdateState:e},Np.createElement(cC,{apiKey:o.apiKey},Np.createElement(Ap,null,t.children)))}r(zn,"WidgetProvider");function fC(t){let e=t.config?.externalWallets;return ts.createElement(Ii,null,e?ts.createElement(nn,null):ts.createElement(zn,{config:t.config??jn},ts.createElement(nn,null)))}r(fC,"Refuel");import os from"react";function gC(t){let e=t.config?.externalWallets;return os.createElement(Ii,null,e?os.createElement(nn,null):os.createElement(zn,{config:t.config??jn},os.createElement(nn,null)))}r(gC,"Widget");function hC(){let{on:t,off:e}=we;return{on:t,off:e}}r(hC,"useWidgetEvents");var Cte={DerivationPath:sr,Namespaces:rr,Detached:ar,isOnDerivationPath:cr,isOnNamespace:lr,isOnDetached:Wo};export{Kee as EventSeverity,Gn as MainEvents,qee as Networks,ote as PendingSwapNetworkStatus,qn as QuoteEventTypes,fC as Refuel,jee as RouteEventType,as as SUPPORTED_FONTS,Cte as StatefulConnect,Xee as StepEventType,Yee as StepExecutionBlockedEventStatus,Zee as StepExecutionEventStatus,Td as SwapModeContext,wt as UI_ID,Ze as UiEventTypes,ete as WalletEventTypes,Ree as WalletEvents,gC as Widget,Gn as WidgetEvents,zn as WidgetProvider,Ja as WidgetWallets,sl as customizedThemeTokens,Gee as readAccountAddress,an as useStatefulConnect,xt as useWalletList,iC as useWallets,dC as useWidget,hC as useWidgetEvents,iw as widgetEventEmitter};
4
4
  //# sourceMappingURL=index.js.map