@rango-dev/widget-embedded 0.41.2-next.10 → 0.41.2-next.11
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 SY,RouteEventType as CY,StepEventType as kY,StepExecutionBlockedEventStatus as TY,StepExecutionEventStatus as vY}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as bY}from"@rango-dev/wallets-core/legacy";import{useWallets as si,Events as EY}from"@rango-dev/wallets-react";import{Networks as AY,WalletTypes as NY}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as WY}from"rango-types";import{Divider as vC}from"@rango-dev/ui";import So,{useEffect as wC,useRef as bC,useState as tu}from"react";import{WalletState as Iy}from"@rango-dev/ui";import{useWallets as Ay}from"@rango-dev/wallets-react";import{useReducer as Ny}from"react";function Ec(t){return!!t.derivationPath}i(Ec,"isStateOnDerivationPathStep");function Ic(t){return!!t.namespace}i(Ic,"isStateOnNamespace");var dr={status:"init",namespace:null,derivationPath:null};function Ac(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"reset":return dr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:dr;default:throw new Error("Action hasn't been defined.")}}i(Ac,"reducer");function Xt(){let{state:t,disconnect:e,connect:o}=Ay(),[n,r]=Ny(Ac,dr),a=i(async(p,m,h)=>{r({type:"reset"});try{let d=m?.map(f=>({...f,network:void 0}));return await o(p,d),{status:"connected"}}catch(d){let f=d?.message?`Error: ${d.message}`:"An unknown error happened during connecting wallet.";throw new Error(f,{cause:d})}},"runConnect"),s=i(async(p,m)=>{if(p.state===Iy.DISCONNECTED){let d=!!p.isHub,f=p.properties?.find(g=>g.name==="detached")?.value;if(d&&!f?.length||!d&&!p.needsNamespace)return await a(p.type,void 0,m);if(d&&f?.length&&f.length>1||!d&&p.needsNamespace?.data.length&&p.needsNamespace.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:p,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(d&&f?.length===1||!d&&p.needsNamespace?.data.length===1){if(p.needsNamespace&&p.needsDerivationPath){let g=p.needsNamespace.data[0];return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:g.value}}),{status:"derivation-path"}}return await a(p.type,p.needsNamespace?.data.map(g=>({namespace:g.value})),m)}}return m?.disconnectIfConnected?(await u(p.type),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),l=i(async(p,m)=>{let h=p.needsNamespace?.selection==="single",d=p.needsDerivationPath,f=m[0];if(!f)throw new Error("To confirm a namespace, you should select at least one namespace.");if(h&&d)return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:f}}),{status:"derivation-path"};if(!Ic(n))throw new Error("Something went wrong on handling namespace. Please retry.");let g=n.namespace.targetWallet.type,C=m.map(k=>({namespace:k}));return await a(g,C)},"handleNamespace"),c=i(async p=>{if(!p)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Ec(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=n.derivationPath.providerType,d=[{namespace:n.derivationPath.namespace,derivationPath:p}];return await a(m,d)},"handleDerivationPath"),u=i(async p=>{let m=t(p);return m.connected||m.connecting?(await e(p),{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:l,handleDerivationPath:c,getState:()=>n,resetState:p=>{r(p==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Xt,"useStatefulConnect");import{WalletState as Wa}from"@rango-dev/ui";import{useWallets as OS}from"@rango-dev/wallets-react";import{detectMobileScreens as US,KEPLR_COMPATIBLE_WALLETS as zS,WalletTypes as kn}from"@rango-dev/wallets-shared";import{useCallback as QS,useEffect as HS}from"react";import PS,{createContext as _S,useContext as DS,useEffect as $S,useRef as FS}from"react";import{create as LS}from"zustand";import{persist as MS}from"zustand/middleware";import{allProviders as By}from"@rango-dev/provider-all";var ca=class{static{i(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},Do=new ca;import{defineVersions as Bc,pickVersion as Wc,Provider as pa}from"@rango-dev/wallets-core";function Lc({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Mc(a);return s instanceof pa?s.id===n:s.config.type===n});r?o.push(r):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else n instanceof pa?o.push(Bc().version("1.0.0",n).build()):o.push(Bc().version("0.0.0",n).build())}),o}return t}i(Lc,"matchAndGenerateProviders");function Mc(t){try{return Wc(t,"1.0.0")[1]}catch{return Wc(t,"0.0.0")[1]}}i(Mc,"pickProviderVersionWithFallbackToLegacy");function Pc(t){return t.map(o=>Mc(o)).map(o=>o instanceof pa?o.id:o.config.type)}i(Pc,"configWalletsToWalletName");function fr(t,e){return e.find(o=>o.name===t)?.displayName}i(fr,"getBlockchainDisplayNameFor");function pt(t,e){return e.find(o=>o.name===t)?.shortName}i(pt,"getBlockchainShortNameFor");function _c(t,e){return e.find(o=>o.name===t)?.logo}i(_c,"getBlockchainImage");function mn(t,e){return e.find(o=>o.id===t)?.title}i(mn,"getSwapperDisplayName");function uo(t,e){return e.find(o=>o.name===t)??null}i(uo,"findBlockchain");function ua(t,e){if(!e||!t)return!1;for(let o of e.feeAssets)if(t?.blockchain===o?.blockchain&&t?.symbol===o?.symbol&&t?.address===o?.address)return!0;return!1}i(ua,"isTokenNative");function ut(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(ut,"createTokenHash");function $o(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i($o,"isValidTokenAddress");function dn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(c=>{typeof c!="string"&&(c=ut(c));let u=o.tokensMapByTokenHash.get(c);u&&(n[c]=u)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(c=>{l.has(c)||a(o.tokensMapByBlockchainName[c])})}return s.forEach(l=>{let c=r[l];if(!c&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}c&&(c.isExcluded?(a(o.tokensMapByBlockchainName[l]),c.tokens.forEach(u=>{let p=ut(u);delete n[p]})):a(c.tokens))}),Object.values(n)}i(dn,"matchTokensFromConfigWithMeta");function gr(t){let{config:e}=t,o=e.from?.blockchains||[],n=e.to?.blockchains||[];if(!o.length||!n.length)return[];let r=[...o,...n],a=new Set(r);return Array.from(a)}i(gr,"getSupportedBlockchainsFromConfig");function $c(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i($c,"makeProvidersOptionsFromConfig");var hr={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/manifests/tonconnect-manifest.json"}},Wy={clientUrl:void 0},Ly={liquiditySources:void 0};function Dc(t){let e=$c(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return By(o).map(a=>a())}i(Dc,"generateProviders");var Fc=i((t,e,o)=>{let n=Dc({...hr,...t});return{config:{...hr,...t},iframe:Wy,campaignMode:Ly,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l}=o(),c=dn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}}),u=dn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}});Do.set("supportedSourceTokens",c),Do.set("supportedDestinationTokens",u),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=Dc(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=$c(a);return Lc({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Oc}from"rango-types";var Uc=[Oc.EVM,Oc.SOLANA],yr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as Ky}from"rango-sdk";import{UI_ID as My}from"@rango-dev/ui";var Sr="c6381a79-2817-4602-83bf-6a641a409e32",zc="https://api.rango.exchange",Qc="https://explorer.rango.exchange",$e={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...My};import{BlockchainCategories as Uy,WalletState as Et}from"@rango-dev/ui";import{legacyReadAccountAddress as zy}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as Qy,getCosmosExperimentalChainInfo as Hy,isEvmAddress as qy,KEPLR_COMPATIBLE_WALLETS as c0,Networks as tp}from"@rango-dev/wallets-shared";import Oo from"bignumber.js";import{isCosmosBlockchain as Gy}from"rango-types";import Py from"bignumber.js";var le=new Py(0);import{WalletTypes as _y}from"@rango-dev/wallets-shared";var mo="~",Hc=[_y.LEAP];import{BlockchainCategories as da,WalletState as Oy}from"@rango-dev/ui";import{TransactionType as Cr}from"rango-sdk";var qc="Roboto",ma=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function Fo(t){return Array.from(new Set(t))}i(Fo,"removeDuplicateFrom");function kr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(kr,"debounce");function et(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(et,"containsText");function Kc(t,e){return t.toLowerCase()===e.toLowerCase()}i(Kc,"exactText");function jc(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(jc,"startWithText");var A=i(()=>document.getElementById($e.SWAP_BOX_ID),"getContainer"),fo=i(()=>document.getElementById($e.EXPANDED_BOX_ID),"getExpanded");function Xc(t,e,o){let n=!!e&&Kc(e,t),r=!!o&&Kc(o,t);return n!==r?n?-1:1:0}i(Xc,"compareExactMatchText");function fa(t,e,o){let n=!!e&&et(e,t),r=!!o&&et(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(fa,"compareContainsText");function ga(t,e,o){let n=!!e&&jc(e,t),r=!!o&&jc(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ga,"compareStartWithText");function Yc(t,e,o){if(!o)return 0;let n=Xc(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=Xc(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ga(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=fa(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ga(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=fa(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ga(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=fa(o,t.address,e.address);if(r!==0)return r}return 0}i(Yc,"compareWithSearchFor");var Tr=i((t,e)=>{switch(e){case da.ALL:return!0;case da.UTXO:return t===Cr.TRANSFER;case da.OTHER:return t!==Cr.TRANSFER&&t!==Cr.COSMOS&&t!==Cr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),Zc=i(t=>ma.find(o=>o.value===t)?.url,"getFontUrlByName");function Jc(t,e){let o=!!t.find(n=>n.state===Oy.CONNECTED);return e===!1&&o}i(Jc,"isSingleWalletActive");function Rc(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(Rc,"memoizedResult");import{BigNumber as ep}from"bignumber.js";var fn=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),P=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new ep(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new ep(n.toFixed(s,r)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),r);for(let s=e||4;s<17;s++)if(n.gte(Math.pow(10,-s)))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,s))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var vr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var xt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),gn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function hn(t){return t.connected?Et.CONNECTED:t.connecting?Et.CONNECTING:t.installed?Et.DISCONNECTED:Et.NOT_INSTALLED}i(hn,"mapStatusToWalletState");function op(t,e,o,n){return o.filter(r=>!Hc.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:c}=t(r);return s&&(!l||!!n&&c!==n)?!1:n?!!a.find(p=>p.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:c,needsNamespace:u,supportedChains:p,needsDerivationPath:m,properties:h,isHub:d}=e(r),f=Fo(p.map(C=>C.type)),g=hn(t(r));return{title:a,image:s,link:Qy(l),state:g,type:r,showOnMobile:c,needsNamespace:u,blockchainTypes:f,needsDerivationPath:m,properties:h,isHub:d}})}i(op,"mapWalletTypesToWalletInfo");function yn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(yn,"walletAndSupportedChainsNames");function ya(t,e,o,n,r){let a=[];function s(c,u,p){if(!!!a.find(h=>h.chain===c)){let h={address:u,chain:c,walletType:t,isContractWallet:p??!1};a.push(h)}}i(s,"addAccount");let l=n||[];return e.forEach(c=>{let{address:u,network:p}=zy(c),m=l.length>0,h=l.includes(p),d=p===tp.Unknown;if(m&&!h&&!d)return;let g=p===tp.Unknown&&qy(u);if(d&&!g)return;o.includes(p)||g?r?s(p,u.toLowerCase(),r):l.filter(y=>o.includes(y)).forEach(y=>{s(y,u.toLowerCase())}):s(p,u)}),a}i(ya,"prepareAccountsForWalletStore");function go(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:c}=r;c.forEach((u,p)=>{let m=u.from.blockchain,h=u.to.blockchain,d=a===o.swaps.length-1,f=p===c.length-1;(!d&&!f||d&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(h)})}e==="all"&&n.add(l)}),Array.from(n)}i(go,"getQuoteChains");function Sn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Sn,"isAccountAndWalletMatched");var np=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?ha(n.usdValue,n.decimals):le.toFixed();return o.plus(r)},new Oo(le));return Vy(e.toString())},"calculateWalletUsdValue");function Vy(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(Vy,"numberWithThousandSeparator");var xr=i((t,e)=>{let o=Hy(Object.entries(t).map(([,n])=>n).filter(Gy));return o&&o[e]?.experimental},"isExperimentalChain");function ha(t,e){return new Oo(t).shiftedBy(-e).toFixed()}i(ha,"representAmountInNumber");function Er(t){if(!t)return null;let e=ha(t.amount,t.decimals),o=t.usdValue?ha(t.usdValue,t.decimals):null,n=P(e,8,8),r=o?P(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Er,"formatBalance");function rp(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new Oo(t.usdValue).shiftedBy(-t.decimals):le,n=e&&e.usdValue?new Oo(e.usdValue).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new Oo(t.amount).shiftedBy(-t.decimals):le,n=e&&e.amount?new Oo(e.amount).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(rp,"compareTokenBalance");function Mt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Mt,"areTokensEqual");function ip(t){return t.sort((e,o)=>+(o.state===Et.CONNECTED)-+(e.state===Et.CONNECTED)||+(o.state===Et.DISCONNECTED||o.state===Et.CONNECTING)-+(e.state===Et.DISCONNECTED||e.state===Et.CONNECTING))}i(ip,"sortWalletsBasedOnConnectionState");function Ir(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(Ir,"getConciseAddress");function ap({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(ap,"getAddress");var sp=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function lp(t){return t.map(e=>e.state).join("-")}i(lp,"hashWalletsState");function cp(t,e){let o=new Set;return t.forEach(r=>{r.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(r=>o.has(r.type))}i(cp,"filterBlockchainsByWalletTypes");function pp(t,e){return e===Uy.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Tr(n,e))return!0;return!1})}i(pp,"filterWalletsByCategory");var Sa={API_KEY:Sr};function Pt(t){return Sa[t]||""}i(Pt,"getConfig");function up(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Sa=e,Sa}i(up,"initConfig");var mp=20,dp=25,Ca="theme-widget",ka=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Mt(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Mt(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),Ta=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),fp=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Ar,tt=i(()=>Ar||(Ar=new Ky(Pt("API_KEY"),Pt("BASE_URL")),Ar),"httpService");function Nr(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Fo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(c=>c===s.swapperGroup)),l&&s.types.map(c=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:c,selected:!e.includes(s.swapperGroup)})})}}),n}i(Nr,"getUniqueSwappersGroups");function gp(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(gp,"sortLiquiditySourcesByGroupTitle");function Xe(t,e){return e?.[t]==="hidden"}i(Xe,"isFeatureHidden");function Uo(t,e){return e?.[t]==="enabled"}i(Uo,"isRoutingEnabled");var hp=i((t,e,o)=>Xe("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");var yp=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let c=gr({config:a}),u=r;return c.length>0&&(u=u.filter(p=>c.includes(p.name))),u.filter(p=>Uc.includes(p.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(c=>!(s.length>0&&!s.includes(c.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),l=Array.from(n.values()),c=e()._blockchainsMapByName;if(!o||!o.type)return l;let u=o.type==="source"?"from":"to",p=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=Do.get(p);m?.length||(m=dn({type:o.type,config:{blockchains:a[u]?.blockchains,tokens:a[u]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Do.set(p,m)),m=hp(m,s,a.features);let h=e().blockchains({type:o.type});return m.filter(f=>o.blockchain&&f.blockchain!==o.blockchain||!h.some(g=>g.name===f.blockchain)?!1:o.searchFor?!!(et(f.symbol,o.searchFor)||et(f.address||"",o.searchFor)||et(f.name||"",o.searchFor)):!0).sort((f,g)=>{let C=e().isTokenPinned(f,o.type),k=e().isTokenPinned(g,o.type);if(C!==k)return C?-1:1;if(o.getBalanceFor){let B=o.getBalanceFor(f),N=o.getBalanceFor(g),x=rp(B,N);if(x!==0)return x}let y=c.get(f.blockchain),T=c.get(g.blockchain),v=ua(f,y),E=ua(g,T);if(v!==E)return v?-1:1;if(f.isPopular!==g.isPopular)return f.isPopular?-1:1;if(o.searchFor){let B=Yc(f,g,o.searchFor);if(B)return B}return f.isSecondaryCoin!==g.isSecondaryCoin?f.isSecondaryCoin?1:-1:y&&T?y.sort-T.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=ut(o),s=n.get(a);return s||(s=r.find(l=>ut(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Mt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(u=>{let p=a?.includes(u.swapperGroup);return s||!a||a.length===0?!p:p}).sort(gp)},fetch:async()=>{try{let{routing:o}=e().config,n=Uo("enableCentralizedSwappers",o),r=await tt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,l={},c=[],u=r.popularTokens,p=r.swappers.filter(d=>d.enabled),m=new Set;r.tokens.forEach(d=>{m.add(d.blockchain),c.push(d)}),r.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&m.has(d.name)&&a.set(d.name,d)}),c.forEach(d=>{let f=ut(d);l[d.blockchain]||(l[d.blockchain]=[]),s.set(f,d),l[d.blockchain].push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l,_popularTokens:u,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as jy,Catalonia as Xy,Chinese as Sp,Denmark as Yy,English as Zy,Finland as Jy,French as Ry,German as eS,Greece as tS,Hungary as oS,India as nS,Indonesian as rS,Italian as iS,Japanese as aS,Korea as sS,Lithuania as lS,Malay as cS,Netherlands as pS,Pakistan as uS,Philippines as mS,Poland as dS,Portuguese as fS,Russian as gS,SaudiArabia as hS,Serbia as yS,Slovakia as SS,SouthAfrica as CS,Spanish as kS,Swahili as TS,Swedish as vS,Thai as wS,Turkish as bS,Ukrainian as xS,Vietnamese as ES}from"@rango-dev/ui";var Cp=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:CS},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:hS},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:jy},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:Xy},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Sp},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Sp},{title:"Danish",label:"Dansk",local:"da",SVGFlag:Yy},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:pS},{title:"English",label:"English",local:"en",SVGFlag:Zy},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:mS},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:Jy},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:Ry},{title:"German",label:"Deutsch",local:"de",SVGFlag:eS},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:tS},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:nS},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:oS},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:rS},{title:"Italian",label:"Italiana",local:"it",SVGFlag:iS},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:aS},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:sS},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:lS},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:cS},{title:"Polish",label:"Polski",local:"pl",SVGFlag:dS},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:fS},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:gS},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:yS},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:SS},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:kS},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:TS},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:vS},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:wS},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:bS},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:xS},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:uS},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:ES}],zo="en";var kp=[.5,1,3],Tp=1,vp=5,wp=100,bp=0;var xp=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Tp,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let c=s===o,u=l<=9;return c&&u}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let a=Fo(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=Xe("theme",n),s=Xe("language",n),l=Xe("liquiditySource",n),c=r?.singleTheme,u=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...c&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||zo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...u&&{language:o.language||zo}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(r=>r.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,r=gr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import Ba from"bignumber.js";import IS from"mitt";var ye=IS(),AS={on:ye.on,off:ye.off};import{WidgetEvents as Ep}from"@rango-dev/queue-manager-rango-preset";var wa=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(wa||{}),ba=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(ba||{}),xa=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(xa||{}),Qo=(a=>(a[a.RouteEvent=Ep.RouteEvent]="RouteEvent",a[a.StepEvent=Ep.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Qo||{});var Ip=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...l]=a;e(c=>({...typeof s=="function"?s(c):s,lastUpdatedAt:+new Date}),...l)},"modifedSet"),o,n),"keepLastUpdated");import Ap from"bignumber.js";function _t(t){return`${t.blockchain}${mo}${t.address}${mo}${t.symbol}`}i(_t,"createAssetKey");function Np(t,e){return`${_t(e)}${mo}${t}`}i(Np,"createBalanceKey");function Cn(t){let[e,o,n]=t.split(mo);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(Cn,"extractAssetFromBalanceKey");function Ea(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[_t(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Ap(r??le).multipliedBy(o[s].amount).toString():""})})}),o}i(Ea,"computeNextBalancesWithNewPrices");function Ia(t,e){let o={};return t.balances?.forEach(n=>{let r=Np(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,l=n.price??e().findToken(n.asset)?.usdPrice,c=l?new Ap(l??le).multipliedBy(a).toString():"",u={amount:a,decimals:s,usdValue:c};o[r]=u}),o}i(Ia,"createBalanceStateForNewAccount");function Aa(t,e){for(let o in e){let n=Cn(o),r=_t(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(Aa,"updateAggregatedBalanceStateForNewAccount");function NS(t,e){let o=Cn(e),n=_t(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(NS,"removeBalanceFromAggregatedBalance");function Na(t,e,o){let n=t.connectedWallets.filter(c=>c.walletType===e);t.connectedWallets.forEach(c=>{c.walletType!==e&&(n=n.filter(u=>!(u.chain===c.chain&&u.address===c.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(c=>o.chains?.includes(c.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(c=>c.namespace?o.namespaces?.includes(c.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(c=>{let u=Cn(c);!!n.find(m=>Np(m.address,{address:u.address,blockchain:m.chain,symbol:u.symbol})===c)?a=NS(a,c):r[c]=s[c]}),{_balances:r,_aggregatedBalances:a}}i(Na,"computeNextStateAfterWalletBalanceRemoval");function BS(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(BS,"matchWalletDetailsWithConnectedWallet");var WS=Rc(),Bp=Ip((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Sn(s,a))?{...a,loading:!1,error:!1,explorerUrl:BS(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n)=>{let r=e().connectedWallets,a=o.filter(s=>!r.some(l=>Sn(s,l)));if(a.length>0){let s=a.map(l=>{let c=!r.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:c,namespace:n,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!s.some(p=>p.walletType===u.walletType&&p.chain===u.chain)),...s]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((c,u)=>((c[u.blockchain]||=[]).push(u),c),{}),s=new Set,l=r.reduce((c,u)=>{let p=`${u.address}-${u.chain}`;return s.has(p)||(s.add(p),a[u.chain]&&(c[u.address]||(c[u.address]=[]),c[u.address].push(...a[u.chain]))),c},{});Object.entries(l).forEach(async([c,u])=>{try{let{balances:p}=await tt().getMultipleTokenBalance({assets:u.map(({symbol:m,address:h,blockchain:d})=>({symbol:m,address:h,blockchain:d})),walletAddress:c});if(p){let m=e()._balances,h=e()._aggregatedBalances;p.forEach(d=>{if(parseFloat(d.amount.amount)===0)return;let f={blockChain:d.asset.blockchain,balances:[d],address:c},g={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};Ea(g,f,m);let C=Ia(f,e);h=Aa(h,C),m={...m,...C}}),t(d=>({_balances:{...d._balances,...m},_aggregatedBalances:h}))}}catch(p){console.error(p)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n)=>{ye.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}}),e().addConnectedWallet(o,n),e().fetchBalances(o)},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Na(r,o,n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(r=>r.walletType===o);if(ye.emit("walletEvent",{type:"disconnect",payload:{walletType:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(l=>a.includes(l.chain)?(a=a.filter(c=>c!==l.chain),{...l,selected:!0}):l);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0)return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(c=>({address:c.address,blockchain:c.chain})),s;try{s=await tt().getWalletsDetails(a)}catch(c){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${c}`);return}let l=s.wallets;if(l){let c=e()._balances,u=e()._aggregatedBalances;l.forEach(m=>{if(m.failed)return;let h={_balances:c,_aggregatedBalances:u,connectedWallets:e().connectedWallets,findToken:e().findToken};Ea(h,m,c);let{_balances:d,_aggregatedBalances:f}=Na(h,r,{chains:[m.blockChain]});if(u=f,c=d,!e().connectedWallets.find(C=>C.walletType===r&&C.address===m.address&&C.chain===m.blockChain))return;let g=Ia(m,e);u=Aa(u,g),c={...c,...g}}),t(m=>({_balances:{...m._balances,...c},_aggregatedBalances:u})),e().setConnectedWalletRetrievedData(o,l);let{retryOnFailedBalances:p=!0}=n||{};if(p){let m=l.filter(h=>h.failed).map(h=>({chain:h.blockChain,walletType:r,address:h.address}));m.length>0&&await e().fetchMainTokensBalances(m,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),r=_t(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let c=a[0];return n[c]}let l=n[a[0]];return a.forEach(c=>{let u=n[c],p=new Ba(u.amount),m=new Ba(l.amount);p.isGreaterThan(m)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,l)=>{let c=n[l],[,,,u]=l.split(mo);return u===o&&(s[l]=c),s},{})},getConnectedWalletsDetails:()=>WS(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,l)=>{let c=r[l],u=Cn(l);if(u.blockchain===n.chain){let p=e().findToken(u),m=c.amount?new Ba(c.amount).shiftedBy(-c.decimals):le;s.push({chain:n.chain,symbol:u.symbol,ticker:u.symbol,address:u.address,rawAmount:c.amount,decimal:c.decimals,amount:m.toString(),logo:p?.image||null,usdPrice:p?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Wp(t){return LS()(MS((...e)=>({...Bp(...e),...yp(...e),...xp(...e),...Fc(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Wp,"createAppStore");var Lp=_S(null);function S(){let t=DS(Lp);if($S(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(S,"useAppStore");function Mp(t){let e=FS();return e.current||(e.current=Wp(t.config)),PS.createElement(Lp.Provider,{value:e.current},t.children)}i(Mp,"AppStoreProvider");function yt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=S(),{state:r,getWalletInfo:a}=OS(),s=S().blockchains(),{handleDisconnect:l}=Xt(),c=Pc(n()),u=op(r,a,c,e);u=US()?u.filter(g=>g.showOnMobile!==!1&&r(g.type).installed):u;let p=ip(u),m=i(g=>!o.find(C=>C.walletType===g&&C.chain===e),"isExperimentalChainNotAdded"),h=QS(()=>{let g=u?.filter(C=>C.state===Wa.CONNECTING)||[];for(let C of g)l(C.type)},[lp(u)]);HS(()=>()=>{h()},[]);let d=i(g=>{let C=g.find(y=>y.type===kn.DEFAULT);return!C||C.state===Wa.NOT_INSTALLED?!1:g.filter(y=>y.state!=Wa.NOT_INSTALLED&&![kn.DEFAULT,kn.WALLET_CONNECT_2,kn.LEDGER].includes(y.type)&&a(y.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),f=i((g,C,k)=>xr(k,C)&&m(g)&&!zS.includes(g)||g==kn.DEFAULT&&!d(u),"shouldExcludeWallet");return{list:p.filter(g=>!f(g.type,e??"",s)),terminateConnectingWallets:h}}i(yt,"useWalletList");import{Modal as KS}from"@rango-dev/ui";import jS from"react";import{create as VS}from"zustand";var Pp="rango-widget";var Tn=class{constructor(e){this.state="not-initiated";this.events={};this.init=()=>{this.initEvents(),this.tryClaim()};this.forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};this.isClaimed=()=>this.state==="claimed";this.destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};this.handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};this.handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};this.handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};this.channel=new BroadcastChannel(Pp),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{i(this,"TabManager")}initEvents(){this.channel.addEventListener("message",this.handleMessageEvent),document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("resume",this.handleResume)}claimedByCurrentTab(e){let o=this.lastTryClaim&&this.lastTryClaim<e;if(this.isClaimed()||o){let n={name:"pong"};this.channel.postMessage(n);return}}alreadyClaimedByAnotherTab(){this.resetLastCheck()}async tryClaim(){return this.setLastCheck(),new Promise(e=>{setTimeout(()=>{this.check(),e()},300)})}check(){this.state==="not-initiated"&&this.events.onInit?.(),this.lastTryClaim?(this.claim(),this.resetLastCheck()):this.state="not-claimed"}claim(){this.state="claimed",this.events.onClaim?.()}setLastCheck(){this.lastTryClaim=Date.now();let e={name:"ping",pingAt:this.lastTryClaim};this.channel.postMessage(e)}resetLastCheck(){this.lastTryClaim=void 0}forceRelease(e){if(this.isClaimed()){this.state="not-claimed",this.events.onRelease?.();let o={name:"force-release",candidateId:e};this.channel.postMessage(o)}}};var GS=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Ho=GS;var ne=Ho(VS()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})}}))),ho=new Tn({onInit:()=>ne.setState({tabManagerInitiated:!0}),onClaim:()=>ne.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ne.setState({isActiveTab:!1})});function J(t){let{watermark:e}=ne();return jS.createElement(KS,{hasWatermark:e==="FULL",...t},t.children)}i(J,"WatermarkedModal");import{i18n as qo}from"@lingui/core";import{Alert as eC,Button as qp,Divider as Wr,Image as tC,MessageBox as oC,RadioRoot as nC}from"@rango-dev/ui";import pe,{useEffect as rC,useMemo as iC,useState as aC}from"react";import{i18n as ZS}from"@lingui/core";import{Checkbox as JS,Radio as RS,Typography as $a}from"@rango-dev/ui";import mt from"react";function La(t,e){return t.find(o=>o.name===e)?.logo}i(La,"getBlockchainLogo");import{Image as XS,styled as vn}from"@rango-dev/ui";var Dp=vn("ul",{padding:0,paddingTop:"$10",paddingBottom:"$20",margin:0}),Ma=vn("li",{backgroundColor:"$neutral200",padding:"$16",display:"flex",gap:"$8",cursor:"pointer",borderRadius:"$sm",alignItems:"center",variants:{unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),$p=vn("div",{flex:"1",display:"flex",flexDirection:"column",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),Fp=vn("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Pa=vn(XS,{variants:{disabled:{true:{opacity:"0.5"}}}});import{Image as Up,Tooltip as zp,Typography as YS}from"@rango-dev/ui";import It from"react";import{styled as Op}from"@rango-dev/ui";var _a=Op("div",{display:"flex",alignItems:"center",padding:0,margin:0}),Br=Op("div",{marginLeft:"-5px",listStyleType:"none",backgroundColor:"$background",borderRadius:"$lg",minWidth:"15px",height:"15px",variants:{firstItem:{true:{marginLeft:0}}},display:"flex",alignItems:"center",justifyContent:"center"});var Da=3;function Qp(t){let{chains:e}=t;return It.createElement(_a,null,e.slice(0,Da).map((o,n)=>It.createElement(zp,{key:o.name,container:A(),side:"bottom",align:"start",content:o.name,sideOffset:4},It.createElement(Br,{firstItem:n===0},It.createElement(Up,{src:o.logo,size:15})))),e.length>Da&&It.createElement(zp,{container:A(),side:"bottom",align:"start",sideOffset:4,content:It.createElement(_a,null,e.map((o,n)=>It.createElement(Br,{key:o.name,firstItem:n===0},It.createElement(Up,{src:o.logo,size:15}))))},It.createElement(Br,null,It.createElement(YS,{variant:"body",size:"xsmall"},"+",e.length-Da))))}i(Qp,"SupportedChainsList");function Hp(t){let{onClick:e,type:o,namespace:n}=t,r=S().blockchains();if(n.unsupported)return mt.createElement(Ma,{unsupported:!0},mt.createElement(Pa,{src:La(r,n.id),size:40,disabled:!0}),mt.createElement(Fp,null,mt.createElement($a,{variant:"label",size:"large"},n.label),mt.createElement($a,{variant:"body",size:"xsmall"},ZS.t("(Currently not supported)"))));let a=n.chains.length>1;return mt.createElement(Ma,{onClick:e},mt.createElement(Pa,{src:La(r,n.id),size:40}),mt.createElement($p,{showSupportedChains:a},mt.createElement($a,{variant:"label",size:"large"},n.label),a&&mt.createElement(Qp,{chains:n.chains})),o==="radio"?mt.createElement(RS,{value:n.value}):mt.createElement(JS,{checked:t.value}))}i(Hp,"NamespaceListItem");function wn(t){let{targetWallet:e}=t.value,o=e.needsNamespace?.selection==="single",n=e.image,[r,a]=aC([]),s=iC(()=>e.needsNamespace?.data.filter(m=>!m.unsupported),[e?.type]),l=i(m=>{a(o?[m]:h=>h.includes(m)?h.filter(d=>d!==m):h.concat(m))},"onSelect"),c=s?.length===r.length,u=i(()=>{if(o)throw new Error("onSelectAll should not be called on single selection mode.");c?a([]):s&&a(s.map(m=>m.value))},"onSelectAll"),p=i(m=>o?pe.createElement(nC,{value:r?.[0]},m):pe.createElement(pe.Fragment,null,m),"wrapRadioRoot");return rC(()=>{if(!o&&s)if(t.value.defaultSelectedChains?.length){let m=s.filter(h=>h.chains.some(d=>t.value.defaultSelectedChains?.includes(d.name)));a(m.map(h=>h.value))}else a(s.map(m=>m.value))},[]),pe.createElement(pe.Fragment,null,pe.createElement(oC,{type:"info",title:qo.t("Connect {wallet}",{wallet:e.title}),description:qo.t("This wallet supports multiple chains. Choose which chains you'd like to connect to."),icon:pe.createElement(tC,{src:n,size:45})}),o?pe.createElement(pe.Fragment,null,pe.createElement(Wr,{size:20}),pe.createElement(eC,{variant:"alarm",type:"info",title:qo.t("This wallet can only connect to one chain at a time. ")})):pe.createElement(pe.Fragment,null,pe.createElement(Wr,{size:30}),pe.createElement(qp,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:u},c?qo.t("Deselect all"):qo.t("Select all"))),pe.createElement(Dp,null,p(pe.createElement(pe.Fragment,null,e.needsNamespace?.data.map((m,h,d)=>pe.createElement(pe.Fragment,{key:m.id},pe.createElement(Hp,{value:r.includes(m.value),namespace:m,type:o?"radio":"checkbox",onClick:()=>l(m.value)}),h!==d.length-1&&pe.createElement(Wr,{size:10})))))),pe.createElement(Wr,{size:20}),pe.createElement(qp,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!r.length,onClick:()=>t.onConfirm(r)},qo.t("Connect")))}i(wn,"Namespaces");import{i18n as Go}from"@lingui/core";import{Button as cC,Divider as Kp,Image as pC,MessageBox as uC,Select as mC,TextField as dC}from"@rango-dev/ui";import dt,{useEffect as fC,useState as jp}from"react";import{namespaces as sC}from"@rango-dev/wallets-shared";var Lr={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Fa(t){let e=t?sC[t].derivationPaths:null;return e?[...e,Lr]:[]}i(Fa,"getDerivationPaths");import{styled as Gp,Typography as lC}from"@rango-dev/ui";var Vp=Gp("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Oa=Gp(lC,{paddingLeft:"$10"}),Ua={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"};var Xp="0";function bn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=jp(null),[l,c]=jp(Xp),u=a===Lr.id,p=Fa(o),m=i(({value:d})=>{let f=p?.find(g=>g.id===d);f&&(a===Lr.id&&Number.isNaN(Number(l))&&c(Xp),s(f.id))},"handleDerivationPathItemClick"),h=i(()=>{let d=p.find(f=>f.id===a);if(d)e(d.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return fC(()=>{s(Fa(o)[0]?.id||null)},[o]),dt.createElement(dt.Fragment,null,dt.createElement(Kp,{size:20}),dt.createElement(uC,{type:"info",title:Go.t("Select Derivation Path"),description:Go.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:dt.createElement(pC,{src:n,size:45})}),dt.createElement(Vp,null,dt.createElement(Oa,{variant:"body",size:"xsmall",color:"$neutral600"},Go.t("Choose Derivation Path Template")),dt.createElement(mC,{value:a||"",options:p.map(d=>({value:d.id,label:d.label})),variant:"filled",handleItemClick:m,styles:{trigger:Ua}}),dt.createElement(Kp,{size:20}),dt.createElement(Oa,{variant:"body",size:"xsmall",color:"$neutral600"},u?Go.t("Enter Path"):Go.t("Enter Index")),dt.createElement(dC,{type:u?"text":"number",variant:"contained",value:l,onChange:d=>c(d.target.value),style:Ua})),dt.createElement(cC,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!p||!a||!l},Go.t("Confirm")))}i(bn,"DerivationPath");import{i18n as Vo}from"@lingui/core";import{Image as yC,MessageBox as za,WalletState as SC}from"@rango-dev/ui";import{useWallets as CC}from"@rango-dev/wallets-react";import yo from"react";import{keyframes as gC,styled as Mr}from"@rango-dev/ui";var oW=Mr("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Yp=Mr("div",{position:"relative"}),hC=gC({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Zp=Mr("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${hC} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Jp=Mr("div",{"& img":{borderRadius:"50%"}});function Qa(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=CC();return hn(a(n))===SC.CONNECTED?yo.createElement(za,{type:"success",title:Vo.t("Wallet Connected"),description:Vo.t("Your wallet is connected, you can use it to swap.")}):o?yo.createElement(za,{type:"error",title:Vo.t("Failed to Connect"),description:o||Vo.t("Your wallet is not connected. Please try again.")}):yo.createElement(za,{type:"loading",title:Vo.t("Connecting to your wallet"),description:Vo.t("Click connect in your wallet popup."),icon:yo.createElement(Yp,null,yo.createElement(Jp,null,yo.createElement(yC,{src:r,size:45})),yo.createElement(Zp,null))})}i(Qa,"ConnectStatus");import{i18n as Ha}from"@lingui/core";import{Button as kC,Divider as Rp,MessageBox as TC}from"@rango-dev/ui";import Pr from"react";function qa(t){let{displayName:e,onConfirm:o}=t;return Pr.createElement(TC,{title:Ha.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:Ha.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},Pr.createElement(Rp,{size:18}),Pr.createElement(Rp,{size:32}),Pr.createElement(kC,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Ha.t("Confirm")))}i(qa,"ExperimentalChain");function eu(t,e){return t().status==="init"&&!!e}i(eu,"isOnStatus");function xn(t){return t().status==="namespace"}i(xn,"isOnNamespace");function En(t){return t().status==="derivationPath"}i(En,"isOnDerivationPath");var xC=3e3,EC=300;function Co(t){let e=bC(),[o,n]=tu(!1),[r,a]=tu(),s=i(y=>{a(y.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=yt(),{handleConnect:c,handleDerivationPath:u,handleNamespace:p,getState:m,resetState:h}=Xt(),d=i(y=>{p(t.wallet,y).then(k).catch(s)},"handleConfirmNamespaces"),f=i(y=>{if(!y)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");u(y).then(k).catch(s)},"handleDerivationPathConfirm"),g=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((y,T)=>{let v=y.status==="connected",E=["disconnected","disconnected-unhandled"].includes(y.status);v?(t.onConnect?.(),T||(e.current=setTimeout(g,xC))):E&&g()},"afterConnected");return wC(()=>{if(t.wallet){C();let y=!1,T=!0;i(()=>{setTimeout(()=>{T=!1,y||n(!0)},EC)},"beforeConnecting")(),c(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","derivation-path"].includes(E.status)||(y=!0),k(E,T)}).catch(s)}},[t.wallet]),So.createElement(J,{open:o,onClose:g,onExit:()=>{C(),l(),t.onClose&&t.onClose()},container:A()},eu(m,t.wallet)&&So.createElement(So.Fragment,null,So.createElement(Qa,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),So.createElement(vC,{direction:"vertical",size:32})),xn(m)&&So.createElement(wn,{onConfirm:d,value:m().namespace}),En(m)&&So.createElement(bn,{onConfirm:f,value:m().derivationPath}))}i(Co,"StatefulConnectModal");import{Provider as WC}from"@rango-dev/wallets-react";import _r,{createContext as LC,useEffect as au,useMemo as MC,useRef as su}from"react";import{useEffect as IC}from"react";function ou(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(ou,"hashProviders");function Ga(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=S(),a=n();return IC(()=>{o(),r()},[ou(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Ga,"useWalletProviders");import{legacyFormatAddressWithNetwork as AC,legacyReadAccountAddress as nu}from"@rango-dev/wallets-core/legacy";import{Events as ko}from"@rango-dev/wallets-react";import{isEvmBlockchain as NC}from"rango-sdk";function ru(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=S(),{onConnectWalletHandler:l,onDisconnectWalletHandler:c}=t,u=s().filter(NC).map(g=>g.name),p=i((g,C)=>{let[k,,y,,T]=g,v=ya(k,y,u,C.supportedChainNames,T.isContractWallet);v.length&&e(v,T.namespace)},"onAccountsEvent"),m=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains);k&&p([g,C,k,y,T],{supportedChainNames:v})}if(C===ko.CONNECTED){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}C===ko.PROVIDER_DISCONNECTED&&(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),C===ko.NAMESPACE_DISCONNECTED&&n(g,k)},"handleUpdatesForHub"),h=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains),E=[],B=[];if(k?.forEach(x=>{let{network:w}=nu(x);u.includes(w)?E.push(x):B.push(x)}),r.filter(x=>x.walletType===g).map(x=>AC(x.address,x.chain)).length>0){if(E.length>0){let x=ya(g,E,u,v,T.isContractWallet);a(g,{chains:x.map(w=>w.chain)})}B.length>0&&a(g,{chains:B.map(x=>{let{network:w}=nu(x);return w})})}k?p([g,C,k,y,T],{supportedChainNames:v}):(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}if(C===ko.ACCOUNTS&&y.connected){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForLegacy"),d=i((g,C,k,y,T)=>{if(C===ko.NETWORK&&y.network){let v=`${g}-${y.network}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((g,C,k,y,T)=>{T.isHub?m(g,C,k,y,T):h(g,C,k,y,T),d(g,C,k,y,T)},"handler")}}i(ru,"useUpdates");import{LegacyEvents as BC}from"@rango-dev/wallets-core/legacy";function iu(t,e){let[o,n,r,a,s]=e;n!==BC.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(iu,"propagateEvents");var Dr=LC({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function PC(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=S(),a=S().blockchains(),s=S().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:c}=Ga(s.wallets,l),u=su(),p=su(),{handler:m}=ru({onConnectWalletHandler:u,onDisconnectWalletHandler:p});au(()=>{n().catch(console.log)},[]),au(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let h=ne.use.isActiveTab(),d=MC(()=>({onConnectWallet:f=>{u.current=f},onDisconnectWallet:f=>{p.current=f}}),[]);return _r.createElement(Dr.Provider,{value:d},_r.createElement(WC,{allBlockChains:a,providers:c,onUpdateState:(f,g,C,k,y)=>{let T=[f,g,C,k,y];m(...T),t.onUpdateState&&iu(t.onUpdateState,T)},autoConnect:!!h,configs:{wallets:s.wallets}},t.children))}i(PC,"Main");function $r(t){let{config:e,...o}=t;return _r.createElement(Mp,{config:e},_r.createElement(PC,{...o,config:e}))}i($r,"WidgetWallets");import la from"react";import _C,{Fragment as DC}from"react";import{MemoryRouter as $C,useInRouterContext as FC}from"react-router";function lu({children:t}){let o=FC()?DC:$C;return _C.createElement(o,null,t)}i(lu,"AppRouter");import{I18nManager as DI}from"@rango-dev/ui";import wc from"react";import Pe from"react";import{useRoutes as vI}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 qL}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 BL from"bignumber.js";function yu(t,e){if(e===null)return null;let o=e?.find(n=>n.blockchain===t.chain)?.wallets.find(n=>n.address?.toLowerCase()===t.address.toLowerCase());return o?o.requiredAssets:null}i(yu,"getRequiredBalanceOfWallet");function $t(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i($t,"getPriceImpactLevel");function Ur(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=UC(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=uo(a?a.toBlockchain:n.fromBlockchain,e),c=uo(r.toBlockchain,e),u=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),p=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:u,toBlockchain:c,toToken:p,inputAmount:m}}i(Ur,"createRetryQuote");function Ko(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=In(o),s=ft(o);if(o&&a&&s){let u=Dt(a.toString(),s.toString());if(!!u&&vu(a,u)){let m=Qr(o?.swaps,n),h=$t(u);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:u,totalFee:m,warningLevel:h}}}if(e&&xu(e,o))return{type:4,usdValueChange:P(ft(o)?.minus(ft(e)??0).toString()??"0",null,2),percentageChange:P(Dt(ft(e)??"1",ft(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let l=Hr(o.swaps),c=r>vp;if(bu(t.userSlippage.toString(),l)){if(c&&parseFloat(l??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:wu(o,r),minRequiredSlippage:l};return null}i(Ko,"generateQuoteWarnings");function Su(t){return![4].includes(t.type)}i(Su,"isQuoteWarningConfirmationRequired");function Dt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:ja(t.toString(),e.toString());return n&&n<0?n:null}i(Dt,"getPriceImpact");var Cu=i(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),zr=i((t,e)=>e.sort((o,n)=>{let r=i(u=>u.scores?.find(p=>p.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),c=n.requestId.toLowerCase();return l.localeCompare(c)}),"sortQuotesBy"),ku=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),Tu=i(t=>{let e=i((o,n)=>{let r=Ka.indexOf(o.value),a=Ka.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function vu(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return fu.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new ze(r)))}i(vu,"hasHighValueLoss");function Eu(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new ze(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ze(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(Eu,"hasLimitError");function Iu(t){let e=(t||[]).filter(l=>{let c=l.fromAmountMinValue?new ze(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new ze(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?c?.gte(l.fromAmount)||u?.lte(l.fromAmount):c?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new ze(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ze(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=St.t({id:"Required: >= {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=St.t({id:"Required: > {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=St.t({id:"Required: <= {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=St.t({id:"Required: < {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Iu,"getLimitErrorMessage");function Au(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:c}=t;return e!=="success"?{title:To().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:To().swap,action:"confirm-swap",disabled:!0}:s?{title:To().swapAnyway,action:"confirm-warning",disabled:!1}:c?{title:To().ethWarning,action:"confirm-warning",disabled:!1}:{title:To().swap,action:"confirm-swap",disabled:!1}:{title:To().connectWallet,action:"connect-wallet",disabled:!1}}i(Au,"getSwapButtonState");function Xa(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(le))&&e&&e!=="0"&&n!==0)}i(Xa,"canComputePriceImpact");function Ya(t,e){let o=le;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new ze(r.amount).multipliedBy(a||0))}return o}i(Ya,"getUsdFeeOfStep");function Qr(t,e){return t.reduce((o,n)=>o.plus(Ya(n,e)),le)}i(Qr,"getTotalFeeInUsd");function Za(t){let e=le;return e=e.plus(new ze(t.amount).multipliedBy(t.price||0)),e}i(Za,"getUsdFee");function Nu(t){return t.reduce((e,o)=>e.plus(Za(o)),le)}i(Nu,"getTotalFeesInUsd");function Bu(t){return t.reduce((e,o)=>{for(let n of o.fee){let r=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[r]=[...a[r]||[],n]}return e},{payable:{},nonePayable:{}})}i(Bu,"getFeesGroup");function Wu(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(Wu,"checkSlippageErrors");function wu(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(wu,"checkSlippageWarnings");function Hr(t){return t.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}i(Hr,"getMinRequiredSlippage");function bu(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(bu,"hasProperSlippage");function Lu(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:c,slippage:u,affiliateRef:p,affiliatePercent:m,affiliateWallets:h,destination:d,contractCall:f}=t,g=a?.reduce((y,T)=>(y[T.chain]=T.address,y),{}),C=[];return r?.forEach(y=>{C.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:m??void 0,affiliateWallets:h??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:C,selectedWallets:g??{},slippage:u.toString(),contractCall:f,...d&&{destination:d},...c&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!c&&{swapperGroups:l?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i(Lu,"createQuoteRequestBody");function Mu(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Mu,"getWalletsForNewSwap");function In(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new ze(e).multipliedBy(o)}i(In,"getUsdInputFrom");function ft(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new ze(e).multipliedBy(o)}i(ft,"getUsdOutputFrom");function ja(t,e){return new ze(e).div(new ze(t)).minus(1).multipliedBy(pu).toNumber()}i(ja,"getPercentageChange");function xu(t,e){let o=In(t),n=ft(t),r=ft(e);if(!o||!n||!r)return!1;let a=ja(n.toString(),r.toString());return gu.some(({threshold:s,minInput:l})=>a<=s&&o.isGreaterThanOrEqualTo(l))}i(xu,"isOutputAmountChangedExcessively");function Pu(t,e,o){let n=t.validationStatus,r=go({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>yu(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,c=P(new ze(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),u=P(new ze(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),p="";return s.reason==="FEE"&&(p=St.t(" for network fee")),s.reason==="INPUT_ASSET"&&(p=St.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(p=St.t(" for input and network fee")),St.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:u,symbol:l,reason:p,currentAmount:c,blockchain:pt(s.asset.blockchain,o)}})})}i(Pu,"generateBalanceWarnings");function An(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==qr.NetworkChanged}i(An,"isNetworkStatusInWarningState");function _u(t,e){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=S().config,m=S().fetchStatus,h=S().blockchains(),{findToken:d}=S(),{setAffiliateRef:f,setAffiliatePercent:g,setAffiliateWallets:C}=S(),k=p?.from?.tokens,y=p?.from?.blockchains,T=p?.to?.tokens,v=p?.to?.blockchains,E=Vr(void 0),B=Vr(void 0),N=Vr(void 0),x=Vr(void 0);jo(()=>{typeof p.amount<"u"&&t(p.amount.toString())},[p?.amount]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.from?.blockchain),b=p?.from?.token,I=b&&d(b);(w||!w&&N.current)&&n(w??null),I?a({token:I,meta:{blockchains:h}}):!I&&E.current&&a({token:null}),N.current=p?.from?.blockchain,E.current=p?.from?.token}},[p?.from?.token?.symbol,p?.from?.token?.address,p?.from?.token?.blockchain,p?.from?.blockchain,m]),jo(()=>{ka(s,k)&&a({token:null}),Ta(c,y)&&n(null)},[k,y]),jo(()=>{ka(l,T)&&a({token:null}),Ta(u,v)&&o(null)},[T,v]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.to?.blockchain),b=p?.to?.token,I=b&&d(b);(w||!w&&x.current)&&o(w??null),I?e({token:I,meta:{blockchains:h}}):!I&&B.current&&e({token:null}),x.current=p?.to?.blockchain,B.current=p?.to?.token}},[p?.to?.token?.symbol,p?.to?.token?.address,p?.to?.token?.blockchain,p?.to?.blockchain,m]),jo(()=>{f(p?.affiliate?.ref??null),g(p?.affiliate?.percent??null),C(p?.affiliate?.wallets??null)},[p?.affiliate?.ref,p?.affiliate?.percent,p?.affiliate?.wallets])}i(zu,"useSyncStoresWithConfig");import{useEffect as es,useRef as 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=S().fetchStatus,f=S().blockchains(),g=qC(),{updateIframe:C,updateCampaignMode:k}=S(),y=S().isInCampaignMode(),T=HC(),{findToken:v}=S(),E=i(()=>{let N={};for(let[L,K]of e.entries())L.startsWith("utm_")&&(N[L]=K);let x=e.get("fromAmount"),w=e.get("fromBlockchain"),b=e.get("fromToken"),I=e.get("toBlockchain"),_=e.get("toToken"),M=e.get("autoConnect"),q=e.get("clientUrl"),R=e.get("liquiditySources"),X=e.get("blockchain");return{fromAmount:x,fromBlockchain:w,fromToken:b,toBlockchain:I,toToken:_,autoConnect:M,clientUrl:q,liquiditySources:R,utmQueryParams:N,blockchain:X}},"getUrlSearchParams"),B=i(N=>{for(let x in N)N[x]||delete N[x];o(N,{replace:!0})},"updateUrlSearchParams");es(()=>{let{autoConnect:N,clientUrl:x,utmQueryParams:w,blockchain:b}=E();g&&d==="success"&&B({fromBlockchain:n?.name,fromToken:Ra(a),toBlockchain:r?.name,toToken:Ra(s),fromAmount:l,autoConnect:N??void 0,clientUrl:x??void 0,blockchain:b??void 0,liquiditySources:y?T.current:void 0,...w})},[t.pathname,l,n,a,r,s,y]),es(()=>{if(!g)return;let N=E();if(!T.current&&N.liquiditySources&&(T.current=N.liquiditySources),N.fromAmount&&h(N.fromAmount),d==="success"){let x=f.find(_=>_.name===N.fromBlockchain),w=N.fromToken&&x?v(Ja(N.fromToken,x)):void 0,b=f.find(_=>_.name===N.toBlockchain),I=N.toToken&&b?v(Ja(N.toToken,b)):void 0;x&&(c(x),w&&p({token:w,meta:{blockchains:f}})),b&&(u(b),I&&m({token:I,meta:{blockchains:f}}))}},[d]),es(()=>{let{clientUrl:N,liquiditySources:x}=E();C("clientUrl",N||void 0),k("liquiditySources",x?.split(",")??void 0)},[])}i(os,"useSyncUrlAndStore");import{i18n as Ro}from"@lingui/core";import{Alert as 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}=S(),[m,h]=ls(!1),[d,f]=ls(!1),[g,C]=ls(!1),k=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),T=i(()=>{C(!0),y()},"handleErrorModalButtonClick"),v=i(()=>{g&&n?.type==="network-error"&&(C(!1),k()),c()},"handleExit"),E=i(()=>{e&&(p(e),l())},"handleSubmit");return em(()=>{n&&h(!0)},[n]),em(()=>{o&&e&&f(!0)},[o,e]),Zt.createElement(Zt.Fragment,null,Zt.createElement(J,{open:m,dismissible:!0,onClose:y,onExit:v,container:A()},Zt.createElement(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}=S(),o=jr()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let c of l)n({type:"widget_height",data:{height:c.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(cs,"useIframe");import{useNavigate as 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}=S(),{dark:c,light:u}=gs(e),p=hs({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[p.className,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=S().blockchains(),{findToken:a}=S();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}}=S(),l=Xe("notification",s)||r.includes("notifications");return Be.createElement(Be.Fragment,null,!r.includes("refresh")&&Be.createElement(Jr,{container:a||A(),side:"top",content:Zr.t("Refresh")},Be.createElement(Yr,{onClick:e})),!l&&Be.createElement(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}}=S(),[p,m]=Bm(!1),{config:{features:h,theme:d}}=S(),{watermark:f}=ne(),g=f==="FULL",{activeTheme:C}=Zo(d||{}),[k,y]=Bm(!1),T=Xe("connectWalletButton",h),{isActiveTab:v,tabManagerInitiated:E,showActivateTabModal:B,setShowActivateTabModal:N,activateCurrentTab:x}=ne(),w=Oe(),{manager:b}=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));y(!!u?.swapBoxBanner&&(K||ae))},[u?.swapBoxBanner?.routes?.toString(),location.pathname]),ti(()=>(jr()&&L.current&&e(L.current),()=>{o()}),[]),ti(()=>(X.current?.addEventListener("scroll",As),()=>{X.current?.removeEventListener("scroll",As)}),[]),ti(()=>{m(l==="failed")},[l]),be.createElement(bm,{height:s,id:$e.SWAP_BOX_ID,className:`${C()} ${ei()}`,ref:L,showBanner:k},be.createElement(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))),k&&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}=S(),l=S().customTokens(),c=i(()=>{a(null),e(!1),n(null)},"resetState");function u(m,h){switch(m){case"duplicated":return{type:m,title:Rt.t("Duplicate Token"),message:Rt.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:m,title:Rt.t("Token Already Exists"),message:Rt.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:m,title:Rt.t("Token Not Found"),message:Rt.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:h}})};case"network-error":return{type:m,title:Rt.t("Network error"),message:Rt.t("An error occurred while retrieving token data.")}}}return i(u,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:m,tokenAddress:h})=>{e(!0);try{if(l.some(k=>k.address?.toLowerCase()===h.toLowerCase())){let k=u("duplicated");n(k);return}let f=await tt().getCustomToken({blockchain:m,address:h});if(!f||!f.token||f.error){let k=u("not-found",m);n(k);return}let g=f.token;if(s({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let k=u("token-exist");n(k);return}return a({...g,warning:!0})}catch(d){if(d.code==="ERR_BAD_REQUEST"){let f=u("not-found",m);n(f);return}n(u("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:c}}i(Lm,"useFetchCustomToken");var 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=S().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}=S(),l=S().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 k=>{if(k.preventDefault(),navigator.clipboard!==void 0){let y=await navigator.clipboard.readText();a(y),u?.current?.focus()}},"handlePaste"),C=i(()=>r?We.createElement(zm,{id:"widget-custom-destination-close-icon-btn",onClick:f,variant:"ghost"},We.createElement(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:k=>{let y=k.target.value;a(y)}})),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}=S(),[p,m]=Ln(),[h,d]=Ln(null),[f,g]=Ln(!1),[C,k]=Ln(null),{suggestAndConnect:y}=si(),{handleDisconnect:T}=Xt(),{list:v}=yt({chain:e}),[E,B]=Ln(v),N=v.length,x=a&&N-a>0,w=i(async I=>{g(!1),k("in-progress");try{await y(I.walletType,I.chain),k("completed")}catch{k("rejected")}},"addExperimentalChain");ad(()=>{B(I=>{let _=v.findIndex(M=>n(M.type,e));return x&&_>1?[v[_]].concat(v.filter((M,q)=>q!==_)):I.map(M=>v.find(q=>q.type===M.type)??M)})},[JSON.stringify(v)]);let b=document.getElementById($e.SWAP_BOX_ID);return ad(()=>{let I=null;return(C==="completed"||C==="rejected")&&(I=setTimeout(()=>k(null),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:k.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=S().blockchains(),{selectedQuote:c,setSelectedWallets:u,quoteWalletsConfirmed:p,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:d}=O(),{config:f,connectedWallets:g,setWalletsAsSelected:C}=S(),[k,y]=on(""),[T,v]=on([]),[E,B]=on(""),[N,x]=on(!!h),w=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(k&&y(""),Q(D.walletType,D.chain))return;let j=g.find(he=>he.walletType===D.walletType&&he.chain===D.chain);j&&(n(),D.chain===I?.name&&N&&!_(I.name)&&(x(!1),d(null)),R(he=>he.filter(ce=>ce.chain!==D.chain).concat({...j,selected:!0})))},"onChange"),se=i(()=>{let D=q.filter(G=>G.selected);C(D),u(D),m(!0),o()},"onConfirmBalance"),ct=i(async()=>{v([]),B("");let D=await r?.({selectedWallets:q.filter(j=>j.selected),customDestination:h}),G=D.warnings;G?.balance?.messages&&v(G.balance.messages),D.error&&B(cu(D.error)),!D.error&&!G?.balance?.messages.length?se():v(G?.balance?.messages??[])},"onConfirmWallets");ld(()=>{R(D=>{let G=[];return D.forEach(j=>{!g.some(ce=>ce.chain===j.chain&&ce.walletType===j.walletType&&ce.address===j.address)||G.push(j)}),G=G.concat(g.filter(j=>!!!G.find(ce=>ce.chain===j.chain)&&j.selected&&w.includes(j.chain))),G})},[g,w]),ld(()=>{let D=[];X.length>0&&(X.forEach(G=>{let j=g.find(he=>he.chain===G.blockchain&&he.walletType===G.walletType);j?Ke(j):D.push(G)}),L(D))},[g,X]);let V=document.getElementById($e.SWAP_BOX_ID);return te.createElement(J,{open:e,onClose:()=>{p||s("../",{replace:!0}),o()},dismissible:!k,container:V,...!k&&{styles:{container:{height:"100%"}},footer:te.createElement(Ym,null,te.createElement(sd,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Fu(a,N,h,c,q,I),onClick:ct,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Eo.t("Confirm")))},...k&&{styles:{container:{height:"100%",padding:"$0"}},header:te.createElement(Vm,null,te.createElement(Km,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},te.createElement(GT,{size:16})),te.createElement(Os,{variant:"headline",size:"small"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:pt(k,l)}})))},anchor:"center"},te.createElement(J,{open:ae,onClose:v.bind(null,[]),container:V},te.createElement(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")))),k&&te.createElement(jm,null,te.createElement("div",{className:Xm()},te.createElement($s,{chain:k,quoteChains:w,isSelected:Q,selectWallet:Ke,onShowMore:()=>y(k),onConnect:D=>{K(k,D)}}))),!k&&te.createElement(te.Fragment,null,E&&te.createElement(te.Fragment,null,te.createElement(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:()=>y(j?.name??""),onConnect:je=>{K(D,je)}})),!ce&&te.createElement(Fs,{size:32}),_e&&te.createElement(Qm,{blockchain:I,open:N,handleOpenChange:Ie}))}))))}i(cd,"ConfirmWalletsModal");import{i18n as 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=S().getDisabledLiquiditySources(),a=S().toggleAllLiquiditySources,s=S().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}=S(),{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)"}}}}),AO=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,k])=>k.map((y,T)=>{let v=`payable-fee-${T}`,E=Za(y);return Z.createElement(gi,{key:v},Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},Va(C,Nt.t)),Z.createElement(Ev,{content:y.amount,container:f},Z.createElement(kt,{variant:"label",size:"medium"},P(y.amount,2,2)," ",y.asset.symbol," ($",P(E,4,4),")")))})),Z.createElement(gi,{className:"total_payable_fee"},Z.createElement(kt,{variant:"label",size:"medium"},Nt.t("Total Payable Fee")),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(l,4,4))),Z.createElement(Ys,null),Object.keys(g.nonePayable).length&&Z.createElement(ai,{triggerAnchor:"bottom",onClickTrigger:()=>r(C=>!C),trigger:Z.createElement("div",{className:Kd()},Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},n?Nt.t("Hide non-payable fees"):Nt.t("Show non-payable fees")),Z.createElement(hi,{size:4,direction:"horizontal"}),Z.createElement(ri,{orientation:n?"up":"down"},Z.createElement(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
|
-
you won\u2019t need to pay extra gas for them.`)),Z.createElement(hi,{size:10}),Object.entries(g.nonePayable).map(([C,k],y)=>{let T=Nu(k),v=Va(C,Nt.t),E=`non-payable-fee-${y}`;return Z.createElement(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((k,y)=>{let T=`image-${y}`;return y>=f&&z.createElement(z.Fragment,{key:T},z.createElement(On,{content:k.swapper.displayName,src:k.swapper.image??"",state:k.state,open:!1}),y!==u-1&&z.createElement(z.Fragment,null,C))}))},z.createElement(Xs,{state:r.find((k,y)=>y>=f&&(k.state==="error"||k.state==="warning"))?.state},z.createElement(Ci,{size:"xsmall",variant:"body"},"+",u-f))))})),z.createElement("div",{className:rn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:rn()},z.createElement(Ci,{variant:"body",size:"xsmall"},nf.t("Chains:")),z.createElement(Js,{direction:"horizontal",size:4}),p.map((d,f)=>z.createElement(z.Fragment,{key:d.displayName},p.length<=Ti||p.length>Ti&&f<Ti-1?z.createElement(vi,{container:c,side:"bottom",content:d.displayName,sideOffset:4},z.createElement(On,{content:"",src:d.image??"",open:!1,className:f!==0?"blockchainImage":""})):f===Ti-1&&z.createElement(vi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},p.map((g,C)=>C>=f&&z.createElement(On,{key:g.displayName,content:"",src:g.image??"",open:!1,className:C>f?"blockchainImage":"",container:l})))},z.createElement(Xs,{className:"blockchainImage"},z.createElement(Ci,{size:"xsmall",variant:"body"},"+",p.length-f))))),z.createElement(Js,{direction:"horizontal",size:32}))),z.createElement(Ks,{orientation:a?"up":"down"},z.createElement(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=S().blockchains(),{findToken:f}=S(),g=S().swappers(),{customSlippage:C,slippage:k}=S(),y=C||k,[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:y}}))))})):void 0,time:fn(V.estimatedTimeInSeconds),fee:P(Ya(V,f),2,2),internalSwaps:V.internalSwaps?_(V.internalSwaps):void 0}}),"getQuoteSteps"),M=_(e?.swaps??[]),q=M.length,R=h||A(),X=Tu(t.quote.tags||[]),L=!!p,K=vr(e?.swaps),ae=fn(K),Q=Qr(e?.swaps??[],f),de=P(Q,2,2),Ie=Q.gte(new Rs(uu)),Ke=K/du>=mu;return m?U.createElement($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,k=e?ft(e):null,T=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?xi.createElement(Vs,null,xi.createElement(Qn,{tagHidden:l,type:o,expanded:s})):T?xi.createElement(Vs,{onClick:()=>c?.(e)},xi.createElement(el,{quote:e,error:r,container:d,showModalFee:u,warning:a,tagHidden:l,selected:p,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:f,usdValue:g?.toString()??""},output:{value:C?.toString()??"",usdValue:k?.toString()??""}})):null}i(No,"QuoteInfo");import{calculatePendingSwap as 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}=S(),p=S().getDisabledLiquiditySources(),m=S().blockchains(),h=S().tokens(),{findToken:d}=S(),f=u||c,{fetch:g,cancelFetch:C,loading:k}=Ef();return ew(()=>C,[]),{loading:k,fetch:i(async T=>{let v=T.selectedWallets,E=T?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let B=v.reduce((x,w)=>(x[w.chain]=w.address,x),{}),N={requestId:a?.requestId||"",selectedWallets:B,destination:E||void 0};try{return await g(N,!0).then(x=>{let{result:w}=x;if(!w)throw new Error("Error fetching updated route");Ii({diagnosisMessages:w.diagnosisMessages,requestId:w.requestId,swaps:w.result?.swaps});let b={outputAmount:w.result?.outputAmount,requestId:w.requestId,resultType:w.result?.resultType,swaps:w.result?.swaps||[],validationStatus:w.validationStatus,requestAmount:w.requestAmount};r(b);let I={slippage:f.toString(),disabledSwappersGroups:p},_=If({previousQuote:a??void 0,currentQuote:b,meta:{blockchains:m},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:d});l();let M=!!_.balance,q=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=S().getDisabledLiquiditySources(),C=lw(g),{manager:k}=tw(),{fetch:y,loading:T,cancelFetch:v}=il(),[E,B]=Hn({swap:null,error:null,warnings:null}),[N,x]=Hn(!1),w=i(async({selectedWallets:L,customDestination:K})=>{let ae=await y?.({selectedWallets:L,customDestination:K});return B(ae),ae},"onConfirmSwap"),b=i(async()=>{if(E.swap&&n)try{await k?.create("swap",{swapDetails:E.swap},{id:E.swap.requestId});let L=`../${F.swaps}/${E.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){c("Error: "+L?.message)}},"addNewSwap"),I=i(async()=>{d(!0),await b(),d(!1)},"onConfirm"),_=i(async()=>{E.warnings?.quote&&Su(E.warnings.quote)&&!a?x(!0):await I()},"onStartConfirmSwap"),M=i(async()=>{B({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(L=>{B(L)}).catch(L=>console.error(L))},"onRefresh");Ni(()=>{!!C.current.length&&!g.length&&M(),C.current=g},[g.length]),Ni(()=>{u&&v()},[u]),Ni(()=>{u&&m(u)},[u]),Ni(()=>{u||y({selectedWallets:o,customDestination:r}).then(L=>B(L)).catch(L=>console.error(L))},[]),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"}),vQ=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=S().fetchStatus,p=S().blockchains(),{getBalanceFor:m,fetchingWallets:h}=S(),{isTokenPinned:d}=S(),{setFromToken:f,setToToken:g}=O(),{t:C}=Ww(),k=Oe(),[y,T]=Bw(null),v=i(()=>{l==="source"?f({token:y,meta:{blockchains:p}}):g({token:y,meta:{blockchains:p}})},"updateToken"),E=i(()=>{v(),k()},"handleImportToken"),B=i(w=>{if(w.customToken){let{customToken:I,..._}=w;return W.createElement(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=y?uo(y?.blockchain,p):null;return W.createElement(W.Fragment,null,a&&W.createElement(W.Fragment,null,W.createElement(Kn,{variant:"label",size:"large"},Cl.t("Select Token")),W.createElement(Qt,{size:4})),W.createElement(Lf,null,W.createElement(Qt,{size:4}),u==="loading"&&W.createElement(zf,{size:Lw}),u==="success"&&(e.length?W.createElement(W.Fragment,null,W.createElement(Nn,{token:y,address:y?.address??"",blockchain:x??void 0,onImport:E,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),W.createElement(Bi,{as:"ul"},N())):!!o&&W.createElement(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}=S(),n=S().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=O(),{mode:c}=Zo({}),u=Uw(),[p,m]=Tl(!1),[h,d]=Tl(),f=i(y=>{let T=y.target.value;e(T)},"handleSearch"),g=c==="dark",C=n.filter(y=>et(y.symbol,t)||et(y.address||"",t)||et(y.name||"",t)),k=i(()=>{if(h){let y=a?ut(a):null,T=r?ut(r):null,v=ut(h);y===v?l({token:null}):T===v&&s({token:null}),o(h)}m(!1)},"handleDeleteCustomToken");return fe.createElement(oe,{header:{title:Ht.t("Custom Tokens")}},fe.createElement(re,null,fe.createElement(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:y=>fe.createElement(Hw,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),d(y)}},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:k},Ht.t("Yes, Delete it")),fe.createElement(Xn,{size:12}),fe.createElement(kl,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},Ht.t("No, Continue"))))))}i(Hf,"CustomTokensPage");import{i18n as qe}from"@lingui/core";import{useManager as cb}from"@rango-dev/queue-manager-react";import{Button as Nl,darkTheme as pb,Divider as Lo,MessageBox as ub,NotFound as mb,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 db}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{getCurrentStep as tb}from"@rango-dev/queue-manager-rango-preset";import{Divider as ng,GroupedVirtualizedList as ob,Skeleton as nb,SwapListItem as rg,Typography as rb}from"@rango-dev/ui";import He,{useCallback as ig,useEffect as ib,useRef as ab,useState as sb}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 lb=10;function Al(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=sb([]),l=ab(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,lb),s(m(u,l.current)))},[e.length]);if(ib(()=>{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(nb,{variant:"text",width:60,size:"small"}),He.createElement(ng,{size:16})),He.createElement(ng,{size:4}),He.createElement(tg,null,g.map((y,T)=>He.createElement(rg,{isLoading:!0,key:T}))))))}return He.createElement(ob,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:d=>He.createElement(El,null,He.createElement(Il,null,He.createElement(rb,{variant:"label",size:"medium",className:xl()},p[d]))),itemContent:(d,f)=>{let g=c[d],C=tb(g);if(!g)return null;let k=g.steps[0],y=g.steps[g.steps.length-1];return He.createElement(eg,{key:g.requestId},He.createElement(rg,{requestId:g.requestId,creationTime:g.creationTime,status:g.status,onClick:o,currentStep:C,tooltipContainer:A(),onlyShowTime:p[f]===eb.t("Today"),swapTokenData:{from:{token:{image:k.fromLogo,displayName:k.fromSymbol},blockchain:{image:k.fromBlockchainLogo||""},amount:P(g.inputAmount,6,6),realAmount:g.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:P(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(Al,"HistoryGroupedList");import{i18n as Li}from"@lingui/core";import ag from"dayjs";var sg=i(t=>{let e=new Map([["today",{title:Li.t("Today"),swaps:[]}],["week",{title:Li.t("This week"),swaps:[]}],["month",{title:Li.t("This month"),swaps:[]}],["year",{title:Li.t("This year"),swaps:[]}]]);function o(c,u){e.has(c)||e.set(c,{title:c,swaps:[]}),e.get(c)?.swaps.push(u)}i(o,"addYearsToOutput");let n=ag();t.forEach(c=>{let u=Number(c.creationTime),p=ag(u);if(n.isSame(p,"day"))e.get("today")?.swaps.push(c);else if(n.isSame(p,"week"))e.get("week")?.swaps.push(c);else if(n.isSame(p,"month"))e.get("month")?.swaps.push(c);else if(n.isSame(p,"year"))e.get("year")?.swaps.push(c);else{let m=new Date(u).getFullYear().toString();o(m,c)}});let r=Array.from(e.values()).filter(c=>c.swaps.length>0),a=r.flatMap(c=>c.swaps),s=r.map(c=>c.swaps.length),l=r.map(c=>c.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var fb=Bl("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),gb=Bl("div",{display:"flex",justifyContent:"center",alignItems:"center"}),hb=Bl("div",{"._typography":{color:"$neutral700",[`.${pb}&`]:{color:"$neutral900"}}}),yb=[{id:Jn.SUCCESS,title:qe.t("Complete")},{id:Jn.RUNNING,title:qe.t("Running")},{id:Jn.FAILED,title:qe.t("Failed")}],Sb=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=db(),{manager:e,state:o}=cb(),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)||Sb(B,r)||xt(N,r))&&(!u||u===E)}),[n,r,u]),g=!f?.length&&!c,C=i(()=>h(!1),"onCloseModal"),k=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(T){console.log(T)}},"onClear"),y=lg(()=>!n.some(T=>T.status===Jn.SUCCESS||T.status===Jn.FAILED),[n]);return ie.createElement(oe,{header:{title:qe.t("History"),suffix:ie.createElement(Jt,null,ie.createElement(Nl,{id:"widget-history-clear-btn",disabled:y,variant:"ghost",size:"xsmall",onClick:()=>h(!0)},ie.createElement(Mi,{size:"medium",variant:"label",color:"error"},qe.t("Clear"))))}},ie.createElement(re,null,ie.createElement(gb,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:yb})),ie.createElement(Lo,{size:"16"}),ie.createElement(fb,null,g&&ie.createElement(og,null,ie.createElement(Lo,{size:32}),ie.createElement(mb,{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(ub,{type:"warning",title:qe.t("Clear Transaction History"),description:ie.createElement(hb,null,ie.createElement(Mi,{variant:"body",size:"medium"},qe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ie.createElement(Lo,{size:"24"}),ie.createElement(Mi,{variant:"body",size:"small"},qe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ie.createElement(Lo,{size:30}),ie.createElement(Nl,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},qe.t("Yes, Clear the history")),ie.createElement(Lo,{size:10}),ie.createElement(Nl,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:C},ie.createElement(Mi,{variant:"title",size:"medium",color:"primary"},qe.t("No, Cancel")))))}i(cg,"HistoryPage");import{i18n as Qb}from"@lingui/core";import{Button as Hb,Divider as Bg,styled as qb,WarningIcon as Gb}from"@rango-dev/ui";import Vb from"bignumber.js";import Ge,{useEffect as Wg,useState as Lg}from"react";import{useNavigate as Kb}from"react-router-dom";import{i18n as ug}from"@lingui/core";import{Alert as kb,Divider as Wl,NoRouteIcon as Tb,Typography as vb}from"@rango-dev/ui";import Mo from"react";import{styled as Cb}from"@rango-dev/ui";var pg=Cb("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(Tb,{size:24,color:"gray"}),Mo.createElement(Wl,{size:4}),Mo.createElement(vb,{variant:"title",size:"small"},ug.t("No Routes Found")),Mo.createElement(Wl,{size:4}),Mo.createElement(kb,{title:ug.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Ll,"SameTokensWarning");import{i18n as Ab}from"@lingui/core";import{Header as Nb}from"@rango-dev/ui";import ro,{useEffect as Bb,useState as Wb}from"react";import{i18n as bb}from"@lingui/core";import{Divider as Pl,FullExpandedQuote as xb,Typography as Eb}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 wb}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(wb,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(_i,"SelectStrategy");var hg=3;function er(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:c,quotes:u,updateQuotePartialState:p,fromToken:m,toToken:h,sortStrategy:d,error:f}=O(),{slippage:g,customSlippage:C}=S(),{findToken:k}=S(),y=l||A(),T=!!u&&u.results.length,v=C??g,E=i(x=>{if(!m||!h||!u)return null;let w={requestAmount:u.requestAmount,validationStatus:null,...x};return Ko({currentQuote:w,userSlippage:v,findToken:k})},"getQuoteWarning"),B=f?.type===0||f?.type===1,N=u?.results?zr(d,u?.results):[];return Ce.createElement(Ce.Fragment,null,a&&Ce.createElement(Ce.Fragment,null,Ce.createElement(dg,null,Ce.createElement(Eb,{size:"xmedium",variant:"title"},bb.t("Sort by")),Ce.createElement(_i,{container:y})),Ce.createElement(Pl,{size:"10"})),e&&Array.from({length:hg},(x,w)=>Ce.createElement(Ce.Fragment,{key:w},s?Ce.createElement(xb,{loading:!0}):Ce.createElement(Qn,{tagHidden:!1,type:"list-item",expanded:!1}),w!==hg-1&&Ce.createElement(Pl,{size:16}))),!e&&Ce.createElement(Ce.Fragment,null,T?N.map((x,w)=>{let b=E(x),I=rl(x.swaps),_=N.length-1===w;return Ce.createElement(Ce.Fragment,{key:x.requestId},Ce.createElement(No,{showModalFee:r,container:y,selected:c?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:u.requestAmount,validationStatus:null},loading:e,error:I?.options||null,warning:b,fullExpandedMode:s,onClick:M=>{I||p("warning",b),p("error",I?.options||null),o(M)},type:"list-item"}),!_&&Ce.createElement(Pl,{size:16}))}):B&&Ce.createElement(mg,null,Ce.createElement(Mn,{size:s?"large":"small",error:f,fetch:n}))))}i(er,"Quotes");import{darkTheme as Ib,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",[`.${Ib} &`]:{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 Lb=100;function _l(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=Wb(!1),c=s?"":"is-hidden",{config:u}=S(),p=u?.variant==="full-expanded",m=fo();return Bb(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},Lb):(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(Nb,{title:Ab.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 Db from"bignumber.js";import tr from"react";import{ReverseIcon as _b}from"@rango-dev/ui";import $l from"react";import{keyframes as Mb,styled as kg}from"@rango-dev/ui";var Dl=450,Pb=Mb({"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:`${Pb} ${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(_b,{size:12})))}i(Fl,"SwitchFromAndToButton");import{styled as wg}from"@rango-dev/ui";var bg=wg("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),xg=wg("div",{position:"relative"});function Ol(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:c,setInputAmount:u,inputAmount:p,inputUsdValue:m,outputAmount:h,outputUsdValue:d,selectedQuote:f}=O(),{connectedWallets:g,getBalanceFor:C}=S(),k=a?C(a):null,y=Er(k)?.amount??"0",T=k?new Db(k.amount).shiftedBy(-k.decimals):le,v=!!s&&sp(g,s.name),E=!Xa(f,p,m),B=!Xa(f,p,d),N=!m||!d||!d.gt(0)?null:Dt(m.toString(),d.toString());return tr.createElement(bg,null,tr.createElement(xg,null,tr.createElement(Ig,{label:Eg.t("From"),mode:"From",onInputChange:u,balance:y,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:p,usdValue:E?void 0:P(m,4,4),realUsdValue:E?void 0:m?.toString(),error:E?ee().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:v,tooltipContainer:A(),onSelectMaxBalance:()=>{let x=P(T,k?.decimals),w=k?.amount?x.split(",").join(""):"";u(w)},anyWalletConnected:g.length>0}),tr.createElement(Fl,null)),tr.createElement(Ig,{sharpBottomStyle:!r&&(!!f||e),label:Eg.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:c?.displayName||"",image:c?.logo},token:{displayName:l?.symbol||"",image:l?.image,securityWarning:!!l?.warning},percentageChange:P(Dt(m,d),2,2),warningLevel:$t(N??0),price:{value:P(h,6,6),usdValue:B?void 0:P(d,4,4),realValue:h?.toString(),realUsdValue:B?void 0:d?.toString(),error:B?ee().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:A()}))}i(Ol,"Inputs");import{useCallback as $b,useEffect as Fb,useRef as Ob,useState as Ub}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 zb=600;function Di({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Ag(),{excludeLiquiditySources:n,routing:r}=S().config,{connectedWallets:a}=S(),l=a.some(Ie=>Ie.isContractWallet),{fromToken:c,toToken:u,inputAmount:p,inputUsdValue:m,selectedQuote:h,sortStrategy:d,resetQuote:f,error:g,warning:C,setSelectedQuote:k,updateQuotePartialState:y}=O(),{slippage:T,customSlippage:v,affiliatePercent:E,affiliateRef:B,affiliateWallets:N,fetchStatus:x}=S(),w=S().getLiquiditySources(),b=S().getDisabledLiquiditySources(),I=S().excludeLiquiditySources(),{findToken:_}=S(),[M,q]=Ub(!0),R=Ob(p),X=v??T,K=!c||!u||Mt(c,u)||!gn(p),ae=i(Ie=>{q(Ie)},"resetState"),Q=i(Ie=>{let{fromToken:Ke,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:_e}=Ie;if(M||ae(!0),!K&&Ke&&se){f();let je=Lu({fromToken:Ke,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,wallets:a,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:_e,contractCall:l});Uo("experimental",r)&&(je.experimental=!0),Uo("avoidNativeFee",r)&&(je.avoidNativeFee=!0),Uo("enableCentralizedSwappers",r)&&(je.enableCentralizedSwappers=!0),r?.maxLength&&(je.maxLength=r.maxLength),e(je).then(Te=>{let De=zr(d,Te.results),jt=ku(h,De,Te.requestAmount);q(!1),y("quotes",Te),k(jt),Ii({diagnosisMessages:Te.diagnosisMessages,requestId:jt?.requestId||"",swaps:jt?.swaps});let po=jt&&Ko({currentQuote:jt,userSlippage:X,findToken:_});y("warning",po)}).catch(Te=>{let{error:De}=Ai(Te);(De?.type===0||De?.type===1)&&f(),De?.type!==2&&(y("error",De),q(!1))})}},"fetch"),de=$b(kr(Ie=>{Q(Ie)},zb),[K]);return Fb(()=>{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 jb=qb("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),Xb=300;function Mg(){let t=Kb(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:c,setSelectedQuote:u,resetQuoteWallets:p,setQuoteWarningsConfirmed:m,updateQuotePartialState:h}=O(),[d,f]=Lg(!1),{isLargeScreen:g,isExtraLargeScreen:C}=Si(),{fetch:k,loading:y}=Di({refetchQuote:a}),{config:T,fetchStatus:v,connectedWallets:E}=S(),{isActiveTab:B}=ne(),[N,x]=Lg(!1),b=Au({fetchMetaStatus:v,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:E.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),I=fp(g,C,T?.variant),_=!!n&&!!e&&!!o&&new Vb(n).gt(0)&&!Ou(e,o),M=_&&v==="success"&&y,X=(!I||I&&c?.results.length)&&(l||s);Wg(()=>{p(),h("refetchQuote",!0)},[]),Wg(()=>{f(_)},[_]);let L=(r||s)&&!N?k:void 0,K=i(Q=>{I&&d?(f(!1),setTimeout(()=>{t(Q)},Xb)):t(Q)},"onHandleNavigation"),ae=i(Q=>{r?.requestId!==Q.requestId&&(x(!1),u(Q))},"onClickOnQuote");return Ge.createElement(jb,null,Ge.createElement(oe,{height:"auto",footer:Ge.createElement(Hb,{id:`widget-swap-${b.action}-btn`,type:"primary",size:"large",disabled:b.disabled||!B,prefix:b.action==="confirm-warning"&&Ge.createElement(Gb,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||Qb.t("Swap"),suffix:Ge.createElement(xo,{hidden:I?["refresh"]:void 0,onClickRefresh:L,onClickHistory:()=>K(F.swaps),onClickSettings:()=>{K(F.settings)}})}},Ge.createElement(re,null,Ge.createElement(Ol,{fetchingQuote:M,fetchMetaStatus:v,isExpandable:I,onClickToken:Q=>{K(Q==="from"?F.fromSwap:F.toSwap)}}),Ge.createElement(Bg,{size:"2"}),I?null:Ge.createElement(No,{quote:r,loading:M,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:c&&c.results.length>1?()=>{h("refetchQuote",!1),K(F.routes)}:void 0}),X?Ge.createElement(Ge.Fragment,null,Ge.createElement(Bg,{size:"10"}),Ge.createElement(_n,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:k,showWarningModal:N,confirmationDisabled:!B,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:()=>{x(!1),m(!0),K(F.confirmSwap)},onChangeSettings:()=>K(F.settings)})):null,Ge.createElement(Ll,null))),I?Ge.createElement(_l,{loading:M,onClickOnQuote:ae,fetch:k,onClickRefresh:L,isVisible:d}):null)}i(Mg,"Home");import{i18n as Pg}from"@lingui/core";import{Alert as Yb,Divider as Zb,List as Jb,ListItemButton as Rb,Radio as ex,RadioRoot as tx,Typography as ox}from"@rango-dev/ui";import Wt from"react";function io(){let{setLanguage:t,language:e,config:o}=S(),n=Cp,r=o?.language||zo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||zo),resetLanguage:()=>t(null)}}i(io,"useLanguage");function _g(){let{activeLanguage:t,changeLanguage:e,languages:o}=io(),n=Oe(),r=o.map(a=>{let{local:s,label:l,SVGFlag:c}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Wt.createElement(ox,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:Wt.createElement(ex,{value:s}),start:Wt.createElement(c,null)}});return Wt.createElement(oe,{header:{title:Pg.t("Language")}},Wt.createElement(re,null,Wt.createElement(Yb,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Wt.createElement(Zb,{size:"8"}),Wt.createElement(tx,{value:t},Wt.createElement(Jb,{type:Wt.createElement(Rb,{title:Pg.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(_g,"LanguagePage");import{i18n as qt}from"@lingui/core";import{Button as sx,Checkbox as lx,Image as cx,ListItemButton as px,NotFound as ux,Typography as mx}from"@rango-dev/ui";import Ve,{useState as dx}from"react";import{Checkbox as ix,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 nx,styled as rx}from"@rango-dev/ui";var Dg=rx(nx,{height:61});var ax=30;function Hl(){return nr.createElement(or,null,Array.from(Array(ax),(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(ix,{checked:!1})})))}i(Hl,"LoadingLiquiditySourceList");function ql({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[r,a]=dx(""),s=S().toggleLiquiditySource,l=S().isInCampaignMode(),c=Nr(o,n),u={Exchanges:qt.t("Exchanges"),Bridges:qt.t("Bridges")},p=[];t==="Exchanges"&&p.push("DEX"),t==="Bridges"&&p.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=c.filter(k=>p.includes(k.type)),h=m.length===m.filter(k=>k.selected).length,d=i(()=>{m.forEach(k=>{h?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),f=m.map(k=>{let{selected:y,groupTitle:T,logo:v,id:E,...B}=k;return{id:`widget-setting-liquidity-source-${E.toLowerCase().replace(/\s+/g,"-")}-item-btn`,start:Ve.createElement(cx,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(T)},end:Ve.createElement(lx,{checked:y,disabled:l}),title:Ve.createElement(mx,{variant:"title",size:"xmedium"},qt.t(T)),selected:y,groupTitle:T,logo:v,...B}}),g=i(k=>{let y=k.target.value;a(y)},"handleSearch"),C=f;return r&&(C=f.filter(k=>xt(k.groupTitle,r))),Ve.createElement(oe,{header:{title:qt.t(t),suffix:Ve.createElement(zl,null,Ve.createElement(sx,{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(ux,{title:qt.t("No results found"),description:qt.t("Try using different keywords")})):e==="success"&&Ve.createElement(or,{disabled:l},C.map(k=>{let{groupTitle:y,...T}=k;return Ve.createElement(Ve.Fragment,{key:k.id},Ve.createElement(px,{style:{height:"61px"},...T,selected:!1,hasDivider:!0}))}))))}i(ql,"LiquiditySourcePage");import{i18n as fx}from"@lingui/core";import $i from"react";import{useNavigate as gx}from"react-router-dom";function Fg(){let t=gx(),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:fx.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 xx,SelectableCategoryList as Ex}from"@rango-dev/ui";import Gt,{useState as Kg}from"react";import{useNavigate as Ix}from"react-router-dom";import{i18n as Gl}from"@lingui/core";import{Divider as Cx,Image as kx,ListItemButton as Tx,NotFound as vx,Typography as qg}from"@rango-dev/ui";import at,{useEffect as wx,useState as bx}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 hx,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",[`& ${hx}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as yx,Skeleton as Qg}from"@rango-dev/ui";import Oi from"react";var Sx=20;function Hg(){return Oi.createElement(Fi,null,Array.from(Array(Sx),t=>Oi.createElement(yx,{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]=bx(e),{fetchStatus:c}=S();wx(()=>{l([...Og(e,o,r)])},[e,o,r]);let u=i(()=>!s.length&&o?at.createElement(vx,{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(Tx,{key:`${p.name}-${p.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(p),start:at.createElement(kx,{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(Cx,{size:4})),at.createElement(zg,null,c==="loading"&&at.createElement(Hg,null),c==="success"&&u()))}i(Vl,"BlockchainList");function Ui(t){let{type:e}=t,o=Oe(),[n,r]=Kg(""),[a,s]=Kg("ALL"),l=O.use.setToBlockchain(),c=O.use.setFromBlockchain(),{fetchStatus:u}=S(),p=Ix(),m=S().blockchains({type:e}),h=xx(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(Ex,{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 Ux}from"@rango-dev/ui";import ao,{useEffect as zx,useState as Qx}from"react";import{useNavigate as Hx}from"react-router-dom";import{i18n as Xl}from"@lingui/core";import{BlockchainsChip as zi,Divider as Zg,Image as Jg,Skeleton as Lx,Tooltip as Mx,Typography as Yl}from"@rango-dev/ui";import Me from"react";import{useEffect as Bx}from"react";var jg=["ETH","COSMOS","OSMOSIS"];function Kl(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Ax),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(Nx(s)),r=n.splice(a)}return{list:n,more:r}}i(Kl,"prepare");function Ax(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(Ax,"sortByMostUsedBlockchains");function Nx(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(Nx,"generateSortByPreferredBlockchainsFor");function Xg(t,e){return!!e.list.find(o=>o.name===t)}i(Xg,"isInVisibleList");function jl(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();Bx(()=>{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 Wx}from"@rango-dev/ui";var Yg=Wx("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var Px=12;function Zl(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,s=jl(e,{limit:10,selected:n?.name}),{fetchStatus:l}=S(),c=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),p=s.more.length>0,m=s.more.length===1,h=!m&&p;return Me.createElement(Me.Fragment,null,Me.createElement(Zg,{size:12}),Me.createElement(Yl,{variant:"label",size:"large"},Xl.t("Select Chain")),Me.createElement(Zg,{size:12}),Me.createElement(Yg,null,l==="loading"&&Array.from(Array(Px),d=>Me.createElement(Lx,{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(Mx,{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 Dx,useRef as $x,useState as Jl}from"react";function Rl(){let t=S().blockchains(),e=$x(null),{customTokens:o}=S(),[n,r]=Jl(!1),[a,s]=Jl([]),[l,c]=Jl(null),u=i(async(h,d)=>{c(null),r(!0),s([]);try{let f=await tt().searchCustomTokens({query:h,blockchain:d},{signal:e.current?.signal}),g=new Set(o().map(y=>_t(y))),C=new Set(t.map(y=>y.name)),k=f.tokens.filter(y=>C.has(y.blockchain)&&!g.has(_t(y)));s(k),r(!1)}catch(f){c(f instanceof Error?f.message:"something went wrong"),s([]),f?.name!=="CanceledError"&&r(!1)}},"fetch"),p=Dx(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=Hx(),n=Oe(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:c,setToBlockchain:u}=O(),{getBalanceFor:p}=S(),{fetch:m,loading:h,tokens:d,cancel:f}=Rl(),[g,C]=Qx(""),k=e==="source"?r:a,y=k?.name??"",T=S().blockchains({type:e}),v=S().tokens({type:e,blockchain:y,searchFor:g,getBalanceFor:p}),E=Rg(v,d,g,h,k?.name),B=i(w=>{e==="source"?c(w):u(w)},"updateBlockchain"),N=i(w=>{e==="source"?s({token:w,meta:{blockchains:T}}):l({token:w,meta:{blockchains:T}})},"updateToken"),x={source:Hi.t("Source"),destination:Hi.t("Destination")};return zx(()=>(Qi(v,g,k?.name)&&m(g,k?.name??void 0),()=>{f()}),[v.length,g,k?.name]),ao.createElement(oe,{header:{title:Hi.t("Swap {type}",{type:x[e]})}},ao.createElement(re,null,ao.createElement(Zl,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:w=>{B(w)}}),ao.createElement(eh,{size:24}),ao.createElement(vt,{value:g,autoFocus:!0,placeholder:Hi.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>C(""),onChange:w=>C(w.target.value),suffix:Qi(v,g,k?.name)&&h?ao.createElement(Ux,{size:12,color:"secondary"}):void 0}),ao.createElement(eh,{size:16}),ao.createElement(jn,{list:E,selectedBlockchain:y,searchedFor:g,type:e,onChange:w=>{N(w);let b=T.find(I=>w.blockchain===I.name);b&&B(b),n()}})))}i(qi,"SelectSwapItemsPage");import{i18n as oc}from"@lingui/core";import{Alert as gE,Button as hE,styled as yE}from"@rango-dev/ui";import Po from"react";import{useInRouterContext as SE,useSearchParams as CE}from"react-router-dom";import{i18n as ah}from"@lingui/core";import{Divider as sh,InfoIcon as Kx,SlippageIcon as jx,TextField as Xx,Tooltip as Yx,Typography as lh}from"@rango-dev/ui";import st from"react";import{Chip as qx,styled as rr,TextField as Gx}from"@rango-dev/ui";var th=rr("div",{paddingTop:"$5",padding:"$10 $5"}),oh=rr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${Gx}`]:{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(qx,{width:"61px",flexShrink:0});import{i18n as ec}from"@lingui/core";import{Typography as Vx}from"@rango-dev/ui";import ir from"react";function ih(){return ir.createElement(Gi,null,ir.createElement(Vx,{variant:"label",size:"medium",color:"neutral700"},ec.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),ir.createElement("br",null),ir.createElement("br",null),ir.createElement("b",null,ec.t("Warning")),":\xA0",ec.t("This setting is applied to each step (e.g. 1Inch, Thorchain, etc.), meaning only that specific step will be reverted, not the entire route.")))}i(ih,"SlippageTooltipContent");function tc(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S();return st.createElement(th,null,st.createElement(nh,null,st.createElement(jx,{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(Yx,{container:A(),side:"top",sideOffset:4,content:st.createElement(ih,null)},st.createElement(Kx,{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(Xx,{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 Zx,ChevronRightIcon as Vi,DarkModeIcon as ph,Divider as ar,ExchangeIcon as Jx,InfinityIcon as Rx,InfoIcon as eE,LanguageIcon as tE,LightModeIcon as uh,List as oE,ListItem as nE,ListItemButton as rE,Skeleton as iE,styled as aE,Switch as sE,Tabs as lE,TargetIcon as cE,Tooltip as pE,Typography as Re}from"@rango-dev/ui";import $ from"react";import{useNavigate as uE}from"react-router-dom";var mE=aE("div",{width:"202px",height:"$40"}),dE=[{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"))}],fE=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=uE(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:r,languages:a}=io(),s=a.find(L=>L.local===r)?.label,l=S().fetchStatus,c=S().swappers(),u=S().getDisabledLiquiditySources(),{config:{features:p}}=S(),m=S().customTokens(),h=Xe("theme",p),d=Xe("liquiditySource",p),f=Xe("language",p),g=Xe("customTokens",p),C=S().infiniteApprove,k=S().toggleInfiniteApprove,y=Nr(c,u),T=y.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=T.length,E=T.filter(L=>L.selected).length,B=y.filter(L=>L.type==="DEX"),N=B.length,x=B.filter(L=>L.selected).length,w=i((L,K)=>{switch(l){case"loading":return $.createElement(iE,{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(Zx,{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(Jx,{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(cE,{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(tE,{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(pE,{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(eE,{color:"gray"}))),start:$.createElement(Rx,{color:"gray",size:16}),end:$.createElement(sE,{checked:C}),onClick:k},R={id:"widget-setting-theme-item-btn",type:$.createElement(nE,null),title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Theme")),end:$.createElement(mE,null,$.createElement(lE,{container:A(),items:dE,value:n,onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:fE(n)},X=d?[]:[b,I];return g||X.push(_),f||X.push(M),X.push(q),!e?.singleTheme&&!h&&X.push(R),$.createElement(oE,{type:$.createElement(rE,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:X})}i(mh,"SettingsLists");var kE=yE("div",{paddingLeft:"$8"});function dh(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=CE(),r=SE(),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(gE,{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(kE,null,Po.createElement(hE,{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 pI}from"@lingui/core";import{cancelSwap as uI}from"@rango-dev/queue-manager-rango-preset";import{useManager as mI}from"@rango-dev/queue-manager-react";import{Alert as dI}from"@rango-dev/ui";import Cc from"react";import{useParams as fI}from"react-router-dom";import{i18n as lt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as GE,getCurrentStep as VE,getRelatedWalletOrNull as KE}from"@rango-dev/queue-manager-rango-preset";import{Button as Kh,CopyIcon as jE,Divider as XE,DoneIcon as YE,IconButton as ZE,QuoteCost as JE,RangoExplorerIcon as RE,StepDetails as eI,Tooltip as jh,Typography as _o,useCopyToClipboard as tI}from"@rango-dev/ui";import{useWallets as oI}from"@rango-dev/wallets-react";import Xh from"bignumber.js";import{PendingSwapNetworkStatus as ea}from"rango-types";import Y,{useEffect as Yh,useRef as nI,useState as Zh}from"react";import{useNavigate as rI}from"react-router-dom";import{i18n as so}from"@lingui/core";var TE=[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"):`${TE[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 vE}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(vE,{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 wE,Typography as bE}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(wE,{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(bE,{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 xE}from"@rango-dev/logging-core";import{getCurrentStep as EE,getRelatedWalletOrNull as IE}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as AE,Wallet as NE}from"@rango-dev/ui";import{useWallets as BE}from"@rango-dev/wallets-react";import cn,{useState as WE}from"react";import{styled as lc}from"@rango-dev/ui";var kh=lc("div",{display:"flex",justifyContent:"center"}),NK=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]=WE(),{getWalletInfo:u,state:p}=BE(),m=EE(n),h=m?IE(n,m):null,d=m?.fromBlockchain,f=h?.walletType,g=f?hn(p(f)):null,C=f?u(f):null,k=a&&!!f&&!!g&&!!C,{list:y}=yt(),T=i(()=>{if(f){let v=y.find(E=>E.type===f);v?c(v):xE(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(AE,{type:e,title:o,description:r}),k&&cn.createElement(kh,null,cn.createElement(NE,{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 LE,Typography as Eh}from"@rango-dev/ui";import ge from"react";import{Link as ME,useNavigate as PE}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=PE(),{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(LE,{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(ME,{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 qE from"react";import{i18n as UE}from"@lingui/core";import{Alert as Hh,IconButton as zE,LinkIcon as QE}from"@rango-dev/ui";import co,{Fragment as HE}from"react";import{Alert as DE,ChevronDownIcon as $E,IconButton as FE}from"@rango-dev/ui";import un,{useState as OE}from"react";import{css as cr,darkTheme as Ih,styled as Kt,Typography as _E}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"}),y8=Kt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Bh=Kt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),S8=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(_E,{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]=OE(!1);return un.createElement(DE,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&un.createElement(FE,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},un.createElement($h,{rotated:o},un.createElement($E,{size:12,color:"gray"}))),footer:un.createElement(Fh,{open:o},un.createElement(Ri,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Oh,"FailedAlert");import{i18n as Uh}from"@lingui/core";import{Alert as dc,Button as zh}from"@rango-dev/ui";import{PendingSwapNetworkStatus as fc}from"rango-types";import pr from"react";function Qh(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?pr.createElement(dc,{type:"warning",title:n.shortMessage,action:pr.createElement(zh,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(fc.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Uh.t("Change"))}):r===fc.WaitingForConnectingWallet?pr.createElement(dc,{type:"warning",title:n.shortMessage,action:pr.createElement(zh,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(fc.WaitingForConnectingWallet)}},Uh.t("Connect"))}):pr.createElement(dc,{type:"warning",title:n.shortMessage})}i(Qh,"WarningAlert");function gc(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=An(a),c=a.status==="waitingForApproval"&&!l,u=a.status==="running"&&!l,p=u&&!s||c&&!a.explorerUrl?.length;return co.createElement(Dh,null,a.explorerUrl?.map((m,h,d)=>{let f=h+m.url,g=h===d.length-1,C=(g&&u||c)&&!p,k=g&&a.status==="failed";return co.createElement(HE,{key:f},co.createElement(Hh,{type:g&&(C&&"loading"||k&&"error")||"success",title:m.description?`${m.description} Tx`:UE.t("View transaction"),action:m.url&&co.createElement(zE,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},co.createElement(QE,{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:qE.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}=oI(),c=S().blockchains(),u=S().swappers(),{findToken:p}=S(),m=O.use.retry(),h=ne.use.isActiveTab(),d=rI(),[f,g]=tI(qh),C=nI(null),[k,y]=Zh(null),[T,v]=Zh(null),E=i(()=>{r(),y(null)},"onCancel"),B=we.use.getNotifications(),N=we.use.removeNotification(),x=B(),w=VE(e),b=w?.networkStatus;Yh(()=>{x.find(De=>De.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),N(e.requestId)):T&&v(null))},[e.status,e.requestId]),Yh(()=>{L?y(ea.WaitingForNetworkChange):b===ea.WaitingForConnectingWallet||b===ea.NetworkChanged?y(b):y(null)},[b]);let I=Du(e),_=w?GE(e,w):null,M=w?KE(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:y,message:ae,blockchains:c,swappers:u}),de=Q.length,[Ie,Ke]=[e.steps[0],e.steps[de-1]],se=Ke.outputAmount||Ke.expectedOutputAmountHumanReadable,ct=e.steps.reduce((Te,De)=>Te+parseFloat(De.feeInUsd||""),0),V=e.steps.find(Te=>Te.diagnosisUrl)?.diagnosisUrl,D=P(parseFloat(se||"0")*(Ke.toUsdPrice||0),4,4),G=P(parseFloat(e.inputAmount)*(Ie.fromUsdPrice||0),4,4),j=se?new Xh(se).multipliedBy(Ke.toUsdPrice||0).toString():"",he=new Xh(e.inputAmount).multipliedBy(Ie.fromUsdPrice||0).toString(),ce=Dt(G,D),_e=ae.detailedMessage.content||ae.shortMessage,je=e.status==="success"?lt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:P(se,6,6),token:Q[de-1].to.token.displayName,conciseAddress:Ir(e.wallets[Q[de-1].to.chain.displayName]?.address||""),chain:Q[de-1].to.chain.displayName}}):Y.createElement(_h,null,Y.createElement(_o,{variant:"body",size:"medium",color:"neutral700",align:"center"},_e?"":lt.t("Transaction was not sent."),I?`${lt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:I.outputAmount,symbol:I.symbol,blockchain:I.blockchain}})}`:""),_e&&Y.createElement(Ri,{align:"center",variant:"body",size:"medium",color:"neutral700"},Y.createElement("b",null,"Reason:")," ",_e));return Y.createElement(oe,{header:{title:lt.t("Swap Details"),onCancel:e.status==="running"?()=>y("cancel"):void 0,suffix:e.status!=="running"&&Y.createElement(Jt,null,Y.createElement(Kh,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>y("delete")},Y.createElement(_o,{size:"medium",variant:"label",color:"error"},lt.t("Delete"))))},footer:R&&!T&&Y.createElement(Kh,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let Te=Ur(e,c,p);m(Te),setTimeout(()=>{d("../../")},0)}},lt.t("Try again"))},Y.createElement(re,{compact:!0,view:!0},Y.createElement(Zi,null,Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},`${lt.t("Request ID")}`),Y.createElement("div",{className:Ji()},Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},o),Y.createElement(jh,{container:A(),content:f?lt.t("Copied To Clipboard"):lt.t("Copy Request ID"),open:f||void 0,side:"bottom",alignOffset:-16,align:"end"},Y.createElement(ZE,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:g.bind(null,o||"")},f?Y.createElement(YE,{size:16,color:"secondary"}):Y.createElement(jE,{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(RE,{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(JE,{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(XE,{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(eI,{key:jt,step:Te,type:"swap-progress",ref:C,state:po,hasSeparator:De!==0,tabIndex:jt,isFocused:xy,tooltipContainer:A()})}))),Y.createElement(cc,{state:k,onClose:()=>y(null),onCancel:E,onDelete:n,message:ae.detailedMessage.content,swap:e,walletButtonDisabled:!h}),Y.createElement(uc,{open:!!T,diagnosisUrl:V,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||"",percentageChange:P(ce,2,2),token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image},description:je}))}i(hc,"SwapDetails");import{i18n as oa}from"@lingui/core";import{Divider as ey,NotFound as cI,Skeleton as mr,Typography as na}from"@rango-dev/ui";import ke from"react";import{i18n as iI}from"@lingui/core";import{Divider as aI,Skeleton as sI,Typography as lI}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"}),B6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),W6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),L6=bt({paddingTop:"$15",display:"flex"}),M6=bt({padding:"$15 $0"}),P6=bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),_6=bt({paddingBottom:"$10"}),D6=bt({display:"flex",justifyContent:"start",alignItems:"center"}),$6=bt({paddingTop:"$5",display:"flex",alignItems:"center"}),F6=bt({display:"flex",alignItems:"center"}),O6=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(lI,{variant:"title",size:"small"},iI.t("Swaps steps"))),ve.createElement(ve.Fragment,null,ve.createElement(ur,null,ve.createElement(Bt,{separator:!1}),ve.createElement("div",{className:Rh()},ve.createElement(aI,{direction:"horizontal",size:20}),ve.createElement(sI,{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(cI,{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}=mI(),o=!e.loadedFromPersistor,n=gt(t),{requestId:r}=fI(),a=Oe(),{fetchStatus:s}=S();if(!r)return Cc.createElement(dI,{containerStyles:{margin:"20px"},type:"error",title:pI.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&&uI(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 gI,getCategoriesCount as hI,SelectableCategoryList as yI,styled as iy,Typography as SI,Wallet as CI}from"@rango-dev/ui";import Lt,{useState as ry}from"react";var kI=iy("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),TI=iy(re,{textAlign:"center"});function ay(){let{fetchStatus:t}=S(),[e,o]=ry("ALL"),n=S().blockchains(),{config:r}=S(),[a,s]=ry(),l=ne.use.isActiveTab(),{list:c}=yt(),u=cp(c,n),m=hI(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(TI,null,m&&Lt.createElement(Lt.Fragment,null,Lt.createElement(yI,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Lt.createElement(gI,{size:24})),Lt.createElement(SI,{variant:"title",size:"xmedium",align:"center"},ny.t("Choose a wallet to connect.")),Lt.createElement(kI,null,h.map((f,g)=>{let C=`wallet-${g}-${f.type}`;return Lt.createElement(CI,{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(),vI([{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 WI}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as LI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as MI}from"rango-sdk";import{useContext as PI,useEffect as fy,useState as gy}from"react";import{globalCss as wI}from"@rango-dev/ui";var ly=i(()=>wI({"@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 bI}from"@rango-dev/wallets-react";import{useEffect as xI,useRef as EI}from"react";function py(){let{connect:t,state:e}=bI(),o=EI({}),{fetchStatus:n}=S(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);xI(()=>{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 II,RouteEventType as uy,StepEventType as my,StepExecutionEventStatus as AI,WidgetEvents as ra}from"@rango-dev/queue-manager-rango-preset";import{useEffect as dy}from"react";function kc(){let t=we.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();dy(()=>{let r=i(a=>{let{event:s,step:l,route:c}=a;if(s.type===my.TX_EXECUTION&&s.status===AI.TX_SENT&&!II(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 NI}from"@rango-dev/queue-manager-react";import{useEffect as BI}from"react";function Tc(){let{isSynced:t,syncNotifications:e}=we(),{manager:o,state:n}=NI();BI(()=>{we.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(gt(o))},[we.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Tc,"useSyncNotifications");function vc(){py(),ly(),kc(),Tc();let t=S().blockchains(),{canSwitchNetworkTo:e}=si(),[o,n]=gy(""),[r,a]=gy(),s=PI(Dr),l=t.filter(MI),{fetchApiConfig:c}=cy();fy(()=>()=>Uu(),[]),WI({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===LI(o)?.[0]&&n("")}),c().catch(console.log),ho.destroy),[])}i(vc,"useBootstrap");import{styled as _I}from"@rango-dev/ui";var hy=_I("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function ia(){vc();let{config:t}=S(),{activeTheme:e}=Zo(t?.theme||{}),{activeLanguage:o}=io();return wc.createElement(DI,{language:o},wc.createElement(hy,{id:"swap-container",className:e()},wc.createElement(sy,null)))}i(ia,"Main");import{setSolanaSignerConfig as oA}from"@rango-dev/signer-solana";import xc,{useEffect as vy,useMemo as nA}from"react";import{useState as $I}from"react";var FI=i(()=>{let[t,e]=$I(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=FI;import{checkWaitingForNetworkChange as OI,makeQueueDefinition as UI}from"@rango-dev/queue-manager-rango-preset";import{Provider as zI}from"@rango-dev/queue-manager-react";import{useWallets as QI}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as HI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as qI}from"rango-types";import GI,{useMemo as VI}from"react";function KI(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=QI(),l=VI(()=>UI({API_KEY:t.apiKey||Pt("API_KEY"),BASE_URL:Pt("BASE_URL"),emitter:{emit:ye.emit}}),[t.apiKey]),{blockchains:c,connectedWallets:u}=S(),p=c(),m={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,E)=>a(v,E.network)?await r(v,[E]):void 0,"switchNetwork"),d=i(v=>!!s(v).mobileWallet,"isMobileWallet"),f=p.filter(v=>v.enabled).reduce((v,E)=>(v[E.name]=E,v),{}),g=p.filter(qI),C=i(v=>{let{supportedChains:E}=s(v);return yn(E)},"getSupportedChainNames"),k=e(),y={meta:{blockchains:f,evmBasedChains:g,evmNetworkChainInfo:HI(g),getSupportedChainNames:C},getSigners:o,wallets:m,providers:k,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:d},T=ne.use.isActiveTab();return GI.createElement(zI,{queuesDefs:[l],context:y,onPersistedDataLoaded:v=>{OI(v)},isPaused:!T},t.children)}i(KI,"QueueManager");var Sy=KI;import{useManager as JI}from"@rango-dev/queue-manager-react";import RI,{createContext as eA,useContext as tA}from"react";function Cy(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=O();return i(u=>{let{fromBlockchain:p,fromToken:m,toBlockchain:h,toToken:d,requestAmount:f}=u,g={blockchains:e,tokens:o};if(p!==void 0){let C=e.find(k=>k.name===p)??null;n(C)}if(m!==void 0){let C=m?t(m)??null:null;r({meta:g,token:C})}if(h!==void 0){let C=e.find(k=>k.name===h)??null;a(C)}if(d!==void 0){let C=d?t(d)??null:null;s({meta:g,token:C})}f!==void 0&&l(f)},"updateQuoteInputs")}i(Cy,"useUpdateQuoteInputs");import{cancelSwap as jI,getCurrentNamespaceOfOrNull as XI,getCurrentStep as YI,getRelatedWalletOrNull as ZI}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&&jI(o)}getCurrentStepInfo(e){let o=YI(e);return{step:o,wallet:o?ZI(e,o):null,network:o?XI(e,o)?.network:null}}};var ky=eA(void 0);function bc(t){let{manager:e}=JI(),o=ne.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=S(),c=new aa(e,{retrySwap:n,findToken:r}),{fetchingWallets:u}=S(),p=np(a()),m=S().blockchains(),h=S().tokens(),d=S().swappers(),f=S().fetchStatus,g=io().resetLanguage,C=we().getNotifications(),k=we().clearNotifications,y=Cy(),{fromBlockchain:T,toBlockchain:v,fromToken:E,toToken:B,inputAmount:N}=O(),x={isActiveTab:o,setCurrentTabAsActive:ho.forceClaim,history:c,wallets:{isLoading:u,details:s(),totalBalance:p,refetch:async w=>l(w)},meta:{blockchains:m,tokens:h,swappers:d,loadingStatus:f,findToken:r},resetLanguage:g,notifications:{list:C,clearAll:k},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:E?{symbol:E.symbol,blockchain:E.blockchain,address:E.address}:null,toBlockchain:v?.name??null,toToken:B?{symbol:B.symbol,blockchain:B.blockchain,address:B.address}:null,requestAmount:N},updateQuoteInputs:y}};return RI.createElement(ky.Provider,{value:x},t.children)}i(bc,"WidgetInfo");function Ty(){let t=tA(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]),nA(()=>{up({API_KEY:o?.apiKey||Sr,BASE_URL:o?.apiUrl||zc})},[o.apiKey,o.apiUrl]),vy(()=>{t.config?.signers?.customSolanaRPC&&oA("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 VY={DerivationPath:bn,Namespaces:wn,isOnDerivationPath:En,isOnNamespace:xn};export{SY as EventSeverity,Qo as MainEvents,AY as Networks,WY as PendingSwapNetworkStatus,wa as QuoteEventTypes,CY as RouteEventType,ma as SUPPORTED_FONTS,VY as StatefulConnect,kY as StepEventType,TY as StepExecutionBlockedEventStatus,vY as StepExecutionEventStatus,$e as UI_ID,xa as UiEventTypes,ba as WalletEventTypes,EY as WalletEvents,NY as WalletTypes,wy as Widget,Qo as WidgetEvents,sa as WidgetProvider,$r as WidgetWallets,gs as customizedThemeTokens,bY as readAccountAddress,Xt as useStatefulConnect,yt as useWalletList,si as useWallets,Ty as useWidget,by as useWidgetEvents,AS as widgetEventEmitter};
|
|
1
|
+
var Ey=Object.defineProperty;var i=(t,e)=>Ey(t,"name",{value:e,configurable:!0});import{EventSeverity as CY,RouteEventType as kY,StepEventType as TY,StepExecutionBlockedEventStatus as vY,StepExecutionEventStatus as wY}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as xY}from"@rango-dev/wallets-core/legacy";import{useWallets as si,Events as IY}from"@rango-dev/wallets-react";import{Networks as NY,WalletTypes as BY}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as LY}from"rango-types";import{Divider as vC}from"@rango-dev/ui";import So,{useEffect as wC,useRef as bC,useState as tu}from"react";import{WalletState as Iy}from"@rango-dev/ui";import{useWallets as Ay}from"@rango-dev/wallets-react";import{useReducer as Ny}from"react";function Ec(t){return!!t.derivationPath}i(Ec,"isStateOnDerivationPathStep");function Ic(t){return!!t.namespace}i(Ic,"isStateOnNamespace");var dr={status:"init",namespace:null,derivationPath:null};function Ac(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"reset":return dr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:dr;default:throw new Error("Action hasn't been defined.")}}i(Ac,"reducer");function Xt(){let{state:t,disconnect:e,connect:o}=Ay(),[n,r]=Ny(Ac,dr),a=i(async(p,m,h)=>{r({type:"reset"});try{let d=m?.map(f=>({...f,network:void 0}));return await o(p,d),{status:"connected"}}catch(d){let f=d?.message?`Error: ${d.message}`:"An unknown error happened during connecting wallet.";throw new Error(f,{cause:d})}},"runConnect"),s=i(async(p,m)=>{if(p.state===Iy.DISCONNECTED){let d=!!p.isHub,f=p.properties?.find(g=>g.name==="detached")?.value;if(d&&!f?.length||!d&&!p.needsNamespace)return await a(p.type,void 0,m);if(d&&f?.length&&f.length>1||!d&&p.needsNamespace?.data.length&&p.needsNamespace.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:p,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(d&&f?.length===1||!d&&p.needsNamespace?.data.length===1){if(p.needsNamespace&&p.needsDerivationPath){let g=p.needsNamespace.data[0];return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:g.value}}),{status:"derivation-path"}}return await a(p.type,p.needsNamespace?.data.map(g=>({namespace:g.value})),m)}}return m?.disconnectIfConnected?(await u(p.type),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),l=i(async(p,m)=>{let h=p.needsNamespace?.selection==="single",d=p.needsDerivationPath,f=m[0];if(!f)throw new Error("To confirm a namespace, you should select at least one namespace.");if(h&&d)return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:f}}),{status:"derivation-path"};if(!Ic(n))throw new Error("Something went wrong on handling namespace. Please retry.");let g=n.namespace.targetWallet.type,C=m.map(k=>({namespace:k}));return await a(g,C)},"handleNamespace"),c=i(async p=>{if(!p)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Ec(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=n.derivationPath.providerType,d=[{namespace:n.derivationPath.namespace,derivationPath:p}];return await a(m,d)},"handleDerivationPath"),u=i(async p=>{let m=t(p);return m.connected||m.connecting?(await e(p),{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:l,handleDerivationPath:c,getState:()=>n,resetState:p=>{r(p==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Xt,"useStatefulConnect");import{WalletState as Wa}from"@rango-dev/ui";import{useWallets as OS}from"@rango-dev/wallets-react";import{detectMobileScreens as US,KEPLR_COMPATIBLE_WALLETS as zS,WalletTypes as kn}from"@rango-dev/wallets-shared";import{useCallback as QS,useEffect as HS}from"react";import PS,{createContext as _S,useContext as DS,useEffect as $S,useRef as FS}from"react";import{create as LS}from"zustand";import{persist as MS}from"zustand/middleware";import{allProviders as By}from"@rango-dev/provider-all";var ca=class{static{i(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},Do=new ca;import{defineVersions as Bc,pickVersion as Wc,Provider as pa}from"@rango-dev/wallets-core";function Lc({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Mc(a);return s instanceof pa?s.id===n:s.config.type===n});r?o.push(r):console.warn(`Couldn't find ${n} provider. Please make sure you are passing the correct name.`)}else n instanceof pa?o.push(Bc().version("1.0.0",n).build()):o.push(Bc().version("0.0.0",n).build())}),o}return t}i(Lc,"matchAndGenerateProviders");function Mc(t){try{return Wc(t,"1.0.0")[1]}catch{return Wc(t,"0.0.0")[1]}}i(Mc,"pickProviderVersionWithFallbackToLegacy");function Pc(t){return t.map(o=>Mc(o)).map(o=>o instanceof pa?o.id:o.config.type)}i(Pc,"configWalletsToWalletName");function fr(t,e){return e.find(o=>o.name===t)?.displayName}i(fr,"getBlockchainDisplayNameFor");function pt(t,e){return e.find(o=>o.name===t)?.shortName}i(pt,"getBlockchainShortNameFor");function _c(t,e){return e.find(o=>o.name===t)?.logo}i(_c,"getBlockchainImage");function mn(t,e){return e.find(o=>o.id===t)?.title}i(mn,"getSwapperDisplayName");function uo(t,e){return e.find(o=>o.name===t)??null}i(uo,"findBlockchain");function ua(t,e){if(!e||!t)return!1;for(let o of e.feeAssets)if(t?.blockchain===o?.blockchain&&t?.symbol===o?.symbol&&t?.address===o?.address)return!0;return!1}i(ua,"isTokenNative");function ut(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(ut,"createTokenHash");function $o(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i($o,"isValidTokenAddress");function dn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(c=>{typeof c!="string"&&(c=ut(c));let u=o.tokensMapByTokenHash.get(c);u&&(n[c]=u)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(c=>{l.has(c)||a(o.tokensMapByBlockchainName[c])})}return s.forEach(l=>{let c=r[l];if(!c&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}c&&(c.isExcluded?(a(o.tokensMapByBlockchainName[l]),c.tokens.forEach(u=>{let p=ut(u);delete n[p]})):a(c.tokens))}),Object.values(n)}i(dn,"matchTokensFromConfigWithMeta");function gr(t){let{config:e}=t,o=e.from?.blockchains||[],n=e.to?.blockchains||[];if(!o.length||!n.length)return[];let r=[...o,...n],a=new Set(r);return Array.from(a)}i(gr,"getSupportedBlockchainsFromConfig");function $c(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i($c,"makeProvidersOptionsFromConfig");var hr={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/manifests/tonconnect-manifest.json"}},Wy={clientUrl:void 0},Ly={liquiditySources:void 0};function Dc(t){let e=$c(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return By(o).map(a=>a())}i(Dc,"generateProviders");var Fc=i((t,e,o)=>{let n=Dc({...hr,...t});return{config:{...hr,...t},iframe:Wy,campaignMode:Ly,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l}=o(),c=dn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}}),u=dn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}});Do.set("supportedSourceTokens",c),Do.set("supportedDestinationTokens",u),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=Dc(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=$c(a);return Lc({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Oc}from"rango-types";var Uc=[Oc.EVM,Oc.SOLANA],yr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as Ky}from"rango-sdk";import{UI_ID as My}from"@rango-dev/ui";var Sr="c6381a79-2817-4602-83bf-6a641a409e32",zc="https://api.rango.exchange",Qc="https://explorer.rango.exchange",$e={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...My};import{BlockchainCategories as Uy,WalletState as Et}from"@rango-dev/ui";import{legacyReadAccountAddress as zy}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as Qy,getCosmosExperimentalChainInfo as Hy,isEvmAddress as qy,KEPLR_COMPATIBLE_WALLETS as p0,Networks as tp}from"@rango-dev/wallets-shared";import Oo from"bignumber.js";import{isCosmosBlockchain as Gy}from"rango-types";import Py from"bignumber.js";var le=new Py(0);import{WalletTypes as _y}from"@rango-dev/wallets-shared";var mo="~",Hc=[_y.LEAP];import{BlockchainCategories as da,WalletState as Oy}from"@rango-dev/ui";import{TransactionType as Cr}from"rango-sdk";var qc="Roboto",ma=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function Fo(t){return Array.from(new Set(t))}i(Fo,"removeDuplicateFrom");function kr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(kr,"debounce");function et(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(et,"containsText");function Kc(t,e){return t.toLowerCase()===e.toLowerCase()}i(Kc,"exactText");function jc(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(jc,"startWithText");var A=i(()=>document.getElementById($e.SWAP_BOX_ID),"getContainer"),fo=i(()=>document.getElementById($e.EXPANDED_BOX_ID),"getExpanded");function Xc(t,e,o){let n=!!e&&Kc(e,t),r=!!o&&Kc(o,t);return n!==r?n?-1:1:0}i(Xc,"compareExactMatchText");function fa(t,e,o){let n=!!e&&et(e,t),r=!!o&&et(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(fa,"compareContainsText");function ga(t,e,o){let n=!!e&&jc(e,t),r=!!o&&jc(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ga,"compareStartWithText");function Yc(t,e,o){if(!o)return 0;let n=Xc(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=Xc(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ga(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=fa(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ga(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=fa(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ga(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=fa(o,t.address,e.address);if(r!==0)return r}return 0}i(Yc,"compareWithSearchFor");var Tr=i((t,e)=>{switch(e){case da.ALL:return!0;case da.UTXO:return t===Cr.TRANSFER;case da.OTHER:return t!==Cr.TRANSFER&&t!==Cr.COSMOS&&t!==Cr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),Zc=i(t=>ma.find(o=>o.value===t)?.url,"getFontUrlByName");function Jc(t,e){let o=!!t.find(n=>n.state===Oy.CONNECTED);return e===!1&&o}i(Jc,"isSingleWalletActive");function Rc(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(Rc,"memoizedResult");import{BigNumber as ep}from"bignumber.js";var fn=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),P=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new ep(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new ep(n.toFixed(s,r)).eq(n)){a=s;break}if(n.gte(1e4))return n.toFormat(0,r);if(n.gte(1e3)||n.gte(100))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,1))),r);if(n.gte(1))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,2))),r);if(n.gte(.01))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,4))),r);for(let s=e||4;s<17;s++)if(n.gte(Math.pow(10,-s)))return n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,s))),r);return n.isEqualTo(0)?"0":n.toFormat(Math.min(a,Math.min(o||100,Math.max(e||0,8))),r)},"numberToString");var vr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var xt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),gn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function hn(t){return t.connected?Et.CONNECTED:t.connecting?Et.CONNECTING:t.installed?Et.DISCONNECTED:Et.NOT_INSTALLED}i(hn,"mapStatusToWalletState");function op(t,e,o,n){return o.filter(r=>!Hc.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:c}=t(r);return s&&(!l||!!n&&c!==n)?!1:n?!!a.find(p=>p.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:c,needsNamespace:u,supportedChains:p,needsDerivationPath:m,properties:h,isHub:d}=e(r),f=Fo(p.map(C=>C.type)),g=hn(t(r));return{title:a,image:s,link:Qy(l),state:g,type:r,showOnMobile:c,needsNamespace:u,blockchainTypes:f,needsDerivationPath:m,properties:h,isHub:d}})}i(op,"mapWalletTypesToWalletInfo");function yn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(yn,"walletAndSupportedChainsNames");function ya(t,e,o,n,r){let a=[];function s(c,u,p){if(!!!a.find(h=>h.chain===c)){let h={address:u,chain:c,walletType:t,isContractWallet:p??!1};a.push(h)}}i(s,"addAccount");let l=n||[];return e.forEach(c=>{let{address:u,network:p}=zy(c),m=l.length>0,h=l.includes(p),d=p===tp.Unknown;if(m&&!h&&!d)return;let g=p===tp.Unknown&&qy(u);if(d&&!g)return;o.includes(p)||g?r?s(p,u.toLowerCase(),r):l.filter(y=>o.includes(y)).forEach(y=>{s(y,u.toLowerCase())}):s(p,u)}),a}i(ya,"prepareAccountsForWalletStore");function go(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:c}=r;c.forEach((u,p)=>{let m=u.from.blockchain,h=u.to.blockchain,d=a===o.swaps.length-1,f=p===c.length-1;(!d&&!f||d&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(h)})}e==="all"&&n.add(l)}),Array.from(n)}i(go,"getQuoteChains");function Sn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Sn,"isAccountAndWalletMatched");var np=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?ha(n.usdValue,n.decimals):le.toFixed();return o.plus(r)},new Oo(le));return Vy(e.toString())},"calculateWalletUsdValue");function Vy(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(Vy,"numberWithThousandSeparator");var xr=i((t,e)=>{let o=Hy(Object.entries(t).map(([,n])=>n).filter(Gy));return o&&o[e]?.experimental},"isExperimentalChain");function ha(t,e){return new Oo(t).shiftedBy(-e).toFixed()}i(ha,"representAmountInNumber");function Er(t){if(!t)return null;let e=ha(t.amount,t.decimals),o=t.usdValue?ha(t.usdValue,t.decimals):null,n=P(e,8,8),r=o?P(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Er,"formatBalance");function rp(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new Oo(t.usdValue).shiftedBy(-t.decimals):le,n=e&&e.usdValue?new Oo(e.usdValue).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new Oo(t.amount).shiftedBy(-t.decimals):le,n=e&&e.amount?new Oo(e.amount).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(rp,"compareTokenBalance");function Mt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Mt,"areTokensEqual");function ip(t){return t.sort((e,o)=>+(o.state===Et.CONNECTED)-+(e.state===Et.CONNECTED)||+(o.state===Et.DISCONNECTED||o.state===Et.CONNECTING)-+(e.state===Et.DISCONNECTED||e.state===Et.CONNECTING))}i(ip,"sortWalletsBasedOnConnectionState");function Ir(t,e=8,o=3){if(t.length<2*e+o)return t;let n=t.slice(0,e),r=t.slice(-e);return`${n}${".".repeat(o)}${r}`}i(Ir,"getConciseAddress");function ap({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(ap,"getAddress");var sp=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function lp(t){return t.map(e=>e.state).join("-")}i(lp,"hashWalletsState");function cp(t,e){let o=new Set;return t.forEach(r=>{r.blockchainTypes.forEach(a=>{o.add(a)})}),e.filter(r=>o.has(r.type))}i(cp,"filterBlockchainsByWalletTypes");function pp(t,e){return e===Uy.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Tr(n,e))return!0;return!1})}i(pp,"filterWalletsByCategory");var Sa={API_KEY:Sr};function Pt(t){return Sa[t]||""}i(Pt,"getConfig");function up(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Sa=e,Sa}i(up,"initConfig");var mp=20,dp=25,Ca="theme-widget",ka=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Mt(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Mt(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),Ta=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),fp=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Ar,tt=i(()=>Ar||(Ar=new Ky(Pt("API_KEY"),Pt("BASE_URL")),Ar),"httpService");function Nr(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Fo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(c=>c===s.swapperGroup)),l&&s.types.map(c=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:c,selected:!e.includes(s.swapperGroup)})})}}),n}i(Nr,"getUniqueSwappersGroups");function gp(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(gp,"sortLiquiditySourcesByGroupTitle");function Xe(t,e){return e?.[t]==="hidden"}i(Xe,"isFeatureHidden");function Uo(t,e){return e?.[t]==="enabled"}i(Uo,"isRoutingEnabled");var hp=i((t,e,o)=>Xe("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");var yp=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let c=gr({config:a}),u=r;return c.length>0&&(u=u.filter(p=>c.includes(p.name))),u.filter(p=>Uc.includes(p.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(c=>!(s.length>0&&!s.includes(c.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),l=Array.from(n.values()),c=e()._blockchainsMapByName;if(!o||!o.type)return l;let u=o.type==="source"?"from":"to",p=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=Do.get(p);m?.length||(m=dn({type:o.type,config:{blockchains:a[u]?.blockchains,tokens:a[u]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Do.set(p,m)),m=hp(m,s,a.features);let h=e().blockchains({type:o.type});return m.filter(f=>o.blockchain&&f.blockchain!==o.blockchain||!h.some(g=>g.name===f.blockchain)?!1:o.searchFor?!!(et(f.symbol,o.searchFor)||et(f.address||"",o.searchFor)||et(f.name||"",o.searchFor)):!0).sort((f,g)=>{let C=e().isTokenPinned(f,o.type),k=e().isTokenPinned(g,o.type);if(C!==k)return C?-1:1;if(o.getBalanceFor){let B=o.getBalanceFor(f),N=o.getBalanceFor(g),x=rp(B,N);if(x!==0)return x}let y=c.get(f.blockchain),T=c.get(g.blockchain),v=ua(f,y),E=ua(g,T);if(v!==E)return v?-1:1;if(f.isPopular!==g.isPopular)return f.isPopular?-1:1;if(o.searchFor){let B=Yc(f,g,o.searchFor);if(B)return B}return f.isSecondaryCoin!==g.isSecondaryCoin?f.isSecondaryCoin?1:-1:y&&T?y.sort-T.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=ut(o),s=n.get(a);return s||(s=r.find(l=>ut(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Mt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(u=>{let p=a?.includes(u.swapperGroup);return s||!a||a.length===0?!p:p}).sort(gp)},fetch:async()=>{try{let{routing:o}=e().config,n=Uo("enableCentralizedSwappers",o),r=await tt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,l={},c=[],u=r.popularTokens,p=r.swappers.filter(d=>d.enabled),m=new Set;r.tokens.forEach(d=>{m.add(d.blockchain),c.push(d)}),r.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&m.has(d.name)&&a.set(d.name,d)}),c.forEach(d=>{let f=ut(d);l[d.blockchain]||(l[d.blockchain]=[]),s.set(f,d),l[d.blockchain].push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l,_popularTokens:u,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as jy,Catalonia as Xy,Chinese as Sp,Denmark as Yy,English as Zy,Finland as Jy,French as Ry,German as eS,Greece as tS,Hungary as oS,India as nS,Indonesian as rS,Italian as iS,Japanese as aS,Korea as sS,Lithuania as lS,Malay as cS,Netherlands as pS,Pakistan as uS,Philippines as mS,Poland as dS,Portuguese as fS,Russian as gS,SaudiArabia as hS,Serbia as yS,Slovakia as SS,SouthAfrica as CS,Spanish as kS,Swahili as TS,Swedish as vS,Thai as wS,Turkish as bS,Ukrainian as xS,Vietnamese as ES}from"@rango-dev/ui";var Cp=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:CS},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:hS},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:jy},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:Xy},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Sp},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Sp},{title:"Danish",label:"Dansk",local:"da",SVGFlag:Yy},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:pS},{title:"English",label:"English",local:"en",SVGFlag:Zy},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:mS},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:Jy},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:Ry},{title:"German",label:"Deutsch",local:"de",SVGFlag:eS},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:tS},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:nS},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:oS},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:rS},{title:"Italian",label:"Italiana",local:"it",SVGFlag:iS},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:aS},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:sS},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:lS},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:cS},{title:"Polish",label:"Polski",local:"pl",SVGFlag:dS},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:fS},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:gS},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:yS},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:SS},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:kS},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:TS},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:vS},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:wS},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:bS},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:xS},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:uS},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:ES}],zo="en";var kp=[.5,1,3],Tp=1,vp=5,wp=100,bp=0;var xp=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Tp,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let c=s===o,u=l<=9;return c&&u}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let a=Fo(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=Xe("theme",n),s=Xe("language",n),l=Xe("liquiditySource",n),c=r?.singleTheme,u=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...c&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||zo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...u&&{language:o.language||zo}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(r=>r.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,r=gr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import Ba from"bignumber.js";import IS from"mitt";var ye=IS(),AS={on:ye.on,off:ye.off};import{WidgetEvents as Ep}from"@rango-dev/queue-manager-rango-preset";var wa=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(wa||{}),ba=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(ba||{}),xa=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(xa||{}),Qo=(a=>(a[a.RouteEvent=Ep.RouteEvent]="RouteEvent",a[a.StepEvent=Ep.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Qo||{});var Ip=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...l]=a;e(c=>({...typeof s=="function"?s(c):s,lastUpdatedAt:+new Date}),...l)},"modifedSet"),o,n),"keepLastUpdated");import Ap from"bignumber.js";function _t(t){return`${t.blockchain}${mo}${t.address}${mo}${t.symbol}`}i(_t,"createAssetKey");function Np(t,e){return`${_t(e)}${mo}${t}`}i(Np,"createBalanceKey");function Cn(t){let[e,o,n]=t.split(mo);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(Cn,"extractAssetFromBalanceKey");function Ea(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[_t(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Ap(r??le).multipliedBy(o[s].amount).toString():""})})}),o}i(Ea,"computeNextBalancesWithNewPrices");function Ia(t,e){let o={};return t.balances?.forEach(n=>{let r=Np(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,l=n.price??e().findToken(n.asset)?.usdPrice,c=l?new Ap(l??le).multipliedBy(a).toString():"",u={amount:a,decimals:s,usdValue:c};o[r]=u}),o}i(Ia,"createBalanceStateForNewAccount");function Aa(t,e){for(let o in e){let n=Cn(o),r=_t(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(Aa,"updateAggregatedBalanceStateForNewAccount");function NS(t,e){let o=Cn(e),n=_t(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(NS,"removeBalanceFromAggregatedBalance");function Na(t,e,o){let n=t.connectedWallets.filter(c=>c.walletType===e);t.connectedWallets.forEach(c=>{c.walletType!==e&&(n=n.filter(u=>!(u.chain===c.chain&&u.address===c.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(c=>o.chains?.includes(c.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(c=>c.namespace?o.namespaces?.includes(c.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(c=>{let u=Cn(c);!!n.find(m=>Np(m.address,{address:u.address,blockchain:m.chain,symbol:u.symbol})===c)?a=NS(a,c):r[c]=s[c]}),{_balances:r,_aggregatedBalances:a}}i(Na,"computeNextStateAfterWalletBalanceRemoval");function BS(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(BS,"matchWalletDetailsWithConnectedWallet");var WS=Rc(),Bp=Ip((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Sn(s,a))?{...a,loading:!1,error:!1,explorerUrl:BS(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n)=>{let r=e().connectedWallets,a=o.filter(s=>!r.some(l=>Sn(s,l)));if(a.length>0){let s=a.map(l=>{let c=!r.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:c,namespace:n,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!s.some(p=>p.walletType===u.walletType&&p.chain===u.chain)),...s]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((c,u)=>((c[u.blockchain]||=[]).push(u),c),{}),s=new Set,l=r.reduce((c,u)=>{let p=`${u.address}-${u.chain}`;return s.has(p)||(s.add(p),a[u.chain]&&(c[u.address]||(c[u.address]=[]),c[u.address].push(...a[u.chain]))),c},{});Object.entries(l).forEach(async([c,u])=>{try{let{balances:p}=await tt().getMultipleTokenBalance({assets:u.map(({symbol:m,address:h,blockchain:d})=>({symbol:m,address:h,blockchain:d})),walletAddress:c});if(p){let m=e()._balances,h=e()._aggregatedBalances;p.forEach(d=>{if(parseFloat(d.amount.amount)===0)return;let f={blockChain:d.asset.blockchain,balances:[d],address:c},g={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};Ea(g,f,m);let C=Ia(f,e);h=Aa(h,C),m={...m,...C}}),t(d=>({_balances:{...d._balances,...m},_aggregatedBalances:h}))}}catch(p){console.error(p)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n)=>{ye.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}}),e().addConnectedWallet(o,n),e().fetchBalances(o)},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Na(r,o,n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(r=>r.walletType===o);if(ye.emit("walletEvent",{type:"disconnect",payload:{walletType:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(l=>a.includes(l.chain)?(a=a.filter(c=>c!==l.chain),{...l,selected:!0}):l);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0)return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(c=>({address:c.address,blockchain:c.chain})),s;try{s=await tt().getWalletsDetails(a)}catch(c){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${c}`);return}let l=s.wallets;if(l){let c=e()._balances,u=e()._aggregatedBalances;l.forEach(m=>{if(m.failed)return;let h={_balances:c,_aggregatedBalances:u,connectedWallets:e().connectedWallets,findToken:e().findToken};Ea(h,m,c);let{_balances:d,_aggregatedBalances:f}=Na(h,r,{chains:[m.blockChain]});if(u=f,c=d,!e().connectedWallets.find(C=>C.walletType===r&&C.address===m.address&&C.chain===m.blockChain))return;let g=Ia(m,e);u=Aa(u,g),c={...c,...g}}),t(m=>({_balances:{...m._balances,...c},_aggregatedBalances:u})),e().setConnectedWalletRetrievedData(o,l);let{retryOnFailedBalances:p=!0}=n||{};if(p){let m=l.filter(h=>h.failed).map(h=>({chain:h.blockChain,walletType:r,address:h.address}));m.length>0&&await e().fetchMainTokensBalances(m,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),r=_t(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let c=a[0];return n[c]}let l=n[a[0]];return a.forEach(c=>{let u=n[c],p=new Ba(u.amount),m=new Ba(l.amount);p.isGreaterThan(m)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,l)=>{let c=n[l],[,,,u]=l.split(mo);return u===o&&(s[l]=c),s},{})},getConnectedWalletsDetails:()=>WS(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,l)=>{let c=r[l],u=Cn(l);if(u.blockchain===n.chain){let p=e().findToken(u),m=c.amount?new Ba(c.amount).shiftedBy(-c.decimals):le;s.push({chain:n.chain,symbol:u.symbol,ticker:u.symbol,address:u.address,rawAmount:c.amount,decimal:c.decimals,amount:m.toString(),logo:p?.image||null,usdPrice:p?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Wp(t){return LS()(MS((...e)=>({...Bp(...e),...yp(...e),...xp(...e),...Fc(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Wp,"createAppStore");var Lp=_S(null);function S(){let t=DS(Lp);if($S(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(S,"useAppStore");function Mp(t){let e=FS();return e.current||(e.current=Wp(t.config)),PS.createElement(Lp.Provider,{value:e.current},t.children)}i(Mp,"AppStoreProvider");function yt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=S(),{state:r,getWalletInfo:a}=OS(),s=S().blockchains(),{handleDisconnect:l}=Xt(),c=Pc(n()),u=op(r,a,c,e);u=US()?u.filter(g=>g.showOnMobile!==!1&&r(g.type).installed):u;let p=ip(u),m=i(g=>!o.find(C=>C.walletType===g&&C.chain===e),"isExperimentalChainNotAdded"),h=QS(()=>{let g=u?.filter(C=>C.state===Wa.CONNECTING)||[];for(let C of g)l(C.type)},[lp(u)]);HS(()=>()=>{h()},[]);let d=i(g=>{let C=g.find(y=>y.type===kn.DEFAULT);return!C||C.state===Wa.NOT_INSTALLED?!1:g.filter(y=>y.state!=Wa.NOT_INSTALLED&&![kn.DEFAULT,kn.WALLET_CONNECT_2,kn.LEDGER].includes(y.type)&&a(y.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),f=i((g,C,k)=>xr(k,C)&&m(g)&&!zS.includes(g)||g==kn.DEFAULT&&!d(u),"shouldExcludeWallet");return{list:p.filter(g=>!f(g.type,e??"",s)),terminateConnectingWallets:h}}i(yt,"useWalletList");import{Modal as KS}from"@rango-dev/ui";import jS from"react";import{create as VS}from"zustand";var Pp="rango-widget";var Tn=class{constructor(e){this.state="not-initiated";this.events={};this.init=()=>{this.initEvents(),this.tryClaim()};this.forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};this.isClaimed=()=>this.state==="claimed";this.destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};this.handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};this.handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};this.handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};this.channel=new BroadcastChannel(Pp),this.tabId=Math.trunc(Math.random()*1e5),this.events=e}static{i(this,"TabManager")}initEvents(){this.channel.addEventListener("message",this.handleMessageEvent),document.addEventListener("visibilitychange",this.handleVisibilityChange),document.addEventListener("resume",this.handleResume)}claimedByCurrentTab(e){let o=this.lastTryClaim&&this.lastTryClaim<e;if(this.isClaimed()||o){let n={name:"pong"};this.channel.postMessage(n);return}}alreadyClaimedByAnotherTab(){this.resetLastCheck()}async tryClaim(){return this.setLastCheck(),new Promise(e=>{setTimeout(()=>{this.check(),e()},300)})}check(){this.state==="not-initiated"&&this.events.onInit?.(),this.lastTryClaim?(this.claim(),this.resetLastCheck()):this.state="not-claimed"}claim(){this.state="claimed",this.events.onClaim?.()}setLastCheck(){this.lastTryClaim=Date.now();let e={name:"ping",pingAt:this.lastTryClaim};this.channel.postMessage(e)}resetLastCheck(){this.lastTryClaim=void 0}forceRelease(e){if(this.isClaimed()){this.state="not-claimed",this.events.onRelease?.();let o={name:"force-release",candidateId:e};this.channel.postMessage(o)}}};var GS=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Ho=GS;var ne=Ho(VS()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})}}))),ho=new Tn({onInit:()=>ne.setState({tabManagerInitiated:!0}),onClaim:()=>ne.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ne.setState({isActiveTab:!1})});function J(t){let{watermark:e}=ne();return jS.createElement(KS,{hasWatermark:e==="FULL",...t},t.children)}i(J,"WatermarkedModal");import{i18n as qo}from"@lingui/core";import{Alert as eC,Button as qp,Divider as Wr,Image as tC,MessageBox as oC,RadioRoot as nC}from"@rango-dev/ui";import pe,{useEffect as rC,useMemo as iC,useState as aC}from"react";import{i18n as ZS}from"@lingui/core";import{Checkbox as JS,Radio as RS,Typography as $a}from"@rango-dev/ui";import mt from"react";function La(t,e){return t.find(o=>o.name===e)?.logo}i(La,"getBlockchainLogo");import{Image as XS,styled as vn}from"@rango-dev/ui";var Dp=vn("ul",{padding:0,paddingTop:"$10",paddingBottom:"$20",margin:0}),Ma=vn("li",{backgroundColor:"$neutral200",padding:"$16",display:"flex",gap:"$8",cursor:"pointer",borderRadius:"$sm",alignItems:"center",variants:{unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),$p=vn("div",{flex:"1",display:"flex",flexDirection:"column",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),Fp=vn("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Pa=vn(XS,{variants:{disabled:{true:{opacity:"0.5"}}}});import{Image as Up,Tooltip as zp,Typography as YS}from"@rango-dev/ui";import It from"react";import{styled as Op}from"@rango-dev/ui";var _a=Op("div",{display:"flex",alignItems:"center",padding:0,margin:0}),Br=Op("div",{marginLeft:"-5px",listStyleType:"none",backgroundColor:"$background",borderRadius:"$lg",minWidth:"15px",height:"15px",variants:{firstItem:{true:{marginLeft:0}}},display:"flex",alignItems:"center",justifyContent:"center"});var Da=3;function Qp(t){let{chains:e}=t;return It.createElement(_a,null,e.slice(0,Da).map((o,n)=>It.createElement(zp,{key:o.name,container:A(),side:"bottom",align:"start",content:o.name,sideOffset:4},It.createElement(Br,{firstItem:n===0},It.createElement(Up,{src:o.logo,size:15})))),e.length>Da&&It.createElement(zp,{container:A(),side:"bottom",align:"start",sideOffset:4,content:It.createElement(_a,null,e.map((o,n)=>It.createElement(Br,{key:o.name,firstItem:n===0},It.createElement(Up,{src:o.logo,size:15}))))},It.createElement(Br,null,It.createElement(YS,{variant:"body",size:"xsmall"},"+",e.length-Da))))}i(Qp,"SupportedChainsList");function Hp(t){let{onClick:e,type:o,namespace:n}=t,r=S().blockchains();if(n.unsupported)return mt.createElement(Ma,{unsupported:!0},mt.createElement(Pa,{src:La(r,n.id),size:40,disabled:!0}),mt.createElement(Fp,null,mt.createElement($a,{variant:"label",size:"large"},n.label),mt.createElement($a,{variant:"body",size:"xsmall"},ZS.t("(Currently not supported)"))));let a=n.chains.length>1;return mt.createElement(Ma,{onClick:e},mt.createElement(Pa,{src:La(r,n.id),size:40}),mt.createElement($p,{showSupportedChains:a},mt.createElement($a,{variant:"label",size:"large"},n.label),a&&mt.createElement(Qp,{chains:n.chains})),o==="radio"?mt.createElement(RS,{value:n.value}):mt.createElement(JS,{checked:t.value}))}i(Hp,"NamespaceListItem");function wn(t){let{targetWallet:e}=t.value,o=e.needsNamespace?.selection==="single",n=e.image,[r,a]=aC([]),s=iC(()=>e.needsNamespace?.data.filter(m=>!m.unsupported),[e?.type]),l=i(m=>{a(o?[m]:h=>h.includes(m)?h.filter(d=>d!==m):h.concat(m))},"onSelect"),c=s?.length===r.length,u=i(()=>{if(o)throw new Error("onSelectAll should not be called on single selection mode.");c?a([]):s&&a(s.map(m=>m.value))},"onSelectAll"),p=i(m=>o?pe.createElement(nC,{value:r?.[0]},m):pe.createElement(pe.Fragment,null,m),"wrapRadioRoot");return rC(()=>{if(!o&&s)if(t.value.defaultSelectedChains?.length){let m=s.filter(h=>h.chains.some(d=>t.value.defaultSelectedChains?.includes(d.name)));a(m.map(h=>h.value))}else a(s.map(m=>m.value))},[]),pe.createElement(pe.Fragment,null,pe.createElement(oC,{type:"info",title:qo.t("Connect {wallet}",{wallet:e.title}),description:qo.t("This wallet supports multiple chains. Choose which chains you'd like to connect to."),icon:pe.createElement(tC,{src:n,size:45})}),o?pe.createElement(pe.Fragment,null,pe.createElement(Wr,{size:20}),pe.createElement(eC,{variant:"alarm",type:"info",title:qo.t("This wallet can only connect to one chain at a time. ")})):pe.createElement(pe.Fragment,null,pe.createElement(Wr,{size:30}),pe.createElement(qp,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:u},c?qo.t("Deselect all"):qo.t("Select all"))),pe.createElement(Dp,null,p(pe.createElement(pe.Fragment,null,e.needsNamespace?.data.map((m,h,d)=>pe.createElement(pe.Fragment,{key:m.id},pe.createElement(Hp,{value:r.includes(m.value),namespace:m,type:o?"radio":"checkbox",onClick:()=>l(m.value)}),h!==d.length-1&&pe.createElement(Wr,{size:10})))))),pe.createElement(Wr,{size:20}),pe.createElement(qp,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!r.length,onClick:()=>t.onConfirm(r)},qo.t("Connect")))}i(wn,"Namespaces");import{i18n as Go}from"@lingui/core";import{Button as cC,Divider as Kp,Image as pC,MessageBox as uC,Select as mC,TextField as dC}from"@rango-dev/ui";import dt,{useEffect as fC,useState as jp}from"react";import{namespaces as sC}from"@rango-dev/wallets-shared";var Lr={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Fa(t){let e=t?sC[t].derivationPaths:null;return e?[...e,Lr]:[]}i(Fa,"getDerivationPaths");import{styled as Gp,Typography as lC}from"@rango-dev/ui";var Vp=Gp("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Oa=Gp(lC,{paddingLeft:"$10"}),Ua={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"};var Xp="0";function bn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=jp(null),[l,c]=jp(Xp),u=a===Lr.id,p=Fa(o),m=i(({value:d})=>{let f=p?.find(g=>g.id===d);f&&(a===Lr.id&&Number.isNaN(Number(l))&&c(Xp),s(f.id))},"handleDerivationPathItemClick"),h=i(()=>{let d=p.find(f=>f.id===a);if(d)e(d.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return fC(()=>{s(Fa(o)[0]?.id||null)},[o]),dt.createElement(dt.Fragment,null,dt.createElement(Kp,{size:20}),dt.createElement(uC,{type:"info",title:Go.t("Select Derivation Path"),description:Go.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:dt.createElement(pC,{src:n,size:45})}),dt.createElement(Vp,null,dt.createElement(Oa,{variant:"body",size:"xsmall",color:"$neutral600"},Go.t("Choose Derivation Path Template")),dt.createElement(mC,{value:a||"",options:p.map(d=>({value:d.id,label:d.label})),variant:"filled",handleItemClick:m,styles:{trigger:Ua}}),dt.createElement(Kp,{size:20}),dt.createElement(Oa,{variant:"body",size:"xsmall",color:"$neutral600"},u?Go.t("Enter Path"):Go.t("Enter Index")),dt.createElement(dC,{type:u?"text":"number",variant:"contained",value:l,onChange:d=>c(d.target.value),style:Ua})),dt.createElement(cC,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!p||!a||!l},Go.t("Confirm")))}i(bn,"DerivationPath");import{i18n as Vo}from"@lingui/core";import{Image as yC,MessageBox as za,WalletState as SC}from"@rango-dev/ui";import{useWallets as CC}from"@rango-dev/wallets-react";import yo from"react";import{keyframes as gC,styled as Mr}from"@rango-dev/ui";var nW=Mr("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Yp=Mr("div",{position:"relative"}),hC=gC({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Zp=Mr("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${hC} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Jp=Mr("div",{"& img":{borderRadius:"50%"}});function Qa(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=CC();return hn(a(n))===SC.CONNECTED?yo.createElement(za,{type:"success",title:Vo.t("Wallet Connected"),description:Vo.t("Your wallet is connected, you can use it to swap.")}):o?yo.createElement(za,{type:"error",title:Vo.t("Failed to Connect"),description:o||Vo.t("Your wallet is not connected. Please try again.")}):yo.createElement(za,{type:"loading",title:Vo.t("Connecting to your wallet"),description:Vo.t("Click connect in your wallet popup."),icon:yo.createElement(Yp,null,yo.createElement(Jp,null,yo.createElement(yC,{src:r,size:45})),yo.createElement(Zp,null))})}i(Qa,"ConnectStatus");import{i18n as Ha}from"@lingui/core";import{Button as kC,Divider as Rp,MessageBox as TC}from"@rango-dev/ui";import Pr from"react";function qa(t){let{displayName:e,onConfirm:o}=t;return Pr.createElement(TC,{title:Ha.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:Ha.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},Pr.createElement(Rp,{size:18}),Pr.createElement(Rp,{size:32}),Pr.createElement(kC,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Ha.t("Confirm")))}i(qa,"ExperimentalChain");function eu(t,e){return t().status==="init"&&!!e}i(eu,"isOnStatus");function xn(t){return t().status==="namespace"}i(xn,"isOnNamespace");function En(t){return t().status==="derivationPath"}i(En,"isOnDerivationPath");var xC=3e3,EC=300;function Co(t){let e=bC(),[o,n]=tu(!1),[r,a]=tu(),s=i(y=>{a(y.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=yt(),{handleConnect:c,handleDerivationPath:u,handleNamespace:p,getState:m,resetState:h}=Xt(),d=i(y=>{p(t.wallet,y).then(k).catch(s)},"handleConfirmNamespaces"),f=i(y=>{if(!y)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");u(y).then(k).catch(s)},"handleDerivationPathConfirm"),g=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((y,T)=>{let v=y.status==="connected",E=["disconnected","disconnected-unhandled"].includes(y.status);v?(t.onConnect?.(),T||(e.current=setTimeout(g,xC))):E&&g()},"afterConnected");return wC(()=>{if(t.wallet){C();let y=!1,T=!0;i(()=>{setTimeout(()=>{T=!1,y||n(!0)},EC)},"beforeConnecting")(),c(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","derivation-path"].includes(E.status)||(y=!0),k(E,T)}).catch(s)}},[t.wallet]),So.createElement(J,{open:o,onClose:g,onExit:()=>{C(),l(),t.onClose&&t.onClose()},container:A()},eu(m,t.wallet)&&So.createElement(So.Fragment,null,So.createElement(Qa,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),So.createElement(vC,{direction:"vertical",size:32})),xn(m)&&So.createElement(wn,{onConfirm:d,value:m().namespace}),En(m)&&So.createElement(bn,{onConfirm:f,value:m().derivationPath}))}i(Co,"StatefulConnectModal");import{Provider as WC}from"@rango-dev/wallets-react";import _r,{createContext as LC,useEffect as au,useMemo as MC,useRef as su}from"react";import{useEffect as IC}from"react";function ou(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(ou,"hashProviders");function Ga(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=S(),a=n();return IC(()=>{o(),r()},[ou(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Ga,"useWalletProviders");import{legacyFormatAddressWithNetwork as AC,legacyReadAccountAddress as nu}from"@rango-dev/wallets-core/legacy";import{Events as ko}from"@rango-dev/wallets-react";import{isEvmBlockchain as NC}from"rango-sdk";function ru(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=S(),{onConnectWalletHandler:l,onDisconnectWalletHandler:c}=t,u=s().filter(NC).map(g=>g.name),p=i((g,C)=>{let[k,,y,,T]=g,v=ya(k,y,u,C.supportedChainNames,T.isContractWallet);v.length&&e(v,T.namespace)},"onAccountsEvent"),m=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains);k&&p([g,C,k,y,T],{supportedChainNames:v})}if(C===ko.CONNECTED){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}C===ko.PROVIDER_DISCONNECTED&&(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),C===ko.NAMESPACE_DISCONNECTED&&n(g,k)},"handleUpdatesForHub"),h=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains),E=[],B=[];if(k?.forEach(x=>{let{network:w}=nu(x);u.includes(w)?E.push(x):B.push(x)}),r.filter(x=>x.walletType===g).map(x=>AC(x.address,x.chain)).length>0){if(E.length>0){let x=ya(g,E,u,v,T.isContractWallet);a(g,{chains:x.map(w=>w.chain)})}B.length>0&&a(g,{chains:B.map(x=>{let{network:w}=nu(x);return w})})}k?p([g,C,k,y,T],{supportedChainNames:v}):(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}if(C===ko.ACCOUNTS&&y.connected){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForLegacy"),d=i((g,C,k,y,T)=>{if(C===ko.NETWORK&&y.network){let v=`${g}-${y.network}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((g,C,k,y,T)=>{T.isHub?m(g,C,k,y,T):h(g,C,k,y,T),d(g,C,k,y,T)},"handler")}}i(ru,"useUpdates");import{LegacyEvents as BC}from"@rango-dev/wallets-core/legacy";function iu(t,e){let[o,n,r,a,s]=e;n!==BC.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(iu,"propagateEvents");var Dr=LC({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function PC(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=S(),a=S().blockchains(),s=S().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:c}=Ga(s.wallets,l),u=su(),p=su(),{handler:m}=ru({onConnectWalletHandler:u,onDisconnectWalletHandler:p});au(()=>{n().catch(console.log)},[]),au(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let h=ne.use.isActiveTab(),d=MC(()=>({onConnectWallet:f=>{u.current=f},onDisconnectWallet:f=>{p.current=f}}),[]);return _r.createElement(Dr.Provider,{value:d},_r.createElement(WC,{allBlockChains:a,providers:c,onUpdateState:(f,g,C,k,y)=>{let T=[f,g,C,k,y];m(...T),t.onUpdateState&&iu(t.onUpdateState,T)},autoConnect:!!h,configs:{wallets:s.wallets}},t.children))}i(PC,"Main");function $r(t){let{config:e,...o}=t;return _r.createElement(Mp,{config:e},_r.createElement(PC,{...o,config:e}))}i($r,"WidgetWallets");import la from"react";import _C,{Fragment as DC}from"react";import{MemoryRouter as $C,useInRouterContext as FC}from"react-router";function lu({children:t}){let o=FC()?DC:$C;return _C.createElement(o,null,t)}i(lu,"AppRouter");import{I18nManager as $I}from"@rango-dev/ui";import wc from"react";import Pe from"react";import{useRoutes as wI}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as jo,useRef as Vr}from"react";import Ye from"bignumber.js";import{create as QC}from"zustand";import{subscribeWithSelector as HC}from"zustand/middleware";import{i18n as St}from"@lingui/core";import{getRelatedWalletOrNull as zC,RouteEventType as GL}from"@rango-dev/queue-manager-rango-preset";import ze from"bignumber.js";import{PendingSwapNetworkStatus as qr}from"rango-types";import{i18n as Fe}from"@lingui/core";var ee=i(()=>({genericServerError:Fe.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Fe.t("Please reset your liquidity sources."),description:Fe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Fe.t("No Routes Found."),description:Fe.t("Reasons why Rango couldn't find a route: low liquidity on token, very low input amount or no routes available for the selected input/output token combination.")},bridgeLimitErrors:{increaseAmount:Fe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Fe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Fe.t("High Price Impact"),title:Fe.t("Price impact is too high!"),description:Fe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Fe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Fe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Fe.t("USD Price Unknown"),title:Fe.t("USD Price Unknown, Cannot calculate Price Impact."),description:Fe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Fe.t("Confirm USD Price Unknown")}}),"errorMessages");function cu(t){switch(t.type){case 0:return t.diagnosisMessage??ee().noResultError.title;case 1:return ee().genericServerError;default:return""}}i(cu,"getQuoteErrorMessage");import{i18n as Fr}from"@lingui/core";var To=i(()=>({connectWallet:Fr.t("Connect Wallet"),swap:Fr.t("Swap"),swapAnyway:Fr.t("Swap anyway"),ethWarning:Fr.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Va(t,e){return{"Network Fee":e("Network Fee"),"Swapper Fee":e("Protocol Fee"),"Affiliate Fee":e("Affiliate Fee"),"Outbound network fee":e("Outbound Fee"),"Rango Fee":e("Rango Fee")}[t]}i(Va,"getFeeLabel");var Ka=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],pu=100,uu=30,mu=15,du=60;var fu=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],gu=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as UC}from"@rango-dev/queue-manager-rango-preset";import WL from"bignumber.js";function yu(t,e){if(e===null)return null;let o=e?.find(n=>n.blockchain===t.chain)?.wallets.find(n=>n.address?.toLowerCase()===t.address.toLowerCase());return o?o.requiredAssets:null}i(yu,"getRequiredBalanceOfWallet");function $t(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i($t,"getPriceImpactLevel");function Ur(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=UC(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=uo(a?a.toBlockchain:n.fromBlockchain,e),c=uo(r.toBlockchain,e),u=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),p=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:u,toBlockchain:c,toToken:p,inputAmount:m}}i(Ur,"createRetryQuote");function Ko(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=In(o),s=ft(o);if(o&&a&&s){let u=Dt(a.toString(),s.toString());if(!!u&&vu(a,u)){let m=Qr(o?.swaps,n),h=$t(u);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:u,totalFee:m,warningLevel:h}}}if(e&&xu(e,o))return{type:4,usdValueChange:P(ft(o)?.minus(ft(e)??0).toString()??"0",null,2),percentageChange:P(Dt(ft(e)??"1",ft(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let l=Hr(o.swaps),c=r>vp;if(bu(t.userSlippage.toString(),l)){if(c&&parseFloat(l??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:wu(o,r),minRequiredSlippage:l};return null}i(Ko,"generateQuoteWarnings");function Su(t){return![4].includes(t.type)}i(Su,"isQuoteWarningConfirmationRequired");function Dt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:ja(t.toString(),e.toString());return n&&n<0?n:null}i(Dt,"getPriceImpact");var Cu=i(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),zr=i((t,e)=>e.sort((o,n)=>{let r=i(u=>u.scores?.find(p=>p.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),c=n.requestId.toLowerCase();return l.localeCompare(c)}),"sortQuotesBy"),ku=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),Tu=i(t=>{let e=i((o,n)=>{let r=Ka.indexOf(o.value),a=Ka.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function vu(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return fu.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new ze(r)))}i(vu,"hasHighValueLoss");function Eu(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new ze(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ze(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(Eu,"hasLimitError");function Iu(t){let e=(t||[]).filter(l=>{let c=l.fromAmountMinValue?new ze(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new ze(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?c?.gte(l.fromAmount)||u?.lte(l.fromAmount):c?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new ze(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new ze(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=St.t({id:"Required: >= {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=St.t({id:"Required: > {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=St.t({id:"Required: <= {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=St.t({id:"Required: < {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Iu,"getLimitErrorMessage");function Au(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:c}=t;return e!=="success"?{title:To().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:To().swap,action:"confirm-swap",disabled:!0}:s?{title:To().swapAnyway,action:"confirm-warning",disabled:!1}:c?{title:To().ethWarning,action:"confirm-warning",disabled:!1}:{title:To().swap,action:"confirm-swap",disabled:!1}:{title:To().connectWallet,action:"connect-wallet",disabled:!1}}i(Au,"getSwapButtonState");function Xa(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(le))&&e&&e!=="0"&&n!==0)}i(Xa,"canComputePriceImpact");function Ya(t,e){let o=le;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new ze(r.amount).multipliedBy(a||0))}return o}i(Ya,"getUsdFeeOfStep");function Qr(t,e){return t.reduce((o,n)=>o.plus(Ya(n,e)),le)}i(Qr,"getTotalFeeInUsd");function Za(t){let e=le;return e=e.plus(new ze(t.amount).multipliedBy(t.price||0)),e}i(Za,"getUsdFee");function Nu(t){return t.reduce((e,o)=>e.plus(Za(o)),le)}i(Nu,"getTotalFeesInUsd");function Bu(t){return t.reduce((e,o)=>{for(let n of o.fee){let r=n.name,a=n.expenseType!=="DECREASE_FROM_OUTPUT"?e.payable:e.nonePayable;a[r]=[...a[r]||[],n]}return e},{payable:{},nonePayable:{}})}i(Bu,"getFeesGroup");function Wu(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(Wu,"checkSlippageErrors");function wu(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(wu,"checkSlippageWarnings");function Hr(t){return t.map(o=>o.recommendedSlippage)?.map(o=>o?.slippage||"0")?.filter(o=>parseFloat(o)>0)?.sort((o,n)=>parseFloat(n)-parseFloat(o))?.find(()=>!0)||null}i(Hr,"getMinRequiredSlippage");function bu(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(bu,"hasProperSlippage");function Lu(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:c,slippage:u,affiliateRef:p,affiliatePercent:m,affiliateWallets:h,destination:d,contractCall:f}=t,g=a?.reduce((y,T)=>(y[T.chain]=T.address,y),{}),C=[];return r?.forEach(y=>{C.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:m??void 0,affiliateWallets:h??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:C,selectedWallets:g??{},slippage:u.toString(),contractCall:f,...d&&{destination:d},...c&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!c&&{swapperGroups:l?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i(Lu,"createQuoteRequestBody");function Mu(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Mu,"getWalletsForNewSwap");function In(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new ze(e).multipliedBy(o)}i(In,"getUsdInputFrom");function ft(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new ze(e).multipliedBy(o)}i(ft,"getUsdOutputFrom");function ja(t,e){return new ze(e).div(new ze(t)).minus(1).multipliedBy(pu).toNumber()}i(ja,"getPercentageChange");function xu(t,e){let o=In(t),n=ft(t),r=ft(e);if(!o||!n||!r)return!1;let a=ja(n.toString(),r.toString());return gu.some(({threshold:s,minInput:l})=>a<=s&&o.isGreaterThanOrEqualTo(l))}i(xu,"isOutputAmountChangedExcessively");function Pu(t,e,o){let n=t.validationStatus,r=go({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>yu(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,c=P(new ze(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),u=P(new ze(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),p="";return s.reason==="FEE"&&(p=St.t(" for network fee")),s.reason==="INPUT_ASSET"&&(p=St.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(p=St.t(" for input and network fee")),St.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:u,symbol:l,reason:p,currentAmount:c,blockchain:pt(s.asset.blockchain,o)}})})}i(Pu,"generateBalanceWarnings");function An(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==qr.NetworkChanged}i(An,"isNetworkStatusInWarningState");function _u(t,e,o){let n="bellow button or",r=t.extraMessage,a=t.extraMessageDetail;if(t.networkStatusExtraMessageDetail?.includes(n)&&(t.networkStatusExtraMessageDetail=t.networkStatusExtraMessageDetail.replace(n,"")),An(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?zC(t,e):null)?.walletType,p=u?o?.(u)?.name:null;switch(e?.networkStatus){case qr.WaitingForConnectingWallet:r=p?St.t("Connect {wallet}",{wallet:p}):r;break;case qr.WaitingForQueue:r=r||St.t("Waiting for other running tasks to be finished");break;case qr.WaitingForNetworkChange:r=r||St.t("Waiting for changing wallet network");break;default:r=r||"";break}}a=a||"",r=r||"";let l=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:l}}}i(_u,"getSwapMessages");function Du(t){let e=null;if(t.status==="failed"){let o=t.steps.slice().reverse().filter(n=>n.status==="success")[0];o&&(e={blockchain:o.toBlockchain,symbol:o.toSymbol,outputAmount:o.outputAmount,address:o.toSymbolAddress})}return e}i(Du,"getLastConvertedTokenInFailedSwap");function $u(t){return t.status==="failed"}i($u,"shouldRetrySwap");function Fu(t,e,o,n,r,a){if(!n||t)return!0;let s=go({filter:"all",quote:n}),l=go({filter:"required",quote:n}),c=s.every(m=>r.some(h=>h.chain===m)),u=l.every(m=>r.some(h=>h.chain===m)),p=o&&a?$o(a,o):!1;return!e&&!c||e&&!o||e&&!!o&&(!p||!u)}i(Fu,"isConfirmSwapDisabled");function Ou(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Ou,"isTokensIdentical");var Gr=i((t,e)=>t?.usdPrice?new Ye(e||le).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),O=Ho(QC()(HC(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Ye(0),outputUsdValue:new Ye(0),toBlockchain:null,toToken:null,refetchQuote:!0,sortStrategy:"SMART",selectedQuote:null,quotes:null,error:null,warning:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null,quoteWarningsConfirmed:!1,updateQuotePartialState:(e,o)=>t(n=>({...n,[e]:o})),setSelectedQuote:e=>t(o=>{let n=null,r=le,a=o.inputUsdValue;return gn(o.inputAmount)?(e&&(n=e?.outputAmount?new Ye(e?.outputAmount):null,a=In(e)??le,r=ft(e)??le),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new Ye(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new Ye(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new Ye(0)}})},setFromToken:e=>t(o=>({fromToken:e.token,...e.token&&{fromBlockchain:e.meta.blockchains.find(n=>n.name===e.token.blockchain)??null},...!!o.inputAmount&&{inputUsdValue:Gr(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{selectedQuote:null,toToken:null,outputAmount:null,outputUsdValue:new Ye(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:null,outputUsdValue:new Ye(0),selectedQuote:null},...!!o.fromToken&&{inputUsdValue:Gr(o.fromToken,e)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Gr(n??null,s),outputUsdValue:new Ye(0),toBlockchain:r,toToken:a,selectedQuote:null})},switchFromAndTo:()=>t(e=>({fromBlockchain:e.toBlockchain,fromToken:e.toToken,toBlockchain:e.fromBlockchain,toToken:e.fromToken,inputAmount:e.outputAmount?.toString()||"",inputUsdValue:e.toToken?Gr(e.toToken,e.outputAmount?.toString()||""):new Ye(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new Ye(0),inputUsdValue:new Ye(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new Ye(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})})))),Uu=O.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ye.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&ye.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function zu(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:c,toBlockchain:u}=O(),p=S().config,m=S().fetchStatus,h=S().blockchains(),{findToken:d}=S(),{setAffiliateRef:f,setAffiliatePercent:g,setAffiliateWallets:C}=S(),k=p?.from?.tokens,y=p?.from?.blockchains,T=p?.to?.tokens,v=p?.to?.blockchains,E=Vr(void 0),B=Vr(void 0),N=Vr(void 0),x=Vr(void 0);jo(()=>{typeof p.amount<"u"&&t(p.amount.toString())},[p?.amount]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.from?.blockchain),b=p?.from?.token,I=b&&d(b);(w||!w&&N.current)&&n(w??null),I?a({token:I,meta:{blockchains:h}}):!I&&E.current&&a({token:null}),N.current=p?.from?.blockchain,E.current=p?.from?.token}},[p?.from?.token?.symbol,p?.from?.token?.address,p?.from?.token?.blockchain,p?.from?.blockchain,m]),jo(()=>{ka(s,k)&&a({token:null}),Ta(c,y)&&n(null)},[k,y]),jo(()=>{ka(l,T)&&a({token:null}),Ta(u,v)&&o(null)},[T,v]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.to?.blockchain),b=p?.to?.token,I=b&&d(b);(w||!w&&x.current)&&o(w??null),I?e({token:I,meta:{blockchains:h}}):!I&&B.current&&e({token:null}),x.current=p?.to?.blockchain,B.current=p?.to?.token}},[p?.to?.token?.symbol,p?.to?.token?.address,p?.to?.token?.blockchain,p?.to?.blockchain,m]),jo(()=>{f(p?.affiliate?.ref??null),g(p?.affiliate?.percent??null),C(p?.affiliate?.wallets??null)},[p?.affiliate?.ref,p?.affiliate?.percent,p?.affiliate?.wallets])}i(zu,"useSyncStoresWithConfig");import{useEffect as es,useRef as qC}from"react";import{useInRouterContext as GC,useLocation as VC,useSearchParams as KC}from"react-router-dom";function Ja(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(Ja,"convertTokenSearchParamToAsset");function Ra(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Ra,"tokenToSearchParam");function os(){let t=VC(),[e,o]=KC(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:c,setToBlockchain:u,setFromToken:p,setToToken:m,setInputAmount:h}=O(),d=S().fetchStatus,f=S().blockchains(),g=GC(),{updateIframe:C,updateCampaignMode:k}=S(),y=S().isInCampaignMode(),T=qC(),{findToken:v}=S(),E=i(()=>{let N={};for(let[L,K]of e.entries())L.startsWith("utm_")&&(N[L]=K);let x=e.get("fromAmount"),w=e.get("fromBlockchain"),b=e.get("fromToken"),I=e.get("toBlockchain"),_=e.get("toToken"),M=e.get("autoConnect"),q=e.get("clientUrl"),R=e.get("liquiditySources"),X=e.get("blockchain");return{fromAmount:x,fromBlockchain:w,fromToken:b,toBlockchain:I,toToken:_,autoConnect:M,clientUrl:q,liquiditySources:R,utmQueryParams:N,blockchain:X}},"getUrlSearchParams"),B=i(N=>{for(let x in N)N[x]||delete N[x];o(N,{replace:!0})},"updateUrlSearchParams");es(()=>{let{autoConnect:N,clientUrl:x,utmQueryParams:w,blockchain:b}=E();g&&d==="success"&&B({fromBlockchain:n?.name,fromToken:Ra(a),toBlockchain:r?.name,toToken:Ra(s),fromAmount:l,autoConnect:N??void 0,clientUrl:x??void 0,blockchain:b??void 0,liquiditySources:y?T.current:void 0,...w})},[t.pathname,l,n,a,r,s,y]),es(()=>{if(!g)return;let N=E();if(!T.current&&N.liquiditySources&&(T.current=N.liquiditySources),N.fromAmount&&h(N.fromAmount),d==="success"){let x=f.find(_=>_.name===N.fromBlockchain),w=N.fromToken&&x?v(Ja(N.fromToken,x)):void 0,b=f.find(_=>_.name===N.toBlockchain),I=N.toToken&&b?v(Ja(N.toToken,b)):void 0;x&&(c(x),w&&p({token:w,meta:{blockchains:f}})),b&&(u(b),I&&m({token:I,meta:{blockchains:f}}))}},[d]),es(()=>{let{clientUrl:N,liquiditySources:x}=E();C("clientUrl",N||void 0),k("liquiditySources",x?.split(",")??void 0)},[])}i(os,"useSyncUrlAndStore");import{i18n as Ro}from"@lingui/core";import{Alert as cT,Button as pT,darkTheme as uT,Divider as Bs,DoneIcon as mT,styled as dT,TextField as fT,Typography as gT}from"@rango-dev/ui";import Ue,{useState as hT}from"react";import{useNavigate as yT,useSearchParams as ST}from"react-router-dom";import{ChevronRightIcon as jC,Divider as Vu,Image as XC,Typography as Ku}from"@rango-dev/ui";import Ct from"react";import{darkTheme as Qu,styled as ns}from"@rango-dev/ui";var Hu=ns("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Qu} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Qu} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),qu=ns("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),Gu=ns("div",{display:"flex"});function rs(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return Ct.createElement(qu,null,Ct.createElement(Ku,{size:"large",variant:"label"},n),Ct.createElement(Vu,{size:10}),Ct.createElement(Hu,{onClick:s?void 0:e,disabled:s},Ct.createElement(Gu,null,r&&Ct.createElement(Ct.Fragment,null,Ct.createElement(XC,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),Ct.createElement(Vu,{size:4,direction:"horizontal"})),Ct.createElement(Ku,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),Ct.createElement(jC,{size:12,color:"black"})))}i(rs,"BlockchainSelectorButton");import{i18n as ss}from"@lingui/core";import{Button as JC,Divider as Ru,MessageBox as RC}from"@rango-dev/ui";import Zt,{useEffect as em,useState as ls}from"react";import{i18n as Kr}from"@lingui/core";import{Button as Ju,Divider as vo,ExternalLinkIcon as YC,Image as ZC,Typography as Yo}from"@rango-dev/ui";import Se from"react";var ju="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function Xu(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(Xu,"generateExplorerLink");import{darkTheme as Xo,styled as Yu}from"@rango-dev/ui";var is=Yu("a",{textDecoration:"none",color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${Xo} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${Xo} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),Zu=Yu("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${Xo} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"}}});function as(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,l=Xu(n.address,s),c=i(()=>window.open(ju,"_blank"),"onClickLearnMore");return Se.createElement(J,{open:e,dismissible:!0,onClose:o,onExit:r,container:A()},Se.createElement(Zu,null,Se.createElement(ZC,{src:n.image===""?yr:n.image,size:45,type:"circular"}),Se.createElement(vo,{size:4}),Se.createElement(Yo,{variant:"title",size:"medium"},n.symbol),Se.createElement(Yo,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),Se.createElement(vo,{size:4}),Se.createElement(Yo,{variant:"body",size:"medium"},l?Se.createElement(is,{hasHover:!0,href:l,target:"_blank",rel:"nofollow noreferrer"},n.address,Se.createElement(YC,{size:12,color:"gray"})):Se.createElement(is,null,n.address)),Se.createElement(vo,{size:4}),n.coinSource&&Se.createElement(Yo,{className:"_coin-source",variant:"body",size:"xsmall"},Kr.t("via")," ",Se.createElement(Yo,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),Se.createElement(vo,{size:"32"}),Se.createElement(Yo,{size:"medium",variant:"body",className:"_custom-token-description"},Kr.t("This token is not part of our verified token list. please verify its source and make sure to understand all associated risks before proceeding."))),Se.createElement(vo,{size:40}),Se.createElement(vo,{size:10}),Se.createElement(Ju,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Kr.t("Import Anyway")),Se.createElement(vo,{size:10}),Se.createElement(Ju,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:c},Kr.t("Learn More")))}i(as,"CustomTokenModal");function Nn(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:l,onExitErrorModal:c,onExitImportModal:u}=t,{setCustomToken:p}=S(),[m,h]=ls(!1),[d,f]=ls(!1),[g,C]=ls(!1),k=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),T=i(()=>{C(!0),y()},"handleErrorModalButtonClick"),v=i(()=>{g&&n?.type==="network-error"&&(C(!1),k()),c()},"handleExit"),E=i(()=>{e&&(p(e),l())},"handleSubmit");return em(()=>{n&&h(!0)},[n]),em(()=>{o&&e&&f(!0)},[o,e]),Zt.createElement(Zt.Fragment,null,Zt.createElement(J,{open:m,dismissible:!0,onClose:y,onExit:v,container:A()},Zt.createElement(RC,{title:n?.title??"",type:"error",description:n?.message||ss.t("Failed Network, Please retry.")},Zt.createElement(Ru,{size:40}),Zt.createElement(Ru,{size:10}),Zt.createElement(JC,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:T},n?.type==="network-error"?ss.t("Retry"):ss.t("Add another custom token")))),o&&e&&Zt.createElement(as,{blockchain:o,token:e,onSubmitClick:E,onClose:()=>f(!1),open:d,onExit:u}))}i(Nn,"ImportCustomToken");import{useManager as rT}from"@rango-dev/queue-manager-react";import{BottomLogo as iT,Divider as Am,Header as aT}from"@rango-dev/ui";import be,{useEffect as ti,useRef as Nm,useState as Bm}from"react";import{useRef as ek}from"react";function jr(){return window.self!==window.top}i(jr,"isAppLoadedIntoIframe");function cs(){let t=ek(null),{iframe:e}=S(),o=jr()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let c of l)n({type:"widget_height",data:{height:c.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(cs,"useIframe");import{useNavigate as tk}from"react-router-dom";function Oe(){let t=tk();return()=>t(-1)}i(Oe,"useNavigateBack");import{createTheme as hs,darkTheme as gk,lightTheme as hk}from"@rango-dev/ui";import{useEffect as yk,useState as Sk}from"react";import{theme as dk,darkColors as fk}from"@rango-dev/ui";import fs from"react";function ok(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(ok,"expandShortHexColor");function nk(t){return/[0-9]+$/.test(t)}i(nk,"isOverridingColor");function rk(t,e){return t.padStart(e,"0")}i(rk,"pad");function ps(t){let e=Math.min(Math.max(Math.round(t),0),255);return rk(e.toString(16),2)}i(ps,"intToHex");function ik(t){return`#${ps(t.red)}${ps(t.green)}${ps(t.blue)}`}i(ik,"rgbToHex");function ak(t){let e=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);return{red:e,green:o,blue:n}}i(ak,"hexToRGB");function sk(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(sk,"generateShade");function lk(t,e){let o=.11*e;return{red:t.red+(255-t.red)*o,green:t.green+(255-t.green)*o,blue:t.blue+(255-t.blue)*o}}i(lk,"generateTint");function ck(t){return tm(t,sk)}i(ck,"calculateShades");function pk(t){return tm(t,lk)}i(pk,"calculateTints");function tm(t,e){let o=ak(t),n=[];for(let r=1;r<9;r++)n.push(ik(e(o,r)));return n}i(tm,"calculateColors");function us(t,e,o){let a=pk(t).reverse().concat(t),s=ck(t),l=a.concat(s),c={},u=l.length;for(let p=0;p<u;p++){let m=100+(o?u-1-p:p)*50;c[`${e}${m}`]=l[p]}return c}i(us,"createTintsAndShades");function ms(t,e,o){let n={...t};for(let r in e){let a=e[r],s=r==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(r)&&!nk(r)){let c=ok(a);Object.assign(n,us(c,r,s))}}return{...n,...e}}i(ms,"expandToGenerateThemeColors");var om=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),uk=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=om(o%52)+e;return om(o%52)+e},"toAlphabeticName"),mk=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),ds=i(t=>uk(mk(5381,JSON.stringify(t))>>>0),"toHash");function gs(t){let e=dk.colors,o={...e,...fk},n,r;if(t?.light){let s={colors:ms(e,t.light)};n={id:`${Ca}-light-${ds(s)}`,tokens:s}}if(t?.dark){let s={colors:ms(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Ca}-dark-${ds(s)}`,tokens:s}}return{light:n,dark:r}}i(gs,"customizedThemeTokens");function nm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>fs.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(fs.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(fs.cloneElement(e,{key:l}))}}),o}i(nm,"joinList");function rm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(rm,"doesWindowPreferDarkColorScheme");function Zo(t){let{colors:e,fontFamily:o=qc,borderRadius:n=mp,secondaryBorderRadius:r=dp}=t,[a,s]=Sk(rm()?"dark":"light"),{theme:l}=S(),{dark:c,light:u}=gs(e),p=hs({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[p.className,hk.className],h=[p.className,gk.className];if(u){let f=hs(u.id,u.tokens);m.push(f.className)}if(c){let f=hs(c.id,c.tokens);h.push(f.className)}return yk(()=>{let f=i(g=>{g.matches?s("dark"):s("light")},"switchThemeListener");return rm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",f),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",f)}},[]),{activeTheme:i(()=>{let f=m.join(" "),g=h.join(" ");return l==="auto"?a==="dark"?g:f:l==="dark"?g:f},"getActiveTheme"),mode:l==="auto"?a:l}}i(Zo,"useTheme");var gt=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as im}from"@lingui/core";import{Alert as Ck,Button as kk}from"@rango-dev/ui";import am from"react";function ys(t){return am.createElement(Ck,{action:am.createElement(kk,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},im.t("Activate this tab")),type:"warning",variant:"alarm",title:im.t("Another tab is open and handles transactions.")})}i(ys,"ActivateTabAlert");import{i18n as Ss}from"@lingui/core";import{Button as Tk,Divider as vk,MessageBox as wk}from"@rango-dev/ui";import Xr from"react";function Cs(t){let{open:e,onClose:o,onConfirm:n}=t;return Xr.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Xr.createElement(wk,{title:Ss.t("Activate current tab"),type:"warning",description:Ss.t("Currently, some transactions are running and being handled by other browser tab. If you activate this tab, all transactions that are already in the transaction sign step will expire.")},Xr.createElement(vk,{size:20}),Xr.createElement(Tk,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},Ss.t("Confirm"))))}i(Cs,"ActivateTabModal");import{ChevronLeftIcon as Ek}from"@rango-dev/ui";import fm from"react";import{css as bk,darkTheme as sm,IconButton as xk,styled as wo}from"@rango-dev/ui";var At=wo(xk,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${sm} &`]:{backgroundColor:"$neutral"}}}),lm=wo("div",{position:"absolute",background:"$secondary500",[`.${sm} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Jt=wo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),cm=wo("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),pm=wo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),um=wo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),mm=bk({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),dm=wo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function ks(t){return fm.createElement(At,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},fm.createElement(Ek,{color:"black",size:16}))}i(ks,"BackButton");import{i18n as Ik}from"@lingui/core";import{Button as Ak,Typography as Nk}from"@rango-dev/ui";import Ts from"react";function vs(t){return Ts.createElement(Jt,null,Ts.createElement(Ak,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Ts.createElement(Nk,{variant:"label",size:"medium",color:"error500"},Ik.t("Cancel"))))}i(vs,"CancelButton");import{i18n as Bk}from"@lingui/core";import{Image as Wk,Tooltip as Lk,WalletIcon as Mk}from"@rango-dev/ui";import bo from"react";function ws(t){let{list:e}=yt(),o=e.filter(r=>r.state==="connected"),n=o.length?bo.createElement("div",{className:mm()},o.map(r=>bo.createElement(dm,{key:r.title},bo.createElement(Wk,{src:r.image,size:14})))):Bk.t("Connect Wallet");return bo.createElement(Lk,{container:t.container,side:"bottom",content:n},bo.createElement(At,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&bo.createElement(lm,null),bo.createElement(Mk,{size:18,color:"black"})))}i(ws,"WalletButton");import{i18n as Zr}from"@lingui/core";import{NotificationsIcon as Xk,Popover as Yk,SettingsIcon as Zk,Tooltip as Jr,TransactionIcon as Jk}from"@rango-dev/ui";import Be from"react";import{Notifications as $k}from"@rango-dev/ui";import Fk from"react";import{useNavigate as Ok}from"react-router-dom";import{create as Pk}from"zustand";import{persist as _k,subscribeWithSelector as Dk}from"zustand/middleware";var we=Ho(Pk()(_k(Dk((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(c=>c.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(c=>c.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function bs(){let t=Ok(),{getNotifications:e,clearNotifications:o}=we(),n=e(),r=S().blockchains(),{findToken:a}=S();return Fk.createElement($k,{list:n,getBlockchainImage:l=>_c(l,r),getTokenImage:l=>a(l)?.image,onClickItem:i(l=>{t(`${F.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(bs,"NotificationContent");import{useManager as Uk}from"@rango-dev/queue-manager-react";import{InProgressIcon as zk}from"@rango-dev/ui";import gm from"react";var Qk=i(()=>{let{manager:t}=Uk();return gt(t).map(({swap:o})=>o).find(o=>o.status==="running")?gm.createElement(um,null,gm.createElement(zk,{color:"info",size:6})):null},"InProgressTransactionBadge"),hm=Qk;import{EventSeverity as Hk}from"@rango-dev/queue-manager-rango-preset";import{Typography as qk}from"@rango-dev/ui";import ym from"react";function Sm(){let{getNotifications:t}=we(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===Hk.WARNING);return o?ym.createElement(cm,{isSever:n},ym.createElement(qk,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(Sm,"NotificationsBadge");import{RefreshProgressButton as Gk}from"@rango-dev/ui";import xs,{useEffect as Vk,useState as Cm}from"react";var Kk=1e3,km=60,jk=100;function Yr({onClick:t}){let[e,o]=Cm(0),[n,r]=Cm(!1),a=i(c=>{document.hidden&&c&&s(c)},"handleVisibilityChange");Vk(()=>{let c;return t?c=window.setInterval(()=>{o(u=>u+1),e===km&&l()},Kk):s(c),document.addEventListener("visibilitychange",()=>a(c)),()=>{document.removeEventListener("visibilitychange",()=>a(c)),c&&clearInterval(c)}},[e,t]);let s=i(c=>{c&&clearInterval(c),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return xs.createElement(At,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},xs.createElement(pm,{onTransitionEnd:()=>r(!1),isRefetched:n},xs.createElement(Gk,{size:22,color:t?"black":"gray",progress:e/km*jk})))}i(Yr,"RefreshButton");function xo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=S(),l=Xe("notification",s)||r.includes("notifications");return Be.createElement(Be.Fragment,null,!r.includes("refresh")&&Be.createElement(Jr,{container:a||A(),side:"top",content:Zr.t("Refresh")},Be.createElement(Yr,{onClick:e})),!l&&Be.createElement(Yk,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:A(),content:Be.createElement(bs,null)},Be.createElement("div",null,Be.createElement(Jr,{container:A(),side:"top",content:Zr.t("Notifications")},Be.createElement(At,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},Be.createElement(Xk,{size:18,color:"black"}),Be.createElement(Sm,null))))),!r.includes("settings")&&Be.createElement(Jr,{container:A(),side:"top",content:Zr.t("Settings")},Be.createElement(At,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},Be.createElement(Zk,{size:18,color:"black"}))),!r.includes("history")&&Be.createElement(Jr,{container:A(),side:"top",content:Zr.t("History")},Be.createElement(At,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},Be.createElement(Jk,{size:18,color:"black"}),Be.createElement(hm,null))))}i(xo,"HeaderButtons");import{i18n as Es}from"@lingui/core";import{Divider as vm,MessageBox as tT,RefreshIcon as oT}from"@rango-dev/ui";import Jo from"react";import{Button as Rk,styled as eT}from"@rango-dev/ui";var Tm=eT(Rk,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Is(t){let{open:e,onClose:o}=t;return Jo.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Jo.createElement(tT,{title:Es.t("Something went wrong"),type:"error",description:Es.t("Something went wrong. Please refresh the app.")},Jo.createElement(vm,{size:30}),Jo.createElement(Tm,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},Jo.createElement(oT,{size:20,color:"primary"}),Jo.createElement(vm,{size:4,direction:"horizontal"}),Es.t("Refresh"))))}i(Is,"RefreshModal");function As(t){let e=t.target;if(e){let o=e.scrollTop,n=A();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(As,"onScrollContentAttachStatusToContainer");import{css as nT,styled as Rr}from"@rango-dev/ui";var wm="700px",ei=nT({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),bm=Rr("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:wm},fixed:{height:wm}},showBanner:{true:{overflow:"visible"}}}}),xm=Rr("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Em=Rr("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}}),Im=Rr("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function oe(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=cs(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l,connectedWallets:c,config:{__UNSTABLE_OR_INTERNAL__:u}}=S(),[p,m]=Bm(!1),{config:{features:h,theme:d}}=S(),{watermark:f}=ne(),g=f==="FULL",{activeTheme:C}=Zo(d||{}),[k,y]=Bm(!1),T=Xe("connectWalletButton",h),{isActiveTab:v,tabManagerInitiated:E,showActivateTabModal:B,setShowActivateTabModal:N,activateCurrentTab:x}=ne(),w=Oe(),{manager:b}=rT(),_=gt(b).map(({swap:K})=>K).some(K=>K.status==="running"),M=i(()=>x(ho.forceClaim,_),"onActivateTab"),q=i(()=>{r.onWallet?.()},"onConnectWallet"),R=typeof r.hasBackButton>"u"||r.hasBackButton,X=Nm(null),L=Nm(null);return ti(()=>{let K=(u?.swapBoxBanner?.routes?.length??0)===0,ae=!!u?.swapBoxBanner?.routes?.some(Q=>location.pathname.endsWith(Q));y(!!u?.swapBoxBanner&&(K||ae))},[u?.swapBoxBanner?.routes?.toString(),location.pathname]),ti(()=>(jr()&&L.current&&e(L.current),()=>{o()}),[]),ti(()=>(X.current?.addEventListener("scroll",As),()=>{X.current?.removeEventListener("scroll",As)}),[]),ti(()=>{m(l==="failed")},[l]),be.createElement(bm,{height:s,id:$e.SWAP_BOX_ID,className:`${C()} ${ei()}`,ref:L,showBanner:k},be.createElement(aT,{prefix:R?be.createElement(ks,{onClick:()=>{w(),r.onBack?.()}}):null,title:r.title,suffix:be.createElement(be.Fragment,null,r.suffix,r.onWallet&&!T&&be.createElement(ws,{container:A(),onClick:q,isConnected:!!c?.length}),r.onCancel&&be.createElement(vs,{onClick:r.onCancel}))}),be.createElement(xm,{ref:X},n),be.createElement(Cs,{open:B,onClose:()=>N(!1),onConfirm:M}),be.createElement(Em,null,be.createElement("div",{className:"footer__content"},E&&!v&&be.createElement("div",{className:"footer__alert"},be.createElement(ys,{onActivateTab:M}),be.createElement(Am,{size:10})),a),be.createElement(Am,{size:12}),be.createElement("div",{className:`footer__logo ${g?"logo__show":"logo__hidden"}`},be.createElement(iT,null))),k&&be.createElement(Im,null,u?.swapBoxBanner?.element),be.createElement(Is,{open:p,onClose:()=>m(!1)}))}i(oe,"Layout");import{styled as sT}from"@rango-dev/ui";var Wm="$20 $20 $10 $20",Bn=sT("div",{padding:Wm,overflowY:"auto",flexGrow:1});import{styled as lT}from"@rango-dev/ui";var re=lT("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as Rt}from"@lingui/core";import{useState as Ns}from"react";function Lm(){let[t,e]=Ns(!1),[o,n]=Ns(null),[r,a]=Ns(null),{findToken:s}=S(),l=S().customTokens(),c=i(()=>{a(null),e(!1),n(null)},"resetState");function u(m,h){switch(m){case"duplicated":return{type:m,title:Rt.t("Duplicate Token"),message:Rt.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:m,title:Rt.t("Token Already Exists"),message:Rt.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:m,title:Rt.t("Token Not Found"),message:Rt.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:h}})};case"network-error":return{type:m,title:Rt.t("Network error"),message:Rt.t("An error occurred while retrieving token data.")}}}return i(u,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:m,tokenAddress:h})=>{e(!0);try{if(l.some(k=>k.address?.toLowerCase()===h.toLowerCase())){let k=u("duplicated");n(k);return}let f=await tt().getCustomToken({blockchain:m,address:h});if(!f||!f.token||f.error){let k=u("not-found",m);n(k);return}let g=f.token;if(s({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let k=u("token-exist");n(k);return}return a({...g,warning:!0})}catch(d){if(d.code==="ERR_BAD_REQUEST"){let f=u("not-found",m);n(f);return}n(u("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:c}}i(Lm,"useFetchCustomToken");var CT=dT("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${uT} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Mm(){let t=yT(),[e]=ST(),o=Oe(),n=S().blockchains(),r=e.get("blockchain")||"",a=uo(r,n),[s,l]=hT(""),{fetchCustomToken:c,token:u,loading:p,error:m,resetState:h}=Lm(),d=!!a&&$o(a,s),f=!a||!s||!d,g=i(()=>{a&&c({blockchain:r,tokenAddress:s})},"getCustomToken");return Ue.createElement(oe,{header:{title:Ro.t("Add Custom Token")}},Ue.createElement(re,null,Ue.createElement(CT,null,Ue.createElement("div",null,Ue.createElement(rs,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:Ro.t("Select chain"),placeholder:Ro.t("Select chain")}),Ue.createElement(Bs,{size:"24"}),Ue.createElement(gT,{size:"large",variant:"label"},Ro.t("Enter Address")),Ue.createElement(Bs,{size:10}),Ue.createElement(fT,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:Ro.t("Enter token address"),size:"large",value:s,suffix:!!s&&d&&Ue.createElement(mT,{color:"success",size:12}),onChange:C=>l(C.target.value)}),!d&&!!s&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Bs,{size:4}),Ue.createElement(cT,{type:"error",variant:"alarm",title:"Invalid Address"}))),Ue.createElement(pT,{id:"widget-add-custom-token-import-btn",disabled:f,type:"primary",variant:"contained",loading:p,size:"large",onClick:g},Ro.t("Import"))),Ue.createElement(Nn,{token:u,blockchain:a??void 0,address:s,error:m??void 0,fetchCustomToken:c,onCloseErrorModal:()=>{m?.type!=="network-error"&&l("")},onImport:o,onExitErrorModal:h,onExitImportModal:h})))}i(Mm,"AddCustomTokenPage");import{i18n as al}from"@lingui/core";import{useManager as ow}from"@rango-dev/queue-manager-react";import{Alert as nw,Button as rw,css as ll,Divider as sl,IconButton as Af,styled as iw,Typography as aw,WalletIcon as sw}from"@rango-dev/ui";import Le,{useEffect as Ni,useLayoutEffect as lw,useRef as cw,useState as Hn}from"react";import{useNavigate as pw}from"react-router-dom";import{i18n as Eo}from"@lingui/core";import{Alert as qT,BalanceErrors as GT,Button as sd,ChevronLeftIcon as VT,Divider as Fs,MessageBox as KT,Typography as Os}from"@rango-dev/ui";import te,{useCallback as jT,useEffect as ld,useMemo as XT,useState as on}from"react";import{useNavigate as YT}from"react-router-dom";import{i18n as Ps}from"@lingui/core";import{Alert as bT,ChevronDownIcon as xT,CloseIcon as ET,Divider as Um,IconButton as zm,PasteIcon as IT,Typography as AT,WalletIcon as NT}from"@rango-dev/ui";import We,{useEffect as BT,useRef as WT}from"react";import ii,{useRef as vT}from"react";import*as en from"@radix-ui/react-collapsible";import{keyframes as Pm,styled as oi}from"@rango-dev/ui";var Ws=300,kT=Pm({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),TT=Pm({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),_m=oi(en.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Ls=oi(en.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),ni=oi(en.Content,{overflow:"hidden",variants:{open:{true:{animation:`${kT} ${Ws}ms ease-out`},false:{animation:`${TT} ${Ws}ms ease-out`}}}}),ri=oi("div",{transition:`all ${Ws}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function ai(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,c=vT(null);return ii.createElement(_m,{ref:c,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&ii.createElement(Ls,{className:"collapsible_trigger",onClick:a},s),ii.createElement(ni,{className:"collapsible_content",open:e},r),l==="bottom"&&ii.createElement(Ls,{className:"collapsible_trigger",onClick:a},s))}i(ai,"CustomCollapsible");import{darkTheme as Dm,styled as Ms,TextField as wT}from"@rango-dev/ui";var $m=Ms("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),Fm=Ms(wT,{backgroundColor:"$neutral100",padding:"$15"}),Om=Ms("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Dm} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${Dm} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Qm(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=O(),{config:s}=S(),l=S().blockchains(),c=fr(e.name,l),u=WT(null),p=s?.defaultCustomDestinations?.[e.name],m=navigator?.userAgent.includes("Firefox"),d=n&&!!r&&e&&!$o(e,r),f=i(()=>{a("")},"handleClear"),g=i(async k=>{if(k.preventDefault(),navigator.clipboard!==void 0){let y=await navigator.clipboard.readText();a(y),u?.current?.focus()}},"handlePaste"),C=i(()=>r?We.createElement(zm,{id:"widget-custom-destination-close-icon-btn",onClick:f,variant:"ghost"},We.createElement(ET,{size:12,color:"gray"})):m?null:We.createElement(zm,{id:"widget-custom-destination-paste-icon-btn",onClick:g,variant:"ghost"},We.createElement(IT,{size:16})),"renderSuffix");return BT(()=>{!!p&&r===null&&(a(p),o(!0))},[p]),We.createElement($m,null,We.createElement(ai,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:We.createElement(Om,null,We.createElement("div",{className:"button__content"},We.createElement(NT,{size:18,color:"info"}),We.createElement(Um,{size:4,direction:"horizontal"}),We.createElement(AT,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Ps.t("Send to a different address"))),We.createElement(ri,{orientation:n?"up":"down"},We.createElement(xT,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},We.createElement(Fm,{ref:u,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Ps.t("Enter {blockchainName} address",{blockchainName:c}),value:r||"",suffix:C(),onChange:k=>{let y=k.target.value;a(y)}})),d&&We.createElement(We.Fragment,null,We.createElement(Um,{size:4}),We.createElement(bT,{variant:"alarm",type:"error",title:Ps.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(Qm,"CustomDestination");import{css as LT,darkTheme as _s,IconButton as MT,styled as Ft}from"@rango-dev/ui";var Hm=Ft("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),qm=Ft("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),PT=Ft("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${_s} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$secondary100",[`.${_s} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$secondary100",[`.${_s} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Gm=Ft(PT,{alignSelf:"stretch",minHeight:"93px"}),Vm=Ft("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Km=Ft(MT,{position:"absolute",left:"$20"}),jm=Ft("div",{paddingTop:"$20"}),Xm=LT({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Ym=Ft("div",{display:"flex"}),Zm=Ft("div",{overflow:"visible",width:"100%"});import{i18n as nd}from"@lingui/core";import{warn as OT}from"@rango-dev/logging-core";import{Divider as UT,SelectableWallet as zT,Typography as rd,WalletState as id}from"@rango-dev/ui";import Ze,{useEffect as ad,useState as Ln}from"react";import{Image as $T,MessageBox as FT}from"@rango-dev/ui";import Wn from"react";import{keyframes as _T,styled as Ds}from"@rango-dev/ui";var Jm=Ds("div",{position:"relative"}),DT=_T({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Rm=Ds("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${DT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),ed=Ds("div",{"& img":{borderRadius:"50%"}});import{i18n as tn}from"@lingui/core";function td(t,e){switch(t){case"in-progress":return{type:"loading",title:tn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:tn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:tn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:tn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:tn.t("Request Rejected"),description:tn.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:e}})};default:throw new Error(`Showing information about an experimentation chain status needs to be defined first. status: ${t}`)}}i(td,"generateMessageByStatus");function od(t){let{status:e,displayName:o,image:n}=t,r=td(e,o),a=e=="in-progress";return Wn.createElement(FT,{type:r.type,title:r.title,description:r.description,icon:a?Wn.createElement(Jm,null,Wn.createElement(ed,null,Wn.createElement($T,{src:n,size:45})),Wn.createElement(Rm,null)):void 0})}i(od,"ExperimentalChainStatus");var QT=7,HT=3e3;function $s(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,l=ne.use.isActiveTab(),{blockchains:c,connectedWallets:u}=S(),[p,m]=Ln(),[h,d]=Ln(null),[f,g]=Ln(!1),[C,k]=Ln(null),{suggestAndConnect:y}=si(),{handleDisconnect:T}=Xt(),{list:v}=yt({chain:e}),[E,B]=Ln(v),N=v.length,x=a&&N-a>0,w=i(async I=>{g(!1),k("in-progress");try{await y(I.walletType,I.chain),k("completed")}catch{k("rejected")}},"addExperimentalChain");ad(()=>{B(I=>{let _=v.findIndex(M=>n(M.type,e));return x&&_>1?[v[_]].concat(v.filter((M,q)=>q!==_)):I.map(M=>v.find(q=>q.type===M.type)??M)})},[JSON.stringify(v)]);let b=document.getElementById($e.SWAP_BOX_ID);return ad(()=>{let I=null;return(C==="completed"||C==="rejected")&&(I=setTimeout(()=>k(null),HT)),()=>{I&&clearTimeout(I)}},[C]),Ze.createElement(Ze.Fragment,null,E.slice(0,a).map(I=>{let _=ap({connectedWallets:u,walletType:I.type,chain:e}),M=_?Ir(_,QT):"",q=xr(c(),e),R=!u.find(Q=>Q.walletType===I.type&&Q.chain===e),X=q&&R&&I.state===id.CONNECTED,L=X?nd.t({id:"Add {chain} chain",values:{chain:e}}):M,K=i(async()=>{let Q=I.state===id.DISCONNECTED,de=(I.isHub||!!I.needsNamespace)&&!M;Q?m(I):de?(await T(I.type),m(I)):X?(d({walletType:I.type,chain:e,address:_??""}),g(!0)):r({walletType:I.type,chain:e,address:_??""})},"onSelectableWalletClick"),ae=h?.chain?fr(h.chain,c()):void 0;return Ze.createElement(Ze.Fragment,{key:`${I.title}_${ae}`},!!h&&Ze.createElement(J,{open:!!h&&f,container:b,onClose:()=>{d(null)}},Ze.createElement(qa,{displayName:ae,onConfirm:()=>{w(h)}})),C&&Ze.createElement(J,{open:!!C,onClose:k.bind(null,null),container:b},Ze.createElement(od,{status:C,displayName:ae,image:I.image}),Ze.createElement(UT,{direction:"vertical",size:32})),Ze.createElement(zT,{key:I.type,description:L,onClick:K,selected:n(I.type,e),disabled:!l,...I}))}),Ze.createElement(Co,{wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{m(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):OT(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),x&&Ze.createElement(Gm,{selected:!1,onClick:s},Ze.createElement(rd,{variant:"label",size:"medium"},nd.t("Show more wallets"),Ze.createElement(rd,{variant:"label",size:"medium",color:"$primary"},"\xA0+",N-(a??0)))))}i($s,"WalletList");var ZT=2;function cd(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=YT(),l=S().blockchains(),{selectedQuote:c,setSelectedWallets:u,quoteWalletsConfirmed:p,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:d}=O(),{config:f,connectedWallets:g,setWalletsAsSelected:C}=S(),[k,y]=on(""),[T,v]=on([]),[E,B]=on(""),[N,x]=on(!!h),w=XT(()=>go({filter:"all",quote:c}),[c]),b=go({filter:"required",quote:c}),I=l.find(D=>D.name===c?.swaps[c?.swaps.length-1].to.blockchain),_=i(D=>b.includes(D),"isWalletRequiredFor"),M=jT(()=>g.filter(D=>D.selected&&w.includes(D.chain)),[g,w]),[q,R]=on(M()),[X,L]=on([]),K=i((D,G)=>L(j=>j.concat({blockchain:D,walletType:G})),"addNextSelectedWallets"),ae=T.length>0,Q=i((D,G)=>!!q.find(j=>j.walletType===D&&j.chain===G&&j.selected&&(_(G)||!_(G)&&!h)),"isSelected"),de=i((D,G,j)=>{let he=!1;return D.map(ce=>{if(ce.chain===G){let _e=ce.selected;return!he&&j?(he=!0,_e=!0):j||(_e=!1),{...ce,selected:_e}}return ce})},"updateSelectableWallets"),Ie=i(D=>{x(D),D?_(I?.name??"")||R(G=>de(G,I?.name||"",!1)):(d(""),R(G=>de(G,I?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),Ke=i(D=>{if(k&&y(""),Q(D.walletType,D.chain))return;let j=g.find(he=>he.walletType===D.walletType&&he.chain===D.chain);j&&(n(),D.chain===I?.name&&N&&!_(I.name)&&(x(!1),d(null)),R(he=>he.filter(ce=>ce.chain!==D.chain).concat({...j,selected:!0})))},"onChange"),se=i(()=>{let D=q.filter(G=>G.selected);C(D),u(D),m(!0),o()},"onConfirmBalance"),ct=i(async()=>{v([]),B("");let D=await r?.({selectedWallets:q.filter(j=>j.selected),customDestination:h}),G=D.warnings;G?.balance?.messages&&v(G.balance.messages),D.error&&B(cu(D.error)),!D.error&&!G?.balance?.messages.length?se():v(G?.balance?.messages??[])},"onConfirmWallets");ld(()=>{R(D=>{let G=[];return D.forEach(j=>{!g.some(ce=>ce.chain===j.chain&&ce.walletType===j.walletType&&ce.address===j.address)||G.push(j)}),G=G.concat(g.filter(j=>!!!G.find(ce=>ce.chain===j.chain)&&j.selected&&w.includes(j.chain))),G})},[g,w]),ld(()=>{let D=[];X.length>0&&(X.forEach(G=>{let j=g.find(he=>he.chain===G.blockchain&&he.walletType===G.walletType);j?Ke(j):D.push(G)}),L(D))},[g,X]);let V=document.getElementById($e.SWAP_BOX_ID);return te.createElement(J,{open:e,onClose:()=>{p||s("../",{replace:!0}),o()},dismissible:!k,container:V,...!k&&{styles:{container:{height:"100%"}},footer:te.createElement(Ym,null,te.createElement(sd,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Fu(a,N,h,c,q,I),onClick:ct,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Eo.t("Confirm")))},...k&&{styles:{container:{height:"100%",padding:"$0"}},header:te.createElement(Vm,null,te.createElement(Km,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},te.createElement(VT,{size:16})),te.createElement(Os,{variant:"headline",size:"small"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:pt(k,l)}})))},anchor:"center"},te.createElement(J,{open:ae,onClose:v.bind(null,[]),container:V},te.createElement(KT,{title:Eo.t("Insufficient account balance"),type:"error",description:te.createElement(GT,{messages:T??[]})},te.createElement(sd,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:se},Eo.t("Proceed anyway")))),k&&te.createElement(jm,null,te.createElement("div",{className:Xm()},te.createElement($s,{chain:k,quoteChains:w,isSelected:Q,selectWallet:Ke,onShowMore:()=>y(k),onConnect:D=>{K(k,D)}}))),!k&&te.createElement(te.Fragment,null,E&&te.createElement(te.Fragment,null,te.createElement(qT,{variant:"alarm",type:"error",title:Eo.t(E)}),te.createElement(Fs,{size:12})),te.createElement(Zm,null,w.map((D,G)=>{let j=l.find(je=>je.name===D),he=`wallet-${G}`,ce=G===w.length-1,_e=ce&&I&&f?.customDestination!==!1;return te.createElement("div",{key:he},te.createElement(Hm,null,te.createElement(Os,{variant:"title",size:"xmedium"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:j?.shortName}})),te.createElement(Os,{variant:"label",color:"$neutral700",size:"medium"},Eo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:j?.shortName}}))),te.createElement(Fs,{size:24}),te.createElement(qm,null,te.createElement($s,{chain:D,quoteChains:w,isSelected:Q,selectWallet:Ke,limit:ZT,onShowMore:()=>y(j?.name??""),onConnect:je=>{K(D,je)}})),!ce&&te.createElement(Fs,{size:32}),_e&&te.createElement(Qm,{blockchain:I,open:N,handleOpenChange:Ie}))}))))}i(cd,"ConfirmWalletsModal");import{i18n as hv}from"@lingui/core";import{Alert as yv,Button as Sv,InfoIcon as Cv}from"@rango-dev/ui";import nt from"react";import{Alert as ev,Button as tv,Divider as Qs,NoRouteIcon as ov,RefreshIcon as nv,Typography as hd}from"@rango-dev/ui";import ot from"react";import{i18n as pd}from"@lingui/core";var JT=24,RT=60;function ud(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ee().genericServerError,action:{onClick:n,title:pd.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ee().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:pd.t("Reset")}},description:ee().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ee().noResultError.description}}i(ud,"makeInfo");var Us=(o=>(o[o.small=JT]="small",o[o.large=RT]="large",o))(Us||{}),zs=(o=>(o.small="small",o.large="medium",o))(zs||{});import{styled as li}from"@rango-dev/ui";var md=li("div",{display:"flex",flexDirection:"column",alignItems:"center"}),dd=li("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),fd=li("div",{variants:{size:{small:{width:"100%"},large:{}}}}),gd=li("div",{padding:"$6 $0"});function Mn(t){let{fetch:e,error:o,size:n="small"}=t,r=S().getDisabledLiquiditySources(),a=S().toggleAllLiquiditySources,s=S().swappers(),l=ud(o,r,()=>a(s,!0),e);return ot.createElement(md,null,ot.createElement(ov,{size:Us[n],color:"gray"}),ot.createElement(Qs,{size:4}),ot.createElement(hd,{variant:"title",size:zs[n]},ee().noResultError.title),n==="large"&&ot.createElement(Qs,{size:4}),!!l.description&&ot.createElement(dd,{size:n},ot.createElement(hd,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),ot.createElement(Qs,{size:n==="large"?"24":"4"}),!!l.alert&&ot.createElement(fd,{size:n},ot.createElement(ev,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&ot.createElement(tv,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:ot.createElement(gd,null,ot.createElement(nv,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Mn,"NoResult");import{i18n as Pn}from"@lingui/core";import{Button as iv,Divider as av,MessageBox as sv,Typography as lv,WarningIcon as cv}from"@rango-dev/ui";import Ot from"react";import{Typography as kd}from"@rango-dev/ui";import qs from"react";import{darkTheme as rv,styled as ci}from"@rango-dev/ui";var yd=ci("div",{width:"100%"}),Hs=ci("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Sd=ci("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${rv} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Cd=ci("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function Td(t){let{title:e,value:o,valueColor:n}=t;return qs.createElement(Sd,null,qs.createElement(kd,{size:"medium",variant:"label",className:"_title"},e),qs.createElement(kd,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(Td,"QuoteErrorsModalItem");function vd(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:Pn.t("Swapping"),value:P(r.inputUsdValue,4,4)},{title:Pn.t("Gas cost"),value:P(r.totalFee,2,2)},{title:Pn.t("Receiving"),value:P(r.outputUsdValue,4,4)},{title:Pn.t("Price impact"),value:P(r.priceImpact,2,2),valueColor:`${s}500`}];return Ot.createElement(J,{footer:Ot.createElement(iv,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ot.createElement(cv,null),fullWidth:!0,disabled:a,onClick:n},ee().highValueLossError.confirmMessage),open:e,onClose:o,container:A()},Ot.createElement(sv,{type:s,title:ee().highValueLossError.impactTitle,description:ee().highValueLossError.description}),Ot.createElement(Hs,null,Ot.createElement(av,{size:"4"}),Ot.createElement(lv,{size:"small",variant:"title"},Pn.t("Details")),Ot.createElement(Hs,null,l.map((c,u)=>Ot.createElement(Td,{key:u,...c})))))}i(vd,"HighValueLossWarningModal");import{i18n as pi}from"@lingui/core";function wd(t,e){let o={alertType:"warning",title:"",action:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=pi.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o;if(t){switch(t.type){case 0:{$t(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ee().highValueLossError.title;break}case 4:{o.title=pi.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=ee().unknownPriceError.title;break}case 2:{o.title=pi.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-settings";break}case 3:{o.title=pi.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(wd,"makeAlerts");import{i18n as nn}from"@lingui/core";import{Button as bd,Divider as xd,MessageBox as pv,Typography as uv}from"@rango-dev/ui";import Io from"react";import{useNavigate as mv}from"react-router-dom";function Ed(t){let{customSlippage:e,slippage:o}=S(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,c=mv(),u=e??o;return Io.createElement(J,{anchor:"bottom",open:n,prefix:Io.createElement(bd,{size:"small",id:"widget-slippage-warning-modal-change-settings-btn",variant:"ghost",onClick:()=>c("../"+F.settings)},Io.createElement(uv,{variant:"label",size:"medium",color:"$neutral900"},nn.t("Change settings"))),container:A(),onClose:r},Io.createElement(pv,{type:"warning",title:s.type===3?nn.t("High slippage"):nn.t("Low slippage"),description:s.type===3?nn.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:u}}):nn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:s.minRequiredSlippage}})},Io.createElement(xd,{size:18}),Io.createElement(xd,{size:32}),Io.createElement(bd,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:l,onClick:a},nn.t("Confirm anyway"))))}i(Ed,"SlippageWarningModal");import{Button as dv,MessageBox as fv,WarningIcon as gv}from"@rango-dev/ui";import ui from"react";function Id(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return ui.createElement(J,{footer:ui.createElement(dv,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:ui.createElement(gv,null),fullWidth:!0,disabled:r,onClick:n},ee().unknownPriceError.confirmMessage),open:e,onClose:o,container:A()},ui.createElement(fv,{type:"warning",title:ee().unknownPriceError.impactTitle,description:ee().unknownPriceError.description}))}i(Id,"UnknownPriceWarningModal");function _n(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,refetchQuote:s,onOpenWarningModal:l,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:p}=t,m={confirmationDisabled:a,open:r,onClose:c,onConfirm:u},h=o?.type===0||o?.type===1,d=wd(e,o?.type===3||o?.type===4?o:null);return d&&!n&&(d.action=null),nt.createElement(nt.Fragment,null,h&&nt.createElement(Mn,{error:o,fetch:s}),!!d&&nt.createElement(yd,null,nt.createElement(yv,{title:d.title,type:d.alertType,variant:"alarm",...d.action==="show-info"&&{action:nt.createElement(Cd,{onClick:l},nt.createElement(Cv,{size:12,color:"gray"}))},...d.action==="change-settings"&&{action:nt.createElement(Sv,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:d.alertType,onClick:p},hv.t("Change"))}})),e&&nt.createElement(nt.Fragment,null,e.type===0&&nt.createElement(vd,{...m,warning:e}),(e.type===3||e.type===2)&&nt.createElement(Ed,{...m,warning:e}),e.type===1&&nt.createElement(Id,{...m,warning:e})))}i(_n,"QuoteWarningsAndErrors");import Yv from"bignumber.js";import xi from"react";import{i18n as Ao}from"@lingui/core";import{Alert as $v,Divider as an,FullExpandedQuote as Fv,InfoIcon as Ov,NumericTooltip as af,QuoteTag as Uv,StepDetails as zv,TokenAmount as Qv,Typography as sn}from"@rango-dev/ui";import Rs from"bignumber.js";import U,{useRef as Hv,useState as qv}from"react";import{styled as Gs}from"@rango-dev/ui";var Vs=Gs("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Ad=Gs("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Nd=Gs("div",{width:"100%",display:"flex"});import*as mi from"@radix-ui/react-collapsible";import{Button as kv,css as Dn,darkTheme as xe,Image as Bd,styled as Qe,Typography as Tv}from"@rango-dev/ui";var vv=300,Wd=Qe(mi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${xe} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),Ld=Dn({padding:"$10 $15"}),Md=Qe(kv,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${xe} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${xe} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${xe} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),Pd=Qe("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${xe} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${xe} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${xe} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${xe} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${xe} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${xe} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${xe} &`]:{backgroundColor:"$neutral400"}}}}]}),_d=Dn({width:"100%",padding:"$15 $15 $10 $15"}),Dd=Dn({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),rn=Dn({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),$d=Dn({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${xe} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Fd=Qe(mi.Trigger,{display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",height:"$36",padding:"$10 $15",boxSizing:"border-box",cursor:"pointer",border:"none",outline:"none",backgroundColor:"transparent",variants:{error:{true:{[`& ${Bd}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Bd}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${xe} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Od=Qe("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),Ud=Qe(ni,{width:"100%",background:"inherit"}),Ks=Qe("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${vv}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),NO=Qe("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),zd=Qe("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${xe} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Qd=Qe("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),js=Qe(Tv,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Hd=Qe("div",{display:"flex",flexWrap:"wrap"}),Xs=Qe("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),qd=Qe("div",{display:"flex"}),di=Qe("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${xe} &`]:{borderTopColor:"$neutral800"}});import{i18n as Nt}from"@lingui/core";import{ChevronDownIcon as bv,CloseIcon as xv,Divider as hi,IconButton as Ev,NumericTooltip as Iv,QuoteCost as Av,Typography as kt}from"@rango-dev/ui";import Z,{useState as jd}from"react";import{css as wv,styled as fi}from"@rango-dev/ui";var gi=fi("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Ys=fi("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),Gd=fi("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Vd=fi("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Kd=wv({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Nv=i(t=>t.fee.isZero()?null:Z.createElement(gi,null,Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},t.label),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(t.fee,4,4))),"NonPayableFee");function Zs(t){let[e,o]=jd(!1),[n,r]=jd(!1),{steps:a,quote:s,fee:l,time:c,feeWarning:u,timeWarning:p,showModalFee:m,fullExpandedMode:h=!1}=t,d=s?.swaps??[],f=h?fo():A(),g=Bu(d);return Z.createElement(Z.Fragment,null,Z.createElement(Av,{onClickFee:m?C=>{C.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:u,timeWarning:p,time:c,steps:a,tooltipGas:m?Nt.t("View more info"):void 0,tooltipContainer:f}),Z.createElement(J,{container:f,open:e,anchor:h?"center":"bottom",styles:{container:{maxWidth:h?"484px":"unset"}},header:Z.createElement(Vd,{style:{textAlign:h?"left":"center"}},Z.createElement(kt,{variant:"title",size:"medium"},Nt.t("Gas & Fee Explanation")),Z.createElement(Ev,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},Z.createElement(xv,{color:"gray",size:14}))),onClose:()=>{o(!1)}},Z.createElement(Gd,null,Z.createElement(kt,{variant:"title",size:"small"},Nt.t("Details")),Z.createElement(hi,{size:10}),Object.entries(g.payable).flatMap(([C,k])=>k.map((y,T)=>{let v=`payable-fee-${T}`,E=Za(y);return Z.createElement(gi,{key:v},Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},Va(C,Nt.t)),Z.createElement(Iv,{content:y.amount,container:f},Z.createElement(kt,{variant:"label",size:"medium"},P(y.amount,2,2)," ",y.asset.symbol," ($",P(E,4,4),")")))})),Z.createElement(gi,{className:"total_payable_fee"},Z.createElement(kt,{variant:"label",size:"medium"},Nt.t("Total Payable Fee")),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(l,4,4))),Z.createElement(Ys,null),Object.keys(g.nonePayable).length&&Z.createElement(ai,{triggerAnchor:"bottom",onClickTrigger:()=>r(C=>!C),trigger:Z.createElement("div",{className:Kd()},Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},n?Nt.t("Hide non-payable fees"):Nt.t("Show non-payable fees")),Z.createElement(hi,{size:4,direction:"horizontal"}),Z.createElement(ri,{orientation:n?"up":"down"},Z.createElement(bv,{size:12,color:"gray"}))),open:n},Z.createElement(kt,{size:"small",variant:"title"},Nt.t("Description")),Z.createElement(hi,{size:4}),Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},Nt.t(`The following fees are considered in the transaction output and
|
|
2
|
+
you won\u2019t need to pay extra gas for them.`)),Z.createElement(hi,{size:10}),Object.entries(g.nonePayable).map(([C,k],y)=>{let T=Nu(k),v=Va(C,Nt.t),E=`non-payable-fee-${y}`;return Z.createElement(Nv,{key:E,fee:T,label:v})}),Z.createElement(Ys,null)))))}i(Zs,"QuoteCostDetails");import{i18n as Zd}from"@lingui/core";import{TokenAmount as Jd}from"@rango-dev/ui";import yi from"react";import{css as Bv,styled as Wv}from"@rango-dev/ui";var Xd=Wv("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Yd=Bv({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function $n(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return yi.createElement(Xd,null,yi.createElement(Jd,{direction:"horizontal",label:Zd.t("Swap input"),type:"input",tooltipContainer:A(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),yi.createElement("div",{className:Yd()}),yi.createElement(Jd,{direction:"horizontal",tooltipContainer:A(),label:Zd.t("Estimated output"),type:"output",price:{value:o.price.value,usdValue:o.price.usdValue,realValue:o.price.realValue,realUsdValue:o.price.realUsdValue},token:{displayName:o.token.displayName,image:o.token.image},chain:{image:o.chain.image},percentageChange:n,warningLevel:r}))}i($n,"QuoteSummary");import{i18n as nf}from"@lingui/core";import{ChevronDownIcon as Pv,ChevronRightIcon as _v,Divider as Js,Image as Dv,Tooltip as vi,Typography as Ci}from"@rango-dev/ui";import z from"react";import{useLayoutEffect as Lv,useState as Fn}from"react";var Rd=480,ef=768,tf=1024,of=1200,Mv=i(()=>{let[t,e]=Fn(!1),[o,n]=Fn(!1),[r,a]=Fn(!1),[s,l]=Fn(!1),[c,u]=Fn(!1),p=i(()=>{e(window.innerWidth<=Rd),n(window.innerWidth>Rd&&window.innerWidth<=ef),a(window.innerWidth>ef&&window.innerWidth<=tf),l(window.innerWidth>tf&&window.innerWidth<=of),u(window.innerWidth>of)},"handleResize");return Lv(()=>(p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:c}},"useScreenDetect"),Si=Mv;var ki=4,Ti=6,On=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||A();return z.createElement(vi,{container:l,side:"bottom",sideOffset:4,open:r,content:e},z.createElement(Od,{className:n,state:a},z.createElement(Dv,{src:o,size:16})))},"ImageComponent");function rf(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,c=l||A(),u=r.length,p=Cu(r),{isTablet:m,isMobile:h}=Si();return z.createElement(Fd,{listItem:s==="list-item",ref:d=>e.current=d,selected:o,onClick:d=>{d.stopPropagation(),n(f=>!f)}},z.createElement("div",{className:rn()},z.createElement(Ci,{variant:"body",size:"xsmall"},nf.t("Via:")),z.createElement(Js,{direction:"horizontal",size:4}),r.map((d,f)=>{let g=`item-${f}`,C=z.createElement(Ks,null,z.createElement(_v,{size:12,color:"black"}));return h||m?z.createElement(z.Fragment,{key:g},z.createElement(On,{content:d.swapper.displayName,src:d.swapper.image??"",state:d.state,container:l}),f!==u-1&&z.createElement(z.Fragment,null,C)):z.createElement(z.Fragment,{key:g},u<=ki||u>ki&&f<ki-1?z.createElement(z.Fragment,null,z.createElement(On,{content:d.swapper.displayName,src:d.swapper.image??"",state:d.state,container:l}),f!==u-1&&z.createElement(z.Fragment,null,C)):f===ki-1&&z.createElement(vi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},C,r.map((k,y)=>{let T=`image-${y}`;return y>=f&&z.createElement(z.Fragment,{key:T},z.createElement(On,{content:k.swapper.displayName,src:k.swapper.image??"",state:k.state,open:!1}),y!==u-1&&z.createElement(z.Fragment,null,C))}))},z.createElement(Xs,{state:r.find((k,y)=>y>=f&&(k.state==="error"||k.state==="warning"))?.state},z.createElement(Ci,{size:"xsmall",variant:"body"},"+",u-f))))})),z.createElement("div",{className:rn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:rn()},z.createElement(Ci,{variant:"body",size:"xsmall"},nf.t("Chains:")),z.createElement(Js,{direction:"horizontal",size:4}),p.map((d,f)=>z.createElement(z.Fragment,{key:d.displayName},p.length<=Ti||p.length>Ti&&f<Ti-1?z.createElement(vi,{container:c,side:"bottom",content:d.displayName,sideOffset:4},z.createElement(On,{content:"",src:d.image??"",open:!1,className:f!==0?"blockchainImage":""})):f===Ti-1&&z.createElement(vi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},p.map((g,C)=>C>=f&&z.createElement(On,{key:g.displayName,content:"",src:g.image??"",open:!1,className:C>f?"blockchainImage":"",container:l})))},z.createElement(Xs,{className:"blockchainImage"},z.createElement(Ci,{size:"xsmall",variant:"body"},"+",p.length-f))))),z.createElement(Js,{direction:"horizontal",size:32}))),z.createElement(Ks,{orientation:a?"up":"down"},z.createElement(Pv,{size:12,color:"black"}))))}i(rf,"QuoteTrigger");function el(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:c=!0,showModalFee:u=!0,onClickAllRoutes:p,fullExpandedMode:m=!1,container:h}=t,d=S().blockchains(),{findToken:f}=S(),g=S().swappers(),{customSlippage:C,slippage:k}=S(),y=C||k,[T,v]=qv(t.expanded),E=Hv(null),B=P(o.value,6,6),N=P(n.value,6,6),x=n.usdValue?P(n.usdValue,4,4):"",w=Dt(o.usdValue,n.usdValue??null),b=P(w,2,2),I=$t(w??0),_=i((se,ct)=>se.map((V,D)=>{let G,j=r?.type===3&&r.swap.swapperId===V.swapperId,he=r?.type===4&&r.recommendedSlippages?.has(D),ce=a?.type===2&&a.recommendedSlippages?.has(D),_e=j||he,je=ce;_e?G="error":je&&(G="warning");let Te=_e?Ao.t("Slippage Error"):Ao.t("Slippage Warning");return j&&(Te=Ao.t("Bridge Limit Error")),{swapper:{displayName:mn(V.swapperId,g)??"",image:V.swapperLogo},from:{token:{displayName:V.from.symbol,image:V.from.logo},chain:{displayName:pt(V.from.blockchain,d)??"",image:V.from.blockchainLogo},price:{value:D===0&&!ct?P(o.value,6,6):P(V.fromAmount,6,6),usdValue:P((V.from.usdPrice??0)*parseFloat(V.fromAmount),4,4),realValue:D===0?o.value:V.fromAmount,realUsdValue:new Rs(V.from.usdPrice??0).multipliedBy(V.fromAmount).toString()}},to:{token:{displayName:V.to.symbol,image:V.to.logo},chain:{displayName:pt(V.to.blockchain,d)||"",image:V.to.blockchainLogo},price:{value:P(V.toAmount,6,6),usdValue:P((V.to.usdPrice??0)*parseFloat(V.toAmount),4,4),realValue:V.toAmount,realUsdValue:new Rs(V.to.usdPrice??0).multipliedBy(V.toAmount).toString()}},state:G,alerts:_e||je?U.createElement(Ad,{dense:m},U.createElement($v,{variant:"alarm",type:_e?"error":"warning",title:Te,footer:U.createElement(Nd,null,j&&U.createElement("div",null,U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(an,{direction:"vertical",size:2}),U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {amount} {symbol}",values:{amount:P(V.fromAmount,6,6),symbol:V?.from.symbol}}))),(he||ce)&&!j&&U.createElement("div",null,U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Minimum required slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(D)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(D)}}})),U.createElement(an,{direction:"vertical",size:2}),U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:fn(V.estimatedTimeInSeconds),fee:P(Ya(V,f),2,2),internalSwaps:V.internalSwaps?_(V.internalSwaps):void 0}}),"getQuoteSteps"),M=_(e?.swaps??[]),q=M.length,R=h||A(),X=Tu(t.quote.tags||[]),L=!!p,K=vr(e?.swaps),ae=fn(K),Q=Qr(e?.swaps??[],f),de=P(Q,2,2),Ie=Q.gte(new Rs(uu)),Ke=K/du>=mu;return m?U.createElement(Fv,{selected:l,fee:de,time:ae,tooltipContainer:fo(),steps:M,tags:X,quoteCost:U.createElement(Zs,{quote:e,fullExpandedMode:!0,time:ae,fee:de,feeWarning:Ie,timeWarning:Ke,showModalFee:u,steps:q}),percentageChange:b,warningLevel:I,outputPrice:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement(Pd,{selected:l,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:_d()},!c&&X.length?U.createElement(U.Fragment,null,U.createElement(qd,null,X.map((se,ct)=>{let V=`${se.value}_${ct}`;return U.createElement(U.Fragment,{key:V},U.createElement(Uv,{label:se.label,value:se.value}),U.createElement(an,{size:4,direction:"horizontal"}))})),U.createElement(di,null),!L&&U.createElement(an,{size:4})):null,U.createElement("div",{id:"portal-root",className:Dd()},U.createElement(Zs,{quote:e,time:ae,fee:de,feeWarning:Ie,timeWarning:Ke,showModalFee:u,steps:q}),L&&U.createElement(Md,{onClick:se=>{se.stopPropagation(),p()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(sn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Ao.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:$d()},U.createElement(Qd,null,U.createElement(Ov,{size:12,color:"gray"})),U.createElement(Hd,null,U.createElement(js,{size:"small",variant:"body"},`${B} ${M[0].from.token.displayName} = `),U.createElement(af,{content:n.value,container:R,open:n.value?void 0:!1},U.createElement(js,{size:"small",variant:"body"},"\xA0",`${N} ${M[M.length-1].to.token.displayName}`))),U.createElement(af,{content:n.usdValue,container:R},U.createElement(an,{size:2,direction:"horizontal"}),U.createElement(sn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${x})`))),s==="list-item"&&U.createElement(Qv,{tooltipContainer:R,type:"output",direction:"vertical",price:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:M[q-1].to.token.displayName,image:M[q-1].to.token.image},chain:{image:M[q-1].to.chain.image},percentageChange:b,warningLevel:I}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement($n,{from:M[0].from,to:M[q-1].to,percentageChange:b,warningLevel:I}),U.createElement(an,{size:4}))),U.createElement(Wd,{selected:l,listItem:s==="list-item",open:T,className:"quote_container",onOpenChange:v},U.createElement(rf,{type:s,quoteRef:E,selected:l,setExpanded:v,container:R,expanded:T,steps:M}),U.createElement(Ud,{open:T},U.createElement(zd,null),U.createElement("div",{className:Ld()},M.map((se,ct)=>{let V=`item-${ct}`;return U.createElement(zv,{type:"quote-details",key:V,tooltipContainer:R,step:se,hasSeparator:ct!==M.length-1,state:se.state})})))))}i(el,"Quote");import{Divider as jv,Skeleton as Xv}from"@rango-dev/ui";import zt from"react";import{darkTheme as Gv,styled as wi}from"@rango-dev/ui";var sf=wi("div",{$$color:"$colors$neutral100",[`.${Gv} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),lf=wi("div",{paddingTop:"$2"}),cf=wi("div",{paddingLeft:"$8"}),pf=wi("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as kf,Divider as Tt,Skeleton as rt}from"@rango-dev/ui";import H from"react";import{css as Vv,styled as Ut}from"@rango-dev/ui";var tl=Ut("div",{display:"flex"}),uf=Ut("div",{padding:"$10 $0 $20"}),mf=Ut("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),df=Ut("div",{display:"flex",justifyContent:"start",alignItems:"center"}),ff=Ut("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),gf=Ut("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),hf=Ut("div",{width:"65%",display:"flex",justifyContent:"start"}),yf=Ut("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Sf=Ut("div",{padding:"$15 $0 $15 $0"}),Cf=Vv({display:"flex",justifyContent:"space-between",alignItems:"center"});function Un(t){let{type:e,tagHidden:o=!0}=t,n=H.createElement(ff,null,H.createElement(hf,null,H.createElement(kf,{loading:!0,size:"medium"}),H.createElement(Tt,{size:8,direction:"horizontal"}),H.createElement(yf,null,H.createElement(rt,{height:10,width:60,variant:"rounded"}),H.createElement(Tt,{size:4}),H.createElement(rt,{height:15,variant:"rounded"}))),H.createElement(rt,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return H.createElement("div",null,!o&&H.createElement(H.Fragment,null,H.createElement(tl,null,H.createElement(rt,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(rt,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(rt,{width:65,height:20,variant:"rounded"})),H.createElement(di,null),!r&&H.createElement(Tt,{size:4})),H.createElement("div",{className:Cf()},H.createElement(tl,null,H.createElement(rt,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(rt,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(rt,{width:60,height:10,variant:"rounded"})),r&&H.createElement(rt,{width:85,height:24,variant:"rounded"})),e==="basic"&&H.createElement(uf,null,H.createElement(rt,{height:15,width:148,variant:"rounded"})),e==="list-item"&&H.createElement(mf,null,H.createElement(df,null,H.createElement(kf,{loading:!0,size:"medium"}),H.createElement(Tt,{direction:"horizontal",size:4}),H.createElement(rt,{height:15,width:150,variant:"rounded"})),H.createElement(Tt,{size:10}),H.createElement(rt,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&H.createElement(H.Fragment,null,H.createElement(Tt,{size:4}),H.createElement(Sf,null,n,H.createElement(gf,null),n),H.createElement(Tt,{size:12})))}i(Un,"QuoteSummarySkeleton");import{ChainToken as xf,Divider as nl,NextIcon as Kv,Skeleton as bi}from"@rango-dev/ui";import Ee from"react";import{styled as zn}from"@rango-dev/ui";var Tf=zn("div",{display:"flex",alignItems:"start"}),vf=zn("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),ol=zn("div",{display:"flex",alignItems:"center",flexGrow:1}),wf=zn("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),bf=zn("div",{display:"flex",alignItems:"center"});function Bt(t){let{separator:e=!0}=t;return Ee.createElement(Ee.Fragment,null,Ee.createElement(bf,null,Ee.createElement(bi,{height:22,width:22,variant:"circular"}),Ee.createElement(nl,{direction:"horizontal",size:8}),Ee.createElement(bi,{height:15,width:148,variant:"rounded"})),Ee.createElement(Tf,null,Ee.createElement(pf,{hideSeparator:!e}),Ee.createElement(vf,{extraSpace:e},Ee.createElement(ol,null,Ee.createElement(xf,{size:"small",loading:!0}),Ee.createElement(nl,{direction:"horizontal",size:8}),Ee.createElement(bi,{height:12,variant:"rounded"})),Ee.createElement(wf,null,Ee.createElement(Kv,{color:"gray",size:16})),Ee.createElement(ol,null,Ee.createElement(xf,{size:"small",loading:!0}),Ee.createElement(nl,{direction:"horizontal",size:8}),Ee.createElement(bi,{height:12,variant:"rounded"})))))}i(Bt,"StepSkeleton");function Qn(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return zt.createElement(sf,{expanded:o,rounded:e!=="basic"},zt.createElement(Un,{type:e,tagHidden:n}),zt.createElement(lf,null,zt.createElement(Xv,{height:15,variant:"rounded"})),o&&zt.createElement(cf,null,zt.createElement(jv,{size:24}),zt.createElement(Bt,null),zt.createElement(Bt,null),zt.createElement(Bt,{separator:!1})))}i(Qn,"QuoteSkeleton");function No(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:c,showModalFee:u,selected:p,onClickAllRoutes:m,fullExpandedMode:h=!1,container:d}=t,{inputAmount:f,inputUsdValue:g}=O(),C=e?.outputAmount?new Yv(e?.outputAmount):null,k=e?ft(e):null,T=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?xi.createElement(Vs,null,xi.createElement(Qn,{tagHidden:l,type:o,expanded:s})):T?xi.createElement(Vs,{onClick:()=>c?.(e)},xi.createElement(el,{quote:e,error:r,container:d,showModalFee:u,warning:a,tagHidden:l,selected:p,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:f,usdValue:g?.toString()??""},output:{value:C?.toString()??"",usdValue:k?.toString()??""}})):null}i(No,"QuoteInfo");import{calculatePendingSwap as ew}from"@rango-dev/queue-manager-rango-preset";import{useEffect as tw}from"react";import{useRef as Zv,useState as Jv}from"react";var Rv=2e3;function Ei({request:t}){let[e,o]=Jv(!1),n=Zv(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(c=>setTimeout(c,Rv)),await s(l,!1)),"retryFetch"),s=i(async(l,c=!1)=>{r(),n.current=new AbortController,o(!0);try{let u=await t(l,{signal:n.current.signal});return n.current=null,u}catch(u){if(c)return await a(l);throw u}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(Ei,"useFetch");function Ef(){let{fetch:t,loading:e,cancelFetch:o}=Ei({request:async(n,r)=>await tt().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Ef,"useFetchConfirmQuote");function Ii(t){if(!t.swaps)throw new Error(ee().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=rl(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(Ii,"throwErrorIfResponseIsNotValid");function rl(t){if(Eu(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Iu(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=Wu(t);if(o){let n=Hr(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(rl,"getQuoteError");function If(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,l={quote:null,balance:null},c=Ko({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});c&&(l.quote=c);let u=Pu(e,r,n.blockchains);return u.length===0||(l.balance={messages:u}),l}i(If,"generateWarnings");function Ai(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:t?.code==="ERR_BAD_REQUEST"?{swap:null,error:{type:0,diagnosisMessage:t.response.data.error},warnings:null}:{swap:null,error:{type:1},warnings:null}}i(Ai,"handleQuoteErrors");function il(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:l}=O(),{slippage:c,customSlippage:u}=S(),p=S().getDisabledLiquiditySources(),m=S().blockchains(),h=S().tokens(),{findToken:d}=S(),f=u||c,{fetch:g,cancelFetch:C,loading:k}=Ef();return tw(()=>C,[]),{loading:k,fetch:i(async T=>{let v=T.selectedWallets,E=T?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let B=v.reduce((x,w)=>(x[w.chain]=w.address,x),{}),N={requestId:a?.requestId||"",selectedWallets:B,destination:E||void 0};try{return await g(N,!0).then(x=>{let{result:w}=x;if(!w)throw new Error("Error fetching updated route");Ii({diagnosisMessages:w.diagnosisMessages,requestId:w.requestId,swaps:w.result?.swaps});let b={outputAmount:w.result?.outputAmount,requestId:w.requestId,resultType:w.result?.resultType,swaps:w.result?.swaps||[],validationStatus:w.validationStatus,requestAmount:w.requestAmount};r(b);let I={slippage:f.toString(),disabledSwappersGroups:p},_=If({previousQuote:a??void 0,currentQuote:b,meta:{blockchains:m},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:d});l();let M=!!_.balance,q=ew(o.toString(),w,Mu(v),I,!M,{blockchains:m,tokens:h});return{quote:b,swap:q,error:null,warnings:_}})}catch(x){return Ai(x)}},"fetch"),cancelFetch:C}}i(il,"useConfirmSwap");var uw=iw("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Af}`]:{width:"$48",height:"$48"}}),mw=ll({flexGrow:1,paddingRight:"$10"}),dw=ll({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),fw=ll({display:"flex",justifyContent:"space-between",alignItems:"center"});function Nf(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=O(),s=pw(),[l,c]=Hn(""),u=!n,[p,m]=Hn(!1),[h,d]=Hn(!1),{isActiveTab:f}=ne(),g=S().getDisabledLiquiditySources(),C=cw(g),{manager:k}=ow(),{fetch:y,loading:T,cancelFetch:v}=il(),[E,B]=Hn({swap:null,error:null,warnings:null}),[N,x]=Hn(!1),w=i(async({selectedWallets:L,customDestination:K})=>{let ae=await y?.({selectedWallets:L,customDestination:K});return B(ae),ae},"onConfirmSwap"),b=i(async()=>{if(E.swap&&n)try{await k?.create("swap",{swapDetails:E.swap},{id:E.swap.requestId});let L=`../${F.swaps}/${E.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){c("Error: "+L?.message)}},"addNewSwap"),I=i(async()=>{d(!0),await b(),d(!1)},"onConfirm"),_=i(async()=>{E.warnings?.quote&&Su(E.warnings.quote)&&!a?x(!0):await I()},"onStartConfirmSwap"),M=i(async()=>{B({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(L=>{B(L)}).catch(L=>console.error(L))},"onRefresh");Ni(()=>{!!C.current.length&&!g.length&&M(),C.current=g},[g.length]),Ni(()=>{u&&v()},[u]),Ni(()=>{u&&m(u)},[u]),Ni(()=>{u||y({selectedWallets:o,customDestination:r}).then(L=>B(L)).catch(L=>console.error(L))},[]),lw(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=E.warnings?.quote??null,R=E.error,X=[];if(l&&X.push(Le.createElement(nw,{type:"error",variant:"alarm",title:l})),q||R){let L=`../${F.settings}`;X.push(Le.createElement(_n,{warning:q,error:R,couldChangeSettings:!1,refetchQuote:M,showWarningModal:N,confirmationDisabled:!f,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:async()=>{x(!1),await b()},onChangeSettings:()=>s(L)}))}return Le.createElement(oe,{header:{title:al.t("Confirm Swap"),onWallet:()=>{let L=`../${F.wallets}`;s(L)}},footer:Le.createElement(uw,null,Le.createElement("div",{className:mw()},Le.createElement(rw,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:T||h,disabled:!!E.error||!f,onClick:_},al.t("Start Swap"))),Le.createElement(Af,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:T||h,disabled:!f,onClick:m.bind(null,!0)},Le.createElement(sw,{size:24})))},p&&Le.createElement(cd,{open:p,onClose:()=>m(!1),onCancel:v,loading:T,onCheckBalance:w}),Le.createElement(re,null,Le.createElement("div",{className:fw()},Le.createElement(aw,{variant:"title",size:"small"},al.t("You get")),Le.createElement("div",{className:dw()},Le.createElement(Yr,{onClick:!T&&!p&&!N?M:void 0}))),Le.createElement(sl,{size:"12"}),nm(X.map((L,K)=>({element:L,key:`alert-${K}`})),Le.createElement(sl,{size:10})),X.length>0?Le.createElement(sl,{size:10}):null,Le.createElement(No,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:E.error,loading:T,warning:E.warnings?.quote??null})))}i(Nf,"ConfirmSwapPage");import{i18n as Ht}from"@lingui/core";import{Button as kl,CustomTokensZeroStateDarkIcon as _w,CustomTokensZeroStateIcon as Dw,DeleteIcon as $w,Divider as Xn,IconButton as Fw,MessageBox as Ow,NotFound as Uw,styled as vl}from"@rango-dev/ui";import fe,{useState as Tl}from"react";import{useNavigate as zw}from"react-router-dom";import{CloseIcon as hw,IconButton as yw,SearchIcon as Sw,TextField as Cw}from"@rango-dev/ui";import qn from"react";import{styled as gw}from"@rango-dev/ui";var Bf=gw("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function vt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:c,suffix:u,...p}=t,m=s.length?qn.createElement(yw,{variant:"ghost",onClick:()=>c?.(""),size:"small"},qn.createElement(hw,{color:"gray",size:10})):null;return u&&(m=u),qn.createElement(Cw,{prefix:qn.createElement(Bf,null,qn.createElement(Sw,{color:"black"})),suffix:m,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...l},size:r,value:s,onChange:a,...p})}i(vt,"SearchInput");import{i18n as Cl}from"@lingui/core";import{Button as ww,CustomTokenWarning as bw,darkTheme as Qf,Divider as Qt,ExternalLinkIcon as xw,Image as Ew,ListItem as Iw,NotFound as Aw,PinIcon as Nw,Skeleton as Bo,Typography as Kn,VirtualizedList as Bw}from"@rango-dev/ui";import W,{useState as Ww}from"react";import{useTranslation as Lw}from"react-i18next";import{Divider as Uf,ListItem as vw,Skeleton as Vn}from"@rango-dev/ui";import wt from"react";import{css as ln,darkTheme as cl,ImageContainer as kw,ListItemButton as Tw,styled as Je,Typography as Wf}from"@rango-dev/ui";var pl=ln({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),ul=ln({position:"relative",height:12,width:"30%",maxWidth:"150px"}),ml=ln({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),dl=ln({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${cl} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),fl=ln({}),gl=ln(),Lf=Je("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),hl=Je("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Bi=Je("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${ul}`]:{[`& .${dl}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${fl}`]:{bottom:"-15px"},[`& .${pl}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${ml}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Mf=Je(Tw,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),yl=Je("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),Sl=Je(Wf,{}),Pf=Je("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${gl}`]:{$$color:"$colors$neutral600",[`.${cl} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Gn=Je("div",{display:"flex",alignItems:"end",flexDirection:"column"}),wQ=Je("div",{display:"flex",alignItems:"center"}),_f=Je("div",{position:"relative",[`& ${kw}`]:{borderRadius:"$xm",overflow:"hidden"}}),Df=Je("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),$f=Je(Wf,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),Ff=Je("a",{"& svg:hover":{color:"$colors$info"}}),Of=Je("div",{paddingRight:"$5","& .widget-token-list-item-btn":{width:"100%",overflow:"hidden",height:"60px"},"& .widget-token-list-item-import-btn":{height:"$20",padding:"0 $10","& ._text":{display:"flex",justifyContent:"center",alignItems:"center"},"& ._typography":{[`.${cl} &`]:{color:"$foreground"}}}});function zf(t){return wt.createElement(Bi,null,Array.from(Array(t.size),e=>wt.createElement(vw,{key:e,hasDivider:!0,start:wt.createElement(Vn,{variant:"circular",width:35,height:35}),end:wt.createElement(Gn,null,wt.createElement(Vn,{variant:"text",size:"large",width:70}),wt.createElement(Uf,{size:4}),wt.createElement(Vn,{variant:"text",size:"medium",width:50})),title:wt.createElement("div",null,wt.createElement(Vn,{variant:"text",size:"large",width:90}),wt.createElement(Uf,{size:4}),wt.createElement(Vn,{variant:"text",size:"medium",width:90}))})))}i(zf,"LoadingTokenList");var Mw=20,Pw=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return W.createElement("div",{className:ul()},o?W.createElement("div",{className:pl()},o):W.createElement(hl,{className:ml()},W.createElement(Kn,{variant:"title",size:"xmedium"},r.symbol),W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(yl,{css:a},W.createElement(Sl,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&W.createElement("div",{className:`${dl()} ${!o&&fl()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",W.createElement(Qt,{size:4,direction:"horizontal"}),W.createElement(Ff,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:c=>c.stopPropagation()},W.createElement(xw,{size:12}))))},"renderDesc");function jn(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:l,showWarning:c=!0}=t,u=S().fetchStatus,p=S().blockchains(),{getBalanceFor:m,fetchingWallets:h}=S(),{isTokenPinned:d}=S(),{setFromToken:f,setToToken:g}=O(),{t:C}=Lw(),k=Oe(),[y,T]=Ww(null),v=i(()=>{l==="source"?f({token:y,meta:{blockchains:p}}):g({token:y,meta:{blockchains:p}})},"updateToken"),E=i(()=>{v(),k()},"handleImportToken"),B=i(w=>{if(w.customToken){let{customToken:I,..._}=w;return W.createElement(ww,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),T({..._,warning:!0})},"handleClick")},W.createElement(Kn,{variant:"body",size:"xsmall",color:"background"},C("import")))}let b=Er(m(w));return s?s(w):h?W.createElement(Gn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})):b&&W.createElement(Pf,null,W.createElement($f,{variant:"title",size:"small"},b.amount),W.createElement("div",null),b.usdValue&&W.createElement(Kn,{variant:"body",className:gl(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),N=i(()=>W.createElement(Bw,{itemContent:w=>{let b=e[w];if(b==="skeleton")return W.createElement(Iw,{hasDivider:!0,start:W.createElement(Bo,{variant:"circular",width:35,height:35}),end:W.createElement(Gn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})),title:W.createElement("div",null,W.createElement(Bo,{variant:"text",size:"large",width:90}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:90}))});let I=b.address||"",_=p.find(L=>L.name===b.blockchain);if(!_)return null;let M=us(_.color,"main"),q={$$color:M.main150,[`.${Qf} &`]:{$$color:M.main750},backgroundColor:"$$color"},R={$$color:M.main750,[`.${Qf} &`]:{$$color:M.main150},color:"$$color"},X=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick");return W.createElement(Of,null,W.createElement(Mf,{"tab-index":w,key:`${b.symbol}${b.address}`,id:`${b.symbol}${b.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b.customToken,onClick:X,start:W.createElement(_f,null,W.createElement(Ew,{src:b.image===""?yr:b.image,size:30}),t.type!=="custom-token"&&d(b,t.type)&&W.createElement(Df,null,W.createElement(Nw,{size:12,color:"gray"}))),title:_?.type==="COSMOS"||b.name||!b.name&&!I?W.createElement(hl,null,W.createElement(Kn,{variant:"title",size:"xmedium"},b.symbol),W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(yl,{css:q},W.createElement(Sl,{variant:"body",size:"xsmall",css:R},b.blockchain)),c&&b.warning&&W.createElement(W.Fragment,null,W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(bw,{container:A()}))):void 0,description:typeof b!="string"&&_?.info&&I&&_.type!=="COSMOS"?Pw({address:I,token:b,customCssForTag:q,customCssForTagTitle:R,name:b.name,url:_.info.addressUrl.split("{wallet}").join(I)}):b.name||void 0,end:B(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),x=y?uo(y?.blockchain,p):null;return W.createElement(W.Fragment,null,a&&W.createElement(W.Fragment,null,W.createElement(Kn,{variant:"label",size:"large"},Cl.t("Select Token")),W.createElement(Qt,{size:4})),W.createElement(Lf,null,W.createElement(Qt,{size:4}),u==="loading"&&W.createElement(zf,{size:Mw}),u==="success"&&(e.length?W.createElement(W.Fragment,null,W.createElement(Nn,{token:y,address:y?.address??"",blockchain:x??void 0,onImport:E,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),W.createElement(Bi,{as:"ul"},N())):!!o&&W.createElement(Aw,{title:Cl.t("No results found"),description:Cl.t("Try using different keywords")}))))}i(jn,"TokenList");var Qw=vl("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Hw=vl("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),qw=vl(Fw,{"&:hover":{"& svg":{color:"$secondary550"}}});function Hf(){let[t,e]=Tl(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=O(),{mode:c}=Zo({}),u=zw(),[p,m]=Tl(!1),[h,d]=Tl(),f=i(y=>{let T=y.target.value;e(T)},"handleSearch"),g=c==="dark",C=n.filter(y=>et(y.symbol,t)||et(y.address||"",t)||et(y.name||"",t)),k=i(()=>{if(h){let y=a?ut(a):null,T=r?ut(r):null,v=ut(h);y===v?l({token:null}):T===v&&s({token:null}),o(h)}m(!1)},"handleDeleteCustomToken");return fe.createElement(oe,{header:{title:Ht.t("Custom Tokens")}},fe.createElement(re,null,fe.createElement(Qw,null,n.length?fe.createElement(fe.Fragment,null,fe.createElement(vt,{value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Ht.t("Search Token"),onChange:f}),fe.createElement(Xn,{size:16}),fe.createElement(jn,{list:C,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>fe.createElement(qw,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),d(y)}},fe.createElement($w,{size:12,color:"gray"}))})):fe.createElement(Hw,null,fe.createElement(Uw,{icon:g?fe.createElement(_w,{size:200}):fe.createElement(Dw,{size:200}),title:Ht.t("No custom tokens"),description:Ht.t("press the button to add your custom token")})),fe.createElement(Xn,{size:20}),fe.createElement(kl,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>u(F.addCustomTokens)},Ht.t("Add Custom Token"))),fe.createElement(J,{open:p,dismissible:!0,onClose:()=>m(!1),container:A()},fe.createElement(Ow,{title:Ht.t("Delete Custom Token"),type:"error",description:Ht.t("Are you sure you want to Delete this Token?")},fe.createElement(Xn,{size:40}),fe.createElement(Xn,{size:10}),fe.createElement(kl,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},Ht.t("Yes, Delete it")),fe.createElement(Xn,{size:12}),fe.createElement(kl,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},Ht.t("No, Continue"))))))}i(Hf,"CustomTokensPage");import{i18n as qe}from"@lingui/core";import{useManager as pb}from"@rango-dev/queue-manager-react";import{Button as Nl,darkTheme as ub,Divider as Lo,MessageBox as mb,NotFound as db,styled as Bl,Typography as Mi}from"@rango-dev/ui";import{TransactionStatus as Jn}from"rango-types";import ie,{useMemo as lg,useState as Pi}from"react";import{useNavigate as fb}from"react-router-dom";import{FilterIcon as Zw,Popover as Jw}from"@rango-dev/ui";import Wo from"react";import{css as Gw,darkTheme as Wi,IconButton as Vw,styled as Yn}from"@rango-dev/ui";var wl=Yn("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${Wi} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),qf=Yn(Vw,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Wi} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Wi} &`]:{backgroundColor:"$neutral"},[`& ${wl}::before`]:{backgroundColor:"$secondary100",[`.${Wi} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Gf=Yn("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Vf=Yn("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Kf=Gw({display:"flex",justifyContent:"space-between",alignItems:"center"}),jf=Yn("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Xf}from"@lingui/core";import{Button as Kw,Divider as Yf,ListItemButton as jw,Radio as Xw,RadioRoot as Yw,Typography as Zf}from"@rango-dev/ui";import it from"react";function Jf(t){let{filterBy:e,onClickItem:o}=t;return it.createElement(Vf,null,it.createElement("div",{className:Kf()},it.createElement(Zf,{size:"small",variant:"body"},Xf.t("Status")),it.createElement(Kw,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Xf.t("Reset"))),it.createElement(Yf,{size:10}),it.createElement(Yw,{value:e},it.createElement(jf,null,t.list.map((n,r)=>it.createElement(jw,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:it.createElement(it.Fragment,null,it.createElement(Yf,{direction:"horizontal",size:4}),it.createElement(Zf,{size:"medium",variant:"body"},n.title)),start:it.createElement(Xw,{value:n.id}),onClick:o})))))}i(Jf,"FilterSelectorContent");function bl(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Wo.createElement("div",null,Wo.createElement(Jw,{open:a,align:"end",onOpenChange:o,container:A(),content:Wo.createElement(Jf,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Wo.createElement(qf,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Wo.createElement(wl,{isSelect:!!n},Wo.createElement(Zw,{size:16,color:"black"}),!!n&&Wo.createElement(Gf,null)))))}i(bl,"FilterSelector");import{i18n as tb}from"@lingui/core";import{getCurrentStep as ob}from"@rango-dev/queue-manager-rango-preset";import{Divider as ng,GroupedVirtualizedList as nb,Skeleton as rb,SwapListItem as rg,Typography as ib}from"@rango-dev/ui";import He,{useCallback as ig,useEffect as ab,useRef as sb,useState as lb}from"react";function Rf(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(Rf,"calculateGroupsSoFar");import{css as Rw,darkTheme as eb,styled as Zn}from"@rango-dev/ui";var xl=Rw(),eg=Zn("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),El=Zn("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${xl}`]:{$$color:"$colors$neutral600",[`.${eb} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Il=Zn("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),tg=Zn("div",{gap:"$10",display:"flex",flexDirection:"column"}),og=Zn("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var cb=10;function Al(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=lb([]),l=sb(0),{swaps:c,groupCounts:u,groups:p}=n(e),m=ig(Rf,[]),h=ig(()=>{let d=e.length-l.current;d&&(l.current+=Math.min(d,cb),s(m(u,l.current)))},[e.length]);if(ab(()=>{r||h()},[r,h]),r){let d=[1,2];return He.createElement(He.Fragment,null,[d,d].map((g,C)=>He.createElement(El,{key:C},He.createElement(Il,null,He.createElement(rb,{variant:"text",width:60,size:"small"}),He.createElement(ng,{size:16})),He.createElement(ng,{size:4}),He.createElement(tg,null,g.map((y,T)=>He.createElement(rg,{isLoading:!0,key:T}))))))}return He.createElement(nb,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:d=>He.createElement(El,null,He.createElement(Il,null,He.createElement(ib,{variant:"label",size:"medium",className:xl()},p[d]))),itemContent:(d,f)=>{let g=c[d],C=ob(g);if(!g)return null;let k=g.steps[0],y=g.steps[g.steps.length-1];return He.createElement(eg,{key:g.requestId},He.createElement(rg,{requestId:g.requestId,creationTime:g.creationTime,status:g.status,onClick:o,currentStep:C,tooltipContainer:A(),onlyShowTime:p[f]===tb.t("Today"),swapTokenData:{from:{token:{image:k.fromLogo,displayName:k.fromSymbol},blockchain:{image:k.fromBlockchainLogo||""},amount:P(g.inputAmount,6,6),realAmount:g.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:P(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(Al,"HistoryGroupedList");import{i18n as Li}from"@lingui/core";import ag from"dayjs";var sg=i(t=>{let e=new Map([["today",{title:Li.t("Today"),swaps:[]}],["week",{title:Li.t("This week"),swaps:[]}],["month",{title:Li.t("This month"),swaps:[]}],["year",{title:Li.t("This year"),swaps:[]}]]);function o(c,u){e.has(c)||e.set(c,{title:c,swaps:[]}),e.get(c)?.swaps.push(u)}i(o,"addYearsToOutput");let n=ag();t.forEach(c=>{let u=Number(c.creationTime),p=ag(u);if(n.isSame(p,"day"))e.get("today")?.swaps.push(c);else if(n.isSame(p,"week"))e.get("week")?.swaps.push(c);else if(n.isSame(p,"month"))e.get("month")?.swaps.push(c);else if(n.isSame(p,"year"))e.get("year")?.swaps.push(c);else{let m=new Date(u).getFullYear().toString();o(m,c)}});let r=Array.from(e.values()).filter(c=>c.swaps.length>0),a=r.flatMap(c=>c.swaps),s=r.map(c=>c.swaps.length),l=r.map(c=>c.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var gb=Bl("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),hb=Bl("div",{display:"flex",justifyContent:"center",alignItems:"center"}),yb=Bl("div",{"._typography":{color:"$neutral700",[`.${ub}&`]:{color:"$neutral900"}}}),Sb=[{id:Jn.SUCCESS,title:qe.t("Complete")},{id:Jn.RUNNING,title:qe.t("Running")},{id:Jn.FAILED,title:qe.t("Failed")}],Cb=i((t,e)=>t?.length?t.filter(o=>xt(o.fromBlockchain,e)||xt(o.toBlockchain,e)||xt(o.toSymbol,e)||xt(o.fromSymbol,e)).length:!1,"isStepContainsText");function cg(){let t=fb(),{manager:e,state:o}=pb(),n=gt(e).map(({swap:T})=>T),[r,a]=Pi(""),[s,l]=Pi(!1),c=!o.loadedFromPersistor,[u,p]=Pi(""),[m,h]=Pi(!1),d=i(T=>{let v=T.target.value;a(v)},"handleSearch"),f=lg(()=>!r&&!u?n:n.filter(T=>{let{inputAmount:v,status:E,steps:B,requestId:N}=T;return(!r||xt(v,r)||xt(E,r)||Cb(B,r)||xt(N,r))&&(!u||u===E)}),[n,r,u]),g=!f?.length&&!c,C=i(()=>h(!1),"onCloseModal"),k=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(T){console.log(T)}},"onClear"),y=lg(()=>!n.some(T=>T.status===Jn.SUCCESS||T.status===Jn.FAILED),[n]);return ie.createElement(oe,{header:{title:qe.t("History"),suffix:ie.createElement(Jt,null,ie.createElement(Nl,{id:"widget-history-clear-btn",disabled:y,variant:"ghost",size:"xsmall",onClick:()=>h(!0)},ie.createElement(Mi,{size:"medium",variant:"label",color:"error"},qe.t("Clear"))))}},ie.createElement(re,null,ie.createElement(hb,null,ie.createElement(vt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:qe.t("Search Transaction"),autoFocus:!0,onChange:d,style:{height:36},value:r}),ie.createElement(Lo,{size:10,direction:"horizontal"}),ie.createElement(bl,{filterBy:u,open:s,onOpenChange:T=>l(T),onClickItem:T=>p(T),list:Sb})),ie.createElement(Lo,{size:"16"}),ie.createElement(gb,null,g&&ie.createElement(og,null,ie.createElement(Lo,{size:32}),ie.createElement(db,{title:r?qe.t("No results found"):qe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?qe.t("Try using different keywords"):qe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!g&&ie.createElement(Al,{list:f,onSwapClick:t,groupBy:sg,isLoading:c}))),ie.createElement(J,{open:m,onClose:C,container:A()},ie.createElement(Lo,{size:20}),ie.createElement(mb,{type:"warning",title:qe.t("Clear Transaction History"),description:ie.createElement(yb,null,ie.createElement(Mi,{variant:"body",size:"medium"},qe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ie.createElement(Lo,{size:"24"}),ie.createElement(Mi,{variant:"body",size:"small"},qe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ie.createElement(Lo,{size:30}),ie.createElement(Nl,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},qe.t("Yes, Clear the history")),ie.createElement(Lo,{size:10}),ie.createElement(Nl,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:C},ie.createElement(Mi,{variant:"title",size:"medium",color:"primary"},qe.t("No, Cancel")))))}i(cg,"HistoryPage");import{i18n as Hb}from"@lingui/core";import{Button as qb,Divider as Bg,styled as Gb,WarningIcon as Vb}from"@rango-dev/ui";import Kb from"bignumber.js";import Ge,{useEffect as Wg,useState as Lg}from"react";import{useNavigate as jb}from"react-router-dom";import{i18n as ug}from"@lingui/core";import{Alert as Tb,Divider as Wl,NoRouteIcon as vb,Typography as wb}from"@rango-dev/ui";import Mo from"react";import{styled as kb}from"@rango-dev/ui";var pg=kb("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Ll(){let{fromToken:t,toToken:e}=O();return!!t&&!!e&&Mt(t,e)?Mo.createElement(pg,null,Mo.createElement(Wl,{size:10}),Mo.createElement(vb,{size:24,color:"gray"}),Mo.createElement(Wl,{size:4}),Mo.createElement(wb,{variant:"title",size:"small"},ug.t("No Routes Found")),Mo.createElement(Wl,{size:4}),Mo.createElement(Tb,{title:ug.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Ll,"SameTokensWarning");import{i18n as Nb}from"@lingui/core";import{Header as Bb}from"@rango-dev/ui";import ro,{useEffect as Wb,useState as Lb}from"react";import{i18n as xb}from"@lingui/core";import{Divider as Pl,FullExpandedQuote as Eb,Typography as Ib}from"@rango-dev/ui";import Ce from"react";import{styled as Ml}from"@rango-dev/ui";var mg=Ml("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),dg=Ml("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),fg=Ml("div",{width:"146px"});import{i18n as Rn}from"@lingui/core";import{Select as bb}from"@rango-dev/ui";import gg from"react";function _i(t){let{updateQuotePartialState:e,sortStrategy:o}=O(),n=[{value:"SMART",label:Rn.t("Smart Routing")},{value:"FEE",label:Rn.t("Lowest Fee")},{value:"SPEED",label:Rn.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Rn.t("Maximum Return")},{value:"PRICE",label:Rn.t("Maximum Output")}];return gg.createElement(fg,null,gg.createElement(bb,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(_i,"SelectStrategy");var hg=3;function er(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:c,quotes:u,updateQuotePartialState:p,fromToken:m,toToken:h,sortStrategy:d,error:f}=O(),{slippage:g,customSlippage:C}=S(),{findToken:k}=S(),y=l||A(),T=!!u&&u.results.length,v=C??g,E=i(x=>{if(!m||!h||!u)return null;let w={requestAmount:u.requestAmount,validationStatus:null,...x};return Ko({currentQuote:w,userSlippage:v,findToken:k})},"getQuoteWarning"),B=f?.type===0||f?.type===1,N=u?.results?zr(d,u?.results):[];return Ce.createElement(Ce.Fragment,null,a&&Ce.createElement(Ce.Fragment,null,Ce.createElement(dg,null,Ce.createElement(Ib,{size:"xmedium",variant:"title"},xb.t("Sort by")),Ce.createElement(_i,{container:y})),Ce.createElement(Pl,{size:"10"})),e&&Array.from({length:hg},(x,w)=>Ce.createElement(Ce.Fragment,{key:w},s?Ce.createElement(Eb,{loading:!0}):Ce.createElement(Qn,{tagHidden:!1,type:"list-item",expanded:!1}),w!==hg-1&&Ce.createElement(Pl,{size:16}))),!e&&Ce.createElement(Ce.Fragment,null,T?N.map((x,w)=>{let b=E(x),I=rl(x.swaps),_=N.length-1===w;return Ce.createElement(Ce.Fragment,{key:x.requestId},Ce.createElement(No,{showModalFee:r,container:y,selected:c?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:u.requestAmount,validationStatus:null},loading:e,error:I?.options||null,warning:b,fullExpandedMode:s,onClick:M=>{I||p("warning",b),p("error",I?.options||null),o(M)},type:"list-item"}),!_&&Ce.createElement(Pl,{size:16}))}):B&&Ce.createElement(mg,null,Ce.createElement(Mn,{size:s?"large":"small",error:f,fetch:n}))))}i(er,"Quotes");import{darkTheme as Ab,styled as yg}from"@rango-dev/ui";var Sg=yg("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${Ab} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Cg=yg("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var Mb=100;function _l(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=Lb(!1),c=s?"":"is-hidden",{config:u}=S(),p=u?.variant==="full-expanded",m=fo();return Wb(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},Mb):(l(!1),h&&clearTimeout(h)),()=>{h&&clearTimeout(h)}},[a]),ro.createElement(Sg,{expandMode:u?.variant==="full-expanded"?"full":"default",className:`${c} ${ei()}`,id:$e.EXPANDED_BOX_ID},ro.createElement(Bb,{title:Nb.t("Routes"),suffix:ro.createElement(ro.Fragment,null,ro.createElement(_i,{container:m}),ro.createElement(xo,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),ro.createElement(Cg,null,ro.createElement(er,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:fo(),onClickOnQuote:n,fullExpandedMode:p})))}i(_l,"ExpandedQuotes");import{i18n as Eg}from"@lingui/core";import{SwapInput as Ig}from"@rango-dev/ui";import $b from"bignumber.js";import tr from"react";import{ReverseIcon as Db}from"@rango-dev/ui";import $l from"react";import{keyframes as Pb,styled as kg}from"@rango-dev/ui";var Dl=450,_b=Pb({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),Tg=kg("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),vg=kg("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${_b} ${Dl}ms ease-in-out forwards`}},"&:hover":{color:"$secondary500",transform:"translateY(1px) scale(1.04)",boxShadow:"1px 1px 1px 1px rgba(0, 0, 0, 0.05)"}});function Fl(){let t=O.use.switchFromAndTo();return $l.createElement(Tg,null,$l.createElement(vg,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Dl),t()}},$l.createElement(Db,{size:12})))}i(Fl,"SwitchFromAndToButton");import{styled as wg}from"@rango-dev/ui";var bg=wg("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),xg=wg("div",{position:"relative"});function Ol(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:c,setInputAmount:u,inputAmount:p,inputUsdValue:m,outputAmount:h,outputUsdValue:d,selectedQuote:f}=O(),{connectedWallets:g,getBalanceFor:C}=S(),k=a?C(a):null,y=Er(k)?.amount??"0",T=k?new $b(k.amount).shiftedBy(-k.decimals):le,v=!!s&&sp(g,s.name),E=!Xa(f,p,m),B=!Xa(f,p,d),N=!m||!d||!d.gt(0)?null:Dt(m.toString(),d.toString());return tr.createElement(bg,null,tr.createElement(xg,null,tr.createElement(Ig,{label:Eg.t("From"),mode:"From",onInputChange:u,balance:y,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:p,usdValue:E?void 0:P(m,4,4),realUsdValue:E?void 0:m?.toString(),error:E?ee().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:v,tooltipContainer:A(),onSelectMaxBalance:()=>{let x=P(T,k?.decimals),w=k?.amount?x.split(",").join(""):"";u(w)},anyWalletConnected:g.length>0}),tr.createElement(Fl,null)),tr.createElement(Ig,{sharpBottomStyle:!r&&(!!f||e),label:Eg.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:c?.displayName||"",image:c?.logo},token:{displayName:l?.symbol||"",image:l?.image,securityWarning:!!l?.warning},percentageChange:P(Dt(m,d),2,2),warningLevel:$t(N??0),price:{value:P(h,6,6),usdValue:B?void 0:P(d,4,4),realValue:h?.toString(),realUsdValue:B?void 0:d?.toString(),error:B?ee().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:A()}))}i(Ol,"Inputs");import{useCallback as Fb,useEffect as Ob,useRef as Ub,useState as zb}from"react";function Ag(){let{fetch:t,loading:e,cancelFetch:o}=Ei({request:async(n,r)=>await tt().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Ag,"useFetchAllQuotes");var Qb=600;function Di({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Ag(),{excludeLiquiditySources:n,routing:r}=S().config,{connectedWallets:a}=S(),l=a.some(Ie=>Ie.isContractWallet),{fromToken:c,toToken:u,inputAmount:p,inputUsdValue:m,selectedQuote:h,sortStrategy:d,resetQuote:f,error:g,warning:C,setSelectedQuote:k,updateQuotePartialState:y}=O(),{slippage:T,customSlippage:v,affiliatePercent:E,affiliateRef:B,affiliateWallets:N,fetchStatus:x}=S(),w=S().getLiquiditySources(),b=S().getDisabledLiquiditySources(),I=S().excludeLiquiditySources(),{findToken:_}=S(),[M,q]=zb(!0),R=Ub(p),X=v??T,K=!c||!u||Mt(c,u)||!gn(p),ae=i(Ie=>{q(Ie)},"resetState"),Q=i(Ie=>{let{fromToken:Ke,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:_e}=Ie;if(M||ae(!0),!K&&Ke&&se){f();let je=Lu({fromToken:Ke,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,wallets:a,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:_e,contractCall:l});Uo("experimental",r)&&(je.experimental=!0),Uo("avoidNativeFee",r)&&(je.avoidNativeFee=!0),Uo("enableCentralizedSwappers",r)&&(je.enableCentralizedSwappers=!0),r?.maxLength&&(je.maxLength=r.maxLength),e(je).then(Te=>{let De=zr(d,Te.results),jt=ku(h,De,Te.requestAmount);q(!1),y("quotes",Te),k(jt),Ii({diagnosisMessages:Te.diagnosisMessages,requestId:jt?.requestId||"",swaps:jt?.swaps});let po=jt&&Ko({currentQuote:jt,userSlippage:X,findToken:_});y("warning",po)}).catch(Te=>{let{error:De}=Ai(Te);(De?.type===0||De?.type===1)&&f(),De?.type!==2&&(y("error",De),q(!1))})}},"fetch"),de=Fb(kr(Ie=>{Q(Ie)},Qb),[K]);return Ob(()=>{if(!t){q(!1);return}if(x!=="success")return;if(K){q(!1),(h||g||C)&&f();return}if(!gn(p)||m?.eq(0)){ae(!1),o();return}f(),ae(!0);let Ie=Q;return R.current&&R.current!=p&&(Ie=de),R.current=p,Ie({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:I,disabledLiquiditySources:b,slippage:X,affiliateRef:B,affiliatePercent:E,affiliateWallets:N,contractCall:l}),o},[x,p,c?.symbol,c?.address,c?.blockchain,u?.symbol,u?.address,u?.blockchain,K,w?.length,n,b.length,X,B,E,l,JSON.stringify(N)]),{fetch:()=>Q({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:I,disabledLiquiditySources:b,slippage:X,affiliateRef:B,affiliatePercent:E,affiliateWallets:N,contractCall:l}),loading:M}}i(Di,"useSwapInput");function Ng(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};ye.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Ng,"emitPreventableEvent");var Xb=Gb("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),Yb=300;function Mg(){let t=jb(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:c,setSelectedQuote:u,resetQuoteWallets:p,setQuoteWarningsConfirmed:m,updateQuotePartialState:h}=O(),[d,f]=Lg(!1),{isLargeScreen:g,isExtraLargeScreen:C}=Si(),{fetch:k,loading:y}=Di({refetchQuote:a}),{config:T,fetchStatus:v,connectedWallets:E}=S(),{isActiveTab:B}=ne(),[N,x]=Lg(!1),b=Au({fetchMetaStatus:v,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:E.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),I=fp(g,C,T?.variant),_=!!n&&!!e&&!!o&&new Kb(n).gt(0)&&!Ou(e,o),M=_&&v==="success"&&y,X=(!I||I&&c?.results.length)&&(l||s);Wg(()=>{p(),h("refetchQuote",!0)},[]),Wg(()=>{f(_)},[_]);let L=(r||s)&&!N?k:void 0,K=i(Q=>{I&&d?(f(!1),setTimeout(()=>{t(Q)},Yb)):t(Q)},"onHandleNavigation"),ae=i(Q=>{r?.requestId!==Q.requestId&&(x(!1),u(Q))},"onClickOnQuote");return Ge.createElement(Xb,null,Ge.createElement(oe,{height:"auto",footer:Ge.createElement(qb,{id:`widget-swap-${b.action}-btn`,type:"primary",size:"large",disabled:b.disabled||!B,prefix:b.action==="confirm-warning"&&Ge.createElement(Vb,null),fullWidth:!0,onClick:()=>{b.action==="connect-wallet"?Ng({type:"clickConnectWallet"},()=>K(F.wallets)):b.action==="confirm-warning"?x(!0):K(F.confirmSwap)}},b.title),header:{onWallet:()=>{K(F.wallets)},hasBackButton:!1,title:T.title||Hb.t("Swap"),suffix:Ge.createElement(xo,{hidden:I?["refresh"]:void 0,onClickRefresh:L,onClickHistory:()=>K(F.swaps),onClickSettings:()=>{K(F.settings)}})}},Ge.createElement(re,null,Ge.createElement(Ol,{fetchingQuote:M,fetchMetaStatus:v,isExpandable:I,onClickToken:Q=>{K(Q==="from"?F.fromSwap:F.toSwap)}}),Ge.createElement(Bg,{size:"2"}),I?null:Ge.createElement(No,{quote:r,loading:M,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:c&&c.results.length>1?()=>{h("refetchQuote",!1),K(F.routes)}:void 0}),X?Ge.createElement(Ge.Fragment,null,Ge.createElement(Bg,{size:"10"}),Ge.createElement(_n,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:k,showWarningModal:N,confirmationDisabled:!B,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:()=>{x(!1),m(!0),K(F.confirmSwap)},onChangeSettings:()=>K(F.settings)})):null,Ge.createElement(Ll,null))),I?Ge.createElement(_l,{loading:M,onClickOnQuote:ae,fetch:k,onClickRefresh:L,isVisible:d}):null)}i(Mg,"Home");import{i18n as Pg}from"@lingui/core";import{Alert as Zb,Divider as Jb,List as Rb,ListItemButton as ex,Radio as tx,RadioRoot as ox,Typography as nx}from"@rango-dev/ui";import Wt from"react";function io(){let{setLanguage:t,language:e,config:o}=S(),n=Cp,r=o?.language||zo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||zo),resetLanguage:()=>t(null)}}i(io,"useLanguage");function _g(){let{activeLanguage:t,changeLanguage:e,languages:o}=io(),n=Oe(),r=o.map(a=>{let{local:s,label:l,SVGFlag:c}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Wt.createElement(nx,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:Wt.createElement(tx,{value:s}),start:Wt.createElement(c,null)}});return Wt.createElement(oe,{header:{title:Pg.t("Language")}},Wt.createElement(re,null,Wt.createElement(Zb,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Wt.createElement(Jb,{size:"8"}),Wt.createElement(ox,{value:t},Wt.createElement(Rb,{type:Wt.createElement(ex,{title:Pg.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(_g,"LanguagePage");import{i18n as qt}from"@lingui/core";import{Button as lx,Checkbox as cx,Image as px,ListItemButton as ux,NotFound as mx,Typography as dx}from"@rango-dev/ui";import Ve,{useState as fx}from"react";import{Checkbox as ax,Skeleton as $g}from"@rango-dev/ui";import nr from"react";import{styled as Ul}from"@rango-dev/ui";var or=Ul("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),zl=Ul("div",{width:80,display:"flex",justifyContent:"flex-end"}),Ql=Ul("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as rx,styled as ix}from"@rango-dev/ui";var Dg=ix(rx,{height:61});var sx=30;function Hl(){return nr.createElement(or,null,Array.from(Array(sx),(t,e)=>nr.createElement(Dg,{hasDivider:!0,key:e,start:nr.createElement($g,{variant:"circular",width:35,height:35}),title:nr.createElement($g,{variant:"text",size:"large",width:90}),end:nr.createElement(ax,{checked:!1})})))}i(Hl,"LoadingLiquiditySourceList");function ql({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[r,a]=fx(""),s=S().toggleLiquiditySource,l=S().isInCampaignMode(),c=Nr(o,n),u={Exchanges:qt.t("Exchanges"),Bridges:qt.t("Bridges")},p=[];t==="Exchanges"&&p.push("DEX"),t==="Bridges"&&p.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=c.filter(k=>p.includes(k.type)),h=m.length===m.filter(k=>k.selected).length,d=i(()=>{m.forEach(k=>{h?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),f=m.map(k=>{let{selected:y,groupTitle:T,logo:v,id:E,...B}=k;return{id:`widget-setting-liquidity-source-${E.toLowerCase().replace(/\s+/g,"-")}-item-btn`,start:Ve.createElement(px,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(T)},end:Ve.createElement(cx,{checked:y,disabled:l}),title:Ve.createElement(dx,{variant:"title",size:"xmedium"},qt.t(T)),selected:y,groupTitle:T,logo:v,...B}}),g=i(k=>{let y=k.target.value;a(y)},"handleSearch"),C=f;return r&&(C=f.filter(k=>xt(k.groupTitle,r))),Ve.createElement(oe,{header:{title:qt.t(t),suffix:Ve.createElement(zl,null,Ve.createElement(lx,{id:`widget-liquidity-source-${h?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:d},h?qt.t("Deselect all"):qt.t("Select all")))}},Ve.createElement(re,{view:!0},Ve.createElement(vt,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:qt.t("Search {sourceType}",{sourceType:u[t]}),onChange:g}),e==="loading"&&Ve.createElement(Hl,null),!C.length&&r?Ve.createElement(Ql,null,Ve.createElement(mx,{title:qt.t("No results found"),description:qt.t("Try using different keywords")})):e==="success"&&Ve.createElement(or,{disabled:l},C.map(k=>{let{groupTitle:y,...T}=k;return Ve.createElement(Ve.Fragment,{key:k.id},Ve.createElement(ux,{style:{height:"61px"},...T,selected:!1,hasDivider:!0}))}))))}i(ql,"LiquiditySourcePage");import{i18n as gx}from"@lingui/core";import $i from"react";import{useNavigate as hx}from"react-router-dom";function Fg(){let t=hx(),e=Oe(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=O(),{fetch:l,loading:c}=Di({refetchQuote:n}),u=i(h=>{r(h),a("refetchQuote",!1),e()},"onClickOnQuote"),p=`../${F.settings}`,m=`../${F.wallets}`;return $i.createElement(oe,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:gx.t("Routes"),suffix:$i.createElement(xo,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(p),a("refetchQuote",!0)}})}},$i.createElement(re,null,$i.createElement(er,{fetch:l,loading:c,onClickOnQuote:u})))}i(Fg,"RoutesPage");import{i18n as Gg}from"@lingui/core";import{Divider as Vg,getCategoriesCount as Ex,SelectableCategoryList as Ix}from"@rango-dev/ui";import Gt,{useState as Kg}from"react";import{useNavigate as Ax}from"react-router-dom";import{i18n as Gl}from"@lingui/core";import{Divider as kx,Image as Tx,ListItemButton as vx,NotFound as wx,Typography as qg}from"@rango-dev/ui";import at,{useEffect as bx,useState as xx}from"react";var Og=i((t,e,o)=>t.filter(n=>Tr(n.type,o)).filter(n=>et(n.name,e)||et(n.displayName,e)),"filterBlockchains");import{ImageContainer as yx,styled as Ug}from"@rango-dev/ui";var zg=Ug("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Fi=Ug(Bn,{padding:0,margin:0,listStyle:"none",[`& ${yx}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as Sx,Skeleton as Qg}from"@rango-dev/ui";import Oi from"react";var Cx=20;function Hg(){return Oi.createElement(Fi,null,Array.from(Array(Cx),t=>Oi.createElement(Sx,{key:t,hasDivider:!0,start:Oi.createElement(Qg,{variant:"circular",width:35,height:35}),title:Oi.createElement(Qg,{variant:"text",size:"large",width:90})})))}i(Hg,"LoadingBlockchainList");function Vl(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,l]=xx(e),{fetchStatus:c}=S();bx(()=>{l([...Og(e,o,r)])},[e,o,r]);let u=i(()=>!s.length&&o?at.createElement(wx,{title:Gl.t("No results found"),description:Gl.t("Try using different keywords")}):at.createElement(Fi,{as:"ul",key:`${r}-${o}`},s.map(p=>at.createElement(vx,{key:`${p.name}-${p.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(p),start:at.createElement(Tx,{src:p.logo,size:30}),title:at.createElement(qg,{variant:"title",size:"medium"},p.displayName),id:p.name}))),"renderList");return at.createElement(at.Fragment,null,a&&at.createElement(at.Fragment,null,at.createElement(qg,{variant:"label",size:"large"},Gl.t("Select Chain")),at.createElement(kx,{size:4})),at.createElement(zg,null,c==="loading"&&at.createElement(Hg,null),c==="success"&&u()))}i(Vl,"BlockchainList");function Ui(t){let{type:e}=t,o=Oe(),[n,r]=Kg(""),[a,s]=Kg("ALL"),l=O.use.setToBlockchain(),c=O.use.setFromBlockchain(),{fetchStatus:u}=S(),p=Ax(),m=S().blockchains({type:e}),h=Ex(m),d=!t.hideCategory&&h!==1;return Gt.createElement(oe,{header:{title:Gg.t("Select Chain")}},Gt.createElement(re,{view:!0},d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(Ix,{setCategory:s,category:a,blockchains:m,isLoading:u==="loading"}),Gt.createElement(Vg,{size:24})),Gt.createElement(vt,{value:n,autoFocus:!0,placeholder:Gg.t("Search Chain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),Gt.createElement(Vg,{size:16}),Gt.createElement(Vl,{list:m,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:f=>{e==="custom-token"?p(`..?blockchain=${f.name}`,{replace:!0}):(e==="source"?c(f):l(f),o())}})))}i(Ui,"SelectBlockchainPage");import{i18n as Hi}from"@lingui/core";import{Divider as eh,Spinner as zx}from"@rango-dev/ui";import ao,{useEffect as Qx,useState as Hx}from"react";import{useNavigate as qx}from"react-router-dom";import{i18n as Xl}from"@lingui/core";import{BlockchainsChip as zi,Divider as Zg,Image as Jg,Skeleton as Mx,Tooltip as Px,Typography as Yl}from"@rango-dev/ui";import Me from"react";import{useEffect as Wx}from"react";var jg=["ETH","COSMOS","OSMOSIS"];function Kl(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Nx),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let c=0;c<=l;c++){let u=n[c];s=s.filter(p=>u.name!==p)}}n.sort(Bx(s)),r=n.splice(a)}return{list:n,more:r}}i(Kl,"prepare");function Nx(t,e){let o=jg,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(Nx,"sortByMostUsedBlockchains");function Bx(t){return i(function(o,n){let r=t.findIndex(c=>c===o.name),a=t.findIndex(c=>c===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(Bx,"generateSortByPreferredBlockchainsFor");function Xg(t,e){return!!e.list.find(o=>o.name===t)}i(Xg,"isInVisibleList");function jl(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();Wx(()=>{if(e?.selected){let a=Kl(t,o,e);Xg(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Kl(t,o,e);return{list:r.list,more:r.more,history:[]}}i(jl,"usePrepareBlockchainList");import{styled as Lx}from"@rango-dev/ui";var Yg=Lx("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var _x=12;function Zl(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,s=jl(e,{limit:10,selected:n?.name}),{fetchStatus:l}=S(),c=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),p=s.more.length>0,m=s.more.length===1,h=!m&&p;return Me.createElement(Me.Fragment,null,Me.createElement(Zg,{size:12}),Me.createElement(Yl,{variant:"label",size:"large"},Xl.t("Select Chain")),Me.createElement(Zg,{size:12}),Me.createElement(Yg,null,l==="loading"&&Array.from(Array(_x),d=>Me.createElement(Mx,{key:d,variant:"rounded",height:50})),l==="success"&&Me.createElement(Me.Fragment,null,Me.createElement(zi,{selected:!n,onClick:()=>{o==="from"?u():c()}},Me.createElement(Yl,{variant:"body",size:"xsmall",color:"secondary500"},Xl.t("All"))),s.list.map(d=>Me.createElement(Px,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:A()},Me.createElement(zi,{key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},Me.createElement(Jg,{src:d.logo,size:30})))),m?Me.createElement(zi,{key:s.more[0].name,selected:!!n&&n.name===s.more[0].name,onClick:()=>r(s.more[0])},Me.createElement(Jg,{src:s.more[0].logo,size:30})):null,h?Me.createElement(zi,{onClick:a,key:"more-blockchains"},Me.createElement(Yl,{variant:"body",size:"xsmall",color:"secondary500"},Xl._("More +{count}",{count:s.more.length}))):null)))}i(Zl,"BlockchainsSection");import{useCallback as $x,useRef as Fx,useState as Jl}from"react";function Rl(){let t=S().blockchains(),e=Fx(null),{customTokens:o}=S(),[n,r]=Jl(!1),[a,s]=Jl([]),[l,c]=Jl(null),u=i(async(h,d)=>{c(null),r(!0),s([]);try{let f=await tt().searchCustomTokens({query:h,blockchain:d},{signal:e.current?.signal}),g=new Set(o().map(y=>_t(y))),C=new Set(t.map(y=>y.name)),k=f.tokens.filter(y=>C.has(y.blockchain)&&!g.has(_t(y)));s(k),r(!1)}catch(f){c(f instanceof Error?f.message:"something went wrong"),s([]),f?.name!=="CanceledError"&&r(!1)}},"fetch"),p=$x(kr((h,d)=>{e.current?.signal.aborted||u(h,d)},600),[t.length]);return{fetch:(h,d)=>{e.current=new AbortController,s([]),r(!0),p(h,d)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:l}}i(Rl,"useSearchCustomTokens");function Qi(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(Qi,"shouldSearchForCustomTokens");function Rg(t,e,o,n,r){let a=[...t];return Qi(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(Rg,"prepareTokensList");function qi(t){let{type:e}=t,o=qx(),n=Oe(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:c,setToBlockchain:u}=O(),{getBalanceFor:p}=S(),{fetch:m,loading:h,tokens:d,cancel:f}=Rl(),[g,C]=Hx(""),k=e==="source"?r:a,y=k?.name??"",T=S().blockchains({type:e}),v=S().tokens({type:e,blockchain:y,searchFor:g,getBalanceFor:p}),E=Rg(v,d,g,h,k?.name),B=i(w=>{e==="source"?c(w):u(w)},"updateBlockchain"),N=i(w=>{e==="source"?s({token:w,meta:{blockchains:T}}):l({token:w,meta:{blockchains:T}})},"updateToken"),x={source:Hi.t("Source"),destination:Hi.t("Destination")};return Qx(()=>(Qi(v,g,k?.name)&&m(g,k?.name??void 0),()=>{f()}),[v.length,g,k?.name]),ao.createElement(oe,{header:{title:Hi.t("Swap {type}",{type:x[e]})}},ao.createElement(re,null,ao.createElement(Zl,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:w=>{B(w)}}),ao.createElement(eh,{size:24}),ao.createElement(vt,{value:g,autoFocus:!0,placeholder:Hi.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>C(""),onChange:w=>C(w.target.value),suffix:Qi(v,g,k?.name)&&h?ao.createElement(zx,{size:12,color:"secondary"}):void 0}),ao.createElement(eh,{size:16}),ao.createElement(jn,{list:E,selectedBlockchain:y,searchedFor:g,type:e,onChange:w=>{N(w);let b=T.find(I=>w.blockchain===I.name);b&&B(b),n()}})))}i(qi,"SelectSwapItemsPage");import{i18n as oc}from"@lingui/core";import{Alert as hE,Button as yE,styled as SE}from"@rango-dev/ui";import Po from"react";import{useInRouterContext as CE,useSearchParams as kE}from"react-router-dom";import{i18n as ah}from"@lingui/core";import{Divider as sh,InfoIcon as jx,SlippageIcon as Xx,TextField as Yx,Tooltip as Zx,Typography as lh}from"@rango-dev/ui";import st from"react";import{Chip as Gx,styled as rr,TextField as Vx}from"@rango-dev/ui";var th=rr("div",{paddingTop:"$5",padding:"$10 $5"}),oh=rr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${Vx}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),nh=rr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Gi=rr("div",{maxWidth:"280px",padding:"$10"}),rh=rr(Gx,{width:"61px",flexShrink:0});import{i18n as ec}from"@lingui/core";import{Typography as Kx}from"@rango-dev/ui";import ir from"react";function ih(){return ir.createElement(Gi,null,ir.createElement(Kx,{variant:"label",size:"medium",color:"neutral700"},ec.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),ir.createElement("br",null),ir.createElement("br",null),ir.createElement("b",null,ec.t("Warning")),":\xA0",ec.t("This setting is applied to each step (e.g. 1Inch, Thorchain, etc.), meaning only that specific step will be reverted, not the entire route.")))}i(ih,"SlippageTooltipContent");function tc(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S();return st.createElement(th,null,st.createElement(nh,null,st.createElement(Xx,{size:16,color:"gray"}),st.createElement(sh,{direction:"horizontal",size:4}),st.createElement(lh,{variant:"title",size:"xmedium"},ah.t("Slippage tolerance per swap")),st.createElement(sh,{direction:"horizontal",size:4}),st.createElement(Zx,{container:A(),side:"top",sideOffset:4,content:st.createElement(ih,null)},st.createElement(jx,{color:"gray"}))),st.createElement(oh,null,kp.map((r,a)=>{let s=`slippage-${a}`;return st.createElement(rh,{key:s,onClick:()=>{o&&n(null),e(r)},selected:!o&&r===t,label:`${r.toString()}%`})}),st.createElement(Yx,{type:"number",min:"0.01",max:"30",step:"0.01",fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:r=>{let a=r.target.value,s=parseFloat(a);s>=bp&&s<=wp?n(s):n(null)},suffix:o&&st.createElement(lh,{variant:"body",size:"small"},"%"),placeholder:ah.t("Custom")})))}i(tc,"Slippage");import{i18n as ht}from"@lingui/core";import{AutoThemeIcon as ch,BridgesIcon as Jx,ChevronRightIcon as Vi,DarkModeIcon as ph,Divider as ar,ExchangeIcon as Rx,InfinityIcon as eE,InfoIcon as tE,LanguageIcon as oE,LightModeIcon as uh,List as nE,ListItem as rE,ListItemButton as iE,Skeleton as aE,styled as sE,Switch as lE,Tabs as cE,TargetIcon as pE,Tooltip as uE,Typography as Re}from"@rango-dev/ui";import $ from"react";import{useNavigate as mE}from"react-router-dom";var dE=sE("div",{width:"202px",height:"$40"}),fE=[{id:"light",icon:$.createElement(uh,{color:"black",size:24}),tooltip:$.createElement(Re,{size:"xsmall",variant:"body"},ht.t("Light"))},{id:"dark",icon:$.createElement(ph,{color:"black",size:24}),tooltip:$.createElement(Re,{size:"xsmall",variant:"body"},ht.t("Dark"))},{id:"auto",icon:$.createElement(ch,{color:"black",size:24}),tooltip:$.createElement(Re,{size:"xsmall",variant:"body"},ht.t("Auto"))}],gE=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return $.createElement(ch,{...e});case"dark":return $.createElement(ph,{...e});default:return $.createElement(uh,{...e})}},"getThemeIcon");function mh(){let t=mE(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:r,languages:a}=io(),s=a.find(L=>L.local===r)?.label,l=S().fetchStatus,c=S().swappers(),u=S().getDisabledLiquiditySources(),{config:{features:p}}=S(),m=S().customTokens(),h=Xe("theme",p),d=Xe("liquiditySource",p),f=Xe("language",p),g=Xe("customTokens",p),C=S().infiniteApprove,k=S().toggleInfiniteApprove,y=Nr(c,u),T=y.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=T.length,E=T.filter(L=>L.selected).length,B=y.filter(L=>L.type==="DEX"),N=B.length,x=B.filter(L=>L.selected).length,w=i((L,K)=>{switch(l){case"loading":return $.createElement(aE,{variant:"text",size:"medium",width:50});case"failed":return $.createElement(Re,{variant:"body",size:"medium",color:"$error500"},ht.t("Loading failed"));default:return $.createElement(Re,{variant:"body",size:"medium"},`${L} / ${K}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Bridges")),end:$.createElement($.Fragment,null,w(E,v),$.createElement(ar,{direction:"horizontal",size:8}),$.createElement(Vi,{color:"black"})),onClick:()=>t(F.bridges),start:$.createElement(Jx,{color:"gray",size:16})},I={id:"widget-setting-exchange-item-btn",title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Exchanges")),end:$.createElement($.Fragment,null,w(x,N),$.createElement(ar,{direction:"horizontal",size:8}),$.createElement(Vi,{color:"black"})),start:$.createElement(Rx,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},_={id:"widget-setting-custom-tokens-item-btn",title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Custom Tokens")),end:$.createElement($.Fragment,null,$.createElement(Re,{variant:"body",size:"medium"},`${m.length}`),$.createElement(ar,{direction:"horizontal",size:8}),$.createElement(Vi,{color:"black"})),start:$.createElement(pE,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},M={id:"widget-setting-language-item-btn",title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Language")),start:$.createElement(oE,{color:"gray",size:16}),end:$.createElement($.Fragment,null,$.createElement(Re,{variant:"body",size:"medium"},s),$.createElement(ar,{direction:"horizontal",size:8}),$.createElement(Vi,{color:"black"})),onClick:()=>t(F.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:$.createElement($.Fragment,null,$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Infinite approval")),$.createElement(ar,{direction:"horizontal",size:4}),$.createElement(uE,{side:"top",sideOffset:4,container:A(),content:$.createElement(Gi,null,$.createElement(Re,{variant:"label",size:"medium",color:"neutral700"},$.createElement("b",null,ht.t("Warning")),":\xA0",ht.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},$.createElement(tE,{color:"gray"}))),start:$.createElement(eE,{color:"gray",size:16}),end:$.createElement(lE,{checked:C}),onClick:k},R={id:"widget-setting-theme-item-btn",type:$.createElement(rE,null),title:$.createElement(Re,{variant:"title",size:"xmedium"},ht.t("Theme")),end:$.createElement(dE,null,$.createElement(cE,{container:A(),items:fE,value:n,onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:gE(n)},X=d?[]:[b,I];return g||X.push(_),f||X.push(M),X.push(q),!e?.singleTheme&&!h&&X.push(R),$.createElement(nE,{type:$.createElement(iE,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:X})}i(mh,"SettingsLists");var TE=SE("div",{paddingLeft:"$8"});function dh(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=kE(),r=CE(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Po.createElement(oe,{header:{title:oc.t("Settings")}},Po.createElement(re,null,o&&Po.createElement(hE,{type:"info",variant:"alarm",title:oc.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:Po.createElement(TE,null,Po.createElement(yE,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},oc.t("Reset")))}),Po.createElement(tc,null),Po.createElement(mh,null)))}i(dh,"SettingsPage");import{i18n as uI}from"@lingui/core";import{cancelSwap as mI}from"@rango-dev/queue-manager-rango-preset";import{useManager as dI}from"@rango-dev/queue-manager-react";import{Alert as fI}from"@rango-dev/ui";import Cc from"react";import{useParams as gI}from"react-router-dom";import{i18n as lt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as VE,getCurrentStep as KE,getRelatedWalletOrNull as jE}from"@rango-dev/queue-manager-rango-preset";import{Button as Kh,CopyIcon as XE,Divider as YE,DoneIcon as ZE,IconButton as JE,QuoteCost as RE,RangoExplorerIcon as eI,StepDetails as tI,Tooltip as jh,Typography as _o,useCopyToClipboard as oI}from"@rango-dev/ui";import{useWallets as nI}from"@rango-dev/wallets-react";import Xh from"bignumber.js";import{PendingSwapNetworkStatus as ea}from"rango-types";import Y,{useEffect as Yh,useRef as rI,useState as Zh}from"react";import{useNavigate as iI}from"react-router-dom";import{i18n as so}from"@lingui/core";var vE=[so.t("Sunday"),so.t("Monday"),so.t("Tuesday"),so.t("Wednesday"),so.t("Thursday"),so.t("Friday"),so.t("Saturday")];function fh(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?so.t("Today"):`${vE[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(fh,"timeSince");function gh(t){return t.finishTime?fh(parseInt(t.finishTime)):fh(parseInt(t.creationTime))}i(gh,"getSwapDate");import{PendingSwapNetworkStatus as Xi}from"rango-types";import Yi from"react";import{i18n as Ki}from"@lingui/core";import{Button as hh,Divider as nc,MessageBox as wE}from"@rango-dev/ui";import lo from"react";var yh=i(({onCancel:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(nc,{size:20}),lo.createElement(wE,{type:"error",title:Ki.t("Cancel Swap"),description:Ki.t("Are you sure you want to cancel this swap?")}),lo.createElement(nc,{size:32}),lo.createElement(hh,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Ki.t("Yes, Cancel it")),lo.createElement(nc,{size:12}),lo.createElement(hh,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Ki.t("No, Continue"))),"CancelContent");import{i18n as ji}from"@lingui/core";import{Button as Sh,Divider as rc,MessageBox as bE,Typography as xE}from"@rango-dev/ui";import Vt from"react";var Ch=i(({onDelete:t,onClose:e})=>Vt.createElement(Vt.Fragment,null,Vt.createElement(rc,{size:20}),Vt.createElement(bE,{type:"error",title:ji.t("Delete Transaction"),description:ji.t("Are you sure you want to delete this swap?")}),Vt.createElement(rc,{size:32}),Vt.createElement(Sh,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},ji.t("Yes, Delete it")),Vt.createElement(rc,{size:12}),Vt.createElement(Sh,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Vt.createElement(xE,{variant:"title",size:"medium",color:"primary"},ji.t("No, Cancel")))),"DeleteContent");import{i18n as ic}from"@lingui/core";import{PendingSwapNetworkStatus as ac}from"rango-types";var sc={[ac.WaitingForNetworkChange]:{type:"loading",title:ic.t("Change Network")},[ac.WaitingForConnectingWallet]:{type:"warning",title:ic.t("Connect Wallet")},[ac.NetworkChanged]:{type:"success",title:ic.t("Network Changed")}};import{warn as EE}from"@rango-dev/logging-core";import{getCurrentStep as IE,getRelatedWalletOrNull as AE}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as NE,Wallet as BE}from"@rango-dev/ui";import{useWallets as WE}from"@rango-dev/wallets-react";import cn,{useState as LE}from"react";import{styled as lc}from"@rango-dev/ui";var kh=lc("div",{display:"flex",justifyContent:"center"}),BK=lc("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),Th=lc("img",{width:"100%"});var vh=i(t=>{let{type:e,title:o,swap:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,[l,c]=LE(),{getWalletInfo:u,state:p}=WE(),m=IE(n),h=m?AE(n,m):null,d=m?.fromBlockchain,f=h?.walletType,g=f?hn(p(f)):null,C=f?u(f):null,k=a&&!!f&&!!g&&!!C,{list:y}=yt(),T=i(()=>{if(f){let v=y.find(E=>E.type===f);v?c(v):EE(new Error(`It seems requested wallet to be connected is not available in the list. requested wallet: ${v}`))}},"handleWalletItemClick");return cn.createElement(cn.Fragment,null,cn.createElement(NE,{type:e,title:o,description:r}),k&&cn.createElement(kh,null,cn.createElement(BE,{container:A(),title:C.name,image:C.img,type:f,state:g,link:C.installLink,disabled:s,onClick:T})),cn.createElement(Co,{wallet:l,onClose:()=>{c(void 0)},options:{defaultSelectedChains:d?[d]:void 0}}))},"WalletStateContent");function cc(t){let{state:e,onClose:o,onDelete:n,onCancel:r,swap:a,message:s,walletButtonDisabled:l}=t,c=e===Xi.WaitingForNetworkChange||e===Xi.WaitingForConnectingWallet||e===Xi.NetworkChanged;return Yi.createElement(J,{open:!!e,onClose:o,container:document.getElementById($e.SWAP_BOX_ID)||document.body},c&&Yi.createElement(vh,{type:sc[e].type,title:sc[e].title,swap:a,message:s,walletButtonDisabled:l,showWalletButton:e!==Xi.WaitingForNetworkChange}),e==="delete"&&Yi.createElement(Ch,{onClose:o,onDelete:n}),e==="cancel"&&Yi.createElement(yh,{onClose:o,onCancel:r}))}i(cc,"SwapDetailsModal");import{i18n as sr}from"@lingui/core";import{Button as pc,Divider as lr,MessageBox as xh,TokenAmount as ME,Typography as Eh}from"@rango-dev/ui";import ge from"react";import{Link as PE,useNavigate as _E}from"react-router-dom";var wh="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",bh="/profile";function uc(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:c,chain:u,percentageChange:p,description:m,diagnosisUrl:h}=t,d=_E(),{showProfileBanner:f}=ne();return ge.createElement(J,{open:e,onClose:o,container:document.getElementById($e.SWAP_BOX_ID)||document.body},n==="success"?ge.createElement(xh,{type:"success",title:sr.t("Swap Successful")},ge.createElement(ME,{direction:"vertical",tooltipContainer:A(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:c,chain:u,percentageChange:p}),ge.createElement(lr,{size:12}),ge.createElement(Eh,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):ge.createElement(xh,{type:"error",title:sr.t("Transaction Failed"),description:m}),ge.createElement(lr,{size:30}),n==="success"&&ge.createElement(ge.Fragment,null,f&&ge.createElement(ge.Fragment,null,ge.createElement(PE,{to:bh},ge.createElement(Th,{src:wh,alt:"Profile Banner"})),ge.createElement(lr,{size:30})),ge.createElement(pc,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{d("../../")}},sr.t("Done"))),ge.createElement(lr,{size:12}),h&&ge.createElement(ge.Fragment,null,ge.createElement(pc,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(h,"_blank")},sr.t("Diagnosis")),ge.createElement(lr,{size:12})),ge.createElement(pc,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ge.createElement(Eh,{variant:"title",size:"medium",color:"primary"},sr.t("See Details"))))}i(uc,"SwapDetailsCompleteModal");import GE from"react";import{i18n as zE}from"@lingui/core";import{Alert as Hh,IconButton as QE,LinkIcon as HE}from"@rango-dev/ui";import co,{Fragment as qE}from"react";import{Alert as $E,ChevronDownIcon as FE,IconButton as OE}from"@rango-dev/ui";import un,{useState as UE}from"react";import{css as cr,darkTheme as Ih,styled as Kt,Typography as DE}from"@rango-dev/ui";var Ah=Kt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Zi=Kt("div",{width:"100%","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${Ih} &`]:{color:"$secondary500"}}}}}),Nh=Kt(Bn,{padding:"$0 $20 $20 $20"}),S8=Kt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Bh=Kt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),C8=Kt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),pn=cr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${Ih} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Wh=cr({padding:"$5 0"}),Ji=cr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),Lh=cr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),Mh=cr({width:"100%",padding:"0 $20 $10"}),Ph=Kt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),_h=Kt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Ri=Kt(DE,{wordBreak:"break-word"});import{styled as mc}from"@rango-dev/ui";var Dh=mc("div",{display:"flex",flexDirection:"column",gap:"$10"}),$h=mc("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Fh=mc("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function Oh(t){let{message:e}=t,[o,n]=UE(!1);return un.createElement($E,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&un.createElement(OE,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},un.createElement($h,{rotated:o},un.createElement(FE,{size:12,color:"gray"}))),footer:un.createElement(Fh,{open:o},un.createElement(Ri,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Oh,"FailedAlert");import{i18n as Uh}from"@lingui/core";import{Alert as dc,Button as zh}from"@rango-dev/ui";import{PendingSwapNetworkStatus as fc}from"rango-types";import pr from"react";function Qh(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?pr.createElement(dc,{type:"warning",title:n.shortMessage,action:pr.createElement(zh,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(fc.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Uh.t("Change"))}):r===fc.WaitingForConnectingWallet?pr.createElement(dc,{type:"warning",title:n.shortMessage,action:pr.createElement(zh,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(fc.WaitingForConnectingWallet)}},Uh.t("Connect"))}):pr.createElement(dc,{type:"warning",title:n.shortMessage})}i(Qh,"WarningAlert");function gc(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=An(a),c=a.status==="waitingForApproval"&&!l,u=a.status==="running"&&!l,p=u&&!s||c&&!a.explorerUrl?.length;return co.createElement(Dh,null,a.explorerUrl?.map((m,h,d)=>{let f=h+m.url,g=h===d.length-1,C=(g&&u||c)&&!p,k=g&&a.status==="failed";return co.createElement(qE,{key:f},co.createElement(Hh,{type:g&&(C&&"loading"||k&&"error")||"success",title:m.description?`${m.description} Tx`:zE.t("View transaction"),action:m.url&&co.createElement(QE,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},co.createElement(HE,{size:12}))}))}),p&&co.createElement(Hh,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&co.createElement(Qh,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&co.createElement(Oh,{message:r}))}i(gc,"SwapDetailsAlerts");var qh=2e3;var Gh=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:pt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:P(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:pt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:P(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:mn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(c=>({from:{chain:{displayName:pt(c.fromBlockchain,e)??"",image:c.fromBlockchainLogo??""}},to:{chain:{displayName:pt(c.toBlockchain,e)??"",image:c.toBlockchainLogo??""}},swapper:{displayName:mn(c.swapperId,o)??"",image:c.swapperLogo??"",type:c.swapperType}})):[],alerts:GE.createElement(gc,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function Vh(t){if(An(t)&&t.status!=="failed"&&t.status!=="success")return"warning";switch(t.status){case"created":return"default";case"approved":case"waitingForApproval":case"running":return"in-progress";case"failed":return"error";case"success":return"completed"}}i(Vh,"getStepState");function hc(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=nI(),c=S().blockchains(),u=S().swappers(),{findToken:p}=S(),m=O.use.retry(),h=ne.use.isActiveTab(),d=iI(),[f,g]=oI(qh),C=rI(null),[k,y]=Zh(null),[T,v]=Zh(null),E=i(()=>{r(),y(null)},"onCancel"),B=we.use.getNotifications(),N=we.use.removeNotification(),x=B(),w=KE(e),b=w?.networkStatus;Yh(()=>{x.find(De=>De.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),N(e.requestId)):T&&v(null))},[e.status,e.requestId]),Yh(()=>{L?y(ea.WaitingForNetworkChange):b===ea.WaitingForConnectingWallet||b===ea.NetworkChanged?y(b):y(null)},[b]);let I=Du(e),_=w?VE(e,w):null,M=w?jE(e,w):null,q=gh(e),R=$u(e),X=i(Te=>!!l(Te)?.mobileWallet,"isMobileWallet"),L=b===ea.WaitingForNetworkChange&&!!_&&!!M?.walletType&&(X(M.walletType)||a(M.walletType,_.network)),K=L?s.bind(null,M.walletType,[{namespace:_.namespace,network:_.network}]):void 0,ae=_u(e,w,l),Q=Gh({swap:e,switchNetwork:K,showNetworkModal:b,setNetworkModal:y,message:ae,blockchains:c,swappers:u}),de=Q.length,[Ie,Ke]=[e.steps[0],e.steps[de-1]],se=Ke.outputAmount||Ke.expectedOutputAmountHumanReadable,ct=e.steps.reduce((Te,De)=>Te+parseFloat(De.feeInUsd||""),0),V=e.steps.find(Te=>Te.diagnosisUrl)?.diagnosisUrl,D=P(parseFloat(se||"0")*(Ke.toUsdPrice||0),4,4),G=P(parseFloat(e.inputAmount)*(Ie.fromUsdPrice||0),4,4),j=se?new Xh(se).multipliedBy(Ke.toUsdPrice||0).toString():"",he=new Xh(e.inputAmount).multipliedBy(Ie.fromUsdPrice||0).toString(),ce=Dt(G,D),_e=ae.detailedMessage.content||ae.shortMessage,je=e.status==="success"?lt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:P(se,6,6),token:Q[de-1].to.token.displayName,conciseAddress:Ir(e.wallets[Q[de-1].to.chain.displayName]?.address||""),chain:Q[de-1].to.chain.displayName}}):Y.createElement(_h,null,Y.createElement(_o,{variant:"body",size:"medium",color:"neutral700",align:"center"},_e?"":lt.t("Transaction was not sent."),I?`${lt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:I.outputAmount,symbol:I.symbol,blockchain:I.blockchain}})}`:""),_e&&Y.createElement(Ri,{align:"center",variant:"body",size:"medium",color:"neutral700"},Y.createElement("b",null,"Reason:")," ",_e));return Y.createElement(oe,{header:{title:lt.t("Swap Details"),onCancel:e.status==="running"?()=>y("cancel"):void 0,suffix:e.status!=="running"&&Y.createElement(Jt,null,Y.createElement(Kh,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>y("delete")},Y.createElement(_o,{size:"medium",variant:"label",color:"error"},lt.t("Delete"))))},footer:R&&!T&&Y.createElement(Kh,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let Te=Ur(e,c,p);m(Te),setTimeout(()=>{d("../../")},0)}},lt.t("Try again"))},Y.createElement(re,{compact:!0,view:!0},Y.createElement(Zi,null,Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},`${lt.t("Request ID")}`),Y.createElement("div",{className:Ji()},Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},o),Y.createElement(jh,{container:A(),content:f?lt.t("Copied To Clipboard"):lt.t("Copy Request ID"),open:f||void 0,side:"bottom",alignOffset:-16,align:"end"},Y.createElement(JE,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:g.bind(null,o||"")},f?Y.createElement(ZE,{size:16,color:"secondary"}):Y.createElement(XE,{size:16,color:"gray"}))),Y.createElement(Ph,{target:"_blank",href:`${Qc}/swap/${o}`},Y.createElement(jh,{container:A(),content:lt.t("View on Rango Explorer"),side:"bottom"},Y.createElement(eI,{size:20}))))),Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},e.finishTime?lt.t("Finished at"):lt.t("Created at")),Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},q))),Y.createElement("div",{className:Lh()},Y.createElement(RE,{fee:P(String(ct),2,2),time:fn(vr(e.steps)),steps:de}),Y.createElement($n,{from:{price:{value:P(e.inputAmount,6,6),usdValue:G,realUsdValue:he,realValue:e.inputAmount},token:{displayName:Q[0].from.token.displayName,image:Q[0].from.token.image},chain:{image:Q[0].from.chain.image,displayName:Q[0].from.chain.displayName}},to:{price:{value:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||""},token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image,displayName:Q[de-1].to.chain.displayName}},percentageChange:P(ce,2,2),warningLevel:$t(ce??0)})),Y.createElement("div",{className:Mh()},Y.createElement(_o,{variant:"title",size:"small"},lt.t("Swaps steps"))),Y.createElement(YE,{size:8}),Y.createElement(Nh,{ref:C},Q.map((Te,De)=>{let jt=De,po=Vh(e.steps[De]),xy=po==="error"||po==="in-progress"||po==="warning"||po==="completed"&&De===Q.length-1;return Y.createElement(tI,{key:jt,step:Te,type:"swap-progress",ref:C,state:po,hasSeparator:De!==0,tabIndex:jt,isFocused:xy,tooltipContainer:A()})}))),Y.createElement(cc,{state:k,onClose:()=>y(null),onCancel:E,onDelete:n,message:ae.detailedMessage.content,swap:e,walletButtonDisabled:!h}),Y.createElement(uc,{open:!!T,diagnosisUrl:V,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||"",percentageChange:P(ce,2,2),token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image},description:je}))}i(hc,"SwapDetails");import{i18n as oa}from"@lingui/core";import{Divider as ey,NotFound as pI,Skeleton as mr,Typography as na}from"@rango-dev/ui";import ke from"react";import{i18n as aI}from"@lingui/core";import{Divider as sI,Skeleton as lI,Typography as cI}from"@rango-dev/ui";import ve from"react";import{css as bt,styled as yc}from"@rango-dev/ui";var Jh=yc("div",{width:"100%",height:"100%",padding:"$10 $20"}),ur=yc("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),ta=yc("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),W6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),L6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),M6=bt({paddingTop:"$15",display:"flex"}),P6=bt({padding:"$15 $0"}),_6=bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),D6=bt({paddingBottom:"$10"}),$6=bt({display:"flex",justifyContent:"start",alignItems:"center"}),F6=bt({paddingTop:"$5",display:"flex",alignItems:"center"}),O6=bt({display:"flex",alignItems:"center"}),U6=bt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),Rh=bt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Sc(){return ve.createElement(Jh,null,ve.createElement(Un,{type:"swap-preview"}),ve.createElement("div",{className:"swaps-steps"},ve.createElement(cI,{variant:"title",size:"small"},aI.t("Swaps steps"))),ve.createElement(ve.Fragment,null,ve.createElement(ur,null,ve.createElement(Bt,{separator:!1}),ve.createElement("div",{className:Rh()},ve.createElement(sI,{direction:"horizontal",size:20}),ve.createElement(lI,{height:22,variant:"rectangular"}))),ve.createElement(ta,null),ve.createElement(ur,null,ve.createElement(Bt,{separator:!1})),ve.createElement(ta,null),ve.createElement(ur,null,ve.createElement(Bt,{separator:!1})),ve.createElement(ta,null),ve.createElement(ur,null,ve.createElement(Bt,{separator:!1}))))}i(Sc,"LoadingSwapDetails");function ty(t){let{requestId:e,showSkeleton:o}=t;return ke.createElement(oe,{header:{title:oa.t("Swap Details"),suffix:ke.createElement(Jt,null)}},o&&ke.createElement(Ah,null,ke.createElement(Zi,null,ke.createElement("div",{className:pn()},ke.createElement(na,{variant:"label",size:"large",color:"neutral700"},`${oa.t("Request ID")}`),ke.createElement("div",{className:Ji()},ke.createElement(na,{variant:"label",size:"small",color:"neutral700"},ke.createElement(mr,{width:60,height:10,variant:"rounded"})),ke.createElement(ey,{direction:"horizontal",size:4}),ke.createElement(mr,{width:16,height:16,variant:"rectangular"}),ke.createElement(ey,{direction:"horizontal",size:4}),ke.createElement(mr,{width:16,height:16,variant:"rectangular"}))),ke.createElement("div",{className:pn()},ke.createElement(na,{className:Wh(),variant:"label",size:"large",color:"neutral700"},ke.createElement(mr,{width:60,height:10,variant:"rounded"})),ke.createElement(na,{variant:"label",size:"small",color:"neutral700"},ke.createElement(mr,{width:60,height:10,variant:"rounded"})))),ke.createElement(Sc,null)),!o&&ke.createElement(Bh,null,ke.createElement(pI,{title:oa.t("Not found"),description:oa.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(ty,"SwapDetailsPlaceholder");function oy(){let{manager:t,state:e}=dI(),o=!e.loadedFromPersistor,n=gt(t),{requestId:r}=gI(),a=Oe(),{fetchStatus:s}=S();if(!r)return Cc.createElement(fI,{containerStyles:{margin:"20px"},type:"error",title:uI.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",c=r?n.find(({swap:h})=>h.requestId===r):void 0,u=i(()=>{if(c?.id){let h=t?.get(c.id);h&&mI(h)}},"onCancel"),p=i(async()=>{if(c?.id)try{t?.deleteQueue(c.id),a()}catch(h){console.log(h)}},"onDelete"),m=c?.swap;return!m||l?Cc.createElement(ty,{requestId:r,showSkeleton:l}):Cc.createElement(hc,{swap:m,requestId:r,onCancel:u,onDelete:p})}i(oy,"SwapDetailsPage");import{i18n as ny}from"@lingui/core";import{Divider as hI,getCategoriesCount as yI,SelectableCategoryList as SI,styled as iy,Typography as CI,Wallet as kI}from"@rango-dev/ui";import Lt,{useState as ry}from"react";var TI=iy("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),vI=iy(re,{textAlign:"center"});function ay(){let{fetchStatus:t}=S(),[e,o]=ry("ALL"),n=S().blockchains(),{config:r}=S(),[a,s]=ry(),l=ne.use.isActiveTab(),{list:c}=yt(),u=cp(c,n),m=yI(u)!==1,h=pp(c,e),d=i(f=>{Jc(c,r.multiWallets)||s(f)},"handleWalletItemClick");return Lt.createElement(oe,{header:{title:ny.t("Connect Wallets")}},Lt.createElement(vI,null,m&&Lt.createElement(Lt.Fragment,null,Lt.createElement(SI,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Lt.createElement(hI,{size:24})),Lt.createElement(CI,{variant:"title",size:"xmedium",align:"center"},ny.t("Choose a wallet to connect.")),Lt.createElement(TI,null,h.map((f,g)=>{let C=`wallet-${g}-${f.type}`;return Lt.createElement(kI,{key:C,...f,container:A(),onClick:()=>d(f),isLoading:t==="loading",disabled:!l})}),Lt.createElement(Co,{wallet:a,onClose:()=>{s(void 0)}}))))}i(ay,"WalletsPage");function sy(){return zu(),os(),wI([{path:F.home,element:Pe.createElement(Mg,null)},{path:F.routes,element:Pe.createElement(Fg,null)},{path:F.fromSwap,children:[{index:!0,element:Pe.createElement(qi,{type:"source"})},{path:F.blockchains,element:Pe.createElement(Ui,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:Pe.createElement(qi,{type:"destination"})},{path:F.blockchains,element:Pe.createElement(Ui,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:Pe.createElement(dh,null)},{path:F.languages,element:Pe.createElement(_g,null)},{path:F.exchanges,element:Pe.createElement(ql,{sourceType:"Exchanges"})},{path:F.bridges,element:Pe.createElement(ql,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:Pe.createElement(Hf,null)},{path:F.addCustomTokens,children:[{index:!0,element:Pe.createElement(Mm,null)},{path:F.blockchains,element:Pe.createElement(Ui,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:Pe.createElement(cg,null)},{path:F.swapDetails,element:Pe.createElement(oy,null)}]},{path:F.wallets,element:Pe.createElement(ay,null)},{path:F.confirmSwap,element:Pe.createElement(Nf,null)}])}i(sy,"AppRoutes");import{useQueueManager as LI}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as MI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as PI}from"rango-sdk";import{useContext as _I,useEffect as fy,useState as gy}from"react";import{globalCss as bI}from"@rango-dev/ui";var ly=i(()=>bI({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function cy(){let{setWatermark:t,setShowProfileBanner:e}=ne();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Pt("BASE_URL")}/meta/dapp/config?apiKey=${Pt("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let r=await n.json();t(r.config.watermark),e(r.config.banners.profile)},"fetchApiConfig")}}i(cy,"useFetchApiConfig");import{useWallets as xI}from"@rango-dev/wallets-react";import{useEffect as EI,useRef as II}from"react";function py(){let{connect:t,state:e}=xI(),o=II({}),{fetchStatus:n}=S(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);EI(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(py,"useForceAutoConnect");import{isApprovalTX as AI,RouteEventType as uy,StepEventType as my,StepExecutionEventStatus as NI,WidgetEvents as ra}from"@rango-dev/queue-manager-rango-preset";import{useEffect as dy}from"react";function kc(){let t=we.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();dy(()=>{let r=i(a=>{let{event:s,step:l,route:c}=a;if(s.type===my.TX_EXECUTION&&s.status===NI.TX_SENT&&!AI(l)||s.type===my.SUCCEEDED){let p=[],m=c.wallets[l?.fromBlockchain];if(m){let h=e.find(d=>d.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&d.walletType===m.walletType&&d.chain===l?.fromBlockchain);h&&p.push(h)}if(l?.fromBlockchain!==l?.toBlockchain){let h=c.wallets[l?.toBlockchain];if(h){let d=e.find(f=>f.address?.toLocaleLowerCase()===h.address?.toLocaleLowerCase()&&f.walletType===h.walletType&&f.chain===l?.toBlockchain);d&&p.push(d)}}if(p.length>0){let h=n(),f=[{blockchain:l.fromBlockchain,address:l.fromSymbolAddress,symbol:l.fromSymbol},{blockchain:l.toBlockchain,address:l.toSymbolAddress,symbol:l.toSymbol}].filter(g=>h.some(C=>C.blockchain===g.blockchain&&C.address?.toLocaleLowerCase()===g.address?.toLocaleLowerCase()&&C.symbol?.toLocaleLowerCase()===g.symbol?.toLocaleLowerCase()));o(p,{selectedCustomTokens:f,shouldFetchCustomTokens:f.length>0})}}t(s,c)},"handleStepEvent");return ye.on(ra.StepEvent,r),()=>ye.off(ra.StepEvent,r)},[ye,e]),dy(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===uy.FAILED||s.type===uy.SUCCEEDED)&&t(s,l)},"handleRouteEvent");return ye.on(ra.RouteEvent,r),()=>ye.off(ra.RouteEvent,r)},[ye])}i(kc,"useSubscribeToWidgetEvents");import{useManager as BI}from"@rango-dev/queue-manager-react";import{useEffect as WI}from"react";function Tc(){let{isSynced:t,syncNotifications:e}=we(),{manager:o,state:n}=BI();WI(()=>{we.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(gt(o))},[we.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Tc,"useSyncNotifications");function vc(){py(),ly(),kc(),Tc();let t=S().blockchains(),{canSwitchNetworkTo:e}=si(),[o,n]=gy(""),[r,a]=gy(),s=_I(Dr),l=t.filter(PI),{fetchApiConfig:c}=cy();fy(()=>()=>Uu(),[]),LI({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),fy(()=>(ho.init(),we.persist.hasHydrated()||we.persist.rehydrate(),s.onConnectWallet(n),s.onDisconnectWallet(u=>{a(u),u===MI(o)?.[0]&&n("")}),c().catch(console.log),ho.destroy),[])}i(vc,"useBootstrap");import{styled as DI}from"@rango-dev/ui";var hy=DI("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function ia(){vc();let{config:t}=S(),{activeTheme:e}=Zo(t?.theme||{}),{activeLanguage:o}=io();return wc.createElement($I,{language:o},wc.createElement(hy,{id:"swap-container",className:e()},wc.createElement(sy,null)))}i(ia,"Main");import{setSolanaSignerConfig as nA}from"@rango-dev/signer-solana";import xc,{useEffect as vy,useMemo as rA}from"react";import{useState as FI}from"react";var OI=i(()=>{let[t,e]=FI(null),o=i(a=>{let s=document.createElement("link");return s.href=a,s.rel="stylesheet",document.head.appendChild(s),s},"loadFont"),n=i(()=>{t&&(document.head.removeChild(t),e(null))},"unloadFont");return{handleLoadCustomFont:i(a=>{n();let s=Zc(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),yy=OI;import{checkWaitingForNetworkChange as UI,makeQueueDefinition as zI}from"@rango-dev/queue-manager-rango-preset";import{Provider as QI}from"@rango-dev/queue-manager-react";import{useWallets as HI}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as qI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as GI}from"rango-types";import VI,{useMemo as KI}from"react";function jI(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=HI(),l=KI(()=>zI({API_KEY:t.apiKey||Pt("API_KEY"),BASE_URL:Pt("BASE_URL"),emitter:{emit:ye.emit}}),[t.apiKey]),{blockchains:c,connectedWallets:u}=S(),p=c(),m={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,E)=>a(v,E.network)?await r(v,[E]):void 0,"switchNetwork"),d=i(v=>!!s(v).mobileWallet,"isMobileWallet"),f=p.filter(v=>v.enabled).reduce((v,E)=>(v[E.name]=E,v),{}),g=p.filter(GI),C=i(v=>{let{supportedChains:E}=s(v);return yn(E)},"getSupportedChainNames"),k=e(),y={meta:{blockchains:f,evmBasedChains:g,evmNetworkChainInfo:qI(g),getSupportedChainNames:C},getSigners:o,wallets:m,providers:k,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:d},T=ne.use.isActiveTab();return VI.createElement(QI,{queuesDefs:[l],context:y,onPersistedDataLoaded:v=>{UI(v)},isPaused:!T},t.children)}i(jI,"QueueManager");var Sy=jI;import{useManager as RI}from"@rango-dev/queue-manager-react";import eA,{createContext as tA,useContext as oA}from"react";function Cy(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=O();return i(u=>{let{fromBlockchain:p,fromToken:m,toBlockchain:h,toToken:d,requestAmount:f}=u,g={blockchains:e,tokens:o};if(p!==void 0){let C=e.find(k=>k.name===p)??null;n(C)}if(m!==void 0){let C=m?t(m)??null:null;r({meta:g,token:C})}if(h!==void 0){let C=e.find(k=>k.name===h)??null;a(C)}if(d!==void 0){let C=d?t(d)??null:null;s({meta:g,token:C})}f!==void 0&&l(f)},"updateQuoteInputs")}i(Cy,"useUpdateQuoteInputs");import{cancelSwap as XI,getCurrentNamespaceOfOrNull as YI,getCurrentStep as ZI,getRelatedWalletOrNull as JI}from"@rango-dev/queue-manager-rango-preset";var aa=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return gt(this.manager)}getCurrentStep(e){return this.getCurrentStepInfo(e).step}getCurrentStepWallet(e){return this.getCurrentStepInfo(e).wallet}getCurrentStepNetwork(e){return this.getCurrentStepInfo(e).network}retry(e,o){let n=Ur(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&XI(o)}getCurrentStepInfo(e){let o=ZI(e);return{step:o,wallet:o?JI(e,o):null,network:o?YI(e,o)?.network:null}}};var ky=tA(void 0);function bc(t){let{manager:e}=RI(),o=ne.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=S(),c=new aa(e,{retrySwap:n,findToken:r}),{fetchingWallets:u}=S(),p=np(a()),m=S().blockchains(),h=S().tokens(),d=S().swappers(),f=S().fetchStatus,g=io().resetLanguage,C=we().getNotifications(),k=we().clearNotifications,y=Cy(),{fromBlockchain:T,toBlockchain:v,fromToken:E,toToken:B,inputAmount:N}=O(),x={isActiveTab:o,setCurrentTabAsActive:ho.forceClaim,history:c,wallets:{isLoading:u,details:s(),totalBalance:p,refetch:async w=>l(w)},meta:{blockchains:m,tokens:h,swappers:d,loadingStatus:f,findToken:r},resetLanguage:g,notifications:{list:C,clearAll:k},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:E?{symbol:E.symbol,blockchain:E.blockchain,address:E.address}:null,toBlockchain:v?.name??null,toToken:B?{symbol:B.symbol,blockchain:B.blockchain,address:B.address}:null,requestAmount:N},updateQuoteInputs:y}};return eA.createElement(ky.Provider,{value:x},t.children)}i(bc,"WidgetInfo");function Ty(){let t=oA(ky);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(Ty,"useWidget");function sa(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=yy();return vy(()=>{n&&r(n)},[n]),rA(()=>{up({API_KEY:o?.apiKey||Sr,BASE_URL:o?.apiUrl||zc})},[o.apiKey,o.apiUrl]),vy(()=>{t.config?.signers?.customSolanaRPC&&nA("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),xc.createElement($r,{config:o,onUpdateState:e},xc.createElement(Sy,{apiKey:o.apiKey},xc.createElement(bc,null,t.children)))}i(sa,"WidgetProvider");function wy(t){let e=t.config?.externalWallets;return la.createElement(lu,null,e?la.createElement(ia,null):la.createElement(sa,{config:t.config??hr},la.createElement(ia,null)))}i(wy,"Widget");function by(){let{on:t,off:e}=ye;return{on:t,off:e}}i(by,"useWidgetEvents");var KY={DerivationPath:bn,Namespaces:wn,isOnDerivationPath:En,isOnNamespace:xn};export{CY as EventSeverity,Qo as MainEvents,NY as Networks,LY as PendingSwapNetworkStatus,wa as QuoteEventTypes,kY as RouteEventType,ma as SUPPORTED_FONTS,KY as StatefulConnect,TY as StepEventType,vY as StepExecutionBlockedEventStatus,wY as StepExecutionEventStatus,$e as UI_ID,xa as UiEventTypes,ba as WalletEventTypes,IY as WalletEvents,BY as WalletTypes,wy as Widget,Qo as WidgetEvents,sa as WidgetProvider,$r as WidgetWallets,gs as customizedThemeTokens,xY as readAccountAddress,Xt as useStatefulConnect,yt as useWalletList,si as useWallets,Ty as useWidget,by as useWidgetEvents,AS as widgetEventEmitter};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|