@rango-dev/widget-embedded 0.63.1-next.1 → 0.63.1-next.3

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,3 +1,4 @@
1
- var wT=Object.defineProperty;var i=(t,e)=>wT(t,"name",{value:e,configurable:!0});import{EventSeverity as Nee,RouteEventType as Wee,StepEventType as Pee,StepExecutionBlockedEventStatus as Lee,StepExecutionEventStatus as Bee}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as Mee}from"@rango-dev/wallets-core/legacy";import{useWallets as cT,Events as $ee}from"@rango-dev/wallets-react";import{Networks as Oee,WalletTypes as Uee}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as Hee}from"rango-types";import{Divider as Qk}from"@rango-dev/ui";import mo,{useEffect as qk,useRef as Gk,useState as wd}from"react";import{WalletState as vT}from"@rango-dev/ui";import{useWallets as ET}from"@rango-dev/wallets-react";import{useReducer as bT}from"react";function Dp(t){return!!t.derivationPath}i(Dp,"isStateOnDerivationPathStep");function $p(t){return!!t.namespace}i($p,"isStateOnNamespace");var ei={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function Fp(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return ei;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:ei;default:throw new Error("Action hasn't been defined.")}}i(Fp,"reducer");function an(){let{state:t,disconnect:e,connect:o}=ET(),[n,r]=bT(Fp,ei),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=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===vT.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(k=>!S?.data?.map(w=>w.value).includes(k));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(k=>({namespace:k})),{...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(k=>k.name==="namespaces")?.value:d.needsNamespace,m=h?d.properties?.find(k=>k.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(!$p(n))throw new Error("Something went wrong on handling namespace. Please retry.");let y=f.map(k=>({namespace:k}));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(!Dp(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,k=!!h?.forceConnectToNamespaces;return y&&!k?(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),Wo(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(an,"useStatefulConnect");import{WalletState as yi}from"@rango-dev/ui";import{useWallets as $C}from"@rango-dev/wallets-react";import{detectMobileScreens as FC,WalletTypes as Mt}from"@rango-dev/wallets-shared";import{useCallback as OC,useEffect as Zu}from"react";import LC,{createContext as BC,useContext as _C,useEffect as MC,useRef as DC}from"react";import{create as WC}from"zustand";import{persist as PC}from"zustand/middleware";import{allProviders as xT}from"@rango-dev/provider-all";var rs=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()}},sn=new rs;import{Provider as is}from"@hub3js/core";import{defineVersions as Up,pickVersion as zp}from"@hub3js/core/utils";function Hp({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=as(a);return s instanceof is?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 is?o.push(Up().version("1.0.0",n).build()):o.push(Up().version("0.0.0",n).build())}),o}return t}i(Hp,"matchAndGenerateProviders");function as(t){try{return zp(t,"1.0.0")[1]}catch{return zp(t,"0.0.0")[1]}}i(as,"pickProviderVersionWithFallbackToLegacy");function Qp(t){return t.map(o=>as(o)).map(o=>o instanceof is?o.id:o.config.type)}i(Qp,"configWalletsToWalletName");function qp(t,e){return e.find(o=>o.name===t)?.displayName}i(qp,"getBlockchainDisplayNameFor");function Tt(t,e){return e.find(o=>o.name===t)?.shortName}i(Tt,"getBlockchainShortNameFor");function Gp(t,e){return e.find(o=>o.name===t)?.logo}i(Gp,"getBlockchainImage");function Vn(t,e){return e.find(o=>o.id===t)?.title}i(Vn,"getSwapperDisplayName");function Po(t,e){return e.find(o=>o.name===t)??null}i(Po,"findBlockchain");function ss(t,e){if(!e||!t)return!1;for(let o of e.feeAssets)if(t?.blockchain===o?.blockchain&&t?.symbol===o?.symbol&&t?.address===o?.address)return!0;return!1}i(ss,"isTokenNative");function Ct(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(Ct,"createTokenHash");function Lo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Lo,"isValidTokenAddress");function ti(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}i(ti,"createTokenExplorerUrl");function Kn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(c=>{c.forEach(l=>{typeof l!="string"&&(l=Ct(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=Ct(p);delete n[u]})):a(l.tokens))}),Object.values(n)}i(Kn,"matchTokensFromConfigWithMeta");function oi(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(oi,"getSupportedBlockchainsFromConfig");function IT(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(IT,"makeProvidersOptionsFromConfig");var jn={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"}},AT={clientUrl:void 0},NT={liquiditySources:void 0};function Vp(){return xT().map(o=>o())}i(Vp,"generateProviders");var Kp=i((t,e,o)=>{let n=Vp();return{config:{...jn,...t},iframe:AT,campaignMode:NT,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=Kn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}}),p=Kn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}});sn.set("supportedSourceTokens",l),sn.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=Vp();e({allProviders:r})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=IT(a);return Hp({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as jp}from"rango-types";var Xp=[jp.EVM,jp.SOLANA],ni="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as GT}from"rango-sdk";function Yp(){return process.env.REACT_APP_RANGO_API_KEY}i(Yp,"getApiKeyFromEnv");function Zp(){let t=Yp();if(t)return t;throw new Error("Ensure you have set REACT_APP_RANGO_API_KEY in your env variables.")}i(Zp,"getApiKeyFromEnvOrThrow");function Jp(){return Yp()||"NOT_SET"}i(Jp,"getApiKeyFromEnvOrNotSet");import{BlockchainCategories as DT,WalletState as ut}from"@rango-dev/ui";import{legacyReadAccountAddress as $T}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as FT,getBlockChainNameFromId as OT,HYPERLIQUID_SIGN_NETWORK as UT,isEvmAddress as zT,Networks as ms}from"@rango-dev/wallets-shared";import cn from"bignumber.js";import WT from"bignumber.js";var pe=new WT(0);var Bo="~",Rp=[];import{BlockchainCategories as cs,WalletState as MT}from"@rango-dev/ui";import{TransactionType as ps}from"rango-sdk";import{UI_ID as PT}from"@rango-dev/ui";var eu="https://api.rango.exchange",tu="https://explorer.rango.exchange",kt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...PT};var ou="Roboto",ls=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function ln(t){return Array.from(new Set(t))}i(ln,"removeDuplicateFrom");function ri(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(ri,"debounce");function pt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(pt,"containsText");function iu(t,e){return t.toLowerCase()===e.toLowerCase()}i(iu,"exactText");function au(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(au,"startWithText");var W=i(()=>document.getElementById(kt.SWAP_BOX_ID),"getContainer"),_o=i(()=>document.getElementById(kt.EXPANDED_BOX_ID),"getExpanded");function su(t,e,o){let n=!!e&&iu(e,t),r=!!o&&iu(o,t);return n!==r?n?-1:1:0}i(su,"compareExactMatchText");function us(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(us,"compareContainsText");function ds(t,e,o){let n=!!e&&au(e,t),r=!!o&&au(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ds,"compareStartWithText");function lu(t,e,o){if(!o)return 0;let n=su(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=su(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ds(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=us(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ds(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=us(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ds(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=us(o,t.address,e.address);if(r!==0)return r}return 0}i(lu,"compareWithSearchFor");var ii=i((t,e)=>{switch(e){case cs.ALL:return!0;case cs.UTXO:return t===ps.TRANSFER;case cs.OTHER:return t!==ps.TRANSFER&&t!==ps.EVM;default:return t===e}},"isBlockchainTypeInCategory"),cu=i(t=>ls.find(o=>o.value===t)?.url,"getFontUrlByName");function pu(t,e){let o=!!t.find(n=>n.state===MT.CONNECTED);return e===!1&&o}i(pu,"isSingleWalletActive");function uu(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(uu,"memoizedResult");function du(t,e){let o=new Set;return e.forEach(n=>{o.add(n.blockchain)}),t.filter(n=>o.has(n.name))}i(du,"filterBlockchainsWithAtLeastOneToken");import{BigNumber as ku}from"bignumber.js";function mu(t){return t.replace(/^0+(?=\d)/g,"")}i(mu,"removeLeadingZeros");function fu(t){return t.replace(/^\.(\d+)/,"0.$1")}i(fu,"ensureLeadingZeroForDecimal");function gu(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(gu,"formatThousandsWithCommas");function hu(t){return t.replace(/\s+/g,"-")}i(hu,"replaceSpacesWithDash");function yu(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(yu,"stripTrailingZeros");function Su(t){return t=t.replace(/[^\d.]/g,"").replace(/\./g,(e,o,n)=>n.indexOf(".")===o?".":""),t}i(Su,"parseNumericValue");function ai(t){return/^0+(?:\.0+)?$/.test(t)}i(ai,"isZeroValue");function Tu(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(Tu,"isValidCurrencyFormat");function Cu(t){return/\d+$/.test(t)}i(Cu,"isColorKeyOverridden");var Xn=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 ku(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new ku(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 si=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var _t=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Yn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function wu(t){return ai(t)?"0":t.endsWith(".")?t.slice(0,-1):yu(t)}i(wu,"sanitizeInputAmount");function HT(t,e){let o=t?.get("EVM");return o?.network?OT(o.network,e)??o.network:null}i(HT,"getConnectedEvmChainName");function Zn(t,e){return qT(t,e)?ut.PARTIALLY_CONNECTED:e.connected?ut.CONNECTED:e.connecting?ut.CONNECTING:e.installed?ut.DISCONNECTED:ut.NOT_INSTALLED}i(Zn,"getWalletConnectionStatus");function vu(t,e,o,n){return o.filter(r=>!Rp.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:c,namespaces:l}=t(r);return s&&(!c||!!n&&HT(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=ln(u.map(S=>S.type)),m=Zn(e(r),t(r));return{title:a,image:s,link:FT(c),state:m,type:r,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:f,isHub:h}})}i(vu,"mapWalletTypesToWalletInfo");function Jn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Jn,"walletAndSupportedChainsNames");function gs(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}=$T(l),d=c.length>0,f=c.includes(u),h=u===ms.Unknown;if(d&&!f&&!h)return;let m=u===ms.Unknown&&zT(p);if(h&&!m)return;if(o.includes(u)||m)if(r)s(u,p.toLowerCase(),r);else{let T=c.filter(k=>o.includes(k));T.forEach(k=>{s(k,p.toLowerCase())}),T.includes(UT)&&s(ms.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}i(gs,"prepareAccountsForWalletStore");function Mo(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(Mo,"getQuoteChains");function Rn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Rn,"isAccountAndWalletMatched");var Eu=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?fs(n.usdValue,n.decimals):pe.toFixed();return o.plus(r)},new cn(pe));return QT(e.toString())},"calculateWalletUsdValue");function QT(t){let e=t.toString().split(".");return e[0]&&(e[0]=gu(e[0])),e.join(".")}i(QT,"numberWithThousandSeparator");function fs(t,e){return new cn(t).shiftedBy(-e).toFixed()}i(fs,"representAmountInNumber");function pi(t){if(!t)return null;let e=fs(t.amount,t.decimals),o=t.usdValue?fs(t.usdValue,t.decimals):null,n=M(e,8,8),r=o?M(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(pi,"formatBalance");function bu(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new cn(t.usdValue).shiftedBy(-t.decimals):pe,n=e&&e.usdValue?new cn(e.usdValue).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new cn(t.amount).shiftedBy(-t.decimals):pe,n=e&&e.amount?new cn(e.amount).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(bu,"compareTokenBalance");function Vt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Vt,"areTokensEqual");function xu(t){return t.sort((e,o)=>+(o.state===ut.CONNECTED)-+(e.state===ut.CONNECTED)||+(o.state===ut.PARTIALLY_CONNECTED)-+(e.state===ut.PARTIALLY_CONNECTED)||+(o.state===ut.DISCONNECTED||o.state===ut.CONNECTING)-+(e.state===ut.DISCONNECTED||e.state===ut.CONNECTING))}i(xu,"sortWalletsBasedOnConnectionState");function po(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(po,"getConciseAddress");function Iu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(Iu,"getAddress");var Au=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function hs(t){return t.map(e=>e.state).join("-")}i(hs,"hashWalletsState");function Nu(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(Nu,"filterBlockchainsByWalletTypes");function Wu(t,e){return e===DT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(ii(n,e))return!0;return!1})}i(Wu,"filterWalletsByCategory");function qT(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(qT,"checkIsWalletPartiallyConnected");var ys={API_KEY:Jp()};function Kt(t){return ys[t]||""}i(Kt,"getConfig");function Pu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ys=e,ys}i(Pu,"initConfig");var Lu=20,Bu=25,Ss="theme-widget",Ts=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Vt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Vt(a,t));let r=n.isExcluded;return!r&&!o||r&&o}}}return o},"isTokenExcludedInConfig"),Cs=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 ui,dt=i(()=>ui||(ui=new GT(Kt("API_KEY"),Kt("BASE_URL")),ui),"httpService");import{i18n as Mu}from"@lingui/core";var di=[.5,1,3],mi=1,pn=5,er=30,fi=0;var Je=(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))(Je||{});var tr=(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))(tr||{}),gi=(n=>(n.CONNECT="connect",n.DISCONNECT="disconnect",n.DETECTED="detected",n))(gi||{}),Re=(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))(Re||{}),un=(a=>(a.RouteEvent="routeEvent",a.StepEvent="stepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(un||{});function hi(t,e){let o=t.map(a=>a.swapperGroup),n=[];return ln(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(c=>c.swapperGroup===a);if(s){let c=!0;o&&(c=o.some(l=>l===s.swapperGroup)),c&&s.types.map(l=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:l,selected:!e.includes(s.swapperGroup)})})}}),n}i(hi,"getUniqueSwappersGroups");function Du(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Du,"sortLiquiditySourcesByGroupTitle");function nt(t,e){return e?.[t]==="hidden"}i(nt,"isFeatureHidden");function dn(t,e){return e?.[t]==="enabled"}i(dn,"isRoutingEnabled");var $u=i((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function mn(t){return t==fi?{type:"error",message:Mu.t("Slippage must be greater than or equal to 0.01")}:t>pn&&t<=er?{type:"warning",message:Mu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(mn,"getSlippageValidation");var Fu=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=oi({config:a}),p=r;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>Xp.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=sn.get(u);d?.length||(d=Kn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),sn.set(u,d)),d=$u(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 x=o.getBalanceFor(g),A=o.getBalanceFor(m),E=bu(x,A);if(E!==0)return E}let y=l.get(g.blockchain),k=l.get(m.blockchain),w=ss(g,y),v=ss(m,k);if(w!==v)return w?-1:1;if(g.isPopular!==m.isPopular)return g.isPopular?-1:1;if(o.searchFor){let x=lu(g,m,o.searchFor);if(x)return x}return g.isSecondaryCoin!==m.isSecondaryCoin?g.isSecondaryCoin?1:-1:y&&k?y.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=Ct(o),s=n.get(a);return s||(s=r.find(c=>Ct(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Vt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),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(Du)},fetch:async()=>{try{let{routing:o}=e().config,n=dn("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=Ct(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 VT,Catalonia as KT,Chinese as Ou,Denmark as jT,English as XT,Finland as YT,French as ZT,German as JT,Greece as RT,Hungary as eC,India as tC,Indonesian as oC,Italian as nC,Japanese as rC,Korea as iC,Lithuania as aC,Malay as sC,Netherlands as lC,Pakistan as cC,Philippines as pC,Poland as uC,Portuguese as dC,Russian as mC,SaudiArabia as fC,Serbia as gC,Slovakia as hC,SouthAfrica as yC,Spanish as SC,Swahili as TC,Swedish as CC,Thai as kC,Turkish as wC,Ukrainian as vC,Vietnamese as EC}from"@rango-dev/ui";var Uu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:yC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:fC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:VT},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:KT},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Ou},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Ou},{title:"Danish",label:"Dansk",local:"da",SVGFlag:jT},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:lC},{title:"English",label:"English",local:"en",SVGFlag:XT},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:pC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:YT},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:ZT},{title:"German",label:"Deutsch",local:"de",SVGFlag:JT},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:RT},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:tC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:eC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:oC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:nC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:rC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:iC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:aC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:sC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:uC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:dC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:mC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:gC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:hC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:SC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:TC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:CC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:kC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:wC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:vC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:cC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:EC}],fn="en";var zu=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:mi,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=ln(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||fn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||fn}})},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=oi({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import xs from"bignumber.js";import bC from"mitt";var ge=bC(),xC={on:ge.on,off:ge.off};var Hu=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 Qu from"bignumber.js";function jt(t){return`${t.blockchain}${Bo}${t.address}${Bo}${t.symbol}`}i(jt,"createAssetKey");function qu(t,e){return`${jt(e)}${Bo}${t}`}i(qu,"createBalanceKey");function or(t){let[e,o,n]=t.split(Bo);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}i(or,"extractAssetFromBalanceKey");function ws(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[jt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Qu(r??pe).multipliedBy(o[s].amount).toString():""})})}),o}i(ws,"computeNextBalancesWithNewPrices");function vs(t,e){let o={};return t.balances?.forEach(n=>{let r=qu(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Qu(c??pe).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[r]=p}),o}i(vs,"createBalanceStateForNewAccount");function Es(t,e){for(let o in e){let n=or(o);if(n){let r=jt(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}}return t}i(Es,"updateAggregatedBalanceStateForNewAccount");function IC(t,e){let o=or(e);if(!o)return t;let n=jt(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(IC,"removeBalanceFromAggregatedBalance");function bs(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=or(l);if(!p)return;!!n.find(d=>qu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=IC(a,l):s[l]&&(r[l]=s[l])}),{_balances:r,_aggregatedBalances:a}}i(bs,"computeNextStateAfterWalletBalanceRemoval");function AC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(AC,"matchWalletDetailsWithConnectedWallet");var NC=uu(),Gu=Hu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Rn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Rn(s,a))?{...a,loading:!1,error:!1,explorerUrl:AC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Rn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n,r)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Rn(c,l)));if(s.length>0){let c=s.map(l=>{let p=!a.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:p,namespace:n,derivationPath: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};ws(m,g,d);let S=vs(g,e);f=Es(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}=bs(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};ws(f,d,l);let{_balances:h,_aggregatedBalances:g}=bs(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=vs(d,e);p=Es(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=jt(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 xs(u.amount),f=new xs(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(Bo);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>NC(()=>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=or(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new xs(l.amount).shiftedBy(-l.decimals):pe;s.push({chain:n.chain,symbol:p.symbol,ticker:p.symbol,address:p.address,rawAmount:l.amount,decimal:l.decimals,amount:d.toString(),isSupported:!!u,logo:u?.image||null,usdPrice:u?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Vu(t){return WC()(PC((...e)=>({...Gu(...e),...Fu(...e),...zu(...e),...Kp(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(Vu,"createAppStore");var Ku=BC(null);function C(){let t=_C(Ku);if(MC(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(C,"useAppStore");function ju(t){let e=DC();return e.current||(e.current=Vu(t.config)),LC.createElement(Ku.Provider,{value:e.current},t.children)}i(ju,"AppStoreProvider");function te(t){ge.emit("uiEvent",t)}i(te,"emitUiEvent");function Xu(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};te({type:t.type,payload:n}),o||e()}i(Xu,"emitPreventableEvent");function gn(t){ge.emit("quoteEvent",t)}i(gn,"emitQuoteEvent");function Yu(t){ge.emit("walletEvent",{type:"detected",payload:t})}i(Yu,"emitWalletDetected");var Ju=new Set,UC=new Set([Mt.LEDGER,Mt.TREZOR,Mt.WALLET_CONNECT_2,Mt.TON_CONNECT,Mt.DEFAULT]);function bt(t){let{chain:e}=t||{},{getAvailableProviders:o}=C(),{state:n,getWalletInfo:r}=$C(),{handleDisconnect:a}=an(),s=Qp(o()),c=vu(n,r,s,e);c=FC()?c.filter(f=>f.showOnMobile!==!1&&n(f.type).installed):c;let l=xu(c);Zu(()=>{c.forEach(f=>{if(UC.has(f.type))return;f.state!==yi.NOT_INSTALLED&&!Ju.has(f.type)&&(Ju.add(f.type),Yu({walletName:f.title}))})},[hs(c)]);let p=OC(()=>{let f=c?.filter(h=>h.state===yi.CONNECTING)||[];for(let h of f)a(h)},[hs(c)]);Zu(()=>()=>{p()},[]);let u=i(f=>{let h=f.find(m=>m.type===Mt.DEFAULT);return!h||h.state===yi.NOT_INSTALLED?!1:f.filter(m=>m.state!=yi.NOT_INSTALLED&&![Mt.DEFAULT,Mt.WALLET_CONNECT_2,Mt.LEDGER].includes(m.type)&&r(m.type).supportedChains.filter(S=>S.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=i(f=>f==Mt.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(f=>!d(f.type)),terminateConnectingWallets:p}}i(bt,"useWalletList");import{Modal as qC}from"@rango-dev/ui";import GC from"react";import{create as QC}from"zustand";var Ru="rango-widget";var nr=class{constructor(e){this.state="not-initiated";this.events={};this.init=()=>{this.initEvents(),this.tryClaim()};this.forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};this.isClaimed=()=>this.state==="claimed";this.destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};this.handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};this.handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};this.handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};this.channel=new BroadcastChannel(Ru),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{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 HC=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"),uo=HC;var ne=uo(QC()((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})}}))),$o=new nr({onInit:()=>ne.setState({tabManagerInitiated:!0}),onClaim:()=>ne.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ne.setState({isActiveTab:!1})});function re(t){let{watermark:e}=ne();return GC.createElement(qC,{hasWatermark:e==="FULL",...t},t.children)}i(re,"WatermarkedModal");import{i18n as Sn}from"@lingui/core";import{Alert as ak,Button as sk,Divider as Tn,Image as lk,MessageBox as ck,RadioRoot as pk,WalletImageContainer as uk}from"@rango-dev/ui";import{getSupportedChainsFromNamespace as dk}from"@rango-dev/wallets-shared";import le,{useEffect as mk,useMemo as fk,useState as gk}from"react";import{i18n as XC}from"@lingui/core";import{Typography as sd}from"@rango-dev/ui";import hn from"react";function Si(t,e){return t.find(o=>o.name===e)?.logo}i(Si,"getBlockchainLogo");import{darkTheme as VC,Image as KC,styled as Xt,Typography as jC}from"@rango-dev/ui";var Ti=Xt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${VC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),Ci=Xt("div",{display:"flex",gap:"$8",alignItems:"center"}),td=Xt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),od=Xt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),nd=Xt("div",{display:"flex",gap:"$6",alignItems:"center"}),rd=Xt("div",{paddingLeft:"48px"}),id=Xt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),ad=Xt(jC,{maxWidth:"100px",whiteSpace:"nowrap"}),ki=Xt(KC,{variants:{disabled:{true:{opacity:"0.5"}}}});function wi(t){let{namespace:e}=t,o=C().blockchains();return hn.createElement(Ti,{unsupported:!0},hn.createElement(Ci,null,hn.createElement(ki,{src:Si(o,e.id),size:40,disabled:!0}),hn.createElement(od,null,hn.createElement(sd,{variant:"label",size:"large"},e.label),hn.createElement(sd,{variant:"body",size:"xsmall"},XC.t("(Currently not supported)")))))}i(wi,"NamespaceUnsupportedItem");import{Checkbox as nk,Radio as rk}from"@rango-dev/ui";import Ws from"react";import{i18n as Ns}from"@lingui/core";import{ChevronDownIcon as ZC,ChevronUpIcon as JC,Divider as RC,Typography as rr}from"@rango-dev/ui";import{getSupportedChainsFromNamespace as ek}from"@rango-dev/wallets-shared";import Ne,{useEffect as tk,useState as ok}from"react";import{Image as cd,Tooltip as pd,Typography as YC}from"@rango-dev/ui";import Dt from"react";import{styled as ld}from"@rango-dev/ui";var Is=ld("div",{display:"flex",alignItems:"center",padding:0,margin:0}),vi=ld("div",{marginLeft:"-5px",listStyleType:"none",backgroundColor:"$background",borderRadius:"$lg",minWidth:"15px",height:"15px",variants:{firstItem:{true:{marginLeft:0}}},display:"flex",alignItems:"center",justifyContent:"center"});var As=3;function ud(t){let{chains:e}=t;return Dt.createElement(Is,{id:"widget-supported-chains-container"},e.slice(0,As).map((o,n)=>Dt.createElement(pd,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},Dt.createElement(vi,{firstItem:n===0},Dt.createElement(cd,{src:o.logo,size:15})))),e.length>As&&Dt.createElement(pd,{container:W(),side:"bottom",align:"start",sideOffset:4,content:Dt.createElement(Is,null,e.map((o,n)=>Dt.createElement(vi,{key:o.name,firstItem:n===0},Dt.createElement(cd,{src:o.logo,size:15}))))},Dt.createElement(vi,null,Dt.createElement(YC,{variant:"body",size:"xsmall"},"+",e.length-As))))}i(ud,"SupportedChainsList");function Fo(t){let{namespace:e,error:o,suffix:n,connected:r,address:a,onClick:s}=t,[c,l]=ok(!1),p=C().blockchains();tk(()=>l(!1),[o]);let u=ek(e,p),d=!o&&!r&&u.length>1;return Ne.createElement(Ti,{hasError:!!o,clickable:!!s,onClick:s},Ne.createElement(Ci,null,Ne.createElement(ki,{src:Si(p,e.id),size:40}),Ne.createElement(td,{showSupportedChains:d||r||!!o},Ne.createElement(nd,null,Ne.createElement(rr,{variant:"label",size:"large"},e.label),r&&Ne.createElement(rr,{variant:"body",size:"small",color:"success500"},Ns.t("Connected")),!!o&&Ne.createElement(rr,{variant:"body",size:"small",color:"error500"},Ns.t("Connection failed"))),d&&Ne.createElement(ud,{chains:u}),r&&Ne.createElement(ad,{variant:"body",size:"small",color:"neutral700"},a),o&&Ne.createElement(id,{onClick:()=>l(f=>!f)},Ne.createElement(rr,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},Ns.t("See why")),c?Ne.createElement(JC,{size:12,color:"gray"}):Ne.createElement(ZC,{size:12,color:"gray"}))),n),!!o&&c&&Ne.createElement(Ne.Fragment,null,Ne.createElement(RC,{size:4}),Ne.createElement(rd,null,Ne.createElement(rr,{variant:"body",size:"small",color:"neutral700"},o))))}i(Fo,"NamespaceItem");function dd(t){let{onClick:e,type:o,namespace:n}=t;return Ws.createElement(Fo,{namespace:n,onClick:e,suffix:o==="radio"?Ws.createElement(rk,{value:n.value}):Ws.createElement(nk,{checked:t.value})})}i(dd,"NamespaceListItem");import{Button as ik,styled as md}from"@rango-dev/ui";var Ei=md("ul",{padding:0,paddingBottom:"$20",margin:0}),yn=md(ik,{minHeight:"$40"});function ir(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=C().blockchains(),[l,p]=gk([]),u=fk(()=>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(pk,{value:l?.[0]},m):le.createElement(le.Fragment,null,m),"wrapRadioRoot");return mk(()=>{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(ck,{type:"info",title:Sn.t("Connect {wallet}",{wallet:e.title}),description:Sn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(uk,null,le.createElement(lk,{src:s,size:45}))}),r?le.createElement(le.Fragment,null,le.createElement(Tn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(ak,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:Sn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(Tn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(Tn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(sk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:h},f?Sn.t("Deselect all"):Sn.t("Select all")),le.createElement(Tn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(Ei,null,g(le.createElement(le.Fragment,null,a?.data.map((m,S,T)=>le.createElement(le.Fragment,{key:m.id},m.unsupported?le.createElement(wi,{namespace:m}):le.createElement(dd,{value:l.includes(m.value),namespace:m,type:r?"radio":"checkbox",onClick:()=>d(m.value)}),S!==T.length-1&&le.createElement(Tn,{size:10})))))),le.createElement(Tn,{size:20}),le.createElement(yn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!l.length,onClick:()=>t.onConfirm(l)},Sn.t("Connect")))}i(ir,"Namespaces");import{i18n as ar}from"@lingui/core";import{Alert as wk,Button as vk,Divider as Cn,Image as Ek,MessageBox as bk,WalletImageContainer as xk}from"@rango-dev/ui";import{useWallets as Ik}from"@rango-dev/wallets-react";import me from"react";import{styled as hk}from"@rango-dev/ui";var fd=hk("div",{display:"flex",justifyContent:"end"});import{i18n as Ps}from"@lingui/core";import{Button as yk,Spinner as Sk}from"@rango-dev/ui";import Ls,{useLayoutEffect as Tk,useRef as Ck,useState as kk}from"react";function gd(t){let{namespace:e,initialConnect:o,disabled:n,state:r,handleConnect:a,handleDisconnect:s}=t,[c,l]=kk(null),p=Ck(!1);Tk(()=>{o&&!p.current&&u()},[]);let u=i(async g=>{try{p.current=!0,await a(g)}catch(m){l(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:po(m)},"getConnectedAddress"),h=i(()=>r.connected?Ps.t("Disconnect"):c?Ps.t("Try again"):Ps.t("Connect"),"getButtonText");return Ls.createElement(Fo,{namespace:e,connected:r.connected,error:c?.message,address:f(),suffix:r.connecting?Ls.createElement(Sk,{color:"info"}):Ls.createElement(yk,{id:"widget-name-space-connect-btn",variant:"ghost",type:r.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}i(gd,"NamespaceDetachedItem");function sr(t){let{value:e,selectedNamespaces:o,onConfirm:n,confirmText:r=ar.t("Done"),onDisconnectWallet:a,navigateToDerivationPath:s}=t,{targetWallet:c}=e,{connect:l,disconnect:p,state:u}=Ik(),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(Cn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(wk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:ar.t("This wallet can only connect to one chain at a time.")}),me.createElement(Cn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(Cn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(fd,null,me.createElement(vk,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:f.connecting||!f.connected,onClick:a},ar.t("Disconnect wallet"))),me.createElement(Cn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),k=i(w=>{if(w.unsupported)return me.createElement(wi,{namespace:w});let v=o?.find(E=>E.namespace===w.value),x=f.namespaces?.get(w.value);if(!x)throw new Error(`State for ${w.value} was not found!`);let A=m&&f.connecting;return me.createElement(gd,{namespace:w,initialConnect:!!v,disabled:A,state:x,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(bk,{type:"info",title:ar.t("Connect {wallet}",{wallet:c.title}),description:ar.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:me.createElement(xk,null,me.createElement(Ek,{src:c.image,size:45}))}),y(),me.createElement(Ei,{id:"widget-detached-namespace-list"},c.needsNamespace?.data.map((w,v,x)=>me.createElement(me.Fragment,{key:w.id},k(w),v!==x.length-1&&me.createElement(Cn,{size:10})))),me.createElement(Cn,{size:20}),me.createElement(yn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},r))}i(sr,"Detached");import{i18n as kn}from"@lingui/core";import{Divider as Pk,Image as Lk,MessageBox as Bk,Select as _k,TextField as Mk}from"@rango-dev/ui";import xt,{useEffect as Dk,useState as yd}from"react";import{namespaces as Ak}from"@rango-dev/wallets-shared";var bi={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Bs(t){let e=t?Ak[t]?.derivationPaths:null;return e?[...e,bi]:[]}i(Bs,"getDerivationPaths");import{Button as Nk,styled as _s,Typography as Wk}from"@rango-dev/ui";var hd=_s("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Ms=_s(Wk,{paddingLeft:"$10"}),Ds={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},rM=_s(Nk,{minHeight:"$40"});var Sd="0";function lr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=yd(null),[c,l]=yd(Sd),p=a===bi.id,u=Bs(o),d=i(({value:h})=>{let g=u?.find(m=>m.id===h);g&&(a===bi.id&&Number.isNaN(Number(c))&&l(Sd),s(g.id))},"handleDerivationPathItemClick"),f=i(()=>{let h=u.find(g=>g.id===a);if(h)e(h.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return Dk(()=>{s(Bs(o)[0]?.id||null)},[o]),xt.createElement(xt.Fragment,null,xt.createElement(Bk,{type:"info",title:kn.t("Select Derivation Path"),description:kn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:xt.createElement(Lk,{src:n,size:45})}),xt.createElement(hd,{className:"_derivation_path_inputs_container"},xt.createElement(Ms,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},kn.t("Choose Derivation Path Template")),xt.createElement(_k,{id:"widget-derivation-path-template-select",value:a||"",options:u.map(h=>({value:h.id,label:h.label})),variant:"filled",handleItemClick:d,styles:{trigger:Ds}}),xt.createElement(Pk,{size:20}),xt.createElement(Ms,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},p?kn.t("Enter Path"):kn.t("Enter Index")),xt.createElement(Mk,{id:"widget-derivation-path-template-input",type:p?"text":"number",variant:"contained",value:c,onChange:h=>l(h.target.value),style:Ds})),xt.createElement(yn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:f,disabled:!u||!a||!c},kn.t("Confirm")))}i(lr,"DerivationPath");import{i18n as wn}from"@lingui/core";import{Image as Ok,MessageBox as Fs,WalletImageContainer as Uk,WalletState as zk}from"@rango-dev/ui";import{useWallets as Hk}from"@rango-dev/wallets-react";import Oo from"react";import{keyframes as $k,styled as $s}from"@rango-dev/ui";var gM=$s("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Td=$s("div",{position:"relative"}),Fk=$k({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Cd=$s("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Fk} 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}=Hk();return Zn(s(n),a(n))===zk.CONNECTED?Oo.createElement(Fs,{type:"success",title:wn.t("Wallet Connected"),description:wn.t("Your wallet is connected, you can use it to swap.")}):o?Oo.createElement(Fs,{type:"error",title:wn.t("Failed to Connect"),description:o||wn.t("Your wallet is not connected. Please try again.")}):Oo.createElement(Fs,{type:"loading",title:wn.t("Connecting to your wallet"),description:wn.t("Click connect in your wallet popup."),icon:Oo.createElement(Td,null,Oo.createElement(Uk,null,Oo.createElement(Ok,{src:r,size:45})),Oo.createElement(Cd,null))})}i(Os,"ConnectStatus");function kd(t,e){return t().status==="init"&&!!e}i(kd,"isOnStatus");function cr(t){return t().status==="namespace"}i(cr,"isOnNamespace");function pr(t){return t().status==="derivationPath"}i(pr,"isOnDerivationPath");function Wo(t){return t().status==="detached"}i(Wo,"isOnDetached");var Vk=3e3,Kk=300;function ur(t){let e=Gk(),[o,n]=wd(!1),[r,a]=wd(),s=i(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=bt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:f,handleDisconnect:h}=an(),g=i(v=>{u(t.wallet,v).then(k).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(k).catch(s)},"handleDerivationPathConfirm"),T=i(()=>{n(!1)},"handleClosingModal"),y=i(()=>{a(void 0),f(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((v,x)=>{let A=v.status==="connected",E=["disconnected","disconnected-unhandled"].includes(v.status);A?(t.onConnect?.(),x||(e.current=setTimeout(T,Vk))):E&&T()},"afterConnected"),w=i(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return qk(()=>{if(t.wallet){y();let v=!1,x=!0;i(()=>{setTimeout(()=>{x=!1,v||n(!0)},Kk)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","Detached","derivation-path"].includes(E.status)||(v=!0),k(E,x)}).catch(s)}},[t.wallet]),mo.createElement(re,{id:t.id,open:o,onClose:T,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},kd(d,t.wallet)&&mo.createElement(mo.Fragment,null,mo.createElement(Os,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),mo.createElement(Qk,{direction:"vertical",size:32})),cr(d)&&mo.createElement(ir,{onConfirm:g,value:d().namespace}),pr(d)&&mo.createElement(lr,{onConfirm:S,value:d().derivationPath}),Wo(d)&&mo.createElement(sr,{onConfirm:m,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}i(ur,"StatefulConnectModal");import ts from"react";import jk,{Fragment as Xk}from"react";import{MemoryRouter as Yk,useInRouterContext as Zk}from"react-router";function xi({children:t}){let o=Zk()?Xk:Yk;return jk.createElement(o,null,t)}i(xi,"AppRouter");import{I18nManager as V0}from"@rango-dev/ui";import Pp from"react";import ze from"react";import{useRoutes as E0}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 En,useRef as Bi}from"react";import at from"bignumber.js";import{create as em}from"zustand";import{subscribeWithSelector as tm}from"zustand/middleware";import{createContext as Jk,useContext as Rk}from"react";var vd=Jk({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=Rk(vd);return{swapMode:t,isMultiMode:e}}i(rt,"useSwapMode");import{i18n as wt}from"@lingui/core";import{getRelatedWalletOrNull as ow,RouteEventType as xD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as dr}from"rango-types";import{i18n as qe}from"@lingui/core";var ie=i(()=>({genericServerError:qe.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:qe.t("Please reset your liquidity sources."),description:qe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:qe.t("No Routes Found."),description:qe.t("Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination.")},bridgeLimitErrors:{increaseAmount:qe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:qe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:qe.t("High Price Impact"),title:qe.t("Price impact is too high!"),description:qe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:qe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:qe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:qe.t("USD Price Unknown"),title:qe.t("USD Price Unknown, Cannot calculate Price Impact."),description:qe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:qe.t("Confirm USD Price Unknown")}}),"errorMessages");function Ed(t){return t.type===0?t.diagnosisMessage??ie().noResultError.title:t.type===1?t.diagnosisMessage??ie().genericServerError:""}i(Ed,"getQuoteErrorMessage");import{i18n as Ii}from"@lingui/core";var Uo=i(()=>({connectWallet:Ii.t("Connect Wallet"),swap:Ii.t("Swap"),swapAnyway:Ii.t("Swap anyway"),ethWarning:Ii.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"],bd=100,xd=30,Id=15,Ad=60;var Nd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Wd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as tw}from"@rango-dev/queue-manager-rango-preset";import dD from"bignumber.js";function Ld(t,e){if(e===null)return null;let o=e?.find(n=>n.blockchain===t.chain)?.wallets.find(n=>n.address?.toLowerCase()===t.address.toLowerCase());return o?o.requiredAssets:null}i(Ld,"getRequiredBalanceOfWallet");function Zt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Zt,"getPriceImpactLevel");function Ai(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=tw(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(Ai,"createRetryQuote");function vn(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=zo(o),s=it(o);if(o&&a&&s){let p=Yt(a.toString(),s.toString());if(!!p&&$d(a,p)){let d=Wi(o?.swaps,n),f=Zt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:f}}}if(e&&Ud(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Yt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=Pi(o.swaps),l=r>pn;if(Od(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:Fd(o,r),minRequiredSlippage:c};return null}i(vn,"generateQuoteWarnings");function Bd(t){return![4].includes(t.type)}i(Bd,"isQuoteWarningConfirmationRequired");function Yt(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(Yt,"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"),Ni=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"),Md=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"),Dd=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 $d(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return Nd.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Ge(r)))}i($d,"hasHighValueLoss");function zd(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Ge(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ge(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(zd,"hasLimitError");function Hd(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=wt.t({id:"Required: >= {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=wt.t({id:"Required: > {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=wt.t({id:"Required: <= {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=wt.t({id:"Required: < {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Hd,"getLimitErrorMessage");function Qd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:Uo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!r||r==="0"?{title:Uo().swap,action:"confirm-swap",disabled:!0}:s?{title:Uo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:Uo().ethWarning,action:"confirm-warning",disabled:!1}:{title:Uo().swap,action:"confirm-swap",disabled:!1}:{title:Uo().connectWallet,action:"connect-wallet",disabled:!1}}i(Qd,"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 Wi(t,e){return t.reduce((o,n)=>o.plus(qs(n,e)),pe)}i(Wi,"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 qd(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(qd,"getFeesGroup");function Gd(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?Object.fromEntries(e):null}i(Gd,"checkSlippageErrors");function Fd(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(Fd,"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 Od(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Od,"hasProperSlippage");function Vd(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,k)=>(y[k.chain]=k.address,y),{}),S=[];return r?.forEach(y=>{S.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent: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(Vd,"createQuoteRequestBody");function Kd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}i(Kd,"getWalletsForNewSwap");function zo(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}i(zo,"getUsdInputFrom");function it(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1]?.to.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}i(it,"getUsdOutputFrom");function Hs(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(bd).toNumber()}i(Hs,"getPercentageChange");function Ud(t,e){let o=zo(t),n=it(t),r=it(e);if(!o||!n||!r)return!1;let a=Hs(n.toString(),r.toString());return Wd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}i(Ud,"isOutputAmountChangedExcessively");function jd(t,e,o){let n=t.validationStatus,r=Mo({filter:"required",quote:t});return e.sort((s,c)=>r.indexOf(s.chain)-r.indexOf(c.chain)).flatMap(s=>Ld(s,n)||[]).filter(s=>!s.ok).map(s=>{let c=s.asset.symbol,l=M(new Ge(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=M(new Ge(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=wt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=wt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=wt.t(" for input and network fee")),wt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:p,symbol:c,reason:u,currentAmount:l,blockchain:Tt(s.asset.blockchain,o)}})})}i(jd,"generateBalanceWarnings");function mr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==dr.NetworkChanged}i(mr,"isNetworkStatusInWarningState");function Xd(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,"")),mr(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let p=(e?ow(t,e):null)?.walletType,u=p?o?.(p)?.name:null;switch(e?.networkStatus){case dr.WaitingForConnectingWallet:r=u?wt.t("Connect {wallet}",{wallet:u}):r;break;case dr.WaitingForQueue:r=r||wt.t("Waiting for other running tasks to be finished");break;case dr.WaitingForNetworkChange:r=r||wt.t("Waiting for changing wallet network");break;case dr.NetworkChangeFailed:r=r||wt.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=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:c}}}i(Xd,"getSwapMessages");function Yd(t){let e=null;if(t.status==="failed"){let o=t.steps.slice().reverse().filter(n=>n.status==="success")[0];o&&(e={blockchain:o.toBlockchain,symbol:o.toSymbol,outputAmount:o.outputAmount,address:o.toSymbolAddress})}return e}i(Yd,"getLastConvertedTokenInFailedSwap");function Zd(t){return t.status==="failed"}i(Zd,"shouldRetrySwap");function Jd(t,e,o,n,r,a){if(!n||t)return!0;let s=Mo({filter:"all",quote:n}),c=Mo({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?Lo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}i(Jd,"isConfirmSwapDisabled");function Rd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Rd,"isTokensIdentical");var Li=i((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),om=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 Yn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=zo(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:Li(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=wu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=Su(e);ai(e)||(o=mu(o),o=fu(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new at(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Li(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:Li(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?Li(e.toToken,e.outputAmount?.toString()||""):new at(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new at(0),inputUsdValue:new at(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new at(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})}),"initializer"),nm=em()(tm(om)),rm=em()(tm(om)),nw=uo(nm),rw=uo(rm);function z(){let{swapMode:t}=rt();return uo(t==="refuel"?rm:nm)}i(z,"useQuoteStore");var im=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"),am=nw.subscribe(im),sm=rw.subscribe(im);function lm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=C().config,d=C().fetchStatus,f=C().blockchains(),{findToken:h}=C(),{setAffiliateRef:g,setAffiliatePercent:m,setAffiliateWallets:S}=C(),T=u?.from?.tokens,y=u?.from?.blockchains,k=u?.to?.tokens,w=u?.to?.blockchains,v=Bi(void 0),x=Bi(void 0),A=Bi(void 0),E=Bi(void 0);En(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),En(()=>{if(d==="success"){r();let I=f.find(N=>N.name===u?.from?.blockchain),b=u?.from?.token,L=b&&h(b);(I||!I&&A.current)&&n(I??null),L?a({token:L,meta:{blockchains:f}}):!L&&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]),En(()=>{Ts(s,T)&&a({token:null}),Cs(l,y)&&n(null)},[T,y]),En(()=>{Ts(c,k)&&a({token:null}),Cs(p,w)&&o(null)},[k,w]),En(()=>{if(d==="success"){r();let I=f.find(N=>N.name===u?.to?.blockchain),b=u?.to?.token,L=b&&h(b);(I||!I&&E.current)&&o(I??null),L?e({token:L,meta:{blockchains:f}}):!L&&x.current&&e({token:null}),E.current=u?.to?.blockchain,x.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),En(()=>{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(lm,"useSyncStoresWithConfig");import{useEffect as Xs,useRef as iw}from"react";import{useInRouterContext as aw,useLocation as sw,useSearchParams as lw}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=sw(),[e,o]=lw(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:f}=z()(),h=C().fetchStatus,g=C().blockchains(),m=aw(),{updateIframe:S,updateCampaignMode:T}=C(),y=C().isInCampaignMode(),k=iw(),{findToken:w}=C(),v=i(()=>{let A={};for(let[P,Z]of e.entries())(P.startsWith("utm_")||P.startsWith("privy_"))&&(A[P]=Z);let E=e.get("fromAmount"),I=e.get("fromBlockchain"),b=e.get("fromToken"),L=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:I,fromToken:b,toBlockchain:L,toToken:N,autoConnect:O,clientUrl:q,liquiditySources:j,extraQueryParams:A,blockchain:ee}},"getUrlSearchParams"),x=i(A=>{for(let E in A)A[E]||delete A[E];o(A,{replace:!0})},"updateUrlSearchParams");Xs(()=>{let{autoConnect:A,clientUrl:E,extraQueryParams:I,blockchain:b}=v();m&&h==="success"&&x({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?k.current:void 0,...I})},[t.pathname,c,n,a,r,s,y,h]),Xs(()=>{if(!m)return;let A=v();if(!k.current&&A.liquiditySources&&(k.current=A.liquiditySources),A.fromAmount&&f(A.fromAmount),h==="success"){let E=g.find(q=>q.name===A.fromBlockchain),I=A.fromToken&&E&&Ks(A.fromToken,E),b=I?w(I):void 0,L=g.find(q=>q.name===A.toBlockchain),N=A.toToken&&L&&Ks(A.toToken,L),O=N?w(N):void 0;E&&(l(E),b&&u({token:b,meta:{blockchains:g}})),L&&(p(L),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 In}from"@lingui/core";import{Alert as Nv,Button as Wv,darkTheme as Pv,Divider as Il,DoneIcon as Lv,styled as Bv,TextField as _v,Typography as Mv}from"@rango-dev/ui";import Ke,{useState as Dv}from"react";import{useNavigate as $v,useSearchParams as Fv}from"react-router-dom";import{ChevronRightIcon as cw,Divider as mm,Image as pw,Typography as fm}from"@rango-dev/ui";import It from"react";import{darkTheme as cm,styled as Js}from"@rango-dev/ui";var pm=Js("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${cm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${cm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),um=Js("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),dm=Js("div",{display:"flex"});function Rs(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return It.createElement(um,null,It.createElement(fm,{size:"large",variant:"label"},n),It.createElement(mm,{size:10}),It.createElement(pm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},It.createElement(dm,null,r&&It.createElement(It.Fragment,null,It.createElement(pw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),It.createElement(mm,{size:4,direction:"horizontal"})),It.createElement(fm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),It.createElement(cw,{size:12,color:"black"})))}i(Rs,"BlockchainSelectorButton");import{i18n as nl}from"@lingui/core";import{Button as Sw,Divider as Tm,MessageBox as Tw}from"@rango-dev/ui";import fo,{useEffect as Cm,useState as rl}from"react";import{i18n as _i}from"@lingui/core";import{Divider as Ho,ExternalLinkIcon as mw,Image as fw,InfoIcon as gw,Tooltip as hw,Typography as gr}from"@rango-dev/ui";import fe from"react";var gm="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as uw,darkTheme as bn,styled as fr,Typography as dw}from"@rango-dev/ui";var el=fr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${bn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${bn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${bn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${bn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),hm=fr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${bn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${bn} &`]:{color:"$colors$neutral900"}}}),tl=fr(uw,{minHeight:"$40"}),ym=fr(dw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),Sm=fr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var yw=9;function ol(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,c=n.address?ti({contractAddress:n.address,blockchainMeta:s}):void 0,l=i(()=>window.open(gm,"_blank"),"onClickLearnMore");return fe.createElement(re,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:r,container:W()},fe.createElement(hm,null,fe.createElement(fw,{src:n.image===""?ni:n.image,size:45,type:"circular"}),fe.createElement(Ho,{size:4}),fe.createElement(Sm,null,fe.createElement(ym,{variant:"title",size:"medium"},n.symbol),n.symbol.length>yw&&fe.createElement(hw,{content:n.symbol,container:W()},fe.createElement(gw,{size:12,color:"gray"}))),fe.createElement(gr,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),fe.createElement(Ho,{size:4}),fe.createElement(gr,{variant:"body",size:"medium"},c?fe.createElement(el,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(mw,{size:12,color:"gray"})):fe.createElement(el,null,n.address)),fe.createElement(Ho,{size:4}),n.coinSource&&fe.createElement(gr,{className:"_coin-source",variant:"body",size:"xsmall"},_i.t("via")," ",fe.createElement(gr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Ho,{size:"32"}),fe.createElement(gr,{size:"medium",variant:"body",className:"_custom-token-description"},_i.t("This token is not part of our verified token list. please verify its source and make sure to understand all associated risks before proceeding."))),fe.createElement(Ho,{size:40}),fe.createElement(Ho,{size:10}),fe.createElement(tl,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},_i.t("Import Anyway")),fe.createElement(Ho,{size:10}),fe.createElement(tl,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},_i.t("Learn More")))}i(ol,"CustomTokenModal");function hr(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=C(),[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"),k=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 Cm(()=>{n&&f(!0)},[n]),Cm(()=>{o&&e&&g(!0)},[o,e]),fo.createElement(fo.Fragment,null,fo.createElement(re,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},fo.createElement(Tw,{title:n?.title??"",type:"error",description:n?.message||nl.t("Failed Network, Please retry.")},fo.createElement(Tm,{size:40}),fo.createElement(Tm,{size:10}),fo.createElement(Sw,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:k},n?.type==="network-error"?nl.t("Retry"):nl.t("Add another custom token")))),o&&e&&fo.createElement(ol,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}i(hr,"ImportCustomToken");import{useManager as vv}from"@rango-dev/queue-manager-react";import{BottomLogo as Ev,Divider as ef,Header as bv}from"@rango-dev/ui";import Pe,{useEffect as qi,useLayoutEffect as xv,useRef as tf,useState as of}from"react";import{useRef as Cw}from"react";function Mi(){return window.self!==window.top}i(Mi,"isAppLoadedIntoIframe");function il(){let t=Cw(null),{iframe:e}=C(),o=Mi()&&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 kw}from"react-router-dom";function Ve(){let t=kw();return()=>t(-1)}i(Ve,"useNavigateBack");import{createTheme as dl,darkTheme as _w,lightTheme as Mw}from"@rango-dev/ui";import{useEffect as Dw,useState as $w}from"react";import{theme as Lw,darkColors as Bw}from"@rango-dev/ui";import pl from"react";var Di=16,$i=255,km=.11;function ww(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(ww,"expandShortHexColor");function vw(t,e){return t.padStart(e,"0")}i(vw,"pad");function al(t){let e=Math.min(Math.max(Math.round(t),0),$i);return vw(e.toString(Di),2)}i(al,"intToHex");function Ew(t){return`#${al(t.red)}${al(t.green)}${al(t.blue)}`}i(Ew,"rgbToHex");function bw(t){let e=parseInt(t.slice(1,3),Di),o=parseInt(t.slice(3,5),Di),n=parseInt(t.slice(5,7),Di);return{red:e,green:o,blue:n}}i(bw,"hexToRGB");function xw(t,e){let o=1-km*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(xw,"generateShade");function Iw(t,e){let o=km*e;return{red:t.red+($i-t.red)*o,green:t.green+($i-t.green)*o,blue:t.blue+($i-t.blue)*o}}i(Iw,"generateTint");function Aw(t){return wm(t,xw)}i(Aw,"calculateShades");function Nw(t){return wm(t,Iw)}i(Nw,"calculateTints");function wm(t,e){let o=bw(t),n=[];for(let r=1;r<9;r++)n.push(Ew(e(o,r)));return n}i(wm,"calculateColors");function sl(t,e,o){let a=Nw(t).reverse().concat(t),s=Aw(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)&&!Cu(r)){let l=ww(a);Object.assign(n,sl(l,r,s))}}return{...n,...e}}i(ll,"expandToGenerateThemeColors");var vm=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Ww=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=vm(o%52)+e;return vm(o%52)+e},"toAlphabeticName"),Pw=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),cl=i(t=>Ww(Pw(5381,JSON.stringify(t))>>>0),"toHash");function ul(t){let e=Lw.colors,o={...e,...Bw},n,r;if(t?.light){let s={colors:ll(e,t.light)};n={id:`${Ss}-light-${cl(s)}`,tokens:s}}if(t?.dark){let s={colors:ll(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Ss}-dark-${cl(s)}`,tokens:s}}return{light:n,dark:r}}i(ul,"customizedThemeTokens");function Em(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(Em,"joinList");function bm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(bm,"doesWindowPreferDarkColorScheme");function go(t){let{colors:e,fontFamily:o=ou,borderRadius:n=Lu,secondaryBorderRadius:r=Bu}=t,[a,s]=$w(bm()?"dark":"light"),{theme:c}=C(),{dark:l,light:p}=ul(e),u=dl({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),d=[u.className,Mw.className],f=[u.className,_w.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 Dw(()=>{let g=i(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return bm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme: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(go,"useTheme");var vt=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 xm}from"@lingui/core";import{Alert as Fw,Button as Ow}from"@rango-dev/ui";import Im from"react";function ml(t){return Im.createElement(Fw,{action:Im.createElement(Ow,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},xm.t("Activate this tab")),type:"warning",variant:"alarm",title:xm.t("Another tab is open and handles transactions.")})}i(ml,"ActivateTabAlert");import{i18n as fl}from"@lingui/core";import{Button as Uw,Divider as zw,MessageBox as Hw}from"@rango-dev/ui";import Fi from"react";function gl(t){let{open:e,onClose:o,onConfirm:n}=t;return Fi.createElement(re,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},Fi.createElement(Hw,{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.")},Fi.createElement(zw,{size:20}),Fi.createElement(Uw,{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 Gw}from"@rango-dev/ui";import Mm from"react";import{css as Qw,darkTheme as Am,IconButton as qw,styled as Qo}from"@rango-dev/ui";var $t=Qo(qw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Am} &`]:{backgroundColor:"$neutral"}}}),Nm=Qo("div",{position:"absolute",background:"$secondary500",[`.${Am} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),ho=Qo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Wm=Qo("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),Pm=Qo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Lm=Qo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Bm=Qw({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 Mm.createElement($t,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Mm.createElement(Gw,{color:"black",size:16}))}i(hl,"BackButton");import{i18n as Vw}from"@lingui/core";import{Button as Kw,Typography as jw}from"@rango-dev/ui";import yl from"react";function Sl(t){return yl.createElement(ho,null,yl.createElement(Kw,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},yl.createElement(jw,{variant:"label",size:"medium",color:"error500"},Vw.t("Cancel"))))}i(Sl,"CancelButton");import{i18n as Xw}from"@lingui/core";import{Image as Yw,Tooltip as Zw,WalletIcon as Jw,WalletState as Dm}from"@rango-dev/ui";import qo from"react";function Tl(t){let{list:e}=bt(),o=e.filter(r=>r.state===Dm.CONNECTED||r.state===Dm.PARTIALLY_CONNECTED),n=o.length?qo.createElement("div",{className:Bm()},o.map(r=>qo.createElement(_m,{key:r.title},qo.createElement(Yw,{src:r.image,size:14})))):Xw.t("Connect Wallet");return qo.createElement(Zw,{container:t.container,side:"bottom",content:n},qo.createElement($t,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&qo.createElement(Nm,null),qo.createElement(Jw,{size:18,color:"black"})))}i(Tl,"WalletButton");import{i18n as Ui}from"@lingui/core";import{NotificationsIcon as fv,Popover as gv,SettingsIcon as hv,Tooltip as zi,TransactionIcon as yv}from"@rango-dev/ui";import _e from"react";import{Notifications as ov}from"@rango-dev/ui";import nv from"react";import{useNavigate as rv}from"react-router-dom";import{create as Rw}from"zustand";import{persist as ev,subscribeWithSelector as tv}from"zustand/middleware";var We=uo(Rw()(ev(tv((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=rv(),{getNotifications:e,clearNotifications:o}=We(),n=e(),r=C().blockchains(),{findToken:a}=C();return nv.createElement(ov,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Gp(c,r),getTokenImage:c=>a(c)?.image,onClickItem:i(c=>{t(`${$.swaps}/${c}`)},"onClickItem"),onClearAll:o})}i(Cl,"NotificationContent");import{useManager as iv}from"@rango-dev/queue-manager-react";import{InProgressIcon as av}from"@rango-dev/ui";import $m from"react";var sv=i(()=>{let{manager:t}=iv();return vt(t).map(({swap:o})=>o).find(o=>o.status==="running")?$m.createElement(Lm,{id:"widget-header-history-badge-container"},$m.createElement(av,{color:"info",size:6})):null},"InProgressTransactionBadge"),Fm=sv;import{EventSeverity as lv}from"@rango-dev/queue-manager-rango-preset";import{Typography as cv}from"@rango-dev/ui";import Om from"react";function Um(){let{getNotifications:t}=We(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===lv.WARNING);return o?Om.createElement(Wm,{isSever:n},Om.createElement(cv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}i(Um,"NotificationsBadge");import{RefreshProgressButton as pv}from"@rango-dev/ui";import kl,{useEffect as uv,useState as zm}from"react";var dv=1e3,Hm=60,mv=100;function Oi({onClick:t}){let[e,o]=zm(0),[n,r]=zm(!1),a=i(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");uv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Hm&&c()},dv):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($t,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},kl.createElement(Pm,{onTransitionEnd:()=>r(!1),isRefetched:n},kl.createElement(pv,{size:22,color:t?"black":"gray",progress:e/Hm*mv})))}i(Oi,"RefreshButton");function Go(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=C(),c=nt("notification",s)||r.includes("notifications");return _e.createElement(_e.Fragment,null,!r.includes("refresh")&&_e.createElement(zi,{container:a||W(),side:"top",content:Ui.t("Refresh")},_e.createElement(Oi,{onClick:e})),!c&&_e.createElement(gv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(Cl,null)},_e.createElement("div",null,_e.createElement(zi,{container:W(),side:"top",content:Ui.t("Notifications")},_e.createElement($t,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(fv,{size:18,color:"black"}),_e.createElement(Um,null))))),!r.includes("settings")&&_e.createElement(zi,{container:W(),side:"top",content:Ui.t("Settings")},_e.createElement($t,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},_e.createElement(hv,{size:18,color:"black"}))),!r.includes("history")&&_e.createElement(zi,{container:W(),side:"top",content:Ui.t("History")},_e.createElement($t,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(yv,{size:18,color:"black"}),_e.createElement(Fm,null))))}i(Go,"HeaderButtons");import{i18n as wl}from"@lingui/core";import{Divider as qm,MessageBox as Cv,RefreshIcon as kv}from"@rango-dev/ui";import xn from"react";import{Button as Sv,styled as Tv}from"@rango-dev/ui";var Qm=Tv(Sv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function vl(t){let{open:e,onClose:o}=t;return xn.createElement(re,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},xn.createElement(Cv,{title:wl.t("Something went wrong"),type:"error",description:wl.t("Something went wrong. Please refresh the app.")},xn.createElement(qm,{size:30}),xn.createElement(Qm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},xn.createElement(kv,{size:20,color:"primary"}),xn.createElement(qm,{size:4,direction:"horizontal"}),wl.t("Refresh"))))}i(vl,"RefreshModal");var Gm="700px",Vm="425px",Km="550px",jm="640px",Xm="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 wv,styled as Hi}from"@rango-dev/ui";var Qi=wv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Ym=Hi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:Gm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Vm,[`@media screen and (min-height: ${Xm})`]:{minHeight:Km}}},showBanner:{true:{overflow:"visible"}}}}),Zm=Hi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Jm=Hi("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}}),Rm=Hi("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}}=C(),[u,d]=of(!1),{config:{features:f,theme:h}}=C(),{watermark:g}=ne(),m=g==="FULL",{activeTheme:S}=go(h||{}),[T,y]=of(!1),k=nt("connectWalletButton",f),{isActiveTab:w,tabManagerInitiated:v,showActivateTabModal:x,setShowActivateTabModal:A,activateCurrentTab:E,setShowCompactTokenSelector:I}=ne(),b=Ve(),{manager:L}=vv(),O=vt(L).map(({swap:Y})=>Y).some(Y=>Y.status==="running"),q=i(()=>E($o.forceClaim,O),"onActivateTab"),j=i(()=>{r.onWallet?.()},"onConnectWallet"),ee=typeof r.hasBackButton>"u"||r.hasBackButton,P=tf(null),Z=tf(null);return qi(()=>{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]),qi(()=>(Mi()&&Z.current&&e(Z.current),()=>{o()}),[]),qi(()=>(P.current?.addEventListener("scroll",El),()=>{P.current?.removeEventListener("scroll",El)}),[]),qi(()=>{d(c==="failed")},[c]),xv(()=>{if(!Z.current)return;let Y=new ResizeObserver(ue=>{for(let Ee of ue)Ee.contentRect&&I(Ee.contentRect.height<parseInt(jm))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Pe.createElement(Ym,{height:s,id:kt.SWAP_BOX_ID,className:`${S()} ${Qi()}`,ref:Z,showBanner:T},Pe.createElement(bv,{prefix:ee?Pe.createElement(hl,{onClick:()=>{b(),r.onBack?.()}}):null,title:r.title,suffix:Pe.createElement(Pe.Fragment,null,r.suffix,r.onWallet&&!k&&Pe.createElement(Tl,{container:W(),onClick:j,isConnected:!!l?.length}),r.onCancel&&Pe.createElement(Sl,{onClick:r.onCancel}))}),Pe.createElement(Zm,{ref:P},n),Pe.createElement(gl,{open:x,onClose:()=>A(!1),onConfirm:q}),Pe.createElement(Jm,null,Pe.createElement("div",{className:"footer__content"},v&&!w&&Pe.createElement("div",{className:"footer__alert"},Pe.createElement(ml,{onActivateTab:q}),Pe.createElement(ef,{size:10})),a),Pe.createElement(ef,{size:12}),Pe.createElement("div",{className:`footer__logo ${m?"logo__show":"logo__hidden"}`},Pe.createElement(Ev,null))),T&&Pe.createElement(Rm,null,p?.swapBoxBanner?.element),Pe.createElement(vl,{open:u,onClose:()=>d(!1)}))}i(se,"Layout");import{styled as Iv}from"@rango-dev/ui";var nf="$20 $20 $10 $20",bl=Iv("div",{padding:nf,overflowY:"auto",flexGrow:1});import{styled as Av}from"@rango-dev/ui";var ce=Av("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as yo}from"@lingui/core";import{useState as xl}from"react";function rf(){let[t,e]=xl(!1),[o,n]=xl(null),[r,a]=xl(null),{findToken:s}=C(),c=C().customTokens(),l=i(()=>{a(null),e(!1),n(null)},"resetState");function p(d,f){switch(d){case"duplicated":return{type:d,title:yo.t("Duplicate Token"),message:yo.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:yo.t("Token Already Exists"),message:yo.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:d,title:yo.t("Token Not Found"),message:yo.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:f}})};case"network-error":return{type:d,title:yo.t("Network error"),message:yo.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(rf,"useFetchCustomToken");var Ov=Bv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${Pv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function af(){let t=$v(),[e]=Fv(),o=Ve(),n=C().blockchains(),r=e.get("blockchain")||"",a=Po(r,n),[s,c]=Dv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:f}=rf(),h=!!a&&Lo(a,s),g=!a||!s||!h,m=i(()=>{a&&l({blockchain:r,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:In.t("Add Custom Token")}},Ke.createElement(ce,null,Ke.createElement(Ov,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:In.t("Select chain"),placeholder:In.t("Select chain")}),Ke.createElement(Il,{size:"24"}),Ke.createElement(Mv,{size:"large",variant:"label"},In.t("Enter Address")),Ke.createElement(Il,{size:10}),Ke.createElement(_v,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:In.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement(Lv,{color:"success",size:12}),onChange:S=>c(S.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(Il,{size:4}),Ke.createElement(Nv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement(Wv,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:m},In.t("Import"))),Ke.createElement(hr,{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(af,"AddCustomTokenPage");import{i18n as ac}from"@lingui/core";import{useManager as vb}from"@rango-dev/queue-manager-react";import{Alert as Eb,Button as bb,css as lc,Divider as sc,IconButton as Yg,styled as xb,Typography as Ib,WalletIcon as Ab}from"@rango-dev/ui";import $e,{useEffect as Sa,useLayoutEffect as Nb,useRef as Wb,useState as Ir}from"react";import{useNavigate as Pb}from"react-router-dom";import{i18n as Ko}from"@lingui/core";import{Alert as rE,BalanceErrors as iE,Button as Wf,ChevronLeftIcon as aE,Divider as Bl,MessageBox as sE,Typography as _l}from"@rango-dev/ui";import ae,{useCallback as lE,useEffect as Yi,useMemo as cE,useState as Nn}from"react";import{useNavigate as pE}from"react-router-dom";import{i18n as Pl}from"@lingui/core";import{Alert as qv,ChevronDownIcon as Gv,CloseIcon as Vv,Divider as mf,IconButton as ff,PasteIcon as Kv,Typography as jv,WalletIcon as Xv}from"@rango-dev/ui";import Me,{useEffect as gf,useRef as hf}from"react";import ji,{useRef as Hv}from"react";import*as An from"@radix-ui/react-collapsible";import{keyframes as sf,styled as Gi}from"@rango-dev/ui";var Al=300,Uv=sf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),zv=sf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),lf=Gi(An.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Nl=Gi(An.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Vi=Gi(An.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Uv} ${Al}ms ease-out`},false:{animation:`${zv} ${Al}ms ease-out`}}}}),Ki=Gi("div",{transition:`all ${Al}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Xi(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Hv(null);return ji.createElement(lf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&ji.createElement(Nl,{className:"collapsible_trigger",onClick:a},s),ji.createElement(Vi,{className:"collapsible_content",open:e},r),c==="bottom"&&ji.createElement(Nl,{className:"collapsible_trigger",onClick:a},s))}i(Xi,"CustomCollapsible");import{darkTheme as cf,styled as Wl,TextField as Qv}from"@rango-dev/ui";var pf=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"}}),uf=Wl(Qv,{backgroundColor:"$neutral100"}),df=Wl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${cf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${cf} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function yf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=z()(),{config:s}=C(),c=C().blockchains(),l=qp(e.name,c),p=hf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!r&&e&&!Lo(e,r),g=i(()=>{a("")},"handleClear"),m=i(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let k=await navigator.clipboard.readText();a(k),p?.current?.focus()}},"handlePaste"),S=i(()=>r?Me.createElement(ff,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(Vv,{size:12,color:"gray"})):d?null:Me.createElement(ff,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},Me.createElement(Kv,{size:16})),"renderSuffix");gf(()=>{!!u&&r===null&&(a(u),o(!0))},[u]);let T=hf(null);return gf(()=>{if(!r){T.current=null;return}n&&Lo(e,r)&&T.current!==r&&(T.current=r,te({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[r,n,e]),Me.createElement(pf,null,Me.createElement(Xi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(df,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(Xv,{size:18,color:"info"}),Me.createElement(mf,{size:4,direction:"horizontal"}),Me.createElement(jv,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Pl.t("Send to a different address"))),Me.createElement(Ki,{orientation:n?"up":"down"},Me.createElement(Gv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(uf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Pl.t("Enter {blockchainName} address",{blockchainName:l}),value:r||"",suffix:S(),onChange:y=>{let k=y.target.value;a(k)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(mf,{size:4}),Me.createElement(qv,{variant:"alarm",type:"error",title:Pl.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(yf,"CustomDestination");import{css as Yv,IconButton as Zv,SelectableWalletButton as Jv,styled as So}from"@rango-dev/ui";var Sf=So("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Tf=So("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Cf=So(Jv,{justifyContent:"center"}),kf=So("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),wf=So(Zv,{position:"absolute",left:"$20"}),vf=So("div",{paddingTop:"$20"}),Ef=Yv({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),bf=So("div",{display:"flex"}),xf=So("div",{overflow:"visible",width:"100%"});import{i18n as If}from"@lingui/core";import{warn as Rv}from"@rango-dev/logging-core";import{makeInfo as eE,SelectableWallet as tE,Typography as Af,WalletState as yr}from"@rango-dev/ui";import Vo,{useEffect as oE,useState as Nf}from"react";var nE=7;function Ll(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,c=ne.use.isActiveTab(),{connectedWallets:l}=C(),[p,u]=Nf(),{list:d}=bt({chain:e}),[f,h]=Nf(d),g=d.length,m=a&&g-a>0;return oE(()=>{h(S=>{let T=d.findIndex(y=>n(y.type,e));return m&&T>1?[d[T]].concat(d.filter((y,k)=>k!==T)):S.map(y=>d.find(k=>k.type===y.type)??y)})},[JSON.stringify(d)]),Vo.createElement(Vo.Fragment,null,f.slice(0,a).map(S=>{let T=Iu({connectedWallets:l,walletType:S.type,chain:e}),y=S.state===yr.CONNECTED||S.state===yr.PARTIALLY_CONNECTED,k=T?po(T,nE):"",w=y&&!!S.needsNamespace&&!k,v=i(async()=>{S.state===yr.DISCONNECTED||w?u(S):r({walletType:S.type,chain:e,address:T??""})},"onSelectableWalletClick"),x=eE(S.state),A=i(()=>w?If.t("Chain not connected"):k||x.description,"getWalletDescription"),E=i(()=>S.state===yr.CONNECTED||S.state===yr.PARTIALLY_CONNECTED?w?"neutral600":"neutral700":x.color,"getWalletDescriptionColor");return Vo.createElement(tE,{key:S.type,id:"widget-wallets-list-selectable-wallet-btn",description:A(),descriptionColor:E(),onClick:v,selected:n(S.type,e),disabled:!c,...S})}),Vo.createElement(ur,{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):Rv(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),m&&Vo.createElement(Cf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Vo.createElement(Af,{variant:"label",size:"medium"},If.t("Show more wallets"),Vo.createElement(Af,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}i(Ll,"WalletList");var uE=2;function Pf(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=pE(),c=C().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:f,setCustomDestination:h}=z()(),{config:g,connectedWallets:m,setWalletsAsSelected:S}=C(),[T,y]=Nn(""),[k,w]=Nn([]),[v,x]=Nn(""),[A,E]=Nn(!!f),I=cE(()=>Mo({filter:"all",quote:l}),[l]),b=Mo({filter:"required",quote:l}),L=c.find(B=>B.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),N=i(B=>b.includes(B),"isWalletRequiredFor"),O=lE(()=>m.filter(B=>B.selected&&I.includes(B.chain)),[m,I]),[q,j]=Nn(O()),[ee,P]=Nn([]),Z=i((B,V)=>P(H=>H.concat({blockchain:B,walletType:V})),"addNextSelectedWallets"),Y=k.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"),Gt=i(B=>{E(B),B?N(L?.name??"")||j(V=>Ee(V,L?.name||"",!1)):(h(""),j(V=>Ee(V,L?.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===L?.name&&A&&!N(L.name)&&(E(!1),h(null)),j(X=>X.filter(G=>G.chain!==B.chain).concat({...H,selected:!0})))},"onChange"),He=i(()=>{let B=q.filter(V=>V.selected);te({type:"swapWalletsConfirmed",payload:{routeId:l?.requestId??""}}),S(B),p(B),d(!0),o()},"onConfirmBalance"),Xe=i(async()=>{w([]),x("");let B=await r?.({selectedWallets:q.filter(H=>H.selected),customDestination:f}),V=B.warnings;V?.balance?.messages&&w(V.balance.messages),B.error&&x(Ed(B.error)),!B.error&&!V?.balance?.messages.length?He():w(V?.balance?.messages??[])},"onConfirmWallets");Yi(()=>{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&&I.includes(H.chain))),V})},[m,I]),Yi(()=>{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)}),P(B))},[m,ee]);let St=l?.requestId??"";Yi(()=>{if(!e)return;let B=b.filter(V=>!m.some(H=>H.chain===V));te({type:"swapWalletsModalShown",payload:{chainsRequired:b.length,chainsPending:B.length}})},[e]),Yi(()=>{Y&&te({type:"gasWarningShown",payload:{routeId:St}})},[Y,St]);let ct=document.getElementById(kt.SWAP_BOX_ID);return ae.createElement(re,{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(bf,null,ae.createElement(Wf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Jd(a,A,f,l,q,L),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Ko.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(kf,null,ae.createElement(wf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(aE,{size:16})),ae.createElement(_l,{variant:"headline",size:"small"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:Tt(T,c)}})))},anchor:"center"},ae.createElement(re,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:Y,onClose:w.bind(null,[]),container:ct},ae.createElement(sE,{title:Ko.t("Insufficient account balance"),type:"error",description:ae.createElement(iE,{messages:k??[]})},ae.createElement(Wf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{te({type:"gasWarningBypassed",payload:{routeId:St}}),He()}},Ko.t("Proceed anyway")))),T&&ae.createElement(vf,null,ae.createElement("div",{className:Ef()},ae.createElement(Ll,{chain:T,quoteChains:I,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(rE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:Ko.t(v)}),ae.createElement(Bl,{size:12})),ae.createElement(xf,null,I.map((B,V)=>{let H=c.find(U=>U.name===B),X=`wallet-${V}`,G=V===I.length-1,J=G&&L&&g?.customDestination!==!1;return ae.createElement("div",{key:X},ae.createElement(Sf,null,ae.createElement(_l,{variant:"title",size:"xmedium"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:H?.shortName}})),ae.createElement(_l,{variant:"label",color:"$neutral700",size:"medium"},Ko.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:H?.shortName}}))),ae.createElement(Bl,{size:24}),ae.createElement(Tf,null,ae.createElement(Ll,{chain:B,quoteChains:I,isSelected:ue,selectWallet:be,limit:uE,onShowMore:()=>y(H?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(Bl,{size:32}),J&&ae.createElement(yf,{blockchain:L,open:A,handleOpenChange:Gt}))}))))}i(Pf,"ConfirmWalletsModal");import{i18n as $E}from"@lingui/core";import{Alert as FE,Button as OE,Divider as Zf,InfoIcon as UE}from"@rango-dev/ui";import Oe from"react";import{Alert as fE,Button as gE,Divider as $l,NoRouteIcon as hE,RefreshIcon as yE,Typography as Ff}from"@rango-dev/ui";import mt from"react";import{i18n as Lf}from"@lingui/core";var dE=24,mE=60;function Bf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ie().genericServerError,action:{onClick:n,title:Lf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ie().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Lf.t("Reset")}},description:ie().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ie().noResultError.description}}i(Bf,"makeInfo");var Ml=(o=>(o[o.small=dE]="small",o[o.large=mE]="large",o))(Ml||{}),Dl=(o=>(o.small="small",o.large="medium",o))(Dl||{});import{styled as Zi}from"@rango-dev/ui";var _f=Zi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Mf=Zi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Df=Zi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),$f=Zi("div",{padding:"$6 $0"});function Sr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=C().getDisabledLiquiditySources(),s=C().toggleAllLiquiditySources,c=C().swappers(),l=Bf(o,a,()=>s(c,!0),e);return r&&(l.alert=null),mt.createElement(_f,{id:"widget-no-result-container"},mt.createElement(hE,{size:Ml[n],color:"gray"}),mt.createElement($l,{size:4}),mt.createElement(Ff,{variant:"title",size:Dl[n]},ie().noResultError.title),n==="large"&&mt.createElement($l,{size:4}),!!l.description&&mt.createElement(Mf,{size:n},mt.createElement(Ff,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement($l,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Df,{size:n},mt.createElement(fE,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&mt.createElement(gE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement($f,null,mt.createElement(yE,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Sr,"NoResult");import{i18n as Tr}from"@lingui/core";import{Button as bE,Divider as xE,MessageBox as IE,Typography as AE,WarningIcon as NE}from"@rango-dev/ui";import Jt from"react";import{InfoIcon as kE,Tooltip as wE,Typography as vE}from"@rango-dev/ui";import Wn from"react";import{Button as SE,darkTheme as TE,styled as jo,Typography as CE}from"@rango-dev/ui";var Of=jo("div",{width:"100%"}),Fl=jo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Uf=jo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${TE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),zf=jo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),Hf=jo(CE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Qf=jo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),qf=jo(SE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var EE=35;function Gf(t){let{title:e,value:o,valueColor:n}=t,r=W();return Wn.createElement(Uf,null,Wn.createElement(vE,{size:"medium",variant:"label",className:"_title"},e),Wn.createElement(zf,null,Wn.createElement(Hf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>EE&&Wn.createElement(wE,{content:o,container:r},Wn.createElement(kE,{size:12,color:"gray"}))))}i(Gf,"QuoteErrorsModalItem");function Vf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",c=[{title:Tr.t("Swapping"),value:M(r.inputUsdValue)},{title:Tr.t("Gas cost"),value:M(r.totalFee,2,2)},{title:Tr.t("Receiving"),value:M(r.outputUsdValue)},{title:Tr.t("Price impact"),value:M(r.priceImpact,2,2),valueColor:`${s}500`}];return Jt.createElement(re,{id:"widget-high-value-loss-warning-modal",footer:Jt.createElement(bE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Jt.createElement(NE,null),fullWidth:!0,disabled:a,onClick:n},ie().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Jt.createElement(IE,{type:s,title:ie().highValueLossError.impactTitle,description:ie().highValueLossError.description}),Jt.createElement(Fl,null,Jt.createElement(xE,{size:"4"}),Jt.createElement(AE,{size:"small",variant:"title"},Tr.t("Details")),Jt.createElement(Fl,null,c.map((l,p)=>Jt.createElement(Gf,{key:p,...l})))))}i(Vf,"HighValueLossWarningModal");import{i18n as Pn}from"@lingui/core";function Kf(t,e){let o={alertType:"warning",title:"",action:null,actionButtonTitle:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=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:{Zt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ie().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=ie().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(Kf,"makeAlerts");function jf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(jf,"getRequiredSlippage");import{i18n as Ln}from"@lingui/core";import{Button as WE,Divider as Ol,MessageBox as PE,WarningIcon as LE}from"@rango-dev/ui";import ko from"react";import{useNavigate as BE}from"react-router-dom";function Xf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=BE();return ko.createElement(re,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},ko.createElement(PE,{type:"warning",title:r.type===3?Ln.t("High slippage"):Ln.t("Low slippage"),description:r.type===3?Ln.t("Caution, your slippage is high. Your trade may be front run."):Ln.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},ko.createElement(Ol,{size:18}),ko.createElement(Ol,{size:32}),ko.createElement(qf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},ko.createElement(LE,{color:"white",size:16}),Ln.t("Swap anyway")),ko.createElement(Ol,{size:10}),ko.createElement(WE,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Ln.t("Change Slippage"))))}i(Xf,"SlippageWarningModal");import{Button as _E,MessageBox as ME,WarningIcon as DE}from"@rango-dev/ui";import Ji from"react";function Yf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Ji.createElement(re,{id:"widget-unknown-price-warning-modal",footer:Ji.createElement(_E,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ji.createElement(DE,null),fullWidth:!0,disabled:r,onClick:n},ie().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},Ji.createElement(ME,{type:"warning",title:ie().unknownPriceError.impactTitle,description:ie().unknownPriceError.description}))}i(Yf,"UnknownPriceWarningModal");function Cr(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=Kf(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 k=o?.type===3||o?.type===4?o:null,w=jf(e,k);f?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Oe.createElement(Oe.Fragment,null,g&&Oe.createElement(Oe.Fragment,null,Oe.createElement(Zf,{size:10}),Oe.createElement(Sr,{skipAlerts:s,error:o,fetch:c})),S&&Oe.createElement(Of,null,Oe.createElement(Zf,{size:10}),Oe.createElement(FE,{id:"widget-quote-warning-and-errors-alert",title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Oe.createElement(Qf,{onClick:l},Oe.createElement(UE,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:Oe.createElement(OE,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>T(m.action)},m.actionButtonTitle||$E.t("Change"))}})),e&&Oe.createElement(Oe.Fragment,null,e.type===0&&Oe.createElement(Vf,{...h,warning:e}),(e.type===3||e.type===2)&&Oe.createElement(Xf,{...h,warning:e}),e.type===1&&Oe.createElement(Yf,{...h,warning:e})))}i(Cr,"QuoteWarningsAndErrors");import hb from"bignumber.js";import fa from"react";import{i18n as Xo}from"@lingui/core";import{Alert as rb,CampaignQuoteTag as ib,Divider as _n,FullExpandedQuote as ab,InfoIcon as Yl,NumericTooltip as Zl,QuoteTag as sb,StepDetails as lb,TokenAmount as cb,Typography as Mn,useIsTruncated as Jl}from"@rango-dev/ui";import Rl from"bignumber.js";import F,{useRef as ua,useState as pb}from"react";import{styled as Ul}from"@rango-dev/ui";var zl=Ul("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Jf=Ul("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),Rf=Ul("div",{width:"100%",display:"flex"});import*as Ri from"@radix-ui/react-collapsible";import{Button as zE,css as ea,darkTheme as De,Image as eg,styled as je,Typography as Hl}from"@rango-dev/ui";var HE=300,tg=je(Ri.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),og=ea({padding:"$10 $15"}),ng=je(zE,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${De} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${De} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${De} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),rg=je("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${De} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}}}}]}),ig=ea({width:"100%",padding:"$15 $15 $10 $15"}),ag=ea({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),Bn=ea({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),sg=je(Ri.Trigger,{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",height:"$36",padding:"$10 $15",boxSizing:"border-box",cursor:"pointer",border:"none",outline:"none",backgroundColor:"transparent",variants:{error:{true:{[`& ${eg}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${eg}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),lg=je("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),cg=je(Vi,{width:"100%",background:"inherit"}),Ql=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${HE}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),oQ=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),pg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),ug=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),ql=je(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"}}}}),dg=je("div",{display:"flex"}),ta=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),mg=je(Hl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ft}from"@lingui/core";import{ChevronDownIcon as qE,CloseIcon as GE,Divider as ra,IconButton as VE,NumericTooltip as KE,QuoteCost as jE,Typography as At}from"@rango-dev/ui";import XE from"bignumber.js";import R,{useState as yg}from"react";import{css as QE,styled as oa}from"@rango-dev/ui";var na=oa("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Kl=oa("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),fg=oa("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),gg=oa("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),hg=QE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var YE=i(t=>t.fee.isZero()?null:R.createElement(na,null,R.createElement(At,{variant:"label",size:"medium",color:"neutral600"},t.label),R.createElement(At,{variant:"label",size:"medium"},"$",M(t.fee,4,4))),"NonPayableFee");function jl(t){let[e,o]=yg(!1),[n,r]=yg(!1),{steps:a,quote:s,time:c,feeWarning:l,timeWarning:p,showModalFee:u,fullExpandedMode:d=!1}=t,f=s?.swaps??[],h=d?_o():W(),g=qd(f),m=Object.values(g.payable).reduce((T,y)=>T.plus(Vs(y)),new XE(0)),S=M(m,2,2);return R.createElement(R.Fragment,null,R.createElement(jE,{onClickFee:u?T=>{T.stopPropagation(),!e&&s&&te({type:"routeFeeViewed",payload:{routeId:s.requestId}}),o(!e)}:void 0,fee:S,feeWarning:l,timeWarning:p,time:c,steps:a,tooltipGas:u?Ft.t("View more info"):void 0,tooltipContainer:h}),R.createElement(re,{id:"widget-quote-cost-explanation-modal",container:h,open:e,anchor:d?"center":"bottom",styles:{container:{maxWidth:d?"484px":"unset"}},header:R.createElement(gg,{style:{textAlign:d?"left":"center"}},R.createElement(At,{variant:"title",size:"medium"},Ft.t("Gas & Fee Explanation")),R.createElement(VE,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(GE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(fg,null,R.createElement(At,{variant:"title",size:"small"},Ft.t("Details")),R.createElement(ra,{size:10}),Object.entries(g.payable).flatMap(([T,y])=>y.map((k,w)=>{let v=`payable-fee-${w}`,x=Gs(k);return R.createElement(na,{key:v},R.createElement(At,{variant:"label",size:"medium",color:"neutral600"},Us(T,Ft.t)),R.createElement(KE,{content:k.amount,container:h},R.createElement(At,{variant:"label",size:"medium"},M(k.amount,2,2),k.asset.symbol," ($",M(x,4,4),")")))})),R.createElement(na,{className:"total_payable_fee"},R.createElement(At,{variant:"label",size:"medium"},Ft.t("Total Payable Fee")),R.createElement(At,{variant:"label",size:"medium"},"$",M(m,4,4))),R.createElement(Kl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Xi,{triggerAnchor:"bottom",onClickTrigger:()=>r(T=>!T),trigger:R.createElement("div",{className:hg()},R.createElement(At,{size:"small",variant:"body",color:"neutral700"},n?Ft.t("Hide non-payable fees"):Ft.t("Show non-payable fees")),R.createElement(ra,{size:4,direction:"horizontal"}),R.createElement(Ki,{orientation:n?"up":"down"},R.createElement(qE,{size:12,color:"gray"}))),open:n},R.createElement(At,{size:"small",variant:"title"},Ft.t("Description")),R.createElement(ra,{size:4}),R.createElement(At,{size:"small",variant:"body",color:"neutral700"},Ft.t(`The following fees are considered in the transaction output and
2
- you won\u2019t need to pay extra gas for them.`)),R.createElement(ra,{size:10}),Object.entries(g.nonePayable).map(([T,y],k)=>{let w=Vs(y),v=Us(T,Ft.t),x=`non-payable-fee-${k}`;return R.createElement(YE,{key:x,fee:w,label:v})}),R.createElement(Kl,null)))))}i(jl,"QuoteCostDetails");import{i18n as Cg}from"@lingui/core";import{TokenAmount as kg}from"@rango-dev/ui";import ia from"react";import{css as ZE,styled as JE}from"@rango-dev/ui";var Sg=JE("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Tg=ZE({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function kr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return ia.createElement(Sg,null,ia.createElement(kg,{direction:"horizontal",label:Cg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:W(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),ia.createElement("div",{className:Tg()}),ia.createElement(kg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:Cg.t("Estimated output"),type:"output",price:{value:o.price.value,usdValue:o.price.usdValue,realValue:o.price.realValue,realUsdValue:o.price.realUsdValue},token:{displayName:o.token.displayName,image:o.token.image},chain:{image:o.chain.image},percentageChange:n,warningLevel:r}))}i(kr,"QuoteSummary");import{i18n as xg}from"@lingui/core";import{ChevronDownIcon as tb,ChevronRightIcon as ob,Divider as Xl,Image as nb,Tooltip as pa,Typography as sa}from"@rango-dev/ui";import Q from"react";import{useLayoutEffect as RE,useState as wr}from"react";var wg=480,vg=768,Eg=1024,bg=1200,eb=i(()=>{let[t,e]=wr(!1),[o,n]=wr(!1),[r,a]=wr(!1),[s,c]=wr(!1),[l,p]=wr(!1),u=i(()=>{e(window.innerWidth<=wg),n(window.innerWidth>wg&&window.innerWidth<=vg),a(window.innerWidth>vg&&window.innerWidth<=Eg),c(window.innerWidth>Eg&&window.innerWidth<=bg),p(window.innerWidth>bg)},"handleResize");return RE(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),aa=eb;var la=4,ca=6,vr=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,c=s||W();return Q.createElement(pa,{container:c,side:"bottom",sideOffset:4,open:r,content:e},Q.createElement(lg,{className:n,state:a},Q.createElement(nb,{src:o,size:16})))},"ImageComponent");function Ig(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}=aa();return Q.createElement(sg,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},Q.createElement("div",{className:Bn()},Q.createElement(sa,{variant:"body",size:"xsmall"},xg.t("Via:")),Q.createElement(Xl,{direction:"horizontal",size:4}),r.map((h,g)=>{let m=`item-${g}`,S=Q.createElement(Ql,null,Q.createElement(ob,{size:12,color:"black"}));return f||d?Q.createElement(Q.Fragment,{key:m},Q.createElement(vr,{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<=la||p>la&&g<la-1?Q.createElement(Q.Fragment,null,Q.createElement(vr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):g===la-1&&Q.createElement(pa,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:Bn()},S,r.map((T,y)=>{let k=`image-${y}`;return y>=g&&Q.createElement(Q.Fragment,{key:k},Q.createElement(vr,{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(sa,{size:"xsmall",variant:"body"},"+",p-g))))})),Q.createElement("div",{className:Bn()},Q.createElement("div",{className:"blockchains_section"},Q.createElement("div",{className:Bn()},Q.createElement(sa,{variant:"body",size:"xsmall"},xg.t("Chains:")),Q.createElement(Xl,{direction:"horizontal",size:4}),u.map((h,g)=>Q.createElement(Q.Fragment,{key:h.displayName},u.length<=ca||u.length>ca&&g<ca-1?Q.createElement(pa,{container:l,side:"bottom",content:h.displayName,sideOffset:4},Q.createElement(vr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===ca-1&&Q.createElement(pa,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:Bn()},u.map((m,S)=>S>=g&&Q.createElement(vr,{key:m.displayName,content:"",src:m.image??"",open:!1,className:S>g?"blockchainImage":"",container:c})))},Q.createElement(Vl,{className:"blockchainImage"},Q.createElement(sa,{size:"xsmall",variant:"body"},"+",u.length-g))))),Q.createElement(Xl,{direction:"horizontal",size:32}))),Q.createElement(Ql,{orientation:a?"up":"down"},Q.createElement(tb,{size:12,color:"black"}))))}i(Ig,"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=C().blockchains(),{findToken:g}=C(),m=C().swappers(),{customSlippage:S,slippage:T}=C(),y=S||T,[k,w]=pb(t.expanded),v=ua(null),x=M(n.value,6,6),A=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:E}}=C(),I=Yt(o.usdValue,n.usdValue??null),b=M(I,2,2),L=Zt(I??0),N=i((G,J)=>G.map((U,de)=>{let Qe,ot=r?.type===3&&r.swap.swapperId===U.swapperId,co=r?.type===4&&!!r.recommendedSlippages?.[de],qn=a?.type===2&&!!a.recommendedSlippages?.[de],No=ot||co,Rr=qn;No?Qe="error":Rr&&(Qe="warning");let rn=No?Xo.t("Slippage Error"):Xo.t("Slippage Warning");return ot&&(rn=Xo.t("Bridge Limit Error")),{swapper:{displayName:Vn(U.swapperId,m)??"",image:U.swapperLogo},from:{token:{displayName:U.from.symbol,image:U.from.logo},chain:{displayName:Tt(U.from.blockchain,h)??"",image:U.from.blockchainLogo},price:{value:de===0&&!J?M(o.value,6,6):M(U.fromAmount,6,6),usdValue:M((U.from.usdPrice??0)*parseFloat(U.fromAmount),4,4),realValue:de===0?o.value:U.fromAmount,realUsdValue:new Rl(U.from.usdPrice??0).multipliedBy(U.fromAmount).toString()}},to:{token:{displayName:U.to.symbol,image:U.to.logo},chain:{displayName:Tt(U.to.blockchain,h)||"",image:U.to.blockchainLogo},price:{value:M(U.toAmount,6,6),usdValue:M((U.to.usdPrice??0)*parseFloat(U.toAmount),4,4),realValue:U.toAmount,realUsdValue:new Rl(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:Qe,alerts:No||Rr?F.createElement(Jf,{dense:d},F.createElement(rb,{variant:"alarm",type:No?"error":"warning",title:rn,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(Rf,null,ot&&F.createElement("div",null,F.createElement(Mn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),F.createElement(_n,{direction:"vertical",size:2}),F.createElement(Mn,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Xo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(co||qn)&&!ot&&F.createElement("div",null,F.createElement(Mn,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(_n,{direction:"vertical",size:2}),F.createElement(Mn,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Xn(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=Dd(t.quote.tags||[]),P=!!u,Z=si(e?.swaps),Y=Xn(Z),ue=Wi(e?.swaps??[],g),Ee=M(ue,2,2),Gt=ue.gte(new Rl(xd)),be=Z/Ad>=Id,He=ua(null),Xe=Jl(o.value,He),St=ua(null),ct=Jl(n.value,St),B=ua(null),V=Jl(A,B),H=O[q-1],X=O[0];return!X||!H?null:d?F.createElement(ab,{selected:c,fee:Ee,time:Y,tooltipContainer:_o(),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:Gt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:b,warningLevel:L,outputPrice:{value:x,usdValue:A,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(rg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:ig()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(dg,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&E?.campaignTag?F.createElement(ib,{routeTag:G,...E.campaignTag}):F.createElement(sb,{label:G.label,value:G.value}),F.createElement(_n,{size:4,direction:"horizontal"}))})),F.createElement(ta,null),!P&&F.createElement(_n,{size:4})):null,F.createElement("div",{id:"portal-root",className:ag()},F.createElement(jl,{quote:e,time:Y,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),P&&F.createElement(ng,{onClick:G=>{G.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Mn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Xo.t("See All Routes")))),s==="basic"&&F.createElement(ug,null,F.createElement(Gl,{ref:He,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(Mn,{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(_n,{size:2,direction:"horizontal"}),F.createElement(mg,{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(cb,{id:"widget-quote-token-amount-container",tooltipContainer:j,type:"output",direction:"vertical",price:{value:x,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:L}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(kr,{from:X.from,to:H.to,percentageChange:b,warningLevel:L}),F.createElement(_n,{size:4}))),F.createElement(tg,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:w},F.createElement(Ig,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:k,steps:O}),F.createElement(cg,{open:k},F.createElement(pg,null),F.createElement("div",{className:og()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(lb,{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 fb,Skeleton as gb}from"@rango-dev/ui";import oo from"react";import{darkTheme as ub,styled as da}from"@rango-dev/ui";var Ag=da("div",{$$color:"$colors$neutral100",[`.${ub} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Ng=da("div",{paddingTop:"$2"}),Wg=da("div",{paddingLeft:"$8"}),Pg=da("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as zg,Divider as Nt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as db,styled as to}from"@rango-dev/ui";var tc=to("div",{display:"flex"}),Lg=to("div",{padding:"$10 $0 $20"}),Bg=to("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),_g=to("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Mg=to("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Dg=to("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),$g=to("div",{width:"65%",display:"flex",justifyContent:"start"}),Fg=to("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Og=to("div",{padding:"$15 $0 $15 $0"}),Ug=db({display:"flex",justifyContent:"space-between",alignItems:"center"});function Er(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(Mg,null,K.createElement($g,null,K.createElement(zg,{loading:!0,size:"medium"}),K.createElement(Nt,{size:8,direction:"horizontal"}),K.createElement(Fg,null,K.createElement(ft,{height:10,width:60,variant:"rounded"}),K.createElement(Nt,{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(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"})),K.createElement(ta,null),!r&&K.createElement(Nt,{size:4})),K.createElement("div",{className:Ug()},K.createElement(tc,null,K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Nt,{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(Lg,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Bg,null,K.createElement(_g,null,K.createElement(zg,{loading:!0,size:"medium"}),K.createElement(Nt,{direction:"horizontal",size:4}),K.createElement(ft,{height:15,width:150,variant:"rounded"})),K.createElement(Nt,{size:10}),K.createElement(ft,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&K.createElement(K.Fragment,null,K.createElement(Nt,{size:4}),K.createElement(Og,null,n,K.createElement(Dg,null),n),K.createElement(Nt,{size:12})))}i(Er,"QuoteSummarySkeleton");import{ChainToken as Vg,Divider as nc,NextIcon as mb,Skeleton as ma}from"@rango-dev/ui";import Le from"react";import{styled as br}from"@rango-dev/ui";var Hg=br("div",{display:"flex",alignItems:"start"}),Qg=br("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),oc=br("div",{display:"flex",alignItems:"center",flexGrow:1}),qg=br("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Gg=br("div",{display:"flex",alignItems:"center"});function Ot(t){let{separator:e=!0}=t;return Le.createElement(Le.Fragment,null,Le.createElement(Gg,null,Le.createElement(ma,{height:22,width:22,variant:"circular"}),Le.createElement(nc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:15,width:148,variant:"rounded"})),Le.createElement(Hg,null,Le.createElement(Pg,{hideSeparator:!e}),Le.createElement(Qg,{extraSpace:e},Le.createElement(oc,null,Le.createElement(Vg,{size:"small",loading:!0}),Le.createElement(nc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:12,variant:"rounded"})),Le.createElement(qg,null,Le.createElement(mb,{color:"gray",size:16})),Le.createElement(oc,null,Le.createElement(Vg,{size:"small",loading:!0}),Le.createElement(nc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:12,variant:"rounded"})))))}i(Ot,"StepSkeleton");function xr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return oo.createElement(Ag,{expanded:o,rounded:e!=="basic"},oo.createElement(Er,{type:e,tagHidden:n}),oo.createElement(Ng,null,oo.createElement(gb,{height:15,variant:"rounded"})),o&&oo.createElement(Wg,null,oo.createElement(fb,{size:24}),oo.createElement(Ot,null),oo.createElement(Ot,null),oo.createElement(Ot,{separator:!1})))}i(xr,"QuoteSkeleton");function Yo(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 hb(e?.outputAmount):null,y=e?it(e):null,w=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?fa.createElement(zl,null,fa.createElement(xr,{tagHidden:c,type:o,expanded:s})):w?fa.createElement(zl,{onClick:()=>l?.(e),id:d},fa.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(Yo,"QuoteInfo");import{warn as Cb}from"@rango-dev/logging-core";import{calculatePendingSwap as kb}from"@rango-dev/queue-manager-rango-preset";import{useEffect as wb}from"react";import{useRef as yb,useState as Sb}from"react";var Tb=2e3;function ga({request:t}){let[e,o]=Sb(!1),n=yb(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,Tb)),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(ga,"useFetch");function Kg(){let{fetch:t,loading:e,cancelFetch:o}=ga({request:async(n,r)=>await dt().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Kg,"useFetchConfirmQuote");function ha(t){if(!t.swaps)throw new Error(ie().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(ha,"throwErrorIfResponseIsNotValid");function rc(t){if(zd(t)){let{swap:n,fromAmountRangeError:r,recommendation:a}=Hd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:r}}:null}let o=Gd(t);if(o){let n=Pi(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(rc,"getQuoteError");function jg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=vn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=jd(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(jg,"generateWarnings");function ya(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(ya,"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}=C(),u=C().getDisabledLiquiditySources(),d=C().blockchains(),f=C().tokens(),{findToken:h}=C(),{swapMode:g}=rt(),m=p||l,{fetch:S,cancelFetch:T,loading:y}=Kg();return wb(()=>T,[]),{loading:y,fetch:i(async w=>{let v=w.selectedWallets,x=w?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((I,b)=>(I[b.chain]=b.address,I),{}),E={requestId:a?.requestId||"",selectedWallets:A,destination:x||void 0};try{return await S(E,!0).then(I=>{let{result:b}=I;if(!b)throw new Error(I.error??"Error fetching updated quote");ha({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let L={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};r(L);let N={slippage:m.toString(),disabledSwappersGroups:u},O=jg({previousQuote:a??void 0,currentQuote:L,meta:{blockchains:d},selectedWallets:v,userSlippage:m,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=kb({inputAmount:o.toString(),bestRoute:b,wallets:Kd(v),settings:N,validateBalanceOrFee:!q,meta:{blockchains:d,tokens:f},swapMode:g});return{quote:L,swap:j,error:null,warnings:O}})}catch(I){let b=ya(I);return b.type!==2&&Cb(new Error("confirm swap error"),{tags:{...b,type:Je[b.type],initialQuote:a,requestBody:E}}),{swap:null,error:b,warnings:null}}},"fetch"),cancelFetch:T}}i(ic,"useConfirmSwap");function Xg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}i(Xg,"toNumberOrNull");function Dn(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=zo(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:Xg(t.requestAmount),destinationTokenAmount:Xg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:r?r.toNumber():null}}i(Dn,"buildSwapEstimatePayload");var Lb=xb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Yg}`]:{width:"$48",height:"$48"}}),Bb=lc({flexGrow:1,paddingRight:"$10"}),_b=lc({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Mb=lc({display:"flex",justifyContent:"space-between",alignItems:"center"});function Zg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=z()(),s=Pb(),[c,l]=Ir(""),p=!n,[u,d]=Ir(!1),[f,h]=Ir(!1),{isActiveTab:g}=ne(),m=C().getDisabledLiquiditySources(),S=Wb(m),{manager:T}=vb(),{fetch:y,loading:k,cancelFetch:w}=ic(),[v,x]=Ir({swap:null,error:null,warnings:null}),[A,E]=Ir(!1),I=i(async({selectedWallets:P,customDestination:Z})=>{let Y=await y?.({selectedWallets:P,customDestination:Z});return x(Y),Y},"onConfirmSwap"),b=i(async()=>{if(v.swap&&n)try{await T?.create("swap",{swapDetails:v.swap},{id:v.swap.requestId});let P=`../${$.swaps}/${v.swap.requestId}`;s(P,{replace:!0}),setTimeout(()=>{e("")},0)}catch(P){l("Error: "+P?.message)}},"addNewSwap"),L=i(async()=>{h(!0),await b(),h(!1)},"onConfirm"),N=i(async()=>{v.warnings?.quote&&Bd(v.warnings.quote)&&!a?E(!0):(t&&te({type:"swapStarted",payload:{...Dn(t),stepCount:t.swaps.length}}),await L())},"onStartConfirmSwap"),O=i(async()=>{x({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(P=>{x(P)}).catch(P=>console.error(P))},"onRefresh");Sa(()=>{!!S.current.length&&!m.length&&O(),S.current=m},[m.length]),Sa(()=>{p&&w()},[p]),Sa(()=>{p&&d(p)},[p]),Sa(()=>{p||y({selectedWallets:o,customDestination:r}).then(P=>x(P)).catch(P=>console.error(P))},[]),Nb(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=v.warnings?.quote??null,j=v.error,ee=[];if(c&&ee.push($e.createElement(Eb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let P=`../${$.settings}`;ee.push($e.createElement(Cr,{warning:q,error:j,couldChangeSettings:!1,refetchQuote:O,skipAlerts:j?.type===4||q?.type===2,showWarningModal:A,confirmationDisabled:!g,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await b()},onChangeSettings:()=>s(P)}))}return $e.createElement(se,{header:{title:ac.t("Confirm Swap"),onWallet:()=>{let P=`../${$.wallets}`;s(P)}},footer:$e.createElement(Lb,null,$e.createElement("div",{className:Bb()},$e.createElement(bb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||f,disabled:!!v.error||!g,onClick:N},ac.t("Start Swap"))),$e.createElement(Yg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||f,disabled:!g,onClick:d.bind(null,!0)},$e.createElement(Ab,{size:24})))},u&&$e.createElement(Pf,{open:u,onClose:()=>d(!1),onCancel:w,loading:k,onCheckBalance:I}),$e.createElement(ce,null,$e.createElement("div",{className:Mb()},$e.createElement(Ib,{variant:"title",size:"small"},ac.t("You get")),$e.createElement("div",{className:_b()},$e.createElement(Oi,{onClick:!k&&!u&&!A?O:void 0}))),$e.createElement(sc,{size:"12"}),Em(ee.map((P,Z)=>({element:P,key:`alert-${Z}`})),$e.createElement(sc,{size:10})),ee.length>0?$e.createElement(sc,{size:10}):null,$e.createElement(Yo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:v.error,loading:k,warning:v.warnings?.quote??null})))}i(Zg,"ConfirmSwapPage");import{i18n as ro}from"@lingui/core";import{Button as Cc,CustomTokensZeroStateDarkIcon as tx,CustomTokensZeroStateIcon as ox,DeleteIcon as nx,Divider as Lr,IconButton as rx,MessageBox as ix,NotFound as ax,styled as wc}from"@rango-dev/ui";import Se,{useState as kc}from"react";import{useNavigate as sx}from"react-router-dom";import{CloseIcon as Db,IconButton as $b,SearchIcon as Fb,TextField as Ob}from"@rango-dev/ui";import $n from"react";import{styled as Jg}from"@rango-dev/ui";var Rg=Jg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),eh=Jg("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function Wt(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?$n.createElement($b,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},$n.createElement(Db,{color:"gray",size:10})):null;return p&&(f=p),$n.createElement(eh,null,$n.createElement(Ob,{prefix:$n.createElement(Rg,null,$n.createElement(Fb,{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(Wt,"SearchInput");import{i18n as Tc}from"@lingui/core";import{Button as Qb,CustomTokenWarning as qb,darkTheme as dh,Divider as no,ExternalLinkIcon as Gb,Image as Vb,ListItem as Kb,NotFound as jb,PinIcon as Xb,Skeleton as Zo,Typography as Wr,VirtualizedList as Yb}from"@rango-dev/ui";import _,{useState as Zb}from"react";import{useTranslation as Jb}from"react-i18next";import{Divider as ph,ListItem as Hb,Skeleton as Nr}from"@rango-dev/ui";import Pt from"react";import{css as Fn,darkTheme as cc,ImageContainer as Ub,ListItemButton as zb,styled as st,Typography as th}from"@rango-dev/ui";var pc=Fn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),uc=Fn({position:"relative",height:12,width:"30%",maxWidth:"150px"}),dc=Fn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),mc=Fn({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=Fn({}),gc=Fn(),oh=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"}}),Ta=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"}}}}}),nh=st(zb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),yc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Sc=st(th,{}),rh=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${gc}`]:{$$color:"$colors$neutral600",[`.${cc} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ar=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),lV=st("div",{display:"flex",alignItems:"center"}),ih=st("div",{position:"relative",[`& ${Ub}`]:{borderRadius:"$xm",overflow:"hidden"}}),ah=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),sh=st(th,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),lh=st("a",{"& svg:hover":{color:"$colors$info"}}),ch=st("div",{paddingRight:"$5","& .widget-token-list-item-btn":{width:"100%",overflow:"hidden",height:"60px"},"& .widget-token-list-item-import-btn":{height:"$20",padding:"0 $10","& ._text":{display:"flex",justifyContent:"center",alignItems:"center"},"& ._typography":{[`.${cc} &`]:{color:"$foreground"}}}});function uh(t){return Pt.createElement(Ta,null,Array.from(Array(t.size),e=>Pt.createElement(Hb,{key:e,hasDivider:!0,start:Pt.createElement(Nr,{variant:"circular",width:35,height:35}),end:Pt.createElement(Ar,null,Pt.createElement(Nr,{variant:"text",size:"large",width:70}),Pt.createElement(ph,{size:4}),Pt.createElement(Nr,{variant:"text",size:"medium",width:50})),title:Pt.createElement("div",null,Pt.createElement(Nr,{variant:"text",size:"large",width:90}),Pt.createElement(ph,{size:4}),Pt.createElement(Nr,{variant:"text",size:"medium",width:90}))})))}i(uh,"LoadingTokenList");var Rb=20,ex=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(Wr,{variant:"title",size:"xmedium"},r.symbol),_.createElement(no,{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(no,{size:4,direction:"horizontal"}),_.createElement(lh,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Gb,{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=C().fetchStatus,u=C().blockchains(),{getBalanceFor:d,fetchingWallets:f}=C(),{isTokenPinned:h}=C(),{setFromToken:g,setToToken:m}=z()(),{t:S}=Jb(),T=Ve(),[y,k]=Zb(null),w=i(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):m({token:y,meta:{blockchains:u}})},"updateToken"),v=i(()=>{w(),T()},"handleImportToken"),x=i(I=>{if(I.customToken){let{customToken:L,...N}=I;return _.createElement(Qb,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),k({...N,warning:!0})},"handleClick")},_.createElement(Wr,{variant:"body",size:"xsmall",color:"background"},S("import")))}let b=pi(d(I));return s?s(I):f?_.createElement(Ar,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})):b&&_.createElement(rh,null,_.createElement(sh,{variant:"title",size:"small"},b.amount),_.createElement("div",null),b.usdValue&&_.createElement(Wr,{variant:"body",className:gc(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),A=i(()=>_.createElement(Yb,{style:{flexGrow:1,minHeight:0},itemContent:I=>{let b=e[I];if(b==="skeleton")return _.createElement(Kb,{hasDivider:!0,start:_.createElement(Zo,{variant:"circular",width:35,height:35}),end:_.createElement(Ar,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Zo,{variant:"text",size:"large",width:90}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:90}))});let L=u.find(Z=>Z.name===b?.blockchain);if(!L||!b)return null;let N=b.address,O=sl(L.color,"main"),q={$$color:O.main150,[`.${dh} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${dh} &`]:{$$color:O.main150},color:"$$color"},ee=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick"),P=N?ti({contractAddress:N,blockchainMeta:L}):void 0;return _.createElement(ch,null,_.createElement(nh,{"tab-index":I,key:`${b.symbol}${N}`,id:`${b.symbol}${N}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b?.customToken,onClick:ee,start:_.createElement(ih,null,_.createElement(Vb,{src:b.image===""?ni:b.image,size:30}),t.type!=="custom-token"&&b&&h(b,t.type)&&_.createElement(ah,null,_.createElement(Xb,{size:12,color:"gray"}))),title:b.name||!b.name&&!N?_.createElement(hc,null,_.createElement(Wr,{variant:"title",size:"xmedium"},b.symbol),_.createElement(no,{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(no,{direction:"horizontal",size:4}),_.createElement(qb,{container:W()}))):void 0,description:typeof b!="string"&&L.info&&N&&P?ex({address:N,token:b,customCssForTag:q,customCssForTagTitle:j,name:b.name,url:P}):b.name||void 0,end:x(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=y?Po(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Wr,{variant:"label",size:"large"},Tc.t("Select Token")),_.createElement(no,{size:4})),_.createElement(oh,null,_.createElement(no,{size:4}),p==="loading"&&_.createElement(uh,{size:Rb}),p==="success"&&(e.length?_.createElement(_.Fragment,null,_.createElement(hr,{token:y,address:y?.address??"",blockchain:E??void 0,onImport:v,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),_.createElement(Ta,{as:"ul"},A())):!!o&&_.createElement(jb,{title:Tc.t("No results found"),description:Tc.t("Try using different keywords")}))))}i(Pr,"TokenList");var lx=wc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),cx=wc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),px=wc(rx,{"&:hover":{"& svg":{color:"$secondary550"}}});function mh(){let[t,e]=kc(""),{deleteCustomToken:o}=C(),n=C().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=go({}),p=sx(),[u,d]=kc(!1),[f,h]=kc(),g=i(y=>{let k=y.target.value;e(k)},"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?Ct(a):null,k=r?Ct(r):null,w=Ct(f);y===w?c({token:null}):k===w&&s({token:null}),o(f)}d(!1)},"handleDeleteCustomToken");return Se.createElement(se,{header:{title:ro.t("Custom Tokens")}},Se.createElement(ce,null,Se.createElement(lx,null,n.length?Se.createElement(Se.Fragment,null,Se.createElement(Wt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:ro.t("Search Token"),onChange:g}),Se.createElement(Lr,{size:16}),Se.createElement(Pr,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>Se.createElement(px,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},Se.createElement(nx,{size:12,color:"gray"}))})):Se.createElement(cx,null,Se.createElement(ax,{icon:m?Se.createElement(tx,{size:200}):Se.createElement(ox,{size:200}),title:ro.t("No custom tokens"),description:ro.t("press the button to add your custom token")})),Se.createElement(Lr,{size:20}),Se.createElement(Cc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},ro.t("Add Custom Token"))),Se.createElement(re,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},Se.createElement(ix,{title:ro.t("Delete Custom Token"),type:"error",description:ro.t("Are you sure you want to Delete this Token?")},Se.createElement(Lr,{size:40}),Se.createElement(Lr,{size:10}),Se.createElement(Cc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},ro.t("Yes, Delete it")),Se.createElement(Lr,{size:12}),Se.createElement(Cc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},ro.t("No, Continue"))))))}i(mh,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as Wx}from"@rango-dev/queue-manager-react";import{Button as Nc,darkTheme as Px,Divider as wo,MessageBox as Lx,NotFound as Bx,styled as Wc,Tabs as _x,Typography as wa}from"@rango-dev/ui";import{TransactionStatus as Mr}from"rango-types";import oe,{useMemo as Lh,useState as Dr}from"react";import{useNavigate as Mx}from"react-router-dom";import{FilterIcon as yx,Popover as Sx}from"@rango-dev/ui";import Jo from"react";import{css as ux,darkTheme as Ca,IconButton as dx,styled as Br}from"@rango-dev/ui";var vc=Br("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${Ca} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),fh=Br(dx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Ca} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Ca} &`]:{backgroundColor:"$neutral"},[`& ${vc}::before`]:{backgroundColor:"$secondary100",[`.${Ca} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),gh=Br("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),hh=Br("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),yh=ux({display:"flex",justifyContent:"space-between",alignItems:"center"}),Sh=Br("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Th}from"@lingui/core";import{Button as mx,Divider as Ch,ListItemButton as fx,Radio as gx,RadioRoot as hx,Typography as kh}from"@rango-dev/ui";import gt from"react";function wh(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(hh,null,gt.createElement("div",{className:yh()},gt.createElement(kh,{size:"small",variant:"body"},Th.t("Status")),gt.createElement(mx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Th.t("Reset"))),gt.createElement(Ch,{size:10}),gt.createElement(hx,{value:e},gt.createElement(Sh,null,t.list.map((n,r)=>gt.createElement(fx,{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(Ch,{direction:"horizontal",size:4}),gt.createElement(kh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(gx,{value:n.id}),onClick:o})))))}i(wh,"FilterSelectorContent");function Ec(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Jo.createElement("div",null,Jo.createElement(Sx,{open:a,align:"end",onOpenChange:o,container:W(),content:Jo.createElement(wh,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Jo.createElement(fh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Jo.createElement(vc,{isSelect:!!n},Jo.createElement(yx,{size:16,color:"black"}),!!n&&Jo.createElement(gh,null)))))}i(Ec,"FilterSelector");import{i18n as kx}from"@lingui/core";import{getCurrentStep as wx}from"@rango-dev/queue-manager-rango-preset";import{Divider as Ih,GroupedVirtualizedList as vx,Skeleton as Ex,SwapListItem as Ah,Typography as bx}from"@rango-dev/ui";import et,{useCallback as Nh,useEffect as xx,useRef as Ix,useState as Ax}from"react";function vh(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(vh,"calculateGroupsSoFar");import{css as Tx,darkTheme as Cx,styled as _r}from"@rango-dev/ui";var bc=Tx(),Eh=_r("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),xc=_r("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${bc}`]:{$$color:"$colors$neutral600",[`.${Cx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ic=_r("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),bh=_r("div",{gap:"$10",display:"flex",flexDirection:"column"}),xh=_r("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var Nx=10;function Ac(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=Ax([]),c=Ix(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=Nh(vh,[]),f=Nh(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,Nx),s(d(p,c.current)))},[e.length]);if(xx(()=>{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(Ex,{variant:"text",width:60,size:"small"}),et.createElement(Ih,{size:16})),et.createElement(Ih,{size:4}),et.createElement(bh,null,m.map((y,k)=>et.createElement(Ah,{isLoading:!0,key:k}))))))}return et.createElement(vx,{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(bx,{variant:"label",size:"medium",className:bc()},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(Eh,{key:m.requestId},et.createElement(Ah,{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]===kx.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 ka}from"@lingui/core";import Wh from"dayjs";var Ph=i(t=>{let e=new Map([["today",{title:ka.t("Today"),swaps:[]}],["week",{title:ka.t("This week"),swaps:[]}],["month",{title:ka.t("This month"),swaps:[]}],["year",{title:ka.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=Wh();t.forEach(l=>{let p=Number(l.creationTime),u=Wh(p);if(n.isSame(u,"day"))e.get("today")?.swaps.push(l);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(l);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(l);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(l);else{let d=new Date(p).getFullYear().toString();o(d,l)}});let 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 Dx=Wc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),$x=Wc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Fx=Wc("div",{"._typography":{color:"$neutral700",[`.${Px}&`]:{color:"$neutral900"}}}),Ox=i((t,e)=>t?.length?t.filter(o=>_t(o.fromBlockchain,e)||_t(o.toBlockchain,e)||_t(o.toSymbol,e)||_t(o.fromSymbol,e)).length:!1,"isStepContainsText");function Bh(){let t=Mx(),{manager:e,state:o}=Wx(),n=vt(e).map(({swap:E})=>E),[r,a]=Dr(""),[s,c]=Dr(!1),l=!o.loadedFromPersistor,[p,u]=Dr(""),[d,f]=Dr(!1),[h,g]=Dr("all"),m=i(E=>{let I=E.target.value;a(I)},"handleSearch"),{isMultiMode:S}=rt(),T=[{id:Mr.SUCCESS,title:Fe.t("Complete")},{id:Mr.RUNNING,title:Fe.t("Running")},{id:Mr.FAILED,title:Fe.t("Failed")}],y=[{id:"all",title:Fe.t("All")},{id:"swap",title:Fe.t("Swap")},{id:"refuel",title:Fe.t("Refuel")}],k=Lh(()=>!r&&!p&&h==="all"?n:n.filter(E=>{let{inputAmount:I,status:b,steps:L,requestId:N,mode:O}=E;return(!r||_t(I,r)||_t(b,r)||Ox(L,r)||_t(N,r))&&(!p||p===b)&&(h==="all"?!0:h==="swap"?!O||O==="swap":h==="refuel"?O==="refuel":!1)}),[n,r,p,h]),w=!k?.length&&!l,v=i(()=>f(!1),"onCloseModal"),x=i(async()=>{try{await e?.clearQueue(),f(!1)}catch(E){console.log(E)}},"onClear"),A=Lh(()=>!n.some(E=>E.status===Mr.SUCCESS||E.status===Mr.FAILED),[n]);return oe.createElement(se,{header:{title:Fe.t("History"),suffix:oe.createElement(ho,null,oe.createElement(Nc,{id:"widget-history-clear-btn",disabled:A,variant:"ghost",size:"xsmall",onClick:()=>f(!0)},oe.createElement(wa,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},oe.createElement(ce,null,oe.createElement($x,null,oe.createElement(Wt,{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}),oe.createElement(wo,{size:10,direction:"horizontal"}),oe.createElement(Ec,{filterBy:p,open:s,onOpenChange:E=>c(E),onClickItem:E=>u(E),list:T})),oe.createElement(wo,{size:"16"}),S&&!l&&oe.createElement(oe.Fragment,null,oe.createElement(_x,{items:y,onChange:E=>g(E.id),value:h,type:"secondary"}),oe.createElement(wo,{size:"12"})),oe.createElement(Dx,null,w&&oe.createElement(xh,null,oe.createElement(wo,{size:32}),oe.createElement(Bx,{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&&oe.createElement(Ac,{list:k,onSwapClick:t,groupBy:Ph,isLoading:l}))),oe.createElement(re,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},oe.createElement(wo,{size:20}),oe.createElement(Lx,{type:"warning",title:Fe.t("Clear Transaction History"),description:oe.createElement(Fx,null,oe.createElement(wa,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),oe.createElement(wo,{size:"24"}),oe.createElement(wa,{variant:"body",size:"small"},Fe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),oe.createElement(wo,{size:30}),oe.createElement(Nc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:x},Fe.t("Yes, Clear the history")),oe.createElement(wo,{size:10}),oe.createElement(Nc,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},oe.createElement(wa,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}i(Bh,"HistoryPage");import{i18n as ly}from"@lingui/core";import{Button as kI,Divider as qc,styled as wI,WarningIcon as vI}from"@rango-dev/ui";import EI from"bignumber.js";import Ce,{useEffect as cy,useState as py}from"react";import{useNavigate as bI}from"react-router-dom";import{i18n as Mh}from"@lingui/core";import{Alert as zx,Divider as Pc,NoRouteIcon as Hx,Typography as Qx}from"@rango-dev/ui";import Ro from"react";import{styled as Ux}from"@rango-dev/ui";var _h=Ux("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Lc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Vt(t,e)?Ro.createElement(_h,null,Ro.createElement(Pc,{size:10}),Ro.createElement(Hx,{size:24,color:"gray"}),Ro.createElement(Pc,{size:4}),Ro.createElement(Qx,{variant:"title",size:"small"},Mh.t("No Routes Found")),Ro.createElement(Pc,{size:4}),Ro.createElement(zx,{title:Mh.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Lc,"SameTokensWarning");import{Alert as qx,Button as Gx}from"@rango-dev/ui";import $h from"react";import{i18n as va}from"@lingui/core";function Dh(t){let e=null;return t===fi?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:va.t("Reset"),title:va.t("Slippage cannot be set lower than 0.01%.")},e):t>pn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:va.t("Change"),title:va.t("Caution, your slippage is high!")},e):null}i(Dh,"makeAlerts");function Fh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=C(),{onChangeSettings:a}=t,c=Dh(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(mi),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?$h.createElement(qx,{title:c.title,type:c.alertType,variant:"alarm",action:$h.createElement(Gx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(Fh,"SlippageWarningsAndErrors");import{i18n as Yx}from"@lingui/core";import{IconButton as Zx,ReverseIcon as Jx,Skeleton as Rx,Tooltip as eI,Typography as $r}from"@rango-dev/ui";import ht from"react";import Ea from"bignumber.js";function Uh(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(Uh,"getSlippageColor");function zh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new Ea(e),r=new Ea(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(zh,"getUsdExchangeRate");function Hh(t,e){let o=new Ea(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,Ea.ROUND_DOWN).toFormat(2)}`}i(Hh,"formatTokenValueInUsd");import{darkTheme as jx,styled as _c,Typography as Xx}from"@rango-dev/ui";var Qh=_c("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),qh=_c("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${jx} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Mc=_c(Xx,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function Dc(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=C(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:f}=go({}),h=mn(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,k=p?.swaps[p?.swaps.length-1]?.to||l,w=m?y:k,v=m?k:y,x=Number(m?p?.outputAmount:p?.requestAmount),A=Number(m?p?.requestAmount:p?.outputAmount),E=x||w.usdPrice,I=A||v.usdPrice,{rawValue:b,displayValue:L}=zh({toTokenUsdPrice:I,fromTokenUsdPrice:E});return ht.createElement(Qh,null,ht.createElement($r,{variant:S||T?"label":"body",size:S||T?"medium":"small",color:Uh({error:S,warning:T,isDarkTheme:g})},Yx.t("Slippage:")," ",d,"%"),u?ht.createElement(Rx,{height:16,width:104,variant:"rounded"}):E&&I&&ht.createElement(qh,null,ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Mc,{className:"rate-text",variant:"body",size:"small"},v.symbol),ht.createElement(Zx,{id:"widget-home-page-change-rate-button",onClick:r},ht.createElement(Jx,{size:14,color:"secondary"})),ht.createElement(eI,{container:W(),side:"top",sideOffset:4,content:ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},b)},ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},L)),ht.createElement(Mc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement($r,{color:"neutral600",variant:"body",size:"small"},"~",Hh(Number(b),w.usdPrice))))}i(Dc,"SwapMetrics");import{i18n as aI}from"@lingui/core";import{Header as sI}from"@rango-dev/ui";import vo,{useEffect as lI,useState as cI}from"react";import{i18n as oI}from"@lingui/core";import{Divider as Fc,FullExpandedQuote as nI,Typography as rI}from"@rango-dev/ui";import ve from"react";import{styled as $c}from"@rango-dev/ui";var Gh=$c("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Vh=$c("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Kh=$c("div",{width:"146px"});import{i18n as Fr}from"@lingui/core";import{Select as tI}from"@rango-dev/ui";import jh from"react";function ba(t){let{updateQuotePartialState:e,sortStrategy:o}=z()(),n=[{value:"SMART",label:Fr.t("Smart Routing")},{value:"FEE",label:Fr.t("Lowest Fee")},{value:"SPEED",label:Fr.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Fr.t("Maximum Return")},{value:"PRICE",label:Fr.t("Maximum Output")}];return jh.createElement(Kh,null,jh.createElement(tI,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(ba,"SelectStrategy");var Xh=3;function Or(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}=C(),{findToken:T}=C(),y=c||W(),k=!!p&&p.results.length,w=S??m,{config:{__UNSTABLE_OR_INTERNAL__:v}}=C(),x=i(I=>{if(!d||!f||!p)return null;let b={requestAmount:p.requestAmount,validationStatus:null,...I};return vn({currentQuote:b,userSlippage:w,findToken:T})},"getQuoteWarning"),A=g?.type===0||g?.type===1,E=p?.results?Ni(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Vh,null,ve.createElement(rI,{size:"xmedium",variant:"title"},oI.t("Sort by")),ve.createElement(ba,{container:y})),ve.createElement(Fc,{size:"10"})),e&&Array.from({length:Xh},(I,b)=>ve.createElement(ve.Fragment,{key:b},s?ve.createElement(nI,{campaignTag:v?.campaignTag,loading:!0}):ve.createElement(xr,{tagHidden:!1,type:"list-item",expanded:!1}),b!==Xh-1&&ve.createElement(Fc,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?E.map((I,b)=>{let L=x(I),N=rc(I.swaps),O=E.length-1===b;return ve.createElement(ve.Fragment,{key:I.requestId},ve.createElement(Yo,{id:"widget-quotes-quote-info-container",showModalFee:r,container:y,selected:l?.requestId===I.requestId,tagHidden:!1,quote:{...I,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:N?.options||null,warning:L,fullExpandedMode:s,onClick:q=>{N||u("warning",L),u("error",N?.options||null),o(q)},type:"list-item"}),!O&&ve.createElement(Fc,{size:16}))}):A&&ve.createElement(Gh,null,ve.createElement(Sr,{size:s?"large":"small",error:g,fetch:n}))))}i(Or,"Quotes");import{darkTheme as iI,styled as Yh}from"@rango-dev/ui";var Zh=Yh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${iI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Jh=Yh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var pI=100;function Oc(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=cI(!1),l=s?"":"is-hidden",{config:p}=C(),u=p?.variant==="full-expanded",d=_o();return lI(()=>{let f=null;return a?f=setTimeout(()=>{c(!0)},pI):(c(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),vo.createElement(Zh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Qi()} widget-expanded-quotes-container`,id:kt.EXPANDED_BOX_ID},vo.createElement(sI,{title:aI.t("Routes"),suffix:vo.createElement(vo.Fragment,null,vo.createElement(ba,{container:d}),vo.createElement(Go,{container:d,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),vo.createElement(Jh,null,vo.createElement(Or,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:_o(),onClickOnQuote:n,fullExpandedMode:u})))}i(Oc,"ExpandedQuotes");import{i18n as iy}from"@lingui/core";import{SwapInput as ay}from"@rango-dev/ui";import fI from"bignumber.js";import Ur from"react";import{ReverseIcon as mI}from"@rango-dev/ui";import zc from"react";import{keyframes as uI,styled as Rh}from"@rango-dev/ui";var Uc=450,dI=uI({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),ey=Rh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),ty=Rh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${dI} ${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(ey,null,zc.createElement(ty,{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(mI,{size:12})))}i(Hc,"SwitchFromAndToButton");import{styled as oy}from"@rango-dev/ui";var ny=oy("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),ry=oy("div",{position:"relative"});function 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}=C(),k=a?y(a):null,w=pi(k)?.amount??"0",v=k?new fI(k.amount).shiftedBy(-k.decimals):pe,x=!!s&&Au(T,s.name),A=!Qs(m,d,f),E=!Qs(m,d,g),I=!f||!g||!g.gt(0)?null:Yt(f.toString(),g.toString());return Ur.createElement(ny,null,Ur.createElement(ry,null,Ur.createElement(ay,{label:iy.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:w,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:d,usdValue:A?void 0:M(f,4,4),realUsdValue:A?void 0:f?.toString(),error:A?ie().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:x,tooltipContainer:W(),onSelectMaxBalance:()=>{let b=v.isGreaterThan(pe)?v.toFixed():"";p(b)},anyWalletConnected:T.length>0}),S==="swap"&&Ur.createElement(Hc,null)),Ur.createElement(ay,{selectionType:S==="swap"?"token":"chain",sharpBottomStyle:!r&&(!!m||e),label:iy.t("To"),mode:"To",id:"widget-swap-to-input",fetchingQuote:e,chain:{displayName:l?.displayName||"",image:l?.logo},token:{displayName:c?.symbol||"",image:c?.image,securityWarning:!!c?.warning},percentageChange:M(Yt(f,g),2,2),warningLevel:Zt(I??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?ie().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}i(Qc,"Inputs");import{warn as gI}from"@rango-dev/logging-core";import{useCallback as hI,useEffect as yI,useRef as SI,useState as TI}from"react";function sy(){let{fetch:t,loading:e,cancelFetch:o}=ga({request:async(n,r)=>await dt().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(sy,"useFetchAllQuotes");var CI=600;function xa({refetchQuote:t}){let{fetch:e,cancelFetch:o}=sy(),{excludeLiquiditySources:n,routing:r}=C().config,{connectedWallets:a}=C(),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:k,customSlippage:w,affiliatePercent:v,affiliateRef:x,affiliateWallets:A,fetchStatus:E}=C(),I=C().getLiquiditySources(),b=C().getDisabledLiquiditySources(),L=C().excludeLiquiditySources(),{findToken:N}=C(),{swapMode:O}=rt(),[q,j]=TI(!0),ee=SI(u),P=w??k,Y=!l||!p||Vt(l,p)||!Yn(u),ue=i(be=>{j(be)},"resetState"),Ee=i(be=>{let{fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J}=be;if(q||ue(!0),!Y&&He&&Xe){g();let U=Vd({fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});dn("experimental",r)&&(U.experimental=!0),dn("avoidNativeFee",r)&&(U.avoidNativeFee=!0),dn("enableCentralizedSwappers",r)&&(U.enableCentralizedSwappers=!0),r?.maxLength&&(U.maxLength=r.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let Qe=Ni(h,de.results),ot=Md(f,Qe,de.requestAmount);j(!1),y("quotes",de),T(ot),de.results?.length&&ot&&gn({type:"routeRequested",payload:{...Dn(ot),routeCount:de.results.length}}),ha({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let co=ot&&vn({currentQuote:ot,userSlippage:P,findToken:N});y("warning",co)}).catch(de=>{let Qe=ya(de);Qe.type===0?gn({type:"routeNotFound",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,sourceTokenSymbol:He.symbol,sourceTokenAddress:He.address,destinationTokenSymbol:Xe.symbol,destinationTokenAddress:Xe.address,inputAmountUsd:d?d.toNumber():null}}):Qe.type===1&&gn({type:"routeFetchFailed",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,errorCode:String(de?.response?.status??"")}}),(Qe.type===0||Qe.type===1)&&g(),Qe.type!==2&&(y("error",Qe),j(!1),gI(new Error("quote error"),{tags:{...Qe,type:Je[Qe.type],requestBody:U}}))})}},"fetch"),Gt=hI(ri(be=>{Ee(be)},CI),[Y]);return yI(()=>{if(!t){j(!1);return}if(E!=="success")return;if(Y){j(!1),(f||m||S)&&g();return}if(!Yn(u)&&d?.eq(0)){ue(!1),o();return}g(),ue(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Gt),ee.current=u,be({inputAmount:u,fromToken:l,toToken:p,liquiditySources:I,excludeLiquiditySources:L,disabledLiquiditySources:b,slippage:P,affiliateRef:x,affiliatePercent:v,affiliateWallets:A,contractCall:c}),o},[E,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,I?.length,n,b.length,P,x,v,c,JSON.stringify(A)]),{fetch:()=>Ee({inputAmount:u,fromToken:l,toToken:p,liquiditySources:I,excludeLiquiditySources:L,disabledLiquiditySources:b,slippage:P,affiliateRef:x,affiliatePercent:v,affiliateWallets:A,contractCall:c}),loading:q}}i(xa,"useSwapInput");var xI=wI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),II=300;function uy(){let t=bI(),{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]=py(!1),{isLargeScreen:m,isExtraLargeScreen:S}=aa(),{fetch:T,loading:y}=xa({refetchQuote:a}),{config:k,fetchStatus:w,connectedWallets:v,customSlippage:x,slippage:A,setSlippage:E,setCustomSlippage:I}=C(),{isActiveTab:b}=ne(),[L,N]=py(!1),O=x!==null?x:A,{swapMode:q}=rt(),j=mn(O),P=Qd({fetchMetaStatus:w,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=_u(m,S,k?.variant),Y=!!n&&!!e&&!!o&&new EI(n).gt(0)&&!Rd(e,o),ue=Y&&w==="success"&&y,Ee=j?.quoteValidation||c,He=(!Z||Z&&l?.results.length)&&(Ee||s),Xe=!!e&&!!o,St=Xe&&!!j,ct=(r||s)&&!L?T:void 0,B=i(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},II)):t(J)},"onHandleNavigation"),V=i(J=>{r?.requestId!==J.requestId&&(r&&gn({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(di.includes(J)){E(J),I(null);return}I(J)}},"onChangeSlippage"),X=i(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");cy(()=>{u(),f("refetchQuote",!0)},[]),cy(()=>{g(Y)},[Y]);let G=i(()=>{P.action==="connect-wallet"?Xu({type:"clickConnectWallet"},()=>{B($.wallets)}):P.action==="confirm-warning"?N(!0):r&&(te({type:"swapInitiated",payload:{...Dn(r),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(xI,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(kI,{id:`widget-swap-${P.action}-btn`,type:"primary",size:"large",disabled:P.disabled||!b,prefix:P.action==="confirm-warning"&&Ce.createElement(vI,null),fullWidth:!0,onClick:G},P.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:k.title||(q==="swap"?ly.t("Swap"):ly.t("Refuel")),suffix:Ce.createElement(Go,{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(Yo,{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})),He?Ce.createElement(Ce.Fragment,null,Ce.createElement(Cr,{warning:Ee,error:s,skipAlerts:!!j,couldChangeSettings:!0,refetchQuote:T,showWarningModal:L,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(Fh,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Lc,null))),Z?Ce.createElement(Oc,{loading:ue,onClickOnQuote:V,fetch:T,onClickRefresh:ct,isVisible:h}):null)}i(uy,"Home");import{i18n as dy}from"@lingui/core";import{Alert as AI,Divider as NI,List as WI,ListItemButton as PI,Radio as LI,RadioRoot as BI,Typography as _I}from"@rango-dev/ui";import Ut from"react";function Eo(){let{setLanguage:t,language:e,config:o}=C(),n=Uu,r=o?.language||fn;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||fn),resetLanguage:()=>t(null)}}i(Eo,"useLanguage");function my(){let{activeLanguage:t,changeLanguage:e,languages:o}=Eo(),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:Ut.createElement(_I,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Ut.createElement(LI,{value:s}),start:Ut.createElement(l,null)}});return Ut.createElement(se,{header:{title:dy.t("Language")}},Ut.createElement(ce,null,Ut.createElement(AI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Ut.createElement(NI,{size:"8"}),Ut.createElement(BI,{value:t},Ut.createElement(WI,{type:Ut.createElement(PI,{title:dy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(my,"LanguagePage");import{i18n as io}from"@lingui/core";import{Button as OI,Checkbox as UI,Image as zI,ListItemButton as HI,NotFound as QI,Typography as qI}from"@rango-dev/ui";import tt,{useState as GI}from"react";import{Checkbox as $I,Skeleton as gy}from"@rango-dev/ui";import Hr from"react";import{styled as Gc}from"@rango-dev/ui";var zr=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 MI,styled as DI}from"@rango-dev/ui";var fy=DI(MI,{height:61});var FI=30;function jc(){return Hr.createElement(zr,null,Array.from(Array(FI),(t,e)=>Hr.createElement(fy,{hasDivider:!0,key:e,start:Hr.createElement(gy,{variant:"circular",width:35,height:35}),title:Hr.createElement(gy,{variant:"text",size:"large",width:90}),end:Hr.createElement($I,{checked:!1})})))}i(jc,"LoadingLiquiditySourceList");function Xc({sourceType:t}){let e=C().fetchStatus,o=C().swappers(),n=C().getDisabledLiquiditySources(),[r,a]=GI(""),s=C().toggleLiquiditySource,c=C().isInCampaignMode(),l=hi(o,n),p={Exchanges:io.t("Exchanges"),Bridges:io.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let d=l.filter(y=>u.includes(y.type)),f=d.length===d.filter(y=>y.selected).length,h=t==="Exchanges"?"exchanges":"bridges",g=i(()=>{let y=!f;te({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:y?"selectAll":"deselectAll",previousSelectedCount:d.filter(k=>k.selected).length,totalCount:d.length}}),d.forEach(k=>{f?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),m=d.map(y=>{let{selected:k,groupTitle:w,logo:v,id:x,...A}=y;return{id:`widget-setting-liquidity-source-${hu(x.toLowerCase())}-item-btn`,start:tt.createElement(zI,{src:v,size:22,type:"circular"}),onClick:()=>{c||(te({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:"individual",sources:[{id:w,enabled:!k}]}}),s(w))},end:tt.createElement(UI,{checked:k,disabled:c}),title:tt.createElement(qI,{variant:"title",size:"xmedium"},io.t(w)),selected:k,groupTitle:w,logo:v,...A}}),S=i(y=>{let k=y.target.value;a(k)},"handleSearch"),T=m;return r&&(T=m.filter(y=>_t(y.groupTitle,r))),tt.createElement(se,{header:{title:io.t(t),suffix:tt.createElement(Vc,null,tt.createElement(OI,{id:`widget-liquidity-source-${f?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},f?io.t("Deselect all"):io.t("Select all")))}},tt.createElement(ce,{view:!0},tt.createElement(Wt,{value:r,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:io.t("Search {sourceType}",{sourceType:p[t]}),onChange:S}),e==="loading"&&tt.createElement(jc,null),!T.length&&r?tt.createElement(Kc,null,tt.createElement(QI,{title:io.t("No results found"),description:io.t("Try using different keywords")})):e==="success"&&tt.createElement(zr,{disabled:c,className:"widget-liquidity-source-list"},T.map(y=>{let{groupTitle:k,...w}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(HI,{style:{height:"61px"},...w,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(Xc,"LiquiditySourcePage");import{i18n as VI}from"@lingui/core";import Ia from"react";import{useNavigate as KI}from"react-router-dom";function hy(){let t=KI(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=xa({refetchQuote:n}),p=i(f=>{r(f),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${$.settings}`,d=`../${$.wallets}`;return Ia.createElement(se,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:VI.t("Routes"),suffix:Ia.createElement(Go,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Ia.createElement(ce,null,Ia.createElement(Or,{fetch:c,loading:l,onClickOnQuote:p})))}i(hy,"RoutesPage");import{i18n as vy}from"@lingui/core";import{Divider as Ey,getCategoriesCount as nA,SelectableCategoryList as rA}from"@rango-dev/ui";import ao,{useMemo as iA,useState as by}from"react";import{useNavigate as aA}from"react-router-dom";import{i18n as Yc}from"@lingui/core";import{Divider as ZI,Image as JI,ListItemButton as RI,NotFound as eA,Typography as wy}from"@rango-dev/ui";import yt,{useEffect as tA,useState as oA}from"react";var yy=i((t,e,o)=>t.filter(n=>ii(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as jI,styled as Sy}from"@rango-dev/ui";var Ty=Sy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Aa=Sy(bl,{padding:0,margin:0,listStyle:"none",[`& ${jI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as XI,Skeleton as Cy}from"@rango-dev/ui";import Na from"react";var YI=20;function ky(){return Na.createElement(Aa,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(YI),t=>Na.createElement(XI,{key:t,hasDivider:!0,start:Na.createElement(Cy,{variant:"circular",width:35,height:35}),title:Na.createElement(Cy,{variant:"text",size:"large",width:90})})))}i(ky,"LoadingBlockchainList");function Zc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=oA(e),{fetchStatus:l}=C();tA(()=>{c([...yy(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?yt.createElement(eA,{title:Yc.t("No results found"),description:Yc.t("Try using different keywords")}):yt.createElement(Aa,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(RI,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(JI,{src:u.logo,size:30}),title:yt.createElement(wy,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(wy,{variant:"label",size:"large"},Yc.t("Select Chain")),yt.createElement(ZI,{size:4})),yt.createElement(Ty,null,l==="loading"&&yt.createElement(ky,null),l==="success"&&p()))}i(Zc,"BlockchainList");function Wa(t){let{type:e}=t,o=Ve(),[n,r]=by(""),[a,s]=by("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=C(),f=aA(),{swapMode:h}=rt(),g=C().blockchains({type:e}),m=C().tokens(),S=iA(()=>du(g,m),[g.length,m.length]),T=nA(S),y=!t.hideCategory&&T!==1,k=i(w=>{if(e==="custom-token")f(`..?blockchain=${w.name}`,{replace:!0});else{if(te({type:"chainFilterApplied",payload:{side:e==="source"?"from":"to",chain:w.name,filterSource:"expanded"}}),e==="source")l(w);else if(h==="swap")c(w);else{let v=d(w);v&&p({token:v,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return ao.createElement(se,{header:{title:vy.t("Select Chain")}},ao.createElement(ce,{view:!0},y&&ao.createElement(ao.Fragment,null,ao.createElement(rA,{setCategory:s,category:a,blockchains:S,isLoading:u==="loading"}),ao.createElement(Ey,{size:24})),ao.createElement(Wt,{value:n,autoFocus:!0,placeholder:vy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:w=>r(w.target.value)}),ao.createElement(Ey,{size:16}),ao.createElement(Zc,{list:S,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:k})))}i(Wa,"SelectBlockchainPage");import{i18n as Ba}from"@lingui/core";import{Divider as By,Spinner as kA}from"@rango-dev/ui";import bo,{useEffect as wA,useState as vA}from"react";import{useNavigate as EA}from"react-router-dom";import{i18n as ep}from"@lingui/core";import{BlockchainsChip as Pa,Divider as Ny,Image as Wy,Skeleton as dA,Tooltip as mA,Typography as tp}from"@rango-dev/ui";import xe from"react";import{useEffect as cA}from"react";var xy=["ETH"];function Jc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(sA),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(lA(s)),r=n.splice(a)}return{list:n,more:r}}i(Jc,"prepare");function sA(t,e){let o=xy,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(sA,"sortByMostUsedBlockchains");function lA(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(lA,"generateSortByPreferredBlockchainsFor");function Iy(t,e){return!!e.list.find(o=>o.name===t)}i(Iy,"isInVisibleList");function Rc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=C();cA(()=>{if(e?.selected){let a=Jc(t,o,e);Iy(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 pA}from"@rango-dev/ui";var Ay=pA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var fA=6,gA=12;function op(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=ne(),c=Rc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=C(),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(Ny,{size:12}),xe.createElement(tp,{variant:"label",size:"large"},ep.t("Select Chain"))),xe.createElement(Ny,{size:12}),xe.createElement(Ay,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?fA:gA),(m,S)=>xe.createElement(dA,{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(mA,{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(Wy,{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(Wy,{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 yA,useRef as SA,useState as np}from"react";function rp(){let t=C().blockchains(),e=SA(null),{customTokens:o}=C(),[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=>jt(y))),S=new Set(t.map(y=>y.name)),T=g.tokens.filter(y=>S.has(y.blockchain)&&!m.has(jt(y)));s(T),r(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&r(!1)}},"fetch"),u=yA(ri((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 Py(t){return t.trim()?"search":"default "}i(Py,"getTokenSelectionMethod");function La(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}i(La,"shouldSearchForCustomTokens");function Ly(t,e,o,n,r){let a=[...t];return La(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(Ly,"prepareTokensList");function _a(t){let{type:e}=t,o=EA(),n=Ve(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=C(),{fetch:d,loading:f,tokens:h,cancel:g}=rp(),[m,S]=vA(""),T=e==="source"?r:a,y=T?.name??"",k=C().blockchains({type:e}),w=C().tokens({type:e,blockchain:y,searchFor:m,getBalanceFor:u}),v=Ly(w,h,m,f,T?.name),x=i(N=>{e==="source"?l(N):p(N)},"updateBlockchain"),A=i(N=>{e==="source"?s({token:N,meta:{blockchains:k}}):c({token:N,meta:{blockchains:k}})},"updateToken"),E=e==="source"?"from":"to",I=i(N=>{te({type:"chainFilterApplied",payload:{side:E,chain:N.name,filterSource:"featured"}})},"emitChainFilterApplied"),b=i(N=>{te({type:"tokenSelected",payload:{side:E,tokenName:N.name,tokenSymbol:N.symbol,tokenAddress:N.address,chain:N.blockchain,selectionMethod:Py(m),activeChainFilter:y||"all"}})},"emitTokenSelected"),L={source:Ba.t("Source"),destination:Ba.t("Destination")};return wA(()=>(La(w,m,T?.name)&&d(m,T?.name??void 0),()=>{g()}),[w.length,m,T?.name]),bo.createElement(se,{header:{title:Ba.t("Swap {type}",{type:L[e]})}},bo.createElement(ce,null,bo.createElement(op,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o($.blockchains),onChange:N=>{I(N),x(N)}}),bo.createElement(By,{size:24}),bo.createElement(Wt,{value:m,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:Ba.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>S(""),onChange:N=>S(N.target.value),suffix:La(w,m,T?.name)&&f?bo.createElement(kA,{size:12,color:"secondary"}):void 0}),bo.createElement(By,{size:16}),bo.createElement(Pr,{list:v,selectedBlockchain:y,searchedFor:m,type:e,onChange:N=>{b(N),A(N);let O=k.find(q=>N.blockchain===q.name);O&&x(O),n()}})))}i(_a,"SelectSwapItemsPage");import{i18n as lp}from"@lingui/core";import{Alert as ZA,Button as JA,styled as RA}from"@rango-dev/ui";import en from"react";import{useInRouterContext as eN,useSearchParams as tN}from"react-router-dom";import{i18n as Oy}from"@lingui/core";import{Alert as AA,Divider as ap,InfoIcon as NA,SlippageIcon as WA,TextField as PA,Tooltip as LA,Typography as Uy}from"@rango-dev/ui";import Ue from"react";import{Chip as bA,styled as Qr,TextField as xA}from"@rango-dev/ui";var _y=Qr("div",{paddingTop:"$5",padding:"$10 $5"}),My=Qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${xA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Dy=Qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Ma=Qr("div",{maxWidth:"280px",padding:"$10"}),$y=Qr(bA,{width:"61px",flexShrink:0});import{i18n as ip}from"@lingui/core";import{Typography as IA}from"@rango-dev/ui";import qr from"react";function Fy(){return qr.createElement(Ma,null,qr.createElement(IA,{variant:"label",size:"medium",color:"neutral700"},ip.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),qr.createElement("br",null),qr.createElement("br",null),qr.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(Fy,"SlippageTooltipContent");function sp(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=C(),r=o!==null?mn(o):null,a=o??t,s=i((u,d)=>{u!==d&&te({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>er&&(h=er),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;Tu(f)||(d.value=f.slice(0,-1))},"onInput");return Ue.createElement(_y,null,Ue.createElement(Dy,null,Ue.createElement(WA,{size:16,color:"gray"}),Ue.createElement(ap,{direction:"horizontal",size:4}),Ue.createElement(Uy,{variant:"title",size:"xmedium"},Oy.t("Slippage tolerance per swap")),Ue.createElement(ap,{direction:"horizontal",size:4}),Ue.createElement(LA,{container:W(),side:"top",sideOffset:4,content:Ue.createElement(Fy,null)},Ue.createElement(NA,{color:"gray"}))),Ue.createElement(My,null,di.map((u,d)=>{let f=`slippage-${d}`;return Ue.createElement($y,{id:`widget-slippage-chip-${u.toString()}%-btn`,key:f,onClick:()=>l(u),selected:o===null&&u===t,label:`${u.toString()}%`})}),Ue.createElement(PA,{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&&Ue.createElement(Uy,{variant:"body",size:"small"},"%"),placeholder:Oy.t("Custom")})),r&&Ue.createElement(Ue.Fragment,null,Ue.createElement(ap,{size:10}),Ue.createElement(AA,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(sp,"Slippage");import{i18n as Et}from"@lingui/core";import{AutoThemeIcon as zy,BridgesIcon as BA,ChevronRightIcon as Da,DarkModeIcon as Hy,Divider as Gr,ExchangeIcon as _A,InfinityIcon as MA,InfoIcon as DA,LanguageIcon as $A,LightModeIcon as Qy,List as FA,ListItem as OA,ListItemButton as UA,Skeleton as zA,styled as HA,Switch as QA,Tabs as qA,TargetIcon as GA,Tooltip as VA,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as KA}from"react-router-dom";var jA=HA("div",{width:"202px",height:"$40"}),XA=[{id:"light",icon:D.createElement(Qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Light"))},{id:"dark",icon:D.createElement(Hy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Dark"))},{id:"auto",icon:D.createElement(zy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Auto"))}],YA=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(zy,{...e});case"dark":return D.createElement(Hy,{...e});default:return D.createElement(Qy,{...e})}},"getThemeIcon");function qy(){let t=KA(),{theme:e}=C().config,{setTheme:o,theme:n}=C(),{activeLanguage:r,languages:a}=Eo(),s=a.find(P=>P.local===r)?.label,c=C().fetchStatus,l=C().swappers(),p=C().getDisabledLiquiditySources(),{config:{features:u}}=C(),d=C().customTokens(),f=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),m=nt("customTokens",u),S=C().infiniteApprove,T=C().toggleInfiniteApprove,y=hi(l,p),k=y.filter(P=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(P.type)),w=k.length,v=k.filter(P=>P.selected).length,x=y.filter(P=>P.type==="DEX"),A=x.length,E=x.filter(P=>P.selected).length,I=i((P,Z)=>{switch(c){case"loading":return D.createElement(zA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(lt,{variant:"body",size:"medium",color:"$error500"},Et.t("Loading failed"));default:return D.createElement(lt,{variant:"body",size:"medium"},`${P} / ${Z}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Bridges")),end:D.createElement(D.Fragment,null,I(v,w),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(BA,{color:"gray",size:16})},L={id:"widget-setting-exchange-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Exchanges")),end:D.createElement(D.Fragment,null,I(E,A),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),start:D.createElement(_A,{color:"gray",size:16}),onClick:()=>t($.exchanges)},N={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},`${d.length}`),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),start:D.createElement(GA,{color:"gray",size:16}),onClick:()=>t($.customTokens)},O={id:"widget-setting-language-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Language")),start:D.createElement($A,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},s),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{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"},Et.t("Infinite approval")),D.createElement(Gr,{direction:"horizontal",size:4}),D.createElement(VA,{side:"top",sideOffset:4,container:W(),content:D.createElement(Ma,null,D.createElement(lt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,Et.t("Warning")),":\xA0",Et.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(DA,{color:"gray"}))),start:D.createElement(MA,{color:"gray",size:16}),end:D.createElement(QA,{checked:S}),onClick:()=>{te({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:S,newValue:!S}}),T()}},j={id:"widget-setting-theme-item-btn",type:D.createElement(OA,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Theme")),end:D.createElement(jA,null,D.createElement(qA,{container:W(),items:XA,value:n,className:"widget-setting-theme-item-tabs-container",onChange:P=>o(P.id),type:"primary",borderRadius:"small"})),start:YA(n)},ee=h?[]:[b,L];return m||ee.push(N),g||ee.push(O),ee.push(q),!e?.singleTheme&&!f&&ee.push(j),D.createElement(FA,{type:D.createElement(UA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}i(qy,"SettingsLists");var oN=RA("div",{paddingLeft:"$8"});function Gy(){let{isInCampaignMode:t,updateCampaignMode:e}=C(),o=t(),[,n]=tN(),r=eN(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return en.createElement(se,{header:{title:lp.t("Settings")}},en.createElement(ce,null,o&&en.createElement(ZA,{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:en.createElement(oN,null,en.createElement(JA,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},lp.t("Reset")))}),en.createElement(sp,null),en.createElement(qy,null)))}i(Gy,"SettingsPage");import{i18n as d0}from"@lingui/core";import{cancelSwap as m0}from"@rango-dev/queue-manager-rango-preset";import{useManager as f0}from"@rango-dev/queue-manager-react";import{Alert as g0}from"@rango-dev/ui";import bp from"react";import{useParams as h0}from"react-router-dom";import{i18n as Ht}from"@lingui/core";import{getCurrentNamespaceOfOrNull as JN,getCurrentStep as RN,getRelatedWalletOrNull as e0}from"@rango-dev/queue-manager-rango-preset";import{Button as OS,Divider as t0,QuoteCost as o0,StepDetails as n0,Typography as Tp}from"@rango-dev/ui";import{useWallets as r0}from"@rango-dev/wallets-react";import US from"bignumber.js";import{PendingSwapNetworkStatus as zn}from"rango-types";import we,{useEffect as Cp,useRef as kp,useState as Ga}from"react";import{useNavigate as i0}from"react-router-dom";import{i18n as xo}from"@lingui/core";var nN=[xo.t("Sunday"),xo.t("Monday"),xo.t("Tuesday"),xo.t("Wednesday"),xo.t("Thursday"),xo.t("Friday"),xo.t("Saturday")];function Vy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?xo.t("Today"):`${nN[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Vy,"timeSince");function Ky(t){return t.finishTime?Vy(parseInt(t.finishTime)):Vy(parseInt(t.creationTime))}i(Ky,"getSwapDate");import Vr from"react";import{i18n as $a}from"@lingui/core";import{Button as jy,Divider as cp,MessageBox as rN}from"@rango-dev/ui";import Io from"react";var Xy=i(({onCancel:t,onClose:e})=>Io.createElement(Io.Fragment,null,Io.createElement(cp,{size:20}),Io.createElement(rN,{type:"error",title:$a.t("Cancel Swap"),description:$a.t("Are you sure you want to cancel this swap?")}),Io.createElement(cp,{size:32}),Io.createElement(jy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},$a.t("Yes, Cancel it")),Io.createElement(cp,{size:12}),Io.createElement(jy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},$a.t("No, Continue"))),"CancelContent");import{i18n as Fa}from"@lingui/core";import{Button as Yy,Divider as pp,MessageBox as iN,Typography as aN}from"@rango-dev/ui";import so from"react";var Zy=i(({onDelete:t,onClose:e})=>so.createElement(so.Fragment,null,so.createElement(pp,{size:20}),so.createElement(iN,{type:"error",title:Fa.t("Delete Transaction"),description:Fa.t("Are you sure you want to delete this swap?")}),so.createElement(pp,{size:32}),so.createElement(Yy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Fa.t("Yes, Delete it")),so.createElement(pp,{size:12}),so.createElement(Yy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},so.createElement(aN,{variant:"title",size:"medium",color:"primary"},Fa.t("No, Cancel")))),"DeleteContent");import{i18n as sN}from"@lingui/core";import{Button as lN,Divider as cN,MessageBox as pN}from"@rango-dev/ui";import tn from"react";var Jy=i(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return tn.createElement(tn.Fragment,null,tn.createElement(pN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&tn.createElement(tn.Fragment,null,tn.createElement(cN,{size:"30"}),tn.createElement(lN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},sN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as AN,getCurrentStep as NN,getRelatedWalletOrNull as WN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as PN}from"@rango-dev/ui";import{useWallets as LN}from"@rango-dev/wallets-react";import iS from"react";import{i18n as On}from"@lingui/core";import{Alert as tS,Button as mN,Checkbox as fN,Divider as za,Image as gN,MessageBox as hN,Spinner as yN,WarningIcon as SN}from"@rango-dev/ui";import{useWallets as TN}from"@rango-dev/wallets-react";import Te,{useState as CN}from"react";import{css as uN,darkTheme as dN,styled as up}from"@rango-dev/ui";var Ry=uN({wordWrap:"break-word",display:"block"}),eS=up("img",{width:"100%"}),Oa=up("div",{position:"relative"}),Ua=up("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${dN} &`]:{$$color:"$warning600"}});var oS=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=CN(null),{list:s}=bt(),c=ne.use.isActiveTab(),{state:l,connect:p}=TN(),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?On.t("Done"):r?On.t("Try again"):On.t("Connect"),"getButtonTitle"),T=i(()=>g?Te.createElement(yN,{color:"info"}):r||m?null:Te.createElement(fN,{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(v)}},"handleConnect"),k=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(":"),x=v?.[v?.length-1];return x?po(x):null},"getAddress");return Te.createElement(Te.Fragment,null,Te.createElement(hN,{type:"warning",title:On.t("Connect {wallet}",{wallet:u.title}),description:On.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Te.createElement(Oa,null,Te.createElement(gN,{src:u.image,size:45}),Te.createElement(Ua,null,Te.createElement(SN,{color:"warning",size:10})))}),m&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:10}),Te.createElement(tS,{type:"success",variant:"alarm",title:On.t("Wallet connected successfully.")})),r&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:10}),Te.createElement(tS,{type:"error",title:r?.message,variant:"alarm"})),d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:30}),Te.createElement(Fo,{namespace:d,suffix:T(),error:r?.message,connected:m,address:w()})),Te.createElement(za,{size:"40"}),Te.createElement(mN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},S()))},"ConnectWalletContent");import{i18n as nS}from"@lingui/core";import{Button as kN,Divider as wN,Image as vN,MessageBox as EN,WarningIcon as bN}from"@rango-dev/ui";import{useWallets as xN}from"@rango-dev/wallets-react";import{detectInstallLink as IN}from"@rango-dev/wallets-shared";import lo from"react";var rS=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=xN(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(IN(n.installLink),"_blank"),"handleButtonClick");return lo.createElement(lo.Fragment,null,lo.createElement(EN,{type:"warning",title:nS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:lo.createElement(Oa,null,lo.createElement(vN,{src:n.img,size:45}),lo.createElement(Ua,null,lo.createElement(bN,{color:"warning",size:10})))}),lo.createElement(wN,{size:"40"}),lo.createElement(kN,{type:"primary",id:"widget-install-wallet-btn",onClick:r},nS.t("Install")))},"InstallWalletContent");var aS=i(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:r}=LN(),a=NN(e),s=a?WN(e,a):null,c=s?.walletType,l=c?Zn(r(c),n(c)):null,p=a?AN(e,a):null;return c?l===PN.NOT_INSTALLED?iS.createElement(rS,{walletType:c}):iS.createElement(oS,{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 Vr.createElement(re,{open:e,onClose:r,container:W()},o==="connectWallet"&&Vr.createElement(aS,{swap:c,message:l,onClose:r}),o==="switchNetwork"&&n&&Vr.createElement(Jy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Vr.createElement(Zy,{onClose:r,onDelete:()=>{r(),a()}}),o==="cancel"&&Vr.createElement(Xy,{onClose:r,onCancel:()=>{r(),s()}}))}i(dp,"SwapDetailsModal");import{i18n as Kr}from"@lingui/core";import{Button as mp,Divider as jr,MessageBox as cS,TokenAmount as BN,Typography as pS}from"@rango-dev/ui";import ke from"react";import{Link as _N,useNavigate as MN}from"react-router-dom";var sS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",lS="/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=MN(),{showProfileBanner:g}=ne();return ke.createElement(re,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(kt.SWAP_BOX_ID)||document.body},n==="success"?ke.createElement(cS,{type:"success",title:Kr.t("Swap Successful")},ke.createElement(BN,{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(jr,{size:12}),ke.createElement(pS,{className:Ry(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ke.createElement(cS,{type:"error",title:Kr.t("Transaction Failed"),description:d}),ke.createElement(jr,{size:30}),n==="success"&&ke.createElement(ke.Fragment,null,g&&ke.createElement(ke.Fragment,null,ke.createElement(_N,{to:lS},ke.createElement(eS,{src:sS,alt:"Profile Banner"})),ke.createElement(jr,{size:30})),ke.createElement(mp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Kr.t("Done"))),ke.createElement(jr,{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")},Kr.t("Diagnosis")),ke.createElement(jr,{size:12})),ke.createElement(mp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ke.createElement(pS,{variant:"title",size:"medium",color:"primary"},Kr.t("See Details"))))}i(fp,"SwapDetailsCompleteModal");import{i18n as qa}from"@lingui/core";import{CopyIcon as KN,DoneIcon as jN,IconButton as XN,RangoExplorerIcon as YN,Tooltip as BS,Typography as _S,useCopyToClipboard as ZN}from"@rango-dev/ui";import Lt from"react";import VN from"react";import{i18n as HN}from"@lingui/core";import{Alert as NS,IconButton as QN,LinkIcon as qN}from"@rango-dev/ui";import Ao,{Fragment as GN}from"react";import{Alert as $N,ChevronDownIcon as FN,IconButton as ON}from"@rango-dev/ui";import Un,{useState as UN}from"react";import{css as Xr,darkTheme as uS,styled as zt,Typography as DN}from"@rango-dev/ui";var dS=zt(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${uS} &`]:{color:"$secondary500"}}}}}),mS=zt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),fS=zt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),gS=zt("div",{padding:"$0 $20 $20 $20"}),kY=zt("div",{display:"flex",flexDirection:"column",gap:"$10"}),hS=zt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),wY=zt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),on=Xr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${uS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),yS=Xr({padding:"$5 0"}),Ha=Xr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),SS=Xr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),TS=Xr({width:"100%",padding:"0 $20 $10"}),CS=zt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),kS=zt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Qa=zt(DN,{wordBreak:"break-word"});import{styled as gp}from"@rango-dev/ui";var wS=gp("div",{display:"flex",flexDirection:"column",gap:"$10"}),vS=gp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),ES=gp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function bS(t){let{message:e}=t,[o,n]=UN(!1);return Un.createElement($N,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&Un.createElement(ON,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},Un.createElement(vS,{rotated:o},Un.createElement(FN,{size:12,color:"gray"}))),footer:Un.createElement(ES,{open:o},Un.createElement(Qa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(bS,"FailedAlert");import{i18n as xS}from"@lingui/core";import{Alert as hp,Button as IS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as zN}from"rango-types";import Yr from"react";function AS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:r,showNetworkModal:a}=t;return e?Yr.createElement(hp,{type:"warning",id:"widget-swap-details-change-network-alert",title:r.shortMessage,action:Yr.createElement(IS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},xS.t("Change"))}):a===zN.WaitingForConnectingWallet?Yr.createElement(hp,{type:"warning",title:r.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Yr.createElement(IS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},xS.t("Connect"))}):Yr.createElement(hp,{id:"widget-swap-details-short-alert",type:"warning",title:r.shortMessage})}i(AS,"WarningAlert");function yp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=mr(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,d=u&&!c||p&&!s.explorerUrl?.length;return Ao.createElement(wS,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 Ao.createElement(GN,{key:m},Ao.createElement(NS,{id:"widget-swap-details-tx-alert",type:S&&(T&&"loading"||y&&"error")||"success",title:f.description?`${f.description} Tx`:HN.t("View transaction"),action:f.url&&Ao.createElement(QN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},Ao.createElement(qN,{size:12}))}))}),d&&Ao.createElement(NS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&Ao.createElement(AS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a}),s.status==="failed"&&Ao.createElement(bS,{message:a}))}i(yp,"SwapDetailsAlerts");var WS=2e3;var PS=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:Tt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:M(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:Tt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:M(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Vn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:Tt(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:Tt(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:Vn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:VN.createElement(yp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function LS(t){if(mr(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(LS,"getStepState");function MS(t){let{requestId:e}=t,[o,n]=ZN(WS);return Lt.createElement(fS,{className:on()},Lt.createElement(_S,{variant:"label",size:"large",color:"neutral700"},qa.t("Request ID")),Lt.createElement("div",{className:Ha()},Lt.createElement(_S,{variant:"label",size:"small",color:"neutral700"},e),Lt.createElement(BS,{container:W(),content:o?qa.t("Copied To Clipboard"):qa.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Lt.createElement(XN,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Lt.createElement(jN,{size:16,color:"secondary"}):Lt.createElement(KN,{size:16,color:"gray"}))),Lt.createElement(CS,{target:"_blank",href:`${tu}/swap/${e}`},Lt.createElement(BS,{container:W(),content:qa.t("View on Rango Explorer"),side:"bottom"},Lt.createElement(YN,{size:20})))))}i(MS,"RequestIdRow");import{i18n as DS}from"@lingui/core";import{Typography as $S}from"@rango-dev/ui";import Sp from"react";function FS(t){let{date:e,isFinished:o}=t;return Sp.createElement("div",{className:on()},Sp.createElement($S,{variant:"label",size:"large",color:"neutral700"},o?DS.t("Finished at"):DS.t("Created at")),Sp.createElement($S,{variant:"label",size:"small",color:"neutral700"},e))}i(FS,"SwapDateRow");var a0=3e3;function wp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=r0(),l=C().blockchains(),p=C().swappers(),{findToken:u}=C(),d=z().use.retry(),f=i0(),h=kp(null),[g,m]=Ga(!1),[S,T]=Ga(null),[y,k]=Ga(null),[w,v]=Ga(null),x=kp(S),A=kp(y),E=We.use.getNotifications(),I=We.use.removeNotification(),b=E(),L=RN(e),N=L?.networkStatus,O=i(Be=>{m(!0),T(Be)},"handleChangeModalState"),q=i(()=>{m(!1)},"handleCloseModal"),j=i(()=>{k({type:"loading",title:Ht.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=i(()=>{k({type:"success",title:Ht.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),P=i(Be=>{k({type:"error",title:Ht.t("Network Switch Failed"),description:Be?.message||H.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Yd(e),Y=L?JN(e,L):null,ue=L?e0(e,L):null,Ee=Ky(e),Gt=Zd(e),be=i(Be=>!!c(Be)?.mobileWallet,"checkIsMobileWallet"),He=!!N&&[zn.WaitingForNetworkChange,zn.NetworkChangeFailed].includes(N),Xe=!!ue?.walletType&&be(ue.walletType),St=!!ue&&!!Y&&a(ue.walletType,Y.network,Y),ct=!!Y&&He&&(Xe||St),B=i(()=>{ct&&(j(),s(ue.walletType,[{namespace:Y.namespace,network:Y.network}]).then(()=>{ee()}).catch(Be=>{P(Be)}))},"handleSwitchNetwork"),V=i(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),H=Xd(e,L,c),X=PS({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((Be,Bt)=>Be+parseFloat(Bt.feeInUsd||""),0),ot=e.steps.find(Be=>Be.diagnosisUrl)?.diagnosisUrl,co=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),qn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),No=de?new US(de).multipliedBy(U.toUsdPrice||0).toString():"",Rr=new US(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),rn=Yt(qn,co),ns=H.detailedMessage.content||H.shortMessage,CT=e.status==="success"?Ht.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:M(de,6,6),token:X[G-1]?.to.token.displayName,conciseAddress:po(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):we.createElement(kS,null,we.createElement(Tp,{variant:"body",size:"medium",color:"neutral700",align:"center"},ns?"":Ht.t("Transaction was not sent."),Z?`${Ht.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Z.outputAmount,symbol:Z.symbol,blockchain:Z.blockchain}})}`:""),ns&&we.createElement(Qa,{align:"center",variant:"body",size:"medium",color:"neutral700"},we.createElement("b",null,"Reason:")," ",ns));return Cp(()=>{b.find(Bt=>Bt.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),I(e.requestId),q()):w&&v(null))},[e.status,e.requestId]),Cp(()=>{if(ct){if(O("switchNetwork"),N===zn.WaitingForNetworkChange){j();return}if(N===zn.NetworkChangeFailed){P();return}return}if(N===zn.WaitingForConnectingWallet){O("connectWallet");return}if(N===zn.NetworkChanged){O("switchNetwork"),ee();return}S&&["connectWallet","switchNetwork"].includes(S)&&q()},[N]),Cp(()=>{if(x.current=S,A.current=y,S==="switchNetwork"&&y?.type==="success"){let Be=setTimeout(()=>{x.current==="switchNetwork"&&A.current?.type==="success"&&q()},a0);return()=>clearTimeout(Be)}},[S,y]),we.createElement(se,{header:{title:Ht.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&we.createElement(ho,null,we.createElement(OS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},we.createElement(Tp,{size:"medium",variant:"label",color:"error"},Ht.t("Delete"))))},footer:Gt&&!w&&we.createElement(OS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{te({type:"swapRetried",payload:{routeId:e.requestId}});let Be=Ai(e,l,u);d(Be),setTimeout(()=>{f("../../")},0)}},Ht.t("Try again"))},we.createElement(dS,{compact:!0,ref:h},we.createElement(MS,{requestId:o}),we.createElement(FS,{date:Ee,isFinished:!!e.finishTime}),we.createElement("div",{className:SS()},we.createElement(o0,{fee:M(String(Qe),2,2),time:Xn(si(e.steps)),steps:G}),we.createElement(kr,{from:{price:{value:M(e.inputAmount,6,6),usdValue:qn,realUsdValue:Rr,realValue:e.inputAmount},token:{displayName:X[0]?.from.token.displayName||"",image:X[0]?.from.token.image},chain:{image:X[0]?.from.chain.image,displayName:X[0]?.from.chain.displayName||""}},to:{price:{value:M(de,6,6),usdValue:co,realUsdValue:No,realValue:de||""},token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image,displayName:X[G-1]?.to.chain.displayName||""}},percentageChange:M(rn,2,2),warningLevel:Zt(rn??0)})),we.createElement("div",{className:TS()},we.createElement(Tp,{variant:"title",size:"small"},Ht.t("Swaps steps"))),we.createElement(t0,{size:8}),we.createElement(gS,null,X.map((Be,Bt)=>{let Mp=Bt,Gn=e.steps[Bt]&&LS(e.steps[Bt]),kT=Gn==="error"||Gn==="in-progress"||Gn==="warning"||Gn==="completed"&&Bt===X.length-1;return we.createElement(n0,{className:"widget-swap-details-step-item-container",key:Mp,step:Be,type:"swap-progress",ref:h,state:Gn,hasSeparator:Bt!==0,tabIndex:Mp,isFocused:kT,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:co,realUsdValue:No,realValue:de||"",percentageChange:M(rn,2,2),token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image},description:CT}))}i(wp,"SwapDetails");import{i18n as Ka}from"@lingui/core";import{Divider as QS,NotFound as u0,Skeleton as Jr,Typography as ja}from"@rango-dev/ui";import Ae from"react";import{i18n as s0}from"@lingui/core";import{Divider as l0,Skeleton as c0,Typography as p0}from"@rango-dev/ui";import Ie from"react";import{css as Qt,styled as vp}from"@rango-dev/ui";var zS=vp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Zr=vp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Va=vp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),Z7=Qt({display:"flex",justifyContent:"space-between",alignItems:"center"}),J7=Qt({paddingTop:"$15",display:"flex"}),R7=Qt({padding:"$15 $0"}),e9=Qt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),t9=Qt({paddingBottom:"$10"}),o9=Qt({display:"flex",justifyContent:"start",alignItems:"center"}),n9=Qt({paddingTop:"$5",display:"flex",alignItems:"center"}),r9=Qt({display:"flex",alignItems:"center"}),i9=Qt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),HS=Qt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Ep(){return Ie.createElement(zS,null,Ie.createElement(Er,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(p0,{variant:"title",size:"small"},s0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1}),Ie.createElement("div",{className:HS()},Ie.createElement(l0,{direction:"horizontal",size:20}),Ie.createElement(c0,{height:22,variant:"rectangular"}))),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1}))))}i(Ep,"LoadingSwapDetails");function qS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:Ka.t("Swap Details"),suffix:Ae.createElement(ho,null)}},o&&Ae.createElement(mS,null,Ae.createElement("div",{className:on()},Ae.createElement(ja,{variant:"label",size:"large",color:"neutral700"},`${Ka.t("Request ID")}`),Ae.createElement("div",{className:Ha()},Ae.createElement(ja,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"})),Ae.createElement(QS,{direction:"horizontal",size:4}),Ae.createElement(Jr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(QS,{direction:"horizontal",size:4}),Ae.createElement(Jr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:on()},Ae.createElement(ja,{className:yS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"})),Ae.createElement(ja,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(Ep,null)),!o&&Ae.createElement(hS,null,Ae.createElement(u0,{title:Ka.t("Not found"),description:Ka.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(qS,"SwapDetailsPlaceholder");function GS(){let{manager:t,state:e}=f0(),o=!e.loadedFromPersistor,n=vt(t),{requestId:r}=h0(),a=Ve(),{fetchStatus:s}=C();if(!r)return bp.createElement(g0,{containerStyles:{margin:"20px"},type:"error",title:d0.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&&(te({type:"swapCancelled",payload:{routeId:r}}),m0(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(qS,{requestId:r,showSkeleton:c}):bp.createElement(wp,{swap:d,requestId:r,onCancel:p,onDelete:u})}i(GS,"SwapDetailsPage");import{i18n as VS}from"@lingui/core";import{Divider as y0,getCategoriesCount as S0,SelectableCategoryList as T0,styled as jS,Typography as C0,Wallet as k0}from"@rango-dev/ui";import qt,{useState as KS}from"react";var w0=jS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),v0=jS(ce,{textAlign:"center"});function XS(){let{fetchStatus:t}=C(),[e,o]=KS("ALL"),n=C().blockchains(),{config:r}=C(),[a,s]=KS(),c=ne.use.isActiveTab(),{list:l}=bt(),p=Nu(l,n),d=S0(p)!==1,f=Wu(l,e),h=i(g=>{pu(l,r.multiWallets)||s(g)},"handleWalletItemClick");return qt.createElement(se,{header:{title:VS.t("Connect Wallets")}},qt.createElement(v0,null,d&&qt.createElement(qt.Fragment,null,qt.createElement(T0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),qt.createElement(y0,{size:24})),qt.createElement(C0,{variant:"title",size:"xmedium",align:"center"},VS.t("Choose a wallet to connect.")),qt.createElement(w0,null,f.map((g,m)=>{let S=`wallet-${m}-${g.type}`;return qt.createElement(k0,{key:S,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),qt.createElement(ur,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}i(XS,"WalletsPage");function YS(){return lm(),Zs(),E0([{path:$.home,element:ze.createElement(uy,null)},{path:$.routes,element:ze.createElement(hy,null)},{path:$.fromSwap,children:[{index:!0,element:ze.createElement(_a,{type:"source"})},{path:$.blockchains,element:ze.createElement(Wa,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:ze.createElement(_a,{type:"destination"})},{path:$.blockchains,element:ze.createElement(Wa,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:ze.createElement(Gy,null)},{path:$.languages,element:ze.createElement(my,null)},{path:$.exchanges,element:ze.createElement(Xc,{sourceType:"Exchanges"})},{path:$.bridges,element:ze.createElement(Xc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:ze.createElement(mh,null)},{path:$.addCustomTokens,children:[{index:!0,element:ze.createElement(af,null)},{path:$.blockchains,element:ze.createElement(Wa,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:ze.createElement(Bh,null)},{path:$.swapDetails,element:ze.createElement(GS,null)}]},{path:$.wallets,element:ze.createElement(XS,null)},{path:$.confirmSwap,element:ze.createElement(Zg,null)}])}i(YS,"AppRoutes");import{useQueueManager as H0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as Q0}from"rango-sdk";import{useContext as q0,useEffect as Np,useState as lT}from"react";import{Provider as W0}from"@rango-dev/wallets-react";import{WalletTypes as Xa}from"@rango-dev/wallets-shared";import Ya,{createContext as P0,useEffect as tT,useMemo as L0,useRef as oT}from"react";import{useEffect as x0}from"react";import{Provider as b0}from"@hub3js/core";function ZS(t){return t.map(e=>typeof e=="string"?e:e instanceof b0?e.id:e.config.type).join("-")}i(ZS,"hashProviders");function xp(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=C(),a=n();return x0(()=>{o(),r()},[ZS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(xp,"useWalletProviders");import{legacyFormatAddressWithNetwork as I0,legacyReadAccountAddress as JS}from"@rango-dev/wallets-core/legacy";import{Events as Hn}from"@rango-dev/wallets-react";import{isEvmBlockchain as A0}from"rango-sdk";function RS(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=C(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(A0).map(m=>m.name),u=i((m,S)=>{let[T,,y,k,w]=m,v={walletType:T,network:k.network??void 0,accounts:y};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let x=gs(T,y,p,S.supportedChainNames,w.isContractWallet);x.length&&e(x,w.namespace,k.derivationPath,{walletName:T})},"onAccountsEvent"),d=i((m,S,T,y,k)=>{if(S===Hn.ACCOUNTS){let w=Jn(k.supportedBlockchains);T&&u([m,S,T,y,k],{supportedChainNames:w})}S===Hn.PROVIDER_DISCONNECTED&&(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),S===Hn.NAMESPACE_DISCONNECTED&&n(m,T)},"handleUpdatesForHub"),f=i((m,S,T,y,k)=>{if(S===Hn.ACCOUNTS){let w=Jn(k.supportedBlockchains),v=[],x=[];if(T?.forEach(E=>{let{network:I}=JS(E);p.includes(I)?v.push(E):x.push(E)}),r.filter(E=>E.walletType===m).map(E=>I0(E.address,E.chain)).length>0){if(v.length>0){let E=gs(m,v,p,w,k.isContractWallet);a(m,{chains:E.map(I=>I.chain)})}x.length>0&&a(m,{chains:x.map(E=>{let{network:I}=JS(E);return I})})}T?u([m,S,T,y,k],{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,k)=>{if(S===Hn.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===Hn.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,k)=>{k.isHub?d(m,S,T,y,k):f(m,S,T,y,k),h(m,S,T,y,k)},"handler")}}i(RS,"useUpdates");import{LegacyEvents as N0}from"@rango-dev/wallets-core/legacy";function eT(t,e){let[o,n,r,a,s]=e;n!==N0.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(eT,"propagateEvents");var Za=P0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function B0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=C(),a=C().blockchains(),s=C().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=oT(),u=oT(),{handler:d}=RS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});tT(()=>{n().catch(console.log)},[]),tT(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let f=ne.use.isActiveTab(),h=L0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Ya.createElement(Za.Provider,{value:h},Ya.createElement(W0,{allBlockChains:a,providers:l,onUpdateState:(g,m,S,T,y)=>{let k=[g,m,S,T,y];d(...k),t.onUpdateState&&eT(t.onUpdateState,k)},autoConnect:!!f,configs:{wallets:s.wallets,walletOptions:{[Xa.TON_CONNECT]:{provider:{manifestUrl:s.tonConnect?.manifestUrl}},[Xa.OKX]:{provider:{tonConnectManifestUrl:s.tonConnect?.manifestUrl}},[Xa.TREZOR]:{provider:{manifest:s.trezorManifest}},[Xa.WALLET_CONNECT_2]:{provider:{WC_PROJECT_ID:s.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:s.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink,meta:a}}}}},t.children))}i(B0,"Main");function Ja(t){let{config:e,...o}=t;return Ya.createElement(ju,{config:e},Ya.createElement(B0,{...o,config:e}))}i(Ja,"WidgetWallets");import{globalCss as _0}from"@rango-dev/ui";var nT=i(()=>_0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");import{useWallets as M0}from"@rango-dev/wallets-react";import{useEffect as D0,useRef as $0}from"react";function rT(){let{connect:t,state:e}=M0(),o=$0({}),{fetchStatus:n}=C(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);D0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(rT,"useForceAutoConnect");import{isApprovalTX as F0,RouteEventType as iT,StepEventType as aT,StepExecutionEventStatus as O0,WidgetEvents as Ra}from"@rango-dev/queue-manager-rango-preset";import{useEffect as sT}from"react";function Ip(){let t=We.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=C();sT(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===aT.TX_EXECUTION&&s.status===O0.TX_SENT&&!F0(c)||s.type===aT.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(Ra.StepEvent,r),()=>ge.off(Ra.StepEvent,r)},[ge,e]),sT(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===iT.FAILED||s.type===iT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ge.on(Ra.RouteEvent,r),()=>ge.off(Ra.RouteEvent,r)},[ge])}i(Ip,"useSubscribeToWidgetEvents");import{useManager as U0}from"@rango-dev/queue-manager-react";import{useEffect as z0}from"react";function Ap(){let{isSynced:t,syncNotifications:e}=We(),{manager:o,state:n}=U0();z0(()=>{if(We.persist.hasHydrated()&&n.loadedFromPersistor&&!t){let a=vt(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&&te({type:"swapResumed",payload:{routeId:s.requestId,stepCount:s.steps.length,stepNumber:l+1}})})}},[We.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Ap,"useSyncNotifications");function Wp(){rT(),nT(),Ip(),Ap();let t=C().blockchains(),{canSwitchNetworkTo:e}=cT(),[o,n]=lT(null),[r,a]=lT(),s=q0(Za),c=t.filter(Q0);Np(()=>()=>am(),[]),Np(()=>()=>sm(),[]),H0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),Np(()=>($o.init(),We.persist.hasHydrated()||We.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),$o.destroy),[])}i(Wp,"useBootstrap");import{styled as G0}from"@rango-dev/ui";var pT=G0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left",height:"100%","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function nn(){Wp();let{config:t}=C(),{activeTheme:e}=go(t?.theme||{}),{activeLanguage:o}=Eo();return Pp.createElement(V0,{language:o},Pp.createElement(pT,{id:"swap-container",className:e()},Pp.createElement(YS,null)))}i(nn,"Main");import{setSolanaSignerConfig as dW}from"@rango-dev/signer-solana";import Bp,{useEffect as _p,useMemo as mW}from"react";function uT(){let{setWatermark:t,setShowProfileBanner:e}=ne();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Kt("BASE_URL")}/meta/dapp/config?apiKey=${Kt("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let r=await n.json();t(r.config.watermark),e(r.config.banners.profile)},"fetchApiConfig")}}i(uT,"useFetchApiConfig");import{useState as K0}from"react";var j0=i(()=>{let[t,e]=K0(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=cu(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),dT=j0;import{checkWaitingForNetworkChange as X0,makeQueueDefinition as Y0}from"@rango-dev/queue-manager-rango-preset";import{Provider as Z0}from"@rango-dev/queue-manager-react";import{useWallets as J0}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as R0}from"@rango-dev/wallets-shared";import{isEvmBlockchain as eW}from"rango-types";import tW,{useMemo as oW}from"react";function nW(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s,hubProvider:c}=J0(),l=oW(()=>Y0({API_KEY:t.apiKey||Kt("API_KEY"),BASE_URL:Kt("BASE_URL"),emitter:{emit:ge.emit}}),[t.apiKey]),{blockchains:p,connectedWallets:u}=C(),d=p(),f={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,x)=>a(v,x.network,x)?await r(v,[x]):void 0,"switchNetwork"),g=i(v=>!!s(v).mobileWallet,"isMobileWallet"),m=d.filter(v=>v.enabled).reduce((v,x)=>(v[x.name]=x,v),{}),S=d.filter(eW),T=i(v=>{let{supportedChains:x}=s(v);return Jn(x)},"getSupportedChainNames"),y=e(),k={meta:{blockchains:m,evmBasedChains:S,evmNetworkChainInfo:R0(S),getSupportedChainNames:T},getSigners:o,wallets:f,providers:y,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:g,hubProvider:c},w=ne.use.isActiveTab();return tW.createElement(Z0,{queuesDefs:[l],context:k,onPersistedDataLoaded:v=>{X0(v)},isPaused:!w},t.children)}i(nW,"QueueManager");var mT=nW;import{useManager as lW}from"@rango-dev/queue-manager-react";import cW,{createContext as pW,useContext as uW}from"react";function fT(){let{findToken:t}=C(),e=C().blockchains(),o=C().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(fT,"useUpdateQuoteInputs");import{cancelSwap as rW,getCurrentNamespaceOfOrNull as iW,getCurrentStep as aW,getRelatedWalletOrNull as sW}from"@rango-dev/queue-manager-rango-preset";var es=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return vt(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=Ai(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&rW(o)}getCurrentStepInfo(e){let o=aW(e);return{step:o,wallet:o?sW(e,o):null,network:o?iW(e,o)?.network:null}}};var gT=pW(void 0);function Lp(t){let{manager:e}=lW(),o=ne.use.isActiveTab(),n=z().use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=C(),l=new es(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=C(),u=Eu(a()),d=C().blockchains(),f=C().tokens(),h=C().swappers(),g=C().fetchStatus,m=Eo().resetLanguage,S=We().getNotifications(),T=We().clearNotifications,y=fT(),{fromBlockchain:k,toBlockchain:w,fromToken:v,toToken:x,inputAmount:A}=z()(),E={isActiveTab:o,setCurrentTabAsActive:$o.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async I=>c(I)},meta:{blockchains:d,tokens:f,swappers:h,loadingStatus:g,findToken:r},resetLanguage:m,notifications:{list:S,clearAll:T},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:w?.name??null,toToken:x?{symbol:x.symbol,blockchain:x.blockchain,address:x.address}:null,requestAmount:A},updateQuoteInputs:y}};return cW.createElement(gT.Provider,{value:E},t.children)}i(Lp,"WidgetInfo");function hT(){let t=uW(gT);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(hT,"useWidget");function Qn(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{fetchApiConfig:r}=uT(),{handleLoadCustomFont:a}=dT();return _p(()=>{r().catch(console.log)},[]),_p(()=>{n&&a(n)},[n]),mW(()=>{Pu({API_KEY:o?.apiKey||Zp(),BASE_URL:o?.apiUrl||eu})},[o.apiKey,o.apiUrl]),_p(()=>{t.config?.signers?.customSolanaRPC&&dW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Bp.createElement(Ja,{config:o,onUpdateState:e},Bp.createElement(mT,{apiKey:o.apiKey},Bp.createElement(Lp,null,t.children)))}i(Qn,"WidgetProvider");function yT(t){let e=t.config?.externalWallets;return ts.createElement(xi,null,e?ts.createElement(nn,null):ts.createElement(Qn,{config:t.config??jn},ts.createElement(nn,null)))}i(yT,"Refuel");import os from"react";function ST(t){let e=t.config?.externalWallets;return os.createElement(xi,null,e?os.createElement(nn,null):os.createElement(Qn,{config:t.config??jn},os.createElement(nn,null)))}i(ST,"Widget");function TT(){let{on:t,off:e}=ge;return{on:t,off:e}}i(TT,"useWidgetEvents");var ate={DerivationPath:lr,Namespaces:ir,Detached:sr,isOnDerivationPath:pr,isOnNamespace:cr,isOnDetached:Wo};export{Nee as EventSeverity,un as MainEvents,Oee as Networks,Hee as PendingSwapNetworkStatus,tr as QuoteEventTypes,yT as Refuel,Wee as RouteEventType,ls as SUPPORTED_FONTS,ate as StatefulConnect,Pee as StepEventType,Lee as StepExecutionBlockedEventStatus,Bee as StepExecutionEventStatus,vd as SwapModeContext,kt as UI_ID,Re as UiEventTypes,gi as WalletEventTypes,$ee as WalletEvents,Uee as WalletTypes,ST as Widget,un as WidgetEvents,Qn as WidgetProvider,Ja as WidgetWallets,ul as customizedThemeTokens,as as pickProviderVersionWithFallbackToLegacy,Mee as readAccountAddress,an as useStatefulConnect,bt as useWalletList,cT as useWallets,hT as useWidget,TT as useWidgetEvents,xC as widgetEventEmitter};
1
+ var ET=Object.defineProperty;var i=(t,e)=>ET(t,"name",{value:e,configurable:!0});import{EventSeverity as Qee,RouteEventType as qee,StepEventType as Gee,StepExecutionBlockedEventStatus as Vee,StepExecutionEventStatus as Kee}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as Xee}from"@rango-dev/wallets-core/legacy";import{useWallets as uT,Events as Zee}from"@rango-dev/wallets-react";import{Networks as Ree,WalletTypes as ete}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as ote}from"rango-types";import{Divider as jk}from"@rango-dev/ui";import fo,{useEffect as Xk,useRef as Yk,useState as bd}from"react";import{WalletState as AT}from"@rango-dev/ui";import{useWallets as NT}from"@rango-dev/wallets-react";import{useReducer as WT}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 $p(t){return t.type===0?t.diagnosisMessage??te().noResultError.title:t.type===1?t.diagnosisMessage??te().genericServerError:""}i($p,"getQuoteErrorMessage");var bT=["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 xT(t){return typeof t=="string"?t:t instanceof Error?`${t.name} ${t.message}`:""}i(xT,"toMessage");function IT(t){let e=xT(t).toLowerCase();return!!e&&bT.some(o=>e.includes(o))}i(IT,"isModuleLoadError");function Tt(t){return IT(t)?new Error(te().moduleLoadError,{cause:t}):null}i(Tt,"tryRefineError");function Fp(t,e){return Tt(t)?.message??e}i(Fp,"tryRefineErrorMessage");function Op(t){return!!t.derivationPath}i(Op,"isStateOnDerivationPathStep");function Up(t){return!!t.namespace}i(Up,"isStateOnNamespace");var oi={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 oi;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:oi;default:throw new Error("Action hasn't been defined.")}}i(zp,"reducer");function ln(){let{state:t,disconnect:e,connect:o}=NT(),[n,r]=WT(zp,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=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=i(async(d,f)=>{let h=d.state===AT.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(k=>!S?.data?.map(v=>v.value).includes(k));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(k=>({namespace:k})),{...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(k=>k.name==="namespaces")?.value:d.needsNamespace,m=h?d.properties?.find(k=>k.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(!Up(n))throw new Error("Something went wrong on handling namespace. Please retry.");let y=f.map(k=>({namespace:k}));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(!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(v=>v.name==="namespaces")?.value:d.needsNamespace,y=!!T?.data&&T.data.length>1,k=!!h?.forceConnectToNamespaces;return y&&!k?(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),Po(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{WalletState as Si}from"@rango-dev/ui";import{useWallets as HC}from"@rango-dev/wallets-react";import{detectMobileScreens as QC,WalletTypes as Dt}from"@rango-dev/wallets-shared";import{useCallback as qC,useEffect as ed}from"react";import $C,{createContext as FC,useContext as OC,useEffect as UC,useRef as zC}from"react";import{create as MC}from"zustand";import{persist as DC}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 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 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(Qp().version("1.0.0",n).build()):o.push(Qp().version("0.0.0",n).build())}),o}return t}i(Gp,"matchAndGenerateProviders");function ss(t){try{return qp(t,"1.0.0")[1]}catch{return qp(t,"0.0.0")[1]}}i(ss,"pickProviderVersionWithFallbackToLegacy");function Vp(t){return t.map(o=>ss(o)).map(o=>o instanceof as?o.id:o.config.type)}i(Vp,"configWalletsToWalletName");function Kp(t,e){return e.find(o=>o.name===t)?.displayName}i(Kp,"getBlockchainDisplayNameFor");function Ct(t,e){return e.find(o=>o.name===t)?.shortName}i(Ct,"getBlockchainShortNameFor");function jp(t,e){return e.find(o=>o.name===t)?.logo}i(jp,"getBlockchainImage");function jn(t,e){return e.find(o=>o.id===t)?.title}i(jn,"getSwapperDisplayName");function Lo(t,e){return e.find(o=>o.name===t)??null}i(Lo,"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 LT(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(LT,"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"}},BT={clientUrl:void 0},_T={liquiditySources:void 0};function Xp(){return PT().map(o=>o())}i(Xp,"generateProviders");var Yp=i((t,e,o)=>{let n=Xp();return{config:{...Yn,...t},iframe:BT,campaignMode:_T,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=Xp();e({allProviders:r})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=LT(a);return Gp({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Zp}from"rango-types";var Jp=[Zp.EVM,Zp.SOLANA],ii="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as YT}from"rango-sdk";function Rp(){return process.env.REACT_APP_RANGO_API_KEY}i(Rp,"getApiKeyFromEnv");function eu(){let t=Rp();if(t)return t;throw new Error("Ensure you have set REACT_APP_RANGO_API_KEY in your env variables.")}i(eu,"getApiKeyFromEnvOrThrow");function tu(){return Rp()||"NOT_SET"}i(tu,"getApiKeyFromEnvOrNotSet");import{BlockchainCategories as zT,WalletState as ut}from"@rango-dev/ui";import{legacyReadAccountAddress as HT}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as QT,getBlockChainNameFromId as qT,HYPERLIQUID_SIGN_NETWORK as GT,isEvmAddress as VT,Networks as fs}from"@rango-dev/wallets-shared";import un from"bignumber.js";import MT from"bignumber.js";var pe=new MT(0);var _o="~",ou=[];import{BlockchainCategories as ps,WalletState as UT}from"@rango-dev/ui";import{TransactionType as us}from"rango-sdk";import{UI_ID as DT}from"@rango-dev/ui";var nu="https://api.rango.exchange",ru="https://explorer.rango.exchange",wt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...DT};var iu="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 lu(t,e){return t.toLowerCase()===e.toLowerCase()}i(lu,"exactText");function cu(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(cu,"startWithText");var W=i(()=>document.getElementById(wt.SWAP_BOX_ID),"getContainer"),Mo=i(()=>document.getElementById(wt.EXPANDED_BOX_ID),"getExpanded");function pu(t,e,o){let n=!!e&&lu(e,t),r=!!o&&lu(o,t);return n!==r?n?-1:1:0}i(pu,"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&&cu(e,t),r=!!o&&cu(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ms,"compareStartWithText");function uu(t,e,o){if(!o)return 0;let n=pu(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=pu(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(uu,"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"),du=i(t=>cs.find(o=>o.value===t)?.url,"getFontUrlByName");function mu(t,e){let o=!!t.find(n=>n.state===UT.CONNECTED);return e===!1&&o}i(mu,"isSingleWalletActive");function fu(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(fu,"memoizedResult");function gu(t,e){let o=new Set;return e.forEach(n=>{o.add(n.blockchain)}),t.filter(n=>o.has(n.name))}i(gu,"filterBlockchainsWithAtLeastOneToken");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 KT(t,e){let o=t?.get("EVM");return o?.network?qT(o.network,e)??o.network:null}i(KT,"getConnectedEvmChainName");function Rn(t,e){return XT(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=>!ou.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:c,namespaces:l}=t(r);return s&&(!c||!!n&&KT(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}=HT(l),d=c.length>0,f=c.includes(u),h=u===fs.Unknown;if(d&&!f&&!h)return;let m=u===fs.Unknown&&VT(p);if(h&&!m)return;if(o.includes(u)||m)if(r)s(u,p.toLowerCase(),r);else{let T=c.filter(k=>o.includes(k));T.forEach(k=>{s(k,p.toLowerCase())}),T.includes(GT)&&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 jT(e.toString())},"calculateWalletUsdValue");function jT(t){let e=t.toString().split(".");return e[0]&&(e[0]=Su(e[0])),e.join(".")}i(jT,"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 Pu=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 Lu(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(Lu,"filterBlockchainsByWalletTypes");function Bu(t,e){return e===zT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(si(n,e))return!0;return!1})}i(Bu,"filterWalletsByCategory");function XT(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(XT,"checkIsWalletPartiallyConnected");var Ss={API_KEY:tu()};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 YT(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=>Jp.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 x=o.getBalanceFor(g),A=o.getBalanceFor(m),E=Au(x,A);if(E!==0)return E}let y=l.get(g.blockchain),k=l.get(m.blockchain),v=ls(g,y),w=ls(m,k);if(v!==w)return v?-1:1;if(g.isPopular!==m.isPopular)return g.isPopular?-1:1;if(o.searchFor){let x=uu(g,m,o.searchFor);if(x)return x}return g.isSecondaryCoin!==m.isSecondaryCoin?g.isSecondaryCoin?1:-1:y&&k?y.sort-k.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 ZT,Catalonia as JT,Chinese as Hu,Denmark as RT,English as eC,Finland as tC,French as oC,German as nC,Greece as rC,Hungary as iC,India as aC,Indonesian as sC,Italian as lC,Japanese as cC,Korea as pC,Lithuania as uC,Malay as dC,Netherlands as mC,Pakistan as fC,Philippines as gC,Poland as hC,Portuguese as yC,Russian as SC,SaudiArabia as TC,Serbia as CC,Slovakia as kC,SouthAfrica as wC,Spanish as vC,Swahili as EC,Swedish as bC,Thai as xC,Turkish as IC,Ukrainian as AC,Vietnamese as NC}from"@rango-dev/ui";var Qu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:wC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:TC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:ZT},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:JT},{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:RT},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:mC},{title:"English",label:"English",local:"en",SVGFlag:eC},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:gC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:tC},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:oC},{title:"German",label:"Deutsch",local:"de",SVGFlag:nC},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:rC},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:aC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:iC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:sC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:lC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:cC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:pC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:uC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:dC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:hC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:yC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:SC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:CC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:kC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:vC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:EC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:bC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:xC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:IC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:AC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:fC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:NC}],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 WC from"mitt";var ge=WC(),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 LC(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(LC,"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=LC(a,l):s[l]&&(r[l]=s[l])}),{_balances:r,_aggregatedBalances:a}}i(xs,"computeNextStateAfterWalletBalanceRemoval");function BC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(BC,"matchWalletDetailsWithConnectedWallet");var _C=fu(),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:BC(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:()=>_C(()=>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 MC()(DC((...e)=>({...ju(...e),...zu(...e),...qu(...e),...Yp(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=FC(null);function C(){let t=OC(Yu);if(UC(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(C,"useAppStore");function Zu(t){let e=zC();return e.current||(e.current=Xu(t.config)),$C.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]);function xt(t){let{chain:e}=t||{},{getAvailableProviders:o}=C(),{state:n,getWalletInfo:r}=HC(),{handleDisconnect:a}=ln(),s=Vp(o()),c=xu(n,r,s,e);c=QC()?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&&![Dt.DEFAULT,Dt.WALLET_CONNECT_2,Dt.LEDGER].includes(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 XC}from"@rango-dev/ui";import YC from"react";import{create as jC}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 KC=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=KC;var re=mo(jC()((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 YC.createElement(XC,{hasWatermark:e==="FULL",...t},t.children)}i(ie,"WatermarkedModal");import{i18n as Tn}from"@lingui/core";import{Alert as uk,Button as dk,Divider as Cn,Image as mk,MessageBox as fk,RadioRoot as gk,WalletImageContainer as hk}from"@rango-dev/ui";import{getSupportedChainsFromNamespace as yk}from"@rango-dev/wallets-shared";import le,{useEffect as Sk,useMemo as Tk,useState as Ck}from"react";import{i18n as ek}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 ZC,Image as JC,styled as Yt,Typography as RC}from"@rango-dev/ui";var Ci=Yt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${ZC} &`]:{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(RC,{maxWidth:"100px",whiteSpace:"nowrap"}),wi=Yt(JC,{variants:{disabled:{true:{opacity:"0.5"}}}});function vi(t){let{namespace:e}=t,o=C().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"},ek.t("(Currently not supported)")))))}i(vi,"NamespaceUnsupportedItem");import{Checkbox as lk,Radio as ck}from"@rango-dev/ui";import Ps from"react";import{i18n as Ws}from"@lingui/core";import{ChevronDownIcon as ok,ChevronUpIcon as nk,Divider as rk,Typography as ir}from"@rango-dev/ui";import{getSupportedChainsFromNamespace as ik}from"@rango-dev/wallets-shared";import We,{useEffect as ak,useState as sk}from"react";import{Image as dd,Tooltip as md,Typography as tk}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(tk,{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]=sk(!1),p=C().blockchains();ak(()=>l(!1),[o]);let u=ik(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(nk,{size:12,color:"gray"}):We.createElement(ok,{size:12,color:"gray"}))),n),!!o&&c&&We.createElement(We.Fragment,null,We.createElement(rk,{size:4}),We.createElement(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 Ps.createElement(Oo,{namespace:n,onClick:e,suffix:o==="radio"?Ps.createElement(ck,{value:n.value}):Ps.createElement(lk,{checked:t.value})})}i(gd,"NamespaceListItem");import{Button as pk,styled as hd}from"@rango-dev/ui";var bi=hd("ul",{padding:0,paddingBottom:"$20",margin:0}),Sn=hd(pk,{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=C().blockchains(),[l,p]=Ck([]),u=Tk(()=>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(gk,{value:l?.[0]},m):le.createElement(le.Fragment,null,m),"wrapRadioRoot");return Sk(()=>{if(!r&&u)if(t.value.defaultSelectedChains?.length){let m=u.filter(S=>yk(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(fk,{type:"info",title:Tn.t("Connect {wallet}",{wallet:e.title}),description:Tn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(hk,null,le.createElement(mk,{src:s,size:45}))}),r?le.createElement(le.Fragment,null,le.createElement(Cn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(uk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:Tn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(dk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick: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 Ik,Button as Ak,Divider as kn,Image as Nk,MessageBox as Wk,WalletImageContainer as Pk}from"@rango-dev/ui";import{useWallets as Lk}from"@rango-dev/wallets-react";import me from"react";import{styled as kk}from"@rango-dev/ui";var yd=kk("div",{display:"flex",justifyContent:"end"});import{i18n as Ls}from"@lingui/core";import{Button as wk,Spinner as vk}from"@rango-dev/ui";import Bs,{useLayoutEffect as Ek,useRef as bk,useState as xk}from"react";function Sd(t){let{namespace:e,initialConnect:o,disabled:n,state:r,handleConnect:a,handleDisconnect:s}=t,[c,l]=xk(null),p=bk(!1);Ek(()=>{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?Ls.t("Disconnect"):c?Ls.t("Try again"):Ls.t("Connect"),"getButtonText");return Bs.createElement(Oo,{namespace:e,connected:r.connected,error:c?.message,address:f(),suffix:r.connecting?Bs.createElement(vk,{color:"info"}):Bs.createElement(wk,{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}=Lk(),d=c.type,f=u(d),h=c.properties?.find(v=>v.name==="namespaces"),g=c.properties?.find(v=>v.name==="derivationPath"),m=h?.value.selection==="single",S=i(async(v,w)=>{m&&await p(d),g&&w?.shouldAskForDerivationPath?s(v):await l(d,[{namespace:v,network:"",derivationPath:w?.derivationPath??void 0}])},"handleConnectNamespace"),T=i(async v=>{await p(d,[v])},"handleDisconnectNamespace"),y=i(()=>m?me.createElement(me.Fragment,null,me.createElement(kn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(Ik,{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(Ak,{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"),k=i(v=>{if(v.unsupported)return me.createElement(vi,{namespace:v});let w=o?.find(E=>E.namespace===v.value),x=f.namespaces?.get(v.value);if(!x)throw new Error(`State for ${v.value} was not found!`);let A=m&&f.connecting;return me.createElement(Sd,{namespace:v,initialConnect:!!w,disabled:A,state:x,handleConnect:async E=>S(v.value,{derivationPath:w?.derivationPath,shouldAskForDerivationPath:E?.shouldAskForDerivationPath}),handleDisconnect:async()=>T(v.value)})},"renderNamespaceItem");return me.createElement(me.Fragment,null,me.createElement(Wk,{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(Nk,{src:c.image,size:45}))}),y(),me.createElement(bi,{id:"widget-detached-namespace-list"},c.needsNamespace?.data.map((v,w,x)=>me.createElement(me.Fragment,{key:v.id},k(v),w!==x.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 It,{useEffect as zk,useState as Cd}from"react";import{namespaces as Bk}from"@rango-dev/wallets-shared";var xi={id:"custom",label:"Custom",generateDerivationPath:t=>t};function _s(t){let e=t?Bk[t]?.derivationPaths:null;return e?[...e,xi]:[]}i(_s,"getDerivationPaths");import{Button as _k,styled as Ms,Typography as Mk}from"@rango-dev/ui";var Td=Ms("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Ds=Ms(Mk,{paddingLeft:"$10"}),$s={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},SM=Ms(_k,{minHeight:"$40"});var kd="0";function cr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=Cd(null),[c,l]=Cd(kd),p=a===xi.id,u=_s(o),d=i(({value:h})=>{let g=u?.find(m=>m.id===h);g&&(a===xi.id&&Number.isNaN(Number(c))&&l(kd),s(g.id))},"handleDerivationPathItemClick"),f=i(()=>{let h=u.find(g=>g.id===a);if(h)e(h.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return zk(()=>{s(_s(o)[0]?.id||null)},[o]),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(Td,{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(Ok,{id:"widget-derivation-path-template-select",value:a||"",options:u.map(h=>({value:h.id,label:h.label})),variant:"filled",handleItemClick:d,styles:{trigger:$s}}),It.createElement(Dk,{size:20}),It.createElement(Ds,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},p?wn.t("Enter Path"):wn.t("Enter Index")),It.createElement(Uk,{id:"widget-derivation-path-template-input",type:p?"text":"number",variant:"contained",value:c,onChange:h=>l(h.target.value),style:$s})),It.createElement(Sn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:f,disabled:!u||!a||!c},wn.t("Confirm")))}i(cr,"DerivationPath");import{i18n as vn}from"@lingui/core";import{Image as qk,MessageBox as Os,WalletImageContainer as Gk,WalletState as Vk}from"@rango-dev/ui";import{useWallets as Kk}from"@rango-dev/wallets-react";import Uo from"react";import{keyframes as Hk,styled as Fs}from"@rango-dev/ui";var NM=Fs("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),wd=Fs("div",{position:"relative"}),Qk=Hk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),vd=Fs("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Qk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function Us(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a,getWalletInfo:s}=Kk();return Rn(s(n),a(n))===Vk.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(wd,null,Uo.createElement(Gk,null,Uo.createElement(qk,{src:r,size:45})),Uo.createElement(vd,null))})}i(Us,"ConnectStatus");function Ed(t,e){return t().status==="init"&&!!e}i(Ed,"isOnStatus");function pr(t){return t().status==="namespace"}i(pr,"isOnNamespace");function ur(t){return t().status==="derivationPath"}i(ur,"isOnDerivationPath");function Po(t){return t().status==="detached"}i(Po,"isOnDetached");var Zk=3e3,Jk=300;function dr(t){let e=Yk(),[o,n]=bd(!1),[r,a]=bd(),s=i(w=>{a(w.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=xt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:f,handleDisconnect:h}=ln(),g=i(w=>{u(t.wallet,w).then(k).catch(s)},"handleConfirmNamespaces"),m=i(()=>{T()},"handleDetachedConfirm"),S=i(w=>{if(!w)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(t.wallet,w).then(k).catch(s)},"handleDerivationPathConfirm"),T=i(()=>{n(!1)},"handleClosingModal"),y=i(()=>{a(void 0),f(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((w,x)=>{let A=w.status==="connected",E=["disconnected","disconnected-unhandled"].includes(w.status);A?(t.onConnect?.(),x||(e.current=setTimeout(T,Zk))):E&&T()},"afterConnected"),v=i(w=>{t.wallet?.needsDerivationPath&&u(t.wallet,[w])},"handleNavigateToDerivationPath");return Xk(()=>{if(t.wallet){y();let w=!1,x=!0;i(()=>{setTimeout(()=>{x=!1,w||n(!0)},Jk)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","Detached","derivation-path"].includes(E.status)||(w=!0),k(E,x)}).catch(s)}},[t.wallet]),fo.createElement(ie,{id:t.id,open:o,onClose:T,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},Ed(d,t.wallet)&&fo.createElement(fo.Fragment,null,fo.createElement(Us,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),fo.createElement(jk,{direction:"vertical",size:32})),pr(d)&&fo.createElement(ar,{onConfirm:g,value:d().namespace}),ur(d)&&fo.createElement(cr,{onConfirm:S,value:d().derivationPath}),Po(d)&&fo.createElement(lr,{onConfirm:m,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:v}))}i(dr,"StatefulConnectModal");import os from"react";import Rk,{Fragment as ew}from"react";import{MemoryRouter as tw,useInRouterContext as ow}from"react-router";function Ii({children:t}){let o=ow()?ew:tw;return Rk.createElement(o,null,t)}i(Ii,"AppRouter");import{I18nManager as Z0}from"@rango-dev/ui";import Lp from"react";import He from"react";import{useRoutes as N0}from"react-router-dom";var $={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as bn,useRef as _i}from"react";import at from"bignumber.js";import{create as om}from"zustand";import{subscribeWithSelector as nm}from"zustand/middleware";import{createContext as nw,useContext as rw}from"react";var xd=nw({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=rw(xd);return{swapMode:t,isMultiMode:e}}i(rt,"useSwapMode");import{i18n as vt}from"@lingui/core";import{getRelatedWalletOrNull as sw,RouteEventType as DD}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 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]}i(zs,"getFeeLabel");var Hs=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],Id=100,Ad=30,Nd=15,Wd=60;var Pd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Ld=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as aw}from"@rango-dev/queue-manager-rango-preset";import wD from"bignumber.js";function _d(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(_d,"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=aw(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=Lo(a?a.toBlockchain:n.fromBlockchain,e),l=Lo(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&&Od(a,p)){let d=Pi(o?.swaps,n),f=Jt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:f}}}if(e&&Hd(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=Li(o.swaps),l=r>dn;if(zd(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:Ud(o,r),minRequiredSlippage:c};return null}i(En,"generateQuoteWarnings");function Md(t){return![4].includes(t.type)}i(Md,"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}i(Zt,"getPriceImpact");var Dd=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"),$d=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"),Fd=i(t=>{let e=i((o,n)=>{let r=Hs.indexOf(o.value),a=Hs.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Od(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(Od,"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 qd(t){let e=(t||[]).filter(c=>{let l=c.fromAmountMinValue?new Ge(c.fromAmountMinValue):null,p=c.fromAmountMaxValue?new Ge(c.fromAmountMaxValue):null;return c.fromAmountRestrictionType==="EXCLUSIVE"?l?.gte(c.fromAmount)||p?.lte(c.fromAmount):l?.gt(c.fromAmount)||p?.lt(c.fromAmount)})[0];if(!e)return{swap:void 0,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new Ge(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ge(e.fromAmountMaxValue):null,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(qd,"getLimitErrorMessage");function Gd(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(Gd,"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 Gs(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(Gs,"getUsdFeeOfStep");function Pi(t,e){return t.reduce((o,n)=>o.plus(Gs(n,e)),pe)}i(Pi,"getTotalFeeInUsd");function Vs(t){let e=pe,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}i(Vs,"getUsdFee");function Ks(t){return t.reduce((e,o)=>e.plus(Vs(o)),pe)}i(Ks,"getTotalFeesInUsd");function Vd(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(Vd,"getFeesGroup");function Kd(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(Kd,"checkSlippageErrors");function Ud(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(Ud,"checkSlippageWarnings");function Li(t){return t.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}i(Li,"getMinRequiredSlippage");function zd(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(zd,"hasProperSlippage");function jd(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,k)=>(y[k.chain]=k.address,y),{}),S=[];return r?.forEach(y=>{S.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent: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(jd,"createQuoteRequestBody");function Xd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}i(Xd,"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 Qs(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(Id).toNumber()}i(Qs,"getPercentageChange");function Hd(t,e){let o=Ho(t),n=it(t),r=it(e);if(!o||!n||!r)return!1;let a=Qs(n.toString(),r.toString());return Ld.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}i(Hd,"isOutputAmountChangedExcessively");function Yd(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=>_d(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(Yd,"generateBalanceWarnings");function fr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==mr.NetworkChanged}i(fr,"isNetworkStatusInWarningState");function Zd(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?sw(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(Zd,"getSwapMessages");function Jd(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(Jd,"getLastConvertedTokenInFailedSwap");function Rd(t){return t.status==="failed"}i(Rd,"shouldRetrySwap");function em(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(em,"isConfirmSwapDisabled");function tm(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(tm,"isTokensIdentical");var Bi=i((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),rm=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"),im=om()(nm(rm)),am=om()(nm(rm)),lw=mo(im),cw=mo(am);function z(){let{swapMode:t}=rt();return mo(t==="refuel"?am:im)}i(z,"useQuoteStore");var sm=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"),lm=lw.subscribe(sm),cm=cw.subscribe(sm);function pm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=C().config,d=C().fetchStatus,f=C().blockchains(),{findToken:h}=C(),{setAffiliateRef:g,setAffiliatePercent:m,setAffiliateWallets:S}=C(),T=u?.from?.tokens,y=u?.from?.blockchains,k=u?.to?.tokens,v=u?.to?.blockchains,w=_i(void 0),x=_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 I=f.find(N=>N.name===u?.from?.blockchain),b=u?.from?.token,L=b&&h(b);(I||!I&&A.current)&&n(I??null),L?a({token:L,meta:{blockchains:f}}):!L&&w.current&&a({token:null}),A.current=u?.from?.blockchain,w.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,k)&&a({token:null}),ks(p,v)&&o(null)},[k,v]),bn(()=>{if(d==="success"){r();let I=f.find(N=>N.name===u?.to?.blockchain),b=u?.to?.token,L=b&&h(b);(I||!I&&E.current)&&o(I??null),L?e({token:L,meta:{blockchains:f}}):!L&&x.current&&e({token:null}),E.current=u?.to?.blockchain,x.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(pm,"useSyncStoresWithConfig");import{useEffect as Ys,useRef as pw}from"react";import{useInRouterContext as uw,useLocation as dw,useSearchParams as mw}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}i(js,"convertTokenSearchParamToAsset");function Xs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Xs,"tokenToSearchParam");function Js(){let t=dw(),[e,o]=mw(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:f}=z()(),h=C().fetchStatus,g=C().blockchains(),m=uw(),{updateIframe:S,updateCampaignMode:T}=C(),y=C().isInCampaignMode(),k=pw(),{findToken:v}=C(),w=i(()=>{let A={};for(let[P,Z]of e.entries())(P.startsWith("utm_")||P.startsWith("privy_"))&&(A[P]=Z);let E=e.get("fromAmount"),I=e.get("fromBlockchain"),b=e.get("fromToken"),L=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:I,fromToken:b,toBlockchain:L,toToken:N,autoConnect:O,clientUrl:q,liquiditySources:j,extraQueryParams:A,blockchain:ee}},"getUrlSearchParams"),x=i(A=>{for(let E in A)A[E]||delete A[E];o(A,{replace:!0})},"updateUrlSearchParams");Ys(()=>{let{autoConnect:A,clientUrl:E,extraQueryParams:I,blockchain:b}=w();m&&h==="success"&&x({fromBlockchain:n?.name,fromToken:Xs(a),toBlockchain:r?.name,toToken:Xs(s),fromAmount:c,autoConnect:A??void 0,clientUrl:E??void 0,blockchain:b??void 0,liquiditySources:y?k.current:void 0,...I})},[t.pathname,c,n,a,r,s,y,h]),Ys(()=>{if(!m)return;let A=w();if(!k.current&&A.liquiditySources&&(k.current=A.liquiditySources),A.fromAmount&&f(A.fromAmount),h==="success"){let E=g.find(q=>q.name===A.fromBlockchain),I=A.fromToken&&E&&js(A.fromToken,E),b=I?v(I):void 0,L=g.find(q=>q.name===A.toBlockchain),N=A.toToken&&L&&js(A.toToken,L),O=N?v(N):void 0;E&&(l(E),b&&u({token:b,meta:{blockchains:g}})),L&&(p(L),O&&d({token:O,meta:{blockchains:g}}))}},[h]),Ys(()=>{let{clientUrl:A,liquiditySources:E}=w();S("clientUrl",A||void 0),T("liquiditySources",E?.split(",")??void 0)},[])}i(Js,"useSyncUrlAndStore");import{i18n as An}from"@lingui/core";import{Alert as _v,Button as Mv,darkTheme as Dv,Divider as Al,DoneIcon as $v,styled as Fv,TextField as Ov,Typography as Uv}from"@rango-dev/ui";import Ke,{useState as zv}from"react";import{useNavigate as Hv,useSearchParams as Qv}from"react-router-dom";import{ChevronRightIcon as fw,Divider as gm,Image as gw,Typography as hm}from"@rango-dev/ui";import At from"react";import{darkTheme as um,styled as Rs}from"@rango-dev/ui";var dm=Rs("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${um} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${um} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),mm=Rs("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),fm=Rs("div",{display:"flex"});function el(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return At.createElement(mm,null,At.createElement(hm,{size:"large",variant:"label"},n),At.createElement(gm,{size:10}),At.createElement(dm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},At.createElement(fm,null,r&&At.createElement(At.Fragment,null,At.createElement(gw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),At.createElement(gm,{size:4,direction:"horizontal"})),At.createElement(hm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),At.createElement(fw,{size:12,color:"black"})))}i(el,"BlockchainSelectorButton");import{i18n as rl}from"@lingui/core";import{Button as vw,Divider as km,MessageBox as Ew}from"@rango-dev/ui";import go,{useEffect as wm,useState as il}from"react";import{i18n as Mi}from"@lingui/core";import{Divider as Qo,ExternalLinkIcon as Sw,Image as Tw,InfoIcon as Cw,Tooltip as kw,Typography as hr}from"@rango-dev/ui";import fe from"react";var ym="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as hw,darkTheme as xn,styled as gr,Typography as yw}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:{}}}}),Sm=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(hw,{minHeight:"$40"}),Tm=gr(yw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),Cm=gr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var ww=9;function nl(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(ym,"_blank"),"onClickLearnMore");return fe.createElement(ie,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:r,container:W()},fe.createElement(Sm,null,fe.createElement(Tw,{src:n.image===""?ii:n.image,size:45,type:"circular"}),fe.createElement(Qo,{size:4}),fe.createElement(Cm,null,fe.createElement(Tm,{variant:"title",size:"medium"},n.symbol),n.symbol.length>ww&&fe.createElement(kw,{content:n.symbol,container:W()},fe.createElement(Cw,{size:12,color:"gray"}))),fe.createElement(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(Sw,{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"},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(ol,{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(ol,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},Mi.t("Learn More")))}i(nl,"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}=C(),[d,f]=il(!1),[h,g]=il(!1),[m,S]=il(!1),T=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),f(!1)},"closeErrorModal"),k=i(()=>{S(!0),y()},"handleErrorModalButtonClick"),v=i(()=>{m&&n?.type==="network-error"&&(S(!1),T()),l()},"handleExit"),w=i(()=>{e&&(u(e),c())},"handleSubmit");return wm(()=>{n&&f(!0)},[n]),wm(()=>{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:v,container:W()},go.createElement(Ew,{title:n?.title??"",type:"error",description:n?.message||rl.t("Failed Network, Please retry.")},go.createElement(km,{size:40}),go.createElement(km,{size:10}),go.createElement(vw,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:k},n?.type==="network-error"?rl.t("Retry"):rl.t("Add another custom token")))),o&&e&&go.createElement(nl,{blockchain:o,token:e,onSubmitClick:w,onClose:()=>g(!1),open:h,onExit:p}))}i(yr,"ImportCustomToken");import{useManager as Av}from"@rango-dev/queue-manager-react";import{BottomLogo as Nv,Divider as of,Header as Wv}from"@rango-dev/ui";import Le,{useEffect as Gi,useLayoutEffect as Pv,useRef as nf,useState as rf}from"react";import{useRef as bw}from"react";function Di(){return window.self!==window.top}i(Di,"isAppLoadedIntoIframe");function al(){let t=bw(null),{iframe:e}=C(),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(al,"useIframe");import{useNavigate as xw}from"react-router-dom";function Ve(){let t=xw();return()=>t(-1)}i(Ve,"useNavigateBack");import{createTheme as ml,darkTheme as Ow,lightTheme as Uw}from"@rango-dev/ui";import{useEffect as zw,useState as Hw}from"react";import{theme as $w,darkColors as Fw}from"@rango-dev/ui";import ul from"react";var $i=16,Fi=255,vm=.11;function Iw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(Iw,"expandShortHexColor");function Aw(t,e){return t.padStart(e,"0")}i(Aw,"pad");function sl(t){let e=Math.min(Math.max(Math.round(t),0),Fi);return Aw(e.toString($i),2)}i(sl,"intToHex");function Nw(t){return`#${sl(t.red)}${sl(t.green)}${sl(t.blue)}`}i(Nw,"rgbToHex");function Ww(t){let e=parseInt(t.slice(1,3),$i),o=parseInt(t.slice(3,5),$i),n=parseInt(t.slice(5,7),$i);return{red:e,green:o,blue:n}}i(Ww,"hexToRGB");function Pw(t,e){let o=1-vm*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(Pw,"generateShade");function Lw(t,e){let o=vm*e;return{red:t.red+(Fi-t.red)*o,green:t.green+(Fi-t.green)*o,blue:t.blue+(Fi-t.blue)*o}}i(Lw,"generateTint");function Bw(t){return Em(t,Pw)}i(Bw,"calculateShades");function _w(t){return Em(t,Lw)}i(_w,"calculateTints");function Em(t,e){let o=Ww(t),n=[];for(let r=1;r<9;r++)n.push(Nw(e(o,r)));return n}i(Em,"calculateColors");function ll(t,e,o){let a=_w(t).reverse().concat(t),s=Bw(t),c=a.concat(s),l={},p=c.length;for(let u=0;u<p;u++){let d=100+(o?p-1-u:u)*50,f=c[u];f&&(l[`${e}${d}`]=f)}return l}i(ll,"createTintsAndShades");function cl(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=Iw(a);Object.assign(n,ll(l,r,s))}}return{...n,...e}}i(cl,"expandToGenerateThemeColors");var bm=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Mw=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=bm(o%52)+e;return bm(o%52)+e},"toAlphabeticName"),Dw=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),pl=i(t=>Mw(Dw(5381,JSON.stringify(t))>>>0),"toHash");function dl(t){let e=$w.colors,o={...e,...Fw},n,r;if(t?.light){let s={colors:cl(e,t.light)};n={id:`${Ts}-light-${pl(s)}`,tokens:s}}if(t?.dark){let s={colors:cl(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Ts}-dark-${pl(s)}`,tokens:s}}return{light:n,dark:r}}i(dl,"customizedThemeTokens");function xm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>ul.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(ul.cloneElement(a,{key:s})),r<t.length-1){let c=`divider-${r}`;o.push(ul.cloneElement(e,{key:c}))}}),o}i(xm,"joinList");function Im(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(Im,"doesWindowPreferDarkColorScheme");function ho(t){let{colors:e,fontFamily:o=iu,borderRadius:n=Mu,secondaryBorderRadius:r=Du}=t,[a,s]=Hw(Im()?"dark":"light"),{theme:c}=C(),{dark:l,light:p}=dl(e),u=ml({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),d=[u.className,Uw.className],f=[u.className,Ow.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 zw(()=>{let g=i(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return Im()&&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 Am}from"@lingui/core";import{Alert as Qw,Button as qw}from"@rango-dev/ui";import Nm from"react";function fl(t){return Nm.createElement(Qw,{action:Nm.createElement(qw,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},Am.t("Activate this tab")),type:"warning",variant:"alarm",title:Am.t("Another tab is open and handles transactions.")})}i(fl,"ActivateTabAlert");import{i18n as gl}from"@lingui/core";import{Button as Gw,Divider as Vw,MessageBox as Kw}from"@rango-dev/ui";import Oi from"react";function hl(t){let{open:e,onClose:o,onConfirm:n}=t;return Oi.createElement(ie,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},Oi.createElement(Kw,{title: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.")},Oi.createElement(Vw,{size:20}),Oi.createElement(Gw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},gl.t("Confirm"))))}i(hl,"ActivateTabModal");import{ChevronLeftIcon as Yw}from"@rango-dev/ui";import $m from"react";import{css as jw,darkTheme as Wm,IconButton as Xw,styled as qo}from"@rango-dev/ui";var Ft=qo(Xw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Wm} &`]:{backgroundColor:"$neutral"}}}),Pm=qo("div",{position:"absolute",background:"$secondary500",[`.${Wm} &`]:{$$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}}),Lm=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"}}}}),Bm=qo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),_m=qo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Mm=jw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),Dm=qo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function yl(t){return $m.createElement(Ft,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},$m.createElement(Yw,{color:"black",size:16}))}i(yl,"BackButton");import{i18n as Zw}from"@lingui/core";import{Button as Jw,Typography as Rw}from"@rango-dev/ui";import Sl from"react";function Tl(t){return Sl.createElement(yo,null,Sl.createElement(Jw,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Sl.createElement(Rw,{variant:"label",size:"medium",color:"error500"},Zw.t("Cancel"))))}i(Tl,"CancelButton");import{i18n as ev}from"@lingui/core";import{Image as tv,Tooltip as ov,WalletIcon as nv,WalletState as Fm}from"@rango-dev/ui";import Go from"react";function Cl(t){let{list:e}=xt(),o=e.filter(r=>r.state===Fm.CONNECTED||r.state===Fm.PARTIALLY_CONNECTED),n=o.length?Go.createElement("div",{className:Mm()},o.map(r=>Go.createElement(Dm,{key:r.title},Go.createElement(tv,{src:r.image,size:14})))):ev.t("Connect Wallet");return Go.createElement(ov,{container:t.container,side:"bottom",content:n},Go.createElement(Ft,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&Go.createElement(Pm,null),Go.createElement(nv,{size:18,color:"black"})))}i(Cl,"WalletButton");import{i18n as zi}from"@lingui/core";import{NotificationsIcon as Tv,Popover as Cv,SettingsIcon as kv,Tooltip as Hi,TransactionIcon as wv}from"@rango-dev/ui";import _e from"react";import{Notifications as sv}from"@rango-dev/ui";import lv from"react";import{useNavigate as cv}from"react-router-dom";import{create as rv}from"zustand";import{persist as iv,subscribeWithSelector as av}from"zustand/middleware";var Pe=mo(rv()(iv(av((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let 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 kl(){let t=cv(),{getNotifications:e,clearNotifications:o}=Pe(),n=e(),r=C().blockchains(),{findToken:a}=C();return lv.createElement(sv,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>jp(c,r),getTokenImage:c=>a(c)?.image,onClickItem:i(c=>{t(`${$.swaps}/${c}`)},"onClickItem"),onClearAll:o})}i(kl,"NotificationContent");import{useManager as pv}from"@rango-dev/queue-manager-react";import{InProgressIcon as uv}from"@rango-dev/ui";import Om from"react";var dv=i(()=>{let{manager:t}=pv();return Et(t).map(({swap:o})=>o).find(o=>o.status==="running")?Om.createElement(_m,{id:"widget-header-history-badge-container"},Om.createElement(uv,{color:"info",size:6})):null},"InProgressTransactionBadge"),Um=dv;import{EventSeverity as mv}from"@rango-dev/queue-manager-rango-preset";import{Typography as fv}from"@rango-dev/ui";import zm from"react";function Hm(){let{getNotifications:t}=Pe(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===mv.WARNING);return o?zm.createElement(Lm,{isSever:n},zm.createElement(fv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}i(Hm,"NotificationsBadge");import{RefreshProgressButton as gv}from"@rango-dev/ui";import wl,{useEffect as hv,useState as Qm}from"react";var yv=1e3,qm=60,Sv=100;function Ui({onClick:t}){let[e,o]=Qm(0),[n,r]=Qm(!1),a=i(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");hv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===qm&&c()},yv):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 wl.createElement(Ft,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},wl.createElement(Bm,{onTransitionEnd:()=>r(!1),isRefetched:n},wl.createElement(gv,{size:22,color:t?"black":"gray",progress:e/qm*Sv})))}i(Ui,"RefreshButton");function Vo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=C(),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(Cv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(kl,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(Tv,{size:18,color:"black"}),_e.createElement(Hm,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(kv,{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(wv,{size:18,color:"black"}),_e.createElement(Um,null))))}i(Vo,"HeaderButtons");import{i18n as vl}from"@lingui/core";import{Divider as Vm,MessageBox as bv,RefreshIcon as xv}from"@rango-dev/ui";import In from"react";import{Button as vv,styled as Ev}from"@rango-dev/ui";var Gm=Ev(vv,{"& 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(bv,{title:vl.t("Something went wrong"),type:"error",description:vl.t("Something went wrong. Please refresh the app.")},In.createElement(Vm,{size:30}),In.createElement(Gm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},In.createElement(xv,{size:20,color:"primary"}),In.createElement(Vm,{size:4,direction:"horizontal"}),vl.t("Refresh"))))}i(El,"RefreshModal");var Km="700px",jm="425px",Xm="550px",Ym="640px",Zm="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")}}i(bl,"onScrollContentAttachStatusToContainer");import{css as Iv,styled as Qi}from"@rango-dev/ui";var qi=Iv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Jm=Qi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:Km,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:jm,[`@media screen and (min-height: ${Zm})`]:{minHeight:Xm}}},showBanner:{true:{overflow:"visible"}}}}),Rm=Qi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),ef=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"}}}),tf=Qi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=al(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=C(),[u,d]=rf(!1),{config:{features:f,theme:h}}=C(),{watermark:g}=re(),m=g==="FULL",{activeTheme:S}=ho(h||{}),[T,y]=rf(!1),k=nt("connectWalletButton",f),{isActiveTab:v,tabManagerInitiated:w,showActivateTabModal:x,setShowActivateTabModal:A,activateCurrentTab:E,setShowCompactTokenSelector:I}=re(),b=Ve(),{manager:L}=Av(),O=Et(L).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,P=nf(null),Z=nf(null);return Gi(()=>{let Y=(p?.swapBoxBanner?.routes?.length??0)===0,ue=!!p?.swapBoxBanner?.routes?.some(Ee=>location.pathname.endsWith(Ee));y(!!p?.swapBoxBanner&&(Y||ue))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),Gi(()=>(Di()&&Z.current&&e(Z.current),()=>{o()}),[]),Gi(()=>(P.current?.addEventListener("scroll",bl),()=>{P.current?.removeEventListener("scroll",bl)}),[]),Gi(()=>{d(c==="failed")},[c]),Pv(()=>{if(!Z.current)return;let Y=new ResizeObserver(ue=>{for(let Ee of ue)Ee.contentRect&&I(Ee.contentRect.height<parseInt(Ym))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Le.createElement(Jm,{height:s,id:wt.SWAP_BOX_ID,className:`${S()} ${qi()}`,ref:Z,showBanner:T},Le.createElement(Wv,{prefix:ee?Le.createElement(yl,{onClick:()=>{b(),r.onBack?.()}}):null,title:r.title,suffix:Le.createElement(Le.Fragment,null,r.suffix,r.onWallet&&!k&&Le.createElement(Cl,{container:W(),onClick:j,isConnected:!!l?.length}),r.onCancel&&Le.createElement(Tl,{onClick:r.onCancel}))}),Le.createElement(Rm,{ref:P},n),Le.createElement(hl,{open:x,onClose:()=>A(!1),onConfirm:q}),Le.createElement(ef,null,Le.createElement("div",{className:"footer__content"},w&&!v&&Le.createElement("div",{className:"footer__alert"},Le.createElement(fl,{onActivateTab:q}),Le.createElement(of,{size:10})),a),Le.createElement(of,{size:12}),Le.createElement("div",{className:`footer__logo ${m?"logo__show":"logo__hidden"}`},Le.createElement(Nv,null))),T&&Le.createElement(tf,null,p?.swapBoxBanner?.element),Le.createElement(El,{open:u,onClose:()=>d(!1)}))}i(se,"Layout");import{styled as Lv}from"@rango-dev/ui";var af="$20 $20 $10 $20",xl=Lv("div",{padding:af,overflowY:"auto",flexGrow:1});import{styled as Bv}from"@rango-dev/ui";var ce=Bv("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as So}from"@lingui/core";import{useState as Il}from"react";function sf(){let[t,e]=Il(!1),[o,n]=Il(null),[r,a]=Il(null),{findToken:s}=C(),c=C().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(sf,"useFetchCustomToken");var qv=Fv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${Dv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function lf(){let t=Hv(),[e]=Qv(),o=Ve(),n=C().blockchains(),r=e.get("blockchain")||"",a=Lo(r,n),[s,c]=zv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:f}=sf(),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(qv,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(Uv,{size:"large",variant:"label"},An.t("Enter Address")),Ke.createElement(Al,{size:10}),Ke.createElement(Ov,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:An.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement($v,{color:"success",size:12}),onChange: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(Mv,{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(lf,"AddCustomTokenPage");import{i18n as sc}from"@lingui/core";import{useManager as Ab}from"@rango-dev/queue-manager-react";import{Alert as Nb,Button as Wb,css as cc,Divider as lc,IconButton as Jg,styled as Pb,Typography as Lb,WalletIcon as Bb}from"@rango-dev/ui";import $e,{useEffect as Ta,useLayoutEffect as _b,useRef as Mb,useState as Ar}from"react";import{useNavigate as Db}from"react-router-dom";import{i18n as jo}from"@lingui/core";import{Alert as cE,BalanceErrors as pE,Button as Lf,ChevronLeftIcon as uE,Divider as _l,MessageBox as dE,Typography as Ml}from"@rango-dev/ui";import ae,{useCallback as mE,useEffect as Zi,useMemo as fE,useState as Wn}from"react";import{useNavigate as gE}from"react-router-dom";import{i18n as Ll}from"@lingui/core";import{Alert as Xv,ChevronDownIcon as Yv,CloseIcon as Zv,Divider as gf,IconButton as hf,PasteIcon as Jv,Typography as Rv,WalletIcon as eE}from"@rango-dev/ui";import Me,{useEffect as yf,useRef as Sf}from"react";import Xi,{useRef as Kv}from"react";import*as Nn from"@radix-ui/react-collapsible";import{keyframes as cf,styled as Vi}from"@rango-dev/ui";var Nl=300,Gv=cf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Vv=cf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),pf=Vi(Nn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Wl=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:`${Gv} ${Nl}ms ease-out`},false:{animation:`${Vv} ${Nl}ms ease-out`}}}}),ji=Vi("div",{transition:`all ${Nl}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=Kv(null);return Xi.createElement(pf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&Xi.createElement(Wl,{className:"collapsible_trigger",onClick:a},s),Xi.createElement(Ki,{className:"collapsible_content",open:e},r),c==="bottom"&&Xi.createElement(Wl,{className:"collapsible_trigger",onClick:a},s))}i(Yi,"CustomCollapsible");import{darkTheme as uf,styled as Pl,TextField as jv}from"@rango-dev/ui";var df=Pl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),mf=Pl(jv,{backgroundColor:"$neutral100"}),ff=Pl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${uf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${uf} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Tf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=z()(),{config:s}=C(),c=C().blockchains(),l=Kp(e.name,c),p=Sf(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 k=await navigator.clipboard.readText();a(k),p?.current?.focus()}},"handlePaste"),S=i(()=>r?Me.createElement(hf,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(Zv,{size:12,color:"gray"})):d?null:Me.createElement(hf,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},Me.createElement(Jv,{size:16})),"renderSuffix");yf(()=>{!!u&&r===null&&(a(u),o(!0))},[u]);let T=Sf(null);return yf(()=>{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(df,null,Me.createElement(Yi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(ff,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(eE,{size:18,color:"info"}),Me.createElement(gf,{size:4,direction:"horizontal"}),Me.createElement(Rv,{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(Yv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(mf,{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 k=y.target.value;a(k)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(gf,{size:4}),Me.createElement(Xv,{variant:"alarm",type:"error",title:Ll.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(Tf,"CustomDestination");import{css as tE,IconButton as oE,SelectableWalletButton as nE,styled as To}from"@rango-dev/ui";var Cf=To("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),kf=To("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),wf=To(nE,{justifyContent:"center"}),vf=To("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ef=To(oE,{position:"absolute",left:"$20"}),bf=To("div",{paddingTop:"$20"}),xf=tE({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),If=To("div",{display:"flex"}),Af=To("div",{overflow:"visible",width:"100%"});import{i18n as Nf}from"@lingui/core";import{warn as rE}from"@rango-dev/logging-core";import{makeInfo as iE,SelectableWallet as aE,Typography as Wf,WalletState as Sr}from"@rango-dev/ui";import Ko,{useEffect as sE,useState as Pf}from"react";var lE=7;function Bl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,c=re.use.isActiveTab(),{connectedWallets:l}=C(),[p,u]=Pf(),{list:d}=xt({chain:e}),[f,h]=Pf(d),g=d.length,m=a&&g-a>0;return sE(()=>{h(S=>{let T=d.findIndex(y=>n(y.type,e));return m&&T>1?[d[T]].concat(d.filter((y,k)=>k!==T)):S.map(y=>d.find(k=>k.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,k=T?uo(T,lE):"",v=y&&!!S.needsNamespace&&!k,w=i(async()=>{S.state===Sr.DISCONNECTED||v?u(S):r({walletType:S.type,chain:e,address:T??""})},"onSelectableWalletClick"),x=iE(S.state),A=i(()=>v?Nf.t("Chain not connected"):k||x.description,"getWalletDescription"),E=i(()=>S.state===Sr.CONNECTED||S.state===Sr.PARTIALLY_CONNECTED?v?"neutral600":"neutral700":x.color,"getWalletDescriptionColor");return Ko.createElement(aE,{key:S.type,id:"widget-wallets-list-selectable-wallet-btn",description:A(),descriptionColor:E(),onClick:w,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):rE(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),m&&Ko.createElement(wf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Ko.createElement(Wf,{variant:"label",size:"medium"},Nf.t("Show more wallets"),Ko.createElement(Wf,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}i(Bl,"WalletList");var hE=2;function Bf(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=gE(),c=C().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:f,setCustomDestination:h}=z()(),{config:g,connectedWallets:m,setWalletsAsSelected:S}=C(),[T,y]=Wn(""),[k,v]=Wn([]),[w,x]=Wn(""),[A,E]=Wn(!!f),I=fE(()=>Do({filter:"all",quote:l}),[l]),b=Do({filter:"required",quote:l}),L=c.find(B=>B.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),N=i(B=>b.includes(B),"isWalletRequiredFor"),O=mE(()=>m.filter(B=>B.selected&&I.includes(B.chain)),[m,I]),[q,j]=Wn(O()),[ee,P]=Wn([]),Z=i((B,V)=>P(H=>H.concat({blockchain:B,walletType:V})),"addNextSelectedWallets"),Y=k.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(L?.name??"")||j(V=>Ee(V,L?.name||"",!1)):(h(""),j(V=>Ee(V,L?.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===L?.name&&A&&!N(L.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()=>{v([]),x("");let B=await r?.({selectedWallets:q.filter(H=>H.selected),customDestination:f}),V=B.warnings;V?.balance?.messages&&v(V.balance.messages),B.error&&x($p(B.error)),!B.error&&!V?.balance?.messages.length?Qe():v(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&&I.includes(H.chain))),V})},[m,I]),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)}),P(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(If,null,ae.createElement(Lf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:em(a,A,f,l,q,L),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},jo.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(vf,null,ae.createElement(Ef,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(uE,{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:v.bind(null,[]),container:ct},ae.createElement(dE,{title:jo.t("Insufficient account balance"),type:"error",description:ae.createElement(pE,{messages:k??[]})},ae.createElement(Lf,{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(bf,null,ae.createElement("div",{className:xf()},ae.createElement(Bl,{chain:T,quoteChains:I,isSelected:ue,selectWallet:be,onShowMore:()=>y(T),onConnect:B=>{Z(T,B)}}))),!T&&ae.createElement(ae.Fragment,null,w&&ae.createElement(ae.Fragment,null,ae.createElement(cE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:jo.t(w)}),ae.createElement(_l,{size:12})),ae.createElement(Af,null,I.map((B,V)=>{let H=c.find(U=>U.name===B),X=`wallet-${V}`,G=V===I.length-1,J=G&&L&&g?.customDestination!==!1;return ae.createElement("div",{key:X},ae.createElement(Cf,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(kf,null,ae.createElement(Bl,{chain:B,quoteChains:I,isSelected:ue,selectWallet:be,limit:hE,onShowMore:()=>y(H?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(_l,{size:32}),J&&ae.createElement(Tf,{blockchain:L,open:A,handleOpenChange:Vt}))}))))}i(Bf,"ConfirmWalletsModal");import{i18n as HE}from"@lingui/core";import{Alert as QE,Button as qE,Divider as Rf,InfoIcon as GE}from"@rango-dev/ui";import Ue from"react";import{Alert as TE,Button as CE,Divider as Fl,NoRouteIcon as kE,RefreshIcon as wE,Typography as Uf}from"@rango-dev/ui";import mt from"react";import{i18n as _f}from"@lingui/core";var yE=24,SE=60;function Mf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:te().genericServerError,action:{onClick:n,title:_f.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:te().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:_f.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(Mf,"makeInfo");var Dl=(o=>(o[o.small=yE]="small",o[o.large=SE]="large",o))(Dl||{}),$l=(o=>(o.small="small",o.large="medium",o))($l||{});import{styled as Ji}from"@rango-dev/ui";var Df=Ji("div",{display:"flex",flexDirection:"column",alignItems:"center"}),$f=Ji("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Ff=Ji("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Of=Ji("div",{padding:"$6 $0"});function Tr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=C().getDisabledLiquiditySources(),s=C().toggleAllLiquiditySources,c=C().swappers(),l=Mf(o,a,()=>s(c,!0),e);return r&&(l.alert=null),mt.createElement(Df,{id:"widget-no-result-container"},mt.createElement(kE,{size:Dl[n],color:"gray"}),mt.createElement(Fl,{size:4}),mt.createElement(Uf,{variant:"title",size:$l[n]},te().noResultError.title),n==="large"&&mt.createElement(Fl,{size:4}),!!l.description&&mt.createElement($f,{size:n},mt.createElement(Uf,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement(Fl,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Ff,{size:n},mt.createElement(TE,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&mt.createElement(CE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement(Of,null,mt.createElement(wE,{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 WE,Divider as PE,MessageBox as LE,Typography as BE,WarningIcon as _E}from"@rango-dev/ui";import Rt from"react";import{InfoIcon as xE,Tooltip as IE,Typography as AE}from"@rango-dev/ui";import Pn from"react";import{Button as vE,darkTheme as EE,styled as Xo,Typography as bE}from"@rango-dev/ui";var zf=Xo("div",{width:"100%"}),Ol=Xo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Hf=Xo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${EE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Qf=Xo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),qf=Xo(bE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Gf=Xo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),Vf=Xo(vE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var NE=35;function Kf(t){let{title:e,value:o,valueColor:n}=t,r=W();return Pn.createElement(Hf,null,Pn.createElement(AE,{size:"medium",variant:"label",className:"_title"},e),Pn.createElement(Qf,null,Pn.createElement(qf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>NE&&Pn.createElement(IE,{content:o,container:r},Pn.createElement(xE,{size:12,color:"gray"}))))}i(Kf,"QuoteErrorsModalItem");function jf(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(WE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Rt.createElement(_E,null),fullWidth:!0,disabled:a,onClick:n},te().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Rt.createElement(LE,{type:s,title:te().highValueLossError.impactTitle,description:te().highValueLossError.description}),Rt.createElement(Ol,null,Rt.createElement(PE,{size:"4"}),Rt.createElement(BE,{size:"small",variant:"title"},Cr.t("Details")),Rt.createElement(Ol,null,c.map((l,p)=>Rt.createElement(Kf,{key:p,...l})))))}i(jf,"HighValueLossWarningModal");import{i18n as Ln}from"@lingui/core";function Xf(t,e){let o={alertType:"warning",title:"",action:null,actionButtonTitle:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=Ln.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Ln.t("Increase")),o;if(t){switch(t.type){case 0:{Jt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=te().highValueLossError.title;break}case 4:{o.title=Ln.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=te().unknownPriceError.title;break}case 2:{o.title=Ln.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Ln.t("Increase");break}case 3:{o.title=Ln.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Xf,"makeAlerts");function Yf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(Yf,"getRequiredSlippage");import{i18n as Bn}from"@lingui/core";import{Button as ME,Divider as Ul,MessageBox as DE,WarningIcon as $E}from"@rango-dev/ui";import wo from"react";import{useNavigate as FE}from"react-router-dom";function Zf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=FE();return wo.createElement(ie,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},wo.createElement(DE,{type:"warning",title: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(Ul,{size:18}),wo.createElement(Ul,{size:32}),wo.createElement(Vf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},wo.createElement($E,{color:"white",size:16}),Bn.t("Swap anyway")),wo.createElement(Ul,{size:10}),wo.createElement(ME,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Bn.t("Change Slippage"))))}i(Zf,"SlippageWarningModal");import{Button as OE,MessageBox as UE,WarningIcon as zE}from"@rango-dev/ui";import Ri from"react";function Jf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Ri.createElement(ie,{id:"widget-unknown-price-warning-modal",footer:Ri.createElement(OE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ri.createElement(zE,null),fullWidth:!0,disabled:r,onClick:n},te().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},Ri.createElement(UE,{type:"warning",title:te().unknownPriceError.impactTitle,description:te().unknownPriceError.description}))}i(Jf,"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=Xf(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 k=o?.type===3||o?.type===4?o:null,v=Yf(e,k);f?.(v)}else y==="change-settings"&&d()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,g&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Rf,{size:10}),Ue.createElement(Tr,{skipAlerts:s,error:o,fetch:c})),S&&Ue.createElement(zf,null,Ue.createElement(Rf,{size:10}),Ue.createElement(QE,{id:"widget-quote-warning-and-errors-alert",title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Ue.createElement(Gf,{onClick:l},Ue.createElement(GE,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:Ue.createElement(qE,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>T(m.action)},m.actionButtonTitle||HE.t("Change"))}})),e&&Ue.createElement(Ue.Fragment,null,e.type===0&&Ue.createElement(jf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(Zf,{...h,warning:e}),e.type===1&&Ue.createElement(Jf,{...h,warning:e})))}i(kr,"QuoteWarningsAndErrors");import kb from"bignumber.js";import ga from"react";import{i18n as Yo}from"@lingui/core";import{Alert as cb,CampaignQuoteTag as pb,Divider as Mn,FullExpandedQuote as ub,InfoIcon as Zl,NumericTooltip as Jl,QuoteTag as db,StepDetails as mb,TokenAmount as fb,Typography as Dn,useIsTruncated as Rl}from"@rango-dev/ui";import ec from"bignumber.js";import F,{useRef as da,useState as gb}from"react";import{styled as zl}from"@rango-dev/ui";var Hl=zl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),eg=zl("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),tg=zl("div",{width:"100%",display:"flex"});import*as ea from"@radix-ui/react-collapsible";import{Button as VE,css as ta,darkTheme as De,Image as og,styled as je,Typography as Ql}from"@rango-dev/ui";var KE=300,ng=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"}}]}),rg=ta({padding:"$10 $15"}),ig=je(VE,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${De} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${De} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${De} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),ag=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"}}}}]}),sg=ta({width:"100%",padding:"$15 $15 $10 $15"}),lg=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"}}),cg=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:{[`& ${og}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${og}`]:{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"}}}),pg=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"}}}}),ug=je(Ki,{width:"100%",background:"inherit"}),ql=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${KE}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),mQ=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),dg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),mg=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"}}}}),fg=je("div",{display:"flex"}),oa=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),gg=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 XE,CloseIcon as YE,Divider as ia,IconButton as ZE,NumericTooltip as JE,QuoteCost as RE,Typography as Nt}from"@rango-dev/ui";import eb from"bignumber.js";import R,{useState as Tg}from"react";import{css as jE,styled as na}from"@rango-dev/ui";var ra=na("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),jl=na("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),hg=na("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),yg=na("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Sg=jE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var tb=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 Xl(t){let[e,o]=Tg(!1),[n,r]=Tg(!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=Vd(f),m=Object.values(g.payable).reduce((T,y)=>T.plus(Ks(y)),new eb(0)),S=M(m,2,2);return R.createElement(R.Fragment,null,R.createElement(RE,{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(yg,{style:{textAlign:d?"left":"center"}},R.createElement(Nt,{variant:"title",size:"medium"},Ot.t("Gas & Fee Explanation")),R.createElement(ZE,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(YE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(hg,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((k,v)=>{let w=`payable-fee-${v}`,x=Vs(k);return R.createElement(ra,{key:w},R.createElement(Nt,{variant:"label",size:"medium",color:"neutral600"},zs(T,Ot.t)),R.createElement(JE,{content:k.amount,container:h},R.createElement(Nt,{variant:"label",size:"medium"},M(k.amount,2,2),k.asset.symbol," ($",M(x,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(jl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Yi,{triggerAnchor:"bottom",onClickTrigger:()=>r(T=>!T),trigger:R.createElement("div",{className:Sg()},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(XE,{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],k)=>{let v=Ks(y),w=zs(T,Ot.t),x=`non-payable-fee-${k}`;return R.createElement(tb,{key:x,fee:v,label:w})}),R.createElement(jl,null)))))}i(Xl,"QuoteCostDetails");import{i18n as wg}from"@lingui/core";import{TokenAmount as vg}from"@rango-dev/ui";import aa from"react";import{css as ob,styled as nb}from"@rango-dev/ui";var Cg=nb("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),kg=ob({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(Cg,null,aa.createElement(vg,{direction:"horizontal",label:wg.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:kg()}),aa.createElement(vg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:wg.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 Ag}from"@lingui/core";import{ChevronDownIcon as ab,ChevronRightIcon as sb,Divider as Yl,Image as lb,Tooltip as ua,Typography as la}from"@rango-dev/ui";import Q from"react";import{useLayoutEffect as rb,useState as vr}from"react";var Eg=480,bg=768,xg=1024,Ig=1200,ib=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<=Eg),n(window.innerWidth>Eg&&window.innerWidth<=bg),a(window.innerWidth>bg&&window.innerWidth<=xg),c(window.innerWidth>xg&&window.innerWidth<=Ig),p(window.innerWidth>Ig)},"handleResize");return rb(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),sa=ib;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(pg,{className:n,state:a},Q.createElement(lb,{src:o,size:16})))},"ImageComponent");function Ng(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:c}=t,l=c||W(),p=r.length,u=Dd(r),{isTablet:d,isMobile:f}=sa();return Q.createElement(cg,{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"},Ag.t("Via:")),Q.createElement(Yl,{direction:"horizontal",size:4}),r.map((h,g)=>{let m=`item-${g}`,S=Q.createElement(ql,null,Q.createElement(sb,{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 k=`image-${y}`;return y>=g&&Q.createElement(Q.Fragment,{key:k},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: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"},Ag.t("Chains:")),Q.createElement(Yl,{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(Kl,{className:"blockchainImage"},Q.createElement(la,{size:"xsmall",variant:"body"},"+",u.length-g))))),Q.createElement(Yl,{direction:"horizontal",size:32}))),Q.createElement(ql,{orientation:a?"up":"down"},Q.createElement(ab,{size:12,color:"black"}))))}i(Ng,"QuoteTrigger");function tc(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=C().blockchains(),{findToken:g}=C(),m=C().swappers(),{customSlippage:S,slippage:T}=C(),y=S||T,[k,v]=gb(t.expanded),w=da(null),x=M(n.value,6,6),A=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:E}}=C(),I=Zt(o.usdValue,n.usdValue??null),b=M(I,2,2),L=Jt(I??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 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||ei?F.createElement(eg,{dense:d},F.createElement(cb,{variant:"alarm",type:Wo?"error":"warning",title:an,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(tg,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(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=Fd(t.quote.tags||[]),P=!!u,Z=ci(e?.swaps),Y=Zn(Z),ue=Pi(e?.swaps??[],g),Ee=M(ue,2,2),Vt=ue.gte(new ec(Ad)),be=Z/Wd>=Nd,Qe=da(null),Xe=Rl(o.value,Qe),St=da(null),ct=Rl(n.value,St),B=da(null),V=Rl(A,B),H=O[q-1],X=O[0];return!X||!H?null:d?F.createElement(ub,{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:L,outputPrice:{value:x,usdValue:A,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(ag,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:sg()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(fg,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&E?.campaignTag?F.createElement(pb,{routeTag:G,...E.campaignTag}):F.createElement(db,{label:G.label,value:G.value}),F.createElement(Mn,{size:4,direction:"horizontal"}))})),F.createElement(oa,null),!P&&F.createElement(Mn,{size:4})):null,F.createElement("div",{id:"portal-root",className:lg()},F.createElement(Xl,{quote:e,time:Y,feeWarning:Vt,timeWarning:be,showModalFee:p,steps:q}),P&&F.createElement(ig,{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(mg,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(gg,{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(fb,{id:"widget-quote-token-amount-container",tooltipContainer:j,type:"output",direction:"vertical",price:{value:x,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:L}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(wr,{from:X.from,to:H.to,percentageChange:b,warningLevel:L}),F.createElement(Mn,{size:4}))),F.createElement(ng,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:v},F.createElement(Ng,{type:s,quoteRef:w,selected:c,setExpanded:v,container:j,expanded:k,steps:O}),F.createElement(ug,{open:k},F.createElement(dg,null),F.createElement("div",{className:rg()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(mb,{type:"quote-details",className:"widget-quote-step-details-container",key:U,tooltipContainer:j,step:G,hasSeparator:J!==O.length-1,state:G.state})})))))}i(tc,"Quote");import{Divider as Tb,Skeleton as Cb}from"@rango-dev/ui";import no from"react";import{darkTheme as hb,styled as ma}from"@rango-dev/ui";var Wg=ma("div",{$$color:"$colors$neutral100",[`.${hb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Pg=ma("div",{paddingTop:"$2"}),Lg=ma("div",{paddingLeft:"$8"}),Bg=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 yb,styled as oo}from"@rango-dev/ui";var oc=oo("div",{display:"flex"}),_g=oo("div",{padding:"$10 $0 $20"}),Mg=oo("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),Dg=oo("div",{display:"flex",justifyContent:"start",alignItems:"center"}),$g=oo("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Fg=oo("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Og=oo("div",{width:"65%",display:"flex",justifyContent:"start"}),Ug=oo("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),zg=oo("div",{padding:"$15 $0 $15 $0"}),Hg=yb({display:"flex",justifyContent:"space-between",alignItems:"center"});function br(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement($g,null,K.createElement(Og,null,K.createElement(Qg,{loading:!0,size:"medium"}),K.createElement(Wt,{size:8,direction:"horizontal"}),K.createElement(Ug,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(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(oa,null),!r&&K.createElement(Wt,{size:4})),K.createElement("div",{className:Hg()},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"})),r&&K.createElement(ft,{width:85,height:24,variant:"rounded"})),e==="basic"&&K.createElement(_g,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Mg,null,K.createElement(Dg,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(zg,null,n,K.createElement(Fg,null),n),K.createElement(Wt,{size:12})))}i(br,"QuoteSummarySkeleton");import{ChainToken as jg,Divider as rc,NextIcon as Sb,Skeleton as fa}from"@rango-dev/ui";import Be from"react";import{styled as xr}from"@rango-dev/ui";var qg=xr("div",{display:"flex",alignItems:"start"}),Gg=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}),Vg=xr("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Kg=xr("div",{display:"flex",alignItems:"center"});function Ut(t){let{separator:e=!0}=t;return Be.createElement(Be.Fragment,null,Be.createElement(Kg,null,Be.createElement(fa,{height:22,width:22,variant:"circular"}),Be.createElement(rc,{direction:"horizontal",size:8}),Be.createElement(fa,{height:15,width:148,variant:"rounded"})),Be.createElement(qg,null,Be.createElement(Bg,{hideSeparator:!e}),Be.createElement(Gg,{extraSpace:e},Be.createElement(nc,null,Be.createElement(jg,{size:"small",loading:!0}),Be.createElement(rc,{direction:"horizontal",size:8}),Be.createElement(fa,{height:12,variant:"rounded"})),Be.createElement(Vg,null,Be.createElement(Sb,{color:"gray",size:16})),Be.createElement(nc,null,Be.createElement(jg,{size:"small",loading:!0}),Be.createElement(rc,{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(Wg,{expanded:o,rounded:e!=="basic"},no.createElement(br,{type:e,tagHidden:n}),no.createElement(Pg,null,no.createElement(Cb,{height:15,variant:"rounded"})),o&&no.createElement(Lg,null,no.createElement(Tb,{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 kb(e?.outputAmount):null,y=e?it(e):null,v=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?ga.createElement(Hl,null,ga.createElement(Ir,{tagHidden:c,type:o,expanded:s})):v?ga.createElement(Hl,{onClick:()=>l?.(e),id:d},ga.createElement(tc,{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 bb}from"@rango-dev/logging-core";import{calculatePendingSwap as xb}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Ib}from"react";import{useRef as wb,useState as vb}from"react";var Eb=2e3;function ha({request:t}){let[e,o]=vb(!1),n=wb(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,Eb)),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 Xg(){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(Xg,"useFetchConfirmQuote");function ya(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})}i(ya,"throwErrorIfResponseIsNotValid");function ic(t){if(Qd(t)){let{swap:n,fromAmountRangeError:r,recommendation:a}=qd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:r}}:null}let o=Kd(t);if(o){let n=Li(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(ic,"getQuoteError");function Yg(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=Yd(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(Yg,"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 ac(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:c}=z()(),{slippage:l,customSlippage:p}=C(),u=C().getDisabledLiquiditySources(),d=C().blockchains(),f=C().tokens(),{findToken:h}=C(),{swapMode:g}=rt(),m=p||l,{fetch:S,cancelFetch:T,loading:y}=Xg();return Ib(()=>T,[]),{loading:y,fetch:i(async v=>{let w=v.selectedWallets,x=v?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=w.reduce((I,b)=>(I[b.chain]=b.address,I),{}),E={requestId:a?.requestId||"",selectedWallets:A,destination:x||void 0};try{return await S(E,!0).then(I=>{let{result:b}=I;if(!b)throw new Error(I.error??"Error fetching updated quote");ya({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let L={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};r(L);let N={slippage:m.toString(),disabledSwappersGroups:u},O=Yg({previousQuote:a??void 0,currentQuote:L,meta:{blockchains:d},selectedWallets:w,userSlippage:m,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=xb({inputAmount:o.toString(),bestRoute:b,wallets:Xd(w),settings:N,validateBalanceOrFee:!q,meta:{blockchains:d,tokens:f},swapMode:g});return{quote:L,swap:j,error:null,warnings:O}})}catch(I){let b=Sa(I);return b.type!==2&&bb(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(ac,"useConfirmSwap");function Zg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}i(Zg,"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:Zg(t.requestAmount),destinationTokenAmount:Zg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:r?r.toNumber():null}}i($n,"buildSwapEstimatePayload");var $b=Pb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Jg}`]:{width:"$48",height:"$48"}}),Fb=cc({flexGrow:1,paddingRight:"$10"}),Ob=cc({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Ub=cc({display:"flex",justifyContent:"space-between",alignItems:"center"});function Rg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=z()(),s=Db(),[c,l]=Ar(""),p=!n,[u,d]=Ar(!1),[f,h]=Ar(!1),{isActiveTab:g}=re(),m=C().getDisabledLiquiditySources(),S=Mb(m),{manager:T}=Ab(),{fetch:y,loading:k,cancelFetch:v}=ac(),[w,x]=Ar({swap:null,error:null,warnings:null}),[A,E]=Ar(!1),I=i(async({selectedWallets:P,customDestination:Z})=>{let Y=await y?.({selectedWallets:P,customDestination:Z});return x(Y),Y},"onConfirmSwap"),b=i(async()=>{if(w.swap&&n)try{await T?.create("swap",{swapDetails:w.swap},{id:w.swap.requestId});let P=`../${$.swaps}/${w.swap.requestId}`;s(P,{replace:!0}),setTimeout(()=>{e("")},0)}catch(P){l("Error: "+P?.message)}},"addNewSwap"),L=i(async()=>{h(!0),await b(),h(!1)},"onConfirm"),N=i(async()=>{w.warnings?.quote&&Md(w.warnings.quote)&&!a?E(!0):(t&&oe({type:"swapStarted",payload:{...$n(t),stepCount:t.swaps.length}}),await L())},"onStartConfirmSwap"),O=i(async()=>{x({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(P=>{x(P)}).catch(P=>console.error(P))},"onRefresh");Ta(()=>{!!S.current.length&&!m.length&&O(),S.current=m},[m.length]),Ta(()=>{p&&v()},[p]),Ta(()=>{p&&d(p)},[p]),Ta(()=>{p||y({selectedWallets:o,customDestination:r}).then(P=>x(P)).catch(P=>console.error(P))},[]),_b(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=w.warnings?.quote??null,j=w.error,ee=[];if(c&&ee.push($e.createElement(Nb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let P=`../${$.settings}`;ee.push($e.createElement(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(P)}))}return $e.createElement(se,{header:{title:sc.t("Confirm Swap"),onWallet:()=>{let P=`../${$.wallets}`;s(P)}},footer:$e.createElement($b,null,$e.createElement("div",{className:Fb()},$e.createElement(Wb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||f,disabled:!!w.error||!g,onClick:N},sc.t("Start Swap"))),$e.createElement(Jg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||f,disabled:!g,onClick:d.bind(null,!0)},$e.createElement(Bb,{size:24})))},u&&$e.createElement(Bf,{open:u,onClose:()=>d(!1),onCancel:v,loading:k,onCheckBalance:I}),$e.createElement(ce,null,$e.createElement("div",{className:Ub()},$e.createElement(Lb,{variant:"title",size:"small"},sc.t("You get")),$e.createElement("div",{className:Ob()},$e.createElement(Ui,{onClick:!k&&!u&&!A?O:void 0}))),$e.createElement(lc,{size:"12"}),xm(ee.map((P,Z)=>({element:P,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:w.error,loading:k,warning:w.warnings?.quote??null})))}i(Rg,"ConfirmSwapPage");import{i18n as io}from"@lingui/core";import{Button as kc,CustomTokensZeroStateDarkIcon as ax,CustomTokensZeroStateIcon as sx,DeleteIcon as lx,Divider as Br,IconButton as cx,MessageBox as px,NotFound as ux,styled as vc}from"@rango-dev/ui";import Se,{useState as wc}from"react";import{useNavigate as dx}from"react-router-dom";import{CloseIcon as zb,IconButton as Hb,SearchIcon as Qb,TextField as qb}from"@rango-dev/ui";import Fn from"react";import{styled as eh}from"@rango-dev/ui";var th=eh("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),oh=eh("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function Pt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,f=s.length?Fn.createElement(Hb,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Fn.createElement(zb,{color:"gray",size:10})):null;return p&&(f=p),Fn.createElement(oh,null,Fn.createElement(qb,{prefix:Fn.createElement(th,null,Fn.createElement(Qb,{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(Pt,"SearchInput");import{i18n as Cc}from"@lingui/core";import{Button as jb,CustomTokenWarning as Xb,darkTheme as fh,Divider as ro,ExternalLinkIcon as Yb,Image as Zb,ListItem as Jb,NotFound as Rb,PinIcon as ex,Skeleton as Jo,Typography as Pr,VirtualizedList as tx}from"@rango-dev/ui";import _,{useState as ox}from"react";import{useTranslation as nx}from"react-i18next";import{Divider as dh,ListItem as Kb,Skeleton as Wr}from"@rango-dev/ui";import Lt from"react";import{css as On,darkTheme as pc,ImageContainer as Gb,ListItemButton as Vb,styled as st,Typography as nh}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(),rh=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"}}),Ca=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"}}}}}),ih=st(Vb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),Sc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Tc=st(nh,{}),ah=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"}),TV=st("div",{display:"flex",alignItems:"center"}),sh=st("div",{position:"relative",[`& ${Gb}`]:{borderRadius:"$xm",overflow:"hidden"}}),lh=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),ch=st(nh,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),ph=st("a",{"& svg:hover":{color:"$colors$info"}}),uh=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 mh(t){return Lt.createElement(Ca,null,Array.from(Array(t.size),e=>Lt.createElement(Kb,{key:e,hasDivider:!0,start:Lt.createElement(Wr,{variant:"circular",width:35,height:35}),end:Lt.createElement(Nr,null,Lt.createElement(Wr,{variant:"text",size:"large",width:70}),Lt.createElement(dh,{size:4}),Lt.createElement(Wr,{variant:"text",size:"medium",width:50})),title:Lt.createElement("div",null,Lt.createElement(Wr,{variant:"text",size:"large",width:90}),Lt.createElement(dh,{size:4}),Lt.createElement(Wr,{variant:"text",size:"medium",width:90}))})))}i(mh,"LoadingTokenList");var rx=20,ix=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return _.createElement("div",{className:dc()},o?_.createElement("div",{className:uc()},o):_.createElement(yc,{className:mc()},_.createElement(Pr,{variant:"title",size:"xmedium"},r.symbol),_.createElement(ro,{direction:"horizontal",size:4}),_.createElement(Sc,{css:a},_.createElement(Tc,{variant:"body",size:"xsmall",css:s},r.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(ph,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Yb,{size:12}))))},"renderDesc");function Lr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=C().fetchStatus,u=C().blockchains(),{getBalanceFor:d,fetchingWallets:f}=C(),{isTokenPinned:h}=C(),{setFromToken:g,setToToken:m}=z()(),{t:S}=nx(),T=Ve(),[y,k]=ox(null),v=i(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):m({token:y,meta:{blockchains:u}})},"updateToken"),w=i(()=>{v(),T()},"handleImportToken"),x=i(I=>{if(I.customToken){let{customToken:L,...N}=I;return _.createElement(jb,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),k({...N,warning:!0})},"handleClick")},_.createElement(Pr,{variant:"body",size:"xsmall",color:"background"},S("import")))}let b=di(d(I));return s?s(I):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(ah,null,_.createElement(ch,{variant:"title",size:"small"},b.amount),_.createElement("div",null),b.usdValue&&_.createElement(Pr,{variant:"body",className:hc(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),A=i(()=>_.createElement(tx,{style:{flexGrow:1,minHeight:0},itemContent:I=>{let b=e[I];if(b==="skeleton")return _.createElement(Jb,{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 L=u.find(Z=>Z.name===b?.blockchain);if(!L||!b)return null;let N=b.address,O=ll(L.color,"main"),q={$$color:O.main150,[`.${fh} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${fh} &`]:{$$color:O.main150},color:"$$color"},ee=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick"),P=N?ni({contractAddress:N,blockchainMeta:L}):void 0;return _.createElement(uh,null,_.createElement(ih,{"tab-index":I,key:`${b.symbol}${N}`,id:`${b.symbol}${N}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b?.customToken,onClick:ee,start:_.createElement(sh,null,_.createElement(Zb,{src:b.image===""?ii:b.image,size:30}),t.type!=="custom-token"&&b&&h(b,t.type)&&_.createElement(lh,null,_.createElement(ex,{size:12,color:"gray"}))),title:b.name||!b.name&&!N?_.createElement(yc,null,_.createElement(Pr,{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(Xb,{container:W()}))):void 0,description:typeof b!="string"&&L.info&&N&&P?ix({address:N,token:b,customCssForTag:q,customCssForTagTitle:j,name:b.name,url:P}):b.name||void 0,end:x(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=y?Lo(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Pr,{variant:"label",size:"large"},Cc.t("Select Token")),_.createElement(ro,{size:4})),_.createElement(rh,null,_.createElement(ro,{size:4}),p==="loading"&&_.createElement(mh,{size:rx}),p==="success"&&(e.length?_.createElement(_.Fragment,null,_.createElement(yr,{token:y,address:y?.address??"",blockchain:E??void 0,onImport:w,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),_.createElement(Ca,{as:"ul"},A())):!!o&&_.createElement(Rb,{title:Cc.t("No results found"),description:Cc.t("Try using different keywords")}))))}i(Lr,"TokenList");var mx=vc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),fx=vc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),gx=vc(cx,{"&:hover":{"& svg":{color:"$secondary550"}}});function gh(){let[t,e]=wc(""),{deleteCustomToken:o}=C(),n=C().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=ho({}),p=dx(),[u,d]=wc(!1),[f,h]=wc(),g=i(y=>{let k=y.target.value;e(k)},"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,k=r?kt(r):null,v=kt(f);y===v?c({token:null}):k===v&&s({token:null}),o(f)}d(!1)},"handleDeleteCustomToken");return Se.createElement(se,{header:{title:io.t("Custom Tokens")}},Se.createElement(ce,null,Se.createElement(mx,null,n.length?Se.createElement(Se.Fragment,null,Se.createElement(Pt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:io.t("Search Token"),onChange:g}),Se.createElement(Br,{size:16}),Se.createElement(Lr,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>Se.createElement(gx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},Se.createElement(lx,{size:12,color:"gray"}))})):Se.createElement(fx,null,Se.createElement(ux,{icon:m?Se.createElement(ax,{size:200}):Se.createElement(sx,{size:200}),title:io.t("No custom tokens"),description:io.t("press the button to add your custom token")})),Se.createElement(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(px,{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"))))))}i(gh,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as Mx}from"@rango-dev/queue-manager-react";import{Button as Wc,darkTheme as Dx,Divider as vo,MessageBox as $x,NotFound as Fx,styled as Pc,Tabs as Ox,Typography as va}from"@rango-dev/ui";import{TransactionStatus as Dr}from"rango-types";import ne,{useMemo as _h,useState as $r}from"react";import{useNavigate as Ux}from"react-router-dom";import{FilterIcon as wx,Popover as vx}from"@rango-dev/ui";import Ro from"react";import{css as hx,darkTheme as ka,IconButton as yx,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",[`.${ka} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),hh=_r(yx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ka} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ka} &`]:{backgroundColor:"$neutral"},[`& ${Ec}::before`]:{backgroundColor:"$secondary100",[`.${ka} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),yh=_r("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Sh=_r("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Th=hx({display:"flex",justifyContent:"space-between",alignItems:"center"}),Ch=_r("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as kh}from"@lingui/core";import{Button as Sx,Divider as wh,ListItemButton as Tx,Radio as Cx,RadioRoot as kx,Typography as vh}from"@rango-dev/ui";import gt from"react";function Eh(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(Sh,null,gt.createElement("div",{className:Th()},gt.createElement(vh,{size:"small",variant:"body"},kh.t("Status")),gt.createElement(Sx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},kh.t("Reset"))),gt.createElement(wh,{size:10}),gt.createElement(kx,{value:e},gt.createElement(Ch,null,t.list.map((n,r)=>gt.createElement(Tx,{key:n.id,className:"widget-filter-selector-list-item-btn",style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:gt.createElement(gt.Fragment,null,gt.createElement(wh,{direction:"horizontal",size:4}),gt.createElement(vh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(Cx,{value:n.id}),onClick:o})))))}i(Eh,"FilterSelectorContent");function bc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Ro.createElement("div",null,Ro.createElement(vx,{open:a,align:"end",onOpenChange:o,container:W(),content:Ro.createElement(Eh,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Ro.createElement(hh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Ro.createElement(Ec,{isSelect:!!n},Ro.createElement(wx,{size:16,color:"black"}),!!n&&Ro.createElement(yh,null)))))}i(bc,"FilterSelector");import{i18n as xx}from"@lingui/core";import{getCurrentStep as Ix}from"@rango-dev/queue-manager-rango-preset";import{Divider as Nh,GroupedVirtualizedList as Ax,Skeleton as Nx,SwapListItem as Wh,Typography as Wx}from"@rango-dev/ui";import et,{useCallback as Ph,useEffect as Px,useRef as Lx,useState as Bx}from"react";function bh(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(bh,"calculateGroupsSoFar");import{css as Ex,darkTheme as bx,styled as Mr}from"@rango-dev/ui";var xc=Ex(),xh=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",[`.${bx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ac=Mr("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Ih=Mr("div",{gap:"$10",display:"flex",flexDirection:"column"}),Ah=Mr("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var _x=10;function Nc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=Bx([]),c=Lx(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=Ph(bh,[]),f=Ph(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,_x),s(d(p,c.current)))},[e.length]);if(Px(()=>{r||f()},[r,f]),r){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(Nx,{variant:"text",width:60,size:"small"}),et.createElement(Nh,{size:16})),et.createElement(Nh,{size:4}),et.createElement(Ih,null,m.map((y,k)=>et.createElement(Wh,{isLoading:!0,key:k}))))))}return et.createElement(Ax,{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(Wx,{variant:"label",size:"medium",className:xc()},u[h]))),itemContent:(h,g)=>{let m=l[h];if(!m)return null;let S=Ix(m),T=m.steps[0],y=m.steps[m.steps.length-1];return!T||!y?null:et.createElement(xh,{key:m.requestId},et.createElement(Wh,{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]===xx.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(Nc,"HistoryGroupedList");import{i18n as wa}from"@lingui/core";import Lh from"dayjs";var Bh=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=Lh();t.forEach(l=>{let p=Number(l.creationTime),u=Lh(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 zx=Pc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),Hx=Pc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Qx=Pc("div",{"._typography":{color:"$neutral700",[`.${Dx}&`]:{color:"$neutral900"}}}),qx=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 Mh(){let t=Ux(),{manager:e,state:o}=Mx(),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 I=E.target.value;a(I)},"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")}],k=_h(()=>!r&&!p&&h==="all"?n:n.filter(E=>{let{inputAmount:I,status:b,steps:L,requestId:N,mode:O}=E;return(!r||Mt(I,r)||Mt(b,r)||qx(L,r)||Mt(N,r))&&(!p||p===b)&&(h==="all"?!0:h==="swap"?!O||O==="swap":h==="refuel"?O==="refuel":!1)}),[n,r,p,h]),v=!k?.length&&!l,w=i(()=>f(!1),"onCloseModal"),x=i(async()=>{try{await e?.clearQueue(),f(!1)}catch(E){console.log(E)}},"onClear"),A=_h(()=>!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(va,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},ne.createElement(ce,null,ne.createElement(Hx,null,ne.createElement(Pt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Fe.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:m,style:{height:36},value:r}),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(Ox,{items:y,onChange:E=>g(E.id),value:h,type:"secondary"}),ne.createElement(vo,{size:"12"})),ne.createElement(zx,null,v&&ne.createElement(Ah,null,ne.createElement(vo,{size:32}),ne.createElement(Fx,{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")})),!v&&ne.createElement(Nc,{list:k,onSwapClick:t,groupBy:Bh,isLoading:l}))),ne.createElement(ie,{open:d,onClose:w,id:"widget-history-clear-modal",container:W()},ne.createElement(vo,{size:20}),ne.createElement($x,{type:"warning",title:Fe.t("Clear Transaction History"),description:ne.createElement(Qx,null,ne.createElement(va,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ne.createElement(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(Wc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:x},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:w},ne.createElement(va,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}i(Mh,"HistoryPage");import{i18n as py}from"@lingui/core";import{Button as xI,Divider as Gc,styled as II,WarningIcon as AI}from"@rango-dev/ui";import NI from"bignumber.js";import Ce,{useEffect as uy,useState as dy}from"react";import{useNavigate as WI}from"react-router-dom";import{i18n as $h}from"@lingui/core";import{Alert as Vx,Divider as Lc,NoRouteIcon as Kx,Typography as jx}from"@rango-dev/ui";import en from"react";import{styled as Gx}from"@rango-dev/ui";var Dh=Gx("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Bc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Kt(t,e)?en.createElement(Dh,null,en.createElement(Lc,{size:10}),en.createElement(Kx,{size:24,color:"gray"}),en.createElement(Lc,{size:4}),en.createElement(jx,{variant:"title",size:"small"},$h.t("No Routes Found")),en.createElement(Lc,{size:4}),en.createElement(Vx,{title:$h.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Bc,"SameTokensWarning");import{Alert as Xx,Button as Yx}from"@rango-dev/ui";import Oh from"react";import{i18n as Ea}from"@lingui/core";function Fh(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(Fh,"makeAlerts");function Uh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=C(),{onChangeSettings:a}=t,c=Fh(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(gi),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?Oh.createElement(Xx,{title:c.title,type:c.alertType,variant:"alarm",action:Oh.createElement(Yx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(Uh,"SlippageWarningsAndErrors");import{i18n as tI}from"@lingui/core";import{IconButton as oI,ReverseIcon as nI,Skeleton as rI,Tooltip as iI,Typography as Fr}from"@rango-dev/ui";import ht from"react";import ba from"bignumber.js";function Hh(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(Hh,"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 qh(t,e){let o=new ba(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,ba.ROUND_DOWN).toFormat(2)}`}i(qh,"formatTokenValueInUsd");import{darkTheme as Rx,styled as Mc,Typography as eI}from"@rango-dev/ui";var Gh=Mc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),Vh=Mc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${Rx} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Dc=Mc(eI,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function $c(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=C(),{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,k=p?.swaps[p?.swaps.length-1]?.to||l,v=m?y:k,w=m?k:y,x=Number(m?p?.outputAmount:p?.requestAmount),A=Number(m?p?.requestAmount:p?.outputAmount),E=x||v.usdPrice,I=A||w.usdPrice,{rawValue:b,displayValue:L}=Qh({toTokenUsdPrice:I,fromTokenUsdPrice:E});return ht.createElement(Gh,null,ht.createElement(Fr,{variant:S||T?"label":"body",size:S||T?"medium":"small",color:Hh({error:S,warning:T,isDarkTheme:g})},tI.t("Slippage:")," ",d,"%"),u?ht.createElement(rI,{height:16,width:104,variant:"rounded"}):E&&I&&ht.createElement(Vh,null,ht.createElement(Fr,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Dc,{className:"rate-text",variant:"body",size:"small"},w.symbol),ht.createElement(oI,{id:"widget-home-page-change-rate-button",onClick:r},ht.createElement(nI,{size:14,color:"secondary"})),ht.createElement(iI,{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"},L)),ht.createElement(Dc,{className:"rate-text",variant:"body",size:"small"},v.symbol),v.usdPrice&&ht.createElement(Fr,{color:"neutral600",variant:"body",size:"small"},"~",qh(Number(b),v.usdPrice))))}i($c,"SwapMetrics");import{i18n as uI}from"@lingui/core";import{Header as dI}from"@rango-dev/ui";import Eo,{useEffect as mI,useState as fI}from"react";import{i18n as sI}from"@lingui/core";import{Divider as Oc,FullExpandedQuote as lI,Typography as cI}from"@rango-dev/ui";import ve from"react";import{styled as Fc}from"@rango-dev/ui";var Kh=Fc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),jh=Fc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Xh=Fc("div",{width:"146px"});import{i18n as Or}from"@lingui/core";import{Select as aI}from"@rango-dev/ui";import Yh 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 Yh.createElement(Xh,null,Yh.createElement(aI,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(xa,"SelectStrategy");var Zh=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}=C(),{findToken:T}=C(),y=c||W(),k=!!p&&p.results.length,v=S??m,{config:{__UNSTABLE_OR_INTERNAL__:w}}=C(),x=i(I=>{if(!d||!f||!p)return null;let b={requestAmount:p.requestAmount,validationStatus:null,...I};return En({currentQuote:b,userSlippage:v,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(jh,null,ve.createElement(cI,{size:"xmedium",variant:"title"},sI.t("Sort by")),ve.createElement(xa,{container:y})),ve.createElement(Oc,{size:"10"})),e&&Array.from({length:Zh},(I,b)=>ve.createElement(ve.Fragment,{key:b},s?ve.createElement(lI,{campaignTag:w?.campaignTag,loading:!0}):ve.createElement(Ir,{tagHidden:!1,type:"list-item",expanded:!1}),b!==Zh-1&&ve.createElement(Oc,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?E.map((I,b)=>{let L=x(I),N=ic(I.swaps),O=E.length-1===b;return ve.createElement(ve.Fragment,{key:I.requestId},ve.createElement(Zo,{id:"widget-quotes-quote-info-container",showModalFee:r,container:y,selected:l?.requestId===I.requestId,tagHidden:!1,quote:{...I,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:N?.options||null,warning:L,fullExpandedMode:s,onClick:q=>{N||u("warning",L),u("error",N?.options||null),o(q)},type:"list-item"}),!O&&ve.createElement(Oc,{size:16}))}):A&&ve.createElement(Kh,null,ve.createElement(Tr,{size:s?"large":"small",error:g,fetch:n}))))}i(Ur,"Quotes");import{darkTheme as pI,styled as Jh}from"@rango-dev/ui";var Rh=Jh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${pI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),ey=Jh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var gI=100;function Uc(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=fI(!1),l=s?"":"is-hidden",{config:p}=C(),u=p?.variant==="full-expanded",d=Mo();return mI(()=>{let f=null;return a?f=setTimeout(()=>{c(!0)},gI):(c(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),Eo.createElement(Rh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${qi()} widget-expanded-quotes-container`,id:wt.EXPANDED_BOX_ID},Eo.createElement(dI,{title:uI.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(ey,null,Eo.createElement(Ur,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Mo(),onClickOnQuote:n,fullExpandedMode:u})))}i(Uc,"ExpandedQuotes");import{i18n as sy}from"@lingui/core";import{SwapInput as ly}from"@rango-dev/ui";import TI from"bignumber.js";import zr from"react";import{ReverseIcon as SI}from"@rango-dev/ui";import Hc from"react";import{keyframes as hI,styled as ty}from"@rango-dev/ui";var zc=450,yI=hI({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),oy=ty("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),ny=ty("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${yI} ${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(oy,null,Hc.createElement(ny,{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(SI,{size:12})))}i(Qc,"SwitchFromAndToButton");import{styled as ry}from"@rango-dev/ui";var iy=ry("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),ay=ry("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}=C(),k=a?y(a):null,v=di(k)?.amount??"0",w=k?new TI(k.amount).shiftedBy(-k.decimals):pe,x=!!s&&Pu(T,s.name),A=!qs(m,d,f),E=!qs(m,d,g),I=!f||!g||!g.gt(0)?null:Zt(f.toString(),g.toString());return zr.createElement(iy,null,zr.createElement(ay,null,zr.createElement(ly,{label:sy.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:v,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:x,tooltipContainer:W(),onSelectMaxBalance:()=>{let b=w.isGreaterThan(pe)?w.toFixed():"";p(b)},anyWalletConnected:T.length>0}),S==="swap"&&zr.createElement(Qc,null)),zr.createElement(ly,{selectionType:S==="swap"?"token":"chain",sharpBottomStyle:!r&&(!!m||e),label:sy.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(I??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 CI}from"@rango-dev/logging-core";import{useCallback as kI,useEffect as wI,useRef as vI,useState as EI}from"react";function cy(){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(cy,"useFetchAllQuotes");var bI=600;function Ia({refetchQuote:t}){let{fetch:e,cancelFetch:o}=cy(),{excludeLiquiditySources:n,routing:r}=C().config,{connectedWallets:a}=C(),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:k,customSlippage:v,affiliatePercent:w,affiliateRef:x,affiliateWallets:A,fetchStatus:E}=C(),I=C().getLiquiditySources(),b=C().getDisabledLiquiditySources(),L=C().excludeLiquiditySources(),{findToken:N}=C(),{swapMode:O}=rt(),[q,j]=EI(!0),ee=vI(u),P=v??k,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=jd({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=$d(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:P,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),CI(new Error("quote error"),{tags:{...qe,type:Ye[qe.type],requestBody:U}}))})}},"fetch"),Vt=kI(ai(be=>{Ee(be)},bI),[Y]);return wI(()=>{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:I,excludeLiquiditySources:L,disabledLiquiditySources:b,slippage:P,affiliateRef:x,affiliatePercent:w,affiliateWallets:A,contractCall:c}),o},[E,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,I?.length,n,b.length,P,x,w,c,JSON.stringify(A)]),{fetch:()=>Ee({inputAmount:u,fromToken:l,toToken:p,liquiditySources:I,excludeLiquiditySources:L,disabledLiquiditySources:b,slippage:P,affiliateRef:x,affiliatePercent:w,affiliateWallets:A,contractCall:c}),loading:q}}i(Ia,"useSwapInput");var PI=II("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),LI=300;function my(){let t=WI(),{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]=dy(!1),{isLargeScreen:m,isExtraLargeScreen:S}=sa(),{fetch:T,loading:y}=Ia({refetchQuote:a}),{config:k,fetchStatus:v,connectedWallets:w,customSlippage:x,slippage:A,setSlippage:E,setCustomSlippage:I}=C(),{isActiveTab:b}=re(),[L,N]=dy(!1),O=x!==null?x:A,{swapMode:q}=rt(),j=fn(O),P=Gd({fetchMetaStatus:v,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:w.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=$u(m,S,k?.variant),Y=!!n&&!!e&&!!o&&new NI(n).gt(0)&&!tm(e,o),ue=Y&&v==="success"&&y,Ee=j?.quoteValidation||c,Qe=(!Z||Z&&l?.results.length)&&(Ee||s),Xe=!!e&&!!o,St=Xe&&!!j,ct=(r||s)&&!L?T:void 0,B=i(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},LI)):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),I(null);return}I(J)}},"onChangeSlippage"),X=i(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");uy(()=>{u(),f("refetchQuote",!0)},[]),uy(()=>{g(Y)},[Y]);let G=i(()=>{P.action==="connect-wallet"?Ju({type:"clickConnectWallet"},()=>{B($.wallets)}):P.action==="confirm-warning"?N(!0):r&&(oe({type:"swapInitiated",payload:{...$n(r),walletConnected:w.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(PI,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(xI,{id:`widget-swap-${P.action}-btn`,type:"primary",size:"large",disabled:P.disabled||!b,prefix:P.action==="confirm-warning"&&Ce.createElement(AI,null),fullWidth:!0,onClick:G},P.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:k.title||(q==="swap"?py.t("Swap"):py.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:v,isExpandable:Z,onClickToken:X}),Ce.createElement(Gc,{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(Gc,{size:8}),Ce.createElement($c,{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:L,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(Uh,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Bc,null))),Z?Ce.createElement(Uc,{loading:ue,onClickOnQuote:V,fetch:T,onClickRefresh:ct,isVisible:h}):null)}i(my,"Home");import{i18n as fy}from"@lingui/core";import{Alert as BI,Divider as _I,List as MI,ListItemButton as DI,Radio as $I,RadioRoot as FI,Typography as OI}from"@rango-dev/ui";import zt from"react";function bo(){let{setLanguage:t,language:e,config:o}=C(),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 gy(){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(OI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:zt.createElement($I,{value:s}),start:zt.createElement(l,null)}});return zt.createElement(se,{header:{title:fy.t("Language")}},zt.createElement(ce,null,zt.createElement(BI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),zt.createElement(_I,{size:"8"}),zt.createElement(FI,{value:t},zt.createElement(MI,{type:zt.createElement(DI,{title:fy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(gy,"LanguagePage");import{i18n as ao}from"@lingui/core";import{Button as qI,Checkbox as GI,Image as VI,ListItemButton as KI,NotFound as jI,Typography as XI}from"@rango-dev/ui";import tt,{useState as YI}from"react";import{Checkbox as HI,Skeleton as yy}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 UI,styled as zI}from"@rango-dev/ui";var hy=zI(UI,{height:61});var QI=30;function Xc(){return Qr.createElement(Hr,null,Array.from(Array(QI),(t,e)=>Qr.createElement(hy,{hasDivider:!0,key:e,start:Qr.createElement(yy,{variant:"circular",width:35,height:35}),title:Qr.createElement(yy,{variant:"text",size:"large",width:90}),end:Qr.createElement(HI,{checked:!1})})))}i(Xc,"LoadingLiquiditySourceList");function Yc({sourceType:t}){let e=C().fetchStatus,o=C().swappers(),n=C().getDisabledLiquiditySources(),[r,a]=YI(""),s=C().toggleLiquiditySource,c=C().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(k=>k.selected).length,totalCount:d.length}}),d.forEach(k=>{f?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),m=d.map(y=>{let{selected:k,groupTitle:v,logo:w,id:x,...A}=y;return{id:`widget-setting-liquidity-source-${Tu(x.toLowerCase())}-item-btn`,start:tt.createElement(VI,{src:w,size:22,type:"circular"}),onClick:()=>{c||(oe({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:"individual",sources:[{id:v,enabled:!k}]}}),s(v))},end:tt.createElement(GI,{checked:k,disabled:c}),title:tt.createElement(XI,{variant:"title",size:"xmedium"},ao.t(v)),selected:k,groupTitle:v,logo:w,...A}}),S=i(y=>{let k=y.target.value;a(k)},"handleSearch"),T=m;return r&&(T=m.filter(y=>Mt(y.groupTitle,r))),tt.createElement(se,{header:{title:ao.t(t),suffix:tt.createElement(Kc,null,tt.createElement(qI,{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(Pt,{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(Xc,null),!T.length&&r?tt.createElement(jc,null,tt.createElement(jI,{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:k,...v}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(KI,{style:{height:"61px"},...v,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(Yc,"LiquiditySourcePage");import{i18n as ZI}from"@lingui/core";import Aa from"react";import{useNavigate as JI}from"react-router-dom";function Sy(){let t=JI(),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:ZI.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(Sy,"RoutesPage");import{i18n as by}from"@lingui/core";import{Divider as xy,getCategoriesCount as lA,SelectableCategoryList as cA}from"@rango-dev/ui";import so,{useMemo as pA,useState as Iy}from"react";import{useNavigate as uA}from"react-router-dom";import{i18n as Zc}from"@lingui/core";import{Divider as oA,Image as nA,ListItemButton as rA,NotFound as iA,Typography as Ey}from"@rango-dev/ui";import yt,{useEffect as aA,useState as sA}from"react";var Ty=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 RI,styled as Cy}from"@rango-dev/ui";var ky=Cy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Na=Cy(xl,{padding:0,margin:0,listStyle:"none",[`& ${RI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as eA,Skeleton as wy}from"@rango-dev/ui";import Wa from"react";var tA=20;function vy(){return Wa.createElement(Na,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(tA),t=>Wa.createElement(eA,{key:t,hasDivider:!0,start:Wa.createElement(wy,{variant:"circular",width:35,height:35}),title:Wa.createElement(wy,{variant:"text",size:"large",width:90})})))}i(vy,"LoadingBlockchainList");function Jc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=sA(e),{fetchStatus:l}=C();aA(()=>{c([...Ty(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?yt.createElement(iA,{title:Zc.t("No results found"),description:Zc.t("Try using different keywords")}):yt.createElement(Na,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(rA,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(nA,{src:u.logo,size:30}),title:yt.createElement(Ey,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(Ey,{variant:"label",size:"large"},Zc.t("Select Chain")),yt.createElement(oA,{size:4})),yt.createElement(ky,null,l==="loading"&&yt.createElement(vy,null),l==="success"&&p()))}i(Jc,"BlockchainList");function Pa(t){let{type:e}=t,o=Ve(),[n,r]=Iy(""),[a,s]=Iy("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=C(),f=uA(),{swapMode:h}=rt(),g=C().blockchains({type:e}),m=C().tokens(),S=pA(()=>gu(g,m),[g.length,m.length]),T=lA(S),y=!t.hideCategory&&T!==1,k=i(v=>{if(e==="custom-token")f(`..?blockchain=${v.name}`,{replace:!0});else{if(oe({type:"chainFilterApplied",payload:{side:e==="source"?"from":"to",chain:v.name,filterSource:"expanded"}}),e==="source")l(v);else if(h==="swap")c(v);else{let w=d(v);w&&p({token:w,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return so.createElement(se,{header:{title:by.t("Select Chain")}},so.createElement(ce,{view:!0},y&&so.createElement(so.Fragment,null,so.createElement(cA,{setCategory:s,category:a,blockchains:S,isLoading:u==="loading"}),so.createElement(xy,{size:24})),so.createElement(Pt,{value:n,autoFocus:!0,placeholder:by.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:v=>r(v.target.value)}),so.createElement(xy,{size:16}),so.createElement(Jc,{list:S,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:k})))}i(Pa,"SelectBlockchainPage");import{i18n as _a}from"@lingui/core";import{Divider as My,Spinner as xA}from"@rango-dev/ui";import xo,{useEffect as IA,useState as AA}from"react";import{useNavigate as NA}from"react-router-dom";import{i18n as tp}from"@lingui/core";import{BlockchainsChip as La,Divider as Py,Image as Ly,Skeleton as yA,Tooltip as SA,Typography as op}from"@rango-dev/ui";import xe from"react";import{useEffect as fA}from"react";var Ay=["ETH"];function Rc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(dA),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let c=o.limit-e.length;for(let l=0;l<=c;l++){let p=n[l];s=s.filter(u=>p?.name!==u)}}n.sort(mA(s)),r=n.splice(a)}return{list:n,more:r}}i(Rc,"prepare");function dA(t,e){let o=Ay,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(dA,"sortByMostUsedBlockchains");function mA(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(mA,"generateSortByPreferredBlockchainsFor");function Ny(t,e){return!!e.list.find(o=>o.name===t)}i(Ny,"isInVisibleList");function ep(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=C();fA(()=>{if(e?.selected){let a=Rc(t,o,e);Ny(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Rc(t,o,e);return{list:r.list,more:r.more,history:[]}}i(ep,"usePrepareBlockchainList");import{styled as gA}from"@rango-dev/ui";var Wy=gA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var TA=6,CA=12;function np(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=re(),c=ep(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=C(),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(Wy,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?TA:CA),(m,S)=>xe.createElement(yA,{key:S,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(La,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(op,{variant:"body",size:"xsmall",color:"secondary500"},tp.t("All"))),c.list.map(m=>xe.createElement(SA,{key:m.name,content:m.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(La,{className:"widget-blockchains-section-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>r(m)},xe.createElement(Ly,{src:m.logo,size:30})))),h?xe.createElement(La,{className:"widget-blockchains-section-only-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},xe.createElement(Ly,{src:f.logo,size:30})):null,g?xe.createElement(La,{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)))}i(np,"BlockchainsSection");import{useCallback as wA,useRef as vA,useState as rp}from"react";function ip(){let t=C().blockchains(),e=vA(null),{customTokens:o}=C(),[n,r]=rp(!1),[a,s]=rp([]),[c,l]=rp(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=wA(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(ip,"useSearchCustomTokens");function By(t){return t.trim()?"search":"default "}i(By,"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 _y(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(_y,"prepareTokensList");function Ma(t){let{type:e}=t,o=NA(),n=Ve(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=C(),{fetch:d,loading:f,tokens:h,cancel:g}=ip(),[m,S]=AA(""),T=e==="source"?r:a,y=T?.name??"",k=C().blockchains({type:e}),v=C().tokens({type:e,blockchain:y,searchFor:m,getBalanceFor:u}),w=_y(v,h,m,f,T?.name),x=i(N=>{e==="source"?l(N):p(N)},"updateBlockchain"),A=i(N=>{e==="source"?s({token:N,meta:{blockchains:k}}):c({token:N,meta:{blockchains:k}})},"updateToken"),E=e==="source"?"from":"to",I=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:By(m),activeChainFilter:y||"all"}})},"emitTokenSelected"),L={source:_a.t("Source"),destination:_a.t("Destination")};return IA(()=>(Ba(v,m,T?.name)&&d(m,T?.name??void 0),()=>{g()}),[v.length,m,T?.name]),xo.createElement(se,{header:{title:_a.t("Swap {type}",{type:L[e]})}},xo.createElement(ce,null,xo.createElement(np,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o($.blockchains),onChange:N=>{I(N),x(N)}}),xo.createElement(My,{size:24}),xo.createElement(Pt,{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(v,m,T?.name)&&f?xo.createElement(xA,{size:12,color:"secondary"}):void 0}),xo.createElement(My,{size:16}),xo.createElement(Lr,{list:w,selectedBlockchain:y,searchedFor:m,type:e,onChange:N=>{b(N),A(N);let O=k.find(q=>N.blockchain===q.name);O&&x(O),n()}})))}i(Ma,"SelectSwapItemsPage");import{i18n as cp}from"@lingui/core";import{Alert as oN,Button as nN,styled as rN}from"@rango-dev/ui";import tn from"react";import{useInRouterContext as iN,useSearchParams as aN}from"react-router-dom";import{i18n as zy}from"@lingui/core";import{Alert as BA,Divider as sp,InfoIcon as _A,SlippageIcon as MA,TextField as DA,Tooltip as $A,Typography as Hy}from"@rango-dev/ui";import ze from"react";import{Chip as WA,styled as qr,TextField as PA}from"@rango-dev/ui";var Dy=qr("div",{paddingTop:"$5",padding:"$10 $5"}),$y=qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${PA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Fy=qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Da=qr("div",{maxWidth:"280px",padding:"$10"}),Oy=qr(WA,{width:"61px",flexShrink:0});import{i18n as ap}from"@lingui/core";import{Typography as LA}from"@rango-dev/ui";import Gr from"react";function Uy(){return Gr.createElement(Da,null,Gr.createElement(LA,{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.")))}i(Uy,"SlippageTooltipContent");function lp(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=C(),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(Dy,null,ze.createElement(Fy,null,ze.createElement(MA,{size:16,color:"gray"}),ze.createElement(sp,{direction:"horizontal",size:4}),ze.createElement(Hy,{variant:"title",size:"xmedium"},zy.t("Slippage tolerance per swap")),ze.createElement(sp,{direction:"horizontal",size:4}),ze.createElement($A,{container:W(),side:"top",sideOffset:4,content:ze.createElement(Uy,null)},ze.createElement(_A,{color:"gray"}))),ze.createElement($y,null,fi.map((u,d)=>{let f=`slippage-${d}`;return ze.createElement(Oy,{id:`widget-slippage-chip-${u.toString()}%-btn`,key:f,onClick:()=>l(u),selected:o===null&&u===t,label:`${u.toString()}%`})}),ze.createElement(DA,{type:"number",min:"0.01",max:"30",step:"0.01",status: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(Hy,{variant:"body",size:"small"},"%"),placeholder:zy.t("Custom")})),r&&ze.createElement(ze.Fragment,null,ze.createElement(sp,{size:10}),ze.createElement(BA,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(lp,"Slippage");import{i18n as bt}from"@lingui/core";import{AutoThemeIcon as Qy,BridgesIcon as FA,ChevronRightIcon as $a,DarkModeIcon as qy,Divider as Vr,ExchangeIcon as OA,InfinityIcon as UA,InfoIcon as zA,LanguageIcon as HA,LightModeIcon as Gy,List as QA,ListItem as qA,ListItemButton as GA,Skeleton as VA,styled as KA,Switch as jA,Tabs as XA,TargetIcon as YA,Tooltip as ZA,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as JA}from"react-router-dom";var RA=KA("div",{width:"202px",height:"$40"}),eN=[{id:"light",icon:D.createElement(Gy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Light"))},{id:"dark",icon:D.createElement(qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Dark"))},{id:"auto",icon:D.createElement(Qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},bt.t("Auto"))}],tN=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(Qy,{...e});case"dark":return D.createElement(qy,{...e});default:return D.createElement(Gy,{...e})}},"getThemeIcon");function Vy(){let t=JA(),{theme:e}=C().config,{setTheme:o,theme:n}=C(),{activeLanguage:r,languages:a}=bo(),s=a.find(P=>P.local===r)?.label,c=C().fetchStatus,l=C().swappers(),p=C().getDisabledLiquiditySources(),{config:{features:u}}=C(),d=C().customTokens(),f=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),m=nt("customTokens",u),S=C().infiniteApprove,T=C().toggleInfiniteApprove,y=yi(l,p),k=y.filter(P=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(P.type)),v=k.length,w=k.filter(P=>P.selected).length,x=y.filter(P=>P.type==="DEX"),A=x.length,E=x.filter(P=>P.selected).length,I=i((P,Z)=>{switch(c){case"loading":return D.createElement(VA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(lt,{variant:"body",size:"medium",color:"$error500"},bt.t("Loading failed"));default:return D.createElement(lt,{variant:"body",size:"medium"},`${P} / ${Z}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Bridges")),end:D.createElement(D.Fragment,null,I(w,v),D.createElement(Vr,{direction:"horizontal",size:8}),D.createElement($a,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(FA,{color:"gray",size:16})},L={id:"widget-setting-exchange-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Exchanges")),end:D.createElement(D.Fragment,null,I(E,A),D.createElement(Vr,{direction:"horizontal",size:8}),D.createElement($a,{color:"black"})),start:D.createElement(OA,{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(YA,{color:"gray",size:16}),onClick:()=>t($.customTokens)},O={id:"widget-setting-language-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Language")),start:D.createElement(HA,{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(ZA,{side:"top",sideOffset:4,container:W(),content:D.createElement(Da,null,D.createElement(lt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,bt.t("Warning")),":\xA0",bt.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},D.createElement(zA,{color:"gray"}))),start:D.createElement(UA,{color:"gray",size:16}),end:D.createElement(jA,{checked:S}),onClick:()=>{oe({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:S,newValue:!S}}),T()}},j={id:"widget-setting-theme-item-btn",type:D.createElement(qA,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},bt.t("Theme")),end:D.createElement(RA,null,D.createElement(XA,{container:W(),items:eN,value:n,className:"widget-setting-theme-item-tabs-container",onChange:P=>o(P.id),type:"primary",borderRadius:"small"})),start:tN(n)},ee=h?[]:[b,L];return m||ee.push(N),g||ee.push(O),ee.push(q),!e?.singleTheme&&!f&&ee.push(j),D.createElement(QA,{type:D.createElement(GA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}i(Vy,"SettingsLists");var sN=rN("div",{paddingLeft:"$8"});function Ky(){let{isInCampaignMode:t,updateCampaignMode:e}=C(),o=t(),[,n]=aN(),r=iN(),a=i(()=>{r&&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(oN,{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(sN,null,tn.createElement(nN,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},cp.t("Reset")))}),tn.createElement(lp,null),tn.createElement(Vy,null)))}i(Ky,"SettingsPage");import{i18n as y0}from"@lingui/core";import{cancelSwap as S0}from"@rango-dev/queue-manager-rango-preset";import{useManager as T0}from"@rango-dev/queue-manager-react";import{Alert as C0}from"@rango-dev/ui";import xp from"react";import{useParams as k0}from"react-router-dom";import{i18n as Qt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as n0,getCurrentStep as r0,getRelatedWalletOrNull as i0}from"@rango-dev/queue-manager-rango-preset";import{Button as zS,Divider as a0,QuoteCost as s0,StepDetails as l0,Typography as Cp}from"@rango-dev/ui";import{useWallets as c0}from"@rango-dev/wallets-react";import HS from"bignumber.js";import{PendingSwapNetworkStatus as Hn}from"rango-types";import we,{useEffect as kp,useRef as wp,useState as Va}from"react";import{useNavigate as p0}from"react-router-dom";import{i18n as Io}from"@lingui/core";var lN=[Io.t("Sunday"),Io.t("Monday"),Io.t("Tuesday"),Io.t("Wednesday"),Io.t("Thursday"),Io.t("Friday"),Io.t("Saturday")];function jy(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"):`${lN[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(jy,"timeSince");function Xy(t){return t.finishTime?jy(parseInt(t.finishTime)):jy(parseInt(t.creationTime))}i(Xy,"getSwapDate");import Kr from"react";import{i18n as Fa}from"@lingui/core";import{Button as Yy,Divider as pp,MessageBox as cN}from"@rango-dev/ui";import Ao from"react";var Zy=i(({onCancel:t,onClose:e})=>Ao.createElement(Ao.Fragment,null,Ao.createElement(pp,{size:20}),Ao.createElement(cN,{type:"error",title:Fa.t("Cancel Swap"),description:Fa.t("Are you sure you want to cancel this swap?")}),Ao.createElement(pp,{size:32}),Ao.createElement(Yy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Fa.t("Yes, Cancel it")),Ao.createElement(pp,{size:12}),Ao.createElement(Yy,{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 Jy,Divider as up,MessageBox as pN,Typography as uN}from"@rango-dev/ui";import lo from"react";var Ry=i(({onDelete:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(up,{size:20}),lo.createElement(pN,{type:"error",title:Oa.t("Delete Transaction"),description:Oa.t("Are you sure you want to delete this swap?")}),lo.createElement(up,{size:32}),lo.createElement(Jy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Oa.t("Yes, Delete it")),lo.createElement(up,{size:12}),lo.createElement(Jy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},lo.createElement(uN,{variant:"title",size:"medium",color:"primary"},Oa.t("No, Cancel")))),"DeleteContent");import{i18n as dN}from"@lingui/core";import{Button as mN,Divider as fN,MessageBox as gN}from"@rango-dev/ui";import on from"react";var eS=i(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return on.createElement(on.Fragment,null,on.createElement(gN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&on.createElement(on.Fragment,null,on.createElement(fN,{size:"30"}),on.createElement(mN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},dN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as BN,getCurrentStep as _N,getRelatedWalletOrNull as MN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as DN}from"@rango-dev/ui";import{useWallets as $N}from"@rango-dev/wallets-react";import sS from"react";import{i18n as Un}from"@lingui/core";import{Alert as nS,Button as SN,Checkbox as TN,Divider as Ha,Image as CN,MessageBox as kN,Spinner as wN,WarningIcon as vN}from"@rango-dev/ui";import{useWallets as EN}from"@rango-dev/wallets-react";import Te,{useState as bN}from"react";import{css as hN,darkTheme as yN,styled as dp}from"@rango-dev/ui";var tS=hN({wordWrap:"break-word",display:"block"}),oS=dp("img",{width:"100%"}),Ua=dp("div",{position:"relative"}),za=dp("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${yN} &`]:{$$color:"$warning600"}});var rS=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=bN(null),{list:s}=xt(),c=re.use.isActiveTab(),{state:l,connect:p}=EN(),u=s.find(w=>w.type===e.walletType),d=u?.needsNamespace?.data.find(w=>w.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(wN,{color:"info"}):r||m?null:Te.createElement(TN,{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(w){a(Tt(w)??w)}},"handleConnect"),k=i(async()=>{if(m){n();return}y()},"handleClickButton"),v=i(()=>{if(!m)return null;let w=u?.isHub?h?.accounts?.[0]?.split(":"):f?.accounts?.[0]?.split(":"),x=w?.[w?.length-1];return x?uo(x):null},"getAddress");return Te.createElement(Te.Fragment,null,Te.createElement(kN,{type:"warning",title:Un.t("Connect {wallet}",{wallet:u.title}),description:Un.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Te.createElement(Ua,null,Te.createElement(CN,{src:u.image,size:45}),Te.createElement(za,null,Te.createElement(vN,{color:"warning",size:10})))}),m&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(Ha,{size:10}),Te.createElement(nS,{type:"success",variant:"alarm",title:Un.t("Wallet connected successfully.")})),r&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(Ha,{size:10}),Te.createElement(nS,{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:v()})),Te.createElement(Ha,{size:"40"}),Te.createElement(SN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},S()))},"ConnectWalletContent");import{i18n as iS}from"@lingui/core";import{Button as xN,Divider as IN,Image as AN,MessageBox as NN,WarningIcon as WN}from"@rango-dev/ui";import{useWallets as PN}from"@rango-dev/wallets-react";import{detectInstallLink as LN}from"@rango-dev/wallets-shared";import co from"react";var aS=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=PN(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(LN(n.installLink),"_blank"),"handleButtonClick");return co.createElement(co.Fragment,null,co.createElement(NN,{type:"warning",title:iS.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(AN,{src:n.img,size:45}),co.createElement(za,null,co.createElement(WN,{color:"warning",size:10})))}),co.createElement(IN,{size:"40"}),co.createElement(xN,{type:"primary",id:"widget-install-wallet-btn",onClick:r},iS.t("Install")))},"InstallWalletContent");var lS=i(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:r}=$N(),a=_N(e),s=a?MN(e,a):null,c=s?.walletType,l=c?Rn(r(c),n(c)):null,p=a?BN(e,a):null;return c?l===DN.NOT_INSTALLED?sS.createElement(aS,{walletType:c}):sS.createElement(rS,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function mp(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(lS,{swap:c,message:l,onClose:r}),o==="switchNetwork"&&n&&Kr.createElement(eS,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Kr.createElement(Ry,{onClose:r,onDelete:()=>{r(),a()}}),o==="cancel"&&Kr.createElement(Zy,{onClose:r,onCancel:()=>{r(),s()}}))}i(mp,"SwapDetailsModal");import{i18n as jr}from"@lingui/core";import{Button as fp,Divider as Xr,MessageBox as uS,TokenAmount as FN,Typography as dS}from"@rango-dev/ui";import ke from"react";import{Link as ON,useNavigate as UN}from"react-router-dom";var cS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",pS="/profile";function gp(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=UN(),{showProfileBanner:g}=re();return ke.createElement(ie,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(wt.SWAP_BOX_ID)||document.body},n==="success"?ke.createElement(uS,{type:"success",title:jr.t("Swap Successful")},ke.createElement(FN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),ke.createElement(Xr,{size:12}),ke.createElement(dS,{className:tS(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ke.createElement(uS,{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(ON,{to:pS},ke.createElement(oS,{src:cS,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(dS,{variant:"title",size:"medium",color:"primary"},jr.t("See Details"))))}i(gp,"SwapDetailsCompleteModal");import{i18n as Ga}from"@lingui/core";import{CopyIcon as JN,DoneIcon as RN,IconButton as e0,RangoExplorerIcon as t0,Tooltip as MS,Typography as DS,useCopyToClipboard as o0}from"@rango-dev/ui";import Bt from"react";import ZN from"react";import{i18n as KN}from"@lingui/core";import{Alert as PS,IconButton as jN,LinkIcon as XN}from"@rango-dev/ui";import No,{Fragment as YN}from"react";import{Alert as HN,ChevronDownIcon as QN,IconButton as qN}from"@rango-dev/ui";import zn,{useState as GN}from"react";import{css as Yr,darkTheme as mS,styled as Ht,Typography as zN}from"@rango-dev/ui";var fS=Ht(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${mS} &`]:{color:"$secondary500"}}}}}),gS=Ht("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),hS=Ht("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),yS=Ht("div",{padding:"$0 $20 $20 $20"}),BY=Ht("div",{display:"flex",flexDirection:"column",gap:"$10"}),SS=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",[`.${mS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),TS=Yr({padding:"$5 0"}),Qa=Yr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),CS=Yr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),kS=Yr({width:"100%",padding:"0 $20 $10"}),wS=Ht("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),vS=Ht("div",{display:"flex",flexDirection:"column",gap:"$5"}),qa=Ht(zN,{wordBreak:"break-word"});import{styled as hp}from"@rango-dev/ui";var ES=hp("div",{display:"flex",flexDirection:"column",gap:"$10"}),bS=hp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),xS=hp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function IS(t){let{message:e}=t,[o,n]=GN(!1);return zn.createElement(HN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&zn.createElement(qN,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},zn.createElement(bS,{rotated:o},zn.createElement(QN,{size:12,color:"gray"}))),footer:zn.createElement(xS,{open:o},zn.createElement(qa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(IS,"FailedAlert");import{i18n as AS}from"@lingui/core";import{Alert as yp,Button as NS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as VN}from"rango-types";import Zr from"react";function WS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:r,showNetworkModal:a}=t;return e?Zr.createElement(yp,{type:"warning",id:"widget-swap-details-change-network-alert",title:r.shortMessage,action:Zr.createElement(NS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},AS.t("Change"))}):a===VN.WaitingForConnectingWallet?Zr.createElement(yp,{type:"warning",title:r.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Zr.createElement(NS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},AS.t("Connect"))}):Zr.createElement(yp,{id:"widget-swap-details-short-alert",type:"warning",title:r.shortMessage})}i(WS,"WarningAlert");function Sp(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(ES,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(YN,{key:m},No.createElement(PS,{id:"widget-swap-details-tx-alert",type:S&&(T&&"loading"||y&&"error")||"success",title:f.description?`${f.description} Tx`:KN.t("View transaction"),action:f.url&&No.createElement(jN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},No.createElement(XN,{size:12}))}))}),d&&No.createElement(PS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&No.createElement(WS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a}),s.status==="failed"&&No.createElement(IS,{message:a}))}i(Sp,"SwapDetailsAlerts");var LS=2e3;var BS=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:ZN.createElement(Sp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function _S(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(_S,"getStepState");function $S(t){let{requestId:e}=t,[o,n]=o0(LS);return Bt.createElement(hS,{className:nn()},Bt.createElement(DS,{variant:"label",size:"large",color:"neutral700"},Ga.t("Request ID")),Bt.createElement("div",{className:Qa()},Bt.createElement(DS,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(MS,{container:W(),content:o?Ga.t("Copied To Clipboard"):Ga.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Bt.createElement(e0,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Bt.createElement(RN,{size:16,color:"secondary"}):Bt.createElement(JN,{size:16,color:"gray"}))),Bt.createElement(wS,{target:"_blank",href:`${ru}/swap/${e}`},Bt.createElement(MS,{container:W(),content:Ga.t("View on Rango Explorer"),side:"bottom"},Bt.createElement(t0,{size:20})))))}i($S,"RequestIdRow");import{i18n as FS}from"@lingui/core";import{Typography as OS}from"@rango-dev/ui";import Tp from"react";function US(t){let{date:e,isFinished:o}=t;return Tp.createElement("div",{className:nn()},Tp.createElement(OS,{variant:"label",size:"large",color:"neutral700"},o?FS.t("Finished at"):FS.t("Created at")),Tp.createElement(OS,{variant:"label",size:"small",color:"neutral700"},e))}i(US,"SwapDateRow");var u0=3e3;function vp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=c0(),l=C().blockchains(),p=C().swappers(),{findToken:u}=C(),d=z().use.retry(),f=p0(),h=wp(null),[g,m]=Va(!1),[S,T]=Va(null),[y,k]=Va(null),[v,w]=Va(null),x=wp(S),A=wp(y),E=Pe.use.getNotifications(),I=Pe.use.removeNotification(),b=E(),L=r0(e),N=L?.networkStatus,O=i(Ne=>{m(!0),T(Ne)},"handleChangeModalState"),q=i(()=>{m(!1)},"handleCloseModal"),j=i(()=>{k({type:"loading",title:Qt.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=i(()=>{k({type:"success",title:Qt.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),P=i(Ne=>{k({type:"error",title:Qt.t("Network Switch Failed"),description:Ne?.message||H.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Jd(e),Y=L?n0(e,L):null,ue=L?i0(e,L):null,Ee=Xy(e),Vt=Rd(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=>{P(Tt(Ne)??Ne)}))},"handleSwitchNetwork"),V=i(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),H=Zd(e,L,c),X=BS({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 HS(de).multipliedBy(U.toUsdPrice||0).toString():"",ei=new HS(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),an=Zt(Gn,po),rs=H.detailedMessage.content||H.shortMessage,wT=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(vS,null,we.createElement(Cp,{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 kp(()=>{b.find(_t=>_t.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(w(e.status),I(e.requestId),q()):v&&w(null))},[e.status,e.requestId]),kp(()=>{if(ct){if(O("switchNetwork"),N===Hn.WaitingForNetworkChange){j();return}if(N===Hn.NetworkChangeFailed){P();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(x.current=S,A.current=y,S==="switchNetwork"&&y?.type==="success"){let Ne=setTimeout(()=>{x.current==="switchNetwork"&&A.current?.type==="success"&&q()},u0);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(zS,{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&&!v&&we.createElement(zS,{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(fS,{compact:!0,ref:h},we.createElement($S,{requestId:o}),we.createElement(US,{date:Ee,isFinished:!!e.finishTime}),we.createElement("div",{className:CS()},we.createElement(s0,{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:kS()},we.createElement(Cp,{variant:"title",size:"small"},Qt.t("Swaps steps"))),we.createElement(a0,{size:8}),we.createElement(yS,null,X.map((Ne,_t)=>{let Dp=_t,Vn=e.steps[_t]&&_S(e.steps[_t]),vT=Vn==="error"||Vn==="in-progress"||Vn==="warning"||Vn==="completed"&&_t===X.length-1;return we.createElement(l0,{className:"widget-swap-details-step-item-container",key:Dp,step:Ne,type:"swap-progress",ref:h,state:Vn,hasSeparator:_t!==0,tabIndex:Dp,isFocused:vT,tooltipContainer:W()})}))),we.createElement(mp,{isOpen:g,state:S,switchNetworkModalState:y,onClose:q,onCancel:r,onDelete:n,message:H.detailedMessage.content,swap:e,handleSwitchNetwork:V}),we.createElement(gp,{open:!!v,diagnosisUrl:ot,onClose:()=>w(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:wT}))}i(vp,"SwapDetails");import{i18n as ja}from"@lingui/core";import{Divider as GS,NotFound as h0,Skeleton as Rr,Typography as Xa}from"@rango-dev/ui";import Ae from"react";import{i18n as d0}from"@lingui/core";import{Divider as m0,Skeleton as f0,Typography as g0}from"@rango-dev/ui";import Ie from"react";import{css as 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"}),Ka=Ep("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),p9=qt({display:"flex",justifyContent:"space-between",alignItems:"center"}),u9=qt({paddingTop:"$15",display:"flex"}),d9=qt({padding:"$15 $0"}),m9=qt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),f9=qt({paddingBottom:"$10"}),g9=qt({display:"flex",justifyContent:"start",alignItems:"center"}),h9=qt({paddingTop:"$5",display:"flex",alignItems:"center"}),y9=qt({display:"flex",alignItems:"center"}),S9=qt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),qS=qt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function bp(){return Ie.createElement(QS,null,Ie.createElement(br,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(g0,{variant:"title",size:"small"},d0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Jr,null,Ie.createElement(Ut,{separator:!1}),Ie.createElement("div",{className:qS()},Ie.createElement(m0,{direction:"horizontal",size:20}),Ie.createElement(f0,{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(bp,"LoadingSwapDetails");function VS(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(gS,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(GS,{direction:"horizontal",size:4}),Ae.createElement(Rr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(GS,{direction:"horizontal",size:4}),Ae.createElement(Rr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:nn()},Ae.createElement(Xa,{className:TS(),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(bp,null)),!o&&Ae.createElement(SS,null,Ae.createElement(h0,{title:ja.t("Not found"),description:ja.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(VS,"SwapDetailsPlaceholder");function KS(){let{manager:t,state:e}=T0(),o=!e.loadedFromPersistor,n=Et(t),{requestId:r}=k0(),a=Ve(),{fetchStatus:s}=C();if(!r)return xp.createElement(C0,{containerStyles:{margin:"20px"},type:"error",title:y0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=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}}),S0(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?xp.createElement(VS,{requestId:r,showSkeleton:c}):xp.createElement(vp,{swap:d,requestId:r,onCancel:p,onDelete:u})}i(KS,"SwapDetailsPage");import{i18n as jS}from"@lingui/core";import{Divider as w0,getCategoriesCount as v0,SelectableCategoryList as E0,styled as YS,Typography as b0,Wallet as x0}from"@rango-dev/ui";import Gt,{useState as XS}from"react";var I0=YS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),A0=YS(ce,{textAlign:"center"});function ZS(){let{fetchStatus:t}=C(),[e,o]=XS("ALL"),n=C().blockchains(),{config:r}=C(),[a,s]=XS(),c=re.use.isActiveTab(),{list:l}=xt(),p=Lu(l,n),d=v0(p)!==1,f=Bu(l,e),h=i(g=>{mu(l,r.multiWallets)||s(g)},"handleWalletItemClick");return Gt.createElement(se,{header:{title:jS.t("Connect Wallets")}},Gt.createElement(A0,null,d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(E0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),Gt.createElement(w0,{size:24})),Gt.createElement(b0,{variant:"title",size:"xmedium",align:"center"},jS.t("Choose a wallet to connect.")),Gt.createElement(I0,null,f.map((g,m)=>{let S=`wallet-${m}-${g.type}`;return Gt.createElement(x0,{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(ZS,"WalletsPage");function JS(){return pm(),Js(),N0([{path:$.home,element:He.createElement(my,null)},{path:$.routes,element:He.createElement(Sy,null)},{path:$.fromSwap,children:[{index:!0,element:He.createElement(Ma,{type:"source"})},{path:$.blockchains,element:He.createElement(Pa,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:He.createElement(Ma,{type:"destination"})},{path:$.blockchains,element:He.createElement(Pa,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:He.createElement(Ky,null)},{path:$.languages,element:He.createElement(gy,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(gh,null)},{path:$.addCustomTokens,children:[{index:!0,element:He.createElement(lf,null)},{path:$.blockchains,element:He.createElement(Pa,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:He.createElement(Mh,null)},{path:$.swapDetails,element:He.createElement(KS,null)}]},{path:$.wallets,element:He.createElement(ZS,null)},{path:$.confirmSwap,element:He.createElement(Rg,null)}])}i(JS,"AppRoutes");import{useQueueManager as K0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as j0}from"rango-sdk";import{useContext as X0,useEffect as Wp,useState as pT}from"react";import{Provider as M0}from"@rango-dev/wallets-react";import{WalletTypes as Ya}from"@rango-dev/wallets-shared";import Za,{createContext as D0,useEffect as nT,useMemo as $0,useRef as rT}from"react";import{useEffect as P0}from"react";import{Provider as W0}from"@hub3js/core";function RS(t){return t.map(e=>typeof e=="string"?e:e instanceof W0?e.id:e.config.type).join("-")}i(RS,"hashProviders");function Ip(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=C(),a=n();return P0(()=>{o(),r()},[RS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Ip,"useWalletProviders");import{legacyFormatAddressWithNetwork as L0,legacyReadAccountAddress as eT}from"@rango-dev/wallets-core/legacy";import{Events as Qn}from"@rango-dev/wallets-react";import{isEvmBlockchain as B0}from"rango-sdk";function tT(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=C(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(B0).map(m=>m.name),u=i((m,S)=>{let[T,,y,k,v]=m,w={walletType:T,network:k.network??void 0,accounts:y};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let x=hs(T,y,p,S.supportedChainNames,v.isContractWallet);x.length&&e(x,v.namespace,k.derivationPath,{walletName:T})},"onAccountsEvent"),d=i((m,S,T,y,k)=>{if(S===Qn.ACCOUNTS){let v=er(k.supportedBlockchains);T&&u([m,S,T,y,k],{supportedChainNames:v})}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,k)=>{if(S===Qn.ACCOUNTS){let v=er(k.supportedBlockchains),w=[],x=[];if(T?.forEach(E=>{let{network:I}=eT(E);p.includes(I)?w.push(E):x.push(E)}),r.filter(E=>E.walletType===m).map(E=>L0(E.address,E.chain)).length>0){if(w.length>0){let E=hs(m,w,p,v,k.isContractWallet);a(m,{chains:E.map(I=>I.chain)})}x.length>0&&a(m,{chains:x.map(E=>{let{network:I}=eT(E);return I})})}T?u([m,S,T,y,k],{supportedChainNames:v}):(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,k)=>{if(S===Qn.CONNECTED&&T){let v={walletType:m,network:y.network??void 0,accounts:y.accounts??void 0};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(S===Qn.NETWORK&&T){let v={walletType:m,network:T,accounts:y.accounts??void 0};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((m,S,T,y,k)=>{k.isHub?d(m,S,T,y,k):f(m,S,T,y,k),h(m,S,T,y,k)},"handler")}}i(tT,"useUpdates");import{LegacyEvents as _0}from"@rango-dev/wallets-core/legacy";function oT(t,e){let[o,n,r,a,s]=e;n!==_0.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(oT,"propagateEvents");var Ja=D0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function F0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=C(),a=C().blockchains(),s=C().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=rT(),u=rT(),{handler:d}=tT({onConnectWalletHandler:p,onDisconnectWalletHandler:u});nT(()=>{n().catch(console.log)},[]),nT(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let f=re.use.isActiveTab(),h=$0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Za.createElement(Ja.Provider,{value:h},Za.createElement(M0,{allBlockChains:a,providers:l,onUpdateState:(g,m,S,T,y)=>{let k=[g,m,S,T,y];d(...k),t.onUpdateState&&oT(t.onUpdateState,k)},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(F0,"Main");function Ra(t){let{config:e,...o}=t;return Za.createElement(Zu,{config:e},Za.createElement(F0,{...o,config:e}))}i(Ra,"WidgetWallets");import{globalCss as O0}from"@rango-dev/ui";var iT=i(()=>O0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");import{useWallets as U0}from"@rango-dev/wallets-react";import{useEffect as z0,useRef as H0}from"react";function aT(){let{connect:t,state:e}=U0(),o=H0({}),{fetchStatus:n}=C(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);z0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(aT,"useForceAutoConnect");import{isApprovalTX as Q0,RouteEventType as sT,StepEventType as lT,StepExecutionEventStatus as q0,WidgetEvents as es}from"@rango-dev/queue-manager-rango-preset";import{useEffect as cT}from"react";function Ap(){let t=Pe.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=C();cT(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===lT.TX_EXECUTION&&s.status===q0.TX_SENT&&!Q0(c)||s.type===lT.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]),cT(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===sT.FAILED||s.type===sT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ge.on(es.RouteEvent,r),()=>ge.off(es.RouteEvent,r)},[ge])}i(Ap,"useSubscribeToWidgetEvents");import{useManager as G0}from"@rango-dev/queue-manager-react";import{useEffect as V0}from"react";function Np(){let{isSynced:t,syncNotifications:e}=Pe(),{manager:o,state:n}=G0();V0(()=>{if(Pe.persist.hasHydrated()&&n.loadedFromPersistor&&!t){let a=Et(o);e(a),a.forEach(({swap:s})=>{if(!(s.status==="running"&&s.steps.length>1))return;let l=s.steps.findIndex(p=>p.status!=="success");l!==-1&&oe({type:"swapResumed",payload:{routeId:s.requestId,stepCount:s.steps.length,stepNumber:l+1}})})}},[Pe.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Np,"useSyncNotifications");function Pp(){aT(),iT(),Ap(),Np();let t=C().blockchains(),{canSwitchNetworkTo:e}=uT(),[o,n]=pT(null),[r,a]=pT(),s=X0(Ja),c=t.filter(j0);Wp(()=>()=>lm(),[]),Wp(()=>()=>cm(),[]),K0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),Wp(()=>(Fo.init(),Pe.persist.hasHydrated()||Pe.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),Fo.destroy),[])}i(Pp,"useBootstrap");import{styled as Y0}from"@rango-dev/ui";var dT=Y0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left",height:"100%","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function rn(){Pp();let{config:t}=C(),{activeTheme:e}=ho(t?.theme||{}),{activeLanguage:o}=bo();return Lp.createElement(Z0,{language:o},Lp.createElement(dT,{id:"swap-container",className:e()},Lp.createElement(JS,null)))}i(rn,"Main");import{setSolanaSignerConfig as yW}from"@rango-dev/signer-solana";import _p,{useEffect as Mp,useMemo as SW}from"react";function mT(){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(mT,"useFetchApiConfig");import{useState as J0}from"react";var R0=i(()=>{let[t,e]=J0(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=du(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),fT=R0;import{checkWaitingForNetworkChange as eW,makeQueueDefinition as tW}from"@rango-dev/queue-manager-rango-preset";import{Provider as oW}from"@rango-dev/queue-manager-react";import{useWallets as nW}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as rW}from"@rango-dev/wallets-shared";import{isEvmBlockchain as iW}from"rango-types";import aW,{useMemo as sW}from"react";function lW(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s,hubProvider:c}=nW(),l=sW(()=>tW({API_KEY:t.apiKey||jt("API_KEY"),BASE_URL:jt("BASE_URL"),emitter:{emit:ge.emit}}),[t.apiKey]),{blockchains:p,connectedWallets:u}=C(),d=p(),f={blockchains:u.map(w=>({accounts:[w],name:w.chain}))},h=i(async(w,x)=>a(w,x.network,x)?await r(w,[x]):void 0,"switchNetwork"),g=i(w=>!!s(w).mobileWallet,"isMobileWallet"),m=d.filter(w=>w.enabled).reduce((w,x)=>(w[x.name]=x,w),{}),S=d.filter(iW),T=i(w=>{let{supportedChains:x}=s(w);return er(x)},"getSupportedChainNames"),y=e(),k={meta:{blockchains:m,evmBasedChains:S,evmNetworkChainInfo:rW(S),getSupportedChainNames:T},getSigners:async w=>{try{return await o(w)}catch(x){throw Tt(x)??x}},wallets:f,providers:y,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:g,hubProvider:c},v=re.use.isActiveTab();return aW.createElement(oW,{queuesDefs:[l],context:k,onPersistedDataLoaded:w=>{eW(w)},isPaused:!v},t.children)}i(lW,"QueueManager");var gT=lW;import{useManager as mW}from"@rango-dev/queue-manager-react";import fW,{createContext as gW,useContext as hW}from"react";function hT(){let{findToken:t}=C(),e=C().blockchains(),o=C().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(hT,"useUpdateQuoteInputs");import{cancelSwap as cW,getCurrentNamespaceOfOrNull as pW,getCurrentStep as uW,getRelatedWalletOrNull as dW}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&&cW(o)}getCurrentStepInfo(e){let o=uW(e);return{step:o,wallet:o?dW(e,o):null,network:o?pW(e,o)?.network:null}}};var yT=gW(void 0);function Bp(t){let{manager:e}=mW(),o=re.use.isActiveTab(),n=z().use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=C(),l=new ts(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=C(),u=Iu(a()),d=C().blockchains(),f=C().tokens(),h=C().swappers(),g=C().fetchStatus,m=bo().resetLanguage,S=Pe().getNotifications(),T=Pe().clearNotifications,y=hT(),{fromBlockchain:k,toBlockchain:v,fromToken:w,toToken:x,inputAmount:A}=z()(),E={isActiveTab:o,setCurrentTabAsActive:Fo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async I=>c(I)},meta:{blockchains:d,tokens:f,swappers:h,loadingStatus:g,findToken:r},resetLanguage:m,notifications:{list:S,clearAll:T},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:w?{symbol:w.symbol,blockchain:w.blockchain,address:w.address}:null,toBlockchain:v?.name??null,toToken:x?{symbol:x.symbol,blockchain:x.blockchain,address:x.address}:null,requestAmount:A},updateQuoteInputs:y}};return fW.createElement(yT.Provider,{value:E},t.children)}i(Bp,"WidgetInfo");function ST(){let t=hW(yT);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(ST,"useWidget");function qn(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{fetchApiConfig:r}=mT(),{handleLoadCustomFont:a}=fT();return Mp(()=>{r().catch(console.log)},[]),Mp(()=>{n&&a(n)},[n]),SW(()=>{_u({API_KEY:o?.apiKey||eu(),BASE_URL:o?.apiUrl||nu})},[o.apiKey,o.apiUrl]),Mp(()=>{t.config?.signers?.customSolanaRPC&&yW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),_p.createElement(Ra,{config:o,onUpdateState:e},_p.createElement(gT,{apiKey:o.apiKey},_p.createElement(Bp,null,t.children)))}i(qn,"WidgetProvider");function TT(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(TT,"Refuel");import ns from"react";function CT(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(CT,"Widget");function kT(){let{on:t,off:e}=ge;return{on:t,off:e}}i(kT,"useWidgetEvents");var Cte={DerivationPath:cr,Namespaces:ar,Detached:lr,isOnDerivationPath:ur,isOnNamespace:pr,isOnDetached:Po};export{Qee as EventSeverity,sn as MainEvents,Ree as Networks,ote as PendingSwapNetworkStatus,Kn as QuoteEventTypes,TT as Refuel,qee as RouteEventType,cs as SUPPORTED_FONTS,Cte as StatefulConnect,Gee as StepEventType,Vee as StepExecutionBlockedEventStatus,Kee as StepExecutionEventStatus,xd as SwapModeContext,wt as UI_ID,Ze as UiEventTypes,ti as WalletEventTypes,Zee as WalletEvents,ete as WalletTypes,CT as Widget,sn as WidgetEvents,qn as WidgetProvider,Ra as WidgetWallets,dl as customizedThemeTokens,ss as pickProviderVersionWithFallbackToLegacy,Xee as readAccountAddress,ln as useStatefulConnect,xt as useWalletList,uT as useWallets,ST as useWidget,kT as useWidgetEvents,PC as widgetEventEmitter};
3
4
  //# sourceMappingURL=index.js.map