@rango-dev/widget-embedded 0.41.2-next.4 → 0.41.2-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Ey=Object.defineProperty;var i=(t,e)=>Ey(t,"name",{value:e,configurable:!0});import{EventSeverity as hY,RouteEventType as yY,StepEventType as SY,StepExecutionBlockedEventStatus as CY,StepExecutionEventStatus as kY}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as vY}from"@rango-dev/wallets-core/legacy";import{useWallets as si,Events as bY}from"@rango-dev/wallets-react";import{Networks as EY,WalletTypes as IY}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as NY}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(S=>({namespace:S}));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 l0,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(k=>o.includes(k)).forEach(k=>{s(k,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),S=e().isTokenPinned(g,o.type);if(C!==S)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 k=c.get(f.blockchain),T=c.get(g.blockchain),v=ua(f,k),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:k&&T?k.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 y(){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(y,"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}=y(),{state:r,getWalletInfo:a}=OS(),s=y().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(k=>k.type===kn.DEFAULT);return!C||C.state===Wa.NOT_INSTALLED?!1:g.filter(k=>k.state!=Wa.NOT_INSTALLED&&![kn.DEFAULT,kn.WALLET_CONNECT_2,kn.LEDGER].includes(k.type)&&a(k.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),f=i((g,C,S)=>xr(S,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}),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=y().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 tW=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(k=>{a(k.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=yt(),{handleConnect:c,handleDerivationPath:u,handleNamespace:p,getState:m,resetState:h}=Xt(),d=i(k=>{p(t.wallet,k).then(S).catch(s)},"handleConfirmNamespaces"),f=i(k=>{if(!k)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");u(k).then(S).catch(s)},"handleDerivationPathConfirm"),g=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),S=i((k,T)=>{let v=k.status==="connected",E=["disconnected","disconnected-unhandled"].includes(k.status);v?(t.onConnect?.(),T||(e.current=setTimeout(g,xC))):E&&g()},"afterConnected");return wC(()=>{if(t.wallet){C();let k=!1,T=!0;i(()=>{setTimeout(()=>{T=!1,k||n(!0)},EC)},"beforeConnecting")(),c(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","derivation-path"].includes(E.status)||(k=!0),S(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}=y(),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}=y(),{onConnectWalletHandler:l,onDisconnectWalletHandler:c}=t,u=s().filter(NC).map(g=>g.name),p=i((g,C)=>{let[S,,k,,T]=g,v=ya(S,k,u,C.supportedChainNames,T.isContractWallet);v.length&&e(v,T.namespace)},"onAccountsEvent"),m=i((g,C,S,k,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains);S&&p([g,C,S,k,T],{supportedChainNames:v})}if(C===ko.CONNECTED){let v=`${g}-${k.network}-${S}`;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,S)},"handleUpdatesForHub"),h=i((g,C,S,k,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains),E=[],B=[];if(S?.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})})}S?p([g,C,S,k,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&&k.connected){let v=`${g}-${k.network}-${S}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForLegacy"),d=i((g,C,S,k,T)=>{if(C===ko.NETWORK&&k.network){let v=`${g}-${k.network}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((g,C,S,k,T)=>{T.isHub?m(g,C,S,k,T):h(g,C,S,k,T),d(g,C,S,k,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}=y(),a=y().blockchains(),s=y().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,S,k)=>{let T=[f,g,C,S,k];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 TI}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 zC}from"zustand";import{subscribeWithSelector as QC}from"zustand/middleware";import{i18n as St}from"@lingui/core";import{RouteEventType as HL}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 NL 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((k,T)=>(k[T.chain]=T.address,k),{}),C=[];return r?.forEach(k=>{C.push({blockchain:k.chain,addresses:[k.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(k=>!s.includes(k)),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){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),An(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case qr.WaitingForConnectingWallet:n=n||St.t("Waiting for connecting wallet");break;case qr.WaitingForQueue:n=n||St.t("Waiting for other running tasks to be finished");break;case qr.WaitingForNetworkChange:n=n||St.t("Waiting for changing wallet network");break;default:n=n||"";break}r=r||"",n=n||"";let s=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:r,long:s}}}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(zC()(QC(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=y().config,m=y().fetchStatus,h=y().blockchains(),{findToken:d}=y(),{setAffiliateRef:f,setAffiliatePercent:g,setAffiliateWallets:C}=y(),S=p?.from?.tokens,k=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,S)&&a({token:null}),Ta(c,k)&&n(null)},[S,k]),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 HC}from"react";import{useInRouterContext as qC,useLocation as GC,useSearchParams as VC}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=GC(),[e,o]=VC(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:c,setToBlockchain:u,setFromToken:p,setToToken:m,setInputAmount:h}=O(),d=y().fetchStatus,f=y().blockchains(),g=qC(),{updateIframe:C,updateCampaignMode:S}=y(),k=y().isInCampaignMode(),T=HC(),{findToken:v}=y(),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:k?T.current:void 0,...w})},[t.pathname,l,n,a,r,s,k]),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),S("liquiditySources",x?.split(",")??void 0)},[])}i(os,"useSyncUrlAndStore");import{i18n as Ro}from"@lingui/core";import{Alert as lT,Button as cT,darkTheme as pT,Divider as Bs,DoneIcon as uT,styled as mT,TextField as dT,Typography as fT}from"@rango-dev/ui";import Ue,{useState as gT}from"react";import{useNavigate as hT,useSearchParams as yT}from"react-router-dom";import{ChevronRightIcon as KC,Divider as Vu,Image as jC,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(jC,{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(KC,{size:12,color:"black"})))}i(rs,"BlockchainSelectorButton");import{i18n as ss}from"@lingui/core";import{Button as ZC,Divider as Ru,MessageBox as JC}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 XC,Image as YC,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(YC,{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(XC,{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}=y(),[m,h]=ls(!1),[d,f]=ls(!1),[g,C]=ls(!1),S=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),k=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),T=i(()=>{C(!0),k()},"handleErrorModalButtonClick"),v=i(()=>{g&&n?.type==="network-error"&&(C(!1),S()),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:k,onExit:v,container:A()},Zt.createElement(JC,{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(ZC,{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 nT}from"@rango-dev/queue-manager-react";import{BottomLogo as rT,Divider as Am,Header as iT}from"@rango-dev/ui";import be,{useEffect as ti,useRef as Nm,useState as Bm}from"react";import{useRef as RC}from"react";function jr(){return window.self!==window.top}i(jr,"isAppLoadedIntoIframe");function cs(){let t=RC(null),{iframe:e}=y(),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 ek}from"react-router-dom";function Oe(){let t=ek();return()=>t(-1)}i(Oe,"useNavigateBack");import{createTheme as hs,darkTheme as fk,lightTheme as gk}from"@rango-dev/ui";import{useEffect as hk,useState as yk}from"react";import{theme as mk,darkColors as dk}from"@rango-dev/ui";import fs from"react";function tk(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(tk,"expandShortHexColor");function ok(t){return/[0-9]+$/.test(t)}i(ok,"isOverridingColor");function nk(t,e){return t.padStart(e,"0")}i(nk,"pad");function ps(t){let e=Math.min(Math.max(Math.round(t),0),255);return nk(e.toString(16),2)}i(ps,"intToHex");function rk(t){return`#${ps(t.red)}${ps(t.green)}${ps(t.blue)}`}i(rk,"rgbToHex");function ik(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(ik,"hexToRGB");function ak(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(ak,"generateShade");function sk(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(sk,"generateTint");function lk(t){return tm(t,ak)}i(lk,"calculateShades");function ck(t){return tm(t,sk)}i(ck,"calculateTints");function tm(t,e){let o=ik(t),n=[];for(let r=1;r<9;r++)n.push(rk(e(o,r)));return n}i(tm,"calculateColors");function us(t,e,o){let a=ck(t).reverse().concat(t),s=lk(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)&&!ok(r)){let c=tk(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"),pk=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"),uk=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),ds=i(t=>pk(uk(5381,JSON.stringify(t))>>>0),"toHash");function gs(t){let e=mk.colors,o={...e,...dk},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]=yk(rm()?"dark":"light"),{theme:l}=y(),{dark:c,light:u}=gs(e),p=hs({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[p.className,gk.className],h=[p.className,fk.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 hk(()=>{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 Sk,Button as Ck}from"@rango-dev/ui";import am from"react";function ys(t){return am.createElement(Sk,{action:am.createElement(Ck,{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 kk,Divider as Tk,MessageBox as vk}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(vk,{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(Tk,{size:20}),Xr.createElement(kk,{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 xk}from"@rango-dev/ui";import fm from"react";import{css as wk,darkTheme as sm,IconButton as bk,styled as wo}from"@rango-dev/ui";var At=wo(bk,{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=wk({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(xk,{color:"black",size:16}))}i(ks,"BackButton");import{i18n as Ek}from"@lingui/core";import{Button as Ik,Typography as Ak}from"@rango-dev/ui";import Ts from"react";function vs(t){return Ts.createElement(Jt,null,Ts.createElement(Ik,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Ts.createElement(Ak,{variant:"label",size:"medium",color:"error500"},Ek.t("Cancel"))))}i(vs,"CancelButton");import{i18n as Nk}from"@lingui/core";import{Image as Bk,Tooltip as Wk,WalletIcon as Lk}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(Bk,{src:r.image,size:14})))):Nk.t("Connect Wallet");return bo.createElement(Wk,{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(Lk,{size:18,color:"black"})))}i(ws,"WalletButton");import{i18n as Zr}from"@lingui/core";import{NotificationsIcon as jk,Popover as Xk,SettingsIcon as Yk,Tooltip as Jr,TransactionIcon as Zk}from"@rango-dev/ui";import Be from"react";import{Notifications as Dk}from"@rango-dev/ui";import $k from"react";import{useNavigate as Fk}from"react-router-dom";import{create as Mk}from"zustand";import{persist as Pk,subscribeWithSelector as _k}from"zustand/middleware";var we=Ho(Mk()(Pk(_k((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=Fk(),{getNotifications:e,clearNotifications:o}=we(),n=e(),r=y().blockchains(),{findToken:a}=y();return $k.createElement(Dk,{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 Ok}from"@rango-dev/queue-manager-react";import{InProgressIcon as Uk}from"@rango-dev/ui";import gm from"react";var zk=i(()=>{let{manager:t}=Ok();return gt(t).map(({swap:o})=>o).find(o=>o.status==="running")?gm.createElement(um,null,gm.createElement(Uk,{color:"info",size:6})):null},"InProgressTransactionBadge"),hm=zk;import{EventSeverity as Qk}from"@rango-dev/queue-manager-rango-preset";import{Typography as Hk}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===Qk.WARNING);return o?ym.createElement(cm,{isSever:n},ym.createElement(Hk,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(Sm,"NotificationsBadge");import{RefreshProgressButton as qk}from"@rango-dev/ui";import xs,{useEffect as Gk,useState as Cm}from"react";var Vk=1e3,km=60,Kk=100;function Yr({onClick:t}){let[e,o]=Cm(0),[n,r]=Cm(!1),a=i(c=>{document.hidden&&c&&s(c)},"handleVisibilityChange");Gk(()=>{let c;return t?c=window.setInterval(()=>{o(u=>u+1),e===km&&l()},Vk):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(qk,{size:22,color:t?"black":"gray",progress:e/km*Kk})))}i(Yr,"RefreshButton");function xo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=y(),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(Xk,{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(jk,{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(Yk,{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(Zk,{size:18,color:"black"}),Be.createElement(hm,null))))}i(xo,"HeaderButtons");import{i18n as Es}from"@lingui/core";import{Divider as vm,MessageBox as eT,RefreshIcon as tT}from"@rango-dev/ui";import Jo from"react";import{Button as Jk,styled as Rk}from"@rango-dev/ui";var Tm=Rk(Jk,{"& 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(eT,{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(tT,{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 oT,styled as Rr}from"@rango-dev/ui";var wm="700px",ei=oT({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}}=y(),[p,m]=Bm(!1),{config:{features:h,theme:d}}=y(),{watermark:f}=ne(),g=f==="FULL",{activeTheme:C}=Zo(d||{}),[S,k]=Bm(!1),T=Xe("connectWalletButton",h),{isActiveTab:v,tabManagerInitiated:E,showActivateTabModal:B,setShowActivateTabModal:N,activateCurrentTab:x}=ne(),w=Oe(),{manager:b}=nT(),_=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));k(!!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:S},be.createElement(iT,{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(rT,null))),S&&be.createElement(Im,null,u?.swapBoxBanner?.element),be.createElement(Is,{open:p,onClose:()=>m(!1)}))}i(oe,"Layout");import{styled as aT}from"@rango-dev/ui";var Wm="$20 $20 $10 $20",Bn=aT("div",{padding:Wm,overflowY:"auto",flexGrow:1});import{styled as sT}from"@rango-dev/ui";var re=sT("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}=y(),l=y().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(S=>S.address?.toLowerCase()===h.toLowerCase())){let S=u("duplicated");n(S);return}let f=await tt().getCustomToken({blockchain:m,address:h});if(!f||!f.token||f.error){let S=u("not-found",m);n(S);return}let g=f.token;if(s({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let S=u("token-exist");n(S);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 ST=mT("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${pT} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Mm(){let t=hT(),[e]=yT(),o=Oe(),n=y().blockchains(),r=e.get("blockchain")||"",a=uo(r,n),[s,l]=gT(""),{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(ST,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(fT,{size:"large",variant:"label"},Ro.t("Enter Address")),Ue.createElement(Bs,{size:10}),Ue.createElement(dT,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:Ro.t("Enter token address"),size:"large",value:s,suffix:!!s&&d&&Ue.createElement(uT,{color:"success",size:12}),onChange:C=>l(C.target.value)}),!d&&!!s&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Bs,{size:4}),Ue.createElement(lT,{type:"error",variant:"alarm",title:"Invalid Address"}))),Ue.createElement(cT,{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 tw}from"@rango-dev/queue-manager-react";import{Alert as ow,Button as nw,css as ll,Divider as sl,IconButton as Af,styled as rw,Typography as iw,WalletIcon as aw}from"@rango-dev/ui";import Le,{useEffect as Ni,useLayoutEffect as sw,useRef as lw,useState as Hn}from"react";import{useNavigate as cw}from"react-router-dom";import{i18n as Eo}from"@lingui/core";import{Alert as HT,BalanceErrors as qT,Button as sd,ChevronLeftIcon as GT,Divider as Fs,MessageBox as VT,Typography as Os}from"@rango-dev/ui";import te,{useCallback as KT,useEffect as ld,useMemo as jT,useState as on}from"react";import{useNavigate as XT}from"react-router-dom";import{i18n as Ps}from"@lingui/core";import{Alert as wT,ChevronDownIcon as bT,CloseIcon as xT,Divider as Um,IconButton as zm,PasteIcon as ET,Typography as IT,WalletIcon as AT}from"@rango-dev/ui";import We,{useEffect as NT,useRef as BT}from"react";import ii,{useRef as TT}from"react";import*as en from"@radix-ui/react-collapsible";import{keyframes as Pm,styled as oi}from"@rango-dev/ui";var Ws=300,CT=Pm({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),kT=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:`${CT} ${Ws}ms ease-out`},false:{animation:`${kT} ${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=TT(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 vT}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(vT,{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}=y(),l=y().blockchains(),c=fr(e.name,l),u=BT(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 S=>{if(S.preventDefault(),navigator.clipboard!==void 0){let k=await navigator.clipboard.readText();a(k),u?.current?.focus()}},"handlePaste"),C=i(()=>r?We.createElement(zm,{id:"widget-custom-destination-close-icon-btn",onClick:f,variant:"ghost"},We.createElement(xT,{size:12,color:"gray"})):m?null:We.createElement(zm,{id:"widget-custom-destination-paste-icon-btn",onClick:g,variant:"ghost"},We.createElement(ET,{size:16})),"renderSuffix");return NT(()=>{!!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(AT,{size:18,color:"info"}),We.createElement(Um,{size:4,direction:"horizontal"}),We.createElement(IT,{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(bT,{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:S=>{let k=S.target.value;a(k)}})),d&&We.createElement(We.Fragment,null,We.createElement(Um,{size:4}),We.createElement(wT,{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 WT,darkTheme as _s,IconButton as LT,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%"}),MT=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(MT,{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(LT,{position:"absolute",left:"$20"}),jm=Ft("div",{paddingTop:"$20"}),Xm=WT({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 FT}from"@rango-dev/logging-core";import{Divider as OT,SelectableWallet as UT,Typography as rd,WalletState as id}from"@rango-dev/ui";import Ze,{useEffect as ad,useState as Ln}from"react";import{Image as DT,MessageBox as $T}from"@rango-dev/ui";import Wn from"react";import{keyframes as PT,styled as Ds}from"@rango-dev/ui";var Jm=Ds("div",{position:"relative"}),_T=PT({"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:`${_T} 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($T,{type:r.type,title:r.title,description:r.description,icon:a?Wn.createElement(Jm,null,Wn.createElement(ed,null,Wn.createElement(DT,{src:n,size:45})),Wn.createElement(Rm,null)):void 0})}i(od,"ExperimentalChainStatus");var zT=7,QT=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}=y(),[p,m]=Ln(),[h,d]=Ln(null),[f,g]=Ln(!1),[C,S]=Ln(null),{suggestAndConnect:k}=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),S("in-progress");try{await k(I.walletType,I.chain),S("completed")}catch{S("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(()=>S(null),QT)),()=>{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(_,zT):"",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:S.bind(null,null),container:b},Ze.createElement(od,{status:C,displayName:ae,image:I.image}),Ze.createElement(OT,{direction:"vertical",size:32})),Ze.createElement(UT,{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):FT(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 YT=2;function cd(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=XT(),l=y().blockchains(),{selectedQuote:c,setSelectedWallets:u,quoteWalletsConfirmed:p,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:d}=O(),{config:f,connectedWallets:g,setWalletsAsSelected:C}=y(),[S,k]=on(""),[T,v]=on([]),[E,B]=on(""),[N,x]=on(!!h),w=jT(()=>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=KT(()=>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(S&&k(""),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:!S,container:V,...!S&&{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")))},...S&&{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:k.bind(null,"")},te.createElement(GT,{size:16})),te.createElement(Os,{variant:"headline",size:"small"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:pt(S,l)}})))},anchor:"center"},te.createElement(J,{open:ae,onClose:v.bind(null,[]),container:V},te.createElement(VT,{title:Eo.t("Insufficient account balance"),type:"error",description:te.createElement(qT,{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")))),S&&te.createElement(jm,null,te.createElement("div",{className:Xm()},te.createElement($s,{chain:S,quoteChains:w,isSelected:Q,selectWallet:Ke,onShowMore:()=>k(S),onConnect:D=>{K(S,D)}}))),!S&&te.createElement(te.Fragment,null,E&&te.createElement(te.Fragment,null,te.createElement(HT,{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:YT,onShowMore:()=>k(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 gv}from"@lingui/core";import{Alert as hv,Button as yv,InfoIcon as Sv}from"@rango-dev/ui";import nt from"react";import{Alert as RT,Button as ev,Divider as Qs,NoRouteIcon as tv,RefreshIcon as ov,Typography as hd}from"@rango-dev/ui";import ot from"react";import{i18n as pd}from"@lingui/core";var ZT=24,JT=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=ZT]="small",o[o.large=JT]="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=y().getDisabledLiquiditySources(),a=y().toggleAllLiquiditySources,s=y().swappers(),l=ud(o,r,()=>a(s,!0),e);return ot.createElement(md,null,ot.createElement(tv,{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(RT,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&ot.createElement(ev,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:ot.createElement(gd,null,ot.createElement(ov,{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 rv,Divider as iv,MessageBox as av,Typography as sv,WarningIcon as lv}from"@rango-dev/ui";import Ot from"react";import{Typography as kd}from"@rango-dev/ui";import qs from"react";import{darkTheme as nv,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",[`.${nv} &`]:{$$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(rv,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ot.createElement(lv,null),fullWidth:!0,disabled:a,onClick:n},ee().highValueLossError.confirmMessage),open:e,onClose:o,container:A()},Ot.createElement(av,{type:s,title:ee().highValueLossError.impactTitle,description:ee().highValueLossError.description}),Ot.createElement(Hs,null,Ot.createElement(iv,{size:"4"}),Ot.createElement(sv,{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 cv,Typography as pv}from"@rango-dev/ui";import Io from"react";import{useNavigate as uv}from"react-router-dom";function Ed(t){let{customSlippage:e,slippage:o}=y(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,c=uv(),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(pv,{variant:"label",size:"medium",color:"$neutral900"},nn.t("Change settings"))),container:A(),onClose:r},Io.createElement(cv,{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 mv,MessageBox as dv,WarningIcon as fv}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(mv,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:ui.createElement(fv,null),fullWidth:!0,disabled:r,onClick:n},ee().unknownPriceError.confirmMessage),open:e,onClose:o,container:A()},ui.createElement(dv,{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(hv,{title:d.title,type:d.alertType,variant:"alarm",...d.action==="show-info"&&{action:nt.createElement(Cd,{onClick:l},nt.createElement(Sv,{size:12,color:"gray"}))},...d.action==="change-settings"&&{action:nt.createElement(yv,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:d.alertType,onClick:p},gv.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 Xv from"bignumber.js";import xi from"react";import{i18n as Ao}from"@lingui/core";import{Alert as Dv,Divider as an,FullExpandedQuote as $v,InfoIcon as Fv,NumericTooltip as af,QuoteTag as Ov,StepDetails as Uv,TokenAmount as zv,Typography as sn}from"@rango-dev/ui";import Rs from"bignumber.js";import U,{useRef as Qv,useState as Hv}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 Cv,css as Dn,darkTheme as xe,Image as Bd,styled as Qe,Typography as kv}from"@rango-dev/ui";var Tv=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(Cv,{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 ${Tv}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),IO=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(kv,{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 wv,CloseIcon as bv,Divider as hi,IconButton as xv,NumericTooltip as Ev,QuoteCost as Iv,Typography as kt}from"@rango-dev/ui";import Z,{useState as jd}from"react";import{css as vv,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=vv({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Av=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(Iv,{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(xv,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},Z.createElement(bv,{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,S])=>S.map((k,T)=>{let v=`payable-fee-${T}`,E=Za(k);return Z.createElement(gi,{key:v},Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},Va(C,Nt.t)),Z.createElement(Ev,{content:k.amount,container:f},Z.createElement(kt,{variant:"label",size:"medium"},P(k.amount,2,2)," ",k.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(wv,{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
|
|
1
|
+
var Ey=Object.defineProperty;var i=(t,e)=>Ey(t,"name",{value:e,configurable:!0});import{EventSeverity as hY,RouteEventType as yY,StepEventType as SY,StepExecutionBlockedEventStatus as CY,StepExecutionEventStatus as kY}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as vY}from"@rango-dev/wallets-core/legacy";import{useWallets as si,Events as bY}from"@rango-dev/wallets-react";import{Networks as EY,WalletTypes as IY}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as NY}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(S=>({namespace:S}));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 l0,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(k=>o.includes(k)).forEach(k=>{s(k,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),S=e().isTokenPinned(g,o.type);if(C!==S)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 k=c.get(f.blockchain),T=c.get(g.blockchain),v=ua(f,k),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:k&&T?k.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 y(){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(y,"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}=y(),{state:r,getWalletInfo:a}=OS(),s=y().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(k=>k.type===kn.DEFAULT);return!C||C.state===Wa.NOT_INSTALLED?!1:g.filter(k=>k.state!=Wa.NOT_INSTALLED&&![kn.DEFAULT,kn.WALLET_CONNECT_2,kn.LEDGER].includes(k.type)&&a(k.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),f=i((g,C,S)=>xr(S,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=y().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 tW=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(k=>{a(k.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=yt(),{handleConnect:c,handleDerivationPath:u,handleNamespace:p,getState:m,resetState:h}=Xt(),d=i(k=>{p(t.wallet,k).then(S).catch(s)},"handleConfirmNamespaces"),f=i(k=>{if(!k)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");u(k).then(S).catch(s)},"handleDerivationPathConfirm"),g=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),S=i((k,T)=>{let v=k.status==="connected",E=["disconnected","disconnected-unhandled"].includes(k.status);v?(t.onConnect?.(),T||(e.current=setTimeout(g,xC))):E&&g()},"afterConnected");return wC(()=>{if(t.wallet){C();let k=!1,T=!0;i(()=>{setTimeout(()=>{T=!1,k||n(!0)},EC)},"beforeConnecting")(),c(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","derivation-path"].includes(E.status)||(k=!0),S(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}=y(),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}=y(),{onConnectWalletHandler:l,onDisconnectWalletHandler:c}=t,u=s().filter(NC).map(g=>g.name),p=i((g,C)=>{let[S,,k,,T]=g,v=ya(S,k,u,C.supportedChainNames,T.isContractWallet);v.length&&e(v,T.namespace)},"onAccountsEvent"),m=i((g,C,S,k,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains);S&&p([g,C,S,k,T],{supportedChainNames:v})}if(C===ko.CONNECTED){let v=`${g}-${k.network}-${S}`;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,S)},"handleUpdatesForHub"),h=i((g,C,S,k,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains),E=[],B=[];if(S?.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})})}S?p([g,C,S,k,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&&k.connected){let v=`${g}-${k.network}-${S}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForLegacy"),d=i((g,C,S,k,T)=>{if(C===ko.NETWORK&&k.network){let v=`${g}-${k.network}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((g,C,S,k,T)=>{T.isHub?m(g,C,S,k,T):h(g,C,S,k,T),d(g,C,S,k,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}=y(),a=y().blockchains(),s=y().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,S,k)=>{let T=[f,g,C,S,k];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 TI}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 zC}from"zustand";import{subscribeWithSelector as QC}from"zustand/middleware";import{i18n as St}from"@lingui/core";import{RouteEventType as HL}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 NL 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((k,T)=>(k[T.chain]=T.address,k),{}),C=[];return r?.forEach(k=>{C.push({blockchain:k.chain,addresses:[k.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(k=>!s.includes(k)),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){let o="bellow button or",n=t.extraMessage,r=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(o)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(o,"")),An(e))switch(n=t.networkStatusExtraMessage||"",r=t.networkStatusExtraMessageDetail||"",e?.networkStatus){case qr.WaitingForConnectingWallet:n=n||St.t("Waiting for connecting wallet");break;case qr.WaitingForQueue:n=n||St.t("Waiting for other running tasks to be finished");break;case qr.WaitingForNetworkChange:n=n||St.t("Waiting for changing wallet network");break;default:n=n||"";break}r=r||"",n=n||"";let s=n?.indexOf("code")!==-1&&n?.indexOf("reason")!==-1;return{shortMessage:n,detailedMessage:{content:r,long:s}}}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(zC()(QC(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=y().config,m=y().fetchStatus,h=y().blockchains(),{findToken:d}=y(),{setAffiliateRef:f,setAffiliatePercent:g,setAffiliateWallets:C}=y(),S=p?.from?.tokens,k=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,S)&&a({token:null}),Ta(c,k)&&n(null)},[S,k]),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 HC}from"react";import{useInRouterContext as qC,useLocation as GC,useSearchParams as VC}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=GC(),[e,o]=VC(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:c,setToBlockchain:u,setFromToken:p,setToToken:m,setInputAmount:h}=O(),d=y().fetchStatus,f=y().blockchains(),g=qC(),{updateIframe:C,updateCampaignMode:S}=y(),k=y().isInCampaignMode(),T=HC(),{findToken:v}=y(),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:k?T.current:void 0,...w})},[t.pathname,l,n,a,r,s,k]),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),S("liquiditySources",x?.split(",")??void 0)},[])}i(os,"useSyncUrlAndStore");import{i18n as Ro}from"@lingui/core";import{Alert as lT,Button as cT,darkTheme as pT,Divider as Bs,DoneIcon as uT,styled as mT,TextField as dT,Typography as fT}from"@rango-dev/ui";import Ue,{useState as gT}from"react";import{useNavigate as hT,useSearchParams as yT}from"react-router-dom";import{ChevronRightIcon as KC,Divider as Vu,Image as jC,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(jC,{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(KC,{size:12,color:"black"})))}i(rs,"BlockchainSelectorButton");import{i18n as ss}from"@lingui/core";import{Button as ZC,Divider as Ru,MessageBox as JC}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 XC,Image as YC,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(YC,{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(XC,{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}=y(),[m,h]=ls(!1),[d,f]=ls(!1),[g,C]=ls(!1),S=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),k=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),T=i(()=>{C(!0),k()},"handleErrorModalButtonClick"),v=i(()=>{g&&n?.type==="network-error"&&(C(!1),S()),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:k,onExit:v,container:A()},Zt.createElement(JC,{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(ZC,{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 nT}from"@rango-dev/queue-manager-react";import{BottomLogo as rT,Divider as Am,Header as iT}from"@rango-dev/ui";import be,{useEffect as ti,useRef as Nm,useState as Bm}from"react";import{useRef as RC}from"react";function jr(){return window.self!==window.top}i(jr,"isAppLoadedIntoIframe");function cs(){let t=RC(null),{iframe:e}=y(),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 ek}from"react-router-dom";function Oe(){let t=ek();return()=>t(-1)}i(Oe,"useNavigateBack");import{createTheme as hs,darkTheme as fk,lightTheme as gk}from"@rango-dev/ui";import{useEffect as hk,useState as yk}from"react";import{theme as mk,darkColors as dk}from"@rango-dev/ui";import fs from"react";function tk(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(tk,"expandShortHexColor");function ok(t){return/[0-9]+$/.test(t)}i(ok,"isOverridingColor");function nk(t,e){return t.padStart(e,"0")}i(nk,"pad");function ps(t){let e=Math.min(Math.max(Math.round(t),0),255);return nk(e.toString(16),2)}i(ps,"intToHex");function rk(t){return`#${ps(t.red)}${ps(t.green)}${ps(t.blue)}`}i(rk,"rgbToHex");function ik(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(ik,"hexToRGB");function ak(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(ak,"generateShade");function sk(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(sk,"generateTint");function lk(t){return tm(t,ak)}i(lk,"calculateShades");function ck(t){return tm(t,sk)}i(ck,"calculateTints");function tm(t,e){let o=ik(t),n=[];for(let r=1;r<9;r++)n.push(rk(e(o,r)));return n}i(tm,"calculateColors");function us(t,e,o){let a=ck(t).reverse().concat(t),s=lk(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)&&!ok(r)){let c=tk(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"),pk=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"),uk=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),ds=i(t=>pk(uk(5381,JSON.stringify(t))>>>0),"toHash");function gs(t){let e=mk.colors,o={...e,...dk},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]=yk(rm()?"dark":"light"),{theme:l}=y(),{dark:c,light:u}=gs(e),p=hs({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[p.className,gk.className],h=[p.className,fk.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 hk(()=>{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 Sk,Button as Ck}from"@rango-dev/ui";import am from"react";function ys(t){return am.createElement(Sk,{action:am.createElement(Ck,{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 kk,Divider as Tk,MessageBox as vk}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(vk,{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(Tk,{size:20}),Xr.createElement(kk,{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 xk}from"@rango-dev/ui";import fm from"react";import{css as wk,darkTheme as sm,IconButton as bk,styled as wo}from"@rango-dev/ui";var At=wo(bk,{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=wk({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(xk,{color:"black",size:16}))}i(ks,"BackButton");import{i18n as Ek}from"@lingui/core";import{Button as Ik,Typography as Ak}from"@rango-dev/ui";import Ts from"react";function vs(t){return Ts.createElement(Jt,null,Ts.createElement(Ik,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Ts.createElement(Ak,{variant:"label",size:"medium",color:"error500"},Ek.t("Cancel"))))}i(vs,"CancelButton");import{i18n as Nk}from"@lingui/core";import{Image as Bk,Tooltip as Wk,WalletIcon as Lk}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(Bk,{src:r.image,size:14})))):Nk.t("Connect Wallet");return bo.createElement(Wk,{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(Lk,{size:18,color:"black"})))}i(ws,"WalletButton");import{i18n as Zr}from"@lingui/core";import{NotificationsIcon as jk,Popover as Xk,SettingsIcon as Yk,Tooltip as Jr,TransactionIcon as Zk}from"@rango-dev/ui";import Be from"react";import{Notifications as Dk}from"@rango-dev/ui";import $k from"react";import{useNavigate as Fk}from"react-router-dom";import{create as Mk}from"zustand";import{persist as Pk,subscribeWithSelector as _k}from"zustand/middleware";var we=Ho(Mk()(Pk(_k((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=Fk(),{getNotifications:e,clearNotifications:o}=we(),n=e(),r=y().blockchains(),{findToken:a}=y();return $k.createElement(Dk,{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 Ok}from"@rango-dev/queue-manager-react";import{InProgressIcon as Uk}from"@rango-dev/ui";import gm from"react";var zk=i(()=>{let{manager:t}=Ok();return gt(t).map(({swap:o})=>o).find(o=>o.status==="running")?gm.createElement(um,null,gm.createElement(Uk,{color:"info",size:6})):null},"InProgressTransactionBadge"),hm=zk;import{EventSeverity as Qk}from"@rango-dev/queue-manager-rango-preset";import{Typography as Hk}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===Qk.WARNING);return o?ym.createElement(cm,{isSever:n},ym.createElement(Hk,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(Sm,"NotificationsBadge");import{RefreshProgressButton as qk}from"@rango-dev/ui";import xs,{useEffect as Gk,useState as Cm}from"react";var Vk=1e3,km=60,Kk=100;function Yr({onClick:t}){let[e,o]=Cm(0),[n,r]=Cm(!1),a=i(c=>{document.hidden&&c&&s(c)},"handleVisibilityChange");Gk(()=>{let c;return t?c=window.setInterval(()=>{o(u=>u+1),e===km&&l()},Vk):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(qk,{size:22,color:t?"black":"gray",progress:e/km*Kk})))}i(Yr,"RefreshButton");function xo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=y(),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(Xk,{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(jk,{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(Yk,{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(Zk,{size:18,color:"black"}),Be.createElement(hm,null))))}i(xo,"HeaderButtons");import{i18n as Es}from"@lingui/core";import{Divider as vm,MessageBox as eT,RefreshIcon as tT}from"@rango-dev/ui";import Jo from"react";import{Button as Jk,styled as Rk}from"@rango-dev/ui";var Tm=Rk(Jk,{"& 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(eT,{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(tT,{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 oT,styled as Rr}from"@rango-dev/ui";var wm="700px",ei=oT({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}}=y(),[p,m]=Bm(!1),{config:{features:h,theme:d}}=y(),{watermark:f}=ne(),g=f==="FULL",{activeTheme:C}=Zo(d||{}),[S,k]=Bm(!1),T=Xe("connectWalletButton",h),{isActiveTab:v,tabManagerInitiated:E,showActivateTabModal:B,setShowActivateTabModal:N,activateCurrentTab:x}=ne(),w=Oe(),{manager:b}=nT(),_=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));k(!!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:S},be.createElement(iT,{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(rT,null))),S&&be.createElement(Im,null,u?.swapBoxBanner?.element),be.createElement(Is,{open:p,onClose:()=>m(!1)}))}i(oe,"Layout");import{styled as aT}from"@rango-dev/ui";var Wm="$20 $20 $10 $20",Bn=aT("div",{padding:Wm,overflowY:"auto",flexGrow:1});import{styled as sT}from"@rango-dev/ui";var re=sT("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}=y(),l=y().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(S=>S.address?.toLowerCase()===h.toLowerCase())){let S=u("duplicated");n(S);return}let f=await tt().getCustomToken({blockchain:m,address:h});if(!f||!f.token||f.error){let S=u("not-found",m);n(S);return}let g=f.token;if(s({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let S=u("token-exist");n(S);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 ST=mT("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${pT} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Mm(){let t=hT(),[e]=yT(),o=Oe(),n=y().blockchains(),r=e.get("blockchain")||"",a=uo(r,n),[s,l]=gT(""),{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(ST,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(fT,{size:"large",variant:"label"},Ro.t("Enter Address")),Ue.createElement(Bs,{size:10}),Ue.createElement(dT,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:Ro.t("Enter token address"),size:"large",value:s,suffix:!!s&&d&&Ue.createElement(uT,{color:"success",size:12}),onChange:C=>l(C.target.value)}),!d&&!!s&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Bs,{size:4}),Ue.createElement(lT,{type:"error",variant:"alarm",title:"Invalid Address"}))),Ue.createElement(cT,{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 tw}from"@rango-dev/queue-manager-react";import{Alert as ow,Button as nw,css as ll,Divider as sl,IconButton as Af,styled as rw,Typography as iw,WalletIcon as aw}from"@rango-dev/ui";import Le,{useEffect as Ni,useLayoutEffect as sw,useRef as lw,useState as Hn}from"react";import{useNavigate as cw}from"react-router-dom";import{i18n as Eo}from"@lingui/core";import{Alert as HT,BalanceErrors as qT,Button as sd,ChevronLeftIcon as GT,Divider as Fs,MessageBox as VT,Typography as Os}from"@rango-dev/ui";import te,{useCallback as KT,useEffect as ld,useMemo as jT,useState as on}from"react";import{useNavigate as XT}from"react-router-dom";import{i18n as Ps}from"@lingui/core";import{Alert as wT,ChevronDownIcon as bT,CloseIcon as xT,Divider as Um,IconButton as zm,PasteIcon as ET,Typography as IT,WalletIcon as AT}from"@rango-dev/ui";import We,{useEffect as NT,useRef as BT}from"react";import ii,{useRef as TT}from"react";import*as en from"@radix-ui/react-collapsible";import{keyframes as Pm,styled as oi}from"@rango-dev/ui";var Ws=300,CT=Pm({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),kT=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:`${CT} ${Ws}ms ease-out`},false:{animation:`${kT} ${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=TT(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 vT}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(vT,{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}=y(),l=y().blockchains(),c=fr(e.name,l),u=BT(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 S=>{if(S.preventDefault(),navigator.clipboard!==void 0){let k=await navigator.clipboard.readText();a(k),u?.current?.focus()}},"handlePaste"),C=i(()=>r?We.createElement(zm,{id:"widget-custom-destination-close-icon-btn",onClick:f,variant:"ghost"},We.createElement(xT,{size:12,color:"gray"})):m?null:We.createElement(zm,{id:"widget-custom-destination-paste-icon-btn",onClick:g,variant:"ghost"},We.createElement(ET,{size:16})),"renderSuffix");return NT(()=>{!!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(AT,{size:18,color:"info"}),We.createElement(Um,{size:4,direction:"horizontal"}),We.createElement(IT,{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(bT,{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:S=>{let k=S.target.value;a(k)}})),d&&We.createElement(We.Fragment,null,We.createElement(Um,{size:4}),We.createElement(wT,{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 WT,darkTheme as _s,IconButton as LT,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%"}),MT=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(MT,{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(LT,{position:"absolute",left:"$20"}),jm=Ft("div",{paddingTop:"$20"}),Xm=WT({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 FT}from"@rango-dev/logging-core";import{Divider as OT,SelectableWallet as UT,Typography as rd,WalletState as id}from"@rango-dev/ui";import Ze,{useEffect as ad,useState as Ln}from"react";import{Image as DT,MessageBox as $T}from"@rango-dev/ui";import Wn from"react";import{keyframes as PT,styled as Ds}from"@rango-dev/ui";var Jm=Ds("div",{position:"relative"}),_T=PT({"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:`${_T} 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($T,{type:r.type,title:r.title,description:r.description,icon:a?Wn.createElement(Jm,null,Wn.createElement(ed,null,Wn.createElement(DT,{src:n,size:45})),Wn.createElement(Rm,null)):void 0})}i(od,"ExperimentalChainStatus");var zT=7,QT=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}=y(),[p,m]=Ln(),[h,d]=Ln(null),[f,g]=Ln(!1),[C,S]=Ln(null),{suggestAndConnect:k}=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),S("in-progress");try{await k(I.walletType,I.chain),S("completed")}catch{S("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(()=>S(null),QT)),()=>{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(_,zT):"",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:S.bind(null,null),container:b},Ze.createElement(od,{status:C,displayName:ae,image:I.image}),Ze.createElement(OT,{direction:"vertical",size:32})),Ze.createElement(UT,{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):FT(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 YT=2;function cd(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=XT(),l=y().blockchains(),{selectedQuote:c,setSelectedWallets:u,quoteWalletsConfirmed:p,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:d}=O(),{config:f,connectedWallets:g,setWalletsAsSelected:C}=y(),[S,k]=on(""),[T,v]=on([]),[E,B]=on(""),[N,x]=on(!!h),w=jT(()=>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=KT(()=>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(S&&k(""),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:!S,container:V,...!S&&{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")))},...S&&{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:k.bind(null,"")},te.createElement(GT,{size:16})),te.createElement(Os,{variant:"headline",size:"small"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:pt(S,l)}})))},anchor:"center"},te.createElement(J,{open:ae,onClose:v.bind(null,[]),container:V},te.createElement(VT,{title:Eo.t("Insufficient account balance"),type:"error",description:te.createElement(qT,{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")))),S&&te.createElement(jm,null,te.createElement("div",{className:Xm()},te.createElement($s,{chain:S,quoteChains:w,isSelected:Q,selectWallet:Ke,onShowMore:()=>k(S),onConnect:D=>{K(S,D)}}))),!S&&te.createElement(te.Fragment,null,E&&te.createElement(te.Fragment,null,te.createElement(HT,{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:YT,onShowMore:()=>k(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 gv}from"@lingui/core";import{Alert as hv,Button as yv,InfoIcon as Sv}from"@rango-dev/ui";import nt from"react";import{Alert as RT,Button as ev,Divider as Qs,NoRouteIcon as tv,RefreshIcon as ov,Typography as hd}from"@rango-dev/ui";import ot from"react";import{i18n as pd}from"@lingui/core";var ZT=24,JT=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=ZT]="small",o[o.large=JT]="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=y().getDisabledLiquiditySources(),a=y().toggleAllLiquiditySources,s=y().swappers(),l=ud(o,r,()=>a(s,!0),e);return ot.createElement(md,null,ot.createElement(tv,{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(RT,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&ot.createElement(ev,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:ot.createElement(gd,null,ot.createElement(ov,{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 rv,Divider as iv,MessageBox as av,Typography as sv,WarningIcon as lv}from"@rango-dev/ui";import Ot from"react";import{Typography as kd}from"@rango-dev/ui";import qs from"react";import{darkTheme as nv,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",[`.${nv} &`]:{$$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(rv,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ot.createElement(lv,null),fullWidth:!0,disabled:a,onClick:n},ee().highValueLossError.confirmMessage),open:e,onClose:o,container:A()},Ot.createElement(av,{type:s,title:ee().highValueLossError.impactTitle,description:ee().highValueLossError.description}),Ot.createElement(Hs,null,Ot.createElement(iv,{size:"4"}),Ot.createElement(sv,{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 cv,Typography as pv}from"@rango-dev/ui";import Io from"react";import{useNavigate as uv}from"react-router-dom";function Ed(t){let{customSlippage:e,slippage:o}=y(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,c=uv(),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(pv,{variant:"label",size:"medium",color:"$neutral900"},nn.t("Change settings"))),container:A(),onClose:r},Io.createElement(cv,{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 mv,MessageBox as dv,WarningIcon as fv}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(mv,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:ui.createElement(fv,null),fullWidth:!0,disabled:r,onClick:n},ee().unknownPriceError.confirmMessage),open:e,onClose:o,container:A()},ui.createElement(dv,{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(hv,{title:d.title,type:d.alertType,variant:"alarm",...d.action==="show-info"&&{action:nt.createElement(Cd,{onClick:l},nt.createElement(Sv,{size:12,color:"gray"}))},...d.action==="change-settings"&&{action:nt.createElement(yv,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:d.alertType,onClick:p},gv.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 Xv from"bignumber.js";import xi from"react";import{i18n as Ao}from"@lingui/core";import{Alert as Dv,Divider as an,FullExpandedQuote as $v,InfoIcon as Fv,NumericTooltip as af,QuoteTag as Ov,StepDetails as Uv,TokenAmount as zv,Typography as sn}from"@rango-dev/ui";import Rs from"bignumber.js";import U,{useRef as Qv,useState as Hv}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 Cv,css as Dn,darkTheme as xe,Image as Bd,styled as Qe,Typography as kv}from"@rango-dev/ui";var Tv=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(Cv,{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 ${Tv}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),IO=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(kv,{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 wv,CloseIcon as bv,Divider as hi,IconButton as xv,NumericTooltip as Ev,QuoteCost as Iv,Typography as kt}from"@rango-dev/ui";import Z,{useState as jd}from"react";import{css as vv,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=vv({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Av=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(Iv,{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(xv,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},Z.createElement(bv,{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,S])=>S.map((k,T)=>{let v=`payable-fee-${T}`,E=Za(k);return Z.createElement(gi,{key:v},Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},Va(C,Nt.t)),Z.createElement(Ev,{content:k.amount,container:f},Z.createElement(kt,{variant:"label",size:"medium"},P(k.amount,2,2)," ",k.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(wv,{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
2
|
you won\u2019t need to pay extra gas for them.`)),Z.createElement(hi,{size:10}),Object.entries(g.nonePayable).map(([C,S],k)=>{let T=Nu(S),v=Va(C,Nt.t),E=`non-payable-fee-${k}`;return Z.createElement(Av,{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 Nv,styled as Bv}from"@rango-dev/ui";var Xd=Bv("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Yd=Nv({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 Mv,ChevronRightIcon as Pv,Divider as Js,Image as _v,Tooltip as vi,Typography as Ci}from"@rango-dev/ui";import z from"react";import{useLayoutEffect as Wv,useState as Fn}from"react";var Rd=480,ef=768,tf=1024,of=1200,Lv=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 Wv(()=>(p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:c}},"useScreenDetect"),Si=Lv;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(_v,{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(Pv,{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((S,k)=>{let T=`image-${k}`;return k>=f&&z.createElement(z.Fragment,{key:T},z.createElement(On,{content:S.swapper.displayName,src:S.swapper.image??"",state:S.state,open:!1}),k!==u-1&&z.createElement(z.Fragment,null,C))}))},z.createElement(Xs,{state:r.find((S,k)=>k>=f&&(S.state==="error"||S.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(Mv,{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=y().blockchains(),{findToken:f}=y(),g=y().swappers(),{customSlippage:C,slippage:S}=y(),k=C||S,[T,v]=Hv(t.expanded),E=Qv(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(Dv,{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:k}}))))})):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($v,{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(Ov,{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(Fv,{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(zv,{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(Uv,{type:"quote-details",key:V,tooltipContainer:R,step:se,hasSeparator:ct!==M.length-1,state:se.state})})))))}i(el,"Quote");import{Divider as Kv,Skeleton as jv}from"@rango-dev/ui";import zt from"react";import{darkTheme as qv,styled as wi}from"@rango-dev/ui";var sf=wi("div",{$$color:"$colors$neutral100",[`.${qv} &`]:{$$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 Gv,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=Gv({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 Vv,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(Vv,{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(jv,{height:15,variant:"rounded"})),o&&zt.createElement(cf,null,zt.createElement(Kv,{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 Xv(e?.outputAmount):null,S=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:S?.toString()??""}})):null}i(No,"QuoteInfo");import{calculatePendingSwap as Rv}from"@rango-dev/queue-manager-rango-preset";import{useEffect as ew}from"react";import{useRef as Yv,useState as Zv}from"react";var Jv=2e3;function Ei({request:t}){let[e,o]=Zv(!1),n=Yv(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(c=>setTimeout(c,Jv)),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}=y(),p=y().getDisabledLiquiditySources(),m=y().blockchains(),h=y().tokens(),{findToken:d}=y(),f=u||c,{fetch:g,cancelFetch:C,loading:S}=Ef();return ew(()=>C,[]),{loading:S,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=Rv(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 pw=rw("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Af}`]:{width:"$48",height:"$48"}}),uw=ll({flexGrow:1,paddingRight:"$10"}),mw=ll({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),dw=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=cw(),[l,c]=Hn(""),u=!n,[p,m]=Hn(!1),[h,d]=Hn(!1),{isActiveTab:f}=ne(),g=y().getDisabledLiquiditySources(),C=lw(g),{manager:S}=tw(),{fetch:k,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 k?.({selectedWallets:L,customDestination:K});return B(ae),ae},"onConfirmSwap"),b=i(async()=>{if(E.swap&&n)try{await S?.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}),k({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||k({selectedWallets:o,customDestination:r}).then(L=>B(L)).catch(L=>console.error(L))},[]),sw(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=E.warnings?.quote??null,R=E.error,X=[];if(l&&X.push(Le.createElement(ow,{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(pw,null,Le.createElement("div",{className:uw()},Le.createElement(nw,{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(aw,{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:dw()},Le.createElement(iw,{variant:"title",size:"small"},al.t("You get")),Le.createElement("div",{className:mw()},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 Pw,CustomTokensZeroStateIcon as _w,DeleteIcon as Dw,Divider as Xn,IconButton as $w,MessageBox as Fw,NotFound as Ow,styled as vl}from"@rango-dev/ui";import fe,{useState as Tl}from"react";import{useNavigate as Uw}from"react-router-dom";import{CloseIcon as gw,IconButton as hw,SearchIcon as yw,TextField as Sw}from"@rango-dev/ui";import qn from"react";import{styled as fw}from"@rango-dev/ui";var Bf=fw("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(hw,{variant:"ghost",onClick:()=>c?.(""),size:"small"},qn.createElement(gw,{color:"gray",size:10})):null;return u&&(m=u),qn.createElement(Sw,{prefix:qn.createElement(Bf,null,qn.createElement(yw,{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 vw,CustomTokenWarning as ww,darkTheme as Qf,Divider as Qt,ExternalLinkIcon as bw,Image as xw,ListItem as Ew,NotFound as Iw,PinIcon as Aw,Skeleton as Bo,Typography as Kn,VirtualizedList as Nw}from"@rango-dev/ui";import W,{useState as Bw}from"react";import{useTranslation as Ww}from"react-i18next";import{Divider as Uf,ListItem as Tw,Skeleton as Vn}from"@rango-dev/ui";import wt from"react";import{css as ln,darkTheme as cl,ImageContainer as Cw,ListItemButton as kw,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(kw,{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"}),TQ=Je("div",{display:"flex",alignItems:"center"}),_f=Je("div",{position:"relative",[`& ${Cw}`]:{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(Tw,{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 Lw=20,Mw=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(bw,{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=y().fetchStatus,p=y().blockchains(),{getBalanceFor:m,fetchingWallets:h}=y(),{isTokenPinned:d}=y(),{setFromToken:f,setToToken:g}=O(),{t:C}=Ww(),S=Oe(),[k,T]=Bw(null),v=i(()=>{l==="source"?f({token:k,meta:{blockchains:p}}):g({token:k,meta:{blockchains:p}})},"updateToken"),E=i(()=>{v(),S()},"handleImportToken"),B=i(w=>{if(w.customToken){let{customToken:I,..._}=w;return W.createElement(vw,{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(Nw,{itemContent:w=>{let b=e[w];if(b==="skeleton")return W.createElement(Ew,{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(xw,{src:b.image===""?yr:b.image,size:30}),t.type!=="custom-token"&&d(b,t.type)&&W.createElement(Df,null,W.createElement(Aw,{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(ww,{container:A()}))):void 0,description:typeof b!="string"&&_?.info&&I&&_.type!=="COSMOS"?Mw({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=k?uo(k?.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:Lw}),u==="success"&&(e.length?W.createElement(W.Fragment,null,W.createElement(Nn,{token:k,address:k?.address??"",blockchain:x??void 0,onImport:E,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),W.createElement(Bi,{as:"ul"},N())):!!o&&W.createElement(Iw,{title:Cl.t("No results found"),description:Cl.t("Try using different keywords")}))))}i(jn,"TokenList");var zw=vl("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Qw=vl("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),Hw=vl($w,{"&:hover":{"& svg":{color:"$secondary550"}}});function Hf(){let[t,e]=Tl(""),{deleteCustomToken:o}=y(),n=y().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=O(),{mode:c}=Zo({}),u=Uw(),[p,m]=Tl(!1),[h,d]=Tl(),f=i(k=>{let T=k.target.value;e(T)},"handleSearch"),g=c==="dark",C=n.filter(k=>et(k.symbol,t)||et(k.address||"",t)||et(k.name||"",t)),S=i(()=>{if(h){let k=a?ut(a):null,T=r?ut(r):null,v=ut(h);k===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(zw,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:k=>fe.createElement(Hw,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),d(k)}},fe.createElement(Dw,{size:12,color:"gray"}))})):fe.createElement(Qw,null,fe.createElement(Ow,{icon:g?fe.createElement(Pw,{size:200}):fe.createElement(_w,{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(Fw,{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:S},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 lb}from"@rango-dev/queue-manager-react";import{Button as Nl,darkTheme as cb,Divider as Lo,MessageBox as pb,NotFound as ub,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 mb}from"react-router-dom";import{FilterIcon as Yw,Popover as Zw}from"@rango-dev/ui";import Wo from"react";import{css as qw,darkTheme as Wi,IconButton as Gw,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(Gw,{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=qw({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 Vw,Divider as Yf,ListItemButton as Kw,Radio as jw,RadioRoot as Xw,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(Vw,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Xf.t("Reset"))),it.createElement(Yf,{size:10}),it.createElement(Xw,{value:e},it.createElement(jf,null,t.list.map((n,r)=>it.createElement(Kw,{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(jw,{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(Zw,{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(Yw,{size:16,color:"black"}),!!n&&Wo.createElement(Gf,null)))))}i(bl,"FilterSelector");import{i18n as eb}from"@lingui/core";import{Divider as ng,GroupedVirtualizedList as tb,Skeleton as ob,SwapListItem as rg,Typography as nb}from"@rango-dev/ui";import He,{useCallback as ig,useEffect as rb,useRef as ib,useState as ab}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 Jw,darkTheme as Rw,styled as Zn}from"@rango-dev/ui";var xl=Jw(),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",[`.${Rw} &`]:{$$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 sb=10;function Al(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=ab([]),l=ib(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,sb),s(m(u,l.current)))},[e.length]);if(rb(()=>{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(ob,{variant:"text",width:60,size:"small"}),He.createElement(ng,{size:16})),He.createElement(ng,{size:4}),He.createElement(tg,null,g.map((k,T)=>He.createElement(rg,{isLoading:!0,key:T}))))))}return He.createElement(tb,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:d=>He.createElement(El,null,He.createElement(Il,null,He.createElement(nb,{variant:"label",size:"medium",className:xl()},p[d]))),itemContent:(d,f)=>{let g=c[d];if(!g)return null;let C=g.steps[0],S=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,tooltipContainer:A(),onlyShowTime:p[f]===eb.t("Today"),swapTokenData:{from:{token:{image:C.fromLogo,displayName:C.fromSymbol},blockchain:{image:C.fromBlockchainLogo||""},amount:P(g.inputAmount,6,6),realAmount:g.inputAmount},to:{token:{image:S.toLogo,displayName:S.toSymbol},blockchain:{image:S.toBlockchainLogo||""},amount:P(S.outputAmount||S.expectedOutputAmountHumanReadable||"",6,6),realAmount:S.outputAmount||S.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 db=Bl("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),fb=Bl("div",{display:"flex",justifyContent:"center",alignItems:"center"}),gb=Bl("div",{"._typography":{color:"$neutral700",[`.${cb}&`]:{color:"$neutral900"}}}),hb=[{id:Jn.SUCCESS,title:qe.t("Complete")},{id:Jn.RUNNING,title:qe.t("Running")},{id:Jn.FAILED,title:qe.t("Failed")}],yb=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=mb(),{manager:e,state:o}=lb(),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)||yb(B,r)||xt(N,r))&&(!u||u===E)}),[n,r,u]),g=!f?.length&&!c,C=i(()=>h(!1),"onCloseModal"),S=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(T){console.log(T)}},"onClear"),k=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:k,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(fb,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:hb})),ie.createElement(Lo,{size:"16"}),ie.createElement(db,null,g&&ie.createElement(og,null,ie.createElement(Lo,{size:32}),ie.createElement(ub,{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(pb,{type:"warning",title:qe.t("Clear Transaction History"),description:ie.createElement(gb,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:S},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 zb}from"@lingui/core";import{Button as Qb,Divider as Bg,styled as Hb,WarningIcon as qb}from"@rango-dev/ui";import Gb from"bignumber.js";import Ge,{useEffect as Wg,useState as Lg}from"react";import{useNavigate as Vb}from"react-router-dom";import{i18n as ug}from"@lingui/core";import{Alert as Cb,Divider as Wl,NoRouteIcon as kb,Typography as Tb}from"@rango-dev/ui";import Mo from"react";import{styled as Sb}from"@rango-dev/ui";var pg=Sb("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(kb,{size:24,color:"gray"}),Mo.createElement(Wl,{size:4}),Mo.createElement(Tb,{variant:"title",size:"small"},ug.t("No Routes Found")),Mo.createElement(Wl,{size:4}),Mo.createElement(Cb,{title:ug.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Ll,"SameTokensWarning");import{i18n as Ib}from"@lingui/core";import{Header as Ab}from"@rango-dev/ui";import ro,{useEffect as Nb,useState as Bb}from"react";import{i18n as wb}from"@lingui/core";import{Divider as Pl,FullExpandedQuote as bb,Typography as xb}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 vb}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(vb,{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}=y(),{findToken:S}=y(),k=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:S})},"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(xb,{size:"xmedium",variant:"title"},wb.t("Sort by")),Ce.createElement(_i,{container:k})),Ce.createElement(Pl,{size:"10"})),e&&Array.from({length:hg},(x,w)=>Ce.createElement(Ce.Fragment,{key:w},s?Ce.createElement(bb,{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:k,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 Eb,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",[`.${Eb} &`]:{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 Wb=100;function _l(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=Bb(!1),c=s?"":"is-hidden",{config:u}=y(),p=u?.variant==="full-expanded",m=fo();return Nb(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},Wb):(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(Ab,{title:Ib.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 Pb}from"@rango-dev/ui";import $l from"react";import{keyframes as Lb,styled as kg}from"@rango-dev/ui";var Dl=450,Mb=Lb({"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:`${Mb} ${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(Pb,{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}=y(),S=a?C(a):null,k=Er(S)?.amount??"0",T=S?new _b(S.amount).shiftedBy(-S.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:k,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,S?.decimals),w=S?.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 Db,useEffect as $b,useRef as Fb,useState as Ob}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 Ub=600;function Di({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Ag(),{excludeLiquiditySources:n,routing:r}=y().config,{connectedWallets:a}=y(),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:S,updateQuotePartialState:k}=O(),{slippage:T,customSlippage:v,affiliatePercent:E,affiliateRef:B,affiliateWallets:N,fetchStatus:x}=y(),w=y().getLiquiditySources(),b=y().getDisabledLiquiditySources(),I=y().excludeLiquiditySources(),{findToken:_}=y(),[M,q]=Ob(!0),R=Fb(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),k("quotes",Te),S(jt),Ii({diagnosisMessages:Te.diagnosisMessages,requestId:jt?.requestId||"",swaps:jt?.swaps});let po=jt&&Ko({currentQuote:jt,userSlippage:X,findToken:_});k("warning",po)}).catch(Te=>{let{error:De}=Ai(Te);(De?.type===0||De?.type===1)&&f(),De?.type!==2&&(k("error",De),q(!1))})}},"fetch"),de=Db(kr(Ie=>{Q(Ie)},Ub),[K]);return $b(()=>{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 Kb=Hb("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),jb=300;function Mg(){let t=Vb(),{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:S,loading:k}=Di({refetchQuote:a}),{config:T,fetchStatus:v,connectedWallets:E}=y(),{isActiveTab:B}=ne(),[N,x]=Lg(!1),b=Au({fetchMetaStatus:v,fetchingQuote:k,inputAmount:n,quote:r,anyWalletConnected:E.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),I=fp(g,C,T?.variant),_=!!n&&!!e&&!!o&&new Gb(n).gt(0)&&!Ou(e,o),M=_&&v==="success"&&k,X=(!I||I&&c?.results.length)&&(l||s);Wg(()=>{p(),h("refetchQuote",!0)},[]),Wg(()=>{f(_)},[_]);let L=(r||s)&&!N?S: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 Ge.createElement(Kb,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(qb,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||zb.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:S,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:S,onClickRefresh:L,isVisible:d}):null)}i(Mg,"Home");import{i18n as Pg}from"@lingui/core";import{Alert as Xb,Divider as Yb,List as Zb,ListItemButton as Jb,Radio as Rb,RadioRoot as ex,Typography as tx}from"@rango-dev/ui";import Wt from"react";function io(){let{setLanguage:t,language:e,config:o}=y(),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(tx,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:Wt.createElement(Rb,{value:s}),start:Wt.createElement(c,null)}});return Wt.createElement(oe,{header:{title:Pg.t("Language")}},Wt.createElement(re,null,Wt.createElement(Xb,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Wt.createElement(Yb,{size:"8"}),Wt.createElement(ex,{value:t},Wt.createElement(Zb,{type:Wt.createElement(Jb,{title:Pg.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(_g,"LanguagePage");import{i18n as qt}from"@lingui/core";import{Button as ax,Checkbox as sx,Image as lx,ListItemButton as cx,NotFound as px,Typography as ux}from"@rango-dev/ui";import Ve,{useState as mx}from"react";import{Checkbox as rx,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 ox,styled as nx}from"@rango-dev/ui";var Dg=nx(ox,{height:61});var ix=30;function Hl(){return nr.createElement(or,null,Array.from(Array(ix),(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(rx,{checked:!1})})))}i(Hl,"LoadingLiquiditySourceList");function ql({sourceType:t}){let e=y().fetchStatus,o=y().swappers(),n=y().getDisabledLiquiditySources(),[r,a]=mx(""),s=y().toggleLiquiditySource,l=y().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(S=>p.includes(S.type)),h=m.length===m.filter(S=>S.selected).length,d=i(()=>{m.forEach(S=>{h?s(S.groupTitle):S.selected||s(S.groupTitle)})},"toggleAllSources"),f=m.map(S=>{let{selected:k,groupTitle:T,logo:v,id:E,...B}=S;return{id:`widget-setting-liquidity-source-${E.toLowerCase().replace(/\s+/g,"-")}-item-btn`,start:Ve.createElement(lx,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(T)},end:Ve.createElement(sx,{checked:k,disabled:l}),title:Ve.createElement(ux,{variant:"title",size:"xmedium"},qt.t(T)),selected:k,groupTitle:T,logo:v,...B}}),g=i(S=>{let k=S.target.value;a(k)},"handleSearch"),C=f;return r&&(C=f.filter(S=>xt(S.groupTitle,r))),Ve.createElement(oe,{header:{title:qt.t(t),suffix:Ve.createElement(zl,null,Ve.createElement(ax,{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(px,{title:qt.t("No results found"),description:qt.t("Try using different keywords")})):e==="success"&&Ve.createElement(or,{disabled:l},C.map(S=>{let{groupTitle:k,...T}=S;return Ve.createElement(Ve.Fragment,{key:S.id},Ve.createElement(cx,{style:{height:"61px"},...T,selected:!1,hasDivider:!0}))}))))}i(ql,"LiquiditySourcePage");import{i18n as dx}from"@lingui/core";import $i from"react";import{useNavigate as fx}from"react-router-dom";function Fg(){let t=fx(),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:dx.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 bx,SelectableCategoryList as xx}from"@rango-dev/ui";import Gt,{useState as Kg}from"react";import{useNavigate as Ex}from"react-router-dom";import{i18n as Gl}from"@lingui/core";import{Divider as Sx,Image as Cx,ListItemButton as kx,NotFound as Tx,Typography as qg}from"@rango-dev/ui";import at,{useEffect as vx,useState as wx}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 gx,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",[`& ${gx}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as hx,Skeleton as Qg}from"@rango-dev/ui";import Oi from"react";var yx=20;function Hg(){return Oi.createElement(Fi,null,Array.from(Array(yx),t=>Oi.createElement(hx,{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]=wx(e),{fetchStatus:c}=y();vx(()=>{l([...Og(e,o,r)])},[e,o,r]);let u=i(()=>!s.length&&o?at.createElement(Tx,{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(kx,{key:`${p.name}-${p.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(p),start:at.createElement(Cx,{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(Sx,{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}=y(),p=Ex(),m=y().blockchains({type:e}),h=bx(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(xx,{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 Ox}from"@rango-dev/ui";import ao,{useEffect as Ux,useState as zx}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 Wx,Tooltip as Lx,Typography as Yl}from"@rango-dev/ui";import Me from"react";import{useEffect as Nx}from"react";var jg=["ETH","COSMOS","OSMOSIS"];function Kl(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Ix),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(Ax(s)),r=n.splice(a)}return{list:n,more:r}}i(Kl,"prepare");function Ix(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(Ix,"sortByMostUsedBlockchains");function Ax(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(Ax,"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}=y();Nx(()=>{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 Bx}from"@rango-dev/ui";var Yg=Bx("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var Mx=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}=y(),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(Mx),d=>Me.createElement(Wx,{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(Lx,{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 Dx,useState as Jl}from"react";function Rl(){let t=y().blockchains(),e=Dx(null),{customTokens:o}=y(),[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(k=>_t(k))),C=new Set(t.map(k=>k.name)),S=f.tokens.filter(k=>C.has(k.blockchain)&&!g.has(_t(k)));s(S),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}=y(),{fetch:m,loading:h,tokens:d,cancel:f}=Rl(),[g,C]=zx(""),S=e==="source"?r:a,k=S?.name??"",T=y().blockchains({type:e}),v=y().tokens({type:e,blockchain:k,searchFor:g,getBalanceFor:p}),E=Rg(v,d,g,h,S?.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 Ux(()=>(Qi(v,g,S?.name)&&m(g,S?.name??void 0),()=>{f()}),[v.length,g,S?.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,S?.name)&&h?ao.createElement(Ox,{size:12,color:"secondary"}):void 0}),ao.createElement(eh,{size:16}),ao.createElement(jn,{list:E,selectedBlockchain:k,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 fE,Button as gE,styled as hE}from"@rango-dev/ui";import Po from"react";import{useInRouterContext as yE,useSearchParams as SE}from"react-router-dom";import{i18n as ah}from"@lingui/core";import{Divider as sh,InfoIcon as Vx,SlippageIcon as Kx,TextField as jx,Tooltip as Xx,Typography as lh}from"@rango-dev/ui";import st from"react";import{Chip as Hx,styled as rr,TextField as qx}from"@rango-dev/ui";var th=rr("div",{paddingTop:"$5",padding:"$10 $5"}),oh=rr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${qx}`]:{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(Hx,{width:"61px",flexShrink:0});import{i18n as ec}from"@lingui/core";import{Typography as Gx}from"@rango-dev/ui";import ir from"react";function ih(){return ir.createElement(Gi,null,ir.createElement(Gx,{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}=y();return st.createElement(th,null,st.createElement(nh,null,st.createElement(Kx,{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(Xx,{container:A(),side:"top",sideOffset:4,content:st.createElement(ih,null)},st.createElement(Vx,{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(jx,{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 Yx,ChevronRightIcon as Vi,DarkModeIcon as ph,Divider as ar,ExchangeIcon as Zx,InfinityIcon as Jx,InfoIcon as Rx,LanguageIcon as eE,LightModeIcon as uh,List as tE,ListItem as oE,ListItemButton as nE,Skeleton as rE,styled as iE,Switch as aE,Tabs as sE,TargetIcon as lE,Tooltip as cE,Typography as Re}from"@rango-dev/ui";import $ from"react";import{useNavigate as pE}from"react-router-dom";var uE=iE("div",{width:"202px",height:"$40"}),mE=[{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"))}],dE=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=pE(),{theme:e}=y().config,{setTheme:o,theme:n}=y(),{activeLanguage:r,languages:a}=io(),s=a.find(L=>L.local===r)?.label,l=y().fetchStatus,c=y().swappers(),u=y().getDisabledLiquiditySources(),{config:{features:p}}=y(),m=y().customTokens(),h=Xe("theme",p),d=Xe("liquiditySource",p),f=Xe("language",p),g=Xe("customTokens",p),C=y().infiniteApprove,S=y().toggleInfiniteApprove,k=Nr(c,u),T=k.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=T.length,E=T.filter(L=>L.selected).length,B=k.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(rE,{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(Yx,{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(Zx,{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(lE,{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(eE,{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(cE,{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(Rx,{color:"gray"}))),start:$.createElement(Jx,{color:"gray",size:16}),end:$.createElement(aE,{checked:C}),onClick:S},R={id:"widget-setting-theme-item-btn",type:$.createElement(oE,null),title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Theme")),end:$.createElement(uE,null,$.createElement(sE,{container:A(),items:mE,value:n,onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:dE(n)},X=d?[]:[b,I];return g||X.push(_),f||X.push(M),X.push(q),!e?.singleTheme&&!h&&X.push(R),$.createElement(tE,{type:$.createElement(nE,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:X})}i(mh,"SettingsLists");var CE=hE("div",{paddingLeft:"$8"});function dh(){let{isInCampaignMode:t,updateCampaignMode:e}=y(),o=t(),[,n]=SE(),r=yE(),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(fE,{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(CE,null,Po.createElement(gE,{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 cI}from"@lingui/core";import{cancelSwap as pI}from"@rango-dev/queue-manager-rango-preset";import{useManager as uI}from"@rango-dev/queue-manager-react";import{Alert as mI}from"@rango-dev/ui";import Cc from"react";import{useParams as dI}from"react-router-dom";import{i18n as lt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as qE,getCurrentStep as GE,getRelatedWalletOrNull as VE}from"@rango-dev/queue-manager-rango-preset";import{Button as Kh,CopyIcon as KE,Divider as jE,DoneIcon as XE,IconButton as YE,QuoteCost as ZE,RangoExplorerIcon as JE,StepDetails as RE,Tooltip as jh,Typography as _o,useCopyToClipboard as eI}from"@rango-dev/ui";import{useWallets as tI}from"@rango-dev/wallets-react";import Xh from"bignumber.js";import{PendingSwapNetworkStatus as ea}from"rango-types";import Y,{useEffect as Yh,useRef as oI,useState as Zh}from"react";import{useNavigate as nI}from"react-router-dom";import{i18n as so}from"@lingui/core";var kE=[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"):`${kE[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 TE}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(TE,{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 vE,Typography as wE}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(vE,{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(wE,{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 bE}from"@rango-dev/logging-core";import{getCurrentStep as xE,getRelatedWalletOrNull as EE}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as IE,Wallet as AE}from"@rango-dev/ui";import{useWallets as NE}from"@rango-dev/wallets-react";import cn,{useState as BE}from"react";import{styled as lc}from"@rango-dev/ui";var kh=lc("div",{display:"flex",justifyContent:"center"}),IK=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]=BE(),{getWalletInfo:u,state:p}=NE(),m=xE(n),h=m?EE(n,m):null,d=m?.fromBlockchain,f=h?.walletType,g=f?hn(p(f)):null,C=f?u(f):null,S=a&&!!f&&!!g&&!!C,{list:k}=yt(),T=i(()=>{if(f){let v=k.find(E=>E.type===f);v?c(v):bE(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(IE,{type:e,title:o,description:r}),S&&cn.createElement(kh,null,cn.createElement(AE,{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 WE,Typography as Eh}from"@rango-dev/ui";import ge from"react";import{Link as LE,useNavigate as ME}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=ME(),{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(WE,{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(LE,{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 HE from"react";import{i18n as OE}from"@lingui/core";import{Alert as Hh,IconButton as UE,LinkIcon as zE}from"@rango-dev/ui";import co,{Fragment as QE}from"react";import{Alert as _E,ChevronDownIcon as DE,IconButton as $E}from"@rango-dev/ui";import un,{useState as FE}from"react";import{css as cr,darkTheme as Ih,styled as Kt,Typography as PE}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"}),g8=Kt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Bh=Kt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),h8=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(PE,{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]=FE(!1);return un.createElement(_E,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&un.createElement($E,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},un.createElement($h,{rotated:o},un.createElement(DE,{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,S=g&&a.status==="failed";return co.createElement(QE,{key:f},co.createElement(Hh,{type:g&&(C&&"loading"||S&&"error")||"success",title:m.description?`${m.description} Tx`:OE.t("View transaction"),action:m.url&&co.createElement(UE,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},co.createElement(zE,{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:HE.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}=tI(),c=y().blockchains(),u=y().swappers(),{findToken:p}=y(),m=O.use.retry(),h=ne.use.isActiveTab(),d=nI(),[f,g]=eI(qh),C=oI(null),[S,k]=Zh(null),[T,v]=Zh(null),E=i(()=>{r(),k(null)},"onCancel"),B=we.use.getNotifications(),N=we.use.removeNotification(),x=B(),w=GE(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?k(ea.WaitingForNetworkChange):b===ea.WaitingForConnectingWallet||b===ea.NetworkChanged?k(b):k(null)},[b]);let I=Du(e),_=w?qE(e,w):null,M=w?VE(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),Q=Gh({swap:e,switchNetwork:K,showNetworkModal:b,setNetworkModal:k,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"?()=>k("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:()=>k("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(YE,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:g.bind(null,o||"")},f?Y.createElement(XE,{size:16,color:"secondary"}):Y.createElement(KE,{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(JE,{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(ZE,{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(jE,{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(RE,{key:jt,step:Te,type:"swap-progress",ref:C,state:po,hasSeparator:De!==0,tabIndex:jt,isFocused:xy,tooltipContainer:A()})}))),Y.createElement(cc,{state:S,onClose:()=>k(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 lI,Skeleton as mr,Typography as na}from"@rango-dev/ui";import ke from"react";import{i18n as rI}from"@lingui/core";import{Divider as iI,Skeleton as aI,Typography as sI}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"}),A6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),N6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),B6=bt({paddingTop:"$15",display:"flex"}),W6=bt({padding:"$15 $0"}),L6=bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),M6=bt({paddingBottom:"$10"}),P6=bt({display:"flex",justifyContent:"start",alignItems:"center"}),_6=bt({paddingTop:"$5",display:"flex",alignItems:"center"}),D6=bt({display:"flex",alignItems:"center"}),$6=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(sI,{variant:"title",size:"small"},rI.t("Swaps steps"))),ve.createElement(ve.Fragment,null,ve.createElement(ur,null,ve.createElement(Bt,{separator:!1}),ve.createElement("div",{className:Rh()},ve.createElement(iI,{direction:"horizontal",size:20}),ve.createElement(aI,{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(lI,{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}=uI(),o=!e.loadedFromPersistor,n=gt(t),{requestId:r}=dI(),a=Oe(),{fetchStatus:s}=y();if(!r)return Cc.createElement(mI,{containerStyles:{margin:"20px"},type:"error",title:cI.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&&pI(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 fI,getCategoriesCount as gI,SelectableCategoryList as hI,styled as iy,Typography as yI,Wallet as SI}from"@rango-dev/ui";import Lt,{useState as ry}from"react";var CI=iy("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),kI=iy(re,{textAlign:"center"});function ay(){let{fetchStatus:t}=y(),[e,o]=ry("ALL"),n=y().blockchains(),{config:r}=y(),[a,s]=ry(),l=ne.use.isActiveTab(),{list:c}=yt(),u=cp(c,n),m=gI(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(kI,null,m&&Lt.createElement(Lt.Fragment,null,Lt.createElement(hI,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Lt.createElement(fI,{size:24})),Lt.createElement(yI,{variant:"title",size:"xmedium",align:"center"},ny.t("Choose a wallet to connect.")),Lt.createElement(CI,null,h.map((f,g)=>{let C=`wallet-${g}-${f.type}`;return Lt.createElement(SI,{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(),TI([{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 BI}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as WI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as LI}from"rango-sdk";import{useContext as MI,useEffect as fy,useState as gy}from"react";import{globalCss as vI}from"@rango-dev/ui";var ly=i(()=>vI({"@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 wI}from"@rango-dev/wallets-react";import{useEffect as bI,useRef as xI}from"react";function py(){let{connect:t,state:e}=wI(),o=xI({}),{fetchStatus:n}=y(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);bI(()=>{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 EI,RouteEventType as uy,StepEventType as my,StepExecutionEventStatus as II,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}=y();dy(()=>{let r=i(a=>{let{event:s,step:l,route:c}=a;if(s.type===my.TX_EXECUTION&&s.status===II.TX_SENT&&!EI(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 AI}from"@rango-dev/queue-manager-react";import{useEffect as NI}from"react";function Tc(){let{isSynced:t,syncNotifications:e}=we(),{manager:o,state:n}=AI();NI(()=>{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=y().blockchains(),{canSwitchNetworkTo:e}=si(),[o,n]=gy(""),[r,a]=gy(),s=MI(Dr),l=t.filter(LI),{fetchApiConfig:c}=cy();fy(()=>()=>Uu(),[]),BI({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===WI(o)?.[0]&&n("")}),c().catch(console.log),ho.destroy),[])}i(vc,"useBootstrap");import{styled as PI}from"@rango-dev/ui";var hy=PI("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}=y(),{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 tA}from"@rango-dev/signer-solana";import xc,{useEffect as vy,useMemo as oA}from"react";import{useState as DI}from"react";var $I=i(()=>{let[t,e]=DI(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=$I;import{checkWaitingForNetworkChange as FI,makeQueueDefinition as OI}from"@rango-dev/queue-manager-rango-preset";import{Provider as UI}from"@rango-dev/queue-manager-react";import{useWallets as zI}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as QI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as HI}from"rango-types";import qI,{useMemo as GI}from"react";function VI(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=zI(),l=GI(()=>OI({API_KEY:t.apiKey||Pt("API_KEY"),BASE_URL:Pt("BASE_URL"),emitter:{emit:ye.emit}}),[t.apiKey]),{blockchains:c,connectedWallets:u}=y(),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(HI),C=i(v=>{let{supportedChains:E}=s(v);return yn(E)},"getSupportedChainNames"),S=e(),k={meta:{blockchains:f,evmBasedChains:g,evmNetworkChainInfo:QI(g),getSupportedChainNames:C},getSigners:o,wallets:m,providers:S,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:d},T=ne.use.isActiveTab();return qI.createElement(UI,{queuesDefs:[l],context:k,onPersistedDataLoaded:v=>{FI(v)},isPaused:!T},t.children)}i(VI,"QueueManager");var Sy=VI;import{useManager as ZI}from"@rango-dev/queue-manager-react";import JI,{createContext as RI,useContext as eA}from"react";function Cy(){let{findToken:t}=y(),e=y().blockchains(),o=y().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(S=>S.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(S=>S.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 KI,getCurrentNamespaceOfOrNull as jI,getCurrentStep as XI,getRelatedWalletOrNull as YI}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&&KI(o)}getCurrentStepInfo(e){let o=XI(e);return{step:o,wallet:o?YI(e,o):null,network:o?jI(e,o)?.network:null}}};var ky=RI(void 0);function bc(t){let{manager:e}=ZI(),o=ne.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=y(),c=new aa(e,{retrySwap:n,findToken:r}),{fetchingWallets:u}=y(),p=np(a()),m=y().blockchains(),h=y().tokens(),d=y().swappers(),f=y().fetchStatus,g=io().resetLanguage,C=we().getNotifications(),S=we().clearNotifications,k=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:S},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:k}};return JI.createElement(ky.Provider,{value:x},t.children)}i(bc,"WidgetInfo");function Ty(){let t=eA(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]),oA(()=>{up({API_KEY:o?.apiKey||Sr,BASE_URL:o?.apiUrl||zc})},[o.apiKey,o.apiUrl]),vy(()=>{t.config?.signers?.customSolanaRPC&&tA("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 qY={DerivationPath:bn,Namespaces:wn,isOnDerivationPath:En,isOnNamespace:xn};export{hY as EventSeverity,Qo as MainEvents,EY as Networks,NY as PendingSwapNetworkStatus,wa as QuoteEventTypes,yY as RouteEventType,ma as SUPPORTED_FONTS,qY as StatefulConnect,SY as StepEventType,CY as StepExecutionBlockedEventStatus,kY as StepExecutionEventStatus,$e as UI_ID,xa as UiEventTypes,ba as WalletEventTypes,bY as WalletEvents,IY as WalletTypes,wy as Widget,Qo as WidgetEvents,sa as WidgetProvider,$r as WidgetWallets,gs as customizedThemeTokens,vY as readAccountAddress,Xt as useStatefulConnect,yt as useWalletList,si as useWallets,Ty as useWidget,by as useWidgetEvents,AS as widgetEventEmitter};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|