@rango-dev/widget-embedded 0.41.2-next.11 → 0.41.2-next.12

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,3 @@
1
- var Ey=Object.defineProperty;var i=(t,e)=>Ey(t,"name",{value:e,configurable:!0});import{EventSeverity as CY,RouteEventType as kY,StepEventType as TY,StepExecutionBlockedEventStatus as vY,StepExecutionEventStatus as wY}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as xY}from"@rango-dev/wallets-core/legacy";import{useWallets as si,Events as IY}from"@rango-dev/wallets-react";import{Networks as NY,WalletTypes as BY}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as LY}from"rango-types";import{Divider as vC}from"@rango-dev/ui";import So,{useEffect as wC,useRef as bC,useState as tu}from"react";import{WalletState as Iy}from"@rango-dev/ui";import{useWallets as Ay}from"@rango-dev/wallets-react";import{useReducer as Ny}from"react";function Ec(t){return!!t.derivationPath}i(Ec,"isStateOnDerivationPathStep");function Ic(t){return!!t.namespace}i(Ic,"isStateOnNamespace");var dr={status:"init",namespace:null,derivationPath:null};function Ac(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"reset":return dr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:dr;default:throw new Error("Action hasn't been defined.")}}i(Ac,"reducer");function Xt(){let{state:t,disconnect:e,connect:o}=Ay(),[n,r]=Ny(Ac,dr),a=i(async(p,m,h)=>{r({type:"reset"});try{let d=m?.map(f=>({...f,network:void 0}));return await o(p,d),{status:"connected"}}catch(d){let f=d?.message?`Error: ${d.message}`:"An unknown error happened during connecting wallet.";throw new Error(f,{cause:d})}},"runConnect"),s=i(async(p,m)=>{if(p.state===Iy.DISCONNECTED){let d=!!p.isHub,f=p.properties?.find(g=>g.name==="detached")?.value;if(d&&!f?.length||!d&&!p.needsNamespace)return await a(p.type,void 0,m);if(d&&f?.length&&f.length>1||!d&&p.needsNamespace?.data.length&&p.needsNamespace.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:p,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(d&&f?.length===1||!d&&p.needsNamespace?.data.length===1){if(p.needsNamespace&&p.needsDerivationPath){let g=p.needsNamespace.data[0];return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:g.value}}),{status:"derivation-path"}}return await a(p.type,p.needsNamespace?.data.map(g=>({namespace:g.value})),m)}}return m?.disconnectIfConnected?(await u(p.type),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),l=i(async(p,m)=>{let h=p.needsNamespace?.selection==="single",d=p.needsDerivationPath,f=m[0];if(!f)throw new Error("To confirm a namespace, you should select at least one namespace.");if(h&&d)return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:f}}),{status:"derivation-path"};if(!Ic(n))throw new Error("Something went wrong on handling namespace. Please retry.");let g=n.namespace.targetWallet.type,C=m.map(k=>({namespace:k}));return await a(g,C)},"handleNamespace"),c=i(async p=>{if(!p)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Ec(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=n.derivationPath.providerType,d=[{namespace:n.derivationPath.namespace,derivationPath:p}];return await a(m,d)},"handleDerivationPath"),u=i(async p=>{let m=t(p);return m.connected||m.connecting?(await e(p),{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:l,handleDerivationPath:c,getState:()=>n,resetState:p=>{r(p==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Xt,"useStatefulConnect");import{WalletState as Wa}from"@rango-dev/ui";import{useWallets as OS}from"@rango-dev/wallets-react";import{detectMobileScreens as US,KEPLR_COMPATIBLE_WALLETS as zS,WalletTypes as kn}from"@rango-dev/wallets-shared";import{useCallback as QS,useEffect as HS}from"react";import PS,{createContext as _S,useContext as DS,useEffect as $S,useRef as FS}from"react";import{create as LS}from"zustand";import{persist as MS}from"zustand/middleware";import{allProviders as By}from"@rango-dev/provider-all";var ca=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()}},Do=new ca;import{defineVersions as Bc,pickVersion as Wc,Provider as pa}from"@rango-dev/wallets-core";function Lc({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Mc(a);return s instanceof pa?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 pa?o.push(Bc().version("1.0.0",n).build()):o.push(Bc().version("0.0.0",n).build())}),o}return t}i(Lc,"matchAndGenerateProviders");function Mc(t){try{return Wc(t,"1.0.0")[1]}catch{return Wc(t,"0.0.0")[1]}}i(Mc,"pickProviderVersionWithFallbackToLegacy");function Pc(t){return t.map(o=>Mc(o)).map(o=>o instanceof pa?o.id:o.config.type)}i(Pc,"configWalletsToWalletName");function fr(t,e){return e.find(o=>o.name===t)?.displayName}i(fr,"getBlockchainDisplayNameFor");function pt(t,e){return e.find(o=>o.name===t)?.shortName}i(pt,"getBlockchainShortNameFor");function _c(t,e){return e.find(o=>o.name===t)?.logo}i(_c,"getBlockchainImage");function mn(t,e){return e.find(o=>o.id===t)?.title}i(mn,"getSwapperDisplayName");function uo(t,e){return e.find(o=>o.name===t)??null}i(uo,"findBlockchain");function ua(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(ua,"isTokenNative");function ut(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(ut,"createTokenHash");function $o(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i($o,"isValidTokenAddress");function dn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(c=>{typeof c!="string"&&(c=ut(c));let u=o.tokensMapByTokenHash.get(c);u&&(n[c]=u)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(c=>{l.has(c)||a(o.tokensMapByBlockchainName[c])})}return s.forEach(l=>{let c=r[l];if(!c&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}c&&(c.isExcluded?(a(o.tokensMapByBlockchainName[l]),c.tokens.forEach(u=>{let p=ut(u);delete n[p]})):a(c.tokens))}),Object.values(n)}i(dn,"matchTokensFromConfigWithMeta");function gr(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(gr,"getSupportedBlockchainsFromConfig");function $c(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i($c,"makeProvidersOptionsFromConfig");var hr={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/rango-types/main/assets/manifests/tonconnect-manifest.json"}},Wy={clientUrl:void 0},Ly={liquiditySources:void 0};function Dc(t){let e=$c(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return By(o).map(a=>a())}i(Dc,"generateProviders");var Fc=i((t,e,o)=>{let n=Dc({...hr,...t});return{config:{...hr,...t},iframe:Wy,campaignMode:Ly,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:l}=o(),c=dn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}}),u=dn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}});Do.set("supportedSourceTokens",c),Do.set("supportedDestinationTokens",u),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{config:r}=o(),a=Dc(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=$c(a);return Lc({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Oc}from"rango-types";var Uc=[Oc.EVM,Oc.SOLANA],yr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as Ky}from"rango-sdk";import{UI_ID as My}from"@rango-dev/ui";var Sr="c6381a79-2817-4602-83bf-6a641a409e32",zc="https://api.rango.exchange",Qc="https://explorer.rango.exchange",$e={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...My};import{BlockchainCategories as Uy,WalletState as Et}from"@rango-dev/ui";import{legacyReadAccountAddress as zy}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as Qy,getCosmosExperimentalChainInfo as Hy,isEvmAddress as qy,KEPLR_COMPATIBLE_WALLETS as p0,Networks as tp}from"@rango-dev/wallets-shared";import Oo from"bignumber.js";import{isCosmosBlockchain as Gy}from"rango-types";import Py from"bignumber.js";var le=new Py(0);import{WalletTypes as _y}from"@rango-dev/wallets-shared";var mo="~",Hc=[_y.LEAP];import{BlockchainCategories as da,WalletState as Oy}from"@rango-dev/ui";import{TransactionType as Cr}from"rango-sdk";var qc="Roboto",ma=[{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 Fo(t){return Array.from(new Set(t))}i(Fo,"removeDuplicateFrom");function kr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(kr,"debounce");function et(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(et,"containsText");function Kc(t,e){return t.toLowerCase()===e.toLowerCase()}i(Kc,"exactText");function jc(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(jc,"startWithText");var A=i(()=>document.getElementById($e.SWAP_BOX_ID),"getContainer"),fo=i(()=>document.getElementById($e.EXPANDED_BOX_ID),"getExpanded");function Xc(t,e,o){let n=!!e&&Kc(e,t),r=!!o&&Kc(o,t);return n!==r?n?-1:1:0}i(Xc,"compareExactMatchText");function fa(t,e,o){let n=!!e&&et(e,t),r=!!o&&et(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(fa,"compareContainsText");function ga(t,e,o){let n=!!e&&jc(e,t),r=!!o&&jc(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ga,"compareStartWithText");function Yc(t,e,o){if(!o)return 0;let n=Xc(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=Xc(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ga(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=fa(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ga(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=fa(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ga(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=fa(o,t.address,e.address);if(r!==0)return r}return 0}i(Yc,"compareWithSearchFor");var Tr=i((t,e)=>{switch(e){case da.ALL:return!0;case da.UTXO:return t===Cr.TRANSFER;case da.OTHER:return t!==Cr.TRANSFER&&t!==Cr.COSMOS&&t!==Cr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),Zc=i(t=>ma.find(o=>o.value===t)?.url,"getFontUrlByName");function Jc(t,e){let o=!!t.find(n=>n.state===Oy.CONNECTED);return e===!1&&o}i(Jc,"isSingleWalletActive");function Rc(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(Rc,"memoizedResult");import{BigNumber as ep}from"bignumber.js";var fn=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"),P=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new ep(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new ep(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 vr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var xt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),gn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function hn(t){return t.connected?Et.CONNECTED:t.connecting?Et.CONNECTING:t.installed?Et.DISCONNECTED:Et.NOT_INSTALLED}i(hn,"mapStatusToWalletState");function op(t,e,o,n){return o.filter(r=>!Hc.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:c}=t(r);return s&&(!l||!!n&&c!==n)?!1:n?!!a.find(p=>p.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:c,needsNamespace:u,supportedChains:p,needsDerivationPath:m,properties:h,isHub:d}=e(r),f=Fo(p.map(C=>C.type)),g=hn(t(r));return{title:a,image:s,link:Qy(l),state:g,type:r,showOnMobile:c,needsNamespace:u,blockchainTypes:f,needsDerivationPath:m,properties:h,isHub:d}})}i(op,"mapWalletTypesToWalletInfo");function yn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(yn,"walletAndSupportedChainsNames");function ya(t,e,o,n,r){let a=[];function s(c,u,p){if(!!!a.find(h=>h.chain===c)){let h={address:u,chain:c,walletType:t,isContractWallet:p??!1};a.push(h)}}i(s,"addAccount");let l=n||[];return e.forEach(c=>{let{address:u,network:p}=zy(c),m=l.length>0,h=l.includes(p),d=p===tp.Unknown;if(m&&!h&&!d)return;let g=p===tp.Unknown&&qy(u);if(d&&!g)return;o.includes(p)||g?r?s(p,u.toLowerCase(),r):l.filter(y=>o.includes(y)).forEach(y=>{s(y,u.toLowerCase())}):s(p,u)}),a}i(ya,"prepareAccountsForWalletStore");function go(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:c}=r;c.forEach((u,p)=>{let m=u.from.blockchain,h=u.to.blockchain,d=a===o.swaps.length-1,f=p===c.length-1;(!d&&!f||d&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(h)})}e==="all"&&n.add(l)}),Array.from(n)}i(go,"getQuoteChains");function Sn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Sn,"isAccountAndWalletMatched");var np=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?ha(n.usdValue,n.decimals):le.toFixed();return o.plus(r)},new Oo(le));return Vy(e.toString())},"calculateWalletUsdValue");function Vy(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(Vy,"numberWithThousandSeparator");var xr=i((t,e)=>{let o=Hy(Object.entries(t).map(([,n])=>n).filter(Gy));return o&&o[e]?.experimental},"isExperimentalChain");function ha(t,e){return new Oo(t).shiftedBy(-e).toFixed()}i(ha,"representAmountInNumber");function Er(t){if(!t)return null;let e=ha(t.amount,t.decimals),o=t.usdValue?ha(t.usdValue,t.decimals):null,n=P(e,8,8),r=o?P(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Er,"formatBalance");function rp(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new Oo(t.usdValue).shiftedBy(-t.decimals):le,n=e&&e.usdValue?new Oo(e.usdValue).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new Oo(t.amount).shiftedBy(-t.decimals):le,n=e&&e.amount?new Oo(e.amount).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(rp,"compareTokenBalance");function Mt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Mt,"areTokensEqual");function ip(t){return t.sort((e,o)=>+(o.state===Et.CONNECTED)-+(e.state===Et.CONNECTED)||+(o.state===Et.DISCONNECTED||o.state===Et.CONNECTING)-+(e.state===Et.DISCONNECTED||e.state===Et.CONNECTING))}i(ip,"sortWalletsBasedOnConnectionState");function Ir(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(Ir,"getConciseAddress");function ap({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(ap,"getAddress");var sp=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function lp(t){return t.map(e=>e.state).join("-")}i(lp,"hashWalletsState");function cp(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(cp,"filterBlockchainsByWalletTypes");function pp(t,e){return e===Uy.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Tr(n,e))return!0;return!1})}i(pp,"filterWalletsByCategory");var Sa={API_KEY:Sr};function Pt(t){return Sa[t]||""}i(Pt,"getConfig");function up(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Sa=e,Sa}i(up,"initConfig");var mp=20,dp=25,Ca="theme-widget",ka=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Mt(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Mt(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),Ta=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),fp=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Ar,tt=i(()=>Ar||(Ar=new Ky(Pt("API_KEY"),Pt("BASE_URL")),Ar),"httpService");function Nr(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Fo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(c=>c===s.swapperGroup)),l&&s.types.map(c=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:c,selected:!e.includes(s.swapperGroup)})})}}),n}i(Nr,"getUniqueSwappersGroups");function gp(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(gp,"sortLiquiditySourcesByGroupTitle");function Xe(t,e){return e?.[t]==="hidden"}i(Xe,"isFeatureHidden");function Uo(t,e){return e?.[t]==="enabled"}i(Uo,"isRoutingEnabled");var hp=i((t,e,o)=>Xe("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");var yp=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 c=gr({config:a}),u=r;return c.length>0&&(u=u.filter(p=>c.includes(p.name))),u.filter(p=>Uc.includes(p.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(c=>!(s.length>0&&!s.includes(c.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),l=Array.from(n.values()),c=e()._blockchainsMapByName;if(!o||!o.type)return l;let u=o.type==="source"?"from":"to",p=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=Do.get(p);m?.length||(m=dn({type:o.type,config:{blockchains:a[u]?.blockchains,tokens:a[u]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Do.set(p,m)),m=hp(m,s,a.features);let h=e().blockchains({type:o.type});return m.filter(f=>o.blockchain&&f.blockchain!==o.blockchain||!h.some(g=>g.name===f.blockchain)?!1:o.searchFor?!!(et(f.symbol,o.searchFor)||et(f.address||"",o.searchFor)||et(f.name||"",o.searchFor)):!0).sort((f,g)=>{let C=e().isTokenPinned(f,o.type),k=e().isTokenPinned(g,o.type);if(C!==k)return C?-1:1;if(o.getBalanceFor){let B=o.getBalanceFor(f),N=o.getBalanceFor(g),x=rp(B,N);if(x!==0)return x}let y=c.get(f.blockchain),T=c.get(g.blockchain),v=ua(f,y),E=ua(g,T);if(v!==E)return v?-1:1;if(f.isPopular!==g.isPopular)return f.isPopular?-1:1;if(o.searchFor){let B=Yc(f,g,o.searchFor);if(B)return B}return f.isSecondaryCoin!==g.isSecondaryCoin?f.isSecondaryCoin?1:-1:y&&T?y.sort-T.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=ut(o),s=n.get(a);return s||(s=r.find(l=>ut(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Mt(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(u=>{let p=a?.includes(u.swapperGroup);return s||!a||a.length===0?!p:p}).sort(gp)},fetch:async()=>{try{let{routing:o}=e().config,n=Uo("enableCentralizedSwappers",o),r=await tt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,l={},c=[],u=r.popularTokens,p=r.swappers.filter(d=>d.enabled),m=new Set;r.tokens.forEach(d=>{m.add(d.blockchain),c.push(d)}),r.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&m.has(d.name)&&a.set(d.name,d)}),c.forEach(d=>{let f=ut(d);l[d.blockchain]||(l[d.blockchain]=[]),s.set(f,d),l[d.blockchain].push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l,_popularTokens:u,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as jy,Catalonia as Xy,Chinese as Sp,Denmark as Yy,English as Zy,Finland as Jy,French as Ry,German as eS,Greece as tS,Hungary as oS,India as nS,Indonesian as rS,Italian as iS,Japanese as aS,Korea as sS,Lithuania as lS,Malay as cS,Netherlands as pS,Pakistan as uS,Philippines as mS,Poland as dS,Portuguese as fS,Russian as gS,SaudiArabia as hS,Serbia as yS,Slovakia as SS,SouthAfrica as CS,Spanish as kS,Swahili as TS,Swedish as vS,Thai as wS,Turkish as bS,Ukrainian as xS,Vietnamese as ES}from"@rango-dev/ui";var Cp=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:CS},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:hS},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:jy},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:Xy},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Sp},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Sp},{title:"Danish",label:"Dansk",local:"da",SVGFlag:Yy},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:pS},{title:"English",label:"English",local:"en",SVGFlag:Zy},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:mS},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:Jy},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:Ry},{title:"German",label:"Deutsch",local:"de",SVGFlag:eS},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:tS},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:nS},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:oS},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:rS},{title:"Italian",label:"Italiana",local:"it",SVGFlag:iS},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:aS},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:sS},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:lS},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:cS},{title:"Polish",label:"Polski",local:"pl",SVGFlag:dS},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:fS},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:gS},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:yS},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:SS},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:kS},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:TS},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:vS},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:wS},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:bS},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:xS},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:uS},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:ES}],zo="en";var kp=[.5,1,3],Tp=1,vp=5,wp=100,bp=0;var xp=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Tp,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let c=s===o,u=l<=9;return c&&u}))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=Fo(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=Xe("theme",n),s=Xe("language",n),l=Xe("liquiditySource",n),c=r?.singleTheme,u=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...c&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||zo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...u&&{language:o.language||zo}})},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=gr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import Ba from"bignumber.js";import IS from"mitt";var ye=IS(),AS={on:ye.on,off:ye.off};import{WidgetEvents as Ep}from"@rango-dev/queue-manager-rango-preset";var wa=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(wa||{}),ba=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(ba||{}),xa=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(xa||{}),Qo=(a=>(a[a.RouteEvent=Ep.RouteEvent]="RouteEvent",a[a.StepEvent=Ep.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Qo||{});var Ip=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...l]=a;e(c=>({...typeof s=="function"?s(c):s,lastUpdatedAt:+new Date}),...l)},"modifedSet"),o,n),"keepLastUpdated");import Ap from"bignumber.js";function _t(t){return`${t.blockchain}${mo}${t.address}${mo}${t.symbol}`}i(_t,"createAssetKey");function Np(t,e){return`${_t(e)}${mo}${t}`}i(Np,"createBalanceKey");function Cn(t){let[e,o,n]=t.split(mo);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(Cn,"extractAssetFromBalanceKey");function Ea(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[_t(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Ap(r??le).multipliedBy(o[s].amount).toString():""})})}),o}i(Ea,"computeNextBalancesWithNewPrices");function Ia(t,e){let o={};return t.balances?.forEach(n=>{let r=Np(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,l=n.price??e().findToken(n.asset)?.usdPrice,c=l?new Ap(l??le).multipliedBy(a).toString():"",u={amount:a,decimals:s,usdValue:c};o[r]=u}),o}i(Ia,"createBalanceStateForNewAccount");function Aa(t,e){for(let o in e){let n=Cn(o),r=_t(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(Aa,"updateAggregatedBalanceStateForNewAccount");function NS(t,e){let o=Cn(e),n=_t(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(NS,"removeBalanceFromAggregatedBalance");function Na(t,e,o){let n=t.connectedWallets.filter(c=>c.walletType===e);t.connectedWallets.forEach(c=>{c.walletType!==e&&(n=n.filter(u=>!(u.chain===c.chain&&u.address===c.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(c=>o.chains?.includes(c.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(c=>c.namespace?o.namespaces?.includes(c.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(c=>{let u=Cn(c);!!n.find(m=>Np(m.address,{address:u.address,blockchain:m.chain,symbol:u.symbol})===c)?a=NS(a,c):r[c]=s[c]}),{_balances:r,_aggregatedBalances:a}}i(Na,"computeNextStateAfterWalletBalanceRemoval");function BS(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(BS,"matchWalletDetailsWithConnectedWallet");var WS=Rc(),Bp=Ip((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Sn(s,a))?{...a,loading:!1,error:!1,explorerUrl:BS(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n)=>{let r=e().connectedWallets,a=o.filter(s=>!r.some(l=>Sn(s,l)));if(a.length>0){let s=a.map(l=>{let c=!r.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:c,namespace:n,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!s.some(p=>p.walletType===u.walletType&&p.chain===u.chain)),...s]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((c,u)=>((c[u.blockchain]||=[]).push(u),c),{}),s=new Set,l=r.reduce((c,u)=>{let p=`${u.address}-${u.chain}`;return s.has(p)||(s.add(p),a[u.chain]&&(c[u.address]||(c[u.address]=[]),c[u.address].push(...a[u.chain]))),c},{});Object.entries(l).forEach(async([c,u])=>{try{let{balances:p}=await tt().getMultipleTokenBalance({assets:u.map(({symbol:m,address:h,blockchain:d})=>({symbol:m,address:h,blockchain:d})),walletAddress:c});if(p){let m=e()._balances,h=e()._aggregatedBalances;p.forEach(d=>{if(parseFloat(d.amount.amount)===0)return;let f={blockChain:d.asset.blockchain,balances:[d],address:c},g={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};Ea(g,f,m);let C=Ia(f,e);h=Aa(h,C),m={...m,...C}}),t(d=>({_balances:{...d._balances,...m},_aggregatedBalances:h}))}}catch(p){console.error(p)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n)=>{ye.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}}),e().addConnectedWallet(o,n),e().fetchBalances(o)},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Na(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(ye.emit("walletEvent",{type:"disconnect",payload:{walletType: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(l=>a.includes(l.chain)?(a=a.filter(c=>c!==l.chain),{...l,selected:!0}):l);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)return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(c=>({address:c.address,blockchain:c.chain})),s;try{s=await tt().getWalletsDetails(a)}catch(c){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${c}`);return}let l=s.wallets;if(l){let c=e()._balances,u=e()._aggregatedBalances;l.forEach(m=>{if(m.failed)return;let h={_balances:c,_aggregatedBalances:u,connectedWallets:e().connectedWallets,findToken:e().findToken};Ea(h,m,c);let{_balances:d,_aggregatedBalances:f}=Na(h,r,{chains:[m.blockChain]});if(u=f,c=d,!e().connectedWallets.find(C=>C.walletType===r&&C.address===m.address&&C.chain===m.blockChain))return;let g=Ia(m,e);u=Aa(u,g),c={...c,...g}}),t(m=>({_balances:{...m._balances,...c},_aggregatedBalances:u})),e().setConnectedWalletRetrievedData(o,l);let{retryOnFailedBalances:p=!0}=n||{};if(p){let m=l.filter(h=>h.failed).map(h=>({chain:h.blockChain,walletType:r,address:h.address}));m.length>0&&await e().fetchMainTokensBalances(m,{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=_t(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let c=a[0];return n[c]}let l=n[a[0]];return a.forEach(c=>{let u=n[c],p=new Ba(u.amount),m=new Ba(l.amount);p.isGreaterThan(m)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,l)=>{let c=n[l],[,,,u]=l.split(mo);return u===o&&(s[l]=c),s},{})},getConnectedWalletsDetails:()=>WS(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,l)=>{let c=r[l],u=Cn(l);if(u.blockchain===n.chain){let p=e().findToken(u),m=c.amount?new Ba(c.amount).shiftedBy(-c.decimals):le;s.push({chain:n.chain,symbol:u.symbol,ticker:u.symbol,address:u.address,rawAmount:c.amount,decimal:c.decimals,amount:m.toString(),logo:p?.image||null,usdPrice:p?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Wp(t){return LS()(MS((...e)=>({...Bp(...e),...yp(...e),...xp(...e),...Fc(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}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Wp,"createAppStore");var Lp=_S(null);function S(){let t=DS(Lp);if($S(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(S,"useAppStore");function Mp(t){let e=FS();return e.current||(e.current=Wp(t.config)),PS.createElement(Lp.Provider,{value:e.current},t.children)}i(Mp,"AppStoreProvider");function yt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=S(),{state:r,getWalletInfo:a}=OS(),s=S().blockchains(),{handleDisconnect:l}=Xt(),c=Pc(n()),u=op(r,a,c,e);u=US()?u.filter(g=>g.showOnMobile!==!1&&r(g.type).installed):u;let p=ip(u),m=i(g=>!o.find(C=>C.walletType===g&&C.chain===e),"isExperimentalChainNotAdded"),h=QS(()=>{let g=u?.filter(C=>C.state===Wa.CONNECTING)||[];for(let C of g)l(C.type)},[lp(u)]);HS(()=>()=>{h()},[]);let d=i(g=>{let C=g.find(y=>y.type===kn.DEFAULT);return!C||C.state===Wa.NOT_INSTALLED?!1:g.filter(y=>y.state!=Wa.NOT_INSTALLED&&![kn.DEFAULT,kn.WALLET_CONNECT_2,kn.LEDGER].includes(y.type)&&a(y.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),f=i((g,C,k)=>xr(k,C)&&m(g)&&!zS.includes(g)||g==kn.DEFAULT&&!d(u),"shouldExcludeWallet");return{list:p.filter(g=>!f(g.type,e??"",s)),terminateConnectingWallets:h}}i(yt,"useWalletList");import{Modal as KS}from"@rango-dev/ui";import jS from"react";import{create as VS}from"zustand";var Pp="rango-widget";var Tn=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(Pp),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 GS=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"),Ho=GS;var ne=Ho(VS()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})}}))),ho=new Tn({onInit:()=>ne.setState({tabManagerInitiated:!0}),onClaim:()=>ne.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ne.setState({isActiveTab:!1})});function J(t){let{watermark:e}=ne();return jS.createElement(KS,{hasWatermark:e==="FULL",...t},t.children)}i(J,"WatermarkedModal");import{i18n as qo}from"@lingui/core";import{Alert as eC,Button as qp,Divider as Wr,Image as tC,MessageBox as oC,RadioRoot as nC}from"@rango-dev/ui";import pe,{useEffect as rC,useMemo as iC,useState as aC}from"react";import{i18n as ZS}from"@lingui/core";import{Checkbox as JS,Radio as RS,Typography as $a}from"@rango-dev/ui";import mt from"react";function La(t,e){return t.find(o=>o.name===e)?.logo}i(La,"getBlockchainLogo");import{Image as XS,styled as vn}from"@rango-dev/ui";var Dp=vn("ul",{padding:0,paddingTop:"$10",paddingBottom:"$20",margin:0}),Ma=vn("li",{backgroundColor:"$neutral200",padding:"$16",display:"flex",gap:"$8",cursor:"pointer",borderRadius:"$sm",alignItems:"center",variants:{unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),$p=vn("div",{flex:"1",display:"flex",flexDirection:"column",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),Fp=vn("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Pa=vn(XS,{variants:{disabled:{true:{opacity:"0.5"}}}});import{Image as Up,Tooltip as zp,Typography as YS}from"@rango-dev/ui";import It from"react";import{styled as Op}from"@rango-dev/ui";var _a=Op("div",{display:"flex",alignItems:"center",padding:0,margin:0}),Br=Op("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 Da=3;function Qp(t){let{chains:e}=t;return It.createElement(_a,null,e.slice(0,Da).map((o,n)=>It.createElement(zp,{key:o.name,container:A(),side:"bottom",align:"start",content:o.name,sideOffset:4},It.createElement(Br,{firstItem:n===0},It.createElement(Up,{src:o.logo,size:15})))),e.length>Da&&It.createElement(zp,{container:A(),side:"bottom",align:"start",sideOffset:4,content:It.createElement(_a,null,e.map((o,n)=>It.createElement(Br,{key:o.name,firstItem:n===0},It.createElement(Up,{src:o.logo,size:15}))))},It.createElement(Br,null,It.createElement(YS,{variant:"body",size:"xsmall"},"+",e.length-Da))))}i(Qp,"SupportedChainsList");function Hp(t){let{onClick:e,type:o,namespace:n}=t,r=S().blockchains();if(n.unsupported)return mt.createElement(Ma,{unsupported:!0},mt.createElement(Pa,{src:La(r,n.id),size:40,disabled:!0}),mt.createElement(Fp,null,mt.createElement($a,{variant:"label",size:"large"},n.label),mt.createElement($a,{variant:"body",size:"xsmall"},ZS.t("(Currently not supported)"))));let a=n.chains.length>1;return mt.createElement(Ma,{onClick:e},mt.createElement(Pa,{src:La(r,n.id),size:40}),mt.createElement($p,{showSupportedChains:a},mt.createElement($a,{variant:"label",size:"large"},n.label),a&&mt.createElement(Qp,{chains:n.chains})),o==="radio"?mt.createElement(RS,{value:n.value}):mt.createElement(JS,{checked:t.value}))}i(Hp,"NamespaceListItem");function wn(t){let{targetWallet:e}=t.value,o=e.needsNamespace?.selection==="single",n=e.image,[r,a]=aC([]),s=iC(()=>e.needsNamespace?.data.filter(m=>!m.unsupported),[e?.type]),l=i(m=>{a(o?[m]:h=>h.includes(m)?h.filter(d=>d!==m):h.concat(m))},"onSelect"),c=s?.length===r.length,u=i(()=>{if(o)throw new Error("onSelectAll should not be called on single selection mode.");c?a([]):s&&a(s.map(m=>m.value))},"onSelectAll"),p=i(m=>o?pe.createElement(nC,{value:r?.[0]},m):pe.createElement(pe.Fragment,null,m),"wrapRadioRoot");return rC(()=>{if(!o&&s)if(t.value.defaultSelectedChains?.length){let m=s.filter(h=>h.chains.some(d=>t.value.defaultSelectedChains?.includes(d.name)));a(m.map(h=>h.value))}else a(s.map(m=>m.value))},[]),pe.createElement(pe.Fragment,null,pe.createElement(oC,{type:"info",title:qo.t("Connect {wallet}",{wallet:e.title}),description:qo.t("This wallet supports multiple chains. Choose which chains you'd like to connect to."),icon:pe.createElement(tC,{src:n,size:45})}),o?pe.createElement(pe.Fragment,null,pe.createElement(Wr,{size:20}),pe.createElement(eC,{variant:"alarm",type:"info",title:qo.t("This wallet can only connect to one chain at a time. ")})):pe.createElement(pe.Fragment,null,pe.createElement(Wr,{size:30}),pe.createElement(qp,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:u},c?qo.t("Deselect all"):qo.t("Select all"))),pe.createElement(Dp,null,p(pe.createElement(pe.Fragment,null,e.needsNamespace?.data.map((m,h,d)=>pe.createElement(pe.Fragment,{key:m.id},pe.createElement(Hp,{value:r.includes(m.value),namespace:m,type:o?"radio":"checkbox",onClick:()=>l(m.value)}),h!==d.length-1&&pe.createElement(Wr,{size:10})))))),pe.createElement(Wr,{size:20}),pe.createElement(qp,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!r.length,onClick:()=>t.onConfirm(r)},qo.t("Connect")))}i(wn,"Namespaces");import{i18n as Go}from"@lingui/core";import{Button as cC,Divider as Kp,Image as pC,MessageBox as uC,Select as mC,TextField as dC}from"@rango-dev/ui";import dt,{useEffect as fC,useState as jp}from"react";import{namespaces as sC}from"@rango-dev/wallets-shared";var Lr={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Fa(t){let e=t?sC[t].derivationPaths:null;return e?[...e,Lr]:[]}i(Fa,"getDerivationPaths");import{styled as Gp,Typography as lC}from"@rango-dev/ui";var Vp=Gp("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Oa=Gp(lC,{paddingLeft:"$10"}),Ua={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"};var Xp="0";function bn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=jp(null),[l,c]=jp(Xp),u=a===Lr.id,p=Fa(o),m=i(({value:d})=>{let f=p?.find(g=>g.id===d);f&&(a===Lr.id&&Number.isNaN(Number(l))&&c(Xp),s(f.id))},"handleDerivationPathItemClick"),h=i(()=>{let d=p.find(f=>f.id===a);if(d)e(d.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return fC(()=>{s(Fa(o)[0]?.id||null)},[o]),dt.createElement(dt.Fragment,null,dt.createElement(Kp,{size:20}),dt.createElement(uC,{type:"info",title:Go.t("Select Derivation Path"),description:Go.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:dt.createElement(pC,{src:n,size:45})}),dt.createElement(Vp,null,dt.createElement(Oa,{variant:"body",size:"xsmall",color:"$neutral600"},Go.t("Choose Derivation Path Template")),dt.createElement(mC,{value:a||"",options:p.map(d=>({value:d.id,label:d.label})),variant:"filled",handleItemClick:m,styles:{trigger:Ua}}),dt.createElement(Kp,{size:20}),dt.createElement(Oa,{variant:"body",size:"xsmall",color:"$neutral600"},u?Go.t("Enter Path"):Go.t("Enter Index")),dt.createElement(dC,{type:u?"text":"number",variant:"contained",value:l,onChange:d=>c(d.target.value),style:Ua})),dt.createElement(cC,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!p||!a||!l},Go.t("Confirm")))}i(bn,"DerivationPath");import{i18n as Vo}from"@lingui/core";import{Image as yC,MessageBox as za,WalletState as SC}from"@rango-dev/ui";import{useWallets as CC}from"@rango-dev/wallets-react";import yo from"react";import{keyframes as gC,styled as Mr}from"@rango-dev/ui";var nW=Mr("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Yp=Mr("div",{position:"relative"}),hC=gC({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Zp=Mr("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${hC} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Jp=Mr("div",{"& img":{borderRadius:"50%"}});function Qa(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=CC();return hn(a(n))===SC.CONNECTED?yo.createElement(za,{type:"success",title:Vo.t("Wallet Connected"),description:Vo.t("Your wallet is connected, you can use it to swap.")}):o?yo.createElement(za,{type:"error",title:Vo.t("Failed to Connect"),description:o||Vo.t("Your wallet is not connected. Please try again.")}):yo.createElement(za,{type:"loading",title:Vo.t("Connecting to your wallet"),description:Vo.t("Click connect in your wallet popup."),icon:yo.createElement(Yp,null,yo.createElement(Jp,null,yo.createElement(yC,{src:r,size:45})),yo.createElement(Zp,null))})}i(Qa,"ConnectStatus");import{i18n as Ha}from"@lingui/core";import{Button as kC,Divider as Rp,MessageBox as TC}from"@rango-dev/ui";import Pr from"react";function qa(t){let{displayName:e,onConfirm:o}=t;return Pr.createElement(TC,{title:Ha.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:Ha.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},Pr.createElement(Rp,{size:18}),Pr.createElement(Rp,{size:32}),Pr.createElement(kC,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Ha.t("Confirm")))}i(qa,"ExperimentalChain");function eu(t,e){return t().status==="init"&&!!e}i(eu,"isOnStatus");function xn(t){return t().status==="namespace"}i(xn,"isOnNamespace");function En(t){return t().status==="derivationPath"}i(En,"isOnDerivationPath");var xC=3e3,EC=300;function Co(t){let e=bC(),[o,n]=tu(!1),[r,a]=tu(),s=i(y=>{a(y.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=yt(),{handleConnect:c,handleDerivationPath:u,handleNamespace:p,getState:m,resetState:h}=Xt(),d=i(y=>{p(t.wallet,y).then(k).catch(s)},"handleConfirmNamespaces"),f=i(y=>{if(!y)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");u(y).then(k).catch(s)},"handleDerivationPathConfirm"),g=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((y,T)=>{let v=y.status==="connected",E=["disconnected","disconnected-unhandled"].includes(y.status);v?(t.onConnect?.(),T||(e.current=setTimeout(g,xC))):E&&g()},"afterConnected");return wC(()=>{if(t.wallet){C();let y=!1,T=!0;i(()=>{setTimeout(()=>{T=!1,y||n(!0)},EC)},"beforeConnecting")(),c(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","derivation-path"].includes(E.status)||(y=!0),k(E,T)}).catch(s)}},[t.wallet]),So.createElement(J,{open:o,onClose:g,onExit:()=>{C(),l(),t.onClose&&t.onClose()},container:A()},eu(m,t.wallet)&&So.createElement(So.Fragment,null,So.createElement(Qa,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),So.createElement(vC,{direction:"vertical",size:32})),xn(m)&&So.createElement(wn,{onConfirm:d,value:m().namespace}),En(m)&&So.createElement(bn,{onConfirm:f,value:m().derivationPath}))}i(Co,"StatefulConnectModal");import{Provider as WC}from"@rango-dev/wallets-react";import _r,{createContext as LC,useEffect as au,useMemo as MC,useRef as su}from"react";import{useEffect as IC}from"react";function ou(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(ou,"hashProviders");function Ga(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=S(),a=n();return IC(()=>{o(),r()},[ou(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Ga,"useWalletProviders");import{legacyFormatAddressWithNetwork as AC,legacyReadAccountAddress as nu}from"@rango-dev/wallets-core/legacy";import{Events as ko}from"@rango-dev/wallets-react";import{isEvmBlockchain as NC}from"rango-sdk";function ru(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=S(),{onConnectWalletHandler:l,onDisconnectWalletHandler:c}=t,u=s().filter(NC).map(g=>g.name),p=i((g,C)=>{let[k,,y,,T]=g,v=ya(k,y,u,C.supportedChainNames,T.isContractWallet);v.length&&e(v,T.namespace)},"onAccountsEvent"),m=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains);k&&p([g,C,k,y,T],{supportedChainNames:v})}if(C===ko.CONNECTED){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}C===ko.PROVIDER_DISCONNECTED&&(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),C===ko.NAMESPACE_DISCONNECTED&&n(g,k)},"handleUpdatesForHub"),h=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains),E=[],B=[];if(k?.forEach(x=>{let{network:w}=nu(x);u.includes(w)?E.push(x):B.push(x)}),r.filter(x=>x.walletType===g).map(x=>AC(x.address,x.chain)).length>0){if(E.length>0){let x=ya(g,E,u,v,T.isContractWallet);a(g,{chains:x.map(w=>w.chain)})}B.length>0&&a(g,{chains:B.map(x=>{let{network:w}=nu(x);return w})})}k?p([g,C,k,y,T],{supportedChainNames:v}):(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}if(C===ko.ACCOUNTS&&y.connected){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForLegacy"),d=i((g,C,k,y,T)=>{if(C===ko.NETWORK&&y.network){let v=`${g}-${y.network}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((g,C,k,y,T)=>{T.isHub?m(g,C,k,y,T):h(g,C,k,y,T),d(g,C,k,y,T)},"handler")}}i(ru,"useUpdates");import{LegacyEvents as BC}from"@rango-dev/wallets-core/legacy";function iu(t,e){let[o,n,r,a,s]=e;n!==BC.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(iu,"propagateEvents");var Dr=LC({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function PC(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=S(),a=S().blockchains(),s=S().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:c}=Ga(s.wallets,l),u=su(),p=su(),{handler:m}=ru({onConnectWalletHandler:u,onDisconnectWalletHandler:p});au(()=>{n().catch(console.log)},[]),au(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let h=ne.use.isActiveTab(),d=MC(()=>({onConnectWallet:f=>{u.current=f},onDisconnectWallet:f=>{p.current=f}}),[]);return _r.createElement(Dr.Provider,{value:d},_r.createElement(WC,{allBlockChains:a,providers:c,onUpdateState:(f,g,C,k,y)=>{let T=[f,g,C,k,y];m(...T),t.onUpdateState&&iu(t.onUpdateState,T)},autoConnect:!!h,configs:{wallets:s.wallets}},t.children))}i(PC,"Main");function $r(t){let{config:e,...o}=t;return _r.createElement(Mp,{config:e},_r.createElement(PC,{...o,config:e}))}i($r,"WidgetWallets");import la from"react";import _C,{Fragment as DC}from"react";import{MemoryRouter as $C,useInRouterContext as FC}from"react-router";function lu({children:t}){let o=FC()?DC:$C;return _C.createElement(o,null,t)}i(lu,"AppRouter");import{I18nManager as $I}from"@rango-dev/ui";import wc from"react";import Pe from"react";import{useRoutes as wI}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as jo,useRef as Vr}from"react";import Ye from"bignumber.js";import{create as QC}from"zustand";import{subscribeWithSelector as HC}from"zustand/middleware";import{i18n as St}from"@lingui/core";import{getRelatedWalletOrNull as zC,RouteEventType as GL}from"@rango-dev/queue-manager-rango-preset";import ze from"bignumber.js";import{PendingSwapNetworkStatus as qr}from"rango-types";import{i18n as Fe}from"@lingui/core";var ee=i(()=>({genericServerError:Fe.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Fe.t("Please reset your liquidity sources."),description:Fe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Fe.t("No Routes Found."),description:Fe.t("Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination.")},bridgeLimitErrors:{increaseAmount:Fe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Fe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Fe.t("High Price Impact"),title:Fe.t("Price impact is too high!"),description:Fe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Fe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Fe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Fe.t("USD Price Unknown"),title:Fe.t("USD Price Unknown, Cannot calculate Price Impact."),description:Fe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Fe.t("Confirm USD Price Unknown")}}),"errorMessages");function cu(t){switch(t.type){case 0:return t.diagnosisMessage??ee().noResultError.title;case 1:return ee().genericServerError;default:return""}}i(cu,"getQuoteErrorMessage");import{i18n as Fr}from"@lingui/core";var To=i(()=>({connectWallet:Fr.t("Connect Wallet"),swap:Fr.t("Swap"),swapAnyway:Fr.t("Swap anyway"),ethWarning:Fr.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Va(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(Va,"getFeeLabel");var Ka=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],pu=100,uu=30,mu=15,du=60;var fu=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],gu=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as UC}from"@rango-dev/queue-manager-rango-preset";import WL from"bignumber.js";function yu(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(yu,"getRequiredBalanceOfWallet");function $t(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i($t,"getPriceImpactLevel");function Ur(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=UC(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=uo(a?a.toBlockchain:n.fromBlockchain,e),c=uo(r.toBlockchain,e),u=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),p=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:u,toBlockchain:c,toToken:p,inputAmount:m}}i(Ur,"createRetryQuote");function Ko(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=In(o),s=ft(o);if(o&&a&&s){let u=Dt(a.toString(),s.toString());if(!!u&&vu(a,u)){let m=Qr(o?.swaps,n),h=$t(u);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:u,totalFee:m,warningLevel:h}}}if(e&&xu(e,o))return{type:4,usdValueChange:P(ft(o)?.minus(ft(e)??0).toString()??"0",null,2),percentageChange:P(Dt(ft(e)??"1",ft(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let l=Hr(o.swaps),c=r>vp;if(bu(t.userSlippage.toString(),l)){if(c&&parseFloat(l??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:wu(o,r),minRequiredSlippage:l};return null}i(Ko,"generateQuoteWarnings");function Su(t){return![4].includes(t.type)}i(Su,"isQuoteWarningConfirmationRequired");function Dt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:ja(t.toString(),e.toString());return n&&n<0?n:null}i(Dt,"getPriceImpact");var Cu=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"),zr=i((t,e)=>e.sort((o,n)=>{let r=i(u=>u.scores?.find(p=>p.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),c=n.requestId.toLowerCase();return l.localeCompare(c)}),"sortQuotesBy"),ku=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),Tu=i(t=>{let e=i((o,n)=>{let r=Ka.indexOf(o.value),a=Ka.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function vu(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return fu.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new ze(r)))}i(vu,"hasHighValueLoss");function Eu(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new ze(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ze(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(Eu,"hasLimitError");function Iu(t){let e=(t||[]).filter(l=>{let c=l.fromAmountMinValue?new ze(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new ze(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?c?.gte(l.fromAmount)||u?.lte(l.fromAmount):c?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new ze(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ze(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=St.t({id:"Required: >= {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=St.t({id:"Required: > {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=St.t({id:"Required: <= {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=St.t({id:"Required: < {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Iu,"getLimitErrorMessage");function Au(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:c}=t;return e!=="success"?{title:To().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:To().swap,action:"confirm-swap",disabled:!0}:s?{title:To().swapAnyway,action:"confirm-warning",disabled:!1}:c?{title:To().ethWarning,action:"confirm-warning",disabled:!1}:{title:To().swap,action:"confirm-swap",disabled:!1}:{title:To().connectWallet,action:"connect-wallet",disabled:!1}}i(Au,"getSwapButtonState");function Xa(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(le))&&e&&e!=="0"&&n!==0)}i(Xa,"canComputePriceImpact");function Ya(t,e){let o=le;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new ze(r.amount).multipliedBy(a||0))}return o}i(Ya,"getUsdFeeOfStep");function Qr(t,e){return t.reduce((o,n)=>o.plus(Ya(n,e)),le)}i(Qr,"getTotalFeeInUsd");function Za(t){let e=le;return e=e.plus(new ze(t.amount).multipliedBy(t.price||0)),e}i(Za,"getUsdFee");function Nu(t){return t.reduce((e,o)=>e.plus(Za(o)),le)}i(Nu,"getTotalFeesInUsd");function Bu(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(Bu,"getFeesGroup");function Wu(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(Wu,"checkSlippageErrors");function wu(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(wu,"checkSlippageWarnings");function Hr(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(Hr,"getMinRequiredSlippage");function bu(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(bu,"hasProperSlippage");function Lu(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:c,slippage:u,affiliateRef:p,affiliatePercent:m,affiliateWallets:h,destination:d,contractCall:f}=t,g=a?.reduce((y,T)=>(y[T.chain]=T.address,y),{}),C=[];return r?.forEach(y=>{C.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:m??void 0,affiliateWallets:h??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:C,selectedWallets:g??{},slippage:u.toString(),contractCall:f,...d&&{destination:d},...c&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!c&&{swapperGroups:l?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i(Lu,"createQuoteRequestBody");function Mu(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Mu,"getWalletsForNewSwap");function In(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new ze(e).multipliedBy(o)}i(In,"getUsdInputFrom");function ft(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new ze(e).multipliedBy(o)}i(ft,"getUsdOutputFrom");function ja(t,e){return new ze(e).div(new ze(t)).minus(1).multipliedBy(pu).toNumber()}i(ja,"getPercentageChange");function xu(t,e){let o=In(t),n=ft(t),r=ft(e);if(!o||!n||!r)return!1;let a=ja(n.toString(),r.toString());return gu.some(({threshold:s,minInput:l})=>a<=s&&o.isGreaterThanOrEqualTo(l))}i(xu,"isOutputAmountChangedExcessively");function Pu(t,e,o){let n=t.validationStatus,r=go({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>yu(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,c=P(new ze(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),u=P(new ze(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),p="";return s.reason==="FEE"&&(p=St.t(" for network fee")),s.reason==="INPUT_ASSET"&&(p=St.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(p=St.t(" for input and network fee")),St.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:u,symbol:l,reason:p,currentAmount:c,blockchain:pt(s.asset.blockchain,o)}})})}i(Pu,"generateBalanceWarnings");function An(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==qr.NetworkChanged}i(An,"isNetworkStatusInWarningState");function _u(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,"")),An(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?zC(t,e):null)?.walletType,p=u?o?.(u)?.name:null;switch(e?.networkStatus){case qr.WaitingForConnectingWallet:r=p?St.t("Connect {wallet}",{wallet:p}):r;break;case qr.WaitingForQueue:r=r||St.t("Waiting for other running tasks to be finished");break;case qr.WaitingForNetworkChange:r=r||St.t("Waiting for changing wallet network");break;default:r=r||"";break}}a=a||"",r=r||"";let l=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:l}}}i(_u,"getSwapMessages");function Du(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(Du,"getLastConvertedTokenInFailedSwap");function $u(t){return t.status==="failed"}i($u,"shouldRetrySwap");function Fu(t,e,o,n,r,a){if(!n||t)return!0;let s=go({filter:"all",quote:n}),l=go({filter:"required",quote:n}),c=s.every(m=>r.some(h=>h.chain===m)),u=l.every(m=>r.some(h=>h.chain===m)),p=o&&a?$o(a,o):!1;return!e&&!c||e&&!o||e&&!!o&&(!p||!u)}i(Fu,"isConfirmSwapDisabled");function Ou(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Ou,"isTokensIdentical");var Gr=i((t,e)=>t?.usdPrice?new Ye(e||le).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),O=Ho(QC()(HC(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Ye(0),outputUsdValue:new Ye(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=le,a=o.inputUsdValue;return gn(o.inputAmount)?(e&&(n=e?.outputAmount?new Ye(e?.outputAmount):null,a=In(e)??le,r=ft(e)??le),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new Ye(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new Ye(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new Ye(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:Gr(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 Ye(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:null,outputUsdValue:new Ye(0),selectedQuote:null},...!!o.fromToken&&{inputUsdValue:Gr(o.fromToken,e)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Gr(n??null,s),outputUsdValue:new Ye(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?Gr(e.toToken,e.outputAmount?.toString()||""):new Ye(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new Ye(0),inputUsdValue:new Ye(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new Ye(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})})))),Uu=O.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ye.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&&ye.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function zu(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:c,toBlockchain:u}=O(),p=S().config,m=S().fetchStatus,h=S().blockchains(),{findToken:d}=S(),{setAffiliateRef:f,setAffiliatePercent:g,setAffiliateWallets:C}=S(),k=p?.from?.tokens,y=p?.from?.blockchains,T=p?.to?.tokens,v=p?.to?.blockchains,E=Vr(void 0),B=Vr(void 0),N=Vr(void 0),x=Vr(void 0);jo(()=>{typeof p.amount<"u"&&t(p.amount.toString())},[p?.amount]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.from?.blockchain),b=p?.from?.token,I=b&&d(b);(w||!w&&N.current)&&n(w??null),I?a({token:I,meta:{blockchains:h}}):!I&&E.current&&a({token:null}),N.current=p?.from?.blockchain,E.current=p?.from?.token}},[p?.from?.token?.symbol,p?.from?.token?.address,p?.from?.token?.blockchain,p?.from?.blockchain,m]),jo(()=>{ka(s,k)&&a({token:null}),Ta(c,y)&&n(null)},[k,y]),jo(()=>{ka(l,T)&&a({token:null}),Ta(u,v)&&o(null)},[T,v]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.to?.blockchain),b=p?.to?.token,I=b&&d(b);(w||!w&&x.current)&&o(w??null),I?e({token:I,meta:{blockchains:h}}):!I&&B.current&&e({token:null}),x.current=p?.to?.blockchain,B.current=p?.to?.token}},[p?.to?.token?.symbol,p?.to?.token?.address,p?.to?.token?.blockchain,p?.to?.blockchain,m]),jo(()=>{f(p?.affiliate?.ref??null),g(p?.affiliate?.percent??null),C(p?.affiliate?.wallets??null)},[p?.affiliate?.ref,p?.affiliate?.percent,p?.affiliate?.wallets])}i(zu,"useSyncStoresWithConfig");import{useEffect as es,useRef as qC}from"react";import{useInRouterContext as GC,useLocation as VC,useSearchParams as KC}from"react-router-dom";function Ja(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(Ja,"convertTokenSearchParamToAsset");function Ra(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Ra,"tokenToSearchParam");function os(){let t=VC(),[e,o]=KC(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:c,setToBlockchain:u,setFromToken:p,setToToken:m,setInputAmount:h}=O(),d=S().fetchStatus,f=S().blockchains(),g=GC(),{updateIframe:C,updateCampaignMode:k}=S(),y=S().isInCampaignMode(),T=qC(),{findToken:v}=S(),E=i(()=>{let N={};for(let[L,K]of e.entries())L.startsWith("utm_")&&(N[L]=K);let x=e.get("fromAmount"),w=e.get("fromBlockchain"),b=e.get("fromToken"),I=e.get("toBlockchain"),_=e.get("toToken"),M=e.get("autoConnect"),q=e.get("clientUrl"),R=e.get("liquiditySources"),X=e.get("blockchain");return{fromAmount:x,fromBlockchain:w,fromToken:b,toBlockchain:I,toToken:_,autoConnect:M,clientUrl:q,liquiditySources:R,utmQueryParams:N,blockchain:X}},"getUrlSearchParams"),B=i(N=>{for(let x in N)N[x]||delete N[x];o(N,{replace:!0})},"updateUrlSearchParams");es(()=>{let{autoConnect:N,clientUrl:x,utmQueryParams:w,blockchain:b}=E();g&&d==="success"&&B({fromBlockchain:n?.name,fromToken:Ra(a),toBlockchain:r?.name,toToken:Ra(s),fromAmount:l,autoConnect:N??void 0,clientUrl:x??void 0,blockchain:b??void 0,liquiditySources:y?T.current:void 0,...w})},[t.pathname,l,n,a,r,s,y]),es(()=>{if(!g)return;let N=E();if(!T.current&&N.liquiditySources&&(T.current=N.liquiditySources),N.fromAmount&&h(N.fromAmount),d==="success"){let x=f.find(_=>_.name===N.fromBlockchain),w=N.fromToken&&x?v(Ja(N.fromToken,x)):void 0,b=f.find(_=>_.name===N.toBlockchain),I=N.toToken&&b?v(Ja(N.toToken,b)):void 0;x&&(c(x),w&&p({token:w,meta:{blockchains:f}})),b&&(u(b),I&&m({token:I,meta:{blockchains:f}}))}},[d]),es(()=>{let{clientUrl:N,liquiditySources:x}=E();C("clientUrl",N||void 0),k("liquiditySources",x?.split(",")??void 0)},[])}i(os,"useSyncUrlAndStore");import{i18n as Ro}from"@lingui/core";import{Alert as cT,Button as pT,darkTheme as uT,Divider as Bs,DoneIcon as mT,styled as dT,TextField as fT,Typography as gT}from"@rango-dev/ui";import Ue,{useState as hT}from"react";import{useNavigate as yT,useSearchParams as ST}from"react-router-dom";import{ChevronRightIcon as jC,Divider as Vu,Image as XC,Typography as Ku}from"@rango-dev/ui";import Ct from"react";import{darkTheme as Qu,styled as ns}from"@rango-dev/ui";var Hu=ns("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Qu} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Qu} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),qu=ns("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),Gu=ns("div",{display:"flex"});function rs(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return Ct.createElement(qu,null,Ct.createElement(Ku,{size:"large",variant:"label"},n),Ct.createElement(Vu,{size:10}),Ct.createElement(Hu,{onClick:s?void 0:e,disabled:s},Ct.createElement(Gu,null,r&&Ct.createElement(Ct.Fragment,null,Ct.createElement(XC,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),Ct.createElement(Vu,{size:4,direction:"horizontal"})),Ct.createElement(Ku,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),Ct.createElement(jC,{size:12,color:"black"})))}i(rs,"BlockchainSelectorButton");import{i18n as ss}from"@lingui/core";import{Button as JC,Divider as Ru,MessageBox as RC}from"@rango-dev/ui";import Zt,{useEffect as em,useState as ls}from"react";import{i18n as Kr}from"@lingui/core";import{Button as Ju,Divider as vo,ExternalLinkIcon as YC,Image as ZC,Typography as Yo}from"@rango-dev/ui";import Se from"react";var ju="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function Xu(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(Xu,"generateExplorerLink");import{darkTheme as Xo,styled as Yu}from"@rango-dev/ui";var is=Yu("a",{textDecoration:"none",color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${Xo} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${Xo} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),Zu=Yu("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${Xo} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"}}});function as(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,l=Xu(n.address,s),c=i(()=>window.open(ju,"_blank"),"onClickLearnMore");return Se.createElement(J,{open:e,dismissible:!0,onClose:o,onExit:r,container:A()},Se.createElement(Zu,null,Se.createElement(ZC,{src:n.image===""?yr:n.image,size:45,type:"circular"}),Se.createElement(vo,{size:4}),Se.createElement(Yo,{variant:"title",size:"medium"},n.symbol),Se.createElement(Yo,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),Se.createElement(vo,{size:4}),Se.createElement(Yo,{variant:"body",size:"medium"},l?Se.createElement(is,{hasHover:!0,href:l,target:"_blank",rel:"nofollow noreferrer"},n.address,Se.createElement(YC,{size:12,color:"gray"})):Se.createElement(is,null,n.address)),Se.createElement(vo,{size:4}),n.coinSource&&Se.createElement(Yo,{className:"_coin-source",variant:"body",size:"xsmall"},Kr.t("via")," ",Se.createElement(Yo,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),Se.createElement(vo,{size:"32"}),Se.createElement(Yo,{size:"medium",variant:"body",className:"_custom-token-description"},Kr.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."))),Se.createElement(vo,{size:40}),Se.createElement(vo,{size:10}),Se.createElement(Ju,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Kr.t("Import Anyway")),Se.createElement(vo,{size:10}),Se.createElement(Ju,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:c},Kr.t("Learn More")))}i(as,"CustomTokenModal");function Nn(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:l,onExitErrorModal:c,onExitImportModal:u}=t,{setCustomToken:p}=S(),[m,h]=ls(!1),[d,f]=ls(!1),[g,C]=ls(!1),k=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),T=i(()=>{C(!0),y()},"handleErrorModalButtonClick"),v=i(()=>{g&&n?.type==="network-error"&&(C(!1),k()),c()},"handleExit"),E=i(()=>{e&&(p(e),l())},"handleSubmit");return em(()=>{n&&h(!0)},[n]),em(()=>{o&&e&&f(!0)},[o,e]),Zt.createElement(Zt.Fragment,null,Zt.createElement(J,{open:m,dismissible:!0,onClose:y,onExit:v,container:A()},Zt.createElement(RC,{title:n?.title??"",type:"error",description:n?.message||ss.t("Failed Network, Please retry.")},Zt.createElement(Ru,{size:40}),Zt.createElement(Ru,{size:10}),Zt.createElement(JC,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:T},n?.type==="network-error"?ss.t("Retry"):ss.t("Add another custom token")))),o&&e&&Zt.createElement(as,{blockchain:o,token:e,onSubmitClick:E,onClose:()=>f(!1),open:d,onExit:u}))}i(Nn,"ImportCustomToken");import{useManager as rT}from"@rango-dev/queue-manager-react";import{BottomLogo as iT,Divider as Am,Header as aT}from"@rango-dev/ui";import be,{useEffect as ti,useRef as Nm,useState as Bm}from"react";import{useRef as ek}from"react";function jr(){return window.self!==window.top}i(jr,"isAppLoadedIntoIframe");function cs(){let t=ek(null),{iframe:e}=S(),o=jr()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let c of l)n({type:"widget_height",data:{height:c.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(cs,"useIframe");import{useNavigate as tk}from"react-router-dom";function Oe(){let t=tk();return()=>t(-1)}i(Oe,"useNavigateBack");import{createTheme as hs,darkTheme as gk,lightTheme as hk}from"@rango-dev/ui";import{useEffect as yk,useState as Sk}from"react";import{theme as dk,darkColors as fk}from"@rango-dev/ui";import fs from"react";function ok(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(ok,"expandShortHexColor");function nk(t){return/[0-9]+$/.test(t)}i(nk,"isOverridingColor");function rk(t,e){return t.padStart(e,"0")}i(rk,"pad");function ps(t){let e=Math.min(Math.max(Math.round(t),0),255);return rk(e.toString(16),2)}i(ps,"intToHex");function ik(t){return`#${ps(t.red)}${ps(t.green)}${ps(t.blue)}`}i(ik,"rgbToHex");function ak(t){let e=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);return{red:e,green:o,blue:n}}i(ak,"hexToRGB");function sk(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(sk,"generateShade");function lk(t,e){let o=.11*e;return{red:t.red+(255-t.red)*o,green:t.green+(255-t.green)*o,blue:t.blue+(255-t.blue)*o}}i(lk,"generateTint");function ck(t){return tm(t,sk)}i(ck,"calculateShades");function pk(t){return tm(t,lk)}i(pk,"calculateTints");function tm(t,e){let o=ak(t),n=[];for(let r=1;r<9;r++)n.push(ik(e(o,r)));return n}i(tm,"calculateColors");function us(t,e,o){let a=pk(t).reverse().concat(t),s=ck(t),l=a.concat(s),c={},u=l.length;for(let p=0;p<u;p++){let m=100+(o?u-1-p:p)*50;c[`${e}${m}`]=l[p]}return c}i(us,"createTintsAndShades");function ms(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)&&!nk(r)){let c=ok(a);Object.assign(n,us(c,r,s))}}return{...n,...e}}i(ms,"expandToGenerateThemeColors");var om=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),uk=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=om(o%52)+e;return om(o%52)+e},"toAlphabeticName"),mk=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),ds=i(t=>uk(mk(5381,JSON.stringify(t))>>>0),"toHash");function gs(t){let e=dk.colors,o={...e,...fk},n,r;if(t?.light){let s={colors:ms(e,t.light)};n={id:`${Ca}-light-${ds(s)}`,tokens:s}}if(t?.dark){let s={colors:ms(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Ca}-dark-${ds(s)}`,tokens:s}}return{light:n,dark:r}}i(gs,"customizedThemeTokens");function nm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>fs.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(fs.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(fs.cloneElement(e,{key:l}))}}),o}i(nm,"joinList");function rm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(rm,"doesWindowPreferDarkColorScheme");function Zo(t){let{colors:e,fontFamily:o=qc,borderRadius:n=mp,secondaryBorderRadius:r=dp}=t,[a,s]=Sk(rm()?"dark":"light"),{theme:l}=S(),{dark:c,light:u}=gs(e),p=hs({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[p.className,hk.className],h=[p.className,gk.className];if(u){let f=hs(u.id,u.tokens);m.push(f.className)}if(c){let f=hs(c.id,c.tokens);h.push(f.className)}return yk(()=>{let f=i(g=>{g.matches?s("dark"):s("light")},"switchThemeListener");return rm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",f),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",f)}},[]),{activeTheme:i(()=>{let f=m.join(" "),g=h.join(" ");return l==="auto"?a==="dark"?g:f:l==="dark"?g:f},"getActiveTheme"),mode:l==="auto"?a:l}}i(Zo,"useTheme");var gt=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 im}from"@lingui/core";import{Alert as Ck,Button as kk}from"@rango-dev/ui";import am from"react";function ys(t){return am.createElement(Ck,{action:am.createElement(kk,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},im.t("Activate this tab")),type:"warning",variant:"alarm",title:im.t("Another tab is open and handles transactions.")})}i(ys,"ActivateTabAlert");import{i18n as Ss}from"@lingui/core";import{Button as Tk,Divider as vk,MessageBox as wk}from"@rango-dev/ui";import Xr from"react";function Cs(t){let{open:e,onClose:o,onConfirm:n}=t;return Xr.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Xr.createElement(wk,{title:Ss.t("Activate current tab"),type:"warning",description:Ss.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.")},Xr.createElement(vk,{size:20}),Xr.createElement(Tk,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},Ss.t("Confirm"))))}i(Cs,"ActivateTabModal");import{ChevronLeftIcon as Ek}from"@rango-dev/ui";import fm from"react";import{css as bk,darkTheme as sm,IconButton as xk,styled as wo}from"@rango-dev/ui";var At=wo(xk,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${sm} &`]:{backgroundColor:"$neutral"}}}),lm=wo("div",{position:"absolute",background:"$secondary500",[`.${sm} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Jt=wo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),cm=wo("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=wo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),um=wo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),mm=bk({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),dm=wo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function ks(t){return fm.createElement(At,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},fm.createElement(Ek,{color:"black",size:16}))}i(ks,"BackButton");import{i18n as Ik}from"@lingui/core";import{Button as Ak,Typography as Nk}from"@rango-dev/ui";import Ts from"react";function vs(t){return Ts.createElement(Jt,null,Ts.createElement(Ak,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Ts.createElement(Nk,{variant:"label",size:"medium",color:"error500"},Ik.t("Cancel"))))}i(vs,"CancelButton");import{i18n as Bk}from"@lingui/core";import{Image as Wk,Tooltip as Lk,WalletIcon as Mk}from"@rango-dev/ui";import bo from"react";function ws(t){let{list:e}=yt(),o=e.filter(r=>r.state==="connected"),n=o.length?bo.createElement("div",{className:mm()},o.map(r=>bo.createElement(dm,{key:r.title},bo.createElement(Wk,{src:r.image,size:14})))):Bk.t("Connect Wallet");return bo.createElement(Lk,{container:t.container,side:"bottom",content:n},bo.createElement(At,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&bo.createElement(lm,null),bo.createElement(Mk,{size:18,color:"black"})))}i(ws,"WalletButton");import{i18n as Zr}from"@lingui/core";import{NotificationsIcon as Xk,Popover as Yk,SettingsIcon as Zk,Tooltip as Jr,TransactionIcon as Jk}from"@rango-dev/ui";import Be from"react";import{Notifications as $k}from"@rango-dev/ui";import Fk from"react";import{useNavigate as Ok}from"react-router-dom";import{create as Pk}from"zustand";import{persist as _k,subscribeWithSelector as Dk}from"zustand/middleware";var we=Ho(Pk()(_k(Dk((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(c=>c.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(c=>c.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 bs(){let t=Ok(),{getNotifications:e,clearNotifications:o}=we(),n=e(),r=S().blockchains(),{findToken:a}=S();return Fk.createElement($k,{list:n,getBlockchainImage:l=>_c(l,r),getTokenImage:l=>a(l)?.image,onClickItem:i(l=>{t(`${F.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(bs,"NotificationContent");import{useManager as Uk}from"@rango-dev/queue-manager-react";import{InProgressIcon as zk}from"@rango-dev/ui";import gm from"react";var Qk=i(()=>{let{manager:t}=Uk();return gt(t).map(({swap:o})=>o).find(o=>o.status==="running")?gm.createElement(um,null,gm.createElement(zk,{color:"info",size:6})):null},"InProgressTransactionBadge"),hm=Qk;import{EventSeverity as Hk}from"@rango-dev/queue-manager-rango-preset";import{Typography as qk}from"@rango-dev/ui";import ym from"react";function Sm(){let{getNotifications:t}=we(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===Hk.WARNING);return o?ym.createElement(cm,{isSever:n},ym.createElement(qk,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(Sm,"NotificationsBadge");import{RefreshProgressButton as Gk}from"@rango-dev/ui";import xs,{useEffect as Vk,useState as Cm}from"react";var Kk=1e3,km=60,jk=100;function Yr({onClick:t}){let[e,o]=Cm(0),[n,r]=Cm(!1),a=i(c=>{document.hidden&&c&&s(c)},"handleVisibilityChange");Vk(()=>{let c;return t?c=window.setInterval(()=>{o(u=>u+1),e===km&&l()},Kk):s(c),document.addEventListener("visibilitychange",()=>a(c)),()=>{document.removeEventListener("visibilitychange",()=>a(c)),c&&clearInterval(c)}},[e,t]);let s=i(c=>{c&&clearInterval(c),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return xs.createElement(At,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},xs.createElement(pm,{onTransitionEnd:()=>r(!1),isRefetched:n},xs.createElement(Gk,{size:22,color:t?"black":"gray",progress:e/km*jk})))}i(Yr,"RefreshButton");function xo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=S(),l=Xe("notification",s)||r.includes("notifications");return Be.createElement(Be.Fragment,null,!r.includes("refresh")&&Be.createElement(Jr,{container:a||A(),side:"top",content:Zr.t("Refresh")},Be.createElement(Yr,{onClick:e})),!l&&Be.createElement(Yk,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:A(),content:Be.createElement(bs,null)},Be.createElement("div",null,Be.createElement(Jr,{container:A(),side:"top",content:Zr.t("Notifications")},Be.createElement(At,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},Be.createElement(Xk,{size:18,color:"black"}),Be.createElement(Sm,null))))),!r.includes("settings")&&Be.createElement(Jr,{container:A(),side:"top",content:Zr.t("Settings")},Be.createElement(At,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},Be.createElement(Zk,{size:18,color:"black"}))),!r.includes("history")&&Be.createElement(Jr,{container:A(),side:"top",content:Zr.t("History")},Be.createElement(At,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},Be.createElement(Jk,{size:18,color:"black"}),Be.createElement(hm,null))))}i(xo,"HeaderButtons");import{i18n as Es}from"@lingui/core";import{Divider as vm,MessageBox as tT,RefreshIcon as oT}from"@rango-dev/ui";import Jo from"react";import{Button as Rk,styled as eT}from"@rango-dev/ui";var Tm=eT(Rk,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Is(t){let{open:e,onClose:o}=t;return Jo.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Jo.createElement(tT,{title:Es.t("Something went wrong"),type:"error",description:Es.t("Something went wrong. Please refresh the app.")},Jo.createElement(vm,{size:30}),Jo.createElement(Tm,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},Jo.createElement(oT,{size:20,color:"primary"}),Jo.createElement(vm,{size:4,direction:"horizontal"}),Es.t("Refresh"))))}i(Is,"RefreshModal");function As(t){let e=t.target;if(e){let o=e.scrollTop,n=A();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(As,"onScrollContentAttachStatusToContainer");import{css as nT,styled as Rr}from"@rango-dev/ui";var wm="700px",ei=nT({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),bm=Rr("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:wm},fixed:{height:wm}},showBanner:{true:{overflow:"visible"}}}}),xm=Rr("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Em=Rr("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"}}}),Im=Rr("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function oe(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=cs(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l,connectedWallets:c,config:{__UNSTABLE_OR_INTERNAL__:u}}=S(),[p,m]=Bm(!1),{config:{features:h,theme:d}}=S(),{watermark:f}=ne(),g=f==="FULL",{activeTheme:C}=Zo(d||{}),[k,y]=Bm(!1),T=Xe("connectWalletButton",h),{isActiveTab:v,tabManagerInitiated:E,showActivateTabModal:B,setShowActivateTabModal:N,activateCurrentTab:x}=ne(),w=Oe(),{manager:b}=rT(),_=gt(b).map(({swap:K})=>K).some(K=>K.status==="running"),M=i(()=>x(ho.forceClaim,_),"onActivateTab"),q=i(()=>{r.onWallet?.()},"onConnectWallet"),R=typeof r.hasBackButton>"u"||r.hasBackButton,X=Nm(null),L=Nm(null);return ti(()=>{let K=(u?.swapBoxBanner?.routes?.length??0)===0,ae=!!u?.swapBoxBanner?.routes?.some(Q=>location.pathname.endsWith(Q));y(!!u?.swapBoxBanner&&(K||ae))},[u?.swapBoxBanner?.routes?.toString(),location.pathname]),ti(()=>(jr()&&L.current&&e(L.current),()=>{o()}),[]),ti(()=>(X.current?.addEventListener("scroll",As),()=>{X.current?.removeEventListener("scroll",As)}),[]),ti(()=>{m(l==="failed")},[l]),be.createElement(bm,{height:s,id:$e.SWAP_BOX_ID,className:`${C()} ${ei()}`,ref:L,showBanner:k},be.createElement(aT,{prefix:R?be.createElement(ks,{onClick:()=>{w(),r.onBack?.()}}):null,title:r.title,suffix:be.createElement(be.Fragment,null,r.suffix,r.onWallet&&!T&&be.createElement(ws,{container:A(),onClick:q,isConnected:!!c?.length}),r.onCancel&&be.createElement(vs,{onClick:r.onCancel}))}),be.createElement(xm,{ref:X},n),be.createElement(Cs,{open:B,onClose:()=>N(!1),onConfirm:M}),be.createElement(Em,null,be.createElement("div",{className:"footer__content"},E&&!v&&be.createElement("div",{className:"footer__alert"},be.createElement(ys,{onActivateTab:M}),be.createElement(Am,{size:10})),a),be.createElement(Am,{size:12}),be.createElement("div",{className:`footer__logo ${g?"logo__show":"logo__hidden"}`},be.createElement(iT,null))),k&&be.createElement(Im,null,u?.swapBoxBanner?.element),be.createElement(Is,{open:p,onClose:()=>m(!1)}))}i(oe,"Layout");import{styled as sT}from"@rango-dev/ui";var Wm="$20 $20 $10 $20",Bn=sT("div",{padding:Wm,overflowY:"auto",flexGrow:1});import{styled as lT}from"@rango-dev/ui";var re=lT("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 Rt}from"@lingui/core";import{useState as Ns}from"react";function Lm(){let[t,e]=Ns(!1),[o,n]=Ns(null),[r,a]=Ns(null),{findToken:s}=S(),l=S().customTokens(),c=i(()=>{a(null),e(!1),n(null)},"resetState");function u(m,h){switch(m){case"duplicated":return{type:m,title:Rt.t("Duplicate Token"),message:Rt.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:m,title:Rt.t("Token Already Exists"),message:Rt.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:m,title:Rt.t("Token Not Found"),message:Rt.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:h}})};case"network-error":return{type:m,title:Rt.t("Network error"),message:Rt.t("An error occurred while retrieving token data.")}}}return i(u,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:m,tokenAddress:h})=>{e(!0);try{if(l.some(k=>k.address?.toLowerCase()===h.toLowerCase())){let k=u("duplicated");n(k);return}let f=await tt().getCustomToken({blockchain:m,address:h});if(!f||!f.token||f.error){let k=u("not-found",m);n(k);return}let g=f.token;if(s({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let k=u("token-exist");n(k);return}return a({...g,warning:!0})}catch(d){if(d.code==="ERR_BAD_REQUEST"){let f=u("not-found",m);n(f);return}n(u("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:c}}i(Lm,"useFetchCustomToken");var CT=dT("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${uT} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Mm(){let t=yT(),[e]=ST(),o=Oe(),n=S().blockchains(),r=e.get("blockchain")||"",a=uo(r,n),[s,l]=hT(""),{fetchCustomToken:c,token:u,loading:p,error:m,resetState:h}=Lm(),d=!!a&&$o(a,s),f=!a||!s||!d,g=i(()=>{a&&c({blockchain:r,tokenAddress:s})},"getCustomToken");return Ue.createElement(oe,{header:{title:Ro.t("Add Custom Token")}},Ue.createElement(re,null,Ue.createElement(CT,null,Ue.createElement("div",null,Ue.createElement(rs,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:Ro.t("Select chain"),placeholder:Ro.t("Select chain")}),Ue.createElement(Bs,{size:"24"}),Ue.createElement(gT,{size:"large",variant:"label"},Ro.t("Enter Address")),Ue.createElement(Bs,{size:10}),Ue.createElement(fT,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:Ro.t("Enter token address"),size:"large",value:s,suffix:!!s&&d&&Ue.createElement(mT,{color:"success",size:12}),onChange:C=>l(C.target.value)}),!d&&!!s&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Bs,{size:4}),Ue.createElement(cT,{type:"error",variant:"alarm",title:"Invalid Address"}))),Ue.createElement(pT,{id:"widget-add-custom-token-import-btn",disabled:f,type:"primary",variant:"contained",loading:p,size:"large",onClick:g},Ro.t("Import"))),Ue.createElement(Nn,{token:u,blockchain:a??void 0,address:s,error:m??void 0,fetchCustomToken:c,onCloseErrorModal:()=>{m?.type!=="network-error"&&l("")},onImport:o,onExitErrorModal:h,onExitImportModal:h})))}i(Mm,"AddCustomTokenPage");import{i18n as al}from"@lingui/core";import{useManager as ow}from"@rango-dev/queue-manager-react";import{Alert as nw,Button as rw,css as ll,Divider as sl,IconButton as Af,styled as iw,Typography as aw,WalletIcon as sw}from"@rango-dev/ui";import Le,{useEffect as Ni,useLayoutEffect as lw,useRef as cw,useState as Hn}from"react";import{useNavigate as pw}from"react-router-dom";import{i18n as Eo}from"@lingui/core";import{Alert as qT,BalanceErrors as GT,Button as sd,ChevronLeftIcon as VT,Divider as Fs,MessageBox as KT,Typography as Os}from"@rango-dev/ui";import te,{useCallback as jT,useEffect as ld,useMemo as XT,useState as on}from"react";import{useNavigate as YT}from"react-router-dom";import{i18n as Ps}from"@lingui/core";import{Alert as bT,ChevronDownIcon as xT,CloseIcon as ET,Divider as Um,IconButton as zm,PasteIcon as IT,Typography as AT,WalletIcon as NT}from"@rango-dev/ui";import We,{useEffect as BT,useRef as WT}from"react";import ii,{useRef as vT}from"react";import*as en from"@radix-ui/react-collapsible";import{keyframes as Pm,styled as oi}from"@rango-dev/ui";var Ws=300,kT=Pm({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),TT=Pm({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),_m=oi(en.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Ls=oi(en.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),ni=oi(en.Content,{overflow:"hidden",variants:{open:{true:{animation:`${kT} ${Ws}ms ease-out`},false:{animation:`${TT} ${Ws}ms ease-out`}}}}),ri=oi("div",{transition:`all ${Ws}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function ai(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,c=vT(null);return ii.createElement(_m,{ref:c,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&ii.createElement(Ls,{className:"collapsible_trigger",onClick:a},s),ii.createElement(ni,{className:"collapsible_content",open:e},r),l==="bottom"&&ii.createElement(Ls,{className:"collapsible_trigger",onClick:a},s))}i(ai,"CustomCollapsible");import{darkTheme as Dm,styled as Ms,TextField as wT}from"@rango-dev/ui";var $m=Ms("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),Fm=Ms(wT,{backgroundColor:"$neutral100",padding:"$15"}),Om=Ms("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Dm} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${Dm} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Qm(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=O(),{config:s}=S(),l=S().blockchains(),c=fr(e.name,l),u=WT(null),p=s?.defaultCustomDestinations?.[e.name],m=navigator?.userAgent.includes("Firefox"),d=n&&!!r&&e&&!$o(e,r),f=i(()=>{a("")},"handleClear"),g=i(async k=>{if(k.preventDefault(),navigator.clipboard!==void 0){let y=await navigator.clipboard.readText();a(y),u?.current?.focus()}},"handlePaste"),C=i(()=>r?We.createElement(zm,{id:"widget-custom-destination-close-icon-btn",onClick:f,variant:"ghost"},We.createElement(ET,{size:12,color:"gray"})):m?null:We.createElement(zm,{id:"widget-custom-destination-paste-icon-btn",onClick:g,variant:"ghost"},We.createElement(IT,{size:16})),"renderSuffix");return BT(()=>{!!p&&r===null&&(a(p),o(!0))},[p]),We.createElement($m,null,We.createElement(ai,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:We.createElement(Om,null,We.createElement("div",{className:"button__content"},We.createElement(NT,{size:18,color:"info"}),We.createElement(Um,{size:4,direction:"horizontal"}),We.createElement(AT,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Ps.t("Send to a different address"))),We.createElement(ri,{orientation:n?"up":"down"},We.createElement(xT,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},We.createElement(Fm,{ref:u,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Ps.t("Enter {blockchainName} address",{blockchainName:c}),value:r||"",suffix:C(),onChange:k=>{let y=k.target.value;a(y)}})),d&&We.createElement(We.Fragment,null,We.createElement(Um,{size:4}),We.createElement(bT,{variant:"alarm",type:"error",title:Ps.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(Qm,"CustomDestination");import{css as LT,darkTheme as _s,IconButton as MT,styled as Ft}from"@rango-dev/ui";var Hm=Ft("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),qm=Ft("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),PT=Ft("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${_s} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$secondary100",[`.${_s} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$secondary100",[`.${_s} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Gm=Ft(PT,{alignSelf:"stretch",minHeight:"93px"}),Vm=Ft("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Km=Ft(MT,{position:"absolute",left:"$20"}),jm=Ft("div",{paddingTop:"$20"}),Xm=LT({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Ym=Ft("div",{display:"flex"}),Zm=Ft("div",{overflow:"visible",width:"100%"});import{i18n as nd}from"@lingui/core";import{warn as OT}from"@rango-dev/logging-core";import{Divider as UT,SelectableWallet as zT,Typography as rd,WalletState as id}from"@rango-dev/ui";import Ze,{useEffect as ad,useState as Ln}from"react";import{Image as $T,MessageBox as FT}from"@rango-dev/ui";import Wn from"react";import{keyframes as _T,styled as Ds}from"@rango-dev/ui";var Jm=Ds("div",{position:"relative"}),DT=_T({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Rm=Ds("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${DT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),ed=Ds("div",{"& img":{borderRadius:"50%"}});import{i18n as tn}from"@lingui/core";function td(t,e){switch(t){case"in-progress":return{type:"loading",title:tn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:tn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:tn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:tn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:tn.t("Request Rejected"),description:tn.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:e}})};default:throw new Error(`Showing information about an experimentation chain status needs to be defined first. status: ${t}`)}}i(td,"generateMessageByStatus");function od(t){let{status:e,displayName:o,image:n}=t,r=td(e,o),a=e=="in-progress";return Wn.createElement(FT,{type:r.type,title:r.title,description:r.description,icon:a?Wn.createElement(Jm,null,Wn.createElement(ed,null,Wn.createElement($T,{src:n,size:45})),Wn.createElement(Rm,null)):void 0})}i(od,"ExperimentalChainStatus");var QT=7,HT=3e3;function $s(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,l=ne.use.isActiveTab(),{blockchains:c,connectedWallets:u}=S(),[p,m]=Ln(),[h,d]=Ln(null),[f,g]=Ln(!1),[C,k]=Ln(null),{suggestAndConnect:y}=si(),{handleDisconnect:T}=Xt(),{list:v}=yt({chain:e}),[E,B]=Ln(v),N=v.length,x=a&&N-a>0,w=i(async I=>{g(!1),k("in-progress");try{await y(I.walletType,I.chain),k("completed")}catch{k("rejected")}},"addExperimentalChain");ad(()=>{B(I=>{let _=v.findIndex(M=>n(M.type,e));return x&&_>1?[v[_]].concat(v.filter((M,q)=>q!==_)):I.map(M=>v.find(q=>q.type===M.type)??M)})},[JSON.stringify(v)]);let b=document.getElementById($e.SWAP_BOX_ID);return ad(()=>{let I=null;return(C==="completed"||C==="rejected")&&(I=setTimeout(()=>k(null),HT)),()=>{I&&clearTimeout(I)}},[C]),Ze.createElement(Ze.Fragment,null,E.slice(0,a).map(I=>{let _=ap({connectedWallets:u,walletType:I.type,chain:e}),M=_?Ir(_,QT):"",q=xr(c(),e),R=!u.find(Q=>Q.walletType===I.type&&Q.chain===e),X=q&&R&&I.state===id.CONNECTED,L=X?nd.t({id:"Add {chain} chain",values:{chain:e}}):M,K=i(async()=>{let Q=I.state===id.DISCONNECTED,de=(I.isHub||!!I.needsNamespace)&&!M;Q?m(I):de?(await T(I.type),m(I)):X?(d({walletType:I.type,chain:e,address:_??""}),g(!0)):r({walletType:I.type,chain:e,address:_??""})},"onSelectableWalletClick"),ae=h?.chain?fr(h.chain,c()):void 0;return Ze.createElement(Ze.Fragment,{key:`${I.title}_${ae}`},!!h&&Ze.createElement(J,{open:!!h&&f,container:b,onClose:()=>{d(null)}},Ze.createElement(qa,{displayName:ae,onConfirm:()=>{w(h)}})),C&&Ze.createElement(J,{open:!!C,onClose:k.bind(null,null),container:b},Ze.createElement(od,{status:C,displayName:ae,image:I.image}),Ze.createElement(UT,{direction:"vertical",size:32})),Ze.createElement(zT,{key:I.type,description:L,onClick:K,selected:n(I.type,e),disabled:!l,...I}))}),Ze.createElement(Co,{wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{m(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):OT(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),x&&Ze.createElement(Gm,{selected:!1,onClick:s},Ze.createElement(rd,{variant:"label",size:"medium"},nd.t("Show more wallets"),Ze.createElement(rd,{variant:"label",size:"medium",color:"$primary"},"\xA0+",N-(a??0)))))}i($s,"WalletList");var ZT=2;function cd(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=YT(),l=S().blockchains(),{selectedQuote:c,setSelectedWallets:u,quoteWalletsConfirmed:p,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:d}=O(),{config:f,connectedWallets:g,setWalletsAsSelected:C}=S(),[k,y]=on(""),[T,v]=on([]),[E,B]=on(""),[N,x]=on(!!h),w=XT(()=>go({filter:"all",quote:c}),[c]),b=go({filter:"required",quote:c}),I=l.find(D=>D.name===c?.swaps[c?.swaps.length-1].to.blockchain),_=i(D=>b.includes(D),"isWalletRequiredFor"),M=jT(()=>g.filter(D=>D.selected&&w.includes(D.chain)),[g,w]),[q,R]=on(M()),[X,L]=on([]),K=i((D,G)=>L(j=>j.concat({blockchain:D,walletType:G})),"addNextSelectedWallets"),ae=T.length>0,Q=i((D,G)=>!!q.find(j=>j.walletType===D&&j.chain===G&&j.selected&&(_(G)||!_(G)&&!h)),"isSelected"),de=i((D,G,j)=>{let he=!1;return D.map(ce=>{if(ce.chain===G){let _e=ce.selected;return!he&&j?(he=!0,_e=!0):j||(_e=!1),{...ce,selected:_e}}return ce})},"updateSelectableWallets"),Ie=i(D=>{x(D),D?_(I?.name??"")||R(G=>de(G,I?.name||"",!1)):(d(""),R(G=>de(G,I?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),Ke=i(D=>{if(k&&y(""),Q(D.walletType,D.chain))return;let j=g.find(he=>he.walletType===D.walletType&&he.chain===D.chain);j&&(n(),D.chain===I?.name&&N&&!_(I.name)&&(x(!1),d(null)),R(he=>he.filter(ce=>ce.chain!==D.chain).concat({...j,selected:!0})))},"onChange"),se=i(()=>{let D=q.filter(G=>G.selected);C(D),u(D),m(!0),o()},"onConfirmBalance"),ct=i(async()=>{v([]),B("");let D=await r?.({selectedWallets:q.filter(j=>j.selected),customDestination:h}),G=D.warnings;G?.balance?.messages&&v(G.balance.messages),D.error&&B(cu(D.error)),!D.error&&!G?.balance?.messages.length?se():v(G?.balance?.messages??[])},"onConfirmWallets");ld(()=>{R(D=>{let G=[];return D.forEach(j=>{!g.some(ce=>ce.chain===j.chain&&ce.walletType===j.walletType&&ce.address===j.address)||G.push(j)}),G=G.concat(g.filter(j=>!!!G.find(ce=>ce.chain===j.chain)&&j.selected&&w.includes(j.chain))),G})},[g,w]),ld(()=>{let D=[];X.length>0&&(X.forEach(G=>{let j=g.find(he=>he.chain===G.blockchain&&he.walletType===G.walletType);j?Ke(j):D.push(G)}),L(D))},[g,X]);let V=document.getElementById($e.SWAP_BOX_ID);return te.createElement(J,{open:e,onClose:()=>{p||s("../",{replace:!0}),o()},dismissible:!k,container:V,...!k&&{styles:{container:{height:"100%"}},footer:te.createElement(Ym,null,te.createElement(sd,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Fu(a,N,h,c,q,I),onClick:ct,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Eo.t("Confirm")))},...k&&{styles:{container:{height:"100%",padding:"$0"}},header:te.createElement(Vm,null,te.createElement(Km,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},te.createElement(VT,{size:16})),te.createElement(Os,{variant:"headline",size:"small"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:pt(k,l)}})))},anchor:"center"},te.createElement(J,{open:ae,onClose:v.bind(null,[]),container:V},te.createElement(KT,{title:Eo.t("Insufficient account balance"),type:"error",description:te.createElement(GT,{messages:T??[]})},te.createElement(sd,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:se},Eo.t("Proceed anyway")))),k&&te.createElement(jm,null,te.createElement("div",{className:Xm()},te.createElement($s,{chain:k,quoteChains:w,isSelected:Q,selectWallet:Ke,onShowMore:()=>y(k),onConnect:D=>{K(k,D)}}))),!k&&te.createElement(te.Fragment,null,E&&te.createElement(te.Fragment,null,te.createElement(qT,{variant:"alarm",type:"error",title:Eo.t(E)}),te.createElement(Fs,{size:12})),te.createElement(Zm,null,w.map((D,G)=>{let j=l.find(je=>je.name===D),he=`wallet-${G}`,ce=G===w.length-1,_e=ce&&I&&f?.customDestination!==!1;return te.createElement("div",{key:he},te.createElement(Hm,null,te.createElement(Os,{variant:"title",size:"xmedium"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:j?.shortName}})),te.createElement(Os,{variant:"label",color:"$neutral700",size:"medium"},Eo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:j?.shortName}}))),te.createElement(Fs,{size:24}),te.createElement(qm,null,te.createElement($s,{chain:D,quoteChains:w,isSelected:Q,selectWallet:Ke,limit:ZT,onShowMore:()=>y(j?.name??""),onConnect:je=>{K(D,je)}})),!ce&&te.createElement(Fs,{size:32}),_e&&te.createElement(Qm,{blockchain:I,open:N,handleOpenChange:Ie}))}))))}i(cd,"ConfirmWalletsModal");import{i18n as hv}from"@lingui/core";import{Alert as yv,Button as Sv,InfoIcon as Cv}from"@rango-dev/ui";import nt from"react";import{Alert as ev,Button as tv,Divider as Qs,NoRouteIcon as ov,RefreshIcon as nv,Typography as hd}from"@rango-dev/ui";import ot from"react";import{i18n as pd}from"@lingui/core";var JT=24,RT=60;function ud(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ee().genericServerError,action:{onClick:n,title:pd.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ee().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:pd.t("Reset")}},description:ee().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ee().noResultError.description}}i(ud,"makeInfo");var Us=(o=>(o[o.small=JT]="small",o[o.large=RT]="large",o))(Us||{}),zs=(o=>(o.small="small",o.large="medium",o))(zs||{});import{styled as li}from"@rango-dev/ui";var md=li("div",{display:"flex",flexDirection:"column",alignItems:"center"}),dd=li("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),fd=li("div",{variants:{size:{small:{width:"100%"},large:{}}}}),gd=li("div",{padding:"$6 $0"});function Mn(t){let{fetch:e,error:o,size:n="small"}=t,r=S().getDisabledLiquiditySources(),a=S().toggleAllLiquiditySources,s=S().swappers(),l=ud(o,r,()=>a(s,!0),e);return ot.createElement(md,null,ot.createElement(ov,{size:Us[n],color:"gray"}),ot.createElement(Qs,{size:4}),ot.createElement(hd,{variant:"title",size:zs[n]},ee().noResultError.title),n==="large"&&ot.createElement(Qs,{size:4}),!!l.description&&ot.createElement(dd,{size:n},ot.createElement(hd,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),ot.createElement(Qs,{size:n==="large"?"24":"4"}),!!l.alert&&ot.createElement(fd,{size:n},ot.createElement(ev,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&ot.createElement(tv,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:ot.createElement(gd,null,ot.createElement(nv,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Mn,"NoResult");import{i18n as Pn}from"@lingui/core";import{Button as iv,Divider as av,MessageBox as sv,Typography as lv,WarningIcon as cv}from"@rango-dev/ui";import Ot from"react";import{Typography as kd}from"@rango-dev/ui";import qs from"react";import{darkTheme as rv,styled as ci}from"@rango-dev/ui";var yd=ci("div",{width:"100%"}),Hs=ci("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Sd=ci("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${rv} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Cd=ci("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function Td(t){let{title:e,value:o,valueColor:n}=t;return qs.createElement(Sd,null,qs.createElement(kd,{size:"medium",variant:"label",className:"_title"},e),qs.createElement(kd,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(Td,"QuoteErrorsModalItem");function vd(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:Pn.t("Swapping"),value:P(r.inputUsdValue,4,4)},{title:Pn.t("Gas cost"),value:P(r.totalFee,2,2)},{title:Pn.t("Receiving"),value:P(r.outputUsdValue,4,4)},{title:Pn.t("Price impact"),value:P(r.priceImpact,2,2),valueColor:`${s}500`}];return Ot.createElement(J,{footer:Ot.createElement(iv,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ot.createElement(cv,null),fullWidth:!0,disabled:a,onClick:n},ee().highValueLossError.confirmMessage),open:e,onClose:o,container:A()},Ot.createElement(sv,{type:s,title:ee().highValueLossError.impactTitle,description:ee().highValueLossError.description}),Ot.createElement(Hs,null,Ot.createElement(av,{size:"4"}),Ot.createElement(lv,{size:"small",variant:"title"},Pn.t("Details")),Ot.createElement(Hs,null,l.map((c,u)=>Ot.createElement(Td,{key:u,...c})))))}i(vd,"HighValueLossWarningModal");import{i18n as pi}from"@lingui/core";function wd(t,e){let o={alertType:"warning",title:"",action:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=pi.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o;if(t){switch(t.type){case 0:{$t(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ee().highValueLossError.title;break}case 4:{o.title=pi.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=ee().unknownPriceError.title;break}case 2:{o.title=pi.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-settings";break}case 3:{o.title=pi.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(wd,"makeAlerts");import{i18n as nn}from"@lingui/core";import{Button as bd,Divider as xd,MessageBox as pv,Typography as uv}from"@rango-dev/ui";import Io from"react";import{useNavigate as mv}from"react-router-dom";function Ed(t){let{customSlippage:e,slippage:o}=S(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,c=mv(),u=e??o;return Io.createElement(J,{anchor:"bottom",open:n,prefix:Io.createElement(bd,{size:"small",id:"widget-slippage-warning-modal-change-settings-btn",variant:"ghost",onClick:()=>c("../"+F.settings)},Io.createElement(uv,{variant:"label",size:"medium",color:"$neutral900"},nn.t("Change settings"))),container:A(),onClose:r},Io.createElement(pv,{type:"warning",title:s.type===3?nn.t("High slippage"):nn.t("Low slippage"),description:s.type===3?nn.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:u}}):nn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:s.minRequiredSlippage}})},Io.createElement(xd,{size:18}),Io.createElement(xd,{size:32}),Io.createElement(bd,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:l,onClick:a},nn.t("Confirm anyway"))))}i(Ed,"SlippageWarningModal");import{Button as dv,MessageBox as fv,WarningIcon as gv}from"@rango-dev/ui";import ui from"react";function Id(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return ui.createElement(J,{footer:ui.createElement(dv,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:ui.createElement(gv,null),fullWidth:!0,disabled:r,onClick:n},ee().unknownPriceError.confirmMessage),open:e,onClose:o,container:A()},ui.createElement(fv,{type:"warning",title:ee().unknownPriceError.impactTitle,description:ee().unknownPriceError.description}))}i(Id,"UnknownPriceWarningModal");function _n(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,refetchQuote:s,onOpenWarningModal:l,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:p}=t,m={confirmationDisabled:a,open:r,onClose:c,onConfirm:u},h=o?.type===0||o?.type===1,d=wd(e,o?.type===3||o?.type===4?o:null);return d&&!n&&(d.action=null),nt.createElement(nt.Fragment,null,h&&nt.createElement(Mn,{error:o,fetch:s}),!!d&&nt.createElement(yd,null,nt.createElement(yv,{title:d.title,type:d.alertType,variant:"alarm",...d.action==="show-info"&&{action:nt.createElement(Cd,{onClick:l},nt.createElement(Cv,{size:12,color:"gray"}))},...d.action==="change-settings"&&{action:nt.createElement(Sv,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:d.alertType,onClick:p},hv.t("Change"))}})),e&&nt.createElement(nt.Fragment,null,e.type===0&&nt.createElement(vd,{...m,warning:e}),(e.type===3||e.type===2)&&nt.createElement(Ed,{...m,warning:e}),e.type===1&&nt.createElement(Id,{...m,warning:e})))}i(_n,"QuoteWarningsAndErrors");import Yv from"bignumber.js";import xi from"react";import{i18n as Ao}from"@lingui/core";import{Alert as $v,Divider as an,FullExpandedQuote as Fv,InfoIcon as Ov,NumericTooltip as af,QuoteTag as Uv,StepDetails as zv,TokenAmount as Qv,Typography as sn}from"@rango-dev/ui";import Rs from"bignumber.js";import U,{useRef as Hv,useState as qv}from"react";import{styled as Gs}from"@rango-dev/ui";var Vs=Gs("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Ad=Gs("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Nd=Gs("div",{width:"100%",display:"flex"});import*as mi from"@radix-ui/react-collapsible";import{Button as kv,css as Dn,darkTheme as xe,Image as Bd,styled as Qe,Typography as Tv}from"@rango-dev/ui";var vv=300,Wd=Qe(mi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${xe} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),Ld=Dn({padding:"$10 $15"}),Md=Qe(kv,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${xe} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${xe} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${xe} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),Pd=Qe("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",[`.${xe} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${xe} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${xe} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${xe} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${xe} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${xe} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${xe} &`]:{backgroundColor:"$neutral400"}}}}]}),_d=Dn({width:"100%",padding:"$15 $15 $10 $15"}),Dd=Dn({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),rn=Dn({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),$d=Dn({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${xe} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Fd=Qe(mi.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:{[`& ${Bd}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Bd}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${xe} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Od=Qe("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"}}}}),Ud=Qe(ni,{width:"100%",background:"inherit"}),Ks=Qe("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${vv}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),NO=Qe("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),zd=Qe("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${xe} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Qd=Qe("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),js=Qe(Tv,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Hd=Qe("div",{display:"flex",flexWrap:"wrap"}),Xs=Qe("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"}}}}),qd=Qe("div",{display:"flex"}),di=Qe("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${xe} &`]:{borderTopColor:"$neutral800"}});import{i18n as Nt}from"@lingui/core";import{ChevronDownIcon as bv,CloseIcon as xv,Divider as hi,IconButton as Ev,NumericTooltip as Iv,QuoteCost as Av,Typography as kt}from"@rango-dev/ui";import Z,{useState as jd}from"react";import{css as wv,styled as fi}from"@rango-dev/ui";var gi=fi("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Ys=fi("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),Gd=fi("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Vd=fi("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Kd=wv({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Nv=i(t=>t.fee.isZero()?null:Z.createElement(gi,null,Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},t.label),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(t.fee,4,4))),"NonPayableFee");function Zs(t){let[e,o]=jd(!1),[n,r]=jd(!1),{steps:a,quote:s,fee:l,time:c,feeWarning:u,timeWarning:p,showModalFee:m,fullExpandedMode:h=!1}=t,d=s?.swaps??[],f=h?fo():A(),g=Bu(d);return Z.createElement(Z.Fragment,null,Z.createElement(Av,{onClickFee:m?C=>{C.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:u,timeWarning:p,time:c,steps:a,tooltipGas:m?Nt.t("View more info"):void 0,tooltipContainer:f}),Z.createElement(J,{container:f,open:e,anchor:h?"center":"bottom",styles:{container:{maxWidth:h?"484px":"unset"}},header:Z.createElement(Vd,{style:{textAlign:h?"left":"center"}},Z.createElement(kt,{variant:"title",size:"medium"},Nt.t("Gas & Fee Explanation")),Z.createElement(Ev,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},Z.createElement(xv,{color:"gray",size:14}))),onClose:()=>{o(!1)}},Z.createElement(Gd,null,Z.createElement(kt,{variant:"title",size:"small"},Nt.t("Details")),Z.createElement(hi,{size:10}),Object.entries(g.payable).flatMap(([C,k])=>k.map((y,T)=>{let v=`payable-fee-${T}`,E=Za(y);return Z.createElement(gi,{key:v},Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},Va(C,Nt.t)),Z.createElement(Iv,{content:y.amount,container:f},Z.createElement(kt,{variant:"label",size:"medium"},P(y.amount,2,2)," ",y.asset.symbol," ($",P(E,4,4),")")))})),Z.createElement(gi,{className:"total_payable_fee"},Z.createElement(kt,{variant:"label",size:"medium"},Nt.t("Total Payable Fee")),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(l,4,4))),Z.createElement(Ys,null),Object.keys(g.nonePayable).length&&Z.createElement(ai,{triggerAnchor:"bottom",onClickTrigger:()=>r(C=>!C),trigger:Z.createElement("div",{className:Kd()},Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},n?Nt.t("Hide non-payable fees"):Nt.t("Show non-payable fees")),Z.createElement(hi,{size:4,direction:"horizontal"}),Z.createElement(ri,{orientation:n?"up":"down"},Z.createElement(bv,{size:12,color:"gray"}))),open:n},Z.createElement(kt,{size:"small",variant:"title"},Nt.t("Description")),Z.createElement(hi,{size:4}),Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},Nt.t(`The following fees are considered in the transaction output and
2
- you won\u2019t need to pay extra gas for them.`)),Z.createElement(hi,{size:10}),Object.entries(g.nonePayable).map(([C,k],y)=>{let T=Nu(k),v=Va(C,Nt.t),E=`non-payable-fee-${y}`;return Z.createElement(Nv,{key:E,fee:T,label:v})}),Z.createElement(Ys,null)))))}i(Zs,"QuoteCostDetails");import{i18n as Zd}from"@lingui/core";import{TokenAmount as Jd}from"@rango-dev/ui";import yi from"react";import{css as Bv,styled as Wv}from"@rango-dev/ui";var Xd=Wv("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Yd=Bv({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function $n(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return yi.createElement(Xd,null,yi.createElement(Jd,{direction:"horizontal",label:Zd.t("Swap input"),type:"input",tooltipContainer:A(),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}}),yi.createElement("div",{className:Yd()}),yi.createElement(Jd,{direction:"horizontal",tooltipContainer:A(),label:Zd.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($n,"QuoteSummary");import{i18n as nf}from"@lingui/core";import{ChevronDownIcon as Pv,ChevronRightIcon as _v,Divider as Js,Image as Dv,Tooltip as vi,Typography as Ci}from"@rango-dev/ui";import z from"react";import{useLayoutEffect as Lv,useState as Fn}from"react";var Rd=480,ef=768,tf=1024,of=1200,Mv=i(()=>{let[t,e]=Fn(!1),[o,n]=Fn(!1),[r,a]=Fn(!1),[s,l]=Fn(!1),[c,u]=Fn(!1),p=i(()=>{e(window.innerWidth<=Rd),n(window.innerWidth>Rd&&window.innerWidth<=ef),a(window.innerWidth>ef&&window.innerWidth<=tf),l(window.innerWidth>tf&&window.innerWidth<=of),u(window.innerWidth>of)},"handleResize");return Lv(()=>(p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:c}},"useScreenDetect"),Si=Mv;var ki=4,Ti=6,On=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||A();return z.createElement(vi,{container:l,side:"bottom",sideOffset:4,open:r,content:e},z.createElement(Od,{className:n,state:a},z.createElement(Dv,{src:o,size:16})))},"ImageComponent");function rf(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,c=l||A(),u=r.length,p=Cu(r),{isTablet:m,isMobile:h}=Si();return z.createElement(Fd,{listItem:s==="list-item",ref:d=>e.current=d,selected:o,onClick:d=>{d.stopPropagation(),n(f=>!f)}},z.createElement("div",{className:rn()},z.createElement(Ci,{variant:"body",size:"xsmall"},nf.t("Via:")),z.createElement(Js,{direction:"horizontal",size:4}),r.map((d,f)=>{let g=`item-${f}`,C=z.createElement(Ks,null,z.createElement(_v,{size:12,color:"black"}));return h||m?z.createElement(z.Fragment,{key:g},z.createElement(On,{content:d.swapper.displayName,src:d.swapper.image??"",state:d.state,container:l}),f!==u-1&&z.createElement(z.Fragment,null,C)):z.createElement(z.Fragment,{key:g},u<=ki||u>ki&&f<ki-1?z.createElement(z.Fragment,null,z.createElement(On,{content:d.swapper.displayName,src:d.swapper.image??"",state:d.state,container:l}),f!==u-1&&z.createElement(z.Fragment,null,C)):f===ki-1&&z.createElement(vi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},C,r.map((k,y)=>{let T=`image-${y}`;return y>=f&&z.createElement(z.Fragment,{key:T},z.createElement(On,{content:k.swapper.displayName,src:k.swapper.image??"",state:k.state,open:!1}),y!==u-1&&z.createElement(z.Fragment,null,C))}))},z.createElement(Xs,{state:r.find((k,y)=>y>=f&&(k.state==="error"||k.state==="warning"))?.state},z.createElement(Ci,{size:"xsmall",variant:"body"},"+",u-f))))})),z.createElement("div",{className:rn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:rn()},z.createElement(Ci,{variant:"body",size:"xsmall"},nf.t("Chains:")),z.createElement(Js,{direction:"horizontal",size:4}),p.map((d,f)=>z.createElement(z.Fragment,{key:d.displayName},p.length<=Ti||p.length>Ti&&f<Ti-1?z.createElement(vi,{container:c,side:"bottom",content:d.displayName,sideOffset:4},z.createElement(On,{content:"",src:d.image??"",open:!1,className:f!==0?"blockchainImage":""})):f===Ti-1&&z.createElement(vi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},p.map((g,C)=>C>=f&&z.createElement(On,{key:g.displayName,content:"",src:g.image??"",open:!1,className:C>f?"blockchainImage":"",container:l})))},z.createElement(Xs,{className:"blockchainImage"},z.createElement(Ci,{size:"xsmall",variant:"body"},"+",p.length-f))))),z.createElement(Js,{direction:"horizontal",size:32}))),z.createElement(Ks,{orientation:a?"up":"down"},z.createElement(Pv,{size:12,color:"black"}))))}i(rf,"QuoteTrigger");function el(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:c=!0,showModalFee:u=!0,onClickAllRoutes:p,fullExpandedMode:m=!1,container:h}=t,d=S().blockchains(),{findToken:f}=S(),g=S().swappers(),{customSlippage:C,slippage:k}=S(),y=C||k,[T,v]=qv(t.expanded),E=Hv(null),B=P(o.value,6,6),N=P(n.value,6,6),x=n.usdValue?P(n.usdValue,4,4):"",w=Dt(o.usdValue,n.usdValue??null),b=P(w,2,2),I=$t(w??0),_=i((se,ct)=>se.map((V,D)=>{let G,j=r?.type===3&&r.swap.swapperId===V.swapperId,he=r?.type===4&&r.recommendedSlippages?.has(D),ce=a?.type===2&&a.recommendedSlippages?.has(D),_e=j||he,je=ce;_e?G="error":je&&(G="warning");let Te=_e?Ao.t("Slippage Error"):Ao.t("Slippage Warning");return j&&(Te=Ao.t("Bridge Limit Error")),{swapper:{displayName:mn(V.swapperId,g)??"",image:V.swapperLogo},from:{token:{displayName:V.from.symbol,image:V.from.logo},chain:{displayName:pt(V.from.blockchain,d)??"",image:V.from.blockchainLogo},price:{value:D===0&&!ct?P(o.value,6,6):P(V.fromAmount,6,6),usdValue:P((V.from.usdPrice??0)*parseFloat(V.fromAmount),4,4),realValue:D===0?o.value:V.fromAmount,realUsdValue:new Rs(V.from.usdPrice??0).multipliedBy(V.fromAmount).toString()}},to:{token:{displayName:V.to.symbol,image:V.to.logo},chain:{displayName:pt(V.to.blockchain,d)||"",image:V.to.blockchainLogo},price:{value:P(V.toAmount,6,6),usdValue:P((V.to.usdPrice??0)*parseFloat(V.toAmount),4,4),realValue:V.toAmount,realUsdValue:new Rs(V.to.usdPrice??0).multipliedBy(V.toAmount).toString()}},state:G,alerts:_e||je?U.createElement(Ad,{dense:m},U.createElement($v,{variant:"alarm",type:_e?"error":"warning",title:Te,footer:U.createElement(Nd,null,j&&U.createElement("div",null,U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(an,{direction:"vertical",size:2}),U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {amount} {symbol}",values:{amount:P(V.fromAmount,6,6),symbol:V?.from.symbol}}))),(he||ce)&&!j&&U.createElement("div",null,U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Minimum required slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(D)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(D)}}})),U.createElement(an,{direction:"vertical",size:2}),U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:fn(V.estimatedTimeInSeconds),fee:P(Ya(V,f),2,2),internalSwaps:V.internalSwaps?_(V.internalSwaps):void 0}}),"getQuoteSteps"),M=_(e?.swaps??[]),q=M.length,R=h||A(),X=Tu(t.quote.tags||[]),L=!!p,K=vr(e?.swaps),ae=fn(K),Q=Qr(e?.swaps??[],f),de=P(Q,2,2),Ie=Q.gte(new Rs(uu)),Ke=K/du>=mu;return m?U.createElement(Fv,{selected:l,fee:de,time:ae,tooltipContainer:fo(),steps:M,tags:X,quoteCost:U.createElement(Zs,{quote:e,fullExpandedMode:!0,time:ae,fee:de,feeWarning:Ie,timeWarning:Ke,showModalFee:u,steps:q}),percentageChange:b,warningLevel:I,outputPrice:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement(Pd,{selected:l,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:_d()},!c&&X.length?U.createElement(U.Fragment,null,U.createElement(qd,null,X.map((se,ct)=>{let V=`${se.value}_${ct}`;return U.createElement(U.Fragment,{key:V},U.createElement(Uv,{label:se.label,value:se.value}),U.createElement(an,{size:4,direction:"horizontal"}))})),U.createElement(di,null),!L&&U.createElement(an,{size:4})):null,U.createElement("div",{id:"portal-root",className:Dd()},U.createElement(Zs,{quote:e,time:ae,fee:de,feeWarning:Ie,timeWarning:Ke,showModalFee:u,steps:q}),L&&U.createElement(Md,{onClick:se=>{se.stopPropagation(),p()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(sn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Ao.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:$d()},U.createElement(Qd,null,U.createElement(Ov,{size:12,color:"gray"})),U.createElement(Hd,null,U.createElement(js,{size:"small",variant:"body"},`${B} ${M[0].from.token.displayName} = `),U.createElement(af,{content:n.value,container:R,open:n.value?void 0:!1},U.createElement(js,{size:"small",variant:"body"},"\xA0",`${N} ${M[M.length-1].to.token.displayName}`))),U.createElement(af,{content:n.usdValue,container:R},U.createElement(an,{size:2,direction:"horizontal"}),U.createElement(sn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${x})`))),s==="list-item"&&U.createElement(Qv,{tooltipContainer:R,type:"output",direction:"vertical",price:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:M[q-1].to.token.displayName,image:M[q-1].to.token.image},chain:{image:M[q-1].to.chain.image},percentageChange:b,warningLevel:I}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement($n,{from:M[0].from,to:M[q-1].to,percentageChange:b,warningLevel:I}),U.createElement(an,{size:4}))),U.createElement(Wd,{selected:l,listItem:s==="list-item",open:T,className:"quote_container",onOpenChange:v},U.createElement(rf,{type:s,quoteRef:E,selected:l,setExpanded:v,container:R,expanded:T,steps:M}),U.createElement(Ud,{open:T},U.createElement(zd,null),U.createElement("div",{className:Ld()},M.map((se,ct)=>{let V=`item-${ct}`;return U.createElement(zv,{type:"quote-details",key:V,tooltipContainer:R,step:se,hasSeparator:ct!==M.length-1,state:se.state})})))))}i(el,"Quote");import{Divider as jv,Skeleton as Xv}from"@rango-dev/ui";import zt from"react";import{darkTheme as Gv,styled as wi}from"@rango-dev/ui";var sf=wi("div",{$$color:"$colors$neutral100",[`.${Gv} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),lf=wi("div",{paddingTop:"$2"}),cf=wi("div",{paddingLeft:"$8"}),pf=wi("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as kf,Divider as Tt,Skeleton as rt}from"@rango-dev/ui";import H from"react";import{css as Vv,styled as Ut}from"@rango-dev/ui";var tl=Ut("div",{display:"flex"}),uf=Ut("div",{padding:"$10 $0 $20"}),mf=Ut("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),df=Ut("div",{display:"flex",justifyContent:"start",alignItems:"center"}),ff=Ut("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),gf=Ut("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),hf=Ut("div",{width:"65%",display:"flex",justifyContent:"start"}),yf=Ut("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Sf=Ut("div",{padding:"$15 $0 $15 $0"}),Cf=Vv({display:"flex",justifyContent:"space-between",alignItems:"center"});function Un(t){let{type:e,tagHidden:o=!0}=t,n=H.createElement(ff,null,H.createElement(hf,null,H.createElement(kf,{loading:!0,size:"medium"}),H.createElement(Tt,{size:8,direction:"horizontal"}),H.createElement(yf,null,H.createElement(rt,{height:10,width:60,variant:"rounded"}),H.createElement(Tt,{size:4}),H.createElement(rt,{height:15,variant:"rounded"}))),H.createElement(rt,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return H.createElement("div",null,!o&&H.createElement(H.Fragment,null,H.createElement(tl,null,H.createElement(rt,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(rt,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(rt,{width:65,height:20,variant:"rounded"})),H.createElement(di,null),!r&&H.createElement(Tt,{size:4})),H.createElement("div",{className:Cf()},H.createElement(tl,null,H.createElement(rt,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(rt,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(rt,{width:60,height:10,variant:"rounded"})),r&&H.createElement(rt,{width:85,height:24,variant:"rounded"})),e==="basic"&&H.createElement(uf,null,H.createElement(rt,{height:15,width:148,variant:"rounded"})),e==="list-item"&&H.createElement(mf,null,H.createElement(df,null,H.createElement(kf,{loading:!0,size:"medium"}),H.createElement(Tt,{direction:"horizontal",size:4}),H.createElement(rt,{height:15,width:150,variant:"rounded"})),H.createElement(Tt,{size:10}),H.createElement(rt,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&H.createElement(H.Fragment,null,H.createElement(Tt,{size:4}),H.createElement(Sf,null,n,H.createElement(gf,null),n),H.createElement(Tt,{size:12})))}i(Un,"QuoteSummarySkeleton");import{ChainToken as xf,Divider as nl,NextIcon as Kv,Skeleton as bi}from"@rango-dev/ui";import Ee from"react";import{styled as zn}from"@rango-dev/ui";var Tf=zn("div",{display:"flex",alignItems:"start"}),vf=zn("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),ol=zn("div",{display:"flex",alignItems:"center",flexGrow:1}),wf=zn("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),bf=zn("div",{display:"flex",alignItems:"center"});function Bt(t){let{separator:e=!0}=t;return Ee.createElement(Ee.Fragment,null,Ee.createElement(bf,null,Ee.createElement(bi,{height:22,width:22,variant:"circular"}),Ee.createElement(nl,{direction:"horizontal",size:8}),Ee.createElement(bi,{height:15,width:148,variant:"rounded"})),Ee.createElement(Tf,null,Ee.createElement(pf,{hideSeparator:!e}),Ee.createElement(vf,{extraSpace:e},Ee.createElement(ol,null,Ee.createElement(xf,{size:"small",loading:!0}),Ee.createElement(nl,{direction:"horizontal",size:8}),Ee.createElement(bi,{height:12,variant:"rounded"})),Ee.createElement(wf,null,Ee.createElement(Kv,{color:"gray",size:16})),Ee.createElement(ol,null,Ee.createElement(xf,{size:"small",loading:!0}),Ee.createElement(nl,{direction:"horizontal",size:8}),Ee.createElement(bi,{height:12,variant:"rounded"})))))}i(Bt,"StepSkeleton");function Qn(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return zt.createElement(sf,{expanded:o,rounded:e!=="basic"},zt.createElement(Un,{type:e,tagHidden:n}),zt.createElement(lf,null,zt.createElement(Xv,{height:15,variant:"rounded"})),o&&zt.createElement(cf,null,zt.createElement(jv,{size:24}),zt.createElement(Bt,null),zt.createElement(Bt,null),zt.createElement(Bt,{separator:!1})))}i(Qn,"QuoteSkeleton");function No(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:c,showModalFee:u,selected:p,onClickAllRoutes:m,fullExpandedMode:h=!1,container:d}=t,{inputAmount:f,inputUsdValue:g}=O(),C=e?.outputAmount?new Yv(e?.outputAmount):null,k=e?ft(e):null,T=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?xi.createElement(Vs,null,xi.createElement(Qn,{tagHidden:l,type:o,expanded:s})):T?xi.createElement(Vs,{onClick:()=>c?.(e)},xi.createElement(el,{quote:e,error:r,container:d,showModalFee:u,warning:a,tagHidden:l,selected:p,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:f,usdValue:g?.toString()??""},output:{value:C?.toString()??"",usdValue:k?.toString()??""}})):null}i(No,"QuoteInfo");import{calculatePendingSwap as ew}from"@rango-dev/queue-manager-rango-preset";import{useEffect as tw}from"react";import{useRef as Zv,useState as Jv}from"react";var Rv=2e3;function Ei({request:t}){let[e,o]=Jv(!1),n=Zv(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(c=>setTimeout(c,Rv)),await s(l,!1)),"retryFetch"),s=i(async(l,c=!1)=>{r(),n.current=new AbortController,o(!0);try{let u=await t(l,{signal:n.current.signal});return n.current=null,u}catch(u){if(c)return await a(l);throw u}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(Ei,"useFetch");function Ef(){let{fetch:t,loading:e,cancelFetch:o}=Ei({request:async(n,r)=>await tt().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Ef,"useFetchConfirmQuote");function Ii(t){if(!t.swaps)throw new Error(ee().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=rl(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(Ii,"throwErrorIfResponseIsNotValid");function rl(t){if(Eu(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Iu(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=Wu(t);if(o){let n=Hr(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(rl,"getQuoteError");function If(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,l={quote:null,balance:null},c=Ko({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});c&&(l.quote=c);let u=Pu(e,r,n.blockchains);return u.length===0||(l.balance={messages:u}),l}i(If,"generateWarnings");function Ai(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:t?.code==="ERR_BAD_REQUEST"?{swap:null,error:{type:0,diagnosisMessage:t.response.data.error},warnings:null}:{swap:null,error:{type:1},warnings:null}}i(Ai,"handleQuoteErrors");function il(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:l}=O(),{slippage:c,customSlippage:u}=S(),p=S().getDisabledLiquiditySources(),m=S().blockchains(),h=S().tokens(),{findToken:d}=S(),f=u||c,{fetch:g,cancelFetch:C,loading:k}=Ef();return tw(()=>C,[]),{loading:k,fetch:i(async T=>{let v=T.selectedWallets,E=T?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let B=v.reduce((x,w)=>(x[w.chain]=w.address,x),{}),N={requestId:a?.requestId||"",selectedWallets:B,destination:E||void 0};try{return await g(N,!0).then(x=>{let{result:w}=x;if(!w)throw new Error("Error fetching updated route");Ii({diagnosisMessages:w.diagnosisMessages,requestId:w.requestId,swaps:w.result?.swaps});let b={outputAmount:w.result?.outputAmount,requestId:w.requestId,resultType:w.result?.resultType,swaps:w.result?.swaps||[],validationStatus:w.validationStatus,requestAmount:w.requestAmount};r(b);let I={slippage:f.toString(),disabledSwappersGroups:p},_=If({previousQuote:a??void 0,currentQuote:b,meta:{blockchains:m},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:d});l();let M=!!_.balance,q=ew(o.toString(),w,Mu(v),I,!M,{blockchains:m,tokens:h});return{quote:b,swap:q,error:null,warnings:_}})}catch(x){return Ai(x)}},"fetch"),cancelFetch:C}}i(il,"useConfirmSwap");var uw=iw("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Af}`]:{width:"$48",height:"$48"}}),mw=ll({flexGrow:1,paddingRight:"$10"}),dw=ll({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),fw=ll({display:"flex",justifyContent:"space-between",alignItems:"center"});function Nf(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=O(),s=pw(),[l,c]=Hn(""),u=!n,[p,m]=Hn(!1),[h,d]=Hn(!1),{isActiveTab:f}=ne(),g=S().getDisabledLiquiditySources(),C=cw(g),{manager:k}=ow(),{fetch:y,loading:T,cancelFetch:v}=il(),[E,B]=Hn({swap:null,error:null,warnings:null}),[N,x]=Hn(!1),w=i(async({selectedWallets:L,customDestination:K})=>{let ae=await y?.({selectedWallets:L,customDestination:K});return B(ae),ae},"onConfirmSwap"),b=i(async()=>{if(E.swap&&n)try{await k?.create("swap",{swapDetails:E.swap},{id:E.swap.requestId});let L=`../${F.swaps}/${E.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){c("Error: "+L?.message)}},"addNewSwap"),I=i(async()=>{d(!0),await b(),d(!1)},"onConfirm"),_=i(async()=>{E.warnings?.quote&&Su(E.warnings.quote)&&!a?x(!0):await I()},"onStartConfirmSwap"),M=i(async()=>{B({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(L=>{B(L)}).catch(L=>console.error(L))},"onRefresh");Ni(()=>{!!C.current.length&&!g.length&&M(),C.current=g},[g.length]),Ni(()=>{u&&v()},[u]),Ni(()=>{u&&m(u)},[u]),Ni(()=>{u||y({selectedWallets:o,customDestination:r}).then(L=>B(L)).catch(L=>console.error(L))},[]),lw(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=E.warnings?.quote??null,R=E.error,X=[];if(l&&X.push(Le.createElement(nw,{type:"error",variant:"alarm",title:l})),q||R){let L=`../${F.settings}`;X.push(Le.createElement(_n,{warning:q,error:R,couldChangeSettings:!1,refetchQuote:M,showWarningModal:N,confirmationDisabled:!f,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:async()=>{x(!1),await b()},onChangeSettings:()=>s(L)}))}return Le.createElement(oe,{header:{title:al.t("Confirm Swap"),onWallet:()=>{let L=`../${F.wallets}`;s(L)}},footer:Le.createElement(uw,null,Le.createElement("div",{className:mw()},Le.createElement(rw,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:T||h,disabled:!!E.error||!f,onClick:_},al.t("Start Swap"))),Le.createElement(Af,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:T||h,disabled:!f,onClick:m.bind(null,!0)},Le.createElement(sw,{size:24})))},p&&Le.createElement(cd,{open:p,onClose:()=>m(!1),onCancel:v,loading:T,onCheckBalance:w}),Le.createElement(re,null,Le.createElement("div",{className:fw()},Le.createElement(aw,{variant:"title",size:"small"},al.t("You get")),Le.createElement("div",{className:dw()},Le.createElement(Yr,{onClick:!T&&!p&&!N?M:void 0}))),Le.createElement(sl,{size:"12"}),nm(X.map((L,K)=>({element:L,key:`alert-${K}`})),Le.createElement(sl,{size:10})),X.length>0?Le.createElement(sl,{size:10}):null,Le.createElement(No,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:E.error,loading:T,warning:E.warnings?.quote??null})))}i(Nf,"ConfirmSwapPage");import{i18n as Ht}from"@lingui/core";import{Button as kl,CustomTokensZeroStateDarkIcon as _w,CustomTokensZeroStateIcon as Dw,DeleteIcon as $w,Divider as Xn,IconButton as Fw,MessageBox as Ow,NotFound as Uw,styled as vl}from"@rango-dev/ui";import fe,{useState as Tl}from"react";import{useNavigate as zw}from"react-router-dom";import{CloseIcon as hw,IconButton as yw,SearchIcon as Sw,TextField as Cw}from"@rango-dev/ui";import qn from"react";import{styled as gw}from"@rango-dev/ui";var Bf=gw("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function vt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:c,suffix:u,...p}=t,m=s.length?qn.createElement(yw,{variant:"ghost",onClick:()=>c?.(""),size:"small"},qn.createElement(hw,{color:"gray",size:10})):null;return u&&(m=u),qn.createElement(Cw,{prefix:qn.createElement(Bf,null,qn.createElement(Sw,{color:"black"})),suffix:m,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...l},size:r,value:s,onChange:a,...p})}i(vt,"SearchInput");import{i18n as Cl}from"@lingui/core";import{Button as ww,CustomTokenWarning as bw,darkTheme as Qf,Divider as Qt,ExternalLinkIcon as xw,Image as Ew,ListItem as Iw,NotFound as Aw,PinIcon as Nw,Skeleton as Bo,Typography as Kn,VirtualizedList as Bw}from"@rango-dev/ui";import W,{useState as Ww}from"react";import{useTranslation as Lw}from"react-i18next";import{Divider as Uf,ListItem as vw,Skeleton as Vn}from"@rango-dev/ui";import wt from"react";import{css as ln,darkTheme as cl,ImageContainer as kw,ListItemButton as Tw,styled as Je,Typography as Wf}from"@rango-dev/ui";var pl=ln({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),ul=ln({position:"relative",height:12,width:"30%",maxWidth:"150px"}),ml=ln({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),dl=ln({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${cl} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),fl=ln({}),gl=ln(),Lf=Je("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),hl=Je("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Bi=Je("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${ul}`]:{[`& .${dl}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${fl}`]:{bottom:"-15px"},[`& .${pl}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${ml}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Mf=Je(Tw,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),yl=Je("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Sl=Je(Wf,{}),Pf=Je("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${gl}`]:{$$color:"$colors$neutral600",[`.${cl} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Gn=Je("div",{display:"flex",alignItems:"end",flexDirection:"column"}),wQ=Je("div",{display:"flex",alignItems:"center"}),_f=Je("div",{position:"relative",[`& ${kw}`]:{borderRadius:"$xm",overflow:"hidden"}}),Df=Je("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),$f=Je(Wf,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),Ff=Je("a",{"& svg:hover":{color:"$colors$info"}}),Of=Je("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":{[`.${cl} &`]:{color:"$foreground"}}}});function zf(t){return wt.createElement(Bi,null,Array.from(Array(t.size),e=>wt.createElement(vw,{key:e,hasDivider:!0,start:wt.createElement(Vn,{variant:"circular",width:35,height:35}),end:wt.createElement(Gn,null,wt.createElement(Vn,{variant:"text",size:"large",width:70}),wt.createElement(Uf,{size:4}),wt.createElement(Vn,{variant:"text",size:"medium",width:50})),title:wt.createElement("div",null,wt.createElement(Vn,{variant:"text",size:"large",width:90}),wt.createElement(Uf,{size:4}),wt.createElement(Vn,{variant:"text",size:"medium",width:90}))})))}i(zf,"LoadingTokenList");var Mw=20,Pw=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return W.createElement("div",{className:ul()},o?W.createElement("div",{className:pl()},o):W.createElement(hl,{className:ml()},W.createElement(Kn,{variant:"title",size:"xmedium"},r.symbol),W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(yl,{css:a},W.createElement(Sl,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&W.createElement("div",{className:`${dl()} ${!o&&fl()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",W.createElement(Qt,{size:4,direction:"horizontal"}),W.createElement(Ff,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:c=>c.stopPropagation()},W.createElement(xw,{size:12}))))},"renderDesc");function jn(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:l,showWarning:c=!0}=t,u=S().fetchStatus,p=S().blockchains(),{getBalanceFor:m,fetchingWallets:h}=S(),{isTokenPinned:d}=S(),{setFromToken:f,setToToken:g}=O(),{t:C}=Lw(),k=Oe(),[y,T]=Ww(null),v=i(()=>{l==="source"?f({token:y,meta:{blockchains:p}}):g({token:y,meta:{blockchains:p}})},"updateToken"),E=i(()=>{v(),k()},"handleImportToken"),B=i(w=>{if(w.customToken){let{customToken:I,..._}=w;return W.createElement(ww,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),T({..._,warning:!0})},"handleClick")},W.createElement(Kn,{variant:"body",size:"xsmall",color:"background"},C("import")))}let b=Er(m(w));return s?s(w):h?W.createElement(Gn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})):b&&W.createElement(Pf,null,W.createElement($f,{variant:"title",size:"small"},b.amount),W.createElement("div",null),b.usdValue&&W.createElement(Kn,{variant:"body",className:gl(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),N=i(()=>W.createElement(Bw,{itemContent:w=>{let b=e[w];if(b==="skeleton")return W.createElement(Iw,{hasDivider:!0,start:W.createElement(Bo,{variant:"circular",width:35,height:35}),end:W.createElement(Gn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})),title:W.createElement("div",null,W.createElement(Bo,{variant:"text",size:"large",width:90}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:90}))});let I=b.address||"",_=p.find(L=>L.name===b.blockchain);if(!_)return null;let M=us(_.color,"main"),q={$$color:M.main150,[`.${Qf} &`]:{$$color:M.main750},backgroundColor:"$$color"},R={$$color:M.main750,[`.${Qf} &`]:{$$color:M.main150},color:"$$color"},X=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick");return W.createElement(Of,null,W.createElement(Mf,{"tab-index":w,key:`${b.symbol}${b.address}`,id:`${b.symbol}${b.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b.customToken,onClick:X,start:W.createElement(_f,null,W.createElement(Ew,{src:b.image===""?yr:b.image,size:30}),t.type!=="custom-token"&&d(b,t.type)&&W.createElement(Df,null,W.createElement(Nw,{size:12,color:"gray"}))),title:_?.type==="COSMOS"||b.name||!b.name&&!I?W.createElement(hl,null,W.createElement(Kn,{variant:"title",size:"xmedium"},b.symbol),W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(yl,{css:q},W.createElement(Sl,{variant:"body",size:"xsmall",css:R},b.blockchain)),c&&b.warning&&W.createElement(W.Fragment,null,W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(bw,{container:A()}))):void 0,description:typeof b!="string"&&_?.info&&I&&_.type!=="COSMOS"?Pw({address:I,token:b,customCssForTag:q,customCssForTagTitle:R,name:b.name,url:_.info.addressUrl.split("{wallet}").join(I)}):b.name||void 0,end:B(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),x=y?uo(y?.blockchain,p):null;return W.createElement(W.Fragment,null,a&&W.createElement(W.Fragment,null,W.createElement(Kn,{variant:"label",size:"large"},Cl.t("Select Token")),W.createElement(Qt,{size:4})),W.createElement(Lf,null,W.createElement(Qt,{size:4}),u==="loading"&&W.createElement(zf,{size:Mw}),u==="success"&&(e.length?W.createElement(W.Fragment,null,W.createElement(Nn,{token:y,address:y?.address??"",blockchain:x??void 0,onImport:E,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),W.createElement(Bi,{as:"ul"},N())):!!o&&W.createElement(Aw,{title:Cl.t("No results found"),description:Cl.t("Try using different keywords")}))))}i(jn,"TokenList");var Qw=vl("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Hw=vl("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),qw=vl(Fw,{"&:hover":{"& svg":{color:"$secondary550"}}});function Hf(){let[t,e]=Tl(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=O(),{mode:c}=Zo({}),u=zw(),[p,m]=Tl(!1),[h,d]=Tl(),f=i(y=>{let T=y.target.value;e(T)},"handleSearch"),g=c==="dark",C=n.filter(y=>et(y.symbol,t)||et(y.address||"",t)||et(y.name||"",t)),k=i(()=>{if(h){let y=a?ut(a):null,T=r?ut(r):null,v=ut(h);y===v?l({token:null}):T===v&&s({token:null}),o(h)}m(!1)},"handleDeleteCustomToken");return fe.createElement(oe,{header:{title:Ht.t("Custom Tokens")}},fe.createElement(re,null,fe.createElement(Qw,null,n.length?fe.createElement(fe.Fragment,null,fe.createElement(vt,{value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Ht.t("Search Token"),onChange:f}),fe.createElement(Xn,{size:16}),fe.createElement(jn,{list:C,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>fe.createElement(qw,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),d(y)}},fe.createElement($w,{size:12,color:"gray"}))})):fe.createElement(Hw,null,fe.createElement(Uw,{icon:g?fe.createElement(_w,{size:200}):fe.createElement(Dw,{size:200}),title:Ht.t("No custom tokens"),description:Ht.t("press the button to add your custom token")})),fe.createElement(Xn,{size:20}),fe.createElement(kl,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>u(F.addCustomTokens)},Ht.t("Add Custom Token"))),fe.createElement(J,{open:p,dismissible:!0,onClose:()=>m(!1),container:A()},fe.createElement(Ow,{title:Ht.t("Delete Custom Token"),type:"error",description:Ht.t("Are you sure you want to Delete this Token?")},fe.createElement(Xn,{size:40}),fe.createElement(Xn,{size:10}),fe.createElement(kl,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},Ht.t("Yes, Delete it")),fe.createElement(Xn,{size:12}),fe.createElement(kl,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},Ht.t("No, Continue"))))))}i(Hf,"CustomTokensPage");import{i18n as qe}from"@lingui/core";import{useManager as pb}from"@rango-dev/queue-manager-react";import{Button as Nl,darkTheme as ub,Divider as Lo,MessageBox as mb,NotFound as db,styled as Bl,Typography as Mi}from"@rango-dev/ui";import{TransactionStatus as Jn}from"rango-types";import ie,{useMemo as lg,useState as Pi}from"react";import{useNavigate as fb}from"react-router-dom";import{FilterIcon as Zw,Popover as Jw}from"@rango-dev/ui";import Wo from"react";import{css as Gw,darkTheme as Wi,IconButton as Vw,styled as Yn}from"@rango-dev/ui";var wl=Yn("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${Wi} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),qf=Yn(Vw,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Wi} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Wi} &`]:{backgroundColor:"$neutral"},[`& ${wl}::before`]:{backgroundColor:"$secondary100",[`.${Wi} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Gf=Yn("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Vf=Yn("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Kf=Gw({display:"flex",justifyContent:"space-between",alignItems:"center"}),jf=Yn("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Xf}from"@lingui/core";import{Button as Kw,Divider as Yf,ListItemButton as jw,Radio as Xw,RadioRoot as Yw,Typography as Zf}from"@rango-dev/ui";import it from"react";function Jf(t){let{filterBy:e,onClickItem:o}=t;return it.createElement(Vf,null,it.createElement("div",{className:Kf()},it.createElement(Zf,{size:"small",variant:"body"},Xf.t("Status")),it.createElement(Kw,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Xf.t("Reset"))),it.createElement(Yf,{size:10}),it.createElement(Yw,{value:e},it.createElement(jf,null,t.list.map((n,r)=>it.createElement(jw,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:it.createElement(it.Fragment,null,it.createElement(Yf,{direction:"horizontal",size:4}),it.createElement(Zf,{size:"medium",variant:"body"},n.title)),start:it.createElement(Xw,{value:n.id}),onClick:o})))))}i(Jf,"FilterSelectorContent");function bl(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Wo.createElement("div",null,Wo.createElement(Jw,{open:a,align:"end",onOpenChange:o,container:A(),content:Wo.createElement(Jf,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Wo.createElement(qf,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Wo.createElement(wl,{isSelect:!!n},Wo.createElement(Zw,{size:16,color:"black"}),!!n&&Wo.createElement(Gf,null)))))}i(bl,"FilterSelector");import{i18n as tb}from"@lingui/core";import{getCurrentStep as ob}from"@rango-dev/queue-manager-rango-preset";import{Divider as ng,GroupedVirtualizedList as nb,Skeleton as rb,SwapListItem as rg,Typography as ib}from"@rango-dev/ui";import He,{useCallback as ig,useEffect as ab,useRef as sb,useState as lb}from"react";function Rf(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(Rf,"calculateGroupsSoFar");import{css as Rw,darkTheme as eb,styled as Zn}from"@rango-dev/ui";var xl=Rw(),eg=Zn("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),El=Zn("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${xl}`]:{$$color:"$colors$neutral600",[`.${eb} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Il=Zn("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),tg=Zn("div",{gap:"$10",display:"flex",flexDirection:"column"}),og=Zn("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var cb=10;function Al(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=lb([]),l=sb(0),{swaps:c,groupCounts:u,groups:p}=n(e),m=ig(Rf,[]),h=ig(()=>{let d=e.length-l.current;d&&(l.current+=Math.min(d,cb),s(m(u,l.current)))},[e.length]);if(ab(()=>{r||h()},[r,h]),r){let d=[1,2];return He.createElement(He.Fragment,null,[d,d].map((g,C)=>He.createElement(El,{key:C},He.createElement(Il,null,He.createElement(rb,{variant:"text",width:60,size:"small"}),He.createElement(ng,{size:16})),He.createElement(ng,{size:4}),He.createElement(tg,null,g.map((y,T)=>He.createElement(rg,{isLoading:!0,key:T}))))))}return He.createElement(nb,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:d=>He.createElement(El,null,He.createElement(Il,null,He.createElement(ib,{variant:"label",size:"medium",className:xl()},p[d]))),itemContent:(d,f)=>{let g=c[d],C=ob(g);if(!g)return null;let k=g.steps[0],y=g.steps[g.steps.length-1];return He.createElement(eg,{key:g.requestId},He.createElement(rg,{requestId:g.requestId,creationTime:g.creationTime,status:g.status,onClick:o,currentStep:C,tooltipContainer:A(),onlyShowTime:p[f]===tb.t("Today"),swapTokenData:{from:{token:{image:k.fromLogo,displayName:k.fromSymbol},blockchain:{image:k.fromBlockchainLogo||""},amount:P(g.inputAmount,6,6),realAmount:g.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:P(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(Al,"HistoryGroupedList");import{i18n as Li}from"@lingui/core";import ag from"dayjs";var sg=i(t=>{let e=new Map([["today",{title:Li.t("Today"),swaps:[]}],["week",{title:Li.t("This week"),swaps:[]}],["month",{title:Li.t("This month"),swaps:[]}],["year",{title:Li.t("This year"),swaps:[]}]]);function o(c,u){e.has(c)||e.set(c,{title:c,swaps:[]}),e.get(c)?.swaps.push(u)}i(o,"addYearsToOutput");let n=ag();t.forEach(c=>{let u=Number(c.creationTime),p=ag(u);if(n.isSame(p,"day"))e.get("today")?.swaps.push(c);else if(n.isSame(p,"week"))e.get("week")?.swaps.push(c);else if(n.isSame(p,"month"))e.get("month")?.swaps.push(c);else if(n.isSame(p,"year"))e.get("year")?.swaps.push(c);else{let m=new Date(u).getFullYear().toString();o(m,c)}});let r=Array.from(e.values()).filter(c=>c.swaps.length>0),a=r.flatMap(c=>c.swaps),s=r.map(c=>c.swaps.length),l=r.map(c=>c.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var gb=Bl("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),hb=Bl("div",{display:"flex",justifyContent:"center",alignItems:"center"}),yb=Bl("div",{"._typography":{color:"$neutral700",[`.${ub}&`]:{color:"$neutral900"}}}),Sb=[{id:Jn.SUCCESS,title:qe.t("Complete")},{id:Jn.RUNNING,title:qe.t("Running")},{id:Jn.FAILED,title:qe.t("Failed")}],Cb=i((t,e)=>t?.length?t.filter(o=>xt(o.fromBlockchain,e)||xt(o.toBlockchain,e)||xt(o.toSymbol,e)||xt(o.fromSymbol,e)).length:!1,"isStepContainsText");function cg(){let t=fb(),{manager:e,state:o}=pb(),n=gt(e).map(({swap:T})=>T),[r,a]=Pi(""),[s,l]=Pi(!1),c=!o.loadedFromPersistor,[u,p]=Pi(""),[m,h]=Pi(!1),d=i(T=>{let v=T.target.value;a(v)},"handleSearch"),f=lg(()=>!r&&!u?n:n.filter(T=>{let{inputAmount:v,status:E,steps:B,requestId:N}=T;return(!r||xt(v,r)||xt(E,r)||Cb(B,r)||xt(N,r))&&(!u||u===E)}),[n,r,u]),g=!f?.length&&!c,C=i(()=>h(!1),"onCloseModal"),k=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(T){console.log(T)}},"onClear"),y=lg(()=>!n.some(T=>T.status===Jn.SUCCESS||T.status===Jn.FAILED),[n]);return ie.createElement(oe,{header:{title:qe.t("History"),suffix:ie.createElement(Jt,null,ie.createElement(Nl,{id:"widget-history-clear-btn",disabled:y,variant:"ghost",size:"xsmall",onClick:()=>h(!0)},ie.createElement(Mi,{size:"medium",variant:"label",color:"error"},qe.t("Clear"))))}},ie.createElement(re,null,ie.createElement(hb,null,ie.createElement(vt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:qe.t("Search Transaction"),autoFocus:!0,onChange:d,style:{height:36},value:r}),ie.createElement(Lo,{size:10,direction:"horizontal"}),ie.createElement(bl,{filterBy:u,open:s,onOpenChange:T=>l(T),onClickItem:T=>p(T),list:Sb})),ie.createElement(Lo,{size:"16"}),ie.createElement(gb,null,g&&ie.createElement(og,null,ie.createElement(Lo,{size:32}),ie.createElement(db,{title:r?qe.t("No results found"):qe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?qe.t("Try using different keywords"):qe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!g&&ie.createElement(Al,{list:f,onSwapClick:t,groupBy:sg,isLoading:c}))),ie.createElement(J,{open:m,onClose:C,container:A()},ie.createElement(Lo,{size:20}),ie.createElement(mb,{type:"warning",title:qe.t("Clear Transaction History"),description:ie.createElement(yb,null,ie.createElement(Mi,{variant:"body",size:"medium"},qe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ie.createElement(Lo,{size:"24"}),ie.createElement(Mi,{variant:"body",size:"small"},qe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ie.createElement(Lo,{size:30}),ie.createElement(Nl,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},qe.t("Yes, Clear the history")),ie.createElement(Lo,{size:10}),ie.createElement(Nl,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:C},ie.createElement(Mi,{variant:"title",size:"medium",color:"primary"},qe.t("No, Cancel")))))}i(cg,"HistoryPage");import{i18n as Hb}from"@lingui/core";import{Button as qb,Divider as Bg,styled as Gb,WarningIcon as Vb}from"@rango-dev/ui";import Kb from"bignumber.js";import Ge,{useEffect as Wg,useState as Lg}from"react";import{useNavigate as jb}from"react-router-dom";import{i18n as ug}from"@lingui/core";import{Alert as Tb,Divider as Wl,NoRouteIcon as vb,Typography as wb}from"@rango-dev/ui";import Mo from"react";import{styled as kb}from"@rango-dev/ui";var pg=kb("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Ll(){let{fromToken:t,toToken:e}=O();return!!t&&!!e&&Mt(t,e)?Mo.createElement(pg,null,Mo.createElement(Wl,{size:10}),Mo.createElement(vb,{size:24,color:"gray"}),Mo.createElement(Wl,{size:4}),Mo.createElement(wb,{variant:"title",size:"small"},ug.t("No Routes Found")),Mo.createElement(Wl,{size:4}),Mo.createElement(Tb,{title:ug.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Ll,"SameTokensWarning");import{i18n as Nb}from"@lingui/core";import{Header as Bb}from"@rango-dev/ui";import ro,{useEffect as Wb,useState as Lb}from"react";import{i18n as xb}from"@lingui/core";import{Divider as Pl,FullExpandedQuote as Eb,Typography as Ib}from"@rango-dev/ui";import Ce from"react";import{styled as Ml}from"@rango-dev/ui";var mg=Ml("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),dg=Ml("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),fg=Ml("div",{width:"146px"});import{i18n as Rn}from"@lingui/core";import{Select as bb}from"@rango-dev/ui";import gg from"react";function _i(t){let{updateQuotePartialState:e,sortStrategy:o}=O(),n=[{value:"SMART",label:Rn.t("Smart Routing")},{value:"FEE",label:Rn.t("Lowest Fee")},{value:"SPEED",label:Rn.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Rn.t("Maximum Return")},{value:"PRICE",label:Rn.t("Maximum Output")}];return gg.createElement(fg,null,gg.createElement(bb,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(_i,"SelectStrategy");var hg=3;function er(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:c,quotes:u,updateQuotePartialState:p,fromToken:m,toToken:h,sortStrategy:d,error:f}=O(),{slippage:g,customSlippage:C}=S(),{findToken:k}=S(),y=l||A(),T=!!u&&u.results.length,v=C??g,E=i(x=>{if(!m||!h||!u)return null;let w={requestAmount:u.requestAmount,validationStatus:null,...x};return Ko({currentQuote:w,userSlippage:v,findToken:k})},"getQuoteWarning"),B=f?.type===0||f?.type===1,N=u?.results?zr(d,u?.results):[];return Ce.createElement(Ce.Fragment,null,a&&Ce.createElement(Ce.Fragment,null,Ce.createElement(dg,null,Ce.createElement(Ib,{size:"xmedium",variant:"title"},xb.t("Sort by")),Ce.createElement(_i,{container:y})),Ce.createElement(Pl,{size:"10"})),e&&Array.from({length:hg},(x,w)=>Ce.createElement(Ce.Fragment,{key:w},s?Ce.createElement(Eb,{loading:!0}):Ce.createElement(Qn,{tagHidden:!1,type:"list-item",expanded:!1}),w!==hg-1&&Ce.createElement(Pl,{size:16}))),!e&&Ce.createElement(Ce.Fragment,null,T?N.map((x,w)=>{let b=E(x),I=rl(x.swaps),_=N.length-1===w;return Ce.createElement(Ce.Fragment,{key:x.requestId},Ce.createElement(No,{showModalFee:r,container:y,selected:c?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:u.requestAmount,validationStatus:null},loading:e,error:I?.options||null,warning:b,fullExpandedMode:s,onClick:M=>{I||p("warning",b),p("error",I?.options||null),o(M)},type:"list-item"}),!_&&Ce.createElement(Pl,{size:16}))}):B&&Ce.createElement(mg,null,Ce.createElement(Mn,{size:s?"large":"small",error:f,fetch:n}))))}i(er,"Quotes");import{darkTheme as Ab,styled as yg}from"@rango-dev/ui";var Sg=yg("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${Ab} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Cg=yg("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var Mb=100;function _l(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=Lb(!1),c=s?"":"is-hidden",{config:u}=S(),p=u?.variant==="full-expanded",m=fo();return Wb(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},Mb):(l(!1),h&&clearTimeout(h)),()=>{h&&clearTimeout(h)}},[a]),ro.createElement(Sg,{expandMode:u?.variant==="full-expanded"?"full":"default",className:`${c} ${ei()}`,id:$e.EXPANDED_BOX_ID},ro.createElement(Bb,{title:Nb.t("Routes"),suffix:ro.createElement(ro.Fragment,null,ro.createElement(_i,{container:m}),ro.createElement(xo,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),ro.createElement(Cg,null,ro.createElement(er,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:fo(),onClickOnQuote:n,fullExpandedMode:p})))}i(_l,"ExpandedQuotes");import{i18n as Eg}from"@lingui/core";import{SwapInput as Ig}from"@rango-dev/ui";import $b from"bignumber.js";import tr from"react";import{ReverseIcon as Db}from"@rango-dev/ui";import $l from"react";import{keyframes as Pb,styled as kg}from"@rango-dev/ui";var Dl=450,_b=Pb({"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)"}}),Tg=kg("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),vg=kg("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${_b} ${Dl}ms ease-in-out forwards`}},"&:hover":{color:"$secondary500",transform:"translateY(1px) scale(1.04)",boxShadow:"1px 1px 1px 1px rgba(0, 0, 0, 0.05)"}});function Fl(){let t=O.use.switchFromAndTo();return $l.createElement(Tg,null,$l.createElement(vg,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Dl),t()}},$l.createElement(Db,{size:12})))}i(Fl,"SwitchFromAndToButton");import{styled as wg}from"@rango-dev/ui";var bg=wg("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),xg=wg("div",{position:"relative"});function Ol(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:c,setInputAmount:u,inputAmount:p,inputUsdValue:m,outputAmount:h,outputUsdValue:d,selectedQuote:f}=O(),{connectedWallets:g,getBalanceFor:C}=S(),k=a?C(a):null,y=Er(k)?.amount??"0",T=k?new $b(k.amount).shiftedBy(-k.decimals):le,v=!!s&&sp(g,s.name),E=!Xa(f,p,m),B=!Xa(f,p,d),N=!m||!d||!d.gt(0)?null:Dt(m.toString(),d.toString());return tr.createElement(bg,null,tr.createElement(xg,null,tr.createElement(Ig,{label:Eg.t("From"),mode:"From",onInputChange:u,balance:y,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:p,usdValue:E?void 0:P(m,4,4),realUsdValue:E?void 0:m?.toString(),error:E?ee().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:v,tooltipContainer:A(),onSelectMaxBalance:()=>{let x=P(T,k?.decimals),w=k?.amount?x.split(",").join(""):"";u(w)},anyWalletConnected:g.length>0}),tr.createElement(Fl,null)),tr.createElement(Ig,{sharpBottomStyle:!r&&(!!f||e),label:Eg.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:c?.displayName||"",image:c?.logo},token:{displayName:l?.symbol||"",image:l?.image,securityWarning:!!l?.warning},percentageChange:P(Dt(m,d),2,2),warningLevel:$t(N??0),price:{value:P(h,6,6),usdValue:B?void 0:P(d,4,4),realValue:h?.toString(),realUsdValue:B?void 0:d?.toString(),error:B?ee().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:A()}))}i(Ol,"Inputs");import{useCallback as Fb,useEffect as Ob,useRef as Ub,useState as zb}from"react";function Ag(){let{fetch:t,loading:e,cancelFetch:o}=Ei({request:async(n,r)=>await tt().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Ag,"useFetchAllQuotes");var Qb=600;function Di({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Ag(),{excludeLiquiditySources:n,routing:r}=S().config,{connectedWallets:a}=S(),l=a.some(Ie=>Ie.isContractWallet),{fromToken:c,toToken:u,inputAmount:p,inputUsdValue:m,selectedQuote:h,sortStrategy:d,resetQuote:f,error:g,warning:C,setSelectedQuote:k,updateQuotePartialState:y}=O(),{slippage:T,customSlippage:v,affiliatePercent:E,affiliateRef:B,affiliateWallets:N,fetchStatus:x}=S(),w=S().getLiquiditySources(),b=S().getDisabledLiquiditySources(),I=S().excludeLiquiditySources(),{findToken:_}=S(),[M,q]=zb(!0),R=Ub(p),X=v??T,K=!c||!u||Mt(c,u)||!gn(p),ae=i(Ie=>{q(Ie)},"resetState"),Q=i(Ie=>{let{fromToken:Ke,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:_e}=Ie;if(M||ae(!0),!K&&Ke&&se){f();let je=Lu({fromToken:Ke,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,wallets:a,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:_e,contractCall:l});Uo("experimental",r)&&(je.experimental=!0),Uo("avoidNativeFee",r)&&(je.avoidNativeFee=!0),Uo("enableCentralizedSwappers",r)&&(je.enableCentralizedSwappers=!0),r?.maxLength&&(je.maxLength=r.maxLength),e(je).then(Te=>{let De=zr(d,Te.results),jt=ku(h,De,Te.requestAmount);q(!1),y("quotes",Te),k(jt),Ii({diagnosisMessages:Te.diagnosisMessages,requestId:jt?.requestId||"",swaps:jt?.swaps});let po=jt&&Ko({currentQuote:jt,userSlippage:X,findToken:_});y("warning",po)}).catch(Te=>{let{error:De}=Ai(Te);(De?.type===0||De?.type===1)&&f(),De?.type!==2&&(y("error",De),q(!1))})}},"fetch"),de=Fb(kr(Ie=>{Q(Ie)},Qb),[K]);return Ob(()=>{if(!t){q(!1);return}if(x!=="success")return;if(K){q(!1),(h||g||C)&&f();return}if(!gn(p)||m?.eq(0)){ae(!1),o();return}f(),ae(!0);let Ie=Q;return R.current&&R.current!=p&&(Ie=de),R.current=p,Ie({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:I,disabledLiquiditySources:b,slippage:X,affiliateRef:B,affiliatePercent:E,affiliateWallets:N,contractCall:l}),o},[x,p,c?.symbol,c?.address,c?.blockchain,u?.symbol,u?.address,u?.blockchain,K,w?.length,n,b.length,X,B,E,l,JSON.stringify(N)]),{fetch:()=>Q({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:I,disabledLiquiditySources:b,slippage:X,affiliateRef:B,affiliatePercent:E,affiliateWallets:N,contractCall:l}),loading:M}}i(Di,"useSwapInput");function Ng(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};ye.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Ng,"emitPreventableEvent");var Xb=Gb("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),Yb=300;function Mg(){let t=jb(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:c,setSelectedQuote:u,resetQuoteWallets:p,setQuoteWarningsConfirmed:m,updateQuotePartialState:h}=O(),[d,f]=Lg(!1),{isLargeScreen:g,isExtraLargeScreen:C}=Si(),{fetch:k,loading:y}=Di({refetchQuote:a}),{config:T,fetchStatus:v,connectedWallets:E}=S(),{isActiveTab:B}=ne(),[N,x]=Lg(!1),b=Au({fetchMetaStatus:v,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:E.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),I=fp(g,C,T?.variant),_=!!n&&!!e&&!!o&&new Kb(n).gt(0)&&!Ou(e,o),M=_&&v==="success"&&y,X=(!I||I&&c?.results.length)&&(l||s);Wg(()=>{p(),h("refetchQuote",!0)},[]),Wg(()=>{f(_)},[_]);let L=(r||s)&&!N?k:void 0,K=i(Q=>{I&&d?(f(!1),setTimeout(()=>{t(Q)},Yb)):t(Q)},"onHandleNavigation"),ae=i(Q=>{r?.requestId!==Q.requestId&&(x(!1),u(Q))},"onClickOnQuote");return Ge.createElement(Xb,null,Ge.createElement(oe,{height:"auto",footer:Ge.createElement(qb,{id:`widget-swap-${b.action}-btn`,type:"primary",size:"large",disabled:b.disabled||!B,prefix:b.action==="confirm-warning"&&Ge.createElement(Vb,null),fullWidth:!0,onClick:()=>{b.action==="connect-wallet"?Ng({type:"clickConnectWallet"},()=>K(F.wallets)):b.action==="confirm-warning"?x(!0):K(F.confirmSwap)}},b.title),header:{onWallet:()=>{K(F.wallets)},hasBackButton:!1,title:T.title||Hb.t("Swap"),suffix:Ge.createElement(xo,{hidden:I?["refresh"]:void 0,onClickRefresh:L,onClickHistory:()=>K(F.swaps),onClickSettings:()=>{K(F.settings)}})}},Ge.createElement(re,null,Ge.createElement(Ol,{fetchingQuote:M,fetchMetaStatus:v,isExpandable:I,onClickToken:Q=>{K(Q==="from"?F.fromSwap:F.toSwap)}}),Ge.createElement(Bg,{size:"2"}),I?null:Ge.createElement(No,{quote:r,loading:M,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:c&&c.results.length>1?()=>{h("refetchQuote",!1),K(F.routes)}:void 0}),X?Ge.createElement(Ge.Fragment,null,Ge.createElement(Bg,{size:"10"}),Ge.createElement(_n,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:k,showWarningModal:N,confirmationDisabled:!B,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:()=>{x(!1),m(!0),K(F.confirmSwap)},onChangeSettings:()=>K(F.settings)})):null,Ge.createElement(Ll,null))),I?Ge.createElement(_l,{loading:M,onClickOnQuote:ae,fetch:k,onClickRefresh:L,isVisible:d}):null)}i(Mg,"Home");import{i18n as Pg}from"@lingui/core";import{Alert as Zb,Divider as Jb,List as Rb,ListItemButton as ex,Radio as tx,RadioRoot as ox,Typography as nx}from"@rango-dev/ui";import Wt from"react";function io(){let{setLanguage:t,language:e,config:o}=S(),n=Cp,r=o?.language||zo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||zo),resetLanguage:()=>t(null)}}i(io,"useLanguage");function _g(){let{activeLanguage:t,changeLanguage:e,languages:o}=io(),n=Oe(),r=o.map(a=>{let{local:s,label:l,SVGFlag:c}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Wt.createElement(nx,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:Wt.createElement(tx,{value:s}),start:Wt.createElement(c,null)}});return Wt.createElement(oe,{header:{title:Pg.t("Language")}},Wt.createElement(re,null,Wt.createElement(Zb,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Wt.createElement(Jb,{size:"8"}),Wt.createElement(ox,{value:t},Wt.createElement(Rb,{type:Wt.createElement(ex,{title:Pg.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(_g,"LanguagePage");import{i18n as qt}from"@lingui/core";import{Button as lx,Checkbox as cx,Image as px,ListItemButton as ux,NotFound as mx,Typography as dx}from"@rango-dev/ui";import Ve,{useState as fx}from"react";import{Checkbox as ax,Skeleton as $g}from"@rango-dev/ui";import nr from"react";import{styled as Ul}from"@rango-dev/ui";var or=Ul("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),zl=Ul("div",{width:80,display:"flex",justifyContent:"flex-end"}),Ql=Ul("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as rx,styled as ix}from"@rango-dev/ui";var Dg=ix(rx,{height:61});var sx=30;function Hl(){return nr.createElement(or,null,Array.from(Array(sx),(t,e)=>nr.createElement(Dg,{hasDivider:!0,key:e,start:nr.createElement($g,{variant:"circular",width:35,height:35}),title:nr.createElement($g,{variant:"text",size:"large",width:90}),end:nr.createElement(ax,{checked:!1})})))}i(Hl,"LoadingLiquiditySourceList");function ql({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[r,a]=fx(""),s=S().toggleLiquiditySource,l=S().isInCampaignMode(),c=Nr(o,n),u={Exchanges:qt.t("Exchanges"),Bridges:qt.t("Bridges")},p=[];t==="Exchanges"&&p.push("DEX"),t==="Bridges"&&p.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=c.filter(k=>p.includes(k.type)),h=m.length===m.filter(k=>k.selected).length,d=i(()=>{m.forEach(k=>{h?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),f=m.map(k=>{let{selected:y,groupTitle:T,logo:v,id:E,...B}=k;return{id:`widget-setting-liquidity-source-${E.toLowerCase().replace(/\s+/g,"-")}-item-btn`,start:Ve.createElement(px,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(T)},end:Ve.createElement(cx,{checked:y,disabled:l}),title:Ve.createElement(dx,{variant:"title",size:"xmedium"},qt.t(T)),selected:y,groupTitle:T,logo:v,...B}}),g=i(k=>{let y=k.target.value;a(y)},"handleSearch"),C=f;return r&&(C=f.filter(k=>xt(k.groupTitle,r))),Ve.createElement(oe,{header:{title:qt.t(t),suffix:Ve.createElement(zl,null,Ve.createElement(lx,{id:`widget-liquidity-source-${h?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:d},h?qt.t("Deselect all"):qt.t("Select all")))}},Ve.createElement(re,{view:!0},Ve.createElement(vt,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:qt.t("Search {sourceType}",{sourceType:u[t]}),onChange:g}),e==="loading"&&Ve.createElement(Hl,null),!C.length&&r?Ve.createElement(Ql,null,Ve.createElement(mx,{title:qt.t("No results found"),description:qt.t("Try using different keywords")})):e==="success"&&Ve.createElement(or,{disabled:l},C.map(k=>{let{groupTitle:y,...T}=k;return Ve.createElement(Ve.Fragment,{key:k.id},Ve.createElement(ux,{style:{height:"61px"},...T,selected:!1,hasDivider:!0}))}))))}i(ql,"LiquiditySourcePage");import{i18n as gx}from"@lingui/core";import $i from"react";import{useNavigate as hx}from"react-router-dom";function Fg(){let t=hx(),e=Oe(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=O(),{fetch:l,loading:c}=Di({refetchQuote:n}),u=i(h=>{r(h),a("refetchQuote",!1),e()},"onClickOnQuote"),p=`../${F.settings}`,m=`../${F.wallets}`;return $i.createElement(oe,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:gx.t("Routes"),suffix:$i.createElement(xo,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(p),a("refetchQuote",!0)}})}},$i.createElement(re,null,$i.createElement(er,{fetch:l,loading:c,onClickOnQuote:u})))}i(Fg,"RoutesPage");import{i18n as Gg}from"@lingui/core";import{Divider as Vg,getCategoriesCount as Ex,SelectableCategoryList as Ix}from"@rango-dev/ui";import Gt,{useState as Kg}from"react";import{useNavigate as Ax}from"react-router-dom";import{i18n as Gl}from"@lingui/core";import{Divider as kx,Image as Tx,ListItemButton as vx,NotFound as wx,Typography as qg}from"@rango-dev/ui";import at,{useEffect as bx,useState as xx}from"react";var Og=i((t,e,o)=>t.filter(n=>Tr(n.type,o)).filter(n=>et(n.name,e)||et(n.displayName,e)),"filterBlockchains");import{ImageContainer as yx,styled as Ug}from"@rango-dev/ui";var zg=Ug("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Fi=Ug(Bn,{padding:0,margin:0,listStyle:"none",[`& ${yx}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as Sx,Skeleton as Qg}from"@rango-dev/ui";import Oi from"react";var Cx=20;function Hg(){return Oi.createElement(Fi,null,Array.from(Array(Cx),t=>Oi.createElement(Sx,{key:t,hasDivider:!0,start:Oi.createElement(Qg,{variant:"circular",width:35,height:35}),title:Oi.createElement(Qg,{variant:"text",size:"large",width:90})})))}i(Hg,"LoadingBlockchainList");function Vl(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,l]=xx(e),{fetchStatus:c}=S();bx(()=>{l([...Og(e,o,r)])},[e,o,r]);let u=i(()=>!s.length&&o?at.createElement(wx,{title:Gl.t("No results found"),description:Gl.t("Try using different keywords")}):at.createElement(Fi,{as:"ul",key:`${r}-${o}`},s.map(p=>at.createElement(vx,{key:`${p.name}-${p.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(p),start:at.createElement(Tx,{src:p.logo,size:30}),title:at.createElement(qg,{variant:"title",size:"medium"},p.displayName),id:p.name}))),"renderList");return at.createElement(at.Fragment,null,a&&at.createElement(at.Fragment,null,at.createElement(qg,{variant:"label",size:"large"},Gl.t("Select Chain")),at.createElement(kx,{size:4})),at.createElement(zg,null,c==="loading"&&at.createElement(Hg,null),c==="success"&&u()))}i(Vl,"BlockchainList");function Ui(t){let{type:e}=t,o=Oe(),[n,r]=Kg(""),[a,s]=Kg("ALL"),l=O.use.setToBlockchain(),c=O.use.setFromBlockchain(),{fetchStatus:u}=S(),p=Ax(),m=S().blockchains({type:e}),h=Ex(m),d=!t.hideCategory&&h!==1;return Gt.createElement(oe,{header:{title:Gg.t("Select Chain")}},Gt.createElement(re,{view:!0},d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(Ix,{setCategory:s,category:a,blockchains:m,isLoading:u==="loading"}),Gt.createElement(Vg,{size:24})),Gt.createElement(vt,{value:n,autoFocus:!0,placeholder:Gg.t("Search Chain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),Gt.createElement(Vg,{size:16}),Gt.createElement(Vl,{list:m,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:f=>{e==="custom-token"?p(`..?blockchain=${f.name}`,{replace:!0}):(e==="source"?c(f):l(f),o())}})))}i(Ui,"SelectBlockchainPage");import{i18n as Hi}from"@lingui/core";import{Divider as eh,Spinner as zx}from"@rango-dev/ui";import ao,{useEffect as Qx,useState as Hx}from"react";import{useNavigate as qx}from"react-router-dom";import{i18n as Xl}from"@lingui/core";import{BlockchainsChip as zi,Divider as Zg,Image as Jg,Skeleton as Mx,Tooltip as Px,Typography as Yl}from"@rango-dev/ui";import Me from"react";import{useEffect as Wx}from"react";var jg=["ETH","COSMOS","OSMOSIS"];function Kl(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Nx),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let c=0;c<=l;c++){let u=n[c];s=s.filter(p=>u.name!==p)}}n.sort(Bx(s)),r=n.splice(a)}return{list:n,more:r}}i(Kl,"prepare");function Nx(t,e){let o=jg,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(Nx,"sortByMostUsedBlockchains");function Bx(t){return i(function(o,n){let r=t.findIndex(c=>c===o.name),a=t.findIndex(c=>c===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(Bx,"generateSortByPreferredBlockchainsFor");function Xg(t,e){return!!e.list.find(o=>o.name===t)}i(Xg,"isInVisibleList");function jl(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();Wx(()=>{if(e?.selected){let a=Kl(t,o,e);Xg(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Kl(t,o,e);return{list:r.list,more:r.more,history:[]}}i(jl,"usePrepareBlockchainList");import{styled as Lx}from"@rango-dev/ui";var Yg=Lx("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var _x=12;function Zl(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,s=jl(e,{limit:10,selected:n?.name}),{fetchStatus:l}=S(),c=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),p=s.more.length>0,m=s.more.length===1,h=!m&&p;return Me.createElement(Me.Fragment,null,Me.createElement(Zg,{size:12}),Me.createElement(Yl,{variant:"label",size:"large"},Xl.t("Select Chain")),Me.createElement(Zg,{size:12}),Me.createElement(Yg,null,l==="loading"&&Array.from(Array(_x),d=>Me.createElement(Mx,{key:d,variant:"rounded",height:50})),l==="success"&&Me.createElement(Me.Fragment,null,Me.createElement(zi,{selected:!n,onClick:()=>{o==="from"?u():c()}},Me.createElement(Yl,{variant:"body",size:"xsmall",color:"secondary500"},Xl.t("All"))),s.list.map(d=>Me.createElement(Px,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:A()},Me.createElement(zi,{key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},Me.createElement(Jg,{src:d.logo,size:30})))),m?Me.createElement(zi,{key:s.more[0].name,selected:!!n&&n.name===s.more[0].name,onClick:()=>r(s.more[0])},Me.createElement(Jg,{src:s.more[0].logo,size:30})):null,h?Me.createElement(zi,{onClick:a,key:"more-blockchains"},Me.createElement(Yl,{variant:"body",size:"xsmall",color:"secondary500"},Xl._("More +{count}",{count:s.more.length}))):null)))}i(Zl,"BlockchainsSection");import{useCallback as $x,useRef as Fx,useState as Jl}from"react";function Rl(){let t=S().blockchains(),e=Fx(null),{customTokens:o}=S(),[n,r]=Jl(!1),[a,s]=Jl([]),[l,c]=Jl(null),u=i(async(h,d)=>{c(null),r(!0),s([]);try{let f=await tt().searchCustomTokens({query:h,blockchain:d},{signal:e.current?.signal}),g=new Set(o().map(y=>_t(y))),C=new Set(t.map(y=>y.name)),k=f.tokens.filter(y=>C.has(y.blockchain)&&!g.has(_t(y)));s(k),r(!1)}catch(f){c(f instanceof Error?f.message:"something went wrong"),s([]),f?.name!=="CanceledError"&&r(!1)}},"fetch"),p=$x(kr((h,d)=>{e.current?.signal.aborted||u(h,d)},600),[t.length]);return{fetch:(h,d)=>{e.current=new AbortController,s([]),r(!0),p(h,d)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:l}}i(Rl,"useSearchCustomTokens");function Qi(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(Qi,"shouldSearchForCustomTokens");function Rg(t,e,o,n,r){let a=[...t];return Qi(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(Rg,"prepareTokensList");function qi(t){let{type:e}=t,o=qx(),n=Oe(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:c,setToBlockchain:u}=O(),{getBalanceFor:p}=S(),{fetch:m,loading:h,tokens:d,cancel:f}=Rl(),[g,C]=Hx(""),k=e==="source"?r:a,y=k?.name??"",T=S().blockchains({type:e}),v=S().tokens({type:e,blockchain:y,searchFor:g,getBalanceFor:p}),E=Rg(v,d,g,h,k?.name),B=i(w=>{e==="source"?c(w):u(w)},"updateBlockchain"),N=i(w=>{e==="source"?s({token:w,meta:{blockchains:T}}):l({token:w,meta:{blockchains:T}})},"updateToken"),x={source:Hi.t("Source"),destination:Hi.t("Destination")};return Qx(()=>(Qi(v,g,k?.name)&&m(g,k?.name??void 0),()=>{f()}),[v.length,g,k?.name]),ao.createElement(oe,{header:{title:Hi.t("Swap {type}",{type:x[e]})}},ao.createElement(re,null,ao.createElement(Zl,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:w=>{B(w)}}),ao.createElement(eh,{size:24}),ao.createElement(vt,{value:g,autoFocus:!0,placeholder:Hi.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>C(""),onChange:w=>C(w.target.value),suffix:Qi(v,g,k?.name)&&h?ao.createElement(zx,{size:12,color:"secondary"}):void 0}),ao.createElement(eh,{size:16}),ao.createElement(jn,{list:E,selectedBlockchain:y,searchedFor:g,type:e,onChange:w=>{N(w);let b=T.find(I=>w.blockchain===I.name);b&&B(b),n()}})))}i(qi,"SelectSwapItemsPage");import{i18n as oc}from"@lingui/core";import{Alert as hE,Button as yE,styled as SE}from"@rango-dev/ui";import Po from"react";import{useInRouterContext as CE,useSearchParams as kE}from"react-router-dom";import{i18n as ah}from"@lingui/core";import{Divider as sh,InfoIcon as jx,SlippageIcon as Xx,TextField as Yx,Tooltip as Zx,Typography as lh}from"@rango-dev/ui";import st from"react";import{Chip as Gx,styled as rr,TextField as Vx}from"@rango-dev/ui";var th=rr("div",{paddingTop:"$5",padding:"$10 $5"}),oh=rr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${Vx}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),nh=rr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Gi=rr("div",{maxWidth:"280px",padding:"$10"}),rh=rr(Gx,{width:"61px",flexShrink:0});import{i18n as ec}from"@lingui/core";import{Typography as Kx}from"@rango-dev/ui";import ir from"react";function ih(){return ir.createElement(Gi,null,ir.createElement(Kx,{variant:"label",size:"medium",color:"neutral700"},ec.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),ir.createElement("br",null),ir.createElement("br",null),ir.createElement("b",null,ec.t("Warning")),":\xA0",ec.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(ih,"SlippageTooltipContent");function tc(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S();return st.createElement(th,null,st.createElement(nh,null,st.createElement(Xx,{size:16,color:"gray"}),st.createElement(sh,{direction:"horizontal",size:4}),st.createElement(lh,{variant:"title",size:"xmedium"},ah.t("Slippage tolerance per swap")),st.createElement(sh,{direction:"horizontal",size:4}),st.createElement(Zx,{container:A(),side:"top",sideOffset:4,content:st.createElement(ih,null)},st.createElement(jx,{color:"gray"}))),st.createElement(oh,null,kp.map((r,a)=>{let s=`slippage-${a}`;return st.createElement(rh,{key:s,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`})}),st.createElement(Yx,{type:"number",min:"0.01",max:"30",step:"0.01",fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:r=>{let a=r.target.value,s=parseFloat(a);s>=bp&&s<=wp?n(s):n(null)},suffix:o&&st.createElement(lh,{variant:"body",size:"small"},"%"),placeholder:ah.t("Custom")})))}i(tc,"Slippage");import{i18n as ht}from"@lingui/core";import{AutoThemeIcon as ch,BridgesIcon as Jx,ChevronRightIcon as Vi,DarkModeIcon as ph,Divider as ar,ExchangeIcon as Rx,InfinityIcon as eE,InfoIcon as tE,LanguageIcon as oE,LightModeIcon as uh,List as nE,ListItem as rE,ListItemButton as iE,Skeleton as aE,styled as sE,Switch as lE,Tabs as cE,TargetIcon as pE,Tooltip as uE,Typography as Re}from"@rango-dev/ui";import $ from"react";import{useNavigate as mE}from"react-router-dom";var dE=sE("div",{width:"202px",height:"$40"}),fE=[{id:"light",icon:$.createElement(uh,{color:"black",size:24}),tooltip:$.createElement(Re,{size:"xsmall",variant:"body"},ht.t("Light"))},{id:"dark",icon:$.createElement(ph,{color:"black",size:24}),tooltip:$.createElement(Re,{size:"xsmall",variant:"body"},ht.t("Dark"))},{id:"auto",icon:$.createElement(ch,{color:"black",size:24}),tooltip:$.createElement(Re,{size:"xsmall",variant:"body"},ht.t("Auto"))}],gE=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return $.createElement(ch,{...e});case"dark":return $.createElement(ph,{...e});default:return $.createElement(uh,{...e})}},"getThemeIcon");function mh(){let t=mE(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:r,languages:a}=io(),s=a.find(L=>L.local===r)?.label,l=S().fetchStatus,c=S().swappers(),u=S().getDisabledLiquiditySources(),{config:{features:p}}=S(),m=S().customTokens(),h=Xe("theme",p),d=Xe("liquiditySource",p),f=Xe("language",p),g=Xe("customTokens",p),C=S().infiniteApprove,k=S().toggleInfiniteApprove,y=Nr(c,u),T=y.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=T.length,E=T.filter(L=>L.selected).length,B=y.filter(L=>L.type==="DEX"),N=B.length,x=B.filter(L=>L.selected).length,w=i((L,K)=>{switch(l){case"loading":return $.createElement(aE,{variant:"text",size:"medium",width:50});case"failed":return $.createElement(Re,{variant:"body",size:"medium",color:"$error500"},ht.t("Loading failed"));default:return $.createElement(Re,{variant:"body",size:"medium"},`${L} / ${K}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Bridges")),end:$.createElement($.Fragment,null,w(E,v),$.createElement(ar,{direction:"horizontal",size:8}),$.createElement(Vi,{color:"black"})),onClick:()=>t(F.bridges),start:$.createElement(Jx,{color:"gray",size:16})},I={id:"widget-setting-exchange-item-btn",title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Exchanges")),end:$.createElement($.Fragment,null,w(x,N),$.createElement(ar,{direction:"horizontal",size:8}),$.createElement(Vi,{color:"black"})),start:$.createElement(Rx,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},_={id:"widget-setting-custom-tokens-item-btn",title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Custom Tokens")),end:$.createElement($.Fragment,null,$.createElement(Re,{variant:"body",size:"medium"},`${m.length}`),$.createElement(ar,{direction:"horizontal",size:8}),$.createElement(Vi,{color:"black"})),start:$.createElement(pE,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},M={id:"widget-setting-language-item-btn",title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Language")),start:$.createElement(oE,{color:"gray",size:16}),end:$.createElement($.Fragment,null,$.createElement(Re,{variant:"body",size:"medium"},s),$.createElement(ar,{direction:"horizontal",size:8}),$.createElement(Vi,{color:"black"})),onClick:()=>t(F.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:$.createElement($.Fragment,null,$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Infinite approval")),$.createElement(ar,{direction:"horizontal",size:4}),$.createElement(uE,{side:"top",sideOffset:4,container:A(),content:$.createElement(Gi,null,$.createElement(Re,{variant:"label",size:"medium",color:"neutral700"},$.createElement("b",null,ht.t("Warning")),":\xA0",ht.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},$.createElement(tE,{color:"gray"}))),start:$.createElement(eE,{color:"gray",size:16}),end:$.createElement(lE,{checked:C}),onClick:k},R={id:"widget-setting-theme-item-btn",type:$.createElement(rE,null),title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Theme")),end:$.createElement(dE,null,$.createElement(cE,{container:A(),items:fE,value:n,onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:gE(n)},X=d?[]:[b,I];return g||X.push(_),f||X.push(M),X.push(q),!e?.singleTheme&&!h&&X.push(R),$.createElement(nE,{type:$.createElement(iE,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:X})}i(mh,"SettingsLists");var TE=SE("div",{paddingLeft:"$8"});function dh(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=kE(),r=CE(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Po.createElement(oe,{header:{title:oc.t("Settings")}},Po.createElement(re,null,o&&Po.createElement(hE,{type:"info",variant:"alarm",title:oc.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:Po.createElement(TE,null,Po.createElement(yE,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},oc.t("Reset")))}),Po.createElement(tc,null),Po.createElement(mh,null)))}i(dh,"SettingsPage");import{i18n as uI}from"@lingui/core";import{cancelSwap as mI}from"@rango-dev/queue-manager-rango-preset";import{useManager as dI}from"@rango-dev/queue-manager-react";import{Alert as fI}from"@rango-dev/ui";import Cc from"react";import{useParams as gI}from"react-router-dom";import{i18n as lt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as VE,getCurrentStep as KE,getRelatedWalletOrNull as jE}from"@rango-dev/queue-manager-rango-preset";import{Button as Kh,CopyIcon as XE,Divider as YE,DoneIcon as ZE,IconButton as JE,QuoteCost as RE,RangoExplorerIcon as eI,StepDetails as tI,Tooltip as jh,Typography as _o,useCopyToClipboard as oI}from"@rango-dev/ui";import{useWallets as nI}from"@rango-dev/wallets-react";import Xh from"bignumber.js";import{PendingSwapNetworkStatus as ea}from"rango-types";import Y,{useEffect as Yh,useRef as rI,useState as Zh}from"react";import{useNavigate as iI}from"react-router-dom";import{i18n as so}from"@lingui/core";var vE=[so.t("Sunday"),so.t("Monday"),so.t("Tuesday"),so.t("Wednesday"),so.t("Thursday"),so.t("Friday"),so.t("Saturday")];function fh(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?so.t("Today"):`${vE[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(fh,"timeSince");function gh(t){return t.finishTime?fh(parseInt(t.finishTime)):fh(parseInt(t.creationTime))}i(gh,"getSwapDate");import{PendingSwapNetworkStatus as Xi}from"rango-types";import Yi from"react";import{i18n as Ki}from"@lingui/core";import{Button as hh,Divider as nc,MessageBox as wE}from"@rango-dev/ui";import lo from"react";var yh=i(({onCancel:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(nc,{size:20}),lo.createElement(wE,{type:"error",title:Ki.t("Cancel Swap"),description:Ki.t("Are you sure you want to cancel this swap?")}),lo.createElement(nc,{size:32}),lo.createElement(hh,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Ki.t("Yes, Cancel it")),lo.createElement(nc,{size:12}),lo.createElement(hh,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Ki.t("No, Continue"))),"CancelContent");import{i18n as ji}from"@lingui/core";import{Button as Sh,Divider as rc,MessageBox as bE,Typography as xE}from"@rango-dev/ui";import Vt from"react";var Ch=i(({onDelete:t,onClose:e})=>Vt.createElement(Vt.Fragment,null,Vt.createElement(rc,{size:20}),Vt.createElement(bE,{type:"error",title:ji.t("Delete Transaction"),description:ji.t("Are you sure you want to delete this swap?")}),Vt.createElement(rc,{size:32}),Vt.createElement(Sh,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},ji.t("Yes, Delete it")),Vt.createElement(rc,{size:12}),Vt.createElement(Sh,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Vt.createElement(xE,{variant:"title",size:"medium",color:"primary"},ji.t("No, Cancel")))),"DeleteContent");import{i18n as ic}from"@lingui/core";import{PendingSwapNetworkStatus as ac}from"rango-types";var sc={[ac.WaitingForNetworkChange]:{type:"loading",title:ic.t("Change Network")},[ac.WaitingForConnectingWallet]:{type:"warning",title:ic.t("Connect Wallet")},[ac.NetworkChanged]:{type:"success",title:ic.t("Network Changed")}};import{warn as EE}from"@rango-dev/logging-core";import{getCurrentStep as IE,getRelatedWalletOrNull as AE}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as NE,Wallet as BE}from"@rango-dev/ui";import{useWallets as WE}from"@rango-dev/wallets-react";import cn,{useState as LE}from"react";import{styled as lc}from"@rango-dev/ui";var kh=lc("div",{display:"flex",justifyContent:"center"}),BK=lc("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),Th=lc("img",{width:"100%"});var vh=i(t=>{let{type:e,title:o,swap:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,[l,c]=LE(),{getWalletInfo:u,state:p}=WE(),m=IE(n),h=m?AE(n,m):null,d=m?.fromBlockchain,f=h?.walletType,g=f?hn(p(f)):null,C=f?u(f):null,k=a&&!!f&&!!g&&!!C,{list:y}=yt(),T=i(()=>{if(f){let v=y.find(E=>E.type===f);v?c(v):EE(new Error(`It seems requested wallet to be connected is not available in the list. requested wallet: ${v}`))}},"handleWalletItemClick");return cn.createElement(cn.Fragment,null,cn.createElement(NE,{type:e,title:o,description:r}),k&&cn.createElement(kh,null,cn.createElement(BE,{container:A(),title:C.name,image:C.img,type:f,state:g,link:C.installLink,disabled:s,onClick:T})),cn.createElement(Co,{wallet:l,onClose:()=>{c(void 0)},options:{defaultSelectedChains:d?[d]:void 0}}))},"WalletStateContent");function cc(t){let{state:e,onClose:o,onDelete:n,onCancel:r,swap:a,message:s,walletButtonDisabled:l}=t,c=e===Xi.WaitingForNetworkChange||e===Xi.WaitingForConnectingWallet||e===Xi.NetworkChanged;return Yi.createElement(J,{open:!!e,onClose:o,container:document.getElementById($e.SWAP_BOX_ID)||document.body},c&&Yi.createElement(vh,{type:sc[e].type,title:sc[e].title,swap:a,message:s,walletButtonDisabled:l,showWalletButton:e!==Xi.WaitingForNetworkChange}),e==="delete"&&Yi.createElement(Ch,{onClose:o,onDelete:n}),e==="cancel"&&Yi.createElement(yh,{onClose:o,onCancel:r}))}i(cc,"SwapDetailsModal");import{i18n as sr}from"@lingui/core";import{Button as pc,Divider as lr,MessageBox as xh,TokenAmount as ME,Typography as Eh}from"@rango-dev/ui";import ge from"react";import{Link as PE,useNavigate as _E}from"react-router-dom";var wh="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",bh="/profile";function uc(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:c,chain:u,percentageChange:p,description:m,diagnosisUrl:h}=t,d=_E(),{showProfileBanner:f}=ne();return ge.createElement(J,{open:e,onClose:o,container:document.getElementById($e.SWAP_BOX_ID)||document.body},n==="success"?ge.createElement(xh,{type:"success",title:sr.t("Swap Successful")},ge.createElement(ME,{direction:"vertical",tooltipContainer:A(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:c,chain:u,percentageChange:p}),ge.createElement(lr,{size:12}),ge.createElement(Eh,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):ge.createElement(xh,{type:"error",title:sr.t("Transaction Failed"),description:m}),ge.createElement(lr,{size:30}),n==="success"&&ge.createElement(ge.Fragment,null,f&&ge.createElement(ge.Fragment,null,ge.createElement(PE,{to:bh},ge.createElement(Th,{src:wh,alt:"Profile Banner"})),ge.createElement(lr,{size:30})),ge.createElement(pc,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{d("../../")}},sr.t("Done"))),ge.createElement(lr,{size:12}),h&&ge.createElement(ge.Fragment,null,ge.createElement(pc,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(h,"_blank")},sr.t("Diagnosis")),ge.createElement(lr,{size:12})),ge.createElement(pc,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ge.createElement(Eh,{variant:"title",size:"medium",color:"primary"},sr.t("See Details"))))}i(uc,"SwapDetailsCompleteModal");import GE from"react";import{i18n as zE}from"@lingui/core";import{Alert as Hh,IconButton as QE,LinkIcon as HE}from"@rango-dev/ui";import co,{Fragment as qE}from"react";import{Alert as $E,ChevronDownIcon as FE,IconButton as OE}from"@rango-dev/ui";import un,{useState as UE}from"react";import{css as cr,darkTheme as Ih,styled as Kt,Typography as DE}from"@rango-dev/ui";var Ah=Kt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Zi=Kt("div",{width:"100%","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${Ih} &`]:{color:"$secondary500"}}}}}),Nh=Kt(Bn,{padding:"$0 $20 $20 $20"}),S8=Kt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Bh=Kt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),C8=Kt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),pn=cr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${Ih} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Wh=cr({padding:"$5 0"}),Ji=cr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),Lh=cr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),Mh=cr({width:"100%",padding:"0 $20 $10"}),Ph=Kt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),_h=Kt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Ri=Kt(DE,{wordBreak:"break-word"});import{styled as mc}from"@rango-dev/ui";var Dh=mc("div",{display:"flex",flexDirection:"column",gap:"$10"}),$h=mc("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Fh=mc("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function Oh(t){let{message:e}=t,[o,n]=UE(!1);return un.createElement($E,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&un.createElement(OE,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},un.createElement($h,{rotated:o},un.createElement(FE,{size:12,color:"gray"}))),footer:un.createElement(Fh,{open:o},un.createElement(Ri,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Oh,"FailedAlert");import{i18n as Uh}from"@lingui/core";import{Alert as dc,Button as zh}from"@rango-dev/ui";import{PendingSwapNetworkStatus as fc}from"rango-types";import pr from"react";function Qh(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?pr.createElement(dc,{type:"warning",title:n.shortMessage,action:pr.createElement(zh,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(fc.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Uh.t("Change"))}):r===fc.WaitingForConnectingWallet?pr.createElement(dc,{type:"warning",title:n.shortMessage,action:pr.createElement(zh,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(fc.WaitingForConnectingWallet)}},Uh.t("Connect"))}):pr.createElement(dc,{type:"warning",title:n.shortMessage})}i(Qh,"WarningAlert");function gc(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=An(a),c=a.status==="waitingForApproval"&&!l,u=a.status==="running"&&!l,p=u&&!s||c&&!a.explorerUrl?.length;return co.createElement(Dh,null,a.explorerUrl?.map((m,h,d)=>{let f=h+m.url,g=h===d.length-1,C=(g&&u||c)&&!p,k=g&&a.status==="failed";return co.createElement(qE,{key:f},co.createElement(Hh,{type:g&&(C&&"loading"||k&&"error")||"success",title:m.description?`${m.description} Tx`:zE.t("View transaction"),action:m.url&&co.createElement(QE,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},co.createElement(HE,{size:12}))}))}),p&&co.createElement(Hh,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&co.createElement(Qh,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&co.createElement(Oh,{message:r}))}i(gc,"SwapDetailsAlerts");var qh=2e3;var Gh=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:pt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:P(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:pt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:P(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:mn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(c=>({from:{chain:{displayName:pt(c.fromBlockchain,e)??"",image:c.fromBlockchainLogo??""}},to:{chain:{displayName:pt(c.toBlockchain,e)??"",image:c.toBlockchainLogo??""}},swapper:{displayName:mn(c.swapperId,o)??"",image:c.swapperLogo??"",type:c.swapperType}})):[],alerts:GE.createElement(gc,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function Vh(t){if(An(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(Vh,"getStepState");function hc(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=nI(),c=S().blockchains(),u=S().swappers(),{findToken:p}=S(),m=O.use.retry(),h=ne.use.isActiveTab(),d=iI(),[f,g]=oI(qh),C=rI(null),[k,y]=Zh(null),[T,v]=Zh(null),E=i(()=>{r(),y(null)},"onCancel"),B=we.use.getNotifications(),N=we.use.removeNotification(),x=B(),w=KE(e),b=w?.networkStatus;Yh(()=>{x.find(De=>De.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),N(e.requestId)):T&&v(null))},[e.status,e.requestId]),Yh(()=>{L?y(ea.WaitingForNetworkChange):b===ea.WaitingForConnectingWallet||b===ea.NetworkChanged?y(b):y(null)},[b]);let I=Du(e),_=w?VE(e,w):null,M=w?jE(e,w):null,q=gh(e),R=$u(e),X=i(Te=>!!l(Te)?.mobileWallet,"isMobileWallet"),L=b===ea.WaitingForNetworkChange&&!!_&&!!M?.walletType&&(X(M.walletType)||a(M.walletType,_.network)),K=L?s.bind(null,M.walletType,[{namespace:_.namespace,network:_.network}]):void 0,ae=_u(e,w,l),Q=Gh({swap:e,switchNetwork:K,showNetworkModal:b,setNetworkModal:y,message:ae,blockchains:c,swappers:u}),de=Q.length,[Ie,Ke]=[e.steps[0],e.steps[de-1]],se=Ke.outputAmount||Ke.expectedOutputAmountHumanReadable,ct=e.steps.reduce((Te,De)=>Te+parseFloat(De.feeInUsd||""),0),V=e.steps.find(Te=>Te.diagnosisUrl)?.diagnosisUrl,D=P(parseFloat(se||"0")*(Ke.toUsdPrice||0),4,4),G=P(parseFloat(e.inputAmount)*(Ie.fromUsdPrice||0),4,4),j=se?new Xh(se).multipliedBy(Ke.toUsdPrice||0).toString():"",he=new Xh(e.inputAmount).multipliedBy(Ie.fromUsdPrice||0).toString(),ce=Dt(G,D),_e=ae.detailedMessage.content||ae.shortMessage,je=e.status==="success"?lt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:P(se,6,6),token:Q[de-1].to.token.displayName,conciseAddress:Ir(e.wallets[Q[de-1].to.chain.displayName]?.address||""),chain:Q[de-1].to.chain.displayName}}):Y.createElement(_h,null,Y.createElement(_o,{variant:"body",size:"medium",color:"neutral700",align:"center"},_e?"":lt.t("Transaction was not sent."),I?`${lt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:I.outputAmount,symbol:I.symbol,blockchain:I.blockchain}})}`:""),_e&&Y.createElement(Ri,{align:"center",variant:"body",size:"medium",color:"neutral700"},Y.createElement("b",null,"Reason:")," ",_e));return Y.createElement(oe,{header:{title:lt.t("Swap Details"),onCancel:e.status==="running"?()=>y("cancel"):void 0,suffix:e.status!=="running"&&Y.createElement(Jt,null,Y.createElement(Kh,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>y("delete")},Y.createElement(_o,{size:"medium",variant:"label",color:"error"},lt.t("Delete"))))},footer:R&&!T&&Y.createElement(Kh,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let Te=Ur(e,c,p);m(Te),setTimeout(()=>{d("../../")},0)}},lt.t("Try again"))},Y.createElement(re,{compact:!0,view:!0},Y.createElement(Zi,null,Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},`${lt.t("Request ID")}`),Y.createElement("div",{className:Ji()},Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},o),Y.createElement(jh,{container:A(),content:f?lt.t("Copied To Clipboard"):lt.t("Copy Request ID"),open:f||void 0,side:"bottom",alignOffset:-16,align:"end"},Y.createElement(JE,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:g.bind(null,o||"")},f?Y.createElement(ZE,{size:16,color:"secondary"}):Y.createElement(XE,{size:16,color:"gray"}))),Y.createElement(Ph,{target:"_blank",href:`${Qc}/swap/${o}`},Y.createElement(jh,{container:A(),content:lt.t("View on Rango Explorer"),side:"bottom"},Y.createElement(eI,{size:20}))))),Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},e.finishTime?lt.t("Finished at"):lt.t("Created at")),Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},q))),Y.createElement("div",{className:Lh()},Y.createElement(RE,{fee:P(String(ct),2,2),time:fn(vr(e.steps)),steps:de}),Y.createElement($n,{from:{price:{value:P(e.inputAmount,6,6),usdValue:G,realUsdValue:he,realValue:e.inputAmount},token:{displayName:Q[0].from.token.displayName,image:Q[0].from.token.image},chain:{image:Q[0].from.chain.image,displayName:Q[0].from.chain.displayName}},to:{price:{value:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||""},token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image,displayName:Q[de-1].to.chain.displayName}},percentageChange:P(ce,2,2),warningLevel:$t(ce??0)})),Y.createElement("div",{className:Mh()},Y.createElement(_o,{variant:"title",size:"small"},lt.t("Swaps steps"))),Y.createElement(YE,{size:8}),Y.createElement(Nh,{ref:C},Q.map((Te,De)=>{let jt=De,po=Vh(e.steps[De]),xy=po==="error"||po==="in-progress"||po==="warning"||po==="completed"&&De===Q.length-1;return Y.createElement(tI,{key:jt,step:Te,type:"swap-progress",ref:C,state:po,hasSeparator:De!==0,tabIndex:jt,isFocused:xy,tooltipContainer:A()})}))),Y.createElement(cc,{state:k,onClose:()=>y(null),onCancel:E,onDelete:n,message:ae.detailedMessage.content,swap:e,walletButtonDisabled:!h}),Y.createElement(uc,{open:!!T,diagnosisUrl:V,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||"",percentageChange:P(ce,2,2),token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image},description:je}))}i(hc,"SwapDetails");import{i18n as oa}from"@lingui/core";import{Divider as ey,NotFound as pI,Skeleton as mr,Typography as na}from"@rango-dev/ui";import ke from"react";import{i18n as aI}from"@lingui/core";import{Divider as sI,Skeleton as lI,Typography as cI}from"@rango-dev/ui";import ve from"react";import{css as bt,styled as yc}from"@rango-dev/ui";var Jh=yc("div",{width:"100%",height:"100%",padding:"$10 $20"}),ur=yc("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),ta=yc("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),W6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),L6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),M6=bt({paddingTop:"$15",display:"flex"}),P6=bt({padding:"$15 $0"}),_6=bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),D6=bt({paddingBottom:"$10"}),$6=bt({display:"flex",justifyContent:"start",alignItems:"center"}),F6=bt({paddingTop:"$5",display:"flex",alignItems:"center"}),O6=bt({display:"flex",alignItems:"center"}),U6=bt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),Rh=bt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Sc(){return ve.createElement(Jh,null,ve.createElement(Un,{type:"swap-preview"}),ve.createElement("div",{className:"swaps-steps"},ve.createElement(cI,{variant:"title",size:"small"},aI.t("Swaps steps"))),ve.createElement(ve.Fragment,null,ve.createElement(ur,null,ve.createElement(Bt,{separator:!1}),ve.createElement("div",{className:Rh()},ve.createElement(sI,{direction:"horizontal",size:20}),ve.createElement(lI,{height:22,variant:"rectangular"}))),ve.createElement(ta,null),ve.createElement(ur,null,ve.createElement(Bt,{separator:!1})),ve.createElement(ta,null),ve.createElement(ur,null,ve.createElement(Bt,{separator:!1})),ve.createElement(ta,null),ve.createElement(ur,null,ve.createElement(Bt,{separator:!1}))))}i(Sc,"LoadingSwapDetails");function ty(t){let{requestId:e,showSkeleton:o}=t;return ke.createElement(oe,{header:{title:oa.t("Swap Details"),suffix:ke.createElement(Jt,null)}},o&&ke.createElement(Ah,null,ke.createElement(Zi,null,ke.createElement("div",{className:pn()},ke.createElement(na,{variant:"label",size:"large",color:"neutral700"},`${oa.t("Request ID")}`),ke.createElement("div",{className:Ji()},ke.createElement(na,{variant:"label",size:"small",color:"neutral700"},ke.createElement(mr,{width:60,height:10,variant:"rounded"})),ke.createElement(ey,{direction:"horizontal",size:4}),ke.createElement(mr,{width:16,height:16,variant:"rectangular"}),ke.createElement(ey,{direction:"horizontal",size:4}),ke.createElement(mr,{width:16,height:16,variant:"rectangular"}))),ke.createElement("div",{className:pn()},ke.createElement(na,{className:Wh(),variant:"label",size:"large",color:"neutral700"},ke.createElement(mr,{width:60,height:10,variant:"rounded"})),ke.createElement(na,{variant:"label",size:"small",color:"neutral700"},ke.createElement(mr,{width:60,height:10,variant:"rounded"})))),ke.createElement(Sc,null)),!o&&ke.createElement(Bh,null,ke.createElement(pI,{title:oa.t("Not found"),description:oa.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(ty,"SwapDetailsPlaceholder");function oy(){let{manager:t,state:e}=dI(),o=!e.loadedFromPersistor,n=gt(t),{requestId:r}=gI(),a=Oe(),{fetchStatus:s}=S();if(!r)return Cc.createElement(fI,{containerStyles:{margin:"20px"},type:"error",title:uI.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",c=r?n.find(({swap:h})=>h.requestId===r):void 0,u=i(()=>{if(c?.id){let h=t?.get(c.id);h&&mI(h)}},"onCancel"),p=i(async()=>{if(c?.id)try{t?.deleteQueue(c.id),a()}catch(h){console.log(h)}},"onDelete"),m=c?.swap;return!m||l?Cc.createElement(ty,{requestId:r,showSkeleton:l}):Cc.createElement(hc,{swap:m,requestId:r,onCancel:u,onDelete:p})}i(oy,"SwapDetailsPage");import{i18n as ny}from"@lingui/core";import{Divider as hI,getCategoriesCount as yI,SelectableCategoryList as SI,styled as iy,Typography as CI,Wallet as kI}from"@rango-dev/ui";import Lt,{useState as ry}from"react";var TI=iy("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),vI=iy(re,{textAlign:"center"});function ay(){let{fetchStatus:t}=S(),[e,o]=ry("ALL"),n=S().blockchains(),{config:r}=S(),[a,s]=ry(),l=ne.use.isActiveTab(),{list:c}=yt(),u=cp(c,n),m=yI(u)!==1,h=pp(c,e),d=i(f=>{Jc(c,r.multiWallets)||s(f)},"handleWalletItemClick");return Lt.createElement(oe,{header:{title:ny.t("Connect Wallets")}},Lt.createElement(vI,null,m&&Lt.createElement(Lt.Fragment,null,Lt.createElement(SI,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Lt.createElement(hI,{size:24})),Lt.createElement(CI,{variant:"title",size:"xmedium",align:"center"},ny.t("Choose a wallet to connect.")),Lt.createElement(TI,null,h.map((f,g)=>{let C=`wallet-${g}-${f.type}`;return Lt.createElement(kI,{key:C,...f,container:A(),onClick:()=>d(f),isLoading:t==="loading",disabled:!l})}),Lt.createElement(Co,{wallet:a,onClose:()=>{s(void 0)}}))))}i(ay,"WalletsPage");function sy(){return zu(),os(),wI([{path:F.home,element:Pe.createElement(Mg,null)},{path:F.routes,element:Pe.createElement(Fg,null)},{path:F.fromSwap,children:[{index:!0,element:Pe.createElement(qi,{type:"source"})},{path:F.blockchains,element:Pe.createElement(Ui,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:Pe.createElement(qi,{type:"destination"})},{path:F.blockchains,element:Pe.createElement(Ui,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:Pe.createElement(dh,null)},{path:F.languages,element:Pe.createElement(_g,null)},{path:F.exchanges,element:Pe.createElement(ql,{sourceType:"Exchanges"})},{path:F.bridges,element:Pe.createElement(ql,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:Pe.createElement(Hf,null)},{path:F.addCustomTokens,children:[{index:!0,element:Pe.createElement(Mm,null)},{path:F.blockchains,element:Pe.createElement(Ui,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:Pe.createElement(cg,null)},{path:F.swapDetails,element:Pe.createElement(oy,null)}]},{path:F.wallets,element:Pe.createElement(ay,null)},{path:F.confirmSwap,element:Pe.createElement(Nf,null)}])}i(sy,"AppRoutes");import{useQueueManager as LI}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as MI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as PI}from"rango-sdk";import{useContext as _I,useEffect as fy,useState as gy}from"react";import{globalCss as bI}from"@rango-dev/ui";var ly=i(()=>bI({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function cy(){let{setWatermark:t,setShowProfileBanner:e}=ne();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Pt("BASE_URL")}/meta/dapp/config?apiKey=${Pt("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(cy,"useFetchApiConfig");import{useWallets as xI}from"@rango-dev/wallets-react";import{useEffect as EI,useRef as II}from"react";function py(){let{connect:t,state:e}=xI(),o=II({}),{fetchStatus:n}=S(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);EI(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(py,"useForceAutoConnect");import{isApprovalTX as AI,RouteEventType as uy,StepEventType as my,StepExecutionEventStatus as NI,WidgetEvents as ra}from"@rango-dev/queue-manager-rango-preset";import{useEffect as dy}from"react";function kc(){let t=we.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();dy(()=>{let r=i(a=>{let{event:s,step:l,route:c}=a;if(s.type===my.TX_EXECUTION&&s.status===NI.TX_SENT&&!AI(l)||s.type===my.SUCCEEDED){let p=[],m=c.wallets[l?.fromBlockchain];if(m){let h=e.find(d=>d.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&d.walletType===m.walletType&&d.chain===l?.fromBlockchain);h&&p.push(h)}if(l?.fromBlockchain!==l?.toBlockchain){let h=c.wallets[l?.toBlockchain];if(h){let d=e.find(f=>f.address?.toLocaleLowerCase()===h.address?.toLocaleLowerCase()&&f.walletType===h.walletType&&f.chain===l?.toBlockchain);d&&p.push(d)}}if(p.length>0){let h=n(),f=[{blockchain:l.fromBlockchain,address:l.fromSymbolAddress,symbol:l.fromSymbol},{blockchain:l.toBlockchain,address:l.toSymbolAddress,symbol:l.toSymbol}].filter(g=>h.some(C=>C.blockchain===g.blockchain&&C.address?.toLocaleLowerCase()===g.address?.toLocaleLowerCase()&&C.symbol?.toLocaleLowerCase()===g.symbol?.toLocaleLowerCase()));o(p,{selectedCustomTokens:f,shouldFetchCustomTokens:f.length>0})}}t(s,c)},"handleStepEvent");return ye.on(ra.StepEvent,r),()=>ye.off(ra.StepEvent,r)},[ye,e]),dy(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===uy.FAILED||s.type===uy.SUCCEEDED)&&t(s,l)},"handleRouteEvent");return ye.on(ra.RouteEvent,r),()=>ye.off(ra.RouteEvent,r)},[ye])}i(kc,"useSubscribeToWidgetEvents");import{useManager as BI}from"@rango-dev/queue-manager-react";import{useEffect as WI}from"react";function Tc(){let{isSynced:t,syncNotifications:e}=we(),{manager:o,state:n}=BI();WI(()=>{we.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(gt(o))},[we.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Tc,"useSyncNotifications");function vc(){py(),ly(),kc(),Tc();let t=S().blockchains(),{canSwitchNetworkTo:e}=si(),[o,n]=gy(""),[r,a]=gy(),s=_I(Dr),l=t.filter(PI),{fetchApiConfig:c}=cy();fy(()=>()=>Uu(),[]),LI({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),fy(()=>(ho.init(),we.persist.hasHydrated()||we.persist.rehydrate(),s.onConnectWallet(n),s.onDisconnectWallet(u=>{a(u),u===MI(o)?.[0]&&n("")}),c().catch(console.log),ho.destroy),[])}i(vc,"useBootstrap");import{styled as DI}from"@rango-dev/ui";var hy=DI("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function ia(){vc();let{config:t}=S(),{activeTheme:e}=Zo(t?.theme||{}),{activeLanguage:o}=io();return wc.createElement($I,{language:o},wc.createElement(hy,{id:"swap-container",className:e()},wc.createElement(sy,null)))}i(ia,"Main");import{setSolanaSignerConfig as nA}from"@rango-dev/signer-solana";import xc,{useEffect as vy,useMemo as rA}from"react";import{useState as FI}from"react";var OI=i(()=>{let[t,e]=FI(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=Zc(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),yy=OI;import{checkWaitingForNetworkChange as UI,makeQueueDefinition as zI}from"@rango-dev/queue-manager-rango-preset";import{Provider as QI}from"@rango-dev/queue-manager-react";import{useWallets as HI}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as qI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as GI}from"rango-types";import VI,{useMemo as KI}from"react";function jI(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=HI(),l=KI(()=>zI({API_KEY:t.apiKey||Pt("API_KEY"),BASE_URL:Pt("BASE_URL"),emitter:{emit:ye.emit}}),[t.apiKey]),{blockchains:c,connectedWallets:u}=S(),p=c(),m={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,E)=>a(v,E.network)?await r(v,[E]):void 0,"switchNetwork"),d=i(v=>!!s(v).mobileWallet,"isMobileWallet"),f=p.filter(v=>v.enabled).reduce((v,E)=>(v[E.name]=E,v),{}),g=p.filter(GI),C=i(v=>{let{supportedChains:E}=s(v);return yn(E)},"getSupportedChainNames"),k=e(),y={meta:{blockchains:f,evmBasedChains:g,evmNetworkChainInfo:qI(g),getSupportedChainNames:C},getSigners:o,wallets:m,providers:k,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:d},T=ne.use.isActiveTab();return VI.createElement(QI,{queuesDefs:[l],context:y,onPersistedDataLoaded:v=>{UI(v)},isPaused:!T},t.children)}i(jI,"QueueManager");var Sy=jI;import{useManager as RI}from"@rango-dev/queue-manager-react";import eA,{createContext as tA,useContext as oA}from"react";function Cy(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=O();return i(u=>{let{fromBlockchain:p,fromToken:m,toBlockchain:h,toToken:d,requestAmount:f}=u,g={blockchains:e,tokens:o};if(p!==void 0){let C=e.find(k=>k.name===p)??null;n(C)}if(m!==void 0){let C=m?t(m)??null:null;r({meta:g,token:C})}if(h!==void 0){let C=e.find(k=>k.name===h)??null;a(C)}if(d!==void 0){let C=d?t(d)??null:null;s({meta:g,token:C})}f!==void 0&&l(f)},"updateQuoteInputs")}i(Cy,"useUpdateQuoteInputs");import{cancelSwap as XI,getCurrentNamespaceOfOrNull as YI,getCurrentStep as ZI,getRelatedWalletOrNull as JI}from"@rango-dev/queue-manager-rango-preset";var aa=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return gt(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=Ur(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&XI(o)}getCurrentStepInfo(e){let o=ZI(e);return{step:o,wallet:o?JI(e,o):null,network:o?YI(e,o)?.network:null}}};var ky=tA(void 0);function bc(t){let{manager:e}=RI(),o=ne.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=S(),c=new aa(e,{retrySwap:n,findToken:r}),{fetchingWallets:u}=S(),p=np(a()),m=S().blockchains(),h=S().tokens(),d=S().swappers(),f=S().fetchStatus,g=io().resetLanguage,C=we().getNotifications(),k=we().clearNotifications,y=Cy(),{fromBlockchain:T,toBlockchain:v,fromToken:E,toToken:B,inputAmount:N}=O(),x={isActiveTab:o,setCurrentTabAsActive:ho.forceClaim,history:c,wallets:{isLoading:u,details:s(),totalBalance:p,refetch:async w=>l(w)},meta:{blockchains:m,tokens:h,swappers:d,loadingStatus:f,findToken:r},resetLanguage:g,notifications:{list:C,clearAll:k},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:E?{symbol:E.symbol,blockchain:E.blockchain,address:E.address}:null,toBlockchain:v?.name??null,toToken:B?{symbol:B.symbol,blockchain:B.blockchain,address:B.address}:null,requestAmount:N},updateQuoteInputs:y}};return eA.createElement(ky.Provider,{value:x},t.children)}i(bc,"WidgetInfo");function Ty(){let t=oA(ky);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(Ty,"useWidget");function sa(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=yy();return vy(()=>{n&&r(n)},[n]),rA(()=>{up({API_KEY:o?.apiKey||Sr,BASE_URL:o?.apiUrl||zc})},[o.apiKey,o.apiUrl]),vy(()=>{t.config?.signers?.customSolanaRPC&&nA("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),xc.createElement($r,{config:o,onUpdateState:e},xc.createElement(Sy,{apiKey:o.apiKey},xc.createElement(bc,null,t.children)))}i(sa,"WidgetProvider");function wy(t){let e=t.config?.externalWallets;return la.createElement(lu,null,e?la.createElement(ia,null):la.createElement(sa,{config:t.config??hr},la.createElement(ia,null)))}i(wy,"Widget");function by(){let{on:t,off:e}=ye;return{on:t,off:e}}i(by,"useWidgetEvents");var KY={DerivationPath:bn,Namespaces:wn,isOnDerivationPath:En,isOnNamespace:xn};export{CY as EventSeverity,Qo as MainEvents,NY as Networks,LY as PendingSwapNetworkStatus,wa as QuoteEventTypes,kY as RouteEventType,ma as SUPPORTED_FONTS,KY as StatefulConnect,TY as StepEventType,vY as StepExecutionBlockedEventStatus,wY as StepExecutionEventStatus,$e as UI_ID,xa as UiEventTypes,ba as WalletEventTypes,IY as WalletEvents,BY as WalletTypes,wy as Widget,Qo as WidgetEvents,sa as WidgetProvider,$r as WidgetWallets,gs as customizedThemeTokens,xY as readAccountAddress,Xt as useStatefulConnect,yt as useWalletList,si as useWallets,Ty as useWidget,by as useWidgetEvents,AS as widgetEventEmitter};
1
+ var Ay=Object.defineProperty;var i=(t,e)=>Ay(t,"name",{value:e,configurable:!0});import{EventSeverity as xY,RouteEventType as EY,StepEventType as IY,StepExecutionBlockedEventStatus as AY,StepExecutionEventStatus as NY}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as WY}from"@rango-dev/wallets-core/legacy";import{useWallets as ci,Events as MY}from"@rango-dev/wallets-react";import{Networks as _Y,WalletTypes as DY}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as FY}from"rango-types";import{Divider as bC}from"@rango-dev/ui";import So,{useEffect as xC,useRef as EC,useState as ru}from"react";import{WalletState as Ny}from"@rango-dev/ui";import{useWallets as By}from"@rango-dev/wallets-react";import{useReducer as Wy}from"react";function Nc(t){return!!t.derivationPath}i(Nc,"isStateOnDerivationPathStep");function Bc(t){return!!t.namespace}i(Bc,"isStateOnNamespace");var fr={status:"init",namespace:null,derivationPath:null};function Wc(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"reset":return fr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:fr;default:throw new Error("Action hasn't been defined.")}}i(Wc,"reducer");function Xt(){let{state:t,disconnect:e,connect:o}=By(),[n,r]=Wy(Wc,fr),a=i(async(p,m,h)=>{r({type:"reset"});try{let d=m?.map(f=>({...f,network:void 0}));return await o(p,d),{status:"connected"}}catch(d){let f=d?.message?`Error: ${d.message}`:"An unknown error happened during connecting wallet.";throw new Error(f,{cause:d})}},"runConnect"),s=i(async(p,m)=>{if(p.state===Ny.DISCONNECTED){let d=!!p.isHub,f=p.properties?.find(g=>g.name==="detached")?.value;if(d&&!f?.length||!d&&!p.needsNamespace)return await a(p.type,void 0,m);if(d&&f?.length&&f.length>1||!d&&p.needsNamespace?.data.length&&p.needsNamespace.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:p,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(d&&f?.length===1||!d&&p.needsNamespace?.data.length===1){if(p.needsNamespace&&p.needsDerivationPath){let g=p.needsNamespace.data[0];return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:g.value}}),{status:"derivation-path"}}return await a(p.type,p.needsNamespace?.data.map(g=>({namespace:g.value})),m)}}return m?.disconnectIfConnected?(await u(p.type),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),l=i(async(p,m)=>{let h=p.needsNamespace?.selection==="single",d=p.needsDerivationPath,f=m[0];if(!f)throw new Error("To confirm a namespace, you should select at least one namespace.");if(h&&d)return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:f}}),{status:"derivation-path"};if(!Bc(n))throw new Error("Something went wrong on handling namespace. Please retry.");let g=n.namespace.targetWallet.type,C=m.map(k=>({namespace:k}));return await a(g,C)},"handleNamespace"),c=i(async p=>{if(!p)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Nc(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=n.derivationPath.providerType,d=[{namespace:n.derivationPath.namespace,derivationPath:p}];return await a(m,d)},"handleDerivationPath"),u=i(async p=>{let m=t(p);return m.connected||m.connecting?(await e(p),{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:l,handleDerivationPath:c,getState:()=>n,resetState:p=>{r(p==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Xt,"useStatefulConnect");import{WalletState as Ma}from"@rango-dev/ui";import{useWallets as zS}from"@rango-dev/wallets-react";import{detectMobileScreens as QS,KEPLR_COMPATIBLE_WALLETS as HS,WalletTypes as Tn}from"@rango-dev/wallets-shared";import{useCallback as qS,useEffect as GS}from"react";import DS,{createContext as $S,useContext as FS,useEffect as OS,useRef as US}from"react";import{create as PS}from"zustand";import{persist as _S}from"zustand/middleware";import{allProviders as Ly}from"@rango-dev/provider-all";var ua=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()}},Do=new ua;import{defineVersions as Mc,pickVersion as Pc,Provider as ma}from"@rango-dev/wallets-core";function _c({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Dc(a);return s instanceof ma?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 ma?o.push(Mc().version("1.0.0",n).build()):o.push(Mc().version("0.0.0",n).build())}),o}return t}i(_c,"matchAndGenerateProviders");function Dc(t){try{return Pc(t,"1.0.0")[1]}catch{return Pc(t,"0.0.0")[1]}}i(Dc,"pickProviderVersionWithFallbackToLegacy");function $c(t){return t.map(o=>Dc(o)).map(o=>o instanceof ma?o.id:o.config.type)}i($c,"configWalletsToWalletName");function gr(t,e){return e.find(o=>o.name===t)?.displayName}i(gr,"getBlockchainDisplayNameFor");function pt(t,e){return e.find(o=>o.name===t)?.shortName}i(pt,"getBlockchainShortNameFor");function Fc(t,e){return e.find(o=>o.name===t)?.logo}i(Fc,"getBlockchainImage");function mn(t,e){return e.find(o=>o.id===t)?.title}i(mn,"getSwapperDisplayName");function uo(t,e){return e.find(o=>o.name===t)??null}i(uo,"findBlockchain");function da(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(da,"isTokenNative");function ut(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(ut,"createTokenHash");function $o(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i($o,"isValidTokenAddress");function dn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(c=>{typeof c!="string"&&(c=ut(c));let u=o.tokensMapByTokenHash.get(c);u&&(n[c]=u)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(c=>{l.has(c)||a(o.tokensMapByBlockchainName[c])})}return s.forEach(l=>{let c=r[l];if(!c&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}c&&(c.isExcluded?(a(o.tokensMapByBlockchainName[l]),c.tokens.forEach(u=>{let p=ut(u);delete n[p]})):a(c.tokens))}),Object.values(n)}i(dn,"matchTokensFromConfigWithMeta");function hr(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(hr,"getSupportedBlockchainsFromConfig");function Uc(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Uc,"makeProvidersOptionsFromConfig");var yr={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/rango-types/main/assets/manifests/tonconnect-manifest.json"}},My={clientUrl:void 0},Py={liquiditySources:void 0};function Oc(t){let e=Uc(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return Ly(o).map(a=>a())}i(Oc,"generateProviders");var zc=i((t,e,o)=>{let n=Oc({...yr,...t});return{config:{...yr,...t},iframe:My,campaignMode:Py,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:l}=o(),c=dn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}}),u=dn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}});Do.set("supportedSourceTokens",c),Do.set("supportedDestinationTokens",u),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{config:r}=o(),a=Oc(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Uc(a);return _c({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Qc}from"rango-types";var Hc=[Qc.EVM,Qc.SOLANA],Sr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as Xy}from"rango-sdk";import{UI_ID as _y}from"@rango-dev/ui";var Cr="c6381a79-2817-4602-83bf-6a641a409e32",qc="https://api.rango.exchange",Gc="https://explorer.rango.exchange",Fe={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",..._y};import{BlockchainCategories as Qy,WalletState as Et}from"@rango-dev/ui";import{legacyReadAccountAddress as Hy}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as qy,getCosmosExperimentalChainInfo as Gy,isEvmAddress as Vy,KEPLR_COMPATIBLE_WALLETS as d0,Networks as rp}from"@rango-dev/wallets-shared";import Oo from"bignumber.js";import{isCosmosBlockchain as Ky}from"rango-types";import Dy from"bignumber.js";var le=new Dy(0);import{WalletTypes as $y}from"@rango-dev/wallets-shared";var mo="~",Vc=[$y.LEAP];import{BlockchainCategories as ga,WalletState as zy}from"@rango-dev/ui";import{TransactionType as kr}from"rango-sdk";var Kc="Roboto",fa=[{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 Fo(t){return Array.from(new Set(t))}i(Fo,"removeDuplicateFrom");function Tr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Tr,"debounce");function tt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(tt,"containsText");function Yc(t,e){return t.toLowerCase()===e.toLowerCase()}i(Yc,"exactText");function Zc(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(Zc,"startWithText");var A=i(()=>document.getElementById(Fe.SWAP_BOX_ID),"getContainer"),fo=i(()=>document.getElementById(Fe.EXPANDED_BOX_ID),"getExpanded");function Jc(t,e,o){let n=!!e&&Yc(e,t),r=!!o&&Yc(o,t);return n!==r?n?-1:1:0}i(Jc,"compareExactMatchText");function ha(t,e,o){let n=!!e&&tt(e,t),r=!!o&&tt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ha,"compareContainsText");function ya(t,e,o){let n=!!e&&Zc(e,t),r=!!o&&Zc(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ya,"compareStartWithText");function Rc(t,e,o){if(!o)return 0;let n=Jc(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=Jc(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ya(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ha(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ya(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=ha(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ya(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=ha(o,t.address,e.address);if(r!==0)return r}return 0}i(Rc,"compareWithSearchFor");var vr=i((t,e)=>{switch(e){case ga.ALL:return!0;case ga.UTXO:return t===kr.TRANSFER;case ga.OTHER:return t!==kr.TRANSFER&&t!==kr.COSMOS&&t!==kr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),ep=i(t=>fa.find(o=>o.value===t)?.url,"getFontUrlByName");function tp(t,e){let o=!!t.find(n=>n.state===zy.CONNECTED);return e===!1&&o}i(tp,"isSingleWalletActive");function op(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(op,"memoizedResult");import{BigNumber as np}from"bignumber.js";var fn=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"),P=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new np(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new np(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 wr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var xt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),gn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function hn(t){return t.connected?Et.CONNECTED:t.connecting?Et.CONNECTING:t.installed?Et.DISCONNECTED:Et.NOT_INSTALLED}i(hn,"mapStatusToWalletState");function ip(t,e,o,n){return o.filter(r=>!Vc.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:c}=t(r);return s&&(!l||!!n&&c!==n)?!1:n?!!a.find(p=>p.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:c,needsNamespace:u,supportedChains:p,needsDerivationPath:m,properties:h,isHub:d}=e(r),f=Fo(p.map(C=>C.type)),g=hn(t(r));return{title:a,image:s,link:qy(l),state:g,type:r,showOnMobile:c,needsNamespace:u,blockchainTypes:f,needsDerivationPath:m,properties:h,isHub:d}})}i(ip,"mapWalletTypesToWalletInfo");function yn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(yn,"walletAndSupportedChainsNames");function Ca(t,e,o,n,r){let a=[];function s(c,u,p){if(!!!a.find(h=>h.chain===c)){let h={address:u,chain:c,walletType:t,isContractWallet:p??!1};a.push(h)}}i(s,"addAccount");let l=n||[];return e.forEach(c=>{let{address:u,network:p}=Hy(c),m=l.length>0,h=l.includes(p),d=p===rp.Unknown;if(m&&!h&&!d)return;let g=p===rp.Unknown&&Vy(u);if(d&&!g)return;o.includes(p)||g?r?s(p,u.toLowerCase(),r):l.filter(y=>o.includes(y)).forEach(y=>{s(y,u.toLowerCase())}):s(p,u)}),a}i(Ca,"prepareAccountsForWalletStore");function go(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:c}=r;c.forEach((u,p)=>{let m=u.from.blockchain,h=u.to.blockchain,d=a===o.swaps.length-1,f=p===c.length-1;(!d&&!f||d&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(h)})}e==="all"&&n.add(l)}),Array.from(n)}i(go,"getQuoteChains");function Sn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Sn,"isAccountAndWalletMatched");var ap=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?Sa(n.usdValue,n.decimals):le.toFixed();return o.plus(r)},new Oo(le));return jy(e.toString())},"calculateWalletUsdValue");function jy(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(jy,"numberWithThousandSeparator");var Er=i((t,e)=>{let o=Gy(Object.entries(t).map(([,n])=>n).filter(Ky));return o&&o[e]?.experimental},"isExperimentalChain");function Sa(t,e){return new Oo(t).shiftedBy(-e).toFixed()}i(Sa,"representAmountInNumber");function Ir(t){if(!t)return null;let e=Sa(t.amount,t.decimals),o=t.usdValue?Sa(t.usdValue,t.decimals):null,n=P(e,8,8),r=o?P(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Ir,"formatBalance");function sp(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new Oo(t.usdValue).shiftedBy(-t.decimals):le,n=e&&e.usdValue?new Oo(e.usdValue).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new Oo(t.amount).shiftedBy(-t.decimals):le,n=e&&e.amount?new Oo(e.amount).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(sp,"compareTokenBalance");function Mt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Mt,"areTokensEqual");function lp(t){return t.sort((e,o)=>+(o.state===Et.CONNECTED)-+(e.state===Et.CONNECTED)||+(o.state===Et.DISCONNECTED||o.state===Et.CONNECTING)-+(e.state===Et.DISCONNECTED||e.state===Et.CONNECTING))}i(lp,"sortWalletsBasedOnConnectionState");function Ar(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(Ar,"getConciseAddress");function cp({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(cp,"getAddress");var pp=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function up(t){return t.map(e=>e.state).join("-")}i(up,"hashWalletsState");function mp(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(mp,"filterBlockchainsByWalletTypes");function dp(t,e){return e===Qy.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(vr(n,e))return!0;return!1})}i(dp,"filterWalletsByCategory");var ka={API_KEY:Cr};function Pt(t){return ka[t]||""}i(Pt,"getConfig");function fp(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ka=e,ka}i(fp,"initConfig");var gp=20,hp=25,Ta="theme-widget",va=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Mt(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Mt(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),wa=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),yp=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Nr,ot=i(()=>Nr||(Nr=new Xy(Pt("API_KEY"),Pt("BASE_URL")),Nr),"httpService");import{i18n as Tp}from"@lingui/core";var Sp=[.5,1,3],Cp=1,Br=5,Cn=30,kp=0;function Wr(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Fo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(c=>c===s.swapperGroup)),l&&s.types.map(c=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:c,selected:!e.includes(s.swapperGroup)})})}}),n}i(Wr,"getUniqueSwappersGroups");function vp(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(vp,"sortLiquiditySourcesByGroupTitle");function Ye(t,e){return e?.[t]==="hidden"}i(Ye,"isFeatureHidden");function Uo(t,e){return e?.[t]==="enabled"}i(Uo,"isRoutingEnabled");var wp=i((t,e,o)=>Ye("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function bp(t){return t==kp?{type:"error",message:Tp.t("Slippage must be greater than or equal to 0.01")}:t>Br&&t<=Cn?{type:"warning",message:Tp.t("Your transaction is at risk of being frontrun due to high slippage tolerance.")}:null}i(bp,"getSlippageValidation");var xp=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 c=hr({config:a}),u=r;return c.length>0&&(u=u.filter(p=>c.includes(p.name))),u.filter(p=>Hc.includes(p.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(c=>!(s.length>0&&!s.includes(c.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),l=Array.from(n.values()),c=e()._blockchainsMapByName;if(!o||!o.type)return l;let u=o.type==="source"?"from":"to",p=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=Do.get(p);m?.length||(m=dn({type:o.type,config:{blockchains:a[u]?.blockchains,tokens:a[u]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Do.set(p,m)),m=wp(m,s,a.features);let h=e().blockchains({type:o.type});return m.filter(f=>o.blockchain&&f.blockchain!==o.blockchain||!h.some(g=>g.name===f.blockchain)?!1:o.searchFor?!!(tt(f.symbol,o.searchFor)||tt(f.address||"",o.searchFor)||tt(f.name||"",o.searchFor)):!0).sort((f,g)=>{let C=e().isTokenPinned(f,o.type),k=e().isTokenPinned(g,o.type);if(C!==k)return C?-1:1;if(o.getBalanceFor){let B=o.getBalanceFor(f),N=o.getBalanceFor(g),x=sp(B,N);if(x!==0)return x}let y=c.get(f.blockchain),T=c.get(g.blockchain),v=da(f,y),E=da(g,T);if(v!==E)return v?-1:1;if(f.isPopular!==g.isPopular)return f.isPopular?-1:1;if(o.searchFor){let B=Rc(f,g,o.searchFor);if(B)return B}return f.isSecondaryCoin!==g.isSecondaryCoin?f.isSecondaryCoin?1:-1:y&&T?y.sort-T.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=ut(o),s=n.get(a);return s||(s=r.find(l=>ut(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Mt(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(u=>{let p=a?.includes(u.swapperGroup);return s||!a||a.length===0?!p:p}).sort(vp)},fetch:async()=>{try{let{routing:o}=e().config,n=Uo("enableCentralizedSwappers",o),r=await ot().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,l={},c=[],u=r.popularTokens,p=r.swappers.filter(d=>d.enabled),m=new Set;r.tokens.forEach(d=>{m.add(d.blockchain),c.push(d)}),r.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&m.has(d.name)&&a.set(d.name,d)}),c.forEach(d=>{let f=ut(d);l[d.blockchain]||(l[d.blockchain]=[]),s.set(f,d),l[d.blockchain].push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l,_popularTokens:u,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as Yy,Catalonia as Zy,Chinese as Ep,Denmark as Jy,English as Ry,Finland as eS,French as tS,German as oS,Greece as nS,Hungary as rS,India as iS,Indonesian as aS,Italian as sS,Japanese as lS,Korea as cS,Lithuania as pS,Malay as uS,Netherlands as mS,Pakistan as dS,Philippines as fS,Poland as gS,Portuguese as hS,Russian as yS,SaudiArabia as SS,Serbia as CS,Slovakia as kS,SouthAfrica as TS,Spanish as vS,Swahili as wS,Swedish as bS,Thai as xS,Turkish as ES,Ukrainian as IS,Vietnamese as AS}from"@rango-dev/ui";var Ip=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:TS},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:SS},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:Yy},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:Zy},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Ep},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Ep},{title:"Danish",label:"Dansk",local:"da",SVGFlag:Jy},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:mS},{title:"English",label:"English",local:"en",SVGFlag:Ry},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:fS},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:eS},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:tS},{title:"German",label:"Deutsch",local:"de",SVGFlag:oS},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:nS},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:iS},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:rS},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:aS},{title:"Italian",label:"Italiana",local:"it",SVGFlag:sS},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:lS},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:cS},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:pS},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:uS},{title:"Polish",label:"Polski",local:"pl",SVGFlag:gS},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:hS},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:yS},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:CS},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:kS},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:vS},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:wS},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:bS},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:xS},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:ES},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:IS},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:dS},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:AS}],zo="en";var Ap=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Cp,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let c=s===o,u=l<=9;return c&&u}))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=Fo(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=Ye("theme",n),s=Ye("language",n),l=Ye("liquiditySource",n),c=r?.singleTheme,u=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...c&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||zo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...u&&{language:o.language||zo}})},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=hr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import La from"bignumber.js";import NS from"mitt";var ye=NS(),BS={on:ye.on,off:ye.off};import{WidgetEvents as Np}from"@rango-dev/queue-manager-rango-preset";var xa=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(xa||{}),Ea=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(Ea||{}),Ia=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(Ia||{}),Qo=(a=>(a[a.RouteEvent=Np.RouteEvent]="RouteEvent",a[a.StepEvent=Np.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Qo||{});var Bp=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...l]=a;e(c=>({...typeof s=="function"?s(c):s,lastUpdatedAt:+new Date}),...l)},"modifedSet"),o,n),"keepLastUpdated");import Wp from"bignumber.js";function _t(t){return`${t.blockchain}${mo}${t.address}${mo}${t.symbol}`}i(_t,"createAssetKey");function Lp(t,e){return`${_t(e)}${mo}${t}`}i(Lp,"createBalanceKey");function kn(t){let[e,o,n]=t.split(mo);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(kn,"extractAssetFromBalanceKey");function Aa(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[_t(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Wp(r??le).multipliedBy(o[s].amount).toString():""})})}),o}i(Aa,"computeNextBalancesWithNewPrices");function Na(t,e){let o={};return t.balances?.forEach(n=>{let r=Lp(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,l=n.price??e().findToken(n.asset)?.usdPrice,c=l?new Wp(l??le).multipliedBy(a).toString():"",u={amount:a,decimals:s,usdValue:c};o[r]=u}),o}i(Na,"createBalanceStateForNewAccount");function Ba(t,e){for(let o in e){let n=kn(o),r=_t(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(Ba,"updateAggregatedBalanceStateForNewAccount");function WS(t,e){let o=kn(e),n=_t(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(WS,"removeBalanceFromAggregatedBalance");function Wa(t,e,o){let n=t.connectedWallets.filter(c=>c.walletType===e);t.connectedWallets.forEach(c=>{c.walletType!==e&&(n=n.filter(u=>!(u.chain===c.chain&&u.address===c.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(c=>o.chains?.includes(c.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(c=>c.namespace?o.namespaces?.includes(c.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(c=>{let u=kn(c);!!n.find(m=>Lp(m.address,{address:u.address,blockchain:m.chain,symbol:u.symbol})===c)?a=WS(a,c):r[c]=s[c]}),{_balances:r,_aggregatedBalances:a}}i(Wa,"computeNextStateAfterWalletBalanceRemoval");function LS(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(LS,"matchWalletDetailsWithConnectedWallet");var MS=op(),Mp=Bp((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Sn(s,a))?{...a,loading:!1,error:!1,explorerUrl:LS(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n)=>{let r=e().connectedWallets,a=o.filter(s=>!r.some(l=>Sn(s,l)));if(a.length>0){let s=a.map(l=>{let c=!r.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:c,namespace:n,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!s.some(p=>p.walletType===u.walletType&&p.chain===u.chain)),...s]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((c,u)=>((c[u.blockchain]||=[]).push(u),c),{}),s=new Set,l=r.reduce((c,u)=>{let p=`${u.address}-${u.chain}`;return s.has(p)||(s.add(p),a[u.chain]&&(c[u.address]||(c[u.address]=[]),c[u.address].push(...a[u.chain]))),c},{});Object.entries(l).forEach(async([c,u])=>{try{let{balances:p}=await ot().getMultipleTokenBalance({assets:u.map(({symbol:m,address:h,blockchain:d})=>({symbol:m,address:h,blockchain:d})),walletAddress:c});if(p){let m=e()._balances,h=e()._aggregatedBalances;p.forEach(d=>{if(parseFloat(d.amount.amount)===0)return;let f={blockChain:d.asset.blockchain,balances:[d],address:c},g={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};Aa(g,f,m);let C=Na(f,e);h=Ba(h,C),m={...m,...C}}),t(d=>({_balances:{...d._balances,...m},_aggregatedBalances:h}))}}catch(p){console.error(p)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n)=>{ye.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}}),e().addConnectedWallet(o,n),e().fetchBalances(o)},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Wa(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(ye.emit("walletEvent",{type:"disconnect",payload:{walletType: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(l=>a.includes(l.chain)?(a=a.filter(c=>c!==l.chain),{...l,selected:!0}):l);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)return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(c=>({address:c.address,blockchain:c.chain})),s;try{s=await ot().getWalletsDetails(a)}catch(c){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${c}`);return}let l=s.wallets;if(l){let c=e()._balances,u=e()._aggregatedBalances;l.forEach(m=>{if(m.failed)return;let h={_balances:c,_aggregatedBalances:u,connectedWallets:e().connectedWallets,findToken:e().findToken};Aa(h,m,c);let{_balances:d,_aggregatedBalances:f}=Wa(h,r,{chains:[m.blockChain]});if(u=f,c=d,!e().connectedWallets.find(C=>C.walletType===r&&C.address===m.address&&C.chain===m.blockChain))return;let g=Na(m,e);u=Ba(u,g),c={...c,...g}}),t(m=>({_balances:{...m._balances,...c},_aggregatedBalances:u})),e().setConnectedWalletRetrievedData(o,l);let{retryOnFailedBalances:p=!0}=n||{};if(p){let m=l.filter(h=>h.failed).map(h=>({chain:h.blockChain,walletType:r,address:h.address}));m.length>0&&await e().fetchMainTokensBalances(m,{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=_t(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let c=a[0];return n[c]}let l=n[a[0]];return a.forEach(c=>{let u=n[c],p=new La(u.amount),m=new La(l.amount);p.isGreaterThan(m)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,l)=>{let c=n[l],[,,,u]=l.split(mo);return u===o&&(s[l]=c),s},{})},getConnectedWalletsDetails:()=>MS(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,l)=>{let c=r[l],u=kn(l);if(u.blockchain===n.chain){let p=e().findToken(u),m=c.amount?new La(c.amount).shiftedBy(-c.decimals):le;s.push({chain:n.chain,symbol:u.symbol,ticker:u.symbol,address:u.address,rawAmount:c.amount,decimal:c.decimals,amount:m.toString(),logo:p?.image||null,usdPrice:p?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Pp(t){return PS()(_S((...e)=>({...Mp(...e),...xp(...e),...Ap(...e),...zc(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}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Pp,"createAppStore");var _p=$S(null);function S(){let t=FS(_p);if(OS(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(S,"useAppStore");function Dp(t){let e=US();return e.current||(e.current=Pp(t.config)),DS.createElement(_p.Provider,{value:e.current},t.children)}i(Dp,"AppStoreProvider");function yt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=S(),{state:r,getWalletInfo:a}=zS(),s=S().blockchains(),{handleDisconnect:l}=Xt(),c=$c(n()),u=ip(r,a,c,e);u=QS()?u.filter(g=>g.showOnMobile!==!1&&r(g.type).installed):u;let p=lp(u),m=i(g=>!o.find(C=>C.walletType===g&&C.chain===e),"isExperimentalChainNotAdded"),h=qS(()=>{let g=u?.filter(C=>C.state===Ma.CONNECTING)||[];for(let C of g)l(C.type)},[up(u)]);GS(()=>()=>{h()},[]);let d=i(g=>{let C=g.find(y=>y.type===Tn.DEFAULT);return!C||C.state===Ma.NOT_INSTALLED?!1:g.filter(y=>y.state!=Ma.NOT_INSTALLED&&![Tn.DEFAULT,Tn.WALLET_CONNECT_2,Tn.LEDGER].includes(y.type)&&a(y.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),f=i((g,C,k)=>Er(k,C)&&m(g)&&!HS.includes(g)||g==Tn.DEFAULT&&!d(u),"shouldExcludeWallet");return{list:p.filter(g=>!f(g.type,e??"",s)),terminateConnectingWallets:h}}i(yt,"useWalletList");import{Modal as XS}from"@rango-dev/ui";import YS from"react";import{create as jS}from"zustand";var $p="rango-widget";var vn=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($p),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 KS=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"),Ho=KS;var ne=Ho(jS()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})}}))),ho=new vn({onInit:()=>ne.setState({tabManagerInitiated:!0}),onClaim:()=>ne.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ne.setState({isActiveTab:!1})});function J(t){let{watermark:e}=ne();return YS.createElement(XS,{hasWatermark:e==="FULL",...t},t.children)}i(J,"WatermarkedModal");import{i18n as qo}from"@lingui/core";import{Alert as oC,Button as Kp,Divider as Mr,Image as nC,MessageBox as rC,RadioRoot as iC}from"@rango-dev/ui";import pe,{useEffect as aC,useMemo as sC,useState as lC}from"react";import{i18n as RS}from"@lingui/core";import{Checkbox as eC,Radio as tC,Typography as Oa}from"@rango-dev/ui";import mt from"react";function Pa(t,e){return t.find(o=>o.name===e)?.logo}i(Pa,"getBlockchainLogo");import{Image as ZS,styled as wn}from"@rango-dev/ui";var Op=wn("ul",{padding:0,paddingTop:"$10",paddingBottom:"$20",margin:0}),_a=wn("li",{backgroundColor:"$neutral200",padding:"$16",display:"flex",gap:"$8",cursor:"pointer",borderRadius:"$sm",alignItems:"center",variants:{unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),Up=wn("div",{flex:"1",display:"flex",flexDirection:"column",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),zp=wn("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Da=wn(ZS,{variants:{disabled:{true:{opacity:"0.5"}}}});import{Image as Hp,Tooltip as qp,Typography as JS}from"@rango-dev/ui";import It from"react";import{styled as Qp}from"@rango-dev/ui";var $a=Qp("div",{display:"flex",alignItems:"center",padding:0,margin:0}),Lr=Qp("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 Fa=3;function Gp(t){let{chains:e}=t;return It.createElement($a,null,e.slice(0,Fa).map((o,n)=>It.createElement(qp,{key:o.name,container:A(),side:"bottom",align:"start",content:o.name,sideOffset:4},It.createElement(Lr,{firstItem:n===0},It.createElement(Hp,{src:o.logo,size:15})))),e.length>Fa&&It.createElement(qp,{container:A(),side:"bottom",align:"start",sideOffset:4,content:It.createElement($a,null,e.map((o,n)=>It.createElement(Lr,{key:o.name,firstItem:n===0},It.createElement(Hp,{src:o.logo,size:15}))))},It.createElement(Lr,null,It.createElement(JS,{variant:"body",size:"xsmall"},"+",e.length-Fa))))}i(Gp,"SupportedChainsList");function Vp(t){let{onClick:e,type:o,namespace:n}=t,r=S().blockchains();if(n.unsupported)return mt.createElement(_a,{unsupported:!0},mt.createElement(Da,{src:Pa(r,n.id),size:40,disabled:!0}),mt.createElement(zp,null,mt.createElement(Oa,{variant:"label",size:"large"},n.label),mt.createElement(Oa,{variant:"body",size:"xsmall"},RS.t("(Currently not supported)"))));let a=n.chains.length>1;return mt.createElement(_a,{onClick:e},mt.createElement(Da,{src:Pa(r,n.id),size:40}),mt.createElement(Up,{showSupportedChains:a},mt.createElement(Oa,{variant:"label",size:"large"},n.label),a&&mt.createElement(Gp,{chains:n.chains})),o==="radio"?mt.createElement(tC,{value:n.value}):mt.createElement(eC,{checked:t.value}))}i(Vp,"NamespaceListItem");function bn(t){let{targetWallet:e}=t.value,o=e.needsNamespace?.selection==="single",n=e.image,[r,a]=lC([]),s=sC(()=>e.needsNamespace?.data.filter(m=>!m.unsupported),[e?.type]),l=i(m=>{a(o?[m]:h=>h.includes(m)?h.filter(d=>d!==m):h.concat(m))},"onSelect"),c=s?.length===r.length,u=i(()=>{if(o)throw new Error("onSelectAll should not be called on single selection mode.");c?a([]):s&&a(s.map(m=>m.value))},"onSelectAll"),p=i(m=>o?pe.createElement(iC,{value:r?.[0]},m):pe.createElement(pe.Fragment,null,m),"wrapRadioRoot");return aC(()=>{if(!o&&s)if(t.value.defaultSelectedChains?.length){let m=s.filter(h=>h.chains.some(d=>t.value.defaultSelectedChains?.includes(d.name)));a(m.map(h=>h.value))}else a(s.map(m=>m.value))},[]),pe.createElement(pe.Fragment,null,pe.createElement(rC,{type:"info",title:qo.t("Connect {wallet}",{wallet:e.title}),description:qo.t("This wallet supports multiple chains. Choose which chains you'd like to connect to."),icon:pe.createElement(nC,{src:n,size:45})}),o?pe.createElement(pe.Fragment,null,pe.createElement(Mr,{size:20}),pe.createElement(oC,{variant:"alarm",type:"info",title:qo.t("This wallet can only connect to one chain at a time. ")})):pe.createElement(pe.Fragment,null,pe.createElement(Mr,{size:30}),pe.createElement(Kp,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:u},c?qo.t("Deselect all"):qo.t("Select all"))),pe.createElement(Op,null,p(pe.createElement(pe.Fragment,null,e.needsNamespace?.data.map((m,h,d)=>pe.createElement(pe.Fragment,{key:m.id},pe.createElement(Vp,{value:r.includes(m.value),namespace:m,type:o?"radio":"checkbox",onClick:()=>l(m.value)}),h!==d.length-1&&pe.createElement(Mr,{size:10})))))),pe.createElement(Mr,{size:20}),pe.createElement(Kp,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!r.length,onClick:()=>t.onConfirm(r)},qo.t("Connect")))}i(bn,"Namespaces");import{i18n as Go}from"@lingui/core";import{Button as uC,Divider as Yp,Image as mC,MessageBox as dC,Select as fC,TextField as gC}from"@rango-dev/ui";import dt,{useEffect as hC,useState as Zp}from"react";import{namespaces as cC}from"@rango-dev/wallets-shared";var Pr={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Ua(t){let e=t?cC[t].derivationPaths:null;return e?[...e,Pr]:[]}i(Ua,"getDerivationPaths");import{styled as jp,Typography as pC}from"@rango-dev/ui";var Xp=jp("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),za=jp(pC,{paddingLeft:"$10"}),Qa={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"};var Jp="0";function xn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=Zp(null),[l,c]=Zp(Jp),u=a===Pr.id,p=Ua(o),m=i(({value:d})=>{let f=p?.find(g=>g.id===d);f&&(a===Pr.id&&Number.isNaN(Number(l))&&c(Jp),s(f.id))},"handleDerivationPathItemClick"),h=i(()=>{let d=p.find(f=>f.id===a);if(d)e(d.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return hC(()=>{s(Ua(o)[0]?.id||null)},[o]),dt.createElement(dt.Fragment,null,dt.createElement(Yp,{size:20}),dt.createElement(dC,{type:"info",title:Go.t("Select Derivation Path"),description:Go.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:dt.createElement(mC,{src:n,size:45})}),dt.createElement(Xp,null,dt.createElement(za,{variant:"body",size:"xsmall",color:"$neutral600"},Go.t("Choose Derivation Path Template")),dt.createElement(fC,{value:a||"",options:p.map(d=>({value:d.id,label:d.label})),variant:"filled",handleItemClick:m,styles:{trigger:Qa}}),dt.createElement(Yp,{size:20}),dt.createElement(za,{variant:"body",size:"xsmall",color:"$neutral600"},u?Go.t("Enter Path"):Go.t("Enter Index")),dt.createElement(gC,{type:u?"text":"number",variant:"contained",value:l,onChange:d=>c(d.target.value),style:Qa})),dt.createElement(uC,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!p||!a||!l},Go.t("Confirm")))}i(xn,"DerivationPath");import{i18n as Vo}from"@lingui/core";import{Image as CC,MessageBox as Ha,WalletState as kC}from"@rango-dev/ui";import{useWallets as TC}from"@rango-dev/wallets-react";import yo from"react";import{keyframes as yC,styled as _r}from"@rango-dev/ui";var lW=_r("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Rp=_r("div",{position:"relative"}),SC=yC({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),eu=_r("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${SC} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),tu=_r("div",{"& img":{borderRadius:"50%"}});function qa(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=TC();return hn(a(n))===kC.CONNECTED?yo.createElement(Ha,{type:"success",title:Vo.t("Wallet Connected"),description:Vo.t("Your wallet is connected, you can use it to swap.")}):o?yo.createElement(Ha,{type:"error",title:Vo.t("Failed to Connect"),description:o||Vo.t("Your wallet is not connected. Please try again.")}):yo.createElement(Ha,{type:"loading",title:Vo.t("Connecting to your wallet"),description:Vo.t("Click connect in your wallet popup."),icon:yo.createElement(Rp,null,yo.createElement(tu,null,yo.createElement(CC,{src:r,size:45})),yo.createElement(eu,null))})}i(qa,"ConnectStatus");import{i18n as Ga}from"@lingui/core";import{Button as vC,Divider as ou,MessageBox as wC}from"@rango-dev/ui";import Dr from"react";function Va(t){let{displayName:e,onConfirm:o}=t;return Dr.createElement(wC,{title:Ga.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:Ga.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},Dr.createElement(ou,{size:18}),Dr.createElement(ou,{size:32}),Dr.createElement(vC,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Ga.t("Confirm")))}i(Va,"ExperimentalChain");function nu(t,e){return t().status==="init"&&!!e}i(nu,"isOnStatus");function En(t){return t().status==="namespace"}i(En,"isOnNamespace");function In(t){return t().status==="derivationPath"}i(In,"isOnDerivationPath");var IC=3e3,AC=300;function Co(t){let e=EC(),[o,n]=ru(!1),[r,a]=ru(),s=i(y=>{a(y.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=yt(),{handleConnect:c,handleDerivationPath:u,handleNamespace:p,getState:m,resetState:h}=Xt(),d=i(y=>{p(t.wallet,y).then(k).catch(s)},"handleConfirmNamespaces"),f=i(y=>{if(!y)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");u(y).then(k).catch(s)},"handleDerivationPathConfirm"),g=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((y,T)=>{let v=y.status==="connected",E=["disconnected","disconnected-unhandled"].includes(y.status);v?(t.onConnect?.(),T||(e.current=setTimeout(g,IC))):E&&g()},"afterConnected");return xC(()=>{if(t.wallet){C();let y=!1,T=!0;i(()=>{setTimeout(()=>{T=!1,y||n(!0)},AC)},"beforeConnecting")(),c(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","derivation-path"].includes(E.status)||(y=!0),k(E,T)}).catch(s)}},[t.wallet]),So.createElement(J,{open:o,onClose:g,onExit:()=>{C(),l(),t.onClose&&t.onClose()},container:A()},nu(m,t.wallet)&&So.createElement(So.Fragment,null,So.createElement(qa,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),So.createElement(bC,{direction:"vertical",size:32})),En(m)&&So.createElement(bn,{onConfirm:d,value:m().namespace}),In(m)&&So.createElement(xn,{onConfirm:f,value:m().derivationPath}))}i(Co,"StatefulConnectModal");import{Provider as MC}from"@rango-dev/wallets-react";import $r,{createContext as PC,useEffect as cu,useMemo as _C,useRef as pu}from"react";import{useEffect as NC}from"react";function iu(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(iu,"hashProviders");function Ka(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=S(),a=n();return NC(()=>{o(),r()},[iu(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Ka,"useWalletProviders");import{legacyFormatAddressWithNetwork as BC,legacyReadAccountAddress as au}from"@rango-dev/wallets-core/legacy";import{Events as ko}from"@rango-dev/wallets-react";import{isEvmBlockchain as WC}from"rango-sdk";function su(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=S(),{onConnectWalletHandler:l,onDisconnectWalletHandler:c}=t,u=s().filter(WC).map(g=>g.name),p=i((g,C)=>{let[k,,y,,T]=g,v=Ca(k,y,u,C.supportedChainNames,T.isContractWallet);v.length&&e(v,T.namespace)},"onAccountsEvent"),m=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains);k&&p([g,C,k,y,T],{supportedChainNames:v})}if(C===ko.CONNECTED){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}C===ko.PROVIDER_DISCONNECTED&&(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),C===ko.NAMESPACE_DISCONNECTED&&n(g,k)},"handleUpdatesForHub"),h=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains),E=[],B=[];if(k?.forEach(x=>{let{network:w}=au(x);u.includes(w)?E.push(x):B.push(x)}),r.filter(x=>x.walletType===g).map(x=>BC(x.address,x.chain)).length>0){if(E.length>0){let x=Ca(g,E,u,v,T.isContractWallet);a(g,{chains:x.map(w=>w.chain)})}B.length>0&&a(g,{chains:B.map(x=>{let{network:w}=au(x);return w})})}k?p([g,C,k,y,T],{supportedChainNames:v}):(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}if(C===ko.ACCOUNTS&&y.connected){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForLegacy"),d=i((g,C,k,y,T)=>{if(C===ko.NETWORK&&y.network){let v=`${g}-${y.network}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((g,C,k,y,T)=>{T.isHub?m(g,C,k,y,T):h(g,C,k,y,T),d(g,C,k,y,T)},"handler")}}i(su,"useUpdates");import{LegacyEvents as LC}from"@rango-dev/wallets-core/legacy";function lu(t,e){let[o,n,r,a,s]=e;n!==LC.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(lu,"propagateEvents");var Fr=PC({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function DC(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=S(),a=S().blockchains(),s=S().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:c}=Ka(s.wallets,l),u=pu(),p=pu(),{handler:m}=su({onConnectWalletHandler:u,onDisconnectWalletHandler:p});cu(()=>{n().catch(console.log)},[]),cu(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let h=ne.use.isActiveTab(),d=_C(()=>({onConnectWallet:f=>{u.current=f},onDisconnectWallet:f=>{p.current=f}}),[]);return $r.createElement(Fr.Provider,{value:d},$r.createElement(MC,{allBlockChains:a,providers:c,onUpdateState:(f,g,C,k,y)=>{let T=[f,g,C,k,y];m(...T),t.onUpdateState&&lu(t.onUpdateState,T)},autoConnect:!!h,configs:{wallets:s.wallets}},t.children))}i(DC,"Main");function Or(t){let{config:e,...o}=t;return $r.createElement(Dp,{config:e},$r.createElement(DC,{...o,config:e}))}i(Or,"WidgetWallets");import pa from"react";import $C,{Fragment as FC}from"react";import{MemoryRouter as OC,useInRouterContext as UC}from"react-router";function uu({children:t}){let o=UC()?FC:OC;return $C.createElement(o,null,t)}i(uu,"AppRouter");import{I18nManager as UI}from"@rango-dev/ui";import Ec from"react";import _e from"react";import{useRoutes as EI}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as jo,useRef as jr}from"react";import Ze from"bignumber.js";import{create as qC}from"zustand";import{subscribeWithSelector as GC}from"zustand/middleware";import{i18n as St}from"@lingui/core";import{getRelatedWalletOrNull as HC,RouteEventType as YL}from"@rango-dev/queue-manager-rango-preset";import Qe from"bignumber.js";import{PendingSwapNetworkStatus as Vr}from"rango-types";import{i18n as Oe}from"@lingui/core";var ee=i(()=>({genericServerError:Oe.t("Failed Network, Please retry your swap."),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 mu(t){switch(t.type){case 0:return t.diagnosisMessage??ee().noResultError.title;case 1:return ee().genericServerError;default:return""}}i(mu,"getQuoteErrorMessage");import{i18n as Ur}from"@lingui/core";var To=i(()=>({connectWallet:Ur.t("Connect Wallet"),swap:Ur.t("Swap"),swapAnyway:Ur.t("Swap anyway"),ethWarning:Ur.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function ja(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(ja,"getFeeLabel");var Xa=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],du=100,fu=30,gu=15,hu=60;var yu=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Su=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as QC}from"@rango-dev/queue-manager-rango-preset";import DL from"bignumber.js";function ku(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(ku,"getRequiredBalanceOfWallet");function $t(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i($t,"getPriceImpactLevel");function Qr(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=QC(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=uo(a?a.toBlockchain:n.fromBlockchain,e),c=uo(r.toBlockchain,e),u=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),p=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:u,toBlockchain:c,toToken:p,inputAmount:m}}i(Qr,"createRetryQuote");function Ko(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=An(o),s=ft(o);if(o&&a&&s){let u=Dt(a.toString(),s.toString());if(!!u&&xu(a,u)){let m=qr(o?.swaps,n),h=$t(u);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:u,totalFee:m,warningLevel:h}}}if(e&&Au(e,o))return{type:4,usdValueChange:P(ft(o)?.minus(ft(e)??0).toString()??"0",null,2),percentageChange:P(Dt(ft(e)??"1",ft(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let l=Gr(o.swaps),c=r>Br;if(Iu(t.userSlippage.toString(),l)){if(c&&parseFloat(l??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:Eu(o,r),minRequiredSlippage:l};return null}i(Ko,"generateQuoteWarnings");function Tu(t){return![4].includes(t.type)}i(Tu,"isQuoteWarningConfirmationRequired");function Dt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Ya(t.toString(),e.toString());return n&&n<0?n:null}i(Dt,"getPriceImpact");var vu=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"),Hr=i((t,e)=>e.sort((o,n)=>{let r=i(u=>u.scores?.find(p=>p.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),c=n.requestId.toLowerCase();return l.localeCompare(c)}),"sortQuotesBy"),wu=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),bu=i(t=>{let e=i((o,n)=>{let r=Xa.indexOf(o.value),a=Xa.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function xu(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return yu.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Qe(r)))}i(xu,"hasHighValueLoss");function Nu(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Qe(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Qe(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(Nu,"hasLimitError");function Bu(t){let e=(t||[]).filter(l=>{let c=l.fromAmountMinValue?new Qe(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new Qe(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?c?.gte(l.fromAmount)||u?.lte(l.fromAmount):c?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new Qe(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Qe(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=St.t({id:"Required: >= {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=St.t({id:"Required: > {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=St.t({id:"Required: <= {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=St.t({id:"Required: < {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Bu,"getLimitErrorMessage");function Wu(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:c}=t;return e!=="success"?{title:To().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:To().swap,action:"confirm-swap",disabled:!0}:s?{title:To().swapAnyway,action:"confirm-warning",disabled:!1}:c?{title:To().ethWarning,action:"confirm-warning",disabled:!1}:{title:To().swap,action:"confirm-swap",disabled:!1}:{title:To().connectWallet,action:"connect-wallet",disabled:!1}}i(Wu,"getSwapButtonState");function Za(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(le))&&e&&e!=="0"&&n!==0)}i(Za,"canComputePriceImpact");function Ja(t,e){let o=le;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Qe(r.amount).multipliedBy(a||0))}return o}i(Ja,"getUsdFeeOfStep");function qr(t,e){return t.reduce((o,n)=>o.plus(Ja(n,e)),le)}i(qr,"getTotalFeeInUsd");function Ra(t){let e=le;return e=e.plus(new Qe(t.amount).multipliedBy(t.price||0)),e}i(Ra,"getUsdFee");function Lu(t){return t.reduce((e,o)=>e.plus(Ra(o)),le)}i(Lu,"getTotalFeesInUsd");function Mu(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(Mu,"getFeesGroup");function Pu(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(Pu,"checkSlippageErrors");function Eu(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(Eu,"checkSlippageWarnings");function Gr(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(Gr,"getMinRequiredSlippage");function Iu(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Iu,"hasProperSlippage");function _u(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:c,slippage:u,affiliateRef:p,affiliatePercent:m,affiliateWallets:h,destination:d,contractCall:f}=t,g=a?.reduce((y,T)=>(y[T.chain]=T.address,y),{}),C=[];return r?.forEach(y=>{C.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:m??void 0,affiliateWallets:h??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:C,selectedWallets:g??{},slippage:u.toString(),contractCall:f,...d&&{destination:d},...c&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!c&&{swapperGroups:l?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i(_u,"createQuoteRequestBody");function Du(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Du,"getWalletsForNewSwap");function An(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new Qe(e).multipliedBy(o)}i(An,"getUsdInputFrom");function ft(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new Qe(e).multipliedBy(o)}i(ft,"getUsdOutputFrom");function Ya(t,e){return new Qe(e).div(new Qe(t)).minus(1).multipliedBy(du).toNumber()}i(Ya,"getPercentageChange");function Au(t,e){let o=An(t),n=ft(t),r=ft(e);if(!o||!n||!r)return!1;let a=Ya(n.toString(),r.toString());return Su.some(({threshold:s,minInput:l})=>a<=s&&o.isGreaterThanOrEqualTo(l))}i(Au,"isOutputAmountChangedExcessively");function $u(t,e,o){let n=t.validationStatus,r=go({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>ku(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,c=P(new Qe(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),u=P(new Qe(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),p="";return s.reason==="FEE"&&(p=St.t(" for network fee")),s.reason==="INPUT_ASSET"&&(p=St.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(p=St.t(" for input and network fee")),St.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:u,symbol:l,reason:p,currentAmount:c,blockchain:pt(s.asset.blockchain,o)}})})}i($u,"generateBalanceWarnings");function Nn(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Vr.NetworkChanged}i(Nn,"isNetworkStatusInWarningState");function Fu(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,"")),Nn(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?HC(t,e):null)?.walletType,p=u?o?.(u)?.name:null;switch(e?.networkStatus){case Vr.WaitingForConnectingWallet:r=p?St.t("Connect {wallet}",{wallet:p}):r;break;case Vr.WaitingForQueue:r=r||St.t("Waiting for other running tasks to be finished");break;case Vr.WaitingForNetworkChange:r=r||St.t("Waiting for changing wallet network");break;default:r=r||"";break}}a=a||"",r=r||"";let l=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:l}}}i(Fu,"getSwapMessages");function Ou(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(Ou,"getLastConvertedTokenInFailedSwap");function Uu(t){return t.status==="failed"}i(Uu,"shouldRetrySwap");function zu(t,e,o,n,r,a){if(!n||t)return!0;let s=go({filter:"all",quote:n}),l=go({filter:"required",quote:n}),c=s.every(m=>r.some(h=>h.chain===m)),u=l.every(m=>r.some(h=>h.chain===m)),p=o&&a?$o(a,o):!1;return!e&&!c||e&&!o||e&&!!o&&(!p||!u)}i(zu,"isConfirmSwapDisabled");function Qu(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Qu,"isTokensIdentical");var Kr=i((t,e)=>t?.usdPrice?new Ze(e||le).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),O=Ho(qC()(GC(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Ze(0),outputUsdValue:new Ze(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=le,a=o.inputUsdValue;return gn(o.inputAmount)?(e&&(n=e?.outputAmount?new Ze(e?.outputAmount):null,a=An(e)??le,r=ft(e)??le),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new Ze(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new Ze(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new Ze(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:Kr(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 Ze(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:null,outputUsdValue:new Ze(0),selectedQuote:null},...!!o.fromToken&&{inputUsdValue:Kr(o.fromToken,e)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Kr(n??null,s),outputUsdValue:new Ze(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?Kr(e.toToken,e.outputAmount?.toString()||""):new Ze(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new Ze(0),inputUsdValue:new Ze(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new Ze(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})})))),Hu=O.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ye.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&&ye.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function qu(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:c,toBlockchain:u}=O(),p=S().config,m=S().fetchStatus,h=S().blockchains(),{findToken:d}=S(),{setAffiliateRef:f,setAffiliatePercent:g,setAffiliateWallets:C}=S(),k=p?.from?.tokens,y=p?.from?.blockchains,T=p?.to?.tokens,v=p?.to?.blockchains,E=jr(void 0),B=jr(void 0),N=jr(void 0),x=jr(void 0);jo(()=>{typeof p.amount<"u"&&t(p.amount.toString())},[p?.amount]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.from?.blockchain),b=p?.from?.token,I=b&&d(b);(w||!w&&N.current)&&n(w??null),I?a({token:I,meta:{blockchains:h}}):!I&&E.current&&a({token:null}),N.current=p?.from?.blockchain,E.current=p?.from?.token}},[p?.from?.token?.symbol,p?.from?.token?.address,p?.from?.token?.blockchain,p?.from?.blockchain,m]),jo(()=>{va(s,k)&&a({token:null}),wa(c,y)&&n(null)},[k,y]),jo(()=>{va(l,T)&&a({token:null}),wa(u,v)&&o(null)},[T,v]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.to?.blockchain),b=p?.to?.token,I=b&&d(b);(w||!w&&x.current)&&o(w??null),I?e({token:I,meta:{blockchains:h}}):!I&&B.current&&e({token:null}),x.current=p?.to?.blockchain,B.current=p?.to?.token}},[p?.to?.token?.symbol,p?.to?.token?.address,p?.to?.token?.blockchain,p?.to?.blockchain,m]),jo(()=>{f(p?.affiliate?.ref??null),g(p?.affiliate?.percent??null),C(p?.affiliate?.wallets??null)},[p?.affiliate?.ref,p?.affiliate?.percent,p?.affiliate?.wallets])}i(qu,"useSyncStoresWithConfig");import{useEffect as os,useRef as VC}from"react";import{useInRouterContext as KC,useLocation as jC,useSearchParams as XC}from"react-router-dom";function es(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(es,"convertTokenSearchParamToAsset");function ts(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(ts,"tokenToSearchParam");function rs(){let t=jC(),[e,o]=XC(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:c,setToBlockchain:u,setFromToken:p,setToToken:m,setInputAmount:h}=O(),d=S().fetchStatus,f=S().blockchains(),g=KC(),{updateIframe:C,updateCampaignMode:k}=S(),y=S().isInCampaignMode(),T=VC(),{findToken:v}=S(),E=i(()=>{let N={};for(let[L,K]of e.entries())L.startsWith("utm_")&&(N[L]=K);let x=e.get("fromAmount"),w=e.get("fromBlockchain"),b=e.get("fromToken"),I=e.get("toBlockchain"),_=e.get("toToken"),M=e.get("autoConnect"),q=e.get("clientUrl"),R=e.get("liquiditySources"),X=e.get("blockchain");return{fromAmount:x,fromBlockchain:w,fromToken:b,toBlockchain:I,toToken:_,autoConnect:M,clientUrl:q,liquiditySources:R,utmQueryParams:N,blockchain:X}},"getUrlSearchParams"),B=i(N=>{for(let x in N)N[x]||delete N[x];o(N,{replace:!0})},"updateUrlSearchParams");os(()=>{let{autoConnect:N,clientUrl:x,utmQueryParams:w,blockchain:b}=E();g&&d==="success"&&B({fromBlockchain:n?.name,fromToken:ts(a),toBlockchain:r?.name,toToken:ts(s),fromAmount:l,autoConnect:N??void 0,clientUrl:x??void 0,blockchain:b??void 0,liquiditySources:y?T.current:void 0,...w})},[t.pathname,l,n,a,r,s,y]),os(()=>{if(!g)return;let N=E();if(!T.current&&N.liquiditySources&&(T.current=N.liquiditySources),N.fromAmount&&h(N.fromAmount),d==="success"){let x=f.find(_=>_.name===N.fromBlockchain),w=N.fromToken&&x?v(es(N.fromToken,x)):void 0,b=f.find(_=>_.name===N.toBlockchain),I=N.toToken&&b?v(es(N.toToken,b)):void 0;x&&(c(x),w&&p({token:w,meta:{blockchains:f}})),b&&(u(b),I&&m({token:I,meta:{blockchains:f}}))}},[d]),os(()=>{let{clientUrl:N,liquiditySources:x}=E();C("clientUrl",N||void 0),k("liquiditySources",x?.split(",")??void 0)},[])}i(rs,"useSyncUrlAndStore");import{i18n as Ro}from"@lingui/core";import{Alert as uT,Button as mT,darkTheme as dT,Divider as Ls,DoneIcon as fT,styled as gT,TextField as hT,Typography as yT}from"@rango-dev/ui";import ze,{useState as ST}from"react";import{useNavigate as CT,useSearchParams as kT}from"react-router-dom";import{ChevronRightIcon as YC,Divider as Xu,Image as ZC,Typography as Yu}from"@rango-dev/ui";import Ct from"react";import{darkTheme as Gu,styled as is}from"@rango-dev/ui";var Vu=is("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Gu} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Gu} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),Ku=is("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),ju=is("div",{display:"flex"});function as(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return Ct.createElement(Ku,null,Ct.createElement(Yu,{size:"large",variant:"label"},n),Ct.createElement(Xu,{size:10}),Ct.createElement(Vu,{onClick:s?void 0:e,disabled:s},Ct.createElement(ju,null,r&&Ct.createElement(Ct.Fragment,null,Ct.createElement(ZC,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),Ct.createElement(Xu,{size:4,direction:"horizontal"})),Ct.createElement(Yu,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),Ct.createElement(YC,{size:12,color:"black"})))}i(as,"BlockchainSelectorButton");import{i18n as cs}from"@lingui/core";import{Button as ek,Divider as om,MessageBox as tk}from"@rango-dev/ui";import Zt,{useEffect as nm,useState as ps}from"react";import{i18n as Xr}from"@lingui/core";import{Button as tm,Divider as vo,ExternalLinkIcon as JC,Image as RC,Typography as Yo}from"@rango-dev/ui";import Se from"react";var Zu="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function Ju(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(Ju,"generateExplorerLink");import{darkTheme as Xo,styled as Ru}from"@rango-dev/ui";var ss=Ru("a",{textDecoration:"none",color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${Xo} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${Xo} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),em=Ru("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${Xo} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"}}});function ls(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,l=Ju(n.address,s),c=i(()=>window.open(Zu,"_blank"),"onClickLearnMore");return Se.createElement(J,{open:e,dismissible:!0,onClose:o,onExit:r,container:A()},Se.createElement(em,null,Se.createElement(RC,{src:n.image===""?Sr:n.image,size:45,type:"circular"}),Se.createElement(vo,{size:4}),Se.createElement(Yo,{variant:"title",size:"medium"},n.symbol),Se.createElement(Yo,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),Se.createElement(vo,{size:4}),Se.createElement(Yo,{variant:"body",size:"medium"},l?Se.createElement(ss,{hasHover:!0,href:l,target:"_blank",rel:"nofollow noreferrer"},n.address,Se.createElement(JC,{size:12,color:"gray"})):Se.createElement(ss,null,n.address)),Se.createElement(vo,{size:4}),n.coinSource&&Se.createElement(Yo,{className:"_coin-source",variant:"body",size:"xsmall"},Xr.t("via")," ",Se.createElement(Yo,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),Se.createElement(vo,{size:"32"}),Se.createElement(Yo,{size:"medium",variant:"body",className:"_custom-token-description"},Xr.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."))),Se.createElement(vo,{size:40}),Se.createElement(vo,{size:10}),Se.createElement(tm,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Xr.t("Import Anyway")),Se.createElement(vo,{size:10}),Se.createElement(tm,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:c},Xr.t("Learn More")))}i(ls,"CustomTokenModal");function Bn(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:l,onExitErrorModal:c,onExitImportModal:u}=t,{setCustomToken:p}=S(),[m,h]=ps(!1),[d,f]=ps(!1),[g,C]=ps(!1),k=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),T=i(()=>{C(!0),y()},"handleErrorModalButtonClick"),v=i(()=>{g&&n?.type==="network-error"&&(C(!1),k()),c()},"handleExit"),E=i(()=>{e&&(p(e),l())},"handleSubmit");return nm(()=>{n&&h(!0)},[n]),nm(()=>{o&&e&&f(!0)},[o,e]),Zt.createElement(Zt.Fragment,null,Zt.createElement(J,{open:m,dismissible:!0,onClose:y,onExit:v,container:A()},Zt.createElement(tk,{title:n?.title??"",type:"error",description:n?.message||cs.t("Failed Network, Please retry.")},Zt.createElement(om,{size:40}),Zt.createElement(om,{size:10}),Zt.createElement(ek,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:T},n?.type==="network-error"?cs.t("Retry"):cs.t("Add another custom token")))),o&&e&&Zt.createElement(ls,{blockchain:o,token:e,onSubmitClick:E,onClose:()=>f(!1),open:d,onExit:u}))}i(Bn,"ImportCustomToken");import{useManager as aT}from"@rango-dev/queue-manager-react";import{BottomLogo as sT,Divider as Wm,Header as lT}from"@rango-dev/ui";import be,{useEffect as ni,useRef as Lm,useState as Mm}from"react";import{useRef as ok}from"react";function Yr(){return window.self!==window.top}i(Yr,"isAppLoadedIntoIframe");function us(){let t=ok(null),{iframe:e}=S(),o=Yr()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let c of l)n({type:"widget_height",data:{height:c.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(us,"useIframe");import{useNavigate as nk}from"react-router-dom";function Ue(){let t=nk();return()=>t(-1)}i(Ue,"useNavigateBack");import{createTheme as Ss,darkTheme as yk,lightTheme as Sk}from"@rango-dev/ui";import{useEffect as Ck,useState as kk}from"react";import{theme as gk,darkColors as hk}from"@rango-dev/ui";import hs from"react";function rk(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(rk,"expandShortHexColor");function ik(t){return/[0-9]+$/.test(t)}i(ik,"isOverridingColor");function ak(t,e){return t.padStart(e,"0")}i(ak,"pad");function ms(t){let e=Math.min(Math.max(Math.round(t),0),255);return ak(e.toString(16),2)}i(ms,"intToHex");function sk(t){return`#${ms(t.red)}${ms(t.green)}${ms(t.blue)}`}i(sk,"rgbToHex");function lk(t){let e=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);return{red:e,green:o,blue:n}}i(lk,"hexToRGB");function ck(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(ck,"generateShade");function pk(t,e){let o=.11*e;return{red:t.red+(255-t.red)*o,green:t.green+(255-t.green)*o,blue:t.blue+(255-t.blue)*o}}i(pk,"generateTint");function uk(t){return rm(t,ck)}i(uk,"calculateShades");function mk(t){return rm(t,pk)}i(mk,"calculateTints");function rm(t,e){let o=lk(t),n=[];for(let r=1;r<9;r++)n.push(sk(e(o,r)));return n}i(rm,"calculateColors");function ds(t,e,o){let a=mk(t).reverse().concat(t),s=uk(t),l=a.concat(s),c={},u=l.length;for(let p=0;p<u;p++){let m=100+(o?u-1-p:p)*50;c[`${e}${m}`]=l[p]}return c}i(ds,"createTintsAndShades");function fs(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)&&!ik(r)){let c=rk(a);Object.assign(n,ds(c,r,s))}}return{...n,...e}}i(fs,"expandToGenerateThemeColors");var im=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),dk=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=im(o%52)+e;return im(o%52)+e},"toAlphabeticName"),fk=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),gs=i(t=>dk(fk(5381,JSON.stringify(t))>>>0),"toHash");function ys(t){let e=gk.colors,o={...e,...hk},n,r;if(t?.light){let s={colors:fs(e,t.light)};n={id:`${Ta}-light-${gs(s)}`,tokens:s}}if(t?.dark){let s={colors:fs(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Ta}-dark-${gs(s)}`,tokens:s}}return{light:n,dark:r}}i(ys,"customizedThemeTokens");function am(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>hs.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(hs.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(hs.cloneElement(e,{key:l}))}}),o}i(am,"joinList");function sm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(sm,"doesWindowPreferDarkColorScheme");function Zo(t){let{colors:e,fontFamily:o=Kc,borderRadius:n=gp,secondaryBorderRadius:r=hp}=t,[a,s]=kk(sm()?"dark":"light"),{theme:l}=S(),{dark:c,light:u}=ys(e),p=Ss({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[p.className,Sk.className],h=[p.className,yk.className];if(u){let f=Ss(u.id,u.tokens);m.push(f.className)}if(c){let f=Ss(c.id,c.tokens);h.push(f.className)}return Ck(()=>{let f=i(g=>{g.matches?s("dark"):s("light")},"switchThemeListener");return sm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",f),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",f)}},[]),{activeTheme:i(()=>{let f=m.join(" "),g=h.join(" ");return l==="auto"?a==="dark"?g:f:l==="dark"?g:f},"getActiveTheme"),mode:l==="auto"?a:l}}i(Zo,"useTheme");var gt=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 lm}from"@lingui/core";import{Alert as Tk,Button as vk}from"@rango-dev/ui";import cm from"react";function Cs(t){return cm.createElement(Tk,{action:cm.createElement(vk,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},lm.t("Activate this tab")),type:"warning",variant:"alarm",title:lm.t("Another tab is open and handles transactions.")})}i(Cs,"ActivateTabAlert");import{i18n as ks}from"@lingui/core";import{Button as wk,Divider as bk,MessageBox as xk}from"@rango-dev/ui";import Zr from"react";function Ts(t){let{open:e,onClose:o,onConfirm:n}=t;return Zr.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Zr.createElement(xk,{title:ks.t("Activate current tab"),type:"warning",description:ks.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.")},Zr.createElement(bk,{size:20}),Zr.createElement(wk,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},ks.t("Confirm"))))}i(Ts,"ActivateTabModal");import{ChevronLeftIcon as Ak}from"@rango-dev/ui";import ym from"react";import{css as Ek,darkTheme as pm,IconButton as Ik,styled as wo}from"@rango-dev/ui";var At=wo(Ik,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${pm} &`]:{backgroundColor:"$neutral"}}}),um=wo("div",{position:"absolute",background:"$secondary500",[`.${pm} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Jt=wo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),mm=wo("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"}}}}),dm=wo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),fm=wo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),gm=Ek({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),hm=wo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function vs(t){return ym.createElement(At,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},ym.createElement(Ak,{color:"black",size:16}))}i(vs,"BackButton");import{i18n as Nk}from"@lingui/core";import{Button as Bk,Typography as Wk}from"@rango-dev/ui";import ws from"react";function bs(t){return ws.createElement(Jt,null,ws.createElement(Bk,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},ws.createElement(Wk,{variant:"label",size:"medium",color:"error500"},Nk.t("Cancel"))))}i(bs,"CancelButton");import{i18n as Lk}from"@lingui/core";import{Image as Mk,Tooltip as Pk,WalletIcon as _k}from"@rango-dev/ui";import bo from"react";function xs(t){let{list:e}=yt(),o=e.filter(r=>r.state==="connected"),n=o.length?bo.createElement("div",{className:gm()},o.map(r=>bo.createElement(hm,{key:r.title},bo.createElement(Mk,{src:r.image,size:14})))):Lk.t("Connect Wallet");return bo.createElement(Pk,{container:t.container,side:"bottom",content:n},bo.createElement(At,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&bo.createElement(um,null),bo.createElement(_k,{size:18,color:"black"})))}i(xs,"WalletButton");import{i18n as Rr}from"@lingui/core";import{NotificationsIcon as Zk,Popover as Jk,SettingsIcon as Rk,Tooltip as ei,TransactionIcon as eT}from"@rango-dev/ui";import Be from"react";import{Notifications as Ok}from"@rango-dev/ui";import Uk from"react";import{useNavigate as zk}from"react-router-dom";import{create as Dk}from"zustand";import{persist as $k,subscribeWithSelector as Fk}from"zustand/middleware";var we=Ho(Dk()($k(Fk((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(c=>c.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(c=>c.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 Es(){let t=zk(),{getNotifications:e,clearNotifications:o}=we(),n=e(),r=S().blockchains(),{findToken:a}=S();return Uk.createElement(Ok,{list:n,getBlockchainImage:l=>Fc(l,r),getTokenImage:l=>a(l)?.image,onClickItem:i(l=>{t(`${F.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(Es,"NotificationContent");import{useManager as Qk}from"@rango-dev/queue-manager-react";import{InProgressIcon as Hk}from"@rango-dev/ui";import Sm from"react";var qk=i(()=>{let{manager:t}=Qk();return gt(t).map(({swap:o})=>o).find(o=>o.status==="running")?Sm.createElement(fm,null,Sm.createElement(Hk,{color:"info",size:6})):null},"InProgressTransactionBadge"),Cm=qk;import{EventSeverity as Gk}from"@rango-dev/queue-manager-rango-preset";import{Typography as Vk}from"@rango-dev/ui";import km from"react";function Tm(){let{getNotifications:t}=we(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===Gk.WARNING);return o?km.createElement(mm,{isSever:n},km.createElement(Vk,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(Tm,"NotificationsBadge");import{RefreshProgressButton as Kk}from"@rango-dev/ui";import Is,{useEffect as jk,useState as vm}from"react";var Xk=1e3,wm=60,Yk=100;function Jr({onClick:t}){let[e,o]=vm(0),[n,r]=vm(!1),a=i(c=>{document.hidden&&c&&s(c)},"handleVisibilityChange");jk(()=>{let c;return t?c=window.setInterval(()=>{o(u=>u+1),e===wm&&l()},Xk):s(c),document.addEventListener("visibilitychange",()=>a(c)),()=>{document.removeEventListener("visibilitychange",()=>a(c)),c&&clearInterval(c)}},[e,t]);let s=i(c=>{c&&clearInterval(c),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return Is.createElement(At,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},Is.createElement(dm,{onTransitionEnd:()=>r(!1),isRefetched:n},Is.createElement(Kk,{size:22,color:t?"black":"gray",progress:e/wm*Yk})))}i(Jr,"RefreshButton");function xo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=S(),l=Ye("notification",s)||r.includes("notifications");return Be.createElement(Be.Fragment,null,!r.includes("refresh")&&Be.createElement(ei,{container:a||A(),side:"top",content:Rr.t("Refresh")},Be.createElement(Jr,{onClick:e})),!l&&Be.createElement(Jk,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:A(),content:Be.createElement(Es,null)},Be.createElement("div",null,Be.createElement(ei,{container:A(),side:"top",content:Rr.t("Notifications")},Be.createElement(At,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},Be.createElement(Zk,{size:18,color:"black"}),Be.createElement(Tm,null))))),!r.includes("settings")&&Be.createElement(ei,{container:A(),side:"top",content:Rr.t("Settings")},Be.createElement(At,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},Be.createElement(Rk,{size:18,color:"black"}))),!r.includes("history")&&Be.createElement(ei,{container:A(),side:"top",content:Rr.t("History")},Be.createElement(At,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},Be.createElement(eT,{size:18,color:"black"}),Be.createElement(Cm,null))))}i(xo,"HeaderButtons");import{i18n as As}from"@lingui/core";import{Divider as xm,MessageBox as nT,RefreshIcon as rT}from"@rango-dev/ui";import Jo from"react";import{Button as tT,styled as oT}from"@rango-dev/ui";var bm=oT(tT,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Ns(t){let{open:e,onClose:o}=t;return Jo.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Jo.createElement(nT,{title:As.t("Something went wrong"),type:"error",description:As.t("Something went wrong. Please refresh the app.")},Jo.createElement(xm,{size:30}),Jo.createElement(bm,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},Jo.createElement(rT,{size:20,color:"primary"}),Jo.createElement(xm,{size:4,direction:"horizontal"}),As.t("Refresh"))))}i(Ns,"RefreshModal");function Bs(t){let e=t.target;if(e){let o=e.scrollTop,n=A();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(Bs,"onScrollContentAttachStatusToContainer");import{css as iT,styled as ti}from"@rango-dev/ui";var Em="700px",oi=iT({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Im=ti("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:Em},fixed:{height:Em}},showBanner:{true:{overflow:"visible"}}}}),Am=ti("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Nm=ti("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"}}}),Bm=ti("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function oe(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=us(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l,connectedWallets:c,config:{__UNSTABLE_OR_INTERNAL__:u}}=S(),[p,m]=Mm(!1),{config:{features:h,theme:d}}=S(),{watermark:f}=ne(),g=f==="FULL",{activeTheme:C}=Zo(d||{}),[k,y]=Mm(!1),T=Ye("connectWalletButton",h),{isActiveTab:v,tabManagerInitiated:E,showActivateTabModal:B,setShowActivateTabModal:N,activateCurrentTab:x}=ne(),w=Ue(),{manager:b}=aT(),_=gt(b).map(({swap:K})=>K).some(K=>K.status==="running"),M=i(()=>x(ho.forceClaim,_),"onActivateTab"),q=i(()=>{r.onWallet?.()},"onConnectWallet"),R=typeof r.hasBackButton>"u"||r.hasBackButton,X=Lm(null),L=Lm(null);return ni(()=>{let K=(u?.swapBoxBanner?.routes?.length??0)===0,ae=!!u?.swapBoxBanner?.routes?.some(Q=>location.pathname.endsWith(Q));y(!!u?.swapBoxBanner&&(K||ae))},[u?.swapBoxBanner?.routes?.toString(),location.pathname]),ni(()=>(Yr()&&L.current&&e(L.current),()=>{o()}),[]),ni(()=>(X.current?.addEventListener("scroll",Bs),()=>{X.current?.removeEventListener("scroll",Bs)}),[]),ni(()=>{m(l==="failed")},[l]),be.createElement(Im,{height:s,id:Fe.SWAP_BOX_ID,className:`${C()} ${oi()}`,ref:L,showBanner:k},be.createElement(lT,{prefix:R?be.createElement(vs,{onClick:()=>{w(),r.onBack?.()}}):null,title:r.title,suffix:be.createElement(be.Fragment,null,r.suffix,r.onWallet&&!T&&be.createElement(xs,{container:A(),onClick:q,isConnected:!!c?.length}),r.onCancel&&be.createElement(bs,{onClick:r.onCancel}))}),be.createElement(Am,{ref:X},n),be.createElement(Ts,{open:B,onClose:()=>N(!1),onConfirm:M}),be.createElement(Nm,null,be.createElement("div",{className:"footer__content"},E&&!v&&be.createElement("div",{className:"footer__alert"},be.createElement(Cs,{onActivateTab:M}),be.createElement(Wm,{size:10})),a),be.createElement(Wm,{size:12}),be.createElement("div",{className:`footer__logo ${g?"logo__show":"logo__hidden"}`},be.createElement(sT,null))),k&&be.createElement(Bm,null,u?.swapBoxBanner?.element),be.createElement(Ns,{open:p,onClose:()=>m(!1)}))}i(oe,"Layout");import{styled as cT}from"@rango-dev/ui";var Pm="$20 $20 $10 $20",Wn=cT("div",{padding:Pm,overflowY:"auto",flexGrow:1});import{styled as pT}from"@rango-dev/ui";var re=pT("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 Rt}from"@lingui/core";import{useState as Ws}from"react";function _m(){let[t,e]=Ws(!1),[o,n]=Ws(null),[r,a]=Ws(null),{findToken:s}=S(),l=S().customTokens(),c=i(()=>{a(null),e(!1),n(null)},"resetState");function u(m,h){switch(m){case"duplicated":return{type:m,title:Rt.t("Duplicate Token"),message:Rt.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:m,title:Rt.t("Token Already Exists"),message:Rt.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:m,title:Rt.t("Token Not Found"),message:Rt.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:h}})};case"network-error":return{type:m,title:Rt.t("Network error"),message:Rt.t("An error occurred while retrieving token data.")}}}return i(u,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:m,tokenAddress:h})=>{e(!0);try{if(l.some(k=>k.address?.toLowerCase()===h.toLowerCase())){let k=u("duplicated");n(k);return}let f=await ot().getCustomToken({blockchain:m,address:h});if(!f||!f.token||f.error){let k=u("not-found",m);n(k);return}let g=f.token;if(s({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let k=u("token-exist");n(k);return}return a({...g,warning:!0})}catch(d){if(d.code==="ERR_BAD_REQUEST"){let f=u("not-found",m);n(f);return}n(u("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:c}}i(_m,"useFetchCustomToken");var TT=gT("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${dT} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Dm(){let t=CT(),[e]=kT(),o=Ue(),n=S().blockchains(),r=e.get("blockchain")||"",a=uo(r,n),[s,l]=ST(""),{fetchCustomToken:c,token:u,loading:p,error:m,resetState:h}=_m(),d=!!a&&$o(a,s),f=!a||!s||!d,g=i(()=>{a&&c({blockchain:r,tokenAddress:s})},"getCustomToken");return ze.createElement(oe,{header:{title:Ro.t("Add Custom Token")}},ze.createElement(re,null,ze.createElement(TT,null,ze.createElement("div",null,ze.createElement(as,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:Ro.t("Select chain"),placeholder:Ro.t("Select chain")}),ze.createElement(Ls,{size:"24"}),ze.createElement(yT,{size:"large",variant:"label"},Ro.t("Enter Address")),ze.createElement(Ls,{size:10}),ze.createElement(hT,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:Ro.t("Enter token address"),size:"large",value:s,suffix:!!s&&d&&ze.createElement(fT,{color:"success",size:12}),onChange:C=>l(C.target.value)}),!d&&!!s&&ze.createElement(ze.Fragment,null,ze.createElement(Ls,{size:4}),ze.createElement(uT,{type:"error",variant:"alarm",title:"Invalid Address"}))),ze.createElement(mT,{id:"widget-add-custom-token-import-btn",disabled:f,type:"primary",variant:"contained",loading:p,size:"large",onClick:g},Ro.t("Import"))),ze.createElement(Bn,{token:u,blockchain:a??void 0,address:s,error:m??void 0,fetchCustomToken:c,onCloseErrorModal:()=>{m?.type!=="network-error"&&l("")},onImport:o,onExitErrorModal:h,onExitImportModal:h})))}i(Dm,"AddCustomTokenPage");import{i18n as ll}from"@lingui/core";import{useManager as rw}from"@rango-dev/queue-manager-react";import{Alert as iw,Button as aw,css as pl,Divider as cl,IconButton as Wf,styled as sw,Typography as lw,WalletIcon as cw}from"@rango-dev/ui";import Le,{useEffect as Wi,useLayoutEffect as pw,useRef as uw,useState as qn}from"react";import{useNavigate as mw}from"react-router-dom";import{i18n as Eo}from"@lingui/core";import{Alert as VT,BalanceErrors as KT,Button as pd,ChevronLeftIcon as jT,Divider as Us,MessageBox as XT,Typography as zs}from"@rango-dev/ui";import te,{useCallback as YT,useEffect as ud,useMemo as ZT,useState as on}from"react";import{useNavigate as JT}from"react-router-dom";import{i18n as Ds}from"@lingui/core";import{Alert as ET,ChevronDownIcon as IT,CloseIcon as AT,Divider as Hm,IconButton as qm,PasteIcon as NT,Typography as BT,WalletIcon as WT}from"@rango-dev/ui";import We,{useEffect as LT,useRef as MT}from"react";import si,{useRef as bT}from"react";import*as en from"@radix-ui/react-collapsible";import{keyframes as $m,styled as ri}from"@rango-dev/ui";var Ms=300,vT=$m({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),wT=$m({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),Fm=ri(en.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Ps=ri(en.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),ii=ri(en.Content,{overflow:"hidden",variants:{open:{true:{animation:`${vT} ${Ms}ms ease-out`},false:{animation:`${wT} ${Ms}ms ease-out`}}}}),ai=ri("div",{transition:`all ${Ms}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function li(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,c=bT(null);return si.createElement(Fm,{ref:c,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&si.createElement(Ps,{className:"collapsible_trigger",onClick:a},s),si.createElement(ii,{className:"collapsible_content",open:e},r),l==="bottom"&&si.createElement(Ps,{className:"collapsible_trigger",onClick:a},s))}i(li,"CustomCollapsible");import{darkTheme as Om,styled as _s,TextField as xT}from"@rango-dev/ui";var Um=_s("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),zm=_s(xT,{backgroundColor:"$neutral100",padding:"$15"}),Qm=_s("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Om} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${Om} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Gm(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=O(),{config:s}=S(),l=S().blockchains(),c=gr(e.name,l),u=MT(null),p=s?.defaultCustomDestinations?.[e.name],m=navigator?.userAgent.includes("Firefox"),d=n&&!!r&&e&&!$o(e,r),f=i(()=>{a("")},"handleClear"),g=i(async k=>{if(k.preventDefault(),navigator.clipboard!==void 0){let y=await navigator.clipboard.readText();a(y),u?.current?.focus()}},"handlePaste"),C=i(()=>r?We.createElement(qm,{id:"widget-custom-destination-close-icon-btn",onClick:f,variant:"ghost"},We.createElement(AT,{size:12,color:"gray"})):m?null:We.createElement(qm,{id:"widget-custom-destination-paste-icon-btn",onClick:g,variant:"ghost"},We.createElement(NT,{size:16})),"renderSuffix");return LT(()=>{!!p&&r===null&&(a(p),o(!0))},[p]),We.createElement(Um,null,We.createElement(li,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:We.createElement(Qm,null,We.createElement("div",{className:"button__content"},We.createElement(WT,{size:18,color:"info"}),We.createElement(Hm,{size:4,direction:"horizontal"}),We.createElement(BT,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Ds.t("Send to a different address"))),We.createElement(ai,{orientation:n?"up":"down"},We.createElement(IT,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},We.createElement(zm,{ref:u,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Ds.t("Enter {blockchainName} address",{blockchainName:c}),value:r||"",suffix:C(),onChange:k=>{let y=k.target.value;a(y)}})),d&&We.createElement(We.Fragment,null,We.createElement(Hm,{size:4}),We.createElement(ET,{variant:"alarm",type:"error",title:Ds.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(Gm,"CustomDestination");import{css as PT,darkTheme as $s,IconButton as _T,styled as Ft}from"@rango-dev/ui";var Vm=Ft("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Km=Ft("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),DT=Ft("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${$s} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$secondary100",[`.${$s} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$secondary100",[`.${$s} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),jm=Ft(DT,{alignSelf:"stretch",minHeight:"93px"}),Xm=Ft("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ym=Ft(_T,{position:"absolute",left:"$20"}),Zm=Ft("div",{paddingTop:"$20"}),Jm=PT({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Rm=Ft("div",{display:"flex"}),ed=Ft("div",{overflow:"visible",width:"100%"});import{i18n as ad}from"@lingui/core";import{warn as zT}from"@rango-dev/logging-core";import{Divider as QT,SelectableWallet as HT,Typography as sd,WalletState as ld}from"@rango-dev/ui";import Je,{useEffect as cd,useState as Mn}from"react";import{Image as OT,MessageBox as UT}from"@rango-dev/ui";import Ln from"react";import{keyframes as $T,styled as Fs}from"@rango-dev/ui";var td=Fs("div",{position:"relative"}),FT=$T({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),od=Fs("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${FT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),nd=Fs("div",{"& img":{borderRadius:"50%"}});import{i18n as tn}from"@lingui/core";function rd(t,e){switch(t){case"in-progress":return{type:"loading",title:tn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:tn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:tn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:tn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:tn.t("Request Rejected"),description:tn.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:e}})};default:throw new Error(`Showing information about an experimentation chain status needs to be defined first. status: ${t}`)}}i(rd,"generateMessageByStatus");function id(t){let{status:e,displayName:o,image:n}=t,r=rd(e,o),a=e=="in-progress";return Ln.createElement(UT,{type:r.type,title:r.title,description:r.description,icon:a?Ln.createElement(td,null,Ln.createElement(nd,null,Ln.createElement(OT,{src:n,size:45})),Ln.createElement(od,null)):void 0})}i(id,"ExperimentalChainStatus");var qT=7,GT=3e3;function Os(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,l=ne.use.isActiveTab(),{blockchains:c,connectedWallets:u}=S(),[p,m]=Mn(),[h,d]=Mn(null),[f,g]=Mn(!1),[C,k]=Mn(null),{suggestAndConnect:y}=ci(),{handleDisconnect:T}=Xt(),{list:v}=yt({chain:e}),[E,B]=Mn(v),N=v.length,x=a&&N-a>0,w=i(async I=>{g(!1),k("in-progress");try{await y(I.walletType,I.chain),k("completed")}catch{k("rejected")}},"addExperimentalChain");cd(()=>{B(I=>{let _=v.findIndex(M=>n(M.type,e));return x&&_>1?[v[_]].concat(v.filter((M,q)=>q!==_)):I.map(M=>v.find(q=>q.type===M.type)??M)})},[JSON.stringify(v)]);let b=document.getElementById(Fe.SWAP_BOX_ID);return cd(()=>{let I=null;return(C==="completed"||C==="rejected")&&(I=setTimeout(()=>k(null),GT)),()=>{I&&clearTimeout(I)}},[C]),Je.createElement(Je.Fragment,null,E.slice(0,a).map(I=>{let _=cp({connectedWallets:u,walletType:I.type,chain:e}),M=_?Ar(_,qT):"",q=Er(c(),e),R=!u.find(Q=>Q.walletType===I.type&&Q.chain===e),X=q&&R&&I.state===ld.CONNECTED,L=X?ad.t({id:"Add {chain} chain",values:{chain:e}}):M,K=i(async()=>{let Q=I.state===ld.DISCONNECTED,de=(I.isHub||!!I.needsNamespace)&&!M;Q?m(I):de?(await T(I.type),m(I)):X?(d({walletType:I.type,chain:e,address:_??""}),g(!0)):r({walletType:I.type,chain:e,address:_??""})},"onSelectableWalletClick"),ae=h?.chain?gr(h.chain,c()):void 0;return Je.createElement(Je.Fragment,{key:`${I.title}_${ae}`},!!h&&Je.createElement(J,{open:!!h&&f,container:b,onClose:()=>{d(null)}},Je.createElement(Va,{displayName:ae,onConfirm:()=>{w(h)}})),C&&Je.createElement(J,{open:!!C,onClose:k.bind(null,null),container:b},Je.createElement(id,{status:C,displayName:ae,image:I.image}),Je.createElement(QT,{direction:"vertical",size:32})),Je.createElement(HT,{key:I.type,description:L,onClick:K,selected:n(I.type,e),disabled:!l,...I}))}),Je.createElement(Co,{wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{m(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):zT(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),x&&Je.createElement(jm,{selected:!1,onClick:s},Je.createElement(sd,{variant:"label",size:"medium"},ad.t("Show more wallets"),Je.createElement(sd,{variant:"label",size:"medium",color:"$primary"},"\xA0+",N-(a??0)))))}i(Os,"WalletList");var RT=2;function md(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=JT(),l=S().blockchains(),{selectedQuote:c,setSelectedWallets:u,quoteWalletsConfirmed:p,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:d}=O(),{config:f,connectedWallets:g,setWalletsAsSelected:C}=S(),[k,y]=on(""),[T,v]=on([]),[E,B]=on(""),[N,x]=on(!!h),w=ZT(()=>go({filter:"all",quote:c}),[c]),b=go({filter:"required",quote:c}),I=l.find(D=>D.name===c?.swaps[c?.swaps.length-1].to.blockchain),_=i(D=>b.includes(D),"isWalletRequiredFor"),M=YT(()=>g.filter(D=>D.selected&&w.includes(D.chain)),[g,w]),[q,R]=on(M()),[X,L]=on([]),K=i((D,G)=>L(j=>j.concat({blockchain:D,walletType:G})),"addNextSelectedWallets"),ae=T.length>0,Q=i((D,G)=>!!q.find(j=>j.walletType===D&&j.chain===G&&j.selected&&(_(G)||!_(G)&&!h)),"isSelected"),de=i((D,G,j)=>{let he=!1;return D.map(ce=>{if(ce.chain===G){let De=ce.selected;return!he&&j?(he=!0,De=!0):j||(De=!1),{...ce,selected:De}}return ce})},"updateSelectableWallets"),Ie=i(D=>{x(D),D?_(I?.name??"")||R(G=>de(G,I?.name||"",!1)):(d(""),R(G=>de(G,I?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),je=i(D=>{if(k&&y(""),Q(D.walletType,D.chain))return;let j=g.find(he=>he.walletType===D.walletType&&he.chain===D.chain);j&&(n(),D.chain===I?.name&&N&&!_(I.name)&&(x(!1),d(null)),R(he=>he.filter(ce=>ce.chain!==D.chain).concat({...j,selected:!0})))},"onChange"),se=i(()=>{let D=q.filter(G=>G.selected);C(D),u(D),m(!0),o()},"onConfirmBalance"),ct=i(async()=>{v([]),B("");let D=await r?.({selectedWallets:q.filter(j=>j.selected),customDestination:h}),G=D.warnings;G?.balance?.messages&&v(G.balance.messages),D.error&&B(mu(D.error)),!D.error&&!G?.balance?.messages.length?se():v(G?.balance?.messages??[])},"onConfirmWallets");ud(()=>{R(D=>{let G=[];return D.forEach(j=>{!g.some(ce=>ce.chain===j.chain&&ce.walletType===j.walletType&&ce.address===j.address)||G.push(j)}),G=G.concat(g.filter(j=>!!!G.find(ce=>ce.chain===j.chain)&&j.selected&&w.includes(j.chain))),G})},[g,w]),ud(()=>{let D=[];X.length>0&&(X.forEach(G=>{let j=g.find(he=>he.chain===G.blockchain&&he.walletType===G.walletType);j?je(j):D.push(G)}),L(D))},[g,X]);let V=document.getElementById(Fe.SWAP_BOX_ID);return te.createElement(J,{open:e,onClose:()=>{p||s("../",{replace:!0}),o()},dismissible:!k,container:V,...!k&&{styles:{container:{height:"100%"}},footer:te.createElement(Rm,null,te.createElement(pd,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:zu(a,N,h,c,q,I),onClick:ct,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Eo.t("Confirm")))},...k&&{styles:{container:{height:"100%",padding:"$0"}},header:te.createElement(Xm,null,te.createElement(Ym,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},te.createElement(jT,{size:16})),te.createElement(zs,{variant:"headline",size:"small"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:pt(k,l)}})))},anchor:"center"},te.createElement(J,{open:ae,onClose:v.bind(null,[]),container:V},te.createElement(XT,{title:Eo.t("Insufficient account balance"),type:"error",description:te.createElement(KT,{messages:T??[]})},te.createElement(pd,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:se},Eo.t("Proceed anyway")))),k&&te.createElement(Zm,null,te.createElement("div",{className:Jm()},te.createElement(Os,{chain:k,quoteChains:w,isSelected:Q,selectWallet:je,onShowMore:()=>y(k),onConnect:D=>{K(k,D)}}))),!k&&te.createElement(te.Fragment,null,E&&te.createElement(te.Fragment,null,te.createElement(VT,{variant:"alarm",type:"error",title:Eo.t(E)}),te.createElement(Us,{size:12})),te.createElement(ed,null,w.map((D,G)=>{let j=l.find(Xe=>Xe.name===D),he=`wallet-${G}`,ce=G===w.length-1,De=ce&&I&&f?.customDestination!==!1;return te.createElement("div",{key:he},te.createElement(Vm,null,te.createElement(zs,{variant:"title",size:"xmedium"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:j?.shortName}})),te.createElement(zs,{variant:"label",color:"$neutral700",size:"medium"},Eo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:j?.shortName}}))),te.createElement(Us,{size:24}),te.createElement(Km,null,te.createElement(Os,{chain:D,quoteChains:w,isSelected:Q,selectWallet:je,limit:RT,onShowMore:()=>y(j?.name??""),onConnect:Xe=>{K(D,Xe)}})),!ce&&te.createElement(Us,{size:32}),De&&te.createElement(Gm,{blockchain:I,open:N,handleOpenChange:Ie}))}))))}i(md,"ConfirmWalletsModal");import{i18n as Sv}from"@lingui/core";import{Alert as Cv,Button as kv,InfoIcon as Tv}from"@rango-dev/ui";import rt from"react";import{Alert as ov,Button as nv,Divider as qs,NoRouteIcon as rv,RefreshIcon as iv,Typography as Cd}from"@rango-dev/ui";import nt from"react";import{i18n as dd}from"@lingui/core";var ev=24,tv=60;function fd(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ee().genericServerError,action:{onClick:n,title:dd.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ee().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:dd.t("Reset")}},description:ee().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ee().noResultError.description}}i(fd,"makeInfo");var Qs=(o=>(o[o.small=ev]="small",o[o.large=tv]="large",o))(Qs||{}),Hs=(o=>(o.small="small",o.large="medium",o))(Hs||{});import{styled as pi}from"@rango-dev/ui";var gd=pi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),hd=pi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),yd=pi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Sd=pi("div",{padding:"$6 $0"});function Pn(t){let{fetch:e,error:o,size:n="small"}=t,r=S().getDisabledLiquiditySources(),a=S().toggleAllLiquiditySources,s=S().swappers(),l=fd(o,r,()=>a(s,!0),e);return nt.createElement(gd,null,nt.createElement(rv,{size:Qs[n],color:"gray"}),nt.createElement(qs,{size:4}),nt.createElement(Cd,{variant:"title",size:Hs[n]},ee().noResultError.title),n==="large"&&nt.createElement(qs,{size:4}),!!l.description&&nt.createElement(hd,{size:n},nt.createElement(Cd,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),nt.createElement(qs,{size:n==="large"?"24":"4"}),!!l.alert&&nt.createElement(yd,{size:n},nt.createElement(ov,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&nt.createElement(nv,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:nt.createElement(Sd,null,nt.createElement(iv,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Pn,"NoResult");import{i18n as _n}from"@lingui/core";import{Button as sv,Divider as lv,MessageBox as cv,Typography as pv,WarningIcon as uv}from"@rango-dev/ui";import Ot from"react";import{Typography as wd}from"@rango-dev/ui";import Vs from"react";import{darkTheme as av,styled as ui}from"@rango-dev/ui";var kd=ui("div",{width:"100%"}),Gs=ui("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Td=ui("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${av} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),vd=ui("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function bd(t){let{title:e,value:o,valueColor:n}=t;return Vs.createElement(Td,null,Vs.createElement(wd,{size:"medium",variant:"label",className:"_title"},e),Vs.createElement(wd,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(bd,"QuoteErrorsModalItem");function xd(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:_n.t("Swapping"),value:P(r.inputUsdValue,4,4)},{title:_n.t("Gas cost"),value:P(r.totalFee,2,2)},{title:_n.t("Receiving"),value:P(r.outputUsdValue,4,4)},{title:_n.t("Price impact"),value:P(r.priceImpact,2,2),valueColor:`${s}500`}];return Ot.createElement(J,{footer:Ot.createElement(sv,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ot.createElement(uv,null),fullWidth:!0,disabled:a,onClick:n},ee().highValueLossError.confirmMessage),open:e,onClose:o,container:A()},Ot.createElement(cv,{type:s,title:ee().highValueLossError.impactTitle,description:ee().highValueLossError.description}),Ot.createElement(Gs,null,Ot.createElement(lv,{size:"4"}),Ot.createElement(pv,{size:"small",variant:"title"},_n.t("Details")),Ot.createElement(Gs,null,l.map((c,u)=>Ot.createElement(bd,{key:u,...c})))))}i(xd,"HighValueLossWarningModal");import{i18n as mi}from"@lingui/core";function Ed(t,e){let o={alertType:"warning",title:"",action:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=mi.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o;if(t){switch(t.type){case 0:{$t(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ee().highValueLossError.title;break}case 4:{o.title=mi.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=ee().unknownPriceError.title;break}case 2:{o.title=mi.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-settings";break}case 3:{o.title=mi.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Ed,"makeAlerts");import{i18n as nn}from"@lingui/core";import{Button as Id,Divider as Ad,MessageBox as mv,Typography as dv}from"@rango-dev/ui";import Io from"react";import{useNavigate as fv}from"react-router-dom";function Nd(t){let{customSlippage:e,slippage:o}=S(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,c=fv(),u=e??o;return Io.createElement(J,{anchor:"bottom",open:n,prefix:Io.createElement(Id,{size:"small",id:"widget-slippage-warning-modal-change-settings-btn",variant:"ghost",onClick:()=>c("../"+F.settings)},Io.createElement(dv,{variant:"label",size:"medium",color:"$neutral900"},nn.t("Change settings"))),container:A(),onClose:r},Io.createElement(mv,{type:"warning",title:s.type===3?nn.t("High slippage"):nn.t("Low slippage"),description:s.type===3?nn.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:u}}):nn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:s.minRequiredSlippage}})},Io.createElement(Ad,{size:18}),Io.createElement(Ad,{size:32}),Io.createElement(Id,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:l,onClick:a},nn.t("Confirm anyway"))))}i(Nd,"SlippageWarningModal");import{Button as gv,MessageBox as hv,WarningIcon as yv}from"@rango-dev/ui";import di from"react";function Bd(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return di.createElement(J,{footer:di.createElement(gv,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:di.createElement(yv,null),fullWidth:!0,disabled:r,onClick:n},ee().unknownPriceError.confirmMessage),open:e,onClose:o,container:A()},di.createElement(hv,{type:"warning",title:ee().unknownPriceError.impactTitle,description:ee().unknownPriceError.description}))}i(Bd,"UnknownPriceWarningModal");function Dn(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,refetchQuote:s,onOpenWarningModal:l,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:p}=t,m={confirmationDisabled:a,open:r,onClose:c,onConfirm:u},h=o?.type===0||o?.type===1,d=Ed(e,o?.type===3||o?.type===4?o:null);return d&&!n&&(d.action=null),rt.createElement(rt.Fragment,null,h&&rt.createElement(Pn,{error:o,fetch:s}),!!d&&rt.createElement(kd,null,rt.createElement(Cv,{title:d.title,type:d.alertType,variant:"alarm",...d.action==="show-info"&&{action:rt.createElement(vd,{onClick:l},rt.createElement(Tv,{size:12,color:"gray"}))},...d.action==="change-settings"&&{action:rt.createElement(kv,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:d.alertType,onClick:p},Sv.t("Change"))}})),e&&rt.createElement(rt.Fragment,null,e.type===0&&rt.createElement(xd,{...m,warning:e}),(e.type===3||e.type===2)&&rt.createElement(Nd,{...m,warning:e}),e.type===1&&rt.createElement(Bd,{...m,warning:e})))}i(Dn,"QuoteWarningsAndErrors");import Jv from"bignumber.js";import Ii from"react";import{i18n as Ao}from"@lingui/core";import{Alert as Ov,Divider as an,FullExpandedQuote as Uv,InfoIcon as zv,NumericTooltip as cf,QuoteTag as Qv,StepDetails as Hv,TokenAmount as qv,Typography as sn}from"@rango-dev/ui";import tl from"bignumber.js";import U,{useRef as Gv,useState as Vv}from"react";import{styled as Ks}from"@rango-dev/ui";var js=Ks("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Wd=Ks("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Ld=Ks("div",{width:"100%",display:"flex"});import*as fi from"@radix-ui/react-collapsible";import{Button as vv,css as $n,darkTheme as xe,Image as Md,styled as He,Typography as wv}from"@rango-dev/ui";var bv=300,Pd=He(fi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${xe} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),_d=$n({padding:"$10 $15"}),Dd=He(vv,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${xe} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${xe} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${xe} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),$d=He("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",[`.${xe} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${xe} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${xe} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${xe} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${xe} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${xe} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${xe} &`]:{backgroundColor:"$neutral400"}}}}]}),Fd=$n({width:"100%",padding:"$15 $15 $10 $15"}),Od=$n({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),rn=$n({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),Ud=$n({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${xe} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),zd=He(fi.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:{[`& ${Md}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Md}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${xe} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Qd=He("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"}}}}),Hd=He(ii,{width:"100%",background:"inherit"}),Xs=He("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${bv}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),PO=He("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),qd=He("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${xe} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Gd=He("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),Ys=He(wv,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Vd=He("div",{display:"flex",flexWrap:"wrap"}),Zs=He("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"}}}}),Kd=He("div",{display:"flex"}),gi=He("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${xe} &`]:{borderTopColor:"$neutral800"}});import{i18n as Nt}from"@lingui/core";import{ChevronDownIcon as Ev,CloseIcon as Iv,Divider as Si,IconButton as Av,NumericTooltip as Nv,QuoteCost as Bv,Typography as kt}from"@rango-dev/ui";import Z,{useState as Zd}from"react";import{css as xv,styled as hi}from"@rango-dev/ui";var yi=hi("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Js=hi("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),jd=hi("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Xd=hi("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Yd=xv({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Wv=i(t=>t.fee.isZero()?null:Z.createElement(yi,null,Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},t.label),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(t.fee,4,4))),"NonPayableFee");function Rs(t){let[e,o]=Zd(!1),[n,r]=Zd(!1),{steps:a,quote:s,fee:l,time:c,feeWarning:u,timeWarning:p,showModalFee:m,fullExpandedMode:h=!1}=t,d=s?.swaps??[],f=h?fo():A(),g=Mu(d);return Z.createElement(Z.Fragment,null,Z.createElement(Bv,{onClickFee:m?C=>{C.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:u,timeWarning:p,time:c,steps:a,tooltipGas:m?Nt.t("View more info"):void 0,tooltipContainer:f}),Z.createElement(J,{container:f,open:e,anchor:h?"center":"bottom",styles:{container:{maxWidth:h?"484px":"unset"}},header:Z.createElement(Xd,{style:{textAlign:h?"left":"center"}},Z.createElement(kt,{variant:"title",size:"medium"},Nt.t("Gas & Fee Explanation")),Z.createElement(Av,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},Z.createElement(Iv,{color:"gray",size:14}))),onClose:()=>{o(!1)}},Z.createElement(jd,null,Z.createElement(kt,{variant:"title",size:"small"},Nt.t("Details")),Z.createElement(Si,{size:10}),Object.entries(g.payable).flatMap(([C,k])=>k.map((y,T)=>{let v=`payable-fee-${T}`,E=Ra(y);return Z.createElement(yi,{key:v},Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},ja(C,Nt.t)),Z.createElement(Nv,{content:y.amount,container:f},Z.createElement(kt,{variant:"label",size:"medium"},P(y.amount,2,2)," ",y.asset.symbol," ($",P(E,4,4),")")))})),Z.createElement(yi,{className:"total_payable_fee"},Z.createElement(kt,{variant:"label",size:"medium"},Nt.t("Total Payable Fee")),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(l,4,4))),Z.createElement(Js,null),Object.keys(g.nonePayable).length&&Z.createElement(li,{triggerAnchor:"bottom",onClickTrigger:()=>r(C=>!C),trigger:Z.createElement("div",{className:Yd()},Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},n?Nt.t("Hide non-payable fees"):Nt.t("Show non-payable fees")),Z.createElement(Si,{size:4,direction:"horizontal"}),Z.createElement(ai,{orientation:n?"up":"down"},Z.createElement(Ev,{size:12,color:"gray"}))),open:n},Z.createElement(kt,{size:"small",variant:"title"},Nt.t("Description")),Z.createElement(Si,{size:4}),Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},Nt.t(`The following fees are considered in the transaction output and
2
+ you won\u2019t need to pay extra gas for them.`)),Z.createElement(Si,{size:10}),Object.entries(g.nonePayable).map(([C,k],y)=>{let T=Lu(k),v=ja(C,Nt.t),E=`non-payable-fee-${y}`;return Z.createElement(Wv,{key:E,fee:T,label:v})}),Z.createElement(Js,null)))))}i(Rs,"QuoteCostDetails");import{i18n as ef}from"@lingui/core";import{TokenAmount as tf}from"@rango-dev/ui";import Ci from"react";import{css as Lv,styled as Mv}from"@rango-dev/ui";var Jd=Mv("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Rd=Lv({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function Fn(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Ci.createElement(Jd,null,Ci.createElement(tf,{direction:"horizontal",label:ef.t("Swap input"),type:"input",tooltipContainer:A(),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}}),Ci.createElement("div",{className:Rd()}),Ci.createElement(tf,{direction:"horizontal",tooltipContainer:A(),label:ef.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(Fn,"QuoteSummary");import{i18n as sf}from"@lingui/core";import{ChevronDownIcon as Dv,ChevronRightIcon as $v,Divider as el,Image as Fv,Tooltip as bi,Typography as Ti}from"@rango-dev/ui";import z from"react";import{useLayoutEffect as Pv,useState as On}from"react";var of=480,nf=768,rf=1024,af=1200,_v=i(()=>{let[t,e]=On(!1),[o,n]=On(!1),[r,a]=On(!1),[s,l]=On(!1),[c,u]=On(!1),p=i(()=>{e(window.innerWidth<=of),n(window.innerWidth>of&&window.innerWidth<=nf),a(window.innerWidth>nf&&window.innerWidth<=rf),l(window.innerWidth>rf&&window.innerWidth<=af),u(window.innerWidth>af)},"handleResize");return Pv(()=>(p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:c}},"useScreenDetect"),ki=_v;var vi=4,wi=6,Un=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||A();return z.createElement(bi,{container:l,side:"bottom",sideOffset:4,open:r,content:e},z.createElement(Qd,{className:n,state:a},z.createElement(Fv,{src:o,size:16})))},"ImageComponent");function lf(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,c=l||A(),u=r.length,p=vu(r),{isTablet:m,isMobile:h}=ki();return z.createElement(zd,{listItem:s==="list-item",ref:d=>e.current=d,selected:o,onClick:d=>{d.stopPropagation(),n(f=>!f)}},z.createElement("div",{className:rn()},z.createElement(Ti,{variant:"body",size:"xsmall"},sf.t("Via:")),z.createElement(el,{direction:"horizontal",size:4}),r.map((d,f)=>{let g=`item-${f}`,C=z.createElement(Xs,null,z.createElement($v,{size:12,color:"black"}));return h||m?z.createElement(z.Fragment,{key:g},z.createElement(Un,{content:d.swapper.displayName,src:d.swapper.image??"",state:d.state,container:l}),f!==u-1&&z.createElement(z.Fragment,null,C)):z.createElement(z.Fragment,{key:g},u<=vi||u>vi&&f<vi-1?z.createElement(z.Fragment,null,z.createElement(Un,{content:d.swapper.displayName,src:d.swapper.image??"",state:d.state,container:l}),f!==u-1&&z.createElement(z.Fragment,null,C)):f===vi-1&&z.createElement(bi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},C,r.map((k,y)=>{let T=`image-${y}`;return y>=f&&z.createElement(z.Fragment,{key:T},z.createElement(Un,{content:k.swapper.displayName,src:k.swapper.image??"",state:k.state,open:!1}),y!==u-1&&z.createElement(z.Fragment,null,C))}))},z.createElement(Zs,{state:r.find((k,y)=>y>=f&&(k.state==="error"||k.state==="warning"))?.state},z.createElement(Ti,{size:"xsmall",variant:"body"},"+",u-f))))})),z.createElement("div",{className:rn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:rn()},z.createElement(Ti,{variant:"body",size:"xsmall"},sf.t("Chains:")),z.createElement(el,{direction:"horizontal",size:4}),p.map((d,f)=>z.createElement(z.Fragment,{key:d.displayName},p.length<=wi||p.length>wi&&f<wi-1?z.createElement(bi,{container:c,side:"bottom",content:d.displayName,sideOffset:4},z.createElement(Un,{content:"",src:d.image??"",open:!1,className:f!==0?"blockchainImage":""})):f===wi-1&&z.createElement(bi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},p.map((g,C)=>C>=f&&z.createElement(Un,{key:g.displayName,content:"",src:g.image??"",open:!1,className:C>f?"blockchainImage":"",container:l})))},z.createElement(Zs,{className:"blockchainImage"},z.createElement(Ti,{size:"xsmall",variant:"body"},"+",p.length-f))))),z.createElement(el,{direction:"horizontal",size:32}))),z.createElement(Xs,{orientation:a?"up":"down"},z.createElement(Dv,{size:12,color:"black"}))))}i(lf,"QuoteTrigger");function ol(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:c=!0,showModalFee:u=!0,onClickAllRoutes:p,fullExpandedMode:m=!1,container:h}=t,d=S().blockchains(),{findToken:f}=S(),g=S().swappers(),{customSlippage:C,slippage:k}=S(),y=C||k,[T,v]=Vv(t.expanded),E=Gv(null),B=P(o.value,6,6),N=P(n.value,6,6),x=n.usdValue?P(n.usdValue,4,4):"",w=Dt(o.usdValue,n.usdValue??null),b=P(w,2,2),I=$t(w??0),_=i((se,ct)=>se.map((V,D)=>{let G,j=r?.type===3&&r.swap.swapperId===V.swapperId,he=r?.type===4&&r.recommendedSlippages?.has(D),ce=a?.type===2&&a.recommendedSlippages?.has(D),De=j||he,Xe=ce;De?G="error":Xe&&(G="warning");let Te=De?Ao.t("Slippage Error"):Ao.t("Slippage Warning");return j&&(Te=Ao.t("Bridge Limit Error")),{swapper:{displayName:mn(V.swapperId,g)??"",image:V.swapperLogo},from:{token:{displayName:V.from.symbol,image:V.from.logo},chain:{displayName:pt(V.from.blockchain,d)??"",image:V.from.blockchainLogo},price:{value:D===0&&!ct?P(o.value,6,6):P(V.fromAmount,6,6),usdValue:P((V.from.usdPrice??0)*parseFloat(V.fromAmount),4,4),realValue:D===0?o.value:V.fromAmount,realUsdValue:new tl(V.from.usdPrice??0).multipliedBy(V.fromAmount).toString()}},to:{token:{displayName:V.to.symbol,image:V.to.logo},chain:{displayName:pt(V.to.blockchain,d)||"",image:V.to.blockchainLogo},price:{value:P(V.toAmount,6,6),usdValue:P((V.to.usdPrice??0)*parseFloat(V.toAmount),4,4),realValue:V.toAmount,realUsdValue:new tl(V.to.usdPrice??0).multipliedBy(V.toAmount).toString()}},state:G,alerts:De||Xe?U.createElement(Wd,{dense:m},U.createElement(Ov,{variant:"alarm",type:De?"error":"warning",title:Te,footer:U.createElement(Ld,null,j&&U.createElement("div",null,U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(an,{direction:"vertical",size:2}),U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {amount} {symbol}",values:{amount:P(V.fromAmount,6,6),symbol:V?.from.symbol}}))),(he||ce)&&!j&&U.createElement("div",null,U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Minimum required slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(D)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(D)}}})),U.createElement(an,{direction:"vertical",size:2}),U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:fn(V.estimatedTimeInSeconds),fee:P(Ja(V,f),2,2),internalSwaps:V.internalSwaps?_(V.internalSwaps):void 0}}),"getQuoteSteps"),M=_(e?.swaps??[]),q=M.length,R=h||A(),X=bu(t.quote.tags||[]),L=!!p,K=wr(e?.swaps),ae=fn(K),Q=qr(e?.swaps??[],f),de=P(Q,2,2),Ie=Q.gte(new tl(fu)),je=K/hu>=gu;return m?U.createElement(Uv,{selected:l,fee:de,time:ae,tooltipContainer:fo(),steps:M,tags:X,quoteCost:U.createElement(Rs,{quote:e,fullExpandedMode:!0,time:ae,fee:de,feeWarning:Ie,timeWarning:je,showModalFee:u,steps:q}),percentageChange:b,warningLevel:I,outputPrice:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement($d,{selected:l,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:Fd()},!c&&X.length?U.createElement(U.Fragment,null,U.createElement(Kd,null,X.map((se,ct)=>{let V=`${se.value}_${ct}`;return U.createElement(U.Fragment,{key:V},U.createElement(Qv,{label:se.label,value:se.value}),U.createElement(an,{size:4,direction:"horizontal"}))})),U.createElement(gi,null),!L&&U.createElement(an,{size:4})):null,U.createElement("div",{id:"portal-root",className:Od()},U.createElement(Rs,{quote:e,time:ae,fee:de,feeWarning:Ie,timeWarning:je,showModalFee:u,steps:q}),L&&U.createElement(Dd,{onClick:se=>{se.stopPropagation(),p()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(sn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Ao.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:Ud()},U.createElement(Gd,null,U.createElement(zv,{size:12,color:"gray"})),U.createElement(Vd,null,U.createElement(Ys,{size:"small",variant:"body"},`${B} ${M[0].from.token.displayName} = `),U.createElement(cf,{content:n.value,container:R,open:n.value?void 0:!1},U.createElement(Ys,{size:"small",variant:"body"},"\xA0",`${N} ${M[M.length-1].to.token.displayName}`))),U.createElement(cf,{content:n.usdValue,container:R},U.createElement(an,{size:2,direction:"horizontal"}),U.createElement(sn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${x})`))),s==="list-item"&&U.createElement(qv,{tooltipContainer:R,type:"output",direction:"vertical",price:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:M[q-1].to.token.displayName,image:M[q-1].to.token.image},chain:{image:M[q-1].to.chain.image},percentageChange:b,warningLevel:I}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement(Fn,{from:M[0].from,to:M[q-1].to,percentageChange:b,warningLevel:I}),U.createElement(an,{size:4}))),U.createElement(Pd,{selected:l,listItem:s==="list-item",open:T,className:"quote_container",onOpenChange:v},U.createElement(lf,{type:s,quoteRef:E,selected:l,setExpanded:v,container:R,expanded:T,steps:M}),U.createElement(Hd,{open:T},U.createElement(qd,null),U.createElement("div",{className:_d()},M.map((se,ct)=>{let V=`item-${ct}`;return U.createElement(Hv,{type:"quote-details",key:V,tooltipContainer:R,step:se,hasSeparator:ct!==M.length-1,state:se.state})})))))}i(ol,"Quote");import{Divider as Yv,Skeleton as Zv}from"@rango-dev/ui";import zt from"react";import{darkTheme as Kv,styled as xi}from"@rango-dev/ui";var pf=xi("div",{$$color:"$colors$neutral100",[`.${Kv} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),uf=xi("div",{paddingTop:"$2"}),mf=xi("div",{paddingLeft:"$8"}),df=xi("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as wf,Divider as Tt,Skeleton as it}from"@rango-dev/ui";import H from"react";import{css as jv,styled as Ut}from"@rango-dev/ui";var nl=Ut("div",{display:"flex"}),ff=Ut("div",{padding:"$10 $0 $20"}),gf=Ut("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),hf=Ut("div",{display:"flex",justifyContent:"start",alignItems:"center"}),yf=Ut("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Sf=Ut("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Cf=Ut("div",{width:"65%",display:"flex",justifyContent:"start"}),kf=Ut("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Tf=Ut("div",{padding:"$15 $0 $15 $0"}),vf=jv({display:"flex",justifyContent:"space-between",alignItems:"center"});function zn(t){let{type:e,tagHidden:o=!0}=t,n=H.createElement(yf,null,H.createElement(Cf,null,H.createElement(wf,{loading:!0,size:"medium"}),H.createElement(Tt,{size:8,direction:"horizontal"}),H.createElement(kf,null,H.createElement(it,{height:10,width:60,variant:"rounded"}),H.createElement(Tt,{size:4}),H.createElement(it,{height:15,variant:"rounded"}))),H.createElement(it,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return H.createElement("div",null,!o&&H.createElement(H.Fragment,null,H.createElement(nl,null,H.createElement(it,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:65,height:20,variant:"rounded"})),H.createElement(gi,null),!r&&H.createElement(Tt,{size:4})),H.createElement("div",{className:vf()},H.createElement(nl,null,H.createElement(it,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:60,height:10,variant:"rounded"})),r&&H.createElement(it,{width:85,height:24,variant:"rounded"})),e==="basic"&&H.createElement(ff,null,H.createElement(it,{height:15,width:148,variant:"rounded"})),e==="list-item"&&H.createElement(gf,null,H.createElement(hf,null,H.createElement(wf,{loading:!0,size:"medium"}),H.createElement(Tt,{direction:"horizontal",size:4}),H.createElement(it,{height:15,width:150,variant:"rounded"})),H.createElement(Tt,{size:10}),H.createElement(it,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&H.createElement(H.Fragment,null,H.createElement(Tt,{size:4}),H.createElement(Tf,null,n,H.createElement(Sf,null),n),H.createElement(Tt,{size:12})))}i(zn,"QuoteSummarySkeleton");import{ChainToken as Af,Divider as il,NextIcon as Xv,Skeleton as Ei}from"@rango-dev/ui";import Ee from"react";import{styled as Qn}from"@rango-dev/ui";var bf=Qn("div",{display:"flex",alignItems:"start"}),xf=Qn("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),rl=Qn("div",{display:"flex",alignItems:"center",flexGrow:1}),Ef=Qn("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),If=Qn("div",{display:"flex",alignItems:"center"});function Bt(t){let{separator:e=!0}=t;return Ee.createElement(Ee.Fragment,null,Ee.createElement(If,null,Ee.createElement(Ei,{height:22,width:22,variant:"circular"}),Ee.createElement(il,{direction:"horizontal",size:8}),Ee.createElement(Ei,{height:15,width:148,variant:"rounded"})),Ee.createElement(bf,null,Ee.createElement(df,{hideSeparator:!e}),Ee.createElement(xf,{extraSpace:e},Ee.createElement(rl,null,Ee.createElement(Af,{size:"small",loading:!0}),Ee.createElement(il,{direction:"horizontal",size:8}),Ee.createElement(Ei,{height:12,variant:"rounded"})),Ee.createElement(Ef,null,Ee.createElement(Xv,{color:"gray",size:16})),Ee.createElement(rl,null,Ee.createElement(Af,{size:"small",loading:!0}),Ee.createElement(il,{direction:"horizontal",size:8}),Ee.createElement(Ei,{height:12,variant:"rounded"})))))}i(Bt,"StepSkeleton");function Hn(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return zt.createElement(pf,{expanded:o,rounded:e!=="basic"},zt.createElement(zn,{type:e,tagHidden:n}),zt.createElement(uf,null,zt.createElement(Zv,{height:15,variant:"rounded"})),o&&zt.createElement(mf,null,zt.createElement(Yv,{size:24}),zt.createElement(Bt,null),zt.createElement(Bt,null),zt.createElement(Bt,{separator:!1})))}i(Hn,"QuoteSkeleton");function No(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:c,showModalFee:u,selected:p,onClickAllRoutes:m,fullExpandedMode:h=!1,container:d}=t,{inputAmount:f,inputUsdValue:g}=O(),C=e?.outputAmount?new Jv(e?.outputAmount):null,k=e?ft(e):null,T=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?Ii.createElement(js,null,Ii.createElement(Hn,{tagHidden:l,type:o,expanded:s})):T?Ii.createElement(js,{onClick:()=>c?.(e)},Ii.createElement(ol,{quote:e,error:r,container:d,showModalFee:u,warning:a,tagHidden:l,selected:p,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:f,usdValue:g?.toString()??""},output:{value:C?.toString()??"",usdValue:k?.toString()??""}})):null}i(No,"QuoteInfo");import{calculatePendingSwap as ow}from"@rango-dev/queue-manager-rango-preset";import{useEffect as nw}from"react";import{useRef as Rv,useState as ew}from"react";var tw=2e3;function Ai({request:t}){let[e,o]=ew(!1),n=Rv(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(c=>setTimeout(c,tw)),await s(l,!1)),"retryFetch"),s=i(async(l,c=!1)=>{r(),n.current=new AbortController,o(!0);try{let u=await t(l,{signal:n.current.signal});return n.current=null,u}catch(u){if(c)return await a(l);throw u}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(Ai,"useFetch");function Nf(){let{fetch:t,loading:e,cancelFetch:o}=Ai({request:async(n,r)=>await ot().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Nf,"useFetchConfirmQuote");function Ni(t){if(!t.swaps)throw new Error(ee().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=al(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(Ni,"throwErrorIfResponseIsNotValid");function al(t){if(Nu(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Bu(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=Pu(t);if(o){let n=Gr(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(al,"getQuoteError");function Bf(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,l={quote:null,balance:null},c=Ko({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});c&&(l.quote=c);let u=$u(e,r,n.blockchains);return u.length===0||(l.balance={messages:u}),l}i(Bf,"generateWarnings");function Bi(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:t?.code==="ERR_BAD_REQUEST"?{swap:null,error:{type:0,diagnosisMessage:t.response.data.error},warnings:null}:{swap:null,error:{type:1},warnings:null}}i(Bi,"handleQuoteErrors");function sl(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:l}=O(),{slippage:c,customSlippage:u}=S(),p=S().getDisabledLiquiditySources(),m=S().blockchains(),h=S().tokens(),{findToken:d}=S(),f=u||c,{fetch:g,cancelFetch:C,loading:k}=Nf();return nw(()=>C,[]),{loading:k,fetch:i(async T=>{let v=T.selectedWallets,E=T?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let B=v.reduce((x,w)=>(x[w.chain]=w.address,x),{}),N={requestId:a?.requestId||"",selectedWallets:B,destination:E||void 0};try{return await g(N,!0).then(x=>{let{result:w}=x;if(!w)throw new Error("Error fetching updated route");Ni({diagnosisMessages:w.diagnosisMessages,requestId:w.requestId,swaps:w.result?.swaps});let b={outputAmount:w.result?.outputAmount,requestId:w.requestId,resultType:w.result?.resultType,swaps:w.result?.swaps||[],validationStatus:w.validationStatus,requestAmount:w.requestAmount};r(b);let I={slippage:f.toString(),disabledSwappersGroups:p},_=Bf({previousQuote:a??void 0,currentQuote:b,meta:{blockchains:m},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:d});l();let M=!!_.balance,q=ow(o.toString(),w,Du(v),I,!M,{blockchains:m,tokens:h});return{quote:b,swap:q,error:null,warnings:_}})}catch(x){return Bi(x)}},"fetch"),cancelFetch:C}}i(sl,"useConfirmSwap");var dw=sw("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Wf}`]:{width:"$48",height:"$48"}}),fw=pl({flexGrow:1,paddingRight:"$10"}),gw=pl({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),hw=pl({display:"flex",justifyContent:"space-between",alignItems:"center"});function Lf(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=O(),s=mw(),[l,c]=qn(""),u=!n,[p,m]=qn(!1),[h,d]=qn(!1),{isActiveTab:f}=ne(),g=S().getDisabledLiquiditySources(),C=uw(g),{manager:k}=rw(),{fetch:y,loading:T,cancelFetch:v}=sl(),[E,B]=qn({swap:null,error:null,warnings:null}),[N,x]=qn(!1),w=i(async({selectedWallets:L,customDestination:K})=>{let ae=await y?.({selectedWallets:L,customDestination:K});return B(ae),ae},"onConfirmSwap"),b=i(async()=>{if(E.swap&&n)try{await k?.create("swap",{swapDetails:E.swap},{id:E.swap.requestId});let L=`../${F.swaps}/${E.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){c("Error: "+L?.message)}},"addNewSwap"),I=i(async()=>{d(!0),await b(),d(!1)},"onConfirm"),_=i(async()=>{E.warnings?.quote&&Tu(E.warnings.quote)&&!a?x(!0):await I()},"onStartConfirmSwap"),M=i(async()=>{B({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(L=>{B(L)}).catch(L=>console.error(L))},"onRefresh");Wi(()=>{!!C.current.length&&!g.length&&M(),C.current=g},[g.length]),Wi(()=>{u&&v()},[u]),Wi(()=>{u&&m(u)},[u]),Wi(()=>{u||y({selectedWallets:o,customDestination:r}).then(L=>B(L)).catch(L=>console.error(L))},[]),pw(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=E.warnings?.quote??null,R=E.error,X=[];if(l&&X.push(Le.createElement(iw,{type:"error",variant:"alarm",title:l})),q||R){let L=`../${F.settings}`;X.push(Le.createElement(Dn,{warning:q,error:R,couldChangeSettings:!1,refetchQuote:M,showWarningModal:N,confirmationDisabled:!f,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:async()=>{x(!1),await b()},onChangeSettings:()=>s(L)}))}return Le.createElement(oe,{header:{title:ll.t("Confirm Swap"),onWallet:()=>{let L=`../${F.wallets}`;s(L)}},footer:Le.createElement(dw,null,Le.createElement("div",{className:fw()},Le.createElement(aw,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:T||h,disabled:!!E.error||!f,onClick:_},ll.t("Start Swap"))),Le.createElement(Wf,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:T||h,disabled:!f,onClick:m.bind(null,!0)},Le.createElement(cw,{size:24})))},p&&Le.createElement(md,{open:p,onClose:()=>m(!1),onCancel:v,loading:T,onCheckBalance:w}),Le.createElement(re,null,Le.createElement("div",{className:hw()},Le.createElement(lw,{variant:"title",size:"small"},ll.t("You get")),Le.createElement("div",{className:gw()},Le.createElement(Jr,{onClick:!T&&!p&&!N?M:void 0}))),Le.createElement(cl,{size:"12"}),am(X.map((L,K)=>({element:L,key:`alert-${K}`})),Le.createElement(cl,{size:10})),X.length>0?Le.createElement(cl,{size:10}):null,Le.createElement(No,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:E.error,loading:T,warning:E.warnings?.quote??null})))}i(Lf,"ConfirmSwapPage");import{i18n as Ht}from"@lingui/core";import{Button as vl,CustomTokensZeroStateDarkIcon as $w,CustomTokensZeroStateIcon as Fw,DeleteIcon as Ow,Divider as Yn,IconButton as Uw,MessageBox as zw,NotFound as Qw,styled as bl}from"@rango-dev/ui";import fe,{useState as wl}from"react";import{useNavigate as Hw}from"react-router-dom";import{CloseIcon as Sw,IconButton as Cw,SearchIcon as kw,TextField as Tw}from"@rango-dev/ui";import Gn from"react";import{styled as yw}from"@rango-dev/ui";var Mf=yw("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function vt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:c,suffix:u,...p}=t,m=s.length?Gn.createElement(Cw,{variant:"ghost",onClick:()=>c?.(""),size:"small"},Gn.createElement(Sw,{color:"gray",size:10})):null;return u&&(m=u),Gn.createElement(Tw,{prefix:Gn.createElement(Mf,null,Gn.createElement(kw,{color:"black"})),suffix:m,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...l},size:r,value:s,onChange:a,...p})}i(vt,"SearchInput");import{i18n as Tl}from"@lingui/core";import{Button as xw,CustomTokenWarning as Ew,darkTheme as Gf,Divider as Qt,ExternalLinkIcon as Iw,Image as Aw,ListItem as Nw,NotFound as Bw,PinIcon as Ww,Skeleton as Bo,Typography as jn,VirtualizedList as Lw}from"@rango-dev/ui";import W,{useState as Mw}from"react";import{useTranslation as Pw}from"react-i18next";import{Divider as Hf,ListItem as bw,Skeleton as Kn}from"@rango-dev/ui";import wt from"react";import{css as ln,darkTheme as ul,ImageContainer as vw,ListItemButton as ww,styled as Re,Typography as Pf}from"@rango-dev/ui";var ml=ln({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),dl=ln({position:"relative",height:12,width:"30%",maxWidth:"150px"}),fl=ln({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),gl=ln({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${ul} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),hl=ln({}),yl=ln(),_f=Re("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),Sl=Re("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Li=Re("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${dl}`]:{[`& .${gl}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${hl}`]:{bottom:"-15px"},[`& .${ml}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${fl}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Df=Re(ww,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),Cl=Re("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),kl=Re(Pf,{}),$f=Re("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${yl}`]:{$$color:"$colors$neutral600",[`.${ul} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Vn=Re("div",{display:"flex",alignItems:"end",flexDirection:"column"}),AQ=Re("div",{display:"flex",alignItems:"center"}),Ff=Re("div",{position:"relative",[`& ${vw}`]:{borderRadius:"$xm",overflow:"hidden"}}),Of=Re("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),Uf=Re(Pf,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),zf=Re("a",{"& svg:hover":{color:"$colors$info"}}),Qf=Re("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":{[`.${ul} &`]:{color:"$foreground"}}}});function qf(t){return wt.createElement(Li,null,Array.from(Array(t.size),e=>wt.createElement(bw,{key:e,hasDivider:!0,start:wt.createElement(Kn,{variant:"circular",width:35,height:35}),end:wt.createElement(Vn,null,wt.createElement(Kn,{variant:"text",size:"large",width:70}),wt.createElement(Hf,{size:4}),wt.createElement(Kn,{variant:"text",size:"medium",width:50})),title:wt.createElement("div",null,wt.createElement(Kn,{variant:"text",size:"large",width:90}),wt.createElement(Hf,{size:4}),wt.createElement(Kn,{variant:"text",size:"medium",width:90}))})))}i(qf,"LoadingTokenList");var _w=20,Dw=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return W.createElement("div",{className:dl()},o?W.createElement("div",{className:ml()},o):W.createElement(Sl,{className:fl()},W.createElement(jn,{variant:"title",size:"xmedium"},r.symbol),W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(Cl,{css:a},W.createElement(kl,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&W.createElement("div",{className:`${gl()} ${!o&&hl()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",W.createElement(Qt,{size:4,direction:"horizontal"}),W.createElement(zf,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:c=>c.stopPropagation()},W.createElement(Iw,{size:12}))))},"renderDesc");function Xn(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:l,showWarning:c=!0}=t,u=S().fetchStatus,p=S().blockchains(),{getBalanceFor:m,fetchingWallets:h}=S(),{isTokenPinned:d}=S(),{setFromToken:f,setToToken:g}=O(),{t:C}=Pw(),k=Ue(),[y,T]=Mw(null),v=i(()=>{l==="source"?f({token:y,meta:{blockchains:p}}):g({token:y,meta:{blockchains:p}})},"updateToken"),E=i(()=>{v(),k()},"handleImportToken"),B=i(w=>{if(w.customToken){let{customToken:I,..._}=w;return W.createElement(xw,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),T({..._,warning:!0})},"handleClick")},W.createElement(jn,{variant:"body",size:"xsmall",color:"background"},C("import")))}let b=Ir(m(w));return s?s(w):h?W.createElement(Vn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})):b&&W.createElement($f,null,W.createElement(Uf,{variant:"title",size:"small"},b.amount),W.createElement("div",null),b.usdValue&&W.createElement(jn,{variant:"body",className:yl(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),N=i(()=>W.createElement(Lw,{itemContent:w=>{let b=e[w];if(b==="skeleton")return W.createElement(Nw,{hasDivider:!0,start:W.createElement(Bo,{variant:"circular",width:35,height:35}),end:W.createElement(Vn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})),title:W.createElement("div",null,W.createElement(Bo,{variant:"text",size:"large",width:90}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:90}))});let I=b.address||"",_=p.find(L=>L.name===b.blockchain);if(!_)return null;let M=ds(_.color,"main"),q={$$color:M.main150,[`.${Gf} &`]:{$$color:M.main750},backgroundColor:"$$color"},R={$$color:M.main750,[`.${Gf} &`]:{$$color:M.main150},color:"$$color"},X=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick");return W.createElement(Qf,null,W.createElement(Df,{"tab-index":w,key:`${b.symbol}${b.address}`,id:`${b.symbol}${b.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b.customToken,onClick:X,start:W.createElement(Ff,null,W.createElement(Aw,{src:b.image===""?Sr:b.image,size:30}),t.type!=="custom-token"&&d(b,t.type)&&W.createElement(Of,null,W.createElement(Ww,{size:12,color:"gray"}))),title:_?.type==="COSMOS"||b.name||!b.name&&!I?W.createElement(Sl,null,W.createElement(jn,{variant:"title",size:"xmedium"},b.symbol),W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(Cl,{css:q},W.createElement(kl,{variant:"body",size:"xsmall",css:R},b.blockchain)),c&&b.warning&&W.createElement(W.Fragment,null,W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(Ew,{container:A()}))):void 0,description:typeof b!="string"&&_?.info&&I&&_.type!=="COSMOS"?Dw({address:I,token:b,customCssForTag:q,customCssForTagTitle:R,name:b.name,url:_.info.addressUrl.split("{wallet}").join(I)}):b.name||void 0,end:B(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),x=y?uo(y?.blockchain,p):null;return W.createElement(W.Fragment,null,a&&W.createElement(W.Fragment,null,W.createElement(jn,{variant:"label",size:"large"},Tl.t("Select Token")),W.createElement(Qt,{size:4})),W.createElement(_f,null,W.createElement(Qt,{size:4}),u==="loading"&&W.createElement(qf,{size:_w}),u==="success"&&(e.length?W.createElement(W.Fragment,null,W.createElement(Bn,{token:y,address:y?.address??"",blockchain:x??void 0,onImport:E,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),W.createElement(Li,{as:"ul"},N())):!!o&&W.createElement(Bw,{title:Tl.t("No results found"),description:Tl.t("Try using different keywords")}))))}i(Xn,"TokenList");var qw=bl("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Gw=bl("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),Vw=bl(Uw,{"&:hover":{"& svg":{color:"$secondary550"}}});function Vf(){let[t,e]=wl(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=O(),{mode:c}=Zo({}),u=Hw(),[p,m]=wl(!1),[h,d]=wl(),f=i(y=>{let T=y.target.value;e(T)},"handleSearch"),g=c==="dark",C=n.filter(y=>tt(y.symbol,t)||tt(y.address||"",t)||tt(y.name||"",t)),k=i(()=>{if(h){let y=a?ut(a):null,T=r?ut(r):null,v=ut(h);y===v?l({token:null}):T===v&&s({token:null}),o(h)}m(!1)},"handleDeleteCustomToken");return fe.createElement(oe,{header:{title:Ht.t("Custom Tokens")}},fe.createElement(re,null,fe.createElement(qw,null,n.length?fe.createElement(fe.Fragment,null,fe.createElement(vt,{value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Ht.t("Search Token"),onChange:f}),fe.createElement(Yn,{size:16}),fe.createElement(Xn,{list:C,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>fe.createElement(Vw,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),d(y)}},fe.createElement(Ow,{size:12,color:"gray"}))})):fe.createElement(Gw,null,fe.createElement(Qw,{icon:g?fe.createElement($w,{size:200}):fe.createElement(Fw,{size:200}),title:Ht.t("No custom tokens"),description:Ht.t("press the button to add your custom token")})),fe.createElement(Yn,{size:20}),fe.createElement(vl,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>u(F.addCustomTokens)},Ht.t("Add Custom Token"))),fe.createElement(J,{open:p,dismissible:!0,onClose:()=>m(!1),container:A()},fe.createElement(zw,{title:Ht.t("Delete Custom Token"),type:"error",description:Ht.t("Are you sure you want to Delete this Token?")},fe.createElement(Yn,{size:40}),fe.createElement(Yn,{size:10}),fe.createElement(vl,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},Ht.t("Yes, Delete it")),fe.createElement(Yn,{size:12}),fe.createElement(vl,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},Ht.t("No, Continue"))))))}i(Vf,"CustomTokensPage");import{i18n as Ge}from"@lingui/core";import{useManager as mb}from"@rango-dev/queue-manager-react";import{Button as Wl,darkTheme as db,Divider as Lo,MessageBox as fb,NotFound as gb,styled as Ll,Typography as _i}from"@rango-dev/ui";import{TransactionStatus as Rn}from"rango-types";import ie,{useMemo as ug,useState as Di}from"react";import{useNavigate as hb}from"react-router-dom";import{FilterIcon as Rw,Popover as eb}from"@rango-dev/ui";import Wo from"react";import{css as Kw,darkTheme as Mi,IconButton as jw,styled as Zn}from"@rango-dev/ui";var xl=Zn("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${Mi} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),Kf=Zn(jw,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Mi} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Mi} &`]:{backgroundColor:"$neutral"},[`& ${xl}::before`]:{backgroundColor:"$secondary100",[`.${Mi} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),jf=Zn("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Xf=Zn("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Yf=Kw({display:"flex",justifyContent:"space-between",alignItems:"center"}),Zf=Zn("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Jf}from"@lingui/core";import{Button as Xw,Divider as Rf,ListItemButton as Yw,Radio as Zw,RadioRoot as Jw,Typography as eg}from"@rango-dev/ui";import at from"react";function tg(t){let{filterBy:e,onClickItem:o}=t;return at.createElement(Xf,null,at.createElement("div",{className:Yf()},at.createElement(eg,{size:"small",variant:"body"},Jf.t("Status")),at.createElement(Xw,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Jf.t("Reset"))),at.createElement(Rf,{size:10}),at.createElement(Jw,{value:e},at.createElement(Zf,null,t.list.map((n,r)=>at.createElement(Yw,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:at.createElement(at.Fragment,null,at.createElement(Rf,{direction:"horizontal",size:4}),at.createElement(eg,{size:"medium",variant:"body"},n.title)),start:at.createElement(Zw,{value:n.id}),onClick:o})))))}i(tg,"FilterSelectorContent");function El(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Wo.createElement("div",null,Wo.createElement(eb,{open:a,align:"end",onOpenChange:o,container:A(),content:Wo.createElement(tg,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Wo.createElement(Kf,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Wo.createElement(xl,{isSelect:!!n},Wo.createElement(Rw,{size:16,color:"black"}),!!n&&Wo.createElement(jf,null)))))}i(El,"FilterSelector");import{i18n as nb}from"@lingui/core";import{getCurrentStep as rb}from"@rango-dev/queue-manager-rango-preset";import{Divider as ag,GroupedVirtualizedList as ib,Skeleton as ab,SwapListItem as sg,Typography as sb}from"@rango-dev/ui";import qe,{useCallback as lg,useEffect as lb,useRef as cb,useState as pb}from"react";function og(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(og,"calculateGroupsSoFar");import{css as tb,darkTheme as ob,styled as Jn}from"@rango-dev/ui";var Il=tb(),ng=Jn("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),Al=Jn("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${Il}`]:{$$color:"$colors$neutral600",[`.${ob} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Nl=Jn("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),rg=Jn("div",{gap:"$10",display:"flex",flexDirection:"column"}),ig=Jn("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var ub=10;function Bl(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=pb([]),l=cb(0),{swaps:c,groupCounts:u,groups:p}=n(e),m=lg(og,[]),h=lg(()=>{let d=e.length-l.current;d&&(l.current+=Math.min(d,ub),s(m(u,l.current)))},[e.length]);if(lb(()=>{r||h()},[r,h]),r){let d=[1,2];return qe.createElement(qe.Fragment,null,[d,d].map((g,C)=>qe.createElement(Al,{key:C},qe.createElement(Nl,null,qe.createElement(ab,{variant:"text",width:60,size:"small"}),qe.createElement(ag,{size:16})),qe.createElement(ag,{size:4}),qe.createElement(rg,null,g.map((y,T)=>qe.createElement(sg,{isLoading:!0,key:T}))))))}return qe.createElement(ib,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:d=>qe.createElement(Al,null,qe.createElement(Nl,null,qe.createElement(sb,{variant:"label",size:"medium",className:Il()},p[d]))),itemContent:(d,f)=>{let g=c[d],C=rb(g);if(!g)return null;let k=g.steps[0],y=g.steps[g.steps.length-1];return qe.createElement(ng,{key:g.requestId},qe.createElement(sg,{requestId:g.requestId,creationTime:g.creationTime,status:g.status,onClick:o,currentStep:C,tooltipContainer:A(),onlyShowTime:p[f]===nb.t("Today"),swapTokenData:{from:{token:{image:k.fromLogo,displayName:k.fromSymbol},blockchain:{image:k.fromBlockchainLogo||""},amount:P(g.inputAmount,6,6),realAmount:g.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:P(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(Bl,"HistoryGroupedList");import{i18n as Pi}from"@lingui/core";import cg from"dayjs";var pg=i(t=>{let e=new Map([["today",{title:Pi.t("Today"),swaps:[]}],["week",{title:Pi.t("This week"),swaps:[]}],["month",{title:Pi.t("This month"),swaps:[]}],["year",{title:Pi.t("This year"),swaps:[]}]]);function o(c,u){e.has(c)||e.set(c,{title:c,swaps:[]}),e.get(c)?.swaps.push(u)}i(o,"addYearsToOutput");let n=cg();t.forEach(c=>{let u=Number(c.creationTime),p=cg(u);if(n.isSame(p,"day"))e.get("today")?.swaps.push(c);else if(n.isSame(p,"week"))e.get("week")?.swaps.push(c);else if(n.isSame(p,"month"))e.get("month")?.swaps.push(c);else if(n.isSame(p,"year"))e.get("year")?.swaps.push(c);else{let m=new Date(u).getFullYear().toString();o(m,c)}});let r=Array.from(e.values()).filter(c=>c.swaps.length>0),a=r.flatMap(c=>c.swaps),s=r.map(c=>c.swaps.length),l=r.map(c=>c.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var yb=Ll("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),Sb=Ll("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Cb=Ll("div",{"._typography":{color:"$neutral700",[`.${db}&`]:{color:"$neutral900"}}}),kb=[{id:Rn.SUCCESS,title:Ge.t("Complete")},{id:Rn.RUNNING,title:Ge.t("Running")},{id:Rn.FAILED,title:Ge.t("Failed")}],Tb=i((t,e)=>t?.length?t.filter(o=>xt(o.fromBlockchain,e)||xt(o.toBlockchain,e)||xt(o.toSymbol,e)||xt(o.fromSymbol,e)).length:!1,"isStepContainsText");function mg(){let t=hb(),{manager:e,state:o}=mb(),n=gt(e).map(({swap:T})=>T),[r,a]=Di(""),[s,l]=Di(!1),c=!o.loadedFromPersistor,[u,p]=Di(""),[m,h]=Di(!1),d=i(T=>{let v=T.target.value;a(v)},"handleSearch"),f=ug(()=>!r&&!u?n:n.filter(T=>{let{inputAmount:v,status:E,steps:B,requestId:N}=T;return(!r||xt(v,r)||xt(E,r)||Tb(B,r)||xt(N,r))&&(!u||u===E)}),[n,r,u]),g=!f?.length&&!c,C=i(()=>h(!1),"onCloseModal"),k=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(T){console.log(T)}},"onClear"),y=ug(()=>!n.some(T=>T.status===Rn.SUCCESS||T.status===Rn.FAILED),[n]);return ie.createElement(oe,{header:{title:Ge.t("History"),suffix:ie.createElement(Jt,null,ie.createElement(Wl,{id:"widget-history-clear-btn",disabled:y,variant:"ghost",size:"xsmall",onClick:()=>h(!0)},ie.createElement(_i,{size:"medium",variant:"label",color:"error"},Ge.t("Clear"))))}},ie.createElement(re,null,ie.createElement(Sb,null,ie.createElement(vt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Ge.t("Search Transaction"),autoFocus:!0,onChange:d,style:{height:36},value:r}),ie.createElement(Lo,{size:10,direction:"horizontal"}),ie.createElement(El,{filterBy:u,open:s,onOpenChange:T=>l(T),onClickItem:T=>p(T),list:kb})),ie.createElement(Lo,{size:"16"}),ie.createElement(yb,null,g&&ie.createElement(ig,null,ie.createElement(Lo,{size:32}),ie.createElement(gb,{title:r?Ge.t("No results found"):Ge.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Ge.t("Try using different keywords"):Ge.t("Your transaction history is stored locally and will appear here after you start a swap")})),!g&&ie.createElement(Bl,{list:f,onSwapClick:t,groupBy:pg,isLoading:c}))),ie.createElement(J,{open:m,onClose:C,container:A()},ie.createElement(Lo,{size:20}),ie.createElement(fb,{type:"warning",title:Ge.t("Clear Transaction History"),description:ie.createElement(Cb,null,ie.createElement(_i,{variant:"body",size:"medium"},Ge.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ie.createElement(Lo,{size:"24"}),ie.createElement(_i,{variant:"body",size:"small"},Ge.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ie.createElement(Lo,{size:30}),ie.createElement(Wl,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},Ge.t("Yes, Clear the history")),ie.createElement(Lo,{size:10}),ie.createElement(Wl,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:C},ie.createElement(_i,{variant:"title",size:"medium",color:"primary"},Ge.t("No, Cancel")))))}i(mg,"HistoryPage");import{i18n as Gb}from"@lingui/core";import{Button as Vb,Divider as Mg,styled as Kb,WarningIcon as jb}from"@rango-dev/ui";import Xb from"bignumber.js";import Ve,{useEffect as Pg,useState as _g}from"react";import{useNavigate as Yb}from"react-router-dom";import{i18n as fg}from"@lingui/core";import{Alert as wb,Divider as Ml,NoRouteIcon as bb,Typography as xb}from"@rango-dev/ui";import Mo from"react";import{styled as vb}from"@rango-dev/ui";var dg=vb("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Pl(){let{fromToken:t,toToken:e}=O();return!!t&&!!e&&Mt(t,e)?Mo.createElement(dg,null,Mo.createElement(Ml,{size:10}),Mo.createElement(bb,{size:24,color:"gray"}),Mo.createElement(Ml,{size:4}),Mo.createElement(xb,{variant:"title",size:"small"},fg.t("No Routes Found")),Mo.createElement(Ml,{size:4}),Mo.createElement(wb,{title:fg.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Pl,"SameTokensWarning");import{i18n as Wb}from"@lingui/core";import{Header as Lb}from"@rango-dev/ui";import ro,{useEffect as Mb,useState as Pb}from"react";import{i18n as Ib}from"@lingui/core";import{Divider as Dl,FullExpandedQuote as Ab,Typography as Nb}from"@rango-dev/ui";import Ce from"react";import{styled as _l}from"@rango-dev/ui";var gg=_l("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),hg=_l("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),yg=_l("div",{width:"146px"});import{i18n as er}from"@lingui/core";import{Select as Eb}from"@rango-dev/ui";import Sg from"react";function $i(t){let{updateQuotePartialState:e,sortStrategy:o}=O(),n=[{value:"SMART",label:er.t("Smart Routing")},{value:"FEE",label:er.t("Lowest Fee")},{value:"SPEED",label:er.t("Fastest Transfer")},{value:"NET_OUTPUT",label:er.t("Maximum Return")},{value:"PRICE",label:er.t("Maximum Output")}];return Sg.createElement(yg,null,Sg.createElement(Eb,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i($i,"SelectStrategy");var Cg=3;function tr(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:c,quotes:u,updateQuotePartialState:p,fromToken:m,toToken:h,sortStrategy:d,error:f}=O(),{slippage:g,customSlippage:C}=S(),{findToken:k}=S(),y=l||A(),T=!!u&&u.results.length,v=C??g,E=i(x=>{if(!m||!h||!u)return null;let w={requestAmount:u.requestAmount,validationStatus:null,...x};return Ko({currentQuote:w,userSlippage:v,findToken:k})},"getQuoteWarning"),B=f?.type===0||f?.type===1,N=u?.results?Hr(d,u?.results):[];return Ce.createElement(Ce.Fragment,null,a&&Ce.createElement(Ce.Fragment,null,Ce.createElement(hg,null,Ce.createElement(Nb,{size:"xmedium",variant:"title"},Ib.t("Sort by")),Ce.createElement($i,{container:y})),Ce.createElement(Dl,{size:"10"})),e&&Array.from({length:Cg},(x,w)=>Ce.createElement(Ce.Fragment,{key:w},s?Ce.createElement(Ab,{loading:!0}):Ce.createElement(Hn,{tagHidden:!1,type:"list-item",expanded:!1}),w!==Cg-1&&Ce.createElement(Dl,{size:16}))),!e&&Ce.createElement(Ce.Fragment,null,T?N.map((x,w)=>{let b=E(x),I=al(x.swaps),_=N.length-1===w;return Ce.createElement(Ce.Fragment,{key:x.requestId},Ce.createElement(No,{showModalFee:r,container:y,selected:c?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:u.requestAmount,validationStatus:null},loading:e,error:I?.options||null,warning:b,fullExpandedMode:s,onClick:M=>{I||p("warning",b),p("error",I?.options||null),o(M)},type:"list-item"}),!_&&Ce.createElement(Dl,{size:16}))}):B&&Ce.createElement(gg,null,Ce.createElement(Pn,{size:s?"large":"small",error:f,fetch:n}))))}i(tr,"Quotes");import{darkTheme as Bb,styled as kg}from"@rango-dev/ui";var Tg=kg("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${Bb} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),vg=kg("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var _b=100;function $l(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=Pb(!1),c=s?"":"is-hidden",{config:u}=S(),p=u?.variant==="full-expanded",m=fo();return Mb(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},_b):(l(!1),h&&clearTimeout(h)),()=>{h&&clearTimeout(h)}},[a]),ro.createElement(Tg,{expandMode:u?.variant==="full-expanded"?"full":"default",className:`${c} ${oi()}`,id:Fe.EXPANDED_BOX_ID},ro.createElement(Lb,{title:Wb.t("Routes"),suffix:ro.createElement(ro.Fragment,null,ro.createElement($i,{container:m}),ro.createElement(xo,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),ro.createElement(vg,null,ro.createElement(tr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:fo(),onClickOnQuote:n,fullExpandedMode:p})))}i($l,"ExpandedQuotes");import{i18n as Ng}from"@lingui/core";import{SwapInput as Bg}from"@rango-dev/ui";import Ob from"bignumber.js";import or from"react";import{ReverseIcon as Fb}from"@rango-dev/ui";import Ol from"react";import{keyframes as Db,styled as wg}from"@rango-dev/ui";var Fl=450,$b=Db({"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)"}}),bg=wg("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),xg=wg("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${$b} ${Fl}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 Ul(){let t=O.use.switchFromAndTo();return Ol.createElement(bg,null,Ol.createElement(xg,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Fl),t()}},Ol.createElement(Fb,{size:12})))}i(Ul,"SwitchFromAndToButton");import{styled as Eg}from"@rango-dev/ui";var Ig=Eg("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),Ag=Eg("div",{position:"relative"});function zl(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:c,setInputAmount:u,inputAmount:p,inputUsdValue:m,outputAmount:h,outputUsdValue:d,selectedQuote:f}=O(),{connectedWallets:g,getBalanceFor:C}=S(),k=a?C(a):null,y=Ir(k)?.amount??"0",T=k?new Ob(k.amount).shiftedBy(-k.decimals):le,v=!!s&&pp(g,s.name),E=!Za(f,p,m),B=!Za(f,p,d),N=!m||!d||!d.gt(0)?null:Dt(m.toString(),d.toString());return or.createElement(Ig,null,or.createElement(Ag,null,or.createElement(Bg,{label:Ng.t("From"),mode:"From",onInputChange:u,balance:y,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:p,usdValue:E?void 0:P(m,4,4),realUsdValue:E?void 0:m?.toString(),error:E?ee().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:v,tooltipContainer:A(),onSelectMaxBalance:()=>{let x=P(T,k?.decimals),w=k?.amount?x.split(",").join(""):"";u(w)},anyWalletConnected:g.length>0}),or.createElement(Ul,null)),or.createElement(Bg,{sharpBottomStyle:!r&&(!!f||e),label:Ng.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:c?.displayName||"",image:c?.logo},token:{displayName:l?.symbol||"",image:l?.image,securityWarning:!!l?.warning},percentageChange:P(Dt(m,d),2,2),warningLevel:$t(N??0),price:{value:P(h,6,6),usdValue:B?void 0:P(d,4,4),realValue:h?.toString(),realUsdValue:B?void 0:d?.toString(),error:B?ee().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:A()}))}i(zl,"Inputs");import{useCallback as Ub,useEffect as zb,useRef as Qb,useState as Hb}from"react";function Wg(){let{fetch:t,loading:e,cancelFetch:o}=Ai({request:async(n,r)=>await ot().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Wg,"useFetchAllQuotes");var qb=600;function Fi({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Wg(),{excludeLiquiditySources:n,routing:r}=S().config,{connectedWallets:a}=S(),l=a.some(Ie=>Ie.isContractWallet),{fromToken:c,toToken:u,inputAmount:p,inputUsdValue:m,selectedQuote:h,sortStrategy:d,resetQuote:f,error:g,warning:C,setSelectedQuote:k,updateQuotePartialState:y}=O(),{slippage:T,customSlippage:v,affiliatePercent:E,affiliateRef:B,affiliateWallets:N,fetchStatus:x}=S(),w=S().getLiquiditySources(),b=S().getDisabledLiquiditySources(),I=S().excludeLiquiditySources(),{findToken:_}=S(),[M,q]=Hb(!0),R=Qb(p),X=v??T,K=!c||!u||Mt(c,u)||!gn(p),ae=i(Ie=>{q(Ie)},"resetState"),Q=i(Ie=>{let{fromToken:je,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:De}=Ie;if(M||ae(!0),!K&&je&&se){f();let Xe=_u({fromToken:je,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,wallets:a,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:De,contractCall:l});Uo("experimental",r)&&(Xe.experimental=!0),Uo("avoidNativeFee",r)&&(Xe.avoidNativeFee=!0),Uo("enableCentralizedSwappers",r)&&(Xe.enableCentralizedSwappers=!0),r?.maxLength&&(Xe.maxLength=r.maxLength),e(Xe).then(Te=>{let $e=Hr(d,Te.results),jt=wu(h,$e,Te.requestAmount);q(!1),y("quotes",Te),k(jt),Ni({diagnosisMessages:Te.diagnosisMessages,requestId:jt?.requestId||"",swaps:jt?.swaps});let po=jt&&Ko({currentQuote:jt,userSlippage:X,findToken:_});y("warning",po)}).catch(Te=>{let{error:$e}=Bi(Te);($e?.type===0||$e?.type===1)&&f(),$e?.type!==2&&(y("error",$e),q(!1))})}},"fetch"),de=Ub(Tr(Ie=>{Q(Ie)},qb),[K]);return zb(()=>{if(!t){q(!1);return}if(x!=="success")return;if(K){q(!1),(h||g||C)&&f();return}if(!gn(p)||m?.eq(0)){ae(!1),o();return}f(),ae(!0);let Ie=Q;return R.current&&R.current!=p&&(Ie=de),R.current=p,Ie({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:I,disabledLiquiditySources:b,slippage:X,affiliateRef:B,affiliatePercent:E,affiliateWallets:N,contractCall:l}),o},[x,p,c?.symbol,c?.address,c?.blockchain,u?.symbol,u?.address,u?.blockchain,K,w?.length,n,b.length,X,B,E,l,JSON.stringify(N)]),{fetch:()=>Q({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:I,disabledLiquiditySources:b,slippage:X,affiliateRef:B,affiliatePercent:E,affiliateWallets:N,contractCall:l}),loading:M}}i(Fi,"useSwapInput");function Lg(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};ye.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Lg,"emitPreventableEvent");var Zb=Kb("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),Jb=300;function Dg(){let t=Yb(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:c,setSelectedQuote:u,resetQuoteWallets:p,setQuoteWarningsConfirmed:m,updateQuotePartialState:h}=O(),[d,f]=_g(!1),{isLargeScreen:g,isExtraLargeScreen:C}=ki(),{fetch:k,loading:y}=Fi({refetchQuote:a}),{config:T,fetchStatus:v,connectedWallets:E}=S(),{isActiveTab:B}=ne(),[N,x]=_g(!1),b=Wu({fetchMetaStatus:v,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:E.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),I=yp(g,C,T?.variant),_=!!n&&!!e&&!!o&&new Xb(n).gt(0)&&!Qu(e,o),M=_&&v==="success"&&y,X=(!I||I&&c?.results.length)&&(l||s);Pg(()=>{p(),h("refetchQuote",!0)},[]),Pg(()=>{f(_)},[_]);let L=(r||s)&&!N?k:void 0,K=i(Q=>{I&&d?(f(!1),setTimeout(()=>{t(Q)},Jb)):t(Q)},"onHandleNavigation"),ae=i(Q=>{r?.requestId!==Q.requestId&&(x(!1),u(Q))},"onClickOnQuote");return Ve.createElement(Zb,null,Ve.createElement(oe,{height:"auto",footer:Ve.createElement(Vb,{id:`widget-swap-${b.action}-btn`,type:"primary",size:"large",disabled:b.disabled||!B,prefix:b.action==="confirm-warning"&&Ve.createElement(jb,null),fullWidth:!0,onClick:()=>{b.action==="connect-wallet"?Lg({type:"clickConnectWallet"},()=>K(F.wallets)):b.action==="confirm-warning"?x(!0):K(F.confirmSwap)}},b.title),header:{onWallet:()=>{K(F.wallets)},hasBackButton:!1,title:T.title||Gb.t("Swap"),suffix:Ve.createElement(xo,{hidden:I?["refresh"]:void 0,onClickRefresh:L,onClickHistory:()=>K(F.swaps),onClickSettings:()=>{K(F.settings)}})}},Ve.createElement(re,null,Ve.createElement(zl,{fetchingQuote:M,fetchMetaStatus:v,isExpandable:I,onClickToken:Q=>{K(Q==="from"?F.fromSwap:F.toSwap)}}),Ve.createElement(Mg,{size:"2"}),I?null:Ve.createElement(No,{quote:r,loading:M,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:c&&c.results.length>1?()=>{h("refetchQuote",!1),K(F.routes)}:void 0}),X?Ve.createElement(Ve.Fragment,null,Ve.createElement(Mg,{size:"10"}),Ve.createElement(Dn,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:k,showWarningModal:N,confirmationDisabled:!B,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:()=>{x(!1),m(!0),K(F.confirmSwap)},onChangeSettings:()=>K(F.settings)})):null,Ve.createElement(Pl,null))),I?Ve.createElement($l,{loading:M,onClickOnQuote:ae,fetch:k,onClickRefresh:L,isVisible:d}):null)}i(Dg,"Home");import{i18n as $g}from"@lingui/core";import{Alert as Rb,Divider as ex,List as tx,ListItemButton as ox,Radio as nx,RadioRoot as rx,Typography as ix}from"@rango-dev/ui";import Wt from"react";function io(){let{setLanguage:t,language:e,config:o}=S(),n=Ip,r=o?.language||zo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||zo),resetLanguage:()=>t(null)}}i(io,"useLanguage");function Fg(){let{activeLanguage:t,changeLanguage:e,languages:o}=io(),n=Ue(),r=o.map(a=>{let{local:s,label:l,SVGFlag:c}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Wt.createElement(ix,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:Wt.createElement(nx,{value:s}),start:Wt.createElement(c,null)}});return Wt.createElement(oe,{header:{title:$g.t("Language")}},Wt.createElement(re,null,Wt.createElement(Rb,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Wt.createElement(ex,{size:"8"}),Wt.createElement(rx,{value:t},Wt.createElement(tx,{type:Wt.createElement(ox,{title:$g.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(Fg,"LanguagePage");import{i18n as qt}from"@lingui/core";import{Button as px,Checkbox as ux,Image as mx,ListItemButton as dx,NotFound as fx,Typography as gx}from"@rango-dev/ui";import Ke,{useState as hx}from"react";import{Checkbox as lx,Skeleton as Ug}from"@rango-dev/ui";import rr from"react";import{styled as Ql}from"@rango-dev/ui";var nr=Ql("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Hl=Ql("div",{width:80,display:"flex",justifyContent:"flex-end"}),ql=Ql("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as ax,styled as sx}from"@rango-dev/ui";var Og=sx(ax,{height:61});var cx=30;function Gl(){return rr.createElement(nr,null,Array.from(Array(cx),(t,e)=>rr.createElement(Og,{hasDivider:!0,key:e,start:rr.createElement(Ug,{variant:"circular",width:35,height:35}),title:rr.createElement(Ug,{variant:"text",size:"large",width:90}),end:rr.createElement(lx,{checked:!1})})))}i(Gl,"LoadingLiquiditySourceList");function Vl({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[r,a]=hx(""),s=S().toggleLiquiditySource,l=S().isInCampaignMode(),c=Wr(o,n),u={Exchanges:qt.t("Exchanges"),Bridges:qt.t("Bridges")},p=[];t==="Exchanges"&&p.push("DEX"),t==="Bridges"&&p.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=c.filter(k=>p.includes(k.type)),h=m.length===m.filter(k=>k.selected).length,d=i(()=>{m.forEach(k=>{h?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),f=m.map(k=>{let{selected:y,groupTitle:T,logo:v,id:E,...B}=k;return{id:`widget-setting-liquidity-source-${E.toLowerCase().replace(/\s+/g,"-")}-item-btn`,start:Ke.createElement(mx,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(T)},end:Ke.createElement(ux,{checked:y,disabled:l}),title:Ke.createElement(gx,{variant:"title",size:"xmedium"},qt.t(T)),selected:y,groupTitle:T,logo:v,...B}}),g=i(k=>{let y=k.target.value;a(y)},"handleSearch"),C=f;return r&&(C=f.filter(k=>xt(k.groupTitle,r))),Ke.createElement(oe,{header:{title:qt.t(t),suffix:Ke.createElement(Hl,null,Ke.createElement(px,{id:`widget-liquidity-source-${h?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:d},h?qt.t("Deselect all"):qt.t("Select all")))}},Ke.createElement(re,{view:!0},Ke.createElement(vt,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:qt.t("Search {sourceType}",{sourceType:u[t]}),onChange:g}),e==="loading"&&Ke.createElement(Gl,null),!C.length&&r?Ke.createElement(ql,null,Ke.createElement(fx,{title:qt.t("No results found"),description:qt.t("Try using different keywords")})):e==="success"&&Ke.createElement(nr,{disabled:l},C.map(k=>{let{groupTitle:y,...T}=k;return Ke.createElement(Ke.Fragment,{key:k.id},Ke.createElement(dx,{style:{height:"61px"},...T,selected:!1,hasDivider:!0}))}))))}i(Vl,"LiquiditySourcePage");import{i18n as yx}from"@lingui/core";import Oi from"react";import{useNavigate as Sx}from"react-router-dom";function zg(){let t=Sx(),e=Ue(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=O(),{fetch:l,loading:c}=Fi({refetchQuote:n}),u=i(h=>{r(h),a("refetchQuote",!1),e()},"onClickOnQuote"),p=`../${F.settings}`,m=`../${F.wallets}`;return Oi.createElement(oe,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:yx.t("Routes"),suffix:Oi.createElement(xo,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(p),a("refetchQuote",!0)}})}},Oi.createElement(re,null,Oi.createElement(tr,{fetch:l,loading:c,onClickOnQuote:u})))}i(zg,"RoutesPage");import{i18n as jg}from"@lingui/core";import{Divider as Xg,getCategoriesCount as Ax,SelectableCategoryList as Nx}from"@rango-dev/ui";import Gt,{useState as Yg}from"react";import{useNavigate as Bx}from"react-router-dom";import{i18n as Kl}from"@lingui/core";import{Divider as vx,Image as wx,ListItemButton as bx,NotFound as xx,Typography as Kg}from"@rango-dev/ui";import st,{useEffect as Ex,useState as Ix}from"react";var Qg=i((t,e,o)=>t.filter(n=>vr(n.type,o)).filter(n=>tt(n.name,e)||tt(n.displayName,e)),"filterBlockchains");import{ImageContainer as Cx,styled as Hg}from"@rango-dev/ui";var qg=Hg("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Ui=Hg(Wn,{padding:0,margin:0,listStyle:"none",[`& ${Cx}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as kx,Skeleton as Gg}from"@rango-dev/ui";import zi from"react";var Tx=20;function Vg(){return zi.createElement(Ui,null,Array.from(Array(Tx),t=>zi.createElement(kx,{key:t,hasDivider:!0,start:zi.createElement(Gg,{variant:"circular",width:35,height:35}),title:zi.createElement(Gg,{variant:"text",size:"large",width:90})})))}i(Vg,"LoadingBlockchainList");function jl(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,l]=Ix(e),{fetchStatus:c}=S();Ex(()=>{l([...Qg(e,o,r)])},[e,o,r]);let u=i(()=>!s.length&&o?st.createElement(xx,{title:Kl.t("No results found"),description:Kl.t("Try using different keywords")}):st.createElement(Ui,{as:"ul",key:`${r}-${o}`},s.map(p=>st.createElement(bx,{key:`${p.name}-${p.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(p),start:st.createElement(wx,{src:p.logo,size:30}),title:st.createElement(Kg,{variant:"title",size:"medium"},p.displayName),id:p.name}))),"renderList");return st.createElement(st.Fragment,null,a&&st.createElement(st.Fragment,null,st.createElement(Kg,{variant:"label",size:"large"},Kl.t("Select Chain")),st.createElement(vx,{size:4})),st.createElement(qg,null,c==="loading"&&st.createElement(Vg,null),c==="success"&&u()))}i(jl,"BlockchainList");function Qi(t){let{type:e}=t,o=Ue(),[n,r]=Yg(""),[a,s]=Yg("ALL"),l=O.use.setToBlockchain(),c=O.use.setFromBlockchain(),{fetchStatus:u}=S(),p=Bx(),m=S().blockchains({type:e}),h=Ax(m),d=!t.hideCategory&&h!==1;return Gt.createElement(oe,{header:{title:jg.t("Select Chain")}},Gt.createElement(re,{view:!0},d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(Nx,{setCategory:s,category:a,blockchains:m,isLoading:u==="loading"}),Gt.createElement(Xg,{size:24})),Gt.createElement(vt,{value:n,autoFocus:!0,placeholder:jg.t("Search Chain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),Gt.createElement(Xg,{size:16}),Gt.createElement(jl,{list:m,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:f=>{e==="custom-token"?p(`..?blockchain=${f.name}`,{replace:!0}):(e==="source"?c(f):l(f),o())}})))}i(Qi,"SelectBlockchainPage");import{i18n as Gi}from"@lingui/core";import{Divider as nh,Spinner as Hx}from"@rango-dev/ui";import ao,{useEffect as qx,useState as Gx}from"react";import{useNavigate as Vx}from"react-router-dom";import{i18n as Zl}from"@lingui/core";import{BlockchainsChip as Hi,Divider as eh,Image as th,Skeleton as _x,Tooltip as Dx,Typography as Jl}from"@rango-dev/ui";import Me from"react";import{useEffect as Mx}from"react";var Zg=["ETH","COSMOS","OSMOSIS"];function Xl(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Wx),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let c=0;c<=l;c++){let u=n[c];s=s.filter(p=>u.name!==p)}}n.sort(Lx(s)),r=n.splice(a)}return{list:n,more:r}}i(Xl,"prepare");function Wx(t,e){let o=Zg,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(Wx,"sortByMostUsedBlockchains");function Lx(t){return i(function(o,n){let r=t.findIndex(c=>c===o.name),a=t.findIndex(c=>c===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(Lx,"generateSortByPreferredBlockchainsFor");function Jg(t,e){return!!e.list.find(o=>o.name===t)}i(Jg,"isInVisibleList");function Yl(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();Mx(()=>{if(e?.selected){let a=Xl(t,o,e);Jg(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Xl(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Yl,"usePrepareBlockchainList");import{styled as Px}from"@rango-dev/ui";var Rg=Px("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var $x=12;function Rl(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,s=Yl(e,{limit:10,selected:n?.name}),{fetchStatus:l}=S(),c=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),p=s.more.length>0,m=s.more.length===1,h=!m&&p;return Me.createElement(Me.Fragment,null,Me.createElement(eh,{size:12}),Me.createElement(Jl,{variant:"label",size:"large"},Zl.t("Select Chain")),Me.createElement(eh,{size:12}),Me.createElement(Rg,null,l==="loading"&&Array.from(Array($x),d=>Me.createElement(_x,{key:d,variant:"rounded",height:50})),l==="success"&&Me.createElement(Me.Fragment,null,Me.createElement(Hi,{selected:!n,onClick:()=>{o==="from"?u():c()}},Me.createElement(Jl,{variant:"body",size:"xsmall",color:"secondary500"},Zl.t("All"))),s.list.map(d=>Me.createElement(Dx,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:A()},Me.createElement(Hi,{key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},Me.createElement(th,{src:d.logo,size:30})))),m?Me.createElement(Hi,{key:s.more[0].name,selected:!!n&&n.name===s.more[0].name,onClick:()=>r(s.more[0])},Me.createElement(th,{src:s.more[0].logo,size:30})):null,h?Me.createElement(Hi,{onClick:a,key:"more-blockchains"},Me.createElement(Jl,{variant:"body",size:"xsmall",color:"secondary500"},Zl._("More +{count}",{count:s.more.length}))):null)))}i(Rl,"BlockchainsSection");import{useCallback as Ox,useRef as Ux,useState as ec}from"react";function tc(){let t=S().blockchains(),e=Ux(null),{customTokens:o}=S(),[n,r]=ec(!1),[a,s]=ec([]),[l,c]=ec(null),u=i(async(h,d)=>{c(null),r(!0),s([]);try{let f=await ot().searchCustomTokens({query:h,blockchain:d},{signal:e.current?.signal}),g=new Set(o().map(y=>_t(y))),C=new Set(t.map(y=>y.name)),k=f.tokens.filter(y=>C.has(y.blockchain)&&!g.has(_t(y)));s(k),r(!1)}catch(f){c(f instanceof Error?f.message:"something went wrong"),s([]),f?.name!=="CanceledError"&&r(!1)}},"fetch"),p=Ox(Tr((h,d)=>{e.current?.signal.aborted||u(h,d)},600),[t.length]);return{fetch:(h,d)=>{e.current=new AbortController,s([]),r(!0),p(h,d)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:l}}i(tc,"useSearchCustomTokens");function qi(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(qi,"shouldSearchForCustomTokens");function oh(t,e,o,n,r){let a=[...t];return qi(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(oh,"prepareTokensList");function Vi(t){let{type:e}=t,o=Vx(),n=Ue(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:c,setToBlockchain:u}=O(),{getBalanceFor:p}=S(),{fetch:m,loading:h,tokens:d,cancel:f}=tc(),[g,C]=Gx(""),k=e==="source"?r:a,y=k?.name??"",T=S().blockchains({type:e}),v=S().tokens({type:e,blockchain:y,searchFor:g,getBalanceFor:p}),E=oh(v,d,g,h,k?.name),B=i(w=>{e==="source"?c(w):u(w)},"updateBlockchain"),N=i(w=>{e==="source"?s({token:w,meta:{blockchains:T}}):l({token:w,meta:{blockchains:T}})},"updateToken"),x={source:Gi.t("Source"),destination:Gi.t("Destination")};return qx(()=>(qi(v,g,k?.name)&&m(g,k?.name??void 0),()=>{f()}),[v.length,g,k?.name]),ao.createElement(oe,{header:{title:Gi.t("Swap {type}",{type:x[e]})}},ao.createElement(re,null,ao.createElement(Rl,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:w=>{B(w)}}),ao.createElement(nh,{size:24}),ao.createElement(vt,{value:g,autoFocus:!0,placeholder:Gi.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>C(""),onChange:w=>C(w.target.value),suffix:qi(v,g,k?.name)&&h?ao.createElement(Hx,{size:12,color:"secondary"}):void 0}),ao.createElement(nh,{size:16}),ao.createElement(Xn,{list:E,selectedBlockchain:y,searchedFor:g,type:e,onChange:w=>{N(w);let b=T.find(I=>w.blockchain===I.name);b&&B(b),n()}})))}i(Vi,"SelectSwapItemsPage");import{i18n as ic}from"@lingui/core";import{Alert as CE,Button as kE,styled as TE}from"@rango-dev/ui";import Po from"react";import{useInRouterContext as vE,useSearchParams as wE}from"react-router-dom";import{i18n as ch}from"@lingui/core";import{Alert as Yx,Divider as nc,InfoIcon as Zx,SlippageIcon as Jx,TextField as Rx,Tooltip as eE,Typography as ph}from"@rango-dev/ui";import Pe from"react";import{Chip as Kx,styled as ir,TextField as jx}from"@rango-dev/ui";var rh=ir("div",{paddingTop:"$5",padding:"$10 $5"}),ih=ir("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${jx}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),ah=ir("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Ki=ir("div",{maxWidth:"280px",padding:"$10"}),sh=ir(Kx,{width:"61px",flexShrink:0});import{i18n as oc}from"@lingui/core";import{Typography as Xx}from"@rango-dev/ui";import ar from"react";function lh(){return ar.createElement(Ki,null,ar.createElement(Xx,{variant:"label",size:"medium",color:"neutral700"},oc.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),ar.createElement("br",null),ar.createElement("br",null),ar.createElement("b",null,oc.t("Warning")),":\xA0",oc.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(lh,"SlippageTooltipContent");function rc(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),r=o!==null?bp(o):null,a=i(c=>{let u=c.target.value,p=parseFloat(u);if(isNaN(p))return n(null);let m=p;p>Cn&&(m=Cn),n(m)},"onSlippageValueChange"),s=i(c=>{o!==null&&n(null),e(c)},"onClickSlippageChip"),l=i(c=>{let u=c.target,p=/^(0|[1-9]\d*)(\.\d{1,2})?$/,m=u.value;p.test(m)||(u.value=m.slice(0,-1))},"onInput");return Pe.createElement(rh,null,Pe.createElement(ah,null,Pe.createElement(Jx,{size:16,color:"gray"}),Pe.createElement(nc,{direction:"horizontal",size:4}),Pe.createElement(ph,{variant:"title",size:"xmedium"},ch.t("Slippage tolerance per swap")),Pe.createElement(nc,{direction:"horizontal",size:4}),Pe.createElement(eE,{container:A(),side:"top",sideOffset:4,content:Pe.createElement(lh,null)},Pe.createElement(Zx,{color:"gray"}))),Pe.createElement(ih,null,Sp.map((c,u)=>{let p=`slippage-${u}`;return Pe.createElement(sh,{key:p,onClick:()=>s(c),selected:o===null&&c===t,label:`${c.toString()}%`})}),Pe.createElement(Rx,{type:"number",min:"0.01",max:"30",step:"0.01",onInput:l,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:a,suffix:o&&Pe.createElement(ph,{variant:"body",size:"small"},"%"),placeholder:ch.t("Custom")})),r&&Pe.createElement(Pe.Fragment,null,Pe.createElement(nc,{size:10}),Pe.createElement(Yx,{variant:"alarm",type:r.type,title:r.message})))}i(rc,"Slippage");import{i18n as ht}from"@lingui/core";import{AutoThemeIcon as uh,BridgesIcon as tE,ChevronRightIcon as ji,DarkModeIcon as mh,Divider as sr,ExchangeIcon as oE,InfinityIcon as nE,InfoIcon as rE,LanguageIcon as iE,LightModeIcon as dh,List as aE,ListItem as sE,ListItemButton as lE,Skeleton as cE,styled as pE,Switch as uE,Tabs as mE,TargetIcon as dE,Tooltip as fE,Typography as et}from"@rango-dev/ui";import $ from"react";import{useNavigate as gE}from"react-router-dom";var hE=pE("div",{width:"202px",height:"$40"}),yE=[{id:"light",icon:$.createElement(dh,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Light"))},{id:"dark",icon:$.createElement(mh,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Dark"))},{id:"auto",icon:$.createElement(uh,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Auto"))}],SE=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return $.createElement(uh,{...e});case"dark":return $.createElement(mh,{...e});default:return $.createElement(dh,{...e})}},"getThemeIcon");function fh(){let t=gE(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:r,languages:a}=io(),s=a.find(L=>L.local===r)?.label,l=S().fetchStatus,c=S().swappers(),u=S().getDisabledLiquiditySources(),{config:{features:p}}=S(),m=S().customTokens(),h=Ye("theme",p),d=Ye("liquiditySource",p),f=Ye("language",p),g=Ye("customTokens",p),C=S().infiniteApprove,k=S().toggleInfiniteApprove,y=Wr(c,u),T=y.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=T.length,E=T.filter(L=>L.selected).length,B=y.filter(L=>L.type==="DEX"),N=B.length,x=B.filter(L=>L.selected).length,w=i((L,K)=>{switch(l){case"loading":return $.createElement(cE,{variant:"text",size:"medium",width:50});case"failed":return $.createElement(et,{variant:"body",size:"medium",color:"$error500"},ht.t("Loading failed"));default:return $.createElement(et,{variant:"body",size:"medium"},`${L} / ${K}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Bridges")),end:$.createElement($.Fragment,null,w(E,v),$.createElement(sr,{direction:"horizontal",size:8}),$.createElement(ji,{color:"black"})),onClick:()=>t(F.bridges),start:$.createElement(tE,{color:"gray",size:16})},I={id:"widget-setting-exchange-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Exchanges")),end:$.createElement($.Fragment,null,w(x,N),$.createElement(sr,{direction:"horizontal",size:8}),$.createElement(ji,{color:"black"})),start:$.createElement(oE,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},_={id:"widget-setting-custom-tokens-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Custom Tokens")),end:$.createElement($.Fragment,null,$.createElement(et,{variant:"body",size:"medium"},`${m.length}`),$.createElement(sr,{direction:"horizontal",size:8}),$.createElement(ji,{color:"black"})),start:$.createElement(dE,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},M={id:"widget-setting-language-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Language")),start:$.createElement(iE,{color:"gray",size:16}),end:$.createElement($.Fragment,null,$.createElement(et,{variant:"body",size:"medium"},s),$.createElement(sr,{direction:"horizontal",size:8}),$.createElement(ji,{color:"black"})),onClick:()=>t(F.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:$.createElement($.Fragment,null,$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Infinite approval")),$.createElement(sr,{direction:"horizontal",size:4}),$.createElement(fE,{side:"top",sideOffset:4,container:A(),content:$.createElement(Ki,null,$.createElement(et,{variant:"label",size:"medium",color:"neutral700"},$.createElement("b",null,ht.t("Warning")),":\xA0",ht.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},$.createElement(rE,{color:"gray"}))),start:$.createElement(nE,{color:"gray",size:16}),end:$.createElement(uE,{checked:C}),onClick:k},R={id:"widget-setting-theme-item-btn",type:$.createElement(sE,null),title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Theme")),end:$.createElement(hE,null,$.createElement(mE,{container:A(),items:yE,value:n,onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:SE(n)},X=d?[]:[b,I];return g||X.push(_),f||X.push(M),X.push(q),!e?.singleTheme&&!h&&X.push(R),$.createElement(aE,{type:$.createElement(lE,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:X})}i(fh,"SettingsLists");var bE=TE("div",{paddingLeft:"$8"});function gh(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=wE(),r=vE(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Po.createElement(oe,{header:{title:ic.t("Settings")}},Po.createElement(re,null,o&&Po.createElement(CE,{type:"info",variant:"alarm",title:ic.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:Po.createElement(bE,null,Po.createElement(kE,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},ic.t("Reset")))}),Po.createElement(rc,null),Po.createElement(fh,null)))}i(gh,"SettingsPage");import{i18n as fI}from"@lingui/core";import{cancelSwap as gI}from"@rango-dev/queue-manager-rango-preset";import{useManager as hI}from"@rango-dev/queue-manager-react";import{Alert as yI}from"@rango-dev/ui";import vc from"react";import{useParams as SI}from"react-router-dom";import{i18n as lt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as XE,getCurrentStep as YE,getRelatedWalletOrNull as ZE}from"@rango-dev/queue-manager-rango-preset";import{Button as Xh,CopyIcon as JE,Divider as RE,DoneIcon as eI,IconButton as tI,QuoteCost as oI,RangoExplorerIcon as nI,StepDetails as rI,Tooltip as Yh,Typography as _o,useCopyToClipboard as iI}from"@rango-dev/ui";import{useWallets as aI}from"@rango-dev/wallets-react";import Zh from"bignumber.js";import{PendingSwapNetworkStatus as oa}from"rango-types";import Y,{useEffect as Jh,useRef as sI,useState as Rh}from"react";import{useNavigate as lI}from"react-router-dom";import{i18n as so}from"@lingui/core";var xE=[so.t("Sunday"),so.t("Monday"),so.t("Tuesday"),so.t("Wednesday"),so.t("Thursday"),so.t("Friday"),so.t("Saturday")];function hh(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?so.t("Today"):`${xE[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(hh,"timeSince");function yh(t){return t.finishTime?hh(parseInt(t.finishTime)):hh(parseInt(t.creationTime))}i(yh,"getSwapDate");import{PendingSwapNetworkStatus as Zi}from"rango-types";import Ji from"react";import{i18n as Xi}from"@lingui/core";import{Button as Sh,Divider as ac,MessageBox as EE}from"@rango-dev/ui";import lo from"react";var Ch=i(({onCancel:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(ac,{size:20}),lo.createElement(EE,{type:"error",title:Xi.t("Cancel Swap"),description:Xi.t("Are you sure you want to cancel this swap?")}),lo.createElement(ac,{size:32}),lo.createElement(Sh,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Xi.t("Yes, Cancel it")),lo.createElement(ac,{size:12}),lo.createElement(Sh,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Xi.t("No, Continue"))),"CancelContent");import{i18n as Yi}from"@lingui/core";import{Button as kh,Divider as sc,MessageBox as IE,Typography as AE}from"@rango-dev/ui";import Vt from"react";var Th=i(({onDelete:t,onClose:e})=>Vt.createElement(Vt.Fragment,null,Vt.createElement(sc,{size:20}),Vt.createElement(IE,{type:"error",title:Yi.t("Delete Transaction"),description:Yi.t("Are you sure you want to delete this swap?")}),Vt.createElement(sc,{size:32}),Vt.createElement(kh,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Yi.t("Yes, Delete it")),Vt.createElement(sc,{size:12}),Vt.createElement(kh,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Vt.createElement(AE,{variant:"title",size:"medium",color:"primary"},Yi.t("No, Cancel")))),"DeleteContent");import{i18n as lc}from"@lingui/core";import{PendingSwapNetworkStatus as cc}from"rango-types";var pc={[cc.WaitingForNetworkChange]:{type:"loading",title:lc.t("Change Network")},[cc.WaitingForConnectingWallet]:{type:"warning",title:lc.t("Connect Wallet")},[cc.NetworkChanged]:{type:"success",title:lc.t("Network Changed")}};import{warn as NE}from"@rango-dev/logging-core";import{getCurrentStep as BE,getRelatedWalletOrNull as WE}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as LE,Wallet as ME}from"@rango-dev/ui";import{useWallets as PE}from"@rango-dev/wallets-react";import cn,{useState as _E}from"react";import{styled as uc}from"@rango-dev/ui";var vh=uc("div",{display:"flex",justifyContent:"center"}),DK=uc("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),wh=uc("img",{width:"100%"});var bh=i(t=>{let{type:e,title:o,swap:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,[l,c]=_E(),{getWalletInfo:u,state:p}=PE(),m=BE(n),h=m?WE(n,m):null,d=m?.fromBlockchain,f=h?.walletType,g=f?hn(p(f)):null,C=f?u(f):null,k=a&&!!f&&!!g&&!!C,{list:y}=yt(),T=i(()=>{if(f){let v=y.find(E=>E.type===f);v?c(v):NE(new Error(`It seems requested wallet to be connected is not available in the list. requested wallet: ${v}`))}},"handleWalletItemClick");return cn.createElement(cn.Fragment,null,cn.createElement(LE,{type:e,title:o,description:r}),k&&cn.createElement(vh,null,cn.createElement(ME,{container:A(),title:C.name,image:C.img,type:f,state:g,link:C.installLink,disabled:s,onClick:T})),cn.createElement(Co,{wallet:l,onClose:()=>{c(void 0)},options:{defaultSelectedChains:d?[d]:void 0}}))},"WalletStateContent");function mc(t){let{state:e,onClose:o,onDelete:n,onCancel:r,swap:a,message:s,walletButtonDisabled:l}=t,c=e===Zi.WaitingForNetworkChange||e===Zi.WaitingForConnectingWallet||e===Zi.NetworkChanged;return Ji.createElement(J,{open:!!e,onClose:o,container:document.getElementById(Fe.SWAP_BOX_ID)||document.body},c&&Ji.createElement(bh,{type:pc[e].type,title:pc[e].title,swap:a,message:s,walletButtonDisabled:l,showWalletButton:e!==Zi.WaitingForNetworkChange}),e==="delete"&&Ji.createElement(Th,{onClose:o,onDelete:n}),e==="cancel"&&Ji.createElement(Ch,{onClose:o,onCancel:r}))}i(mc,"SwapDetailsModal");import{i18n as lr}from"@lingui/core";import{Button as dc,Divider as cr,MessageBox as Ih,TokenAmount as DE,Typography as Ah}from"@rango-dev/ui";import ge from"react";import{Link as $E,useNavigate as FE}from"react-router-dom";var xh="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",Eh="/profile";function fc(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:c,chain:u,percentageChange:p,description:m,diagnosisUrl:h}=t,d=FE(),{showProfileBanner:f}=ne();return ge.createElement(J,{open:e,onClose:o,container:document.getElementById(Fe.SWAP_BOX_ID)||document.body},n==="success"?ge.createElement(Ih,{type:"success",title:lr.t("Swap Successful")},ge.createElement(DE,{direction:"vertical",tooltipContainer:A(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:c,chain:u,percentageChange:p}),ge.createElement(cr,{size:12}),ge.createElement(Ah,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):ge.createElement(Ih,{type:"error",title:lr.t("Transaction Failed"),description:m}),ge.createElement(cr,{size:30}),n==="success"&&ge.createElement(ge.Fragment,null,f&&ge.createElement(ge.Fragment,null,ge.createElement($E,{to:Eh},ge.createElement(wh,{src:xh,alt:"Profile Banner"})),ge.createElement(cr,{size:30})),ge.createElement(dc,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{d("../../")}},lr.t("Done"))),ge.createElement(cr,{size:12}),h&&ge.createElement(ge.Fragment,null,ge.createElement(dc,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(h,"_blank")},lr.t("Diagnosis")),ge.createElement(cr,{size:12})),ge.createElement(dc,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ge.createElement(Ah,{variant:"title",size:"medium",color:"primary"},lr.t("See Details"))))}i(fc,"SwapDetailsCompleteModal");import jE from"react";import{i18n as qE}from"@lingui/core";import{Alert as Gh,IconButton as GE,LinkIcon as VE}from"@rango-dev/ui";import co,{Fragment as KE}from"react";import{Alert as UE,ChevronDownIcon as zE,IconButton as QE}from"@rango-dev/ui";import un,{useState as HE}from"react";import{css as pr,darkTheme as Nh,styled as Kt,Typography as OE}from"@rango-dev/ui";var Bh=Kt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Ri=Kt("div",{width:"100%","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${Nh} &`]:{color:"$secondary500"}}}}}),Wh=Kt(Wn,{padding:"$0 $20 $20 $20"}),b8=Kt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Lh=Kt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),x8=Kt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),pn=pr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${Nh} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Mh=pr({padding:"$5 0"}),ea=pr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),Ph=pr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),_h=pr({width:"100%",padding:"0 $20 $10"}),Dh=Kt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),$h=Kt("div",{display:"flex",flexDirection:"column",gap:"$5"}),ta=Kt(OE,{wordBreak:"break-word"});import{styled as gc}from"@rango-dev/ui";var Fh=gc("div",{display:"flex",flexDirection:"column",gap:"$10"}),Oh=gc("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Uh=gc("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function zh(t){let{message:e}=t,[o,n]=HE(!1);return un.createElement(UE,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&un.createElement(QE,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},un.createElement(Oh,{rotated:o},un.createElement(zE,{size:12,color:"gray"}))),footer:un.createElement(Uh,{open:o},un.createElement(ta,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(zh,"FailedAlert");import{i18n as Qh}from"@lingui/core";import{Alert as hc,Button as Hh}from"@rango-dev/ui";import{PendingSwapNetworkStatus as yc}from"rango-types";import ur from"react";function qh(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?ur.createElement(hc,{type:"warning",title:n.shortMessage,action:ur.createElement(Hh,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(yc.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Qh.t("Change"))}):r===yc.WaitingForConnectingWallet?ur.createElement(hc,{type:"warning",title:n.shortMessage,action:ur.createElement(Hh,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(yc.WaitingForConnectingWallet)}},Qh.t("Connect"))}):ur.createElement(hc,{type:"warning",title:n.shortMessage})}i(qh,"WarningAlert");function Sc(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=Nn(a),c=a.status==="waitingForApproval"&&!l,u=a.status==="running"&&!l,p=u&&!s||c&&!a.explorerUrl?.length;return co.createElement(Fh,null,a.explorerUrl?.map((m,h,d)=>{let f=h+m.url,g=h===d.length-1,C=(g&&u||c)&&!p,k=g&&a.status==="failed";return co.createElement(KE,{key:f},co.createElement(Gh,{type:g&&(C&&"loading"||k&&"error")||"success",title:m.description?`${m.description} Tx`:qE.t("View transaction"),action:m.url&&co.createElement(GE,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},co.createElement(VE,{size:12}))}))}),p&&co.createElement(Gh,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&co.createElement(qh,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&co.createElement(zh,{message:r}))}i(Sc,"SwapDetailsAlerts");var Vh=2e3;var Kh=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:pt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:P(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:pt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:P(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:mn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(c=>({from:{chain:{displayName:pt(c.fromBlockchain,e)??"",image:c.fromBlockchainLogo??""}},to:{chain:{displayName:pt(c.toBlockchain,e)??"",image:c.toBlockchainLogo??""}},swapper:{displayName:mn(c.swapperId,o)??"",image:c.swapperLogo??"",type:c.swapperType}})):[],alerts:jE.createElement(Sc,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function jh(t){if(Nn(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(jh,"getStepState");function Cc(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=aI(),c=S().blockchains(),u=S().swappers(),{findToken:p}=S(),m=O.use.retry(),h=ne.use.isActiveTab(),d=lI(),[f,g]=iI(Vh),C=sI(null),[k,y]=Rh(null),[T,v]=Rh(null),E=i(()=>{r(),y(null)},"onCancel"),B=we.use.getNotifications(),N=we.use.removeNotification(),x=B(),w=YE(e),b=w?.networkStatus;Jh(()=>{x.find($e=>$e.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),N(e.requestId)):T&&v(null))},[e.status,e.requestId]),Jh(()=>{L?y(oa.WaitingForNetworkChange):b===oa.WaitingForConnectingWallet||b===oa.NetworkChanged?y(b):y(null)},[b]);let I=Ou(e),_=w?XE(e,w):null,M=w?ZE(e,w):null,q=yh(e),R=Uu(e),X=i(Te=>!!l(Te)?.mobileWallet,"isMobileWallet"),L=b===oa.WaitingForNetworkChange&&!!_&&!!M?.walletType&&(X(M.walletType)||a(M.walletType,_.network)),K=L?s.bind(null,M.walletType,[{namespace:_.namespace,network:_.network}]):void 0,ae=Fu(e,w,l),Q=Kh({swap:e,switchNetwork:K,showNetworkModal:b,setNetworkModal:y,message:ae,blockchains:c,swappers:u}),de=Q.length,[Ie,je]=[e.steps[0],e.steps[de-1]],se=je.outputAmount||je.expectedOutputAmountHumanReadable,ct=e.steps.reduce((Te,$e)=>Te+parseFloat($e.feeInUsd||""),0),V=e.steps.find(Te=>Te.diagnosisUrl)?.diagnosisUrl,D=P(parseFloat(se||"0")*(je.toUsdPrice||0),4,4),G=P(parseFloat(e.inputAmount)*(Ie.fromUsdPrice||0),4,4),j=se?new Zh(se).multipliedBy(je.toUsdPrice||0).toString():"",he=new Zh(e.inputAmount).multipliedBy(Ie.fromUsdPrice||0).toString(),ce=Dt(G,D),De=ae.detailedMessage.content||ae.shortMessage,Xe=e.status==="success"?lt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:P(se,6,6),token:Q[de-1].to.token.displayName,conciseAddress:Ar(e.wallets[Q[de-1].to.chain.displayName]?.address||""),chain:Q[de-1].to.chain.displayName}}):Y.createElement($h,null,Y.createElement(_o,{variant:"body",size:"medium",color:"neutral700",align:"center"},De?"":lt.t("Transaction was not sent."),I?`${lt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:I.outputAmount,symbol:I.symbol,blockchain:I.blockchain}})}`:""),De&&Y.createElement(ta,{align:"center",variant:"body",size:"medium",color:"neutral700"},Y.createElement("b",null,"Reason:")," ",De));return Y.createElement(oe,{header:{title:lt.t("Swap Details"),onCancel:e.status==="running"?()=>y("cancel"):void 0,suffix:e.status!=="running"&&Y.createElement(Jt,null,Y.createElement(Xh,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>y("delete")},Y.createElement(_o,{size:"medium",variant:"label",color:"error"},lt.t("Delete"))))},footer:R&&!T&&Y.createElement(Xh,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let Te=Qr(e,c,p);m(Te),setTimeout(()=>{d("../../")},0)}},lt.t("Try again"))},Y.createElement(re,{compact:!0,view:!0},Y.createElement(Ri,null,Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},`${lt.t("Request ID")}`),Y.createElement("div",{className:ea()},Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},o),Y.createElement(Yh,{container:A(),content:f?lt.t("Copied To Clipboard"):lt.t("Copy Request ID"),open:f||void 0,side:"bottom",alignOffset:-16,align:"end"},Y.createElement(tI,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:g.bind(null,o||"")},f?Y.createElement(eI,{size:16,color:"secondary"}):Y.createElement(JE,{size:16,color:"gray"}))),Y.createElement(Dh,{target:"_blank",href:`${Gc}/swap/${o}`},Y.createElement(Yh,{container:A(),content:lt.t("View on Rango Explorer"),side:"bottom"},Y.createElement(nI,{size:20}))))),Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},e.finishTime?lt.t("Finished at"):lt.t("Created at")),Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},q))),Y.createElement("div",{className:Ph()},Y.createElement(oI,{fee:P(String(ct),2,2),time:fn(wr(e.steps)),steps:de}),Y.createElement(Fn,{from:{price:{value:P(e.inputAmount,6,6),usdValue:G,realUsdValue:he,realValue:e.inputAmount},token:{displayName:Q[0].from.token.displayName,image:Q[0].from.token.image},chain:{image:Q[0].from.chain.image,displayName:Q[0].from.chain.displayName}},to:{price:{value:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||""},token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image,displayName:Q[de-1].to.chain.displayName}},percentageChange:P(ce,2,2),warningLevel:$t(ce??0)})),Y.createElement("div",{className:_h()},Y.createElement(_o,{variant:"title",size:"small"},lt.t("Swaps steps"))),Y.createElement(RE,{size:8}),Y.createElement(Wh,{ref:C},Q.map((Te,$e)=>{let jt=$e,po=jh(e.steps[$e]),Iy=po==="error"||po==="in-progress"||po==="warning"||po==="completed"&&$e===Q.length-1;return Y.createElement(rI,{key:jt,step:Te,type:"swap-progress",ref:C,state:po,hasSeparator:$e!==0,tabIndex:jt,isFocused:Iy,tooltipContainer:A()})}))),Y.createElement(mc,{state:k,onClose:()=>y(null),onCancel:E,onDelete:n,message:ae.detailedMessage.content,swap:e,walletButtonDisabled:!h}),Y.createElement(fc,{open:!!T,diagnosisUrl:V,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||"",percentageChange:P(ce,2,2),token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image},description:Xe}))}i(Cc,"SwapDetails");import{i18n as ra}from"@lingui/core";import{Divider as oy,NotFound as dI,Skeleton as dr,Typography as ia}from"@rango-dev/ui";import ke from"react";import{i18n as cI}from"@lingui/core";import{Divider as pI,Skeleton as uI,Typography as mI}from"@rango-dev/ui";import ve from"react";import{css as bt,styled as kc}from"@rango-dev/ui";var ey=kc("div",{width:"100%",height:"100%",padding:"$10 $20"}),mr=kc("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),na=kc("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),$6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),F6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),O6=bt({paddingTop:"$15",display:"flex"}),U6=bt({padding:"$15 $0"}),z6=bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),Q6=bt({paddingBottom:"$10"}),H6=bt({display:"flex",justifyContent:"start",alignItems:"center"}),q6=bt({paddingTop:"$5",display:"flex",alignItems:"center"}),G6=bt({display:"flex",alignItems:"center"}),V6=bt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),ty=bt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Tc(){return ve.createElement(ey,null,ve.createElement(zn,{type:"swap-preview"}),ve.createElement("div",{className:"swaps-steps"},ve.createElement(mI,{variant:"title",size:"small"},cI.t("Swaps steps"))),ve.createElement(ve.Fragment,null,ve.createElement(mr,null,ve.createElement(Bt,{separator:!1}),ve.createElement("div",{className:ty()},ve.createElement(pI,{direction:"horizontal",size:20}),ve.createElement(uI,{height:22,variant:"rectangular"}))),ve.createElement(na,null),ve.createElement(mr,null,ve.createElement(Bt,{separator:!1})),ve.createElement(na,null),ve.createElement(mr,null,ve.createElement(Bt,{separator:!1})),ve.createElement(na,null),ve.createElement(mr,null,ve.createElement(Bt,{separator:!1}))))}i(Tc,"LoadingSwapDetails");function ny(t){let{requestId:e,showSkeleton:o}=t;return ke.createElement(oe,{header:{title:ra.t("Swap Details"),suffix:ke.createElement(Jt,null)}},o&&ke.createElement(Bh,null,ke.createElement(Ri,null,ke.createElement("div",{className:pn()},ke.createElement(ia,{variant:"label",size:"large",color:"neutral700"},`${ra.t("Request ID")}`),ke.createElement("div",{className:ea()},ke.createElement(ia,{variant:"label",size:"small",color:"neutral700"},ke.createElement(dr,{width:60,height:10,variant:"rounded"})),ke.createElement(oy,{direction:"horizontal",size:4}),ke.createElement(dr,{width:16,height:16,variant:"rectangular"}),ke.createElement(oy,{direction:"horizontal",size:4}),ke.createElement(dr,{width:16,height:16,variant:"rectangular"}))),ke.createElement("div",{className:pn()},ke.createElement(ia,{className:Mh(),variant:"label",size:"large",color:"neutral700"},ke.createElement(dr,{width:60,height:10,variant:"rounded"})),ke.createElement(ia,{variant:"label",size:"small",color:"neutral700"},ke.createElement(dr,{width:60,height:10,variant:"rounded"})))),ke.createElement(Tc,null)),!o&&ke.createElement(Lh,null,ke.createElement(dI,{title:ra.t("Not found"),description:ra.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(ny,"SwapDetailsPlaceholder");function ry(){let{manager:t,state:e}=hI(),o=!e.loadedFromPersistor,n=gt(t),{requestId:r}=SI(),a=Ue(),{fetchStatus:s}=S();if(!r)return vc.createElement(yI,{containerStyles:{margin:"20px"},type:"error",title:fI.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",c=r?n.find(({swap:h})=>h.requestId===r):void 0,u=i(()=>{if(c?.id){let h=t?.get(c.id);h&&gI(h)}},"onCancel"),p=i(async()=>{if(c?.id)try{t?.deleteQueue(c.id),a()}catch(h){console.log(h)}},"onDelete"),m=c?.swap;return!m||l?vc.createElement(ny,{requestId:r,showSkeleton:l}):vc.createElement(Cc,{swap:m,requestId:r,onCancel:u,onDelete:p})}i(ry,"SwapDetailsPage");import{i18n as iy}from"@lingui/core";import{Divider as CI,getCategoriesCount as kI,SelectableCategoryList as TI,styled as sy,Typography as vI,Wallet as wI}from"@rango-dev/ui";import Lt,{useState as ay}from"react";var bI=sy("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),xI=sy(re,{textAlign:"center"});function ly(){let{fetchStatus:t}=S(),[e,o]=ay("ALL"),n=S().blockchains(),{config:r}=S(),[a,s]=ay(),l=ne.use.isActiveTab(),{list:c}=yt(),u=mp(c,n),m=kI(u)!==1,h=dp(c,e),d=i(f=>{tp(c,r.multiWallets)||s(f)},"handleWalletItemClick");return Lt.createElement(oe,{header:{title:iy.t("Connect Wallets")}},Lt.createElement(xI,null,m&&Lt.createElement(Lt.Fragment,null,Lt.createElement(TI,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Lt.createElement(CI,{size:24})),Lt.createElement(vI,{variant:"title",size:"xmedium",align:"center"},iy.t("Choose a wallet to connect.")),Lt.createElement(bI,null,h.map((f,g)=>{let C=`wallet-${g}-${f.type}`;return Lt.createElement(wI,{key:C,...f,container:A(),onClick:()=>d(f),isLoading:t==="loading",disabled:!l})}),Lt.createElement(Co,{wallet:a,onClose:()=>{s(void 0)}}))))}i(ly,"WalletsPage");function cy(){return qu(),rs(),EI([{path:F.home,element:_e.createElement(Dg,null)},{path:F.routes,element:_e.createElement(zg,null)},{path:F.fromSwap,children:[{index:!0,element:_e.createElement(Vi,{type:"source"})},{path:F.blockchains,element:_e.createElement(Qi,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:_e.createElement(Vi,{type:"destination"})},{path:F.blockchains,element:_e.createElement(Qi,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:_e.createElement(gh,null)},{path:F.languages,element:_e.createElement(Fg,null)},{path:F.exchanges,element:_e.createElement(Vl,{sourceType:"Exchanges"})},{path:F.bridges,element:_e.createElement(Vl,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:_e.createElement(Vf,null)},{path:F.addCustomTokens,children:[{index:!0,element:_e.createElement(Dm,null)},{path:F.blockchains,element:_e.createElement(Qi,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:_e.createElement(mg,null)},{path:F.swapDetails,element:_e.createElement(ry,null)}]},{path:F.wallets,element:_e.createElement(ly,null)},{path:F.confirmSwap,element:_e.createElement(Lf,null)}])}i(cy,"AppRoutes");import{useQueueManager as _I}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as DI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as $I}from"rango-sdk";import{useContext as FI,useEffect as hy,useState as yy}from"react";import{globalCss as II}from"@rango-dev/ui";var py=i(()=>II({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function uy(){let{setWatermark:t,setShowProfileBanner:e}=ne();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Pt("BASE_URL")}/meta/dapp/config?apiKey=${Pt("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(uy,"useFetchApiConfig");import{useWallets as AI}from"@rango-dev/wallets-react";import{useEffect as NI,useRef as BI}from"react";function my(){let{connect:t,state:e}=AI(),o=BI({}),{fetchStatus:n}=S(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);NI(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(my,"useForceAutoConnect");import{isApprovalTX as WI,RouteEventType as dy,StepEventType as fy,StepExecutionEventStatus as LI,WidgetEvents as aa}from"@rango-dev/queue-manager-rango-preset";import{useEffect as gy}from"react";function wc(){let t=we.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();gy(()=>{let r=i(a=>{let{event:s,step:l,route:c}=a;if(s.type===fy.TX_EXECUTION&&s.status===LI.TX_SENT&&!WI(l)||s.type===fy.SUCCEEDED){let p=[],m=c.wallets[l?.fromBlockchain];if(m){let h=e.find(d=>d.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&d.walletType===m.walletType&&d.chain===l?.fromBlockchain);h&&p.push(h)}if(l?.fromBlockchain!==l?.toBlockchain){let h=c.wallets[l?.toBlockchain];if(h){let d=e.find(f=>f.address?.toLocaleLowerCase()===h.address?.toLocaleLowerCase()&&f.walletType===h.walletType&&f.chain===l?.toBlockchain);d&&p.push(d)}}if(p.length>0){let h=n(),f=[{blockchain:l.fromBlockchain,address:l.fromSymbolAddress,symbol:l.fromSymbol},{blockchain:l.toBlockchain,address:l.toSymbolAddress,symbol:l.toSymbol}].filter(g=>h.some(C=>C.blockchain===g.blockchain&&C.address?.toLocaleLowerCase()===g.address?.toLocaleLowerCase()&&C.symbol?.toLocaleLowerCase()===g.symbol?.toLocaleLowerCase()));o(p,{selectedCustomTokens:f,shouldFetchCustomTokens:f.length>0})}}t(s,c)},"handleStepEvent");return ye.on(aa.StepEvent,r),()=>ye.off(aa.StepEvent,r)},[ye,e]),gy(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===dy.FAILED||s.type===dy.SUCCEEDED)&&t(s,l)},"handleRouteEvent");return ye.on(aa.RouteEvent,r),()=>ye.off(aa.RouteEvent,r)},[ye])}i(wc,"useSubscribeToWidgetEvents");import{useManager as MI}from"@rango-dev/queue-manager-react";import{useEffect as PI}from"react";function bc(){let{isSynced:t,syncNotifications:e}=we(),{manager:o,state:n}=MI();PI(()=>{we.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(gt(o))},[we.persist.hasHydrated(),n.loadedFromPersistor,t])}i(bc,"useSyncNotifications");function xc(){my(),py(),wc(),bc();let t=S().blockchains(),{canSwitchNetworkTo:e}=ci(),[o,n]=yy(""),[r,a]=yy(),s=FI(Fr),l=t.filter($I),{fetchApiConfig:c}=uy();hy(()=>()=>Hu(),[]),_I({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),hy(()=>(ho.init(),we.persist.hasHydrated()||we.persist.rehydrate(),s.onConnectWallet(n),s.onDisconnectWallet(u=>{a(u),u===DI(o)?.[0]&&n("")}),c().catch(console.log),ho.destroy),[])}i(xc,"useBootstrap");import{styled as OI}from"@rango-dev/ui";var Sy=OI("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function sa(){xc();let{config:t}=S(),{activeTheme:e}=Zo(t?.theme||{}),{activeLanguage:o}=io();return Ec.createElement(UI,{language:o},Ec.createElement(Sy,{id:"swap-container",className:e()},Ec.createElement(cy,null)))}i(sa,"Main");import{setSolanaSignerConfig as aA}from"@rango-dev/signer-solana";import Ac,{useEffect as by,useMemo as sA}from"react";import{useState as zI}from"react";var QI=i(()=>{let[t,e]=zI(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=ep(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),Cy=QI;import{checkWaitingForNetworkChange as HI,makeQueueDefinition as qI}from"@rango-dev/queue-manager-rango-preset";import{Provider as GI}from"@rango-dev/queue-manager-react";import{useWallets as VI}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as KI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as jI}from"rango-types";import XI,{useMemo as YI}from"react";function ZI(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=VI(),l=YI(()=>qI({API_KEY:t.apiKey||Pt("API_KEY"),BASE_URL:Pt("BASE_URL"),emitter:{emit:ye.emit}}),[t.apiKey]),{blockchains:c,connectedWallets:u}=S(),p=c(),m={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,E)=>a(v,E.network)?await r(v,[E]):void 0,"switchNetwork"),d=i(v=>!!s(v).mobileWallet,"isMobileWallet"),f=p.filter(v=>v.enabled).reduce((v,E)=>(v[E.name]=E,v),{}),g=p.filter(jI),C=i(v=>{let{supportedChains:E}=s(v);return yn(E)},"getSupportedChainNames"),k=e(),y={meta:{blockchains:f,evmBasedChains:g,evmNetworkChainInfo:KI(g),getSupportedChainNames:C},getSigners:o,wallets:m,providers:k,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:d},T=ne.use.isActiveTab();return XI.createElement(GI,{queuesDefs:[l],context:y,onPersistedDataLoaded:v=>{HI(v)},isPaused:!T},t.children)}i(ZI,"QueueManager");var ky=ZI;import{useManager as oA}from"@rango-dev/queue-manager-react";import nA,{createContext as rA,useContext as iA}from"react";function Ty(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=O();return i(u=>{let{fromBlockchain:p,fromToken:m,toBlockchain:h,toToken:d,requestAmount:f}=u,g={blockchains:e,tokens:o};if(p!==void 0){let C=e.find(k=>k.name===p)??null;n(C)}if(m!==void 0){let C=m?t(m)??null:null;r({meta:g,token:C})}if(h!==void 0){let C=e.find(k=>k.name===h)??null;a(C)}if(d!==void 0){let C=d?t(d)??null:null;s({meta:g,token:C})}f!==void 0&&l(f)},"updateQuoteInputs")}i(Ty,"useUpdateQuoteInputs");import{cancelSwap as JI,getCurrentNamespaceOfOrNull as RI,getCurrentStep as eA,getRelatedWalletOrNull as tA}from"@rango-dev/queue-manager-rango-preset";var la=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return gt(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=Qr(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&JI(o)}getCurrentStepInfo(e){let o=eA(e);return{step:o,wallet:o?tA(e,o):null,network:o?RI(e,o)?.network:null}}};var vy=rA(void 0);function Ic(t){let{manager:e}=oA(),o=ne.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=S(),c=new la(e,{retrySwap:n,findToken:r}),{fetchingWallets:u}=S(),p=ap(a()),m=S().blockchains(),h=S().tokens(),d=S().swappers(),f=S().fetchStatus,g=io().resetLanguage,C=we().getNotifications(),k=we().clearNotifications,y=Ty(),{fromBlockchain:T,toBlockchain:v,fromToken:E,toToken:B,inputAmount:N}=O(),x={isActiveTab:o,setCurrentTabAsActive:ho.forceClaim,history:c,wallets:{isLoading:u,details:s(),totalBalance:p,refetch:async w=>l(w)},meta:{blockchains:m,tokens:h,swappers:d,loadingStatus:f,findToken:r},resetLanguage:g,notifications:{list:C,clearAll:k},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:E?{symbol:E.symbol,blockchain:E.blockchain,address:E.address}:null,toBlockchain:v?.name??null,toToken:B?{symbol:B.symbol,blockchain:B.blockchain,address:B.address}:null,requestAmount:N},updateQuoteInputs:y}};return nA.createElement(vy.Provider,{value:x},t.children)}i(Ic,"WidgetInfo");function wy(){let t=iA(vy);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(wy,"useWidget");function ca(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=Cy();return by(()=>{n&&r(n)},[n]),sA(()=>{fp({API_KEY:o?.apiKey||Cr,BASE_URL:o?.apiUrl||qc})},[o.apiKey,o.apiUrl]),by(()=>{t.config?.signers?.customSolanaRPC&&aA("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Ac.createElement(Or,{config:o,onUpdateState:e},Ac.createElement(ky,{apiKey:o.apiKey},Ac.createElement(Ic,null,t.children)))}i(ca,"WidgetProvider");function xy(t){let e=t.config?.externalWallets;return pa.createElement(uu,null,e?pa.createElement(sa,null):pa.createElement(ca,{config:t.config??yr},pa.createElement(sa,null)))}i(xy,"Widget");function Ey(){let{on:t,off:e}=ye;return{on:t,off:e}}i(Ey,"useWidgetEvents");var RY={DerivationPath:xn,Namespaces:bn,isOnDerivationPath:In,isOnNamespace:En};export{xY as EventSeverity,Qo as MainEvents,_Y as Networks,FY as PendingSwapNetworkStatus,xa as QuoteEventTypes,EY as RouteEventType,fa as SUPPORTED_FONTS,RY as StatefulConnect,IY as StepEventType,AY as StepExecutionBlockedEventStatus,NY as StepExecutionEventStatus,Fe as UI_ID,Ia as UiEventTypes,Ea as WalletEventTypes,MY as WalletEvents,DY as WalletTypes,xy as Widget,Qo as WidgetEvents,ca as WidgetProvider,Or as WidgetWallets,ys as customizedThemeTokens,WY as readAccountAddress,Xt as useStatefulConnect,yt as useWalletList,ci as useWallets,wy as useWidget,Ey as useWidgetEvents,BS as widgetEventEmitter};
3
3
  //# sourceMappingURL=index.js.map