@rango-dev/widget-embedded 0.63.1-next.4 → 0.63.1-next.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var bT=Object.defineProperty;var i=(t,e)=>bT(t,"name",{value:e,configurable:!0});import{Networks as Vee}from"@rango-dev/internal-blockchains";import{EventSeverity as jee,RouteEventType as Xee,StepEventType as Yee,StepExecutionBlockedEventStatus as Zee,StepExecutionEventStatus as Jee}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as ete}from"@rango-dev/wallets-core/legacy";import{useWallets as dT,Events as ote}from"@rango-dev/wallets-react";import{PendingSwapNetworkStatus as rte}from"rango-types";import{Divider as Yk}from"@rango-dev/ui";import fo,{useEffect as Zk,useRef as Jk,useState as xd}from"react";import{WalletState as NT}from"@rango-dev/ui";import{useWallets as WT}from"@rango-dev/wallets-react";import{useReducer as LT}from"react";import{i18n as Oe}from"@lingui/core";var Ye=(a=>(a[a.NO_RESULT=0]="NO_RESULT",a[a.REQUEST_FAILED=1]="REQUEST_FAILED",a[a.REQUEST_CANCELED=2]="REQUEST_CANCELED",a[a.BRIDGE_LIMIT=3]="BRIDGE_LIMIT",a[a.INSUFFICIENT_SLIPPAGE=4]="INSUFFICIENT_SLIPPAGE",a))(Ye||{});var Kn=(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))(Kn||{}),ti=(n=>(n.CONNECT="connect",n.DISCONNECT="disconnect",n.DETECTED="detected",n))(ti||{}),Ze=(m=>(m.CLICK_CONNECT_WALLET="clickConnectWallet",m.TOKEN_SELECTED="tokenSelected",m.CHAIN_FILTER_APPLIED="chainFilterApplied",m.SETTINGS_CHANGED="settingsChanged",m.ROUTE_FEE_VIEWED="routeFeeViewed",m.DESTINATION_ADDRESS_SET="destinationAddressSet",m.GAS_WARNING_SHOWN="gasWarningShown",m.GAS_WARNING_BYPASSED="gasWarningBypassed",m.SWAP_INITIATED="swapInitiated",m.SWAP_WALLETS_MODAL_SHOWN="swapWalletsModalShown",m.SWAP_WALLETS_CONFIRMED="swapWalletsConfirmed",m.SWAP_STARTED="swapStarted",m.SWAP_RESUMED="swapResumed",m.SWAP_RETRIED="swapRetried",m.SWAP_CANCELLED="swapCancelled",m))(Ze||{}),sn=(a=>(a.RouteEvent="routeEvent",a.StepEvent="stepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(sn||{});var te=i(()=>({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 Dp(t){return t.type===0?t.diagnosisMessage??te().noResultError.title:t.type===1?t.diagnosisMessage??te().genericServerError:""}i(Dp,"getQuoteErrorMessage");var xT=["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 IT(t){return typeof t=="string"?t:t instanceof Error?`${t.name} ${t.message}`:""}i(IT,"toMessage");function AT(t){let e=IT(t).toLowerCase();return!!e&&xT.some(o=>e.includes(o))}i(AT,"isModuleLoadError");function Tt(t){return AT(t)?new Error(te().moduleLoadError,{cause:t}):null}i(Tt,"tryRefineError");function $p(t,e){return Tt(t)?.message??e}i($p,"tryRefineErrorMessage");function Fp(t){return!!t.derivationPath}i(Fp,"isStateOnDerivationPathStep");function Op(t){return!!t.namespace}i(Op,"isStateOnNamespace");var oi={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function Up(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return oi;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:oi;default:throw new Error("Action hasn't been defined.")}}i(Up,"reducer");function ln(){let{state:t,disconnect:e,connect:o}=WT(),[n,r]=LT(Up,oi),a=i(async(d,f,h)=>{r({type:"reset"});try{let g=f?.map(m=>({...m,network:void 0}));return await o(d.type,g),{status:"connected"}}catch(g){let m=$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(m,{cause:g})}},"runConnect"),s=i(async(d,f)=>{let h=d.state===NT.DISCONNECTED,g=f?.forceConnectToNamespaces;if(h){let m=!!d.isHub,S=m?d.properties?.find(y=>y.name==="namespaces")?.value:d.needsNamespace,T=m?d.properties?.find(y=>y.name==="derivationPath")?.value:d.needsDerivationPath;if(g){let y=g.find(C=>!S?.data?.map(w=>w.value).includes(C));if(y)throw new Error(`One of the forced namespaces is not available in the wallet. Forced namespace: ${y}`);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?(r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:g[0]}}),{status:"derivation-path"}):await a(d,g.map(C=>({namespace:C})),{...f,disconnectOnError:!0})}if(!S?.data?.length)return await a(d,void 0,f);if(S?.data.length&&S.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:d,defaultSelectedChains:f?.defaultSelectedChains}}),{status:"namespace"};if(S?.data.length===1&&S.data[0]){if(T){let y=S.data[0];return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:y.value}}),{status:"derivation-path"}}return await a(d,S?.data?.map(y=>({namespace:y.value})),f)}}if(d.isHub&&!f?.forceConnectToNamespaces){let m=d.properties?.find(S=>S.name==="namespaces")?.value;if(m?.data.length&&m.data.length>1)return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:null}}),{status:"Detached"}}return f?.disconnectIfConnected?(await u(d),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=i(async(d,f)=>{let h=!!d.isHub,g=h?d.properties?.find(C=>C.name==="namespaces")?.value:d.needsNamespace,m=h?d.properties?.find(C=>C.name==="derivationPath")?.value:d.needsDerivationPath,S=g?.selection==="single",T=f[0];if(!T)throw new Error("To confirm a namespace, you should select at least one namespace.");if(S&&m)return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:T}}),{status:"derivation-path"};if(!Op(n))throw new Error("Something went wrong on handling namespace. Please retry.");let y=f.map(C=>({namespace:C}));return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:y??null}}),{status:"Detached"}},"handleNamespace"),l=i(async(d,f,h)=>{if(!f)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Fp(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=[{namespace:n.derivationPath.namespace,derivationPath:f}],T=!!d.isHub?d.properties?.find(w=>w.name==="namespaces")?.value:d.needsNamespace,y=!!T?.data&&T.data.length>1,C=!!h?.forceConnectToNamespaces;return y&&!C?(r({type:"detached",payload:{targetWallet:d,selectedNamespaces:m??null,derivationPath:f}}),{status:"Detached"}):await a(d,m)},"handleDerivationPath"),p=i(()=>n,"getState"),u=i(async d=>{let f=t(d.type);return f.connected||f.connecting?(await e(d.type),Lo(p)?(r({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=>{r(d==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(ln,"useStatefulConnect");import{WalletTypes as Dt}from"@rango-dev/provider-all";import{WalletState as Si}from"@rango-dev/ui";import{useWallets as QC}from"@rango-dev/wallets-react";import{useCallback as qC,useEffect as ed}from"react";import FC,{createContext as OC,useContext as UC,useEffect as zC,useRef as HC}from"react";import{create as DC}from"zustand";import{persist as $C}from"zustand/middleware";import{allProviders as PT}from"@rango-dev/provider-all";var is=class{static{i(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},cn=new is;import{Provider as as}from"@hub3js/core";import{defineVersions as Hp,pickVersion as Qp}from"@hub3js/core/utils";function qp({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=ss(a);return s instanceof as?s.id===n:s.config.type===n});r?o.push(r):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else n instanceof as?o.push(Hp().version("1.0.0",n).build()):o.push(Hp().version("0.0.0",n).build())}),o}return t}i(qp,"matchAndGenerateProviders");function ss(t){try{return Qp(t,"1.0.0")[1]}catch{return Qp(t,"0.0.0")[1]}}i(ss,"pickProviderVersionWithFallbackToLegacy");function Gp(t){return t.map(o=>ss(o)).map(o=>o instanceof as?o.id:o.config.type)}i(Gp,"configWalletsToWalletName");function Vp(t,e){return e.find(o=>o.name===t)?.displayName}i(Vp,"getBlockchainDisplayNameFor");function Ct(t,e){return e.find(o=>o.name===t)?.shortName}i(Ct,"getBlockchainShortNameFor");function Kp(t,e){return e.find(o=>o.name===t)?.logo}i(Kp,"getBlockchainImage");function jn(t,e){return e.find(o=>o.id===t)?.title}i(jn,"getSwapperDisplayName");function Po(t,e){return e.find(o=>o.name===t)??null}i(Po,"findBlockchain");function ls(t,e){if(!e||!t)return!1;for(let o of e.feeAssets)if(t?.blockchain===o?.blockchain&&t?.symbol===o?.symbol&&t?.address===o?.address)return!0;return!1}i(ls,"isTokenNative");function kt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(kt,"createTokenHash");function Bo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Bo,"isValidTokenAddress");function ni(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}i(ni,"createTokenExplorerUrl");function Xn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(c=>{c.forEach(l=>{typeof l!="string"&&(l=kt(l));let p=o.tokensMapByTokenHash.get(l);p&&(n[l]=p)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let 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=r[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)}i(Xn,"matchTokensFromConfigWithMeta");function ri(t){let{config:e}=t,o=e.from?.blockchains||[],n=e.to?.blockchains||[];if(!o.length||!n.length)return[];let r=[...o,...n],a=new Set(r);return Array.from(a)}i(ri,"getSupportedBlockchainsFromConfig");function BT(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(BT,"makeProvidersOptionsFromConfig");var Yn={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/manifests/tonconnect/manifest.json"}},_T={clientUrl:void 0},MT={liquiditySources:void 0};function jp(){return PT().map(o=>o())}i(jp,"generateProviders");var Xp=i((t,e,o)=>{let n=jp();return{config:{...Yn,...t},iframe:_T,campaignMode:MT,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c}=o(),l=Xn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}}),p=Xn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}});cn.set("supportedSourceTokens",l),cn.set("supportedDestinationTokens",p),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let r=jp();e({allProviders:r})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=BT(a);return qp({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Yp}from"rango-types";var Zp=[Yp.EVM,Yp.SOLANA],ii="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as ZT}from"rango-sdk";function Jp(){return process.env.REACT_APP_RANGO_API_KEY}i(Jp,"getApiKeyFromEnv");function Rp(){let t=Jp();if(t)return t;throw new Error("Ensure you have set REACT_APP_RANGO_API_KEY in your env variables.")}i(Rp,"getApiKeyFromEnvOrThrow");function eu(){return Jp()||"NOT_SET"}i(eu,"getApiKeyFromEnvOrNotSet");import{HYPERLIQUID_SIGN_NETWORK as HT,Networks as fs}from"@rango-dev/internal-blockchains";import{BlockchainCategories as QT,detectInstallLink as qT,WalletState as ut}from"@rango-dev/ui";import{legacyGetBlockChainNameFromId as GT,legacyReadAccountAddress as VT}from"@rango-dev/wallets-core/legacy";import un from"bignumber.js";import{isAddress as KT}from"ethers";import DT from"bignumber.js";var pe=new DT(0);var _o="~",tu=[];import{BlockchainCategories as ps,WalletState as zT}from"@rango-dev/ui";import{TransactionType as us}from"rango-sdk";import{UI_ID as $T}from"@rango-dev/ui";var ou="https://api.rango.exchange",nu="https://explorer.rango.exchange",wt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...$T};var ru="Roboto",cs=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function pn(t){return Array.from(new Set(t))}i(pn,"removeDuplicateFrom");function ai(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(ai,"debounce");function pt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(pt,"containsText");function su(t,e){return t.toLowerCase()===e.toLowerCase()}i(su,"exactText");function lu(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(lu,"startWithText");var W=i(()=>document.getElementById(wt.SWAP_BOX_ID),"getContainer"),Mo=i(()=>document.getElementById(wt.EXPANDED_BOX_ID),"getExpanded");function cu(t,e,o){let n=!!e&&su(e,t),r=!!o&&su(o,t);return n!==r?n?-1:1:0}i(cu,"compareExactMatchText");function ds(t,e,o){let n=!!e&&pt(e,t),r=!!o&&pt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ds,"compareContainsText");function ms(t,e,o){let n=!!e&&lu(e,t),r=!!o&&lu(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ms,"compareStartWithText");function pu(t,e,o){if(!o)return 0;let n=cu(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=cu(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ms(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ds(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ms(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=ds(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ms(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=ds(o,t.address,e.address);if(r!==0)return r}return 0}i(pu,"compareWithSearchFor");var si=i((t,e)=>{switch(e){case ps.ALL:return!0;case ps.UTXO:return t===us.TRANSFER;case ps.OTHER:return t!==us.TRANSFER&&t!==us.EVM;default:return t===e}},"isBlockchainTypeInCategory"),uu=i(t=>cs.find(o=>o.value===t)?.url,"getFontUrlByName");function du(t,e){let o=!!t.find(n=>n.state===zT.CONNECTED);return e===!1&&o}i(du,"isSingleWalletActive");function mu(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(mu,"memoizedResult");function fu(t,e){let o=new Set;return e.forEach(n=>{o.add(n.blockchain)}),t.filter(n=>o.has(n.name))}i(fu,"filterBlockchainsWithAtLeastOneToken");function gu(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}i(gu,"detectMobileScreens");import{BigNumber as Eu}from"bignumber.js";function hu(t){return t.replace(/^0+(?=\d)/g,"")}i(hu,"removeLeadingZeros");function yu(t){return t.replace(/^\.(\d+)/,"0.$1")}i(yu,"ensureLeadingZeroForDecimal");function Su(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(Su,"formatThousandsWithCommas");function Tu(t){return t.replace(/\s+/g,"-")}i(Tu,"replaceSpacesWithDash");function Cu(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(Cu,"stripTrailingZeros");function ku(t){return t=t.replace(/[^\d.]/g,"").replace(/\./g,(e,o,n)=>n.indexOf(".")===o?".":""),t}i(ku,"parseNumericValue");function li(t){return/^0+(?:\.0+)?$/.test(t)}i(li,"isZeroValue");function wu(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(wu,"isValidCurrencyFormat");function vu(t){return/\d+$/.test(t)}i(vu,"isColorKeyOverridden");var Zn=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),M=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Eu(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new Eu(n.toFixed(s,r)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),r);for(let s=e||4;s<17;s++)if(n.gte(Math.pow(10,-s)))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,s))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var ci=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Mt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Jn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function bu(t){return li(t)?"0":t.endsWith(".")?t.slice(0,-1):Cu(t)}i(bu,"sanitizeInputAmount");function jT(t,e){let o=t?.get("EVM");return o?.network?GT(o.network,e)??o.network:null}i(jT,"getConnectedEvmChainName");function Rn(t,e){return YT(t,e)?ut.PARTIALLY_CONNECTED:e.connected?ut.CONNECTED:e.connecting?ut.CONNECTING:e.installed?ut.DISCONNECTED:ut.NOT_INSTALLED}i(Rn,"getWalletConnectionStatus");function xu(t,e,o,n){return o.filter(r=>!tu.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:c,namespaces:l}=t(r);return s&&(!c||!!n&&jT(l,a)!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(r=>{let{name:a,img:s,installLink:c,showOnMobile:l,needsNamespace:p,supportedChains:u,needsDerivationPath:d,properties:f,isHub:h}=e(r),g=pn(u.map(S=>S.type)),m=Rn(e(r),t(r));return{title:a,image:s,link:qT(c),state:m,type:r,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:f,isHub:h}})}i(xu,"mapWalletTypesToWalletInfo");function er(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(er,"walletAndSupportedChainsNames");function hs(t,e,o,n,r){let a=[];function s(l,p,u){if(!!!a.find(f=>f.chain===l)){let f={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(f)}}i(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=VT(l),d=c.length>0,f=c.includes(u),h=u===fs.Unknown;if(d&&!f&&!h)return;let m=u===fs.Unknown&&KT(p);if(h&&!m)return;if(o.includes(u)||m)if(r)s(u,p.toLowerCase(),r);else{let T=c.filter(C=>o.includes(C));T.forEach(C=>{s(C,p.toLowerCase())}),T.includes(HT)&&s(fs.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}i(hs,"prepareAccountsForWalletStore");function Do(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,c=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:l}=r;l.forEach((p,u)=>{let d=p.from.blockchain,f=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(f)})}e==="all"&&n.add(c)}),Array.from(n)}i(Do,"getQuoteChains");function tr(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(tr,"isAccountAndWalletMatched");var Iu=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?gs(n.usdValue,n.decimals):pe.toFixed();return o.plus(r)},new un(pe));return XT(e.toString())},"calculateWalletUsdValue");function XT(t){let e=t.toString().split(".");return e[0]&&(e[0]=Su(e[0])),e.join(".")}i(XT,"numberWithThousandSeparator");function gs(t,e){return new un(t).shiftedBy(-e).toFixed()}i(gs,"representAmountInNumber");function di(t){if(!t)return null;let e=gs(t.amount,t.decimals),o=t.usdValue?gs(t.usdValue,t.decimals):null,n=M(e,8,8),r=o?M(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(di,"formatBalance");function Au(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new un(t.usdValue).shiftedBy(-t.decimals):pe,n=e&&e.usdValue?new un(e.usdValue).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new un(t.amount).shiftedBy(-t.decimals):pe,n=e&&e.amount?new un(e.amount).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(Au,"compareTokenBalance");function Kt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Kt,"areTokensEqual");function Nu(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))}i(Nu,"sortWalletsBasedOnConnectionState");function uo(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(uo,"getConciseAddress");function Wu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(Wu,"getAddress");var Lu=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function ys(t){return t.map(e=>e.state).join("-")}i(ys,"hashWalletsState");function Pu(t,e){let o=new Set;return t.forEach(r=>{r.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(r=>o.has(r.type))}i(Pu,"filterBlockchainsByWalletTypes");function Bu(t,e){return e===QT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(si(n,e))return!0;return!1})}i(Bu,"filterWalletsByCategory");function YT(t,e){if(!t.isHub||!t.needsNamespace||!e.connected)return!1;let n=t.needsNamespace.data.filter(r=>!r.unsupported);return t.needsNamespace.selection==="multiple"&&n.some(r=>!e.namespaces?.get(r.value)?.connected)}i(YT,"checkIsWalletPartiallyConnected");var Ss={API_KEY:eu()};function jt(t){return Ss[t]||""}i(jt,"getConfig");function _u(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Ss=e,Ss}i(_u,"initConfig");var Mu=20,Du=25,Ts="theme-widget",Cs=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Kt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Kt(a,t));let r=n.isExcluded;return!r&&!o||r&&o}}}return o},"isTokenExcludedInConfig"),ks=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),$u=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var mi,dt=i(()=>mi||(mi=new ZT(jt("API_KEY"),jt("BASE_URL")),mi),"httpService");import{i18n as Fu}from"@lingui/core";var fi=[.5,1,3],gi=1,dn=5,or=30,hi=0;function yi(t,e){let o=t.map(a=>a.swapperGroup),n=[];return pn(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(c=>c.swapperGroup===a);if(s){let c=!0;o&&(c=o.some(l=>l===s.swapperGroup)),c&&s.types.map(l=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:l,selected:!e.includes(s.swapperGroup)})})}}),n}i(yi,"getUniqueSwappersGroups");function Ou(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Ou,"sortLiquiditySourcesByGroupTitle");function nt(t,e){return e?.[t]==="hidden"}i(nt,"isFeatureHidden");function mn(t,e){return e?.[t]==="enabled"}i(mn,"isRoutingEnabled");var Uu=i((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function fn(t){return t==hi?{type:"error",message:Fu.t("Slippage must be greater than or equal to 0.01")}:t>dn&&t<=or?{type:"warning",message:Fu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(fn,"getSlippageValidation");var zu=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let l=ri({config:a}),p=r;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>Zp.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),c=Array.from(n.values()),l=e()._blockchainsMapByName;if(!o||!o.type)return c;let p=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",d=cn.get(u);d?.length||(d=Xn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),cn.set(u,d)),d=Uu(d,s,a.features);let f=e().blockchains({type:o.type});return d.filter(g=>o.blockchain&&g.blockchain!==o.blockchain||!f.some(m=>m.name===g.blockchain)?!1:o.searchFor?!!(pt(g.symbol,o.searchFor)||pt(g.address||"",o.searchFor)||pt(g.name||"",o.searchFor)):!0).sort((g,m)=>{let S=e().isTokenPinned(g,o.type),T=e().isTokenPinned(m,o.type);if(S!==T)return S?-1:1;if(o.getBalanceFor){let I=o.getBalanceFor(g),A=o.getBalanceFor(m),E=Au(I,A);if(E!==0)return E}let y=l.get(g.blockchain),C=l.get(m.blockchain),w=ls(g,y),v=ls(m,C);if(w!==v)return w?-1:1;if(g.isPopular!==m.isPopular)return g.isPopular?-1:1;if(o.searchFor){let I=pu(g,m,o.searchFor);if(I)return I}return g.isSecondaryCoin!==m.isSecondaryCoin?g.isSecondaryCoin?1:-1:y&&C?y.sort-C.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=kt(o),s=n.get(a);return s||(s=r.find(c=>kt(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Kt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(p=>{let u=a?.includes(p.swapperGroup);return s||!a||a.length===0?!u:u}).sort(Ou)},fetch:async()=>{try{let{routing:o}=e().config,n=mn("enableCentralizedSwappers",o),r=await dt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,c={},l=r.popularTokens,p=r.swappers.filter(d=>d.enabled);r.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&a.set(d.name,d)}),r.tokens.forEach(d=>{let f=kt(d);c[d.blockchain]||(c[d.blockchain]=[]),s.set(f,d),c[d.blockchain]?.push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c,_popularTokens:l,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as JT,Catalonia as RT,Chinese as Hu,Denmark as eC,English as tC,Finland as oC,French as nC,German as rC,Greece as iC,Hungary as aC,India as sC,Indonesian as lC,Italian as cC,Japanese as pC,Korea as uC,Lithuania as dC,Malay as mC,Netherlands as fC,Pakistan as gC,Philippines as hC,Poland as yC,Portuguese as SC,Russian as TC,SaudiArabia as CC,Serbia as kC,Slovakia as wC,SouthAfrica as vC,Spanish as EC,Swahili as bC,Swedish as xC,Thai as IC,Turkish as AC,Ukrainian as NC,Vietnamese as WC}from"@rango-dev/ui";var Qu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:vC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:CC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:JT},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:RT},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Hu},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Hu},{title:"Danish",label:"Dansk",local:"da",SVGFlag:eC},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:fC},{title:"English",label:"English",local:"en",SVGFlag:tC},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:hC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:oC},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:nC},{title:"German",label:"Deutsch",local:"de",SVGFlag:rC},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:iC},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:sC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:aC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:lC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:cC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:pC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:uC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:dC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:mC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:yC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:SC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:TC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:kC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:wC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:EC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:bC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:xC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:IC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:AC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:NC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:gC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:WC}],gn="en";var qu=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:gi,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(r=>{if(n)return{disabledLiquiditySources:[]};let a=pn(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=nt("theme",n),s=nt("language",n),c=nt("liquiditySource",n),l=r?.singleTheme,p=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...l&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||gn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||gn}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(r=>r.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,r=ri({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import Is from"bignumber.js";import LC from"mitt";var ge=LC(),PC={on:ge.on,off:ge.off};var Gu=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...c]=a;e(l=>({...typeof s=="function"?s(l):s,lastUpdatedAt:+new Date}),...c)},"modifedSet"),o,n),"keepLastUpdated");import Vu from"bignumber.js";function Xt(t){return`${t.blockchain}${_o}${t.address}${_o}${t.symbol}`}i(Xt,"createAssetKey");function Ku(t,e){return`${Xt(e)}${_o}${t}`}i(Ku,"createBalanceKey");function nr(t){let[e,o,n]=t.split(_o);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}i(nr,"extractAssetFromBalanceKey");function vs(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Xt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Vu(r??pe).multipliedBy(o[s].amount).toString():""})})}),o}i(vs,"computeNextBalancesWithNewPrices");function Es(t,e){let o={};return t.balances?.forEach(n=>{let r=Ku(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Vu(c??pe).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[r]=p}),o}i(Es,"createBalanceStateForNewAccount");function bs(t,e){for(let o in e){let n=nr(o);if(n){let r=Xt(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}}return t}i(bs,"updateAggregatedBalanceStateForNewAccount");function BC(t,e){let o=nr(e);if(!o)return t;let n=Xt(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(BC,"removeBalanceFromAggregatedBalance");function xs(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 r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(l=>{let p=nr(l);if(!p)return;!!n.find(d=>Ku(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=BC(a,l):s[l]&&(r[l]=s[l])}),{_balances:r,_aggregatedBalances:a}}i(xs,"computeNextStateAfterWalletBalanceRemoval");function _C(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(_C,"matchWalletDetailsWithConnectedWallet");var MC=mu(),ju=Gu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>tr(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>tr(s,a))?{...a,loading:!1,error:!1,explorerUrl:_C(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>tr(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n,r)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>tr(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:r,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:r}=o,a=n.reduce((l,p)=>((l[p.blockchain]||=[]).push(p),l),{}),s=new Set,c=r.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:f,blockchain:h})=>({symbol:d,address:f,blockchain:h})),walletAddress:l});if(u){let d=e()._balances,f=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let g={blockChain:h.asset.blockchain,balances:[h],address:l},m={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};vs(m,g,d);let S=Es(g,e);f=bs(f,S),d={...d,...S}}),t(h=>({_balances:{...h._balances,...d},_aggregatedBalances:f}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(c=>c.chain===r.chain&&c.walletType!==r.walletType&&r.selected),s=!!o.find(c=>c.chain===r.chain&&c.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n,r,a)=>{let s=o[0];s&&(ge.emit("walletEvent",{type:"connect",payload:{walletType:s.walletType,accounts:o,chain:s.chain??null,walletName:a?.walletName??s.walletType}}),e().addConnectedWallet(o,n,r),e().fetchBalances(o))},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=xs(r,[o],n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(r=>r.walletType===o);if(ge.emit("walletEvent",{type:"disconnect",payload:{walletType:o,walletName:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.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:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0||!o[0])return;let r=[...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 f={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};vs(f,d,l);let{_balances:h,_aggregatedBalances:g}=xs(f,r,{chains:[d.blockChain]});if(p=g,l=h,!e().connectedWallets.find(S=>r.includes(S.walletType)&&S.address===d.address&&S.chain===d.blockChain))return;let m=Es(d,e);p=bs(p,m),l={...l,...m}}),t(d=>({_balances:{...d._balances,...l},_aggregatedBalances:p})),e().setConnectedWalletRetrievedData(o,c);let{retryOnFailedBalances:u=!0}=n||{};if(u){let d=c.filter(f=>f.failed).map(f=>{let h=e().connectedWallets.find(g=>g.chain===f.blockChain&&g.address)?.walletType;return h?{chain:f.blockChain,walletType:h,address:f.address}:null}).filter(f=>!!f);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(),r=Xt(o),a=e()._aggregatedBalances[r]||[];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 Is(u.amount),f=new Is(l.amount);d.isGreaterThan(f)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(_o);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>MC(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,c)=>{let l=r[c],p=nr(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new Is(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 Xu(t){return DC()($C((...e)=>({...ju(...e),...zu(...e),...qu(...e),...Xp(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(r=>({...r,warning:!0}))),n}}))}i(Xu,"createAppStore");var Yu=OC(null);function k(){let t=UC(Yu);if(zC(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(k,"useAppStore");function Zu(t){let e=HC();return e.current||(e.current=Xu(t.config)),FC.createElement(Yu.Provider,{value:e.current},t.children)}i(Zu,"AppStoreProvider");function oe(t){ge.emit("uiEvent",t)}i(oe,"emitUiEvent");function Ju(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};oe({type:t.type,payload:n}),o||e()}i(Ju,"emitPreventableEvent");function hn(t){ge.emit("quoteEvent",t)}i(hn,"emitQuoteEvent");function Ru(t){ge.emit("walletEvent",{type:"detected",payload:t})}i(Ru,"emitWalletDetected");var td=new Set,GC=new Set([Dt.LEDGER,Dt.TREZOR,Dt.WALLET_CONNECT_2,Dt.TON_CONNECT,Dt.DEFAULT]),VC=new Set([Dt.DEFAULT,Dt.WALLET_CONNECT_2,Dt.LEDGER]);function xt(t){let{chain:e}=t||{},{getAvailableProviders:o}=k(),{state:n,getWalletInfo:r}=QC(),{handleDisconnect:a}=ln(),s=Gp(o()),c=xu(n,r,s,e);c=gu()?c.filter(f=>f.showOnMobile!==!1&&n(f.type).installed):c;let l=Nu(c);ed(()=>{c.forEach(f=>{if(GC.has(f.type))return;f.state!==Si.NOT_INSTALLED&&!td.has(f.type)&&(td.add(f.type),Ru({walletName:f.type}))})},[ys(c)]);let p=qC(()=>{let f=c?.filter(h=>h.state===Si.CONNECTING)||[];for(let h of f)a(h)},[ys(c)]);ed(()=>()=>{p()},[]);let u=i(f=>{let h=f.find(m=>m.type===Dt.DEFAULT);return!h||h.state===Si.NOT_INSTALLED?!1:f.filter(m=>m.state!=Si.NOT_INSTALLED&&!VC.has(m.type)&&r(m.type).supportedChains.filter(S=>S.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=i(f=>f==Dt.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(f=>!d(f.type)),terminateConnectingWallets:p}}i(xt,"useWalletList");import{Modal as YC}from"@rango-dev/ui";import ZC from"react";import{create as XC}from"zustand";var od="rango-widget";var rr=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(od),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{i(this,"TabManager")}initEvents(){this.channel.addEventListener("message",this.handleMessageEvent),document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("resume",this.handleResume)}claimedByCurrentTab(e){let o=this.lastTryClaim&&this.lastTryClaim<e;if(this.isClaimed()||o){let n={name:"pong"};this.channel.postMessage(n);return}}alreadyClaimedByAnotherTab(){this.resetLastCheck()}async tryClaim(){return this.setLastCheck(),new Promise(e=>{setTimeout(()=>{this.check(),e()},300)})}check(){this.state==="not-initiated"&&this.events.onInit?.(),this.lastTryClaim?(this.claim(),this.resetLastCheck()):this.state="not-claimed"}claim(){this.state="claimed",this.events.onClaim?.()}setLastCheck(){this.lastTryClaim=Date.now();let e={name:"ping",pingAt:this.lastTryClaim};this.channel.postMessage(e)}resetLastCheck(){this.lastTryClaim=void 0}forceRelease(e){if(this.isClaimed()){this.state="not-claimed",this.events.onRelease?.();let o={name:"force-release",candidateId:e};this.channel.postMessage(o)}}};var jC=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),mo=jC;var re=mo(XC()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,showCompactTokenSelector:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})},setShowCompactTokenSelector:o=>{t({showCompactTokenSelector:o})}}))),Fo=new rr({onInit:()=>re.setState({tabManagerInitiated:!0}),onClaim:()=>re.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>re.setState({isActiveTab:!1})});function ie(t){let{watermark:e}=re();return ZC.createElement(YC,{hasWatermark:e==="FULL",...t},t.children)}i(ie,"WatermarkedModal");import{i18n as Tn}from"@lingui/core";import{getSupportedChainsFromNamespace as dk}from"@rango-dev/internal-blockchains";import{Alert as mk,Button as fk,Divider as Cn,Image as gk,MessageBox as hk,RadioRoot as yk,WalletImageContainer as Sk}from"@rango-dev/ui";import le,{useEffect as Tk,useMemo as Ck,useState as kk}from"react";import{i18n as tk}from"@lingui/core";import{Typography as pd}from"@rango-dev/ui";import yn from"react";function Ti(t,e){return t.find(o=>o.name===e)?.logo}i(Ti,"getBlockchainLogo");import{darkTheme as JC,Image as RC,styled as Yt,Typography as ek}from"@rango-dev/ui";var Ci=Yt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${JC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),ki=Yt("div",{display:"flex",gap:"$8",alignItems:"center"}),rd=Yt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),id=Yt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),ad=Yt("div",{display:"flex",gap:"$6",alignItems:"center"}),sd=Yt("div",{paddingLeft:"48px"}),ld=Yt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),cd=Yt(ek,{maxWidth:"100px",whiteSpace:"nowrap"}),wi=Yt(RC,{variants:{disabled:{true:{opacity:"0.5"}}}});function vi(t){let{namespace:e}=t,o=k().blockchains();return yn.createElement(Ci,{unsupported:!0},yn.createElement(ki,null,yn.createElement(wi,{src:Ti(o,e.id),size:40,disabled:!0}),yn.createElement(id,null,yn.createElement(pd,{variant:"label",size:"large"},e.label),yn.createElement(pd,{variant:"body",size:"xsmall"},tk.t("(Currently not supported)")))))}i(vi,"NamespaceUnsupportedItem");import{Checkbox as ck,Radio as pk}from"@rango-dev/ui";import Ls from"react";import{i18n as Ws}from"@lingui/core";import{getSupportedChainsFromNamespace as nk}from"@rango-dev/internal-blockchains";import{ChevronDownIcon as rk,ChevronUpIcon as ik,Divider as ak,Typography as ir}from"@rango-dev/ui";import We,{useEffect as sk,useState as lk}from"react";import{Image as dd,Tooltip as md,Typography as ok}from"@rango-dev/ui";import $t from"react";import{styled as ud}from"@rango-dev/ui";var As=ud("div",{display:"flex",alignItems:"center",padding:0,margin:0}),Ei=ud("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 Ns=3;function fd(t){let{chains:e}=t;return $t.createElement(As,{id:"widget-supported-chains-container"},e.slice(0,Ns).map((o,n)=>$t.createElement(md,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},$t.createElement(Ei,{firstItem:n===0},$t.createElement(dd,{src:o.logo,size:15})))),e.length>Ns&&$t.createElement(md,{container:W(),side:"bottom",align:"start",sideOffset:4,content:$t.createElement(As,null,e.map((o,n)=>$t.createElement(Ei,{key:o.name,firstItem:n===0},$t.createElement(dd,{src:o.logo,size:15}))))},$t.createElement(Ei,null,$t.createElement(ok,{variant:"body",size:"xsmall"},"+",e.length-Ns))))}i(fd,"SupportedChainsList");function Oo(t){let{namespace:e,error:o,suffix:n,connected:r,address:a,onClick:s}=t,[c,l]=lk(!1),p=k().blockchains();sk(()=>l(!1),[o]);let u=nk(e,p),d=!o&&!r&&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(rd,{showSupportedChains:d||r||!!o},We.createElement(ad,null,We.createElement(ir,{variant:"label",size:"large"},e.label),r&&We.createElement(ir,{variant:"body",size:"small",color:"success500"},Ws.t("Connected")),!!o&&We.createElement(ir,{variant:"body",size:"small",color:"error500"},Ws.t("Connection failed"))),d&&We.createElement(fd,{chains:u}),r&&We.createElement(cd,{variant:"body",size:"small",color:"neutral700"},a),o&&We.createElement(ld,{onClick:()=>l(f=>!f)},We.createElement(ir,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},Ws.t("See why")),c?We.createElement(ik,{size:12,color:"gray"}):We.createElement(rk,{size:12,color:"gray"}))),n),!!o&&c&&We.createElement(We.Fragment,null,We.createElement(ak,{size:4}),We.createElement(sd,null,We.createElement(ir,{variant:"body",size:"small",color:"neutral700"},o))))}i(Oo,"NamespaceItem");function gd(t){let{onClick:e,type:o,namespace:n}=t;return Ls.createElement(Oo,{namespace:n,onClick:e,suffix:o==="radio"?Ls.createElement(pk,{value:n.value}):Ls.createElement(ck,{checked:t.value})})}i(gd,"NamespaceListItem");import{Button as uk,styled as hd}from"@rango-dev/ui";var bi=hd("ul",{padding:0,paddingBottom:"$20",margin:0}),Sn=hd(uk,{minHeight:"$40"});function ar(t){let{targetWallet:e}=t.value,o=e.properties?.find(m=>m.name==="namespaces"),n=e.isHub,r=e.isHub?o?.value.selection==="single":e.needsNamespace?.selection==="single",a=n?o?.value:e.needsNamespace,s=e.image,c=k().blockchains(),[l,p]=kk([]),u=Ck(()=>a?.data.filter(m=>!m.unsupported),[e?.type]),d=i(m=>{p(r?[m]:S=>S.includes(m)?S.filter(T=>T!==m):S.concat(m))},"onSelect"),f=u?.length===l.length,h=i(()=>{if(r)throw new Error("onSelectAll should not be called on single selection mode.");f?p([]):u&&p(u.map(m=>m.value))},"onSelectAll"),g=i(m=>r?le.createElement(yk,{value:l?.[0]},m):le.createElement(le.Fragment,null,m),"wrapRadioRoot");return Tk(()=>{if(!r&&u)if(t.value.defaultSelectedChains?.length){let m=u.filter(S=>dk(S,c).some(T=>t.value.defaultSelectedChains?.includes(T.name)));p(m.map(S=>S.value))}else p(u.map(m=>m.value))},[]),le.createElement(le.Fragment,null,le.createElement(hk,{type:"info",title:Tn.t("Connect {wallet}",{wallet:e.title}),description:Tn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(Sk,null,le.createElement(gk,{src:s,size:45}))}),r?le.createElement(le.Fragment,null,le.createElement(Cn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(mk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:Tn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(fk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:h},f?Tn.t("Deselect all"):Tn.t("Select all")),le.createElement(Cn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(bi,null,g(le.createElement(le.Fragment,null,a?.data.map((m,S,T)=>le.createElement(le.Fragment,{key:m.id},m.unsupported?le.createElement(vi,{namespace:m}):le.createElement(gd,{value:l.includes(m.value),namespace:m,type:r?"radio":"checkbox",onClick:()=>d(m.value)}),S!==T.length-1&&le.createElement(Cn,{size:10})))))),le.createElement(Cn,{size:20}),le.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!l.length,onClick:()=>t.onConfirm(l)},Tn.t("Connect")))}i(ar,"Namespaces");import{i18n as sr}from"@lingui/core";import{Alert as Ak,Button as Nk,Divider as kn,Image as Wk,MessageBox as Lk,WalletImageContainer as Pk}from"@rango-dev/ui";import{useWallets as Bk}from"@rango-dev/wallets-react";import me from"react";import{styled as wk}from"@rango-dev/ui";var yd=wk("div",{display:"flex",justifyContent:"end"});import{i18n as Ps}from"@lingui/core";import{Button as vk,Spinner as Ek}from"@rango-dev/ui";import Bs,{useLayoutEffect as bk,useRef as xk,useState as Ik}from"react";function Sd(t){let{namespace:e,initialConnect:o,disabled:n,state:r,handleConnect:a,handleDisconnect:s}=t,[c,l]=Ik(null),p=xk(!1);bk(()=>{o&&!p.current&&u()},[]);let u=i(async g=>{try{p.current=!0,await a(g)}catch(m){l(Tt(m)??m)}finally{p.current=!1}},"handleConnectNamespace"),d=i(async()=>{l(null),r.connected?await s():u({shouldAskForDerivationPath:!0})},"handleButtonClick"),f=i(()=>{let g=r.accounts?.[0]?.split(":"),m=g?.[g.length-1];return!r.connected||!m?null:uo(m)},"getConnectedAddress"),h=i(()=>r.connected?Ps.t("Disconnect"):c?Ps.t("Try again"):Ps.t("Connect"),"getButtonText");return Bs.createElement(Oo,{namespace:e,connected:r.connected,error:c?.message,address:f(),suffix:r.connecting?Bs.createElement(Ek,{color:"info"}):Bs.createElement(vk,{id:"widget-name-space-connect-btn",variant:"ghost",type:r.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}i(Sd,"NamespaceDetachedItem");function lr(t){let{value:e,selectedNamespaces:o,onConfirm:n,confirmText:r=sr.t("Done"),onDisconnectWallet:a,navigateToDerivationPath:s}=t,{targetWallet:c}=e,{connect:l,disconnect:p,state:u}=Bk(),d=c.type,f=u(d),h=c.properties?.find(w=>w.name==="namespaces"),g=c.properties?.find(w=>w.name==="derivationPath"),m=h?.value.selection==="single",S=i(async(w,v)=>{m&&await p(d),g&&v?.shouldAskForDerivationPath?s(w):await l(d,[{namespace:w,network:"",derivationPath:v?.derivationPath??void 0}])},"handleConnectNamespace"),T=i(async w=>{await p(d,[w])},"handleDisconnectNamespace"),y=i(()=>m?me.createElement(me.Fragment,null,me.createElement(kn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(Ak,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:sr.t("This wallet can only connect to one chain at a time.")}),me.createElement(kn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(kn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(yd,null,me.createElement(Nk,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:f.connecting||!f.connected,onClick:a},sr.t("Disconnect wallet"))),me.createElement(kn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),C=i(w=>{if(w.unsupported)return me.createElement(vi,{namespace:w});let v=o?.find(E=>E.namespace===w.value),I=f.namespaces?.get(w.value);if(!I)throw new Error(`State for ${w.value} was not found!`);let A=m&&f.connecting;return me.createElement(Sd,{namespace:w,initialConnect:!!v,disabled:A,state:I,handleConnect:async E=>S(w.value,{derivationPath:v?.derivationPath,shouldAskForDerivationPath:E?.shouldAskForDerivationPath}),handleDisconnect:async()=>T(w.value)})},"renderNamespaceItem");return me.createElement(me.Fragment,null,me.createElement(Lk,{type:"info",title:sr.t("Connect {wallet}",{wallet:c.title}),description:sr.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:me.createElement(Pk,null,me.createElement(Wk,{src:c.image,size:45}))}),y(),me.createElement(bi,{id:"widget-detached-namespace-list"},c.needsNamespace?.data.map((w,v,I)=>me.createElement(me.Fragment,{key:w.id},C(w),v!==I.length-1&&me.createElement(kn,{size:10})))),me.createElement(kn,{size:20}),me.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},r))}i(lr,"Detached");import{i18n as wn}from"@lingui/core";import{Divider as Dk,Image as $k,MessageBox as Fk,Select as Ok,TextField as Uk}from"@rango-dev/ui";import{useWallets as zk}from"@rango-dev/wallets-react";import It,{useEffect as Hk,useMemo as Qk,useState as kd}from"react";var xi={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Td(t,e){let o=t.filter(n=>n.namespace===e);return o.length?[...o,xi]:[]}i(Td,"getDerivationPaths");import{Button as _k,styled as _s,Typography as Mk}from"@rango-dev/ui";var Cd=_s("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Ms=_s(Mk,{paddingLeft:"$10"}),Ds={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},kM=_s(_k,{minHeight:"$40"});var wd="0";function cr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,{getWalletInfo:a}=zk(),[s,c]=kd(null),[l,p]=kd(wd),u=s===xi.id,d=Qk(()=>Td(a(r).needsDerivationPath?.data??[],o),[r,o]),f=i(({value:g})=>{let m=d?.find(S=>S.id===g);m&&(s===xi.id&&Number.isNaN(Number(l))&&p(wd),c(m.id))},"handleDerivationPathItemClick"),h=i(()=>{let g=d.find(m=>m.id===s);if(g)e(g.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return Hk(()=>{c(d[0]?.id||null)},[d]),It.createElement(It.Fragment,null,It.createElement(Fk,{type:"info",title:wn.t("Select Derivation Path"),description:wn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:It.createElement($k,{src:n,size:45})}),It.createElement(Cd,{className:"_derivation_path_inputs_container"},It.createElement(Ms,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},wn.t("Choose Derivation Path Template")),It.createElement(Ok,{id:"widget-derivation-path-template-select",value:s||"",options:d.map(g=>({value:g.id,label:g.label})),variant:"filled",handleItemClick:f,styles:{trigger:Ds}}),It.createElement(Dk,{size:20}),It.createElement(Ms,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},u?wn.t("Enter Path"):wn.t("Enter Index")),It.createElement(Uk,{id:"widget-derivation-path-template-input",type:u?"text":"number",variant:"contained",value:l,onChange:g=>p(g.target.value),style:Ds})),It.createElement(Sn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!d||!s||!l},wn.t("Confirm")))}i(cr,"DerivationPath");import{i18n as vn}from"@lingui/core";import{Image as Vk,MessageBox as Fs,WalletImageContainer as Kk,WalletState as jk}from"@rango-dev/ui";import{useWallets as Xk}from"@rango-dev/wallets-react";import Uo from"react";import{keyframes as qk,styled as $s}from"@rango-dev/ui";var BM=$s("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),vd=$s("div",{position:"relative"}),Gk=qk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Ed=$s("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Gk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function Os(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a,getWalletInfo:s}=Xk();return Rn(s(n),a(n))===jk.CONNECTED?Uo.createElement(Fs,{type:"success",title:vn.t("Wallet Connected"),description:vn.t("Your wallet is connected, you can use it to swap.")}):o?Uo.createElement(Fs,{type:"error",title:vn.t("Failed to Connect"),description:o||vn.t("Your wallet is not connected. Please try again.")}):Uo.createElement(Fs,{type:"loading",title:vn.t("Connecting to your wallet"),description:vn.t("Click connect in your wallet popup."),icon:Uo.createElement(vd,null,Uo.createElement(Kk,null,Uo.createElement(Vk,{src:r,size:45})),Uo.createElement(Ed,null))})}i(Os,"ConnectStatus");function bd(t,e){return t().status==="init"&&!!e}i(bd,"isOnStatus");function pr(t){return t().status==="namespace"}i(pr,"isOnNamespace");function ur(t){return t().status==="derivationPath"}i(ur,"isOnDerivationPath");function Lo(t){return t().status==="detached"}i(Lo,"isOnDetached");var Rk=3e3,ew=300;function dr(t){let e=Jk(),[o,n]=xd(!1),[r,a]=xd(),s=i(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=xt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:f,handleDisconnect:h}=ln(),g=i(v=>{u(t.wallet,v).then(C).catch(s)},"handleConfirmNamespaces"),m=i(()=>{T()},"handleDetachedConfirm"),S=i(v=>{if(!v)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(t.wallet,v).then(C).catch(s)},"handleDerivationPathConfirm"),T=i(()=>{n(!1)},"handleClosingModal"),y=i(()=>{a(void 0),f(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),C=i((v,I)=>{let A=v.status==="connected",E=["disconnected","disconnected-unhandled"].includes(v.status);A?(t.onConnect?.(),I||(e.current=setTimeout(T,Rk))):E&&T()},"afterConnected"),w=i(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return Zk(()=>{if(t.wallet){y();let v=!1,I=!0;i(()=>{setTimeout(()=>{I=!1,v||n(!0)},ew)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","Detached","derivation-path"].includes(E.status)||(v=!0),C(E,I)}).catch(s)}},[t.wallet]),fo.createElement(ie,{id:t.id,open:o,onClose:T,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},bd(d,t.wallet)&&fo.createElement(fo.Fragment,null,fo.createElement(Os,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),fo.createElement(Yk,{direction:"vertical",size:32})),pr(d)&&fo.createElement(ar,{onConfirm:g,value:d().namespace}),ur(d)&&fo.createElement(cr,{onConfirm:S,value:d().derivationPath}),Lo(d)&&fo.createElement(lr,{onConfirm:m,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}i(dr,"StatefulConnectModal");import os from"react";import tw,{Fragment as ow}from"react";import{MemoryRouter as nw,useInRouterContext as rw}from"react-router";function Ii({children:t}){let o=rw()?ow:nw;return tw.createElement(o,null,t)}i(Ii,"AppRouter");import{I18nManager as R0}from"@rango-dev/ui";import Lp from"react";import He from"react";import{useRoutes as L0}from"react-router-dom";var $={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as bn,useRef as _i}from"react";import at from"bignumber.js";import{create as nm}from"zustand";import{subscribeWithSelector as rm}from"zustand/middleware";import{createContext as iw,useContext as aw}from"react";var Id=iw({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=aw(Id);return{swapMode:t,isMultiMode:e}}i(rt,"useSwapMode");import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as cw,RouteEventType as UD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as mr}from"rango-types";import{i18n as Ai}from"@lingui/core";var zo=i(()=>({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 Us(t,e){return{"Network Fee":e("Network Fee"),"Swapper Fee":e("Protocol Fee"),"Affiliate Fee":e("Affiliate Fee"),"Outbound network fee":e("Outbound Fee"),"Rango Fee":e("Rango Fee")}[t]}i(Us,"getFeeLabel");var zs=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],Ad=100,Nd=30,Wd=15,Ld=60;var Pd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Bd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as lw}from"@rango-dev/queue-manager-rango-preset";import xD from"bignumber.js";function Md(t,e){if(e===null)return null;let o=e?.find(n=>n.blockchain===t.chain)?.wallets.find(n=>n.address?.toLowerCase()===t.address.toLowerCase());return o?o.requiredAssets:null}i(Md,"getRequiredBalanceOfWallet");function Jt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Jt,"getPriceImpactLevel");function Ni(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=lw(t.steps);if(!r||!n)return{fromBlockchain:null,fromToken:void 0,toBlockchain:null,toToken:void 0,inputAmount:""};let s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},c=Po(a?a.toBlockchain:n.fromBlockchain,e),l=Po(r.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}}i(Ni,"createRetryQuote");function En(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=Ho(o),s=it(o);if(o&&a&&s){let p=Zt(a.toString(),s.toString());if(!!p&&Ud(a,p)){let d=Li(o?.swaps,n),f=Jt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:f}}}if(e&&Qd(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Zt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=Pi(o.swaps),l=r>dn;if(Hd(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:zd(o,r),minRequiredSlippage:c};return null}i(En,"generateQuoteWarnings");function Dd(t){return![4].includes(t.type)}i(Dd,"isQuoteWarningConfirmationRequired");function Zt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Hs(t.toString(),e.toString());return n&&n<0?n:null}i(Zt,"getPriceImpact");var $d=i(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),Wi=i((t,e)=>e.sort((o,n)=>{let r=i(p=>p.scores?.find(u=>u.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let c=o.requestId.toLowerCase(),l=n.requestId.toLowerCase();return c.localeCompare(l)}),"sortQuotesBy"),Fd=i((t,e,o)=>{let n=e[0];if(!e.length||!n)return null;if(!t)return{requestAmount:o,validationStatus:null,...n};let r=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(r).every(l=>c.has(l))});return{requestAmount:o,validationStatus:null,...a||n}},"getDefaultQuote"),Od=i(t=>{let e=i((o,n)=>{let r=zs.indexOf(o.value),a=zs.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Ud(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return Pd.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Ge(r)))}i(Ud,"hasHighValueLoss");function qd(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}i(qd,"hasLimitError");function Gd(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,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&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):r&&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),!r&&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):r&&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}}i(Gd,"getLimitErrorMessage");function Vd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:zo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!r||r==="0"?{title:zo().swap,action:"confirm-swap",disabled:!0}:s?{title:zo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:zo().ethWarning,action:"confirm-warning",disabled:!1}:{title:zo().swap,action:"confirm-swap",disabled:!1}:{title:zo().connectWallet,action:"connect-wallet",disabled:!1}}i(Vd,"getSwapButtonState");function Qs(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(pe))&&e&&e!=="0"&&n!==0)}i(Qs,"canComputePriceImpact");function qs(t,e){let o=pe;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(!r||r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Ge(r.amount).multipliedBy(a||0))}return o}i(qs,"getUsdFeeOfStep");function Li(t,e){return t.reduce((o,n)=>o.plus(qs(n,e)),pe)}i(Li,"getTotalFeeInUsd");function Gs(t){let e=pe,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}i(Gs,"getUsdFee");function Vs(t){return t.reduce((e,o)=>e.plus(Gs(o)),pe)}i(Vs,"getTotalFeesInUsd");function Kd(t){return t.reduce((e,o)=>{for(let n of o.fee){let r=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[r]=[...a[r]||[],n]}return e},{payable:{},nonePayable:{}})}i(Kd,"getFeesGroup");function jd(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}i(jd,"checkSlippageErrors");function zd(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?Object.fromEntries(o):null}i(zd,"checkSlippageWarnings");function Pi(t){return t.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}i(Pi,"getMinRequiredSlippage");function Hd(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Hd,"hasProperSlippage");function Xd(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:c,excludeLiquiditySources:l,slippage:p,affiliateRef:u,affiliatePercent:d,affiliateWallets:f,destination:h,contractCall:g}=t,m=a?.reduce((y,C)=>(y[C.chain]=C.address,y),{}),S=[];return r?.forEach(y=>{S.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:d??void 0,affiliateWallets:f??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:S,selectedWallets:m??{},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}}}i(Xd,"createQuoteRequestBody");function Yd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}i(Yd,"getWalletsForNewSwap");function Ho(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}i(Ho,"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)}i(it,"getUsdOutputFrom");function Hs(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(Ad).toNumber()}i(Hs,"getPercentageChange");function Qd(t,e){let o=Ho(t),n=it(t),r=it(e);if(!o||!n||!r)return!1;let a=Hs(n.toString(),r.toString());return Bd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}i(Qd,"isOutputAmountChangedExcessively");function Zd(t,e,o){let n=t.validationStatus,r=Do({filter:"required",quote:t});return e.sort((s,c)=>r.indexOf(s.chain)-r.indexOf(c.chain)).flatMap(s=>Md(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)}})})}i(Zd,"generateBalanceWarnings");function fr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==mr.NetworkChanged}i(fr,"isNetworkStatusInWarningState");function Jd(t,e,o){let n="bellow button or",r=t.extraMessage,a=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(n)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(n,"")),fr(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?cw(t,e):null)?.walletType,d=u?o?.(u)?.name:null;switch(e?.networkStatus){case mr.WaitingForConnectingWallet:r=d?vt.t("Connect {wallet}",{wallet:d}):r;break;case mr.WaitingForQueue:r=r||vt.t("Waiting for other running tasks to be finished");break;case mr.WaitingForNetworkChange:r=r||vt.t("Waiting for changing wallet network");break;case mr.NetworkChangeFailed:r=r||vt.t("The network switch could not be completed. Please try again, or switch the network manually in your wallet.");break;default:r=r||"";break}}a=a||"",r=r||"";let c=Tt(r)??Tt(a);c&&(a=[r,a].filter(Boolean).join(`
2
- `),r=c.message);let l=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:l}}}i(Jd,"getSwapMessages");function Rd(t){let e=null;if(t.status==="failed"){let o=t.steps.slice().reverse().filter(n=>n.status==="success")[0];o&&(e={blockchain:o.toBlockchain,symbol:o.toSymbol,outputAmount:o.outputAmount,address:o.toSymbolAddress})}return e}i(Rd,"getLastConvertedTokenInFailedSwap");function em(t){return t.status==="failed"}i(em,"shouldRetrySwap");function tm(t,e,o,n,r,a){if(!n||t)return!0;let s=Do({filter:"all",quote:n}),c=Do({filter:"required",quote:n}),l=s.every(d=>r.some(f=>f.chain===d)),p=c.every(d=>r.some(f=>f.chain===d)),u=o&&a?Bo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}i(tm,"isConfirmSwapDisabled");function om(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(om,"isTokensIdentical");var Bi=i((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),im=i(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,r=pe,a=o.inputUsdValue;return Jn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=Ho(e)??pe,r=it(e)??pe),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,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=bu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=ku(e);li(e)||(o=hu(o),o=yu(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:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Bi(n??null,s),outputUsdValue:new at(0),toBlockchain:r,toToken:a,selectedQuote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:e.toToken?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"),am=nm()(rm(im)),sm=nm()(rm(im)),pw=mo(am),uw=mo(sm);function z(){let{swapMode:t}=rt();return mo(t==="refuel"?sm:am)}i(z,"useQuoteStore");var lm=i((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ge.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&ge.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})},"subscribeCallback"),cm=pw.subscribe(lm),pm=uw.subscribe(lm);function um(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=k().config,d=k().fetchStatus,f=k().blockchains(),{findToken:h}=k(),{setAffiliateRef:g,setAffiliatePercent:m,setAffiliateWallets:S}=k(),T=u?.from?.tokens,y=u?.from?.blockchains,C=u?.to?.tokens,w=u?.to?.blockchains,v=_i(void 0),I=_i(void 0),A=_i(void 0),E=_i(void 0);bn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),bn(()=>{if(d==="success"){r();let x=f.find(N=>N.name===u?.from?.blockchain),b=u?.from?.token,P=b&&h(b);(x||!x&&A.current)&&n(x??null),P?a({token:P,meta:{blockchains:f}}):!P&&v.current&&a({token:null}),A.current=u?.from?.blockchain,v.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,d]),bn(()=>{Cs(s,T)&&a({token:null}),ks(l,y)&&n(null)},[T,y]),bn(()=>{Cs(c,C)&&a({token:null}),ks(p,w)&&o(null)},[C,w]),bn(()=>{if(d==="success"){r();let x=f.find(N=>N.name===u?.to?.blockchain),b=u?.to?.token,P=b&&h(b);(x||!x&&E.current)&&o(x??null),P?e({token:P,meta:{blockchains:f}}):!P&&I.current&&e({token:null}),E.current=u?.to?.blockchain,I.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),bn(()=>{g(u?.affiliate?.ref??null),m(u?.affiliate?.percent??null),S(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(um,"useSyncStoresWithConfig");import{useEffect as Xs,useRef as dw}from"react";import{useInRouterContext as mw,useLocation as fw,useSearchParams as gw}from"react-router-dom";function Ks(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}i(Ks,"convertTokenSearchParamToAsset");function js(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(js,"tokenToSearchParam");function Zs(){let t=fw(),[e,o]=gw(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:f}=z()(),h=k().fetchStatus,g=k().blockchains(),m=mw(),{updateIframe:S,updateCampaignMode:T}=k(),y=k().isInCampaignMode(),C=dw(),{findToken:w}=k(),v=i(()=>{let A={};for(let[L,Z]of e.entries())(L.startsWith("utm_")||L.startsWith("privy_"))&&(A[L]=Z);let E=e.get("fromAmount"),x=e.get("fromBlockchain"),b=e.get("fromToken"),P=e.get("toBlockchain"),N=e.get("toToken"),O=e.get("autoConnect"),q=e.get("clientUrl"),j=e.get("liquiditySources"),ee=e.get("blockchain");return{fromAmount:E,fromBlockchain:x,fromToken:b,toBlockchain:P,toToken:N,autoConnect:O,clientUrl:q,liquiditySources:j,extraQueryParams:A,blockchain:ee}},"getUrlSearchParams"),I=i(A=>{for(let E in A)A[E]||delete A[E];o(A,{replace:!0})},"updateUrlSearchParams");Xs(()=>{let{autoConnect:A,clientUrl:E,extraQueryParams:x,blockchain:b}=v();m&&h==="success"&&I({fromBlockchain:n?.name,fromToken:js(a),toBlockchain:r?.name,toToken:js(s),fromAmount:c,autoConnect:A??void 0,clientUrl:E??void 0,blockchain:b??void 0,liquiditySources:y?C.current:void 0,...x})},[t.pathname,c,n,a,r,s,y,h]),Xs(()=>{if(!m)return;let A=v();if(!C.current&&A.liquiditySources&&(C.current=A.liquiditySources),A.fromAmount&&f(A.fromAmount),h==="success"){let E=g.find(q=>q.name===A.fromBlockchain),x=A.fromToken&&E&&Ks(A.fromToken,E),b=x?w(x):void 0,P=g.find(q=>q.name===A.toBlockchain),N=A.toToken&&P&&Ks(A.toToken,P),O=N?w(N):void 0;E&&(l(E),b&&u({token:b,meta:{blockchains:g}})),P&&(p(P),O&&d({token:O,meta:{blockchains:g}}))}},[h]),Xs(()=>{let{clientUrl:A,liquiditySources:E}=v();S("clientUrl",A||void 0),T("liquiditySources",E?.split(",")??void 0)},[])}i(Zs,"useSyncUrlAndStore");import{i18n as An}from"@lingui/core";import{Alert as Dv,Button as $v,darkTheme as Fv,Divider as Il,DoneIcon as Ov,styled as Uv,TextField as zv,Typography as Hv}from"@rango-dev/ui";import Ke,{useState as Qv}from"react";import{useNavigate as qv,useSearchParams as Gv}from"react-router-dom";import{ChevronRightIcon as hw,Divider as hm,Image as yw,Typography as ym}from"@rango-dev/ui";import At from"react";import{darkTheme as dm,styled as Js}from"@rango-dev/ui";var mm=Js("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${dm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${dm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),fm=Js("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),gm=Js("div",{display:"flex"});function Rs(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return At.createElement(fm,null,At.createElement(ym,{size:"large",variant:"label"},n),At.createElement(hm,{size:10}),At.createElement(mm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},At.createElement(gm,null,r&&At.createElement(At.Fragment,null,At.createElement(yw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),At.createElement(hm,{size:4,direction:"horizontal"})),At.createElement(ym,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),At.createElement(hw,{size:12,color:"black"})))}i(Rs,"BlockchainSelectorButton");import{i18n as nl}from"@lingui/core";import{Button as bw,Divider as wm,MessageBox as xw}from"@rango-dev/ui";import go,{useEffect as vm,useState as rl}from"react";import{i18n as Mi}from"@lingui/core";import{Divider as Qo,ExternalLinkIcon as Cw,Image as kw,InfoIcon as ww,Tooltip as vw,Typography as hr}from"@rango-dev/ui";import fe from"react";var Sm="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as Sw,darkTheme as xn,styled as gr,Typography as Tw}from"@rango-dev/ui";var el=gr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),Tm=gr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${xn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}}}),tl=gr(Sw,{minHeight:"$40"}),Cm=gr(Tw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),km=gr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var Ew=9;function ol(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,c=n.address?ni({contractAddress:n.address,blockchainMeta:s}):void 0,l=i(()=>window.open(Sm,"_blank"),"onClickLearnMore");return fe.createElement(ie,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:r,container:W()},fe.createElement(Tm,null,fe.createElement(kw,{src:n.image===""?ii:n.image,size:45,type:"circular"}),fe.createElement(Qo,{size:4}),fe.createElement(km,null,fe.createElement(Cm,{variant:"title",size:"medium"},n.symbol),n.symbol.length>Ew&&fe.createElement(vw,{content:n.symbol,container:W()},fe.createElement(ww,{size:12,color:"gray"}))),fe.createElement(hr,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),fe.createElement(Qo,{size:4}),fe.createElement(hr,{variant:"body",size:"medium"},c?fe.createElement(el,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(Cw,{size:12,color:"gray"})):fe.createElement(el,null,n.address)),fe.createElement(Qo,{size:4}),n.coinSource&&fe.createElement(hr,{className:"_coin-source",variant:"body",size:"xsmall"},Mi.t("via")," ",fe.createElement(hr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Qo,{size:"32"}),fe.createElement(hr,{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(tl,{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(tl,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},Mi.t("Learn More")))}i(ol,"CustomTokenModal");function yr(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=k(),[d,f]=rl(!1),[h,g]=rl(!1),[m,S]=rl(!1),T=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),f(!1)},"closeErrorModal"),C=i(()=>{S(!0),y()},"handleErrorModalButtonClick"),w=i(()=>{m&&n?.type==="network-error"&&(S(!1),T()),l()},"handleExit"),v=i(()=>{e&&(u(e),c())},"handleSubmit");return vm(()=>{n&&f(!0)},[n]),vm(()=>{o&&e&&g(!0)},[o,e]),go.createElement(go.Fragment,null,go.createElement(ie,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},go.createElement(xw,{title:n?.title??"",type:"error",description:n?.message||nl.t("Failed Network, Please retry.")},go.createElement(wm,{size:40}),go.createElement(wm,{size:10}),go.createElement(bw,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:C},n?.type==="network-error"?nl.t("Retry"):nl.t("Add another custom token")))),o&&e&&go.createElement(ol,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}i(yr,"ImportCustomToken");import{useManager as Wv}from"@rango-dev/queue-manager-react";import{BottomLogo as Lv,Divider as nf,Header as Pv}from"@rango-dev/ui";import Pe,{useEffect as Gi,useLayoutEffect as Bv,useRef as rf,useState as af}from"react";import{useRef as Iw}from"react";function Di(){return window.self!==window.top}i(Di,"isAppLoadedIntoIframe");function il(){let t=Iw(null),{iframe:e}=k(),o=Di()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(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:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(il,"useIframe");import{useNavigate as Aw}from"react-router-dom";function Ve(){let t=Aw();return()=>t(-1)}i(Ve,"useNavigateBack");import{createTheme as dl,darkTheme as zw,lightTheme as Hw}from"@rango-dev/ui";import{useEffect as Qw,useState as qw}from"react";import{theme as Ow,darkColors as Uw}from"@rango-dev/ui";import pl from"react";var $i=16,Fi=255,Em=.11;function Nw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(Nw,"expandShortHexColor");function Ww(t,e){return t.padStart(e,"0")}i(Ww,"pad");function al(t){let e=Math.min(Math.max(Math.round(t),0),Fi);return Ww(e.toString($i),2)}i(al,"intToHex");function Lw(t){return`#${al(t.red)}${al(t.green)}${al(t.blue)}`}i(Lw,"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}}i(Pw,"hexToRGB");function Bw(t,e){let o=1-Em*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(Bw,"generateShade");function _w(t,e){let o=Em*e;return{red:t.red+(Fi-t.red)*o,green:t.green+(Fi-t.green)*o,blue:t.blue+(Fi-t.blue)*o}}i(_w,"generateTint");function Mw(t){return bm(t,Bw)}i(Mw,"calculateShades");function Dw(t){return bm(t,_w)}i(Dw,"calculateTints");function bm(t,e){let o=Pw(t),n=[];for(let r=1;r<9;r++)n.push(Lw(e(o,r)));return n}i(bm,"calculateColors");function sl(t,e,o){let a=Dw(t).reverse().concat(t),s=Mw(t),c=a.concat(s),l={},p=c.length;for(let u=0;u<p;u++){let d=100+(o?p-1-u:u)*50,f=c[u];f&&(l[`${e}${d}`]=f)}return l}i(sl,"createTintsAndShades");function ll(t,e,o){let n={...t};for(let r in e){let a=e[r],s=r==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(r)&&!vu(r)){let l=Nw(a);Object.assign(n,sl(l,r,s))}}return{...n,...e}}i(ll,"expandToGenerateThemeColors");var xm=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),$w=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=xm(o%52)+e;return xm(o%52)+e},"toAlphabeticName"),Fw=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),cl=i(t=>$w(Fw(5381,JSON.stringify(t))>>>0),"toHash");function ul(t){let e=Ow.colors,o={...e,...Uw},n,r;if(t?.light){let s={colors:ll(e,t.light)};n={id:`${Ts}-light-${cl(s)}`,tokens:s}}if(t?.dark){let s={colors:ll(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Ts}-dark-${cl(s)}`,tokens:s}}return{light:n,dark:r}}i(ul,"customizedThemeTokens");function Im(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>pl.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(pl.cloneElement(a,{key:s})),r<t.length-1){let c=`divider-${r}`;o.push(pl.cloneElement(e,{key:c}))}}),o}i(Im,"joinList");function Am(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(Am,"doesWindowPreferDarkColorScheme");function ho(t){let{colors:e,fontFamily:o=ru,borderRadius:n=Mu,secondaryBorderRadius:r=Du}=t,[a,s]=qw(Am()?"dark":"light"),{theme:c}=k(),{dark:l,light:p}=ul(e),u=dl({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),d=[u.className,Hw.className],f=[u.className,zw.className];if(p){let g=dl(p.id,p.tokens);d.push(g.className)}if(l){let g=dl(l.id,l.tokens);f.push(g.className)}return Qw(()=>{let g=i(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return Am()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:i(()=>{let g=d.join(" "),m=f.join(" ");return c==="auto"?a==="dark"?m:g:c==="dark"?m:g},"getActiveTheme"),mode:c==="auto"?a:c}}i(ho,"useTheme");var Et=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as Nm}from"@lingui/core";import{Alert as Gw,Button as Vw}from"@rango-dev/ui";import Wm from"react";function ml(t){return Wm.createElement(Gw,{action:Wm.createElement(Vw,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},Nm.t("Activate this tab")),type:"warning",variant:"alarm",title:Nm.t("Another tab is open and handles transactions.")})}i(ml,"ActivateTabAlert");import{i18n as fl}from"@lingui/core";import{Button as Kw,Divider as jw,MessageBox as Xw}from"@rango-dev/ui";import Oi from"react";function gl(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(Xw,{title:fl.t("Activate current tab"),type:"warning",description:fl.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(jw,{size:20}),Oi.createElement(Kw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},fl.t("Confirm"))))}i(gl,"ActivateTabModal");import{ChevronLeftIcon as Jw}from"@rango-dev/ui";import Fm from"react";import{css as Yw,darkTheme as Lm,IconButton as Zw,styled as qo}from"@rango-dev/ui";var Ft=qo(Zw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Lm} &`]:{backgroundColor:"$neutral"}}}),Pm=qo("div",{position:"absolute",background:"$secondary500",[`.${Lm} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),yo=qo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Bm=qo("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),_m=qo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Mm=qo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Dm=Yw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),$m=qo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function hl(t){return Fm.createElement(Ft,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Fm.createElement(Jw,{color:"black",size:16}))}i(hl,"BackButton");import{i18n as Rw}from"@lingui/core";import{Button as ev,Typography as tv}from"@rango-dev/ui";import yl from"react";function Sl(t){return yl.createElement(yo,null,yl.createElement(ev,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},yl.createElement(tv,{variant:"label",size:"medium",color:"error500"},Rw.t("Cancel"))))}i(Sl,"CancelButton");import{i18n as ov}from"@lingui/core";import{Image as nv,Tooltip as rv,WalletIcon as iv,WalletState as Om}from"@rango-dev/ui";import Go from"react";function Tl(t){let{list:e}=xt(),o=e.filter(r=>r.state===Om.CONNECTED||r.state===Om.PARTIALLY_CONNECTED),n=o.length?Go.createElement("div",{className:Dm()},o.map(r=>Go.createElement($m,{key:r.title},Go.createElement(nv,{src:r.image,size:14})))):ov.t("Connect Wallet");return Go.createElement(rv,{container:t.container,side:"bottom",content:n},Go.createElement(Ft,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&Go.createElement(Pm,null),Go.createElement(iv,{size:18,color:"black"})))}i(Tl,"WalletButton");import{i18n as zi}from"@lingui/core";import{NotificationsIcon as kv,Popover as wv,SettingsIcon as vv,Tooltip as Hi,TransactionIcon as Ev}from"@rango-dev/ui";import _e from"react";import{Notifications as cv}from"@rango-dev/ui";import pv from"react";import{useNavigate as uv}from"react-router-dom";import{create as av}from"zustand";import{persist as sv,subscribeWithSelector as lv}from"zustand/middleware";var Le=mo(av()(sv(lv((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1];if(!r||!a)return;let s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},c=e().notifications.filter(l=>l.requestId!==n.requestId);t(()=>({notifications:[...c,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(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,...r})=>r)}return t}})));function Cl(){let t=uv(),{getNotifications:e,clearNotifications:o}=Le(),n=e(),r=k().blockchains(),{findToken:a}=k();return pv.createElement(cv,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Kp(c,r),getTokenImage:c=>a(c)?.image,onClickItem:i(c=>{t(`${$.swaps}/${c}`)},"onClickItem"),onClearAll:o})}i(Cl,"NotificationContent");import{useManager as dv}from"@rango-dev/queue-manager-react";import{InProgressIcon as mv}from"@rango-dev/ui";import Um from"react";var fv=i(()=>{let{manager:t}=dv();return Et(t).map(({swap:o})=>o).find(o=>o.status==="running")?Um.createElement(Mm,{id:"widget-header-history-badge-container"},Um.createElement(mv,{color:"info",size:6})):null},"InProgressTransactionBadge"),zm=fv;import{EventSeverity as gv}from"@rango-dev/queue-manager-rango-preset";import{Typography as hv}from"@rango-dev/ui";import Hm from"react";function Qm(){let{getNotifications:t}=Le(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===gv.WARNING);return o?Hm.createElement(Bm,{isSever:n},Hm.createElement(hv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}i(Qm,"NotificationsBadge");import{RefreshProgressButton as yv}from"@rango-dev/ui";import kl,{useEffect as Sv,useState as qm}from"react";var Tv=1e3,Gm=60,Cv=100;function Ui({onClick:t}){let[e,o]=qm(0),[n,r]=qm(!1),a=i(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");Sv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Gm&&c()},Tv):s(l),document.addEventListener("visibilitychange",()=>a(l)),()=>{document.removeEventListener("visibilitychange",()=>a(l)),l&&clearInterval(l)}},[e,t]);let s=i(l=>{l&&clearInterval(l),o(0)},"clearTimeout"),c=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return kl.createElement(Ft,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},kl.createElement(_m,{onTransitionEnd:()=>r(!1),isRefetched:n},kl.createElement(yv,{size:22,color:t?"black":"gray",progress:e/Gm*Cv})))}i(Ui,"RefreshButton");function Vo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=k(),c=nt("notification",s)||r.includes("notifications");return _e.createElement(_e.Fragment,null,!r.includes("refresh")&&_e.createElement(Hi,{container:a||W(),side:"top",content:zi.t("Refresh")},_e.createElement(Ui,{onClick:e})),!c&&_e.createElement(wv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(Cl,null)},_e.createElement("div",null,_e.createElement(Hi,{container:W(),side:"top",content:zi.t("Notifications")},_e.createElement(Ft,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(kv,{size:18,color:"black"}),_e.createElement(Qm,null))))),!r.includes("settings")&&_e.createElement(Hi,{container:W(),side:"top",content:zi.t("Settings")},_e.createElement(Ft,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},_e.createElement(vv,{size:18,color:"black"}))),!r.includes("history")&&_e.createElement(Hi,{container:W(),side:"top",content:zi.t("History")},_e.createElement(Ft,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(Ev,{size:18,color:"black"}),_e.createElement(zm,null))))}i(Vo,"HeaderButtons");import{i18n as wl}from"@lingui/core";import{Divider as Km,MessageBox as Iv,RefreshIcon as Av}from"@rango-dev/ui";import In from"react";import{Button as bv,styled as xv}from"@rango-dev/ui";var Vm=xv(bv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function vl(t){let{open:e,onClose:o}=t;return In.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},In.createElement(Iv,{title:wl.t("Something went wrong"),type:"error",description:wl.t("Something went wrong. Please refresh the app.")},In.createElement(Km,{size:30}),In.createElement(Vm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},In.createElement(Av,{size:20,color:"primary"}),In.createElement(Km,{size:4,direction:"horizontal"}),wl.t("Refresh"))))}i(vl,"RefreshModal");var jm="700px",Xm="425px",Ym="550px",Zm="640px",Jm="800px";function El(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")}}i(El,"onScrollContentAttachStatusToContainer");import{css as Nv,styled as Qi}from"@rango-dev/ui";var qi=Nv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Rm=Qi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:jm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Xm,[`@media screen and (min-height: ${Jm})`]:{minHeight:Ym}}},showBanner:{true:{overflow:"visible"}}}}),ef=Qi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),tf=Qi("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"}}}),of=Qi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=il(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=k(),[u,d]=af(!1),{config:{features:f,theme:h}}=k(),{watermark:g}=re(),m=g==="FULL",{activeTheme:S}=ho(h||{}),[T,y]=af(!1),C=nt("connectWalletButton",f),{isActiveTab:w,tabManagerInitiated:v,showActivateTabModal:I,setShowActivateTabModal:A,activateCurrentTab:E,setShowCompactTokenSelector:x}=re(),b=Ve(),{manager:P}=Wv(),O=Et(P).map(({swap:Y})=>Y).some(Y=>Y.status==="running"),q=i(()=>E(Fo.forceClaim,O),"onActivateTab"),j=i(()=>{r.onWallet?.()},"onConnectWallet"),ee=typeof r.hasBackButton>"u"||r.hasBackButton,L=rf(null),Z=rf(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(()=>(L.current?.addEventListener("scroll",El),()=>{L.current?.removeEventListener("scroll",El)}),[]),Gi(()=>{d(c==="failed")},[c]),Bv(()=>{if(!Z.current)return;let Y=new ResizeObserver(ue=>{for(let Ee of ue)Ee.contentRect&&x(Ee.contentRect.height<parseInt(Zm))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Pe.createElement(Rm,{height:s,id:wt.SWAP_BOX_ID,className:`${S()} ${qi()}`,ref:Z,showBanner:T},Pe.createElement(Pv,{prefix:ee?Pe.createElement(hl,{onClick:()=>{b(),r.onBack?.()}}):null,title:r.title,suffix:Pe.createElement(Pe.Fragment,null,r.suffix,r.onWallet&&!C&&Pe.createElement(Tl,{container:W(),onClick:j,isConnected:!!l?.length}),r.onCancel&&Pe.createElement(Sl,{onClick:r.onCancel}))}),Pe.createElement(ef,{ref:L},n),Pe.createElement(gl,{open:I,onClose:()=>A(!1),onConfirm:q}),Pe.createElement(tf,null,Pe.createElement("div",{className:"footer__content"},v&&!w&&Pe.createElement("div",{className:"footer__alert"},Pe.createElement(ml,{onActivateTab:q}),Pe.createElement(nf,{size:10})),a),Pe.createElement(nf,{size:12}),Pe.createElement("div",{className:`footer__logo ${m?"logo__show":"logo__hidden"}`},Pe.createElement(Lv,null))),T&&Pe.createElement(of,null,p?.swapBoxBanner?.element),Pe.createElement(vl,{open:u,onClose:()=>d(!1)}))}i(se,"Layout");import{styled as _v}from"@rango-dev/ui";var sf="$20 $20 $10 $20",bl=_v("div",{padding:sf,overflowY:"auto",flexGrow:1});import{styled as Mv}from"@rango-dev/ui";var ce=Mv("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as So}from"@lingui/core";import{useState as xl}from"react";function lf(){let[t,e]=xl(!1),[o,n]=xl(null),[r,a]=xl(null),{findToken:s}=k(),c=k().customTokens(),l=i(()=>{a(null),e(!1),n(null)},"resetState");function p(d,f){switch(d){case"duplicated":return{type:d,title:So.t("Duplicate Token"),message:So.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:So.t("Token Already Exists"),message:So.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:d,title:So.t("Token Not Found"),message:So.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:f}})};case"network-error":return{type:d,title:So.t("Network error"),message:So.t("An error occurred while retrieving token data.")}}}return i(p,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:d,tokenAddress:f})=>{e(!0);try{if(c.some(T=>T.address?.toLowerCase()===f.toLowerCase())){let T=p("duplicated");n(T);return}let g=await dt().getCustomToken({blockchain:d,address:f});if(!g||!g.token||g.error){let T=p("not-found",d);n(T);return}let m=g.token;if(s({blockchain:m.blockchain,address:m.address,symbol:m.symbol})){let T=p("token-exist");n(T);return}return a({...m,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:r,loading:t,error:o,resetState:l}}i(lf,"useFetchCustomToken");var Vv=Uv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${Fv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function cf(){let t=qv(),[e]=Gv(),o=Ve(),n=k().blockchains(),r=e.get("blockchain")||"",a=Po(r,n),[s,c]=Qv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:f}=lf(),h=!!a&&Bo(a,s),g=!a||!s||!h,m=i(()=>{a&&l({blockchain:r,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:An.t("Add Custom Token")}},Ke.createElement(ce,null,Ke.createElement(Vv,null,Ke.createElement("div",null,Ke.createElement(Rs,{onClick:()=>t($.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:An.t("Select chain"),placeholder:An.t("Select chain")}),Ke.createElement(Il,{size:"24"}),Ke.createElement(Hv,{size:"large",variant:"label"},An.t("Enter Address")),Ke.createElement(Il,{size:10}),Ke.createElement(zv,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:An.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement(Ov,{color:"success",size:12}),onChange:S=>c(S.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(Il,{size:4}),Ke.createElement(Dv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement($v,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:m},An.t("Import"))),Ke.createElement(yr,{token:p,blockchain:a??void 0,address:s,error:d??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{d?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:f,onExitImportModal:f})))}i(cf,"AddCustomTokenPage");import{i18n as ac}from"@lingui/core";import{useManager as Wb}from"@rango-dev/queue-manager-react";import{Alert as Lb,Button as Pb,css as lc,Divider as sc,IconButton as Rg,styled as Bb,Typography as _b,WalletIcon as Mb}from"@rango-dev/ui";import $e,{useEffect as Ta,useLayoutEffect as Db,useRef as $b,useState as Ar}from"react";import{useNavigate as Fb}from"react-router-dom";import{i18n as jo}from"@lingui/core";import{Alert as uE,BalanceErrors as dE,Button as Bf,ChevronLeftIcon as mE,Divider as Bl,MessageBox as fE,Typography as _l}from"@rango-dev/ui";import ae,{useCallback as gE,useEffect as Zi,useMemo as hE,useState as Wn}from"react";import{useNavigate as yE}from"react-router-dom";import{i18n as Ll}from"@lingui/core";import{Alert as Zv,ChevronDownIcon as Jv,CloseIcon as Rv,Divider as hf,IconButton as yf,PasteIcon as eE,Typography as tE,WalletIcon as oE}from"@rango-dev/ui";import Me,{useEffect as Sf,useRef as Tf}from"react";import Xi,{useRef as Xv}from"react";import*as Nn from"@radix-ui/react-collapsible";import{keyframes as pf,styled as Vi}from"@rango-dev/ui";var Al=300,Kv=pf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),jv=pf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),uf=Vi(Nn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Nl=Vi(Nn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Ki=Vi(Nn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Kv} ${Al}ms ease-out`},false:{animation:`${jv} ${Al}ms ease-out`}}}}),ji=Vi("div",{transition:`all ${Al}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:r,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Xv(null);return Xi.createElement(uf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&Xi.createElement(Nl,{className:"collapsible_trigger",onClick:a},s),Xi.createElement(Ki,{className:"collapsible_content",open:e},r),c==="bottom"&&Xi.createElement(Nl,{className:"collapsible_trigger",onClick:a},s))}i(Yi,"CustomCollapsible");import{darkTheme as df,styled as Wl,TextField as Yv}from"@rango-dev/ui";var mf=Wl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),ff=Wl(Yv,{backgroundColor:"$neutral100"}),gf=Wl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${df} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${df} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Cf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=z()(),{config:s}=k(),c=k().blockchains(),l=Vp(e.name,c),p=Tf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!r&&e&&!Bo(e,r),g=i(()=>{a("")},"handleClear"),m=i(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let C=await navigator.clipboard.readText();a(C),p?.current?.focus()}},"handlePaste"),S=i(()=>r?Me.createElement(yf,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(Rv,{size:12,color:"gray"})):d?null:Me.createElement(yf,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},Me.createElement(eE,{size:16})),"renderSuffix");Sf(()=>{!!u&&r===null&&(a(u),o(!0))},[u]);let T=Tf(null);return Sf(()=>{if(!r){T.current=null;return}n&&Bo(e,r)&&T.current!==r&&(T.current=r,oe({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[r,n,e]),Me.createElement(mf,null,Me.createElement(Yi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(gf,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(oE,{size:18,color:"info"}),Me.createElement(hf,{size:4,direction:"horizontal"}),Me.createElement(tE,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Ll.t("Send to a different address"))),Me.createElement(ji,{orientation:n?"up":"down"},Me.createElement(Jv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(ff,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Ll.t("Enter {blockchainName} address",{blockchainName:l}),value:r||"",suffix:S(),onChange:y=>{let C=y.target.value;a(C)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(hf,{size:4}),Me.createElement(Zv,{variant:"alarm",type:"error",title:Ll.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(Cf,"CustomDestination");import{css as nE,IconButton as rE,SelectableWalletButton as iE,styled as To}from"@rango-dev/ui";var kf=To("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),wf=To("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),vf=To(iE,{justifyContent:"center"}),Ef=To("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),bf=To(rE,{position:"absolute",left:"$20"}),xf=To("div",{paddingTop:"$20"}),If=nE({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Af=To("div",{display:"flex"}),Nf=To("div",{overflow:"visible",width:"100%"});import{i18n as Wf}from"@lingui/core";import{warn as aE}from"@rango-dev/logging-core";import{makeInfo as sE,SelectableWallet as lE,Typography as Lf,WalletState as Sr}from"@rango-dev/ui";import Ko,{useEffect as cE,useState as Pf}from"react";var pE=7;function Pl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,c=re.use.isActiveTab(),{connectedWallets:l}=k(),[p,u]=Pf(),{list:d}=xt({chain:e}),[f,h]=Pf(d),g=d.length,m=a&&g-a>0;return cE(()=>{h(S=>{let T=d.findIndex(y=>n(y.type,e));return m&&T>1?[d[T]].concat(d.filter((y,C)=>C!==T)):S.map(y=>d.find(C=>C.type===y.type)??y)})},[JSON.stringify(d)]),Ko.createElement(Ko.Fragment,null,f.slice(0,a).map(S=>{let T=Wu({connectedWallets:l,walletType:S.type,chain:e}),y=S.state===Sr.CONNECTED||S.state===Sr.PARTIALLY_CONNECTED,C=T?uo(T,pE):"",w=y&&!!S.needsNamespace&&!C,v=i(async()=>{S.state===Sr.DISCONNECTED||w?u(S):r({walletType:S.type,chain:e,address:T??""})},"onSelectableWalletClick"),I=sE(S.state),A=i(()=>w?Wf.t("Chain not connected"):C||I.description,"getWalletDescription"),E=i(()=>S.state===Sr.CONNECTED||S.state===Sr.PARTIALLY_CONNECTED?w?"neutral600":"neutral700":I.color,"getWalletDescriptionColor");return Ko.createElement(lE,{key:S.type,id:"widget-wallets-list-selectable-wallet-btn",description:A(),descriptionColor:E(),onClick:v,selected:n(S.type,e),disabled:!c,...S})}),Ko.createElement(dr,{id:"widget-wallets-list-stateful-connect-modal",wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{u(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):aE(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),m&&Ko.createElement(vf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Ko.createElement(Lf,{variant:"label",size:"medium"},Wf.t("Show more wallets"),Ko.createElement(Lf,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}i(Pl,"WalletList");var SE=2;function _f(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=yE(),c=k().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:f,setCustomDestination:h}=z()(),{config:g,connectedWallets:m,setWalletsAsSelected:S}=k(),[T,y]=Wn(""),[C,w]=Wn([]),[v,I]=Wn(""),[A,E]=Wn(!!f),x=hE(()=>Do({filter:"all",quote:l}),[l]),b=Do({filter:"required",quote:l}),P=c.find(B=>B.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),N=i(B=>b.includes(B),"isWalletRequiredFor"),O=gE(()=>m.filter(B=>B.selected&&x.includes(B.chain)),[m,x]),[q,j]=Wn(O()),[ee,L]=Wn([]),Z=i((B,V)=>L(H=>H.concat({blockchain:B,walletType:V})),"addNextSelectedWallets"),Y=C.length>0,ue=i((B,V)=>!!q.find(H=>H.walletType===B&&H.chain===V&&H.selected&&(N(V)||!N(V)&&!f)),"isSelected"),Ee=i((B,V,H)=>{let X=!1;return B.map(G=>{if(G.chain===V){let J=G.selected;return!X&&H?(X=!0,J=!0):H||(J=!1),{...G,selected:J}}return G})},"updateSelectableWallets"),Vt=i(B=>{E(B),B?N(P?.name??"")||j(V=>Ee(V,P?.name||"",!1)):(h(""),j(V=>Ee(V,P?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),be=i(B=>{if(T&&y(""),ue(B.walletType,B.chain))return;let H=m.find(X=>X.walletType===B.walletType&&X.chain===B.chain);H&&(n(),B.chain===P?.name&&A&&!N(P.name)&&(E(!1),h(null)),j(X=>X.filter(G=>G.chain!==B.chain).concat({...H,selected:!0})))},"onChange"),Qe=i(()=>{let B=q.filter(V=>V.selected);oe({type:"swapWalletsConfirmed",payload:{routeId:l?.requestId??""}}),S(B),p(B),d(!0),o()},"onConfirmBalance"),Xe=i(async()=>{w([]),I("");let B=await r?.({selectedWallets:q.filter(H=>H.selected),customDestination:f}),V=B.warnings;V?.balance?.messages&&w(V.balance.messages),B.error&&I(Dp(B.error)),!B.error&&!V?.balance?.messages.length?Qe():w(V?.balance?.messages??[])},"onConfirmWallets");Zi(()=>{j(B=>{let V=[];return B.forEach(H=>{!m.some(G=>G.chain===H.chain&&G.walletType===H.walletType&&G.address===H.address)||V.push(H)}),V=V.concat(m.filter(H=>!!!V.find(G=>G.chain===H.chain)&&H.selected&&x.includes(H.chain))),V})},[m,x]),Zi(()=>{let B=[];ee.length>0&&(ee.forEach(V=>{let H=m.find(X=>X.chain===V.blockchain&&X.walletType===V.walletType);H?be(H):B.push(V)}),L(B))},[m,ee]);let St=l?.requestId??"";Zi(()=>{if(!e)return;let B=b.filter(V=>!m.some(H=>H.chain===V));oe({type:"swapWalletsModalShown",payload:{chainsRequired:b.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(Af,null,ae.createElement(Bf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:tm(a,A,f,l,q,P),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},jo.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(Ef,null,ae.createElement(bf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(mE,{size:16})),ae.createElement(_l,{variant:"headline",size:"small"},jo.t({id:"Your {blockchainName} wallets",values:{blockchainName:Ct(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(fE,{title:jo.t("Insufficient account balance"),type:"error",description:ae.createElement(dE,{messages:C??[]})},ae.createElement(Bf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{oe({type:"gasWarningBypassed",payload:{routeId:St}}),Qe()}},jo.t("Proceed anyway")))),T&&ae.createElement(xf,null,ae.createElement("div",{className:If()},ae.createElement(Pl,{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(uE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:jo.t(v)}),ae.createElement(Bl,{size:12})),ae.createElement(Nf,null,x.map((B,V)=>{let H=c.find(U=>U.name===B),X=`wallet-${V}`,G=V===x.length-1,J=G&&P&&g?.customDestination!==!1;return ae.createElement("div",{key:X},ae.createElement(kf,null,ae.createElement(_l,{variant:"title",size:"xmedium"},jo.t({id:"Your {blockchainName} wallets",values:{blockchainName:H?.shortName}})),ae.createElement(_l,{variant:"label",color:"$neutral700",size:"medium"},jo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:H?.shortName}}))),ae.createElement(Bl,{size:24}),ae.createElement(wf,null,ae.createElement(Pl,{chain:B,quoteChains:x,isSelected:ue,selectWallet:be,limit:SE,onShowMore:()=>y(H?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(Bl,{size:32}),J&&ae.createElement(Cf,{blockchain:P,open:A,handleOpenChange:Vt}))}))))}i(_f,"ConfirmWalletsModal");import{i18n as qE}from"@lingui/core";import{Alert as GE,Button as VE,Divider as eg,InfoIcon as KE}from"@rango-dev/ui";import Ue from"react";import{Alert as kE,Button as wE,Divider as $l,NoRouteIcon as vE,RefreshIcon as EE,Typography as zf}from"@rango-dev/ui";import mt from"react";import{i18n as Mf}from"@lingui/core";var TE=24,CE=60;function Df(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:te().genericServerError,action:{onClick:n,title:Mf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:te().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Mf.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}}i(Df,"makeInfo");var Ml=(o=>(o[o.small=TE]="small",o[o.large=CE]="large",o))(Ml||{}),Dl=(o=>(o.small="small",o.large="medium",o))(Dl||{});import{styled as Ji}from"@rango-dev/ui";var $f=Ji("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Ff=Ji("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Of=Ji("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Uf=Ji("div",{padding:"$6 $0"});function Tr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=k().getDisabledLiquiditySources(),s=k().toggleAllLiquiditySources,c=k().swappers(),l=Df(o,a,()=>s(c,!0),e);return r&&(l.alert=null),mt.createElement($f,{id:"widget-no-result-container"},mt.createElement(vE,{size:Ml[n],color:"gray"}),mt.createElement($l,{size:4}),mt.createElement(zf,{variant:"title",size:Dl[n]},te().noResultError.title),n==="large"&&mt.createElement($l,{size:4}),!!l.description&&mt.createElement(Ff,{size:n},mt.createElement(zf,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement($l,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Of,{size:n},mt.createElement(kE,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&mt.createElement(wE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement(Uf,null,mt.createElement(EE,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Tr,"NoResult");import{i18n as Cr}from"@lingui/core";import{Button as PE,Divider as BE,MessageBox as _E,Typography as ME,WarningIcon as DE}from"@rango-dev/ui";import Rt from"react";import{InfoIcon as AE,Tooltip as NE,Typography as WE}from"@rango-dev/ui";import Ln from"react";import{Button as bE,darkTheme as xE,styled as Xo,Typography as IE}from"@rango-dev/ui";var Hf=Xo("div",{width:"100%"}),Fl=Xo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Qf=Xo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${xE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),qf=Xo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),Gf=Xo(IE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Vf=Xo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),Kf=Xo(bE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var LE=35;function jf(t){let{title:e,value:o,valueColor:n}=t,r=W();return Ln.createElement(Qf,null,Ln.createElement(WE,{size:"medium",variant:"label",className:"_title"},e),Ln.createElement(qf,null,Ln.createElement(Gf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>LE&&Ln.createElement(NE,{content:o,container:r},Ln.createElement(AE,{size:12,color:"gray"}))))}i(jf,"QuoteErrorsModalItem");function Xf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",c=[{title:Cr.t("Swapping"),value:M(r.inputUsdValue)},{title:Cr.t("Gas cost"),value:M(r.totalFee,2,2)},{title:Cr.t("Receiving"),value:M(r.outputUsdValue)},{title:Cr.t("Price impact"),value:M(r.priceImpact,2,2),valueColor:`${s}500`}];return Rt.createElement(ie,{id:"widget-high-value-loss-warning-modal",footer:Rt.createElement(PE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Rt.createElement(DE,null),fullWidth:!0,disabled:a,onClick:n},te().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Rt.createElement(_E,{type:s,title:te().highValueLossError.impactTitle,description:te().highValueLossError.description}),Rt.createElement(Fl,null,Rt.createElement(BE,{size:"4"}),Rt.createElement(ME,{size:"small",variant:"title"},Cr.t("Details")),Rt.createElement(Fl,null,c.map((l,p)=>Rt.createElement(jf,{key:p,...l})))))}i(Xf,"HighValueLossWarningModal");import{i18n as Pn}from"@lingui/core";function Yf(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=Pn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Pn.t("Increase")),o;if(t){switch(t.type){case 0:{Jt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=te().highValueLossError.title;break}case 4:{o.title=Pn.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=Pn.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=Pn.t("Increase");break}case 3:{o.title=Pn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Yf,"makeAlerts");function Zf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(Zf,"getRequiredSlippage");import{i18n as Bn}from"@lingui/core";import{Button as $E,Divider as Ol,MessageBox as FE,WarningIcon as OE}from"@rango-dev/ui";import wo from"react";import{useNavigate as UE}from"react-router-dom";function Jf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=UE();return wo.createElement(ie,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},wo.createElement(FE,{type:"warning",title:r.type===3?Bn.t("High slippage"):Bn.t("Low slippage"),description:r.type===3?Bn.t("Caution, your slippage is high. Your trade may be front run."):Bn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},wo.createElement(Ol,{size:18}),wo.createElement(Ol,{size:32}),wo.createElement(Kf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},wo.createElement(OE,{color:"white",size:16}),Bn.t("Swap anyway")),wo.createElement(Ol,{size:10}),wo.createElement($E,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Bn.t("Change Slippage"))))}i(Jf,"SlippageWarningModal");import{Button as zE,MessageBox as HE,WarningIcon as QE}from"@rango-dev/ui";import Ri from"react";function Rf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Ri.createElement(ie,{id:"widget-unknown-price-warning-modal",footer:Ri.createElement(zE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ri.createElement(QE,null),fullWidth:!0,disabled:r,onClick:n},te().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},Ri.createElement(HE,{type:"warning",title:te().unknownPriceError.impactTitle,description:te().unknownPriceError.description}))}i(Rf,"UnknownPriceWarningModal");function kr(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,skipAlerts:s,refetchQuote:c,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:u,onChangeSettings:d,onChangeSlippage:f}=t,h={confirmationDisabled:a,open:r,onClose:p,onConfirm:u},g=o?.type===0||o?.type===1,m=Yf(e,o?.type===3||o?.type===4?o:null);m&&!n&&(m.action=null);let S=!!m&&!s,T=i(y=>{if(y==="change-slippage"){let C=o?.type===3||o?.type===4?o:null,w=Zf(e,C);f?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,g&&Ue.createElement(Ue.Fragment,null,Ue.createElement(eg,{size:10}),Ue.createElement(Tr,{skipAlerts:s,error:o,fetch:c})),S&&Ue.createElement(Hf,null,Ue.createElement(eg,{size:10}),Ue.createElement(GE,{id:"widget-quote-warning-and-errors-alert",title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Ue.createElement(Vf,{onClick:l},Ue.createElement(KE,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:Ue.createElement(VE,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>T(m.action)},m.actionButtonTitle||qE.t("Change"))}})),e&&Ue.createElement(Ue.Fragment,null,e.type===0&&Ue.createElement(Xf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(Jf,{...h,warning:e}),e.type===1&&Ue.createElement(Rf,{...h,warning:e})))}i(kr,"QuoteWarningsAndErrors");import vb from"bignumber.js";import ga from"react";import{i18n as Yo}from"@lingui/core";import{Alert as ub,CampaignQuoteTag as db,Divider as Mn,FullExpandedQuote as mb,InfoIcon as Yl,NumericTooltip as Zl,QuoteTag as fb,StepDetails as gb,TokenAmount as hb,Typography as Dn,useIsTruncated as Jl}from"@rango-dev/ui";import Rl from"bignumber.js";import F,{useRef as da,useState as yb}from"react";import{styled as Ul}from"@rango-dev/ui";var zl=Ul("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),tg=Ul("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),og=Ul("div",{width:"100%",display:"flex"});import*as ea from"@radix-ui/react-collapsible";import{Button as jE,css as ta,darkTheme as De,Image as ng,styled as je,Typography as Hl}from"@rango-dev/ui";var XE=300,rg=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"}}]}),ig=ta({padding:"$10 $15"}),ag=je(jE,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${De} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${De} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${De} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),sg=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"}}}}]}),lg=ta({width:"100%",padding:"$15 $15 $10 $15"}),cg=ta({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),_n=ta({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),pg=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:{[`& ${ng}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${ng}`]:{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"}}}),ug=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"}}}}),dg=je(Ki,{width:"100%",background:"inherit"}),Ql=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${XE}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),yQ=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),mg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),fg=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),ql=je(Hl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"$30"}),Gl=je(Hl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,flex:"0 1 auto"}),Vl=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"}}}}),gg=je("div",{display:"flex"}),oa=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),hg=je(Hl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ot}from"@lingui/core";import{ChevronDownIcon as ZE,CloseIcon as JE,Divider as ia,IconButton as RE,NumericTooltip as eb,QuoteCost as tb,Typography as Nt}from"@rango-dev/ui";import ob from"bignumber.js";import R,{useState as Cg}from"react";import{css as YE,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"}}),Kl=na("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),yg=na("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Sg=na("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Tg=YE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var nb=i(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 jl(t){let[e,o]=Cg(!1),[n,r]=Cg(!1),{steps:a,quote:s,time:c,feeWarning:l,timeWarning:p,showModalFee:u,fullExpandedMode:d=!1}=t,f=s?.swaps??[],h=d?Mo():W(),g=Kd(f),m=Object.values(g.payable).reduce((T,y)=>T.plus(Vs(y)),new ob(0)),S=M(m,2,2);return R.createElement(R.Fragment,null,R.createElement(tb,{onClickFee:u?T=>{T.stopPropagation(),!e&&s&&oe({type:"routeFeeViewed",payload:{routeId:s.requestId}}),o(!e)}:void 0,fee:S,feeWarning:l,timeWarning:p,time:c,steps:a,tooltipGas:u?Ot.t("View more info"):void 0,tooltipContainer:h}),R.createElement(ie,{id:"widget-quote-cost-explanation-modal",container:h,open:e,anchor:d?"center":"bottom",styles:{container:{maxWidth:d?"484px":"unset"}},header:R.createElement(Sg,{style:{textAlign:d?"left":"center"}},R.createElement(Nt,{variant:"title",size:"medium"},Ot.t("Gas & Fee Explanation")),R.createElement(RE,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(JE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(yg,null,R.createElement(Nt,{variant:"title",size:"small"},Ot.t("Details")),R.createElement(ia,{size:10}),Object.entries(g.payable).flatMap(([T,y])=>y.map((C,w)=>{let v=`payable-fee-${w}`,I=Gs(C);return R.createElement(ra,{key:v},R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},Us(T,Ot.t)),R.createElement(eb,{content:C.amount,container:h},R.createElement(Nt,{variant:"label",size:"medium"},M(C.amount,2,2),C.asset.symbol," ($",M(I,4,4),")")))})),R.createElement(ra,{className:"total_payable_fee"},R.createElement(Nt,{variant:"label",size:"medium"},Ot.t("Total Payable Fee")),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(m,4,4))),R.createElement(Kl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Yi,{triggerAnchor:"bottom",onClickTrigger:()=>r(T=>!T),trigger:R.createElement("div",{className:Tg()},R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},n?Ot.t("Hide non-payable fees"):Ot.t("Show non-payable fees")),R.createElement(ia,{size:4,direction:"horizontal"}),R.createElement(ji,{orientation:n?"up":"down"},R.createElement(ZE,{size:12,color:"gray"}))),open:n},R.createElement(Nt,{size:"small",variant:"title"},Ot.t("Description")),R.createElement(ia,{size:4}),R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},Ot.t(`The following fees are considered in the transaction output and
3
- you won\u2019t need to pay extra gas for them.`)),R.createElement(ia,{size:10}),Object.entries(g.nonePayable).map(([T,y],C)=>{let w=Vs(y),v=Us(T,Ot.t),I=`non-payable-fee-${C}`;return R.createElement(nb,{key:I,fee:w,label:v})}),R.createElement(Kl,null)))))}i(jl,"QuoteCostDetails");import{i18n as vg}from"@lingui/core";import{TokenAmount as Eg}from"@rango-dev/ui";import aa from"react";import{css as rb,styled as ib}from"@rango-dev/ui";var kg=ib("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),wg=rb({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function wr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return aa.createElement(kg,null,aa.createElement(Eg,{direction:"horizontal",label:vg.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:wg()}),aa.createElement(Eg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:vg.t("Estimated output"),type:"output",price:{value:o.price.value,usdValue:o.price.usdValue,realValue:o.price.realValue,realUsdValue:o.price.realUsdValue},token:{displayName:o.token.displayName,image:o.token.image},chain:{image:o.chain.image},percentageChange:n,warningLevel:r}))}i(wr,"QuoteSummary");import{i18n as Ng}from"@lingui/core";import{ChevronDownIcon as lb,ChevronRightIcon as cb,Divider as Xl,Image as pb,Tooltip as ua,Typography as la}from"@rango-dev/ui";import Q from"react";import{useLayoutEffect as ab,useState as vr}from"react";var bg=480,xg=768,Ig=1024,Ag=1200,sb=i(()=>{let[t,e]=vr(!1),[o,n]=vr(!1),[r,a]=vr(!1),[s,c]=vr(!1),[l,p]=vr(!1),u=i(()=>{e(window.innerWidth<=bg),n(window.innerWidth>bg&&window.innerWidth<=xg),a(window.innerWidth>xg&&window.innerWidth<=Ig),c(window.innerWidth>Ig&&window.innerWidth<=Ag),p(window.innerWidth>Ag)},"handleResize");return ab(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),sa=sb;var ca=4,pa=6,Er=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,c=s||W();return Q.createElement(ua,{container:c,side:"bottom",sideOffset:4,open:r,content:e},Q.createElement(ug,{className:n,state:a},Q.createElement(pb,{src:o,size:16})))},"ImageComponent");function Wg(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:c}=t,l=c||W(),p=r.length,u=$d(r),{isTablet:d,isMobile:f}=sa();return Q.createElement(pg,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},Q.createElement("div",{className:_n()},Q.createElement(la,{variant:"body",size:"xsmall"},Ng.t("Via:")),Q.createElement(Xl,{direction:"horizontal",size:4}),r.map((h,g)=>{let m=`item-${g}`,S=Q.createElement(Ql,null,Q.createElement(cb,{size:12,color:"black"}));return f||d?Q.createElement(Q.Fragment,{key:m},Q.createElement(Er,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):Q.createElement(Q.Fragment,{key:m},p<=ca||p>ca&&g<ca-1?Q.createElement(Q.Fragment,null,Q.createElement(Er,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):g===ca-1&&Q.createElement(ua,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:_n()},S,r.map((T,y)=>{let C=`image-${y}`;return y>=g&&Q.createElement(Q.Fragment,{key:C},Q.createElement(Er,{content:T.swapper.displayName,src:T.swapper.image??"",state:T.state,open:!1}),y!==p-1&&Q.createElement(Q.Fragment,null,S))}))},Q.createElement(Vl,{state:r.find((T,y)=>y>=g&&(T.state==="error"||T.state==="warning"))?.state},Q.createElement(la,{size:"xsmall",variant:"body"},"+",p-g))))})),Q.createElement("div",{className:_n()},Q.createElement("div",{className:"blockchains_section"},Q.createElement("div",{className:_n()},Q.createElement(la,{variant:"body",size:"xsmall"},Ng.t("Chains:")),Q.createElement(Xl,{direction:"horizontal",size:4}),u.map((h,g)=>Q.createElement(Q.Fragment,{key:h.displayName},u.length<=pa||u.length>pa&&g<pa-1?Q.createElement(ua,{container:l,side:"bottom",content:h.displayName,sideOffset:4},Q.createElement(Er,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===pa-1&&Q.createElement(ua,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:_n()},u.map((m,S)=>S>=g&&Q.createElement(Er,{key:m.displayName,content:"",src:m.image??"",open:!1,className:S>g?"blockchainImage":"",container:c})))},Q.createElement(Vl,{className:"blockchainImage"},Q.createElement(la,{size:"xsmall",variant:"body"},"+",u.length-g))))),Q.createElement(Xl,{direction:"horizontal",size:32}))),Q.createElement(Ql,{orientation:a?"up":"down"},Q.createElement(lb,{size:12,color:"black"}))))}i(Wg,"QuoteTrigger");function ec(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:c=!1,tagHidden:l=!0,showModalFee:p=!0,onClickAllRoutes:u,fullExpandedMode:d=!1,container:f}=t,h=k().blockchains(),{findToken:g}=k(),m=k().swappers(),{customSlippage:S,slippage:T}=k(),y=S||T,[C,w]=yb(t.expanded),v=da(null),I=M(n.value,6,6),A=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:E}}=k(),x=Zt(o.usdValue,n.usdValue??null),b=M(x,2,2),P=Jt(x??0),N=i((G,J)=>G.map((U,de)=>{let qe,ot=r?.type===3&&r.swap.swapperId===U.swapperId,po=r?.type===4&&!!r.recommendedSlippages?.[de],Gn=a?.type===2&&!!a.recommendedSlippages?.[de],Wo=ot||po,ei=Gn;Wo?qe="error":ei&&(qe="warning");let an=Wo?Yo.t("Slippage Error"):Yo.t("Slippage Warning");return ot&&(an=Yo.t("Bridge Limit Error")),{swapper:{displayName:jn(U.swapperId,m)??"",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 Rl(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 Rl(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:qe,alerts:Wo||ei?F.createElement(tg,{dense:d},F.createElement(ub,{variant:"alarm",type:Wo?"error":"warning",title:an,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(og,null,ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Yo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(po||Gn)&&!ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Yo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Yo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Zn(U.estimatedTimeInSeconds),fee:M(qs(U,g),2,2),internalSwaps:U.internalSwaps?N(U.internalSwaps):void 0}}),"getQuoteSteps"),O=N(e?.swaps??[]),q=O.length,j=f||W(),ee=Od(t.quote.tags||[]),L=!!u,Z=ci(e?.swaps),Y=Zn(Z),ue=Li(e?.swaps??[],g),Ee=M(ue,2,2),Vt=ue.gte(new Rl(Nd)),be=Z/Ld>=Wd,Qe=da(null),Xe=Jl(o.value,Qe),St=da(null),ct=Jl(n.value,St),B=da(null),V=Jl(A,B),H=O[q-1],X=O[0];return!X||!H?null:d?F.createElement(mb,{selected:c,fee:Ee,time:Y,tooltipContainer:Mo(),steps:O,tags:ee,campaignTag:E?.campaignTag,id:"widget-quote-full-expanded-quote-container",quoteCost:F.createElement(jl,{quote:e,fullExpandedMode:!0,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:b,warningLevel:P,outputPrice:{value:I,usdValue:A,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(sg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:lg()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(gg,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&E?.campaignTag?F.createElement(db,{routeTag:G,...E.campaignTag}):F.createElement(fb,{label:G.label,value:G.value}),F.createElement(Mn,{size:4,direction:"horizontal"}))})),F.createElement(oa,null),!L&&F.createElement(Mn,{size:4})):null,F.createElement("div",{id:"portal-root",className:cg()},F.createElement(jl,{quote:e,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),L&&F.createElement(ag,{onClick:G=>{G.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Dn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Yo.t("See All Routes")))),s==="basic"&&F.createElement(fg,null,F.createElement(Gl,{ref:Qe,size:"small",variant:"body"},o.value),Xe&&F.createElement(Zl,{content:o.value,container:j,open:o.value?void 0:!1},F.createElement(Yl,{size:12,color:"gray"})),F.createElement(ql,{size:"small",variant:"body"},O[0]?.from.token.displayName),F.createElement(Dn,{size:"small",variant:"body"},"="),F.createElement(Gl,{ref:St,size:"small",variant:"body"},n.value),ct&&F.createElement(Zl,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(Yl,{size:12,color:"gray"})),F.createElement(ql,{size:"small",variant:"body"},H?.to.token.displayName),F.createElement(Mn,{size:2,direction:"horizontal"}),F.createElement(hg,{ref:B,color:"$neutral600",size:"xsmall",variant:"body"},`($${A})`),V&&F.createElement(Zl,{content:n.usdValue,container:j},F.createElement(Yl,{size:12,color:"gray"}))),s==="list-item"&&F.createElement(hb,{id:"widget-quote-token-amount-container",tooltipContainer:j,type:"output",direction:"vertical",price:{value:I,usdValue:A,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:H.to.token.displayName,image:H.to.token.image},chain:{image:H.to.chain.image},percentageChange:b,warningLevel:P}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(wr,{from:X.from,to:H.to,percentageChange:b,warningLevel:P}),F.createElement(Mn,{size:4}))),F.createElement(rg,{selected:c,listItem:s==="list-item",open:C,className:"quote_container",onOpenChange:w},F.createElement(Wg,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:C,steps:O}),F.createElement(dg,{open:C},F.createElement(mg,null),F.createElement("div",{className:ig()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(gb,{type:"quote-details",className:"widget-quote-step-details-container",key:U,tooltipContainer:j,step:G,hasSeparator:J!==O.length-1,state:G.state})})))))}i(ec,"Quote");import{Divider as kb,Skeleton as wb}from"@rango-dev/ui";import no from"react";import{darkTheme as Sb,styled as ma}from"@rango-dev/ui";var Lg=ma("div",{$$color:"$colors$neutral100",[`.${Sb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Pg=ma("div",{paddingTop:"$2"}),Bg=ma("div",{paddingLeft:"$8"}),_g=ma("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as qg,Divider as Wt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as Tb,styled as oo}from"@rango-dev/ui";var tc=oo("div",{display:"flex"}),Mg=oo("div",{padding:"$10 $0 $20"}),Dg=oo("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),$g=oo("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Fg=oo("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Og=oo("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Ug=oo("div",{width:"65%",display:"flex",justifyContent:"start"}),zg=oo("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Hg=oo("div",{padding:"$15 $0 $15 $0"}),Qg=Tb({display:"flex",justifyContent:"space-between",alignItems:"center"});function br(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(Fg,null,K.createElement(Ug,null,K.createElement(qg,{loading:!0,size:"medium"}),K.createElement(Wt,{size:8,direction:"horizontal"}),K.createElement(zg,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"})),r=e==="basic"&&!o;return K.createElement("div",null,!o&&K.createElement(K.Fragment,null,K.createElement(tc,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),!r&&K.createElement(Wt,{size:4})),K.createElement("div",{className:Qg()},K.createElement(tc,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"})),r&&K.createElement(ft,{width:85,height:24,variant:"rounded"})),e==="basic"&&K.createElement(Mg,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Dg,null,K.createElement($g,null,K.createElement(qg,{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(Hg,null,n,K.createElement(Og,null),n),K.createElement(Wt,{size:12})))}i(br,"QuoteSummarySkeleton");import{ChainToken as Xg,Divider as nc,NextIcon as Cb,Skeleton as fa}from"@rango-dev/ui";import Be from"react";import{styled as xr}from"@rango-dev/ui";var Gg=xr("div",{display:"flex",alignItems:"start"}),Vg=xr("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),oc=xr("div",{display:"flex",alignItems:"center",flexGrow:1}),Kg=xr("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),jg=xr("div",{display:"flex",alignItems:"center"});function Ut(t){let{separator:e=!0}=t;return Be.createElement(Be.Fragment,null,Be.createElement(jg,null,Be.createElement(fa,{height:22,width:22,variant:"circular"}),Be.createElement(nc,{direction:"horizontal",size:8}),Be.createElement(fa,{height:15,width:148,variant:"rounded"})),Be.createElement(Gg,null,Be.createElement(_g,{hideSeparator:!e}),Be.createElement(Vg,{extraSpace:e},Be.createElement(oc,null,Be.createElement(Xg,{size:"small",loading:!0}),Be.createElement(nc,{direction:"horizontal",size:8}),Be.createElement(fa,{height:12,variant:"rounded"})),Be.createElement(Kg,null,Be.createElement(Cb,{color:"gray",size:16})),Be.createElement(oc,null,Be.createElement(Xg,{size:"small",loading:!0}),Be.createElement(nc,{direction:"horizontal",size:8}),Be.createElement(fa,{height:12,variant:"rounded"})))))}i(Ut,"StepSkeleton");function Ir(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return no.createElement(Lg,{expanded:o,rounded:e!=="basic"},no.createElement(br,{type:e,tagHidden:n}),no.createElement(Pg,null,no.createElement(wb,{height:15,variant:"rounded"})),o&&no.createElement(Bg,null,no.createElement(kb,{size:24}),no.createElement(Ut,null),no.createElement(Ut,null),no.createElement(Ut,{separator:!1})))}i(Ir,"QuoteSkeleton");function Zo(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:c,onClick:l,showModalFee:p,selected:u,id:d,onClickAllRoutes:f,fullExpandedMode:h=!1,container:g}=t,{inputAmount:m,inputUsdValue:S}=z()(),T=e?.outputAmount?new vb(e?.outputAmount):null,y=e?it(e):null,w=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?ga.createElement(zl,null,ga.createElement(Ir,{tagHidden:c,type:o,expanded:s})):w?ga.createElement(zl,{onClick:()=>l?.(e),id:d},ga.createElement(ec,{quote:e,error:r,container:g,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:f,fullExpandedMode:h,input:{value:m,usdValue:S?.toString()??""},output:{value:T?.toString()??"",usdValue:y?.toString()??""}})):null}i(Zo,"QuoteInfo");import{warn as Ib}from"@rango-dev/logging-core";import{calculatePendingSwap as Ab}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Nb}from"react";import{useRef as Eb,useState as bb}from"react";var xb=2e3;function ha({request:t}){let[e,o]=bb(!1),n=Eb(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,xb)),await s(c,!1)),"retryFetch"),s=i(async(c,l=!1)=>{r(),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:r}}i(ha,"useFetch");function Yg(){let{fetch:t,loading:e,cancelFetch:o}=ha({request:async(n,r)=>await dt().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Yg,"useFetchConfirmQuote");function ya(t){if(!t.swaps)throw new Error(te().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=rc(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(ya,"throwErrorIfResponseIsNotValid");function rc(t){if(qd(t)){let{swap:n,fromAmountRangeError:r,recommendation:a}=Gd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:r}}:null}let o=jd(t);if(o){let n=Pi(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(rc,"getQuoteError");function Zg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=En({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=Zd(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(Zg,"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}}i(Sa,"handleQuoteErrors");function ic(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:c}=z()(),{slippage:l,customSlippage:p}=k(),u=k().getDisabledLiquiditySources(),d=k().blockchains(),f=k().tokens(),{findToken:h}=k(),{swapMode:g}=rt(),m=p||l,{fetch:S,cancelFetch:T,loading:y}=Yg();return Nb(()=>T,[]),{loading:y,fetch:i(async w=>{let v=w.selectedWallets,I=w?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((x,b)=>(x[b.chain]=b.address,x),{}),E={requestId:a?.requestId||"",selectedWallets:A,destination:I||void 0};try{return await S(E,!0).then(x=>{let{result:b}=x;if(!b)throw new Error(x.error??"Error fetching updated quote");ya({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let P={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};r(P);let N={slippage:m.toString(),disabledSwappersGroups:u},O=Zg({previousQuote:a??void 0,currentQuote:P,meta:{blockchains:d},selectedWallets:v,userSlippage:m,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=Ab({inputAmount:o.toString(),bestRoute:b,wallets:Yd(v),settings:N,validateBalanceOrFee:!q,meta:{blockchains:d,tokens:f},swapMode:g});return{quote:P,swap:j,error:null,warnings:O}})}catch(x){let b=Sa(x);return b.type!==2&&Ib(new Error("confirm swap error"),{tags:{...b,type:Ye[b.type],initialQuote:a,requestBody:E}}),{swap:null,error:b,warnings:null}}},"fetch"),cancelFetch:T}}i(ic,"useConfirmSwap");function Jg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}i(Jg,"toNumberOrNull");function $n(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=Ho(t),r=it(t);return{routeId:t.requestId,sourceChain:e?.from.blockchain??"",destinationChain:o?.to.blockchain??"",sourceTokenSymbol:e?.from.symbol??"",sourceTokenAddress:e?.from.address??null,destinationTokenSymbol:o?.to.symbol??"",destinationTokenAddress:o?.to.address??null,sourceTokenAmount:Jg(t.requestAmount),destinationTokenAmount:Jg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:r?r.toNumber():null}}i($n,"buildSwapEstimatePayload");var Ob=Bb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Rg}`]:{width:"$48",height:"$48"}}),Ub=lc({flexGrow:1,paddingRight:"$10"}),zb=lc({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Hb=lc({display:"flex",justifyContent:"space-between",alignItems:"center"});function eh(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=z()(),s=Fb(),[c,l]=Ar(""),p=!n,[u,d]=Ar(!1),[f,h]=Ar(!1),{isActiveTab:g}=re(),m=k().getDisabledLiquiditySources(),S=$b(m),{manager:T}=Wb(),{fetch:y,loading:C,cancelFetch:w}=ic(),[v,I]=Ar({swap:null,error:null,warnings:null}),[A,E]=Ar(!1),x=i(async({selectedWallets:L,customDestination:Z})=>{let Y=await y?.({selectedWallets:L,customDestination:Z});return I(Y),Y},"onConfirmSwap"),b=i(async()=>{if(v.swap&&n)try{await T?.create("swap",{swapDetails:v.swap},{id:v.swap.requestId});let L=`../${$.swaps}/${v.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){l("Error: "+L?.message)}},"addNewSwap"),P=i(async()=>{h(!0),await b(),h(!1)},"onConfirm"),N=i(async()=>{v.warnings?.quote&&Dd(v.warnings.quote)&&!a?E(!0):(t&&oe({type:"swapStarted",payload:{...$n(t),stepCount:t.swaps.length}}),await P())},"onStartConfirmSwap"),O=i(async()=>{I({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(L=>{I(L)}).catch(L=>console.error(L))},"onRefresh");Ta(()=>{!!S.current.length&&!m.length&&O(),S.current=m},[m.length]),Ta(()=>{p&&w()},[p]),Ta(()=>{p&&d(p)},[p]),Ta(()=>{p||y({selectedWallets:o,customDestination:r}).then(L=>I(L)).catch(L=>console.error(L))},[]),Db(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=v.warnings?.quote??null,j=v.error,ee=[];if(c&&ee.push($e.createElement(Lb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let L=`../${$.settings}`;ee.push($e.createElement(kr,{warning:q,error:j,couldChangeSettings:!1,refetchQuote:O,skipAlerts:j?.type===4||q?.type===2,showWarningModal:A,confirmationDisabled:!g,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await b()},onChangeSettings:()=>s(L)}))}return $e.createElement(se,{header:{title:ac.t("Confirm Swap"),onWallet:()=>{let L=`../${$.wallets}`;s(L)}},footer:$e.createElement(Ob,null,$e.createElement("div",{className:Ub()},$e.createElement(Pb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:C||f,disabled:!!v.error||!g,onClick:N},ac.t("Start Swap"))),$e.createElement(Rg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:C||f,disabled:!g,onClick:d.bind(null,!0)},$e.createElement(Mb,{size:24})))},u&&$e.createElement(_f,{open:u,onClose:()=>d(!1),onCancel:w,loading:C,onCheckBalance:x}),$e.createElement(ce,null,$e.createElement("div",{className:Hb()},$e.createElement(_b,{variant:"title",size:"small"},ac.t("You get")),$e.createElement("div",{className:zb()},$e.createElement(Ui,{onClick:!C&&!u&&!A?O:void 0}))),$e.createElement(sc,{size:"12"}),Im(ee.map((L,Z)=>({element:L,key:`alert-${Z}`})),$e.createElement(sc,{size:10})),ee.length>0?$e.createElement(sc,{size:10}):null,$e.createElement(Zo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:v.error,loading:C,warning:v.warnings?.quote??null})))}i(eh,"ConfirmSwapPage");import{i18n as io}from"@lingui/core";import{Button as Cc,CustomTokensZeroStateDarkIcon as lx,CustomTokensZeroStateIcon as cx,DeleteIcon as px,Divider as Br,IconButton as ux,MessageBox as dx,NotFound as mx,styled as wc}from"@rango-dev/ui";import Se,{useState as kc}from"react";import{useNavigate as fx}from"react-router-dom";import{CloseIcon as Qb,IconButton as qb,SearchIcon as Gb,TextField as Vb}from"@rango-dev/ui";import Fn from"react";import{styled as th}from"@rango-dev/ui";var oh=th("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),nh=th("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function Lt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,f=s.length?Fn.createElement(qb,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Fn.createElement(Qb,{color:"gray",size:10})):null;return p&&(f=p),Fn.createElement(nh,null,Fn.createElement(Vb,{prefix:Fn.createElement(oh,null,Fn.createElement(Gb,{color:"black"})),id:u,suffix:f,fullWidth:o,color:n,variant:e,style:{borderRadius:25,alignItems:"center",...c},size:r,value:s,onChange:a,...d}))}i(Lt,"SearchInput");import{i18n as Tc}from"@lingui/core";import{Button as Yb,CustomTokenWarning as Zb,darkTheme as gh,Divider as ro,ExternalLinkIcon as Jb,Image as Rb,ListItem as ex,NotFound as tx,PinIcon as ox,Skeleton as Jo,Typography as Lr,VirtualizedList as nx}from"@rango-dev/ui";import _,{useState as rx}from"react";import{useTranslation as ix}from"react-i18next";import{Divider as mh,ListItem as Xb,Skeleton as Wr}from"@rango-dev/ui";import Pt from"react";import{css as On,darkTheme as cc,ImageContainer as Kb,ListItemButton as jb,styled as st,Typography as rh}from"@rango-dev/ui";var pc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),uc=On({position:"relative",height:12,width:"30%",maxWidth:"150px"}),dc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),mc=On({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${cc} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),fc=On({}),gc=On(),ih=st("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),hc=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":{[`& .${uc}`]:{[`& .${mc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${fc}`]:{bottom:"-15px"},[`& .${pc}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${dc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),ah=st(jb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),yc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Sc=st(rh,{}),sh=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${gc}`]:{$$color:"$colors$neutral600",[`.${cc} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Nr=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),vV=st("div",{display:"flex",alignItems:"center"}),lh=st("div",{position:"relative",[`& ${Kb}`]:{borderRadius:"$xm",overflow:"hidden"}}),ch=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),ph=st(rh,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),uh=st("a",{"& svg:hover":{color:"$colors$info"}}),dh=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":{[`.${cc} &`]:{color:"$foreground"}}}});function fh(t){return Pt.createElement(Ca,null,Array.from(Array(t.size),e=>Pt.createElement(Xb,{key:e,hasDivider:!0,start:Pt.createElement(Wr,{variant:"circular",width:35,height:35}),end:Pt.createElement(Nr,null,Pt.createElement(Wr,{variant:"text",size:"large",width:70}),Pt.createElement(mh,{size:4}),Pt.createElement(Wr,{variant:"text",size:"medium",width:50})),title:Pt.createElement("div",null,Pt.createElement(Wr,{variant:"text",size:"large",width:90}),Pt.createElement(mh,{size:4}),Pt.createElement(Wr,{variant:"text",size:"medium",width:90}))})))}i(fh,"LoadingTokenList");var ax=20,sx=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return _.createElement("div",{className:uc()},o?_.createElement("div",{className:pc()},o):_.createElement(hc,{className:dc()},_.createElement(Lr,{variant:"title",size:"xmedium"},r.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(yc,{css:a},_.createElement(Sc,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&_.createElement("div",{className:`${mc()} ${!o&&fc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",_.createElement(ro,{size:4,direction:"horizontal"}),_.createElement(uh,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Jb,{size:12}))))},"renderDesc");function Pr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=k().fetchStatus,u=k().blockchains(),{getBalanceFor:d,fetchingWallets:f}=k(),{isTokenPinned:h}=k(),{setFromToken:g,setToToken:m}=z()(),{t:S}=ix(),T=Ve(),[y,C]=rx(null),w=i(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):m({token:y,meta:{blockchains:u}})},"updateToken"),v=i(()=>{w(),T()},"handleImportToken"),I=i(x=>{if(x.customToken){let{customToken:P,...N}=x;return _.createElement(Yb,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),C({...N,warning:!0})},"handleClick")},_.createElement(Lr,{variant:"body",size:"xsmall",color:"background"},S("import")))}let b=di(d(x));return s?s(x):f?_.createElement(Nr,null,_.createElement(Jo,{variant:"text",size:"large",width:70}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:50})):b&&_.createElement(sh,null,_.createElement(ph,{variant:"title",size:"small"},b.amount),_.createElement("div",null),b.usdValue&&_.createElement(Lr,{variant:"body",className:gc(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),A=i(()=>_.createElement(nx,{style:{flexGrow:1,minHeight:0},itemContent:x=>{let b=e[x];if(b==="skeleton")return _.createElement(ex,{hasDivider:!0,start:_.createElement(Jo,{variant:"circular",width:35,height:35}),end:_.createElement(Nr,null,_.createElement(Jo,{variant:"text",size:"large",width:70}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Jo,{variant:"text",size:"large",width:90}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:90}))});let P=u.find(Z=>Z.name===b?.blockchain);if(!P||!b)return null;let N=b.address,O=sl(P.color,"main"),q={$$color:O.main150,[`.${gh} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${gh} &`]:{$$color:O.main150},color:"$$color"},ee=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick"),L=N?ni({contractAddress:N,blockchainMeta:P}):void 0;return _.createElement(dh,null,_.createElement(ah,{"tab-index":x,key:`${b.symbol}${N}`,id:`${b.symbol}${N}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b?.customToken,onClick:ee,start:_.createElement(lh,null,_.createElement(Rb,{src:b.image===""?ii:b.image,size:30}),t.type!=="custom-token"&&b&&h(b,t.type)&&_.createElement(ch,null,_.createElement(ox,{size:12,color:"gray"}))),title:b.name||!b.name&&!N?_.createElement(hc,null,_.createElement(Lr,{variant:"title",size:"xmedium"},b.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(yc,{css:q},_.createElement(Sc,{variant:"body",size:"xsmall",css:j},b.blockchain)),l&&b.warning&&_.createElement(_.Fragment,null,_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(Zb,{container:W()}))):void 0,description:typeof b!="string"&&P.info&&N&&L?sx({address:N,token:b,customCssForTag:q,customCssForTagTitle:j,name:b.name,url:L}):b.name||void 0,end:I(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=y?Po(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Lr,{variant:"label",size:"large"},Tc.t("Select Token")),_.createElement(ro,{size:4})),_.createElement(ih,null,_.createElement(ro,{size:4}),p==="loading"&&_.createElement(fh,{size:ax}),p==="success"&&(e.length?_.createElement(_.Fragment,null,_.createElement(yr,{token:y,address:y?.address??"",blockchain:E??void 0,onImport:v,onExitErrorModal:()=>C(null),onExitImportModal:()=>C(null)}),_.createElement(Ca,{as:"ul"},A())):!!o&&_.createElement(tx,{title:Tc.t("No results found"),description:Tc.t("Try using different keywords")}))))}i(Pr,"TokenList");var gx=wc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),hx=wc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),yx=wc(ux,{"&:hover":{"& svg":{color:"$secondary550"}}});function hh(){let[t,e]=kc(""),{deleteCustomToken:o}=k(),n=k().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=ho({}),p=fx(),[u,d]=kc(!1),[f,h]=kc(),g=i(y=>{let C=y.target.value;e(C)},"handleSearch"),m=l==="dark",S=n.filter(y=>pt(y.symbol,t)||pt(y.address||"",t)||pt(y.name||"",t)),T=i(()=>{if(f){let y=a?kt(a):null,C=r?kt(r):null,w=kt(f);y===w?c({token:null}):C===w&&s({token:null}),o(f)}d(!1)},"handleDeleteCustomToken");return Se.createElement(se,{header:{title:io.t("Custom Tokens")}},Se.createElement(ce,null,Se.createElement(gx,null,n.length?Se.createElement(Se.Fragment,null,Se.createElement(Lt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:io.t("Search Token"),onChange:g}),Se.createElement(Br,{size:16}),Se.createElement(Pr,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>Se.createElement(yx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},Se.createElement(px,{size:12,color:"gray"}))})):Se.createElement(hx,null,Se.createElement(mx,{icon:m?Se.createElement(lx,{size:200}):Se.createElement(cx,{size:200}),title:io.t("No custom tokens"),description:io.t("press the button to add your custom token")})),Se.createElement(Br,{size:20}),Se.createElement(Cc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},io.t("Add Custom Token"))),Se.createElement(ie,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},Se.createElement(dx,{title:io.t("Delete Custom Token"),type:"error",description:io.t("Are you sure you want to Delete this Token?")},Se.createElement(Br,{size:40}),Se.createElement(Br,{size:10}),Se.createElement(Cc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},io.t("Yes, Delete it")),Se.createElement(Br,{size:12}),Se.createElement(Cc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},io.t("No, Continue"))))))}i(hh,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as $x}from"@rango-dev/queue-manager-react";import{Button as Nc,darkTheme as Fx,Divider as vo,MessageBox as Ox,NotFound as Ux,styled as Wc,Tabs as zx,Typography as va}from"@rango-dev/ui";import{TransactionStatus as Dr}from"rango-types";import ne,{useMemo as Mh,useState as $r}from"react";import{useNavigate as Hx}from"react-router-dom";import{FilterIcon as Ex,Popover as bx}from"@rango-dev/ui";import Ro from"react";import{css as Sx,darkTheme as ka,IconButton as Tx,styled as _r}from"@rango-dev/ui";var vc=_r("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:""}}}}}),yh=_r(Tx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ka} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ka} &`]:{backgroundColor:"$neutral"},[`& ${vc}::before`]:{backgroundColor:"$secondary100",[`.${ka} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Sh=_r("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Th=_r("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Ch=Sx({display:"flex",justifyContent:"space-between",alignItems:"center"}),kh=_r("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as wh}from"@lingui/core";import{Button as Cx,Divider as vh,ListItemButton as kx,Radio as wx,RadioRoot as vx,Typography as Eh}from"@rango-dev/ui";import gt from"react";function bh(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(Th,null,gt.createElement("div",{className:Ch()},gt.createElement(Eh,{size:"small",variant:"body"},wh.t("Status")),gt.createElement(Cx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},wh.t("Reset"))),gt.createElement(vh,{size:10}),gt.createElement(vx,{value:e},gt.createElement(kh,null,t.list.map((n,r)=>gt.createElement(kx,{key:n.id,className:"widget-filter-selector-list-item-btn",style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:gt.createElement(gt.Fragment,null,gt.createElement(vh,{direction:"horizontal",size:4}),gt.createElement(Eh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(wx,{value:n.id}),onClick:o})))))}i(bh,"FilterSelectorContent");function Ec(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Ro.createElement("div",null,Ro.createElement(bx,{open:a,align:"end",onOpenChange:o,container:W(),content:Ro.createElement(bh,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Ro.createElement(yh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Ro.createElement(vc,{isSelect:!!n},Ro.createElement(Ex,{size:16,color:"black"}),!!n&&Ro.createElement(Sh,null)))))}i(Ec,"FilterSelector");import{i18n as Ax}from"@lingui/core";import{getCurrentStep as Nx}from"@rango-dev/queue-manager-rango-preset";import{Divider as Wh,GroupedVirtualizedList as Wx,Skeleton as Lx,SwapListItem as Lh,Typography as Px}from"@rango-dev/ui";import et,{useCallback as Ph,useEffect as Bx,useRef as _x,useState as Mx}from"react";function xh(t,e){let o=[],n=0;do{let r=t[n];r&&(o.push(Math.min(r,e)),e-=r),n++}while(e>0&&n<=t.length);return o}i(xh,"calculateGroupsSoFar");import{css as xx,darkTheme as Ix,styled as Mr}from"@rango-dev/ui";var bc=xx(),Ih=Mr("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),xc=Mr("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${bc}`]:{$$color:"$colors$neutral600",[`.${Ix} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ic=Mr("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Ah=Mr("div",{gap:"$10",display:"flex",flexDirection:"column"}),Nh=Mr("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var Dx=10;function Ac(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=Mx([]),c=_x(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=Ph(xh,[]),f=Ph(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,Dx),s(d(p,c.current)))},[e.length]);if(Bx(()=>{r||f()},[r,f]),r){let h=[1,2];return et.createElement(et.Fragment,null,[h,h].map((m,S)=>et.createElement(xc,{key:S},et.createElement(Ic,null,et.createElement(Lx,{variant:"text",width:60,size:"small"}),et.createElement(Wh,{size:16})),et.createElement(Wh,{size:4}),et.createElement(Ah,null,m.map((y,C)=>et.createElement(Lh,{isLoading:!0,key:C}))))))}return et.createElement(Wx,{style:{flexGrow:1,minHeight:0},endReached:()=>{c.current<e.length&&f()},groupCounts:a,groupContent:h=>et.createElement(xc,null,et.createElement(Ic,null,et.createElement(Px,{variant:"label",size:"medium",className:bc()},u[h]))),itemContent:(h,g)=>{let m=l[h];if(!m)return null;let S=Nx(m),T=m.steps[0],y=m.steps[m.steps.length-1];return!T||!y?null:et.createElement(Ih,{key:m.requestId},et.createElement(Lh,{className:"widget-history-group-list-swap-item-btn",requestId:m.requestId,creationTime:m.creationTime,status:m.status,onClick:o,currentStep:S,tooltipContainer:W(),onlyShowTime:u[g]===Ax.t("Today"),swapTokenData:{from:{token:{image:T.fromLogo,displayName:T.fromSymbol},blockchain:{image:T.fromBlockchainLogo||""},amount:M(m.inputAmount,6,6),realAmount:m.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:M(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(Ac,"HistoryGroupedList");import{i18n as wa}from"@lingui/core";import Bh from"dayjs";var _h=i(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)}i(o,"addYearsToOutput");let n=Bh();t.forEach(l=>{let p=Number(l.creationTime),u=Bh(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 r=Array.from(e.values()).filter(l=>l.swaps.length>0),a=r.flatMap(l=>l.swaps),s=r.map(l=>l.swaps.length),c=r.map(l=>l.title);return{swaps:a,groupCounts:s,groups:c}},"groupSwapsByDate");var Qx=Wc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),qx=Wc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Gx=Wc("div",{"._typography":{color:"$neutral700",[`.${Fx}&`]:{color:"$neutral900"}}}),Vx=i((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 Dh(){let t=Hx(),{manager:e,state:o}=$x(),n=Et(e).map(({swap:E})=>E),[r,a]=$r(""),[s,c]=$r(!1),l=!o.loadedFromPersistor,[p,u]=$r(""),[d,f]=$r(!1),[h,g]=$r("all"),m=i(E=>{let x=E.target.value;a(x)},"handleSearch"),{isMultiMode:S}=rt(),T=[{id:Dr.SUCCESS,title:Fe.t("Complete")},{id:Dr.RUNNING,title:Fe.t("Running")},{id:Dr.FAILED,title:Fe.t("Failed")}],y=[{id:"all",title:Fe.t("All")},{id:"swap",title:Fe.t("Swap")},{id:"refuel",title:Fe.t("Refuel")}],C=Mh(()=>!r&&!p&&h==="all"?n:n.filter(E=>{let{inputAmount:x,status:b,steps:P,requestId:N,mode:O}=E;return(!r||Mt(x,r)||Mt(b,r)||Vx(P,r)||Mt(N,r))&&(!p||p===b)&&(h==="all"?!0:h==="swap"?!O||O==="swap":h==="refuel"?O==="refuel":!1)}),[n,r,p,h]),w=!C?.length&&!l,v=i(()=>f(!1),"onCloseModal"),I=i(async()=>{try{await e?.clearQueue(),f(!1)}catch(E){console.log(E)}},"onClear"),A=Mh(()=>!n.some(E=>E.status===Dr.SUCCESS||E.status===Dr.FAILED),[n]);return ne.createElement(se,{header:{title:Fe.t("History"),suffix:ne.createElement(yo,null,ne.createElement(Nc,{id:"widget-history-clear-btn",disabled:A,variant:"ghost",size:"xsmall",onClick:()=>f(!0)},ne.createElement(va,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},ne.createElement(ce,null,ne.createElement(qx,null,ne.createElement(Lt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Fe.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:m,style:{height:36},value:r}),ne.createElement(vo,{size:10,direction:"horizontal"}),ne.createElement(Ec,{filterBy:p,open:s,onOpenChange:E=>c(E),onClickItem:E=>u(E),list:T})),ne.createElement(vo,{size:"16"}),S&&!l&&ne.createElement(ne.Fragment,null,ne.createElement(zx,{items:y,onChange:E=>g(E.id),value:h,type:"secondary"}),ne.createElement(vo,{size:"12"})),ne.createElement(Qx,null,w&&ne.createElement(Nh,null,ne.createElement(vo,{size:32}),ne.createElement(Ux,{title:r?Fe.t("No results found"):Fe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?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(Ac,{list:C,onSwapClick:t,groupBy:_h,isLoading:l}))),ne.createElement(ie,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},ne.createElement(vo,{size:20}),ne.createElement(Ox,{type:"warning",title:Fe.t("Clear Transaction History"),description:ne.createElement(Gx,null,ne.createElement(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(vo,{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(vo,{size:30}),ne.createElement(Nc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:I},Fe.t("Yes, Clear the history")),ne.createElement(vo,{size:10}),ne.createElement(Nc,{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")))))}i(Dh,"HistoryPage");import{i18n as uy}from"@lingui/core";import{Button as AI,Divider as qc,styled as NI,WarningIcon as WI}from"@rango-dev/ui";import LI from"bignumber.js";import Ce,{useEffect as dy,useState as my}from"react";import{useNavigate as PI}from"react-router-dom";import{i18n as Fh}from"@lingui/core";import{Alert as jx,Divider as Lc,NoRouteIcon as Xx,Typography as Yx}from"@rango-dev/ui";import en from"react";import{styled as Kx}from"@rango-dev/ui";var $h=Kx("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Pc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Kt(t,e)?en.createElement($h,null,en.createElement(Lc,{size:10}),en.createElement(Xx,{size:24,color:"gray"}),en.createElement(Lc,{size:4}),en.createElement(Yx,{variant:"title",size:"small"},Fh.t("No Routes Found")),en.createElement(Lc,{size:4}),en.createElement(jx,{title:Fh.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Pc,"SameTokensWarning");import{Alert as Zx,Button as Jx}from"@rango-dev/ui";import Uh from"react";import{i18n as Ea}from"@lingui/core";function Oh(t){let e=null;return t===hi?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:Ea.t("Reset"),title:Ea.t("Slippage cannot be set lower than 0.01%.")},e):t>dn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:Ea.t("Change"),title:Ea.t("Caution, your slippage is high!")},e):null}i(Oh,"makeAlerts");function zh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=k(),{onChangeSettings:a}=t,c=Oh(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(gi),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?Uh.createElement(Zx,{title:c.title,type:c.alertType,variant:"alarm",action:Uh.createElement(Jx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(zh,"SlippageWarningsAndErrors");import{i18n as nI}from"@lingui/core";import{IconButton as rI,ReverseIcon as iI,Skeleton as aI,Tooltip as sI,Typography as Fr}from"@rango-dev/ui";import ht from"react";import ba from"bignumber.js";function Qh(t){let{error:e,isDarkTheme:o,warning:n}=t,{quoteError:r,slippageError:a}=e,{quoteWarning:s,slippageWarning:c}=n,l=!!a||r?.type===4,p=!!c||s?.type===2;return l?"$error500":p?"$warning500":o?"$neutral600":"$neutral700"}i(Qh,"getSlippageColor");function qh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new ba(e),r=new ba(o),a=n.dividedBy(r),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()}}i(qh,"getUsdExchangeRate");function Gh(t,e){let o=new ba(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,ba.ROUND_DOWN).toFormat(2)}`}i(Gh,"formatTokenValueInUsd");import{darkTheme as tI,styled as _c,Typography as oI}from"@rango-dev/ui";var Vh=_c("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),Kh=_c("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${tI} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Mc=_c(oI,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function Dc(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=k(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:f}=ho({}),h=fn(d),g=f==="dark",m=n==="default",S={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,C=p?.swaps[p?.swaps.length-1]?.to||l,w=m?y:C,v=m?C:y,I=Number(m?p?.outputAmount:p?.requestAmount),A=Number(m?p?.requestAmount:p?.outputAmount),E=I||w.usdPrice,x=A||v.usdPrice,{rawValue:b,displayValue:P}=qh({toTokenUsdPrice:x,fromTokenUsdPrice:E});return ht.createElement(Vh,null,ht.createElement(Fr,{variant:S||T?"label":"body",size:S||T?"medium":"small",color:Qh({error:S,warning:T,isDarkTheme:g})},nI.t("Slippage:")," ",d,"%"),u?ht.createElement(aI,{height:16,width:104,variant:"rounded"}):E&&x&&ht.createElement(Kh,null,ht.createElement(Fr,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Mc,{className:"rate-text",variant:"body",size:"small"},v.symbol),ht.createElement(rI,{id:"widget-home-page-change-rate-button",onClick:r},ht.createElement(iI,{size:14,color:"secondary"})),ht.createElement(sI,{container:W(),side:"top",sideOffset:4,content:ht.createElement(Fr,{className:"rate-text",variant:"body",size:"small"},b)},ht.createElement(Fr,{className:"rate-text",variant:"body",size:"small"},P)),ht.createElement(Mc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement(Fr,{color:"neutral600",variant:"body",size:"small"},"~",Gh(Number(b),w.usdPrice))))}i(Dc,"SwapMetrics");import{i18n as mI}from"@lingui/core";import{Header as fI}from"@rango-dev/ui";import Eo,{useEffect as gI,useState as hI}from"react";import{i18n as cI}from"@lingui/core";import{Divider as Fc,FullExpandedQuote as pI,Typography as uI}from"@rango-dev/ui";import ve from"react";import{styled as $c}from"@rango-dev/ui";var jh=$c("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Xh=$c("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Yh=$c("div",{width:"146px"});import{i18n as Or}from"@lingui/core";import{Select as lI}from"@rango-dev/ui";import Zh from"react";function xa(t){let{updateQuotePartialState:e,sortStrategy:o}=z()(),n=[{value:"SMART",label:Or.t("Smart Routing")},{value:"FEE",label:Or.t("Lowest Fee")},{value:"SPEED",label:Or.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Or.t("Maximum Return")},{value:"PRICE",label:Or.t("Maximum Output")}];return Zh.createElement(Yh,null,Zh.createElement(lI,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(xa,"SelectStrategy");var Jh=3;function Ur(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:c}=t,{selectedQuote:l,quotes:p,updateQuotePartialState:u,fromToken:d,toToken:f,sortStrategy:h,error:g}=z()(),{slippage:m,customSlippage:S}=k(),{findToken:T}=k(),y=c||W(),C=!!p&&p.results.length,w=S??m,{config:{__UNSTABLE_OR_INTERNAL__:v}}=k(),I=i(x=>{if(!d||!f||!p)return null;let b={requestAmount:p.requestAmount,validationStatus:null,...x};return En({currentQuote:b,userSlippage:w,findToken:T})},"getQuoteWarning"),A=g?.type===0||g?.type===1,E=p?.results?Wi(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Xh,null,ve.createElement(uI,{size:"xmedium",variant:"title"},cI.t("Sort by")),ve.createElement(xa,{container:y})),ve.createElement(Fc,{size:"10"})),e&&Array.from({length:Jh},(x,b)=>ve.createElement(ve.Fragment,{key:b},s?ve.createElement(pI,{campaignTag:v?.campaignTag,loading:!0}):ve.createElement(Ir,{tagHidden:!1,type:"list-item",expanded:!1}),b!==Jh-1&&ve.createElement(Fc,{size:16}))),!e&&ve.createElement(ve.Fragment,null,C?E.map((x,b)=>{let P=I(x),N=rc(x.swaps),O=E.length-1===b;return ve.createElement(ve.Fragment,{key:x.requestId},ve.createElement(Zo,{id:"widget-quotes-quote-info-container",showModalFee:r,container:y,selected:l?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:N?.options||null,warning:P,fullExpandedMode:s,onClick:q=>{N||u("warning",P),u("error",N?.options||null),o(q)},type:"list-item"}),!O&&ve.createElement(Fc,{size:16}))}):A&&ve.createElement(jh,null,ve.createElement(Tr,{size:s?"large":"small",error:g,fetch:n}))))}i(Ur,"Quotes");import{darkTheme as dI,styled as Rh}from"@rango-dev/ui";var ey=Rh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${dI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),ty=Rh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var yI=100;function Oc(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=hI(!1),l=s?"":"is-hidden",{config:p}=k(),u=p?.variant==="full-expanded",d=Mo();return gI(()=>{let f=null;return a?f=setTimeout(()=>{c(!0)},yI):(c(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),Eo.createElement(ey,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${qi()} widget-expanded-quotes-container`,id:wt.EXPANDED_BOX_ID},Eo.createElement(fI,{title:mI.t("Routes"),suffix:Eo.createElement(Eo.Fragment,null,Eo.createElement(xa,{container:d}),Eo.createElement(Vo,{container:d,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),Eo.createElement(ty,null,Eo.createElement(Ur,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Mo(),onClickOnQuote:n,fullExpandedMode:u})))}i(Oc,"ExpandedQuotes");import{i18n as ly}from"@lingui/core";import{SwapInput as cy}from"@rango-dev/ui";import kI from"bignumber.js";import zr from"react";import{ReverseIcon as CI}from"@rango-dev/ui";import zc from"react";import{keyframes as SI,styled as oy}from"@rango-dev/ui";var Uc=450,TI=SI({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),ny=oy("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),ry=oy("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${TI} ${Uc}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 Hc(){let t=z().use.switchFromAndTo();return zc.createElement(ny,null,zc.createElement(ry,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Uc),t()}},zc.createElement(CI,{size:12})))}i(Hc,"SwitchFromAndToButton");import{styled as iy}from"@rango-dev/ui";var ay=iy("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),sy=iy("div",{position:"relative"});function Qc(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:c,toBlockchain:l,setInputAmount:p,sanitizeInputAmount:u,inputAmount:d,inputUsdValue:f,outputAmount:h,outputUsdValue:g,selectedQuote:m}=z()(),{swapMode:S}=rt(),{connectedWallets:T,getBalanceFor:y}=k(),C=a?y(a):null,w=di(C)?.amount??"0",v=C?new kI(C.amount).shiftedBy(-C.decimals):pe,I=!!s&&Lu(T,s.name),A=!Qs(m,d,f),E=!Qs(m,d,g),x=!f||!g||!g.gt(0)?null:Zt(f.toString(),g.toString());return zr.createElement(ay,null,zr.createElement(sy,null,zr.createElement(cy,{label:ly.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:A?void 0:M(f,4,4),realUsdValue:A?void 0:f?.toString(),error:A?te().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:I,tooltipContainer:W(),onSelectMaxBalance:()=>{let b=v.isGreaterThan(pe)?v.toFixed():"";p(b)},anyWalletConnected:T.length>0}),S==="swap"&&zr.createElement(Hc,null)),zr.createElement(cy,{selectionType:S==="swap"?"token":"chain",sharpBottomStyle:!r&&(!!m||e),label:ly.t("To"),mode:"To",id:"widget-swap-to-input",fetchingQuote:e,chain:{displayName:l?.displayName||"",image:l?.logo},token:{displayName:c?.symbol||"",image:c?.image,securityWarning:!!c?.warning},percentageChange:M(Zt(f,g),2,2),warningLevel:Jt(x??0),price:{value:M(h,6,6),usdValue:E?void 0:M(g,4,4),realValue:h?.toString(),realUsdValue:E?void 0:g?.toString(),error:E?te().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}i(Qc,"Inputs");import{warn as wI}from"@rango-dev/logging-core";import{useCallback as vI,useEffect as EI,useRef as bI,useState as xI}from"react";function py(){let{fetch:t,loading:e,cancelFetch:o}=ha({request:async(n,r)=>await dt().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(py,"useFetchAllQuotes");var II=600;function Ia({refetchQuote:t}){let{fetch:e,cancelFetch:o}=py(),{excludeLiquiditySources:n,routing:r}=k().config,{connectedWallets:a}=k(),c=a.some(be=>be.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:f,sortStrategy:h,resetQuote:g,error:m,warning:S,setSelectedQuote:T,updateQuotePartialState:y}=z()(),{slippage:C,customSlippage:w,affiliatePercent:v,affiliateRef:I,affiliateWallets:A,fetchStatus:E}=k(),x=k().getLiquiditySources(),b=k().getDisabledLiquiditySources(),P=k().excludeLiquiditySources(),{findToken:N}=k(),{swapMode:O}=rt(),[q,j]=xI(!0),ee=bI(u),L=w??C,Y=!l||!p||Kt(l,p)||!Jn(u),ue=i(be=>{j(be)},"resetState"),Ee=i(be=>{let{fromToken:Qe,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J}=be;if(q||ue(!0),!Y&&Qe&&Xe){g();let U=Xd({fromToken:Qe,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});mn("experimental",r)&&(U.experimental=!0),mn("avoidNativeFee",r)&&(U.avoidNativeFee=!0),mn("enableCentralizedSwappers",r)&&(U.enableCentralizedSwappers=!0),r?.maxLength&&(U.maxLength=r.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let qe=Wi(h,de.results),ot=Fd(f,qe,de.requestAmount);j(!1),y("quotes",de),T(ot),de.results?.length&&ot&&hn({type:"routeRequested",payload:{...$n(ot),routeCount:de.results.length}}),ya({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let po=ot&&En({currentQuote:ot,userSlippage:L,findToken:N});y("warning",po)}).catch(de=>{let qe=Sa(de);qe.type===0?hn({type:"routeNotFound",payload:{sourceChain:Qe.blockchain,destinationChain:Xe.blockchain,sourceTokenSymbol:Qe.symbol,sourceTokenAddress:Qe.address,destinationTokenSymbol:Xe.symbol,destinationTokenAddress:Xe.address,inputAmountUsd:d?d.toNumber():null}}):qe.type===1&&hn({type:"routeFetchFailed",payload:{sourceChain:Qe.blockchain,destinationChain:Xe.blockchain,errorCode:String(de?.response?.status??"")}}),(qe.type===0||qe.type===1)&&g(),qe.type!==2&&(y("error",qe),j(!1),wI(new Error("quote error"),{tags:{...qe,type:Ye[qe.type],requestBody:U}}))})}},"fetch"),Vt=vI(ai(be=>{Ee(be)},II),[Y]);return EI(()=>{if(!t){j(!1);return}if(E!=="success")return;if(Y){j(!1),(f||m||S)&&g();return}if(!Jn(u)&&d?.eq(0)){ue(!1),o();return}g(),ue(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Vt),ee.current=u,be({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:P,disabledLiquiditySources:b,slippage:L,affiliateRef:I,affiliatePercent:v,affiliateWallets:A,contractCall:c}),o},[E,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,x?.length,n,b.length,L,I,v,c,JSON.stringify(A)]),{fetch:()=>Ee({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:P,disabledLiquiditySources:b,slippage:L,affiliateRef:I,affiliatePercent:v,affiliateWallets:A,contractCall:c}),loading:q}}i(Ia,"useSwapInput");var BI=NI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),_I=300;function fy(){let t=PI(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:f}=z()(),[h,g]=my(!1),{isLargeScreen:m,isExtraLargeScreen:S}=sa(),{fetch:T,loading:y}=Ia({refetchQuote:a}),{config:C,fetchStatus:w,connectedWallets:v,customSlippage:I,slippage:A,setSlippage:E,setCustomSlippage:x}=k(),{isActiveTab:b}=re(),[P,N]=my(!1),O=I!==null?I:A,{swapMode:q}=rt(),j=fn(O),L=Vd({fetchMetaStatus:w,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=$u(m,S,C?.variant),Y=!!n&&!!e&&!!o&&new LI(n).gt(0)&&!om(e,o),ue=Y&&w==="success"&&y,Ee=j?.quoteValidation||c,Qe=(!Z||Z&&l?.results.length)&&(Ee||s),Xe=!!e&&!!o,St=Xe&&!!j,ct=(r||s)&&!P?T:void 0,B=i(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},_I)):t(J)},"onHandleNavigation"),V=i(J=>{r?.requestId!==J.requestId&&(r&&hn({type:"routeChanged",payload:{sourceChain:J.swaps[0]?.from.blockchain??"",destinationChain:J.swaps[J.swaps.length-1]?.to.blockchain??"",fromRouteId:r.requestId,toRouteId:J.requestId}}),N(!1),p(J))},"onClickOnQuote"),H=i(J=>{if(J){if(fi.includes(J)){E(J),x(null);return}x(J)}},"onChangeSlippage"),X=i(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");dy(()=>{u(),f("refetchQuote",!0)},[]),dy(()=>{g(Y)},[Y]);let G=i(()=>{L.action==="connect-wallet"?Ju({type:"clickConnectWallet"},()=>{B($.wallets)}):L.action==="confirm-warning"?N(!0):r&&(oe({type:"swapInitiated",payload:{...$n(r),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(BI,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(AI,{id:`widget-swap-${L.action}-btn`,type:"primary",size:"large",disabled:L.disabled||!b,prefix:L.action==="confirm-warning"&&Ce.createElement(WI,null),fullWidth:!0,onClick:G},L.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:C.title||(q==="swap"?uy.t("Swap"):uy.t("Refuel")),suffix:Ce.createElement(Vo,{hidden:Z?["refresh"]:void 0,onClickRefresh:ct,onClickHistory:()=>B($.swaps),onClickSettings:()=>{B($.settings)}})}},Ce.createElement(ce,null,Ce.createElement(Qc,{fetchingQuote:ue,fetchMetaStatus:w,isExpandable:Z,onClickToken:X}),Ce.createElement(qc,{size:"2"}),Z?null:Ce.createElement(Zo,{quote:r,loading:ue,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:Ee,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{f("refetchQuote",!1),B($.routes)}:void 0}),Xe&&Ce.createElement(Ce.Fragment,null,Ce.createElement(qc,{size:8}),Ce.createElement(Dc,{quoteError:s,quoteWarning:Ee,fromToken:e,toToken:o,quote:r,loading:ue})),Qe?Ce.createElement(Ce.Fragment,null,Ce.createElement(kr,{warning:Ee,error:s,skipAlerts:!!j,couldChangeSettings:!0,refetchQuote:T,showWarningModal:P,confirmationDisabled:!b,onOpenWarningModal:()=>N(!0),onCloseWarningModal:()=>N(!1),onChangeSlippage:H,onConfirmWarningModal:()=>{N(!1),d(!0),B($.confirmSwap)},onChangeSettings:()=>B($.settings)})):null,St&&Ce.createElement(Ce.Fragment,null,Ce.createElement(qc,{size:"10"}),Ce.createElement(zh,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Pc,null))),Z?Ce.createElement(Oc,{loading:ue,onClickOnQuote:V,fetch:T,onClickRefresh:ct,isVisible:h}):null)}i(fy,"Home");import{i18n as gy}from"@lingui/core";import{Alert as MI,Divider as DI,List as $I,ListItemButton as FI,Radio as OI,RadioRoot as UI,Typography as zI}from"@rango-dev/ui";import zt from"react";function bo(){let{setLanguage:t,language:e,config:o}=k(),n=Qu,r=o?.language||gn;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||gn),resetLanguage:()=>t(null)}}i(bo,"useLanguage");function hy(){let{activeLanguage:t,changeLanguage:e,languages:o}=bo(),n=Ve(),r=o.map(a=>{let{local:s,label:c,SVGFlag:l}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:zt.createElement(zI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:zt.createElement(OI,{value:s}),start:zt.createElement(l,null)}});return zt.createElement(se,{header:{title:gy.t("Language")}},zt.createElement(ce,null,zt.createElement(MI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),zt.createElement(DI,{size:"8"}),zt.createElement(UI,{value:t},zt.createElement($I,{type:zt.createElement(FI,{title:gy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(hy,"LanguagePage");import{i18n as ao}from"@lingui/core";import{Button as VI,Checkbox as KI,Image as jI,ListItemButton as XI,NotFound as YI,Typography as ZI}from"@rango-dev/ui";import tt,{useState as JI}from"react";import{Checkbox as qI,Skeleton as Sy}from"@rango-dev/ui";import Qr from"react";import{styled as Gc}from"@rango-dev/ui";var Hr=Gc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Vc=Gc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Kc=Gc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as HI,styled as QI}from"@rango-dev/ui";var yy=QI(HI,{height:61});var GI=30;function jc(){return Qr.createElement(Hr,null,Array.from(Array(GI),(t,e)=>Qr.createElement(yy,{hasDivider:!0,key:e,start:Qr.createElement(Sy,{variant:"circular",width:35,height:35}),title:Qr.createElement(Sy,{variant:"text",size:"large",width:90}),end:Qr.createElement(qI,{checked:!1})})))}i(jc,"LoadingLiquiditySourceList");function Xc({sourceType:t}){let e=k().fetchStatus,o=k().swappers(),n=k().getDisabledLiquiditySources(),[r,a]=JI(""),s=k().toggleLiquiditySource,c=k().isInCampaignMode(),l=yi(o,n),p={Exchanges:ao.t("Exchanges"),Bridges:ao.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let d=l.filter(y=>u.includes(y.type)),f=d.length===d.filter(y=>y.selected).length,h=t==="Exchanges"?"exchanges":"bridges",g=i(()=>{let y=!f;oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:y?"selectAll":"deselectAll",previousSelectedCount:d.filter(C=>C.selected).length,totalCount:d.length}}),d.forEach(C=>{f?s(C.groupTitle):C.selected||s(C.groupTitle)})},"toggleAllSources"),m=d.map(y=>{let{selected:C,groupTitle:w,logo:v,id:I,...A}=y;return{id:`widget-setting-liquidity-source-${Tu(I.toLowerCase())}-item-btn`,start:tt.createElement(jI,{src:v,size:22,type:"circular"}),onClick:()=>{c||(oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:"individual",sources:[{id:w,enabled:!C}]}}),s(w))},end:tt.createElement(KI,{checked:C,disabled:c}),title:tt.createElement(ZI,{variant:"title",size:"xmedium"},ao.t(w)),selected:C,groupTitle:w,logo:v,...A}}),S=i(y=>{let C=y.target.value;a(C)},"handleSearch"),T=m;return r&&(T=m.filter(y=>Mt(y.groupTitle,r))),tt.createElement(se,{header:{title:ao.t(t),suffix:tt.createElement(Vc,null,tt.createElement(VI,{id:`widget-liquidity-source-${f?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},f?ao.t("Deselect all"):ao.t("Select all")))}},tt.createElement(ce,{view:!0},tt.createElement(Lt,{value:r,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:ao.t("Search {sourceType}",{sourceType:p[t]}),onChange:S}),e==="loading"&&tt.createElement(jc,null),!T.length&&r?tt.createElement(Kc,null,tt.createElement(YI,{title:ao.t("No results found"),description:ao.t("Try using different keywords")})):e==="success"&&tt.createElement(Hr,{disabled:c,className:"widget-liquidity-source-list"},T.map(y=>{let{groupTitle:C,...w}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(XI,{style:{height:"61px"},...w,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(Xc,"LiquiditySourcePage");import{i18n as RI}from"@lingui/core";import Aa from"react";import{useNavigate as eA}from"react-router-dom";function Ty(){let t=eA(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=Ia({refetchQuote:n}),p=i(f=>{r(f),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:RI.t("Routes"),suffix:Aa.createElement(Vo,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Aa.createElement(ce,null,Aa.createElement(Ur,{fetch:c,loading:l,onClickOnQuote:p})))}i(Ty,"RoutesPage");import{i18n as xy}from"@lingui/core";import{Divider as Iy,getCategoriesCount as pA,SelectableCategoryList as uA}from"@rango-dev/ui";import so,{useMemo as dA,useState as Ay}from"react";import{useNavigate as mA}from"react-router-dom";import{i18n as Yc}from"@lingui/core";import{Divider as rA,Image as iA,ListItemButton as aA,NotFound as sA,Typography as by}from"@rango-dev/ui";import yt,{useEffect as lA,useState as cA}from"react";var Cy=i((t,e,o)=>t.filter(n=>si(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as tA,styled as ky}from"@rango-dev/ui";var wy=ky("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Na=ky(bl,{padding:0,margin:0,listStyle:"none",[`& ${tA}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as oA,Skeleton as vy}from"@rango-dev/ui";import Wa from"react";var nA=20;function Ey(){return Wa.createElement(Na,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(nA),t=>Wa.createElement(oA,{key:t,hasDivider:!0,start:Wa.createElement(vy,{variant:"circular",width:35,height:35}),title:Wa.createElement(vy,{variant:"text",size:"large",width:90})})))}i(Ey,"LoadingBlockchainList");function Zc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=cA(e),{fetchStatus:l}=k();lA(()=>{c([...Cy(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?yt.createElement(sA,{title:Yc.t("No results found"),description:Yc.t("Try using different keywords")}):yt.createElement(Na,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(aA,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(iA,{src:u.logo,size:30}),title:yt.createElement(by,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(by,{variant:"label",size:"large"},Yc.t("Select Chain")),yt.createElement(rA,{size:4})),yt.createElement(wy,null,l==="loading"&&yt.createElement(Ey,null),l==="success"&&p()))}i(Zc,"BlockchainList");function La(t){let{type:e}=t,o=Ve(),[n,r]=Ay(""),[a,s]=Ay("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=k(),f=mA(),{swapMode:h}=rt(),g=k().blockchains({type:e}),m=k().tokens(),S=dA(()=>fu(g,m),[g.length,m.length]),T=pA(S),y=!t.hideCategory&&T!==1,C=i(w=>{if(e==="custom-token")f(`..?blockchain=${w.name}`,{replace:!0});else{if(oe({type:"chainFilterApplied",payload:{side:e==="source"?"from":"to",chain:w.name,filterSource:"expanded"}}),e==="source")l(w);else if(h==="swap")c(w);else{let v=d(w);v&&p({token:v,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return so.createElement(se,{header:{title:xy.t("Select Chain")}},so.createElement(ce,{view:!0},y&&so.createElement(so.Fragment,null,so.createElement(uA,{setCategory:s,category:a,blockchains:S,isLoading:u==="loading"}),so.createElement(Iy,{size:24})),so.createElement(Lt,{value:n,autoFocus:!0,placeholder:xy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:w=>r(w.target.value)}),so.createElement(Iy,{size:16}),so.createElement(Zc,{list:S,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:C})))}i(La,"SelectBlockchainPage");import{i18n as _a}from"@lingui/core";import{Divider as Dy,Spinner as AA}from"@rango-dev/ui";import xo,{useEffect as NA,useState as WA}from"react";import{useNavigate as LA}from"react-router-dom";import{i18n as ep}from"@lingui/core";import{BlockchainsChip as Pa,Divider as Py,Image as By,Skeleton as TA,Tooltip as CA,Typography as tp}from"@rango-dev/ui";import xe from"react";import{useEffect as hA}from"react";var Ny=["ETH"];function Jc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(fA),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let c=o.limit-e.length;for(let l=0;l<=c;l++){let p=n[l];s=s.filter(u=>p?.name!==u)}}n.sort(gA(s)),r=n.splice(a)}return{list:n,more:r}}i(Jc,"prepare");function fA(t,e){let o=Ny,n=o.findIndex(c=>c===t.name),r=o.findIndex(c=>c===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(fA,"sortByMostUsedBlockchains");function gA(t){return i(function(o,n){let r=t.findIndex(l=>l===o.name),a=t.findIndex(l=>l===n.name),s=r>-1,c=a>-1;return s&&c?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(gA,"generateSortByPreferredBlockchainsFor");function Wy(t,e){return!!e.list.find(o=>o.name===t)}i(Wy,"isInVisibleList");function Rc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=k();hA(()=>{if(e?.selected){let a=Jc(t,o,e);Wy(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Jc(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Rc,"usePrepareBlockchainList");import{styled as yA}from"@rango-dev/ui";var Ly=yA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var kA=6,wA=12;function op(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=re(),c=Rc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=k(),p=z().use.resetToBlockchain(),u=z().use.resetFromBlockchain(),d=c.more.length>0,f=c.more[0],h=c.more.length===1&&f,g=!h&&d;return xe.createElement(xe.Fragment,null,!s&&xe.createElement(xe.Fragment,null,xe.createElement(Py,{size:12}),xe.createElement(tp,{variant:"label",size:"large"},ep.t("Select Chain"))),xe.createElement(Py,{size:12}),xe.createElement(Ly,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?kA:wA),(m,S)=>xe.createElement(TA,{key:S,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(Pa,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(tp,{variant:"body",size:"xsmall",color:"secondary500"},ep.t("All"))),c.list.map(m=>xe.createElement(CA,{key:m.name,content:m.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(Pa,{className:"widget-blockchains-section-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>r(m)},xe.createElement(By,{src:m.logo,size:30})))),h?xe.createElement(Pa,{className:"widget-blockchains-section-only-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},xe.createElement(By,{src:f.logo,size:30})):null,g?xe.createElement(Pa,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(tp,{variant:"body",size:"xsmall",color:"secondary500"},ep._("More +{count}",{count:c.more.length}))):null)))}i(op,"BlockchainsSection");import{useCallback as EA,useRef as bA,useState as np}from"react";function rp(){let t=k().blockchains(),e=bA(null),{customTokens:o}=k(),[n,r]=np(!1),[a,s]=np([]),[c,l]=np(null),p=i(async(f,h)=>{l(null),r(!0),s([]);try{let g=await dt().searchCustomTokens({query:f,blockchain:h},{signal:e.current?.signal}),m=new Set(o().map(y=>Xt(y))),S=new Set(t.map(y=>y.name)),T=g.tokens.filter(y=>S.has(y.blockchain)&&!m.has(Xt(y)));s(T),r(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&r(!1)}},"fetch"),u=EA(ai((f,h)=>{e.current?.signal.aborted||p(f,h)},600),[t.length]);return{fetch:(f,h)=>{e.current=new AbortController,s([]),r(!0),u(f,h)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}i(rp,"useSearchCustomTokens");function _y(t){return t.trim()?"search":"default "}i(_y,"getTokenSelectionMethod");function Ba(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}i(Ba,"shouldSearchForCustomTokens");function My(t,e,o,n,r){let a=[...t];return Ba(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(My,"prepareTokensList");function Ma(t){let{type:e}=t,o=LA(),n=Ve(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=k(),{fetch:d,loading:f,tokens:h,cancel:g}=rp(),[m,S]=WA(""),T=e==="source"?r:a,y=T?.name??"",C=k().blockchains({type:e}),w=k().tokens({type:e,blockchain:y,searchFor:m,getBalanceFor:u}),v=My(w,h,m,f,T?.name),I=i(N=>{e==="source"?l(N):p(N)},"updateBlockchain"),A=i(N=>{e==="source"?s({token:N,meta:{blockchains:C}}):c({token:N,meta:{blockchains:C}})},"updateToken"),E=e==="source"?"from":"to",x=i(N=>{oe({type:"chainFilterApplied",payload:{side:E,chain:N.name,filterSource:"featured"}})},"emitChainFilterApplied"),b=i(N=>{oe({type:"tokenSelected",payload:{side:E,tokenName:N.name,tokenSymbol:N.symbol,tokenAddress:N.address,chain:N.blockchain,selectionMethod:_y(m),activeChainFilter:y||"all"}})},"emitTokenSelected"),P={source:_a.t("Source"),destination:_a.t("Destination")};return NA(()=>(Ba(w,m,T?.name)&&d(m,T?.name??void 0),()=>{g()}),[w.length,m,T?.name]),xo.createElement(se,{header:{title:_a.t("Swap {type}",{type:P[e]})}},xo.createElement(ce,null,xo.createElement(op,{blockchains:C,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o($.blockchains),onChange:N=>{x(N),I(N)}}),xo.createElement(Dy,{size:24}),xo.createElement(Lt,{value:m,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:_a.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>S(""),onChange:N=>S(N.target.value),suffix:Ba(w,m,T?.name)&&f?xo.createElement(AA,{size:12,color:"secondary"}):void 0}),xo.createElement(Dy,{size:16}),xo.createElement(Pr,{list:v,selectedBlockchain:y,searchedFor:m,type:e,onChange:N=>{b(N),A(N);let O=C.find(q=>N.blockchain===q.name);O&&I(O),n()}})))}i(Ma,"SelectSwapItemsPage");import{i18n as lp}from"@lingui/core";import{Alert as rN,Button as iN,styled as aN}from"@rango-dev/ui";import tn from"react";import{useInRouterContext as sN,useSearchParams as lN}from"react-router-dom";import{i18n as Hy}from"@lingui/core";import{Alert as MA,Divider as ap,InfoIcon as DA,SlippageIcon as $A,TextField as FA,Tooltip as OA,Typography as Qy}from"@rango-dev/ui";import ze from"react";import{Chip as PA,styled as qr,TextField as BA}from"@rango-dev/ui";var $y=qr("div",{paddingTop:"$5",padding:"$10 $5"}),Fy=qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${BA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Oy=qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Da=qr("div",{maxWidth:"280px",padding:"$10"}),Uy=qr(PA,{width:"61px",flexShrink:0});import{i18n as ip}from"@lingui/core";import{Typography as _A}from"@rango-dev/ui";import Gr from"react";function zy(){return Gr.createElement(Da,null,Gr.createElement(_A,{variant:"label",size:"medium",color:"neutral700"},ip.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Gr.createElement("br",null),Gr.createElement("br",null),Gr.createElement("b",null,ip.t("Warning")),":\xA0",ip.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.")))}i(zy,"SlippageTooltipContent");function sp(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=k(),r=o!==null?fn(o):null,a=o??t,s=i((u,d)=>{u!==d&&oe({type:"settingsChanged",payload:{setting:"slippage",previousValue:u,newValue:d}})},"emitSlippageChanged"),c=i(u=>{let d=u.target.value,f=parseFloat(d);if(isNaN(f))return n(null);let h=f;f>or&&(h=or),s(a,h),n(h)},"onSlippageValueChange"),l=i(u=>{s(a,u),o!==null&&n(null),e(u)},"onClickSlippageChip"),p=i(u=>{let d=u.target,f=d.value;wu(f)||(d.value=f.slice(0,-1))},"onInput");return ze.createElement($y,null,ze.createElement(Oy,null,ze.createElement($A,{size:16,color:"gray"}),ze.createElement(ap,{direction:"horizontal",size:4}),ze.createElement(Qy,{variant:"title",size:"xmedium"},Hy.t("Slippage tolerance per swap")),ze.createElement(ap,{direction:"horizontal",size:4}),ze.createElement(OA,{container:W(),side:"top",sideOffset:4,content:ze.createElement(zy,null)},ze.createElement(DA,{color:"gray"}))),ze.createElement(Fy,null,fi.map((u,d)=>{let f=`slippage-${d}`;return ze.createElement(Uy,{id:`widget-slippage-chip-${u.toString()}%-btn`,key:f,onClick:()=>l(u),selected:o===null&&u===t,label:`${u.toString()}%`})}),ze.createElement(FA,{type:"number",min:"0.01",max:"30",step:"0.01",status:r?.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(Qy,{variant:"body",size:"small"},"%"),placeholder:Hy.t("Custom")})),r&&ze.createElement(ze.Fragment,null,ze.createElement(ap,{size:10}),ze.createElement(MA,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(sp,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as qy,BridgesIcon as UA,ChevronRightIcon as $a,DarkModeIcon as Gy,Divider as Vr,ExchangeIcon as zA,InfinityIcon as HA,InfoIcon as QA,LanguageIcon as qA,LightModeIcon as Vy,List as GA,ListItem as VA,ListItemButton as KA,Skeleton as jA,styled as XA,Switch as YA,Tabs as ZA,TargetIcon as JA,Tooltip as RA,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as eN}from"react-router-dom";var tN=XA("div",{width:"202px",height:"$40"}),oN=[{id:"light",icon:D.createElement(Vy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:D.createElement(Gy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:D.createElement(qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Auto"))}],nN=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(qy,{...e});case"dark":return D.createElement(Gy,{...e});default:return D.createElement(Vy,{...e})}},"getThemeIcon");function Ky(){let t=eN(),{theme:e}=k().config,{setTheme:o,theme:n}=k(),{activeLanguage:r,languages:a}=bo(),s=a.find(L=>L.local===r)?.label,c=k().fetchStatus,l=k().swappers(),p=k().getDisabledLiquiditySources(),{config:{features:u}}=k(),d=k().customTokens(),f=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),m=nt("customTokens",u),S=k().infiniteApprove,T=k().toggleInfiniteApprove,y=yi(l,p),C=y.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),w=C.length,v=C.filter(L=>L.selected).length,I=y.filter(L=>L.type==="DEX"),A=I.length,E=I.filter(L=>L.selected).length,x=i((L,Z)=>{switch(c){case"loading":return D.createElement(jA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(lt,{variant:"body",size:"medium",color:"$error500"},bt.t("Loading failed"));default:return D.createElement(lt,{variant:"body",size:"medium"},`${L} / ${Z}`)}},"handleSwapperEndItem"),b={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(Vr,{direction:"horizontal",size:8}),D.createElement($a,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(UA,{color:"gray",size:16})},P={id:"widget-setting-exchange-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Exchanges")),end:D.createElement(D.Fragment,null,x(E,A),D.createElement(Vr,{direction:"horizontal",size:8}),D.createElement($a,{color:"black"})),start:D.createElement(zA,{color:"gray",size:16}),onClick:()=>t($.exchanges)},N={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(Vr,{direction:"horizontal",size:8}),D.createElement($a,{color:"black"})),start:D.createElement(JA,{color:"gray",size:16}),onClick:()=>t($.customTokens)},O={id:"widget-setting-language-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Language")),start:D.createElement(qA,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},s),D.createElement(Vr,{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(Vr,{direction:"horizontal",size:4}),D.createElement(RA,{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(HA,{color:"gray",size:16}),end:D.createElement(YA,{checked:S}),onClick:()=>{oe({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:S,newValue:!S}}),T()}},j={id:"widget-setting-theme-item-btn",type:D.createElement(VA,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Theme")),end:D.createElement(tN,null,D.createElement(ZA,{container:W(),items:oN,value:n,className:"widget-setting-theme-item-tabs-container",onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:nN(n)},ee=h?[]:[b,P];return m||ee.push(N),g||ee.push(O),ee.push(q),!e?.singleTheme&&!f&&ee.push(j),D.createElement(GA,{type:D.createElement(KA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}i(Ky,"SettingsLists");var cN=aN("div",{paddingLeft:"$8"});function jy(){let{isInCampaignMode:t,updateCampaignMode:e}=k(),o=t(),[,n]=lN(),r=sN(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return tn.createElement(se,{header:{title:lp.t("Settings")}},tn.createElement(ce,null,o&&tn.createElement(rN,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:lp.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:tn.createElement(cN,null,tn.createElement(iN,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},lp.t("Reset")))}),tn.createElement(sp,null),tn.createElement(Ky,null)))}i(jy,"SettingsPage");import{i18n as T0}from"@lingui/core";import{cancelSwap as C0}from"@rango-dev/queue-manager-rango-preset";import{useManager as k0}from"@rango-dev/queue-manager-react";import{Alert as w0}from"@rango-dev/ui";import bp from"react";import{useParams as v0}from"react-router-dom";import{i18n as Qt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as i0,getCurrentStep as a0,getRelatedWalletOrNull as s0}from"@rango-dev/queue-manager-rango-preset";import{Button as HS,Divider as l0,QuoteCost as c0,StepDetails as p0,Typography as Tp}from"@rango-dev/ui";import{useWallets as u0}from"@rango-dev/wallets-react";import QS from"bignumber.js";import{PendingSwapNetworkStatus as Hn}from"rango-types";import we,{useEffect as Cp,useRef as kp,useState as Va}from"react";import{useNavigate as d0}from"react-router-dom";import{i18n as Io}from"@lingui/core";var pN=[Io.t("Sunday"),Io.t("Monday"),Io.t("Tuesday"),Io.t("Wednesday"),Io.t("Thursday"),Io.t("Friday"),Io.t("Saturday")];function Xy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?Io.t("Today"):`${pN[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Xy,"timeSince");function Yy(t){return t.finishTime?Xy(parseInt(t.finishTime)):Xy(parseInt(t.creationTime))}i(Yy,"getSwapDate");import Kr from"react";import{i18n as Fa}from"@lingui/core";import{Button as Zy,Divider as cp,MessageBox as uN}from"@rango-dev/ui";import Ao from"react";var Jy=i(({onCancel:t,onClose:e})=>Ao.createElement(Ao.Fragment,null,Ao.createElement(cp,{size:20}),Ao.createElement(uN,{type:"error",title:Fa.t("Cancel Swap"),description:Fa.t("Are you sure you want to cancel this swap?")}),Ao.createElement(cp,{size:32}),Ao.createElement(Zy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Fa.t("Yes, Cancel it")),Ao.createElement(cp,{size:12}),Ao.createElement(Zy,{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 Ry,Divider as pp,MessageBox as dN,Typography as mN}from"@rango-dev/ui";import lo from"react";var eS=i(({onDelete:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(pp,{size:20}),lo.createElement(dN,{type:"error",title:Oa.t("Delete Transaction"),description:Oa.t("Are you sure you want to delete this swap?")}),lo.createElement(pp,{size:32}),lo.createElement(Ry,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Oa.t("Yes, Delete it")),lo.createElement(pp,{size:12}),lo.createElement(Ry,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},lo.createElement(mN,{variant:"title",size:"medium",color:"primary"},Oa.t("No, Cancel")))),"DeleteContent");import{i18n as fN}from"@lingui/core";import{Button as gN,Divider as hN,MessageBox as yN}from"@rango-dev/ui";import on from"react";var tS=i(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return on.createElement(on.Fragment,null,on.createElement(yN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&on.createElement(on.Fragment,null,on.createElement(hN,{size:"30"}),on.createElement(gN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},fN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as MN,getCurrentStep as DN,getRelatedWalletOrNull as $N}from"@rango-dev/queue-manager-rango-preset";import{WalletState as FN}from"@rango-dev/ui";import{useWallets as ON}from"@rango-dev/wallets-react";import lS from"react";import{i18n as Un}from"@lingui/core";import{Alert as rS,Button as CN,Checkbox as kN,Divider as Ha,Image as wN,MessageBox as vN,Spinner as EN,WarningIcon as bN}from"@rango-dev/ui";import{useWallets as xN}from"@rango-dev/wallets-react";import Te,{useState as IN}from"react";import{css as SN,darkTheme as TN,styled as up}from"@rango-dev/ui";var oS=SN({wordWrap:"break-word",display:"block"}),nS=up("img",{width:"100%"}),Ua=up("div",{position:"relative"}),za=up("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${TN} &`]:{$$color:"$warning600"}});var iS=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=IN(null),{list:s}=xt(),c=re.use.isActiveTab(),{state:l,connect:p}=xN(),u=s.find(v=>v.type===e.walletType),d=u?.needsNamespace?.data.find(v=>v.value===o?.namespace);if(!u)return null;let f=l(e.walletType),h=u.isHub&&o?.namespace?f.namespaces?.get(o.namespace):null,g=f.connecting||h?.connecting,m=u.isHub?h?.connected:f.connected,S=i(()=>m?Un.t("Done"):r?Un.t("Try again"):Un.t("Connect"),"getButtonTitle"),T=i(()=>g?Te.createElement(EN,{color:"info"}):r||m?null:Te.createElement(kN,{checked:!0,disabled:!0}),"getNamespaceSuffix"),y=i(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"),C=i(async()=>{if(m){n();return}y()},"handleClickButton"),w=i(()=>{if(!m)return null;let v=u?.isHub?h?.accounts?.[0]?.split(":"):f?.accounts?.[0]?.split(":"),I=v?.[v?.length-1];return I?uo(I):null},"getAddress");return Te.createElement(Te.Fragment,null,Te.createElement(vN,{type:"warning",title:Un.t("Connect {wallet}",{wallet:u.title}),description:Un.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Te.createElement(Ua,null,Te.createElement(wN,{src:u.image,size:45}),Te.createElement(za,null,Te.createElement(bN,{color:"warning",size:10})))}),m&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(Ha,{size:10}),Te.createElement(rS,{type:"success",variant:"alarm",title:Un.t("Wallet connected successfully.")})),r&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(Ha,{size:10}),Te.createElement(rS,{type:"error",title:r?.message,variant:"alarm"})),d&&Te.createElement(Te.Fragment,null,Te.createElement(Ha,{size:30}),Te.createElement(Oo,{namespace:d,suffix:T(),error:r?.message,connected:m,address:w()})),Te.createElement(Ha,{size:"40"}),Te.createElement(CN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:C,disabled:!c},S()))},"ConnectWalletContent");import{i18n as aS}from"@lingui/core";import{Button as AN,detectInstallLink as NN,Divider as WN,Image as LN,MessageBox as PN,WarningIcon as BN}from"@rango-dev/ui";import{useWallets as _N}from"@rango-dev/wallets-react";import co from"react";var sS=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=_N(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(NN(n.installLink),"_blank"),"handleButtonClick");return co.createElement(co.Fragment,null,co.createElement(PN,{type:"warning",title:aS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:co.createElement(Ua,null,co.createElement(LN,{src:n.img,size:45}),co.createElement(za,null,co.createElement(BN,{color:"warning",size:10})))}),co.createElement(WN,{size:"40"}),co.createElement(AN,{type:"primary",id:"widget-install-wallet-btn",onClick:r},aS.t("Install")))},"InstallWalletContent");var cS=i(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:r}=ON(),a=DN(e),s=a?$N(e,a):null,c=s?.walletType,l=c?Rn(r(c),n(c)):null,p=a?MN(e,a):null;return c?l===FN.NOT_INSTALLED?lS.createElement(sS,{walletType:c}):lS.createElement(iS,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function dp(t){let{isOpen:e,state:o,switchNetworkModalState:n,onClose:r,onDelete:a,onCancel:s,swap:c,message:l,handleSwitchNetwork:p}=t;return Kr.createElement(ie,{open:e,onClose:r,container:W()},o==="connectWallet"&&Kr.createElement(cS,{swap:c,message:l,onClose:r}),o==="switchNetwork"&&n&&Kr.createElement(tS,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Kr.createElement(eS,{onClose:r,onDelete:()=>{r(),a()}}),o==="cancel"&&Kr.createElement(Jy,{onClose:r,onCancel:()=>{r(),s()}}))}i(dp,"SwapDetailsModal");import{i18n as jr}from"@lingui/core";import{Button as mp,Divider as Xr,MessageBox as dS,TokenAmount as UN,Typography as mS}from"@rango-dev/ui";import ke from"react";import{Link as zN,useNavigate as HN}from"react-router-dom";var pS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",uS="/profile";function fp(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:c,token:l,chain:p,percentageChange:u,description:d,diagnosisUrl:f}=t,h=HN(),{showProfileBanner:g}=re();return ke.createElement(ie,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(wt.SWAP_BOX_ID)||document.body},n==="success"?ke.createElement(dS,{type:"success",title:jr.t("Swap Successful")},ke.createElement(UN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),ke.createElement(Xr,{size:12}),ke.createElement(mS,{className:oS(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ke.createElement(dS,{type:"error",title:jr.t("Transaction Failed"),description:d}),ke.createElement(Xr,{size:30}),n==="success"&&ke.createElement(ke.Fragment,null,g&&ke.createElement(ke.Fragment,null,ke.createElement(zN,{to:uS},ke.createElement(nS,{src:pS,alt:"Profile Banner"})),ke.createElement(Xr,{size:30})),ke.createElement(mp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},jr.t("Done"))),ke.createElement(Xr,{size:12}),f&&ke.createElement(ke.Fragment,null,ke.createElement(mp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(f,"_blank")},jr.t("Diagnosis")),ke.createElement(Xr,{size:12})),ke.createElement(mp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ke.createElement(mS,{variant:"title",size:"medium",color:"primary"},jr.t("See Details"))))}i(fp,"SwapDetailsCompleteModal");import{i18n as Ga}from"@lingui/core";import{CopyIcon as e0,DoneIcon as t0,IconButton as o0,RangoExplorerIcon as n0,Tooltip as DS,Typography as $S,useCopyToClipboard as r0}from"@rango-dev/ui";import Bt from"react";import RN from"react";import{i18n as XN}from"@lingui/core";import{Alert as PS,IconButton as YN,LinkIcon as ZN}from"@rango-dev/ui";import No,{Fragment as JN}from"react";import{Alert as qN,ChevronDownIcon as GN,IconButton as VN}from"@rango-dev/ui";import zn,{useState as KN}from"react";import{css as Yr,darkTheme as fS,styled as Ht,Typography as QN}from"@rango-dev/ui";var gS=Ht(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${fS} &`]:{color:"$secondary500"}}}}}),hS=Ht("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),yS=Ht("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),SS=Ht("div",{padding:"$0 $20 $20 $20"}),DY=Ht("div",{display:"flex",flexDirection:"column",gap:"$10"}),TS=Ht("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),$Y=Ht("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),nn=Yr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${fS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),CS=Yr({padding:"$5 0"}),Qa=Yr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),kS=Yr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),wS=Yr({width:"100%",padding:"0 $20 $10"}),vS=Ht("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),ES=Ht("div",{display:"flex",flexDirection:"column",gap:"$5"}),qa=Ht(QN,{wordBreak:"break-word"});import{styled as gp}from"@rango-dev/ui";var bS=gp("div",{display:"flex",flexDirection:"column",gap:"$10"}),xS=gp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),IS=gp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function AS(t){let{message:e}=t,[o,n]=KN(!1);return zn.createElement(qN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&zn.createElement(VN,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},zn.createElement(xS,{rotated:o},zn.createElement(GN,{size:12,color:"gray"}))),footer:zn.createElement(IS,{open:o},zn.createElement(qa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(AS,"FailedAlert");import{i18n as NS}from"@lingui/core";import{Alert as hp,Button as WS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as jN}from"rango-types";import Zr from"react";function LS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:r,showNetworkModal:a}=t;return e?Zr.createElement(hp,{type:"warning",id:"widget-swap-details-change-network-alert",title:r.shortMessage,action:Zr.createElement(WS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},NS.t("Change"))}):a===jN.WaitingForConnectingWallet?Zr.createElement(hp,{type:"warning",title:r.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Zr.createElement(WS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},NS.t("Connect"))}):Zr.createElement(hp,{id:"widget-swap-details-short-alert",type:"warning",title:r.shortMessage})}i(LS,"WarningAlert");function yp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=fr(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,d=u&&!c||p&&!s.explorerUrl?.length;return No.createElement(bS,null,s.explorerUrl?.map((f,h,g)=>{let m=h+f.url,S=h===g.length-1,T=(S&&u||p)&&!d,y=S&&s.status==="failed";return No.createElement(JN,{key:m},No.createElement(PS,{id:"widget-swap-details-tx-alert",type:S&&(T&&"loading"||y&&"error")||"success",title:f.description?`${f.description} Tx`:XN.t("View transaction"),action:f.url&&No.createElement(YN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},No.createElement(ZN,{size:12}))}))}),d&&No.createElement(PS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&No.createElement(LS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a}),s.status==="failed"&&No.createElement(AS,{message:a}))}i(yp,"SwapDetailsAlerts");var BS=2e3;var _S=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=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:jn(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:jn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:RN.createElement(yp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function MS(t){if(fr(t)&&t.status!=="failed"&&t.status!=="success")return"warning";switch(t.status){case"created":return"default";case"approved":case"waitingForApproval":case"running":return"in-progress";case"failed":return"error";case"success":return"completed"}}i(MS,"getStepState");function FS(t){let{requestId:e}=t,[o,n]=r0(BS);return Bt.createElement(yS,{className:nn()},Bt.createElement($S,{variant:"label",size:"large",color:"neutral700"},Ga.t("Request ID")),Bt.createElement("div",{className:Qa()},Bt.createElement($S,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(DS,{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(o0,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Bt.createElement(t0,{size:16,color:"secondary"}):Bt.createElement(e0,{size:16,color:"gray"}))),Bt.createElement(vS,{target:"_blank",href:`${nu}/swap/${e}`},Bt.createElement(DS,{container:W(),content:Ga.t("View on Rango Explorer"),side:"bottom"},Bt.createElement(n0,{size:20})))))}i(FS,"RequestIdRow");import{i18n as OS}from"@lingui/core";import{Typography as US}from"@rango-dev/ui";import Sp from"react";function zS(t){let{date:e,isFinished:o}=t;return Sp.createElement("div",{className:nn()},Sp.createElement(US,{variant:"label",size:"large",color:"neutral700"},o?OS.t("Finished at"):OS.t("Created at")),Sp.createElement(US,{variant:"label",size:"small",color:"neutral700"},e))}i(zS,"SwapDateRow");var m0=3e3;function wp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=u0(),l=k().blockchains(),p=k().swappers(),{findToken:u}=k(),d=z().use.retry(),f=d0(),h=kp(null),[g,m]=Va(!1),[S,T]=Va(null),[y,C]=Va(null),[w,v]=Va(null),I=kp(S),A=kp(y),E=Le.use.getNotifications(),x=Le.use.removeNotification(),b=E(),P=a0(e),N=P?.networkStatus,O=i(Ne=>{m(!0),T(Ne)},"handleChangeModalState"),q=i(()=>{m(!1)},"handleCloseModal"),j=i(()=>{C({type:"loading",title:Qt.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=i(()=>{C({type:"success",title:Qt.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),L=i(Ne=>{C({type:"error",title:Qt.t("Network Switch Failed"),description:Ne?.message||H.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Rd(e),Y=P?i0(e,P):null,ue=P?s0(e,P):null,Ee=Yy(e),Vt=em(e),be=i(Ne=>!!c(Ne)?.mobileWallet,"checkIsMobileWallet"),Qe=!!N&&[Hn.WaitingForNetworkChange,Hn.NetworkChangeFailed].includes(N),Xe=!!ue?.walletType&&be(ue.walletType),St=!!ue&&!!Y&&a(ue.walletType,Y.network,Y),ct=!!Y&&Qe&&(Xe||St),B=i(()=>{ct&&(j(),s(ue.walletType,[{namespace:Y.namespace,network:Y.network}]).then(()=>{ee()}).catch(Ne=>{L(Tt(Ne)??Ne)}))},"handleSwitchNetwork"),V=i(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),H=Jd(e,P,c),X=_S({swap:e,switchNetworkIsAvailable:ct,handleSwitchNetworkClick:V,showNetworkModal:N,setNetworkModal:O,message:H,blockchains:l,swappers:p}),G=X.length,[J,U]=[e.steps[0],e.steps[G-1]],de=U?.outputAmount||U?.expectedOutputAmountHumanReadable,qe=e.steps.reduce((Ne,_t)=>Ne+parseFloat(_t.feeInUsd||""),0),ot=e.steps.find(Ne=>Ne.diagnosisUrl)?.diagnosisUrl,po=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),Gn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),Wo=de?new QS(de).multipliedBy(U.toUsdPrice||0).toString():"",ei=new QS(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),an=Zt(Gn,po),rs=H.detailedMessage.content||H.shortMessage,vT=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:uo(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):we.createElement(ES,null,we.createElement(Tp,{variant:"body",size:"medium",color:"neutral700",align:"center"},rs?"":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}})}`:""),rs&&we.createElement(qa,{align:"center",variant:"body",size:"medium",color:"neutral700"},we.createElement("b",null,"Reason:")," ",rs));return Cp(()=>{b.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]),Cp(()=>{if(ct){if(O("switchNetwork"),N===Hn.WaitingForNetworkChange){j();return}if(N===Hn.NetworkChangeFailed){L();return}return}if(N===Hn.WaitingForConnectingWallet){O("connectWallet");return}if(N===Hn.NetworkChanged){O("switchNetwork"),ee();return}S&&["connectWallet","switchNetwork"].includes(S)&&q()},[N]),Cp(()=>{if(I.current=S,A.current=y,S==="switchNetwork"&&y?.type==="success"){let Ne=setTimeout(()=>{I.current==="switchNetwork"&&A.current?.type==="success"&&q()},m0);return()=>clearTimeout(Ne)}},[S,y]),we.createElement(se,{header:{title:Qt.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&we.createElement(yo,null,we.createElement(HS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},we.createElement(Tp,{size:"medium",variant:"label",color:"error"},Qt.t("Delete"))))},footer:Vt&&!w&&we.createElement(HS,{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(()=>{f("../../")},0)}},Qt.t("Try again"))},we.createElement(gS,{compact:!0,ref:h},we.createElement(FS,{requestId:o}),we.createElement(zS,{date:Ee,isFinished:!!e.finishTime}),we.createElement("div",{className:kS()},we.createElement(c0,{fee:M(String(qe),2,2),time:Zn(ci(e.steps)),steps:G}),we.createElement(wr,{from:{price:{value:M(e.inputAmount,6,6),usdValue:Gn,realUsdValue:ei,realValue:e.inputAmount},token:{displayName:X[0]?.from.token.displayName||"",image:X[0]?.from.token.image},chain:{image:X[0]?.from.chain.image,displayName:X[0]?.from.chain.displayName||""}},to:{price:{value:M(de,6,6),usdValue:po,realUsdValue:Wo,realValue:de||""},token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image,displayName:X[G-1]?.to.chain.displayName||""}},percentageChange:M(an,2,2),warningLevel:Jt(an??0)})),we.createElement("div",{className:wS()},we.createElement(Tp,{variant:"title",size:"small"},Qt.t("Swaps steps"))),we.createElement(l0,{size:8}),we.createElement(SS,null,X.map((Ne,_t)=>{let Mp=_t,Vn=e.steps[_t]&&MS(e.steps[_t]),ET=Vn==="error"||Vn==="in-progress"||Vn==="warning"||Vn==="completed"&&_t===X.length-1;return we.createElement(p0,{className:"widget-swap-details-step-item-container",key:Mp,step:Ne,type:"swap-progress",ref:h,state:Vn,hasSeparator:_t!==0,tabIndex:Mp,isFocused:ET,tooltipContainer:W()})}))),we.createElement(dp,{isOpen:g,state:S,switchNetworkModalState:y,onClose:q,onCancel:r,onDelete:n,message:H.detailedMessage.content,swap:e,handleSwitchNetwork:V}),we.createElement(fp,{open:!!w,diagnosisUrl:ot,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(de,6,6),usdValue:po,realUsdValue:Wo,realValue:de||"",percentageChange:M(an,2,2),token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image},description:vT}))}i(wp,"SwapDetails");import{i18n as ja}from"@lingui/core";import{Divider as VS,NotFound as S0,Skeleton as Rr,Typography as Xa}from"@rango-dev/ui";import Ae from"react";import{i18n as f0}from"@lingui/core";import{Divider as g0,Skeleton as h0,Typography as y0}from"@rango-dev/ui";import Ie from"react";import{css as qt,styled as vp}from"@rango-dev/ui";var qS=vp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Jr=vp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Ka=vp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),m9=qt({display:"flex",justifyContent:"space-between",alignItems:"center"}),f9=qt({paddingTop:"$15",display:"flex"}),g9=qt({padding:"$15 $0"}),h9=qt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),y9=qt({paddingBottom:"$10"}),S9=qt({display:"flex",justifyContent:"start",alignItems:"center"}),T9=qt({paddingTop:"$5",display:"flex",alignItems:"center"}),C9=qt({display:"flex",alignItems:"center"}),k9=qt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),GS=qt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Ep(){return Ie.createElement(qS,null,Ie.createElement(br,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(y0,{variant:"title",size:"small"},f0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1}),Ie.createElement("div",{className:GS()},Ie.createElement(g0,{direction:"horizontal",size:20}),Ie.createElement(h0,{height:22,variant:"rectangular"}))),Ie.createElement(Ka,null),Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1})),Ie.createElement(Ka,null),Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1})),Ie.createElement(Ka,null),Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1}))))}i(Ep,"LoadingSwapDetails");function KS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:ja.t("Swap Details"),suffix:Ae.createElement(yo,null)}},o&&Ae.createElement(hS,null,Ae.createElement("div",{className:nn()},Ae.createElement(Xa,{variant:"label",size:"large",color:"neutral700"},`${ja.t("Request ID")}`),Ae.createElement("div",{className:Qa()},Ae.createElement(Xa,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Rr,{width:60,height:10,variant:"rounded"})),Ae.createElement(VS,{direction:"horizontal",size:4}),Ae.createElement(Rr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(VS,{direction:"horizontal",size:4}),Ae.createElement(Rr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:nn()},Ae.createElement(Xa,{className:CS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Rr,{width:60,height:10,variant:"rounded"})),Ae.createElement(Xa,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Rr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(Ep,null)),!o&&Ae.createElement(TS,null,Ae.createElement(S0,{title:ja.t("Not found"),description:ja.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(KS,"SwapDetailsPlaceholder");function jS(){let{manager:t,state:e}=k0(),o=!e.loadedFromPersistor,n=Et(t),{requestId:r}=v0(),a=Ve(),{fetchStatus:s}=k();if(!r)return bp.createElement(w0,{containerStyles:{margin:"20px"},type:"error",title:T0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=r?n.find(({swap:f})=>f.requestId===r):void 0,p=i(()=>{if(l?.id){let f=t?.get(l.id);f&&(oe({type:"swapCancelled",payload:{routeId:r}}),C0(f))}},"onCancel"),u=i(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(f){console.log(f)}},"onDelete"),d=l?.swap;return!d||c?bp.createElement(KS,{requestId:r,showSkeleton:c}):bp.createElement(wp,{swap:d,requestId:r,onCancel:p,onDelete:u})}i(jS,"SwapDetailsPage");import{i18n as XS}from"@lingui/core";import{Divider as E0,getCategoriesCount as b0,SelectableCategoryList as x0,styled as ZS,Typography as I0,Wallet as A0}from"@rango-dev/ui";import Gt,{useState as YS}from"react";var N0=ZS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),W0=ZS(ce,{textAlign:"center"});function JS(){let{fetchStatus:t}=k(),[e,o]=YS("ALL"),n=k().blockchains(),{config:r}=k(),[a,s]=YS(),c=re.use.isActiveTab(),{list:l}=xt(),p=Pu(l,n),d=b0(p)!==1,f=Bu(l,e),h=i(g=>{du(l,r.multiWallets)||s(g)},"handleWalletItemClick");return Gt.createElement(se,{header:{title:XS.t("Connect Wallets")}},Gt.createElement(W0,null,d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(x0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),Gt.createElement(E0,{size:24})),Gt.createElement(I0,{variant:"title",size:"xmedium",align:"center"},XS.t("Choose a wallet to connect.")),Gt.createElement(N0,null,f.map((g,m)=>{let S=`wallet-${m}-${g.type}`;return Gt.createElement(A0,{key:S,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),Gt.createElement(dr,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}i(JS,"WalletsPage");function RS(){return um(),Zs(),L0([{path:$.home,element:He.createElement(fy,null)},{path:$.routes,element:He.createElement(Ty,null)},{path:$.fromSwap,children:[{index:!0,element:He.createElement(Ma,{type:"source"})},{path:$.blockchains,element:He.createElement(La,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:He.createElement(Ma,{type:"destination"})},{path:$.blockchains,element:He.createElement(La,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:He.createElement(jy,null)},{path:$.languages,element:He.createElement(hy,null)},{path:$.exchanges,element:He.createElement(Xc,{sourceType:"Exchanges"})},{path:$.bridges,element:He.createElement(Xc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:He.createElement(hh,null)},{path:$.addCustomTokens,children:[{index:!0,element:He.createElement(cf,null)},{path:$.blockchains,element:He.createElement(La,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:He.createElement(Dh,null)},{path:$.swapDetails,element:He.createElement(jS,null)}]},{path:$.wallets,element:He.createElement(JS,null)},{path:$.confirmSwap,element:He.createElement(eh,null)}])}i(RS,"AppRoutes");import{useQueueManager as X0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as Y0}from"rango-sdk";import{useContext as Z0,useEffect as Np,useState as uT}from"react";import{WalletTypes as Ya}from"@rango-dev/provider-all";import{Provider as $0}from"@rango-dev/wallets-react";import Za,{createContext as F0,useEffect as rT,useMemo as O0,useRef as iT}from"react";import{useEffect as B0}from"react";import{Provider as P0}from"@hub3js/core";function eT(t){return t.map(e=>typeof e=="string"?e:e instanceof P0?e.id:e.config.type).join("-")}i(eT,"hashProviders");function xp(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=k(),a=n();return B0(()=>{o(),r()},[eT(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(xp,"useWalletProviders");import{legacyFormatAddressWithNetwork as _0,legacyReadAccountAddress as tT}from"@rango-dev/wallets-core/legacy";import{Events as Qn}from"@rango-dev/wallets-react";import{isEvmBlockchain as M0}from"rango-sdk";function oT(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=k(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(M0).map(m=>m.name),u=i((m,S)=>{let[T,,y,C,w]=m,v={walletType:T,network:C.network??void 0,accounts:y};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let I=hs(T,y,p,S.supportedChainNames,w.isContractWallet);I.length&&e(I,w.namespace,C.derivationPath,{walletName:T})},"onAccountsEvent"),d=i((m,S,T,y,C)=>{if(S===Qn.ACCOUNTS){let w=er(C.supportedBlockchains);T&&u([m,S,T,y,C],{supportedChainNames:w})}S===Qn.PROVIDER_DISCONNECTED&&(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),S===Qn.NAMESPACE_DISCONNECTED&&n(m,T)},"handleUpdatesForHub"),f=i((m,S,T,y,C)=>{if(S===Qn.ACCOUNTS){let w=er(C.supportedBlockchains),v=[],I=[];if(T?.forEach(E=>{let{network:x}=tT(E);p.includes(x)?v.push(E):I.push(E)}),r.filter(E=>E.walletType===m).map(E=>_0(E.address,E.chain)).length>0){if(v.length>0){let E=hs(m,v,p,w,C.isContractWallet);a(m,{chains:E.map(x=>x.chain)})}I.length>0&&a(m,{chains:I.map(E=>{let{network:x}=tT(E);return x})})}T?u([m,S,T,y,C],{supportedChainNames:w}):(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),h=i((m,S,T,y,C)=>{if(S===Qn.CONNECTED&&T){let w={walletType:m,network:y.network??void 0,accounts:y.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(S===Qn.NETWORK&&T){let w={walletType:m,network:T,accounts:y.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((m,S,T,y,C)=>{C.isHub?d(m,S,T,y,C):f(m,S,T,y,C),h(m,S,T,y,C)},"handler")}}i(oT,"useUpdates");import{LegacyEvents as D0}from"@rango-dev/wallets-core/legacy";function nT(t,e){let[o,n,r,a,s]=e;n!==D0.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(nT,"propagateEvents");var Ja=F0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function U0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=k(),a=k().blockchains(),s=k().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=xp(s.wallets,c),p=iT(),u=iT(),{handler:d}=oT({onConnectWalletHandler:p,onDisconnectWalletHandler:u});rT(()=>{n().catch(console.log)},[]),rT(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let f=re.use.isActiveTab(),h=O0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Za.createElement(Ja.Provider,{value:h},Za.createElement($0,{allBlockChains:a,providers:l,onUpdateState:(g,m,S,T,y)=>{let C=[g,m,S,T,y];d(...C),t.onUpdateState&&nT(t.onUpdateState,C)},autoConnect:!!f,configs:{wallets:s.wallets,walletOptions:{[Ya.TON_CONNECT]:{provider:{manifestUrl:s.tonConnect?.manifestUrl}},[Ya.OKX]:{provider:{tonConnectManifestUrl:s.tonConnect?.manifestUrl}},[Ya.TREZOR]:{provider:{manifest:s.trezorManifest}},[Ya.WALLET_CONNECT_2]:{provider:{WC_PROJECT_ID:s.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:s.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink,meta:a}}}}},t.children))}i(U0,"Main");function Ra(t){let{config:e,...o}=t;return Za.createElement(Zu,{config:e},Za.createElement(U0,{...o,config:e}))}i(Ra,"WidgetWallets");import{globalCss as z0}from"@rango-dev/ui";var aT=i(()=>z0({"@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 H0}from"@rango-dev/wallets-react";import{useEffect as Q0,useRef as q0}from"react";function sT(){let{connect:t,state:e}=H0(),o=q0({}),{fetchStatus:n}=k(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);Q0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(sT,"useForceAutoConnect");import{isApprovalTX as G0,RouteEventType as lT,StepEventType as cT,StepExecutionEventStatus as V0,WidgetEvents as es}from"@rango-dev/queue-manager-rango-preset";import{useEffect as pT}from"react";function Ip(){let t=Le.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=k();pT(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===cT.TX_EXECUTION&&s.status===V0.TX_SENT&&!G0(c)||s.type===cT.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let f=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);f&&u.push(f)}if(c?.fromBlockchain!==c?.toBlockchain){let f=l.wallets[c?.toBlockchain];if(f){let h=e.find(g=>g.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&g.walletType===f.walletType&&g.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let f=n(),g=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(m=>f.some(S=>S.blockchain===m.blockchain&&S.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&S.symbol?.toLocaleLowerCase()===m.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return ge.on(es.StepEvent,r),()=>ge.off(es.StepEvent,r)},[ge,e]),pT(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===lT.FAILED||s.type===lT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ge.on(es.RouteEvent,r),()=>ge.off(es.RouteEvent,r)},[ge])}i(Ip,"useSubscribeToWidgetEvents");import{useManager as K0}from"@rango-dev/queue-manager-react";import{useEffect as j0}from"react";function Ap(){let{isSynced:t,syncNotifications:e}=Le(),{manager:o,state:n}=K0();j0(()=>{if(Le.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}})})}},[Le.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Ap,"useSyncNotifications");function Wp(){sT(),aT(),Ip(),Ap();let t=k().blockchains(),{canSwitchNetworkTo:e}=dT(),[o,n]=uT(null),[r,a]=uT(),s=Z0(Ja),c=t.filter(Y0);Np(()=>()=>cm(),[]),Np(()=>()=>pm(),[]),X0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),Np(()=>(Fo.init(),Le.persist.hasHydrated()||Le.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),Fo.destroy),[])}i(Wp,"useBootstrap");import{styled as J0}from"@rango-dev/ui";var mT=J0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left",height:"100%","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function rn(){Wp();let{config:t}=k(),{activeTheme:e}=ho(t?.theme||{}),{activeLanguage:o}=bo();return Lp.createElement(R0,{language:o},Lp.createElement(mT,{id:"swap-container",className:e()},Lp.createElement(RS,null)))}i(rn,"Main");import{setSolanaSignerConfig as TW}from"@rango-dev/signer-solana";import Bp,{useEffect as _p,useMemo as CW}from"react";function fT(){let{setWatermark:t,setShowProfileBanner:e}=re();return{fetchApiConfig:i(async()=>{let n=await fetch(`${jt("BASE_URL")}/meta/dapp/config?apiKey=${jt("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let r=await n.json();t(r.config.watermark),e(r.config.banners.profile)},"fetchApiConfig")}}i(fT,"useFetchApiConfig");import{useState as eW}from"react";var tW=i(()=>{let[t,e]=eW(null),o=i(a=>{let s=document.createElement("link");return s.href=a,s.rel="stylesheet",document.head.appendChild(s),s},"loadFont"),n=i(()=>{t&&(document.head.removeChild(t),e(null))},"unloadFont");return{handleLoadCustomFont:i(a=>{n();let s=uu(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),gT=tW;import{convertEvmBlockchainMetaToEvmChainInfo as oW}from"@rango-dev/internal-blockchains";import{checkWaitingForNetworkChange as nW,makeQueueDefinition as rW}from"@rango-dev/queue-manager-rango-preset";import{Provider as iW}from"@rango-dev/queue-manager-react";import{useWallets as aW}from"@rango-dev/wallets-react";import{isEvmBlockchain as sW}from"rango-types";import lW,{useMemo as cW}from"react";function pW(t){let{getSigners:e,state:o,connect:n,canSwitchNetworkTo:r,getWalletInfo:a,hubProvider:s}=aW(),c=cW(()=>rW({API_KEY:t.apiKey||jt("API_KEY"),BASE_URL:jt("BASE_URL"),emitter:{emit:ge.emit}}),[t.apiKey]),{blockchains:l,connectedWallets:p}=k(),u=l(),d={blockchains:p.map(C=>({accounts:[C],name:C.chain}))},f=i(async(C,w)=>r(C,w.network,w)?await n(C,[w]):void 0,"switchNetwork"),h=i(C=>!!a(C).mobileWallet,"isMobileWallet"),g=u.filter(C=>C.enabled).reduce((C,w)=>(C[w.name]=w,C),{}),m=u.filter(sW),S=i(C=>{let{supportedChains:w}=a(C);return er(w)},"getSupportedChainNames"),T={meta:{blockchains:g,evmBasedChains:m,evmNetworkChainInfo:oW(m),getSupportedChainNames:S},getSigners:async C=>{try{return await e(C)}catch(w){throw Tt(w)??w}},wallets:d,switchNetwork:f,canSwitchNetworkTo:r,state:o,isMobileWallet:h,hubProvider:s},y=re.use.isActiveTab();return lW.createElement(iW,{queuesDefs:[c],context:T,onPersistedDataLoaded:C=>{nW(C)},isPaused:!y},t.children)}i(pW,"QueueManager");var hT=pW;import{useManager as gW}from"@rango-dev/queue-manager-react";import hW,{createContext as yW,useContext as SW}from"react";function yT(){let{findToken:t}=k(),e=k().blockchains(),o=k().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:c}=z()();return i(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:f,toToken:h,requestAmount:g}=p,m={blockchains:e,tokens:o};if(u!==void 0){let S=e.find(T=>T.name===u)??null;n(S)}if(d!==void 0){let S=d?t(d)??null:null;r({meta:m,token:S})}if(f!==void 0){let S=e.find(T=>T.name===f)??null;a(S)}if(h!==void 0){let S=h?t(h)??null:null;s({meta:m,token:S})}g!==void 0&&c(g)},"updateQuoteInputs")}i(yT,"useUpdateQuoteInputs");import{cancelSwap as uW,getCurrentNamespaceOfOrNull as dW,getCurrentStep as mW,getRelatedWalletOrNull as fW}from"@rango-dev/queue-manager-rango-preset";var ts=class{static{i(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&&uW(o)}getCurrentStepInfo(e){let o=mW(e);return{step:o,wallet:o?fW(e,o):null,network:o?dW(e,o)?.network:null}}};var ST=yW(void 0);function Pp(t){let{manager:e}=gW(),o=re.use.isActiveTab(),n=z().use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=k(),l=new ts(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=k(),u=Iu(a()),d=k().blockchains(),f=k().tokens(),h=k().swappers(),g=k().fetchStatus,m=bo().resetLanguage,S=Le().getNotifications(),T=Le().clearNotifications,y=yT(),{fromBlockchain:C,toBlockchain:w,fromToken:v,toToken:I,inputAmount:A}=z()(),E={isActiveTab:o,setCurrentTabAsActive:Fo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async x=>c(x)},meta:{blockchains:d,tokens:f,swappers:h,loadingStatus:g,findToken:r},resetLanguage:m,notifications:{list:S,clearAll:T},quote:{quoteInputs:{fromBlockchain:C?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:w?.name??null,toToken:I?{symbol:I.symbol,blockchain:I.blockchain,address:I.address}:null,requestAmount:A},updateQuoteInputs:y}};return hW.createElement(ST.Provider,{value:E},t.children)}i(Pp,"WidgetInfo");function TT(){let t=SW(ST);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(TT,"useWidget");function qn(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{fetchApiConfig:r}=fT(),{handleLoadCustomFont:a}=gT();return _p(()=>{r().catch(console.log)},[]),_p(()=>{n&&a(n)},[n]),CW(()=>{_u({API_KEY:o?.apiKey||Rp(),BASE_URL:o?.apiUrl||ou})},[o.apiKey,o.apiUrl]),_p(()=>{t.config?.signers?.customSolanaRPC&&TW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Bp.createElement(Ra,{config:o,onUpdateState:e},Bp.createElement(hT,{apiKey:o.apiKey},Bp.createElement(Pp,null,t.children)))}i(qn,"WidgetProvider");function CT(t){let e=t.config?.externalWallets;return os.createElement(Ii,null,e?os.createElement(rn,null):os.createElement(qn,{config:t.config??Yn},os.createElement(rn,null)))}i(CT,"Refuel");import ns from"react";function kT(t){let e=t.config?.externalWallets;return ns.createElement(Ii,null,e?ns.createElement(rn,null):ns.createElement(qn,{config:t.config??Yn},ns.createElement(rn,null)))}i(kT,"Widget");function wT(){let{on:t,off:e}=ge;return{on:t,off:e}}i(wT,"useWidgetEvents");var wte={DerivationPath:cr,Namespaces:ar,Detached:lr,isOnDerivationPath:ur,isOnNamespace:pr,isOnDetached:Lo};export{jee as EventSeverity,sn as MainEvents,Vee as Networks,rte as PendingSwapNetworkStatus,Kn as QuoteEventTypes,CT as Refuel,Xee as RouteEventType,cs as SUPPORTED_FONTS,wte as StatefulConnect,Yee as StepEventType,Zee as StepExecutionBlockedEventStatus,Jee as StepExecutionEventStatus,Id as SwapModeContext,wt as UI_ID,Ze as UiEventTypes,ti as WalletEventTypes,ote as WalletEvents,kT as Widget,sn as WidgetEvents,qn as WidgetProvider,Ra as WidgetWallets,ul as customizedThemeTokens,ss as pickProviderVersionWithFallbackToLegacy,ete as readAccountAddress,ln as useStatefulConnect,xt as useWalletList,dT as useWallets,TT as useWidget,wT as useWidgetEvents,PC as widgetEventEmitter};
1
+ var bT=Object.defineProperty;var r=(t,e)=>bT(t,"name",{value:e,configurable:!0});import{Networks as Kee}from"@rango-dev/internal-blockchains";import{EventSeverity as Xee,RouteEventType as Yee,StepEventType as Zee,StepExecutionBlockedEventStatus as Jee,StepExecutionEventStatus as Ree}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as tte}from"@rango-dev/wallets-core/legacy";import{useWallets as dT,Events as nte}from"@rango-dev/wallets-react";import{PendingSwapNetworkStatus as ite}from"rango-types";import{Divider as Zk}from"@rango-dev/ui";import fo,{useEffect as Jk,useRef as Rk,useState as xd}from"react";import{WalletState as NT}from"@rango-dev/ui";import{useWallets as WT}from"@rango-dev/wallets-react";import{useReducer as LT}from"react";import{i18n as Oe}from"@lingui/core";var Ye=(a=>(a[a.NO_RESULT=0]="NO_RESULT",a[a.REQUEST_FAILED=1]="REQUEST_FAILED",a[a.REQUEST_CANCELED=2]="REQUEST_CANCELED",a[a.BRIDGE_LIMIT=3]="BRIDGE_LIMIT",a[a.INSUFFICIENT_SLIPPAGE=4]="INSUFFICIENT_SLIPPAGE",a))(Ye||{});var Kn=(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))(Kn||{}),oi=(n=>(n.CONNECT="connect",n.DISCONNECT="disconnect",n.DETECTED="detected",n))(oi||{}),Ze=(m=>(m.CLICK_CONNECT_WALLET="clickConnectWallet",m.TOKEN_SELECTED="tokenSelected",m.CHAIN_FILTER_APPLIED="chainFilterApplied",m.SETTINGS_CHANGED="settingsChanged",m.ROUTE_FEE_VIEWED="routeFeeViewed",m.DESTINATION_ADDRESS_SET="destinationAddressSet",m.GAS_WARNING_SHOWN="gasWarningShown",m.GAS_WARNING_BYPASSED="gasWarningBypassed",m.SWAP_INITIATED="swapInitiated",m.SWAP_WALLETS_MODAL_SHOWN="swapWalletsModalShown",m.SWAP_WALLETS_CONFIRMED="swapWalletsConfirmed",m.SWAP_STARTED="swapStarted",m.SWAP_RESUMED="swapResumed",m.SWAP_RETRIED="swapRetried",m.SWAP_CANCELLED="swapCancelled",m))(Ze||{}),sn=(a=>(a.RouteEvent="routeEvent",a.StepEvent="stepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(sn||{});var te=r(()=>({genericServerError:Oe.t("Failed Network, Please retry your swap."),moduleLoadError:Oe.t("A network error occurred while processing your request. Please check your internet connection or refresh the page and try again."),liquiditySourcesError:{title:Oe.t("Please reset your liquidity sources."),description:Oe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Oe.t("No Routes Found."),description:Oe.t("Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination.")},bridgeLimitErrors:{increaseAmount:Oe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Oe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Oe.t("High Price Impact"),title:Oe.t("Price impact is too high!"),description:Oe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Oe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Oe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Oe.t("USD Price Unknown"),title:Oe.t("USD Price Unknown, Cannot calculate Price Impact."),description:Oe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Oe.t("Confirm USD Price Unknown")}}),"errorMessages");function $p(t){return t.type===0?t.diagnosisMessage??te().noResultError.title:t.type===1?t.diagnosisMessage??te().genericServerError:""}r($p,"getQuoteErrorMessage");var xT=["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 IT(t){return typeof t=="string"?t:t instanceof Error?`${t.name} ${t.message}`:""}r(IT,"toMessage");function AT(t){let e=IT(t).toLowerCase();return!!e&&xT.some(o=>e.includes(o))}r(AT,"isModuleLoadError");function Tt(t){return AT(t)?new Error(te().moduleLoadError,{cause:t}):null}r(Tt,"tryRefineError");function Fp(t,e){return Tt(t)?.message??e}r(Fp,"tryRefineErrorMessage");function Op(t){return!!t.derivationPath}r(Op,"isStateOnDerivationPathStep");function Up(t){return!!t.namespace}r(Up,"isStateOnNamespace");var ni={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function zp(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 ni;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:ni;default:throw new Error("Action hasn't been defined.")}}r(zp,"reducer");function ln(){let{state:t,disconnect:e,connect:o}=WT(),[n,i]=LT(zp,ni),a=r(async(d,f,h)=>{i({type:"reset"});try{let g=f?.map(m=>({...m,network:void 0}));return await o(d.type,g),{status:"connected"}}catch(g){let m=Fp(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(m,{cause:g})}},"runConnect"),s=r(async(d,f)=>{let h=d.state===NT.DISCONNECTED,g=f?.forceConnectToNamespaces;if(h){let m=!!d.isHub,S=m?d.properties?.find(y=>y.name==="namespaces")?.value:d.needsNamespace,T=m?d.properties?.find(y=>y.name==="derivationPath")?.value:d.needsDerivationPath;if(g){let y=g.find(C=>!S?.data?.map(w=>w.value).includes(C));if(y)throw new Error(`One of the forced namespaces is not available in the wallet. Forced namespace: ${y}`);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(C=>({namespace:C})),{...f,disconnectOnError:!0})}if(!S?.data?.length)return await a(d,void 0,f);if(S?.data.length&&S.data.length>1)return i({type:"needsNamespace",payload:{targetWallet:d,defaultSelectedChains:f?.defaultSelectedChains}}),{status:"namespace"};if(S?.data.length===1&&S.data[0]){if(T){let y=S.data[0];return i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:y.value}}),{status:"derivation-path"}}return await a(d,S?.data?.map(y=>({namespace:y.value})),f)}}if(d.isHub&&!f?.forceConnectToNamespaces){let m=d.properties?.find(S=>S.name==="namespaces")?.value;if(m?.data.length&&m.data.length>1)return i({type:"detached",payload:{targetWallet:d,selectedNamespaces:null}}),{status:"Detached"}}return f?.disconnectIfConnected?(await u(d),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=r(async(d,f)=>{let h=!!d.isHub,g=h?d.properties?.find(C=>C.name==="namespaces")?.value:d.needsNamespace,m=h?d.properties?.find(C=>C.name==="derivationPath")?.value:d.needsDerivationPath,S=g?.selection==="single",T=f[0];if(!T)throw new Error("To confirm a namespace, you should select at least one namespace.");if(S&&m)return i({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:T}}),{status:"derivation-path"};if(!Up(n))throw new Error("Something went wrong on handling namespace. Please retry.");let y=f.map(C=>({namespace:C}));return i({type:"detached",payload:{targetWallet:d,selectedNamespaces:y??null}}),{status:"Detached"}},"handleNamespace"),l=r(async(d,f,h)=>{if(!f)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Op(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=[{namespace:n.derivationPath.namespace,derivationPath:f}],T=!!d.isHub?d.properties?.find(w=>w.name==="namespaces")?.value:d.needsNamespace,y=!!T?.data&&T.data.length>1,C=!!h?.forceConnectToNamespaces;return y&&!C?(i({type:"detached",payload:{targetWallet:d,selectedNamespaces:m??null,derivationPath:f}}),{status:"Detached"}):await a(d,m)},"handleDerivationPath"),p=r(()=>n,"getState"),u=r(async d=>{let f=t(d.type);return f.connected||f.connecting?(await e(d.type),Lo(p)?(i({type:"needsNamespace",payload:{targetWallet:d}}),{status:"namespace"}):{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:c,handleDerivationPath:l,getState:p,resetState:d=>{i(d==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}r(ln,"useStatefulConnect");import{WalletTypes as Dt}from"@rango-dev/provider-all";import{WalletState as Ci}from"@rango-dev/ui";import{useWallets as qC}from"@rango-dev/wallets-react";import{useCallback as GC,useEffect as ed}from"react";import OC,{createContext as UC,useContext as zC,useEffect as HC,useRef as QC}from"react";import{create as $C}from"zustand";import{persist as FC}from"zustand/middleware";import{allProviders as PT,WalletTypes as BT}from"@rango-dev/provider-all";var as=class{static{r(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},cn=new as;import{Provider as ss}from"@hub3js/core";import{defineVersions as Qp,pickVersion as qp}from"@hub3js/core/utils";function Gp({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let i=t.find(a=>{let s=ls(a);return s instanceof ss?s.id===n:s.config.type===n});i?o.push(i):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else n instanceof ss?o.push(Qp().version("1.0.0",n).build()):o.push(Qp().version("0.0.0",n).build())}),o}return t}r(Gp,"matchAndGenerateProviders");function ls(t){try{return qp(t,"1.0.0")[1]}catch{return qp(t,"0.0.0")[1]}}r(ls,"pickProviderVersionWithFallbackToLegacy");function ri(t){return t.map(o=>ls(o)).map(o=>o instanceof ss?o.id:o.config.type)}r(ri,"configWalletsToWalletName");function Vp(t,e){return e.find(o=>o.name===t)?.displayName}r(Vp,"getBlockchainDisplayNameFor");function Ct(t,e){return e.find(o=>o.name===t)?.shortName}r(Ct,"getBlockchainShortNameFor");function Kp(t,e){return e.find(o=>o.name===t)?.logo}r(Kp,"getBlockchainImage");function jn(t,e){return e.find(o=>o.id===t)?.title}r(jn,"getSwapperDisplayName");function Po(t,e){return e.find(o=>o.name===t)??null}r(Po,"findBlockchain");function cs(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(cs,"isTokenNative");function kt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}r(kt,"createTokenHash");function Bo(t,e){return t.addressPatterns.filter(i=>new RegExp(i).test(e)).length>0}r(Bo,"isValidTokenAddress");function ii(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}r(ii,"createTokenExplorerUrl");function Xn(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(Xn,"matchTokensFromConfigWithMeta");function ai(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(ai,"getSupportedBlockchainsFromConfig");function _T(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}r(_T,"makeProvidersOptionsFromConfig");var Yn={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/manifests/tonconnect/manifest.json"}},MT={clientUrl:void 0},DT={liquiditySources:void 0};function jp(t){let o=PT().map(a=>a()),n=ri(o);return o.filter((a,s)=>!(n[s]===BT.LEDGER_WALLET&&(!t.ledgerWallet?.apiKey||!t.ledgerWallet?.dAppIdentifier)))}r(jp,"generateProviders");var Xp=r((t,e,o)=>{let n={...Yn,...t},i=jp(n);return{config:n,iframe:MT,campaignMode:DT,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=Xn({type:"source",config:{blockchains:a.from?.blockchains,tokens:a.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}}),u=Xn({type:"destination",config:{blockchains:a.to?.blockchains,tokens:a.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:c}});cn.set("supportedSourceTokens",p),cn.set("supportedDestinationTokens",u),e({config:{...s,...a}})},updateCampaignMode:(a,s)=>{let c=o().campaignMode;e({campaignMode:{...c,[a]:s}})},updateIframe:(a,s)=>{let c=o().iframe;e({iframe:{...c,[a]:s}})},buildAndSetProviders:()=>{let{config:a}=o(),s=jp(a);e({allProviders:s})},getAvailableProviders:()=>{let{allProviders:a,config:s}=o(),c=_T(s);return Gp({allProviders:a,configWallets:s.wallets,options:c})}}},"createConfigSlice");import{TransactionType as Yp}from"rango-types";var Zp=[Yp.EVM,Yp.SOLANA],si="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as JT}from"rango-sdk";function Jp(){return process.env.REACT_APP_RANGO_API_KEY}r(Jp,"getApiKeyFromEnv");function Rp(){let t=Jp();if(t)return t;throw new Error("Ensure you have set REACT_APP_RANGO_API_KEY in your env variables.")}r(Rp,"getApiKeyFromEnvOrThrow");function eu(){return Jp()||"NOT_SET"}r(eu,"getApiKeyFromEnvOrNotSet");import{HYPERLIQUID_SIGN_NETWORK as QT,Networks as gs}from"@rango-dev/internal-blockchains";import{BlockchainCategories as qT,detectInstallLink as GT,WalletState as ut}from"@rango-dev/ui";import{legacyGetBlockChainNameFromId as VT,legacyReadAccountAddress as KT}from"@rango-dev/wallets-core/legacy";import un from"bignumber.js";import{isAddress as jT}from"ethers";import $T from"bignumber.js";var pe=new $T(0);var _o="~",tu=[];import{BlockchainCategories as us,WalletState as HT}from"@rango-dev/ui";import{TransactionType as ds}from"rango-sdk";import{UI_ID as FT}from"@rango-dev/ui";var ou="https://api.rango.exchange",nu="https://explorer.rango.exchange",wt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...FT};var ru="Roboto",ps=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function pn(t){return Array.from(new Set(t))}r(pn,"removeDuplicateFrom");function li(t,e){let o;return n;function n(...i){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...i)},e)}}r(li,"debounce");function pt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}r(pt,"containsText");function su(t,e){return t.toLowerCase()===e.toLowerCase()}r(su,"exactText");function lu(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}r(lu,"startWithText");var W=r(()=>document.getElementById(wt.SWAP_BOX_ID),"getContainer"),Mo=r(()=>document.getElementById(wt.EXPANDED_BOX_ID),"getExpanded");function cu(t,e,o){let n=!!e&&su(e,t),i=!!o&&su(o,t);return n!==i?n?-1:1:0}r(cu,"compareExactMatchText");function ms(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(ms,"compareContainsText");function fs(t,e,o){let n=!!e&&lu(e,t),i=!!o&&lu(o,t);return n!==i?n?-1:1:n&&i&&e?.length!==o?.length?e?.length-o?.length:0}r(fs,"compareStartWithText");function pu(t,e,o){if(!o)return 0;let n=cu(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let i=cu(o,t.name,e.name);if(i)return i}if(o.length>=2){let i=fs(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=ms(o,t.symbol,e.symbol);if(i)return i}if(o.length>=3){let i=fs(o,t.name,e.name);if(i)return i}if(o.length>=3){let i=ms(o,t.name,e.name);if(i!==0)return i}if(o.length>=4){let i=fs(o,t.address,e.address);if(i)return i}if(o.length>=4){let i=ms(o,t.address,e.address);if(i!==0)return i}return 0}r(pu,"compareWithSearchFor");var ci=r((t,e)=>{switch(e){case us.ALL:return!0;case us.UTXO:return t===ds.TRANSFER;case us.OTHER:return t!==ds.TRANSFER&&t!==ds.EVM;default:return t===e}},"isBlockchainTypeInCategory"),uu=r(t=>ps.find(o=>o.value===t)?.url,"getFontUrlByName");function du(t,e){let o=!!t.find(n=>n.state===HT.CONNECTED);return e===!1&&o}r(du,"isSingleWalletActive");function mu(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}r(mu,"memoizedResult");function fu(t,e){let o=new Set;return e.forEach(n=>{o.add(n.blockchain)}),t.filter(n=>o.has(n.name))}r(fu,"filterBlockchainsWithAtLeastOneToken");function gu(){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)}r(gu,"detectMobileScreens");import{BigNumber as Eu}from"bignumber.js";function hu(t){return t.replace(/^0+(?=\d)/g,"")}r(hu,"removeLeadingZeros");function yu(t){return t.replace(/^\.(\d+)/,"0.$1")}r(yu,"ensureLeadingZeroForDecimal");function Su(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}r(Su,"formatThousandsWithCommas");function Tu(t){return t.replace(/\s+/g,"-")}r(Tu,"replaceSpacesWithDash");function Cu(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}r(Cu,"stripTrailingZeros");function ku(t){return t=t.replace(/[^\d.]/g,"").replace(/\./g,(e,o,n)=>n.indexOf(".")===o?".":""),t}r(ku,"parseNumericValue");function pi(t){return/^0+(?:\.0+)?$/.test(t)}r(pi,"isZeroValue");function wu(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}r(wu,"isValidCurrencyFormat");function vu(t){return/\d+$/.test(t)}r(vu,"isColorKeyOverridden");var Zn=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 Eu(t),i=1,a=1e3;for(let s=0;s<60;s++)if(new Eu(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 ui=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"),Jn=r(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function bu(t){return pi(t)?"0":t.endsWith(".")?t.slice(0,-1):Cu(t)}r(bu,"sanitizeInputAmount");function XT(t,e){let o=t?.get("EVM");return o?.network?VT(o.network,e)??o.network:null}r(XT,"getConnectedEvmChainName");function Rn(t,e){return ZT(t,e)?ut.PARTIALLY_CONNECTED:e.connected?ut.CONNECTED:e.connecting?ut.CONNECTING:e.installed?ut.DISCONNECTED:ut.NOT_INSTALLED}r(Rn,"getWalletConnectionStatus");function xu(t,e,o,n){return o.filter(i=>!tu.includes(i)).filter(i=>{let{supportedChains:a,isContractWallet:s}=e(i),{installed:c,namespaces:l}=t(i);return s&&(!c||!!n&&XT(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:f,isHub:h}=e(i),g=pn(u.map(S=>S.type)),m=Rn(e(i),t(i));return{title:a,image:s,link:GT(c),state:m,type:i,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:f,isHub:h}})}r(xu,"mapWalletTypesToWalletInfo");function er(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}r(er,"walletAndSupportedChainsNames");function ys(t,e,o,n,i){let a=[];function s(l,p,u){if(!!!a.find(f=>f.chain===l)){let f={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(f)}}r(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=KT(l),d=c.length>0,f=c.includes(u),h=u===gs.Unknown;if(d&&!f&&!h)return;let m=u===gs.Unknown&&jT(p);if(h&&!m)return;if(o.includes(u)||m)if(i)s(u,p.toLowerCase(),i);else{let T=c.filter(C=>o.includes(C));T.forEach(C=>{s(C,p.toLowerCase())}),T.includes(QT)&&s(gs.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}r(ys,"prepareAccountsForWalletStore");function Do(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((i,a)=>{let s=i.from.blockchain,c=i.to.blockchain;if(n.add(s),i.internalSwaps){let{internalSwaps:l}=i;l.forEach((p,u)=>{let d=p.from.blockchain,f=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(f)})}e==="all"&&n.add(c)}),Array.from(n)}r(Do,"getQuoteChains");function tr(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}r(tr,"isAccountAndWalletMatched");var Iu=r(t=>{let e=Object.values(t).reduce((o,n)=>{let i=n.usdValue?hs(n.usdValue,n.decimals):pe.toFixed();return o.plus(i)},new un(pe));return YT(e.toString())},"calculateWalletUsdValue");function YT(t){let e=t.toString().split(".");return e[0]&&(e[0]=Su(e[0])),e.join(".")}r(YT,"numberWithThousandSeparator");function hs(t,e){return new un(t).shiftedBy(-e).toFixed()}r(hs,"representAmountInNumber");function fi(t){if(!t)return null;let e=hs(t.amount,t.decimals),o=t.usdValue?hs(t.usdValue,t.decimals):null,n=M(e,8,8),i=o?M(o,4,4):null;return t?{...t,amount:n,usdValue:i}:null}r(fi,"formatBalance");function Au(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new un(t.usdValue).shiftedBy(-t.decimals):pe,n=e&&e.usdValue?new un(e.usdValue).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new un(t.amount).shiftedBy(-t.decimals):pe,n=e&&e.amount?new un(e.amount).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}r(Au,"compareTokenBalance");function Kt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}r(Kt,"areTokensEqual");function Nu(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(Nu,"sortWalletsBasedOnConnectionState");function uo(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),i=t.slice(-e);return`${n}${".".repeat(o)}${i}`}r(uo,"getConciseAddress");function Wu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}r(Wu,"getAddress");var Lu=r((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function Ss(t){return t.map(e=>e.state).join("-")}r(Ss,"hashWalletsState");function Pu(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(Pu,"filterBlockchainsByWalletTypes");function Bu(t,e){return e===qT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(ci(n,e))return!0;return!1})}r(Bu,"filterWalletsByCategory");function ZT(t,e){if(!t.isHub||!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(ZT,"checkIsWalletPartiallyConnected");var Ts={API_KEY:eu()};function jt(t){return Ts[t]||""}r(jt,"getConfig");function _u(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Ts=e,Ts}r(_u,"initConfig");var Mu=20,Du=25,Cs="theme-widget",ks=r((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Kt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Kt(a,t));let i=n.isExcluded;return!i&&!o||i&&o}}}return o},"isTokenExcludedInConfig"),ws=r((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),$u=r((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var gi,dt=r(()=>gi||(gi=new JT(jt("API_KEY"),jt("BASE_URL")),gi),"httpService");import{i18n as Fu}from"@lingui/core";var hi=[.5,1,3],yi=1,dn=5,or=30,Si=0;function Ti(t,e){let o=t.map(a=>a.swapperGroup),n=[];return pn(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(c=>c.swapperGroup===a);if(s){let c=!0;o&&(c=o.some(l=>l===s.swapperGroup)),c&&s.types.map(l=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:l,selected:!e.includes(s.swapperGroup)})})}}),n}r(Ti,"getUniqueSwappersGroups");function Ou(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}r(Ou,"sortLiquiditySourcesByGroupTitle");function nt(t,e){return e?.[t]==="hidden"}r(nt,"isFeatureHidden");function mn(t,e){return e?.[t]==="enabled"}r(mn,"isRoutingEnabled");var Uu=r((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function fn(t){return t==Si?{type:"error",message:Fu.t("Slippage must be greater than or equal to 0.01")}:t>dn&&t<=or?{type:"warning",message:Fu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}r(fn,"getSlippageValidation");var zu=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=ai({config:a}),p=i;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>Zp.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return i.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:i,config:a,_customTokens:s}=e(),c=Array.from(n.values()),l=e()._blockchainsMapByName;if(!o||!o.type)return c;let p=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",d=cn.get(u);d?.length||(d=Xn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:i}}),cn.set(u,d)),d=Uu(d,s,a.features);let f=e().blockchains({type:o.type});return d.filter(g=>o.blockchain&&g.blockchain!==o.blockchain||!f.some(m=>m.name===g.blockchain)?!1:o.searchFor?!!(pt(g.symbol,o.searchFor)||pt(g.address||"",o.searchFor)||pt(g.name||"",o.searchFor)):!0).sort((g,m)=>{let S=e().isTokenPinned(g,o.type),T=e().isTokenPinned(m,o.type);if(S!==T)return S?-1:1;if(o.getBalanceFor){let I=o.getBalanceFor(g),A=o.getBalanceFor(m),E=Au(I,A);if(E!==0)return E}let y=l.get(g.blockchain),C=l.get(m.blockchain),w=cs(g,y),v=cs(m,C);if(w!==v)return w?-1:1;if(g.isPopular!==m.isPopular)return g.isPopular?-1:1;if(o.searchFor){let I=pu(g,m,o.searchFor);if(I)return I}return g.isSecondaryCoin!==m.isSecondaryCoin?g.isSecondaryCoin?1:-1:y&&C?y.sort-C.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,i=e().customTokens(),a=kt(o),s=n.get(a);return s||(s=i.find(c=>kt(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Kt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),i=n.liquiditySources?.length?n.liquiditySources:null,a=i??o.liquiditySources,s=i?!1:o.excludeLiquiditySources;return e()._swappers.filter(p=>{let u=a?.includes(p.swapperGroup);return s||!a||a.length===0?!u:u}).sort(Ou)},fetch:async()=>{try{let{routing:o}=e().config,n=mn("enableCentralizedSwappers",o),i=await dt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,c={},l=i.popularTokens,p=i.swappers.filter(d=>d.enabled);i.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&a.set(d.name,d)}),i.tokens.forEach(d=>{let f=kt(d);c[d.blockchain]||(c[d.blockchain]=[]),s.set(f,d),c[d.blockchain]?.push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c,_popularTokens:l,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as RT,Catalonia as eC,Chinese as Hu,Denmark as tC,English as oC,Finland as nC,French as rC,German as iC,Greece as aC,Hungary as sC,India as lC,Indonesian as cC,Italian as pC,Japanese as uC,Korea as dC,Lithuania as mC,Malay as fC,Netherlands as gC,Pakistan as hC,Philippines as yC,Poland as SC,Portuguese as TC,Russian as CC,SaudiArabia as kC,Serbia as wC,Slovakia as vC,SouthAfrica as EC,Spanish as bC,Swahili as xC,Swedish as IC,Thai as AC,Turkish as NC,Ukrainian as WC,Vietnamese as LC}from"@rango-dev/ui";var Qu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:EC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:kC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:RT},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:eC},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Hu},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Hu},{title:"Danish",label:"Dansk",local:"da",SVGFlag:tC},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:gC},{title:"English",label:"English",local:"en",SVGFlag:oC},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:yC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:nC},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:rC},{title:"German",label:"Deutsch",local:"de",SVGFlag:iC},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:aC},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:lC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:sC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:cC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:pC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:uC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:dC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:mC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:fC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:SC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:TC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:CC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:wC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:vC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:bC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:xC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:IC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:AC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:NC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:WC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:hC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:LC}],gn="en";var qu=r((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:yi,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],quoteTokensRate:"default",changeQuoteTokensRate:()=>t(o=>({quoteTokensRate:o.quoteTokensRate==="default"?"reversed":"default"})),addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,c)=>{let l=s===o,p=c<=9;return l&&p}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(i=>{if(n)return{disabledLiquiditySources:[]};let a=pn(o.map(s=>s.swapperGroup));return a.length===i.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(i=>i!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:i}=o,a=nt("theme",n),s=nt("language",n),c=nt("liquiditySource",n),l=i?.singleTheme,p=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...l&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||gn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||gn}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(i=>i.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,i=ai({config:o});return i.length?n.filter(a=>i.includes(a.blockchain)):n}}),"createSettingsSlice");import As from"bignumber.js";import PC from"mitt";var ge=PC(),BC={on:ge.on,off:ge.off};var Gu=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 Vu from"bignumber.js";function Xt(t){return`${t.blockchain}${_o}${t.address}${_o}${t.symbol}`}r(Xt,"createAssetKey");function Ku(t,e){return`${Xt(e)}${_o}${t}`}r(Ku,"createBalanceKey");function nr(t){let[e,o,n]=t.split(_o);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}r(nr,"extractAssetFromBalanceKey");function Es(t,e,o){return e.balances?.forEach(n=>{let i=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Xt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:i?new Vu(i??pe).multipliedBy(o[s].amount).toString():""})})}),o}r(Es,"computeNextBalancesWithNewPrices");function bs(t,e){let o={};return t.balances?.forEach(n=>{let i=Ku(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Vu(c??pe).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[i]=p}),o}r(bs,"createBalanceStateForNewAccount");function xs(t,e){for(let o in e){let n=nr(o);if(n){let i=Xt(n);t[i]||(t[i]=[]),t[i].includes(o)||(t[i]=[...t[i],o])}}return t}r(xs,"updateAggregatedBalanceStateForNewAccount");function _C(t,e){let o=nr(e);if(!o)return t;let n=Xt(o);return t[n]&&(t[n]=t[n].filter(i=>i!==e)),t}r(_C,"removeBalanceFromAggregatedBalance");function Is(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=nr(l);if(!p)return;!!n.find(d=>Ku(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=_C(a,l):s[l]&&(i[l]=s[l])}),{_balances:i,_aggregatedBalances:a}}r(Is,"computeNextStateAfterWalletBalanceRemoval");function MC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}r(MC,"matchWalletDetailsWithConnectedWallet");var DC=mu(),ju=Gu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(i=>o.find(a=>tr(a,i))?{...i,loading:!0,error:!1}:i)}))},setConnectedWalletRetrievedData:(o,n)=>{t(i=>({fetchingWallets:!1,connectedWallets:i.connectedWallets.map(a=>o.find(s=>tr(s,a))?{...a,loading:!1,error:!1,explorerUrl:MC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(i=>o.find(a=>tr(a,i))?{...i,loading:!1,error:!0}:i)}))},addConnectedWallet:(o,n,i)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>tr(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:f,blockchain:h})=>({symbol:d,address:f,blockchain:h})),walletAddress:l});if(u){let d=e()._balances,f=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let g={blockChain:h.asset.blockchain,balances:[h],address:l},m={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};Es(m,g,d);let S=bs(g,e);f=xs(f,S),d={...d,...S}}),t(h=>({_balances:{...h._balances,...d},_aggregatedBalances:f}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(i=>{let a=!!o.find(c=>c.chain===i.chain&&c.walletType!==i.walletType&&i.selected),s=!!o.find(c=>c.chain===i.chain&&c.walletType===i.walletType&&!i.selected);return a?{...i,selected:!1}:s?{...i,selected:!0}:i});t({connectedWallets:n})},newWalletConnected:async(o,n,i,a)=>{let s=o[0];s&&(ge.emit("walletEvent",{type:"connect",payload:{walletType:s.walletType,accounts:o,chain:s.chain??null,walletName:a?.walletName??s.walletType}}),e().addConnectedWallet(o,n,i),e().fetchBalances(o))},removeBalancesForWallet:(o,n)=>{let i={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Is(i,[o],n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(i=>i.walletType===o);if(ge.emit("walletEvent",{type:"disconnect",payload:{walletType:o,walletName:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let i=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:i})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let i=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(i=i.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=i.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(c=>a.includes(c.chain)?(a=a.filter(l=>l!==c.chain),{...c,selected:!0}):c);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:i=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),i&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0||!o[0])return;let i=[...new Set(o.map(l=>l.walletType))];e().setConnectedWalletAsRefetching(o);let a=o.map(l=>({address:l.address,blockchain:l.chain})),s;try{s=await dt().getWalletsDetails(a)}catch(l){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${l}`);return}let c=s.wallets;if(c){let l=e()._balances,p=e()._aggregatedBalances;c.forEach(d=>{if(d.failed)return;let f={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};Es(f,d,l);let{_balances:h,_aggregatedBalances:g}=Is(f,i,{chains:[d.blockChain]});if(p=g,l=h,!e().connectedWallets.find(S=>i.includes(S.walletType)&&S.address===d.address&&S.chain===d.blockChain))return;let m=bs(d,e);p=xs(p,m),l={...l,...m}}),t(d=>({_balances:{...d._balances,...l},_aggregatedBalances:p})),e().setConnectedWalletRetrievedData(o,c);let{retryOnFailedBalances:u=!0}=n||{};if(u){let d=c.filter(f=>f.failed).map(f=>{let h=e().connectedWallets.find(g=>g.chain===f.blockChain&&g.address)?.walletType;return h?{chain:f.blockChain,walletType:h,address:f.address}:null}).filter(f=>!!f);d.length>0&&await e().fetchMainTokensBalances(d,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),i=Xt(o),a=e()._aggregatedBalances[i]||[];if(a.length===0||!a[0])return null;let s=a[0];if(a.length===1&&n[s])return n[s];let c=n[a[0]];if(!c)return null;let l=c;return a.forEach(p=>{let u=n[p];if(!u)return;let d=new As(u.amount),f=new As(l.amount);d.isGreaterThan(f)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(_o);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>DC(()=>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=nr(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new As(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 Xu(t){return $C()(FC((...e)=>({...ju(...e),...zu(...e),...qu(...e),...Xp(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(Xu,"createAppStore");var Yu=UC(null);function k(){let t=zC(Yu);if(HC(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}r(k,"useAppStore");function Zu(t){let e=QC();return e.current||(e.current=Xu(t.config)),OC.createElement(Yu.Provider,{value:e.current},t.children)}r(Zu,"AppStoreProvider");function oe(t){ge.emit("uiEvent",t)}r(oe,"emitUiEvent");function Ju(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};oe({type:t.type,payload:n}),o||e()}r(Ju,"emitPreventableEvent");function hn(t){ge.emit("quoteEvent",t)}r(hn,"emitQuoteEvent");function Ru(t){ge.emit("walletEvent",{type:"detected",payload:t})}r(Ru,"emitWalletDetected");var td=new Set,VC=new Set([Dt.LEDGER,Dt.TREZOR,Dt.WALLET_CONNECT_2,Dt.TON_CONNECT,Dt.DEFAULT]),KC=new Set([Dt.DEFAULT,Dt.WALLET_CONNECT_2,Dt.LEDGER]);function xt(t){let{chain:e}=t||{},{getAvailableProviders:o}=k(),{state:n,getWalletInfo:i}=qC(),{handleDisconnect:a}=ln(),s=ri(o()),c=xu(n,i,s,e);c=gu()?c.filter(f=>f.showOnMobile!==!1&&n(f.type).installed):c;let l=Nu(c);ed(()=>{c.forEach(f=>{if(VC.has(f.type))return;f.state!==Ci.NOT_INSTALLED&&!td.has(f.type)&&(td.add(f.type),Ru({walletName:f.type}))})},[Ss(c)]);let p=GC(()=>{let f=c?.filter(h=>h.state===Ci.CONNECTING)||[];for(let h of f)a(h)},[Ss(c)]);ed(()=>()=>{p()},[]);let u=r(f=>{let h=f.find(m=>m.type===Dt.DEFAULT);return!h||h.state===Ci.NOT_INSTALLED?!1:f.filter(m=>m.state!=Ci.NOT_INSTALLED&&!KC.has(m.type)&&i(m.type).supportedChains.filter(S=>S.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=r(f=>f==Dt.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(f=>!d(f.type)),terminateConnectingWallets:p}}r(xt,"useWalletList");import{Modal as ZC}from"@rango-dev/ui";import JC from"react";import{create as YC}from"zustand";var od="rango-widget";var rr=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(od),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 XC=r(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),mo=XC;var re=mo(YC()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,showCompactTokenSelector:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:i}=e();!i&&n?t({showActivateTabModal:!0}):(i||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})},setShowCompactTokenSelector:o=>{t({showCompactTokenSelector:o})}}))),Fo=new rr({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 JC.createElement(ZC,{hasWatermark:e==="FULL",...t},t.children)}r(ie,"WatermarkedModal");import{i18n as Tn}from"@lingui/core";import{getSupportedChainsFromNamespace as mk}from"@rango-dev/internal-blockchains";import{Alert as fk,Button as gk,Divider as Cn,Image as hk,MessageBox as yk,RadioRoot as Sk,WalletImageContainer as Tk}from"@rango-dev/ui";import le,{useEffect as Ck,useMemo as kk,useState as wk}from"react";import{i18n as ok}from"@lingui/core";import{Typography as pd}from"@rango-dev/ui";import yn from"react";function ki(t,e){return t.find(o=>o.name===e)?.logo}r(ki,"getBlockchainLogo");import{darkTheme as RC,Image as ek,styled as Yt,Typography as tk}from"@rango-dev/ui";var wi=Yt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${RC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),vi=Yt("div",{display:"flex",gap:"$8",alignItems:"center"}),rd=Yt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),id=Yt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),ad=Yt("div",{display:"flex",gap:"$6",alignItems:"center"}),sd=Yt("div",{paddingLeft:"48px"}),ld=Yt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),cd=Yt(tk,{maxWidth:"100px",whiteSpace:"nowrap"}),Ei=Yt(ek,{variants:{disabled:{true:{opacity:"0.5"}}}});function bi(t){let{namespace:e}=t,o=k().blockchains();return yn.createElement(wi,{unsupported:!0},yn.createElement(vi,null,yn.createElement(Ei,{src:ki(o,e.id),size:40,disabled:!0}),yn.createElement(id,null,yn.createElement(pd,{variant:"label",size:"large"},e.label),yn.createElement(pd,{variant:"body",size:"xsmall"},ok.t("(Currently not supported)")))))}r(bi,"NamespaceUnsupportedItem");import{Checkbox as pk,Radio as uk}from"@rango-dev/ui";import Ps from"react";import{i18n as Ls}from"@lingui/core";import{getSupportedChainsFromNamespace as rk}from"@rango-dev/internal-blockchains";import{ChevronDownIcon as ik,ChevronUpIcon as ak,Divider as sk,Typography as ir}from"@rango-dev/ui";import We,{useEffect as lk,useState as ck}from"react";import{Image as dd,Tooltip as md,Typography as nk}from"@rango-dev/ui";import $t from"react";import{styled as ud}from"@rango-dev/ui";var Ns=ud("div",{display:"flex",alignItems:"center",padding:0,margin:0}),xi=ud("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 Ws=3;function fd(t){let{chains:e}=t;return $t.createElement(Ns,{id:"widget-supported-chains-container"},e.slice(0,Ws).map((o,n)=>$t.createElement(md,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},$t.createElement(xi,{firstItem:n===0},$t.createElement(dd,{src:o.logo,size:15})))),e.length>Ws&&$t.createElement(md,{container:W(),side:"bottom",align:"start",sideOffset:4,content:$t.createElement(Ns,null,e.map((o,n)=>$t.createElement(xi,{key:o.name,firstItem:n===0},$t.createElement(dd,{src:o.logo,size:15}))))},$t.createElement(xi,null,$t.createElement(nk,{variant:"body",size:"xsmall"},"+",e.length-Ws))))}r(fd,"SupportedChainsList");function Oo(t){let{namespace:e,error:o,suffix:n,connected:i,address:a,onClick:s}=t,[c,l]=ck(!1),p=k().blockchains();lk(()=>l(!1),[o]);let u=rk(e,p),d=!o&&!i&&u.length>1;return We.createElement(wi,{hasError:!!o,clickable:!!s,onClick:s},We.createElement(vi,null,We.createElement(Ei,{src:ki(p,e.id),size:40}),We.createElement(rd,{showSupportedChains:d||i||!!o},We.createElement(ad,null,We.createElement(ir,{variant:"label",size:"large"},e.label),i&&We.createElement(ir,{variant:"body",size:"small",color:"success500"},Ls.t("Connected")),!!o&&We.createElement(ir,{variant:"body",size:"small",color:"error500"},Ls.t("Connection failed"))),d&&We.createElement(fd,{chains:u}),i&&We.createElement(cd,{variant:"body",size:"small",color:"neutral700"},a),o&&We.createElement(ld,{onClick:()=>l(f=>!f)},We.createElement(ir,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},Ls.t("See why")),c?We.createElement(ak,{size:12,color:"gray"}):We.createElement(ik,{size:12,color:"gray"}))),n),!!o&&c&&We.createElement(We.Fragment,null,We.createElement(sk,{size:4}),We.createElement(sd,null,We.createElement(ir,{variant:"body",size:"small",color:"neutral700"},o))))}r(Oo,"NamespaceItem");function gd(t){let{onClick:e,type:o,namespace:n}=t;return Ps.createElement(Oo,{namespace:n,onClick:e,suffix:o==="radio"?Ps.createElement(uk,{value:n.value}):Ps.createElement(pk,{checked:t.value})})}r(gd,"NamespaceListItem");import{Button as dk,styled as hd}from"@rango-dev/ui";var Ii=hd("ul",{padding:0,paddingBottom:"$20",margin:0}),Sn=hd(dk,{minHeight:"$40"});function ar(t){let{targetWallet:e}=t.value,o=e.properties?.find(m=>m.name==="namespaces"),n=e.isHub,i=e.isHub?o?.value.selection==="single":e.needsNamespace?.selection==="single",a=n?o?.value:e.needsNamespace,s=e.image,c=k().blockchains(),[l,p]=wk([]),u=kk(()=>a?.data.filter(m=>!m.unsupported),[e?.type]),d=r(m=>{p(i?[m]:S=>S.includes(m)?S.filter(T=>T!==m):S.concat(m))},"onSelect"),f=u?.length===l.length,h=r(()=>{if(i)throw new Error("onSelectAll should not be called on single selection mode.");f?p([]):u&&p(u.map(m=>m.value))},"onSelectAll"),g=r(m=>i?le.createElement(Sk,{value:l?.[0]},m):le.createElement(le.Fragment,null,m),"wrapRadioRoot");return Ck(()=>{if(!i&&u)if(t.value.defaultSelectedChains?.length){let m=u.filter(S=>mk(S,c).some(T=>t.value.defaultSelectedChains?.includes(T.name)));p(m.map(S=>S.value))}else p(u.map(m=>m.value))},[]),le.createElement(le.Fragment,null,le.createElement(yk,{type:"info",title:Tn.t("Connect {wallet}",{wallet:e.title}),description:Tn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(Tk,null,le.createElement(hk,{src:s,size:45}))}),i?le.createElement(le.Fragment,null,le.createElement(Cn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(fk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:Tn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(gk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:h},f?Tn.t("Deselect all"):Tn.t("Select all")),le.createElement(Cn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(Ii,null,g(le.createElement(le.Fragment,null,a?.data.map((m,S,T)=>le.createElement(le.Fragment,{key:m.id},m.unsupported?le.createElement(bi,{namespace:m}):le.createElement(gd,{value:l.includes(m.value),namespace:m,type:i?"radio":"checkbox",onClick:()=>d(m.value)}),S!==T.length-1&&le.createElement(Cn,{size:10})))))),le.createElement(Cn,{size:20}),le.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!l.length,onClick:()=>t.onConfirm(l)},Tn.t("Connect")))}r(ar,"Namespaces");import{i18n as sr}from"@lingui/core";import{Alert as Nk,Button as Wk,Divider as kn,Image as Lk,MessageBox as Pk,WalletImageContainer as Bk}from"@rango-dev/ui";import{useWallets as _k}from"@rango-dev/wallets-react";import me from"react";import{styled as vk}from"@rango-dev/ui";var yd=vk("div",{display:"flex",justifyContent:"end"});import{i18n as Bs}from"@lingui/core";import{Button as Ek,Spinner as bk}from"@rango-dev/ui";import _s,{useLayoutEffect as xk,useRef as Ik,useState as Ak}from"react";function Sd(t){let{namespace:e,initialConnect:o,disabled:n,state:i,handleConnect:a,handleDisconnect:s}=t,[c,l]=Ak(null),p=Ik(!1);xk(()=>{o&&!p.current&&u()},[]);let u=r(async g=>{try{p.current=!0,await a(g)}catch(m){l(Tt(m)??m)}finally{p.current=!1}},"handleConnectNamespace"),d=r(async()=>{l(null),i.connected?await s():u({shouldAskForDerivationPath:!0})},"handleButtonClick"),f=r(()=>{let g=i.accounts?.[0]?.split(":"),m=g?.[g.length-1];return!i.connected||!m?null:uo(m)},"getConnectedAddress"),h=r(()=>i.connected?Bs.t("Disconnect"):c?Bs.t("Try again"):Bs.t("Connect"),"getButtonText");return _s.createElement(Oo,{namespace:e,connected:i.connected,error:c?.message,address:f(),suffix:i.connecting?_s.createElement(bk,{color:"info"}):_s.createElement(Ek,{id:"widget-name-space-connect-btn",variant:"ghost",type:i.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}r(Sd,"NamespaceDetachedItem");function lr(t){let{value:e,selectedNamespaces:o,onConfirm:n,confirmText:i=sr.t("Done"),onDisconnectWallet:a,navigateToDerivationPath:s}=t,{targetWallet:c}=e,{connect:l,disconnect:p,state:u}=_k(),d=c.type,f=u(d),h=c.properties?.find(w=>w.name==="namespaces"),g=c.properties?.find(w=>w.name==="derivationPath"),m=h?.value.selection==="single",S=r(async(w,v)=>{m&&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(()=>m?me.createElement(me.Fragment,null,me.createElement(kn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(Nk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:sr.t("This wallet can only connect to one chain at a time.")}),me.createElement(kn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(kn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(yd,null,me.createElement(Wk,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:f.connecting||!f.connected,onClick:a},sr.t("Disconnect wallet"))),me.createElement(kn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),C=r(w=>{if(w.unsupported)return me.createElement(bi,{namespace:w});let v=o?.find(E=>E.namespace===w.value),I=f.namespaces?.get(w.value);if(!I)throw new Error(`State for ${w.value} was not found!`);let A=m&&f.connecting;return me.createElement(Sd,{namespace:w,initialConnect:!!v,disabled:A,state:I,handleConnect:async E=>S(w.value,{derivationPath:v?.derivationPath,shouldAskForDerivationPath:E?.shouldAskForDerivationPath}),handleDisconnect:async()=>T(w.value)})},"renderNamespaceItem");return me.createElement(me.Fragment,null,me.createElement(Pk,{type:"info",title:sr.t("Connect {wallet}",{wallet:c.title}),description:sr.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:me.createElement(Bk,null,me.createElement(Lk,{src:c.image,size:45}))}),y(),me.createElement(Ii,{id:"widget-detached-namespace-list"},c.needsNamespace?.data.map((w,v,I)=>me.createElement(me.Fragment,{key:w.id},C(w),v!==I.length-1&&me.createElement(kn,{size:10})))),me.createElement(kn,{size:20}),me.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},i))}r(lr,"Detached");import{i18n as wn}from"@lingui/core";import{Divider as $k,Image as Fk,MessageBox as Ok,Select as Uk,TextField as zk}from"@rango-dev/ui";import{useWallets as Hk}from"@rango-dev/wallets-react";import It,{useEffect as Qk,useMemo as qk,useState as kd}from"react";var Ai={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Td(t,e){let o=t.filter(n=>n.namespace===e);return o.length?[...o,Ai]:[]}r(Td,"getDerivationPaths");import{Button as Mk,styled as Ms,Typography as Dk}from"@rango-dev/ui";var Cd=Ms("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Ds=Ms(Dk,{paddingLeft:"$10"}),$s={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},wM=Ms(Mk,{minHeight:"$40"});var wd="0";function cr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:i}=t.value,{getWalletInfo:a}=Hk(),[s,c]=kd(null),[l,p]=kd(wd),u=s===Ai.id,d=qk(()=>Td(a(i).needsDerivationPath?.data??[],o),[i,o]),f=r(({value:g})=>{let m=d?.find(S=>S.id===g);m&&(s===Ai.id&&Number.isNaN(Number(l))&&p(wd),c(m.id))},"handleDerivationPathItemClick"),h=r(()=>{let g=d.find(m=>m.id===s);if(g)e(g.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return Qk(()=>{c(d[0]?.id||null)},[d]),It.createElement(It.Fragment,null,It.createElement(Ok,{type:"info",title:wn.t("Select Derivation Path"),description:wn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:i}}),icon:It.createElement(Fk,{src:n,size:45})}),It.createElement(Cd,{className:"_derivation_path_inputs_container"},It.createElement(Ds,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},wn.t("Choose Derivation Path Template")),It.createElement(Uk,{id:"widget-derivation-path-template-select",value:s||"",options:d.map(g=>({value:g.id,label:g.label})),variant:"filled",handleItemClick:f,styles:{trigger:$s}}),It.createElement($k,{size:20}),It.createElement(Ds,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},u?wn.t("Enter Path"):wn.t("Enter Index")),It.createElement(zk,{id:"widget-derivation-path-template-input",type:u?"text":"number",variant:"contained",value:l,onChange:g=>p(g.target.value),style:$s})),It.createElement(Sn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!d||!s||!l},wn.t("Confirm")))}r(cr,"DerivationPath");import{i18n as vn}from"@lingui/core";import{Image as Kk,MessageBox as Os,WalletImageContainer as jk,WalletState as Xk}from"@rango-dev/ui";import{useWallets as Yk}from"@rango-dev/wallets-react";import Uo from"react";import{keyframes as Gk,styled as Fs}from"@rango-dev/ui";var _M=Fs("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),vd=Fs("div",{position:"relative"}),Vk=Gk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Ed=Fs("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Vk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function Us(t){let{wallet:e,error:o}=t,{type:n,image:i}=e,{state:a,getWalletInfo:s}=Yk();return Rn(s(n),a(n))===Xk.CONNECTED?Uo.createElement(Os,{type:"success",title:vn.t("Wallet Connected"),description:vn.t("Your wallet is connected, you can use it to swap.")}):o?Uo.createElement(Os,{type:"error",title:vn.t("Failed to Connect"),description:o||vn.t("Your wallet is not connected. Please try again.")}):Uo.createElement(Os,{type:"loading",title:vn.t("Connecting to your wallet"),description:vn.t("Click connect in your wallet popup."),icon:Uo.createElement(vd,null,Uo.createElement(jk,null,Uo.createElement(Kk,{src:i,size:45})),Uo.createElement(Ed,null))})}r(Us,"ConnectStatus");function bd(t,e){return t().status==="init"&&!!e}r(bd,"isOnStatus");function pr(t){return t().status==="namespace"}r(pr,"isOnNamespace");function ur(t){return t().status==="derivationPath"}r(ur,"isOnDerivationPath");function Lo(t){return t().status==="detached"}r(Lo,"isOnDetached");var ew=3e3,tw=300;function dr(t){let e=Rk(),[o,n]=xd(!1),[i,a]=xd(),s=r(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=xt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:f,handleDisconnect:h}=ln(),g=r(v=>{u(t.wallet,v).then(C).catch(s)},"handleConfirmNamespaces"),m=r(()=>{T()},"handleDetachedConfirm"),S=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(C).catch(s)},"handleDerivationPathConfirm"),T=r(()=>{n(!1)},"handleClosingModal"),y=r(()=>{a(void 0),f(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),C=r((v,I)=>{let A=v.status==="connected",E=["disconnected","disconnected-unhandled"].includes(v.status);A?(t.onConnect?.(),I||(e.current=setTimeout(T,ew))):E&&T()},"afterConnected"),w=r(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return Jk(()=>{if(t.wallet){y();let v=!1,I=!0;r(()=>{setTimeout(()=>{I=!1,v||n(!0)},tw)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","Detached","derivation-path"].includes(E.status)||(v=!0),C(E,I)}).catch(s)}},[t.wallet]),fo.createElement(ie,{id:t.id,open:o,onClose:T,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},bd(d,t.wallet)&&fo.createElement(fo.Fragment,null,fo.createElement(Us,{wallet:{type:t.wallet.type,image:t.wallet.image},error:i}),fo.createElement(Zk,{direction:"vertical",size:32})),pr(d)&&fo.createElement(ar,{onConfirm:g,value:d().namespace}),ur(d)&&fo.createElement(cr,{onConfirm:S,value:d().derivationPath}),Lo(d)&&fo.createElement(lr,{onConfirm:m,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}r(dr,"StatefulConnectModal");import ns from"react";import ow,{Fragment as nw}from"react";import{MemoryRouter as rw,useInRouterContext as iw}from"react-router";function Ni({children:t}){let o=iw()?nw:rw;return ow.createElement(o,null,t)}r(Ni,"AppRouter");import{I18nManager as eW}from"@rango-dev/ui";import Pp from"react";import He from"react";import{useRoutes as P0}from"react-router-dom";var $={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as bn,useRef as Di}from"react";import at from"bignumber.js";import{create as nm}from"zustand";import{subscribeWithSelector as rm}from"zustand/middleware";import{createContext as aw,useContext as sw}from"react";var Id=aw({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=sw(Id);return{swapMode:t,isMultiMode:e}}r(rt,"useSwapMode");import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as pw,RouteEventType as zD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as mr}from"rango-types";import{i18n as Wi}from"@lingui/core";var zo=r(()=>({connectWallet:Wi.t("Connect Wallet"),swap:Wi.t("Swap"),swapAnyway:Wi.t("Swap anyway"),ethWarning:Wi.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function zs(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(zs,"getFeeLabel");var Hs=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],Ad=100,Nd=30,Wd=15,Ld=60;var Pd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Bd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as cw}from"@rango-dev/queue-manager-rango-preset";import ID from"bignumber.js";function Md(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(Md,"getRequiredBalanceOfWallet");function Jt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}r(Jt,"getPriceImpactLevel");function Li(t,e,o){let n=t.steps[0],i=t.steps[t.steps.length-1],a=cw(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(Li,"createRetryQuote");function En(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:i}=t,a=Ho(o),s=it(o);if(o&&a&&s){let p=Zt(a.toString(),s.toString());if(!!p&&Ud(a,p)){let d=Bi(o?.swaps,n),f=Jt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:f}}}if(e&&Qd(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Zt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=_i(o.swaps),l=i>dn;if(Hd(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<i)return{type:3,slippage:i.toString()}}else return{type:2,recommendedSlippages:zd(o,i),minRequiredSlippage:c};return null}r(En,"generateQuoteWarnings");function Dd(t){return![4].includes(t.type)}r(Dd,"isQuoteWarningConfirmationRequired");function Zt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Qs(t.toString(),e.toString());return n&&n<0?n:null}r(Zt,"getPriceImpact");var $d=r(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),Pi=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"),Fd=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"),Od=r(t=>{let e=r((o,n)=>{let i=Hs.indexOf(o.value),a=Hs.indexOf(n.value);return i!==-1&&a!==-1?i-a:i!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Ud(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return Pd.some(({threshold:n,minInput:i})=>o<=n&&t.gte(new Ge(i)))}r(Ud,"hasHighValueLoss");function qd(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(qd,"hasLimitError");function Gd(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(Gd,"getLimitErrorMessage");function Vd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:i,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:zo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!i||i==="0"?{title:zo().swap,action:"confirm-swap",disabled:!0}:s?{title:zo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:zo().ethWarning,action:"confirm-warning",disabled:!1}:{title:zo().swap,action:"confirm-swap",disabled:!1}:{title:zo().connectWallet,action:"connect-wallet",disabled:!1}}r(Vd,"getSwapButtonState");function qs(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(pe))&&e&&e!=="0"&&n!==0)}r(qs,"canComputePriceImpact");function Gs(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(Gs,"getUsdFeeOfStep");function Bi(t,e){return t.reduce((o,n)=>o.plus(Gs(n,e)),pe)}r(Bi,"getTotalFeeInUsd");function Vs(t){let e=pe,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}r(Vs,"getUsdFee");function Ks(t){return t.reduce((e,o)=>e.plus(Vs(o)),pe)}r(Ks,"getTotalFeesInUsd");function Kd(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(Kd,"getFeesGroup");function jd(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(jd,"checkSlippageErrors");function zd(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(zd,"checkSlippageWarnings");function _i(t){return t.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}r(_i,"getMinRequiredSlippage");function Hd(t,e){return e?parseFloat(t)>=parseFloat(e):!0}r(Hd,"hasProperSlippage");function Xd(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:f,destination:h,contractCall:g}=t,m=a?.reduce((y,C)=>(y[C.chain]=C.address,y),{}),S=[];return i?.forEach(y=>{S.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:d??void 0,affiliateWallets:f??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:S,selectedWallets:m??{},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(Xd,"createQuoteRequestBody");function Yd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}r(Yd,"getWalletsForNewSwap");function Ho(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}r(Ho,"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 Qs(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(Ad).toNumber()}r(Qs,"getPercentageChange");function Qd(t,e){let o=Ho(t),n=it(t),i=it(e);if(!o||!n||!i)return!1;let a=Qs(n.toString(),i.toString());return Bd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}r(Qd,"isOutputAmountChangedExcessively");function Zd(t,e,o){let n=t.validationStatus,i=Do({filter:"required",quote:t});return e.sort((s,c)=>i.indexOf(s.chain)-i.indexOf(c.chain)).flatMap(s=>Md(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(Zd,"generateBalanceWarnings");function fr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==mr.NetworkChanged}r(fr,"isNetworkStatusInWarningState");function Jd(t,e,o){let n="bellow button or",i=t.extraMessage,a=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(n)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(n,"")),fr(e)){i=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?pw(t,e):null)?.walletType,d=u?o?.(u)?.name:null;switch(e?.networkStatus){case mr.WaitingForConnectingWallet:i=d?vt.t("Connect {wallet}",{wallet:d}):i;break;case mr.WaitingForQueue:i=i||vt.t("Waiting for other running tasks to be finished");break;case mr.WaitingForNetworkChange:i=i||vt.t("Waiting for changing wallet network");break;case mr.NetworkChangeFailed:i=i||vt.t("The network switch could not be completed. Please try again, or switch the network manually in your wallet.");break;default:i=i||"";break}}a=a||"",i=i||"";let c=Tt(i)??Tt(a);c&&(a=[i,a].filter(Boolean).join(`
2
+ `),i=c.message);let l=i?.indexOf("code")!==-1&&i?.indexOf("reason")!==-1;return{shortMessage:i,detailedMessage:{content:a,long:l}}}r(Jd,"getSwapMessages");function Rd(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(Rd,"getLastConvertedTokenInFailedSwap");function em(t){return t.status==="failed"}r(em,"shouldRetrySwap");function tm(t,e,o,n,i,a){if(!n||t)return!0;let s=Do({filter:"all",quote:n}),c=Do({filter:"required",quote:n}),l=s.every(d=>i.some(f=>f.chain===d)),p=c.every(d=>i.some(f=>f.chain===d)),u=o&&a?Bo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}r(tm,"isConfirmSwapDisabled");function om(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}r(om,"isTokensIdentical");var Mi=r((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),im=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 Jn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=Ho(e)??pe,i=it(e)??pe),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:i,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new at(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new at(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new at(0)}})},setFromToken:e=>t(o=>({fromToken:e.token,...e.token&&{fromBlockchain:e.meta.blockchains.find(n=>n.name===e.token.blockchain)??null},...!!o.inputAmount&&{inputUsdValue:Mi(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{selectedQuote:null,toToken:null,outputAmount:null,outputUsdValue:new at(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),sanitizeInputAmount:e=>{let o=bu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=ku(e);pi(e)||(o=hu(o),o=yu(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new at(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Mi(n.fromToken,o)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:i,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Mi(n??null,s),outputUsdValue:new at(0),toBlockchain:i,toToken:a,selectedQuote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:e.toToken?Mi(e.toToken,e.outputAmount?.toString()||""):new at(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new at(0),inputUsdValue:new at(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new at(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})}),"initializer"),am=nm()(rm(im)),sm=nm()(rm(im)),uw=mo(am),dw=mo(sm);function z(){let{swapMode:t}=rt();return mo(t==="refuel"?sm:am)}r(z,"useQuoteStore");var lm=r((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ge.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&ge.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})},"subscribeCallback"),cm=uw.subscribe(lm),pm=dw.subscribe(lm);function um(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:i,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=k().config,d=k().fetchStatus,f=k().blockchains(),{findToken:h}=k(),{setAffiliateRef:g,setAffiliatePercent:m,setAffiliateWallets:S}=k(),T=u?.from?.tokens,y=u?.from?.blockchains,C=u?.to?.tokens,w=u?.to?.blockchains,v=Di(void 0),I=Di(void 0),A=Di(void 0),E=Di(void 0);bn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),bn(()=>{if(d==="success"){i();let x=f.find(N=>N.name===u?.from?.blockchain),b=u?.from?.token,P=b&&h(b);(x||!x&&A.current)&&n(x??null),P?a({token:P,meta:{blockchains:f}}):!P&&v.current&&a({token:null}),A.current=u?.from?.blockchain,v.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,d]),bn(()=>{ks(s,T)&&a({token:null}),ws(l,y)&&n(null)},[T,y]),bn(()=>{ks(c,C)&&a({token:null}),ws(p,w)&&o(null)},[C,w]),bn(()=>{if(d==="success"){i();let x=f.find(N=>N.name===u?.to?.blockchain),b=u?.to?.token,P=b&&h(b);(x||!x&&E.current)&&o(x??null),P?e({token:P,meta:{blockchains:f}}):!P&&I.current&&e({token:null}),E.current=u?.to?.blockchain,I.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),bn(()=>{g(u?.affiliate?.ref??null),m(u?.affiliate?.percent??null),S(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}r(um,"useSyncStoresWithConfig");import{useEffect as Ys,useRef as mw}from"react";import{useInRouterContext as fw,useLocation as gw,useSearchParams as hw}from"react-router-dom";function js(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}r(js,"convertTokenSearchParamToAsset");function Xs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}r(Xs,"tokenToSearchParam");function Js(){let t=gw(),[e,o]=hw(),{fromBlockchain:n,toBlockchain:i,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:f}=z()(),h=k().fetchStatus,g=k().blockchains(),m=fw(),{updateIframe:S,updateCampaignMode:T}=k(),y=k().isInCampaignMode(),C=mw(),{findToken:w}=k(),v=r(()=>{let A={};for(let[L,Z]of e.entries())(L.startsWith("utm_")||L.startsWith("privy_"))&&(A[L]=Z);let E=e.get("fromAmount"),x=e.get("fromBlockchain"),b=e.get("fromToken"),P=e.get("toBlockchain"),N=e.get("toToken"),O=e.get("autoConnect"),q=e.get("clientUrl"),j=e.get("liquiditySources"),ee=e.get("blockchain");return{fromAmount:E,fromBlockchain:x,fromToken:b,toBlockchain:P,toToken:N,autoConnect:O,clientUrl:q,liquiditySources:j,extraQueryParams:A,blockchain:ee}},"getUrlSearchParams"),I=r(A=>{for(let E in A)A[E]||delete A[E];o(A,{replace:!0})},"updateUrlSearchParams");Ys(()=>{let{autoConnect:A,clientUrl:E,extraQueryParams:x,blockchain:b}=v();m&&h==="success"&&I({fromBlockchain:n?.name,fromToken:Xs(a),toBlockchain:i?.name,toToken:Xs(s),fromAmount:c,autoConnect:A??void 0,clientUrl:E??void 0,blockchain:b??void 0,liquiditySources:y?C.current:void 0,...x})},[t.pathname,c,n,a,i,s,y,h]),Ys(()=>{if(!m)return;let A=v();if(!C.current&&A.liquiditySources&&(C.current=A.liquiditySources),A.fromAmount&&f(A.fromAmount),h==="success"){let E=g.find(q=>q.name===A.fromBlockchain),x=A.fromToken&&E&&js(A.fromToken,E),b=x?w(x):void 0,P=g.find(q=>q.name===A.toBlockchain),N=A.toToken&&P&&js(A.toToken,P),O=N?w(N):void 0;E&&(l(E),b&&u({token:b,meta:{blockchains:g}})),P&&(p(P),O&&d({token:O,meta:{blockchains:g}}))}},[h]),Ys(()=>{let{clientUrl:A,liquiditySources:E}=v();S("clientUrl",A||void 0),T("liquiditySources",E?.split(",")??void 0)},[])}r(Js,"useSyncUrlAndStore");import{i18n as An}from"@lingui/core";import{Alert as $v,Button as Fv,darkTheme as Ov,Divider as Al,DoneIcon as Uv,styled as zv,TextField as Hv,Typography as Qv}from"@rango-dev/ui";import Ke,{useState as qv}from"react";import{useNavigate as Gv,useSearchParams as Vv}from"react-router-dom";import{ChevronRightIcon as yw,Divider as hm,Image as Sw,Typography as ym}from"@rango-dev/ui";import At from"react";import{darkTheme as dm,styled as Rs}from"@rango-dev/ui";var mm=Rs("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${dm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${dm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),fm=Rs("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),gm=Rs("div",{display:"flex"});function el(t){let{onClick:e,value:o,title:n,hasLogo:i,placeholder:a,disabled:s}=t;return At.createElement(fm,null,At.createElement(ym,{size:"large",variant:"label"},n),At.createElement(hm,{size:10}),At.createElement(mm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},At.createElement(gm,null,i&&At.createElement(At.Fragment,null,At.createElement(Sw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),At.createElement(hm,{size:4,direction:"horizontal"})),At.createElement(ym,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),At.createElement(yw,{size:12,color:"black"})))}r(el,"BlockchainSelectorButton");import{i18n as rl}from"@lingui/core";import{Button as xw,Divider as wm,MessageBox as Iw}from"@rango-dev/ui";import go,{useEffect as vm,useState as il}from"react";import{i18n as $i}from"@lingui/core";import{Divider as Qo,ExternalLinkIcon as kw,Image as ww,InfoIcon as vw,Tooltip as Ew,Typography as hr}from"@rango-dev/ui";import fe from"react";var Sm="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as Tw,darkTheme as xn,styled as gr,Typography as Cw}from"@rango-dev/ui";var tl=gr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),Tm=gr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${xn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}}}),ol=gr(Tw,{minHeight:"$40"}),Cm=gr(Cw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),km=gr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var bw=9;function nl(t){let{open:e,onClose:o,token:n,onExit:i,onSubmitClick:a,blockchain:s}=t,c=n.address?ii({contractAddress:n.address,blockchainMeta:s}):void 0,l=r(()=>window.open(Sm,"_blank"),"onClickLearnMore");return fe.createElement(ie,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:i,container:W()},fe.createElement(Tm,null,fe.createElement(ww,{src:n.image===""?si:n.image,size:45,type:"circular"}),fe.createElement(Qo,{size:4}),fe.createElement(km,null,fe.createElement(Cm,{variant:"title",size:"medium"},n.symbol),n.symbol.length>bw&&fe.createElement(Ew,{content:n.symbol,container:W()},fe.createElement(vw,{size:12,color:"gray"}))),fe.createElement(hr,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),fe.createElement(Qo,{size:4}),fe.createElement(hr,{variant:"body",size:"medium"},c?fe.createElement(tl,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(kw,{size:12,color:"gray"})):fe.createElement(tl,null,n.address)),fe.createElement(Qo,{size:4}),n.coinSource&&fe.createElement(hr,{className:"_coin-source",variant:"body",size:"xsmall"},$i.t("via")," ",fe.createElement(hr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Qo,{size:"32"}),fe.createElement(hr,{size:"medium",variant:"body",className:"_custom-token-description"},$i.t("This token is not part of our verified token list. please verify its source and make sure to understand all associated risks before proceeding."))),fe.createElement(Qo,{size:40}),fe.createElement(Qo,{size:10}),fe.createElement(ol,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},$i.t("Import Anyway")),fe.createElement(Qo,{size:10}),fe.createElement(ol,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},$i.t("Learn More")))}r(nl,"CustomTokenModal");function yr(t){let{token:e,blockchain:o,error:n,address:i,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=k(),[d,f]=il(!1),[h,g]=il(!1),[m,S]=il(!1),T=r(()=>{o&&a?.({blockchain:o.name,tokenAddress:i})},"getCustomToken"),y=r(()=>{n?.type!=="network-error"&&s?.(),f(!1)},"closeErrorModal"),C=r(()=>{S(!0),y()},"handleErrorModalButtonClick"),w=r(()=>{m&&n?.type==="network-error"&&(S(!1),T()),l()},"handleExit"),v=r(()=>{e&&(u(e),c())},"handleSubmit");return vm(()=>{n&&f(!0)},[n]),vm(()=>{o&&e&&g(!0)},[o,e]),go.createElement(go.Fragment,null,go.createElement(ie,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},go.createElement(Iw,{title:n?.title??"",type:"error",description:n?.message||rl.t("Failed Network, Please retry.")},go.createElement(wm,{size:40}),go.createElement(wm,{size:10}),go.createElement(xw,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:C},n?.type==="network-error"?rl.t("Retry"):rl.t("Add another custom token")))),o&&e&&go.createElement(nl,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}r(yr,"ImportCustomToken");import{useManager as Lv}from"@rango-dev/queue-manager-react";import{BottomLogo as Pv,Divider as nf,Header as Bv}from"@rango-dev/ui";import Pe,{useEffect as Ki,useLayoutEffect as _v,useRef as rf,useState as af}from"react";import{useRef as Aw}from"react";function Fi(){return window.self!==window.top}r(Fi,"isAppLoadedIntoIframe");function al(){let t=Aw(null),{iframe:e}=k(),o=Fi()&&e.clientUrl,n=r(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:r(s=>{t.current=new ResizeObserver(c=>{for(let l of c)n({type:"widget_height",data:{height:l.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:r(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}r(al,"useIframe");import{useNavigate as Nw}from"react-router-dom";function Ve(){let t=Nw();return()=>t(-1)}r(Ve,"useNavigateBack");import{createTheme as ml,darkTheme as Hw,lightTheme as Qw}from"@rango-dev/ui";import{useEffect as qw,useState as Gw}from"react";import{theme as Uw,darkColors as zw}from"@rango-dev/ui";import ul from"react";var Oi=16,Ui=255,Em=.11;function Ww(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,i){return n+i+i},"")}`:`#${t}`}r(Ww,"expandShortHexColor");function Lw(t,e){return t.padStart(e,"0")}r(Lw,"pad");function sl(t){let e=Math.min(Math.max(Math.round(t),0),Ui);return Lw(e.toString(Oi),2)}r(sl,"intToHex");function Pw(t){return`#${sl(t.red)}${sl(t.green)}${sl(t.blue)}`}r(Pw,"rgbToHex");function Bw(t){let e=parseInt(t.slice(1,3),Oi),o=parseInt(t.slice(3,5),Oi),n=parseInt(t.slice(5,7),Oi);return{red:e,green:o,blue:n}}r(Bw,"hexToRGB");function _w(t,e){let o=1-Em*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}r(_w,"generateShade");function Mw(t,e){let o=Em*e;return{red:t.red+(Ui-t.red)*o,green:t.green+(Ui-t.green)*o,blue:t.blue+(Ui-t.blue)*o}}r(Mw,"generateTint");function Dw(t){return bm(t,_w)}r(Dw,"calculateShades");function $w(t){return bm(t,Mw)}r($w,"calculateTints");function bm(t,e){let o=Bw(t),n=[];for(let i=1;i<9;i++)n.push(Pw(e(o,i)));return n}r(bm,"calculateColors");function ll(t,e,o){let a=$w(t).reverse().concat(t),s=Dw(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,f=c[u];f&&(l[`${e}${d}`]=f)}return l}r(ll,"createTintsAndShades");function cl(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)&&!vu(i)){let l=Ww(a);Object.assign(n,ll(l,i,s))}}return{...n,...e}}r(cl,"expandToGenerateThemeColors");var xm=r(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Fw=r(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=xm(o%52)+e;return xm(o%52)+e},"toAlphabeticName"),Ow=r((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),pl=r(t=>Fw(Ow(5381,JSON.stringify(t))>>>0),"toHash");function dl(t){let e=Uw.colors,o={...e,...zw},n,i;if(t?.light){let s={colors:cl(e,t.light)};n={id:`${Cs}-light-${pl(s)}`,tokens:s}}if(t?.dark){let s={colors:cl(o,t.dark,{reverseNeutralRange:!0})};i={id:`${Cs}-dark-${pl(s)}`,tokens:s}}return{light:n,dark:i}}r(dl,"customizedThemeTokens");function Im(t,e){if(t.length<=1)return t.map(({element:n,key:i})=>ul.cloneElement(n,{key:i}));let o=[];return t.forEach((n,i)=>{let{element:a,key:s}=n;if(o.push(ul.cloneElement(a,{key:s})),i<t.length-1){let c=`divider-${i}`;o.push(ul.cloneElement(e,{key:c}))}}),o}r(Im,"joinList");function Am(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}r(Am,"doesWindowPreferDarkColorScheme");function ho(t){let{colors:e,fontFamily:o=ru,borderRadius:n=Mu,secondaryBorderRadius:i=Du}=t,[a,s]=Gw(Am()?"dark":"light"),{theme:c}=k(),{dark:l,light:p}=dl(e),u=ml({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${i}px`},fonts:{widget:o}}),d=[u.className,Qw.className],f=[u.className,Hw.className];if(p){let g=ml(p.id,p.tokens);d.push(g.className)}if(l){let g=ml(l.id,l.tokens);f.push(g.className)}return qw(()=>{let g=r(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return Am()&&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(" "),m=f.join(" ");return c==="auto"?a==="dark"?m:g:c==="dark"?m:g},"getActiveTheme"),mode:c==="auto"?a:c}}r(ho,"useTheme");var Et=r(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let i=o.list.getStorage();i?.swapDetails&&e.push({id:n,swap:i?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as Nm}from"@lingui/core";import{Alert as Vw,Button as Kw}from"@rango-dev/ui";import Wm from"react";function fl(t){return Wm.createElement(Vw,{action:Wm.createElement(Kw,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},Nm.t("Activate this tab")),type:"warning",variant:"alarm",title:Nm.t("Another tab is open and handles transactions.")})}r(fl,"ActivateTabAlert");import{i18n as gl}from"@lingui/core";import{Button as jw,Divider as Xw,MessageBox as Yw}from"@rango-dev/ui";import zi from"react";function hl(t){let{open:e,onClose:o,onConfirm:n}=t;return zi.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},zi.createElement(Yw,{title:gl.t("Activate current tab"),type:"warning",description:gl.t("Currently, some transactions are running and being handled by other browser tab. If you activate this tab, all transactions that are already in the transaction sign step will expire.")},zi.createElement(Xw,{size:20}),zi.createElement(jw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},gl.t("Confirm"))))}r(hl,"ActivateTabModal");import{ChevronLeftIcon as Rw}from"@rango-dev/ui";import Fm from"react";import{css as Zw,darkTheme as Lm,IconButton as Jw,styled as qo}from"@rango-dev/ui";var Ft=qo(Jw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Lm} &`]:{backgroundColor:"$neutral"}}}),Pm=qo("div",{position:"absolute",background:"$secondary500",[`.${Lm} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),yo=qo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Bm=qo("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),_m=qo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Mm=qo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Dm=Zw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),$m=qo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function yl(t){return Fm.createElement(Ft,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Fm.createElement(Rw,{color:"black",size:16}))}r(yl,"BackButton");import{i18n as ev}from"@lingui/core";import{Button as tv,Typography as ov}from"@rango-dev/ui";import Sl from"react";function Tl(t){return Sl.createElement(yo,null,Sl.createElement(tv,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Sl.createElement(ov,{variant:"label",size:"medium",color:"error500"},ev.t("Cancel"))))}r(Tl,"CancelButton");import{i18n as nv}from"@lingui/core";import{Image as rv,Tooltip as iv,WalletIcon as av,WalletState as Om}from"@rango-dev/ui";import Go from"react";function Cl(t){let{list:e}=xt(),o=e.filter(i=>i.state===Om.CONNECTED||i.state===Om.PARTIALLY_CONNECTED),n=o.length?Go.createElement("div",{className:Dm()},o.map(i=>Go.createElement($m,{key:i.title},Go.createElement(rv,{src:i.image,size:14})))):nv.t("Connect Wallet");return Go.createElement(iv,{container:t.container,side:"bottom",content:n},Go.createElement(Ft,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&Go.createElement(Pm,null),Go.createElement(av,{size:18,color:"black"})))}r(Cl,"WalletButton");import{i18n as Qi}from"@lingui/core";import{NotificationsIcon as wv,Popover as vv,SettingsIcon as Ev,Tooltip as qi,TransactionIcon as bv}from"@rango-dev/ui";import _e from"react";import{Notifications as pv}from"@rango-dev/ui";import uv from"react";import{useNavigate as dv}from"react-router-dom";import{create as sv}from"zustand";import{persist as lv,subscribeWithSelector as cv}from"zustand/middleware";var Le=mo(sv()(lv(cv((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 kl(){let t=dv(),{getNotifications:e,clearNotifications:o}=Le(),n=e(),i=k().blockchains(),{findToken:a}=k();return uv.createElement(pv,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Kp(c,i),getTokenImage:c=>a(c)?.image,onClickItem:r(c=>{t(`${$.swaps}/${c}`)},"onClickItem"),onClearAll:o})}r(kl,"NotificationContent");import{useManager as mv}from"@rango-dev/queue-manager-react";import{InProgressIcon as fv}from"@rango-dev/ui";import Um from"react";var gv=r(()=>{let{manager:t}=mv();return Et(t).map(({swap:o})=>o).find(o=>o.status==="running")?Um.createElement(Mm,{id:"widget-header-history-badge-container"},Um.createElement(fv,{color:"info",size:6})):null},"InProgressTransactionBadge"),zm=gv;import{EventSeverity as hv}from"@rango-dev/queue-manager-rango-preset";import{Typography as yv}from"@rango-dev/ui";import Hm from"react";function Qm(){let{getNotifications:t}=Le(),e=t(),o=e.length,n=!!e.find(i=>i.event.messageSeverity===hv.WARNING);return o?Hm.createElement(Bm,{isSever:n},Hm.createElement(yv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}r(Qm,"NotificationsBadge");import{RefreshProgressButton as Sv}from"@rango-dev/ui";import wl,{useEffect as Tv,useState as qm}from"react";var Cv=1e3,Gm=60,kv=100;function Hi({onClick:t}){let[e,o]=qm(0),[n,i]=qm(!1),a=r(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");Tv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Gm&&c()},Cv):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 wl.createElement(Ft,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},wl.createElement(_m,{onTransitionEnd:()=>i(!1),isRefetched:n},wl.createElement(Sv,{size:22,color:t?"black":"gray",progress:e/Gm*kv})))}r(Hi,"RefreshButton");function Vo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:i=[],container:a}=t,{config:{features:s}}=k(),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:Qi.t("Refresh")},_e.createElement(Hi,{onClick:e})),!c&&_e.createElement(vv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(kl,null)},_e.createElement("div",null,_e.createElement(qi,{container:W(),side:"top",content:Qi.t("Notifications")},_e.createElement(Ft,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(wv,{size:18,color:"black"}),_e.createElement(Qm,null))))),!i.includes("settings")&&_e.createElement(qi,{container:W(),side:"top",content:Qi.t("Settings")},_e.createElement(Ft,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},_e.createElement(Ev,{size:18,color:"black"}))),!i.includes("history")&&_e.createElement(qi,{container:W(),side:"top",content:Qi.t("History")},_e.createElement(Ft,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(bv,{size:18,color:"black"}),_e.createElement(zm,null))))}r(Vo,"HeaderButtons");import{i18n as vl}from"@lingui/core";import{Divider as Km,MessageBox as Av,RefreshIcon as Nv}from"@rango-dev/ui";import In from"react";import{Button as xv,styled as Iv}from"@rango-dev/ui";var Vm=Iv(xv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function El(t){let{open:e,onClose:o}=t;return In.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},In.createElement(Av,{title:vl.t("Something went wrong"),type:"error",description:vl.t("Something went wrong. Please refresh the app.")},In.createElement(Km,{size:30}),In.createElement(Vm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},In.createElement(Nv,{size:20,color:"primary"}),In.createElement(Km,{size:4,direction:"horizontal"}),vl.t("Refresh"))))}r(El,"RefreshModal");var jm="700px",Xm="425px",Ym="550px",Zm="640px",Jm="800px";function bl(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(bl,"onScrollContentAttachStatusToContainer");import{css as Wv,styled as Gi}from"@rango-dev/ui";var Vi=Wv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Rm=Gi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:jm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Xm,[`@media screen and (min-height: ${Jm})`]:{minHeight:Ym}}},showBanner:{true:{overflow:"visible"}}}}),ef=Gi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),tf=Gi("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}}),of=Gi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=al(),{children:n,header:i,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=k(),[u,d]=af(!1),{config:{features:f,theme:h}}=k(),{watermark:g}=re(),m=g==="FULL",{activeTheme:S}=ho(h||{}),[T,y]=af(!1),C=nt("connectWalletButton",f),{isActiveTab:w,tabManagerInitiated:v,showActivateTabModal:I,setShowActivateTabModal:A,activateCurrentTab:E,setShowCompactTokenSelector:x}=re(),b=Ve(),{manager:P}=Lv(),O=Et(P).map(({swap:Y})=>Y).some(Y=>Y.status==="running"),q=r(()=>E(Fo.forceClaim,O),"onActivateTab"),j=r(()=>{i.onWallet?.()},"onConnectWallet"),ee=typeof i.hasBackButton>"u"||i.hasBackButton,L=rf(null),Z=rf(null);return Ki(()=>{let Y=(p?.swapBoxBanner?.routes?.length??0)===0,ue=!!p?.swapBoxBanner?.routes?.some(Ee=>location.pathname.endsWith(Ee));y(!!p?.swapBoxBanner&&(Y||ue))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),Ki(()=>(Fi()&&Z.current&&e(Z.current),()=>{o()}),[]),Ki(()=>(L.current?.addEventListener("scroll",bl),()=>{L.current?.removeEventListener("scroll",bl)}),[]),Ki(()=>{d(c==="failed")},[c]),_v(()=>{if(!Z.current)return;let Y=new ResizeObserver(ue=>{for(let Ee of ue)Ee.contentRect&&x(Ee.contentRect.height<parseInt(Zm))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Pe.createElement(Rm,{height:s,id:wt.SWAP_BOX_ID,className:`${S()} ${Vi()}`,ref:Z,showBanner:T},Pe.createElement(Bv,{prefix:ee?Pe.createElement(yl,{onClick:()=>{b(),i.onBack?.()}}):null,title:i.title,suffix:Pe.createElement(Pe.Fragment,null,i.suffix,i.onWallet&&!C&&Pe.createElement(Cl,{container:W(),onClick:j,isConnected:!!l?.length}),i.onCancel&&Pe.createElement(Tl,{onClick:i.onCancel}))}),Pe.createElement(ef,{ref:L},n),Pe.createElement(hl,{open:I,onClose:()=>A(!1),onConfirm:q}),Pe.createElement(tf,null,Pe.createElement("div",{className:"footer__content"},v&&!w&&Pe.createElement("div",{className:"footer__alert"},Pe.createElement(fl,{onActivateTab:q}),Pe.createElement(nf,{size:10})),a),Pe.createElement(nf,{size:12}),Pe.createElement("div",{className:`footer__logo ${m?"logo__show":"logo__hidden"}`},Pe.createElement(Pv,null))),T&&Pe.createElement(of,null,p?.swapBoxBanner?.element),Pe.createElement(El,{open:u,onClose:()=>d(!1)}))}r(se,"Layout");import{styled as Mv}from"@rango-dev/ui";var sf="$20 $20 $10 $20",xl=Mv("div",{padding:sf,overflowY:"auto",flexGrow:1});import{styled as Dv}from"@rango-dev/ui";var ce=Dv("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as So}from"@lingui/core";import{useState as Il}from"react";function lf(){let[t,e]=Il(!1),[o,n]=Il(null),[i,a]=Il(null),{findToken:s}=k(),c=k().customTokens(),l=r(()=>{a(null),e(!1),n(null)},"resetState");function p(d,f){switch(d){case"duplicated":return{type:d,title:So.t("Duplicate Token"),message:So.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:So.t("Token Already Exists"),message:So.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:d,title:So.t("Token Not Found"),message:So.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:f}})};case"network-error":return{type:d,title:So.t("Network error"),message:So.t("An error occurred while retrieving token data.")}}}return r(p,"produceErrorMessage"),{fetchCustomToken:r(async({blockchain:d,tokenAddress:f})=>{e(!0);try{if(c.some(T=>T.address?.toLowerCase()===f.toLowerCase())){let T=p("duplicated");n(T);return}let g=await dt().getCustomToken({blockchain:d,address:f});if(!g||!g.token||g.error){let T=p("not-found",d);n(T);return}let m=g.token;if(s({blockchain:m.blockchain,address:m.address,symbol:m.symbol})){let T=p("token-exist");n(T);return}return a({...m,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(lf,"useFetchCustomToken");var Kv=zv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${Ov} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function cf(){let t=Gv(),[e]=Vv(),o=Ve(),n=k().blockchains(),i=e.get("blockchain")||"",a=Po(i,n),[s,c]=qv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:f}=lf(),h=!!a&&Bo(a,s),g=!a||!s||!h,m=r(()=>{a&&l({blockchain:i,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:An.t("Add Custom Token")}},Ke.createElement(ce,null,Ke.createElement(Kv,null,Ke.createElement("div",null,Ke.createElement(el,{onClick:()=>t($.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:An.t("Select chain"),placeholder:An.t("Select chain")}),Ke.createElement(Al,{size:"24"}),Ke.createElement(Qv,{size:"large",variant:"label"},An.t("Enter Address")),Ke.createElement(Al,{size:10}),Ke.createElement(Hv,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:An.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement(Uv,{color:"success",size:12}),onChange:S=>c(S.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(Al,{size:4}),Ke.createElement($v,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement(Fv,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:m},An.t("Import"))),Ke.createElement(yr,{token:p,blockchain:a??void 0,address:s,error:d??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{d?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:f,onExitImportModal:f})))}r(cf,"AddCustomTokenPage");import{i18n as sc}from"@lingui/core";import{useManager as Lb}from"@rango-dev/queue-manager-react";import{Alert as Pb,Button as Bb,css as cc,Divider as lc,IconButton as Rg,styled as _b,Typography as Mb,WalletIcon as Db}from"@rango-dev/ui";import $e,{useEffect as ka,useLayoutEffect as $b,useRef as Fb,useState as Ar}from"react";import{useNavigate as Ob}from"react-router-dom";import{i18n as jo}from"@lingui/core";import{Alert as dE,BalanceErrors as mE,Button as Bf,ChevronLeftIcon as fE,Divider as _l,MessageBox as gE,Typography as Ml}from"@rango-dev/ui";import ae,{useCallback as hE,useEffect as Ri,useMemo as yE,useState as Wn}from"react";import{useNavigate as SE}from"react-router-dom";import{i18n as Pl}from"@lingui/core";import{Alert as Jv,ChevronDownIcon as Rv,CloseIcon as eE,Divider as hf,IconButton as yf,PasteIcon as tE,Typography as oE,WalletIcon as nE}from"@rango-dev/ui";import Me,{useEffect as Sf,useRef as Tf}from"react";import Zi,{useRef as Yv}from"react";import*as Nn from"@radix-ui/react-collapsible";import{keyframes as pf,styled as ji}from"@rango-dev/ui";var Nl=300,jv=pf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Xv=pf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),uf=ji(Nn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Wl=ji(Nn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Xi=ji(Nn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${jv} ${Nl}ms ease-out`},false:{animation:`${Xv} ${Nl}ms ease-out`}}}}),Yi=ji("div",{transition:`all ${Nl}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Ji(t){let{open:e,hasSelected:o,onOpenChange:n,children:i,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Yv(null);return Zi.createElement(uf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&Zi.createElement(Wl,{className:"collapsible_trigger",onClick:a},s),Zi.createElement(Xi,{className:"collapsible_content",open:e},i),c==="bottom"&&Zi.createElement(Wl,{className:"collapsible_trigger",onClick:a},s))}r(Ji,"CustomCollapsible");import{darkTheme as df,styled as Ll,TextField as Zv}from"@rango-dev/ui";var mf=Ll("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),ff=Ll(Zv,{backgroundColor:"$neutral100"}),gf=Ll("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${df} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${df} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Cf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:i,setCustomDestination:a}=z()(),{config:s}=k(),c=k().blockchains(),l=Vp(e.name,c),p=Tf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!i&&e&&!Bo(e,i),g=r(()=>{a("")},"handleClear"),m=r(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let C=await navigator.clipboard.readText();a(C),p?.current?.focus()}},"handlePaste"),S=r(()=>i?Me.createElement(yf,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(eE,{size:12,color:"gray"})):d?null:Me.createElement(yf,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},Me.createElement(tE,{size:16})),"renderSuffix");Sf(()=>{!!u&&i===null&&(a(u),o(!0))},[u]);let T=Tf(null);return Sf(()=>{if(!i){T.current=null;return}n&&Bo(e,i)&&T.current!==i&&(T.current=i,oe({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[i,n,e]),Me.createElement(mf,null,Me.createElement(Ji,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(gf,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(nE,{size:18,color:"info"}),Me.createElement(hf,{size:4,direction:"horizontal"}),Me.createElement(oE,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Pl.t("Send to a different address"))),Me.createElement(Yi,{orientation:n?"up":"down"},Me.createElement(Rv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(ff,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:i?"8px":"5px"},autoFocus:!i,placeholder:Pl.t("Enter {blockchainName} address",{blockchainName:l}),value:i||"",suffix:S(),onChange:y=>{let C=y.target.value;a(C)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(hf,{size:4}),Me.createElement(Jv,{variant:"alarm",type:"error",title:Pl.t({values:{destination:i},id:"Address {destination} doesn't match the blockchain address pattern."})})))}r(Cf,"CustomDestination");import{css as rE,IconButton as iE,SelectableWalletButton as aE,styled as To}from"@rango-dev/ui";var kf=To("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),wf=To("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),vf=To(aE,{justifyContent:"center"}),Ef=To("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),bf=To(iE,{position:"absolute",left:"$20"}),xf=To("div",{paddingTop:"$20"}),If=rE({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Af=To("div",{display:"flex"}),Nf=To("div",{overflow:"visible",width:"100%"});import{i18n as Wf}from"@lingui/core";import{warn as sE}from"@rango-dev/logging-core";import{makeInfo as lE,SelectableWallet as cE,Typography as Lf,WalletState as Sr}from"@rango-dev/ui";import Ko,{useEffect as pE,useState as Pf}from"react";var uE=7;function Bl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:i,limit:a,onShowMore:s}=t,c=re.use.isActiveTab(),{connectedWallets:l}=k(),[p,u]=Pf(),{list:d}=xt({chain:e}),[f,h]=Pf(d),g=d.length,m=a&&g-a>0;return pE(()=>{h(S=>{let T=d.findIndex(y=>n(y.type,e));return m&&T>1?[d[T]].concat(d.filter((y,C)=>C!==T)):S.map(y=>d.find(C=>C.type===y.type)??y)})},[JSON.stringify(d)]),Ko.createElement(Ko.Fragment,null,f.slice(0,a).map(S=>{let T=Wu({connectedWallets:l,walletType:S.type,chain:e}),y=S.state===Sr.CONNECTED||S.state===Sr.PARTIALLY_CONNECTED,C=T?uo(T,uE):"",w=y&&!!S.needsNamespace&&!C,v=r(async()=>{S.state===Sr.DISCONNECTED||w?u(S):i({walletType:S.type,chain:e,address:T??""})},"onSelectableWalletClick"),I=lE(S.state),A=r(()=>w?Wf.t("Chain not connected"):C||I.description,"getWalletDescription"),E=r(()=>S.state===Sr.CONNECTED||S.state===Sr.PARTIALLY_CONNECTED?w?"neutral600":"neutral700":I.color,"getWalletDescriptionColor");return Ko.createElement(cE,{key:S.type,id:"widget-wallets-list-selectable-wallet-btn",description:A(),descriptionColor:E(),onClick:v,selected:n(S.type,e),disabled:!c,...S})}),Ko.createElement(dr,{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):sE(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),m&&Ko.createElement(vf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Ko.createElement(Lf,{variant:"label",size:"medium"},Wf.t("Show more wallets"),Ko.createElement(Lf,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}r(Bl,"WalletList");var TE=2;function _f(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:i,loading:a}=t,s=SE(),c=k().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:f,setCustomDestination:h}=z()(),{config:g,connectedWallets:m,setWalletsAsSelected:S}=k(),[T,y]=Wn(""),[C,w]=Wn([]),[v,I]=Wn(""),[A,E]=Wn(!!f),x=yE(()=>Do({filter:"all",quote:l}),[l]),b=Do({filter:"required",quote:l}),P=c.find(B=>B.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),N=r(B=>b.includes(B),"isWalletRequiredFor"),O=hE(()=>m.filter(B=>B.selected&&x.includes(B.chain)),[m,x]),[q,j]=Wn(O()),[ee,L]=Wn([]),Z=r((B,V)=>L(H=>H.concat({blockchain:B,walletType:V})),"addNextSelectedWallets"),Y=C.length>0,ue=r((B,V)=>!!q.find(H=>H.walletType===B&&H.chain===V&&H.selected&&(N(V)||!N(V)&&!f)),"isSelected"),Ee=r((B,V,H)=>{let X=!1;return B.map(G=>{if(G.chain===V){let J=G.selected;return!X&&H?(X=!0,J=!0):H||(J=!1),{...G,selected:J}}return G})},"updateSelectableWallets"),Vt=r(B=>{E(B),B?N(P?.name??"")||j(V=>Ee(V,P?.name||"",!1)):(h(""),j(V=>Ee(V,P?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),be=r(B=>{if(T&&y(""),ue(B.walletType,B.chain))return;let H=m.find(X=>X.walletType===B.walletType&&X.chain===B.chain);H&&(n(),B.chain===P?.name&&A&&!N(P.name)&&(E(!1),h(null)),j(X=>X.filter(G=>G.chain!==B.chain).concat({...H,selected:!0})))},"onChange"),Qe=r(()=>{let B=q.filter(V=>V.selected);oe({type:"swapWalletsConfirmed",payload:{routeId:l?.requestId??""}}),S(B),p(B),d(!0),o()},"onConfirmBalance"),Xe=r(async()=>{w([]),I("");let B=await i?.({selectedWallets:q.filter(H=>H.selected),customDestination:f}),V=B.warnings;V?.balance?.messages&&w(V.balance.messages),B.error&&I($p(B.error)),!B.error&&!V?.balance?.messages.length?Qe():w(V?.balance?.messages??[])},"onConfirmWallets");Ri(()=>{j(B=>{let V=[];return B.forEach(H=>{!m.some(G=>G.chain===H.chain&&G.walletType===H.walletType&&G.address===H.address)||V.push(H)}),V=V.concat(m.filter(H=>!!!V.find(G=>G.chain===H.chain)&&H.selected&&x.includes(H.chain))),V})},[m,x]),Ri(()=>{let B=[];ee.length>0&&(ee.forEach(V=>{let H=m.find(X=>X.chain===V.blockchain&&X.walletType===V.walletType);H?be(H):B.push(V)}),L(B))},[m,ee]);let St=l?.requestId??"";Ri(()=>{if(!e)return;let B=b.filter(V=>!m.some(H=>H.chain===V));oe({type:"swapWalletsModalShown",payload:{chainsRequired:b.length,chainsPending:B.length}})},[e]),Ri(()=>{Y&&oe({type:"gasWarningShown",payload:{routeId:St}})},[Y,St]);let ct=document.getElementById(wt.SWAP_BOX_ID);return ae.createElement(ie,{id:"widget-confirm-wallets-modal",open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!T,container:ct,...!T&&{styles:{container:{height:"100%"}},footer:ae.createElement(Af,null,ae.createElement(Bf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:tm(a,A,f,l,q,P),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},jo.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(Ef,null,ae.createElement(bf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(fE,{size:16})),ae.createElement(Ml,{variant:"headline",size:"small"},jo.t({id:"Your {blockchainName} wallets",values:{blockchainName:Ct(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(gE,{title:jo.t("Insufficient account balance"),type:"error",description:ae.createElement(mE,{messages:C??[]})},ae.createElement(Bf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{oe({type:"gasWarningBypassed",payload:{routeId:St}}),Qe()}},jo.t("Proceed anyway")))),T&&ae.createElement(xf,null,ae.createElement("div",{className:If()},ae.createElement(Bl,{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(dE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:jo.t(v)}),ae.createElement(_l,{size:12})),ae.createElement(Nf,null,x.map((B,V)=>{let H=c.find(U=>U.name===B),X=`wallet-${V}`,G=V===x.length-1,J=G&&P&&g?.customDestination!==!1;return ae.createElement("div",{key:X},ae.createElement(kf,null,ae.createElement(Ml,{variant:"title",size:"xmedium"},jo.t({id:"Your {blockchainName} wallets",values:{blockchainName:H?.shortName}})),ae.createElement(Ml,{variant:"label",color:"$neutral700",size:"medium"},jo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:H?.shortName}}))),ae.createElement(_l,{size:24}),ae.createElement(wf,null,ae.createElement(Bl,{chain:B,quoteChains:x,isSelected:ue,selectWallet:be,limit:TE,onShowMore:()=>y(H?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(_l,{size:32}),J&&ae.createElement(Cf,{blockchain:P,open:A,handleOpenChange:Vt}))}))))}r(_f,"ConfirmWalletsModal");import{i18n as GE}from"@lingui/core";import{Alert as VE,Button as KE,Divider as eg,InfoIcon as jE}from"@rango-dev/ui";import Ue from"react";import{Alert as wE,Button as vE,Divider as Fl,NoRouteIcon as EE,RefreshIcon as bE,Typography as zf}from"@rango-dev/ui";import mt from"react";import{i18n as Mf}from"@lingui/core";var CE=24,kE=60;function Df(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:te().genericServerError,action:{onClick:n,title:Mf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:te().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Mf.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(Df,"makeInfo");var Dl=(o=>(o[o.small=CE]="small",o[o.large=kE]="large",o))(Dl||{}),$l=(o=>(o.small="small",o.large="medium",o))($l||{});import{styled as ea}from"@rango-dev/ui";var $f=ea("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Ff=ea("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Of=ea("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Uf=ea("div",{padding:"$6 $0"});function Tr(t){let{fetch:e,error:o,size:n="small",skipAlerts:i}=t,a=k().getDisabledLiquiditySources(),s=k().toggleAllLiquiditySources,c=k().swappers(),l=Df(o,a,()=>s(c,!0),e);return i&&(l.alert=null),mt.createElement($f,{id:"widget-no-result-container"},mt.createElement(EE,{size:Dl[n],color:"gray"}),mt.createElement(Fl,{size:4}),mt.createElement(zf,{variant:"title",size:$l[n]},te().noResultError.title),n==="large"&&mt.createElement(Fl,{size:4}),!!l.description&&mt.createElement(Ff,{size:n},mt.createElement(zf,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement(Fl,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Of,{size:n},mt.createElement(wE,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&mt.createElement(vE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement(Uf,null,mt.createElement(bE,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}r(Tr,"NoResult");import{i18n as Cr}from"@lingui/core";import{Button as BE,Divider as _E,MessageBox as ME,Typography as DE,WarningIcon as $E}from"@rango-dev/ui";import Rt from"react";import{InfoIcon as NE,Tooltip as WE,Typography as LE}from"@rango-dev/ui";import Ln from"react";import{Button as xE,darkTheme as IE,styled as Xo,Typography as AE}from"@rango-dev/ui";var Hf=Xo("div",{width:"100%"}),Ol=Xo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Qf=Xo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${IE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),qf=Xo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),Gf=Xo(AE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Vf=Xo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),Kf=Xo(xE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var PE=35;function jf(t){let{title:e,value:o,valueColor:n}=t,i=W();return Ln.createElement(Qf,null,Ln.createElement(LE,{size:"medium",variant:"label",className:"_title"},e),Ln.createElement(qf,null,Ln.createElement(Gf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>PE&&Ln.createElement(WE,{content:o,container:i},Ln.createElement(NE,{size:12,color:"gray"}))))}r(jf,"QuoteErrorsModalItem");function Xf(t){let{open:e,onClose:o,onConfirm:n,warning:i,confirmationDisabled:a}=t,s=i.warningLevel==="high"?"error":"warning",c=[{title:Cr.t("Swapping"),value:M(i.inputUsdValue)},{title:Cr.t("Gas cost"),value:M(i.totalFee,2,2)},{title:Cr.t("Receiving"),value:M(i.outputUsdValue)},{title:Cr.t("Price impact"),value:M(i.priceImpact,2,2),valueColor:`${s}500`}];return Rt.createElement(ie,{id:"widget-high-value-loss-warning-modal",footer:Rt.createElement(BE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Rt.createElement($E,null),fullWidth:!0,disabled:a,onClick:n},te().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Rt.createElement(ME,{type:s,title:te().highValueLossError.impactTitle,description:te().highValueLossError.description}),Rt.createElement(Ol,null,Rt.createElement(_E,{size:"4"}),Rt.createElement(DE,{size:"small",variant:"title"},Cr.t("Details")),Rt.createElement(Ol,null,c.map((l,p)=>Rt.createElement(jf,{key:p,...l})))))}r(Xf,"HighValueLossWarningModal");import{i18n as Pn}from"@lingui/core";function Yf(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=Pn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Pn.t("Increase")),o;if(t){switch(t.type){case 0:{Jt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=te().highValueLossError.title;break}case 4:{o.title=Pn.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=Pn.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=Pn.t("Increase");break}case 3:{o.title=Pn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}r(Yf,"makeAlerts");function Zf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}r(Zf,"getRequiredSlippage");import{i18n as Bn}from"@lingui/core";import{Button as FE,Divider as Ul,MessageBox as OE,WarningIcon as UE}from"@rango-dev/ui";import wo from"react";import{useNavigate as zE}from"react-router-dom";function Jf(t){let{open:e,onClose:o,onConfirm:n,warning:i,confirmationDisabled:a}=t,s=zE();return wo.createElement(ie,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},wo.createElement(OE,{type:"warning",title:i.type===3?Bn.t("High slippage"):Bn.t("Low slippage"),description:i.type===3?Bn.t("Caution, your slippage is high. Your trade may be front run."):Bn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:i.minRequiredSlippage}})},wo.createElement(Ul,{size:18}),wo.createElement(Ul,{size:32}),wo.createElement(Kf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},wo.createElement(UE,{color:"white",size:16}),Bn.t("Swap anyway")),wo.createElement(Ul,{size:10}),wo.createElement(FE,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Bn.t("Change Slippage"))))}r(Jf,"SlippageWarningModal");import{Button as HE,MessageBox as QE,WarningIcon as qE}from"@rango-dev/ui";import ta from"react";function Rf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:i}=t;return ta.createElement(ie,{id:"widget-unknown-price-warning-modal",footer:ta.createElement(HE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:ta.createElement(qE,null),fullWidth:!0,disabled:i,onClick:n},te().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},ta.createElement(QE,{type:"warning",title:te().unknownPriceError.impactTitle,description:te().unknownPriceError.description}))}r(Rf,"UnknownPriceWarningModal");function kr(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:f}=t,h={confirmationDisabled:a,open:i,onClose:p,onConfirm:u},g=o?.type===0||o?.type===1,m=Yf(e,o?.type===3||o?.type===4?o:null);m&&!n&&(m.action=null);let S=!!m&&!s,T=r(y=>{if(y==="change-slippage"){let C=o?.type===3||o?.type===4?o:null,w=Zf(e,C);f?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,g&&Ue.createElement(Ue.Fragment,null,Ue.createElement(eg,{size:10}),Ue.createElement(Tr,{skipAlerts:s,error:o,fetch:c})),S&&Ue.createElement(Hf,null,Ue.createElement(eg,{size:10}),Ue.createElement(VE,{id:"widget-quote-warning-and-errors-alert",title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Ue.createElement(Vf,{onClick:l},Ue.createElement(jE,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:Ue.createElement(KE,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>T(m.action)},m.actionButtonTitle||GE.t("Change"))}})),e&&Ue.createElement(Ue.Fragment,null,e.type===0&&Ue.createElement(Xf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(Jf,{...h,warning:e}),e.type===1&&Ue.createElement(Rf,{...h,warning:e})))}r(kr,"QuoteWarningsAndErrors");import Eb from"bignumber.js";import ya from"react";import{i18n as Yo}from"@lingui/core";import{Alert as db,CampaignQuoteTag as mb,Divider as Mn,FullExpandedQuote as fb,InfoIcon as Zl,NumericTooltip as Jl,QuoteTag as gb,StepDetails as hb,TokenAmount as yb,Typography as Dn,useIsTruncated as Rl}from"@rango-dev/ui";import ec from"bignumber.js";import F,{useRef as fa,useState as Sb}from"react";import{styled as zl}from"@rango-dev/ui";var Hl=zl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),tg=zl("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),og=zl("div",{width:"100%",display:"flex"});import*as oa from"@radix-ui/react-collapsible";import{Button as XE,css as na,darkTheme as De,Image as ng,styled as je,Typography as Ql}from"@rango-dev/ui";var YE=300,rg=je(oa.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),ig=na({padding:"$10 $15"}),ag=je(XE,{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"}}}),sg=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"}}}}]}),lg=na({width:"100%",padding:"$15 $15 $10 $15"}),cg=na({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),_n=na({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),pg=je(oa.Trigger,{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",height:"$36",padding:"$10 $15",boxSizing:"border-box",cursor:"pointer",border:"none",outline:"none",backgroundColor:"transparent",variants:{error:{true:{[`& ${ng}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${ng}`]:{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"}}}),ug=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"}}}}),dg=je(Xi,{width:"100%",background:"inherit"}),ql=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${YE}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),SQ=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),mg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),fg=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),Gl=je(Ql,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"$30"}),Vl=je(Ql,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,flex:"0 1 auto"}),Kl=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"}}}}),gg=je("div",{display:"flex"}),ra=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),hg=je(Ql,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ot}from"@lingui/core";import{ChevronDownIcon as JE,CloseIcon as RE,Divider as sa,IconButton as eb,NumericTooltip as tb,QuoteCost as ob,Typography as Nt}from"@rango-dev/ui";import nb from"bignumber.js";import R,{useState as Cg}from"react";import{css as ZE,styled as ia}from"@rango-dev/ui";var aa=ia("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),jl=ia("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),yg=ia("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Sg=ia("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Tg=ZE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var rb=r(t=>t.fee.isZero()?null:R.createElement(aa,null,R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},t.label),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(t.fee,4,4))),"NonPayableFee");function Xl(t){let[e,o]=Cg(!1),[n,i]=Cg(!1),{steps:a,quote:s,time:c,feeWarning:l,timeWarning:p,showModalFee:u,fullExpandedMode:d=!1}=t,f=s?.swaps??[],h=d?Mo():W(),g=Kd(f),m=Object.values(g.payable).reduce((T,y)=>T.plus(Ks(y)),new nb(0)),S=M(m,2,2);return R.createElement(R.Fragment,null,R.createElement(ob,{onClickFee:u?T=>{T.stopPropagation(),!e&&s&&oe({type:"routeFeeViewed",payload:{routeId:s.requestId}}),o(!e)}:void 0,fee:S,feeWarning:l,timeWarning:p,time:c,steps:a,tooltipGas:u?Ot.t("View more info"):void 0,tooltipContainer:h}),R.createElement(ie,{id:"widget-quote-cost-explanation-modal",container:h,open:e,anchor:d?"center":"bottom",styles:{container:{maxWidth:d?"484px":"unset"}},header:R.createElement(Sg,{style:{textAlign:d?"left":"center"}},R.createElement(Nt,{variant:"title",size:"medium"},Ot.t("Gas & Fee Explanation")),R.createElement(eb,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(RE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(yg,null,R.createElement(Nt,{variant:"title",size:"small"},Ot.t("Details")),R.createElement(sa,{size:10}),Object.entries(g.payable).flatMap(([T,y])=>y.map((C,w)=>{let v=`payable-fee-${w}`,I=Vs(C);return R.createElement(aa,{key:v},R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},zs(T,Ot.t)),R.createElement(tb,{content:C.amount,container:h},R.createElement(Nt,{variant:"label",size:"medium"},M(C.amount,2,2),C.asset.symbol," ($",M(I,4,4),")")))})),R.createElement(aa,{className:"total_payable_fee"},R.createElement(Nt,{variant:"label",size:"medium"},Ot.t("Total Payable Fee")),R.createElement(Nt,{variant:"label",size:"medium"},"$",M(m,4,4))),R.createElement(jl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Ji,{triggerAnchor:"bottom",onClickTrigger:()=>i(T=>!T),trigger:R.createElement("div",{className:Tg()},R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},n?Ot.t("Hide non-payable fees"):Ot.t("Show non-payable fees")),R.createElement(sa,{size:4,direction:"horizontal"}),R.createElement(Yi,{orientation:n?"up":"down"},R.createElement(JE,{size:12,color:"gray"}))),open:n},R.createElement(Nt,{size:"small",variant:"title"},Ot.t("Description")),R.createElement(sa,{size:4}),R.createElement(Nt,{size:"small",variant:"body",color:"neutral700"},Ot.t(`The following fees are considered in the transaction output and
3
+ you won\u2019t need to pay extra gas for them.`)),R.createElement(sa,{size:10}),Object.entries(g.nonePayable).map(([T,y],C)=>{let w=Ks(y),v=zs(T,Ot.t),I=`non-payable-fee-${C}`;return R.createElement(rb,{key:I,fee:w,label:v})}),R.createElement(jl,null)))))}r(Xl,"QuoteCostDetails");import{i18n as vg}from"@lingui/core";import{TokenAmount as Eg}from"@rango-dev/ui";import la from"react";import{css as ib,styled as ab}from"@rango-dev/ui";var kg=ab("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),wg=ib({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function wr(t){let{from:e,to:o,percentageChange:n,warningLevel:i}=t;return la.createElement(kg,null,la.createElement(Eg,{direction:"horizontal",label:vg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:W(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),la.createElement("div",{className:wg()}),la.createElement(Eg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:vg.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(wr,"QuoteSummary");import{i18n as Ng}from"@lingui/core";import{ChevronDownIcon as cb,ChevronRightIcon as pb,Divider as Yl,Image as ub,Tooltip as ma,Typography as pa}from"@rango-dev/ui";import Q from"react";import{useLayoutEffect as sb,useState as vr}from"react";var bg=480,xg=768,Ig=1024,Ag=1200,lb=r(()=>{let[t,e]=vr(!1),[o,n]=vr(!1),[i,a]=vr(!1),[s,c]=vr(!1),[l,p]=vr(!1),u=r(()=>{e(window.innerWidth<=bg),n(window.innerWidth>bg&&window.innerWidth<=xg),a(window.innerWidth>xg&&window.innerWidth<=Ig),c(window.innerWidth>Ig&&window.innerWidth<=Ag),p(window.innerWidth>Ag)},"handleResize");return sb(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:i,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),ca=lb;var ua=4,da=6,Er=r(t=>{let{content:e,src:o,className:n,open:i,state:a,container:s}=t,c=s||W();return Q.createElement(ma,{container:c,side:"bottom",sideOffset:4,open:i,content:e},Q.createElement(ug,{className:n,state:a},Q.createElement(ub,{src:o,size:16})))},"ImageComponent");function Wg(t){let{quoteRef:e,selected:o,setExpanded:n,steps:i,expanded:a,type:s,container:c}=t,l=c||W(),p=i.length,u=$d(i),{isTablet:d,isMobile:f}=ca();return Q.createElement(pg,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},Q.createElement("div",{className:_n()},Q.createElement(pa,{variant:"body",size:"xsmall"},Ng.t("Via:")),Q.createElement(Yl,{direction:"horizontal",size:4}),i.map((h,g)=>{let m=`item-${g}`,S=Q.createElement(ql,null,Q.createElement(pb,{size:12,color:"black"}));return f||d?Q.createElement(Q.Fragment,{key:m},Q.createElement(Er,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):Q.createElement(Q.Fragment,{key:m},p<=ua||p>ua&&g<ua-1?Q.createElement(Q.Fragment,null,Q.createElement(Er,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):g===ua-1&&Q.createElement(ma,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:_n()},S,i.map((T,y)=>{let C=`image-${y}`;return y>=g&&Q.createElement(Q.Fragment,{key:C},Q.createElement(Er,{content:T.swapper.displayName,src:T.swapper.image??"",state:T.state,open:!1}),y!==p-1&&Q.createElement(Q.Fragment,null,S))}))},Q.createElement(Kl,{state:i.find((T,y)=>y>=g&&(T.state==="error"||T.state==="warning"))?.state},Q.createElement(pa,{size:"xsmall",variant:"body"},"+",p-g))))})),Q.createElement("div",{className:_n()},Q.createElement("div",{className:"blockchains_section"},Q.createElement("div",{className:_n()},Q.createElement(pa,{variant:"body",size:"xsmall"},Ng.t("Chains:")),Q.createElement(Yl,{direction:"horizontal",size:4}),u.map((h,g)=>Q.createElement(Q.Fragment,{key:h.displayName},u.length<=da||u.length>da&&g<da-1?Q.createElement(ma,{container:l,side:"bottom",content:h.displayName,sideOffset:4},Q.createElement(Er,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===da-1&&Q.createElement(ma,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:_n()},u.map((m,S)=>S>=g&&Q.createElement(Er,{key:m.displayName,content:"",src:m.image??"",open:!1,className:S>g?"blockchainImage":"",container:c})))},Q.createElement(Kl,{className:"blockchainImage"},Q.createElement(pa,{size:"xsmall",variant:"body"},"+",u.length-g))))),Q.createElement(Yl,{direction:"horizontal",size:32}))),Q.createElement(ql,{orientation:a?"up":"down"},Q.createElement(cb,{size:12,color:"black"}))))}r(Wg,"QuoteTrigger");function tc(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:f}=t,h=k().blockchains(),{findToken:g}=k(),m=k().swappers(),{customSlippage:S,slippage:T}=k(),y=S||T,[C,w]=Sb(t.expanded),v=fa(null),I=M(n.value,6,6),A=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:E}}=k(),x=Zt(o.usdValue,n.usdValue??null),b=M(x,2,2),P=Jt(x??0),N=r((G,J)=>G.map((U,de)=>{let qe,ot=i?.type===3&&i.swap.swapperId===U.swapperId,po=i?.type===4&&!!i.recommendedSlippages?.[de],Gn=a?.type===2&&!!a.recommendedSlippages?.[de],Wo=ot||po,ti=Gn;Wo?qe="error":ti&&(qe="warning");let an=Wo?Yo.t("Slippage Error"):Yo.t("Slippage Warning");return ot&&(an=Yo.t("Bridge Limit Error")),{swapper:{displayName:jn(U.swapperId,m)??"",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 ec(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 ec(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:qe,alerts:Wo||ti?F.createElement(tg,{dense:d},F.createElement(db,{variant:"alarm",type:Wo?"error":"warning",title:an,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(og,null,ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},i.fromAmountRangeError),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Yo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(po||Gn)&&!ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Yo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...i?.type===4&&{minRequiredSlippage:i.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Yo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Zn(U.estimatedTimeInSeconds),fee:M(Gs(U,g),2,2),internalSwaps:U.internalSwaps?N(U.internalSwaps):void 0}}),"getQuoteSteps"),O=N(e?.swaps??[]),q=O.length,j=f||W(),ee=Od(t.quote.tags||[]),L=!!u,Z=ui(e?.swaps),Y=Zn(Z),ue=Bi(e?.swaps??[],g),Ee=M(ue,2,2),Vt=ue.gte(new ec(Nd)),be=Z/Ld>=Wd,Qe=fa(null),Xe=Rl(o.value,Qe),St=fa(null),ct=Rl(n.value,St),B=fa(null),V=Rl(A,B),H=O[q-1],X=O[0];return!X||!H?null:d?F.createElement(fb,{selected:c,fee:Ee,time:Y,tooltipContainer:Mo(),steps:O,tags:ee,campaignTag:E?.campaignTag,id:"widget-quote-full-expanded-quote-container",quoteCost:F.createElement(Xl,{quote:e,fullExpandedMode:!0,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:b,warningLevel:P,outputPrice:{value:I,usdValue:A,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(sg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:lg()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(gg,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&E?.campaignTag?F.createElement(mb,{routeTag:G,...E.campaignTag}):F.createElement(gb,{label:G.label,value:G.value}),F.createElement(Mn,{size:4,direction:"horizontal"}))})),F.createElement(ra,null),!L&&F.createElement(Mn,{size:4})):null,F.createElement("div",{id:"portal-root",className:cg()},F.createElement(Xl,{quote:e,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),L&&F.createElement(ag,{onClick:G=>{G.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Dn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Yo.t("See All Routes")))),s==="basic"&&F.createElement(fg,null,F.createElement(Vl,{ref:Qe,size:"small",variant:"body"},o.value),Xe&&F.createElement(Jl,{content:o.value,container:j,open:o.value?void 0:!1},F.createElement(Zl,{size:12,color:"gray"})),F.createElement(Gl,{size:"small",variant:"body"},O[0]?.from.token.displayName),F.createElement(Dn,{size:"small",variant:"body"},"="),F.createElement(Vl,{ref:St,size:"small",variant:"body"},n.value),ct&&F.createElement(Jl,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(Zl,{size:12,color:"gray"})),F.createElement(Gl,{size:"small",variant:"body"},H?.to.token.displayName),F.createElement(Mn,{size:2,direction:"horizontal"}),F.createElement(hg,{ref:B,color:"$neutral600",size:"xsmall",variant:"body"},`($${A})`),V&&F.createElement(Jl,{content:n.usdValue,container:j},F.createElement(Zl,{size:12,color:"gray"}))),s==="list-item"&&F.createElement(yb,{id:"widget-quote-token-amount-container",tooltipContainer:j,type:"output",direction:"vertical",price:{value:I,usdValue:A,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:H.to.token.displayName,image:H.to.token.image},chain:{image:H.to.chain.image},percentageChange:b,warningLevel:P}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(wr,{from:X.from,to:H.to,percentageChange:b,warningLevel:P}),F.createElement(Mn,{size:4}))),F.createElement(rg,{selected:c,listItem:s==="list-item",open:C,className:"quote_container",onOpenChange:w},F.createElement(Wg,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:C,steps:O}),F.createElement(dg,{open:C},F.createElement(mg,null),F.createElement("div",{className:ig()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(hb,{type:"quote-details",className:"widget-quote-step-details-container",key:U,tooltipContainer:j,step:G,hasSeparator:J!==O.length-1,state:G.state})})))))}r(tc,"Quote");import{Divider as wb,Skeleton as vb}from"@rango-dev/ui";import no from"react";import{darkTheme as Tb,styled as ga}from"@rango-dev/ui";var Lg=ga("div",{$$color:"$colors$neutral100",[`.${Tb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Pg=ga("div",{paddingTop:"$2"}),Bg=ga("div",{paddingLeft:"$8"}),_g=ga("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as qg,Divider as Wt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as Cb,styled as oo}from"@rango-dev/ui";var oc=oo("div",{display:"flex"}),Mg=oo("div",{padding:"$10 $0 $20"}),Dg=oo("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),$g=oo("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Fg=oo("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Og=oo("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Ug=oo("div",{width:"65%",display:"flex",justifyContent:"start"}),zg=oo("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Hg=oo("div",{padding:"$15 $0 $15 $0"}),Qg=Cb({display:"flex",justifyContent:"space-between",alignItems:"center"});function br(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(Fg,null,K.createElement(Ug,null,K.createElement(qg,{loading:!0,size:"medium"}),K.createElement(Wt,{size:8,direction:"horizontal"}),K.createElement(zg,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(oc,null,K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Wt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"})),K.createElement(ra,null),!i&&K.createElement(Wt,{size:4})),K.createElement("div",{className:Qg()},K.createElement(oc,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(Mg,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Dg,null,K.createElement($g,null,K.createElement(qg,{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(Hg,null,n,K.createElement(Og,null),n),K.createElement(Wt,{size:12})))}r(br,"QuoteSummarySkeleton");import{ChainToken as Xg,Divider as rc,NextIcon as kb,Skeleton as ha}from"@rango-dev/ui";import Be from"react";import{styled as xr}from"@rango-dev/ui";var Gg=xr("div",{display:"flex",alignItems:"start"}),Vg=xr("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),nc=xr("div",{display:"flex",alignItems:"center",flexGrow:1}),Kg=xr("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),jg=xr("div",{display:"flex",alignItems:"center"});function Ut(t){let{separator:e=!0}=t;return Be.createElement(Be.Fragment,null,Be.createElement(jg,null,Be.createElement(ha,{height:22,width:22,variant:"circular"}),Be.createElement(rc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:15,width:148,variant:"rounded"})),Be.createElement(Gg,null,Be.createElement(_g,{hideSeparator:!e}),Be.createElement(Vg,{extraSpace:e},Be.createElement(nc,null,Be.createElement(Xg,{size:"small",loading:!0}),Be.createElement(rc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:12,variant:"rounded"})),Be.createElement(Kg,null,Be.createElement(kb,{color:"gray",size:16})),Be.createElement(nc,null,Be.createElement(Xg,{size:"small",loading:!0}),Be.createElement(rc,{direction:"horizontal",size:8}),Be.createElement(ha,{height:12,variant:"rounded"})))))}r(Ut,"StepSkeleton");function Ir(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return no.createElement(Lg,{expanded:o,rounded:e!=="basic"},no.createElement(br,{type:e,tagHidden:n}),no.createElement(Pg,null,no.createElement(vb,{height:15,variant:"rounded"})),o&&no.createElement(Bg,null,no.createElement(wb,{size:24}),no.createElement(Ut,null),no.createElement(Ut,null),no.createElement(Ut,{separator:!1})))}r(Ir,"QuoteSkeleton");function Zo(t){let{quote:e,type:o,loading:n,error:i,warning:a,expanded:s=!1,tagHidden:c,onClick:l,showModalFee:p,selected:u,id:d,onClickAllRoutes:f,fullExpandedMode:h=!1,container:g}=t,{inputAmount:m,inputUsdValue:S}=z()(),T=e?.outputAmount?new Eb(e?.outputAmount):null,y=e?it(e):null,w=!(i&&(i.type===0||i.type===1))&&e&&!n;return n?ya.createElement(Hl,null,ya.createElement(Ir,{tagHidden:c,type:o,expanded:s})):w?ya.createElement(Hl,{onClick:()=>l?.(e),id:d},ya.createElement(tc,{quote:e,error:i,container:g,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:f,fullExpandedMode:h,input:{value:m,usdValue:S?.toString()??""},output:{value:T?.toString()??"",usdValue:y?.toString()??""}})):null}r(Zo,"QuoteInfo");import{warn as Ab}from"@rango-dev/logging-core";import{calculatePendingSwap as Nb}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Wb}from"react";import{useRef as bb,useState as xb}from"react";var Ib=2e3;function Sa({request:t}){let[e,o]=xb(!1),n=bb(null),i=r(()=>n.current?.abort(),"cancelFetch"),a=r(async c=>(await new Promise(l=>setTimeout(l,Ib)),await s(c,!1)),"retryFetch"),s=r(async(c,l=!1)=>{i(),n.current=new AbortController,o(!0);try{let p=await t(c,{signal:n.current.signal});return n.current=null,p}catch(p){if(l)return await a(c);throw p}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:i}}r(Sa,"useFetch");function Yg(){let{fetch:t,loading:e,cancelFetch:o}=Sa({request:async(n,i)=>await dt().confirmRoute(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(Yg,"useFetchConfirmQuote");function Ta(t){if(!t.swaps)throw new Error(te().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=ic(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}r(Ta,"throwErrorIfResponseIsNotValid");function ic(t){if(qd(t)){let{swap:n,fromAmountRangeError:i,recommendation:a}=Gd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:i}}:null}let o=jd(t);if(o){let n=_i(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}r(ic,"getQuoteError");function Zg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:i,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=En({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=Zd(e,i,n.blockchains);return p.length===0||(c.balance={messages:p}),c}r(Zg,"generateWarnings");function Ca(t){return t?.code==="ERR_CANCELED"?{type:2}:t.cause?t.cause:t?.code==="ERR_BAD_REQUEST"?{type:0,diagnosisMessage:t.response.data.error}:{type:1,diagnosisMessage:t.message}}r(Ca,"handleQuoteErrors");function ac(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:i,selectedQuote:a,customDestination:s,resetAlerts:c}=z()(),{slippage:l,customSlippage:p}=k(),u=k().getDisabledLiquiditySources(),d=k().blockchains(),f=k().tokens(),{findToken:h}=k(),{swapMode:g}=rt(),m=p||l,{fetch:S,cancelFetch:T,loading:y}=Yg();return Wb(()=>T,[]),{loading:y,fetch:r(async w=>{let v=w.selectedWallets,I=w?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((x,b)=>(x[b.chain]=b.address,x),{}),E={requestId:a?.requestId||"",selectedWallets:A,destination:I||void 0};try{return await S(E,!0).then(x=>{let{result:b}=x;if(!b)throw new Error(x.error??"Error fetching updated quote");Ta({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let P={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};i(P);let N={slippage:m.toString(),disabledSwappersGroups:u},O=Zg({previousQuote:a??void 0,currentQuote:P,meta:{blockchains:d},selectedWallets:v,userSlippage:m,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=Nb({inputAmount:o.toString(),bestRoute:b,wallets:Yd(v),settings:N,validateBalanceOrFee:!q,meta:{blockchains:d,tokens:f},swapMode:g});return{quote:P,swap:j,error:null,warnings:O}})}catch(x){let b=Ca(x);return b.type!==2&&Ab(new Error("confirm swap error"),{tags:{...b,type:Ye[b.type],initialQuote:a,requestBody:E}}),{swap:null,error:b,warnings:null}}},"fetch"),cancelFetch:T}}r(ac,"useConfirmSwap");function Jg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}r(Jg,"toNumberOrNull");function $n(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=Ho(t),i=it(t);return{routeId:t.requestId,sourceChain:e?.from.blockchain??"",destinationChain:o?.to.blockchain??"",sourceTokenSymbol:e?.from.symbol??"",sourceTokenAddress:e?.from.address??null,destinationTokenSymbol:o?.to.symbol??"",destinationTokenAddress:o?.to.address??null,sourceTokenAmount:Jg(t.requestAmount),destinationTokenAmount:Jg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:i?i.toNumber():null}}r($n,"buildSwapEstimatePayload");var Ub=_b("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Rg}`]:{width:"$48",height:"$48"}}),zb=cc({flexGrow:1,paddingRight:"$10"}),Hb=cc({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Qb=cc({display:"flex",justifyContent:"space-between",alignItems:"center"});function eh(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:i,quoteWarningsConfirmed:a}=z()(),s=Ob(),[c,l]=Ar(""),p=!n,[u,d]=Ar(!1),[f,h]=Ar(!1),{isActiveTab:g}=re(),m=k().getDisabledLiquiditySources(),S=Fb(m),{manager:T}=Lb(),{fetch:y,loading:C,cancelFetch:w}=ac(),[v,I]=Ar({swap:null,error:null,warnings:null}),[A,E]=Ar(!1),x=r(async({selectedWallets:L,customDestination:Z})=>{let Y=await y?.({selectedWallets:L,customDestination:Z});return I(Y),Y},"onConfirmSwap"),b=r(async()=>{if(v.swap&&n)try{await T?.create("swap",{swapDetails:v.swap},{id:v.swap.requestId});let L=`../${$.swaps}/${v.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){l("Error: "+L?.message)}},"addNewSwap"),P=r(async()=>{h(!0),await b(),h(!1)},"onConfirm"),N=r(async()=>{v.warnings?.quote&&Dd(v.warnings.quote)&&!a?E(!0):(t&&oe({type:"swapStarted",payload:{...$n(t),stepCount:t.swaps.length}}),await P())},"onStartConfirmSwap"),O=r(async()=>{I({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:i}).then(L=>{I(L)}).catch(L=>console.error(L))},"onRefresh");ka(()=>{!!S.current.length&&!m.length&&O(),S.current=m},[m.length]),ka(()=>{p&&w()},[p]),ka(()=>{p&&d(p)},[p]),ka(()=>{p||y({selectedWallets:o,customDestination:i}).then(L=>I(L)).catch(L=>console.error(L))},[]),$b(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=v.warnings?.quote??null,j=v.error,ee=[];if(c&&ee.push($e.createElement(Pb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let L=`../${$.settings}`;ee.push($e.createElement(kr,{warning:q,error:j,couldChangeSettings:!1,refetchQuote:O,skipAlerts:j?.type===4||q?.type===2,showWarningModal:A,confirmationDisabled:!g,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await b()},onChangeSettings:()=>s(L)}))}return $e.createElement(se,{header:{title:sc.t("Confirm Swap"),onWallet:()=>{let L=`../${$.wallets}`;s(L)}},footer:$e.createElement(Ub,null,$e.createElement("div",{className:zb()},$e.createElement(Bb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:C||f,disabled:!!v.error||!g,onClick:N},sc.t("Start Swap"))),$e.createElement(Rg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:C||f,disabled:!g,onClick:d.bind(null,!0)},$e.createElement(Db,{size:24})))},u&&$e.createElement(_f,{open:u,onClose:()=>d(!1),onCancel:w,loading:C,onCheckBalance:x}),$e.createElement(ce,null,$e.createElement("div",{className:Qb()},$e.createElement(Mb,{variant:"title",size:"small"},sc.t("You get")),$e.createElement("div",{className:Hb()},$e.createElement(Hi,{onClick:!C&&!u&&!A?O:void 0}))),$e.createElement(lc,{size:"12"}),Im(ee.map((L,Z)=>({element:L,key:`alert-${Z}`})),$e.createElement(lc,{size:10})),ee.length>0?$e.createElement(lc,{size:10}):null,$e.createElement(Zo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:v.error,loading:C,warning:v.warnings?.quote??null})))}r(eh,"ConfirmSwapPage");import{i18n as io}from"@lingui/core";import{Button as kc,CustomTokensZeroStateDarkIcon as cx,CustomTokensZeroStateIcon as px,DeleteIcon as ux,Divider as Br,IconButton as dx,MessageBox as mx,NotFound as fx,styled as vc}from"@rango-dev/ui";import Se,{useState as wc}from"react";import{useNavigate as gx}from"react-router-dom";import{CloseIcon as qb,IconButton as Gb,SearchIcon as Vb,TextField as Kb}from"@rango-dev/ui";import Fn from"react";import{styled as th}from"@rango-dev/ui";var oh=th("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),nh=th("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function Lt(t){let{variant:e,fullWidth:o,color:n,size:i,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,f=s.length?Fn.createElement(Gb,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Fn.createElement(qb,{color:"gray",size:10})):null;return p&&(f=p),Fn.createElement(nh,null,Fn.createElement(Kb,{prefix:Fn.createElement(oh,null,Fn.createElement(Vb,{color:"black"})),id:u,suffix:f,fullWidth:o,color:n,variant:e,style:{borderRadius:25,alignItems:"center",...c},size:i,value:s,onChange:a,...d}))}r(Lt,"SearchInput");import{i18n as Cc}from"@lingui/core";import{Button as Zb,CustomTokenWarning as Jb,darkTheme as gh,Divider as ro,ExternalLinkIcon as Rb,Image as ex,ListItem as tx,NotFound as ox,PinIcon as nx,Skeleton as Jo,Typography as Lr,VirtualizedList as rx}from"@rango-dev/ui";import _,{useState as ix}from"react";import{useTranslation as ax}from"react-i18next";import{Divider as mh,ListItem as Yb,Skeleton as Wr}from"@rango-dev/ui";import Pt from"react";import{css as On,darkTheme as pc,ImageContainer as jb,ListItemButton as Xb,styled as st,Typography as rh}from"@rango-dev/ui";var uc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),dc=On({position:"relative",height:12,width:"30%",maxWidth:"150px"}),mc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),fc=On({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${pc} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),gc=On({}),hc=On(),ih=st("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),yc=st("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),wa=st("ul",{flexGrow:1,height:"100%",padding:0,margin:0,display:"flex",flexDirection:"column",listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${dc}`]:{[`& .${fc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${gc}`]:{bottom:"-15px"},[`& .${uc}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${mc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),ah=st(Xb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),Sc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Tc=st(rh,{}),sh=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${hc}`]:{$$color:"$colors$neutral600",[`.${pc} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Nr=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),EV=st("div",{display:"flex",alignItems:"center"}),lh=st("div",{position:"relative",[`& ${jb}`]:{borderRadius:"$xm",overflow:"hidden"}}),ch=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),ph=st(rh,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),uh=st("a",{"& svg:hover":{color:"$colors$info"}}),dh=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":{[`.${pc} &`]:{color:"$foreground"}}}});function fh(t){return Pt.createElement(wa,null,Array.from(Array(t.size),e=>Pt.createElement(Yb,{key:e,hasDivider:!0,start:Pt.createElement(Wr,{variant:"circular",width:35,height:35}),end:Pt.createElement(Nr,null,Pt.createElement(Wr,{variant:"text",size:"large",width:70}),Pt.createElement(mh,{size:4}),Pt.createElement(Wr,{variant:"text",size:"medium",width:50})),title:Pt.createElement("div",null,Pt.createElement(Wr,{variant:"text",size:"large",width:90}),Pt.createElement(mh,{size:4}),Pt.createElement(Wr,{variant:"text",size:"medium",width:90}))})))}r(fh,"LoadingTokenList");var sx=20,lx=r(t=>{let{address:e,name:o,url:n,token:i,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return _.createElement("div",{className:dc()},o?_.createElement("div",{className:uc()},o):_.createElement(yc,{className:mc()},_.createElement(Lr,{variant:"title",size:"xmedium"},i.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(Sc,{css:a},_.createElement(Tc,{variant:"body",size:"xsmall",css:s},i.blockchain))),!!e&&_.createElement("div",{className:`${fc()} ${!o&&gc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",_.createElement(ro,{size:4,direction:"horizontal"}),_.createElement(uh,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Rb,{size:12}))))},"renderDesc");function Pr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:i,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=k().fetchStatus,u=k().blockchains(),{getBalanceFor:d,fetchingWallets:f}=k(),{isTokenPinned:h}=k(),{setFromToken:g,setToToken:m}=z()(),{t:S}=ax(),T=Ve(),[y,C]=ix(null),w=r(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):m({token:y,meta:{blockchains:u}})},"updateToken"),v=r(()=>{w(),T()},"handleImportToken"),I=r(x=>{if(x.customToken){let{customToken:P,...N}=x;return _.createElement(Zb,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:r(q=>{q.stopPropagation(),C({...N,warning:!0})},"handleClick")},_.createElement(Lr,{variant:"body",size:"xsmall",color:"background"},S("import")))}let b=fi(d(x));return s?s(x):f?_.createElement(Nr,null,_.createElement(Jo,{variant:"text",size:"large",width:70}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:50})):b&&_.createElement(sh,null,_.createElement(ph,{variant:"title",size:"small"},b.amount),_.createElement("div",null),b.usdValue&&_.createElement(Lr,{variant:"body",className:hc(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),A=r(()=>_.createElement(rx,{style:{flexGrow:1,minHeight:0},itemContent:x=>{let b=e[x];if(b==="skeleton")return _.createElement(tx,{hasDivider:!0,start:_.createElement(Jo,{variant:"circular",width:35,height:35}),end:_.createElement(Nr,null,_.createElement(Jo,{variant:"text",size:"large",width:70}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Jo,{variant:"text",size:"large",width:90}),_.createElement(ro,{size:4}),_.createElement(Jo,{variant:"text",size:"medium",width:90}))});let P=u.find(Z=>Z.name===b?.blockchain);if(!P||!b)return null;let N=b.address,O=ll(P.color,"main"),q={$$color:O.main150,[`.${gh} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${gh} &`]:{$$color:O.main150},color:"$$color"},ee=r(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick"),L=N?ii({contractAddress:N,blockchainMeta:P}):void 0;return _.createElement(dh,null,_.createElement(ah,{"tab-index":x,key:`${b.symbol}${N}`,id:`${b.symbol}${N}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b?.customToken,onClick:ee,start:_.createElement(lh,null,_.createElement(ex,{src:b.image===""?si:b.image,size:30}),t.type!=="custom-token"&&b&&h(b,t.type)&&_.createElement(ch,null,_.createElement(nx,{size:12,color:"gray"}))),title:b.name||!b.name&&!N?_.createElement(yc,null,_.createElement(Lr,{variant:"title",size:"xmedium"},b.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(Sc,{css:q},_.createElement(Tc,{variant:"body",size:"xsmall",css:j},b.blockchain)),l&&b.warning&&_.createElement(_.Fragment,null,_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(Jb,{container:W()}))):void 0,description:typeof b!="string"&&P.info&&N&&L?lx({address:N,token:b,customCssForTag:q,customCssForTagTitle:j,name:b.name,url:L}):b.name||void 0,end:I(b)}))},totalCount:e.length,key:`${i}-${o}`}),"renderList"),E=y?Po(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Lr,{variant:"label",size:"large"},Cc.t("Select Token")),_.createElement(ro,{size:4})),_.createElement(ih,null,_.createElement(ro,{size:4}),p==="loading"&&_.createElement(fh,{size:sx}),p==="success"&&(e.length?_.createElement(_.Fragment,null,_.createElement(yr,{token:y,address:y?.address??"",blockchain:E??void 0,onImport:v,onExitErrorModal:()=>C(null),onExitImportModal:()=>C(null)}),_.createElement(wa,{as:"ul"},A())):!!o&&_.createElement(ox,{title:Cc.t("No results found"),description:Cc.t("Try using different keywords")}))))}r(Pr,"TokenList");var hx=vc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),yx=vc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),Sx=vc(dx,{"&:hover":{"& svg":{color:"$secondary550"}}});function hh(){let[t,e]=wc(""),{deleteCustomToken:o}=k(),n=k().customTokens(),{fromToken:i,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=ho({}),p=gx(),[u,d]=wc(!1),[f,h]=wc(),g=r(y=>{let C=y.target.value;e(C)},"handleSearch"),m=l==="dark",S=n.filter(y=>pt(y.symbol,t)||pt(y.address||"",t)||pt(y.name||"",t)),T=r(()=>{if(f){let y=a?kt(a):null,C=i?kt(i):null,w=kt(f);y===w?c({token:null}):C===w&&s({token:null}),o(f)}d(!1)},"handleDeleteCustomToken");return Se.createElement(se,{header:{title:io.t("Custom Tokens")}},Se.createElement(ce,null,Se.createElement(hx,null,n.length?Se.createElement(Se.Fragment,null,Se.createElement(Lt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:io.t("Search Token"),onChange:g}),Se.createElement(Br,{size:16}),Se.createElement(Pr,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>Se.createElement(Sx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},Se.createElement(ux,{size:12,color:"gray"}))})):Se.createElement(yx,null,Se.createElement(fx,{icon:m?Se.createElement(cx,{size:200}):Se.createElement(px,{size:200}),title:io.t("No custom tokens"),description:io.t("press the button to add your custom token")})),Se.createElement(Br,{size:20}),Se.createElement(kc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},io.t("Add Custom Token"))),Se.createElement(ie,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},Se.createElement(mx,{title:io.t("Delete Custom Token"),type:"error",description:io.t("Are you sure you want to Delete this Token?")},Se.createElement(Br,{size:40}),Se.createElement(Br,{size:10}),Se.createElement(kc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},io.t("Yes, Delete it")),Se.createElement(Br,{size:12}),Se.createElement(kc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},io.t("No, Continue"))))))}r(hh,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as Fx}from"@rango-dev/queue-manager-react";import{Button as Wc,darkTheme as Ox,Divider as vo,MessageBox as Ux,NotFound as zx,styled as Lc,Tabs as Hx,Typography as ba}from"@rango-dev/ui";import{TransactionStatus as Dr}from"rango-types";import ne,{useMemo as Mh,useState as $r}from"react";import{useNavigate as Qx}from"react-router-dom";import{FilterIcon as bx,Popover as xx}from"@rango-dev/ui";import Ro from"react";import{css as Tx,darkTheme as va,IconButton as Cx,styled as _r}from"@rango-dev/ui";var Ec=_r("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${va} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),yh=_r(Cx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${va} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${va} &`]:{backgroundColor:"$neutral"},[`& ${Ec}::before`]:{backgroundColor:"$secondary100",[`.${va} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Sh=_r("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Th=_r("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Ch=Tx({display:"flex",justifyContent:"space-between",alignItems:"center"}),kh=_r("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as wh}from"@lingui/core";import{Button as kx,Divider as vh,ListItemButton as wx,Radio as vx,RadioRoot as Ex,Typography as Eh}from"@rango-dev/ui";import gt from"react";function bh(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(Th,null,gt.createElement("div",{className:Ch()},gt.createElement(Eh,{size:"small",variant:"body"},wh.t("Status")),gt.createElement(kx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},wh.t("Reset"))),gt.createElement(vh,{size:10}),gt.createElement(Ex,{value:e},gt.createElement(kh,null,t.list.map((n,i)=>gt.createElement(wx,{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(vh,{direction:"horizontal",size:4}),gt.createElement(Eh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(vx,{value:n.id}),onClick:o})))))}r(bh,"FilterSelectorContent");function bc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:i,open:a}=t;return Ro.createElement("div",null,Ro.createElement(xx,{open:a,align:"end",onOpenChange:o,container:W(),content:Ro.createElement(bh,{list:i,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Ro.createElement(yh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Ro.createElement(Ec,{isSelect:!!n},Ro.createElement(bx,{size:16,color:"black"}),!!n&&Ro.createElement(Sh,null)))))}r(bc,"FilterSelector");import{i18n as Nx}from"@lingui/core";import{getCurrentStep as Wx}from"@rango-dev/queue-manager-rango-preset";import{Divider as Wh,GroupedVirtualizedList as Lx,Skeleton as Px,SwapListItem as Lh,Typography as Bx}from"@rango-dev/ui";import et,{useCallback as Ph,useEffect as _x,useRef as Mx,useState as Dx}from"react";function xh(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(xh,"calculateGroupsSoFar");import{css as Ix,darkTheme as Ax,styled as Mr}from"@rango-dev/ui";var xc=Ix(),Ih=Mr("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),Ic=Mr("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${xc}`]:{$$color:"$colors$neutral600",[`.${Ax} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ac=Mr("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Ah=Mr("div",{gap:"$10",display:"flex",flexDirection:"column"}),Nh=Mr("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var $x=10;function Nc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:i}=t,[a,s]=Dx([]),c=Mx(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=Ph(xh,[]),f=Ph(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,$x),s(d(p,c.current)))},[e.length]);if(_x(()=>{i||f()},[i,f]),i){let h=[1,2];return et.createElement(et.Fragment,null,[h,h].map((m,S)=>et.createElement(Ic,{key:S},et.createElement(Ac,null,et.createElement(Px,{variant:"text",width:60,size:"small"}),et.createElement(Wh,{size:16})),et.createElement(Wh,{size:4}),et.createElement(Ah,null,m.map((y,C)=>et.createElement(Lh,{isLoading:!0,key:C}))))))}return et.createElement(Lx,{style:{flexGrow:1,minHeight:0},endReached:()=>{c.current<e.length&&f()},groupCounts:a,groupContent:h=>et.createElement(Ic,null,et.createElement(Ac,null,et.createElement(Bx,{variant:"label",size:"medium",className:xc()},u[h]))),itemContent:(h,g)=>{let m=l[h];if(!m)return null;let S=Wx(m),T=m.steps[0],y=m.steps[m.steps.length-1];return!T||!y?null:et.createElement(Ih,{key:m.requestId},et.createElement(Lh,{className:"widget-history-group-list-swap-item-btn",requestId:m.requestId,creationTime:m.creationTime,status:m.status,onClick:o,currentStep:S,tooltipContainer:W(),onlyShowTime:u[g]===Nx.t("Today"),swapTokenData:{from:{token:{image:T.fromLogo,displayName:T.fromSymbol},blockchain:{image:T.fromBlockchainLogo||""},amount:M(m.inputAmount,6,6),realAmount:m.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(Nc,"HistoryGroupedList");import{i18n as Ea}from"@lingui/core";import Bh from"dayjs";var _h=r(t=>{let e=new Map([["today",{title:Ea.t("Today"),swaps:[]}],["week",{title:Ea.t("This week"),swaps:[]}],["month",{title:Ea.t("This month"),swaps:[]}],["year",{title:Ea.t("This year"),swaps:[]}]]);function o(l,p){e.has(l)||e.set(l,{title:l,swaps:[]}),e.get(l)?.swaps.push(p)}r(o,"addYearsToOutput");let n=Bh();t.forEach(l=>{let p=Number(l.creationTime),u=Bh(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=Lc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),Gx=Lc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Vx=Lc("div",{"._typography":{color:"$neutral700",[`.${Ox}&`]:{color:"$neutral900"}}}),Kx=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 Dh(){let t=Qx(),{manager:e,state:o}=Fx(),n=Et(e).map(({swap:E})=>E),[i,a]=$r(""),[s,c]=$r(!1),l=!o.loadedFromPersistor,[p,u]=$r(""),[d,f]=$r(!1),[h,g]=$r("all"),m=r(E=>{let x=E.target.value;a(x)},"handleSearch"),{isMultiMode:S}=rt(),T=[{id:Dr.SUCCESS,title:Fe.t("Complete")},{id:Dr.RUNNING,title:Fe.t("Running")},{id:Dr.FAILED,title:Fe.t("Failed")}],y=[{id:"all",title:Fe.t("All")},{id:"swap",title:Fe.t("Swap")},{id:"refuel",title:Fe.t("Refuel")}],C=Mh(()=>!i&&!p&&h==="all"?n:n.filter(E=>{let{inputAmount:x,status:b,steps:P,requestId:N,mode:O}=E;return(!i||Mt(x,i)||Mt(b,i)||Kx(P,i)||Mt(N,i))&&(!p||p===b)&&(h==="all"?!0:h==="swap"?!O||O==="swap":h==="refuel"?O==="refuel":!1)}),[n,i,p,h]),w=!C?.length&&!l,v=r(()=>f(!1),"onCloseModal"),I=r(async()=>{try{await e?.clearQueue(),f(!1)}catch(E){console.log(E)}},"onClear"),A=Mh(()=>!n.some(E=>E.status===Dr.SUCCESS||E.status===Dr.FAILED),[n]);return ne.createElement(se,{header:{title:Fe.t("History"),suffix:ne.createElement(yo,null,ne.createElement(Wc,{id:"widget-history-clear-btn",disabled:A,variant:"ghost",size:"xsmall",onClick:()=>f(!0)},ne.createElement(ba,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},ne.createElement(ce,null,ne.createElement(Gx,null,ne.createElement(Lt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Fe.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:m,style:{height:36},value:i}),ne.createElement(vo,{size:10,direction:"horizontal"}),ne.createElement(bc,{filterBy:p,open:s,onOpenChange:E=>c(E),onClickItem:E=>u(E),list:T})),ne.createElement(vo,{size:"16"}),S&&!l&&ne.createElement(ne.Fragment,null,ne.createElement(Hx,{items:y,onChange:E=>g(E.id),value:h,type:"secondary"}),ne.createElement(vo,{size:"12"})),ne.createElement(qx,null,w&&ne.createElement(Nh,null,ne.createElement(vo,{size:32}),ne.createElement(zx,{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(Nc,{list:C,onSwapClick:t,groupBy:_h,isLoading:l}))),ne.createElement(ie,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},ne.createElement(vo,{size:20}),ne.createElement(Ux,{type:"warning",title:Fe.t("Clear Transaction History"),description:ne.createElement(Vx,null,ne.createElement(ba,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ne.createElement(vo,{size:"24"}),ne.createElement(ba,{variant:"body",size:"small"},Fe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ne.createElement(vo,{size:30}),ne.createElement(Wc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:I},Fe.t("Yes, Clear the history")),ne.createElement(vo,{size:10}),ne.createElement(Wc,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},ne.createElement(ba,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}r(Dh,"HistoryPage");import{i18n as uy}from"@lingui/core";import{Button as NI,Divider as Gc,styled as WI,WarningIcon as LI}from"@rango-dev/ui";import PI from"bignumber.js";import Ce,{useEffect as dy,useState as my}from"react";import{useNavigate as BI}from"react-router-dom";import{i18n as Fh}from"@lingui/core";import{Alert as Xx,Divider as Pc,NoRouteIcon as Yx,Typography as Zx}from"@rango-dev/ui";import en from"react";import{styled as jx}from"@rango-dev/ui";var $h=jx("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Bc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Kt(t,e)?en.createElement($h,null,en.createElement(Pc,{size:10}),en.createElement(Yx,{size:24,color:"gray"}),en.createElement(Pc,{size:4}),en.createElement(Zx,{variant:"title",size:"small"},Fh.t("No Routes Found")),en.createElement(Pc,{size:4}),en.createElement(Xx,{title:Fh.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}r(Bc,"SameTokensWarning");import{Alert as Jx,Button as Rx}from"@rango-dev/ui";import Uh from"react";import{i18n as xa}from"@lingui/core";function Oh(t){let e=null;return t===Si?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:xa.t("Reset"),title:xa.t("Slippage cannot be set lower than 0.01%.")},e):t>dn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:xa.t("Change"),title:xa.t("Caution, your slippage is high!")},e):null}r(Oh,"makeAlerts");function zh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:i}=k(),{onChangeSettings:a}=t,c=Oh(o!==null?o:e),l=r(p=>{p==="reset-slippage"?(n(yi),i(null)):p==="change-settings"&&a()},"onClickActionButton");return c?Uh.createElement(Jx,{title:c.title,type:c.alertType,variant:"alarm",action:Uh.createElement(Rx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}r(zh,"SlippageWarningsAndErrors");import{i18n as rI}from"@lingui/core";import{IconButton as iI,ReverseIcon as aI,Skeleton as sI,Tooltip as lI,Typography as Fr}from"@rango-dev/ui";import ht from"react";import Ia from"bignumber.js";function Qh(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(Qh,"getSlippageColor");function qh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new Ia(e),i=new Ia(o),a=n.dividedBy(i),s;return a.isLessThan(1)?s=a.toFixed(14).replace(/\.?0+$/,""):a.toFixed(0).length>10?s=a.toFixed(0).slice(0,10):s=a.toFixed(2),{displayValue:s,rawValue:a.toFixed()}}r(qh,"getUsdExchangeRate");function Gh(t,e){let o=new Ia(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,Ia.ROUND_DOWN).toFormat(2)}`}r(Gh,"formatTokenValueInUsd");import{darkTheme as oI,styled as Mc,Typography as nI}from"@rango-dev/ui";var Vh=Mc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),Kh=Mc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${oI} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Dc=Mc(nI,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function $c(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:i}=k(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:f}=ho({}),h=fn(d),g=f==="dark",m=n==="default",S={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,C=p?.swaps[p?.swaps.length-1]?.to||l,w=m?y:C,v=m?C:y,I=Number(m?p?.outputAmount:p?.requestAmount),A=Number(m?p?.requestAmount:p?.outputAmount),E=I||w.usdPrice,x=A||v.usdPrice,{rawValue:b,displayValue:P}=qh({toTokenUsdPrice:x,fromTokenUsdPrice:E});return ht.createElement(Vh,null,ht.createElement(Fr,{variant:S||T?"label":"body",size:S||T?"medium":"small",color:Qh({error:S,warning:T,isDarkTheme:g})},rI.t("Slippage:")," ",d,"%"),u?ht.createElement(sI,{height:16,width:104,variant:"rounded"}):E&&x&&ht.createElement(Kh,null,ht.createElement(Fr,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Dc,{className:"rate-text",variant:"body",size:"small"},v.symbol),ht.createElement(iI,{id:"widget-home-page-change-rate-button",onClick:i},ht.createElement(aI,{size:14,color:"secondary"})),ht.createElement(lI,{container:W(),side:"top",sideOffset:4,content:ht.createElement(Fr,{className:"rate-text",variant:"body",size:"small"},b)},ht.createElement(Fr,{className:"rate-text",variant:"body",size:"small"},P)),ht.createElement(Dc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement(Fr,{color:"neutral600",variant:"body",size:"small"},"~",Gh(Number(b),w.usdPrice))))}r($c,"SwapMetrics");import{i18n as fI}from"@lingui/core";import{Header as gI}from"@rango-dev/ui";import Eo,{useEffect as hI,useState as yI}from"react";import{i18n as pI}from"@lingui/core";import{Divider as Oc,FullExpandedQuote as uI,Typography as dI}from"@rango-dev/ui";import ve from"react";import{styled as Fc}from"@rango-dev/ui";var jh=Fc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Xh=Fc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Yh=Fc("div",{width:"146px"});import{i18n as Or}from"@lingui/core";import{Select as cI}from"@rango-dev/ui";import Zh from"react";function Aa(t){let{updateQuotePartialState:e,sortStrategy:o}=z()(),n=[{value:"SMART",label:Or.t("Smart Routing")},{value:"FEE",label:Or.t("Lowest Fee")},{value:"SPEED",label:Or.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Or.t("Maximum Return")},{value:"PRICE",label:Or.t("Maximum Output")}];return Zh.createElement(Yh,null,Zh.createElement(cI,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:i=>{e("sortStrategy",i.value)},variant:"filled"}))}r(Aa,"SelectStrategy");var Jh=3;function Ur(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:f,sortStrategy:h,error:g}=z()(),{slippage:m,customSlippage:S}=k(),{findToken:T}=k(),y=c||W(),C=!!p&&p.results.length,w=S??m,{config:{__UNSTABLE_OR_INTERNAL__:v}}=k(),I=r(x=>{if(!d||!f||!p)return null;let b={requestAmount:p.requestAmount,validationStatus:null,...x};return En({currentQuote:b,userSlippage:w,findToken:T})},"getQuoteWarning"),A=g?.type===0||g?.type===1,E=p?.results?Pi(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Xh,null,ve.createElement(dI,{size:"xmedium",variant:"title"},pI.t("Sort by")),ve.createElement(Aa,{container:y})),ve.createElement(Oc,{size:"10"})),e&&Array.from({length:Jh},(x,b)=>ve.createElement(ve.Fragment,{key:b},s?ve.createElement(uI,{campaignTag:v?.campaignTag,loading:!0}):ve.createElement(Ir,{tagHidden:!1,type:"list-item",expanded:!1}),b!==Jh-1&&ve.createElement(Oc,{size:16}))),!e&&ve.createElement(ve.Fragment,null,C?E.map((x,b)=>{let P=I(x),N=ic(x.swaps),O=E.length-1===b;return ve.createElement(ve.Fragment,{key:x.requestId},ve.createElement(Zo,{id:"widget-quotes-quote-info-container",showModalFee:i,container:y,selected:l?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:N?.options||null,warning:P,fullExpandedMode:s,onClick:q=>{N||u("warning",P),u("error",N?.options||null),o(q)},type:"list-item"}),!O&&ve.createElement(Oc,{size:16}))}):A&&ve.createElement(jh,null,ve.createElement(Tr,{size:s?"large":"small",error:g,fetch:n}))))}r(Ur,"Quotes");import{darkTheme as mI,styled as Rh}from"@rango-dev/ui";var ey=Rh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${mI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),ty=Rh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var SI=100;function Uc(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:i,isVisible:a}=t,[s,c]=yI(!1),l=s?"":"is-hidden",{config:p}=k(),u=p?.variant==="full-expanded",d=Mo();return hI(()=>{let f=null;return a?f=setTimeout(()=>{c(!0)},SI):(c(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),Eo.createElement(ey,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Vi()} widget-expanded-quotes-container`,id:wt.EXPANDED_BOX_ID},Eo.createElement(gI,{title:fI.t("Routes"),suffix:Eo.createElement(Eo.Fragment,null,Eo.createElement(Aa,{container:d}),Eo.createElement(Vo,{container:d,onClickRefresh:i,hidden:["history","notifications","settings"]}))}),Eo.createElement(ty,null,Eo.createElement(Ur,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Mo(),onClickOnQuote:n,fullExpandedMode:u})))}r(Uc,"ExpandedQuotes");import{i18n as ly}from"@lingui/core";import{SwapInput as cy}from"@rango-dev/ui";import wI from"bignumber.js";import zr from"react";import{ReverseIcon as kI}from"@rango-dev/ui";import Hc from"react";import{keyframes as TI,styled as oy}from"@rango-dev/ui";var zc=450,CI=TI({"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)"}}),ny=oy("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),ry=oy("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${CI} ${zc}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 Qc(){let t=z().use.switchFromAndTo();return Hc.createElement(ny,null,Hc.createElement(ry,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},zc),t()}},Hc.createElement(kI,{size:12})))}r(Qc,"SwitchFromAndToButton");import{styled as iy}from"@rango-dev/ui";var ay=iy("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),sy=iy("div",{position:"relative"});function qc(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:f,outputAmount:h,outputUsdValue:g,selectedQuote:m}=z()(),{swapMode:S}=rt(),{connectedWallets:T,getBalanceFor:y}=k(),C=a?y(a):null,w=fi(C)?.amount??"0",v=C?new wI(C.amount).shiftedBy(-C.decimals):pe,I=!!s&&Lu(T,s.name),A=!qs(m,d,f),E=!qs(m,d,g),x=!f||!g||!g.gt(0)?null:Zt(f.toString(),g.toString());return zr.createElement(ay,null,zr.createElement(sy,null,zr.createElement(cy,{label:ly.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:A?void 0:M(f,4,4),realUsdValue:A?void 0:f?.toString(),error:A?te().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:I,tooltipContainer:W(),onSelectMaxBalance:()=>{let b=v.isGreaterThan(pe)?v.toFixed():"";p(b)},anyWalletConnected:T.length>0}),S==="swap"&&zr.createElement(Qc,null)),zr.createElement(cy,{selectionType:S==="swap"?"token":"chain",sharpBottomStyle:!i&&(!!m||e),label:ly.t("To"),mode:"To",id:"widget-swap-to-input",fetchingQuote:e,chain:{displayName:l?.displayName||"",image:l?.logo},token:{displayName:c?.symbol||"",image:c?.image,securityWarning:!!c?.warning},percentageChange:M(Zt(f,g),2,2),warningLevel:Jt(x??0),price:{value:M(h,6,6),usdValue:E?void 0:M(g,4,4),realValue:h?.toString(),realUsdValue:E?void 0:g?.toString(),error:E?te().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}r(qc,"Inputs");import{warn as vI}from"@rango-dev/logging-core";import{useCallback as EI,useEffect as bI,useRef as xI,useState as II}from"react";function py(){let{fetch:t,loading:e,cancelFetch:o}=Sa({request:async(n,i)=>await dt().getAllRoutes(n,i)});return{fetch:t,loading:e,cancelFetch:o}}r(py,"useFetchAllQuotes");var AI=600;function Na({refetchQuote:t}){let{fetch:e,cancelFetch:o}=py(),{excludeLiquiditySources:n,routing:i}=k().config,{connectedWallets:a}=k(),c=a.some(be=>be.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:f,sortStrategy:h,resetQuote:g,error:m,warning:S,setSelectedQuote:T,updateQuotePartialState:y}=z()(),{slippage:C,customSlippage:w,affiliatePercent:v,affiliateRef:I,affiliateWallets:A,fetchStatus:E}=k(),x=k().getLiquiditySources(),b=k().getDisabledLiquiditySources(),P=k().excludeLiquiditySources(),{findToken:N}=k(),{swapMode:O}=rt(),[q,j]=II(!0),ee=xI(u),L=w??C,Y=!l||!p||Kt(l,p)||!Jn(u),ue=r(be=>{j(be)},"resetState"),Ee=r(be=>{let{fromToken:Qe,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J}=be;if(q||ue(!0),!Y&&Qe&&Xe){g();let U=Xd({fromToken:Qe,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});mn("experimental",i)&&(U.experimental=!0),mn("avoidNativeFee",i)&&(U.avoidNativeFee=!0),mn("enableCentralizedSwappers",i)&&(U.enableCentralizedSwappers=!0),i?.maxLength&&(U.maxLength=i.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let qe=Pi(h,de.results),ot=Fd(f,qe,de.requestAmount);j(!1),y("quotes",de),T(ot),de.results?.length&&ot&&hn({type:"routeRequested",payload:{...$n(ot),routeCount:de.results.length}}),Ta({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let po=ot&&En({currentQuote:ot,userSlippage:L,findToken:N});y("warning",po)}).catch(de=>{let qe=Ca(de);qe.type===0?hn({type:"routeNotFound",payload:{sourceChain:Qe.blockchain,destinationChain:Xe.blockchain,sourceTokenSymbol:Qe.symbol,sourceTokenAddress:Qe.address,destinationTokenSymbol:Xe.symbol,destinationTokenAddress:Xe.address,inputAmountUsd:d?d.toNumber():null}}):qe.type===1&&hn({type:"routeFetchFailed",payload:{sourceChain:Qe.blockchain,destinationChain:Xe.blockchain,errorCode:String(de?.response?.status??"")}}),(qe.type===0||qe.type===1)&&g(),qe.type!==2&&(y("error",qe),j(!1),vI(new Error("quote error"),{tags:{...qe,type:Ye[qe.type],requestBody:U}}))})}},"fetch"),Vt=EI(li(be=>{Ee(be)},AI),[Y]);return bI(()=>{if(!t){j(!1);return}if(E!=="success")return;if(Y){j(!1),(f||m||S)&&g();return}if(!Jn(u)&&d?.eq(0)){ue(!1),o();return}g(),ue(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Vt),ee.current=u,be({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:P,disabledLiquiditySources:b,slippage:L,affiliateRef:I,affiliatePercent:v,affiliateWallets:A,contractCall:c}),o},[E,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,x?.length,n,b.length,L,I,v,c,JSON.stringify(A)]),{fetch:()=>Ee({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:P,disabledLiquiditySources:b,slippage:L,affiliateRef:I,affiliatePercent:v,affiliateWallets:A,contractCall:c}),loading:q}}r(Na,"useSwapInput");var _I=WI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),MI=300;function fy(){let t=BI(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:i,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:f}=z()(),[h,g]=my(!1),{isLargeScreen:m,isExtraLargeScreen:S}=ca(),{fetch:T,loading:y}=Na({refetchQuote:a}),{config:C,fetchStatus:w,connectedWallets:v,customSlippage:I,slippage:A,setSlippage:E,setCustomSlippage:x}=k(),{isActiveTab:b}=re(),[P,N]=my(!1),O=I!==null?I:A,{swapMode:q}=rt(),j=fn(O),L=Vd({fetchMetaStatus:w,fetchingQuote:y,inputAmount:n,quote:i,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=$u(m,S,C?.variant),Y=!!n&&!!e&&!!o&&new PI(n).gt(0)&&!om(e,o),ue=Y&&w==="success"&&y,Ee=j?.quoteValidation||c,Qe=(!Z||Z&&l?.results.length)&&(Ee||s),Xe=!!e&&!!o,St=Xe&&!!j,ct=(i||s)&&!P?T:void 0,B=r(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},MI)):t(J)},"onHandleNavigation"),V=r(J=>{i?.requestId!==J.requestId&&(i&&hn({type:"routeChanged",payload:{sourceChain:J.swaps[0]?.from.blockchain??"",destinationChain:J.swaps[J.swaps.length-1]?.to.blockchain??"",fromRouteId:i.requestId,toRouteId:J.requestId}}),N(!1),p(J))},"onClickOnQuote"),H=r(J=>{if(J){if(hi.includes(J)){E(J),x(null);return}x(J)}},"onChangeSlippage"),X=r(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");dy(()=>{u(),f("refetchQuote",!0)},[]),dy(()=>{g(Y)},[Y]);let G=r(()=>{L.action==="connect-wallet"?Ju({type:"clickConnectWallet"},()=>{B($.wallets)}):L.action==="confirm-warning"?N(!0):i&&(oe({type:"swapInitiated",payload:{...$n(i),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(_I,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(NI,{id:`widget-swap-${L.action}-btn`,type:"primary",size:"large",disabled:L.disabled||!b,prefix:L.action==="confirm-warning"&&Ce.createElement(LI,null),fullWidth:!0,onClick:G},L.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:C.title||(q==="swap"?uy.t("Swap"):uy.t("Refuel")),suffix:Ce.createElement(Vo,{hidden:Z?["refresh"]:void 0,onClickRefresh:ct,onClickHistory:()=>B($.swaps),onClickSettings:()=>{B($.settings)}})}},Ce.createElement(ce,null,Ce.createElement(qc,{fetchingQuote:ue,fetchMetaStatus:w,isExpandable:Z,onClickToken:X}),Ce.createElement(Gc,{size:"2"}),Z?null:Ce.createElement(Zo,{quote:i,loading:ue,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:Ee,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{f("refetchQuote",!1),B($.routes)}:void 0}),Xe&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Gc,{size:8}),Ce.createElement($c,{quoteError:s,quoteWarning:Ee,fromToken:e,toToken:o,quote:i,loading:ue})),Qe?Ce.createElement(Ce.Fragment,null,Ce.createElement(kr,{warning:Ee,error:s,skipAlerts:!!j,couldChangeSettings:!0,refetchQuote:T,showWarningModal:P,confirmationDisabled:!b,onOpenWarningModal:()=>N(!0),onCloseWarningModal:()=>N(!1),onChangeSlippage:H,onConfirmWarningModal:()=>{N(!1),d(!0),B($.confirmSwap)},onChangeSettings:()=>B($.settings)})):null,St&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Gc,{size:"10"}),Ce.createElement(zh,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Bc,null))),Z?Ce.createElement(Uc,{loading:ue,onClickOnQuote:V,fetch:T,onClickRefresh:ct,isVisible:h}):null)}r(fy,"Home");import{i18n as gy}from"@lingui/core";import{Alert as DI,Divider as $I,List as FI,ListItemButton as OI,Radio as UI,RadioRoot as zI,Typography as HI}from"@rango-dev/ui";import zt from"react";function bo(){let{setLanguage:t,language:e,config:o}=k(),n=Qu,i=o?.language||gn;return{activeLanguage:e||i,languages:n,defaultLanguage:i,changeLanguage:a=>t(a||gn),resetLanguage:()=>t(null)}}r(bo,"useLanguage");function hy(){let{activeLanguage:t,changeLanguage:e,languages:o}=bo(),n=Ve(),i=o.map(a=>{let{local:s,label:c,SVGFlag:l}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:zt.createElement(HI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:zt.createElement(UI,{value:s}),start:zt.createElement(l,null)}});return zt.createElement(se,{header:{title:gy.t("Language")}},zt.createElement(ce,null,zt.createElement(DI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),zt.createElement($I,{size:"8"}),zt.createElement(zI,{value:t},zt.createElement(FI,{type:zt.createElement(OI,{title:gy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:i}))))}r(hy,"LanguagePage");import{i18n as ao}from"@lingui/core";import{Button as KI,Checkbox as jI,Image as XI,ListItemButton as YI,NotFound as ZI,Typography as JI}from"@rango-dev/ui";import tt,{useState as RI}from"react";import{Checkbox as GI,Skeleton as Sy}from"@rango-dev/ui";import Qr from"react";import{styled as Vc}from"@rango-dev/ui";var Hr=Vc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Kc=Vc("div",{width:80,display:"flex",justifyContent:"flex-end"}),jc=Vc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as QI,styled as qI}from"@rango-dev/ui";var yy=qI(QI,{height:61});var VI=30;function Xc(){return Qr.createElement(Hr,null,Array.from(Array(VI),(t,e)=>Qr.createElement(yy,{hasDivider:!0,key:e,start:Qr.createElement(Sy,{variant:"circular",width:35,height:35}),title:Qr.createElement(Sy,{variant:"text",size:"large",width:90}),end:Qr.createElement(GI,{checked:!1})})))}r(Xc,"LoadingLiquiditySourceList");function Yc({sourceType:t}){let e=k().fetchStatus,o=k().swappers(),n=k().getDisabledLiquiditySources(),[i,a]=RI(""),s=k().toggleLiquiditySource,c=k().isInCampaignMode(),l=Ti(o,n),p={Exchanges:ao.t("Exchanges"),Bridges:ao.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let d=l.filter(y=>u.includes(y.type)),f=d.length===d.filter(y=>y.selected).length,h=t==="Exchanges"?"exchanges":"bridges",g=r(()=>{let y=!f;oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:y?"selectAll":"deselectAll",previousSelectedCount:d.filter(C=>C.selected).length,totalCount:d.length}}),d.forEach(C=>{f?s(C.groupTitle):C.selected||s(C.groupTitle)})},"toggleAllSources"),m=d.map(y=>{let{selected:C,groupTitle:w,logo:v,id:I,...A}=y;return{id:`widget-setting-liquidity-source-${Tu(I.toLowerCase())}-item-btn`,start:tt.createElement(XI,{src:v,size:22,type:"circular"}),onClick:()=>{c||(oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:"individual",sources:[{id:w,enabled:!C}]}}),s(w))},end:tt.createElement(jI,{checked:C,disabled:c}),title:tt.createElement(JI,{variant:"title",size:"xmedium"},ao.t(w)),selected:C,groupTitle:w,logo:v,...A}}),S=r(y=>{let C=y.target.value;a(C)},"handleSearch"),T=m;return i&&(T=m.filter(y=>Mt(y.groupTitle,i))),tt.createElement(se,{header:{title:ao.t(t),suffix:tt.createElement(Kc,null,tt.createElement(KI,{id:`widget-liquidity-source-${f?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},f?ao.t("Deselect all"):ao.t("Select all")))}},tt.createElement(ce,{view:!0},tt.createElement(Lt,{value:i,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:ao.t("Search {sourceType}",{sourceType:p[t]}),onChange:S}),e==="loading"&&tt.createElement(Xc,null),!T.length&&i?tt.createElement(jc,null,tt.createElement(ZI,{title:ao.t("No results found"),description:ao.t("Try using different keywords")})):e==="success"&&tt.createElement(Hr,{disabled:c,className:"widget-liquidity-source-list"},T.map(y=>{let{groupTitle:C,...w}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(YI,{style:{height:"61px"},...w,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}r(Yc,"LiquiditySourcePage");import{i18n as eA}from"@lingui/core";import Wa from"react";import{useNavigate as tA}from"react-router-dom";function Ty(){let t=tA(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:i,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=Na({refetchQuote:n}),p=r(f=>{i(f),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${$.settings}`,d=`../${$.wallets}`;return Wa.createElement(se,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:eA.t("Routes"),suffix:Wa.createElement(Vo,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Wa.createElement(ce,null,Wa.createElement(Ur,{fetch:c,loading:l,onClickOnQuote:p})))}r(Ty,"RoutesPage");import{i18n as xy}from"@lingui/core";import{Divider as Iy,getCategoriesCount as uA,SelectableCategoryList as dA}from"@rango-dev/ui";import so,{useMemo as mA,useState as Ay}from"react";import{useNavigate as fA}from"react-router-dom";import{i18n as Zc}from"@lingui/core";import{Divider as iA,Image as aA,ListItemButton as sA,NotFound as lA,Typography as by}from"@rango-dev/ui";import yt,{useEffect as cA,useState as pA}from"react";var Cy=r((t,e,o)=>t.filter(n=>ci(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as oA,styled as ky}from"@rango-dev/ui";var wy=ky("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),La=ky(xl,{padding:0,margin:0,listStyle:"none",[`& ${oA}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as nA,Skeleton as vy}from"@rango-dev/ui";import Pa from"react";var rA=20;function Ey(){return Pa.createElement(La,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(rA),t=>Pa.createElement(nA,{key:t,hasDivider:!0,start:Pa.createElement(vy,{variant:"circular",width:35,height:35}),title:Pa.createElement(vy,{variant:"text",size:"large",width:90})})))}r(Ey,"LoadingBlockchainList");function Jc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:i,showTitle:a=!0}=t,[s,c]=pA(e),{fetchStatus:l}=k();cA(()=>{c([...Cy(e,o,i)])},[e,o,i]);let p=r(()=>!s.length&&o?yt.createElement(lA,{title:Zc.t("No results found"),description:Zc.t("Try using different keywords")}):yt.createElement(La,{as:"ul",key:`${i}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(sA,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(aA,{src:u.logo,size:30}),title:yt.createElement(by,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(by,{variant:"label",size:"large"},Zc.t("Select Chain")),yt.createElement(iA,{size:4})),yt.createElement(wy,null,l==="loading"&&yt.createElement(Ey,null),l==="success"&&p()))}r(Jc,"BlockchainList");function Ba(t){let{type:e}=t,o=Ve(),[n,i]=Ay(""),[a,s]=Ay("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=k(),f=fA(),{swapMode:h}=rt(),g=k().blockchains({type:e}),m=k().tokens(),S=mA(()=>fu(g,m),[g.length,m.length]),T=uA(S),y=!t.hideCategory&&T!==1,C=r(w=>{if(e==="custom-token")f(`..?blockchain=${w.name}`,{replace:!0});else{if(oe({type:"chainFilterApplied",payload:{side:e==="source"?"from":"to",chain:w.name,filterSource:"expanded"}}),e==="source")l(w);else if(h==="swap")c(w);else{let v=d(w);v&&p({token:v,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return so.createElement(se,{header:{title:xy.t("Select Chain")}},so.createElement(ce,{view:!0},y&&so.createElement(so.Fragment,null,so.createElement(dA,{setCategory:s,category:a,blockchains:S,isLoading:u==="loading"}),so.createElement(Iy,{size:24})),so.createElement(Lt,{value:n,autoFocus:!0,placeholder:xy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>i(""),onChange:w=>i(w.target.value)}),so.createElement(Iy,{size:16}),so.createElement(Jc,{list:S,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:C})))}r(Ba,"SelectBlockchainPage");import{i18n as Da}from"@lingui/core";import{Divider as Dy,Spinner as NA}from"@rango-dev/ui";import xo,{useEffect as WA,useState as LA}from"react";import{useNavigate as PA}from"react-router-dom";import{i18n as tp}from"@lingui/core";import{BlockchainsChip as _a,Divider as Py,Image as By,Skeleton as CA,Tooltip as kA,Typography as op}from"@rango-dev/ui";import xe from"react";import{useEffect as yA}from"react";var Ny=["ETH"];function Rc(t,e,o){let n=JSON.parse(JSON.stringify(t)),i=[];if(n.sort(gA),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(hA(s)),i=n.splice(a)}return{list:n,more:i}}r(Rc,"prepare");function gA(t,e){let o=Ny,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(gA,"sortByMostUsedBlockchains");function hA(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(hA,"generateSortByPreferredBlockchainsFor");function Wy(t,e){return!!e.list.find(o=>o.name===t)}r(Wy,"isInVisibleList");function ep(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=k();yA(()=>{if(e?.selected){let a=Rc(t,o,e);Wy(e.selected,a)||n(e?.selected)}},[e?.selected]);let i=Rc(t,o,e);return{list:i.list,more:i.more,history:[]}}r(ep,"usePrepareBlockchainList");import{styled as SA}from"@rango-dev/ui";var Ly=SA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var wA=6,vA=12;function np(t){let{blockchains:e,type:o,blockchain:n,onChange:i,onMoreClick:a}=t,{showCompactTokenSelector:s}=re(),c=ep(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=k(),p=z().use.resetToBlockchain(),u=z().use.resetFromBlockchain(),d=c.more.length>0,f=c.more[0],h=c.more.length===1&&f,g=!h&&d;return xe.createElement(xe.Fragment,null,!s&&xe.createElement(xe.Fragment,null,xe.createElement(Py,{size:12}),xe.createElement(op,{variant:"label",size:"large"},tp.t("Select Chain"))),xe.createElement(Py,{size:12}),xe.createElement(Ly,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?wA:vA),(m,S)=>xe.createElement(CA,{key:S,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(_a,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(op,{variant:"body",size:"xsmall",color:"secondary500"},tp.t("All"))),c.list.map(m=>xe.createElement(kA,{key:m.name,content:m.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(_a,{className:"widget-blockchains-section-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>i(m)},xe.createElement(By,{src:m.logo,size:30})))),h?xe.createElement(_a,{className:"widget-blockchains-section-only-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>i(f)},xe.createElement(By,{src:f.logo,size:30})):null,g?xe.createElement(_a,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(op,{variant:"body",size:"xsmall",color:"secondary500"},tp._("More +{count}",{count:c.more.length}))):null)))}r(np,"BlockchainsSection");import{useCallback as bA,useRef as xA,useState as rp}from"react";function ip(){let t=k().blockchains(),e=xA(null),{customTokens:o}=k(),[n,i]=rp(!1),[a,s]=rp([]),[c,l]=rp(null),p=r(async(f,h)=>{l(null),i(!0),s([]);try{let g=await dt().searchCustomTokens({query:f,blockchain:h},{signal:e.current?.signal}),m=new Set(o().map(y=>Xt(y))),S=new Set(t.map(y=>y.name)),T=g.tokens.filter(y=>S.has(y.blockchain)&&!m.has(Xt(y)));s(T),i(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&i(!1)}},"fetch"),u=bA(li((f,h)=>{e.current?.signal.aborted||p(f,h)},600),[t.length]);return{fetch:(f,h)=>{e.current=new AbortController,s([]),i(!0),u(f,h)},cancel:r(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}r(ip,"useSearchCustomTokens");function _y(t){return t.trim()?"search":"default "}r(_y,"getTokenSelectionMethod");function Ma(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}r(Ma,"shouldSearchForCustomTokens");function My(t,e,o,n,i){let a=[...t];return Ma(t,o,i)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}r(My,"prepareTokensList");function $a(t){let{type:e}=t,o=PA(),n=Ve(),{fromBlockchain:i,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=k(),{fetch:d,loading:f,tokens:h,cancel:g}=ip(),[m,S]=LA(""),T=e==="source"?i:a,y=T?.name??"",C=k().blockchains({type:e}),w=k().tokens({type:e,blockchain:y,searchFor:m,getBalanceFor:u}),v=My(w,h,m,f,T?.name),I=r(N=>{e==="source"?l(N):p(N)},"updateBlockchain"),A=r(N=>{e==="source"?s({token:N,meta:{blockchains:C}}):c({token:N,meta:{blockchains:C}})},"updateToken"),E=e==="source"?"from":"to",x=r(N=>{oe({type:"chainFilterApplied",payload:{side:E,chain:N.name,filterSource:"featured"}})},"emitChainFilterApplied"),b=r(N=>{oe({type:"tokenSelected",payload:{side:E,tokenName:N.name,tokenSymbol:N.symbol,tokenAddress:N.address,chain:N.blockchain,selectionMethod:_y(m),activeChainFilter:y||"all"}})},"emitTokenSelected"),P={source:Da.t("Source"),destination:Da.t("Destination")};return WA(()=>(Ma(w,m,T?.name)&&d(m,T?.name??void 0),()=>{g()}),[w.length,m,T?.name]),xo.createElement(se,{header:{title:Da.t("Swap {type}",{type:P[e]})}},xo.createElement(ce,null,xo.createElement(np,{blockchains:C,type:e=="source"?"from":"to",blockchain:e==="source"?i:a,onMoreClick:()=>o($.blockchains),onChange:N=>{x(N),I(N)}}),xo.createElement(Dy,{size:24}),xo.createElement(Lt,{value:m,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:Da.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>S(""),onChange:N=>S(N.target.value),suffix:Ma(w,m,T?.name)&&f?xo.createElement(NA,{size:12,color:"secondary"}):void 0}),xo.createElement(Dy,{size:16}),xo.createElement(Pr,{list:v,selectedBlockchain:y,searchedFor:m,type:e,onChange:N=>{b(N),A(N);let O=C.find(q=>N.blockchain===q.name);O&&I(O),n()}})))}r($a,"SelectSwapItemsPage");import{i18n as cp}from"@lingui/core";import{Alert as iN,Button as aN,styled as sN}from"@rango-dev/ui";import tn from"react";import{useInRouterContext as lN,useSearchParams as cN}from"react-router-dom";import{i18n as Hy}from"@lingui/core";import{Alert as DA,Divider as sp,InfoIcon as $A,SlippageIcon as FA,TextField as OA,Tooltip as UA,Typography as Qy}from"@rango-dev/ui";import ze from"react";import{Chip as BA,styled as qr,TextField as _A}from"@rango-dev/ui";var $y=qr("div",{paddingTop:"$5",padding:"$10 $5"}),Fy=qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${_A}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Oy=qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Fa=qr("div",{maxWidth:"280px",padding:"$10"}),Uy=qr(BA,{width:"61px",flexShrink:0});import{i18n as ap}from"@lingui/core";import{Typography as MA}from"@rango-dev/ui";import Gr from"react";function zy(){return Gr.createElement(Fa,null,Gr.createElement(MA,{variant:"label",size:"medium",color:"neutral700"},ap.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Gr.createElement("br",null),Gr.createElement("br",null),Gr.createElement("b",null,ap.t("Warning")),":\xA0",ap.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(zy,"SlippageTooltipContent");function lp(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=k(),i=o!==null?fn(o):null,a=o??t,s=r((u,d)=>{u!==d&&oe({type:"settingsChanged",payload:{setting:"slippage",previousValue:u,newValue:d}})},"emitSlippageChanged"),c=r(u=>{let d=u.target.value,f=parseFloat(d);if(isNaN(f))return n(null);let h=f;f>or&&(h=or),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,f=d.value;wu(f)||(d.value=f.slice(0,-1))},"onInput");return ze.createElement($y,null,ze.createElement(Oy,null,ze.createElement(FA,{size:16,color:"gray"}),ze.createElement(sp,{direction:"horizontal",size:4}),ze.createElement(Qy,{variant:"title",size:"xmedium"},Hy.t("Slippage tolerance per swap")),ze.createElement(sp,{direction:"horizontal",size:4}),ze.createElement(UA,{container:W(),side:"top",sideOffset:4,content:ze.createElement(zy,null)},ze.createElement($A,{color:"gray"}))),ze.createElement(Fy,null,hi.map((u,d)=>{let f=`slippage-${d}`;return ze.createElement(Uy,{id:`widget-slippage-chip-${u.toString()}%-btn`,key:f,onClick:()=>l(u),selected:o===null&&u===t,label:`${u.toString()}%`})}),ze.createElement(OA,{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(Qy,{variant:"body",size:"small"},"%"),placeholder:Hy.t("Custom")})),i&&ze.createElement(ze.Fragment,null,ze.createElement(sp,{size:10}),ze.createElement(DA,{id:"widget-slippage-alert",variant:"alarm",type:i.type,title:i.message})))}r(lp,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as qy,BridgesIcon as zA,ChevronRightIcon as Oa,DarkModeIcon as Gy,Divider as Vr,ExchangeIcon as HA,InfinityIcon as QA,InfoIcon as qA,LanguageIcon as GA,LightModeIcon as Vy,List as VA,ListItem as KA,ListItemButton as jA,Skeleton as XA,styled as YA,Switch as ZA,Tabs as JA,TargetIcon as RA,Tooltip as eN,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as tN}from"react-router-dom";var oN=YA("div",{width:"202px",height:"$40"}),nN=[{id:"light",icon:D.createElement(Vy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:D.createElement(Gy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:D.createElement(qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Auto"))}],rN=r(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(qy,{...e});case"dark":return D.createElement(Gy,{...e});default:return D.createElement(Vy,{...e})}},"getThemeIcon");function Ky(){let t=tN(),{theme:e}=k().config,{setTheme:o,theme:n}=k(),{activeLanguage:i,languages:a}=bo(),s=a.find(L=>L.local===i)?.label,c=k().fetchStatus,l=k().swappers(),p=k().getDisabledLiquiditySources(),{config:{features:u}}=k(),d=k().customTokens(),f=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),m=nt("customTokens",u),S=k().infiniteApprove,T=k().toggleInfiniteApprove,y=Ti(l,p),C=y.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),w=C.length,v=C.filter(L=>L.selected).length,I=y.filter(L=>L.type==="DEX"),A=I.length,E=I.filter(L=>L.selected).length,x=r((L,Z)=>{switch(c){case"loading":return D.createElement(XA,{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"},`${L} / ${Z}`)}},"handleSwapperEndItem"),b={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(Vr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(zA,{color:"gray",size:16})},P={id:"widget-setting-exchange-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Exchanges")),end:D.createElement(D.Fragment,null,x(E,A),D.createElement(Vr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),start:D.createElement(HA,{color:"gray",size:16}),onClick:()=>t($.exchanges)},N={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(Vr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),start:D.createElement(RA,{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(GA,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},s),D.createElement(Vr,{direction:"horizontal",size:8}),D.createElement(Oa,{color:"black"})),onClick:()=>t($.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Infinite approval")),D.createElement(Vr,{direction:"horizontal",size:4}),D.createElement(eN,{side:"top",sideOffset:4,container:W(),content:D.createElement(Fa,null,D.createElement(lt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,bt.t("Warning")),":\xA0",bt.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},D.createElement(qA,{color:"gray"}))),start:D.createElement(QA,{color:"gray",size:16}),end:D.createElement(ZA,{checked:S}),onClick:()=>{oe({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:S,newValue:!S}}),T()}},j={id:"widget-setting-theme-item-btn",type:D.createElement(KA,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Theme")),end:D.createElement(oN,null,D.createElement(JA,{container:W(),items:nN,value:n,className:"widget-setting-theme-item-tabs-container",onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:rN(n)},ee=h?[]:[b,P];return m||ee.push(N),g||ee.push(O),ee.push(q),!e?.singleTheme&&!f&&ee.push(j),D.createElement(VA,{type:D.createElement(jA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}r(Ky,"SettingsLists");var pN=sN("div",{paddingLeft:"$8"});function jy(){let{isInCampaignMode:t,updateCampaignMode:e}=k(),o=t(),[,n]=cN(),i=lN(),a=r(()=>{i&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return tn.createElement(se,{header:{title:cp.t("Settings")}},tn.createElement(ce,null,o&&tn.createElement(iN,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:cp.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:tn.createElement(pN,null,tn.createElement(aN,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},cp.t("Reset")))}),tn.createElement(lp,null),tn.createElement(Ky,null)))}r(jy,"SettingsPage");import{i18n as C0}from"@lingui/core";import{cancelSwap as k0}from"@rango-dev/queue-manager-rango-preset";import{useManager as w0}from"@rango-dev/queue-manager-react";import{Alert as v0}from"@rango-dev/ui";import xp from"react";import{useParams as E0}from"react-router-dom";import{i18n as Qt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as a0,getCurrentStep as s0,getRelatedWalletOrNull as l0}from"@rango-dev/queue-manager-rango-preset";import{Button as HS,Divider as c0,QuoteCost as p0,StepDetails as u0,Typography as Cp}from"@rango-dev/ui";import{useWallets as d0}from"@rango-dev/wallets-react";import QS from"bignumber.js";import{PendingSwapNetworkStatus as Hn}from"rango-types";import we,{useEffect as kp,useRef as wp,useState as ja}from"react";import{useNavigate as m0}from"react-router-dom";import{i18n as Io}from"@lingui/core";var uN=[Io.t("Sunday"),Io.t("Monday"),Io.t("Tuesday"),Io.t("Wednesday"),Io.t("Thursday"),Io.t("Friday"),Io.t("Saturday")];function Xy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),i=e.getFullYear();return`${e.getDay()===new Date().getDay()?Io.t("Today"):`${uN[e.getDay()]} ${o} ${n} ${i}`}, ${new Date(t).toLocaleTimeString()}`}r(Xy,"timeSince");function Yy(t){return t.finishTime?Xy(parseInt(t.finishTime)):Xy(parseInt(t.creationTime))}r(Yy,"getSwapDate");import Kr from"react";import{i18n as Ua}from"@lingui/core";import{Button as Zy,Divider as pp,MessageBox as dN}from"@rango-dev/ui";import Ao from"react";var Jy=r(({onCancel:t,onClose:e})=>Ao.createElement(Ao.Fragment,null,Ao.createElement(pp,{size:20}),Ao.createElement(dN,{type:"error",title:Ua.t("Cancel Swap"),description:Ua.t("Are you sure you want to cancel this swap?")}),Ao.createElement(pp,{size:32}),Ao.createElement(Zy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Ua.t("Yes, Cancel it")),Ao.createElement(pp,{size:12}),Ao.createElement(Zy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Ua.t("No, Continue"))),"CancelContent");import{i18n as za}from"@lingui/core";import{Button as Ry,Divider as up,MessageBox as mN,Typography as fN}from"@rango-dev/ui";import lo from"react";var eS=r(({onDelete:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(up,{size:20}),lo.createElement(mN,{type:"error",title:za.t("Delete Transaction"),description:za.t("Are you sure you want to delete this swap?")}),lo.createElement(up,{size:32}),lo.createElement(Ry,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},za.t("Yes, Delete it")),lo.createElement(up,{size:12}),lo.createElement(Ry,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},lo.createElement(fN,{variant:"title",size:"medium",color:"primary"},za.t("No, Cancel")))),"DeleteContent");import{i18n as gN}from"@lingui/core";import{Button as hN,Divider as yN,MessageBox as SN}from"@rango-dev/ui";import on from"react";var tS=r(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return on.createElement(on.Fragment,null,on.createElement(SN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&on.createElement(on.Fragment,null,on.createElement(yN,{size:"30"}),on.createElement(hN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},gN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as DN,getCurrentStep as $N,getRelatedWalletOrNull as FN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as ON}from"@rango-dev/ui";import{useWallets as UN}from"@rango-dev/wallets-react";import lS from"react";import{i18n as Un}from"@lingui/core";import{Alert as rS,Button as kN,Checkbox as wN,Divider as qa,Image as vN,MessageBox as EN,Spinner as bN,WarningIcon as xN}from"@rango-dev/ui";import{useWallets as IN}from"@rango-dev/wallets-react";import Te,{useState as AN}from"react";import{css as TN,darkTheme as CN,styled as dp}from"@rango-dev/ui";var oS=TN({wordWrap:"break-word",display:"block"}),nS=dp("img",{width:"100%"}),Ha=dp("div",{position:"relative"}),Qa=dp("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${CN} &`]:{$$color:"$warning600"}});var iS=r(t=>{let{wallet:e,namespace:o,onClose:n}=t,[i,a]=AN(null),{list:s}=xt(),c=re.use.isActiveTab(),{state:l,connect:p}=IN(),u=s.find(v=>v.type===e.walletType),d=u?.needsNamespace?.data.find(v=>v.value===o?.namespace);if(!u)return null;let f=l(e.walletType),h=u.isHub&&o?.namespace?f.namespaces?.get(o.namespace):null,g=f.connecting||h?.connecting,m=u.isHub?h?.connected:f.connected,S=r(()=>m?Un.t("Done"):i?Un.t("Try again"):Un.t("Connect"),"getButtonTitle"),T=r(()=>g?Te.createElement(bN,{color:"info"}):i||m?null:Te.createElement(wN,{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"),C=r(async()=>{if(m){n();return}y()},"handleClickButton"),w=r(()=>{if(!m)return null;let v=u?.isHub?h?.accounts?.[0]?.split(":"):f?.accounts?.[0]?.split(":"),I=v?.[v?.length-1];return I?uo(I):null},"getAddress");return Te.createElement(Te.Fragment,null,Te.createElement(EN,{type:"warning",title:Un.t("Connect {wallet}",{wallet:u.title}),description:Un.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Te.createElement(Ha,null,Te.createElement(vN,{src:u.image,size:45}),Te.createElement(Qa,null,Te.createElement(xN,{color:"warning",size:10})))}),m&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:10}),Te.createElement(rS,{type:"success",variant:"alarm",title:Un.t("Wallet connected successfully.")})),i&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:10}),Te.createElement(rS,{type:"error",title:i?.message,variant:"alarm"})),d&&Te.createElement(Te.Fragment,null,Te.createElement(qa,{size:30}),Te.createElement(Oo,{namespace:d,suffix:T(),error:i?.message,connected:m,address:w()})),Te.createElement(qa,{size:"40"}),Te.createElement(kN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:C,disabled:!c},S()))},"ConnectWalletContent");import{i18n as aS}from"@lingui/core";import{Button as NN,detectInstallLink as WN,Divider as LN,Image as PN,MessageBox as BN,WarningIcon as _N}from"@rango-dev/ui";import{useWallets as MN}from"@rango-dev/wallets-react";import co from"react";var sS=r(t=>{let{walletType:e}=t,{getWalletInfo:o}=MN(),n=e?o(e):null;if(!n)return null;let i=r(()=>window.open(WN(n.installLink),"_blank"),"handleButtonClick");return co.createElement(co.Fragment,null,co.createElement(BN,{type:"warning",title:aS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:co.createElement(Ha,null,co.createElement(PN,{src:n.img,size:45}),co.createElement(Qa,null,co.createElement(_N,{color:"warning",size:10})))}),co.createElement(LN,{size:"40"}),co.createElement(NN,{type:"primary",id:"widget-install-wallet-btn",onClick:i},aS.t("Install")))},"InstallWalletContent");var cS=r(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:i}=UN(),a=$N(e),s=a?FN(e,a):null,c=s?.walletType,l=c?Rn(i(c),n(c)):null,p=a?DN(e,a):null;return c?l===ON.NOT_INSTALLED?lS.createElement(sS,{walletType:c}):lS.createElement(iS,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function mp(t){let{isOpen:e,state:o,switchNetworkModalState:n,onClose:i,onDelete:a,onCancel:s,swap:c,message:l,handleSwitchNetwork:p}=t;return Kr.createElement(ie,{open:e,onClose:i,container:W()},o==="connectWallet"&&Kr.createElement(cS,{swap:c,message:l,onClose:i}),o==="switchNetwork"&&n&&Kr.createElement(tS,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Kr.createElement(eS,{onClose:i,onDelete:()=>{i(),a()}}),o==="cancel"&&Kr.createElement(Jy,{onClose:i,onCancel:()=>{i(),s()}}))}r(mp,"SwapDetailsModal");import{i18n as jr}from"@lingui/core";import{Button as fp,Divider as Xr,MessageBox as dS,TokenAmount as zN,Typography as mS}from"@rango-dev/ui";import ke from"react";import{Link as HN,useNavigate as QN}from"react-router-dom";var pS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",uS="/profile";function gp(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:f}=t,h=QN(),{showProfileBanner:g}=re();return ke.createElement(ie,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(wt.SWAP_BOX_ID)||document.body},n==="success"?ke.createElement(dS,{type:"success",title:jr.t("Swap Successful")},ke.createElement(zN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:i,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),ke.createElement(Xr,{size:12}),ke.createElement(mS,{className:oS(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ke.createElement(dS,{type:"error",title:jr.t("Transaction Failed"),description:d}),ke.createElement(Xr,{size:30}),n==="success"&&ke.createElement(ke.Fragment,null,g&&ke.createElement(ke.Fragment,null,ke.createElement(HN,{to:uS},ke.createElement(nS,{src:pS,alt:"Profile Banner"})),ke.createElement(Xr,{size:30})),ke.createElement(fp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},jr.t("Done"))),ke.createElement(Xr,{size:12}),f&&ke.createElement(ke.Fragment,null,ke.createElement(fp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(f,"_blank")},jr.t("Diagnosis")),ke.createElement(Xr,{size:12})),ke.createElement(fp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ke.createElement(mS,{variant:"title",size:"medium",color:"primary"},jr.t("See Details"))))}r(gp,"SwapDetailsCompleteModal");import{i18n as Ka}from"@lingui/core";import{CopyIcon as t0,DoneIcon as o0,IconButton as n0,RangoExplorerIcon as r0,Tooltip as DS,Typography as $S,useCopyToClipboard as i0}from"@rango-dev/ui";import Bt from"react";import e0 from"react";import{i18n as YN}from"@lingui/core";import{Alert as PS,IconButton as ZN,LinkIcon as JN}from"@rango-dev/ui";import No,{Fragment as RN}from"react";import{Alert as GN,ChevronDownIcon as VN,IconButton as KN}from"@rango-dev/ui";import zn,{useState as jN}from"react";import{css as Yr,darkTheme as fS,styled as Ht,Typography as qN}from"@rango-dev/ui";var gS=Ht(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${fS} &`]:{color:"$secondary500"}}}}}),hS=Ht("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),yS=Ht("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),SS=Ht("div",{padding:"$0 $20 $20 $20"}),$Y=Ht("div",{display:"flex",flexDirection:"column",gap:"$10"}),TS=Ht("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),FY=Ht("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),nn=Yr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${fS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),CS=Yr({padding:"$5 0"}),Ga=Yr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),kS=Yr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),wS=Yr({width:"100%",padding:"0 $20 $10"}),vS=Ht("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),ES=Ht("div",{display:"flex",flexDirection:"column",gap:"$5"}),Va=Ht(qN,{wordBreak:"break-word"});import{styled as hp}from"@rango-dev/ui";var bS=hp("div",{display:"flex",flexDirection:"column",gap:"$10"}),xS=hp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),IS=hp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function AS(t){let{message:e}=t,[o,n]=jN(!1);return zn.createElement(GN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&zn.createElement(KN,{id:"widget-swap-details-failed-btn",onClick:()=>n(i=>!i),variant:"ghost",size:"xsmall"},zn.createElement(xS,{rotated:o},zn.createElement(VN,{size:12,color:"gray"}))),footer:zn.createElement(IS,{open:o},zn.createElement(Va,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}r(AS,"FailedAlert");import{i18n as NS}from"@lingui/core";import{Alert as yp,Button as WS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as XN}from"rango-types";import Zr from"react";function LS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:i,showNetworkModal:a}=t;return e?Zr.createElement(yp,{type:"warning",id:"widget-swap-details-change-network-alert",title:i.shortMessage,action:Zr.createElement(WS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},NS.t("Change"))}):a===XN.WaitingForConnectingWallet?Zr.createElement(yp,{type:"warning",title:i.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Zr.createElement(WS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},NS.t("Connect"))}):Zr.createElement(yp,{id:"widget-swap-details-short-alert",type:"warning",title:i.shortMessage})}r(LS,"WarningAlert");function Sp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:i,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=fr(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,d=u&&!c||p&&!s.explorerUrl?.length;return No.createElement(bS,null,s.explorerUrl?.map((f,h,g)=>{let m=h+f.url,S=h===g.length-1,T=(S&&u||p)&&!d,y=S&&s.status==="failed";return No.createElement(RN,{key:m},No.createElement(PS,{id:"widget-swap-details-tx-alert",type:S&&(T&&"loading"||y&&"error")||"success",title:f.description?`${f.description} Tx`:YN.t("View transaction"),action:f.url&&No.createElement(ZN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},No.createElement(JN,{size:12}))}))}),d&&No.createElement(PS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&No.createElement(LS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:i,message:a}),s.status==="failed"&&No.createElement(AS,{message:a}))}r(Sp,"SwapDetailsAlerts");var BS=2e3;var _S=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:jn(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:jn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:e0.createElement(Sp,{step:a,hasAlreadyProceededToSign:i,...n})}})},"getSteps");function MS(t){if(fr(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(MS,"getStepState");function FS(t){let{requestId:e}=t,[o,n]=i0(BS);return Bt.createElement(yS,{className:nn()},Bt.createElement($S,{variant:"label",size:"large",color:"neutral700"},Ka.t("Request ID")),Bt.createElement("div",{className:Ga()},Bt.createElement($S,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(DS,{container:W(),content:o?Ka.t("Copied To Clipboard"):Ka.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Bt.createElement(n0,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Bt.createElement(o0,{size:16,color:"secondary"}):Bt.createElement(t0,{size:16,color:"gray"}))),Bt.createElement(vS,{target:"_blank",href:`${nu}/swap/${e}`},Bt.createElement(DS,{container:W(),content:Ka.t("View on Rango Explorer"),side:"bottom"},Bt.createElement(r0,{size:20})))))}r(FS,"RequestIdRow");import{i18n as OS}from"@lingui/core";import{Typography as US}from"@rango-dev/ui";import Tp from"react";function zS(t){let{date:e,isFinished:o}=t;return Tp.createElement("div",{className:nn()},Tp.createElement(US,{variant:"label",size:"large",color:"neutral700"},o?OS.t("Finished at"):OS.t("Created at")),Tp.createElement(US,{variant:"label",size:"small",color:"neutral700"},e))}r(zS,"SwapDateRow");var f0=3e3;function vp(t){let{swap:e,requestId:o,onDelete:n,onCancel:i}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=d0(),l=k().blockchains(),p=k().swappers(),{findToken:u}=k(),d=z().use.retry(),f=m0(),h=wp(null),[g,m]=ja(!1),[S,T]=ja(null),[y,C]=ja(null),[w,v]=ja(null),I=wp(S),A=wp(y),E=Le.use.getNotifications(),x=Le.use.removeNotification(),b=E(),P=s0(e),N=P?.networkStatus,O=r(Ne=>{m(!0),T(Ne)},"handleChangeModalState"),q=r(()=>{m(!1)},"handleCloseModal"),j=r(()=>{C({type:"loading",title:Qt.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=r(()=>{C({type:"success",title:Qt.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),L=r(Ne=>{C({type:"error",title:Qt.t("Network Switch Failed"),description:Ne?.message||H.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Rd(e),Y=P?a0(e,P):null,ue=P?l0(e,P):null,Ee=Yy(e),Vt=em(e),be=r(Ne=>!!c(Ne)?.mobileWallet,"checkIsMobileWallet"),Qe=!!N&&[Hn.WaitingForNetworkChange,Hn.NetworkChangeFailed].includes(N),Xe=!!ue?.walletType&&be(ue.walletType),St=!!ue&&!!Y&&a(ue.walletType,Y.network,Y),ct=!!Y&&Qe&&(Xe||St),B=r(()=>{ct&&(j(),s(ue.walletType,[{namespace:Y.namespace,network:Y.network}]).then(()=>{ee()}).catch(Ne=>{L(Tt(Ne)??Ne)}))},"handleSwitchNetwork"),V=r(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),H=Jd(e,P,c),X=_S({swap:e,switchNetworkIsAvailable:ct,handleSwitchNetworkClick:V,showNetworkModal:N,setNetworkModal:O,message:H,blockchains:l,swappers:p}),G=X.length,[J,U]=[e.steps[0],e.steps[G-1]],de=U?.outputAmount||U?.expectedOutputAmountHumanReadable,qe=e.steps.reduce((Ne,_t)=>Ne+parseFloat(_t.feeInUsd||""),0),ot=e.steps.find(Ne=>Ne.diagnosisUrl)?.diagnosisUrl,po=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),Gn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),Wo=de?new QS(de).multipliedBy(U.toUsdPrice||0).toString():"",ti=new QS(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),an=Zt(Gn,po),is=H.detailedMessage.content||H.shortMessage,vT=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:uo(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):we.createElement(ES,null,we.createElement(Cp,{variant:"body",size:"medium",color:"neutral700",align:"center"},is?"":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}})}`:""),is&&we.createElement(Va,{align:"center",variant:"body",size:"medium",color:"neutral700"},we.createElement("b",null,"Reason:")," ",is));return kp(()=>{b.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]),kp(()=>{if(ct){if(O("switchNetwork"),N===Hn.WaitingForNetworkChange){j();return}if(N===Hn.NetworkChangeFailed){L();return}return}if(N===Hn.WaitingForConnectingWallet){O("connectWallet");return}if(N===Hn.NetworkChanged){O("switchNetwork"),ee();return}S&&["connectWallet","switchNetwork"].includes(S)&&q()},[N]),kp(()=>{if(I.current=S,A.current=y,S==="switchNetwork"&&y?.type==="success"){let Ne=setTimeout(()=>{I.current==="switchNetwork"&&A.current?.type==="success"&&q()},f0);return()=>clearTimeout(Ne)}},[S,y]),we.createElement(se,{header:{title:Qt.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&we.createElement(yo,null,we.createElement(HS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},we.createElement(Cp,{size:"medium",variant:"label",color:"error"},Qt.t("Delete"))))},footer:Vt&&!w&&we.createElement(HS,{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=Li(e,l,u);d(Ne),setTimeout(()=>{f("../../")},0)}},Qt.t("Try again"))},we.createElement(gS,{compact:!0,ref:h},we.createElement(FS,{requestId:o}),we.createElement(zS,{date:Ee,isFinished:!!e.finishTime}),we.createElement("div",{className:kS()},we.createElement(p0,{fee:M(String(qe),2,2),time:Zn(ui(e.steps)),steps:G}),we.createElement(wr,{from:{price:{value:M(e.inputAmount,6,6),usdValue:Gn,realUsdValue:ti,realValue:e.inputAmount},token:{displayName:X[0]?.from.token.displayName||"",image:X[0]?.from.token.image},chain:{image:X[0]?.from.chain.image,displayName:X[0]?.from.chain.displayName||""}},to:{price:{value:M(de,6,6),usdValue:po,realUsdValue:Wo,realValue:de||""},token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image,displayName:X[G-1]?.to.chain.displayName||""}},percentageChange:M(an,2,2),warningLevel:Jt(an??0)})),we.createElement("div",{className:wS()},we.createElement(Cp,{variant:"title",size:"small"},Qt.t("Swaps steps"))),we.createElement(c0,{size:8}),we.createElement(SS,null,X.map((Ne,_t)=>{let Dp=_t,Vn=e.steps[_t]&&MS(e.steps[_t]),ET=Vn==="error"||Vn==="in-progress"||Vn==="warning"||Vn==="completed"&&_t===X.length-1;return we.createElement(u0,{className:"widget-swap-details-step-item-container",key:Dp,step:Ne,type:"swap-progress",ref:h,state:Vn,hasSeparator:_t!==0,tabIndex:Dp,isFocused:ET,tooltipContainer:W()})}))),we.createElement(mp,{isOpen:g,state:S,switchNetworkModalState:y,onClose:q,onCancel:i,onDelete:n,message:H.detailedMessage.content,swap:e,handleSwitchNetwork:V}),we.createElement(gp,{open:!!w,diagnosisUrl:ot,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(de,6,6),usdValue:po,realUsdValue:Wo,realValue:de||"",percentageChange:M(an,2,2),token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image},description:vT}))}r(vp,"SwapDetails");import{i18n as Ya}from"@lingui/core";import{Divider as VS,NotFound as T0,Skeleton as Rr,Typography as Za}from"@rango-dev/ui";import Ae from"react";import{i18n as g0}from"@lingui/core";import{Divider as h0,Skeleton as y0,Typography as S0}from"@rango-dev/ui";import Ie from"react";import{css as qt,styled as Ep}from"@rango-dev/ui";var qS=Ep("div",{width:"100%",height:"100%",padding:"$10 $20"}),Jr=Ep("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Xa=Ep("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),f9=qt({display:"flex",justifyContent:"space-between",alignItems:"center"}),g9=qt({paddingTop:"$15",display:"flex"}),h9=qt({padding:"$15 $0"}),y9=qt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),S9=qt({paddingBottom:"$10"}),T9=qt({display:"flex",justifyContent:"start",alignItems:"center"}),C9=qt({paddingTop:"$5",display:"flex",alignItems:"center"}),k9=qt({display:"flex",alignItems:"center"}),w9=qt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),GS=qt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function bp(){return Ie.createElement(qS,null,Ie.createElement(br,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(S0,{variant:"title",size:"small"},g0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1}),Ie.createElement("div",{className:GS()},Ie.createElement(h0,{direction:"horizontal",size:20}),Ie.createElement(y0,{height:22,variant:"rectangular"}))),Ie.createElement(Xa,null),Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1})),Ie.createElement(Xa,null),Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1})),Ie.createElement(Xa,null),Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1}))))}r(bp,"LoadingSwapDetails");function KS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:Ya.t("Swap Details"),suffix:Ae.createElement(yo,null)}},o&&Ae.createElement(hS,null,Ae.createElement("div",{className:nn()},Ae.createElement(Za,{variant:"label",size:"large",color:"neutral700"},`${Ya.t("Request ID")}`),Ae.createElement("div",{className:Ga()},Ae.createElement(Za,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Rr,{width:60,height:10,variant:"rounded"})),Ae.createElement(VS,{direction:"horizontal",size:4}),Ae.createElement(Rr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(VS,{direction:"horizontal",size:4}),Ae.createElement(Rr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:nn()},Ae.createElement(Za,{className:CS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Rr,{width:60,height:10,variant:"rounded"})),Ae.createElement(Za,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Rr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(bp,null)),!o&&Ae.createElement(TS,null,Ae.createElement(T0,{title:Ya.t("Not found"),description:Ya.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}r(KS,"SwapDetailsPlaceholder");function jS(){let{manager:t,state:e}=w0(),o=!e.loadedFromPersistor,n=Et(t),{requestId:i}=E0(),a=Ve(),{fetchStatus:s}=k();if(!i)return xp.createElement(v0,{containerStyles:{margin:"20px"},type:"error",title:C0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=i?n.find(({swap:f})=>f.requestId===i):void 0,p=r(()=>{if(l?.id){let f=t?.get(l.id);f&&(oe({type:"swapCancelled",payload:{routeId:i}}),k0(f))}},"onCancel"),u=r(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(f){console.log(f)}},"onDelete"),d=l?.swap;return!d||c?xp.createElement(KS,{requestId:i,showSkeleton:c}):xp.createElement(vp,{swap:d,requestId:i,onCancel:p,onDelete:u})}r(jS,"SwapDetailsPage");import{i18n as XS}from"@lingui/core";import{Divider as b0,getCategoriesCount as x0,SelectableCategoryList as I0,styled as ZS,Typography as A0,Wallet as N0}from"@rango-dev/ui";import Gt,{useState as YS}from"react";var W0=ZS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),L0=ZS(ce,{textAlign:"center"});function JS(){let{fetchStatus:t}=k(),[e,o]=YS("ALL"),n=k().blockchains(),{config:i}=k(),[a,s]=YS(),c=re.use.isActiveTab(),{list:l}=xt(),p=Pu(l,n),d=x0(p)!==1,f=Bu(l,e),h=r(g=>{du(l,i.multiWallets)||s(g)},"handleWalletItemClick");return Gt.createElement(se,{header:{title:XS.t("Connect Wallets")}},Gt.createElement(L0,null,d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(I0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),Gt.createElement(b0,{size:24})),Gt.createElement(A0,{variant:"title",size:"xmedium",align:"center"},XS.t("Choose a wallet to connect.")),Gt.createElement(W0,null,f.map((g,m)=>{let S=`wallet-${m}-${g.type}`;return Gt.createElement(N0,{key:S,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),Gt.createElement(dr,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}r(JS,"WalletsPage");function RS(){return um(),Js(),P0([{path:$.home,element:He.createElement(fy,null)},{path:$.routes,element:He.createElement(Ty,null)},{path:$.fromSwap,children:[{index:!0,element:He.createElement($a,{type:"source"})},{path:$.blockchains,element:He.createElement(Ba,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:He.createElement($a,{type:"destination"})},{path:$.blockchains,element:He.createElement(Ba,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:He.createElement(jy,null)},{path:$.languages,element:He.createElement(hy,null)},{path:$.exchanges,element:He.createElement(Yc,{sourceType:"Exchanges"})},{path:$.bridges,element:He.createElement(Yc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:He.createElement(hh,null)},{path:$.addCustomTokens,children:[{index:!0,element:He.createElement(cf,null)},{path:$.blockchains,element:He.createElement(Ba,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:He.createElement(Dh,null)},{path:$.swapDetails,element:He.createElement(jS,null)}]},{path:$.wallets,element:He.createElement(JS,null)},{path:$.confirmSwap,element:He.createElement(eh,null)}])}r(RS,"AppRoutes");import{useQueueManager as Y0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as Z0}from"rango-sdk";import{useContext as J0,useEffect as Wp,useState as uT}from"react";import{WalletTypes as ei}from"@rango-dev/provider-all";import{Provider as F0}from"@rango-dev/wallets-react";import Ja,{createContext as O0,useEffect as rT,useMemo as U0,useRef as iT}from"react";import{useEffect as _0}from"react";import{Provider as B0}from"@hub3js/core";function eT(t){return t.map(e=>typeof e=="string"?e:e instanceof B0?e.id:e.config.type).join("-")}r(eT,"hashProviders");function Ip(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:i}=k(),a=n();return _0(()=>{o(),i()},[eT(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}r(Ip,"useWalletProviders");import{legacyFormatAddressWithNetwork as M0,legacyReadAccountAddress as tT}from"@rango-dev/wallets-core/legacy";import{Events as Qn}from"@rango-dev/wallets-react";import{isEvmBlockchain as D0}from"rango-sdk";function oT(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:i,removeBalancesForWallet:a,blockchains:s}=k(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(D0).map(m=>m.name),u=r((m,S)=>{let[T,,y,C,w]=m,v={walletType:T,network:C.network??void 0,accounts:y};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let I=ys(T,y,p,S.supportedChainNames,w.isContractWallet);I.length&&e(I,w.namespace,C.derivationPath,{walletName:T})},"onAccountsEvent"),d=r((m,S,T,y,C)=>{if(S===Qn.ACCOUNTS){let w=er(C.supportedBlockchains);T&&u([m,S,T,y,C],{supportedChainNames:w})}S===Qn.PROVIDER_DISCONNECTED&&(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),S===Qn.NAMESPACE_DISCONNECTED&&n(m,T)},"handleUpdatesForHub"),f=r((m,S,T,y,C)=>{if(S===Qn.ACCOUNTS){let w=er(C.supportedBlockchains),v=[],I=[];if(T?.forEach(E=>{let{network:x}=tT(E);p.includes(x)?v.push(E):I.push(E)}),i.filter(E=>E.walletType===m).map(E=>M0(E.address,E.chain)).length>0){if(v.length>0){let E=ys(m,v,p,w,C.isContractWallet);a(m,{chains:E.map(x=>x.chain)})}I.length>0&&a(m,{chains:I.map(E=>{let{network:x}=tT(E);return x})})}T?u([m,S,T,y,C],{supportedChainNames:w}):(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),h=r((m,S,T,y,C)=>{if(S===Qn.CONNECTED&&T){let w={walletType:m,network:y.network??void 0,accounts:y.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(S===Qn.NETWORK&&T){let w={walletType:m,network:T,accounts:y.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:r((m,S,T,y,C)=>{C.isHub?d(m,S,T,y,C):f(m,S,T,y,C),h(m,S,T,y,C)},"handler")}}r(oT,"useUpdates");import{LegacyEvents as $0}from"@rango-dev/wallets-core/legacy";function nT(t,e){let[o,n,i,a,s]=e;n!==$0.PROVIDER_DISCONNECTED&&t(o,n,i,a,s)}r(nT,"propagateEvents");var Ra=O0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function z0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:i}=k(),a=k().blockchains(),s=k().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=Ip(s.wallets,c),p=iT(),u=iT(),{handler:d}=oT({onConnectWalletHandler:p,onDisconnectWalletHandler:u});rT(()=>{n().catch(console.log)},[]),rT(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,i]);let f=re.use.isActiveTab(),h=U0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Ja.createElement(Ra.Provider,{value:h},Ja.createElement(F0,{allBlockChains:a,providers:l,onUpdateState:(g,m,S,T,y)=>{let C=[g,m,S,T,y];d(...C),t.onUpdateState&&nT(t.onUpdateState,C)},autoConnect:!!f,configs:{wallets:s.wallets,walletOptions:{[ei.TON_CONNECT]:{provider:{manifestUrl:s.tonConnect?.manifestUrl}},[ei.OKX]:{provider:{tonConnectManifestUrl:s.tonConnect?.manifestUrl}},[ei.TREZOR]:{provider:{manifest:s.trezorManifest}},[ei.WALLET_CONNECT_2]:{provider:{WC_PROJECT_ID:s.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:s.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink,meta:a}},[ei.LEDGER_WALLET]:{provider:s.ledgerWallet}}}},t.children))}r(z0,"Main");function es(t){let{config:e,...o}=t;return Ja.createElement(Zu,{config:e},Ja.createElement(z0,{...o,config:e}))}r(es,"WidgetWallets");import{globalCss as H0}from"@rango-dev/ui";var aT=r(()=>H0({"@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 Q0}from"@rango-dev/wallets-react";import{useEffect as q0,useRef as G0}from"react";function sT(){let{connect:t,state:e}=Q0(),o=G0({}),{fetchStatus:n}=k(),i=new URLSearchParams(location.search).get("autoConnect")||"",a=e(i);q0(()=>{n==="success"&&i&&a.installed&&!a.connecting&&!a.connected&&!o.current[i]&&(o.current[i]=!0,t(i))},[a,n])}r(sT,"useForceAutoConnect");import{isApprovalTX as V0,RouteEventType as lT,StepEventType as cT,StepExecutionEventStatus as K0,WidgetEvents as ts}from"@rango-dev/queue-manager-rango-preset";import{useEffect as pT}from"react";function Ap(){let t=Le.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=k();pT(()=>{let i=r(a=>{let{event:s,step:c,route:l}=a;if(s.type===cT.TX_EXECUTION&&s.status===K0.TX_SENT&&!V0(c)||s.type===cT.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let f=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);f&&u.push(f)}if(c?.fromBlockchain!==c?.toBlockchain){let f=l.wallets[c?.toBlockchain];if(f){let h=e.find(g=>g.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&g.walletType===f.walletType&&g.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let f=n(),g=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(m=>f.some(S=>S.blockchain===m.blockchain&&S.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&S.symbol?.toLocaleLowerCase()===m.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return ge.on(ts.StepEvent,i),()=>ge.off(ts.StepEvent,i)},[ge,e]),pT(()=>{let i=r(a=>{let{event:s,route:c}=a;(s.type===lT.FAILED||s.type===lT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ge.on(ts.RouteEvent,i),()=>ge.off(ts.RouteEvent,i)},[ge])}r(Ap,"useSubscribeToWidgetEvents");import{useManager as j0}from"@rango-dev/queue-manager-react";import{useEffect as X0}from"react";function Np(){let{isSynced:t,syncNotifications:e}=Le(),{manager:o,state:n}=j0();X0(()=>{if(Le.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}})})}},[Le.persist.hasHydrated(),n.loadedFromPersistor,t])}r(Np,"useSyncNotifications");function Lp(){sT(),aT(),Ap(),Np();let t=k().blockchains(),{canSwitchNetworkTo:e}=dT(),[o,n]=uT(null),[i,a]=uT(),s=J0(Ra),c=t.filter(Z0);Wp(()=>()=>cm(),[]),Wp(()=>()=>pm(),[]),Y0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:i,evmChains:c,canSwitchNetworkTo:e}),Wp(()=>(Fo.init(),Le.persist.hasHydrated()||Le.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),Fo.destroy),[])}r(Lp,"useBootstrap");import{styled as R0}from"@rango-dev/ui";var mT=R0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left",height:"100%","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function rn(){Lp();let{config:t}=k(),{activeTheme:e}=ho(t?.theme||{}),{activeLanguage:o}=bo();return Pp.createElement(eW,{language:o},Pp.createElement(mT,{id:"swap-container",className:e()},Pp.createElement(RS,null)))}r(rn,"Main");import{setSolanaSignerConfig as CW}from"@rango-dev/signer-solana";import _p,{useEffect as Mp,useMemo as kW}from"react";function fT(){let{setWatermark:t,setShowProfileBanner:e}=re();return{fetchApiConfig:r(async()=>{let n=await fetch(`${jt("BASE_URL")}/meta/dapp/config?apiKey=${jt("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let i=await n.json();t(i.config.watermark),e(i.config.banners.profile)},"fetchApiConfig")}}r(fT,"useFetchApiConfig");import{useState as tW}from"react";var oW=r(()=>{let[t,e]=tW(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=uu(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),gT=oW;import{convertEvmBlockchainMetaToEvmChainInfo as nW}from"@rango-dev/internal-blockchains";import{checkWaitingForNetworkChange as rW,makeQueueDefinition as iW}from"@rango-dev/queue-manager-rango-preset";import{Provider as aW}from"@rango-dev/queue-manager-react";import{useWallets as sW}from"@rango-dev/wallets-react";import{isEvmBlockchain as lW}from"rango-types";import cW,{useMemo as pW}from"react";function uW(t){let{getSigners:e,state:o,connect:n,canSwitchNetworkTo:i,getWalletInfo:a,hubProvider:s}=sW(),c=pW(()=>iW({API_KEY:t.apiKey||jt("API_KEY"),BASE_URL:jt("BASE_URL"),emitter:{emit:ge.emit}}),[t.apiKey]),{blockchains:l,connectedWallets:p}=k(),u=l(),d={blockchains:p.map(C=>({accounts:[C],name:C.chain}))},f=r(async(C,w)=>i(C,w.network,w)?await n(C,[w]):void 0,"switchNetwork"),h=r(C=>!!a(C).mobileWallet,"isMobileWallet"),g=u.filter(C=>C.enabled).reduce((C,w)=>(C[w.name]=w,C),{}),m=u.filter(lW),S=r(C=>{let{supportedChains:w}=a(C);return er(w)},"getSupportedChainNames"),T={meta:{blockchains:g,evmBasedChains:m,evmNetworkChainInfo:nW(m),getSupportedChainNames:S},getSigners:async C=>{try{return await e(C)}catch(w){throw Tt(w)??w}},wallets:d,switchNetwork:f,canSwitchNetworkTo:i,state:o,isMobileWallet:h,hubProvider:s},y=re.use.isActiveTab();return cW.createElement(aW,{queuesDefs:[c],context:T,onPersistedDataLoaded:C=>{rW(C)},isPaused:!y},t.children)}r(uW,"QueueManager");var hT=uW;import{useManager as hW}from"@rango-dev/queue-manager-react";import yW,{createContext as SW,useContext as TW}from"react";function yT(){let{findToken:t}=k(),e=k().blockchains(),o=k().tokens(),{setFromBlockchain:n,setFromToken:i,setToBlockchain:a,setToToken:s,setInputAmount:c}=z()();return r(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:f,toToken:h,requestAmount:g}=p,m={blockchains:e,tokens:o};if(u!==void 0){let S=e.find(T=>T.name===u)??null;n(S)}if(d!==void 0){let S=d?t(d)??null:null;i({meta:m,token:S})}if(f!==void 0){let S=e.find(T=>T.name===f)??null;a(S)}if(h!==void 0){let S=h?t(h)??null:null;s({meta:m,token:S})}g!==void 0&&c(g)},"updateQuoteInputs")}r(yT,"useUpdateQuoteInputs");import{cancelSwap as dW,getCurrentNamespaceOfOrNull as mW,getCurrentStep as fW,getRelatedWalletOrNull as gW}from"@rango-dev/queue-manager-rango-preset";var os=class{static{r(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return Et(this.manager)}getCurrentStep(e){return this.getCurrentStepInfo(e).step}getCurrentStepWallet(e){return this.getCurrentStepInfo(e).wallet}getCurrentStepNetwork(e){return this.getCurrentStepInfo(e).network}retry(e,o){let n=Li(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&dW(o)}getCurrentStepInfo(e){let o=fW(e);return{step:o,wallet:o?gW(e,o):null,network:o?mW(e,o)?.network:null}}};var ST=SW(void 0);function Bp(t){let{manager:e}=hW(),o=re.use.isActiveTab(),n=z().use.retry(),{findToken:i,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=k(),l=new os(e,{retrySwap:n,findToken:i}),{fetchingWallets:p}=k(),u=Iu(a()),d=k().blockchains(),f=k().tokens(),h=k().swappers(),g=k().fetchStatus,m=bo().resetLanguage,S=Le().getNotifications(),T=Le().clearNotifications,y=yT(),{fromBlockchain:C,toBlockchain:w,fromToken:v,toToken:I,inputAmount:A}=z()(),E={isActiveTab:o,setCurrentTabAsActive:Fo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async x=>c(x)},meta:{blockchains:d,tokens:f,swappers:h,loadingStatus:g,findToken:i},resetLanguage:m,notifications:{list:S,clearAll:T},quote:{quoteInputs:{fromBlockchain:C?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:w?.name??null,toToken:I?{symbol:I.symbol,blockchain:I.blockchain,address:I.address}:null,requestAmount:A},updateQuoteInputs:y}};return yW.createElement(ST.Provider,{value:E},t.children)}r(Bp,"WidgetInfo");function TT(){let t=TW(ST);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}r(TT,"useWidget");function qn(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{fetchApiConfig:i}=fT(),{handleLoadCustomFont:a}=gT();return Mp(()=>{i().catch(console.log)},[]),Mp(()=>{n&&a(n)},[n]),kW(()=>{_u({API_KEY:o?.apiKey||Rp(),BASE_URL:o?.apiUrl||ou})},[o.apiKey,o.apiUrl]),Mp(()=>{t.config?.signers?.customSolanaRPC&&CW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),_p.createElement(es,{config:o,onUpdateState:e},_p.createElement(hT,{apiKey:o.apiKey},_p.createElement(Bp,null,t.children)))}r(qn,"WidgetProvider");function CT(t){let e=t.config?.externalWallets;return ns.createElement(Ni,null,e?ns.createElement(rn,null):ns.createElement(qn,{config:t.config??Yn},ns.createElement(rn,null)))}r(CT,"Refuel");import rs from"react";function kT(t){let e=t.config?.externalWallets;return rs.createElement(Ni,null,e?rs.createElement(rn,null):rs.createElement(qn,{config:t.config??Yn},rs.createElement(rn,null)))}r(kT,"Widget");function wT(){let{on:t,off:e}=ge;return{on:t,off:e}}r(wT,"useWidgetEvents");var vte={DerivationPath:cr,Namespaces:ar,Detached:lr,isOnDerivationPath:ur,isOnNamespace:pr,isOnDetached:Lo};export{Xee as EventSeverity,sn as MainEvents,Kee as Networks,ite as PendingSwapNetworkStatus,Kn as QuoteEventTypes,CT as Refuel,Yee as RouteEventType,ps as SUPPORTED_FONTS,vte as StatefulConnect,Zee as StepEventType,Jee as StepExecutionBlockedEventStatus,Ree as StepExecutionEventStatus,Id as SwapModeContext,wt as UI_ID,Ze as UiEventTypes,oi as WalletEventTypes,nte as WalletEvents,kT as Widget,sn as WidgetEvents,qn as WidgetProvider,es as WidgetWallets,dl as customizedThemeTokens,ls as pickProviderVersionWithFallbackToLegacy,tte as readAccountAddress,ln as useStatefulConnect,xt as useWalletList,dT as useWallets,TT as useWidget,wT as useWidgetEvents,BC as widgetEventEmitter};
4
4
  //# sourceMappingURL=index.js.map