@rango-dev/widget-embedded 0.49.0 → 0.49.1-next.1

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 mC=Object.defineProperty;var i=(t,e)=>mC(t,"name",{value:e,configurable:!0});import{EventSeverity as cee,RouteEventType as pee,StepEventType as uee,StepExecutionBlockedEventStatus as dee,StepExecutionEventStatus as mee}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as gee}from"@rango-dev/wallets-core/legacy";import{useWallets as Vi,Events as yee}from"@rango-dev/wallets-react";import{Networks as Cee,WalletTypes as kee}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as wee}from"rango-types";import{Divider as NT}from"@rango-dev/ui";import lo,{useEffect as BT,useRef as WT,useState as yd}from"react";import{WalletState as fC}from"@rango-dev/ui";import{useWallets as gC}from"@rango-dev/wallets-react";import{useReducer as hC}from"react";function Lp(t){return!!t.derivationPath}i(Lp,"isStateOnDerivationPathStep");function Pp(t){return!!t.namespace}i(Pp,"isStateOnNamespace");var Gr={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function _p(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return Gr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:Gr;default:throw new Error("Action hasn't been defined.")}}i(_p,"reducer");function Xo(){let{state:t,disconnect:e,connect:o}=gC(),[n,r]=hC(_p,Gr),a=i(async(m,f,h)=>{r({type:"reset"});try{let g=f?.map(d=>({...d,network:void 0}));return await o(m,g),{status:"connected"}}catch(g){let d=g?.message?`Error: ${g.message}`:"An unknown error happened during connecting wallet.";throw new Error(d,{cause:g})}},"runConnect"),s=i(async(m,f)=>{if(m.state===fC.DISCONNECTED){let g=!!m.isHub,d=g?m.properties?.find(y=>y.name==="namespaces")?.value:m.needsNamespace,S=g?m.properties?.find(y=>y.name==="derivationPath")?.value:m.needsDerivationPath;if(!d?.data?.length)return await a(m.type,void 0,f);if(d?.data.length&&d.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:m,defaultSelectedChains:f?.defaultSelectedChains}}),{status:"namespace"};if(d?.data.length===1&&d.data[0]){if(S){let y=d.data[0];return r({type:"needsDerivationPath",payload:{providerType:m.type,providerImage:m.image,namespace:y.value}}),{status:"derivation-path"}}return await a(m.type,d?.data?.map(y=>({namespace:y.value})),f)}}if(m.isHub){let g=m.properties?.find(d=>d.name==="namespaces")?.value;if(g?.data.length&&g.data.length>1)return r({type:"detached",payload:{targetWallet:m,selectedNamespaces:null}}),{status:"Detached"}}return f?.disconnectIfConnected?(await u(m),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=i(async(m,f)=>{let h=!!m.isHub,g=h?m.properties?.find(T=>T.name==="namespaces")?.value:m.needsNamespace,d=h?m.properties?.find(T=>T.name==="derivationPath")?.value:m.needsDerivationPath,S=g?.selection==="single",y=f[0];if(!y)throw new Error("To confirm a namespace, you should select at least one namespace.");if(S&&d)return r({type:"needsDerivationPath",payload:{providerType:m.type,providerImage:m.image,namespace:y}}),{status:"derivation-path"};if(!Pp(n))throw new Error("Something went wrong on handling namespace. Please retry.");let C=f.map(T=>({namespace:T}));return r({type:"detached",payload:{targetWallet:m,selectedNamespaces:C?.map(T=>T.namespace)||null}}),{status:"Detached"}},"handleNamespace"),l=i(async m=>{if(!m)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Lp(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let f=n.derivationPath.providerType,g=[{namespace:n.derivationPath.namespace,derivationPath:m}];return await a(f,g)},"handleDerivationPath"),p=i(()=>n,"getState"),u=i(async m=>{let f=t(m.type);return f.connected||f.connecting?(await e(m.type),xo(p)?(r({type:"needsNamespace",payload:{targetWallet:m}}),{status:"namespace"}):{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:c,handleDerivationPath:l,getState:p,resetState:m=>{r(m==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Xo,"useStatefulConnect");import{WalletState as ws}from"@rango-dev/ui";import{useWallets as Ek}from"@rango-dev/wallets-react";import{detectMobileScreens as Ik,KEPLR_COMPATIBLE_WALLETS as Ak,WalletTypes as Hn}from"@rango-dev/wallets-shared";import{useCallback as Nk,useEffect as Bk}from"react";import Tk,{createContext as wk,useContext as vk,useEffect as bk,useRef as xk}from"react";import{create as Ck}from"zustand";import{persist as kk}from"zustand/middleware";import{allProviders as yC}from"@rango-dev/provider-all";var Ra=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()}},Yo=new Ra;import{defineVersions as $p,pickVersion as Fp,Provider as es}from"@rango-dev/wallets-core";function Op({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Up(a);return s instanceof es?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 es?o.push($p().version("1.0.0",n).build()):o.push($p().version("0.0.0",n).build())}),o}return t}i(Op,"matchAndGenerateProviders");function Up(t){try{return Fp(t,"1.0.0")[1]}catch{return Fp(t,"0.0.0")[1]}}i(Up,"pickProviderVersionWithFallbackToLegacy");function zp(t){return t.map(o=>Up(o)).map(o=>o instanceof es?o.id:o.config.type)}i(zp,"configWalletsToWalletName");function Vr(t,e){return e.find(o=>o.name===t)?.displayName}i(Vr,"getBlockchainDisplayNameFor");function ht(t,e){return e.find(o=>o.name===t)?.shortName}i(ht,"getBlockchainShortNameFor");function Qp(t,e){return e.find(o=>o.name===t)?.logo}i(Qp,"getBlockchainImage");function _n(t,e){return e.find(o=>o.id===t)?.title}i(_n,"getSwapperDisplayName");function Eo(t,e){return e.find(o=>o.name===t)??null}i(Eo,"findBlockchain");function ts(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(ts,"isTokenNative");function yt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(yt,"createTokenHash");function Zo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Zo,"isValidTokenAddress");function Dn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(c=>{c.forEach(l=>{typeof l!="string"&&(l=yt(l));let p=o.tokensMapByTokenHash.get(l);p&&(n[l]=p)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let c=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(l=>{let p=o.tokensMapByBlockchainName[l];!c.has(l)&&p&&a(p)})}return s.forEach(c=>{let l=r[c];if(!l&&o.tokensMapByBlockchainName?.[c]){a(o.tokensMapByBlockchainName[c]);return}l&&(l.isExcluded&&o.tokensMapByBlockchainName[c]?(a(o.tokensMapByBlockchainName[c]),l.tokens.forEach(p=>{let u=yt(p);delete n[u]})):a(l.tokens))}),Object.values(n)}i(Dn,"matchTokensFromConfigWithMeta");function Kr(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(Kr,"getSupportedBlockchainsFromConfig");function Hp(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Hp,"makeProvidersOptionsFromConfig");var Jo={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"}},SC={clientUrl:void 0},CC={liquiditySources:void 0};function qp(t){let e=Hp(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 yC(o).map(a=>a())}i(qp,"generateProviders");var Gp=i((t,e,o)=>{let n=qp({...Jo,...t});return{config:{...Jo,...t},iframe:SC,campaignMode:CC,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c}=o(),l=Dn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}}),p=Dn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}});Yo.set("supportedSourceTokens",l),Yo.set("supportedDestinationTokens",p),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=qp(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Hp(a);return Op({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Vp}from"rango-types";var Kp=[Vp.EVM,Vp.SOLANA],jr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as PC}from"rango-sdk";import{UI_ID as kC}from"@rango-dev/ui";var Xr="c6381a79-2817-4602-83bf-6a641a409e32",jp="https://api.rango.exchange",Xp="https://explorer.rango.exchange",tt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...kC};import{BlockchainCategories as IC,WalletState as lt}from"@rango-dev/ui";import{legacyReadAccountAddress as AC}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as NC,getCosmosExperimentalChainInfo as BC,isEvmAddress as WC,KEPLR_COMPATIBLE_WALLETS as fW,Networks as hu}from"@rango-dev/wallets-shared";import en from"bignumber.js";import{isCosmosBlockchain as MC}from"rango-types";import TC from"bignumber.js";var ce=new TC(0);import{WalletTypes as wC}from"@rango-dev/wallets-shared";var Io="~",Yp=[wC.LEAP];import{BlockchainCategories as ns,WalletState as EC}from"@rango-dev/ui";import{TransactionType as Yr}from"rango-sdk";var Zp="Roboto",os=[{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 Ro(t){return Array.from(new Set(t))}i(Ro,"removeDuplicateFrom");function Zr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Zr,"debounce");function st(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(st,"containsText");function eu(t,e){return t.toLowerCase()===e.toLowerCase()}i(eu,"exactText");function tu(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(tu,"startWithText");var W=i(()=>document.getElementById(tt.SWAP_BOX_ID),"getContainer"),Ao=i(()=>document.getElementById(tt.EXPANDED_BOX_ID),"getExpanded");function ou(t,e,o){let n=!!e&&eu(e,t),r=!!o&&eu(o,t);return n!==r?n?-1:1:0}i(ou,"compareExactMatchText");function rs(t,e,o){let n=!!e&&st(e,t),r=!!o&&st(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(rs,"compareContainsText");function is(t,e,o){let n=!!e&&tu(e,t),r=!!o&&tu(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(is,"compareStartWithText");function nu(t,e,o){if(!o)return 0;let n=ou(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=ou(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=is(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=rs(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=is(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=rs(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=is(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=rs(o,t.address,e.address);if(r!==0)return r}return 0}i(nu,"compareWithSearchFor");var Jr=i((t,e)=>{switch(e){case ns.ALL:return!0;case ns.UTXO:return t===Yr.TRANSFER;case ns.OTHER:return t!==Yr.TRANSFER&&t!==Yr.COSMOS&&t!==Yr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),ru=i(t=>os.find(o=>o.value===t)?.url,"getFontUrlByName");function iu(t,e){let o=!!t.find(n=>n.state===EC.CONNECTED);return e===!1&&o}i(iu,"isSingleWalletActive");function au(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(au,"memoizedResult");import{BigNumber as fu}from"bignumber.js";function su(t){return t.replace(/^0+(?=\d)/g,"")}i(su,"removeLeadingZeros");function lu(t){return t.replace(/^\.(\d+)/,"0.$1")}i(lu,"ensureLeadingZeroForDecimal");function cu(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(cu,"formatThousandsWithCommas");function pu(t){return t.replace(/\s+/g,"-")}i(pu,"replaceSpacesWithDash");function uu(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(uu,"stripTrailingZeros");function Rr(t){return/^0+(?:\.0+)?$/.test(t)}i(Rr,"isZeroValue");function du(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(du,"isValidCurrencyFormat");function mu(t){return/\d+$/.test(t)}i(mu,"isColorKeyOverridden");var $n=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"),_=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new fu(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new fu(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 ei=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Pt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Fn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function gu(t){return Rr(t)?"0":uu(t)}i(gu,"sanitizeInputAmount");function On(t){return t.connected?lt.CONNECTED:t.connecting?lt.CONNECTING:t.installed?lt.DISCONNECTED:lt.NOT_INSTALLED}i(On,"mapStatusToWalletState");function yu(t,e,o,n){return o.filter(r=>!Yp.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:c,network:l}=t(r);return s&&(!c||!!n&&l!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(r=>{let{name:a,img:s,installLink:c,showOnMobile:l,needsNamespace:p,supportedChains:u,needsDerivationPath:m,properties:f,isHub:h}=e(r),g=Ro(u.map(S=>S.type)),d=On(t(r));return{title:a,image:s,link:NC(c),state:d,type:r,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:m,properties:f,isHub:h}})}i(yu,"mapWalletTypesToWalletInfo");function Un(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Un,"walletAndSupportedChainsNames");function ss(t,e,o,n,r){let a=[];function s(l,p,u){if(!!!a.find(f=>f.chain===l)){let f={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(f)}}i(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=AC(l),m=c.length>0,f=c.includes(u),h=u===hu.Unknown;if(m&&!f&&!h)return;let d=u===hu.Unknown&&WC(p);if(h&&!d)return;o.includes(u)||d?r?s(u,p.toLowerCase(),r):c.filter(C=>o.includes(C)).forEach(C=>{s(C,p.toLowerCase())}):s(u,p)}),a}i(ss,"prepareAccountsForWalletStore");function No(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,c=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:l}=r;l.forEach((p,u)=>{let m=p.from.blockchain,f=p.to.blockchain,h=a===o.swaps.length-1,g=u===l.length-1;(!h&&!g||h&&c!==m||e==="all")&&n.add(m),e==="all"&&n.add(f)})}e==="all"&&n.add(c)}),Array.from(n)}i(No,"getQuoteChains");function zn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(zn,"isAccountAndWalletMatched");var Su=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?as(n.usdValue,n.decimals):ce.toFixed();return o.plus(r)},new en(ce));return LC(e.toString())},"calculateWalletUsdValue");function LC(t){let e=t.toString().split(".");return e[0]&&(e[0]=cu(e[0])),e.join(".")}i(LC,"numberWithThousandSeparator");var ni=i((t,e)=>{let o=BC(Object.entries(t).map(([,n])=>n).filter(MC));return o&&!!o[e]?.experimental},"isExperimentalChain");function as(t,e){return new en(t).shiftedBy(-e).toFixed()}i(as,"representAmountInNumber");function ri(t){if(!t)return null;let e=as(t.amount,t.decimals),o=t.usdValue?as(t.usdValue,t.decimals):null,n=_(e,8,8),r=o?_(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(ri,"formatBalance");function Cu(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new en(t.usdValue).shiftedBy(-t.decimals):ce,n=e&&e.usdValue?new en(e.usdValue).shiftedBy(-e.decimals):ce;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new en(t.amount).shiftedBy(-t.decimals):ce,n=e&&e.amount?new en(e.amount).shiftedBy(-e.decimals):ce;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(Cu,"compareTokenBalance");function qt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(qt,"areTokensEqual");function ku(t,e){return t.map(o=>({isPartiallyConnected:ls(o,e(o.type).namespaces),...o})).sort((o,n)=>+(n.state===lt.CONNECTED&&!n.isPartiallyConnected)-+(o.state===lt.CONNECTED&&!o.isPartiallyConnected)||+(n.state===lt.CONNECTED)-+(o.state===lt.CONNECTED)||+(n.state===lt.DISCONNECTED||n.state===lt.CONNECTING)-+(o.state===lt.DISCONNECTED||o.state===lt.CONNECTING)).map(({isPartiallyConnected:o,...n})=>n)}i(ku,"sortWalletsBasedOnConnectionState");function ao(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(ao,"getConciseAddress");function Tu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(Tu,"getAddress");var wu=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function vu(t){return t.map(e=>e.state).join("-")}i(vu,"hashWalletsState");function bu(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(bu,"filterBlockchainsByWalletTypes");function xu(t,e){return e===IC.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Jr(n,e))return!0;return!1})}i(xu,"filterWalletsByCategory");function ls(t,e){return!t.isHub||!t.needsNamespace||t.state!==lt.CONNECTED?!1:t.needsNamespace.data.filter(r=>!r.unsupported).some(r=>!e?.get(r.value)?.connected)}i(ls,"checkIsWalletPartiallyConnected");var cs={API_KEY:Xr};function Ht(t){return cs[t]||""}i(Ht,"getConfig");function Eu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),cs=e,cs}i(Eu,"initConfig");var Iu=20,Au=25,ps="theme-widget",us=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>qt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>qt(a,t));let r=n.isExcluded;return!r&&!o||r&&o}}}return o},"isTokenExcludedInConfig"),ds=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),Nu=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var ii,ct=i(()=>ii||(ii=new PC(Ht("API_KEY"),Ht("BASE_URL")),ii),"httpService");import{i18n as Wu}from"@lingui/core";var ai=[.5,1,3],si=1,tn=5,Qn=30,li=0;var Ye=(a=>(a[a.NO_RESULT=0]="NO_RESULT",a[a.REQUEST_FAILED=1]="REQUEST_FAILED",a[a.REQUEST_CANCELED=2]="REQUEST_CANCELED",a[a.BRIDGE_LIMIT=3]="BRIDGE_LIMIT",a[a.INSUFFICIENT_SLIPPAGE=4]="INSUFFICIENT_SLIPPAGE",a))(Ye||{});import{WidgetEvents as Bu}from"@rango-dev/queue-manager-rango-preset";var ms=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(ms||{}),fs=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(fs||{}),gs=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(gs||{}),on=(a=>(a[a.RouteEvent=Bu.RouteEvent]="RouteEvent",a[a.StepEvent=Bu.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(on||{});function ci(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Ro(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(c=>c.swapperGroup===a);if(s){let c=!0;o&&(c=o.some(l=>l===s.swapperGroup)),c&&s.types.map(l=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:l,selected:!e.includes(s.swapperGroup)})})}}),n}i(ci,"getUniqueSwappersGroups");function Mu(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Mu,"sortLiquiditySourcesByGroupTitle");function ot(t,e){return e?.[t]==="hidden"}i(ot,"isFeatureHidden");function nn(t,e){return e?.[t]==="enabled"}i(nn,"isRoutingEnabled");var Lu=i((t,e,o)=>ot("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function rn(t){return t==li?{type:"error",message:Wu.t("Slippage must be greater than or equal to 0.01")}:t>tn&&t<=Qn?{type:"warning",message:Wu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(rn,"getSlippageValidation");var Pu=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let l=Kr({config:a}),p=r;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>Kp.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),c=Array.from(n.values()),l=e()._blockchainsMapByName;if(!o||!o.type)return c;let p=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=Yo.get(u);m?.length||(m=Dn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Yo.set(u,m)),m=Lu(m,s,a.features);let f=e().blockchains({type:o.type});return m.filter(g=>o.blockchain&&g.blockchain!==o.blockchain||!f.some(d=>d.name===g.blockchain)?!1:o.searchFor?!!(st(g.symbol,o.searchFor)||st(g.address||"",o.searchFor)||st(g.name||"",o.searchFor)):!0).sort((g,d)=>{let S=e().isTokenPinned(g,o.type),y=e().isTokenPinned(d,o.type);if(S!==y)return S?-1:1;if(o.getBalanceFor){let E=o.getBalanceFor(g),N=o.getBalanceFor(d),I=Cu(E,N);if(I!==0)return I}let C=l.get(g.blockchain),T=l.get(d.blockchain),v=ts(g,C),b=ts(d,T);if(v!==b)return v?-1:1;if(g.isPopular!==d.isPopular)return g.isPopular?-1:1;if(o.searchFor){let E=nu(g,d,o.searchFor);if(E)return E}return g.isSecondaryCoin!==d.isSecondaryCoin?g.isSecondaryCoin?1:-1:C&&T?C.sort-T.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=yt(o),s=n.get(a);return s||(s=r.find(c=>yt(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>qt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(p=>{let u=a?.includes(p.swapperGroup);return s||!a||a.length===0?!u:u}).sort(Mu)},fetch:async()=>{try{let{routing:o}=e().config,n=nn("enableCentralizedSwappers",o),r=await ct().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,c={},l=[],p=r.popularTokens,u=r.swappers.filter(h=>h.enabled),m=new Set;r.tokens.forEach(h=>{m.add(h.blockchain),l.push(h)}),r.blockchains.sort((h,g)=>h.sort-g.sort).forEach(h=>{h.enabled&&m.has(h.name)&&a.set(h.name,h)}),l.forEach(h=>{let g=yt(h);c[h.blockchain]||(c[h.blockchain]=[]),s.set(g,h),c[h.blockchain]?.push(g)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c,_popularTokens:p,_swappers:u})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as _C,Catalonia as DC,Chinese as _u,Denmark as $C,English as FC,Finland as OC,French as UC,German as zC,Greece as QC,Hungary as qC,India as HC,Indonesian as GC,Italian as VC,Japanese as KC,Korea as jC,Lithuania as XC,Malay as YC,Netherlands as ZC,Pakistan as JC,Philippines as RC,Poland as ek,Portuguese as tk,Russian as ok,SaudiArabia as nk,Serbia as rk,Slovakia as ik,SouthAfrica as ak,Spanish as sk,Swahili as lk,Swedish as ck,Thai as pk,Turkish as uk,Ukrainian as dk,Vietnamese as mk}from"@rango-dev/ui";var Du=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:ak},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:nk},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:_C},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:DC},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:_u},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:_u},{title:"Danish",label:"Dansk",local:"da",SVGFlag:$C},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:ZC},{title:"English",label:"English",local:"en",SVGFlag:FC},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:RC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:OC},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:UC},{title:"German",label:"Deutsch",local:"de",SVGFlag:zC},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:QC},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:HC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:qC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:GC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:VC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:KC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:jC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:XC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:YC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:ek},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:tk},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:ok},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:rk},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:ik},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:sk},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:lk},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:ck},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:pk},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:uk},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:dk},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:JC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:mk}],an="en";var $u=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:si,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],quoteTokensRate:"default",changeQuoteTokensRate:()=>t(o=>({quoteTokensRate:o.quoteTokensRate==="default"?"reversed":"default"})),addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,c)=>{let l=s===o,p=c<=9;return l&&p}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let a=Ro(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=ot("theme",n),s=ot("language",n),c=ot("liquiditySource",n),l=r?.singleTheme,p=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...l&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||an},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||an}})},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=Kr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import Ts from"bignumber.js";import fk from"mitt";var ke=fk(),gk={on:ke.on,off:ke.off};var Fu=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...c]=a;e(l=>({...typeof s=="function"?s(l):s,lastUpdatedAt:+new Date}),...c)},"modifedSet"),o,n),"keepLastUpdated");import Ou from"bignumber.js";function Gt(t){return`${t.blockchain}${Io}${t.address}${Io}${t.symbol}`}i(Gt,"createAssetKey");function Uu(t,e){return`${Gt(e)}${Io}${t}`}i(Uu,"createBalanceKey");function qn(t){let[e,o,n]=t.split(Io);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}i(qn,"extractAssetFromBalanceKey");function ys(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Gt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Ou(r??ce).multipliedBy(o[s].amount).toString():""})})}),o}i(ys,"computeNextBalancesWithNewPrices");function Ss(t,e){let o={};return t.balances?.forEach(n=>{let r=Uu(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Ou(c??ce).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[r]=p}),o}i(Ss,"createBalanceStateForNewAccount");function Cs(t,e){for(let o in e){let n=qn(o);if(n){let r=Gt(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}}return t}i(Cs,"updateAggregatedBalanceStateForNewAccount");function hk(t,e){let o=qn(e);if(!o)return t;let n=Gt(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(hk,"removeBalanceFromAggregatedBalance");function ks(t,e,o){let n=t.connectedWallets.filter(l=>l.walletType===e);t.connectedWallets.forEach(l=>{l.walletType!==e&&(n=n.filter(p=>!(p.chain===l.chain&&p.address===l.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(l=>o.chains?.includes(l.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(l=>l.namespace?o.namespaces?.includes(l.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(l=>{let p=qn(l);if(!p)return;!!n.find(m=>Uu(m.address,{address:p.address,blockchain:m.chain,symbol:p.symbol})===l)?a=hk(a,l):s[l]&&(r[l]=s[l])}),{_balances:r,_aggregatedBalances:a}}i(ks,"computeNextStateAfterWalletBalanceRemoval");function yk(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(yk,"matchWalletDetailsWithConnectedWallet");var Sk=au(),zu=Fu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>zn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>zn(s,a))?{...a,loading:!1,error:!1,explorerUrl:yk(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>zn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n,r)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>zn(c,l)));if(s.length>0){let c=s.map(l=>{let p=!a.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:p,namespace:n,derivationPath:r,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!c.some(m=>m.walletType===u.walletType&&m.chain===u.chain)),...c]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((l,p)=>((l[p.blockchain]||=[]).push(p),l),{}),s=new Set,c=r.reduce((l,p)=>{let u=`${p.address}-${p.chain}`;return s.has(u)||(s.add(u),a[p.chain]&&(l[p.address]||(l[p.address]=[]),l[p.address]?.push(...a[p.chain]||[]))),l},{});Object.entries(c).forEach(async([l,p])=>{try{let{balances:u}=await ct().getMultipleTokenBalance({assets:p.map(({symbol:m,address:f,blockchain:h})=>({symbol:m,address:f,blockchain:h})),walletAddress:l});if(u){let m=e()._balances,f=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let g={blockChain:h.asset.blockchain,balances:[h],address:l},d={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};ys(d,g,m);let S=Ss(g,e);f=Cs(f,S),m={...m,...S}}),t(h=>({_balances:{...h._balances,...m},_aggregatedBalances:f}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(c=>c.chain===r.chain&&c.walletType!==r.walletType&&r.selected),s=!!o.find(c=>c.chain===r.chain&&c.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n,r)=>{let a=o[0];a&&(ke.emit("walletEvent",{type:"connect",payload:{walletType:a.walletType,accounts:o}}),e().addConnectedWallet(o,n,r),e().fetchBalances(o))},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=ks(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(ke.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(c=>a.includes(c.chain)?(a=a.filter(l=>l!==c.chain),{...c,selected:!0}):c);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0||!o[0])return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(l=>({address:l.address,blockchain:l.chain})),s;try{s=await ct().getWalletsDetails(a)}catch(l){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${l}`);return}let c=s.wallets;if(c){let l=e()._balances,p=e()._aggregatedBalances;c.forEach(m=>{if(m.failed)return;let f={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};ys(f,m,l);let{_balances:h,_aggregatedBalances:g}=ks(f,r,{chains:[m.blockChain]});if(p=g,l=h,!e().connectedWallets.find(S=>S.walletType===r&&S.address===m.address&&S.chain===m.blockChain))return;let d=Ss(m,e);p=Cs(p,d),l={...l,...d}}),t(m=>({_balances:{...m._balances,...l},_aggregatedBalances:p})),e().setConnectedWalletRetrievedData(o,c);let{retryOnFailedBalances:u=!0}=n||{};if(u){let m=c.filter(f=>f.failed).map(f=>({chain:f.blockChain,walletType:r,address:f.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=Gt(o),a=e()._aggregatedBalances[r]||[];if(a.length===0||!a[0])return null;let s=a[0];if(a.length===1&&n[s])return n[s];let c=n[a[0]];if(!c)return null;let l=c;return a.forEach(p=>{let u=n[p];if(!u)return;let m=new Ts(u.amount),f=new Ts(l.amount);m.isGreaterThan(f)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(Io);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>Sk(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,c)=>{let l=r[c],p=qn(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),m=l?.amount?new Ts(l.amount).shiftedBy(-l.decimals):ce;s.push({chain:n.chain,symbol:p.symbol,ticker:p.symbol,address:p.address,rawAmount:l.amount,decimal:l.decimals,amount:m.toString(),isSupported:!!u,logo:u?.image||null,usdPrice:u?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Qu(t){return Ck()(kk((...e)=>({...zu(...e),...Pu(...e),...$u(...e),...Gp(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources,quoteTokensRate:e.quoteTokensRate}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Qu,"createAppStore");var qu=wk(null);function k(){let t=vk(qu);if(bk(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(k,"useAppStore");function Hu(t){let e=xk();return e.current||(e.current=Qu(t.config)),Tk.createElement(qu.Provider,{value:e.current},t.children)}i(Hu,"AppStoreProvider");function bt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=k(),{state:r,getWalletInfo:a}=Ek(),s=k().blockchains(),{handleDisconnect:c}=Xo(),l=zp(n()),p=yu(r,a,l,e);p=Ik()?p.filter(d=>d.showOnMobile!==!1&&r(d.type).installed):p;let u=ku(p,r),m=i(d=>!o.find(S=>S.walletType===d&&S.chain===e),"isExperimentalChainNotAdded"),f=Nk(()=>{let d=p?.filter(S=>S.state===ws.CONNECTING)||[];for(let S of d)c(S)},[vu(p)]);Bk(()=>()=>{f()},[]);let h=i(d=>{let S=d.find(C=>C.type===Hn.DEFAULT);return!S||S.state===ws.NOT_INSTALLED?!1:d.filter(C=>C.state!=ws.NOT_INSTALLED&&![Hn.DEFAULT,Hn.WALLET_CONNECT_2,Hn.LEDGER].includes(C.type)&&a(C.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),g=i((d,S,y)=>ni(y,S)&&m(d)&&!Ak.includes(d)||d==Hn.DEFAULT&&!h(p),"shouldExcludeWallet");return{list:u.filter(d=>!g(d.type,e??"",s)),terminateConnectingWallets:f}}i(bt,"useWalletList");import{Modal as Pk}from"@rango-dev/ui";import _k from"react";import{create as Lk}from"zustand";var Gu="rango-widget";var Gn=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(Gu),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 Mk=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"),so=Mk;var oe=so(Lk()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,showCompactTokenSelector:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})},setShowCompactTokenSelector:o=>{t({showCompactTokenSelector:o})}}))),Wo=new Gn({onInit:()=>oe.setState({tabManagerInitiated:!0}),onClaim:()=>oe.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>oe.setState({isActiveTab:!1})});function R(t){let{watermark:e}=oe();return _k.createElement(Pk,{hasWatermark:e==="FULL",...t},t.children)}i(R,"WatermarkedModal");import{i18n as cn}from"@lingui/core";import{Alert as Xk,Button as Yk,Divider as yi,Image as Zk,MessageBox as Jk,RadioRoot as Rk}from"@rango-dev/ui";import pe,{useEffect as eT,useMemo as tT,useState as oT}from"react";import{i18n as Ok}from"@lingui/core";import{Typography as Ru}from"@rango-dev/ui";import sn from"react";function pi(t,e){return t.find(o=>o.name===e)?.logo}i(pi,"getBlockchainLogo");import{darkTheme as Dk,Image as $k,styled as Vt,Typography as Fk}from"@rango-dev/ui";var ui=Vt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${Dk} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),di=Vt("div",{display:"flex",gap:"$8",alignItems:"center"}),Ku=Vt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),ju=Vt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Xu=Vt("div",{display:"flex",gap:"$6",alignItems:"center"}),Yu=Vt("div",{paddingLeft:"48px"}),Zu=Vt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),Ju=Vt(Fk,{maxWidth:"100px"}),mi=Vt($k,{variants:{disabled:{true:{opacity:"0.5"}}}});function fi(t){let{namespace:e}=t,o=k().blockchains();return sn.createElement(ui,{unsupported:!0},sn.createElement(di,null,sn.createElement(mi,{src:pi(o,e.id),size:40,disabled:!0}),sn.createElement(ju,null,sn.createElement(Ru,{variant:"label",size:"large"},e.label),sn.createElement(Ru,{variant:"body",size:"xsmall"},Ok.t("(Currently not supported)")))))}i(fi,"NamespaceUnsupportedItem");import{Checkbox as Vk,Radio as Kk}from"@rango-dev/ui";import Es from"react";import{i18n as xs}from"@lingui/core";import{ChevronDownIcon as zk,ChevronUpIcon as Qk,Divider as qk,Typography as Vn}from"@rango-dev/ui";import Ae,{useEffect as Hk,useState as Gk}from"react";import{Image as td,Tooltip as od,Typography as Uk}from"@rango-dev/ui";import _t from"react";import{styled as ed}from"@rango-dev/ui";var vs=ed("div",{display:"flex",alignItems:"center",padding:0,margin:0}),gi=ed("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 bs=3;function nd(t){let{chains:e}=t;return _t.createElement(vs,{id:"widget-supported-chains-container"},e.slice(0,bs).map((o,n)=>_t.createElement(od,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},_t.createElement(gi,{firstItem:n===0},_t.createElement(td,{src:o.logo,size:15})))),e.length>bs&&_t.createElement(od,{container:W(),side:"bottom",align:"start",sideOffset:4,content:_t.createElement(vs,null,e.map((o,n)=>_t.createElement(gi,{key:o.name,firstItem:n===0},_t.createElement(td,{src:o.logo,size:15}))))},_t.createElement(gi,null,_t.createElement(Uk,{variant:"body",size:"xsmall"},"+",e.length-bs))))}i(nd,"SupportedChainsList");function Mo(t){let{namespace:e,error:o,suffix:n,connected:r,address:a,onClick:s}=t,[c,l]=Gk(!1),p=k().blockchains();Hk(()=>l(!1),[o]);let u=e.getSupportedChains(p),m=!o&&!r&&u.length>1;return Ae.createElement(ui,{hasError:!!o,clickable:!!s,onClick:s},Ae.createElement(di,null,Ae.createElement(mi,{src:pi(p,e.id),size:40}),Ae.createElement(Ku,{showSupportedChains:m||r||!!o},Ae.createElement(Xu,null,Ae.createElement(Vn,{variant:"label",size:"large"},e.label),r&&Ae.createElement(Vn,{variant:"body",size:"small",color:"success500"},xs.t("Connected")),!!o&&Ae.createElement(Vn,{variant:"body",size:"small",color:"error500"},xs.t("Connection failed"))),m&&Ae.createElement(nd,{chains:u}),r&&Ae.createElement(Ju,{variant:"body",size:"small",color:"neutral700"},a),o&&Ae.createElement(Zu,{onClick:()=>l(f=>!f)},Ae.createElement(Vn,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},xs.t("See why")),c?Ae.createElement(Qk,{size:12,color:"gray"}):Ae.createElement(zk,{size:12,color:"gray"}))),n),!!o&&c&&Ae.createElement(Ae.Fragment,null,Ae.createElement(qk,{size:4}),Ae.createElement(Yu,null,Ae.createElement(Vn,{variant:"body",size:"small",color:"neutral700"},o))))}i(Mo,"NamespaceItem");function rd(t){let{onClick:e,type:o,namespace:n}=t;return Es.createElement(Mo,{namespace:n,onClick:e,suffix:o==="radio"?Es.createElement(Kk,{value:n.value}):Es.createElement(Vk,{checked:t.value})})}i(rd,"NamespaceListItem");import{Button as jk,styled as id}from"@rango-dev/ui";var hi=id("ul",{padding:0,paddingTop:"$16",paddingBottom:"$20",margin:0}),ln=id(jk,{minHeight:"$40"});function Kn(t){let{targetWallet:e}=t.value,o=e.properties?.find(d=>d.name==="namespaces"),n=e.isHub,r=e.isHub?o?.value.selection==="single":e.needsNamespace?.selection==="single",a=n?o?.value:e.needsNamespace,s=e.image,c=k().blockchains(),[l,p]=oT([]),u=tT(()=>a?.data.filter(d=>!d.unsupported),[e?.type]),m=i(d=>{p(r?[d]:S=>S.includes(d)?S.filter(y=>y!==d):S.concat(d))},"onSelect"),f=u?.length===l.length,h=i(()=>{if(r)throw new Error("onSelectAll should not be called on single selection mode.");f?p([]):u&&p(u.map(d=>d.value))},"onSelectAll"),g=i(d=>r?pe.createElement(Rk,{value:l?.[0]},d):pe.createElement(pe.Fragment,null,d),"wrapRadioRoot");return eT(()=>{if(!r&&u)if(t.value.defaultSelectedChains?.length){let d=u.filter(S=>S.getSupportedChains(c).some(y=>t.value.defaultSelectedChains?.includes(y.name)));p(d.map(S=>S.value))}else p(u.map(d=>d.value))},[]),pe.createElement(pe.Fragment,null,pe.createElement(Jk,{type:"info",title:cn.t("Connect {wallet}",{wallet:e.title}),description:cn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:pe.createElement(Zk,{src:s,size:45})}),r?pe.createElement(pe.Fragment,null,pe.createElement(yi,{size:20}),pe.createElement(Xk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:cn.t("This wallet can only connect to one chain at a time. ")})):pe.createElement(pe.Fragment,null,pe.createElement(yi,{size:30}),pe.createElement(Yk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:h},f?cn.t("Deselect all"):cn.t("Select all"))),pe.createElement(hi,null,g(pe.createElement(pe.Fragment,null,a?.data.map((d,S,y)=>pe.createElement(pe.Fragment,{key:d.id},d.unsupported?pe.createElement(fi,{namespace:d}):pe.createElement(rd,{value:l.includes(d.value),namespace:d,type:r?"radio":"checkbox",onClick:()=>m(d.value)}),S!==y.length-1&&pe.createElement(yi,{size:10})))))),pe.createElement(yi,{size:20}),pe.createElement(ln,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!l.length,onClick:()=>t.onConfirm(l)},cn.t("Connect")))}i(Kn,"Namespaces");import{i18n as Si}from"@lingui/core";import{Button as pT,Divider as Ns,Image as uT,MessageBox as dT}from"@rango-dev/ui";import{useWallets as mT}from"@rango-dev/wallets-react";import Ze from"react";import{styled as nT}from"@rango-dev/ui";var ad=nT("div",{display:"flex",justifyContent:"end"});import{i18n as Is}from"@lingui/core";import{Button as rT,Spinner as iT}from"@rango-dev/ui";import{useWallets as aT}from"@rango-dev/wallets-react";import As,{useLayoutEffect as sT,useRef as lT,useState as cT}from"react";var sd=i(function(e){let{walletType:o,namespace:n,initialConnect:r}=e,{connect:a,disconnect:s,state:c}=aT(),[l,p]=cT(null),m=c(o).namespaces?.get(n.value),f=m.accounts?.[0]?.split(":"),h=lT(!1);sT(()=>{r&&!h.current&&g(o,n.value)},[]);let g=i(async(y,C)=>{try{h.current=!0,await a(y,[{namespace:C,network:""}])}catch(T){p(T)}finally{h.current=!1}},"handleConnectNamespace"),d=i(async y=>{p(null),y.connected?await s(o,[n.value]):g(o,n.value)},"handleButtonClick"),S=i(()=>m.connected?Is.t("Disconnect"):l?Is.t("Try again"):Is.t("Connect"),"getButtonText");return As.createElement(Mo,{namespace:n,connected:m.connected,error:l?.message,address:m.connected?ao(f?.[f?.length-1]):"",suffix:m.connecting?As.createElement(iT,{color:"info"}):As.createElement(rT,{id:"widget-name-space-connect-btn",variant:"ghost",type:m.connected?"error":"primary",size:"xsmall",onClick:async()=>d(m)},S())})},"NamespaceDetachedItem");function jn(t){let{selectedNamespaces:e,value:o,onDisconnectWallet:n}=t,{targetWallet:r}=o,{state:a}=mT(),s=a(r.type);return Ze.createElement(Ze.Fragment,null,Ze.createElement(dT,{type:"info",title:Si.t("Connect {wallet}",{wallet:r.type}),description:Si.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:Ze.createElement(uT,{src:r.image,size:45})}),Ze.createElement(Ns,{size:30}),Ze.createElement(ad,null,Ze.createElement(pT,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:s.connecting||!s.connected,onClick:n},Si.t("Disconnect wallet"))),Ze.createElement(hi,{id:"widget-detached-namespace-list",as:"ul"},r.needsNamespace?.data.map((c,l,p)=>Ze.createElement(Ze.Fragment,{key:c.id},c.unsupported?Ze.createElement(fi,{namespace:c}):Ze.createElement(sd,{walletType:r.type,namespace:c,initialConnect:e?.includes(c.value)}),l!==p.length-1&&Ze.createElement(Ns,{size:10})))),Ze.createElement(Ns,{size:20}),Ze.createElement(ln,{id:"widget-name-space-confirm-btn",type:"primary",onClick:t.onConfirm},Si.t("Done")))}i(jn,"Detached");import{i18n as pn}from"@lingui/core";import{Divider as cd,Image as yT,MessageBox as ST,Select as CT,TextField as kT}from"@rango-dev/ui";import St,{useEffect as TT,useState as pd}from"react";import{namespaces as fT}from"@rango-dev/wallets-shared";var Ci={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Bs(t){let e=t?fT[t]?.derivationPaths:null;return e?[...e,Ci]:[]}i(Bs,"getDerivationPaths");import{Button as gT,styled as Ws,Typography as hT}from"@rango-dev/ui";var ld=Ws("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Ms=Ws(hT,{paddingLeft:"$10"}),Ls={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},zP=Ws(gT,{minHeight:"$40"});var ud="0";function Xn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=pd(null),[c,l]=pd(ud),p=a===Ci.id,u=Bs(o),m=i(({value:h})=>{let g=u?.find(d=>d.id===h);g&&(a===Ci.id&&Number.isNaN(Number(c))&&l(ud),s(g.id))},"handleDerivationPathItemClick"),f=i(()=>{let h=u.find(g=>g.id===a);if(h)e(h.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return TT(()=>{s(Bs(o)[0]?.id||null)},[o]),St.createElement(St.Fragment,null,St.createElement(cd,{size:20}),St.createElement(ST,{type:"info",title:pn.t("Select Derivation Path"),description:pn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:St.createElement(yT,{src:n,size:45})}),St.createElement(ld,null,St.createElement(Ms,{variant:"body",size:"xsmall",color:"$neutral600"},pn.t("Choose Derivation Path Template")),St.createElement(CT,{id:"widget-derivation-path-template-select",value:a||"",options:u.map(h=>({value:h.id,label:h.label})),variant:"filled",handleItemClick:m,styles:{trigger:Ls}}),St.createElement(cd,{size:20}),St.createElement(Ms,{variant:"body",size:"xsmall",color:"$neutral600"},p?pn.t("Enter Path"):pn.t("Enter Index")),St.createElement(kT,{id:"widget-derivation-path-template-input",type:p?"text":"number",variant:"contained",value:c,onChange:h=>l(h.target.value),style:Ls})),St.createElement(ln,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:f,disabled:!u||!a||!c},pn.t("Confirm")))}i(Xn,"DerivationPath");import{i18n as un}from"@lingui/core";import{Image as bT,MessageBox as Ps,WalletState as xT}from"@rango-dev/ui";import{useWallets as ET}from"@rango-dev/wallets-react";import Lo from"react";import{keyframes as wT,styled as ki}from"@rango-dev/ui";var JP=ki("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),dd=ki("div",{position:"relative"}),vT=wT({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),md=ki("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${vT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),fd=ki("div",{"& img":{borderRadius:"50%"}});function _s(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=ET();return On(a(n))===xT.CONNECTED?Lo.createElement(Ps,{type:"success",title:un.t("Wallet Connected"),description:un.t("Your wallet is connected, you can use it to swap.")}):o?Lo.createElement(Ps,{type:"error",title:un.t("Failed to Connect"),description:o||un.t("Your wallet is not connected. Please try again.")}):Lo.createElement(Ps,{type:"loading",title:un.t("Connecting to your wallet"),description:un.t("Click connect in your wallet popup."),icon:Lo.createElement(dd,null,Lo.createElement(fd,null,Lo.createElement(bT,{src:r,size:45})),Lo.createElement(md,null))})}i(_s,"ConnectStatus");import{i18n as Ds}from"@lingui/core";import{Button as IT,Divider as gd,MessageBox as AT}from"@rango-dev/ui";import Ti from"react";function $s(t){let{displayName:e,onConfirm:o,id:n}=t;return Ti.createElement(AT,{id:n,title:Ds.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:Ds.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},Ti.createElement(gd,{size:18}),Ti.createElement(gd,{size:32}),Ti.createElement(IT,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Ds.t("Confirm")))}i($s,"ExperimentalChain");function hd(t,e){return t().status==="init"&&!!e}i(hd,"isOnStatus");function Yn(t){return t().status==="namespace"}i(Yn,"isOnNamespace");function Zn(t){return t().status==="derivationPath"}i(Zn,"isOnDerivationPath");function xo(t){return t().status==="detached"}i(xo,"isOnDetached");var MT=3e3,LT=300;function Jn(t){let e=WT(),[o,n]=yd(!1),[r,a]=yd(),s=i(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=bt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:m,resetState:f,handleDisconnect:h}=Xo(),g=i(v=>{u(t.wallet,v).then(T).catch(s)},"handleConfirmNamespaces"),d=i(()=>{y()},"handleDetachedConfirm"),S=i(v=>{if(!v)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(v).then(T).catch(s)},"handleDerivationPathConfirm"),y=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),f(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),T=i((v,b)=>{let E=v.status==="connected",N=["disconnected","disconnected-unhandled"].includes(v.status);E?(t.onConnect?.(),b||(e.current=setTimeout(y,MT))):N&&y()},"afterConnected");return BT(()=>{if(t.wallet){C();let v=!1,b=!0;i(()=>{setTimeout(()=>{b=!1,v||n(!0)},LT)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(N=>{["namespace","Detached","derivation-path"].includes(N.status)||(v=!0),T(N,b)}).catch(s)}},[t.wallet]),lo.createElement(R,{id:t.id,open:o,onClose:y,onExit:()=>{C(),c(),t.onClose&&t.onClose()},container:W()},hd(m,t.wallet)&&lo.createElement(lo.Fragment,null,lo.createElement(_s,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),lo.createElement(NT,{direction:"vertical",size:32})),Yn(m)&&lo.createElement(Kn,{onConfirm:g,value:m().namespace}),Zn(m)&&lo.createElement(Xn,{onConfirm:S,value:m().derivationPath}),xo(m)&&lo.createElement(jn,{onConfirm:d,onDisconnectWallet:()=>void h(m().namespace.targetWallet),value:m().namespace,selectedNamespaces:m().selectedNamespaces}))}i(Jn,"StatefulConnectModal");import Ka from"react";import PT,{Fragment as _T}from"react";import{MemoryRouter as DT,useInRouterContext as $T}from"react-router";function wi({children:t}){let o=$T()?_T:DT;return PT.createElement(o,null,t)}i(wi,"AppRouter");import{I18nManager as P0}from"@rango-dev/ui";import Ep from"react";import Qe from"react";import{useRoutes as m0}from"react-router-dom";var O={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 mn,useRef as Ni}from"react";import nt from"bignumber.js";import{create as Yd}from"zustand";import{subscribeWithSelector as Zd}from"zustand/middleware";import{createContext as FT,useContext as OT}from"react";var Sd=FT({swapMode:"swap",isMultiMode:!1});function Ct(){let{swapMode:t,isMultiMode:e}=OT(Sd);return{swapMode:t,isMultiMode:e}}i(Ct,"useSwapMode");import{i18n as Tt}from"@lingui/core";import{getRelatedWalletOrNull as QT,RouteEventType as gD}from"@rango-dev/queue-manager-rango-preset";import Ke from"bignumber.js";import{PendingSwapNetworkStatus as er}from"rango-types";import{i18n as Ve}from"@lingui/core";var ne=i(()=>({genericServerError:Ve.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Ve.t("Please reset your liquidity sources."),description:Ve.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Ve.t("No Routes Found."),description:Ve.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:Ve.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Ve.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Ve.t("High Price Impact"),title:Ve.t("Price impact is too high!"),description:Ve.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Ve.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Ve.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Ve.t("USD Price Unknown"),title:Ve.t("USD Price Unknown, Cannot calculate Price Impact."),description:Ve.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Ve.t("Confirm USD Price Unknown")}}),"errorMessages");function Cd(t){return t.type===0?t.diagnosisMessage??ne().noResultError.title:t.type===1?t.diagnosisMessage??ne().genericServerError:""}i(Cd,"getQuoteErrorMessage");import{i18n as vi}from"@lingui/core";var Po=i(()=>({connectWallet:vi.t("Connect Wallet"),swap:vi.t("Swap"),swapAnyway:vi.t("Swap anyway"),ethWarning:vi.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Fs(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(Fs,"getFeeLabel");var Os=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],kd=100,Td=30,wd=15,vd=60;var bd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],xd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as zT}from"@rango-dev/queue-manager-rango-preset";import tD from"bignumber.js";function Id(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(Id,"getRequiredBalanceOfWallet");function jt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(jt,"getPriceImpactLevel");function bi(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=zT(t.steps);if(!r||!n)return{fromBlockchain:null,fromToken:void 0,toBlockchain:null,toToken:void 0,inputAmount:""};let s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},c=Eo(a?a.toBlockchain:n.fromBlockchain,e),l=Eo(r.toBlockchain,e),p=o(a?{blockchain:c?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:c?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),u=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:c,fromToken:p,toBlockchain:l,toToken:u,inputAmount:m}}i(bi,"createRetryQuote");function dn(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=Rn(o),s=kt(o);if(o&&a&&s){let p=Kt(a.toString(),s.toString());if(!!p&&Md(a,p)){let m=Ei(o?.swaps,n),f=jt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:m,warningLevel:f}}}if(e&&_d(e,o))return{type:4,usdValueChange:_(kt(o)?.minus(kt(e)??0).toString()??"0",null,2),percentageChange:_(Kt(kt(e)??"1",kt(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=Ii(o.swaps),l=r>tn;if(Pd(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:Ld(o,r),minRequiredSlippage:c};return null}i(dn,"generateQuoteWarnings");function Ad(t){return![4].includes(t.type)}i(Ad,"isQuoteWarningConfirmationRequired");function Kt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Us(t.toString(),e.toString());return n&&n<0?n:null}i(Kt,"getPriceImpact");var Nd=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"),xi=i((t,e)=>e.sort((o,n)=>{let r=i(p=>p.scores?.find(u=>u.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let c=o.requestId.toLowerCase(),l=n.requestId.toLowerCase();return c.localeCompare(l)}),"sortQuotesBy"),Bd=i((t,e,o)=>{let n=e[0];if(!e.length||!n)return null;if(!t)return{requestAmount:o,validationStatus:null,...n};let r=new Set(t.swaps.map(s=>s.swapperId)),a=e.find(s=>{let c=new Set(s.swaps.map(l=>l.swapperId));return Array.from(r).every(l=>c.has(l))});return{requestAmount:o,validationStatus:null,...a||n}},"getDefaultQuote"),Wd=i(t=>{let e=i((o,n)=>{let r=Os.indexOf(o.value),a=Os.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Md(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return bd.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Ke(r)))}i(Md,"hasHighValueLoss");function Dd(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Ke(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ke(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(Dd,"hasLimitError");function $d(t){let e=(t||[]).filter(c=>{let l=c.fromAmountMinValue?new Ke(c.fromAmountMinValue):null,p=c.fromAmountMaxValue?new Ke(c.fromAmountMaxValue):null;return c.fromAmountRestrictionType==="EXCLUSIVE"?l?.gte(c.fromAmount)||p?.lte(c.fromAmount):l?.gt(c.fromAmount)||p?.lt(c.fromAmount)})[0];if(!e)return{swap:void 0,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new Ke(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ke(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=Tt.t({id:"Required: >= {min} {symbol}",values:{min:_(o,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=Tt.t({id:"Required: > {min} {symbol}",values:{min:_(o,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=Tt.t({id:"Required: <= {max} {symbol}",values:{max:_(n,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=Tt.t({id:"Required: < {max} {symbol}",values:{max:_(n,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i($d,"getLimitErrorMessage");function Fd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:Po().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!r||r==="0"?{title:Po().swap,action:"confirm-swap",disabled:!0}:s?{title:Po().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:Po().ethWarning,action:"confirm-warning",disabled:!1}:{title:Po().swap,action:"confirm-swap",disabled:!1}:{title:Po().connectWallet,action:"connect-wallet",disabled:!1}}i(Fd,"getSwapButtonState");function zs(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(ce))&&e&&e!=="0"&&n!==0)}i(zs,"canComputePriceImpact");function Qs(t,e){let o=ce;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(!r||r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Ke(r.amount).multipliedBy(a||0))}return o}i(Qs,"getUsdFeeOfStep");function Ei(t,e){return t.reduce((o,n)=>o.plus(Qs(n,e)),ce)}i(Ei,"getTotalFeeInUsd");function qs(t){let e=ce,o=new Ke(t.price||0);return e=e.plus(new Ke(t.amount).multipliedBy(o)),e}i(qs,"getUsdFee");function Od(t){return t.reduce((e,o)=>e.plus(qs(o)),ce)}i(Od,"getTotalFeesInUsd");function Ud(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(Ud,"getFeesGroup");function zd(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?Object.fromEntries(e):null}i(zd,"checkSlippageErrors");function Ld(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?Object.fromEntries(o):null}i(Ld,"checkSlippageWarnings");function Ii(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(Ii,"getMinRequiredSlippage");function Pd(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Pd,"hasProperSlippage");function Qd(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:c,excludeLiquiditySources:l,slippage:p,affiliateRef:u,affiliatePercent:m,affiliateWallets:f,destination:h,contractCall:g}=t,d=a?.reduce((C,T)=>(C[T.chain]=T.address,C),{}),S=[];return r?.forEach(C=>{S.push({blockchain:C.chain,addresses:[C.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:m??void 0,affiliateWallets:f??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:S,selectedWallets:d??{},slippage:p.toString(),contractCall:g,...h&&{destination:h},...l&&{swapperGroups:s.concat(c??[]),swappersGroupsExclude:!0},...!l&&{swapperGroups:c?.filter(C=>!s.includes(C)),swappersGroupsExclude:!1}}}i(Qd,"createQuoteRequestBody");function qd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}i(qd,"getWalletsForNewSwap");function Rn(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ke(e).multipliedBy(o)}i(Rn,"getUsdInputFrom");function kt(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1]?.to.usdPrice;if(!(!e||!o))return new Ke(e).multipliedBy(o)}i(kt,"getUsdOutputFrom");function Us(t,e){return new Ke(e).div(new Ke(t)).minus(1).multipliedBy(kd).toNumber()}i(Us,"getPercentageChange");function _d(t,e){let o=Rn(t),n=kt(t),r=kt(e);if(!o||!n||!r)return!1;let a=Us(n.toString(),r.toString());return xd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}i(_d,"isOutputAmountChangedExcessively");function Hd(t,e,o){let n=t.validationStatus,r=No({filter:"required",quote:t});return e.sort((s,c)=>r.indexOf(s.chain)-r.indexOf(c.chain)).flatMap(s=>Id(s,n)||[]).filter(s=>!s.ok).map(s=>{let c=s.asset.symbol,l=_(new Ke(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=_(new Ke(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=Tt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=Tt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=Tt.t(" for input and network fee")),Tt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:p,symbol:c,reason:u,currentAmount:l,blockchain:ht(s.asset.blockchain,o)}})})}i(Hd,"generateBalanceWarnings");function tr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==er.NetworkChanged}i(tr,"isNetworkStatusInWarningState");function Gd(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,"")),tr(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let p=(e?QT(t,e):null)?.walletType,u=p?o?.(p)?.name:null;switch(e?.networkStatus){case er.WaitingForConnectingWallet:r=u?Tt.t("Connect {wallet}",{wallet:u}):r;break;case er.WaitingForQueue:r=r||Tt.t("Waiting for other running tasks to be finished");break;case er.WaitingForNetworkChange:r=r||Tt.t("Waiting for changing wallet network");break;case er.NetworkChangeFailed:r=r||Tt.t("The network switch could not be completed. Please try again, or switch the network manually in your wallet.");break;default:r=r||"";break}}a=a||"",r=r||"";let c=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:c}}}i(Gd,"getSwapMessages");function Vd(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(Vd,"getLastConvertedTokenInFailedSwap");function Kd(t){return t.status==="failed"}i(Kd,"shouldRetrySwap");function jd(t,e,o,n,r,a){if(!n||t)return!0;let s=No({filter:"all",quote:n}),c=No({filter:"required",quote:n}),l=s.every(m=>r.some(f=>f.chain===m)),p=c.every(m=>r.some(f=>f.chain===m)),u=o&&a?Zo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}i(jd,"isConfirmSwapDisabled");function Xd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Xd,"isTokensIdentical");var Ai=i((t,e)=>t?.usdPrice?new nt(e||ce).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),Jd=i(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new nt(0),outputUsdValue:new nt(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=ce,a=o.inputUsdValue;return Fn(o.inputAmount)?(e&&(n=e?.outputAmount?new nt(e?.outputAmount):null,a=Rn(e)??ce,r=kt(e)??ce),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new nt(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new nt(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new nt(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:Ai(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 nt(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),sanitizeInputAmount:e=>{let o=gu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=e;Rr(e)||(o=su(o),o=lu(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new nt(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Ai(n.fromToken,o)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Ai(n??null,s),outputUsdValue:new nt(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?Ai(e.toToken,e.outputAmount?.toString()||""):new nt(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new nt(0),inputUsdValue:new nt(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new nt(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})}),"initializer"),Rd=Yd()(Zd(Jd)),em=Yd()(Zd(Jd)),qT=so(Rd),HT=so(em);function U(){let{swapMode:t}=Ct();return so(t==="refuel"?em:Rd)}i(U,"useQuoteStore");var tm=i((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ke.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&&ke.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})},"subscribeCallback"),om=qT.subscribe(tm),nm=HT.subscribe(tm);function rm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=U()(),u=k().config,m=k().fetchStatus,f=k().blockchains(),{findToken:h}=k(),{setAffiliateRef:g,setAffiliatePercent:d,setAffiliateWallets:S}=k(),y=u?.from?.tokens,C=u?.from?.blockchains,T=u?.to?.tokens,v=u?.to?.blockchains,b=Ni(void 0),E=Ni(void 0),N=Ni(void 0),I=Ni(void 0);mn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),mn(()=>{if(m==="success"){r();let x=f.find(M=>M.name===u?.from?.blockchain),w=u?.from?.token,B=w&&h(w);(x||!x&&N.current)&&n(x??null),B?a({token:B,meta:{blockchains:f}}):!B&&b.current&&a({token:null}),N.current=u?.from?.blockchain,b.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,m]),mn(()=>{us(s,y)&&a({token:null}),ds(l,C)&&n(null)},[y,C]),mn(()=>{us(c,T)&&a({token:null}),ds(p,v)&&o(null)},[T,v]),mn(()=>{if(m==="success"){r();let x=f.find(M=>M.name===u?.to?.blockchain),w=u?.to?.token,B=w&&h(w);(x||!x&&I.current)&&o(x??null),B?e({token:B,meta:{blockchains:f}}):!B&&E.current&&e({token:null}),I.current=u?.to?.blockchain,E.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,m]),mn(()=>{g(u?.affiliate?.ref??null),d(u?.affiliate?.percent??null),S(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(rm,"useSyncStoresWithConfig");import{useEffect as Vs,useRef as GT}from"react";import{useInRouterContext as VT,useLocation as KT,useSearchParams as jT}from"react-router-dom";function Hs(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}i(Hs,"convertTokenSearchParamToAsset");function Gs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Gs,"tokenToSearchParam");function js(){let t=KT(),[e,o]=jT(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:m,setInputAmount:f}=U()(),h=k().fetchStatus,g=k().blockchains(),d=VT(),{updateIframe:S,updateCampaignMode:y}=k(),C=k().isInCampaignMode(),T=GT(),{findToken:v}=k(),b=i(()=>{let N={};for(let[L,Y]of e.entries())L.startsWith("utm_")&&(N[L]=Y);let I=e.get("fromAmount"),x=e.get("fromBlockchain"),w=e.get("fromToken"),B=e.get("toBlockchain"),M=e.get("toToken"),$=e.get("autoConnect"),Q=e.get("clientUrl"),K=e.get("liquiditySources"),j=e.get("blockchain");return{fromAmount:I,fromBlockchain:x,fromToken:w,toBlockchain:B,toToken:M,autoConnect:$,clientUrl:Q,liquiditySources:K,utmQueryParams:N,blockchain:j}},"getUrlSearchParams"),E=i(N=>{for(let I in N)N[I]||delete N[I];o(N,{replace:!0})},"updateUrlSearchParams");Vs(()=>{let{autoConnect:N,clientUrl:I,utmQueryParams:x,blockchain:w}=b();d&&h==="success"&&E({fromBlockchain:n?.name,fromToken:Gs(a),toBlockchain:r?.name,toToken:Gs(s),fromAmount:c,autoConnect:N??void 0,clientUrl:I??void 0,blockchain:w??void 0,liquiditySources:C?T.current:void 0,...x})},[t.pathname,c,n,a,r,s,C,h]),Vs(()=>{if(!d)return;let N=b();if(!T.current&&N.liquiditySources&&(T.current=N.liquiditySources),N.fromAmount&&f(N.fromAmount),h==="success"){let I=g.find(Q=>Q.name===N.fromBlockchain),x=N.fromToken&&I&&Hs(N.fromToken,I),w=x?v(x):void 0,B=g.find(Q=>Q.name===N.toBlockchain),M=N.toToken&&B&&Hs(N.toToken,B),$=M?v(M):void 0;I&&(l(I),w&&u({token:w,meta:{blockchains:g}})),B&&(p(B),$&&m({token:$,meta:{blockchains:g}}))}},[h]),Vs(()=>{let{clientUrl:N,liquiditySources:I}=b();S("clientUrl",N||void 0),y("liquiditySources",I?.split(",")??void 0)},[])}i(js,"useSyncUrlAndStore");import{i18n as Sn}from"@lingui/core";import{Alert as gv,Button as hv,darkTheme as yv,Divider as xl,DoneIcon as Sv,styled as Cv,TextField as kv,Typography as Tv}from"@rango-dev/ui";import Xe,{useState as wv}from"react";import{useNavigate as vv,useSearchParams as bv}from"react-router-dom";import{ChevronRightIcon as XT,Divider as cm,Image as YT,Typography as pm}from"@rango-dev/ui";import xt from"react";import{darkTheme as im,styled as Xs}from"@rango-dev/ui";var am=Xs("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${im} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${im} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),sm=Xs("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),lm=Xs("div",{display:"flex"});function Ys(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return xt.createElement(sm,null,xt.createElement(pm,{size:"large",variant:"label"},n),xt.createElement(cm,{size:10}),xt.createElement(am,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},xt.createElement(lm,null,r&&xt.createElement(xt.Fragment,null,xt.createElement(YT,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),xt.createElement(cm,{size:4,direction:"horizontal"})),xt.createElement(pm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),xt.createElement(XT,{size:12,color:"black"})))}i(Ys,"BlockchainSelectorButton");import{i18n as tl}from"@lingui/core";import{Button as ew,Divider as fm,MessageBox as tw}from"@rango-dev/ui";import co,{useEffect as gm,useState as ol}from"react";import{i18n as Bi}from"@lingui/core";import{Divider as _o,ExternalLinkIcon as JT,Image as RT,Typography as gn}from"@rango-dev/ui";import Te from"react";var um="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function dm(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(dm,"generateExplorerLink");import{Button as ZT,darkTheme as fn,styled as Zs}from"@rango-dev/ui";var Js=Zs("a",{textDecoration:"none",color:"$colors$neutral700",[`.${fn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${fn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${fn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${fn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),mm=Zs("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${fn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${fn} &`]:{color:"$colors$neutral900"}}}),Rs=Zs(ZT,{minHeight:"$40"});function el(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,c=dm(n.address,s),l=i(()=>window.open(um,"_blank"),"onClickLearnMore");return Te.createElement(R,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:r,container:W()},Te.createElement(mm,null,Te.createElement(RT,{src:n.image===""?jr:n.image,size:45,type:"circular"}),Te.createElement(_o,{size:4}),Te.createElement(gn,{variant:"title",size:"medium"},n.symbol),Te.createElement(gn,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),Te.createElement(_o,{size:4}),Te.createElement(gn,{variant:"body",size:"medium"},c?Te.createElement(Js,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,Te.createElement(JT,{size:12,color:"gray"})):Te.createElement(Js,null,n.address)),Te.createElement(_o,{size:4}),n.coinSource&&Te.createElement(gn,{className:"_coin-source",variant:"body",size:"xsmall"},Bi.t("via")," ",Te.createElement(gn,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),Te.createElement(_o,{size:"32"}),Te.createElement(gn,{size:"medium",variant:"body",className:"_custom-token-description"},Bi.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."))),Te.createElement(_o,{size:40}),Te.createElement(_o,{size:10}),Te.createElement(Rs,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Bi.t("Import Anyway")),Te.createElement(_o,{size:10}),Te.createElement(Rs,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},Bi.t("Learn More")))}i(el,"CustomTokenModal");function or(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=k(),[m,f]=ol(!1),[h,g]=ol(!1),[d,S]=ol(!1),y=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),C=i(()=>{n?.type!=="network-error"&&s?.(),f(!1)},"closeErrorModal"),T=i(()=>{S(!0),C()},"handleErrorModalButtonClick"),v=i(()=>{d&&n?.type==="network-error"&&(S(!1),y()),l()},"handleExit"),b=i(()=>{e&&(u(e),c())},"handleSubmit");return gm(()=>{n&&f(!0)},[n]),gm(()=>{o&&e&&g(!0)},[o,e]),co.createElement(co.Fragment,null,co.createElement(R,{open:m,dismissible:!0,id:"widget-add-custom-token-modal",onClose:C,onExit:v,container:W()},co.createElement(tw,{title:n?.title??"",type:"error",description:n?.message||tl.t("Failed Network, Please retry.")},co.createElement(fm,{size:40}),co.createElement(fm,{size:10}),co.createElement(ew,{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"?tl.t("Retry"):tl.t("Add another custom token")))),o&&e&&co.createElement(el,{blockchain:o,token:e,onSubmitClick:b,onClose:()=>g(!1),open:h,onExit:p}))}i(or,"ImportCustomToken");import{useManager as cv}from"@rango-dev/queue-manager-react";import{BottomLogo as pv,Divider as Km,Header as uv}from"@rango-dev/ui";import Be,{useEffect as Oi,useLayoutEffect as dv,useRef as jm,useState as Xm}from"react";import{useRef as ow}from"react";function nr(){return window.self!==window.top}i(nr,"isAppLoadedIntoIframe");function nl(){let t=ow(null),{iframe:e}=k(),o=nr()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(c=>{for(let l of c)n({type:"widget_height",data:{height:l.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(nl,"useIframe");import{useNavigate as nw}from"react-router-dom";function je(){let t=nw();return()=>t(-1)}i(je,"useNavigateBack");import{useLayoutEffect as rw,useState as rr}from"react";var hm=480,ym=768,Sm=1024,Cm=1200,iw=i(()=>{let[t,e]=rr(!1),[o,n]=rr(!1),[r,a]=rr(!1),[s,c]=rr(!1),[l,p]=rr(!1),u=i(()=>{e(window.innerWidth<=hm),n(window.innerWidth>hm&&window.innerWidth<=ym),a(window.innerWidth>ym&&window.innerWidth<=Sm),c(window.innerWidth>Sm&&window.innerWidth<=Cm),p(window.innerWidth>Cm)},"handleResize");return rw(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),hn=iw;import{createTheme as pl,darkTheme as Sw,lightTheme as Cw}from"@rango-dev/ui";import{useEffect as kw,useState as Tw}from"react";import{theme as hw,darkColors as yw}from"@rango-dev/ui";import ll from"react";var Wi=16,Mi=255,km=.11;function aw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(aw,"expandShortHexColor");function sw(t,e){return t.padStart(e,"0")}i(sw,"pad");function rl(t){let e=Math.min(Math.max(Math.round(t),0),Mi);return sw(e.toString(Wi),2)}i(rl,"intToHex");function lw(t){return`#${rl(t.red)}${rl(t.green)}${rl(t.blue)}`}i(lw,"rgbToHex");function cw(t){let e=parseInt(t.slice(1,3),Wi),o=parseInt(t.slice(3,5),Wi),n=parseInt(t.slice(5,7),Wi);return{red:e,green:o,blue:n}}i(cw,"hexToRGB");function pw(t,e){let o=1-km*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(pw,"generateShade");function uw(t,e){let o=km*e;return{red:t.red+(Mi-t.red)*o,green:t.green+(Mi-t.green)*o,blue:t.blue+(Mi-t.blue)*o}}i(uw,"generateTint");function dw(t){return Tm(t,pw)}i(dw,"calculateShades");function mw(t){return Tm(t,uw)}i(mw,"calculateTints");function Tm(t,e){let o=cw(t),n=[];for(let r=1;r<9;r++)n.push(lw(e(o,r)));return n}i(Tm,"calculateColors");function il(t,e,o){let a=mw(t).reverse().concat(t),s=dw(t),c=a.concat(s),l={},p=c.length;for(let u=0;u<p;u++){let m=100+(o?p-1-u:u)*50,f=c[u];f&&(l[`${e}${m}`]=f)}return l}i(il,"createTintsAndShades");function al(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)&&!mu(r)){let l=aw(a);Object.assign(n,il(l,r,s))}}return{...n,...e}}i(al,"expandToGenerateThemeColors");var wm=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),fw=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=wm(o%52)+e;return wm(o%52)+e},"toAlphabeticName"),gw=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),sl=i(t=>fw(gw(5381,JSON.stringify(t))>>>0),"toHash");function cl(t){let e=hw.colors,o={...e,...yw},n,r;if(t?.light){let s={colors:al(e,t.light)};n={id:`${ps}-light-${sl(s)}`,tokens:s}}if(t?.dark){let s={colors:al(o,t.dark,{reverseNeutralRange:!0})};r={id:`${ps}-dark-${sl(s)}`,tokens:s}}return{light:n,dark:r}}i(cl,"customizedThemeTokens");function vm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>ll.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(ll.cloneElement(a,{key:s})),r<t.length-1){let c=`divider-${r}`;o.push(ll.cloneElement(e,{key:c}))}}),o}i(vm,"joinList");function bm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(bm,"doesWindowPreferDarkColorScheme");function po(t){let{colors:e,fontFamily:o=Zp,borderRadius:n=Iu,secondaryBorderRadius:r=Au}=t,[a,s]=Tw(bm()?"dark":"light"),{theme:c}=k(),{dark:l,light:p}=cl(e),u=pl({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[u.className,Cw.className],f=[u.className,Sw.className];if(p){let g=pl(p.id,p.tokens);m.push(g.className)}if(l){let g=pl(l.id,l.tokens);f.push(g.className)}return kw(()=>{let g=i(d=>{d.matches?s("dark"):s("light")},"switchThemeListener");return bm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:i(()=>{let g=m.join(" "),d=f.join(" ");return c==="auto"?a==="dark"?d:g:c==="dark"?d:g},"getActiveTheme"),mode:c==="auto"?a:c}}i(po,"useTheme");var wt=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as xm}from"@lingui/core";import{Alert as ww,Button as vw}from"@rango-dev/ui";import Em from"react";function ul(t){return Em.createElement(ww,{action:Em.createElement(vw,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},xm.t("Activate this tab")),type:"warning",variant:"alarm",title:xm.t("Another tab is open and handles transactions.")})}i(ul,"ActivateTabAlert");import{i18n as dl}from"@lingui/core";import{Button as bw,Divider as xw,MessageBox as Ew}from"@rango-dev/ui";import Li from"react";function ml(t){let{open:e,onClose:o,onConfirm:n}=t;return Li.createElement(R,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},Li.createElement(Ew,{title:dl.t("Activate current tab"),type:"warning",description:dl.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.")},Li.createElement(xw,{size:20}),Li.createElement(bw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},dl.t("Confirm"))))}i(ml,"ActivateTabModal");import{ChevronLeftIcon as Nw}from"@rango-dev/ui";import Pm from"react";import{css as Iw,darkTheme as Im,IconButton as Aw,styled as Do}from"@rango-dev/ui";var Dt=Do(Aw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Im} &`]:{backgroundColor:"$neutral"}}}),Am=Do("div",{position:"absolute",background:"$secondary500",[`.${Im} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),uo=Do("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Nm=Do("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),Bm=Do("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Wm=Do("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Mm=Iw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),Lm=Do("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function fl(t){return Pm.createElement(Dt,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Pm.createElement(Nw,{color:"black",size:16}))}i(fl,"BackButton");import{i18n as Bw}from"@lingui/core";import{Button as Ww,Typography as Mw}from"@rango-dev/ui";import gl from"react";function hl(t){return gl.createElement(uo,null,gl.createElement(Ww,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},gl.createElement(Mw,{variant:"label",size:"medium",color:"error500"},Bw.t("Cancel"))))}i(hl,"CancelButton");import{i18n as Lw}from"@lingui/core";import{Image as Pw,Tooltip as _w,WalletIcon as Dw}from"@rango-dev/ui";import $o from"react";function yl(t){let{list:e}=bt(),o=e.filter(r=>r.state==="connected"),n=o.length?$o.createElement("div",{className:Mm()},o.map(r=>$o.createElement(Lm,{key:r.title},$o.createElement(Pw,{src:r.image,size:14})))):Lw.t("Connect Wallet");return $o.createElement(_w,{container:t.container,side:"bottom",content:n},$o.createElement(Dt,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&$o.createElement(Am,null),$o.createElement(Dw,{size:18,color:"black"})))}i(yl,"WalletButton");import{i18n as _i}from"@lingui/core";import{NotificationsIcon as Jw,Popover as Rw,SettingsIcon as ev,Tooltip as Di,TransactionIcon as tv}from"@rango-dev/ui";import De from"react";import{Notifications as Uw}from"@rango-dev/ui";import zw from"react";import{useNavigate as Qw}from"react-router-dom";import{create as $w}from"zustand";import{persist as Fw,subscribeWithSelector as Ow}from"zustand/middleware";var Ne=so($w()(Fw(Ow((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1];if(!r||!a)return;let s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},c=e().notifications.filter(l=>l.requestId!==n.requestId);t(()=>({notifications:[...c,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(l=>l.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function Sl(){let t=Qw(),{getNotifications:e,clearNotifications:o}=Ne(),n=e(),r=k().blockchains(),{findToken:a}=k();return zw.createElement(Uw,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Qp(c,r),getTokenImage:c=>a(c)?.image,onClickItem:i(c=>{t(`${O.swaps}/${c}`)},"onClickItem"),onClearAll:o})}i(Sl,"NotificationContent");import{useManager as qw}from"@rango-dev/queue-manager-react";import{InProgressIcon as Hw}from"@rango-dev/ui";import _m from"react";var Gw=i(()=>{let{manager:t}=qw();return wt(t).map(({swap:o})=>o).find(o=>o.status==="running")?_m.createElement(Wm,{id:"widget-header-history-badge-container"},_m.createElement(Hw,{color:"info",size:6})):null},"InProgressTransactionBadge"),Dm=Gw;import{EventSeverity as Vw}from"@rango-dev/queue-manager-rango-preset";import{Typography as Kw}from"@rango-dev/ui";import $m from"react";function Fm(){let{getNotifications:t}=Ne(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===Vw.WARNING);return o?$m.createElement(Nm,{isSever:n},$m.createElement(Kw,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}i(Fm,"NotificationsBadge");import{RefreshProgressButton as jw}from"@rango-dev/ui";import Cl,{useEffect as Xw,useState as Om}from"react";var Yw=1e3,Um=60,Zw=100;function Pi({onClick:t}){let[e,o]=Om(0),[n,r]=Om(!1),a=i(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");Xw(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Um&&c()},Yw):s(l),document.addEventListener("visibilitychange",()=>a(l)),()=>{document.removeEventListener("visibilitychange",()=>a(l)),l&&clearInterval(l)}},[e,t]);let s=i(l=>{l&&clearInterval(l),o(0)},"clearTimeout"),c=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return Cl.createElement(Dt,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},Cl.createElement(Bm,{onTransitionEnd:()=>r(!1),isRefetched:n},Cl.createElement(jw,{size:22,color:t?"black":"gray",progress:e/Um*Zw})))}i(Pi,"RefreshButton");function Fo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=k(),c=ot("notification",s)||r.includes("notifications");return De.createElement(De.Fragment,null,!r.includes("refresh")&&De.createElement(Di,{container:a||W(),side:"top",content:_i.t("Refresh")},De.createElement(Pi,{onClick:e})),!c&&De.createElement(Rw,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:De.createElement(Sl,null)},De.createElement("div",null,De.createElement(Di,{container:W(),side:"top",content:_i.t("Notifications")},De.createElement(Dt,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},De.createElement(Jw,{size:18,color:"black"}),De.createElement(Fm,null))))),!r.includes("settings")&&De.createElement(Di,{container:W(),side:"top",content:_i.t("Settings")},De.createElement(Dt,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},De.createElement(ev,{size:18,color:"black"}))),!r.includes("history")&&De.createElement(Di,{container:W(),side:"top",content:_i.t("History")},De.createElement(Dt,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},De.createElement(tv,{size:18,color:"black"}),De.createElement(Dm,null))))}i(Fo,"HeaderButtons");import{i18n as kl}from"@lingui/core";import{Divider as Qm,MessageBox as rv,RefreshIcon as iv}from"@rango-dev/ui";import yn from"react";import{Button as ov,styled as nv}from"@rango-dev/ui";var zm=nv(ov,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Tl(t){let{open:e,onClose:o}=t;return yn.createElement(R,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},yn.createElement(rv,{title:kl.t("Something went wrong"),type:"error",description:kl.t("Something went wrong. Please refresh the app.")},yn.createElement(Qm,{size:30}),yn.createElement(zm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},yn.createElement(iv,{size:20,color:"primary"}),yn.createElement(Qm,{size:4,direction:"horizontal"}),kl.t("Refresh"))))}i(Tl,"RefreshModal");function wl(t){let e=t.target;if(e){let o=e.scrollTop,n=W();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(wl,"onScrollContentAttachStatusToContainer");import{css as sv,styled as $i}from"@rango-dev/ui";var Fi=sv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),qm=$i("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:700},fixed:{minHeight:425,maxHeight:700,height:700}},showBanner:{true:{overflow:"visible"}}}}),Hm=$i("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Gm=$i("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"}}}),Vm=$i("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function ie(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=nl(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=k(),[u,m]=Xm(!1),{config:{features:f,theme:h}}=k(),{watermark:g,setShowCompactTokenSelector:d}=oe(),S=g==="FULL",{activeTheme:y}=po(h||{}),[C,T]=Xm(!1),v=ot("connectWalletButton",f),{isActiveTab:b,tabManagerInitiated:E,showActivateTabModal:N,setShowActivateTabModal:I,activateCurrentTab:x}=oe(),w=je(),{manager:B}=cv(),{isTablet:M,isMobile:$}=hn(),K=wt(B).map(({swap:ue})=>ue).some(ue=>ue.status==="running"),j=i(()=>x(Wo.forceClaim,K),"onActivateTab"),L=i(()=>{r.onWallet?.()},"onConnectWallet"),Y=typeof r.hasBackButton>"u"||r.hasBackButton,ee=jm(null),Z=jm(null);return Oi(()=>{let ue=(p?.swapBoxBanner?.routes?.length??0)===0,le=!!p?.swapBoxBanner?.routes?.some(he=>location.pathname.endsWith(he));T(!!p?.swapBoxBanner&&(ue||le))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),Oi(()=>(nr()&&Z.current&&e(Z.current),()=>{o()}),[]),Oi(()=>(ee.current?.addEventListener("scroll",wl),()=>{ee.current?.removeEventListener("scroll",wl)}),[]),Oi(()=>{m(c==="failed")},[c]),dv(()=>{let ue=s==="auto"||!Z.current||nr(),le=$||M,he=i(()=>{ue||(le?Z.current.style.height=`${window.innerHeight-Z.current.offsetTop}px`:Z.current.style.height=`${700}px`,d(parseFloat(Z.current.style.height)<640))},"handler");return he(),window.addEventListener("resize",he),()=>window.removeEventListener("resize",he)},[s,$,M]),Be.createElement(qm,{height:s,id:tt.SWAP_BOX_ID,className:`${y()} ${Fi()}`,ref:Z,showBanner:C},Be.createElement(uv,{prefix:Y?Be.createElement(fl,{onClick:()=>{w(),r.onBack?.()}}):null,title:r.title,suffix:Be.createElement(Be.Fragment,null,r.suffix,r.onWallet&&!v&&Be.createElement(yl,{container:W(),onClick:L,isConnected:!!l?.length}),r.onCancel&&Be.createElement(hl,{onClick:r.onCancel}))}),Be.createElement(Hm,{ref:ee},n),Be.createElement(ml,{open:N,onClose:()=>I(!1),onConfirm:j}),Be.createElement(Gm,null,Be.createElement("div",{className:"footer__content"},E&&!b&&Be.createElement("div",{className:"footer__alert"},Be.createElement(ul,{onActivateTab:j}),Be.createElement(Km,{size:10})),a),Be.createElement(Km,{size:12}),Be.createElement("div",{className:`footer__logo ${S?"logo__show":"logo__hidden"}`},Be.createElement(pv,null))),C&&Be.createElement(Vm,null,p?.swapBoxBanner?.element),Be.createElement(Tl,{open:u,onClose:()=>m(!1)}))}i(ie,"Layout");import{styled as mv}from"@rango-dev/ui";var Ym="$20 $20 $10 $20",vl=mv("div",{padding:Ym,overflowY:"auto",flexGrow:1});import{styled as fv}from"@rango-dev/ui";var se=fv("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 mo}from"@lingui/core";import{useState as bl}from"react";function Zm(){let[t,e]=bl(!1),[o,n]=bl(null),[r,a]=bl(null),{findToken:s}=k(),c=k().customTokens(),l=i(()=>{a(null),e(!1),n(null)},"resetState");function p(m,f){switch(m){case"duplicated":return{type:m,title:mo.t("Duplicate Token"),message:mo.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:m,title:mo.t("Token Already Exists"),message:mo.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:mo.t("Token Not Found"),message:mo.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:f}})};case"network-error":return{type:m,title:mo.t("Network error"),message:mo.t("An error occurred while retrieving token data.")}}}return i(p,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:m,tokenAddress:f})=>{e(!0);try{if(c.some(y=>y.address?.toLowerCase()===f.toLowerCase())){let y=p("duplicated");n(y);return}let g=await ct().getCustomToken({blockchain:m,address:f});if(!g||!g.token||g.error){let y=p("not-found",m);n(y);return}let d=g.token;if(s({blockchain:d.blockchain,address:d.address,symbol:d.symbol})){let y=p("token-exist");n(y);return}return a({...d,warning:!0})}catch(h){if(h.code==="ERR_BAD_REQUEST"){let g=p("not-found",m);n(g);return}n(p("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:l}}i(Zm,"useFetchCustomToken");var xv=Cv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${yv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Jm(){let t=vv(),[e]=bv(),o=je(),n=k().blockchains(),r=e.get("blockchain")||"",a=Eo(r,n),[s,c]=wv(""),{fetchCustomToken:l,token:p,loading:u,error:m,resetState:f}=Zm(),h=!!a&&Zo(a,s),g=!a||!s||!h,d=i(()=>{a&&l({blockchain:r,tokenAddress:s})},"getCustomToken");return Xe.createElement(ie,{header:{title:Sn.t("Add Custom Token")}},Xe.createElement(se,null,Xe.createElement(xv,null,Xe.createElement("div",null,Xe.createElement(Ys,{onClick:()=>t(O.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:Sn.t("Select chain"),placeholder:Sn.t("Select chain")}),Xe.createElement(xl,{size:"24"}),Xe.createElement(Tv,{size:"large",variant:"label"},Sn.t("Enter Address")),Xe.createElement(xl,{size:10}),Xe.createElement(kv,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:Sn.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Xe.createElement(Sv,{color:"success",size:12}),onChange:S=>c(S.target.value)}),!h&&!!s&&Xe.createElement(Xe.Fragment,null,Xe.createElement(xl,{size:4}),Xe.createElement(gv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Xe.createElement(hv,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:d},Sn.t("Import"))),Xe.createElement(or,{token:p,blockchain:a??void 0,address:s,error:m??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{m?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:f,onExitImportModal:f})))}i(Jm,"AddCustomTokenPage");import{i18n as oc}from"@lingui/core";import{useManager as px}from"@rango-dev/queue-manager-react";import{Alert as ux,Button as dx,css as rc,Divider as nc,IconButton as Qg,styled as mx,Typography as fx,WalletIcon as gx}from"@rango-dev/ui";import Fe,{useEffect as ua,useLayoutEffect as hx,useRef as yx,useState as Sr}from"react";import{useNavigate as Sx}from"react-router-dom";import{i18n as Oo}from"@lingui/core";import{Alert as Zv,BalanceErrors as Jv,Button as xf,ChevronLeftIcon as Rv,Divider as Ll,MessageBox as eb,Typography as Pl}from"@rango-dev/ui";import re,{useCallback as tb,useEffect as Ef,useMemo as ob,useState as Tn}from"react";import{useNavigate as nb}from"react-router-dom";import{i18n as Nl}from"@lingui/core";import{Alert as Bv,ChevronDownIcon as Wv,CloseIcon as Mv,Divider as af,IconButton as sf,PasteIcon as Lv,Typography as Pv,WalletIcon as _v}from"@rango-dev/ui";import $e,{useEffect as Dv,useRef as $v}from"react";import qi,{useRef as Av}from"react";import*as Cn from"@radix-ui/react-collapsible";import{keyframes as Rm,styled as Ui}from"@rango-dev/ui";var El=300,Ev=Rm({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Iv=Rm({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),ef=Ui(Cn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Il=Ui(Cn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),zi=Ui(Cn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Ev} ${El}ms ease-out`},false:{animation:`${Iv} ${El}ms ease-out`}}}}),Qi=Ui("div",{transition:`all ${El}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Hi(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Av(null);return qi.createElement(ef,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&qi.createElement(Il,{className:"collapsible_trigger",onClick:a},s),qi.createElement(zi,{className:"collapsible_content",open:e},r),c==="bottom"&&qi.createElement(Il,{className:"collapsible_trigger",onClick:a},s))}i(Hi,"CustomCollapsible");import{darkTheme as tf,styled as Al,TextField as Nv}from"@rango-dev/ui";var of=Al("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),nf=Al(Nv,{backgroundColor:"$neutral100"}),rf=Al("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${tf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${tf} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function lf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=U()(),{config:s}=k(),c=k().blockchains(),l=Vr(e.name,c),p=$v(null),u=s?.defaultCustomDestinations?.[e.name],m=navigator?.userAgent.includes("Firefox"),h=n&&!!r&&e&&!Zo(e,r),g=i(()=>{a("")},"handleClear"),d=i(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let C=await navigator.clipboard.readText();a(C),p?.current?.focus()}},"handlePaste"),S=i(()=>r?$e.createElement(sf,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},$e.createElement(Mv,{size:12,color:"gray"})):m?null:$e.createElement(sf,{id:"widget-custom-destination-paste-icon-btn",onClick:d,variant:"ghost"},$e.createElement(Lv,{size:16})),"renderSuffix");return Dv(()=>{!!u&&r===null&&(a(u),o(!0))},[u]),$e.createElement(of,null,$e.createElement(Hi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:$e.createElement(rf,{id:"widget-custom-destination-collapsible-btn"},$e.createElement("div",{className:"button__content"},$e.createElement(_v,{size:18,color:"info"}),$e.createElement(af,{size:4,direction:"horizontal"}),$e.createElement(Pv,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Nl.t("Send to a different address"))),$e.createElement(Qi,{orientation:n?"up":"down"},$e.createElement(Wv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},$e.createElement(nf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Nl.t("Enter {blockchainName} address",{blockchainName:l}),value:r||"",suffix:S(),onChange:y=>{let C=y.target.value;a(C)}})),h&&$e.createElement($e.Fragment,null,$e.createElement(af,{size:4}),$e.createElement(Bv,{variant:"alarm",type:"error",title:Nl.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(lf,"CustomDestination");import{css as Fv,IconButton as Ov,SelectableWalletButton as Uv,styled as fo}from"@rango-dev/ui";var cf=fo("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),pf=fo("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),uf=fo(Uv,{justifyContent:"center"}),df=fo("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),mf=fo(Ov,{position:"absolute",left:"$20"}),ff=fo("div",{paddingTop:"$20"}),gf=Fv({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),hf=fo("div",{display:"flex"}),yf=fo("div",{overflow:"visible",width:"100%"});import{i18n as Wl}from"@lingui/core";import{warn as Gv}from"@rango-dev/logging-core";import{Divider as Vv,makeInfo as Kv,SelectableWallet as jv,Typography as vf,WalletState as Gi}from"@rango-dev/ui";import rt,{useEffect as bf,useState as sr}from"react";import{Image as qv,MessageBox as Hv}from"@rango-dev/ui";import ar from"react";import{keyframes as zv,styled as Bl}from"@rango-dev/ui";var Sf=Bl("div",{position:"relative"}),Qv=zv({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Cf=Bl("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Qv} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),kf=Bl("div",{"& img":{borderRadius:"50%"}});import{i18n as kn}from"@lingui/core";function Tf(t,e){switch(t){case"in-progress":return{type:"loading",title:kn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:kn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:kn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:kn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:kn.t("Request Rejected"),description:kn.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(Tf,"generateMessageByStatus");function wf(t){let{status:e,displayName:o,image:n}=t,r=Tf(e,o),a=e=="in-progress";return ar.createElement(Hv,{type:r.type,title:r.title,description:r.description,icon:a?ar.createElement(Sf,null,ar.createElement(kf,null,ar.createElement(qv,{src:n,size:45})),ar.createElement(Cf,null)):void 0})}i(wf,"ExperimentalChainStatus");var Xv=7,Yv=3e3;function Ml(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,c=oe.use.isActiveTab(),{blockchains:l,connectedWallets:p}=k(),[u,m]=sr(),[f,h]=sr(null),[g,d]=sr(!1),[S,y]=sr(null),{suggestAndConnect:C}=Vi(),{list:T}=bt({chain:e}),[v,b]=sr(T),E=T.length,N=a&&E-a>0,I=i(async w=>{d(!1),y("in-progress");try{await C(w.walletType,w.chain),y("completed")}catch{y("rejected")}},"addExperimentalChain");bf(()=>{b(w=>{let B=T.findIndex(M=>n(M.type,e));return N&&B>1?[T[B]].concat(T.filter((M,$)=>$!==B)):w.map(M=>T.find($=>$.type===M.type)??M)})},[JSON.stringify(T)]);let x=document.getElementById(tt.SWAP_BOX_ID);return bf(()=>{let w=null;return(S==="completed"||S==="rejected")&&(w=setTimeout(()=>y(null),Yv)),()=>{w&&clearTimeout(w)}},[S]),rt.createElement(rt.Fragment,null,v.slice(0,a).map(w=>{let B=Tu({connectedWallets:p,walletType:w.type,chain:e}),M=w.state===Gi.CONNECTED,$=B?ao(B,Xv):"",Q=M&&!!w.needsNamespace&&!$,K=ni(l(),e),j=!p.find(he=>he.walletType===w.type&&he.chain===e),L=K&&j&&w.state===Gi.CONNECTED,Y=i(async()=>{w.state===Gi.DISCONNECTED||Q?m(w):L?(h({walletType:w.type,chain:e,address:B??""}),d(!0)):r({walletType:w.type,chain:e,address:B??""})},"onSelectableWalletClick"),ee=Kv(w.state),Z=i(()=>L?Wl.t({id:"Add {chain} chain",values:{chain:e}}):Q?Wl.t("Chain not connected"):$||ee.description,"getWalletDescription"),ue=i(()=>w.state===Gi.CONNECTED?Q?"neutral600":"neutral700":ee.color,"getWalletDescriptionColor"),le=f?.chain?Vr(f.chain,l()):void 0;return rt.createElement(rt.Fragment,{key:`${w.title}_${le}`},!!f&&rt.createElement(R,{id:"widget-wallets-list-watermarked-modal",open:!!f&&g,container:x,onClose:()=>{h(null)}},rt.createElement($s,{id:"widget-wallets-list-experimental-chain-container",displayName:le,onConfirm:()=>{I(f)}})),S&&rt.createElement(R,{id:"widget-wallets-list-experimental-chain-watermarked-modal",open:!!S,onClose:y.bind(null,null),container:x},rt.createElement(wf,{status:S,displayName:le,image:w.image}),rt.createElement(Vv,{direction:"vertical",size:32})),rt.createElement(jv,{key:w.type,id:"widget-wallets-list-selectable-wallet-btn",description:Z(),descriptionColor:ue(),onClick:Y,selected:n(w.type,e),disabled:!c,...w}))}),rt.createElement(Jn,{id:"widget-wallets-list-stateful-connect-modal",wallet:u,options:{defaultSelectedChains:o||[e]},onClose:()=>{m(void 0)},onConnect:()=>{t.onConnect&&(u?.type?t.onConnect(u.type):Gv(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),N&&rt.createElement(uf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},rt.createElement(vf,{variant:"label",size:"medium"},Wl.t("Show more wallets"),rt.createElement(vf,{variant:"label",size:"medium",color:"$primary"},"\xA0+",E-(a??0)))))}i(Ml,"WalletList");var rb=2;function If(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=nb(),c=k().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:m,customDestination:f,setCustomDestination:h}=U()(),{config:g,connectedWallets:d,setWalletsAsSelected:S}=k(),[y,C]=Tn(""),[T,v]=Tn([]),[b,E]=Tn(""),[N,I]=Tn(!!f),x=ob(()=>No({filter:"all",quote:l}),[l]),w=No({filter:"required",quote:l}),B=c.find(D=>D.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),M=i(D=>w.includes(D),"isWalletRequiredFor"),$=tb(()=>d.filter(D=>D.selected&&x.includes(D.chain)),[d,x]),[Q,K]=Tn($()),[j,L]=Tn([]),Y=i((D,A)=>L(H=>H.concat({blockchain:D,walletType:A})),"addNextSelectedWallets"),ee=T.length>0,Z=i((D,A)=>!!Q.find(H=>H.walletType===D&&H.chain===A&&H.selected&&(M(A)||!M(A)&&!f)),"isSelected"),ue=i((D,A,H)=>{let ae=!1;return D.map(V=>{if(V.chain===A){let X=V.selected;return!ae&&H?(ae=!0,X=!0):H||(X=!1),{...V,selected:X}}return V})},"updateSelectableWallets"),le=i(D=>{I(D),D?M(B?.name??"")||K(A=>ue(A,B?.name||"",!1)):(h(""),K(A=>ue(A,B?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),he=i(D=>{if(y&&C(""),Z(D.walletType,D.chain))return;let H=d.find(ae=>ae.walletType===D.walletType&&ae.chain===D.chain);H&&(n(),D.chain===B?.name&&N&&!M(B.name)&&(I(!1),h(null)),K(ae=>ae.filter(V=>V.chain!==D.chain).concat({...H,selected:!0})))},"onChange"),qe=i(()=>{let D=Q.filter(A=>A.selected);S(D),p(D),m(!0),o()},"onConfirmBalance"),gt=i(async()=>{v([]),E("");let D=await r?.({selectedWallets:Q.filter(H=>H.selected),customDestination:f}),A=D.warnings;A?.balance?.messages&&v(A.balance.messages),D.error&&E(Cd(D.error)),!D.error&&!A?.balance?.messages.length?qe():v(A?.balance?.messages??[])},"onConfirmWallets");Ef(()=>{K(D=>{let A=[];return D.forEach(H=>{!d.some(V=>V.chain===H.chain&&V.walletType===H.walletType&&V.address===H.address)||A.push(H)}),A=A.concat(d.filter(H=>!!!A.find(V=>V.chain===H.chain)&&H.selected&&x.includes(H.chain))),A})},[d,x]),Ef(()=>{let D=[];j.length>0&&(j.forEach(A=>{let H=d.find(ae=>ae.chain===A.blockchain&&ae.walletType===A.walletType);H?he(H):D.push(A)}),L(D))},[d,j]);let Ie=document.getElementById(tt.SWAP_BOX_ID);return re.createElement(R,{id:"widget-confirm-wallets-modal",open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!y,container:Ie,...!y&&{styles:{container:{height:"100%"}},footer:re.createElement(hf,null,re.createElement(xf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:jd(a,N,f,l,Q,B),onClick:gt,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Oo.t("Confirm")))},...y&&{styles:{container:{height:"100%",padding:"$0"}},header:re.createElement(df,null,re.createElement(mf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:C.bind(null,"")},re.createElement(Rv,{size:16})),re.createElement(Pl,{variant:"headline",size:"small"},Oo.t({id:"Your {blockchainName} wallets",values:{blockchainName:ht(y,c)}})))},anchor:"center"},re.createElement(R,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:ee,onClose:v.bind(null,[]),container:Ie},re.createElement(eb,{title:Oo.t("Insufficient account balance"),type:"error",description:re.createElement(Jv,{messages:T??[]})},re.createElement(xf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:qe},Oo.t("Proceed anyway")))),y&&re.createElement(ff,null,re.createElement("div",{className:gf()},re.createElement(Ml,{chain:y,quoteChains:x,isSelected:Z,selectWallet:he,onShowMore:()=>C(y),onConnect:D=>{Y(y,D)}}))),!y&&re.createElement(re.Fragment,null,b&&re.createElement(re.Fragment,null,re.createElement(Zv,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:Oo.t(b)}),re.createElement(Ll,{size:12})),re.createElement(yf,null,x.map((D,A)=>{let H=c.find(He=>He.name===D),ae=`wallet-${A}`,V=A===x.length-1,X=V&&B&&g?.customDestination!==!1;return re.createElement("div",{key:ae},re.createElement(cf,null,re.createElement(Pl,{variant:"title",size:"xmedium"},Oo.t({id:"Your {blockchainName} wallets",values:{blockchainName:H?.shortName}})),re.createElement(Pl,{variant:"label",color:"$neutral700",size:"medium"},Oo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:H?.shortName}}))),re.createElement(Ll,{size:24}),re.createElement(pf,null,re.createElement(Ml,{chain:D,quoteChains:x,isSelected:Z,selectWallet:he,limit:rb,onShowMore:()=>C(H?.name??""),onConnect:He=>{Y(D,He)}})),!V&&re.createElement(Ll,{size:32}),X&&re.createElement(lf,{blockchain:B,open:N,handleOpenChange:le}))}))))}i(If,"ConfirmWalletsModal");import{i18n as xb}from"@lingui/core";import{Alert as Eb,Button as Ib,Divider as Vf,InfoIcon as Ab}from"@rango-dev/ui";import Ue from"react";import{Alert as sb,Button as lb,Divider as $l,NoRouteIcon as cb,RefreshIcon as pb,Typography as Pf}from"@rango-dev/ui";import pt from"react";import{i18n as Af}from"@lingui/core";var ib=24,ab=60;function Nf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ne().genericServerError,action:{onClick:n,title:Af.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ne().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Af.t("Reset")}},description:ne().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ne().noResultError.description}}i(Nf,"makeInfo");var _l=(o=>(o[o.small=ib]="small",o[o.large=ab]="large",o))(_l||{}),Dl=(o=>(o.small="small",o.large="medium",o))(Dl||{});import{styled as Ki}from"@rango-dev/ui";var Bf=Ki("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Wf=Ki("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Mf=Ki("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Lf=Ki("div",{padding:"$6 $0"});function lr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=k().getDisabledLiquiditySources(),s=k().toggleAllLiquiditySources,c=k().swappers(),l=Nf(o,a,()=>s(c,!0),e);return r&&(l.alert=null),pt.createElement(Bf,{id:"widget-no-result-container"},pt.createElement(cb,{size:_l[n],color:"gray"}),pt.createElement($l,{size:4}),pt.createElement(Pf,{variant:"title",size:Dl[n]},ne().noResultError.title),n==="large"&&pt.createElement($l,{size:4}),!!l.description&&pt.createElement(Wf,{size:n},pt.createElement(Pf,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),pt.createElement($l,{size:n==="large"?"24":"4"}),!!l.alert&&pt.createElement(Mf,{size:n},pt.createElement(sb,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&pt.createElement(lb,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:pt.createElement(Lf,null,pt.createElement(pb,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(lr,"NoResult");import{i18n as pr}from"@lingui/core";import{Button as mb,Divider as fb,MessageBox as gb,Typography as hb,WarningIcon as yb}from"@rango-dev/ui";import Xt from"react";import{Typography as Of}from"@rango-dev/ui";import Ol from"react";import{Button as ub,darkTheme as db,styled as cr}from"@rango-dev/ui";var _f=cr("div",{width:"100%"}),Fl=cr("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Df=cr("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${db} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),$f=cr("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),Ff=cr(ub,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});function Uf(t){let{title:e,value:o,valueColor:n}=t;return Ol.createElement(Df,null,Ol.createElement(Of,{size:"medium",variant:"label",className:"_title"},e),Ol.createElement(Of,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(Uf,"QuoteErrorsModalItem");function zf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",c=[{title:pr.t("Swapping"),value:_(r.inputUsdValue,4,4)},{title:pr.t("Gas cost"),value:_(r.totalFee,2,2)},{title:pr.t("Receiving"),value:_(r.outputUsdValue,4,4)},{title:pr.t("Price impact"),value:_(r.priceImpact,2,2),valueColor:`${s}500`}];return Xt.createElement(R,{id:"widget-high-value-loss-warning-modal",footer:Xt.createElement(mb,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Xt.createElement(yb,null),fullWidth:!0,disabled:a,onClick:n},ne().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Xt.createElement(gb,{type:s,title:ne().highValueLossError.impactTitle,description:ne().highValueLossError.description}),Xt.createElement(Fl,null,Xt.createElement(fb,{size:"4"}),Xt.createElement(hb,{size:"small",variant:"title"},pr.t("Details")),Xt.createElement(Fl,null,c.map((l,p)=>Xt.createElement(Uf,{key:p,...l})))))}i(zf,"HighValueLossWarningModal");import{i18n as wn}from"@lingui/core";function Qf(t,e){let o={alertType:"warning",title:"",action:null,actionButtonTitle:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=wn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=wn.t("Increase")),o;if(t){switch(t.type){case 0:{jt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ne().highValueLossError.title;break}case 4:{o.title=wn.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=ne().unknownPriceError.title;break}case 2:{o.title=wn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=wn.t("Increase");break}case 3:{o.title=wn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Qf,"makeAlerts");function qf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(qf,"getRequiredSlippage");import{i18n as vn}from"@lingui/core";import{Button as Sb,Divider as Ul,MessageBox as Cb,WarningIcon as kb}from"@rango-dev/ui";import yo from"react";import{useNavigate as Tb}from"react-router-dom";function Hf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=Tb();return yo.createElement(R,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},yo.createElement(Cb,{type:"warning",title:r.type===3?vn.t("High slippage"):vn.t("Low slippage"),description:r.type===3?vn.t("Caution, your slippage is high. Your trade may be front run."):vn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},yo.createElement(Ul,{size:18}),yo.createElement(Ul,{size:32}),yo.createElement(Ff,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},yo.createElement(kb,{color:"white",size:16}),vn.t("Swap anyway")),yo.createElement(Ul,{size:10}),yo.createElement(Sb,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+O.settings)},vn.t("Change Slippage"))))}i(Hf,"SlippageWarningModal");import{Button as wb,MessageBox as vb,WarningIcon as bb}from"@rango-dev/ui";import ji from"react";function Gf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return ji.createElement(R,{id:"widget-unknown-price-warning-modal",footer:ji.createElement(wb,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:ji.createElement(bb,null),fullWidth:!0,disabled:r,onClick:n},ne().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},ji.createElement(vb,{type:"warning",title:ne().unknownPriceError.impactTitle,description:ne().unknownPriceError.description}))}i(Gf,"UnknownPriceWarningModal");function ur(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,skipAlerts:s,refetchQuote:c,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:u,onChangeSettings:m,onChangeSlippage:f}=t,h={confirmationDisabled:a,open:r,onClose:p,onConfirm:u},g=o?.type===0||o?.type===1,d=Qf(e,o?.type===3||o?.type===4?o:null);d&&!n&&(d.action=null);let S=!!d&&!s,y=i(C=>{if(C==="change-slippage"){let T=o?.type===3||o?.type===4?o:null,v=qf(e,T);f?.(v)}else C==="change-settings"&&m()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,g&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Vf,{size:10}),Ue.createElement(lr,{skipAlerts:s,error:o,fetch:c})),S&&Ue.createElement(_f,null,Ue.createElement(Vf,{size:10}),Ue.createElement(Eb,{id:"widget-quote-warning-and-errors-alert",title:d.title,type:d.alertType,variant:"alarm",...d.action==="show-info"&&{action:Ue.createElement($f,{onClick:l},Ue.createElement(Ab,{size:12,color:"gray"}))},...(d.action==="change-settings"||d.action==="change-slippage")&&{action:Ue.createElement(Ib,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:d.alertType,onClick:()=>y(d.action)},d.actionButtonTitle||xb.t("Change"))}})),e&&Ue.createElement(Ue.Fragment,null,e.type===0&&Ue.createElement(zf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(Hf,{...h,warning:e}),e.type===1&&Ue.createElement(Gf,{...h,warning:e})))}i(ur,"QuoteWarningsAndErrors");import nx from"bignumber.js";import sa from"react";import{i18n as Uo}from"@lingui/core";import{Alert as Hb,Divider as xn,FullExpandedQuote as Gb,InfoIcon as Vb,NumericTooltip as kg,QuoteTag as Kb,StepDetails as jb,TokenAmount as Xb,Typography as En}from"@rango-dev/ui";import Xl from"bignumber.js";import z,{useRef as Yb,useState as Zb}from"react";import{styled as zl}from"@rango-dev/ui";var Ql=zl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Kf=zl("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),jf=zl("div",{width:"100%",display:"flex"});import*as Xi from"@radix-ui/react-collapsible";import{Button as Nb,css as dr,darkTheme as We,Image as Xf,styled as Je,Typography as Bb}from"@rango-dev/ui";var Wb=300,Yf=Je(Xi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${We} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${We} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${We} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),Zf=dr({padding:"$10 $15"}),Jf=Je(Nb,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${We} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${We} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${We} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),Rf=Je("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${We} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${We} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${We} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${We} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${We} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${We} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${We} &`]:{backgroundColor:"$neutral400"}}}}]}),eg=dr({width:"100%",padding:"$15 $15 $10 $15"}),tg=dr({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),bn=dr({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),og=dr({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${We} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),ng=Je(Xi.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:{[`& ${Xf}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Xf}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${We} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${We} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${We} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),rg=Je("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),ig=Je(zi,{width:"100%",background:"inherit"}),ql=Je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${Wb}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),cq=Je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),ag=Je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${We} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),sg=Je("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),Hl=Je(Bb,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),lg=Je("div",{display:"flex",flexWrap:"wrap"}),Gl=Je("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),cg=Je("div",{display:"flex"}),Yi=Je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${We} &`]:{borderTopColor:"$neutral800"}});import{i18n as $t}from"@lingui/core";import{ChevronDownIcon as Lb,CloseIcon as Pb,Divider as Ri,IconButton as _b,NumericTooltip as Db,QuoteCost as $b,Typography as Et}from"@rango-dev/ui";import J,{useState as mg}from"react";import{css as Mb,styled as Zi}from"@rango-dev/ui";var Ji=Zi("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Vl=Zi("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),pg=Zi("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),ug=Zi("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),dg=Mb({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Fb=i(t=>t.fee.isZero()?null:J.createElement(Ji,null,J.createElement(Et,{variant:"label",size:"medium",color:"neutral600"},t.label),J.createElement(Et,{variant:"label",size:"medium"},"$",_(t.fee,4,4))),"NonPayableFee");function Kl(t){let[e,o]=mg(!1),[n,r]=mg(!1),{steps:a,quote:s,fee:c,time:l,feeWarning:p,timeWarning:u,showModalFee:m,fullExpandedMode:f=!1}=t,h=s?.swaps??[],g=f?Ao():W(),d=Ud(h),S=_(c,2,2);return J.createElement(J.Fragment,null,J.createElement($b,{onClickFee:m?y=>{y.stopPropagation(),o(!e)}:void 0,fee:S,feeWarning:p,timeWarning:u,time:l,steps:a,tooltipGas:m?$t.t("View more info"):void 0,tooltipContainer:g}),J.createElement(R,{id:"widget-quote-cost-explanation-modal",container:g,open:e,anchor:f?"center":"bottom",styles:{container:{maxWidth:f?"484px":"unset"}},header:J.createElement(ug,{style:{textAlign:f?"left":"center"}},J.createElement(Et,{variant:"title",size:"medium"},$t.t("Gas & Fee Explanation")),J.createElement(_b,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},J.createElement(Pb,{color:"gray",size:14}))),onClose:()=>{o(!1)}},J.createElement(pg,null,J.createElement(Et,{variant:"title",size:"small"},$t.t("Details")),J.createElement(Ri,{size:10}),Object.entries(d.payable).flatMap(([y,C])=>C.map((T,v)=>{let b=`payable-fee-${v}`,E=qs(T);return J.createElement(Ji,{key:b},J.createElement(Et,{variant:"label",size:"medium",color:"neutral600"},Fs(y,$t.t)),J.createElement(Db,{content:T.amount,container:g},J.createElement(Et,{variant:"label",size:"medium"},_(T.amount,2,2),T.asset.symbol," ($",_(E,4,4),")")))})),J.createElement(Ji,{className:"total_payable_fee"},J.createElement(Et,{variant:"label",size:"medium"},$t.t("Total Payable Fee")),J.createElement(Et,{variant:"label",size:"medium"},"$",_(c,4,4))),J.createElement(Vl,null),!!Object.keys(d.nonePayable).length&&J.createElement(Hi,{triggerAnchor:"bottom",onClickTrigger:()=>r(y=>!y),trigger:J.createElement("div",{className:dg()},J.createElement(Et,{size:"small",variant:"body",color:"neutral700"},n?$t.t("Hide non-payable fees"):$t.t("Show non-payable fees")),J.createElement(Ri,{size:4,direction:"horizontal"}),J.createElement(Qi,{orientation:n?"up":"down"},J.createElement(Lb,{size:12,color:"gray"}))),open:n},J.createElement(Et,{size:"small",variant:"title"},$t.t("Description")),J.createElement(Ri,{size:4}),J.createElement(Et,{size:"small",variant:"body",color:"neutral700"},$t.t(`The following fees are considered in the transaction output and
2
- you won\u2019t need to pay extra gas for them.`)),J.createElement(Ri,{size:10}),Object.entries(d.nonePayable).map(([y,C],T)=>{let v=Od(C),b=Fs(y,$t.t),E=`non-payable-fee-${T}`;return J.createElement(Fb,{key:E,fee:v,label:b})}),J.createElement(Vl,null)))))}i(Kl,"QuoteCostDetails");import{i18n as hg}from"@lingui/core";import{TokenAmount as yg}from"@rango-dev/ui";import ea from"react";import{css as Ob,styled as Ub}from"@rango-dev/ui";var fg=Ub("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),gg=Ob({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function mr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return ea.createElement(fg,null,ea.createElement(yg,{direction:"horizontal",label:hg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:W(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),ea.createElement("div",{className:gg()}),ea.createElement(yg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:hg.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(mr,"QuoteSummary");import{i18n as Sg}from"@lingui/core";import{ChevronDownIcon as zb,ChevronRightIcon as Qb,Divider as jl,Image as qb,Tooltip as ra,Typography as ta}from"@rango-dev/ui";import q from"react";var oa=4,na=6,fr=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,c=s||W();return q.createElement(ra,{container:c,side:"bottom",sideOffset:4,open:r,content:e},q.createElement(rg,{className:n,state:a},q.createElement(qb,{src:o,size:16})))},"ImageComponent");function Cg(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:c}=t,l=c||W(),p=r.length,u=Nd(r),{isTablet:m,isMobile:f}=hn();return q.createElement(ng,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},q.createElement("div",{className:bn()},q.createElement(ta,{variant:"body",size:"xsmall"},Sg.t("Via:")),q.createElement(jl,{direction:"horizontal",size:4}),r.map((h,g)=>{let d=`item-${g}`,S=q.createElement(ql,null,q.createElement(Qb,{size:12,color:"black"}));return f||m?q.createElement(q.Fragment,{key:d},q.createElement(fr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&q.createElement(q.Fragment,null,S)):q.createElement(q.Fragment,{key:d},p<=oa||p>oa&&g<oa-1?q.createElement(q.Fragment,null,q.createElement(fr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&q.createElement(q.Fragment,null,S)):g===oa-1&&q.createElement(ra,{container:l,side:"bottom",align:"end",sideOffset:4,content:q.createElement("div",{className:bn()},S,r.map((y,C)=>{let T=`image-${C}`;return C>=g&&q.createElement(q.Fragment,{key:T},q.createElement(fr,{content:y.swapper.displayName,src:y.swapper.image??"",state:y.state,open:!1}),C!==p-1&&q.createElement(q.Fragment,null,S))}))},q.createElement(Gl,{state:r.find((y,C)=>C>=g&&(y.state==="error"||y.state==="warning"))?.state},q.createElement(ta,{size:"xsmall",variant:"body"},"+",p-g))))})),q.createElement("div",{className:bn()},q.createElement("div",{className:"blockchains_section"},q.createElement("div",{className:bn()},q.createElement(ta,{variant:"body",size:"xsmall"},Sg.t("Chains:")),q.createElement(jl,{direction:"horizontal",size:4}),u.map((h,g)=>q.createElement(q.Fragment,{key:h.displayName},u.length<=na||u.length>na&&g<na-1?q.createElement(ra,{container:l,side:"bottom",content:h.displayName,sideOffset:4},q.createElement(fr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===na-1&&q.createElement(ra,{container:l,side:"bottom",align:"end",sideOffset:4,content:q.createElement("div",{className:bn()},u.map((d,S)=>S>=g&&q.createElement(fr,{key:d.displayName,content:"",src:d.image??"",open:!1,className:S>g?"blockchainImage":"",container:c})))},q.createElement(Gl,{className:"blockchainImage"},q.createElement(ta,{size:"xsmall",variant:"body"},"+",u.length-g))))),q.createElement(jl,{direction:"horizontal",size:32}))),q.createElement(ql,{orientation:a?"up":"down"},q.createElement(zb,{size:12,color:"black"}))))}i(Cg,"QuoteTrigger");function Yl(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:c=!1,tagHidden:l=!0,showModalFee:p=!0,onClickAllRoutes:u,fullExpandedMode:m=!1,container:f}=t,h=k().blockchains(),{findToken:g}=k(),d=k().swappers(),{customSlippage:S,slippage:y}=k(),C=S||y,[T,v]=Zb(t.expanded),b=Yb(null),E=_(o.value,6,6),N=_(n.value,6,6),I=n.usdValue?_(n.usdValue,4,4):"",x=Kt(o.usdValue,n.usdValue??null),w=_(x,2,2),B=jt(x??0),M=i((Ie,D)=>Ie.map((A,H)=>{let ae,V=r?.type===3&&r.swap.swapperId===A.swapperId,X=r?.type===4&&!!r.recommendedSlippages?.[H],He=a?.type===2&&!!a.recommendedSlippages?.[H],Ge=V||X,ve=He;Ge?ae="error":ve&&(ae="warning");let Mt=Ge?Uo.t("Slippage Error"):Uo.t("Slippage Warning");return V&&(Mt=Uo.t("Bridge Limit Error")),{swapper:{displayName:_n(A.swapperId,d)??"",image:A.swapperLogo},from:{token:{displayName:A.from.symbol,image:A.from.logo},chain:{displayName:ht(A.from.blockchain,h)??"",image:A.from.blockchainLogo},price:{value:H===0&&!D?_(o.value,6,6):_(A.fromAmount,6,6),usdValue:_((A.from.usdPrice??0)*parseFloat(A.fromAmount),4,4),realValue:H===0?o.value:A.fromAmount,realUsdValue:new Xl(A.from.usdPrice??0).multipliedBy(A.fromAmount).toString()}},to:{token:{displayName:A.to.symbol,image:A.to.logo},chain:{displayName:ht(A.to.blockchain,h)||"",image:A.to.blockchainLogo},price:{value:_(A.toAmount,6,6),usdValue:_((A.to.usdPrice??0)*parseFloat(A.toAmount),4,4),realValue:A.toAmount,realUsdValue:new Xl(A.to.usdPrice??0).multipliedBy(A.toAmount).toString()}},state:ae,alerts:Ge||ve?z.createElement(Kf,{dense:m},z.createElement(Hb,{variant:"alarm",type:Ge?"error":"warning",title:Mt,id:"widget-quote-footer-step-alarm-alert",footer:z.createElement(jf,null,V&&z.createElement("div",null,z.createElement(En,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),z.createElement(xn,{direction:"vertical",size:2}),z.createElement(En,{size:"xsmall",variant:"body",color:"neutral900"},Uo.t({id:"Yours: {amount} {symbol}",values:{amount:_(A.fromAmount,6,6),symbol:A?.from.symbol}}))),(X||He)&&!V&&z.createElement("div",null,z.createElement(En,{size:"xsmall",variant:"body",color:"neutral900"},Uo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.[H]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[H]}}})),z.createElement(xn,{direction:"vertical",size:2}),z.createElement(En,{size:"xsmall",variant:"body",color:"neutral900"},Uo.t({id:"Yours: {userSlippage}",values:{userSlippage:C}}))))})):void 0,time:$n(A.estimatedTimeInSeconds),fee:_(Qs(A,g),2,2),internalSwaps:A.internalSwaps?M(A.internalSwaps):void 0}}),"getQuoteSteps"),$=M(e?.swaps??[]),Q=$.length,K=f||W(),j=Wd(t.quote.tags||[]),L=!!u,Y=ei(e?.swaps),ee=$n(Y),Z=Ei(e?.swaps??[],g),ue=_(Z,2,2),le=Z.gte(new Xl(Td)),he=Y/vd>=wd,qe=$[Q-1],gt=$[0];return!gt||!qe?null:m?z.createElement(Gb,{selected:c,fee:ue,time:ee,tooltipContainer:Ao(),steps:$,tags:j,id:"widget-quote-full-expanded-quote-container",quoteCost:z.createElement(Kl,{quote:e,fullExpandedMode:!0,time:ee,fee:Z,feeWarning:le,timeWarning:he,showModalFee:p,steps:Q}),percentageChange:w,warningLevel:B,outputPrice:{value:N,usdValue:I,realValue:n.value,realUsdValue:n.usdValue}}):z.createElement(Rf,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},z.createElement("div",{className:eg()},!l&&j.length?z.createElement(z.Fragment,null,z.createElement(cg,null,j.map((Ie,D)=>{let A=`${Ie.value}_${D}`;return z.createElement(z.Fragment,{key:A},z.createElement(Kb,{label:Ie.label,value:Ie.value}),z.createElement(xn,{size:4,direction:"horizontal"}))})),z.createElement(Yi,null),!L&&z.createElement(xn,{size:4})):null,z.createElement("div",{id:"portal-root",className:tg()},z.createElement(Kl,{quote:e,time:ee,fee:Z,feeWarning:le,timeWarning:he,showModalFee:p,steps:Q}),L&&z.createElement(Jf,{onClick:Ie=>{Ie.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},z.createElement(En,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Uo.t("See All Routes")))),s==="basic"&&z.createElement("div",{className:og()},z.createElement(sg,null,z.createElement(Vb,{size:12,color:"gray"})),z.createElement(lg,null,z.createElement(Hl,{size:"small",variant:"body"},`${E} ${gt.from.token.displayName} = `),z.createElement(kg,{content:n.value,container:K,open:n.value?void 0:!1},z.createElement(Hl,{size:"small",variant:"body"},"\xA0",`${N} ${qe.to.token.displayName}`))),z.createElement(kg,{content:n.usdValue,container:K},z.createElement(xn,{size:2,direction:"horizontal"}),z.createElement(En,{color:"$neutral600",size:"xsmall",variant:"body"},`($${I})`))),s==="list-item"&&z.createElement(Xb,{id:"widget-quote-token-amount-container",tooltipContainer:K,type:"output",direction:"vertical",price:{value:N,usdValue:I,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:qe.to.token.displayName,image:qe.to.token.image},chain:{image:qe.to.chain.image},percentageChange:w,warningLevel:B}),s==="swap-preview"&&z.createElement(z.Fragment,null,z.createElement(mr,{from:gt.from,to:qe.to,percentageChange:w,warningLevel:B}),z.createElement(xn,{size:4}))),z.createElement(Yf,{selected:c,listItem:s==="list-item",open:T,className:"quote_container",onOpenChange:v},z.createElement(Cg,{type:s,quoteRef:b,selected:c,setExpanded:v,container:K,expanded:T,steps:$}),z.createElement(ig,{open:T},z.createElement(ag,null),z.createElement("div",{className:Zf()},$.map((Ie,D)=>{let A=`item-${D}`;return z.createElement(jb,{type:"quote-details",className:"widget-quote-step-details-container",key:A,tooltipContainer:K,step:Ie,hasSeparator:D!==$.length-1,state:Ie.state})})))))}i(Yl,"Quote");import{Divider as tx,Skeleton as ox}from"@rango-dev/ui";import Rt from"react";import{darkTheme as Jb,styled as ia}from"@rango-dev/ui";var Tg=ia("div",{$$color:"$colors$neutral100",[`.${Jb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),wg=ia("div",{paddingTop:"$2"}),vg=ia("div",{paddingLeft:"$8"}),bg=ia("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as Pg,Divider as It,Skeleton as ut}from"@rango-dev/ui";import G from"react";import{css as Rb,styled as Jt}from"@rango-dev/ui";var Zl=Jt("div",{display:"flex"}),xg=Jt("div",{padding:"$10 $0 $20"}),Eg=Jt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),Ig=Jt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Ag=Jt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Ng=Jt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Bg=Jt("div",{width:"65%",display:"flex",justifyContent:"start"}),Wg=Jt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Mg=Jt("div",{padding:"$15 $0 $15 $0"}),Lg=Rb({display:"flex",justifyContent:"space-between",alignItems:"center"});function gr(t){let{type:e,tagHidden:o=!0}=t,n=G.createElement(Ag,null,G.createElement(Bg,null,G.createElement(Pg,{loading:!0,size:"medium"}),G.createElement(It,{size:8,direction:"horizontal"}),G.createElement(Wg,null,G.createElement(ut,{height:10,width:60,variant:"rounded"}),G.createElement(It,{size:4}),G.createElement(ut,{height:15,variant:"rounded"}))),G.createElement(ut,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return G.createElement("div",null,!o&&G.createElement(G.Fragment,null,G.createElement(Zl,null,G.createElement(ut,{width:65,height:20,variant:"rounded"}),G.createElement(It,{size:4,direction:"horizontal"}),G.createElement(ut,{width:65,height:20,variant:"rounded"}),G.createElement(It,{size:4,direction:"horizontal"}),G.createElement(ut,{width:65,height:20,variant:"rounded"})),G.createElement(Yi,null),!r&&G.createElement(It,{size:4})),G.createElement("div",{className:Lg()},G.createElement(Zl,null,G.createElement(ut,{width:60,height:10,variant:"rounded"}),G.createElement(It,{size:4,direction:"horizontal"}),G.createElement(ut,{width:60,height:10,variant:"rounded"}),G.createElement(It,{size:4,direction:"horizontal"}),G.createElement(ut,{width:60,height:10,variant:"rounded"})),r&&G.createElement(ut,{width:85,height:24,variant:"rounded"})),e==="basic"&&G.createElement(xg,null,G.createElement(ut,{height:15,width:148,variant:"rounded"})),e==="list-item"&&G.createElement(Eg,null,G.createElement(Ig,null,G.createElement(Pg,{loading:!0,size:"medium"}),G.createElement(It,{direction:"horizontal",size:4}),G.createElement(ut,{height:15,width:150,variant:"rounded"})),G.createElement(It,{size:10}),G.createElement(ut,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&G.createElement(G.Fragment,null,G.createElement(It,{size:4}),G.createElement(Mg,null,n,G.createElement(Ng,null),n),G.createElement(It,{size:12})))}i(gr,"QuoteSummarySkeleton");import{ChainToken as Og,Divider as Rl,NextIcon as ex,Skeleton as aa}from"@rango-dev/ui";import Me from"react";import{styled as hr}from"@rango-dev/ui";var _g=hr("div",{display:"flex",alignItems:"start"}),Dg=hr("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Jl=hr("div",{display:"flex",alignItems:"center",flexGrow:1}),$g=hr("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Fg=hr("div",{display:"flex",alignItems:"center"});function Ft(t){let{separator:e=!0}=t;return Me.createElement(Me.Fragment,null,Me.createElement(Fg,null,Me.createElement(aa,{height:22,width:22,variant:"circular"}),Me.createElement(Rl,{direction:"horizontal",size:8}),Me.createElement(aa,{height:15,width:148,variant:"rounded"})),Me.createElement(_g,null,Me.createElement(bg,{hideSeparator:!e}),Me.createElement(Dg,{extraSpace:e},Me.createElement(Jl,null,Me.createElement(Og,{size:"small",loading:!0}),Me.createElement(Rl,{direction:"horizontal",size:8}),Me.createElement(aa,{height:12,variant:"rounded"})),Me.createElement($g,null,Me.createElement(ex,{color:"gray",size:16})),Me.createElement(Jl,null,Me.createElement(Og,{size:"small",loading:!0}),Me.createElement(Rl,{direction:"horizontal",size:8}),Me.createElement(aa,{height:12,variant:"rounded"})))))}i(Ft,"StepSkeleton");function yr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Rt.createElement(Tg,{expanded:o,rounded:e!=="basic"},Rt.createElement(gr,{type:e,tagHidden:n}),Rt.createElement(wg,null,Rt.createElement(ox,{height:15,variant:"rounded"})),o&&Rt.createElement(vg,null,Rt.createElement(tx,{size:24}),Rt.createElement(Ft,null),Rt.createElement(Ft,null),Rt.createElement(Ft,{separator:!1})))}i(yr,"QuoteSkeleton");function zo(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:c,onClick:l,showModalFee:p,selected:u,id:m,onClickAllRoutes:f,fullExpandedMode:h=!1,container:g}=t,{inputAmount:d,inputUsdValue:S}=U()(),y=e?.outputAmount?new nx(e?.outputAmount):null,C=e?kt(e):null,v=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?sa.createElement(Ql,null,sa.createElement(yr,{tagHidden:c,type:o,expanded:s})):v?sa.createElement(Ql,{onClick:()=>l?.(e),id:m},sa.createElement(Yl,{quote:e,error:r,container:g,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:f,fullExpandedMode:h,input:{value:d,usdValue:S?.toString()??""},output:{value:y?.toString()??"",usdValue:C?.toString()??""}})):null}i(zo,"QuoteInfo");import{warn as sx}from"@rango-dev/logging-core";import{calculatePendingSwap as lx}from"@rango-dev/queue-manager-rango-preset";import{useEffect as cx}from"react";import{useRef as rx,useState as ix}from"react";var ax=2e3;function la({request:t}){let[e,o]=ix(!1),n=rx(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,ax)),await s(c,!1)),"retryFetch"),s=i(async(c,l=!1)=>{r(),n.current=new AbortController,o(!0);try{let p=await t(c,{signal:n.current.signal});return n.current=null,p}catch(p){if(l)return await a(c);throw p}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(la,"useFetch");function Ug(){let{fetch:t,loading:e,cancelFetch:o}=la({request:async(n,r)=>await ct().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Ug,"useFetchConfirmQuote");function ca(t){if(!t.swaps)throw new Error(ne().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=ec(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(ca,"throwErrorIfResponseIsNotValid");function ec(t){if(Dd(t)){let{swap:n,fromAmountRangeError:r,recommendation:a}=$d(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:r}}:null}let o=zd(t);if(o){let n=Ii(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(ec,"getQuoteError");function zg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=dn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=Hd(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(zg,"generateWarnings");function pa(t){return t?.code==="ERR_CANCELED"?{type:2}:t.cause?t.cause:t?.code==="ERR_BAD_REQUEST"?{type:0,diagnosisMessage:t.response.data.error}:{type:1,diagnosisMessage:t.message}}i(pa,"handleQuoteErrors");function tc(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:c}=U()(),{slippage:l,customSlippage:p}=k(),u=k().getDisabledLiquiditySources(),m=k().blockchains(),f=k().tokens(),{findToken:h}=k(),{swapMode:g}=Ct(),d=p||l,{fetch:S,cancelFetch:y,loading:C}=Ug();return cx(()=>y,[]),{loading:C,fetch:i(async v=>{let b=v.selectedWallets,E=v?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let N=b.reduce((x,w)=>(x[w.chain]=w.address,x),{}),I={requestId:a?.requestId||"",selectedWallets:N,destination:E||void 0};try{return await S(I,!0).then(x=>{let{result:w}=x;if(!w)throw new Error(x.error??"Error fetching updated quote");ca({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 M={slippage:d.toString(),disabledSwappersGroups:u},$=zg({previousQuote:a??void 0,currentQuote:B,meta:{blockchains:m},selectedWallets:b,userSlippage:d,inputUsdValue:n,findToken:h});c();let Q=!!$.balance,K=lx({inputAmount:o.toString(),bestRoute:w,wallets:qd(b),settings:M,validateBalanceOrFee:!Q,meta:{blockchains:m,tokens:f},swapMode:g});return{quote:B,swap:K,error:null,warnings:$}})}catch(x){let w=pa(x);return w.type!==2&&sx(new Error("confirm swap error"),{tags:{...w,type:Ye[w.type],initialQuote:a,requestBody:I}}),{swap:null,error:w,warnings:null}}},"fetch"),cancelFetch:y}}i(tc,"useConfirmSwap");var Cx=mx("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Qg}`]:{width:"$48",height:"$48"}}),kx=rc({flexGrow:1,paddingRight:"$10"}),Tx=rc({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),wx=rc({display:"flex",justifyContent:"space-between",alignItems:"center"});function qg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=U()(),s=Sx(),[c,l]=Sr(""),p=!n,[u,m]=Sr(!1),[f,h]=Sr(!1),{isActiveTab:g}=oe(),d=k().getDisabledLiquiditySources(),S=yx(d),{manager:y}=px(),{fetch:C,loading:T,cancelFetch:v}=tc(),[b,E]=Sr({swap:null,error:null,warnings:null}),[N,I]=Sr(!1),x=i(async({selectedWallets:L,customDestination:Y})=>{let ee=await C?.({selectedWallets:L,customDestination:Y});return E(ee),ee},"onConfirmSwap"),w=i(async()=>{if(b.swap&&n)try{await y?.create("swap",{swapDetails:b.swap},{id:b.swap.requestId});let L=`../${O.swaps}/${b.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){l("Error: "+L?.message)}},"addNewSwap"),B=i(async()=>{h(!0),await w(),h(!1)},"onConfirm"),M=i(async()=>{b.warnings?.quote&&Ad(b.warnings.quote)&&!a?I(!0):await B()},"onStartConfirmSwap"),$=i(async()=>{E({error:null,swap:null,warnings:null}),C({selectedWallets:o,customDestination:r}).then(L=>{E(L)}).catch(L=>console.error(L))},"onRefresh");ua(()=>{!!S.current.length&&!d.length&&$(),S.current=d},[d.length]),ua(()=>{p&&v()},[p]),ua(()=>{p&&m(p)},[p]),ua(()=>{p||C({selectedWallets:o,customDestination:r}).then(L=>E(L)).catch(L=>console.error(L))},[]),hx(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let Q=b.warnings?.quote??null,K=b.error,j=[];if(c&&j.push(Fe.createElement(ux,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),Q||K){let L=`../${O.settings}`;j.push(Fe.createElement(ur,{warning:Q,error:K,couldChangeSettings:!1,refetchQuote:$,skipAlerts:K?.type===4||Q?.type===2,showWarningModal:N,confirmationDisabled:!g,onOpenWarningModal:()=>I(!0),onCloseWarningModal:()=>I(!1),onConfirmWarningModal:async()=>{I(!1),await w()},onChangeSettings:()=>s(L)}))}return Fe.createElement(ie,{header:{title:oc.t("Confirm Swap"),onWallet:()=>{let L=`../${O.wallets}`;s(L)}},footer:Fe.createElement(Cx,null,Fe.createElement("div",{className:kx()},Fe.createElement(dx,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:T||f,disabled:!!b.error||!g,onClick:M},oc.t("Start Swap"))),Fe.createElement(Qg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:T||f,disabled:!g,onClick:m.bind(null,!0)},Fe.createElement(gx,{size:24})))},u&&Fe.createElement(If,{open:u,onClose:()=>m(!1),onCancel:v,loading:T,onCheckBalance:x}),Fe.createElement(se,null,Fe.createElement("div",{className:wx()},Fe.createElement(fx,{variant:"title",size:"small"},oc.t("You get")),Fe.createElement("div",{className:Tx()},Fe.createElement(Pi,{onClick:!T&&!u&&!N?$:void 0}))),Fe.createElement(nc,{size:"12"}),vm(j.map((L,Y)=>({element:L,key:`alert-${Y}`})),Fe.createElement(nc,{size:10})),j.length>0?Fe.createElement(nc,{size:10}):null,Fe.createElement(zo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:b.error,loading:T,warning:b.warnings?.quote??null})))}i(qg,"ConfirmSwapPage");import{i18n as to}from"@lingui/core";import{Button as hc,CustomTokensZeroStateDarkIcon as Qx,CustomTokensZeroStateIcon as qx,DeleteIcon as Hx,Divider as vr,IconButton as Gx,MessageBox as Vx,NotFound as Kx,styled as Sc}from"@rango-dev/ui";import fe,{useState as yc}from"react";import{useNavigate as jx}from"react-router-dom";import{CloseIcon as vx,IconButton as bx,SearchIcon as xx,TextField as Ex}from"@rango-dev/ui";import In from"react";import{styled as Hg}from"@rango-dev/ui";var Gg=Hg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),Vg=Hg("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function At(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...m}=t,f=s.length?In.createElement(bx,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},In.createElement(vx,{color:"gray",size:10})):null;return p&&(f=p),In.createElement(Vg,null,In.createElement(Ex,{prefix:In.createElement(Gg,null,In.createElement(xx,{color:"black"})),id:u,suffix:f,fullWidth:o,color:n,variant:e,style:{borderRadius:25,alignItems:"center",...c},size:r,value:s,onChange:a,...m}))}i(At,"SearchInput");import{i18n as gc}from"@lingui/core";import{Button as Bx,CustomTokenWarning as Wx,darkTheme as rh,Divider as eo,ExternalLinkIcon as Mx,Image as Lx,ListItem as Px,NotFound as _x,PinIcon as Dx,Skeleton as Qo,Typography as Tr,VirtualizedList as $x}from"@rango-dev/ui";import P,{useState as Fx}from"react";import{useTranslation as Ox}from"react-i18next";import{Divider as oh,ListItem as Nx,Skeleton as kr}from"@rango-dev/ui";import Nt from"react";import{css as An,darkTheme as ic,ImageContainer as Ix,ListItemButton as Ax,styled as it,Typography as Kg}from"@rango-dev/ui";var ac=An({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),sc=An({position:"relative",height:12,width:"30%",maxWidth:"150px"}),lc=An({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),cc=An({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${ic} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),pc=An({}),uc=An(),jg=it("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),dc=it("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),da=it("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${sc}`]:{[`& .${cc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${pc}`]:{bottom:"-15px"},[`& .${ac}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${lc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Xg=it(Ax,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),mc=it("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),fc=it(Kg,{}),Yg=it("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${uc}`]:{$$color:"$colors$neutral600",[`.${ic} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Cr=it("div",{display:"flex",alignItems:"end",flexDirection:"column"}),rV=it("div",{display:"flex",alignItems:"center"}),Zg=it("div",{position:"relative",[`& ${Ix}`]:{borderRadius:"$xm",overflow:"hidden"}}),Jg=it("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),Rg=it(Kg,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),eh=it("a",{"& svg:hover":{color:"$colors$info"}}),th=it("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":{[`.${ic} &`]:{color:"$foreground"}}}});function nh(t){return Nt.createElement(da,null,Array.from(Array(t.size),e=>Nt.createElement(Nx,{key:e,hasDivider:!0,start:Nt.createElement(kr,{variant:"circular",width:35,height:35}),end:Nt.createElement(Cr,null,Nt.createElement(kr,{variant:"text",size:"large",width:70}),Nt.createElement(oh,{size:4}),Nt.createElement(kr,{variant:"text",size:"medium",width:50})),title:Nt.createElement("div",null,Nt.createElement(kr,{variant:"text",size:"large",width:90}),Nt.createElement(oh,{size:4}),Nt.createElement(kr,{variant:"text",size:"medium",width:90}))})))}i(nh,"LoadingTokenList");var Ux=20,zx=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return P.createElement("div",{className:sc()},o?P.createElement("div",{className:ac()},o):P.createElement(dc,{className:lc()},P.createElement(Tr,{variant:"title",size:"xmedium"},r.symbol),P.createElement(eo,{direction:"horizontal",size:4}),P.createElement(mc,{css:a},P.createElement(fc,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&P.createElement("div",{className:`${cc()} ${!o&&pc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",P.createElement(eo,{size:4,direction:"horizontal"}),P.createElement(eh,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},P.createElement(Mx,{size:12}))))},"renderDesc");function wr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=k().fetchStatus,u=k().blockchains(),{getBalanceFor:m,fetchingWallets:f}=k(),{isTokenPinned:h}=k(),{setFromToken:g,setToToken:d}=U()(),{t:S}=Ox(),y=je(),[C,T]=Fx(null),v=i(()=>{c==="source"?g({token:C,meta:{blockchains:u}}):d({token:C,meta:{blockchains:u}})},"updateToken"),b=i(()=>{v(),y()},"handleImportToken"),E=i(x=>{if(x.customToken){let{customToken:B,...M}=x;return P.createElement(Bx,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(Q=>{Q.stopPropagation(),T({...M,warning:!0})},"handleClick")},P.createElement(Tr,{variant:"body",size:"xsmall",color:"background"},S("import")))}let w=ri(m(x));return s?s(x):f?P.createElement(Cr,null,P.createElement(Qo,{variant:"text",size:"large",width:70}),P.createElement(eo,{size:4}),P.createElement(Qo,{variant:"text",size:"medium",width:50})):w&&P.createElement(Yg,null,P.createElement(Rg,{variant:"title",size:"small"},w.amount),P.createElement("div",null),w.usdValue&&P.createElement(Tr,{variant:"body",className:uc(),size:"xsmall"},`$${w.usdValue}`))},"endRenderer"),N=i(()=>P.createElement($x,{itemContent:x=>{let w=e[x];if(w==="skeleton")return P.createElement(Px,{hasDivider:!0,start:P.createElement(Qo,{variant:"circular",width:35,height:35}),end:P.createElement(Cr,null,P.createElement(Qo,{variant:"text",size:"large",width:70}),P.createElement(eo,{size:4}),P.createElement(Qo,{variant:"text",size:"medium",width:50})),title:P.createElement("div",null,P.createElement(Qo,{variant:"text",size:"large",width:90}),P.createElement(eo,{size:4}),P.createElement(Qo,{variant:"text",size:"medium",width:90}))});let B=u.find(L=>L.name===w?.blockchain);if(!B||!w)return null;let M=w.address,$=il(B.color,"main"),Q={$$color:$.main150,[`.${rh} &`]:{$$color:$.main750},backgroundColor:"$$color"},K={$$color:$.main750,[`.${rh} &`]:{$$color:$.main150},color:"$$color"},j=i(()=>{typeof w!="string"&&!w.customToken&&n?.(w)},"handleClick");return P.createElement(th,null,P.createElement(Xg,{"tab-index":x,key:`${w.symbol}${M}`,id:`${w.symbol}${M}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:w?.customToken,onClick:j,start:P.createElement(Zg,null,P.createElement(Lx,{src:w.image===""?jr:w.image,size:30}),t.type!=="custom-token"&&w&&h(w,t.type)&&P.createElement(Jg,null,P.createElement(Dx,{size:12,color:"gray"}))),title:B.type==="COSMOS"||w.name||!w.name&&!M?P.createElement(dc,null,P.createElement(Tr,{variant:"title",size:"xmedium"},w.symbol),P.createElement(eo,{direction:"horizontal",size:4}),P.createElement(mc,{css:Q},P.createElement(fc,{variant:"body",size:"xsmall",css:K},w.blockchain)),l&&w.warning&&P.createElement(P.Fragment,null,P.createElement(eo,{direction:"horizontal",size:4}),P.createElement(Wx,{container:W()}))):void 0,description:typeof w!="string"&&B.info&&M&&B.type!=="COSMOS"?zx({address:M,token:w,customCssForTag:Q,customCssForTagTitle:K,name:w.name,url:B.info.addressUrl.split("{wallet}").join(M)}):w.name||void 0,end:E(w)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),I=C?Eo(C?.blockchain,u):null;return P.createElement(P.Fragment,null,a&&P.createElement(P.Fragment,null,P.createElement(Tr,{variant:"label",size:"large"},gc.t("Select Token")),P.createElement(eo,{size:4})),P.createElement(jg,null,P.createElement(eo,{size:4}),p==="loading"&&P.createElement(nh,{size:Ux}),p==="success"&&(e.length?P.createElement(P.Fragment,null,P.createElement(or,{token:C,address:C?.address??"",blockchain:I??void 0,onImport:b,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),P.createElement(da,{as:"ul"},N())):!!o&&P.createElement(_x,{title:gc.t("No results found"),description:gc.t("Try using different keywords")}))))}i(wr,"TokenList");var Xx=Sc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Yx=Sc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),Zx=Sc(Gx,{"&:hover":{"& svg":{color:"$secondary550"}}});function ih(){let[t,e]=yc(""),{deleteCustomToken:o}=k(),n=k().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=U()(),{mode:l}=po({}),p=jx(),[u,m]=yc(!1),[f,h]=yc(),g=i(C=>{let T=C.target.value;e(T)},"handleSearch"),d=l==="dark",S=n.filter(C=>st(C.symbol,t)||st(C.address||"",t)||st(C.name||"",t)),y=i(()=>{if(f){let C=a?yt(a):null,T=r?yt(r):null,v=yt(f);C===v?c({token:null}):T===v&&s({token:null}),o(f)}m(!1)},"handleDeleteCustomToken");return fe.createElement(ie,{header:{title:to.t("Custom Tokens")}},fe.createElement(se,null,fe.createElement(Xx,null,n.length?fe.createElement(fe.Fragment,null,fe.createElement(At,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:to.t("Search Token"),onChange:g}),fe.createElement(vr,{size:16}),fe.createElement(wr,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:C=>fe.createElement(Zx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),h(C)}},fe.createElement(Hx,{size:12,color:"gray"}))})):fe.createElement(Yx,null,fe.createElement(Kx,{icon:d?fe.createElement(Qx,{size:200}):fe.createElement(qx,{size:200}),title:to.t("No custom tokens"),description:to.t("press the button to add your custom token")})),fe.createElement(vr,{size:20}),fe.createElement(hc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p(O.addCustomTokens)},to.t("Add Custom Token"))),fe.createElement(R,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>m(!1),container:W()},fe.createElement(Vx,{title:to.t("Delete Custom Token"),type:"error",description:to.t("Are you sure you want to Delete this Token?")},fe.createElement(vr,{size:40}),fe.createElement(vr,{size:10}),fe.createElement(hc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:y},to.t("Yes, Delete it")),fe.createElement(vr,{size:12}),fe.createElement(hc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},to.t("No, Continue"))))))}i(ih,"CustomTokensPage");import{i18n as Oe}from"@lingui/core";import{useManager as yE}from"@rango-dev/queue-manager-react";import{Button as xc,darkTheme as SE,Divider as So,MessageBox as CE,NotFound as kE,styled as Ec,Tabs as TE,Typography as ga}from"@rango-dev/ui";import{TransactionStatus as Ir}from"rango-types";import te,{useMemo as bh,useState as Er}from"react";import{useNavigate as wE}from"react-router-dom";import{FilterIcon as rE,Popover as iE}from"@rango-dev/ui";import qo from"react";import{css as Jx,darkTheme as ma,IconButton as Rx,styled as br}from"@rango-dev/ui";var Cc=br("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${ma} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),ah=br(Rx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ma} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ma} &`]:{backgroundColor:"$neutral"},[`& ${Cc}::before`]:{backgroundColor:"$secondary100",[`.${ma} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),sh=br("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),lh=br("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),ch=Jx({display:"flex",justifyContent:"space-between",alignItems:"center"}),ph=br("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as uh}from"@lingui/core";import{Button as eE,Divider as dh,ListItemButton as tE,Radio as oE,RadioRoot as nE,Typography as mh}from"@rango-dev/ui";import dt from"react";function fh(t){let{filterBy:e,onClickItem:o}=t;return dt.createElement(lh,null,dt.createElement("div",{className:ch()},dt.createElement(mh,{size:"small",variant:"body"},uh.t("Status")),dt.createElement(eE,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},uh.t("Reset"))),dt.createElement(dh,{size:10}),dt.createElement(nE,{value:e},dt.createElement(ph,null,t.list.map((n,r)=>dt.createElement(tE,{key:n.id,className:"widget-filter-selector-list-item-btn",style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:dt.createElement(dt.Fragment,null,dt.createElement(dh,{direction:"horizontal",size:4}),dt.createElement(mh,{size:"medium",variant:"body"},n.title)),start:dt.createElement(oE,{value:n.id}),onClick:o})))))}i(fh,"FilterSelectorContent");function kc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return qo.createElement("div",null,qo.createElement(iE,{open:a,align:"end",onOpenChange:o,container:W(),content:qo.createElement(fh,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},qo.createElement(ah,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},qo.createElement(Cc,{isSelect:!!n},qo.createElement(rE,{size:16,color:"black"}),!!n&&qo.createElement(sh,null)))))}i(kc,"FilterSelector");import{i18n as lE}from"@lingui/core";import{getCurrentStep as cE}from"@rango-dev/queue-manager-rango-preset";import{Divider as Ch,GroupedVirtualizedList as pE,Skeleton as uE,SwapListItem as kh,Typography as dE}from"@rango-dev/ui";import Re,{useCallback as Th,useEffect as mE,useRef as fE,useState as gE}from"react";function gh(t,e){let o=[],n=0;do{let r=t[n];r&&(o.push(Math.min(r,e)),e-=r),n++}while(e>0&&n<=t.length);return o}i(gh,"calculateGroupsSoFar");import{css as aE,darkTheme as sE,styled as xr}from"@rango-dev/ui";var Tc=aE(),hh=xr("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),wc=xr("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${Tc}`]:{$$color:"$colors$neutral600",[`.${sE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),vc=xr("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),yh=xr("div",{gap:"$10",display:"flex",flexDirection:"column"}),Sh=xr("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var hE=10;function bc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=gE([]),c=fE(0),{swaps:l,groupCounts:p,groups:u}=n(e),m=Th(gh,[]),f=Th(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,hE),s(m(p,c.current)))},[e.length]);if(mE(()=>{r||f()},[r,f]),r){let h=[1,2];return Re.createElement(Re.Fragment,null,[h,h].map((d,S)=>Re.createElement(wc,{key:S},Re.createElement(vc,null,Re.createElement(uE,{variant:"text",width:60,size:"small"}),Re.createElement(Ch,{size:16})),Re.createElement(Ch,{size:4}),Re.createElement(yh,null,d.map((C,T)=>Re.createElement(kh,{isLoading:!0,key:T}))))))}return Re.createElement(pE,{endReached:()=>{c.current<e.length&&f()},groupCounts:a,groupContent:h=>Re.createElement(wc,null,Re.createElement(vc,null,Re.createElement(dE,{variant:"label",size:"medium",className:Tc()},u[h]))),itemContent:(h,g)=>{let d=l[h];if(!d)return null;let S=cE(d),y=d.steps[0],C=d.steps[d.steps.length-1];return!y||!C?null:Re.createElement(hh,{key:d.requestId},Re.createElement(kh,{className:"widget-history-group-list-swap-item-btn",requestId:d.requestId,creationTime:d.creationTime,status:d.status,onClick:o,currentStep:S,tooltipContainer:W(),onlyShowTime:u[g]===lE.t("Today"),swapTokenData:{from:{token:{image:y.fromLogo,displayName:y.fromSymbol},blockchain:{image:y.fromBlockchainLogo||""},amount:_(d.inputAmount,6,6),realAmount:d.inputAmount},to:{token:{image:C.toLogo,displayName:C.toSymbol},blockchain:{image:C.toBlockchainLogo||""},amount:_(C.outputAmount||C.expectedOutputAmountHumanReadable||"",6,6),realAmount:C.outputAmount||C.expectedOutputAmountHumanReadable||""}}}))}})}i(bc,"HistoryGroupedList");import{i18n as fa}from"@lingui/core";import wh from"dayjs";var vh=i(t=>{let e=new Map([["today",{title:fa.t("Today"),swaps:[]}],["week",{title:fa.t("This week"),swaps:[]}],["month",{title:fa.t("This month"),swaps:[]}],["year",{title:fa.t("This year"),swaps:[]}]]);function o(l,p){e.has(l)||e.set(l,{title:l,swaps:[]}),e.get(l)?.swaps.push(p)}i(o,"addYearsToOutput");let n=wh();t.forEach(l=>{let p=Number(l.creationTime),u=wh(p);if(n.isSame(u,"day"))e.get("today")?.swaps.push(l);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(l);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(l);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(l);else{let m=new Date(p).getFullYear().toString();o(m,l)}});let r=Array.from(e.values()).filter(l=>l.swaps.length>0),a=r.flatMap(l=>l.swaps),s=r.map(l=>l.swaps.length),c=r.map(l=>l.title);return{swaps:a,groupCounts:s,groups:c}},"groupSwapsByDate");var vE=Ec("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),bE=Ec("div",{display:"flex",justifyContent:"center",alignItems:"center"}),xE=Ec("div",{"._typography":{color:"$neutral700",[`.${SE}&`]:{color:"$neutral900"}}}),EE=[{id:Ir.SUCCESS,title:Oe.t("Complete")},{id:Ir.RUNNING,title:Oe.t("Running")},{id:Ir.FAILED,title:Oe.t("Failed")}],IE=[{id:"all",title:Oe.t("All")},{id:"swap",title:Oe.t("Swap")},{id:"refuel",title:Oe.t("Refuel")}],AE=i((t,e)=>t?.length?t.filter(o=>Pt(o.fromBlockchain,e)||Pt(o.toBlockchain,e)||Pt(o.toSymbol,e)||Pt(o.fromSymbol,e)).length:!1,"isStepContainsText");function xh(){let t=wE(),{manager:e,state:o}=yE(),n=wt(e).map(({swap:E})=>E),[r,a]=Er(""),[s,c]=Er(!1),l=!o.loadedFromPersistor,[p,u]=Er(""),[m,f]=Er(!1),[h,g]=Er("all"),d=i(E=>{let N=E.target.value;a(N)},"handleSearch"),{isMultiMode:S}=Ct(),y=bh(()=>!r&&!p&&h==="all"?n:n.filter(E=>{let{inputAmount:N,status:I,steps:x,requestId:w,mode:B}=E;return(!r||Pt(N,r)||Pt(I,r)||AE(x,r)||Pt(w,r))&&(!p||p===I)&&(h==="all"?!0:h==="swap"?!B||B==="swap":h==="refuel"?B==="refuel":!1)}),[n,r,p,h]),C=!y?.length&&!l,T=i(()=>f(!1),"onCloseModal"),v=i(async()=>{try{await e?.clearQueue(),f(!1)}catch(E){console.log(E)}},"onClear"),b=bh(()=>!n.some(E=>E.status===Ir.SUCCESS||E.status===Ir.FAILED),[n]);return te.createElement(ie,{header:{title:Oe.t("History"),suffix:te.createElement(uo,null,te.createElement(xc,{id:"widget-history-clear-btn",disabled:b,variant:"ghost",size:"xsmall",onClick:()=>f(!0)},te.createElement(ga,{size:"medium",variant:"label",color:"error"},Oe.t("Clear"))))}},te.createElement(se,null,te.createElement(bE,null,te.createElement(At,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Oe.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:d,style:{height:36},value:r}),te.createElement(So,{size:10,direction:"horizontal"}),te.createElement(kc,{filterBy:p,open:s,onOpenChange:E=>c(E),onClickItem:E=>u(E),list:EE})),te.createElement(So,{size:"16"}),S&&!l&&te.createElement(te.Fragment,null,te.createElement(TE,{items:IE,onChange:E=>g(E.id),value:h,type:"secondary"}),te.createElement(So,{size:"12"})),te.createElement(vE,null,C&&te.createElement(Sh,null,te.createElement(So,{size:32}),te.createElement(kE,{title:r?Oe.t("No results found"):Oe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Oe.t("Try using different keywords"):Oe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!C&&te.createElement(bc,{list:y,onSwapClick:t,groupBy:vh,isLoading:l}))),te.createElement(R,{open:m,onClose:T,id:"widget-history-clear-modal",container:W()},te.createElement(So,{size:20}),te.createElement(CE,{type:"warning",title:Oe.t("Clear Transaction History"),description:te.createElement(xE,null,te.createElement(ga,{variant:"body",size:"medium"},Oe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),te.createElement(So,{size:"24"}),te.createElement(ga,{variant:"body",size:"small"},Oe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),te.createElement(So,{size:30}),te.createElement(xc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:v},Oe.t("Yes, Clear the history")),te.createElement(So,{size:10}),te.createElement(xc,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:T},te.createElement(ga,{variant:"title",size:"medium",color:"primary"},Oe.t("No, Cancel")))))}i(xh,"HistoryPage");import{i18n as ty}from"@lingui/core";import{Button as pI,Divider as Uc,styled as uI,WarningIcon as dI}from"@rango-dev/ui";import mI from"bignumber.js";import ye,{useEffect as oy,useState as ny}from"react";import{useNavigate as fI}from"react-router-dom";import{i18n as Ih}from"@lingui/core";import{Alert as BE,Divider as Ic,NoRouteIcon as WE,Typography as ME}from"@rango-dev/ui";import Ho from"react";import{styled as NE}from"@rango-dev/ui";var Eh=NE("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Ac(){let{fromToken:t,toToken:e}=U()();return!!t&&!!e&&qt(t,e)?Ho.createElement(Eh,null,Ho.createElement(Ic,{size:10}),Ho.createElement(WE,{size:24,color:"gray"}),Ho.createElement(Ic,{size:4}),Ho.createElement(ME,{variant:"title",size:"small"},Ih.t("No Routes Found")),Ho.createElement(Ic,{size:4}),Ho.createElement(BE,{title:Ih.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Ac,"SameTokensWarning");import{Alert as LE,Button as PE}from"@rango-dev/ui";import Nh from"react";import{i18n as ha}from"@lingui/core";function Ah(t){let e=null;return t===li?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:ha.t("Reset"),title:ha.t("Slippage cannot be set lower than 0.01%.")},e):t>tn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:ha.t("Change"),title:ha.t("Caution, your slippage is high!")},e):null}i(Ah,"makeAlerts");function Bh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=k(),{onChangeSettings:a}=t,c=Ah(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(si),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?Nh.createElement(LE,{title:c.title,type:c.alertType,variant:"alarm",action:Nh.createElement(PE,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(Bh,"SlippageWarningsAndErrors");import{i18n as OE}from"@lingui/core";import{IconButton as UE,ReverseIcon as zE,Skeleton as QE,Tooltip as qE,Typography as Ar}from"@rango-dev/ui";import mt from"react";import ya from"bignumber.js";function Mh(t){let{error:e,isDarkTheme:o,warning:n}=t,{quoteError:r,slippageError:a}=e,{quoteWarning:s,slippageWarning:c}=n,l=!!a||r?.type===4,p=!!c||s?.type===2;return l?"$error500":p?"$warning500":o?"$neutral600":"$neutral700"}i(Mh,"getSlippageColor");function Lh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new ya(e),r=new ya(o),a=n.dividedBy(r),s;return a.isLessThan(1)?s=a.toFixed(14).replace(/\.?0+$/,""):a.toFixed(0).length>10?s=a.toFixed(0).slice(0,10):s=a.toFixed(2),{displayValue:s,rawValue:a.toFixed()}}i(Lh,"getUsdExchangeRate");function Ph(t,e){let o=new ya(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,ya.ROUND_DOWN).toFormat(2)}`}i(Ph,"formatTokenValueInUsd");import{darkTheme as $E,styled as Bc,Typography as FE}from"@rango-dev/ui";var _h=Bc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),Dh=Bc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${$E} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Wc=Bc(FE,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function Mc(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=k(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,m=o!==null?o:e,{mode:f}=po({}),h=rn(m),g=f==="dark",d=n==="default",S={quoteError:a,slippageError:h?.type==="error"?h.message:null},y={quoteWarning:s,slippageWarning:h?.type==="warning"?h.message:null},C=p?.swaps[0]?.from||c,T=p?.swaps[p?.swaps.length-1]?.to||l,v=d?C:T,b=d?T:C,E=Number(d?p?.outputAmount:p?.requestAmount),N=Number(d?p?.requestAmount:p?.outputAmount),I=E||v.usdPrice,x=N||b.usdPrice,{rawValue:w,displayValue:B}=Lh({toTokenUsdPrice:x,fromTokenUsdPrice:I});return mt.createElement(_h,null,mt.createElement(Ar,{variant:S||y?"label":"body",size:S||y?"medium":"small",color:Mh({error:S,warning:y,isDarkTheme:g})},OE.t("Slippage:")," ",m,"%"),u?mt.createElement(QE,{height:16,width:104,variant:"rounded"}):I&&x&&mt.createElement(Dh,null,mt.createElement(Ar,{className:"rate-text",variant:"body",size:"small"},"1"),mt.createElement(Wc,{className:"rate-text",variant:"body",size:"small"},b.symbol),mt.createElement(UE,{id:"widget-home-page-change-rate-button",onClick:r},mt.createElement(zE,{size:14,color:"secondary"})),mt.createElement(qE,{container:W(),side:"top",sideOffset:4,content:mt.createElement(Ar,{className:"rate-text",variant:"body",size:"small"},w)},mt.createElement(Ar,{className:"rate-text",variant:"body",size:"small"},B)),mt.createElement(Wc,{className:"rate-text",variant:"body",size:"small"},v.symbol),v.usdPrice&&mt.createElement(Ar,{color:"neutral600",variant:"body",size:"small"},"~",Ph(Number(w),v.usdPrice))))}i(Mc,"SwapMetrics");import{i18n as XE}from"@lingui/core";import{Header as YE}from"@rango-dev/ui";import Co,{useEffect as ZE,useState as JE}from"react";import{i18n as GE}from"@lingui/core";import{Divider as Pc,FullExpandedQuote as VE,Typography as KE}from"@rango-dev/ui";import we from"react";import{styled as Lc}from"@rango-dev/ui";var $h=Lc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Fh=Lc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Oh=Lc("div",{width:"146px"});import{i18n as Nr}from"@lingui/core";import{Select as HE}from"@rango-dev/ui";import Uh from"react";function Sa(t){let{updateQuotePartialState:e,sortStrategy:o}=U()(),n=[{value:"SMART",label:Nr.t("Smart Routing")},{value:"FEE",label:Nr.t("Lowest Fee")},{value:"SPEED",label:Nr.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Nr.t("Maximum Return")},{value:"PRICE",label:Nr.t("Maximum Output")}];return Uh.createElement(Oh,null,Uh.createElement(HE,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(Sa,"SelectStrategy");var zh=3;function Br(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:c}=t,{selectedQuote:l,quotes:p,updateQuotePartialState:u,fromToken:m,toToken:f,sortStrategy:h,error:g}=U()(),{slippage:d,customSlippage:S}=k(),{findToken:y}=k(),C=c||W(),T=!!p&&p.results.length,v=S??d,b=i(I=>{if(!m||!f||!p)return null;let x={requestAmount:p.requestAmount,validationStatus:null,...I};return dn({currentQuote:x,userSlippage:v,findToken:y})},"getQuoteWarning"),E=g?.type===0||g?.type===1,N=p?.results?xi(h,p?.results):[];return we.createElement(we.Fragment,null,a&&we.createElement(we.Fragment,null,we.createElement(Fh,null,we.createElement(KE,{size:"xmedium",variant:"title"},GE.t("Sort by")),we.createElement(Sa,{container:C})),we.createElement(Pc,{size:"10"})),e&&Array.from({length:zh},(I,x)=>we.createElement(we.Fragment,{key:x},s?we.createElement(VE,{loading:!0}):we.createElement(yr,{tagHidden:!1,type:"list-item",expanded:!1}),x!==zh-1&&we.createElement(Pc,{size:16}))),!e&&we.createElement(we.Fragment,null,T?N.map((I,x)=>{let w=b(I),B=ec(I.swaps),M=N.length-1===x;return we.createElement(we.Fragment,{key:I.requestId},we.createElement(zo,{id:"widget-quotes-quote-info-container",showModalFee:r,container:C,selected:l?.requestId===I.requestId,tagHidden:!1,quote:{...I,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:B?.options||null,warning:w,fullExpandedMode:s,onClick:$=>{B||u("warning",w),u("error",B?.options||null),o($)},type:"list-item"}),!M&&we.createElement(Pc,{size:16}))}):E&&we.createElement($h,null,we.createElement(lr,{size:s?"large":"small",error:g,fetch:n}))))}i(Br,"Quotes");import{darkTheme as jE,styled as Qh}from"@rango-dev/ui";var qh=Qh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${jE} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Hh=Qh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var RE=100;function _c(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=JE(!1),l=s?"":"is-hidden",{config:p}=k(),u=p?.variant==="full-expanded",m=Ao();return ZE(()=>{let f=null;return a?f=setTimeout(()=>{c(!0)},RE):(c(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),Co.createElement(qh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Fi()} widget-expanded-quotes-container`,id:tt.EXPANDED_BOX_ID},Co.createElement(YE,{title:XE.t("Routes"),suffix:Co.createElement(Co.Fragment,null,Co.createElement(Sa,{container:m}),Co.createElement(Fo,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),Co.createElement(Hh,null,Co.createElement(Br,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Ao(),onClickOnQuote:n,fullExpandedMode:u})))}i(_c,"ExpandedQuotes");import{i18n as Zh}from"@lingui/core";import{SwapInput as Jh}from"@rango-dev/ui";import nI from"bignumber.js";import Wr from"react";import{ReverseIcon as oI}from"@rango-dev/ui";import $c from"react";import{keyframes as eI,styled as Gh}from"@rango-dev/ui";var Dc=450,tI=eI({"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)"}}),Vh=Gh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Kh=Gh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${tI} ${Dc}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 Fc(){let t=U().use.switchFromAndTo();return $c.createElement(Vh,null,$c.createElement(Kh,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Dc),t()}},$c.createElement(oI,{size:12})))}i(Fc,"SwitchFromAndToButton");import{styled as jh}from"@rango-dev/ui";var Xh=jh("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),Yh=jh("div",{position:"relative"});function Oc(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:c,toBlockchain:l,setInputAmount:p,sanitizeInputAmount:u,inputAmount:m,inputUsdValue:f,outputAmount:h,outputUsdValue:g,selectedQuote:d}=U()(),{swapMode:S}=Ct(),{connectedWallets:y,getBalanceFor:C}=k(),T=a?C(a):null,v=ri(T)?.amount??"0",b=T?new nI(T.amount).shiftedBy(-T.decimals):ce,E=!!s&&wu(y,s.name),N=!zs(d,m,f),I=!zs(d,m,g),x=!f||!g||!g.gt(0)?null:Kt(f.toString(),g.toString());return Wr.createElement(Xh,null,Wr.createElement(Yh,null,Wr.createElement(Jh,{label:Zh.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:v,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:m,usdValue:N?void 0:_(f,4,4),realUsdValue:N?void 0:f?.toString(),error:N?ne().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:E,tooltipContainer:W(),onSelectMaxBalance:()=>{let w=_(b,T?.decimals),B=T?.amount?w.split(",").join(""):"";p(B)},anyWalletConnected:y.length>0}),S==="swap"&&Wr.createElement(Fc,null)),Wr.createElement(Jh,{selectionType:S==="swap"?"token":"chain",sharpBottomStyle:!r&&(!!d||e),label:Zh.t("To"),mode:"To",id:"widget-swap-to-input",fetchingQuote:e,chain:{displayName:l?.displayName||"",image:l?.logo},token:{displayName:c?.symbol||"",image:c?.image,securityWarning:!!c?.warning},percentageChange:_(Kt(f,g),2,2),warningLevel:jt(x??0),price:{value:_(h,6,6),usdValue:I?void 0:_(g,4,4),realValue:h?.toString(),realUsdValue:I?void 0:g?.toString(),error:I?ne().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}i(Oc,"Inputs");import{warn as rI}from"@rango-dev/logging-core";import{useCallback as iI,useEffect as aI,useRef as sI,useState as lI}from"react";function Rh(){let{fetch:t,loading:e,cancelFetch:o}=la({request:async(n,r)=>await ct().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Rh,"useFetchAllQuotes");var cI=600;function Ca({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Rh(),{excludeLiquiditySources:n,routing:r}=k().config,{connectedWallets:a}=k(),c=a.some(le=>le.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:m,selectedQuote:f,sortStrategy:h,resetQuote:g,error:d,warning:S,setSelectedQuote:y,updateQuotePartialState:C}=U()(),{slippage:T,customSlippage:v,affiliatePercent:b,affiliateRef:E,affiliateWallets:N,fetchStatus:I}=k(),x=k().getLiquiditySources(),w=k().getDisabledLiquiditySources(),B=k().excludeLiquiditySources(),{findToken:M}=k(),[$,Q]=lI(!0),K=sI(u),j=v??T,Y=!l||!p||qt(l,p)||!Fn(u),ee=i(le=>{Q(le)},"resetState"),Z=i(le=>{let{fromToken:he,toToken:qe,inputAmount:gt,liquiditySources:Ie,excludeLiquiditySources:D,disabledLiquiditySources:A,slippage:H,affiliateRef:ae,affiliatePercent:V,affiliateWallets:X}=le;if($||ee(!0),!Y&&he&&qe){g();let He=Qd({fromToken:he,toToken:qe,inputAmount:gt,liquiditySources:Ie,excludeLiquiditySources:D,disabledLiquiditySources:A,wallets:a,slippage:H,affiliateRef:ae,affiliatePercent:V,affiliateWallets:X,contractCall:c});nn("experimental",r)&&(He.experimental=!0),nn("avoidNativeFee",r)&&(He.avoidNativeFee=!0),nn("enableCentralizedSwappers",r)&&(He.enableCentralizedSwappers=!0),r?.maxLength&&(He.maxLength=r.maxLength),e(He).then(Ge=>{let ve=xi(h,Ge.results),Mt=Bd(f,ve,Ge.requestAmount);Q(!1),C("quotes",Ge),y(Mt),ca({diagnosisMessages:Ge.diagnosisMessages,requestId:Mt?.requestId||"",swaps:Mt?.swaps});let Xa=Mt&&dn({currentQuote:Mt,userSlippage:j,findToken:M});C("warning",Xa)}).catch(Ge=>{let ve=pa(Ge);(ve.type===0||ve.type===1)&&g(),ve.type!==2&&(C("error",ve),Q(!1),rI(new Error("quote error"),{tags:{...ve,type:Ye[ve.type],requestBody:He}}))})}},"fetch"),ue=iI(Zr(le=>{Z(le)},cI),[Y]);return aI(()=>{if(!t){Q(!1);return}if(I!=="success")return;if(Y){Q(!1),(f||d||S)&&g();return}if(!Fn(u)&&m?.eq(0)){ee(!1),o();return}g(),ee(!0);let le=Z;return K.current&&K.current!=u&&(le=ue),K.current=u,le({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:j,affiliateRef:E,affiliatePercent:b,affiliateWallets:N,contractCall:c}),o},[I,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,x?.length,n,w.length,j,E,b,c,JSON.stringify(N)]),{fetch:()=>Z({inputAmount:u,fromToken:l,toToken:p,liquiditySources:x,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:j,affiliateRef:E,affiliatePercent:b,affiliateWallets:N,contractCall:c}),loading:$}}i(Ca,"useSwapInput");function ey(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};ke.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(ey,"emitPreventableEvent");var gI=uI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),hI=300;function ry(){let t=fI(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:m,updateQuotePartialState:f}=U()(),[h,g]=ny(!1),{isLargeScreen:d,isExtraLargeScreen:S}=hn(),{fetch:y,loading:C}=Ca({refetchQuote:a}),{config:T,fetchStatus:v,connectedWallets:b,customSlippage:E,slippage:N,setSlippage:I,setCustomSlippage:x}=k(),{isActiveTab:w}=oe(),[B,M]=ny(!1),$=E!==null?E:N,{swapMode:Q}=Ct(),K=rn($),L=Fd({fetchMetaStatus:v,fetchingQuote:C,inputAmount:n,quote:r,anyWalletConnected:b.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Y=Nu(d,S,T?.variant),ee=!!n&&!!e&&!!o&&new mI(n).gt(0)&&!Xd(e,o),Z=ee&&v==="success"&&C,ue=K?.quoteValidation||c,qe=(!Y||Y&&l?.results.length)&&(ue||s),gt=!!e&&!!o,Ie=gt&&!!K,D=(r||s)&&!B?y:void 0,A=i(X=>{Y&&h?(g(!1),setTimeout(()=>{t(X)},hI)):t(X)},"onHandleNavigation"),H=i(X=>{r?.requestId!==X.requestId&&(M(!1),p(X))},"onClickOnQuote"),ae=i(X=>{if(X){if(ai.includes(X)){I(X),x(null);return}x(X)}},"onChangeSlippage"),V=i(X=>{A(X==="from"?O.fromSwap:Q==="swap"?O.toSwap:O.toSwap+"/"+O.blockchains)},"handleInputTokenClick");return oy(()=>{u(),f("refetchQuote",!0)},[]),oy(()=>{g(ee)},[ee]),ye.createElement(gI,null,ye.createElement(ie,{height:"auto",footer:ye.createElement(pI,{id:`widget-swap-${L.action}-btn`,type:"primary",size:"large",disabled:L.disabled||!w,prefix:L.action==="confirm-warning"&&ye.createElement(dI,null),fullWidth:!0,onClick:()=>{L.action==="connect-wallet"?ey({type:"clickConnectWallet"},()=>A(O.wallets)):L.action==="confirm-warning"?M(!0):A(O.confirmSwap)}},L.title),header:{onWallet:()=>{A(O.wallets)},hasBackButton:!1,title:T.title||(Q==="swap"?ty.t("Swap"):ty.t("Refuel")),suffix:ye.createElement(Fo,{hidden:Y?["refresh"]:void 0,onClickRefresh:D,onClickHistory:()=>A(O.swaps),onClickSettings:()=>{A(O.settings)}})}},ye.createElement(se,null,ye.createElement(Oc,{fetchingQuote:Z,fetchMetaStatus:v,isExpandable:Y,onClickToken:V}),ye.createElement(Uc,{size:"2"}),Y?null:ye.createElement(zo,{quote:r,loading:Z,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:ue,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{f("refetchQuote",!1),A(O.routes)}:void 0}),gt&&ye.createElement(ye.Fragment,null,ye.createElement(Uc,{size:8}),ye.createElement(Mc,{quoteError:s,quoteWarning:ue,fromToken:e,toToken:o,quote:r,loading:Z})),qe?ye.createElement(ye.Fragment,null,ye.createElement(ur,{warning:ue,error:s,skipAlerts:!!K,couldChangeSettings:!0,refetchQuote:y,showWarningModal:B,confirmationDisabled:!w,onOpenWarningModal:()=>M(!0),onCloseWarningModal:()=>M(!1),onChangeSlippage:ae,onConfirmWarningModal:()=>{M(!1),m(!0),A(O.confirmSwap)},onChangeSettings:()=>A(O.settings)})):null,Ie&&ye.createElement(ye.Fragment,null,ye.createElement(Uc,{size:"10"}),ye.createElement(Bh,{onChangeSettings:()=>A(O.settings)})),ye.createElement(Ac,null))),Y?ye.createElement(_c,{loading:Z,onClickOnQuote:H,fetch:y,onClickRefresh:D,isVisible:h}):null)}i(ry,"Home");import{i18n as iy}from"@lingui/core";import{Alert as yI,Divider as SI,List as CI,ListItemButton as kI,Radio as TI,RadioRoot as wI,Typography as vI}from"@rango-dev/ui";import Ot from"react";function ko(){let{setLanguage:t,language:e,config:o}=k(),n=Du,r=o?.language||an;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||an),resetLanguage:()=>t(null)}}i(ko,"useLanguage");function ay(){let{activeLanguage:t,changeLanguage:e,languages:o}=ko(),n=je(),r=o.map(a=>{let{local:s,label:c,SVGFlag:l}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Ot.createElement(vI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Ot.createElement(TI,{value:s}),start:Ot.createElement(l,null)}});return Ot.createElement(ie,{header:{title:iy.t("Language")}},Ot.createElement(se,null,Ot.createElement(yI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Ot.createElement(SI,{size:"8"}),Ot.createElement(wI,{value:t},Ot.createElement(CI,{type:Ot.createElement(kI,{title:iy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(ay,"LanguagePage");import{i18n as oo}from"@lingui/core";import{Button as AI,Checkbox as NI,Image as BI,ListItemButton as WI,NotFound as MI,Typography as LI}from"@rango-dev/ui";import et,{useState as PI}from"react";import{Checkbox as EI,Skeleton as ly}from"@rango-dev/ui";import Lr from"react";import{styled as zc}from"@rango-dev/ui";var Mr=zc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Qc=zc("div",{width:80,display:"flex",justifyContent:"flex-end"}),qc=zc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as bI,styled as xI}from"@rango-dev/ui";var sy=xI(bI,{height:61});var II=30;function Hc(){return Lr.createElement(Mr,null,Array.from(Array(II),(t,e)=>Lr.createElement(sy,{hasDivider:!0,key:e,start:Lr.createElement(ly,{variant:"circular",width:35,height:35}),title:Lr.createElement(ly,{variant:"text",size:"large",width:90}),end:Lr.createElement(EI,{checked:!1})})))}i(Hc,"LoadingLiquiditySourceList");function Gc({sourceType:t}){let e=k().fetchStatus,o=k().swappers(),n=k().getDisabledLiquiditySources(),[r,a]=PI(""),s=k().toggleLiquiditySource,c=k().isInCampaignMode(),l=ci(o,n),p={Exchanges:oo.t("Exchanges"),Bridges:oo.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=l.filter(y=>u.includes(y.type)),f=m.length===m.filter(y=>y.selected).length,h=i(()=>{m.forEach(y=>{f?s(y.groupTitle):y.selected||s(y.groupTitle)})},"toggleAllSources"),g=m.map(y=>{let{selected:C,groupTitle:T,logo:v,id:b,...E}=y;return{id:`widget-setting-liquidity-source-${pu(b.toLowerCase())}-item-btn`,start:et.createElement(BI,{src:v,size:22,type:"circular"}),onClick:()=>{c||s(T)},end:et.createElement(NI,{checked:C,disabled:c}),title:et.createElement(LI,{variant:"title",size:"xmedium"},oo.t(T)),selected:C,groupTitle:T,logo:v,...E}}),d=i(y=>{let C=y.target.value;a(C)},"handleSearch"),S=g;return r&&(S=g.filter(y=>Pt(y.groupTitle,r))),et.createElement(ie,{header:{title:oo.t(t),suffix:et.createElement(Qc,null,et.createElement(AI,{id:`widget-liquidity-source-${f?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:h},f?oo.t("Deselect all"):oo.t("Select all")))}},et.createElement(se,{view:!0},et.createElement(At,{value:r,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:oo.t("Search {sourceType}",{sourceType:p[t]}),onChange:d}),e==="loading"&&et.createElement(Hc,null),!S.length&&r?et.createElement(qc,null,et.createElement(MI,{title:oo.t("No results found"),description:oo.t("Try using different keywords")})):e==="success"&&et.createElement(Mr,{disabled:c,className:"widget-liquidity-source-list"},S.map(y=>{let{groupTitle:C,...T}=y;return et.createElement(et.Fragment,{key:y.id},et.createElement(WI,{style:{height:"61px"},...T,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(Gc,"LiquiditySourcePage");import{i18n as _I}from"@lingui/core";import ka from"react";import{useNavigate as DI}from"react-router-dom";function cy(){let t=DI(),e=je(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=U()(),{fetch:c,loading:l}=Ca({refetchQuote:n}),p=i(f=>{r(f),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${O.settings}`,m=`../${O.wallets}`;return ka.createElement(ie,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:_I.t("Routes"),suffix:ka.createElement(Fo,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},ka.createElement(se,null,ka.createElement(Br,{fetch:c,loading:l,onClickOnQuote:p})))}i(cy,"RoutesPage");import{i18n as hy}from"@lingui/core";import{Divider as yy,getCategoriesCount as VI,SelectableCategoryList as KI}from"@rango-dev/ui";import no,{useState as Sy}from"react";import{useNavigate as jI}from"react-router-dom";import{i18n as Vc}from"@lingui/core";import{Divider as UI,Image as zI,ListItemButton as QI,NotFound as qI,Typography as gy}from"@rango-dev/ui";import ft,{useEffect as HI,useState as GI}from"react";var py=i((t,e,o)=>t.filter(n=>Jr(n.type,o)).filter(n=>st(n.name,e)||st(n.displayName,e)),"filterBlockchains");import{ImageContainer as $I,styled as uy}from"@rango-dev/ui";var dy=uy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Ta=uy(vl,{padding:0,margin:0,listStyle:"none",[`& ${$I}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as FI,Skeleton as my}from"@rango-dev/ui";import wa from"react";var OI=20;function fy(){return wa.createElement(Ta,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(OI),t=>wa.createElement(FI,{key:t,hasDivider:!0,start:wa.createElement(my,{variant:"circular",width:35,height:35}),title:wa.createElement(my,{variant:"text",size:"large",width:90})})))}i(fy,"LoadingBlockchainList");function Kc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=GI(e),{fetchStatus:l}=k();HI(()=>{c([...py(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?ft.createElement(qI,{title:Vc.t("No results found"),description:Vc.t("Try using different keywords")}):ft.createElement(Ta,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>ft.createElement(QI,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:ft.createElement(zI,{src:u.logo,size:30}),title:ft.createElement(gy,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return ft.createElement(ft.Fragment,null,a&&ft.createElement(ft.Fragment,null,ft.createElement(gy,{variant:"label",size:"large"},Vc.t("Select Chain")),ft.createElement(UI,{size:4})),ft.createElement(dy,null,l==="loading"&&ft.createElement(fy,null),l==="success"&&p()))}i(Kc,"BlockchainList");function va(t){let{type:e}=t,o=je(),[n,r]=Sy(""),[a,s]=Sy("ALL"),c=U().use.setToBlockchain(),l=U().use.setFromBlockchain(),p=U().use.setToToken(),{fetchStatus:u,findNativeToken:m}=k(),f=jI(),{swapMode:h}=Ct(),g=k().blockchains({type:e}),d=VI(g),S=!t.hideCategory&&d!==1,y=i(C=>{if(e==="custom-token")f(`..?blockchain=${C.name}`,{replace:!0});else{if(e==="source")l(C);else if(h==="swap")c(C);else{let T=m(C);T&&p({token:T,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return no.createElement(ie,{header:{title:hy.t("Select Chain")}},no.createElement(se,{view:!0},S&&no.createElement(no.Fragment,null,no.createElement(KI,{setCategory:s,category:a,blockchains:g,isLoading:u==="loading"}),no.createElement(yy,{size:24})),no.createElement(At,{value:n,autoFocus:!0,placeholder:hy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:C=>r(C.target.value)}),no.createElement(yy,{size:16}),no.createElement(Kc,{list:g,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:y})))}i(va,"SelectBlockchainPage");import{i18n as Ea}from"@lingui/core";import{Divider as xy,Spinner as cA}from"@rango-dev/ui";import To,{useEffect as pA,useState as uA}from"react";import{useNavigate as dA}from"react-router-dom";import{i18n as Yc}from"@lingui/core";import{BlockchainsChip as ba,Divider as wy,Image as vy,Skeleton as eA,Tooltip as tA,Typography as Zc}from"@rango-dev/ui";import be from"react";import{useEffect as ZI}from"react";var Cy=["ETH","COSMOS","OSMOSIS"];function jc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(XI),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let c=o.limit-e.length;for(let l=0;l<=c;l++){let p=n[l];s=s.filter(u=>p?.name!==u)}}n.sort(YI(s)),r=n.splice(a)}return{list:n,more:r}}i(jc,"prepare");function XI(t,e){let o=Cy,n=o.findIndex(c=>c===t.name),r=o.findIndex(c=>c===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(XI,"sortByMostUsedBlockchains");function YI(t){return i(function(o,n){let r=t.findIndex(l=>l===o.name),a=t.findIndex(l=>l===n.name),s=r>-1,c=a>-1;return s&&c?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(YI,"generateSortByPreferredBlockchainsFor");function ky(t,e){return!!e.list.find(o=>o.name===t)}i(ky,"isInVisibleList");function Xc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=k();ZI(()=>{if(e?.selected){let a=jc(t,o,e);ky(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=jc(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Xc,"usePrepareBlockchainList");import{styled as JI}from"@rango-dev/ui";var Ty=JI("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var oA=6,nA=12;function Jc(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=oe(),c=Xc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=k(),p=U().use.resetToBlockchain(),u=U().use.resetFromBlockchain(),m=c.more.length>0,f=c.more[0],h=c.more.length===1&&f,g=!h&&m;return be.createElement(be.Fragment,null,!s&&be.createElement(be.Fragment,null,be.createElement(wy,{size:12}),be.createElement(Zc,{variant:"label",size:"large"},Yc.t("Select Chain"))),be.createElement(wy,{size:12}),be.createElement(Ty,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?oA:nA),(d,S)=>be.createElement(eA,{key:S,variant:"rounded",height:50})),l==="success"&&be.createElement(be.Fragment,null,be.createElement(ba,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},be.createElement(Zc,{variant:"body",size:"xsmall",color:"secondary500"},Yc.t("All"))),c.list.map(d=>be.createElement(tA,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:W()},be.createElement(ba,{className:"widget-blockchains-section-item-btn",key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},be.createElement(vy,{src:d.logo,size:30})))),h?be.createElement(ba,{className:"widget-blockchains-section-only-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},be.createElement(vy,{src:f.logo,size:30})):null,g?be.createElement(ba,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},be.createElement(Zc,{variant:"body",size:"xsmall",color:"secondary500"},Yc._("More +{count}",{count:c.more.length}))):null)))}i(Jc,"BlockchainsSection");import{useCallback as iA,useRef as aA,useState as Rc}from"react";function ep(){let t=k().blockchains(),e=aA(null),{customTokens:o}=k(),[n,r]=Rc(!1),[a,s]=Rc([]),[c,l]=Rc(null),p=i(async(f,h)=>{l(null),r(!0),s([]);try{let g=await ct().searchCustomTokens({query:f,blockchain:h},{signal:e.current?.signal}),d=new Set(o().map(C=>Gt(C))),S=new Set(t.map(C=>C.name)),y=g.tokens.filter(C=>S.has(C.blockchain)&&!d.has(Gt(C)));s(y),r(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&r(!1)}},"fetch"),u=iA(Zr((f,h)=>{e.current?.signal.aborted||p(f,h)},600),[t.length]);return{fetch:(f,h)=>{e.current=new AbortController,s([]),r(!0),u(f,h)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}i(ep,"useSearchCustomTokens");function xa(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}i(xa,"shouldSearchForCustomTokens");function by(t,e,o,n,r){let a=[...t];return xa(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(by,"prepareTokensList");function Ia(t){let{type:e}=t,o=dA(),n=je(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=U()(),{getBalanceFor:u}=k(),{fetch:m,loading:f,tokens:h,cancel:g}=ep(),[d,S]=uA(""),y=e==="source"?r:a,C=y?.name??"",T=k().blockchains({type:e}),v=k().tokens({type:e,blockchain:C,searchFor:d,getBalanceFor:u}),b=by(v,h,d,f,y?.name),E=i(x=>{e==="source"?l(x):p(x)},"updateBlockchain"),N=i(x=>{e==="source"?s({token:x,meta:{blockchains:T}}):c({token:x,meta:{blockchains:T}})},"updateToken"),I={source:Ea.t("Source"),destination:Ea.t("Destination")};return pA(()=>(xa(v,d,y?.name)&&m(d,y?.name??void 0),()=>{g()}),[v.length,d,y?.name]),To.createElement(ie,{header:{title:Ea.t("Swap {type}",{type:I[e]})}},To.createElement(se,null,To.createElement(Jc,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(O.blockchains),onChange:x=>{E(x)}}),To.createElement(xy,{size:24}),To.createElement(At,{value:d,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:Ea.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>S(""),onChange:x=>S(x.target.value),suffix:xa(v,d,y?.name)&&f?To.createElement(cA,{size:12,color:"secondary"}):void 0}),To.createElement(xy,{size:16}),To.createElement(wr,{list:b,selectedBlockchain:C,searchedFor:d,type:e,onChange:x=>{N(x);let w=T.find(B=>x.blockchain===B.name);w&&E(w),n()}})))}i(Ia,"SelectSwapItemsPage");import{i18n as rp}from"@lingui/core";import{Alert as OA,Button as UA,styled as zA}from"@rango-dev/ui";import Go from"react";import{useInRouterContext as QA,useSearchParams as qA}from"react-router-dom";import{i18n as Wy}from"@lingui/core";import{Alert as hA,Divider as op,InfoIcon as yA,SlippageIcon as SA,TextField as CA,Tooltip as kA,Typography as My}from"@rango-dev/ui";import ze from"react";import{Chip as mA,styled as Pr,TextField as fA}from"@rango-dev/ui";var Ey=Pr("div",{paddingTop:"$5",padding:"$10 $5"}),Iy=Pr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${fA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Ay=Pr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Aa=Pr("div",{maxWidth:"280px",padding:"$10"}),Ny=Pr(mA,{width:"61px",flexShrink:0});import{i18n as tp}from"@lingui/core";import{Typography as gA}from"@rango-dev/ui";import _r from"react";function By(){return _r.createElement(Aa,null,_r.createElement(gA,{variant:"label",size:"medium",color:"neutral700"},tp.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),_r.createElement("br",null),_r.createElement("br",null),_r.createElement("b",null,tp.t("Warning")),":\xA0",tp.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(By,"SlippageTooltipContent");function np(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=k(),r=o!==null?rn(o):null,a=i(l=>{let p=l.target.value,u=parseFloat(p);if(isNaN(u))return n(null);let m=u;u>Qn&&(m=Qn),n(m)},"onSlippageValueChange"),s=i(l=>{o!==null&&n(null),e(l)},"onClickSlippageChip"),c=i(l=>{let p=l.target,u=p.value;du(u)||(p.value=u.slice(0,-1))},"onInput");return ze.createElement(Ey,null,ze.createElement(Ay,null,ze.createElement(SA,{size:16,color:"gray"}),ze.createElement(op,{direction:"horizontal",size:4}),ze.createElement(My,{variant:"title",size:"xmedium"},Wy.t("Slippage tolerance per swap")),ze.createElement(op,{direction:"horizontal",size:4}),ze.createElement(kA,{container:W(),side:"top",sideOffset:4,content:ze.createElement(By,null)},ze.createElement(yA,{color:"gray"}))),ze.createElement(Iy,null,ai.map((l,p)=>{let u=`slippage-${p}`;return ze.createElement(Ny,{id:`widget-slippage-chip-${l.toString()}%-btn`,key:u,onClick:()=>s(l),selected:o===null&&l===t,label:`${l.toString()}%`})}),ze.createElement(CA,{type:"number",min:"0.01",max:"30",step:"0.01",status:r?.type||(o?"success":"default"),id:"widget-slippage-chip-text-input",onInput:c,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:a,suffix:o&&ze.createElement(My,{variant:"body",size:"small"},"%"),placeholder:Wy.t("Custom")})),r&&ze.createElement(ze.Fragment,null,ze.createElement(op,{size:10}),ze.createElement(hA,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(np,"Slippage");import{i18n as vt}from"@lingui/core";import{AutoThemeIcon as Ly,BridgesIcon as TA,ChevronRightIcon as Na,DarkModeIcon as Py,Divider as Dr,ExchangeIcon as wA,InfinityIcon as vA,InfoIcon as bA,LanguageIcon as xA,LightModeIcon as _y,List as EA,ListItem as IA,ListItemButton as AA,Skeleton as NA,styled as BA,Switch as WA,Tabs as MA,TargetIcon as LA,Tooltip as PA,Typography as at}from"@rango-dev/ui";import F from"react";import{useNavigate as _A}from"react-router-dom";var DA=BA("div",{width:"202px",height:"$40"}),$A=[{id:"light",icon:F.createElement(_y,{color:"black",size:24}),tooltip:F.createElement(at,{size:"xsmall",variant:"body"},vt.t("Light"))},{id:"dark",icon:F.createElement(Py,{color:"black",size:24}),tooltip:F.createElement(at,{size:"xsmall",variant:"body"},vt.t("Dark"))},{id:"auto",icon:F.createElement(Ly,{color:"black",size:24}),tooltip:F.createElement(at,{size:"xsmall",variant:"body"},vt.t("Auto"))}],FA=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return F.createElement(Ly,{...e});case"dark":return F.createElement(Py,{...e});default:return F.createElement(_y,{...e})}},"getThemeIcon");function Dy(){let t=_A(),{theme:e}=k().config,{setTheme:o,theme:n}=k(),{activeLanguage:r,languages:a}=ko(),s=a.find(L=>L.local===r)?.label,c=k().fetchStatus,l=k().swappers(),p=k().getDisabledLiquiditySources(),{config:{features:u}}=k(),m=k().customTokens(),f=ot("theme",u),h=ot("liquiditySource",u),g=ot("language",u),d=ot("customTokens",u),S=k().infiniteApprove,y=k().toggleInfiniteApprove,C=ci(l,p),T=C.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=T.length,b=T.filter(L=>L.selected).length,E=C.filter(L=>L.type==="DEX"),N=E.length,I=E.filter(L=>L.selected).length,x=i((L,Y)=>{switch(c){case"loading":return F.createElement(NA,{variant:"text",size:"medium",width:50});case"failed":return F.createElement(at,{variant:"body",size:"medium",color:"$error500"},vt.t("Loading failed"));default:return F.createElement(at,{variant:"body",size:"medium"},`${L} / ${Y}`)}},"handleSwapperEndItem"),w={id:"widget-setting-bridge-item-btn",title:F.createElement(at,{variant:"title",size:"xmedium"},vt.t("Bridges")),end:F.createElement(F.Fragment,null,x(b,v),F.createElement(Dr,{direction:"horizontal",size:8}),F.createElement(Na,{color:"black"})),onClick:()=>t(O.bridges),start:F.createElement(TA,{color:"gray",size:16})},B={id:"widget-setting-exchange-item-btn",title:F.createElement(at,{variant:"title",size:"xmedium"},vt.t("Exchanges")),end:F.createElement(F.Fragment,null,x(I,N),F.createElement(Dr,{direction:"horizontal",size:8}),F.createElement(Na,{color:"black"})),start:F.createElement(wA,{color:"gray",size:16}),onClick:()=>t(O.exchanges)},M={id:"widget-setting-custom-tokens-item-btn",title:F.createElement(at,{variant:"title",size:"xmedium"},vt.t("Custom Tokens")),end:F.createElement(F.Fragment,null,F.createElement(at,{variant:"body",size:"medium"},`${m.length}`),F.createElement(Dr,{direction:"horizontal",size:8}),F.createElement(Na,{color:"black"})),start:F.createElement(LA,{color:"gray",size:16}),onClick:()=>t(O.customTokens)},$={id:"widget-setting-language-item-btn",title:F.createElement(at,{variant:"title",size:"xmedium"},vt.t("Language")),start:F.createElement(xA,{color:"gray",size:16}),end:F.createElement(F.Fragment,null,F.createElement(at,{variant:"body",size:"medium"},s),F.createElement(Dr,{direction:"horizontal",size:8}),F.createElement(Na,{color:"black"})),onClick:()=>t(O.languages)},Q={id:"widget-setting-infinite-approval-item-btn",title:F.createElement(F.Fragment,null,F.createElement(at,{variant:"title",size:"xmedium"},vt.t("Infinite approval")),F.createElement(Dr,{direction:"horizontal",size:4}),F.createElement(PA,{side:"top",sideOffset:4,container:W(),content:F.createElement(Aa,null,F.createElement(at,{variant:"label",size:"medium",color:"neutral700"},F.createElement("b",null,vt.t("Warning")),":\xA0",vt.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},F.createElement(bA,{color:"gray"}))),start:F.createElement(vA,{color:"gray",size:16}),end:F.createElement(WA,{checked:S}),onClick:y},K={id:"widget-setting-theme-item-btn",type:F.createElement(IA,null),title:F.createElement(at,{variant:"title",size:"xmedium"},vt.t("Theme")),end:F.createElement(DA,null,F.createElement(MA,{container:W(),items:$A,value:n,className:"widget-setting-theme-item-tabs-container",onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:FA(n)},j=h?[]:[w,B];return d||j.push(M),g||j.push($),j.push(Q),!e?.singleTheme&&!f&&j.push(K),F.createElement(EA,{type:F.createElement(AA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:j})}i(Dy,"SettingsLists");var HA=zA("div",{paddingLeft:"$8"});function $y(){let{isInCampaignMode:t,updateCampaignMode:e}=k(),o=t(),[,n]=qA(),r=QA(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Go.createElement(ie,{header:{title:rp.t("Settings")}},Go.createElement(se,null,o&&Go.createElement(OA,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:rp.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:Go.createElement(HA,null,Go.createElement(UA,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},rp.t("Reset")))}),Go.createElement(np,null),Go.createElement(Dy,null)))}i($y,"SettingsPage");import{i18n as RN}from"@lingui/core";import{cancelSwap as e0}from"@rango-dev/queue-manager-rango-preset";import{useManager as t0}from"@rango-dev/queue-manager-react";import{Alert as o0}from"@rango-dev/ui";import kp from"react";import{useParams as n0}from"react-router-dom";import{i18n as zt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as ON,getCurrentStep as UN,getRelatedWalletOrNull as zN}from"@rango-dev/queue-manager-rango-preset";import{Button as BS,Divider as QN,QuoteCost as qN,StepDetails as HN,Typography as fp}from"@rango-dev/ui";import{useWallets as GN}from"@rango-dev/wallets-react";import WS from"bignumber.js";import{PendingSwapNetworkStatus as Wn}from"rango-types";import Ce,{useEffect as gp,useRef as hp,useState as Fa}from"react";import{useNavigate as VN}from"react-router-dom";import{i18n as wo}from"@lingui/core";var GA=[wo.t("Sunday"),wo.t("Monday"),wo.t("Tuesday"),wo.t("Wednesday"),wo.t("Thursday"),wo.t("Friday"),wo.t("Saturday")];function Fy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?wo.t("Today"):`${GA[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Fy,"timeSince");function Oy(t){return t.finishTime?Fy(parseInt(t.finishTime)):Fy(parseInt(t.creationTime))}i(Oy,"getSwapDate");import Fr from"react";import{i18n as Ba}from"@lingui/core";import{Button as Uy,Divider as ip,MessageBox as VA}from"@rango-dev/ui";import vo from"react";var zy=i(({onCancel:t,onClose:e})=>vo.createElement(vo.Fragment,null,vo.createElement(ip,{size:20}),vo.createElement(VA,{type:"error",title:Ba.t("Cancel Swap"),description:Ba.t("Are you sure you want to cancel this swap?")}),vo.createElement(ip,{size:32}),vo.createElement(Uy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Ba.t("Yes, Cancel it")),vo.createElement(ip,{size:12}),vo.createElement(Uy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Ba.t("No, Continue"))),"CancelContent");import{i18n as Wa}from"@lingui/core";import{Button as Qy,Divider as ap,MessageBox as KA,Typography as jA}from"@rango-dev/ui";import ro from"react";var qy=i(({onDelete:t,onClose:e})=>ro.createElement(ro.Fragment,null,ro.createElement(ap,{size:20}),ro.createElement(KA,{type:"error",title:Wa.t("Delete Transaction"),description:Wa.t("Are you sure you want to delete this swap?")}),ro.createElement(ap,{size:32}),ro.createElement(Qy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Wa.t("Yes, Delete it")),ro.createElement(ap,{size:12}),ro.createElement(Qy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},ro.createElement(jA,{variant:"title",size:"medium",color:"primary"},Wa.t("No, Cancel")))),"DeleteContent");import{i18n as XA}from"@lingui/core";import{Button as YA,Divider as ZA,MessageBox as JA}from"@rango-dev/ui";import Vo from"react";var Hy=i(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return Vo.createElement(Vo.Fragment,null,Vo.createElement(JA,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&Vo.createElement(Vo.Fragment,null,Vo.createElement(ZA,{size:"30"}),Vo.createElement(YA,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},XA.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as gN,getCurrentStep as hN,getRelatedWalletOrNull as yN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as SN}from"@rango-dev/ui";import{useWallets as CN}from"@rango-dev/wallets-react";import Yy from"react";import{i18n as Nn}from"@lingui/core";import{Alert as Vy,Button as eN,Checkbox as tN,Divider as Pa,Image as oN,MessageBox as nN,Spinner as rN,WarningIcon as iN}from"@rango-dev/ui";import{useWallets as aN}from"@rango-dev/wallets-react";import ge,{useState as sN}from"react";import{darkTheme as RA,styled as $r}from"@rango-dev/ui";var rX=$r("div",{display:"flex",justifyContent:"center"}),iX=$r("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),Gy=$r("img",{width:"100%"}),Ma=$r("div",{position:"relative"}),La=$r("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${RA} &`]:{$$color:"$warning600"}});var Ky=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=sN(null),{list:s}=bt(),c=oe.use.isActiveTab(),{state:l,connect:p}=aN(),u=s.find(b=>b.type===e.walletType),m=u?.needsNamespace?.data.find(b=>b.value===o?.namespace);if(!u)return null;let f=l(e.walletType),h=u.isHub&&o?.namespace?f.namespaces?.get(o.namespace):null,g=f.connecting||h?.connecting,d=u.isHub?h?.connected:f.connected,S=i(()=>d?Nn.t("Done"):r?Nn.t("Try again"):Nn.t("Connect"),"getButtonTitle"),y=i(()=>g?ge.createElement(rN,{color:"info"}):r||d?null:ge.createElement(tN,{checked:!0,disabled:!0}),"getNamespaceSuffix"),C=i(async()=>{try{a(null),await p(u.type,o?.namespace?[{namespace:o?.namespace,network:void 0,derivationPath:e.derivationPath}]:void 0)}catch(b){a(b)}},"handleConnect"),T=i(async()=>{if(d){n();return}C()},"handleClickButton"),v=i(()=>{if(!d)return null;let b=u?.isHub?h?.accounts?.[0]?.split(":"):f?.accounts?.[0]?.split(":"),E=b?.[b?.length-1];return E?ao(E):null},"getAddress");return ge.createElement(ge.Fragment,null,ge.createElement(nN,{type:"warning",title:Nn.t("Connect {wallet}",{wallet:u.title}),description:Nn.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:ge.createElement(Ma,null,ge.createElement(oN,{src:u.image,size:45}),ge.createElement(La,null,ge.createElement(iN,{color:"warning",size:10})))}),d&&!m&&ge.createElement(ge.Fragment,null,ge.createElement(Pa,{size:10}),ge.createElement(Vy,{type:"success",variant:"alarm",title:Nn.t("Wallet connected successfully.")})),r&&!m&&ge.createElement(ge.Fragment,null,ge.createElement(Pa,{size:10}),ge.createElement(Vy,{type:"error",title:r?.message,variant:"alarm"})),m&&ge.createElement(ge.Fragment,null,ge.createElement(Pa,{size:30}),ge.createElement(Mo,{namespace:m,suffix:y(),error:r?.message,connected:d,address:v()})),ge.createElement(Pa,{size:"40"}),ge.createElement(eN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:T,disabled:!c},S()))},"ConnectWalletContent");import{i18n as jy}from"@lingui/core";import{Button as lN,Divider as cN,Image as pN,MessageBox as uN,WarningIcon as dN}from"@rango-dev/ui";import{useWallets as mN}from"@rango-dev/wallets-react";import{detectInstallLink as fN}from"@rango-dev/wallets-shared";import io from"react";var Xy=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=mN(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(fN(n.installLink),"_blank"),"handleButtonClick");return io.createElement(io.Fragment,null,io.createElement(uN,{type:"warning",title:jy.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:io.createElement(Ma,null,io.createElement(pN,{src:n.img,size:45}),io.createElement(La,null,io.createElement(dN,{color:"warning",size:10})))}),io.createElement(cN,{size:"40"}),io.createElement(lN,{type:"primary",id:"widget-install-wallet-btn",onClick:r},jy.t("Install")))},"InstallWalletContent");var Zy=i(t=>{let{swap:e,onClose:o}=t,{state:n}=CN(),r=hN(e),a=r?yN(e,r):null,s=a?.walletType,c=s?On(n(s)):null,l=r?gN(e,r):null;return s?c===SN.NOT_INSTALLED?Yy.createElement(Xy,{walletType:s}):Yy.createElement(Ky,{wallet:a,namespace:l,onClose:o}):null},"WalletStateContent");function sp(t){let{isOpen:e,state:o,switchNetworkModalState:n,onClose:r,onDelete:a,onCancel:s,swap:c,message:l,handleSwitchNetwork:p}=t;return Fr.createElement(R,{open:e,onClose:r,container:W()},o==="connectWallet"&&Fr.createElement(Zy,{swap:c,message:l,onClose:r}),o==="switchNetwork"&&n&&Fr.createElement(Hy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Fr.createElement(qy,{onClose:r,onDelete:()=>{r(),a()}}),o==="cancel"&&Fr.createElement(zy,{onClose:r,onCancel:()=>{r(),s()}}))}i(sp,"SwapDetailsModal");import{i18n as Or}from"@lingui/core";import{Button as lp,Divider as Ur,MessageBox as eS,TokenAmount as kN,Typography as tS}from"@rango-dev/ui";import Se from"react";import{Link as TN,useNavigate as wN}from"react-router-dom";var Jy="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",Ry="/profile";function cp(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:c,token:l,chain:p,percentageChange:u,description:m,diagnosisUrl:f}=t,h=wN(),{showProfileBanner:g}=oe();return Se.createElement(R,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(tt.SWAP_BOX_ID)||document.body},n==="success"?Se.createElement(eS,{type:"success",title:Or.t("Swap Successful")},Se.createElement(kN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),Se.createElement(Ur,{size:12}),Se.createElement(tS,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):Se.createElement(eS,{type:"error",title:Or.t("Transaction Failed"),description:m}),Se.createElement(Ur,{size:30}),n==="success"&&Se.createElement(Se.Fragment,null,g&&Se.createElement(Se.Fragment,null,Se.createElement(TN,{to:Ry},Se.createElement(Gy,{src:Jy,alt:"Profile Banner"})),Se.createElement(Ur,{size:30})),Se.createElement(lp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Or.t("Done"))),Se.createElement(Ur,{size:12}),f&&Se.createElement(Se.Fragment,null,Se.createElement(lp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(f,"_blank")},Or.t("Diagnosis")),Se.createElement(Ur,{size:12})),Se.createElement(lp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},Se.createElement(tS,{variant:"title",size:"medium",color:"primary"},Or.t("See Details"))))}i(cp,"SwapDetailsCompleteModal");import{i18n as $a}from"@lingui/core";import{CopyIcon as PN,DoneIcon as _N,IconButton as DN,RangoExplorerIcon as $N,Tooltip as bS,Typography as xS,useCopyToClipboard as FN}from"@rango-dev/ui";import Bt from"react";import LN from"react";import{i18n as NN}from"@lingui/core";import{Alert as kS,IconButton as BN,LinkIcon as WN}from"@rango-dev/ui";import bo,{Fragment as MN}from"react";import{Alert as bN,ChevronDownIcon as xN,IconButton as EN}from"@rango-dev/ui";import Bn,{useState as IN}from"react";import{css as zr,darkTheme as oS,styled as Ut,Typography as vN}from"@rango-dev/ui";var nS=Ut(se,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${oS} &`]:{color:"$secondary500"}}}}}),rS=Ut("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),iS=Ut("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),aS=Ut("div",{padding:"$0 $20 $20 $20"}),lY=Ut("div",{display:"flex",flexDirection:"column",gap:"$10"}),sS=Ut("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),cY=Ut("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),Ko=zr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${oS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),lS=zr({padding:"$5 0"}),_a=zr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),cS=zr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),pS=zr({width:"100%",padding:"0 $20 $10"}),uS=Ut("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),dS=Ut("div",{display:"flex",flexDirection:"column",gap:"$5"}),Da=Ut(vN,{wordBreak:"break-word"});import{styled as pp}from"@rango-dev/ui";var mS=pp("div",{display:"flex",flexDirection:"column",gap:"$10"}),fS=pp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),gS=pp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function hS(t){let{message:e}=t,[o,n]=IN(!1);return Bn.createElement(bN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&Bn.createElement(EN,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},Bn.createElement(fS,{rotated:o},Bn.createElement(xN,{size:12,color:"gray"}))),footer:Bn.createElement(gS,{open:o},Bn.createElement(Da,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(hS,"FailedAlert");import{i18n as yS}from"@lingui/core";import{Alert as up,Button as SS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as AN}from"rango-types";import Qr from"react";function CS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:r,showNetworkModal:a}=t;return e?Qr.createElement(up,{type:"warning",id:"widget-swap-details-change-network-alert",title:r.shortMessage,action:Qr.createElement(SS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},yS.t("Change"))}):a===AN.WaitingForConnectingWallet?Qr.createElement(up,{type:"warning",title:r.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Qr.createElement(SS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},yS.t("Connect"))}):Qr.createElement(up,{id:"widget-swap-details-short-alert",type:"warning",title:r.shortMessage})}i(CS,"WarningAlert");function dp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=tr(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,m=u&&!c||p&&!s.explorerUrl?.length;return bo.createElement(mS,null,s.explorerUrl?.map((f,h,g)=>{let d=h+f.url,S=h===g.length-1,y=(S&&u||p)&&!m,C=S&&s.status==="failed";return bo.createElement(MN,{key:d},bo.createElement(kS,{id:"widget-swap-details-tx-alert",type:S&&(y&&"loading"||C&&"error")||"success",title:f.description?`${f.description} Tx`:NN.t("View transaction"),action:f.url&&bo.createElement(BN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},bo.createElement(WN,{size:12}))}))}),m&&bo.createElement(kS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&bo.createElement(CS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a}),s.status==="failed"&&bo.createElement(hS,{message:a}))}i(dp,"SwapDetailsAlerts");var TS=2e3;var wS=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let c=s===0?t.inputAmount:t.steps[s-1]?.outputAmount||t.steps[s-1]?.expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:ht(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:_(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:ht(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:_(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:_n(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:ht(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:ht(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:_n(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:LN.createElement(dp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function vS(t){if(tr(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(vS,"getStepState");function ES(t){let{requestId:e}=t,[o,n]=FN(TS);return Bt.createElement(iS,{className:Ko()},Bt.createElement(xS,{variant:"label",size:"large",color:"neutral700"},$a.t("Request ID")),Bt.createElement("div",{className:_a()},Bt.createElement(xS,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(bS,{container:W(),content:o?$a.t("Copied To Clipboard"):$a.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Bt.createElement(DN,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Bt.createElement(_N,{size:16,color:"secondary"}):Bt.createElement(PN,{size:16,color:"gray"}))),Bt.createElement(uS,{target:"_blank",href:`${Xp}/swap/${e}`},Bt.createElement(bS,{container:W(),content:$a.t("View on Rango Explorer"),side:"bottom"},Bt.createElement($N,{size:20})))))}i(ES,"RequestIdRow");import{i18n as IS}from"@lingui/core";import{Typography as AS}from"@rango-dev/ui";import mp from"react";function NS(t){let{date:e,isFinished:o}=t;return mp.createElement("div",{className:Ko()},mp.createElement(AS,{variant:"label",size:"large",color:"neutral700"},o?IS.t("Finished at"):IS.t("Created at")),mp.createElement(AS,{variant:"label",size:"small",color:"neutral700"},e))}i(NS,"SwapDateRow");var KN=3e3;function yp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=GN(),l=k().blockchains(),p=k().swappers(),{findToken:u}=k(),m=U().use.retry(),f=VN(),h=hp(null),[g,d]=Fa(!1),[S,y]=Fa(null),[C,T]=Fa(null),[v,b]=Fa(null),E=hp(S),N=hp(C),I=Ne.use.getNotifications(),x=Ne.use.removeNotification(),w=I(),B=UN(e),M=B?.networkStatus,$=i(Le=>{d(!0),y(Le)},"handleChangeModalState"),Q=i(()=>{d(!1)},"handleCloseModal"),K=i(()=>{T({type:"loading",title:zt.t("Change Network"),description:`We\u2019re switching the connected network to ${ee?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),j=i(()=>{T({type:"success",title:zt.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),L=i(Le=>{T({type:"error",title:zt.t("Network Switch Failed"),description:Le?.message||ae.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Y=Vd(e),ee=B?ON(e,B):null,Z=B?zN(e,B):null,ue=Oy(e),le=Kd(e),he=i(Le=>!!c(Le)?.mobileWallet,"checkIsMobileWallet"),qe=!!M&&[Wn.WaitingForNetworkChange,Wn.NetworkChangeFailed].includes(M),gt=!!Z?.walletType&&he(Z.walletType),Ie=!!Z&&!!ee&&a(Z.walletType,ee.network,ee),D=!!ee&&qe&&(gt||Ie),A=i(()=>{D&&(K(),s(Z.walletType,[{namespace:ee.namespace,network:ee.network}]).then(()=>{j()}).catch(Le=>{L(Le)}))},"handleSwitchNetwork"),H=i(()=>{$("switchNetwork"),A()},"handleSwitchNetworkClick"),ae=Gd(e,B,c),V=wS({swap:e,switchNetworkIsAvailable:D,handleSwitchNetworkClick:H,showNetworkModal:M,setNetworkModal:$,message:ae,blockchains:l,swappers:p}),X=V.length,[He,Ge]=[e.steps[0],e.steps[X-1]],ve=Ge?.outputAmount||Ge?.expectedOutputAmountHumanReadable,Mt=e.steps.reduce((Le,Lt)=>Le+parseFloat(Lt.feeInUsd||""),0),Xa=e.steps.find(Le=>Le.diagnosisUrl)?.diagnosisUrl,Ya=_(parseFloat(ve||"0")*(Ge?.toUsdPrice||0),4,4),Bp=_(parseFloat(e.inputAmount)*(He?.fromUsdPrice||0),4,4),Wp=ve?new WS(ve).multipliedBy(Ge.toUsdPrice||0).toString():"",pC=new WS(e.inputAmount).multipliedBy(He?.fromUsdPrice||0).toString(),Za=Kt(Bp,Ya),Ja=ae.detailedMessage.content||ae.shortMessage,uC=e.status==="success"?zt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:_(ve,6,6),token:V[X-1]?.to.token.displayName,conciseAddress:ao(e.wallets[V[X-1]?.to.chain.displayName||""]?.address||""),chain:V[X-1]?.to.chain.displayName}}):Ce.createElement(dS,null,Ce.createElement(fp,{variant:"body",size:"medium",color:"neutral700",align:"center"},Ja?"":zt.t("Transaction was not sent."),Y?`${zt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Y.outputAmount,symbol:Y.symbol,blockchain:Y.blockchain}})}`:""),Ja&&Ce.createElement(Da,{align:"center",variant:"body",size:"medium",color:"neutral700"},Ce.createElement("b",null,"Reason:")," ",Ja));return gp(()=>{w.find(Lt=>Lt.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(b(e.status),x(e.requestId),Q()):v&&b(null))},[e.status,e.requestId]),gp(()=>{if(D){if($("switchNetwork"),M===Wn.WaitingForNetworkChange){K();return}if(M===Wn.NetworkChangeFailed){L();return}return}if(M===Wn.WaitingForConnectingWallet){$("connectWallet");return}if(M===Wn.NetworkChanged){$("switchNetwork"),j();return}S&&["connectWallet","switchNetwork"].includes(S)&&Q()},[M]),gp(()=>{if(E.current=S,N.current=C,S==="switchNetwork"&&C?.type==="success"){let Le=setTimeout(()=>{E.current==="switchNetwork"&&N.current?.type==="success"&&Q()},KN);return()=>clearTimeout(Le)}},[S,C]),Ce.createElement(ie,{header:{title:zt.t("Swap Details"),onCancel:e.status==="running"?()=>$("cancel"):void 0,suffix:e.status!=="running"&&Ce.createElement(uo,null,Ce.createElement(BS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>$("delete")},Ce.createElement(fp,{size:"medium",variant:"label",color:"error"},zt.t("Delete"))))},footer:le&&!v&&Ce.createElement(BS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let Le=bi(e,l,u);m(Le),setTimeout(()=>{f("../../")},0)}},zt.t("Try again"))},Ce.createElement(nS,{compact:!0,ref:h},Ce.createElement(ES,{requestId:o}),Ce.createElement(NS,{date:ue,isFinished:!!e.finishTime}),Ce.createElement("div",{className:cS()},Ce.createElement(qN,{fee:_(String(Mt),2,2),time:$n(ei(e.steps)),steps:X}),Ce.createElement(mr,{from:{price:{value:_(e.inputAmount,6,6),usdValue:Bp,realUsdValue:pC,realValue:e.inputAmount},token:{displayName:V[0]?.from.token.displayName||"",image:V[0]?.from.token.image},chain:{image:V[0]?.from.chain.image,displayName:V[0]?.from.chain.displayName||""}},to:{price:{value:_(ve,6,6),usdValue:Ya,realUsdValue:Wp,realValue:ve||""},token:{displayName:V[X-1]?.to.token.displayName||"",image:V[X-1]?.to.token.image},chain:{image:V[X-1]?.to.chain.image,displayName:V[X-1]?.to.chain.displayName||""}},percentageChange:_(Za,2,2),warningLevel:jt(Za??0)})),Ce.createElement("div",{className:pS()},Ce.createElement(fp,{variant:"title",size:"small"},zt.t("Swaps steps"))),Ce.createElement(QN,{size:8}),Ce.createElement(aS,null,V.map((Le,Lt)=>{let Mp=Lt,Pn=e.steps[Lt]&&vS(e.steps[Lt]),dC=Pn==="error"||Pn==="in-progress"||Pn==="warning"||Pn==="completed"&&Lt===V.length-1;return Ce.createElement(HN,{className:"widget-swap-details-step-item-container",key:Mp,step:Le,type:"swap-progress",ref:h,state:Pn,hasSeparator:Lt!==0,tabIndex:Mp,isFocused:dC,tooltipContainer:W()})}))),Ce.createElement(sp,{isOpen:g,state:S,switchNetworkModalState:C,onClose:Q,onCancel:r,onDelete:n,message:ae.detailedMessage.content,swap:e,handleSwitchNetwork:H}),Ce.createElement(cp,{open:!!v,diagnosisUrl:Xa,onClose:()=>b(null),status:e.status==="success"?"success":"failed",priceValue:_(ve,6,6),usdValue:Ya,realUsdValue:Wp,realValue:ve||"",percentageChange:_(Za,2,2),token:{displayName:V[X-1]?.to.token.displayName||"",image:V[X-1]?.to.token.image},chain:{image:V[X-1]?.to.chain.image},description:uC}))}i(yp,"SwapDetails");import{i18n as Ua}from"@lingui/core";import{Divider as PS,NotFound as JN,Skeleton as Hr,Typography as za}from"@rango-dev/ui";import Ee from"react";import{i18n as jN}from"@lingui/core";import{Divider as XN,Skeleton as YN,Typography as ZN}from"@rango-dev/ui";import xe from"react";import{css as Wt,styled as Sp}from"@rango-dev/ui";var MS=Sp("div",{width:"100%",height:"100%",padding:"$10 $20"}),qr=Sp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Oa=Sp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),D7=Wt({display:"flex",justifyContent:"space-between",alignItems:"center"}),$7=Wt({display:"flex",justifyContent:"space-between",alignItems:"center"}),F7=Wt({paddingTop:"$15",display:"flex"}),O7=Wt({padding:"$15 $0"}),U7=Wt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),z7=Wt({paddingBottom:"$10"}),Q7=Wt({display:"flex",justifyContent:"start",alignItems:"center"}),q7=Wt({paddingTop:"$5",display:"flex",alignItems:"center"}),H7=Wt({display:"flex",alignItems:"center"}),G7=Wt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),LS=Wt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Cp(){return xe.createElement(MS,null,xe.createElement(gr,{type:"swap-preview"}),xe.createElement("div",{className:"swaps-steps"},xe.createElement(ZN,{variant:"title",size:"small"},jN.t("Swaps steps"))),xe.createElement(xe.Fragment,null,xe.createElement(qr,null,xe.createElement(Ft,{separator:!1}),xe.createElement("div",{className:LS()},xe.createElement(XN,{direction:"horizontal",size:20}),xe.createElement(YN,{height:22,variant:"rectangular"}))),xe.createElement(Oa,null),xe.createElement(qr,null,xe.createElement(Ft,{separator:!1})),xe.createElement(Oa,null),xe.createElement(qr,null,xe.createElement(Ft,{separator:!1})),xe.createElement(Oa,null),xe.createElement(qr,null,xe.createElement(Ft,{separator:!1}))))}i(Cp,"LoadingSwapDetails");function _S(t){let{requestId:e,showSkeleton:o}=t;return Ee.createElement(ie,{header:{title:Ua.t("Swap Details"),suffix:Ee.createElement(uo,null)}},o&&Ee.createElement(rS,null,Ee.createElement("div",{className:Ko()},Ee.createElement(za,{variant:"label",size:"large",color:"neutral700"},`${Ua.t("Request ID")}`),Ee.createElement("div",{className:_a()},Ee.createElement(za,{variant:"label",size:"small",color:"neutral700"},Ee.createElement(Hr,{width:60,height:10,variant:"rounded"})),Ee.createElement(PS,{direction:"horizontal",size:4}),Ee.createElement(Hr,{width:16,height:16,variant:"rectangular"}),Ee.createElement(PS,{direction:"horizontal",size:4}),Ee.createElement(Hr,{width:16,height:16,variant:"rectangular"}))),Ee.createElement("div",{className:Ko()},Ee.createElement(za,{className:lS(),variant:"label",size:"large",color:"neutral700"},Ee.createElement(Hr,{width:60,height:10,variant:"rounded"})),Ee.createElement(za,{variant:"label",size:"small",color:"neutral700"},Ee.createElement(Hr,{width:60,height:10,variant:"rounded"}))),Ee.createElement(Cp,null)),!o&&Ee.createElement(sS,null,Ee.createElement(JN,{title:Ua.t("Not found"),description:Ua.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(_S,"SwapDetailsPlaceholder");function DS(){let{manager:t,state:e}=t0(),o=!e.loadedFromPersistor,n=wt(t),{requestId:r}=n0(),a=je(),{fetchStatus:s}=k();if(!r)return kp.createElement(o0,{containerStyles:{margin:"20px"},type:"error",title:RN.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=r?n.find(({swap:f})=>f.requestId===r):void 0,p=i(()=>{if(l?.id){let f=t?.get(l.id);f&&e0(f)}},"onCancel"),u=i(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(f){console.log(f)}},"onDelete"),m=l?.swap;return!m||c?kp.createElement(_S,{requestId:r,showSkeleton:c}):kp.createElement(yp,{swap:m,requestId:r,onCancel:p,onDelete:u})}i(DS,"SwapDetailsPage");import{i18n as $S}from"@lingui/core";import{Divider as r0,getCategoriesCount as i0,SelectableCategoryList as a0,styled as OS,Typography as s0,Wallet as l0,WalletState as c0}from"@rango-dev/ui";import{useWallets as p0}from"@rango-dev/wallets-react";import Qt,{useState as FS}from"react";var u0=OS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),d0=OS(se,{textAlign:"center"});function US(){let{fetchStatus:t}=k(),[e,o]=FS("ALL"),n=k().blockchains(),{config:r}=k(),{state:a}=p0(),[s,c]=FS(),l=oe.use.isActiveTab(),{list:p}=bt(),u=bu(p,n),f=i0(u)!==1,h=xu(p,e),g=i(d=>{iu(p,r.multiWallets)||c(d)},"handleWalletItemClick");return Qt.createElement(ie,{header:{title:$S.t("Connect Wallets")}},Qt.createElement(d0,null,f&&Qt.createElement(Qt.Fragment,null,Qt.createElement(a0,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Qt.createElement(r0,{size:24})),Qt.createElement(s0,{variant:"title",size:"xmedium",align:"center"},$S.t("Choose a wallet to connect.")),Qt.createElement(u0,null,h.map((d,S)=>{let C=a(d.type).namespaces,T=`wallet-${S}-${d.type}`,v=ls(d,C);return Qt.createElement(l0,{key:T,...d,state:v?c0.PARTIALLY_CONNECTED:d.state,container:W(),onClick:()=>g(d),isLoading:t==="loading",disabled:!l})}),Qt.createElement(Jn,{id:"widget-state-full-connect-modal",wallet:s,onClose:()=>{c(void 0)}}))))}i(US,"WalletsPage");function zS(){return rm(),js(),m0([{path:O.home,element:Qe.createElement(ry,null)},{path:O.routes,element:Qe.createElement(cy,null)},{path:O.fromSwap,children:[{index:!0,element:Qe.createElement(Ia,{type:"source"})},{path:O.blockchains,element:Qe.createElement(va,{type:"source"})}]},{path:O.toSwap,children:[{index:!0,element:Qe.createElement(Ia,{type:"destination"})},{path:O.blockchains,element:Qe.createElement(va,{type:"destination"})}]},{path:O.settings,children:[{index:!0,element:Qe.createElement($y,null)},{path:O.languages,element:Qe.createElement(ay,null)},{path:O.exchanges,element:Qe.createElement(Gc,{sourceType:"Exchanges"})},{path:O.bridges,element:Qe.createElement(Gc,{sourceType:"Bridges"})},{path:O.customTokens,children:[{index:!0,element:Qe.createElement(ih,null)},{path:O.addCustomTokens,children:[{index:!0,element:Qe.createElement(Jm,null)},{path:O.blockchains,element:Qe.createElement(va,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:O.swaps,children:[{index:!0,element:Qe.createElement(xh,null)},{path:O.swapDetails,element:Qe.createElement(DS,null)}]},{path:O.wallets,element:Qe.createElement(US,null)},{path:O.confirmSwap,element:Qe.createElement(qg,null)}])}i(zS,"AppRoutes");import{useQueueManager as B0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as W0}from"rango-sdk";import{useContext as M0,useEffect as bp,useState as RS}from"react";import{Provider as S0}from"@rango-dev/wallets-react";import Qa,{createContext as C0,useEffect as VS,useMemo as k0,useRef as KS}from"react";import{useEffect as f0}from"react";function QS(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(QS,"hashProviders");function Tp(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=k(),a=n();return f0(()=>{o(),r()},[QS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Tp,"useWalletProviders");import{legacyFormatAddressWithNetwork as g0,legacyReadAccountAddress as qS}from"@rango-dev/wallets-core/legacy";import{Events as Mn}from"@rango-dev/wallets-react";import{isEvmBlockchain as h0}from"rango-sdk";function HS(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=k(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(h0).map(d=>d.name),u=i((d,S)=>{let[y,,C,T,v]=d,b={walletType:y,network:T.network??void 0,accounts:C};c.current?c.current(b):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let E=ss(y,C,p,S.supportedChainNames,v.isContractWallet);E.length&&e(E,v.namespace,T.derivationPath)},"onAccountsEvent"),m=i((d,S,y,C,T)=>{if(S===Mn.ACCOUNTS){let v=Un(T.supportedBlockchains);y&&u([d,S,y,C,T],{supportedChainNames:v})}S===Mn.PROVIDER_DISCONNECTED&&(o(d),l.current?l.current(d):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),S===Mn.NAMESPACE_DISCONNECTED&&n(d,y)},"handleUpdatesForHub"),f=i((d,S,y,C,T)=>{if(S===Mn.ACCOUNTS){let v=Un(T.supportedBlockchains),b=[],E=[];if(y?.forEach(I=>{let{network:x}=qS(I);p.includes(x)?b.push(I):E.push(I)}),r.filter(I=>I.walletType===d).map(I=>g0(I.address,I.chain)).length>0){if(b.length>0){let I=ss(d,b,p,v,T.isContractWallet);a(d,{chains:I.map(x=>x.chain)})}E.length>0&&a(d,{chains:E.map(I=>{let{network:x}=qS(I);return x})})}y?u([d,S,y,C,T],{supportedChainNames:v}):(o(d),l.current?l.current(d):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),h=i((d,S,y,C,T)=>{if(S===Mn.CONNECTED&&y){let v={walletType:d,network:C.network??void 0,accounts:C.accounts??void 0};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(S===Mn.NETWORK&&y){let v={walletType:d,network:y,accounts:C.accounts??void 0};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((d,S,y,C,T)=>{T.isHub?m(d,S,y,C,T):f(d,S,y,C,T),h(d,S,y,C,T)},"handler")}}i(HS,"useUpdates");import{LegacyEvents as y0}from"@rango-dev/wallets-core/legacy";function GS(t,e){let[o,n,r,a,s]=e;n!==y0.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(GS,"propagateEvents");var qa=C0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function T0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=k(),a=k().blockchains(),s=k().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=Tp(s.wallets,c),p=KS(),u=KS(),{handler:m}=HS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});VS(()=>{n().catch(console.log)},[]),VS(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let f=oe.use.isActiveTab(),h=k0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Qa.createElement(qa.Provider,{value:h},Qa.createElement(S0,{allBlockChains:a,providers:l,onUpdateState:(g,d,S,y,C)=>{let T=[g,d,S,y,C];m(...T),t.onUpdateState&&GS(t.onUpdateState,T)},autoConnect:!!f,configs:{wallets:s.wallets}},t.children))}i(T0,"Main");function Ha(t){let{config:e,...o}=t;return Qa.createElement(Hu,{config:e},Qa.createElement(T0,{...o,config:e}))}i(Ha,"WidgetWallets");import{globalCss as w0}from"@rango-dev/ui";var jS=i(()=>w0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");import{useWallets as v0}from"@rango-dev/wallets-react";import{useEffect as b0,useRef as x0}from"react";function XS(){let{connect:t,state:e}=v0(),o=x0({}),{fetchStatus:n}=k(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);b0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(XS,"useForceAutoConnect");import{isApprovalTX as E0,RouteEventType as YS,StepEventType as ZS,StepExecutionEventStatus as I0,WidgetEvents as Ga}from"@rango-dev/queue-manager-rango-preset";import{useEffect as JS}from"react";function wp(){let t=Ne.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=k();JS(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===ZS.TX_EXECUTION&&s.status===I0.TX_SENT&&!E0(c)||s.type===ZS.SUCCEEDED){let u=[],m=l.wallets[c?.fromBlockchain];if(m){let f=e.find(h=>h.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&h.walletType===m.walletType&&h.chain===c?.fromBlockchain);f&&u.push(f)}if(c?.fromBlockchain!==c?.toBlockchain){let f=l.wallets[c?.toBlockchain];if(f){let h=e.find(g=>g.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&g.walletType===f.walletType&&g.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let f=n(),g=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(d=>f.some(S=>S.blockchain===d.blockchain&&S.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&S.symbol?.toLocaleLowerCase()===d.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return ke.on(Ga.StepEvent,r),()=>ke.off(Ga.StepEvent,r)},[ke,e]),JS(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===YS.FAILED||s.type===YS.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ke.on(Ga.RouteEvent,r),()=>ke.off(Ga.RouteEvent,r)},[ke])}i(wp,"useSubscribeToWidgetEvents");import{useManager as A0}from"@rango-dev/queue-manager-react";import{useEffect as N0}from"react";function vp(){let{isSynced:t,syncNotifications:e}=Ne(),{manager:o,state:n}=A0();N0(()=>{Ne.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(wt(o))},[Ne.persist.hasHydrated(),n.loadedFromPersistor,t])}i(vp,"useSyncNotifications");function xp(){XS(),jS(),wp(),vp();let t=k().blockchains(),{canSwitchNetworkTo:e}=Vi(),[o,n]=RS(null),[r,a]=RS(),s=M0(qa),c=t.filter(W0);bp(()=>()=>om(),[]),bp(()=>()=>nm(),[]),B0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),bp(()=>(Wo.init(),Ne.persist.hasHydrated()||Ne.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),Wo.destroy),[])}i(xp,"useBootstrap");import{styled as L0}from"@rango-dev/ui";var eC=L0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function jo(){xp();let{config:t}=k(),{activeTheme:e}=po(t?.theme||{}),{activeLanguage:o}=ko();return Ep.createElement(P0,{language:o},Ep.createElement(eC,{id:"swap-container",className:e()},Ep.createElement(zS,null)))}i(jo,"Main");import{setSolanaSignerConfig as eB}from"@rango-dev/signer-solana";import Ap,{useEffect as Np,useMemo as tB}from"react";function tC(){let{setWatermark:t,setShowProfileBanner:e}=oe();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Ht("BASE_URL")}/meta/dapp/config?apiKey=${Ht("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(tC,"useFetchApiConfig");import{useState as _0}from"react";var D0=i(()=>{let[t,e]=_0(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=ru(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),oC=D0;import{checkWaitingForNetworkChange as $0,makeQueueDefinition as F0}from"@rango-dev/queue-manager-rango-preset";import{Provider as O0}from"@rango-dev/queue-manager-react";import{useWallets as U0}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as z0}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Q0}from"rango-types";import q0,{useMemo as H0}from"react";function G0(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=U0(),c=H0(()=>F0({API_KEY:t.apiKey||Ht("API_KEY"),BASE_URL:Ht("BASE_URL"),emitter:{emit:ke.emit}}),[t.apiKey]),{blockchains:l,connectedWallets:p}=k(),u=l(),m={blockchains:p.map(v=>({accounts:[v],name:v.chain}))},f=i(async(v,b)=>a(v,b.network,b)?await r(v,[b]):void 0,"switchNetwork"),h=i(v=>!!s(v).mobileWallet,"isMobileWallet"),g=u.filter(v=>v.enabled).reduce((v,b)=>(v[b.name]=b,v),{}),d=u.filter(Q0),S=i(v=>{let{supportedChains:b}=s(v);return Un(b)},"getSupportedChainNames"),y=e(),C={meta:{blockchains:g,evmBasedChains:d,evmNetworkChainInfo:z0(d),getSupportedChainNames:S},getSigners:o,wallets:m,providers:y,switchNetwork:f,canSwitchNetworkTo:a,state:n,isMobileWallet:h},T=oe.use.isActiveTab();return q0.createElement(O0,{queuesDefs:[c],context:C,onPersistedDataLoaded:v=>{$0(v)},isPaused:!T},t.children)}i(G0,"QueueManager");var nC=G0;import{useManager as Y0}from"@rango-dev/queue-manager-react";import Z0,{createContext as J0,useContext as R0}from"react";function rC(){let{findToken:t}=k(),e=k().blockchains(),o=k().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:c}=U()();return i(p=>{let{fromBlockchain:u,fromToken:m,toBlockchain:f,toToken:h,requestAmount:g}=p,d={blockchains:e,tokens:o};if(u!==void 0){let S=e.find(y=>y.name===u)??null;n(S)}if(m!==void 0){let S=m?t(m)??null:null;r({meta:d,token:S})}if(f!==void 0){let S=e.find(y=>y.name===f)??null;a(S)}if(h!==void 0){let S=h?t(h)??null:null;s({meta:d,token:S})}g!==void 0&&c(g)},"updateQuoteInputs")}i(rC,"useUpdateQuoteInputs");import{cancelSwap as V0,getCurrentNamespaceOfOrNull as K0,getCurrentStep as j0,getRelatedWalletOrNull as X0}from"@rango-dev/queue-manager-rango-preset";var Va=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return wt(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=bi(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&V0(o)}getCurrentStepInfo(e){let o=j0(e);return{step:o,wallet:o?X0(e,o):null,network:o?K0(e,o)?.network:null}}};var iC=J0(void 0);function Ip(t){let{manager:e}=Y0(),o=oe.use.isActiveTab(),n=U().use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=k(),l=new Va(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=k(),u=Su(a()),m=k().blockchains(),f=k().tokens(),h=k().swappers(),g=k().fetchStatus,d=ko().resetLanguage,S=Ne().getNotifications(),y=Ne().clearNotifications,C=rC(),{fromBlockchain:T,toBlockchain:v,fromToken:b,toToken:E,inputAmount:N}=U()(),I={isActiveTab:o,setCurrentTabAsActive:Wo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async x=>c(x)},meta:{blockchains:m,tokens:f,swappers:h,loadingStatus:g,findToken:r},resetLanguage:d,notifications:{list:S,clearAll:y},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:b?{symbol:b.symbol,blockchain:b.blockchain,address:b.address}:null,toBlockchain:v?.name??null,toToken:E?{symbol:E.symbol,blockchain:E.blockchain,address:E.address}:null,requestAmount:N},updateQuoteInputs:C}};return Z0.createElement(iC.Provider,{value:I},t.children)}i(Ip,"WidgetInfo");function aC(){let t=R0(iC);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(aC,"useWidget");function Ln(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{fetchApiConfig:r}=tC(),{handleLoadCustomFont:a}=oC();return Np(()=>{r().catch(console.log)},[]),Np(()=>{n&&a(n)},[n]),tB(()=>{Eu({API_KEY:o?.apiKey||Xr,BASE_URL:o?.apiUrl||jp})},[o.apiKey,o.apiUrl]),Np(()=>{t.config?.signers?.customSolanaRPC&&eB("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Ap.createElement(Ha,{config:o,onUpdateState:e},Ap.createElement(nC,{apiKey:o.apiKey},Ap.createElement(Ip,null,t.children)))}i(Ln,"WidgetProvider");function sC(t){let e=t.config?.externalWallets;return Ka.createElement(wi,null,e?Ka.createElement(jo,null):Ka.createElement(Ln,{config:t.config??Jo},Ka.createElement(jo,null)))}i(sC,"Refuel");import ja from"react";function lC(t){let e=t.config?.externalWallets;return ja.createElement(wi,null,e?ja.createElement(jo,null):ja.createElement(Ln,{config:t.config??Jo},ja.createElement(jo,null)))}i(lC,"Widget");function cC(){let{on:t,off:e}=ke;return{on:t,off:e}}i(cC,"useWidgetEvents");var Oee={DerivationPath:Xn,Namespaces:Kn,Detached:jn,isOnDerivationPath:Zn,isOnNamespace:Yn,isOnDetached:xo};export{cee as EventSeverity,on as MainEvents,Cee as Networks,wee as PendingSwapNetworkStatus,ms as QuoteEventTypes,sC as Refuel,pee as RouteEventType,os as SUPPORTED_FONTS,Oee as StatefulConnect,uee as StepEventType,dee as StepExecutionBlockedEventStatus,mee as StepExecutionEventStatus,Sd as SwapModeContext,tt as UI_ID,gs as UiEventTypes,fs as WalletEventTypes,yee as WalletEvents,kee as WalletTypes,lC as Widget,on as WidgetEvents,Ln as WidgetProvider,Ha as WidgetWallets,cl as customizedThemeTokens,gee as readAccountAddress,Xo as useStatefulConnect,bt as useWalletList,Vi as useWallets,aC as useWidget,cC as useWidgetEvents,gk as widgetEventEmitter};
1
+ var fC=Object.defineProperty;var i=(t,e)=>fC(t,"name",{value:e,configurable:!0});import{EventSeverity as See,RouteEventType as Cee,StepEventType as kee,StepExecutionBlockedEventStatus as Tee,StepExecutionEventStatus as wee}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as bee}from"@rango-dev/wallets-core/legacy";import{useWallets as Ki,Events as Eee}from"@rango-dev/wallets-react";import{Networks as Aee,WalletTypes as Nee}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as Wee}from"rango-types";import{Divider as MT}from"@rango-dev/ui";import lo,{useEffect as LT,useRef as PT,useState as Sd}from"react";import{WalletState as gC}from"@rango-dev/ui";import{useWallets as hC}from"@rango-dev/wallets-react";import{useReducer as yC}from"react";function Pp(t){return!!t.derivationPath}i(Pp,"isStateOnDerivationPathStep");function _p(t){return!!t.namespace}i(_p,"isStateOnNamespace");var Vr={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function Dp(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return Vr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:Vr;default:throw new Error("Action hasn't been defined.")}}i(Dp,"reducer");function Xo(){let{state:t,disconnect:e,connect:o}=hC(),[n,r]=yC(Dp,Vr),a=i(async(d,f,h)=>{r({type:"reset"});try{let g=f?.map(m=>({...m,network:void 0}));return await o(d,g),{status:"connected"}}catch(g){let m=g?.message?`Error: ${g.message}`:"An unknown error happened during connecting wallet.";throw new Error(m,{cause:g})}},"runConnect"),s=i(async(d,f)=>{if(d.state===gC.DISCONNECTED){let g=!!d.isHub,m=g?d.properties?.find(y=>y.name==="namespaces")?.value:d.needsNamespace,C=g?d.properties?.find(y=>y.name==="derivationPath")?.value:d.needsDerivationPath;if(!m?.data?.length)return await a(d.type,void 0,f);if(m?.data.length&&m.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:d,defaultSelectedChains:f?.defaultSelectedChains}}),{status:"namespace"};if(m?.data.length===1&&m.data[0]){if(C){let y=m.data[0];return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:y.value}}),{status:"derivation-path"}}return await a(d.type,m?.data?.map(y=>({namespace:y.value})),f)}}if(d.isHub){let g=d.properties?.find(m=>m.name==="namespaces")?.value;if(g?.data.length&&g.data.length>1)return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:null}}),{status:"Detached"}}return f?.disconnectIfConnected?(await u(d),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=i(async(d,f)=>{let h=!!d.isHub,g=h?d.properties?.find(T=>T.name==="namespaces")?.value:d.needsNamespace,m=h?d.properties?.find(T=>T.name==="derivationPath")?.value:d.needsDerivationPath,C=g?.selection==="single",y=f[0];if(!y)throw new Error("To confirm a namespace, you should select at least one namespace.");if(C&&m)return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:y}}),{status:"derivation-path"};if(!_p(n))throw new Error("Something went wrong on handling namespace. Please retry.");let S=f.map(T=>({namespace:T}));return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:S?.map(T=>T.namespace)||null}}),{status:"Detached"}},"handleNamespace"),l=i(async d=>{if(!d)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Pp(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let f=n.derivationPath.providerType,g=[{namespace:n.derivationPath.namespace,derivationPath:d}];return await a(f,g)},"handleDerivationPath"),p=i(()=>n,"getState"),u=i(async d=>{let f=t(d.type);return f.connected||f.connecting?(await e(d.type),xo(p)?(r({type:"needsNamespace",payload:{targetWallet:d}}),{status:"namespace"}):{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:c,handleDerivationPath:l,getState:p,resetState:d=>{r(d==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Xo,"useStatefulConnect");import{WalletState as vs}from"@rango-dev/ui";import{useWallets as Nk}from"@rango-dev/wallets-react";import{detectMobileScreens as Bk,KEPLR_COMPATIBLE_WALLETS as Wk,WalletTypes as Gn}from"@rango-dev/wallets-shared";import{useCallback as Mk,useEffect as Lk}from"react";import wk,{createContext as vk,useContext as bk,useEffect as xk,useRef as Ek}from"react";import{create as kk}from"zustand";import{persist as Tk}from"zustand/middleware";import{allProviders as SC}from"@rango-dev/provider-all";var es=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()}},Yo=new es;import{defineVersions as Fp,pickVersion as Op,Provider as ts}from"@rango-dev/wallets-core";function Up({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=zp(a);return s instanceof ts?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 ts?o.push(Fp().version("1.0.0",n).build()):o.push(Fp().version("0.0.0",n).build())}),o}return t}i(Up,"matchAndGenerateProviders");function zp(t){try{return Op(t,"1.0.0")[1]}catch{return Op(t,"0.0.0")[1]}}i(zp,"pickProviderVersionWithFallbackToLegacy");function Qp(t){return t.map(o=>zp(o)).map(o=>o instanceof ts?o.id:o.config.type)}i(Qp,"configWalletsToWalletName");function Kr(t,e){return e.find(o=>o.name===t)?.displayName}i(Kr,"getBlockchainDisplayNameFor");function ht(t,e){return e.find(o=>o.name===t)?.shortName}i(ht,"getBlockchainShortNameFor");function Hp(t,e){return e.find(o=>o.name===t)?.logo}i(Hp,"getBlockchainImage");function Dn(t,e){return e.find(o=>o.id===t)?.title}i(Dn,"getSwapperDisplayName");function Eo(t,e){return e.find(o=>o.name===t)??null}i(Eo,"findBlockchain");function os(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(os,"isTokenNative");function yt(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(yt,"createTokenHash");function Zo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Zo,"isValidTokenAddress");function $n(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(c=>{c.forEach(l=>{typeof l!="string"&&(l=yt(l));let p=o.tokensMapByTokenHash.get(l);p&&(n[l]=p)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let c=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(l=>{let p=o.tokensMapByBlockchainName[l];!c.has(l)&&p&&a(p)})}return s.forEach(c=>{let l=r[c];if(!l&&o.tokensMapByBlockchainName?.[c]){a(o.tokensMapByBlockchainName[c]);return}l&&(l.isExcluded&&o.tokensMapByBlockchainName[c]?(a(o.tokensMapByBlockchainName[c]),l.tokens.forEach(p=>{let u=yt(p);delete n[u]})):a(l.tokens))}),Object.values(n)}i($n,"matchTokensFromConfigWithMeta");function jr(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(jr,"getSupportedBlockchainsFromConfig");function Gp(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Gp,"makeProvidersOptionsFromConfig");var Jo={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"}},CC={clientUrl:void 0},kC={liquiditySources:void 0};function qp(t){let e=Gp(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 SC(o).map(a=>a())}i(qp,"generateProviders");var Vp=i((t,e,o)=>{let n=qp({...Jo,...t});return{config:{...Jo,...t},iframe:CC,campaignMode:kC,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c}=o(),l=$n({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}}),p=$n({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}});Yo.set("supportedSourceTokens",l),Yo.set("supportedDestinationTokens",p),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=qp(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Gp(a);return Up({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Kp}from"rango-types";var jp=[Kp.EVM,Kp.SOLANA],Xr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as _C}from"rango-sdk";import{UI_ID as TC}from"@rango-dev/ui";var Yr="c6381a79-2817-4602-83bf-6a641a409e32",Xp="https://api.rango.exchange",Yp="https://explorer.rango.exchange",ot={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...TC};import{BlockchainCategories as AC,WalletState as ct}from"@rango-dev/ui";import{legacyReadAccountAddress as NC}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as BC,getCosmosExperimentalChainInfo as WC,isEvmAddress as MC,KEPLR_COMPATIBLE_WALLETS as gW,Networks as yu}from"@rango-dev/wallets-shared";import en from"bignumber.js";import{isCosmosBlockchain as LC}from"rango-types";import wC from"bignumber.js";var ce=new wC(0);import{WalletTypes as vC}from"@rango-dev/wallets-shared";var Io="~",Zp=[vC.LEAP];import{BlockchainCategories as rs,WalletState as IC}from"@rango-dev/ui";import{TransactionType as Zr}from"rango-sdk";var Jp="Roboto",ns=[{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 Ro(t){return Array.from(new Set(t))}i(Ro,"removeDuplicateFrom");function Jr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Jr,"debounce");function lt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(lt,"containsText");function tu(t,e){return t.toLowerCase()===e.toLowerCase()}i(tu,"exactText");function ou(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(ou,"startWithText");var W=i(()=>document.getElementById(ot.SWAP_BOX_ID),"getContainer"),Ao=i(()=>document.getElementById(ot.EXPANDED_BOX_ID),"getExpanded");function nu(t,e,o){let n=!!e&&tu(e,t),r=!!o&&tu(o,t);return n!==r?n?-1:1:0}i(nu,"compareExactMatchText");function is(t,e,o){let n=!!e&&lt(e,t),r=!!o&&lt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(is,"compareContainsText");function as(t,e,o){let n=!!e&&ou(e,t),r=!!o&&ou(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(as,"compareStartWithText");function ru(t,e,o){if(!o)return 0;let n=nu(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=nu(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=as(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=is(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=as(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=is(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=as(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=is(o,t.address,e.address);if(r!==0)return r}return 0}i(ru,"compareWithSearchFor");var Rr=i((t,e)=>{switch(e){case rs.ALL:return!0;case rs.UTXO:return t===Zr.TRANSFER;case rs.OTHER:return t!==Zr.TRANSFER&&t!==Zr.COSMOS&&t!==Zr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),iu=i(t=>ns.find(o=>o.value===t)?.url,"getFontUrlByName");function au(t,e){let o=!!t.find(n=>n.state===IC.CONNECTED);return e===!1&&o}i(au,"isSingleWalletActive");function su(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(su,"memoizedResult");import{BigNumber as gu}from"bignumber.js";function lu(t){return t.replace(/^0+(?=\d)/g,"")}i(lu,"removeLeadingZeros");function cu(t){return t.replace(/^\.(\d+)/,"0.$1")}i(cu,"ensureLeadingZeroForDecimal");function pu(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(pu,"formatThousandsWithCommas");function uu(t){return t.replace(/\s+/g,"-")}i(uu,"replaceSpacesWithDash");function du(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(du,"stripTrailingZeros");function ei(t){return/^0+(?:\.0+)?$/.test(t)}i(ei,"isZeroValue");function mu(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(mu,"isValidCurrencyFormat");function fu(t){return/\d+$/.test(t)}i(fu,"isColorKeyOverridden");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"),D=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new gu(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new gu(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 ti=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Pt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),On=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function hu(t){return ei(t)?"0":du(t)}i(hu,"sanitizeInputAmount");function Un(t){return t.connected?ct.CONNECTED:t.connecting?ct.CONNECTING:t.installed?ct.DISCONNECTED:ct.NOT_INSTALLED}i(Un,"mapStatusToWalletState");function Su(t,e,o,n){return o.filter(r=>!Zp.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:c,network:l}=t(r);return s&&(!c||!!n&&l!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(r=>{let{name:a,img:s,installLink:c,showOnMobile:l,needsNamespace:p,supportedChains:u,needsDerivationPath:d,properties:f,isHub:h}=e(r),g=Ro(u.map(C=>C.type)),m=Un(t(r));return{title:a,image:s,link:BC(c),state:m,type:r,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:f,isHub:h}})}i(Su,"mapWalletTypesToWalletInfo");function zn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(zn,"walletAndSupportedChainsNames");function ls(t,e,o,n,r){let a=[];function s(l,p,u){if(!!!a.find(f=>f.chain===l)){let f={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(f)}}i(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=NC(l),d=c.length>0,f=c.includes(u),h=u===yu.Unknown;if(d&&!f&&!h)return;let m=u===yu.Unknown&&MC(p);if(h&&!m)return;o.includes(u)||m?r?s(u,p.toLowerCase(),r):c.filter(S=>o.includes(S)).forEach(S=>{s(S,p.toLowerCase())}):s(u,p)}),a}i(ls,"prepareAccountsForWalletStore");function No(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,c=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:l}=r;l.forEach((p,u)=>{let d=p.from.blockchain,f=p.to.blockchain,h=a===o.swaps.length-1,g=u===l.length-1;(!h&&!g||h&&c!==d||e==="all")&&n.add(d),e==="all"&&n.add(f)})}e==="all"&&n.add(c)}),Array.from(n)}i(No,"getQuoteChains");function Qn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Qn,"isAccountAndWalletMatched");var Cu=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?ss(n.usdValue,n.decimals):ce.toFixed();return o.plus(r)},new en(ce));return PC(e.toString())},"calculateWalletUsdValue");function PC(t){let e=t.toString().split(".");return e[0]&&(e[0]=pu(e[0])),e.join(".")}i(PC,"numberWithThousandSeparator");var ri=i((t,e)=>{let o=WC(Object.entries(t).map(([,n])=>n).filter(LC));return o&&!!o[e]?.experimental},"isExperimentalChain");function ss(t,e){return new en(t).shiftedBy(-e).toFixed()}i(ss,"representAmountInNumber");function ii(t){if(!t)return null;let e=ss(t.amount,t.decimals),o=t.usdValue?ss(t.usdValue,t.decimals):null,n=D(e,8,8),r=o?D(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(ii,"formatBalance");function ku(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new en(t.usdValue).shiftedBy(-t.decimals):ce,n=e&&e.usdValue?new en(e.usdValue).shiftedBy(-e.decimals):ce;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new en(t.amount).shiftedBy(-t.decimals):ce,n=e&&e.amount?new en(e.amount).shiftedBy(-e.decimals):ce;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(ku,"compareTokenBalance");function Ht(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Ht,"areTokensEqual");function Tu(t,e){return t.map(o=>({isPartiallyConnected:cs(o,e(o.type).namespaces),...o})).sort((o,n)=>+(n.state===ct.CONNECTED&&!n.isPartiallyConnected)-+(o.state===ct.CONNECTED&&!o.isPartiallyConnected)||+(n.state===ct.CONNECTED)-+(o.state===ct.CONNECTED)||+(n.state===ct.DISCONNECTED||n.state===ct.CONNECTING)-+(o.state===ct.DISCONNECTED||o.state===ct.CONNECTING)).map(({isPartiallyConnected:o,...n})=>n)}i(Tu,"sortWalletsBasedOnConnectionState");function ao(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(ao,"getConciseAddress");function wu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(wu,"getAddress");var vu=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function bu(t){return t.map(e=>e.state).join("-")}i(bu,"hashWalletsState");function xu(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(xu,"filterBlockchainsByWalletTypes");function Eu(t,e){return e===AC.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Rr(n,e))return!0;return!1})}i(Eu,"filterWalletsByCategory");function cs(t,e){return!t.isHub||!t.needsNamespace||t.state!==ct.CONNECTED?!1:t.needsNamespace.data.filter(r=>!r.unsupported).some(r=>!e?.get(r.value)?.connected)}i(cs,"checkIsWalletPartiallyConnected");var ps={API_KEY:Yr};function qt(t){return ps[t]||""}i(qt,"getConfig");function Iu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ps=e,ps}i(Iu,"initConfig");var Au=20,Nu=25,us="theme-widget",ds=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Ht(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Ht(a,t));let r=n.isExcluded;return!r&&!o||r&&o}}}return o},"isTokenExcludedInConfig"),ms=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),Bu=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var ai,pt=i(()=>ai||(ai=new _C(qt("API_KEY"),qt("BASE_URL")),ai),"httpService");import{i18n as Mu}from"@lingui/core";var si=[.5,1,3],li=1,tn=5,Hn=30,ci=0;var Ze=(a=>(a[a.NO_RESULT=0]="NO_RESULT",a[a.REQUEST_FAILED=1]="REQUEST_FAILED",a[a.REQUEST_CANCELED=2]="REQUEST_CANCELED",a[a.BRIDGE_LIMIT=3]="BRIDGE_LIMIT",a[a.INSUFFICIENT_SLIPPAGE=4]="INSUFFICIENT_SLIPPAGE",a))(Ze||{});import{WidgetEvents as Wu}from"@rango-dev/queue-manager-rango-preset";var fs=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(fs||{}),gs=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(gs||{}),hs=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(hs||{}),on=(a=>(a[a.RouteEvent=Wu.RouteEvent]="RouteEvent",a[a.StepEvent=Wu.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(on||{});function pi(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Ro(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(c=>c.swapperGroup===a);if(s){let c=!0;o&&(c=o.some(l=>l===s.swapperGroup)),c&&s.types.map(l=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:l,selected:!e.includes(s.swapperGroup)})})}}),n}i(pi,"getUniqueSwappersGroups");function Lu(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Lu,"sortLiquiditySourcesByGroupTitle");function nt(t,e){return e?.[t]==="hidden"}i(nt,"isFeatureHidden");function nn(t,e){return e?.[t]==="enabled"}i(nn,"isRoutingEnabled");var Pu=i((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function rn(t){return t==ci?{type:"error",message:Mu.t("Slippage must be greater than or equal to 0.01")}:t>tn&&t<=Hn?{type:"warning",message:Mu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(rn,"getSlippageValidation");var _u=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let l=jr({config:a}),p=r;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>jp.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),c=Array.from(n.values()),l=e()._blockchainsMapByName;if(!o||!o.type)return c;let p=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",d=Yo.get(u);d?.length||(d=$n({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Yo.set(u,d)),d=Pu(d,s,a.features);let f=e().blockchains({type:o.type});return d.filter(g=>o.blockchain&&g.blockchain!==o.blockchain||!f.some(m=>m.name===g.blockchain)?!1:o.searchFor?!!(lt(g.symbol,o.searchFor)||lt(g.address||"",o.searchFor)||lt(g.name||"",o.searchFor)):!0).sort((g,m)=>{let C=e().isTokenPinned(g,o.type),y=e().isTokenPinned(m,o.type);if(C!==y)return C?-1:1;if(o.getBalanceFor){let N=o.getBalanceFor(g),B=o.getBalanceFor(m),b=ku(N,B);if(b!==0)return b}let S=l.get(g.blockchain),T=l.get(m.blockchain),w=os(g,S),v=os(m,T);if(w!==v)return w?-1:1;if(g.isPopular!==m.isPopular)return g.isPopular?-1:1;if(o.searchFor){let N=ru(g,m,o.searchFor);if(N)return N}return g.isSecondaryCoin!==m.isSecondaryCoin?g.isSecondaryCoin?1:-1:S&&T?S.sort-T.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=yt(o),s=n.get(a);return s||(s=r.find(c=>yt(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Ht(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(p=>{let u=a?.includes(p.swapperGroup);return s||!a||a.length===0?!u:u}).sort(Lu)},fetch:async()=>{try{let{routing:o}=e().config,n=nn("enableCentralizedSwappers",o),r=await pt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,c={},l=[],p=r.popularTokens,u=r.swappers.filter(h=>h.enabled),d=new Set;r.tokens.forEach(h=>{d.add(h.blockchain),l.push(h)}),r.blockchains.sort((h,g)=>h.sort-g.sort).forEach(h=>{h.enabled&&d.has(h.name)&&a.set(h.name,h)}),l.forEach(h=>{let g=yt(h);c[h.blockchain]||(c[h.blockchain]=[]),s.set(g,h),c[h.blockchain]?.push(g)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c,_popularTokens:p,_swappers:u})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as DC,Catalonia as $C,Chinese as Du,Denmark as FC,English as OC,Finland as UC,French as zC,German as QC,Greece as HC,Hungary as qC,India as GC,Indonesian as VC,Italian as KC,Japanese as jC,Korea as XC,Lithuania as YC,Malay as ZC,Netherlands as JC,Pakistan as RC,Philippines as ek,Poland as tk,Portuguese as ok,Russian as nk,SaudiArabia as rk,Serbia as ik,Slovakia as ak,SouthAfrica as sk,Spanish as lk,Swahili as ck,Swedish as pk,Thai as uk,Turkish as dk,Ukrainian as mk,Vietnamese as fk}from"@rango-dev/ui";var $u=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:sk},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:rk},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:DC},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:$C},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Du},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Du},{title:"Danish",label:"Dansk",local:"da",SVGFlag:FC},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:JC},{title:"English",label:"English",local:"en",SVGFlag:OC},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:ek},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:UC},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:zC},{title:"German",label:"Deutsch",local:"de",SVGFlag:QC},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:HC},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:GC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:qC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:VC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:KC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:jC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:XC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:YC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:ZC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:tk},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:ok},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:nk},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:ik},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:ak},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:lk},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:ck},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:pk},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:uk},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:dk},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:mk},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:RC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:fk}],an="en";var Fu=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:li,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],quoteTokensRate:"default",changeQuoteTokensRate:()=>t(o=>({quoteTokensRate:o.quoteTokensRate==="default"?"reversed":"default"})),addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,c)=>{let l=s===o,p=c<=9;return l&&p}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let a=Ro(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=nt("theme",n),s=nt("language",n),c=nt("liquiditySource",n),l=r?.singleTheme,p=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...l&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||an},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||an}})},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=jr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import ws from"bignumber.js";import gk from"mitt";var Ce=gk(),hk={on:Ce.on,off:Ce.off};var Ou=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...c]=a;e(l=>({...typeof s=="function"?s(l):s,lastUpdatedAt:+new Date}),...c)},"modifedSet"),o,n),"keepLastUpdated");import Uu from"bignumber.js";function Gt(t){return`${t.blockchain}${Io}${t.address}${Io}${t.symbol}`}i(Gt,"createAssetKey");function zu(t,e){return`${Gt(e)}${Io}${t}`}i(zu,"createBalanceKey");function qn(t){let[e,o,n]=t.split(Io);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}i(qn,"extractAssetFromBalanceKey");function Ss(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Gt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Uu(r??ce).multipliedBy(o[s].amount).toString():""})})}),o}i(Ss,"computeNextBalancesWithNewPrices");function Cs(t,e){let o={};return t.balances?.forEach(n=>{let r=zu(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Uu(c??ce).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[r]=p}),o}i(Cs,"createBalanceStateForNewAccount");function ks(t,e){for(let o in e){let n=qn(o);if(n){let r=Gt(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}}return t}i(ks,"updateAggregatedBalanceStateForNewAccount");function yk(t,e){let o=qn(e);if(!o)return t;let n=Gt(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(yk,"removeBalanceFromAggregatedBalance");function Ts(t,e,o){let n=t.connectedWallets.filter(l=>l.walletType===e);t.connectedWallets.forEach(l=>{l.walletType!==e&&(n=n.filter(p=>!(p.chain===l.chain&&p.address===l.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(l=>o.chains?.includes(l.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(l=>l.namespace?o.namespaces?.includes(l.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(l=>{let p=qn(l);if(!p)return;!!n.find(d=>zu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=yk(a,l):s[l]&&(r[l]=s[l])}),{_balances:r,_aggregatedBalances:a}}i(Ts,"computeNextStateAfterWalletBalanceRemoval");function Sk(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(Sk,"matchWalletDetailsWithConnectedWallet");var Ck=su(),Qu=Ou((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Qn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Qn(s,a))?{...a,loading:!1,error:!1,explorerUrl:Sk(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Qn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n,r)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Qn(c,l)));if(s.length>0){let c=s.map(l=>{let p=!a.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:p,namespace:n,derivationPath:r,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!c.some(d=>d.walletType===u.walletType&&d.chain===u.chain)),...c]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((l,p)=>((l[p.blockchain]||=[]).push(p),l),{}),s=new Set,c=r.reduce((l,p)=>{let u=`${p.address}-${p.chain}`;return s.has(u)||(s.add(u),a[p.chain]&&(l[p.address]||(l[p.address]=[]),l[p.address]?.push(...a[p.chain]||[]))),l},{});Object.entries(c).forEach(async([l,p])=>{try{let{balances:u}=await pt().getMultipleTokenBalance({assets:p.map(({symbol:d,address:f,blockchain:h})=>({symbol:d,address:f,blockchain:h})),walletAddress:l});if(u){let d=e()._balances,f=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let g={blockChain:h.asset.blockchain,balances:[h],address:l},m={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};Ss(m,g,d);let C=Cs(g,e);f=ks(f,C),d={...d,...C}}),t(h=>({_balances:{...h._balances,...d},_aggregatedBalances:f}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(c=>c.chain===r.chain&&c.walletType!==r.walletType&&r.selected),s=!!o.find(c=>c.chain===r.chain&&c.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n,r)=>{let a=o[0];a&&(Ce.emit("walletEvent",{type:"connect",payload:{walletType:a.walletType,accounts:o}}),e().addConnectedWallet(o,n,r),e().fetchBalances(o))},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Ts(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(Ce.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(c=>a.includes(c.chain)?(a=a.filter(l=>l!==c.chain),{...c,selected:!0}):c);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0||!o[0])return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(l=>({address:l.address,blockchain:l.chain})),s;try{s=await pt().getWalletsDetails(a)}catch(l){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${l}`);return}let c=s.wallets;if(c){let l=e()._balances,p=e()._aggregatedBalances;c.forEach(d=>{if(d.failed)return;let f={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};Ss(f,d,l);let{_balances:h,_aggregatedBalances:g}=Ts(f,r,{chains:[d.blockChain]});if(p=g,l=h,!e().connectedWallets.find(C=>C.walletType===r&&C.address===d.address&&C.chain===d.blockChain))return;let m=Cs(d,e);p=ks(p,m),l={...l,...m}}),t(d=>({_balances:{...d._balances,...l},_aggregatedBalances:p})),e().setConnectedWalletRetrievedData(o,c);let{retryOnFailedBalances:u=!0}=n||{};if(u){let d=c.filter(f=>f.failed).map(f=>({chain:f.blockChain,walletType:r,address:f.address}));d.length>0&&await e().fetchMainTokensBalances(d,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),r=Gt(o),a=e()._aggregatedBalances[r]||[];if(a.length===0||!a[0])return null;let s=a[0];if(a.length===1&&n[s])return n[s];let c=n[a[0]];if(!c)return null;let l=c;return a.forEach(p=>{let u=n[p];if(!u)return;let d=new ws(u.amount),f=new ws(l.amount);d.isGreaterThan(f)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(Io);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>Ck(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,c)=>{let l=r[c],p=qn(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new ws(l.amount).shiftedBy(-l.decimals):ce;s.push({chain:n.chain,symbol:p.symbol,ticker:p.symbol,address:p.address,rawAmount:l.amount,decimal:l.decimals,amount:d.toString(),isSupported:!!u,logo:u?.image||null,usdPrice:u?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Hu(t){return kk()(Tk((...e)=>({...Qu(...e),..._u(...e),...Fu(...e),...Vp(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources,quoteTokensRate:e.quoteTokensRate}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Hu,"createAppStore");var qu=vk(null);function k(){let t=bk(qu);if(xk(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(k,"useAppStore");function Gu(t){let e=Ek();return e.current||(e.current=Hu(t.config)),wk.createElement(qu.Provider,{value:e.current},t.children)}i(Gu,"AppStoreProvider");import{useWallets as Ik}from"@rango-dev/wallets-react";import{detectMobileScreens as Ak}from"@rango-dev/wallets-shared";function sn(){let{getWalletInfo:t}=Ik(),{config:e}=k(),o=Ak();function n(s){let c=t(s),l=e.deepLinking?.appHost,p=e.deepLinking?.targetUrl;if(!(!l||!p))return c.generateDeepLink?.({appHost:l,targetUrl:p})}i(n,"getWalletDeepLink");function r(s){let c=n(s);return c&&o?c:t(s).installLink}i(r,"getWalletLink");function a(s){return!!n(s)&&o}return i(a,"checkHasDeepLink"),{getWalletDeepLink:n,getWalletLink:r,checkHasDeepLink:a}}i(sn,"useDeepLink");function bt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=k(),{state:r,getWalletInfo:a}=Nk(),s=k().blockchains(),{handleDisconnect:c}=Xo(),{checkHasDeepLink:l}=sn(),p=Qp(n()),u=Su(r,a,p,e);u=Bk()?u.filter(C=>C.showOnMobile!==!1&&(r(C.type).installed||l(C.type))):u;let d=Tu(u,r),f=i(C=>!o.find(y=>y.walletType===C&&y.chain===e),"isExperimentalChainNotAdded"),h=Mk(()=>{let C=u?.filter(y=>y.state===vs.CONNECTING)||[];for(let y of C)c(y)},[bu(u)]);Lk(()=>()=>{h()},[]);let g=i(C=>{let y=C.find(T=>T.type===Gn.DEFAULT);return!y||y.state===vs.NOT_INSTALLED?!1:C.filter(T=>T.state!=vs.NOT_INSTALLED&&![Gn.DEFAULT,Gn.WALLET_CONNECT_2,Gn.LEDGER].includes(T.type)&&a(T.type).supportedChains.filter(w=>w.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),m=i((C,y,S)=>ri(S,y)&&f(C)&&!Wk.includes(C)||C==Gn.DEFAULT&&!g(u),"shouldExcludeWallet");return{list:d.filter(C=>!m(C.type,e??"",s)),terminateConnectingWallets:h}}i(bt,"useWalletList");import{Modal as $k}from"@rango-dev/ui";import Fk from"react";import{create as Dk}from"zustand";var Vu="rango-widget";var Vn=class{constructor(e){this.state="not-initiated";this.events={};this.init=()=>{this.initEvents(),this.tryClaim()};this.forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};this.isClaimed=()=>this.state==="claimed";this.destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};this.handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};this.handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};this.handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};this.channel=new BroadcastChannel(Vu),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 _k=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"),so=_k;var oe=so(Dk()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,showCompactTokenSelector:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})},setShowCompactTokenSelector:o=>{t({showCompactTokenSelector:o})}}))),Wo=new Vn({onInit:()=>oe.setState({tabManagerInitiated:!0}),onClaim:()=>oe.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>oe.setState({isActiveTab:!1})});function R(t){let{watermark:e}=oe();return Fk.createElement($k,{hasWatermark:e==="FULL",...t},t.children)}i(R,"WatermarkedModal");import{i18n as pn}from"@lingui/core";import{Alert as Jk,Button as Rk,Divider as Si,Image as eT,MessageBox as tT,RadioRoot as oT}from"@rango-dev/ui";import pe,{useEffect as nT,useMemo as rT,useState as iT}from"react";import{i18n as Qk}from"@lingui/core";import{Typography as ed}from"@rango-dev/ui";import ln from"react";function ui(t,e){return t.find(o=>o.name===e)?.logo}i(ui,"getBlockchainLogo");import{darkTheme as Ok,Image as Uk,styled as Vt,Typography as zk}from"@rango-dev/ui";var di=Vt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${Ok} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),mi=Vt("div",{display:"flex",gap:"$8",alignItems:"center"}),ju=Vt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),Xu=Vt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Yu=Vt("div",{display:"flex",gap:"$6",alignItems:"center"}),Zu=Vt("div",{paddingLeft:"48px"}),Ju=Vt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),Ru=Vt(zk,{maxWidth:"100px"}),fi=Vt(Uk,{variants:{disabled:{true:{opacity:"0.5"}}}});function gi(t){let{namespace:e}=t,o=k().blockchains();return ln.createElement(di,{unsupported:!0},ln.createElement(mi,null,ln.createElement(fi,{src:ui(o,e.id),size:40,disabled:!0}),ln.createElement(Xu,null,ln.createElement(ed,{variant:"label",size:"large"},e.label),ln.createElement(ed,{variant:"body",size:"xsmall"},Qk.t("(Currently not supported)")))))}i(gi,"NamespaceUnsupportedItem");import{Checkbox as Xk,Radio as Yk}from"@rango-dev/ui";import Is from"react";import{i18n as Es}from"@lingui/core";import{ChevronDownIcon as qk,ChevronUpIcon as Gk,Divider as Vk,Typography as Kn}from"@rango-dev/ui";import Ne,{useEffect as Kk,useState as jk}from"react";import{Image as od,Tooltip as nd,Typography as Hk}from"@rango-dev/ui";import _t from"react";import{styled as td}from"@rango-dev/ui";var bs=td("div",{display:"flex",alignItems:"center",padding:0,margin:0}),hi=td("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 xs=3;function rd(t){let{chains:e}=t;return _t.createElement(bs,{id:"widget-supported-chains-container"},e.slice(0,xs).map((o,n)=>_t.createElement(nd,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},_t.createElement(hi,{firstItem:n===0},_t.createElement(od,{src:o.logo,size:15})))),e.length>xs&&_t.createElement(nd,{container:W(),side:"bottom",align:"start",sideOffset:4,content:_t.createElement(bs,null,e.map((o,n)=>_t.createElement(hi,{key:o.name,firstItem:n===0},_t.createElement(od,{src:o.logo,size:15}))))},_t.createElement(hi,null,_t.createElement(Hk,{variant:"body",size:"xsmall"},"+",e.length-xs))))}i(rd,"SupportedChainsList");function Mo(t){let{namespace:e,error:o,suffix:n,connected:r,address:a,onClick:s}=t,[c,l]=jk(!1),p=k().blockchains();Kk(()=>l(!1),[o]);let u=e.getSupportedChains(p),d=!o&&!r&&u.length>1;return Ne.createElement(di,{hasError:!!o,clickable:!!s,onClick:s},Ne.createElement(mi,null,Ne.createElement(fi,{src:ui(p,e.id),size:40}),Ne.createElement(ju,{showSupportedChains:d||r||!!o},Ne.createElement(Yu,null,Ne.createElement(Kn,{variant:"label",size:"large"},e.label),r&&Ne.createElement(Kn,{variant:"body",size:"small",color:"success500"},Es.t("Connected")),!!o&&Ne.createElement(Kn,{variant:"body",size:"small",color:"error500"},Es.t("Connection failed"))),d&&Ne.createElement(rd,{chains:u}),r&&Ne.createElement(Ru,{variant:"body",size:"small",color:"neutral700"},a),o&&Ne.createElement(Ju,{onClick:()=>l(f=>!f)},Ne.createElement(Kn,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},Es.t("See why")),c?Ne.createElement(Gk,{size:12,color:"gray"}):Ne.createElement(qk,{size:12,color:"gray"}))),n),!!o&&c&&Ne.createElement(Ne.Fragment,null,Ne.createElement(Vk,{size:4}),Ne.createElement(Zu,null,Ne.createElement(Kn,{variant:"body",size:"small",color:"neutral700"},o))))}i(Mo,"NamespaceItem");function id(t){let{onClick:e,type:o,namespace:n}=t;return Is.createElement(Mo,{namespace:n,onClick:e,suffix:o==="radio"?Is.createElement(Yk,{value:n.value}):Is.createElement(Xk,{checked:t.value})})}i(id,"NamespaceListItem");import{Button as Zk,styled as ad}from"@rango-dev/ui";var yi=ad("ul",{padding:0,paddingTop:"$16",paddingBottom:"$20",margin:0}),cn=ad(Zk,{minHeight:"$40"});function jn(t){let{targetWallet:e}=t.value,o=e.properties?.find(m=>m.name==="namespaces"),n=e.isHub,r=e.isHub?o?.value.selection==="single":e.needsNamespace?.selection==="single",a=n?o?.value:e.needsNamespace,s=e.image,c=k().blockchains(),[l,p]=iT([]),u=rT(()=>a?.data.filter(m=>!m.unsupported),[e?.type]),d=i(m=>{p(r?[m]:C=>C.includes(m)?C.filter(y=>y!==m):C.concat(m))},"onSelect"),f=u?.length===l.length,h=i(()=>{if(r)throw new Error("onSelectAll should not be called on single selection mode.");f?p([]):u&&p(u.map(m=>m.value))},"onSelectAll"),g=i(m=>r?pe.createElement(oT,{value:l?.[0]},m):pe.createElement(pe.Fragment,null,m),"wrapRadioRoot");return nT(()=>{if(!r&&u)if(t.value.defaultSelectedChains?.length){let m=u.filter(C=>C.getSupportedChains(c).some(y=>t.value.defaultSelectedChains?.includes(y.name)));p(m.map(C=>C.value))}else p(u.map(m=>m.value))},[]),pe.createElement(pe.Fragment,null,pe.createElement(tT,{type:"info",title:pn.t("Connect {wallet}",{wallet:e.title}),description:pn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:pe.createElement(eT,{src:s,size:45})}),r?pe.createElement(pe.Fragment,null,pe.createElement(Si,{size:20}),pe.createElement(Jk,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:pn.t("This wallet can only connect to one chain at a time. ")})):pe.createElement(pe.Fragment,null,pe.createElement(Si,{size:30}),pe.createElement(Rk,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:h},f?pn.t("Deselect all"):pn.t("Select all"))),pe.createElement(yi,null,g(pe.createElement(pe.Fragment,null,a?.data.map((m,C,y)=>pe.createElement(pe.Fragment,{key:m.id},m.unsupported?pe.createElement(gi,{namespace:m}):pe.createElement(id,{value:l.includes(m.value),namespace:m,type:r?"radio":"checkbox",onClick:()=>d(m.value)}),C!==y.length-1&&pe.createElement(Si,{size:10})))))),pe.createElement(Si,{size:20}),pe.createElement(cn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!l.length,onClick:()=>t.onConfirm(l)},pn.t("Connect")))}i(jn,"Namespaces");import{i18n as Ci}from"@lingui/core";import{Button as mT,Divider as Bs,Image as fT,MessageBox as gT}from"@rango-dev/ui";import{useWallets as hT}from"@rango-dev/wallets-react";import Je from"react";import{styled as aT}from"@rango-dev/ui";var sd=aT("div",{display:"flex",justifyContent:"end"});import{i18n as As}from"@lingui/core";import{Button as sT,Spinner as lT}from"@rango-dev/ui";import{useWallets as cT}from"@rango-dev/wallets-react";import Ns,{useLayoutEffect as pT,useRef as uT,useState as dT}from"react";var ld=i(function(e){let{walletType:o,namespace:n,initialConnect:r}=e,{connect:a,disconnect:s,state:c}=cT(),[l,p]=dT(null),d=c(o).namespaces?.get(n.value),f=d.accounts?.[0]?.split(":"),h=uT(!1);pT(()=>{r&&!h.current&&g(o,n.value)},[]);let g=i(async(y,S)=>{try{h.current=!0,await a(y,[{namespace:S,network:""}])}catch(T){p(T)}finally{h.current=!1}},"handleConnectNamespace"),m=i(async y=>{p(null),y.connected?await s(o,[n.value]):g(o,n.value)},"handleButtonClick"),C=i(()=>d.connected?As.t("Disconnect"):l?As.t("Try again"):As.t("Connect"),"getButtonText");return Ns.createElement(Mo,{namespace:n,connected:d.connected,error:l?.message,address:d.connected?ao(f?.[f?.length-1]):"",suffix:d.connecting?Ns.createElement(lT,{color:"info"}):Ns.createElement(sT,{id:"widget-name-space-connect-btn",variant:"ghost",type:d.connected?"error":"primary",size:"xsmall",onClick:async()=>m(d)},C())})},"NamespaceDetachedItem");function Xn(t){let{selectedNamespaces:e,value:o,onDisconnectWallet:n}=t,{targetWallet:r}=o,{state:a}=hT(),s=a(r.type);return Je.createElement(Je.Fragment,null,Je.createElement(gT,{type:"info",title:Ci.t("Connect {wallet}",{wallet:r.type}),description:Ci.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:Je.createElement(fT,{src:r.image,size:45})}),Je.createElement(Bs,{size:30}),Je.createElement(sd,null,Je.createElement(mT,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:s.connecting||!s.connected,onClick:n},Ci.t("Disconnect wallet"))),Je.createElement(yi,{id:"widget-detached-namespace-list",as:"ul"},r.needsNamespace?.data.map((c,l,p)=>Je.createElement(Je.Fragment,{key:c.id},c.unsupported?Je.createElement(gi,{namespace:c}):Je.createElement(ld,{walletType:r.type,namespace:c,initialConnect:e?.includes(c.value)}),l!==p.length-1&&Je.createElement(Bs,{size:10})))),Je.createElement(Bs,{size:20}),Je.createElement(cn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:t.onConfirm},Ci.t("Done")))}i(Xn,"Detached");import{i18n as un}from"@lingui/core";import{Divider as pd,Image as kT,MessageBox as TT,Select as wT,TextField as vT}from"@rango-dev/ui";import St,{useEffect as bT,useState as ud}from"react";import{namespaces as yT}from"@rango-dev/wallets-shared";var ki={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Ws(t){let e=t?yT[t]?.derivationPaths:null;return e?[...e,ki]:[]}i(Ws,"getDerivationPaths");import{Button as ST,styled as Ms,Typography as CT}from"@rango-dev/ui";var cd=Ms("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Ls=Ms(CT,{paddingLeft:"$10"}),Ps={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},jP=Ms(ST,{minHeight:"$40"});var dd="0";function Yn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=ud(null),[c,l]=ud(dd),p=a===ki.id,u=Ws(o),d=i(({value:h})=>{let g=u?.find(m=>m.id===h);g&&(a===ki.id&&Number.isNaN(Number(c))&&l(dd),s(g.id))},"handleDerivationPathItemClick"),f=i(()=>{let h=u.find(g=>g.id===a);if(h)e(h.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return bT(()=>{s(Ws(o)[0]?.id||null)},[o]),St.createElement(St.Fragment,null,St.createElement(pd,{size:20}),St.createElement(TT,{type:"info",title:un.t("Select Derivation Path"),description:un.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:St.createElement(kT,{src:n,size:45})}),St.createElement(cd,null,St.createElement(Ls,{variant:"body",size:"xsmall",color:"$neutral600"},un.t("Choose Derivation Path Template")),St.createElement(wT,{id:"widget-derivation-path-template-select",value:a||"",options:u.map(h=>({value:h.id,label:h.label})),variant:"filled",handleItemClick:d,styles:{trigger:Ps}}),St.createElement(pd,{size:20}),St.createElement(Ls,{variant:"body",size:"xsmall",color:"$neutral600"},p?un.t("Enter Path"):un.t("Enter Index")),St.createElement(vT,{id:"widget-derivation-path-template-input",type:p?"text":"number",variant:"contained",value:c,onChange:h=>l(h.target.value),style:Ps})),St.createElement(cn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:f,disabled:!u||!a||!c},un.t("Confirm")))}i(Yn,"DerivationPath");import{i18n as dn}from"@lingui/core";import{Image as IT,MessageBox as _s,WalletState as AT}from"@rango-dev/ui";import{useWallets as NT}from"@rango-dev/wallets-react";import Lo from"react";import{keyframes as xT,styled as Ti}from"@rango-dev/ui";var i_=Ti("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),md=Ti("div",{position:"relative"}),ET=xT({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),fd=Ti("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${ET} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),gd=Ti("div",{"& img":{borderRadius:"50%"}});function Ds(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=NT();return Un(a(n))===AT.CONNECTED?Lo.createElement(_s,{type:"success",title:dn.t("Wallet Connected"),description:dn.t("Your wallet is connected, you can use it to swap.")}):o?Lo.createElement(_s,{type:"error",title:dn.t("Failed to Connect"),description:o||dn.t("Your wallet is not connected. Please try again.")}):Lo.createElement(_s,{type:"loading",title:dn.t("Connecting to your wallet"),description:dn.t("Click connect in your wallet popup."),icon:Lo.createElement(md,null,Lo.createElement(gd,null,Lo.createElement(IT,{src:r,size:45})),Lo.createElement(fd,null))})}i(Ds,"ConnectStatus");import{i18n as $s}from"@lingui/core";import{Button as BT,Divider as hd,MessageBox as WT}from"@rango-dev/ui";import wi from"react";function Fs(t){let{displayName:e,onConfirm:o,id:n}=t;return wi.createElement(WT,{id:n,title:$s.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:$s.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},wi.createElement(hd,{size:18}),wi.createElement(hd,{size:32}),wi.createElement(BT,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},$s.t("Confirm")))}i(Fs,"ExperimentalChain");function yd(t,e){return t().status==="init"&&!!e}i(yd,"isOnStatus");function Zn(t){return t().status==="namespace"}i(Zn,"isOnNamespace");function Jn(t){return t().status==="derivationPath"}i(Jn,"isOnDerivationPath");function xo(t){return t().status==="detached"}i(xo,"isOnDetached");var _T=3e3,DT=300;function Rn(t){let e=PT(),[o,n]=Sd(!1),[r,a]=Sd(),s=i(w=>{a(w.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=bt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:f,handleDisconnect:h}=Xo(),g=i(w=>{u(t.wallet,w).then(T).catch(s)},"handleConfirmNamespaces"),m=i(()=>{y()},"handleDetachedConfirm"),C=i(w=>{if(!w)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(w).then(T).catch(s)},"handleDerivationPathConfirm"),y=i(()=>{n(!1)},"handleClosingModal"),S=i(()=>{a(void 0),f(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),T=i((w,v)=>{let N=w.status==="connected",B=["disconnected","disconnected-unhandled"].includes(w.status);N?(t.onConnect?.(),v||(e.current=setTimeout(y,_T))):B&&y()},"afterConnected");return LT(()=>{if(t.wallet){S();let w=!1,v=!0;i(()=>{setTimeout(()=>{v=!1,w||n(!0)},DT)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(B=>{["namespace","Detached","derivation-path"].includes(B.status)||(w=!0),T(B,v)}).catch(s)}},[t.wallet]),lo.createElement(R,{id:t.id,open:o,onClose:y,onExit:()=>{S(),c(),t.onClose&&t.onClose()},container:W()},yd(d,t.wallet)&&lo.createElement(lo.Fragment,null,lo.createElement(Ds,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),lo.createElement(MT,{direction:"vertical",size:32})),Zn(d)&&lo.createElement(jn,{onConfirm:g,value:d().namespace}),Jn(d)&&lo.createElement(Yn,{onConfirm:C,value:d().derivationPath}),xo(d)&&lo.createElement(Xn,{onConfirm:m,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces}))}i(Rn,"StatefulConnectModal");import ja from"react";import $T,{Fragment as FT}from"react";import{MemoryRouter as OT,useInRouterContext as UT}from"react-router";function vi({children:t}){let o=UT()?FT:OT;return $T.createElement(o,null,t)}i(vi,"AppRouter");import{I18nManager as _0}from"@rango-dev/ui";import Ip from"react";import He from"react";import{useRoutes as f0}from"react-router-dom";var O={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 fn,useRef as Bi}from"react";import rt from"bignumber.js";import{create as Zd}from"zustand";import{subscribeWithSelector as Jd}from"zustand/middleware";import{createContext as zT,useContext as QT}from"react";var Cd=zT({swapMode:"swap",isMultiMode:!1});function Ct(){let{swapMode:t,isMultiMode:e}=QT(Cd);return{swapMode:t,isMultiMode:e}}i(Ct,"useSwapMode");import{i18n as Tt}from"@lingui/core";import{getRelatedWalletOrNull as GT,RouteEventType as wD}from"@rango-dev/queue-manager-rango-preset";import je from"bignumber.js";import{PendingSwapNetworkStatus as tr}from"rango-types";import{i18n as Ke}from"@lingui/core";var ne=i(()=>({genericServerError:Ke.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Ke.t("Please reset your liquidity sources."),description:Ke.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Ke.t("No Routes Found."),description:Ke.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:Ke.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Ke.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Ke.t("High Price Impact"),title:Ke.t("Price impact is too high!"),description:Ke.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Ke.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Ke.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Ke.t("USD Price Unknown"),title:Ke.t("USD Price Unknown, Cannot calculate Price Impact."),description:Ke.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Ke.t("Confirm USD Price Unknown")}}),"errorMessages");function kd(t){return t.type===0?t.diagnosisMessage??ne().noResultError.title:t.type===1?t.diagnosisMessage??ne().genericServerError:""}i(kd,"getQuoteErrorMessage");import{i18n as bi}from"@lingui/core";var Po=i(()=>({connectWallet:bi.t("Connect Wallet"),swap:bi.t("Swap"),swapAnyway:bi.t("Swap anyway"),ethWarning:bi.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Os(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(Os,"getFeeLabel");var Us=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],Td=100,wd=30,vd=15,bd=60;var xd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Ed=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as qT}from"@rango-dev/queue-manager-rango-preset";import lD from"bignumber.js";function Ad(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(Ad,"getRequiredBalanceOfWallet");function jt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(jt,"getPriceImpactLevel");function xi(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=qT(t.steps);if(!r||!n)return{fromBlockchain:null,fromToken:void 0,toBlockchain:null,toToken:void 0,inputAmount:""};let s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},c=Eo(a?a.toBlockchain:n.fromBlockchain,e),l=Eo(r.toBlockchain,e),p=o(a?{blockchain:c?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:c?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),u=o(s),d=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:c,fromToken:p,toBlockchain:l,toToken:u,inputAmount:d}}i(xi,"createRetryQuote");function mn(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=er(o),s=kt(o);if(o&&a&&s){let p=Kt(a.toString(),s.toString());if(!!p&&Ld(a,p)){let d=Ii(o?.swaps,n),f=jt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:f}}}if(e&&Dd(e,o))return{type:4,usdValueChange:D(kt(o)?.minus(kt(e)??0).toString()??"0",null,2),percentageChange:D(Kt(kt(e)??"1",kt(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=Ai(o.swaps),l=r>tn;if(_d(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:Pd(o,r),minRequiredSlippage:c};return null}i(mn,"generateQuoteWarnings");function Nd(t){return![4].includes(t.type)}i(Nd,"isQuoteWarningConfirmationRequired");function Kt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:zs(t.toString(),e.toString());return n&&n<0?n:null}i(Kt,"getPriceImpact");var Bd=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"),Ei=i((t,e)=>e.sort((o,n)=>{let r=i(p=>p.scores?.find(u=>u.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let c=o.requestId.toLowerCase(),l=n.requestId.toLowerCase();return c.localeCompare(l)}),"sortQuotesBy"),Wd=i((t,e,o)=>{let n=e[0];if(!e.length||!n)return null;if(!t)return{requestAmount:o,validationStatus:null,...n};let r=new Set(t.swaps.map(s=>s.swapperId)),a=e.find(s=>{let c=new Set(s.swaps.map(l=>l.swapperId));return Array.from(r).every(l=>c.has(l))});return{requestAmount:o,validationStatus:null,...a||n}},"getDefaultQuote"),Md=i(t=>{let e=i((o,n)=>{let r=Us.indexOf(o.value),a=Us.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Ld(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return xd.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new je(r)))}i(Ld,"hasHighValueLoss");function $d(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new je(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new je(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($d,"hasLimitError");function Fd(t){let e=(t||[]).filter(c=>{let l=c.fromAmountMinValue?new je(c.fromAmountMinValue):null,p=c.fromAmountMaxValue?new je(c.fromAmountMaxValue):null;return c.fromAmountRestrictionType==="EXCLUSIVE"?l?.gte(c.fromAmount)||p?.lte(c.fromAmount):l?.gt(c.fromAmount)||p?.lt(c.fromAmount)})[0];if(!e)return{swap:void 0,fromAmountRangeError:"",recommendation:""};let o=e.fromAmountMinValue?new je(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new je(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=Tt.t({id:"Required: >= {min} {symbol}",values:{min:D(o,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=Tt.t({id:"Required: > {min} {symbol}",values:{min:D(o,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=Tt.t({id:"Required: <= {max} {symbol}",values:{max:D(n,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=Tt.t({id:"Required: < {max} {symbol}",values:{max:D(n,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Fd,"getLimitErrorMessage");function Od(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:Po().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!r||r==="0"?{title:Po().swap,action:"confirm-swap",disabled:!0}:s?{title:Po().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:Po().ethWarning,action:"confirm-warning",disabled:!1}:{title:Po().swap,action:"confirm-swap",disabled:!1}:{title:Po().connectWallet,action:"connect-wallet",disabled:!1}}i(Od,"getSwapButtonState");function Qs(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(ce))&&e&&e!=="0"&&n!==0)}i(Qs,"canComputePriceImpact");function Hs(t,e){let o=ce;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(!r||r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new je(r.amount).multipliedBy(a||0))}return o}i(Hs,"getUsdFeeOfStep");function Ii(t,e){return t.reduce((o,n)=>o.plus(Hs(n,e)),ce)}i(Ii,"getTotalFeeInUsd");function qs(t){let e=ce,o=new je(t.price||0);return e=e.plus(new je(t.amount).multipliedBy(o)),e}i(qs,"getUsdFee");function Ud(t){return t.reduce((e,o)=>e.plus(qs(o)),ce)}i(Ud,"getTotalFeesInUsd");function zd(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(zd,"getFeesGroup");function Qd(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?Object.fromEntries(e):null}i(Qd,"checkSlippageErrors");function Pd(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?Object.fromEntries(o):null}i(Pd,"checkSlippageWarnings");function Ai(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(Ai,"getMinRequiredSlippage");function _d(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(_d,"hasProperSlippage");function Hd(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:c,excludeLiquiditySources:l,slippage:p,affiliateRef:u,affiliatePercent:d,affiliateWallets:f,destination:h,contractCall:g}=t,m=a?.reduce((S,T)=>(S[T.chain]=T.address,S),{}),C=[];return r?.forEach(S=>{C.push({blockchain:S.chain,addresses:[S.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:d??void 0,affiliateWallets:f??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:C,selectedWallets:m??{},slippage:p.toString(),contractCall:g,...h&&{destination:h},...l&&{swapperGroups:s.concat(c??[]),swappersGroupsExclude:!0},...!l&&{swapperGroups:c?.filter(S=>!s.includes(S)),swappersGroupsExclude:!1}}}i(Hd,"createQuoteRequestBody");function qd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}i(qd,"getWalletsForNewSwap");function er(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new je(e).multipliedBy(o)}i(er,"getUsdInputFrom");function kt(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1]?.to.usdPrice;if(!(!e||!o))return new je(e).multipliedBy(o)}i(kt,"getUsdOutputFrom");function zs(t,e){return new je(e).div(new je(t)).minus(1).multipliedBy(Td).toNumber()}i(zs,"getPercentageChange");function Dd(t,e){let o=er(t),n=kt(t),r=kt(e);if(!o||!n||!r)return!1;let a=zs(n.toString(),r.toString());return Ed.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}i(Dd,"isOutputAmountChangedExcessively");function Gd(t,e,o){let n=t.validationStatus,r=No({filter:"required",quote:t});return e.sort((s,c)=>r.indexOf(s.chain)-r.indexOf(c.chain)).flatMap(s=>Ad(s,n)||[]).filter(s=>!s.ok).map(s=>{let c=s.asset.symbol,l=D(new je(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=D(new je(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=Tt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=Tt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=Tt.t(" for input and network fee")),Tt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:p,symbol:c,reason:u,currentAmount:l,blockchain:ht(s.asset.blockchain,o)}})})}i(Gd,"generateBalanceWarnings");function or(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==tr.NetworkChanged}i(or,"isNetworkStatusInWarningState");function Vd(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,"")),or(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let p=(e?GT(t,e):null)?.walletType,u=p?o?.(p)?.name:null;switch(e?.networkStatus){case tr.WaitingForConnectingWallet:r=u?Tt.t("Connect {wallet}",{wallet:u}):r;break;case tr.WaitingForQueue:r=r||Tt.t("Waiting for other running tasks to be finished");break;case tr.WaitingForNetworkChange:r=r||Tt.t("Waiting for changing wallet network");break;case tr.NetworkChangeFailed:r=r||Tt.t("The network switch could not be completed. Please try again, or switch the network manually in your wallet.");break;default:r=r||"";break}}a=a||"",r=r||"";let c=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:c}}}i(Vd,"getSwapMessages");function Kd(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(Kd,"getLastConvertedTokenInFailedSwap");function jd(t){return t.status==="failed"}i(jd,"shouldRetrySwap");function Xd(t,e,o,n,r,a){if(!n||t)return!0;let s=No({filter:"all",quote:n}),c=No({filter:"required",quote:n}),l=s.every(d=>r.some(f=>f.chain===d)),p=c.every(d=>r.some(f=>f.chain===d)),u=o&&a?Zo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}i(Xd,"isConfirmSwapDisabled");function Yd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Yd,"isTokensIdentical");var Ni=i((t,e)=>t?.usdPrice?new rt(e||ce).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),Rd=i(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new rt(0),outputUsdValue:new rt(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=ce,a=o.inputUsdValue;return On(o.inputAmount)?(e&&(n=e?.outputAmount?new rt(e?.outputAmount):null,a=er(e)??ce,r=kt(e)??ce),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new rt(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new rt(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new rt(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:Ni(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 rt(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),sanitizeInputAmount:e=>{let o=hu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=e;ei(e)||(o=lu(o),o=cu(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new rt(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Ni(n.fromToken,o)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Ni(n??null,s),outputUsdValue:new rt(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?Ni(e.toToken,e.outputAmount?.toString()||""):new rt(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new rt(0),inputUsdValue:new rt(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new rt(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})}),"initializer"),em=Zd()(Jd(Rd)),tm=Zd()(Jd(Rd)),VT=so(em),KT=so(tm);function z(){let{swapMode:t}=Ct();return so(t==="refuel"?tm:em)}i(z,"useQuoteStore");var om=i((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&Ce.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&&Ce.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})},"subscribeCallback"),nm=VT.subscribe(om),rm=KT.subscribe(om);function im(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=k().config,d=k().fetchStatus,f=k().blockchains(),{findToken:h}=k(),{setAffiliateRef:g,setAffiliatePercent:m,setAffiliateWallets:C}=k(),y=u?.from?.tokens,S=u?.from?.blockchains,T=u?.to?.tokens,w=u?.to?.blockchains,v=Bi(void 0),N=Bi(void 0),B=Bi(void 0),b=Bi(void 0);fn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),fn(()=>{if(d==="success"){r();let E=f.find(I=>I.name===u?.from?.blockchain),x=u?.from?.token,M=x&&h(x);(E||!E&&B.current)&&n(E??null),M?a({token:M,meta:{blockchains:f}}):!M&&v.current&&a({token:null}),B.current=u?.from?.blockchain,v.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,d]),fn(()=>{ds(s,y)&&a({token:null}),ms(l,S)&&n(null)},[y,S]),fn(()=>{ds(c,T)&&a({token:null}),ms(p,w)&&o(null)},[T,w]),fn(()=>{if(d==="success"){r();let E=f.find(I=>I.name===u?.to?.blockchain),x=u?.to?.token,M=x&&h(x);(E||!E&&b.current)&&o(E??null),M?e({token:M,meta:{blockchains:f}}):!M&&N.current&&e({token:null}),b.current=u?.to?.blockchain,N.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),fn(()=>{g(u?.affiliate?.ref??null),m(u?.affiliate?.percent??null),C(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(im,"useSyncStoresWithConfig");import{useEffect as Ks,useRef as jT}from"react";import{useInRouterContext as XT,useLocation as YT,useSearchParams as ZT}from"react-router-dom";function Gs(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}i(Gs,"convertTokenSearchParamToAsset");function Vs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Vs,"tokenToSearchParam");function Xs(){let t=YT(),[e,o]=ZT(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:f}=z()(),h=k().fetchStatus,g=k().blockchains(),m=XT(),{updateIframe:C,updateCampaignMode:y}=k(),S=k().isInCampaignMode(),T=jT(),{findToken:w}=k(),v=i(()=>{let B={};for(let[L,Y]of e.entries())L.startsWith("utm_")&&(B[L]=Y);let b=e.get("fromAmount"),E=e.get("fromBlockchain"),x=e.get("fromToken"),M=e.get("toBlockchain"),I=e.get("toToken"),_=e.get("autoConnect"),U=e.get("clientUrl"),q=e.get("liquiditySources"),j=e.get("blockchain");return{fromAmount:b,fromBlockchain:E,fromToken:x,toBlockchain:M,toToken:I,autoConnect:_,clientUrl:U,liquiditySources:q,utmQueryParams:B,blockchain:j}},"getUrlSearchParams"),N=i(B=>{for(let b in B)B[b]||delete B[b];o(B,{replace:!0})},"updateUrlSearchParams");Ks(()=>{let{autoConnect:B,clientUrl:b,utmQueryParams:E,blockchain:x}=v();m&&h==="success"&&N({fromBlockchain:n?.name,fromToken:Vs(a),toBlockchain:r?.name,toToken:Vs(s),fromAmount:c,autoConnect:B??void 0,clientUrl:b??void 0,blockchain:x??void 0,liquiditySources:S?T.current:void 0,...E})},[t.pathname,c,n,a,r,s,S,h]),Ks(()=>{if(!m)return;let B=v();if(!T.current&&B.liquiditySources&&(T.current=B.liquiditySources),B.fromAmount&&f(B.fromAmount),h==="success"){let b=g.find(U=>U.name===B.fromBlockchain),E=B.fromToken&&b&&Gs(B.fromToken,b),x=E?w(E):void 0,M=g.find(U=>U.name===B.toBlockchain),I=B.toToken&&M&&Gs(B.toToken,M),_=I?w(I):void 0;b&&(l(b),x&&u({token:x,meta:{blockchains:g}})),M&&(p(M),_&&d({token:_,meta:{blockchains:g}}))}},[h]),Ks(()=>{let{clientUrl:B,liquiditySources:b}=v();C("clientUrl",B||void 0),y("liquiditySources",b?.split(",")??void 0)},[])}i(Xs,"useSyncUrlAndStore");import{i18n as Cn}from"@lingui/core";import{Alert as Sv,Button as Cv,darkTheme as kv,Divider as El,DoneIcon as Tv,styled as wv,TextField as vv,Typography as bv}from"@rango-dev/ui";import Ye,{useState as xv}from"react";import{useNavigate as Ev,useSearchParams as Iv}from"react-router-dom";import{ChevronRightIcon as JT,Divider as pm,Image as RT,Typography as um}from"@rango-dev/ui";import xt from"react";import{darkTheme as am,styled as Ys}from"@rango-dev/ui";var sm=Ys("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${am} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${am} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),lm=Ys("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),cm=Ys("div",{display:"flex"});function Zs(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return xt.createElement(lm,null,xt.createElement(um,{size:"large",variant:"label"},n),xt.createElement(pm,{size:10}),xt.createElement(sm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},xt.createElement(cm,null,r&&xt.createElement(xt.Fragment,null,xt.createElement(RT,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),xt.createElement(pm,{size:4,direction:"horizontal"})),xt.createElement(um,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),xt.createElement(JT,{size:12,color:"black"})))}i(Zs,"BlockchainSelectorButton");import{i18n as ol}from"@lingui/core";import{Button as nw,Divider as gm,MessageBox as rw}from"@rango-dev/ui";import co,{useEffect as hm,useState as nl}from"react";import{i18n as Wi}from"@lingui/core";import{Divider as _o,ExternalLinkIcon as tw,Image as ow,Typography as hn}from"@rango-dev/ui";import ke from"react";var dm="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function mm(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(mm,"generateExplorerLink");import{Button as ew,darkTheme as gn,styled as Js}from"@rango-dev/ui";var Rs=Js("a",{textDecoration:"none",color:"$colors$neutral700",[`.${gn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${gn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${gn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${gn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),fm=Js("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${gn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${gn} &`]:{color:"$colors$neutral900"}}}),el=Js(ew,{minHeight:"$40"});function tl(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,c=mm(n.address,s),l=i(()=>window.open(dm,"_blank"),"onClickLearnMore");return ke.createElement(R,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:r,container:W()},ke.createElement(fm,null,ke.createElement(ow,{src:n.image===""?Xr:n.image,size:45,type:"circular"}),ke.createElement(_o,{size:4}),ke.createElement(hn,{variant:"title",size:"medium"},n.symbol),ke.createElement(hn,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),ke.createElement(_o,{size:4}),ke.createElement(hn,{variant:"body",size:"medium"},c?ke.createElement(Rs,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,ke.createElement(tw,{size:12,color:"gray"})):ke.createElement(Rs,null,n.address)),ke.createElement(_o,{size:4}),n.coinSource&&ke.createElement(hn,{className:"_coin-source",variant:"body",size:"xsmall"},Wi.t("via")," ",ke.createElement(hn,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),ke.createElement(_o,{size:"32"}),ke.createElement(hn,{size:"medium",variant:"body",className:"_custom-token-description"},Wi.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."))),ke.createElement(_o,{size:40}),ke.createElement(_o,{size:10}),ke.createElement(el,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Wi.t("Import Anyway")),ke.createElement(_o,{size:10}),ke.createElement(el,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},Wi.t("Learn More")))}i(tl,"CustomTokenModal");function nr(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=k(),[d,f]=nl(!1),[h,g]=nl(!1),[m,C]=nl(!1),y=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),S=i(()=>{n?.type!=="network-error"&&s?.(),f(!1)},"closeErrorModal"),T=i(()=>{C(!0),S()},"handleErrorModalButtonClick"),w=i(()=>{m&&n?.type==="network-error"&&(C(!1),y()),l()},"handleExit"),v=i(()=>{e&&(u(e),c())},"handleSubmit");return hm(()=>{n&&f(!0)},[n]),hm(()=>{o&&e&&g(!0)},[o,e]),co.createElement(co.Fragment,null,co.createElement(R,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:S,onExit:w,container:W()},co.createElement(rw,{title:n?.title??"",type:"error",description:n?.message||ol.t("Failed Network, Please retry.")},co.createElement(gm,{size:40}),co.createElement(gm,{size:10}),co.createElement(nw,{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"?ol.t("Retry"):ol.t("Add another custom token")))),o&&e&&co.createElement(tl,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}i(nr,"ImportCustomToken");import{useManager as dv}from"@rango-dev/queue-manager-react";import{BottomLogo as mv,Divider as jm,Header as fv}from"@rango-dev/ui";import We,{useEffect as Ui,useLayoutEffect as gv,useRef as Xm,useState as Ym}from"react";import{useRef as iw}from"react";function rr(){return window.self!==window.top}i(rr,"isAppLoadedIntoIframe");function rl(){let t=iw(null),{iframe:e}=k(),o=rr()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(c=>{for(let l of c)n({type:"widget_height",data:{height:l.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(rl,"useIframe");import{useNavigate as aw}from"react-router-dom";function Xe(){let t=aw();return()=>t(-1)}i(Xe,"useNavigateBack");import{useLayoutEffect as sw,useState as ir}from"react";var ym=480,Sm=768,Cm=1024,km=1200,lw=i(()=>{let[t,e]=ir(!1),[o,n]=ir(!1),[r,a]=ir(!1),[s,c]=ir(!1),[l,p]=ir(!1),u=i(()=>{e(window.innerWidth<=ym),n(window.innerWidth>ym&&window.innerWidth<=Sm),a(window.innerWidth>Sm&&window.innerWidth<=Cm),c(window.innerWidth>Cm&&window.innerWidth<=km),p(window.innerWidth>km)},"handleResize");return sw(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),yn=lw;import{createTheme as ul,darkTheme as Tw,lightTheme as ww}from"@rango-dev/ui";import{useEffect as vw,useState as bw}from"react";import{theme as Cw,darkColors as kw}from"@rango-dev/ui";import cl from"react";var Mi=16,Li=255,Tm=.11;function cw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(cw,"expandShortHexColor");function pw(t,e){return t.padStart(e,"0")}i(pw,"pad");function il(t){let e=Math.min(Math.max(Math.round(t),0),Li);return pw(e.toString(Mi),2)}i(il,"intToHex");function uw(t){return`#${il(t.red)}${il(t.green)}${il(t.blue)}`}i(uw,"rgbToHex");function dw(t){let e=parseInt(t.slice(1,3),Mi),o=parseInt(t.slice(3,5),Mi),n=parseInt(t.slice(5,7),Mi);return{red:e,green:o,blue:n}}i(dw,"hexToRGB");function mw(t,e){let o=1-Tm*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(mw,"generateShade");function fw(t,e){let o=Tm*e;return{red:t.red+(Li-t.red)*o,green:t.green+(Li-t.green)*o,blue:t.blue+(Li-t.blue)*o}}i(fw,"generateTint");function gw(t){return wm(t,mw)}i(gw,"calculateShades");function hw(t){return wm(t,fw)}i(hw,"calculateTints");function wm(t,e){let o=dw(t),n=[];for(let r=1;r<9;r++)n.push(uw(e(o,r)));return n}i(wm,"calculateColors");function al(t,e,o){let a=hw(t).reverse().concat(t),s=gw(t),c=a.concat(s),l={},p=c.length;for(let u=0;u<p;u++){let d=100+(o?p-1-u:u)*50,f=c[u];f&&(l[`${e}${d}`]=f)}return l}i(al,"createTintsAndShades");function sl(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)&&!fu(r)){let l=cw(a);Object.assign(n,al(l,r,s))}}return{...n,...e}}i(sl,"expandToGenerateThemeColors");var vm=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),yw=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=vm(o%52)+e;return vm(o%52)+e},"toAlphabeticName"),Sw=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),ll=i(t=>yw(Sw(5381,JSON.stringify(t))>>>0),"toHash");function pl(t){let e=Cw.colors,o={...e,...kw},n,r;if(t?.light){let s={colors:sl(e,t.light)};n={id:`${us}-light-${ll(s)}`,tokens:s}}if(t?.dark){let s={colors:sl(o,t.dark,{reverseNeutralRange:!0})};r={id:`${us}-dark-${ll(s)}`,tokens:s}}return{light:n,dark:r}}i(pl,"customizedThemeTokens");function bm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>cl.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(cl.cloneElement(a,{key:s})),r<t.length-1){let c=`divider-${r}`;o.push(cl.cloneElement(e,{key:c}))}}),o}i(bm,"joinList");function xm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(xm,"doesWindowPreferDarkColorScheme");function po(t){let{colors:e,fontFamily:o=Jp,borderRadius:n=Au,secondaryBorderRadius:r=Nu}=t,[a,s]=bw(xm()?"dark":"light"),{theme:c}=k(),{dark:l,light:p}=pl(e),u=ul({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),d=[u.className,ww.className],f=[u.className,Tw.className];if(p){let g=ul(p.id,p.tokens);d.push(g.className)}if(l){let g=ul(l.id,l.tokens);f.push(g.className)}return vw(()=>{let g=i(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return xm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:i(()=>{let g=d.join(" "),m=f.join(" ");return c==="auto"?a==="dark"?m:g:c==="dark"?m:g},"getActiveTheme"),mode:c==="auto"?a:c}}i(po,"useTheme");var wt=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 Em}from"@lingui/core";import{Alert as xw,Button as Ew}from"@rango-dev/ui";import Im from"react";function dl(t){return Im.createElement(xw,{action:Im.createElement(Ew,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},Em.t("Activate this tab")),type:"warning",variant:"alarm",title:Em.t("Another tab is open and handles transactions.")})}i(dl,"ActivateTabAlert");import{i18n as ml}from"@lingui/core";import{Button as Iw,Divider as Aw,MessageBox as Nw}from"@rango-dev/ui";import Pi from"react";function fl(t){let{open:e,onClose:o,onConfirm:n}=t;return Pi.createElement(R,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},Pi.createElement(Nw,{title:ml.t("Activate current tab"),type:"warning",description:ml.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.")},Pi.createElement(Aw,{size:20}),Pi.createElement(Iw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},ml.t("Confirm"))))}i(fl,"ActivateTabModal");import{ChevronLeftIcon as Mw}from"@rango-dev/ui";import _m from"react";import{css as Bw,darkTheme as Am,IconButton as Ww,styled as Do}from"@rango-dev/ui";var Dt=Do(Ww,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Am} &`]:{backgroundColor:"$neutral"}}}),Nm=Do("div",{position:"absolute",background:"$secondary500",[`.${Am} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),uo=Do("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Bm=Do("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"}}}}),Wm=Do("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Mm=Do("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Lm=Bw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),Pm=Do("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function gl(t){return _m.createElement(Dt,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},_m.createElement(Mw,{color:"black",size:16}))}i(gl,"BackButton");import{i18n as Lw}from"@lingui/core";import{Button as Pw,Typography as _w}from"@rango-dev/ui";import hl from"react";function yl(t){return hl.createElement(uo,null,hl.createElement(Pw,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},hl.createElement(_w,{variant:"label",size:"medium",color:"error500"},Lw.t("Cancel"))))}i(yl,"CancelButton");import{i18n as Dw}from"@lingui/core";import{Image as $w,Tooltip as Fw,WalletIcon as Ow}from"@rango-dev/ui";import $o from"react";function Sl(t){let{list:e}=bt(),o=e.filter(r=>r.state==="connected"),n=o.length?$o.createElement("div",{className:Lm()},o.map(r=>$o.createElement(Pm,{key:r.title},$o.createElement($w,{src:r.image,size:14})))):Dw.t("Connect Wallet");return $o.createElement(Fw,{container:t.container,side:"bottom",content:n},$o.createElement(Dt,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&$o.createElement(Nm,null),$o.createElement(Ow,{size:18,color:"black"})))}i(Sl,"WalletButton");import{i18n as Di}from"@lingui/core";import{NotificationsIcon as tv,Popover as ov,SettingsIcon as nv,Tooltip as $i,TransactionIcon as rv}from"@rango-dev/ui";import $e from"react";import{Notifications as Hw}from"@rango-dev/ui";import qw from"react";import{useNavigate as Gw}from"react-router-dom";import{create as Uw}from"zustand";import{persist as zw,subscribeWithSelector as Qw}from"zustand/middleware";var Be=so(Uw()(zw(Qw((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1];if(!r||!a)return;let s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},c=e().notifications.filter(l=>l.requestId!==n.requestId);t(()=>({notifications:[...c,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(l=>l.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function Cl(){let t=Gw(),{getNotifications:e,clearNotifications:o}=Be(),n=e(),r=k().blockchains(),{findToken:a}=k();return qw.createElement(Hw,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Hp(c,r),getTokenImage:c=>a(c)?.image,onClickItem:i(c=>{t(`${O.swaps}/${c}`)},"onClickItem"),onClearAll:o})}i(Cl,"NotificationContent");import{useManager as Vw}from"@rango-dev/queue-manager-react";import{InProgressIcon as Kw}from"@rango-dev/ui";import Dm from"react";var jw=i(()=>{let{manager:t}=Vw();return wt(t).map(({swap:o})=>o).find(o=>o.status==="running")?Dm.createElement(Mm,{id:"widget-header-history-badge-container"},Dm.createElement(Kw,{color:"info",size:6})):null},"InProgressTransactionBadge"),$m=jw;import{EventSeverity as Xw}from"@rango-dev/queue-manager-rango-preset";import{Typography as Yw}from"@rango-dev/ui";import Fm from"react";function Om(){let{getNotifications:t}=Be(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===Xw.WARNING);return o?Fm.createElement(Bm,{isSever:n},Fm.createElement(Yw,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}i(Om,"NotificationsBadge");import{RefreshProgressButton as Zw}from"@rango-dev/ui";import kl,{useEffect as Jw,useState as Um}from"react";var Rw=1e3,zm=60,ev=100;function _i({onClick:t}){let[e,o]=Um(0),[n,r]=Um(!1),a=i(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");Jw(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===zm&&c()},Rw):s(l),document.addEventListener("visibilitychange",()=>a(l)),()=>{document.removeEventListener("visibilitychange",()=>a(l)),l&&clearInterval(l)}},[e,t]);let s=i(l=>{l&&clearInterval(l),o(0)},"clearTimeout"),c=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return kl.createElement(Dt,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},kl.createElement(Wm,{onTransitionEnd:()=>r(!1),isRefetched:n},kl.createElement(Zw,{size:22,color:t?"black":"gray",progress:e/zm*ev})))}i(_i,"RefreshButton");function Fo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=k(),c=nt("notification",s)||r.includes("notifications");return $e.createElement($e.Fragment,null,!r.includes("refresh")&&$e.createElement($i,{container:a||W(),side:"top",content:Di.t("Refresh")},$e.createElement(_i,{onClick:e})),!c&&$e.createElement(ov,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:$e.createElement(Cl,null)},$e.createElement("div",null,$e.createElement($i,{container:W(),side:"top",content:Di.t("Notifications")},$e.createElement(Dt,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},$e.createElement(tv,{size:18,color:"black"}),$e.createElement(Om,null))))),!r.includes("settings")&&$e.createElement($i,{container:W(),side:"top",content:Di.t("Settings")},$e.createElement(Dt,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},$e.createElement(nv,{size:18,color:"black"}))),!r.includes("history")&&$e.createElement($i,{container:W(),side:"top",content:Di.t("History")},$e.createElement(Dt,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},$e.createElement(rv,{size:18,color:"black"}),$e.createElement($m,null))))}i(Fo,"HeaderButtons");import{i18n as Tl}from"@lingui/core";import{Divider as Hm,MessageBox as sv,RefreshIcon as lv}from"@rango-dev/ui";import Sn from"react";import{Button as iv,styled as av}from"@rango-dev/ui";var Qm=av(iv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function wl(t){let{open:e,onClose:o}=t;return Sn.createElement(R,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},Sn.createElement(sv,{title:Tl.t("Something went wrong"),type:"error",description:Tl.t("Something went wrong. Please refresh the app.")},Sn.createElement(Hm,{size:30}),Sn.createElement(Qm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},Sn.createElement(lv,{size:20,color:"primary"}),Sn.createElement(Hm,{size:4,direction:"horizontal"}),Tl.t("Refresh"))))}i(wl,"RefreshModal");function vl(t){let e=t.target;if(e){let o=e.scrollTop,n=W();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(vl,"onScrollContentAttachStatusToContainer");import{css as pv,styled as Fi}from"@rango-dev/ui";var Oi=pv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),qm=Fi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:700},fixed:{minHeight:425,maxHeight:700,height:700}},showBanner:{true:{overflow:"visible"}}}}),Gm=Fi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Vm=Fi("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"}}}),Km=Fi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function ie(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=rl(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=k(),[u,d]=Ym(!1),{config:{features:f,theme:h}}=k(),{watermark:g,setShowCompactTokenSelector:m}=oe(),C=g==="FULL",{activeTheme:y}=po(h||{}),[S,T]=Ym(!1),w=nt("connectWalletButton",f),{isActiveTab:v,tabManagerInitiated:N,showActivateTabModal:B,setShowActivateTabModal:b,activateCurrentTab:E}=oe(),x=Xe(),{manager:M}=dv(),{isTablet:I,isMobile:_}=yn(),q=wt(M).map(({swap:le})=>le).some(le=>le.status==="running"),j=i(()=>E(Wo.forceClaim,q),"onActivateTab"),L=i(()=>{r.onWallet?.()},"onConnectWallet"),Y=typeof r.hasBackButton>"u"||r.hasBackButton,ee=Xm(null),Z=Xm(null);return Ui(()=>{let le=(p?.swapBoxBanner?.routes?.length??0)===0,ue=!!p?.swapBoxBanner?.routes?.some(we=>location.pathname.endsWith(we));T(!!p?.swapBoxBanner&&(le||ue))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),Ui(()=>(rr()&&Z.current&&e(Z.current),()=>{o()}),[]),Ui(()=>(ee.current?.addEventListener("scroll",vl),()=>{ee.current?.removeEventListener("scroll",vl)}),[]),Ui(()=>{d(c==="failed")},[c]),gv(()=>{let le=s==="auto"||!Z.current||rr(),ue=_||I,we=i(()=>{le||(ue?Z.current.style.height=`${window.innerHeight-Z.current.offsetTop}px`:Z.current.style.height=`${700}px`,m(parseFloat(Z.current.style.height)<640))},"handler");return we(),window.addEventListener("resize",we),()=>window.removeEventListener("resize",we)},[s,_,I]),We.createElement(qm,{height:s,id:ot.SWAP_BOX_ID,className:`${y()} ${Oi()}`,ref:Z,showBanner:S},We.createElement(fv,{prefix:Y?We.createElement(gl,{onClick:()=>{x(),r.onBack?.()}}):null,title:r.title,suffix:We.createElement(We.Fragment,null,r.suffix,r.onWallet&&!w&&We.createElement(Sl,{container:W(),onClick:L,isConnected:!!l?.length}),r.onCancel&&We.createElement(yl,{onClick:r.onCancel}))}),We.createElement(Gm,{ref:ee},n),We.createElement(fl,{open:B,onClose:()=>b(!1),onConfirm:j}),We.createElement(Vm,null,We.createElement("div",{className:"footer__content"},N&&!v&&We.createElement("div",{className:"footer__alert"},We.createElement(dl,{onActivateTab:j}),We.createElement(jm,{size:10})),a),We.createElement(jm,{size:12}),We.createElement("div",{className:`footer__logo ${C?"logo__show":"logo__hidden"}`},We.createElement(mv,null))),S&&We.createElement(Km,null,p?.swapBoxBanner?.element),We.createElement(wl,{open:u,onClose:()=>d(!1)}))}i(ie,"Layout");import{styled as hv}from"@rango-dev/ui";var Zm="$20 $20 $10 $20",bl=hv("div",{padding:Zm,overflowY:"auto",flexGrow:1});import{styled as yv}from"@rango-dev/ui";var se=yv("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 mo}from"@lingui/core";import{useState as xl}from"react";function Jm(){let[t,e]=xl(!1),[o,n]=xl(null),[r,a]=xl(null),{findToken:s}=k(),c=k().customTokens(),l=i(()=>{a(null),e(!1),n(null)},"resetState");function p(d,f){switch(d){case"duplicated":return{type:d,title:mo.t("Duplicate Token"),message:mo.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:mo.t("Token Already Exists"),message:mo.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:d,title:mo.t("Token Not Found"),message:mo.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:f}})};case"network-error":return{type:d,title:mo.t("Network error"),message:mo.t("An error occurred while retrieving token data.")}}}return i(p,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:d,tokenAddress:f})=>{e(!0);try{if(c.some(y=>y.address?.toLowerCase()===f.toLowerCase())){let y=p("duplicated");n(y);return}let g=await pt().getCustomToken({blockchain:d,address:f});if(!g||!g.token||g.error){let y=p("not-found",d);n(y);return}let m=g.token;if(s({blockchain:m.blockchain,address:m.address,symbol:m.symbol})){let y=p("token-exist");n(y);return}return a({...m,warning:!0})}catch(h){if(h.code==="ERR_BAD_REQUEST"){let g=p("not-found",d);n(g);return}n(p("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:l}}i(Jm,"useFetchCustomToken");var Av=wv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${kv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Rm(){let t=Ev(),[e]=Iv(),o=Xe(),n=k().blockchains(),r=e.get("blockchain")||"",a=Eo(r,n),[s,c]=xv(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:f}=Jm(),h=!!a&&Zo(a,s),g=!a||!s||!h,m=i(()=>{a&&l({blockchain:r,tokenAddress:s})},"getCustomToken");return Ye.createElement(ie,{header:{title:Cn.t("Add Custom Token")}},Ye.createElement(se,null,Ye.createElement(Av,null,Ye.createElement("div",null,Ye.createElement(Zs,{onClick:()=>t(O.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:Cn.t("Select chain"),placeholder:Cn.t("Select chain")}),Ye.createElement(El,{size:"24"}),Ye.createElement(bv,{size:"large",variant:"label"},Cn.t("Enter Address")),Ye.createElement(El,{size:10}),Ye.createElement(vv,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:Cn.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ye.createElement(Tv,{color:"success",size:12}),onChange:C=>c(C.target.value)}),!h&&!!s&&Ye.createElement(Ye.Fragment,null,Ye.createElement(El,{size:4}),Ye.createElement(Sv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ye.createElement(Cv,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:m},Cn.t("Import"))),Ye.createElement(nr,{token:p,blockchain:a??void 0,address:s,error:d??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{d?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:f,onExitImportModal:f})))}i(Rm,"AddCustomTokenPage");import{i18n as nc}from"@lingui/core";import{useManager as mx}from"@rango-dev/queue-manager-react";import{Alert as fx,Button as gx,css as ic,Divider as rc,IconButton as Hg,styled as hx,Typography as yx,WalletIcon as Sx}from"@rango-dev/ui";import Oe,{useEffect as da,useLayoutEffect as Cx,useRef as kx,useState as Cr}from"react";import{useNavigate as Tx}from"react-router-dom";import{i18n as Oo}from"@lingui/core";import{Alert as eb,BalanceErrors as tb,Button as Ef,ChevronLeftIcon as ob,Divider as Pl,MessageBox as nb,Typography as _l}from"@rango-dev/ui";import re,{useCallback as rb,useEffect as If,useMemo as ib,useState as wn}from"react";import{useNavigate as ab}from"react-router-dom";import{i18n as Bl}from"@lingui/core";import{Alert as Lv,ChevronDownIcon as Pv,CloseIcon as _v,Divider as sf,IconButton as lf,PasteIcon as Dv,Typography as $v,WalletIcon as Fv}from"@rango-dev/ui";import Fe,{useEffect as Ov,useRef as Uv}from"react";import qi,{useRef as Wv}from"react";import*as kn from"@radix-ui/react-collapsible";import{keyframes as ef,styled as zi}from"@rango-dev/ui";var Il=300,Nv=ef({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Bv=ef({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),tf=zi(kn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Al=zi(kn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Qi=zi(kn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Nv} ${Il}ms ease-out`},false:{animation:`${Bv} ${Il}ms ease-out`}}}}),Hi=zi("div",{transition:`all ${Il}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Gi(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Wv(null);return qi.createElement(tf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&qi.createElement(Al,{className:"collapsible_trigger",onClick:a},s),qi.createElement(Qi,{className:"collapsible_content",open:e},r),c==="bottom"&&qi.createElement(Al,{className:"collapsible_trigger",onClick:a},s))}i(Gi,"CustomCollapsible");import{darkTheme as of,styled as Nl,TextField as Mv}from"@rango-dev/ui";var nf=Nl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),rf=Nl(Mv,{backgroundColor:"$neutral100"}),af=Nl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${of} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${of} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function cf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=z()(),{config:s}=k(),c=k().blockchains(),l=Kr(e.name,c),p=Uv(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!r&&e&&!Zo(e,r),g=i(()=>{a("")},"handleClear"),m=i(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let S=await navigator.clipboard.readText();a(S),p?.current?.focus()}},"handlePaste"),C=i(()=>r?Fe.createElement(lf,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Fe.createElement(_v,{size:12,color:"gray"})):d?null:Fe.createElement(lf,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},Fe.createElement(Dv,{size:16})),"renderSuffix");return Ov(()=>{!!u&&r===null&&(a(u),o(!0))},[u]),Fe.createElement(nf,null,Fe.createElement(Gi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Fe.createElement(af,{id:"widget-custom-destination-collapsible-btn"},Fe.createElement("div",{className:"button__content"},Fe.createElement(Fv,{size:18,color:"info"}),Fe.createElement(sf,{size:4,direction:"horizontal"}),Fe.createElement($v,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Bl.t("Send to a different address"))),Fe.createElement(Hi,{orientation:n?"up":"down"},Fe.createElement(Pv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Fe.createElement(rf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Bl.t("Enter {blockchainName} address",{blockchainName:l}),value:r||"",suffix:C(),onChange:y=>{let S=y.target.value;a(S)}})),h&&Fe.createElement(Fe.Fragment,null,Fe.createElement(sf,{size:4}),Fe.createElement(Lv,{variant:"alarm",type:"error",title:Bl.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(cf,"CustomDestination");import{css as zv,IconButton as Qv,SelectableWalletButton as Hv,styled as fo}from"@rango-dev/ui";var pf=fo("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),uf=fo("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),df=fo(Hv,{justifyContent:"center"}),mf=fo("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),ff=fo(Qv,{position:"absolute",left:"$20"}),gf=fo("div",{paddingTop:"$20"}),hf=zv({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),yf=fo("div",{display:"flex"}),Sf=fo("div",{overflow:"visible",width:"100%"});import{i18n as Ml}from"@lingui/core";import{warn as jv}from"@rango-dev/logging-core";import{Divider as Xv,makeInfo as Yv,SelectableWallet as Zv,Typography as bf,WalletState as Vi}from"@rango-dev/ui";import it,{useEffect as xf,useState as lr}from"react";import{Image as Vv,MessageBox as Kv}from"@rango-dev/ui";import sr from"react";import{keyframes as qv,styled as Wl}from"@rango-dev/ui";var Cf=Wl("div",{position:"relative"}),Gv=qv({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),kf=Wl("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Gv} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Tf=Wl("div",{"& img":{borderRadius:"50%"}});import{i18n as Tn}from"@lingui/core";function wf(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(wf,"generateMessageByStatus");function vf(t){let{status:e,displayName:o,image:n}=t,r=wf(e,o),a=e=="in-progress";return sr.createElement(Kv,{type:r.type,title:r.title,description:r.description,icon:a?sr.createElement(Cf,null,sr.createElement(Tf,null,sr.createElement(Vv,{src:n,size:45})),sr.createElement(kf,null)):void 0})}i(vf,"ExperimentalChainStatus");var Jv=7,Rv=3e3;function Ll(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,c=oe.use.isActiveTab(),{checkHasDeepLink:l,getWalletLink:p}=sn(),{blockchains:u,connectedWallets:d}=k(),[f,h]=lr(),[g,m]=lr(null),[C,y]=lr(!1),[S,T]=lr(null),{suggestAndConnect:w}=Ki(),{list:v}=bt({chain:e}),[N,B]=lr(v),b=v.length,E=a&&b-a>0,x=i(async I=>{y(!1),T("in-progress");try{await w(I.walletType,I.chain),T("completed")}catch{T("rejected")}},"addExperimentalChain");xf(()=>{B(I=>{let _=v.findIndex(U=>n(U.type,e));return E&&_>1?[v[_]].concat(v.filter((U,q)=>q!==_)):I.map(U=>v.find(q=>q.type===U.type)??U)})},[JSON.stringify(v)]);let M=document.getElementById(ot.SWAP_BOX_ID);return xf(()=>{let I=null;return(S==="completed"||S==="rejected")&&(I=setTimeout(()=>T(null),Rv)),()=>{I&&clearTimeout(I)}},[S]),it.createElement(it.Fragment,null,N.slice(0,a).map(I=>{let _=wu({connectedWallets:d,walletType:I.type,chain:e}),U=I.state===Vi.CONNECTED,q=_?ao(_,Jv):"",j=U&&!!I.needsNamespace&&!q,L=ri(u(),e),Y=!d.find(qe=>qe.walletType===I.type&&qe.chain===e),ee=L&&Y&&I.state===Vi.CONNECTED,Z=i(async()=>{I.state===Vi.DISCONNECTED||j?h(I):ee?(m({walletType:I.type,chain:e,address:_??""}),y(!0)):r({walletType:I.type,chain:e,address:_??""})},"onSelectableWalletClick"),le=Yv(I.state,{hasDeepLink:l(I.type)}),ue=i(()=>ee?Ml.t({id:"Add {chain} chain",values:{chain:e}}):j?Ml.t("Chain not connected"):q||le.description,"getWalletDescription"),we=i(()=>I.state===Vi.CONNECTED?j?"neutral600":"neutral700":le.color,"getWalletDescriptionColor"),ve=g?.chain?Kr(g.chain,u()):void 0;return it.createElement(it.Fragment,{key:`${I.title}_${ve}`},!!g&&it.createElement(R,{id:"widget-wallets-list-watermarked-modal",open:!!g&&C,container:M,onClose:()=>{m(null)}},it.createElement(Fs,{id:"widget-wallets-list-experimental-chain-container",displayName:ve,onConfirm:()=>{x(g)}})),S&&it.createElement(R,{id:"widget-wallets-list-experimental-chain-watermarked-modal",open:!!S,onClose:T.bind(null,null),container:M},it.createElement(vf,{status:S,displayName:ve,image:I.image}),it.createElement(Xv,{direction:"vertical",size:32})),it.createElement(Zv,{hasDeepLink:l(I.type),key:I.type,id:"widget-wallets-list-selectable-wallet-btn",description:ue(),descriptionColor:we(),onClick:Z,selected:n(I.type,e),disabled:!c,...I,link:p(I.type)}))}),it.createElement(Rn,{id:"widget-wallets-list-stateful-connect-modal",wallet:f,options:{defaultSelectedChains:o||[e]},onClose:()=>{h(void 0)},onConnect:()=>{t.onConnect&&(f?.type?t.onConnect(f.type):jv(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),E&&it.createElement(df,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},it.createElement(bf,{variant:"label",size:"medium"},Ml.t("Show more wallets"),it.createElement(bf,{variant:"label",size:"medium",color:"$primary"},"\xA0+",b-(a??0)))))}i(Ll,"WalletList");var sb=2;function Af(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=ab(),c=k().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:f,setCustomDestination:h}=z()(),{config:g,connectedWallets:m,setWalletsAsSelected:C}=k(),[y,S]=wn(""),[T,w]=wn([]),[v,N]=wn(""),[B,b]=wn(!!f),E=ib(()=>No({filter:"all",quote:l}),[l]),x=No({filter:"required",quote:l}),M=c.find($=>$.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),I=i($=>x.includes($),"isWalletRequiredFor"),_=rb(()=>m.filter($=>$.selected&&E.includes($.chain)),[m,E]),[U,q]=wn(_()),[j,L]=wn([]),Y=i(($,A)=>L(G=>G.concat({blockchain:$,walletType:A})),"addNextSelectedWallets"),ee=T.length>0,Z=i(($,A)=>!!U.find(G=>G.walletType===$&&G.chain===A&&G.selected&&(I(A)||!I(A)&&!f)),"isSelected"),le=i(($,A,G)=>{let ae=!1;return $.map(K=>{if(K.chain===A){let X=K.selected;return!ae&&G?(ae=!0,X=!0):G||(X=!1),{...K,selected:X}}return K})},"updateSelectableWallets"),ue=i($=>{b($),$?I(M?.name??"")||q(A=>le(A,M?.name||"",!1)):(h(""),q(A=>le(A,M?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),we=i($=>{if(y&&S(""),Z($.walletType,$.chain))return;let G=m.find(ae=>ae.walletType===$.walletType&&ae.chain===$.chain);G&&(n(),$.chain===M?.name&&B&&!I(M.name)&&(b(!1),h(null)),q(ae=>ae.filter(K=>K.chain!==$.chain).concat({...G,selected:!0})))},"onChange"),ve=i(()=>{let $=U.filter(A=>A.selected);C($),p($),d(!0),o()},"onConfirmBalance"),qe=i(async()=>{w([]),N("");let $=await r?.({selectedWallets:U.filter(G=>G.selected),customDestination:f}),A=$.warnings;A?.balance?.messages&&w(A.balance.messages),$.error&&N(kd($.error)),!$.error&&!A?.balance?.messages.length?ve():w(A?.balance?.messages??[])},"onConfirmWallets");If(()=>{q($=>{let A=[];return $.forEach(G=>{!m.some(K=>K.chain===G.chain&&K.walletType===G.walletType&&K.address===G.address)||A.push(G)}),A=A.concat(m.filter(G=>!!!A.find(K=>K.chain===G.chain)&&G.selected&&E.includes(G.chain))),A})},[m,E]),If(()=>{let $=[];j.length>0&&(j.forEach(A=>{let G=m.find(ae=>ae.chain===A.blockchain&&ae.walletType===A.walletType);G?we(G):$.push(A)}),L($))},[m,j]);let Ae=document.getElementById(ot.SWAP_BOX_ID);return re.createElement(R,{id:"widget-confirm-wallets-modal",open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!y,container:Ae,...!y&&{styles:{container:{height:"100%"}},footer:re.createElement(yf,null,re.createElement(Ef,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Xd(a,B,f,l,U,M),onClick:qe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Oo.t("Confirm")))},...y&&{styles:{container:{height:"100%",padding:"$0"}},header:re.createElement(mf,null,re.createElement(ff,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:S.bind(null,"")},re.createElement(ob,{size:16})),re.createElement(_l,{variant:"headline",size:"small"},Oo.t({id:"Your {blockchainName} wallets",values:{blockchainName:ht(y,c)}})))},anchor:"center"},re.createElement(R,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:ee,onClose:w.bind(null,[]),container:Ae},re.createElement(nb,{title:Oo.t("Insufficient account balance"),type:"error",description:re.createElement(tb,{messages:T??[]})},re.createElement(Ef,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:ve},Oo.t("Proceed anyway")))),y&&re.createElement(gf,null,re.createElement("div",{className:hf()},re.createElement(Ll,{chain:y,quoteChains:E,isSelected:Z,selectWallet:we,onShowMore:()=>S(y),onConnect:$=>{Y(y,$)}}))),!y&&re.createElement(re.Fragment,null,v&&re.createElement(re.Fragment,null,re.createElement(eb,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:Oo.t(v)}),re.createElement(Pl,{size:12})),re.createElement(Sf,null,E.map(($,A)=>{let G=c.find(Ge=>Ge.name===$),ae=`wallet-${A}`,K=A===E.length-1,X=K&&M&&g?.customDestination!==!1;return re.createElement("div",{key:ae},re.createElement(pf,null,re.createElement(_l,{variant:"title",size:"xmedium"},Oo.t({id:"Your {blockchainName} wallets",values:{blockchainName:G?.shortName}})),re.createElement(_l,{variant:"label",color:"$neutral700",size:"medium"},Oo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:G?.shortName}}))),re.createElement(Pl,{size:24}),re.createElement(uf,null,re.createElement(Ll,{chain:$,quoteChains:E,isSelected:Z,selectWallet:we,limit:sb,onShowMore:()=>S(G?.name??""),onConnect:Ge=>{Y($,Ge)}})),!K&&re.createElement(Pl,{size:32}),X&&re.createElement(cf,{blockchain:M,open:B,handleOpenChange:ue}))}))))}i(Af,"ConfirmWalletsModal");import{i18n as Ab}from"@lingui/core";import{Alert as Nb,Button as Bb,Divider as Kf,InfoIcon as Wb}from"@rango-dev/ui";import ze from"react";import{Alert as pb,Button as ub,Divider as Fl,NoRouteIcon as db,RefreshIcon as mb,Typography as _f}from"@rango-dev/ui";import ut from"react";import{i18n as Nf}from"@lingui/core";var lb=24,cb=60;function Bf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ne().genericServerError,action:{onClick:n,title:Nf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ne().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Nf.t("Reset")}},description:ne().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ne().noResultError.description}}i(Bf,"makeInfo");var Dl=(o=>(o[o.small=lb]="small",o[o.large=cb]="large",o))(Dl||{}),$l=(o=>(o.small="small",o.large="medium",o))($l||{});import{styled as ji}from"@rango-dev/ui";var Wf=ji("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Mf=ji("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Lf=ji("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Pf=ji("div",{padding:"$6 $0"});function cr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=k().getDisabledLiquiditySources(),s=k().toggleAllLiquiditySources,c=k().swappers(),l=Bf(o,a,()=>s(c,!0),e);return r&&(l.alert=null),ut.createElement(Wf,{id:"widget-no-result-container"},ut.createElement(db,{size:Dl[n],color:"gray"}),ut.createElement(Fl,{size:4}),ut.createElement(_f,{variant:"title",size:$l[n]},ne().noResultError.title),n==="large"&&ut.createElement(Fl,{size:4}),!!l.description&&ut.createElement(Mf,{size:n},ut.createElement(_f,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),ut.createElement(Fl,{size:n==="large"?"24":"4"}),!!l.alert&&ut.createElement(Lf,{size:n},ut.createElement(pb,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&ut.createElement(ub,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:ut.createElement(Pf,null,ut.createElement(mb,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(cr,"NoResult");import{i18n as ur}from"@lingui/core";import{Button as hb,Divider as yb,MessageBox as Sb,Typography as Cb,WarningIcon as kb}from"@rango-dev/ui";import Xt from"react";import{Typography as Uf}from"@rango-dev/ui";import Ul from"react";import{Button as fb,darkTheme as gb,styled as pr}from"@rango-dev/ui";var Df=pr("div",{width:"100%"}),Ol=pr("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),$f=pr("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${gb} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ff=pr("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),Of=pr(fb,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});function zf(t){let{title:e,value:o,valueColor:n}=t;return Ul.createElement($f,null,Ul.createElement(Uf,{size:"medium",variant:"label",className:"_title"},e),Ul.createElement(Uf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(zf,"QuoteErrorsModalItem");function Qf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",c=[{title:ur.t("Swapping"),value:D(r.inputUsdValue,4,4)},{title:ur.t("Gas cost"),value:D(r.totalFee,2,2)},{title:ur.t("Receiving"),value:D(r.outputUsdValue,4,4)},{title:ur.t("Price impact"),value:D(r.priceImpact,2,2),valueColor:`${s}500`}];return Xt.createElement(R,{id:"widget-high-value-loss-warning-modal",footer:Xt.createElement(hb,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Xt.createElement(kb,null),fullWidth:!0,disabled:a,onClick:n},ne().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Xt.createElement(Sb,{type:s,title:ne().highValueLossError.impactTitle,description:ne().highValueLossError.description}),Xt.createElement(Ol,null,Xt.createElement(yb,{size:"4"}),Xt.createElement(Cb,{size:"small",variant:"title"},ur.t("Details")),Xt.createElement(Ol,null,c.map((l,p)=>Xt.createElement(zf,{key:p,...l})))))}i(Qf,"HighValueLossWarningModal");import{i18n as vn}from"@lingui/core";function Hf(t,e){let o={alertType:"warning",title:"",action:null,actionButtonTitle:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=vn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=vn.t("Increase")),o;if(t){switch(t.type){case 0:{jt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ne().highValueLossError.title;break}case 4:{o.title=vn.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=ne().unknownPriceError.title;break}case 2:{o.title=vn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=vn.t("Increase");break}case 3:{o.title=vn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Hf,"makeAlerts");function qf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(qf,"getRequiredSlippage");import{i18n as bn}from"@lingui/core";import{Button as Tb,Divider as zl,MessageBox as wb,WarningIcon as vb}from"@rango-dev/ui";import yo from"react";import{useNavigate as bb}from"react-router-dom";function Gf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=bb();return yo.createElement(R,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},yo.createElement(wb,{type:"warning",title:r.type===3?bn.t("High slippage"):bn.t("Low slippage"),description:r.type===3?bn.t("Caution, your slippage is high. Your trade may be front run."):bn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},yo.createElement(zl,{size:18}),yo.createElement(zl,{size:32}),yo.createElement(Of,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},yo.createElement(vb,{color:"white",size:16}),bn.t("Swap anyway")),yo.createElement(zl,{size:10}),yo.createElement(Tb,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+O.settings)},bn.t("Change Slippage"))))}i(Gf,"SlippageWarningModal");import{Button as xb,MessageBox as Eb,WarningIcon as Ib}from"@rango-dev/ui";import Xi from"react";function Vf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Xi.createElement(R,{id:"widget-unknown-price-warning-modal",footer:Xi.createElement(xb,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Xi.createElement(Ib,null),fullWidth:!0,disabled:r,onClick:n},ne().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},Xi.createElement(Eb,{type:"warning",title:ne().unknownPriceError.impactTitle,description:ne().unknownPriceError.description}))}i(Vf,"UnknownPriceWarningModal");function dr(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,skipAlerts:s,refetchQuote:c,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:u,onChangeSettings:d,onChangeSlippage:f}=t,h={confirmationDisabled:a,open:r,onClose:p,onConfirm:u},g=o?.type===0||o?.type===1,m=Hf(e,o?.type===3||o?.type===4?o:null);m&&!n&&(m.action=null);let C=!!m&&!s,y=i(S=>{if(S==="change-slippage"){let T=o?.type===3||o?.type===4?o:null,w=qf(e,T);f?.(w)}else S==="change-settings"&&d()},"onclickActionButton");return ze.createElement(ze.Fragment,null,g&&ze.createElement(ze.Fragment,null,ze.createElement(Kf,{size:10}),ze.createElement(cr,{skipAlerts:s,error:o,fetch:c})),C&&ze.createElement(Df,null,ze.createElement(Kf,{size:10}),ze.createElement(Nb,{id:"widget-quote-warning-and-errors-alert",title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:ze.createElement(Ff,{onClick:l},ze.createElement(Wb,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:ze.createElement(Bb,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>y(m.action)},m.actionButtonTitle||Ab.t("Change"))}})),e&&ze.createElement(ze.Fragment,null,e.type===0&&ze.createElement(Qf,{...h,warning:e}),(e.type===3||e.type===2)&&ze.createElement(Gf,{...h,warning:e}),e.type===1&&ze.createElement(Vf,{...h,warning:e})))}i(dr,"QuoteWarningsAndErrors");import ax from"bignumber.js";import la from"react";import{i18n as Uo}from"@lingui/core";import{Alert as Kb,Divider as En,FullExpandedQuote as jb,InfoIcon as Xb,NumericTooltip as Tg,QuoteTag as Yb,StepDetails as Zb,TokenAmount as Jb,Typography as In}from"@rango-dev/ui";import Yl from"bignumber.js";import Q,{useRef as Rb,useState as ex}from"react";import{styled as Ql}from"@rango-dev/ui";var Hl=Ql("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),jf=Ql("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Xf=Ql("div",{width:"100%",display:"flex"});import*as Yi from"@radix-ui/react-collapsible";import{Button as Mb,css as mr,darkTheme as Me,Image as Yf,styled as Re,Typography as Lb}from"@rango-dev/ui";var Pb=300,Zf=Re(Yi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Me} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Me} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Me} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),Jf=mr({padding:"$10 $15"}),Rf=Re(Mb,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${Me} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${Me} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${Me} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),eg=Re("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",[`.${Me} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${Me} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${Me} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${Me} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${Me} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${Me} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${Me} &`]:{backgroundColor:"$neutral400"}}}}]}),tg=mr({width:"100%",padding:"$15 $15 $10 $15"}),og=mr({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),xn=mr({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),ng=mr({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${Me} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),rg=Re(Yi.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:{[`& ${Yf}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Yf}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Me} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Me} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Me} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),ig=Re("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"}}}}),ag=Re(Qi,{width:"100%",background:"inherit"}),ql=Re("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${Pb}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),yH=Re("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),sg=Re("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${Me} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),lg=Re("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),Gl=Re(Lb,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),cg=Re("div",{display:"flex",flexWrap:"wrap"}),Vl=Re("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"}}}}),pg=Re("div",{display:"flex"}),Zi=Re("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${Me} &`]:{borderTopColor:"$neutral800"}});import{i18n as $t}from"@lingui/core";import{ChevronDownIcon as Db,CloseIcon as $b,Divider as ea,IconButton as Fb,NumericTooltip as Ob,QuoteCost as Ub,Typography as Et}from"@rango-dev/ui";import J,{useState as fg}from"react";import{css as _b,styled as Ji}from"@rango-dev/ui";var Ri=Ji("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Kl=Ji("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),ug=Ji("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),dg=Ji("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),mg=_b({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var zb=i(t=>t.fee.isZero()?null:J.createElement(Ri,null,J.createElement(Et,{variant:"label",size:"medium",color:"neutral600"},t.label),J.createElement(Et,{variant:"label",size:"medium"},"$",D(t.fee,4,4))),"NonPayableFee");function jl(t){let[e,o]=fg(!1),[n,r]=fg(!1),{steps:a,quote:s,fee:c,time:l,feeWarning:p,timeWarning:u,showModalFee:d,fullExpandedMode:f=!1}=t,h=s?.swaps??[],g=f?Ao():W(),m=zd(h),C=D(c,2,2);return J.createElement(J.Fragment,null,J.createElement(Ub,{onClickFee:d?y=>{y.stopPropagation(),o(!e)}:void 0,fee:C,feeWarning:p,timeWarning:u,time:l,steps:a,tooltipGas:d?$t.t("View more info"):void 0,tooltipContainer:g}),J.createElement(R,{id:"widget-quote-cost-explanation-modal",container:g,open:e,anchor:f?"center":"bottom",styles:{container:{maxWidth:f?"484px":"unset"}},header:J.createElement(dg,{style:{textAlign:f?"left":"center"}},J.createElement(Et,{variant:"title",size:"medium"},$t.t("Gas & Fee Explanation")),J.createElement(Fb,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},J.createElement($b,{color:"gray",size:14}))),onClose:()=>{o(!1)}},J.createElement(ug,null,J.createElement(Et,{variant:"title",size:"small"},$t.t("Details")),J.createElement(ea,{size:10}),Object.entries(m.payable).flatMap(([y,S])=>S.map((T,w)=>{let v=`payable-fee-${w}`,N=qs(T);return J.createElement(Ri,{key:v},J.createElement(Et,{variant:"label",size:"medium",color:"neutral600"},Os(y,$t.t)),J.createElement(Ob,{content:T.amount,container:g},J.createElement(Et,{variant:"label",size:"medium"},D(T.amount,2,2),T.asset.symbol," ($",D(N,4,4),")")))})),J.createElement(Ri,{className:"total_payable_fee"},J.createElement(Et,{variant:"label",size:"medium"},$t.t("Total Payable Fee")),J.createElement(Et,{variant:"label",size:"medium"},"$",D(c,4,4))),J.createElement(Kl,null),!!Object.keys(m.nonePayable).length&&J.createElement(Gi,{triggerAnchor:"bottom",onClickTrigger:()=>r(y=>!y),trigger:J.createElement("div",{className:mg()},J.createElement(Et,{size:"small",variant:"body",color:"neutral700"},n?$t.t("Hide non-payable fees"):$t.t("Show non-payable fees")),J.createElement(ea,{size:4,direction:"horizontal"}),J.createElement(Hi,{orientation:n?"up":"down"},J.createElement(Db,{size:12,color:"gray"}))),open:n},J.createElement(Et,{size:"small",variant:"title"},$t.t("Description")),J.createElement(ea,{size:4}),J.createElement(Et,{size:"small",variant:"body",color:"neutral700"},$t.t(`The following fees are considered in the transaction output and
2
+ you won\u2019t need to pay extra gas for them.`)),J.createElement(ea,{size:10}),Object.entries(m.nonePayable).map(([y,S],T)=>{let w=Ud(S),v=Os(y,$t.t),N=`non-payable-fee-${T}`;return J.createElement(zb,{key:N,fee:w,label:v})}),J.createElement(Kl,null)))))}i(jl,"QuoteCostDetails");import{i18n as yg}from"@lingui/core";import{TokenAmount as Sg}from"@rango-dev/ui";import ta from"react";import{css as Qb,styled as Hb}from"@rango-dev/ui";var gg=Hb("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),hg=Qb({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function fr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return ta.createElement(gg,null,ta.createElement(Sg,{direction:"horizontal",label:yg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:W(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),ta.createElement("div",{className:hg()}),ta.createElement(Sg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:yg.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(fr,"QuoteSummary");import{i18n as Cg}from"@lingui/core";import{ChevronDownIcon as qb,ChevronRightIcon as Gb,Divider as Xl,Image as Vb,Tooltip as ia,Typography as oa}from"@rango-dev/ui";import H from"react";var na=4,ra=6,gr=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,c=s||W();return H.createElement(ia,{container:c,side:"bottom",sideOffset:4,open:r,content:e},H.createElement(ig,{className:n,state:a},H.createElement(Vb,{src:o,size:16})))},"ImageComponent");function kg(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:c}=t,l=c||W(),p=r.length,u=Bd(r),{isTablet:d,isMobile:f}=yn();return H.createElement(rg,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},H.createElement("div",{className:xn()},H.createElement(oa,{variant:"body",size:"xsmall"},Cg.t("Via:")),H.createElement(Xl,{direction:"horizontal",size:4}),r.map((h,g)=>{let m=`item-${g}`,C=H.createElement(ql,null,H.createElement(Gb,{size:12,color:"black"}));return f||d?H.createElement(H.Fragment,{key:m},H.createElement(gr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&H.createElement(H.Fragment,null,C)):H.createElement(H.Fragment,{key:m},p<=na||p>na&&g<na-1?H.createElement(H.Fragment,null,H.createElement(gr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&H.createElement(H.Fragment,null,C)):g===na-1&&H.createElement(ia,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:xn()},C,r.map((y,S)=>{let T=`image-${S}`;return S>=g&&H.createElement(H.Fragment,{key:T},H.createElement(gr,{content:y.swapper.displayName,src:y.swapper.image??"",state:y.state,open:!1}),S!==p-1&&H.createElement(H.Fragment,null,C))}))},H.createElement(Vl,{state:r.find((y,S)=>S>=g&&(y.state==="error"||y.state==="warning"))?.state},H.createElement(oa,{size:"xsmall",variant:"body"},"+",p-g))))})),H.createElement("div",{className:xn()},H.createElement("div",{className:"blockchains_section"},H.createElement("div",{className:xn()},H.createElement(oa,{variant:"body",size:"xsmall"},Cg.t("Chains:")),H.createElement(Xl,{direction:"horizontal",size:4}),u.map((h,g)=>H.createElement(H.Fragment,{key:h.displayName},u.length<=ra||u.length>ra&&g<ra-1?H.createElement(ia,{container:l,side:"bottom",content:h.displayName,sideOffset:4},H.createElement(gr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===ra-1&&H.createElement(ia,{container:l,side:"bottom",align:"end",sideOffset:4,content:H.createElement("div",{className:xn()},u.map((m,C)=>C>=g&&H.createElement(gr,{key:m.displayName,content:"",src:m.image??"",open:!1,className:C>g?"blockchainImage":"",container:c})))},H.createElement(Vl,{className:"blockchainImage"},H.createElement(oa,{size:"xsmall",variant:"body"},"+",u.length-g))))),H.createElement(Xl,{direction:"horizontal",size:32}))),H.createElement(ql,{orientation:a?"up":"down"},H.createElement(qb,{size:12,color:"black"}))))}i(kg,"QuoteTrigger");function Zl(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:c=!1,tagHidden:l=!0,showModalFee:p=!0,onClickAllRoutes:u,fullExpandedMode:d=!1,container:f}=t,h=k().blockchains(),{findToken:g}=k(),m=k().swappers(),{customSlippage:C,slippage:y}=k(),S=C||y,[T,w]=ex(t.expanded),v=Rb(null),N=D(o.value,6,6),B=D(n.value,6,6),b=n.usdValue?D(n.usdValue,4,4):"",E=Kt(o.usdValue,n.usdValue??null),x=D(E,2,2),M=jt(E??0),I=i((Ae,$)=>Ae.map((A,G)=>{let ae,K=r?.type===3&&r.swap.swapperId===A.swapperId,X=r?.type===4&&!!r.recommendedSlippages?.[G],Ge=a?.type===2&&!!a.recommendedSlippages?.[G],Ve=K||X,be=Ge;Ve?ae="error":be&&(ae="warning");let Mt=Ve?Uo.t("Slippage Error"):Uo.t("Slippage Warning");return K&&(Mt=Uo.t("Bridge Limit Error")),{swapper:{displayName:Dn(A.swapperId,m)??"",image:A.swapperLogo},from:{token:{displayName:A.from.symbol,image:A.from.logo},chain:{displayName:ht(A.from.blockchain,h)??"",image:A.from.blockchainLogo},price:{value:G===0&&!$?D(o.value,6,6):D(A.fromAmount,6,6),usdValue:D((A.from.usdPrice??0)*parseFloat(A.fromAmount),4,4),realValue:G===0?o.value:A.fromAmount,realUsdValue:new Yl(A.from.usdPrice??0).multipliedBy(A.fromAmount).toString()}},to:{token:{displayName:A.to.symbol,image:A.to.logo},chain:{displayName:ht(A.to.blockchain,h)||"",image:A.to.blockchainLogo},price:{value:D(A.toAmount,6,6),usdValue:D((A.to.usdPrice??0)*parseFloat(A.toAmount),4,4),realValue:A.toAmount,realUsdValue:new Yl(A.to.usdPrice??0).multipliedBy(A.toAmount).toString()}},state:ae,alerts:Ve||be?Q.createElement(jf,{dense:d},Q.createElement(Kb,{variant:"alarm",type:Ve?"error":"warning",title:Mt,id:"widget-quote-footer-step-alarm-alert",footer:Q.createElement(Xf,null,K&&Q.createElement("div",null,Q.createElement(In,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),Q.createElement(En,{direction:"vertical",size:2}),Q.createElement(In,{size:"xsmall",variant:"body",color:"neutral900"},Uo.t({id:"Yours: {amount} {symbol}",values:{amount:D(A.fromAmount,6,6),symbol:A?.from.symbol}}))),(X||Ge)&&!K&&Q.createElement("div",null,Q.createElement(In,{size:"xsmall",variant:"body",color:"neutral900"},Uo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.[G]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[G]}}})),Q.createElement(En,{direction:"vertical",size:2}),Q.createElement(In,{size:"xsmall",variant:"body",color:"neutral900"},Uo.t({id:"Yours: {userSlippage}",values:{userSlippage:S}}))))})):void 0,time:Fn(A.estimatedTimeInSeconds),fee:D(Hs(A,g),2,2),internalSwaps:A.internalSwaps?I(A.internalSwaps):void 0}}),"getQuoteSteps"),_=I(e?.swaps??[]),U=_.length,q=f||W(),j=Md(t.quote.tags||[]),L=!!u,Y=ti(e?.swaps),ee=Fn(Y),Z=Ii(e?.swaps??[],g),le=D(Z,2,2),ue=Z.gte(new Yl(wd)),we=Y/bd>=vd,ve=_[U-1],qe=_[0];return!qe||!ve?null:d?Q.createElement(jb,{selected:c,fee:le,time:ee,tooltipContainer:Ao(),steps:_,tags:j,id:"widget-quote-full-expanded-quote-container",quoteCost:Q.createElement(jl,{quote:e,fullExpandedMode:!0,time:ee,fee:Z,feeWarning:ue,timeWarning:we,showModalFee:p,steps:U}),percentageChange:x,warningLevel:M,outputPrice:{value:B,usdValue:b,realValue:n.value,realUsdValue:n.usdValue}}):Q.createElement(eg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},Q.createElement("div",{className:tg()},!l&&j.length?Q.createElement(Q.Fragment,null,Q.createElement(pg,null,j.map((Ae,$)=>{let A=`${Ae.value}_${$}`;return Q.createElement(Q.Fragment,{key:A},Q.createElement(Yb,{label:Ae.label,value:Ae.value}),Q.createElement(En,{size:4,direction:"horizontal"}))})),Q.createElement(Zi,null),!L&&Q.createElement(En,{size:4})):null,Q.createElement("div",{id:"portal-root",className:og()},Q.createElement(jl,{quote:e,time:ee,fee:Z,feeWarning:ue,timeWarning:we,showModalFee:p,steps:U}),L&&Q.createElement(Rf,{onClick:Ae=>{Ae.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},Q.createElement(In,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Uo.t("See All Routes")))),s==="basic"&&Q.createElement("div",{className:ng()},Q.createElement(lg,null,Q.createElement(Xb,{size:12,color:"gray"})),Q.createElement(cg,null,Q.createElement(Gl,{size:"small",variant:"body"},`${N} ${qe.from.token.displayName} = `),Q.createElement(Tg,{content:n.value,container:q,open:n.value?void 0:!1},Q.createElement(Gl,{size:"small",variant:"body"},"\xA0",`${B} ${ve.to.token.displayName}`))),Q.createElement(Tg,{content:n.usdValue,container:q},Q.createElement(En,{size:2,direction:"horizontal"}),Q.createElement(In,{color:"$neutral600",size:"xsmall",variant:"body"},`($${b})`))),s==="list-item"&&Q.createElement(Jb,{id:"widget-quote-token-amount-container",tooltipContainer:q,type:"output",direction:"vertical",price:{value:B,usdValue:b,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:ve.to.token.displayName,image:ve.to.token.image},chain:{image:ve.to.chain.image},percentageChange:x,warningLevel:M}),s==="swap-preview"&&Q.createElement(Q.Fragment,null,Q.createElement(fr,{from:qe.from,to:ve.to,percentageChange:x,warningLevel:M}),Q.createElement(En,{size:4}))),Q.createElement(Zf,{selected:c,listItem:s==="list-item",open:T,className:"quote_container",onOpenChange:w},Q.createElement(kg,{type:s,quoteRef:v,selected:c,setExpanded:w,container:q,expanded:T,steps:_}),Q.createElement(ag,{open:T},Q.createElement(sg,null),Q.createElement("div",{className:Jf()},_.map((Ae,$)=>{let A=`item-${$}`;return Q.createElement(Zb,{type:"quote-details",className:"widget-quote-step-details-container",key:A,tooltipContainer:q,step:Ae,hasSeparator:$!==_.length-1,state:Ae.state})})))))}i(Zl,"Quote");import{Divider as rx,Skeleton as ix}from"@rango-dev/ui";import Rt from"react";import{darkTheme as tx,styled as aa}from"@rango-dev/ui";var wg=aa("div",{$$color:"$colors$neutral100",[`.${tx} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),vg=aa("div",{paddingTop:"$2"}),bg=aa("div",{paddingLeft:"$8"}),xg=aa("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as _g,Divider as It,Skeleton as dt}from"@rango-dev/ui";import V from"react";import{css as ox,styled as Jt}from"@rango-dev/ui";var Jl=Jt("div",{display:"flex"}),Eg=Jt("div",{padding:"$10 $0 $20"}),Ig=Jt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),Ag=Jt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Ng=Jt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Bg=Jt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Wg=Jt("div",{width:"65%",display:"flex",justifyContent:"start"}),Mg=Jt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Lg=Jt("div",{padding:"$15 $0 $15 $0"}),Pg=ox({display:"flex",justifyContent:"space-between",alignItems:"center"});function hr(t){let{type:e,tagHidden:o=!0}=t,n=V.createElement(Ng,null,V.createElement(Wg,null,V.createElement(_g,{loading:!0,size:"medium"}),V.createElement(It,{size:8,direction:"horizontal"}),V.createElement(Mg,null,V.createElement(dt,{height:10,width:60,variant:"rounded"}),V.createElement(It,{size:4}),V.createElement(dt,{height:15,variant:"rounded"}))),V.createElement(dt,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return V.createElement("div",null,!o&&V.createElement(V.Fragment,null,V.createElement(Jl,null,V.createElement(dt,{width:65,height:20,variant:"rounded"}),V.createElement(It,{size:4,direction:"horizontal"}),V.createElement(dt,{width:65,height:20,variant:"rounded"}),V.createElement(It,{size:4,direction:"horizontal"}),V.createElement(dt,{width:65,height:20,variant:"rounded"})),V.createElement(Zi,null),!r&&V.createElement(It,{size:4})),V.createElement("div",{className:Pg()},V.createElement(Jl,null,V.createElement(dt,{width:60,height:10,variant:"rounded"}),V.createElement(It,{size:4,direction:"horizontal"}),V.createElement(dt,{width:60,height:10,variant:"rounded"}),V.createElement(It,{size:4,direction:"horizontal"}),V.createElement(dt,{width:60,height:10,variant:"rounded"})),r&&V.createElement(dt,{width:85,height:24,variant:"rounded"})),e==="basic"&&V.createElement(Eg,null,V.createElement(dt,{height:15,width:148,variant:"rounded"})),e==="list-item"&&V.createElement(Ig,null,V.createElement(Ag,null,V.createElement(_g,{loading:!0,size:"medium"}),V.createElement(It,{direction:"horizontal",size:4}),V.createElement(dt,{height:15,width:150,variant:"rounded"})),V.createElement(It,{size:10}),V.createElement(dt,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&V.createElement(V.Fragment,null,V.createElement(It,{size:4}),V.createElement(Lg,null,n,V.createElement(Bg,null),n),V.createElement(It,{size:12})))}i(hr,"QuoteSummarySkeleton");import{ChainToken as Ug,Divider as ec,NextIcon as nx,Skeleton as sa}from"@rango-dev/ui";import Le from"react";import{styled as yr}from"@rango-dev/ui";var Dg=yr("div",{display:"flex",alignItems:"start"}),$g=yr("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Rl=yr("div",{display:"flex",alignItems:"center",flexGrow:1}),Fg=yr("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Og=yr("div",{display:"flex",alignItems:"center"});function Ft(t){let{separator:e=!0}=t;return Le.createElement(Le.Fragment,null,Le.createElement(Og,null,Le.createElement(sa,{height:22,width:22,variant:"circular"}),Le.createElement(ec,{direction:"horizontal",size:8}),Le.createElement(sa,{height:15,width:148,variant:"rounded"})),Le.createElement(Dg,null,Le.createElement(xg,{hideSeparator:!e}),Le.createElement($g,{extraSpace:e},Le.createElement(Rl,null,Le.createElement(Ug,{size:"small",loading:!0}),Le.createElement(ec,{direction:"horizontal",size:8}),Le.createElement(sa,{height:12,variant:"rounded"})),Le.createElement(Fg,null,Le.createElement(nx,{color:"gray",size:16})),Le.createElement(Rl,null,Le.createElement(Ug,{size:"small",loading:!0}),Le.createElement(ec,{direction:"horizontal",size:8}),Le.createElement(sa,{height:12,variant:"rounded"})))))}i(Ft,"StepSkeleton");function Sr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Rt.createElement(wg,{expanded:o,rounded:e!=="basic"},Rt.createElement(hr,{type:e,tagHidden:n}),Rt.createElement(vg,null,Rt.createElement(ix,{height:15,variant:"rounded"})),o&&Rt.createElement(bg,null,Rt.createElement(rx,{size:24}),Rt.createElement(Ft,null),Rt.createElement(Ft,null),Rt.createElement(Ft,{separator:!1})))}i(Sr,"QuoteSkeleton");function zo(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:c,onClick:l,showModalFee:p,selected:u,id:d,onClickAllRoutes:f,fullExpandedMode:h=!1,container:g}=t,{inputAmount:m,inputUsdValue:C}=z()(),y=e?.outputAmount?new ax(e?.outputAmount):null,S=e?kt(e):null,w=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?la.createElement(Hl,null,la.createElement(Sr,{tagHidden:c,type:o,expanded:s})):w?la.createElement(Hl,{onClick:()=>l?.(e),id:d},la.createElement(Zl,{quote:e,error:r,container:g,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:f,fullExpandedMode:h,input:{value:m,usdValue:C?.toString()??""},output:{value:y?.toString()??"",usdValue:S?.toString()??""}})):null}i(zo,"QuoteInfo");import{warn as px}from"@rango-dev/logging-core";import{calculatePendingSwap as ux}from"@rango-dev/queue-manager-rango-preset";import{useEffect as dx}from"react";import{useRef as sx,useState as lx}from"react";var cx=2e3;function ca({request:t}){let[e,o]=lx(!1),n=sx(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,cx)),await s(c,!1)),"retryFetch"),s=i(async(c,l=!1)=>{r(),n.current=new AbortController,o(!0);try{let p=await t(c,{signal:n.current.signal});return n.current=null,p}catch(p){if(l)return await a(c);throw p}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(ca,"useFetch");function zg(){let{fetch:t,loading:e,cancelFetch:o}=ca({request:async(n,r)=>await pt().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(zg,"useFetchConfirmQuote");function pa(t){if(!t.swaps)throw new Error(ne().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=tc(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(pa,"throwErrorIfResponseIsNotValid");function tc(t){if($d(t)){let{swap:n,fromAmountRangeError:r,recommendation:a}=Fd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:r}}:null}let o=Qd(t);if(o){let n=Ai(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(tc,"getQuoteError");function Qg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=mn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=Gd(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(Qg,"generateWarnings");function ua(t){return t?.code==="ERR_CANCELED"?{type:2}:t.cause?t.cause:t?.code==="ERR_BAD_REQUEST"?{type:0,diagnosisMessage:t.response.data.error}:{type:1,diagnosisMessage:t.message}}i(ua,"handleQuoteErrors");function oc(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:c}=z()(),{slippage:l,customSlippage:p}=k(),u=k().getDisabledLiquiditySources(),d=k().blockchains(),f=k().tokens(),{findToken:h}=k(),{swapMode:g}=Ct(),m=p||l,{fetch:C,cancelFetch:y,loading:S}=zg();return dx(()=>y,[]),{loading:S,fetch:i(async w=>{let v=w.selectedWallets,N=w?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let B=v.reduce((E,x)=>(E[x.chain]=x.address,E),{}),b={requestId:a?.requestId||"",selectedWallets:B,destination:N||void 0};try{return await C(b,!0).then(E=>{let{result:x}=E;if(!x)throw new Error(E.error??"Error fetching updated quote");pa({diagnosisMessages:x.diagnosisMessages,requestId:x.requestId,swaps:x.result?.swaps});let M={outputAmount:x.result?.outputAmount,requestId:x.requestId,resultType:x.result?.resultType,swaps:x.result?.swaps||[],validationStatus:x.validationStatus,requestAmount:x.requestAmount};r(M);let I={slippage:m.toString(),disabledSwappersGroups:u},_=Qg({previousQuote:a??void 0,currentQuote:M,meta:{blockchains:d},selectedWallets:v,userSlippage:m,inputUsdValue:n,findToken:h});c();let U=!!_.balance,q=ux({inputAmount:o.toString(),bestRoute:x,wallets:qd(v),settings:I,validateBalanceOrFee:!U,meta:{blockchains:d,tokens:f},swapMode:g});return{quote:M,swap:q,error:null,warnings:_}})}catch(E){let x=ua(E);return x.type!==2&&px(new Error("confirm swap error"),{tags:{...x,type:Ze[x.type],initialQuote:a,requestBody:b}}),{swap:null,error:x,warnings:null}}},"fetch"),cancelFetch:y}}i(oc,"useConfirmSwap");var wx=hx("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Hg}`]:{width:"$48",height:"$48"}}),vx=ic({flexGrow:1,paddingRight:"$10"}),bx=ic({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),xx=ic({display:"flex",justifyContent:"space-between",alignItems:"center"});function qg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=z()(),s=Tx(),[c,l]=Cr(""),p=!n,[u,d]=Cr(!1),[f,h]=Cr(!1),{isActiveTab:g}=oe(),m=k().getDisabledLiquiditySources(),C=kx(m),{manager:y}=mx(),{fetch:S,loading:T,cancelFetch:w}=oc(),[v,N]=Cr({swap:null,error:null,warnings:null}),[B,b]=Cr(!1),E=i(async({selectedWallets:L,customDestination:Y})=>{let ee=await S?.({selectedWallets:L,customDestination:Y});return N(ee),ee},"onConfirmSwap"),x=i(async()=>{if(v.swap&&n)try{await y?.create("swap",{swapDetails:v.swap},{id:v.swap.requestId});let L=`../${O.swaps}/${v.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){l("Error: "+L?.message)}},"addNewSwap"),M=i(async()=>{h(!0),await x(),h(!1)},"onConfirm"),I=i(async()=>{v.warnings?.quote&&Nd(v.warnings.quote)&&!a?b(!0):await M()},"onStartConfirmSwap"),_=i(async()=>{N({error:null,swap:null,warnings:null}),S({selectedWallets:o,customDestination:r}).then(L=>{N(L)}).catch(L=>console.error(L))},"onRefresh");da(()=>{!!C.current.length&&!m.length&&_(),C.current=m},[m.length]),da(()=>{p&&w()},[p]),da(()=>{p&&d(p)},[p]),da(()=>{p||S({selectedWallets:o,customDestination:r}).then(L=>N(L)).catch(L=>console.error(L))},[]),Cx(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let U=v.warnings?.quote??null,q=v.error,j=[];if(c&&j.push(Oe.createElement(fx,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),U||q){let L=`../${O.settings}`;j.push(Oe.createElement(dr,{warning:U,error:q,couldChangeSettings:!1,refetchQuote:_,skipAlerts:q?.type===4||U?.type===2,showWarningModal:B,confirmationDisabled:!g,onOpenWarningModal:()=>b(!0),onCloseWarningModal:()=>b(!1),onConfirmWarningModal:async()=>{b(!1),await x()},onChangeSettings:()=>s(L)}))}return Oe.createElement(ie,{header:{title:nc.t("Confirm Swap"),onWallet:()=>{let L=`../${O.wallets}`;s(L)}},footer:Oe.createElement(wx,null,Oe.createElement("div",{className:vx()},Oe.createElement(gx,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:T||f,disabled:!!v.error||!g,onClick:I},nc.t("Start Swap"))),Oe.createElement(Hg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:T||f,disabled:!g,onClick:d.bind(null,!0)},Oe.createElement(Sx,{size:24})))},u&&Oe.createElement(Af,{open:u,onClose:()=>d(!1),onCancel:w,loading:T,onCheckBalance:E}),Oe.createElement(se,null,Oe.createElement("div",{className:xx()},Oe.createElement(yx,{variant:"title",size:"small"},nc.t("You get")),Oe.createElement("div",{className:bx()},Oe.createElement(_i,{onClick:!T&&!u&&!B?_:void 0}))),Oe.createElement(rc,{size:"12"}),bm(j.map((L,Y)=>({element:L,key:`alert-${Y}`})),Oe.createElement(rc,{size:10})),j.length>0?Oe.createElement(rc,{size:10}):null,Oe.createElement(zo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:v.error,loading:T,warning:v.warnings?.quote??null})))}i(qg,"ConfirmSwapPage");import{i18n as to}from"@lingui/core";import{Button as yc,CustomTokensZeroStateDarkIcon as Gx,CustomTokensZeroStateIcon as Vx,DeleteIcon as Kx,Divider as br,IconButton as jx,MessageBox as Xx,NotFound as Yx,styled as Cc}from"@rango-dev/ui";import fe,{useState as Sc}from"react";import{useNavigate as Zx}from"react-router-dom";import{CloseIcon as Ex,IconButton as Ix,SearchIcon as Ax,TextField as Nx}from"@rango-dev/ui";import An from"react";import{styled as Gg}from"@rango-dev/ui";var Vg=Gg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),Kg=Gg("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function At(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,f=s.length?An.createElement(Ix,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},An.createElement(Ex,{color:"gray",size:10})):null;return p&&(f=p),An.createElement(Kg,null,An.createElement(Nx,{prefix:An.createElement(Vg,null,An.createElement(Ax,{color:"black"})),id:u,suffix:f,fullWidth:o,color:n,variant:e,style:{borderRadius:25,alignItems:"center",...c},size:r,value:s,onChange:a,...d}))}i(At,"SearchInput");import{i18n as hc}from"@lingui/core";import{Button as Lx,CustomTokenWarning as Px,darkTheme as ih,Divider as eo,ExternalLinkIcon as _x,Image as Dx,ListItem as $x,NotFound as Fx,PinIcon as Ox,Skeleton as Qo,Typography as wr,VirtualizedList as Ux}from"@rango-dev/ui";import P,{useState as zx}from"react";import{useTranslation as Qx}from"react-i18next";import{Divider as nh,ListItem as Mx,Skeleton as Tr}from"@rango-dev/ui";import Nt from"react";import{css as Nn,darkTheme as ac,ImageContainer as Bx,ListItemButton as Wx,styled as at,Typography as jg}from"@rango-dev/ui";var sc=Nn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),lc=Nn({position:"relative",height:12,width:"30%",maxWidth:"150px"}),cc=Nn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),pc=Nn({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${ac} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),uc=Nn({}),dc=Nn(),Xg=at("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),mc=at("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),ma=at("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${lc}`]:{[`& .${pc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${uc}`]:{bottom:"-15px"},[`& .${sc}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${cc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Yg=at(Wx,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),fc=at("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),gc=at(jg,{}),Zg=at("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${dc}`]:{$$color:"$colors$neutral600",[`.${ac} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),kr=at("div",{display:"flex",alignItems:"end",flexDirection:"column"}),dV=at("div",{display:"flex",alignItems:"center"}),Jg=at("div",{position:"relative",[`& ${Bx}`]:{borderRadius:"$xm",overflow:"hidden"}}),Rg=at("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),eh=at(jg,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),th=at("a",{"& svg:hover":{color:"$colors$info"}}),oh=at("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":{[`.${ac} &`]:{color:"$foreground"}}}});function rh(t){return Nt.createElement(ma,null,Array.from(Array(t.size),e=>Nt.createElement(Mx,{key:e,hasDivider:!0,start:Nt.createElement(Tr,{variant:"circular",width:35,height:35}),end:Nt.createElement(kr,null,Nt.createElement(Tr,{variant:"text",size:"large",width:70}),Nt.createElement(nh,{size:4}),Nt.createElement(Tr,{variant:"text",size:"medium",width:50})),title:Nt.createElement("div",null,Nt.createElement(Tr,{variant:"text",size:"large",width:90}),Nt.createElement(nh,{size:4}),Nt.createElement(Tr,{variant:"text",size:"medium",width:90}))})))}i(rh,"LoadingTokenList");var Hx=20,qx=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return P.createElement("div",{className:lc()},o?P.createElement("div",{className:sc()},o):P.createElement(mc,{className:cc()},P.createElement(wr,{variant:"title",size:"xmedium"},r.symbol),P.createElement(eo,{direction:"horizontal",size:4}),P.createElement(fc,{css:a},P.createElement(gc,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&P.createElement("div",{className:`${pc()} ${!o&&uc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",P.createElement(eo,{size:4,direction:"horizontal"}),P.createElement(th,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},P.createElement(_x,{size:12}))))},"renderDesc");function vr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=k().fetchStatus,u=k().blockchains(),{getBalanceFor:d,fetchingWallets:f}=k(),{isTokenPinned:h}=k(),{setFromToken:g,setToToken:m}=z()(),{t:C}=Qx(),y=Xe(),[S,T]=zx(null),w=i(()=>{c==="source"?g({token:S,meta:{blockchains:u}}):m({token:S,meta:{blockchains:u}})},"updateToken"),v=i(()=>{w(),y()},"handleImportToken"),N=i(E=>{if(E.customToken){let{customToken:M,...I}=E;return P.createElement(Lx,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(U=>{U.stopPropagation(),T({...I,warning:!0})},"handleClick")},P.createElement(wr,{variant:"body",size:"xsmall",color:"background"},C("import")))}let x=ii(d(E));return s?s(E):f?P.createElement(kr,null,P.createElement(Qo,{variant:"text",size:"large",width:70}),P.createElement(eo,{size:4}),P.createElement(Qo,{variant:"text",size:"medium",width:50})):x&&P.createElement(Zg,null,P.createElement(eh,{variant:"title",size:"small"},x.amount),P.createElement("div",null),x.usdValue&&P.createElement(wr,{variant:"body",className:dc(),size:"xsmall"},`$${x.usdValue}`))},"endRenderer"),B=i(()=>P.createElement(Ux,{itemContent:E=>{let x=e[E];if(x==="skeleton")return P.createElement($x,{hasDivider:!0,start:P.createElement(Qo,{variant:"circular",width:35,height:35}),end:P.createElement(kr,null,P.createElement(Qo,{variant:"text",size:"large",width:70}),P.createElement(eo,{size:4}),P.createElement(Qo,{variant:"text",size:"medium",width:50})),title:P.createElement("div",null,P.createElement(Qo,{variant:"text",size:"large",width:90}),P.createElement(eo,{size:4}),P.createElement(Qo,{variant:"text",size:"medium",width:90}))});let M=u.find(L=>L.name===x?.blockchain);if(!M||!x)return null;let I=x.address,_=al(M.color,"main"),U={$$color:_.main150,[`.${ih} &`]:{$$color:_.main750},backgroundColor:"$$color"},q={$$color:_.main750,[`.${ih} &`]:{$$color:_.main150},color:"$$color"},j=i(()=>{typeof x!="string"&&!x.customToken&&n?.(x)},"handleClick");return P.createElement(oh,null,P.createElement(Yg,{"tab-index":E,key:`${x.symbol}${I}`,id:`${x.symbol}${I}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:x?.customToken,onClick:j,start:P.createElement(Jg,null,P.createElement(Dx,{src:x.image===""?Xr:x.image,size:30}),t.type!=="custom-token"&&x&&h(x,t.type)&&P.createElement(Rg,null,P.createElement(Ox,{size:12,color:"gray"}))),title:M.type==="COSMOS"||x.name||!x.name&&!I?P.createElement(mc,null,P.createElement(wr,{variant:"title",size:"xmedium"},x.symbol),P.createElement(eo,{direction:"horizontal",size:4}),P.createElement(fc,{css:U},P.createElement(gc,{variant:"body",size:"xsmall",css:q},x.blockchain)),l&&x.warning&&P.createElement(P.Fragment,null,P.createElement(eo,{direction:"horizontal",size:4}),P.createElement(Px,{container:W()}))):void 0,description:typeof x!="string"&&M.info&&I&&M.type!=="COSMOS"?qx({address:I,token:x,customCssForTag:U,customCssForTagTitle:q,name:x.name,url:M.info.addressUrl.split("{wallet}").join(I)}):x.name||void 0,end:N(x)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),b=S?Eo(S?.blockchain,u):null;return P.createElement(P.Fragment,null,a&&P.createElement(P.Fragment,null,P.createElement(wr,{variant:"label",size:"large"},hc.t("Select Token")),P.createElement(eo,{size:4})),P.createElement(Xg,null,P.createElement(eo,{size:4}),p==="loading"&&P.createElement(rh,{size:Hx}),p==="success"&&(e.length?P.createElement(P.Fragment,null,P.createElement(nr,{token:S,address:S?.address??"",blockchain:b??void 0,onImport:v,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),P.createElement(ma,{as:"ul"},B())):!!o&&P.createElement(Fx,{title:hc.t("No results found"),description:hc.t("Try using different keywords")}))))}i(vr,"TokenList");var Jx=Cc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Rx=Cc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),eE=Cc(jx,{"&:hover":{"& svg":{color:"$secondary550"}}});function ah(){let[t,e]=Sc(""),{deleteCustomToken:o}=k(),n=k().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=po({}),p=Zx(),[u,d]=Sc(!1),[f,h]=Sc(),g=i(S=>{let T=S.target.value;e(T)},"handleSearch"),m=l==="dark",C=n.filter(S=>lt(S.symbol,t)||lt(S.address||"",t)||lt(S.name||"",t)),y=i(()=>{if(f){let S=a?yt(a):null,T=r?yt(r):null,w=yt(f);S===w?c({token:null}):T===w&&s({token:null}),o(f)}d(!1)},"handleDeleteCustomToken");return fe.createElement(ie,{header:{title:to.t("Custom Tokens")}},fe.createElement(se,null,fe.createElement(Jx,null,n.length?fe.createElement(fe.Fragment,null,fe.createElement(At,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:to.t("Search Token"),onChange:g}),fe.createElement(br,{size:16}),fe.createElement(vr,{list:C,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:S=>fe.createElement(eE,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(S)}},fe.createElement(Kx,{size:12,color:"gray"}))})):fe.createElement(Rx,null,fe.createElement(Yx,{icon:m?fe.createElement(Gx,{size:200}):fe.createElement(Vx,{size:200}),title:to.t("No custom tokens"),description:to.t("press the button to add your custom token")})),fe.createElement(br,{size:20}),fe.createElement(yc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p(O.addCustomTokens)},to.t("Add Custom Token"))),fe.createElement(R,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},fe.createElement(Xx,{title:to.t("Delete Custom Token"),type:"error",description:to.t("Are you sure you want to Delete this Token?")},fe.createElement(br,{size:40}),fe.createElement(br,{size:10}),fe.createElement(yc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:y},to.t("Yes, Delete it")),fe.createElement(br,{size:12}),fe.createElement(yc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},to.t("No, Continue"))))))}i(ah,"CustomTokensPage");import{i18n as Ue}from"@lingui/core";import{useManager as kE}from"@rango-dev/queue-manager-react";import{Button as Ec,darkTheme as TE,Divider as So,MessageBox as wE,NotFound as vE,styled as Ic,Tabs as bE,Typography as ha}from"@rango-dev/ui";import{TransactionStatus as Ir}from"rango-types";import te,{useMemo as xh,useState as Ar}from"react";import{useNavigate as xE}from"react-router-dom";import{FilterIcon as sE,Popover as lE}from"@rango-dev/ui";import Ho from"react";import{css as tE,darkTheme as fa,IconButton as oE,styled as xr}from"@rango-dev/ui";var kc=xr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${fa} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),sh=xr(oE,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${fa} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${fa} &`]:{backgroundColor:"$neutral"},[`& ${kc}::before`]:{backgroundColor:"$secondary100",[`.${fa} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),lh=xr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),ch=xr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),ph=tE({display:"flex",justifyContent:"space-between",alignItems:"center"}),uh=xr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as dh}from"@lingui/core";import{Button as nE,Divider as mh,ListItemButton as rE,Radio as iE,RadioRoot as aE,Typography as fh}from"@rango-dev/ui";import mt from"react";function gh(t){let{filterBy:e,onClickItem:o}=t;return mt.createElement(ch,null,mt.createElement("div",{className:ph()},mt.createElement(fh,{size:"small",variant:"body"},dh.t("Status")),mt.createElement(nE,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},dh.t("Reset"))),mt.createElement(mh,{size:10}),mt.createElement(aE,{value:e},mt.createElement(uh,null,t.list.map((n,r)=>mt.createElement(rE,{key:n.id,className:"widget-filter-selector-list-item-btn",style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:mt.createElement(mt.Fragment,null,mt.createElement(mh,{direction:"horizontal",size:4}),mt.createElement(fh,{size:"medium",variant:"body"},n.title)),start:mt.createElement(iE,{value:n.id}),onClick:o})))))}i(gh,"FilterSelectorContent");function Tc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Ho.createElement("div",null,Ho.createElement(lE,{open:a,align:"end",onOpenChange:o,container:W(),content:Ho.createElement(gh,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Ho.createElement(sh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Ho.createElement(kc,{isSelect:!!n},Ho.createElement(sE,{size:16,color:"black"}),!!n&&Ho.createElement(lh,null)))))}i(Tc,"FilterSelector");import{i18n as uE}from"@lingui/core";import{getCurrentStep as dE}from"@rango-dev/queue-manager-rango-preset";import{Divider as kh,GroupedVirtualizedList as mE,Skeleton as fE,SwapListItem as Th,Typography as gE}from"@rango-dev/ui";import et,{useCallback as wh,useEffect as hE,useRef as yE,useState as SE}from"react";function hh(t,e){let o=[],n=0;do{let r=t[n];r&&(o.push(Math.min(r,e)),e-=r),n++}while(e>0&&n<=t.length);return o}i(hh,"calculateGroupsSoFar");import{css as cE,darkTheme as pE,styled as Er}from"@rango-dev/ui";var wc=cE(),yh=Er("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),vc=Er("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${wc}`]:{$$color:"$colors$neutral600",[`.${pE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),bc=Er("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Sh=Er("div",{gap:"$10",display:"flex",flexDirection:"column"}),Ch=Er("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var CE=10;function xc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=SE([]),c=yE(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=wh(hh,[]),f=wh(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,CE),s(d(p,c.current)))},[e.length]);if(hE(()=>{r||f()},[r,f]),r){let h=[1,2];return et.createElement(et.Fragment,null,[h,h].map((m,C)=>et.createElement(vc,{key:C},et.createElement(bc,null,et.createElement(fE,{variant:"text",width:60,size:"small"}),et.createElement(kh,{size:16})),et.createElement(kh,{size:4}),et.createElement(Sh,null,m.map((S,T)=>et.createElement(Th,{isLoading:!0,key:T}))))))}return et.createElement(mE,{endReached:()=>{c.current<e.length&&f()},groupCounts:a,groupContent:h=>et.createElement(vc,null,et.createElement(bc,null,et.createElement(gE,{variant:"label",size:"medium",className:wc()},u[h]))),itemContent:(h,g)=>{let m=l[h];if(!m)return null;let C=dE(m),y=m.steps[0],S=m.steps[m.steps.length-1];return!y||!S?null:et.createElement(yh,{key:m.requestId},et.createElement(Th,{className:"widget-history-group-list-swap-item-btn",requestId:m.requestId,creationTime:m.creationTime,status:m.status,onClick:o,currentStep:C,tooltipContainer:W(),onlyShowTime:u[g]===uE.t("Today"),swapTokenData:{from:{token:{image:y.fromLogo,displayName:y.fromSymbol},blockchain:{image:y.fromBlockchainLogo||""},amount:D(m.inputAmount,6,6),realAmount:m.inputAmount},to:{token:{image:S.toLogo,displayName:S.toSymbol},blockchain:{image:S.toBlockchainLogo||""},amount:D(S.outputAmount||S.expectedOutputAmountHumanReadable||"",6,6),realAmount:S.outputAmount||S.expectedOutputAmountHumanReadable||""}}}))}})}i(xc,"HistoryGroupedList");import{i18n as ga}from"@lingui/core";import vh from"dayjs";var bh=i(t=>{let e=new Map([["today",{title:ga.t("Today"),swaps:[]}],["week",{title:ga.t("This week"),swaps:[]}],["month",{title:ga.t("This month"),swaps:[]}],["year",{title:ga.t("This year"),swaps:[]}]]);function o(l,p){e.has(l)||e.set(l,{title:l,swaps:[]}),e.get(l)?.swaps.push(p)}i(o,"addYearsToOutput");let n=vh();t.forEach(l=>{let p=Number(l.creationTime),u=vh(p);if(n.isSame(u,"day"))e.get("today")?.swaps.push(l);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(l);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(l);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(l);else{let d=new Date(p).getFullYear().toString();o(d,l)}});let r=Array.from(e.values()).filter(l=>l.swaps.length>0),a=r.flatMap(l=>l.swaps),s=r.map(l=>l.swaps.length),c=r.map(l=>l.title);return{swaps:a,groupCounts:s,groups:c}},"groupSwapsByDate");var EE=Ic("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),IE=Ic("div",{display:"flex",justifyContent:"center",alignItems:"center"}),AE=Ic("div",{"._typography":{color:"$neutral700",[`.${TE}&`]:{color:"$neutral900"}}}),NE=i((t,e)=>t?.length?t.filter(o=>Pt(o.fromBlockchain,e)||Pt(o.toBlockchain,e)||Pt(o.toSymbol,e)||Pt(o.fromSymbol,e)).length:!1,"isStepContainsText");function Eh(){let t=xE(),{manager:e,state:o}=kE(),n=wt(e).map(({swap:b})=>b),[r,a]=Ar(""),[s,c]=Ar(!1),l=!o.loadedFromPersistor,[p,u]=Ar(""),[d,f]=Ar(!1),[h,g]=Ar("all"),m=i(b=>{let E=b.target.value;a(E)},"handleSearch"),{isMultiMode:C}=Ct(),y=[{id:Ir.SUCCESS,title:Ue.t("Complete")},{id:Ir.RUNNING,title:Ue.t("Running")},{id:Ir.FAILED,title:Ue.t("Failed")}],S=[{id:"all",title:Ue.t("All")},{id:"swap",title:Ue.t("Swap")},{id:"refuel",title:Ue.t("Refuel")}],T=xh(()=>!r&&!p&&h==="all"?n:n.filter(b=>{let{inputAmount:E,status:x,steps:M,requestId:I,mode:_}=b;return(!r||Pt(E,r)||Pt(x,r)||NE(M,r)||Pt(I,r))&&(!p||p===x)&&(h==="all"?!0:h==="swap"?!_||_==="swap":h==="refuel"?_==="refuel":!1)}),[n,r,p,h]),w=!T?.length&&!l,v=i(()=>f(!1),"onCloseModal"),N=i(async()=>{try{await e?.clearQueue(),f(!1)}catch(b){console.log(b)}},"onClear"),B=xh(()=>!n.some(b=>b.status===Ir.SUCCESS||b.status===Ir.FAILED),[n]);return te.createElement(ie,{header:{title:Ue.t("History"),suffix:te.createElement(uo,null,te.createElement(Ec,{id:"widget-history-clear-btn",disabled:B,variant:"ghost",size:"xsmall",onClick:()=>f(!0)},te.createElement(ha,{size:"medium",variant:"label",color:"error"},Ue.t("Clear"))))}},te.createElement(se,null,te.createElement(IE,null,te.createElement(At,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Ue.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:m,style:{height:36},value:r}),te.createElement(So,{size:10,direction:"horizontal"}),te.createElement(Tc,{filterBy:p,open:s,onOpenChange:b=>c(b),onClickItem:b=>u(b),list:y})),te.createElement(So,{size:"16"}),C&&!l&&te.createElement(te.Fragment,null,te.createElement(bE,{items:S,onChange:b=>g(b.id),value:h,type:"secondary"}),te.createElement(So,{size:"12"})),te.createElement(EE,null,w&&te.createElement(Ch,null,te.createElement(So,{size:32}),te.createElement(vE,{title:r?Ue.t("No results found"):Ue.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Ue.t("Try using different keywords"):Ue.t("Your transaction history is stored locally and will appear here after you start a swap")})),!w&&te.createElement(xc,{list:T,onSwapClick:t,groupBy:bh,isLoading:l}))),te.createElement(R,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},te.createElement(So,{size:20}),te.createElement(wE,{type:"warning",title:Ue.t("Clear Transaction History"),description:te.createElement(AE,null,te.createElement(ha,{variant:"body",size:"medium"},Ue.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),te.createElement(So,{size:"24"}),te.createElement(ha,{variant:"body",size:"small"},Ue.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),te.createElement(So,{size:30}),te.createElement(Ec,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:N},Ue.t("Yes, Clear the history")),te.createElement(So,{size:10}),te.createElement(Ec,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},te.createElement(ha,{variant:"title",size:"medium",color:"primary"},Ue.t("No, Cancel")))))}i(Eh,"HistoryPage");import{i18n as oy}from"@lingui/core";import{Button as uI,Divider as zc,styled as dI,WarningIcon as mI}from"@rango-dev/ui";import fI from"bignumber.js";import he,{useEffect as ny,useState as ry}from"react";import{useNavigate as gI}from"react-router-dom";import{i18n as Ah}from"@lingui/core";import{Alert as WE,Divider as Ac,NoRouteIcon as ME,Typography as LE}from"@rango-dev/ui";import qo from"react";import{styled as BE}from"@rango-dev/ui";var Ih=BE("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Nc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Ht(t,e)?qo.createElement(Ih,null,qo.createElement(Ac,{size:10}),qo.createElement(ME,{size:24,color:"gray"}),qo.createElement(Ac,{size:4}),qo.createElement(LE,{variant:"title",size:"small"},Ah.t("No Routes Found")),qo.createElement(Ac,{size:4}),qo.createElement(WE,{title:Ah.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Nc,"SameTokensWarning");import{Alert as PE,Button as _E}from"@rango-dev/ui";import Bh from"react";import{i18n as ya}from"@lingui/core";function Nh(t){let e=null;return t===ci?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:ya.t("Reset"),title:ya.t("Slippage cannot be set lower than 0.01%.")},e):t>tn?(e={alertType:"warning",action:"change-settings",actionButtonTitle:ya.t("Change"),title:ya.t("Caution, your slippage is high!")},e):null}i(Nh,"makeAlerts");function Wh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=k(),{onChangeSettings:a}=t,c=Nh(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(li),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?Bh.createElement(PE,{title:c.title,type:c.alertType,variant:"alarm",action:Bh.createElement(_E,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(Wh,"SlippageWarningsAndErrors");import{i18n as UE}from"@lingui/core";import{IconButton as zE,ReverseIcon as QE,Skeleton as HE,Tooltip as qE,Typography as Nr}from"@rango-dev/ui";import ft from"react";import Sa from"bignumber.js";function Lh(t){let{error:e,isDarkTheme:o,warning:n}=t,{quoteError:r,slippageError:a}=e,{quoteWarning:s,slippageWarning:c}=n,l=!!a||r?.type===4,p=!!c||s?.type===2;return l?"$error500":p?"$warning500":o?"$neutral600":"$neutral700"}i(Lh,"getSlippageColor");function Ph(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new Sa(e),r=new Sa(o),a=n.dividedBy(r),s;return a.isLessThan(1)?s=a.toFixed(14).replace(/\.?0+$/,""):a.toFixed(0).length>10?s=a.toFixed(0).slice(0,10):s=a.toFixed(2),{displayValue:s,rawValue:a.toFixed()}}i(Ph,"getUsdExchangeRate");function _h(t,e){let o=new Sa(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,Sa.ROUND_DOWN).toFormat(2)}`}i(_h,"formatTokenValueInUsd");import{darkTheme as FE,styled as Wc,Typography as OE}from"@rango-dev/ui";var Dh=Wc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),$h=Wc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${FE} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Mc=Wc(OE,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function Lc(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=k(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:f}=po({}),h=rn(d),g=f==="dark",m=n==="default",C={quoteError:a,slippageError:h?.type==="error"?h.message:null},y={quoteWarning:s,slippageWarning:h?.type==="warning"?h.message:null},S=p?.swaps[0]?.from||c,T=p?.swaps[p?.swaps.length-1]?.to||l,w=m?S:T,v=m?T:S,N=Number(m?p?.outputAmount:p?.requestAmount),B=Number(m?p?.requestAmount:p?.outputAmount),b=N||w.usdPrice,E=B||v.usdPrice,{rawValue:x,displayValue:M}=Ph({toTokenUsdPrice:E,fromTokenUsdPrice:b});return ft.createElement(Dh,null,ft.createElement(Nr,{variant:C||y?"label":"body",size:C||y?"medium":"small",color:Lh({error:C,warning:y,isDarkTheme:g})},UE.t("Slippage:")," ",d,"%"),u?ft.createElement(HE,{height:16,width:104,variant:"rounded"}):b&&E&&ft.createElement($h,null,ft.createElement(Nr,{className:"rate-text",variant:"body",size:"small"},"1"),ft.createElement(Mc,{className:"rate-text",variant:"body",size:"small"},v.symbol),ft.createElement(zE,{id:"widget-home-page-change-rate-button",onClick:r},ft.createElement(QE,{size:14,color:"secondary"})),ft.createElement(qE,{container:W(),side:"top",sideOffset:4,content:ft.createElement(Nr,{className:"rate-text",variant:"body",size:"small"},x)},ft.createElement(Nr,{className:"rate-text",variant:"body",size:"small"},M)),ft.createElement(Mc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ft.createElement(Nr,{color:"neutral600",variant:"body",size:"small"},"~",_h(Number(x),w.usdPrice))))}i(Lc,"SwapMetrics");import{i18n as YE}from"@lingui/core";import{Header as ZE}from"@rango-dev/ui";import Co,{useEffect as JE,useState as RE}from"react";import{i18n as VE}from"@lingui/core";import{Divider as _c,FullExpandedQuote as KE,Typography as jE}from"@rango-dev/ui";import Te from"react";import{styled as Pc}from"@rango-dev/ui";var Fh=Pc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Oh=Pc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Uh=Pc("div",{width:"146px"});import{i18n as Br}from"@lingui/core";import{Select as GE}from"@rango-dev/ui";import zh from"react";function Ca(t){let{updateQuotePartialState:e,sortStrategy:o}=z()(),n=[{value:"SMART",label:Br.t("Smart Routing")},{value:"FEE",label:Br.t("Lowest Fee")},{value:"SPEED",label:Br.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Br.t("Maximum Return")},{value:"PRICE",label:Br.t("Maximum Output")}];return zh.createElement(Uh,null,zh.createElement(GE,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(Ca,"SelectStrategy");var Qh=3;function Wr(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:c}=t,{selectedQuote:l,quotes:p,updateQuotePartialState:u,fromToken:d,toToken:f,sortStrategy:h,error:g}=z()(),{slippage:m,customSlippage:C}=k(),{findToken:y}=k(),S=c||W(),T=!!p&&p.results.length,w=C??m,v=i(b=>{if(!d||!f||!p)return null;let E={requestAmount:p.requestAmount,validationStatus:null,...b};return mn({currentQuote:E,userSlippage:w,findToken:y})},"getQuoteWarning"),N=g?.type===0||g?.type===1,B=p?.results?Ei(h,p?.results):[];return Te.createElement(Te.Fragment,null,a&&Te.createElement(Te.Fragment,null,Te.createElement(Oh,null,Te.createElement(jE,{size:"xmedium",variant:"title"},VE.t("Sort by")),Te.createElement(Ca,{container:S})),Te.createElement(_c,{size:"10"})),e&&Array.from({length:Qh},(b,E)=>Te.createElement(Te.Fragment,{key:E},s?Te.createElement(KE,{loading:!0}):Te.createElement(Sr,{tagHidden:!1,type:"list-item",expanded:!1}),E!==Qh-1&&Te.createElement(_c,{size:16}))),!e&&Te.createElement(Te.Fragment,null,T?B.map((b,E)=>{let x=v(b),M=tc(b.swaps),I=B.length-1===E;return Te.createElement(Te.Fragment,{key:b.requestId},Te.createElement(zo,{id:"widget-quotes-quote-info-container",showModalFee:r,container:S,selected:l?.requestId===b.requestId,tagHidden:!1,quote:{...b,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:M?.options||null,warning:x,fullExpandedMode:s,onClick:_=>{M||u("warning",x),u("error",M?.options||null),o(_)},type:"list-item"}),!I&&Te.createElement(_c,{size:16}))}):N&&Te.createElement(Fh,null,Te.createElement(cr,{size:s?"large":"small",error:g,fetch:n}))))}i(Wr,"Quotes");import{darkTheme as XE,styled as Hh}from"@rango-dev/ui";var qh=Hh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${XE} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Gh=Hh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var eI=100;function Dc(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=RE(!1),l=s?"":"is-hidden",{config:p}=k(),u=p?.variant==="full-expanded",d=Ao();return JE(()=>{let f=null;return a?f=setTimeout(()=>{c(!0)},eI):(c(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),Co.createElement(qh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Oi()} widget-expanded-quotes-container`,id:ot.EXPANDED_BOX_ID},Co.createElement(ZE,{title:YE.t("Routes"),suffix:Co.createElement(Co.Fragment,null,Co.createElement(Ca,{container:d}),Co.createElement(Fo,{container:d,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),Co.createElement(Gh,null,Co.createElement(Wr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:Ao(),onClickOnQuote:n,fullExpandedMode:u})))}i(Dc,"ExpandedQuotes");import{i18n as Jh}from"@lingui/core";import{SwapInput as Rh}from"@rango-dev/ui";import rI from"bignumber.js";import Mr from"react";import{ReverseIcon as nI}from"@rango-dev/ui";import Fc from"react";import{keyframes as tI,styled as Vh}from"@rango-dev/ui";var $c=450,oI=tI({"0%":{transform:"rotateX(0deg) rotateY(0deg) rotateZ(0deg)"},"33%":{transform:"rotateX(0deg) rotateZ(78deg) rotateY(66deg)"},"66%":{transform:"rotateX(0deg) rotateZ(163deg) rotateY(66deg)"},"100%":{transform:"rotateX(0deg) rotateZ(180deg) rotateY(0deg)"}}),Kh=Vh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),jh=Vh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${oI} ${$c}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 Oc(){let t=z().use.switchFromAndTo();return Fc.createElement(Kh,null,Fc.createElement(jh,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},$c),t()}},Fc.createElement(nI,{size:12})))}i(Oc,"SwitchFromAndToButton");import{styled as Xh}from"@rango-dev/ui";var Yh=Xh("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),Zh=Xh("div",{position:"relative"});function Uc(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:c,toBlockchain:l,setInputAmount:p,sanitizeInputAmount:u,inputAmount:d,inputUsdValue:f,outputAmount:h,outputUsdValue:g,selectedQuote:m}=z()(),{swapMode:C}=Ct(),{connectedWallets:y,getBalanceFor:S}=k(),T=a?S(a):null,w=ii(T)?.amount??"0",v=T?new rI(T.amount).shiftedBy(-T.decimals):ce,N=!!s&&vu(y,s.name),B=!Qs(m,d,f),b=!Qs(m,d,g),E=!f||!g||!g.gt(0)?null:Kt(f.toString(),g.toString());return Mr.createElement(Yh,null,Mr.createElement(Zh,null,Mr.createElement(Rh,{label:Jh.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:w,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:d,usdValue:B?void 0:D(f,4,4),realUsdValue:B?void 0:f?.toString(),error:B?ne().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:N,tooltipContainer:W(),onSelectMaxBalance:()=>{let x=D(v,T?.decimals),M=T?.amount?x.split(",").join(""):"";p(M)},anyWalletConnected:y.length>0}),C==="swap"&&Mr.createElement(Oc,null)),Mr.createElement(Rh,{selectionType:C==="swap"?"token":"chain",sharpBottomStyle:!r&&(!!m||e),label:Jh.t("To"),mode:"To",id:"widget-swap-to-input",fetchingQuote:e,chain:{displayName:l?.displayName||"",image:l?.logo},token:{displayName:c?.symbol||"",image:c?.image,securityWarning:!!c?.warning},percentageChange:D(Kt(f,g),2,2),warningLevel:jt(E??0),price:{value:D(h,6,6),usdValue:b?void 0:D(g,4,4),realValue:h?.toString(),realUsdValue:b?void 0:g?.toString(),error:b?ne().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}i(Uc,"Inputs");import{warn as iI}from"@rango-dev/logging-core";import{useCallback as aI,useEffect as sI,useRef as lI,useState as cI}from"react";function ey(){let{fetch:t,loading:e,cancelFetch:o}=ca({request:async(n,r)=>await pt().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(ey,"useFetchAllQuotes");var pI=600;function ka({refetchQuote:t}){let{fetch:e,cancelFetch:o}=ey(),{excludeLiquiditySources:n,routing:r}=k().config,{connectedWallets:a}=k(),c=a.some(ue=>ue.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:f,sortStrategy:h,resetQuote:g,error:m,warning:C,setSelectedQuote:y,updateQuotePartialState:S}=z()(),{slippage:T,customSlippage:w,affiliatePercent:v,affiliateRef:N,affiliateWallets:B,fetchStatus:b}=k(),E=k().getLiquiditySources(),x=k().getDisabledLiquiditySources(),M=k().excludeLiquiditySources(),{findToken:I}=k(),[_,U]=cI(!0),q=lI(u),j=w??T,Y=!l||!p||Ht(l,p)||!On(u),ee=i(ue=>{U(ue)},"resetState"),Z=i(ue=>{let{fromToken:we,toToken:ve,inputAmount:qe,liquiditySources:Ae,excludeLiquiditySources:$,disabledLiquiditySources:A,slippage:G,affiliateRef:ae,affiliatePercent:K,affiliateWallets:X}=ue;if(_||ee(!0),!Y&&we&&ve){g();let Ge=Hd({fromToken:we,toToken:ve,inputAmount:qe,liquiditySources:Ae,excludeLiquiditySources:$,disabledLiquiditySources:A,wallets:a,slippage:G,affiliateRef:ae,affiliatePercent:K,affiliateWallets:X,contractCall:c});nn("experimental",r)&&(Ge.experimental=!0),nn("avoidNativeFee",r)&&(Ge.avoidNativeFee=!0),nn("enableCentralizedSwappers",r)&&(Ge.enableCentralizedSwappers=!0),r?.maxLength&&(Ge.maxLength=r.maxLength),e(Ge).then(Ve=>{let be=Ei(h,Ve.results),Mt=Wd(f,be,Ve.requestAmount);U(!1),S("quotes",Ve),y(Mt),pa({diagnosisMessages:Ve.diagnosisMessages,requestId:Mt?.requestId||"",swaps:Mt?.swaps});let Ya=Mt&&mn({currentQuote:Mt,userSlippage:j,findToken:I});S("warning",Ya)}).catch(Ve=>{let be=ua(Ve);(be.type===0||be.type===1)&&g(),be.type!==2&&(S("error",be),U(!1),iI(new Error("quote error"),{tags:{...be,type:Ze[be.type],requestBody:Ge}}))})}},"fetch"),le=aI(Jr(ue=>{Z(ue)},pI),[Y]);return sI(()=>{if(!t){U(!1);return}if(b!=="success")return;if(Y){U(!1),(f||m||C)&&g();return}if(!On(u)&&d?.eq(0)){ee(!1),o();return}g(),ee(!0);let ue=Z;return q.current&&q.current!=u&&(ue=le),q.current=u,ue({inputAmount:u,fromToken:l,toToken:p,liquiditySources:E,excludeLiquiditySources:M,disabledLiquiditySources:x,slippage:j,affiliateRef:N,affiliatePercent:v,affiliateWallets:B,contractCall:c}),o},[b,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,E?.length,n,x.length,j,N,v,c,JSON.stringify(B)]),{fetch:()=>Z({inputAmount:u,fromToken:l,toToken:p,liquiditySources:E,excludeLiquiditySources:M,disabledLiquiditySources:x,slippage:j,affiliateRef:N,affiliatePercent:v,affiliateWallets:B,contractCall:c}),loading:_}}i(ka,"useSwapInput");function ty(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};Ce.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(ty,"emitPreventableEvent");var hI=dI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),yI=300;function iy(){let t=gI(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:f}=z()(),[h,g]=ry(!1),{isLargeScreen:m,isExtraLargeScreen:C}=yn(),{fetch:y,loading:S}=ka({refetchQuote:a}),{config:T,fetchStatus:w,connectedWallets:v,customSlippage:N,slippage:B,setSlippage:b,setCustomSlippage:E}=k(),{isActiveTab:x}=oe(),[M,I]=ry(!1),_=N!==null?N:B,{swapMode:U}=Ct(),q=rn(_),L=Od({fetchMetaStatus:w,fetchingQuote:S,inputAmount:n,quote:r,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Y=Bu(m,C,T?.variant),ee=!!n&&!!e&&!!o&&new fI(n).gt(0)&&!Yd(e,o),Z=ee&&w==="success"&&S,le=q?.quoteValidation||c,ve=(!Y||Y&&l?.results.length)&&(le||s),qe=!!e&&!!o,Ae=qe&&!!q,$=(r||s)&&!M?y:void 0,A=i(X=>{Y&&h?(g(!1),setTimeout(()=>{t(X)},yI)):t(X)},"onHandleNavigation"),G=i(X=>{r?.requestId!==X.requestId&&(I(!1),p(X))},"onClickOnQuote"),ae=i(X=>{if(X){if(si.includes(X)){b(X),E(null);return}E(X)}},"onChangeSlippage"),K=i(X=>{A(X==="from"?O.fromSwap:U==="swap"?O.toSwap:O.toSwap+"/"+O.blockchains)},"handleInputTokenClick");return ny(()=>{u(),f("refetchQuote",!0)},[]),ny(()=>{g(ee)},[ee]),he.createElement(hI,null,he.createElement(ie,{height:"auto",footer:he.createElement(uI,{id:`widget-swap-${L.action}-btn`,type:"primary",size:"large",disabled:L.disabled||!x,prefix:L.action==="confirm-warning"&&he.createElement(mI,null),fullWidth:!0,onClick:()=>{L.action==="connect-wallet"?ty({type:"clickConnectWallet"},()=>A(O.wallets)):L.action==="confirm-warning"?I(!0):A(O.confirmSwap)}},L.title),header:{onWallet:()=>{A(O.wallets)},hasBackButton:!1,title:T.title||(U==="swap"?oy.t("Swap"):oy.t("Refuel")),suffix:he.createElement(Fo,{hidden:Y?["refresh"]:void 0,onClickRefresh:$,onClickHistory:()=>A(O.swaps),onClickSettings:()=>{A(O.settings)}})}},he.createElement(se,null,he.createElement(Uc,{fetchingQuote:Z,fetchMetaStatus:w,isExpandable:Y,onClickToken:K}),he.createElement(zc,{size:"2"}),Y?null:he.createElement(zo,{quote:r,loading:Z,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:le,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{f("refetchQuote",!1),A(O.routes)}:void 0}),qe&&he.createElement(he.Fragment,null,he.createElement(zc,{size:8}),he.createElement(Lc,{quoteError:s,quoteWarning:le,fromToken:e,toToken:o,quote:r,loading:Z})),ve?he.createElement(he.Fragment,null,he.createElement(dr,{warning:le,error:s,skipAlerts:!!q,couldChangeSettings:!0,refetchQuote:y,showWarningModal:M,confirmationDisabled:!x,onOpenWarningModal:()=>I(!0),onCloseWarningModal:()=>I(!1),onChangeSlippage:ae,onConfirmWarningModal:()=>{I(!1),d(!0),A(O.confirmSwap)},onChangeSettings:()=>A(O.settings)})):null,Ae&&he.createElement(he.Fragment,null,he.createElement(zc,{size:"10"}),he.createElement(Wh,{onChangeSettings:()=>A(O.settings)})),he.createElement(Nc,null))),Y?he.createElement(Dc,{loading:Z,onClickOnQuote:G,fetch:y,onClickRefresh:$,isVisible:h}):null)}i(iy,"Home");import{i18n as ay}from"@lingui/core";import{Alert as SI,Divider as CI,List as kI,ListItemButton as TI,Radio as wI,RadioRoot as vI,Typography as bI}from"@rango-dev/ui";import Ot from"react";function ko(){let{setLanguage:t,language:e,config:o}=k(),n=$u,r=o?.language||an;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||an),resetLanguage:()=>t(null)}}i(ko,"useLanguage");function sy(){let{activeLanguage:t,changeLanguage:e,languages:o}=ko(),n=Xe(),r=o.map(a=>{let{local:s,label:c,SVGFlag:l}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Ot.createElement(bI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Ot.createElement(wI,{value:s}),start:Ot.createElement(l,null)}});return Ot.createElement(ie,{header:{title:ay.t("Language")}},Ot.createElement(se,null,Ot.createElement(SI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Ot.createElement(CI,{size:"8"}),Ot.createElement(vI,{value:t},Ot.createElement(kI,{type:Ot.createElement(TI,{title:ay.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(sy,"LanguagePage");import{i18n as oo}from"@lingui/core";import{Button as NI,Checkbox as BI,Image as WI,ListItemButton as MI,NotFound as LI,Typography as PI}from"@rango-dev/ui";import tt,{useState as _I}from"react";import{Checkbox as II,Skeleton as cy}from"@rango-dev/ui";import Pr from"react";import{styled as Qc}from"@rango-dev/ui";var Lr=Qc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Hc=Qc("div",{width:80,display:"flex",justifyContent:"flex-end"}),qc=Qc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as xI,styled as EI}from"@rango-dev/ui";var ly=EI(xI,{height:61});var AI=30;function Gc(){return Pr.createElement(Lr,null,Array.from(Array(AI),(t,e)=>Pr.createElement(ly,{hasDivider:!0,key:e,start:Pr.createElement(cy,{variant:"circular",width:35,height:35}),title:Pr.createElement(cy,{variant:"text",size:"large",width:90}),end:Pr.createElement(II,{checked:!1})})))}i(Gc,"LoadingLiquiditySourceList");function Vc({sourceType:t}){let e=k().fetchStatus,o=k().swappers(),n=k().getDisabledLiquiditySources(),[r,a]=_I(""),s=k().toggleLiquiditySource,c=k().isInCampaignMode(),l=pi(o,n),p={Exchanges:oo.t("Exchanges"),Bridges:oo.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let d=l.filter(y=>u.includes(y.type)),f=d.length===d.filter(y=>y.selected).length,h=i(()=>{d.forEach(y=>{f?s(y.groupTitle):y.selected||s(y.groupTitle)})},"toggleAllSources"),g=d.map(y=>{let{selected:S,groupTitle:T,logo:w,id:v,...N}=y;return{id:`widget-setting-liquidity-source-${uu(v.toLowerCase())}-item-btn`,start:tt.createElement(WI,{src:w,size:22,type:"circular"}),onClick:()=>{c||s(T)},end:tt.createElement(BI,{checked:S,disabled:c}),title:tt.createElement(PI,{variant:"title",size:"xmedium"},oo.t(T)),selected:S,groupTitle:T,logo:w,...N}}),m=i(y=>{let S=y.target.value;a(S)},"handleSearch"),C=g;return r&&(C=g.filter(y=>Pt(y.groupTitle,r))),tt.createElement(ie,{header:{title:oo.t(t),suffix:tt.createElement(Hc,null,tt.createElement(NI,{id:`widget-liquidity-source-${f?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:h},f?oo.t("Deselect all"):oo.t("Select all")))}},tt.createElement(se,{view:!0},tt.createElement(At,{value:r,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:oo.t("Search {sourceType}",{sourceType:p[t]}),onChange:m}),e==="loading"&&tt.createElement(Gc,null),!C.length&&r?tt.createElement(qc,null,tt.createElement(LI,{title:oo.t("No results found"),description:oo.t("Try using different keywords")})):e==="success"&&tt.createElement(Lr,{disabled:c,className:"widget-liquidity-source-list"},C.map(y=>{let{groupTitle:S,...T}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(MI,{style:{height:"61px"},...T,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(Vc,"LiquiditySourcePage");import{i18n as DI}from"@lingui/core";import Ta from"react";import{useNavigate as $I}from"react-router-dom";function py(){let t=$I(),e=Xe(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=ka({refetchQuote:n}),p=i(f=>{r(f),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${O.settings}`,d=`../${O.wallets}`;return Ta.createElement(ie,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:DI.t("Routes"),suffix:Ta.createElement(Fo,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Ta.createElement(se,null,Ta.createElement(Wr,{fetch:c,loading:l,onClickOnQuote:p})))}i(py,"RoutesPage");import{i18n as yy}from"@lingui/core";import{Divider as Sy,getCategoriesCount as KI,SelectableCategoryList as jI}from"@rango-dev/ui";import no,{useState as Cy}from"react";import{useNavigate as XI}from"react-router-dom";import{i18n as Kc}from"@lingui/core";import{Divider as zI,Image as QI,ListItemButton as HI,NotFound as qI,Typography as hy}from"@rango-dev/ui";import gt,{useEffect as GI,useState as VI}from"react";var uy=i((t,e,o)=>t.filter(n=>Rr(n.type,o)).filter(n=>lt(n.name,e)||lt(n.displayName,e)),"filterBlockchains");import{ImageContainer as FI,styled as dy}from"@rango-dev/ui";var my=dy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),wa=dy(bl,{padding:0,margin:0,listStyle:"none",[`& ${FI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as OI,Skeleton as fy}from"@rango-dev/ui";import va from"react";var UI=20;function gy(){return va.createElement(wa,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(UI),t=>va.createElement(OI,{key:t,hasDivider:!0,start:va.createElement(fy,{variant:"circular",width:35,height:35}),title:va.createElement(fy,{variant:"text",size:"large",width:90})})))}i(gy,"LoadingBlockchainList");function jc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=VI(e),{fetchStatus:l}=k();GI(()=>{c([...uy(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?gt.createElement(qI,{title:Kc.t("No results found"),description:Kc.t("Try using different keywords")}):gt.createElement(wa,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>gt.createElement(HI,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:gt.createElement(QI,{src:u.logo,size:30}),title:gt.createElement(hy,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return gt.createElement(gt.Fragment,null,a&&gt.createElement(gt.Fragment,null,gt.createElement(hy,{variant:"label",size:"large"},Kc.t("Select Chain")),gt.createElement(zI,{size:4})),gt.createElement(my,null,l==="loading"&&gt.createElement(gy,null),l==="success"&&p()))}i(jc,"BlockchainList");function ba(t){let{type:e}=t,o=Xe(),[n,r]=Cy(""),[a,s]=Cy("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=k(),f=XI(),{swapMode:h}=Ct(),g=k().blockchains({type:e}),m=KI(g),C=!t.hideCategory&&m!==1,y=i(S=>{if(e==="custom-token")f(`..?blockchain=${S.name}`,{replace:!0});else{if(e==="source")l(S);else if(h==="swap")c(S);else{let T=d(S);T&&p({token:T,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return no.createElement(ie,{header:{title:yy.t("Select Chain")}},no.createElement(se,{view:!0},C&&no.createElement(no.Fragment,null,no.createElement(jI,{setCategory:s,category:a,blockchains:g,isLoading:u==="loading"}),no.createElement(Sy,{size:24})),no.createElement(At,{value:n,autoFocus:!0,placeholder:yy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:S=>r(S.target.value)}),no.createElement(Sy,{size:16}),no.createElement(jc,{list:g,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:y})))}i(ba,"SelectBlockchainPage");import{i18n as Ia}from"@lingui/core";import{Divider as Ey,Spinner as pA}from"@rango-dev/ui";import To,{useEffect as uA,useState as dA}from"react";import{useNavigate as mA}from"react-router-dom";import{i18n as Zc}from"@lingui/core";import{BlockchainsChip as xa,Divider as vy,Image as by,Skeleton as tA,Tooltip as oA,Typography as Jc}from"@rango-dev/ui";import xe from"react";import{useEffect as JI}from"react";var ky=["ETH","COSMOS","OSMOSIS"];function Xc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(YI),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let c=o.limit-e.length;for(let l=0;l<=c;l++){let p=n[l];s=s.filter(u=>p?.name!==u)}}n.sort(ZI(s)),r=n.splice(a)}return{list:n,more:r}}i(Xc,"prepare");function YI(t,e){let o=ky,n=o.findIndex(c=>c===t.name),r=o.findIndex(c=>c===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(YI,"sortByMostUsedBlockchains");function ZI(t){return i(function(o,n){let r=t.findIndex(l=>l===o.name),a=t.findIndex(l=>l===n.name),s=r>-1,c=a>-1;return s&&c?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(ZI,"generateSortByPreferredBlockchainsFor");function Ty(t,e){return!!e.list.find(o=>o.name===t)}i(Ty,"isInVisibleList");function Yc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=k();JI(()=>{if(e?.selected){let a=Xc(t,o,e);Ty(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Xc(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Yc,"usePrepareBlockchainList");import{styled as RI}from"@rango-dev/ui";var wy=RI("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var nA=6,rA=12;function Rc(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=oe(),c=Yc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=k(),p=z().use.resetToBlockchain(),u=z().use.resetFromBlockchain(),d=c.more.length>0,f=c.more[0],h=c.more.length===1&&f,g=!h&&d;return xe.createElement(xe.Fragment,null,!s&&xe.createElement(xe.Fragment,null,xe.createElement(vy,{size:12}),xe.createElement(Jc,{variant:"label",size:"large"},Zc.t("Select Chain"))),xe.createElement(vy,{size:12}),xe.createElement(wy,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?nA:rA),(m,C)=>xe.createElement(tA,{key:C,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(xa,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(Jc,{variant:"body",size:"xsmall",color:"secondary500"},Zc.t("All"))),c.list.map(m=>xe.createElement(oA,{key:m.name,content:m.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(xa,{className:"widget-blockchains-section-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>r(m)},xe.createElement(by,{src:m.logo,size:30})))),h?xe.createElement(xa,{className:"widget-blockchains-section-only-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},xe.createElement(by,{src:f.logo,size:30})):null,g?xe.createElement(xa,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(Jc,{variant:"body",size:"xsmall",color:"secondary500"},Zc._("More +{count}",{count:c.more.length}))):null)))}i(Rc,"BlockchainsSection");import{useCallback as aA,useRef as sA,useState as ep}from"react";function tp(){let t=k().blockchains(),e=sA(null),{customTokens:o}=k(),[n,r]=ep(!1),[a,s]=ep([]),[c,l]=ep(null),p=i(async(f,h)=>{l(null),r(!0),s([]);try{let g=await pt().searchCustomTokens({query:f,blockchain:h},{signal:e.current?.signal}),m=new Set(o().map(S=>Gt(S))),C=new Set(t.map(S=>S.name)),y=g.tokens.filter(S=>C.has(S.blockchain)&&!m.has(Gt(S)));s(y),r(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&r(!1)}},"fetch"),u=aA(Jr((f,h)=>{e.current?.signal.aborted||p(f,h)},600),[t.length]);return{fetch:(f,h)=>{e.current=new AbortController,s([]),r(!0),u(f,h)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}i(tp,"useSearchCustomTokens");function Ea(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}i(Ea,"shouldSearchForCustomTokens");function xy(t,e,o,n,r){let a=[...t];return Ea(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(xy,"prepareTokensList");function Aa(t){let{type:e}=t,o=mA(),n=Xe(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=k(),{fetch:d,loading:f,tokens:h,cancel:g}=tp(),[m,C]=dA(""),y=e==="source"?r:a,S=y?.name??"",T=k().blockchains({type:e}),w=k().tokens({type:e,blockchain:S,searchFor:m,getBalanceFor:u}),v=xy(w,h,m,f,y?.name),N=i(E=>{e==="source"?l(E):p(E)},"updateBlockchain"),B=i(E=>{e==="source"?s({token:E,meta:{blockchains:T}}):c({token:E,meta:{blockchains:T}})},"updateToken"),b={source:Ia.t("Source"),destination:Ia.t("Destination")};return uA(()=>(Ea(w,m,y?.name)&&d(m,y?.name??void 0),()=>{g()}),[w.length,m,y?.name]),To.createElement(ie,{header:{title:Ia.t("Swap {type}",{type:b[e]})}},To.createElement(se,null,To.createElement(Rc,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(O.blockchains),onChange:E=>{N(E)}}),To.createElement(Ey,{size:24}),To.createElement(At,{value:m,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:Ia.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>C(""),onChange:E=>C(E.target.value),suffix:Ea(w,m,y?.name)&&f?To.createElement(pA,{size:12,color:"secondary"}):void 0}),To.createElement(Ey,{size:16}),To.createElement(vr,{list:v,selectedBlockchain:S,searchedFor:m,type:e,onChange:E=>{B(E);let x=T.find(M=>E.blockchain===M.name);x&&N(x),n()}})))}i(Aa,"SelectSwapItemsPage");import{i18n as ip}from"@lingui/core";import{Alert as UA,Button as zA,styled as QA}from"@rango-dev/ui";import Go from"react";import{useInRouterContext as HA,useSearchParams as qA}from"react-router-dom";import{i18n as My}from"@lingui/core";import{Alert as yA,Divider as np,InfoIcon as SA,SlippageIcon as CA,TextField as kA,Tooltip as TA,Typography as Ly}from"@rango-dev/ui";import Qe from"react";import{Chip as fA,styled as _r,TextField as gA}from"@rango-dev/ui";var Iy=_r("div",{paddingTop:"$5",padding:"$10 $5"}),Ay=_r("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${gA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Ny=_r("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Na=_r("div",{maxWidth:"280px",padding:"$10"}),By=_r(fA,{width:"61px",flexShrink:0});import{i18n as op}from"@lingui/core";import{Typography as hA}from"@rango-dev/ui";import Dr from"react";function Wy(){return Dr.createElement(Na,null,Dr.createElement(hA,{variant:"label",size:"medium",color:"neutral700"},op.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Dr.createElement("br",null),Dr.createElement("br",null),Dr.createElement("b",null,op.t("Warning")),":\xA0",op.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(Wy,"SlippageTooltipContent");function rp(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=k(),r=o!==null?rn(o):null,a=i(l=>{let p=l.target.value,u=parseFloat(p);if(isNaN(u))return n(null);let d=u;u>Hn&&(d=Hn),n(d)},"onSlippageValueChange"),s=i(l=>{o!==null&&n(null),e(l)},"onClickSlippageChip"),c=i(l=>{let p=l.target,u=p.value;mu(u)||(p.value=u.slice(0,-1))},"onInput");return Qe.createElement(Iy,null,Qe.createElement(Ny,null,Qe.createElement(CA,{size:16,color:"gray"}),Qe.createElement(np,{direction:"horizontal",size:4}),Qe.createElement(Ly,{variant:"title",size:"xmedium"},My.t("Slippage tolerance per swap")),Qe.createElement(np,{direction:"horizontal",size:4}),Qe.createElement(TA,{container:W(),side:"top",sideOffset:4,content:Qe.createElement(Wy,null)},Qe.createElement(SA,{color:"gray"}))),Qe.createElement(Ay,null,si.map((l,p)=>{let u=`slippage-${p}`;return Qe.createElement(By,{id:`widget-slippage-chip-${l.toString()}%-btn`,key:u,onClick:()=>s(l),selected:o===null&&l===t,label:`${l.toString()}%`})}),Qe.createElement(kA,{type:"number",min:"0.01",max:"30",step:"0.01",status:r?.type||(o?"success":"default"),id:"widget-slippage-chip-text-input",onInput:c,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:a,suffix:o&&Qe.createElement(Ly,{variant:"body",size:"small"},"%"),placeholder:My.t("Custom")})),r&&Qe.createElement(Qe.Fragment,null,Qe.createElement(np,{size:10}),Qe.createElement(yA,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(rp,"Slippage");import{i18n as vt}from"@lingui/core";import{AutoThemeIcon as Py,BridgesIcon as wA,ChevronRightIcon as Ba,DarkModeIcon as _y,Divider as $r,ExchangeIcon as vA,InfinityIcon as bA,InfoIcon as xA,LanguageIcon as EA,LightModeIcon as Dy,List as IA,ListItem as AA,ListItemButton as NA,Skeleton as BA,styled as WA,Switch as MA,Tabs as LA,TargetIcon as PA,Tooltip as _A,Typography as st}from"@rango-dev/ui";import F from"react";import{useNavigate as DA}from"react-router-dom";var $A=WA("div",{width:"202px",height:"$40"}),FA=[{id:"light",icon:F.createElement(Dy,{color:"black",size:24}),tooltip:F.createElement(st,{size:"xsmall",variant:"body"},vt.t("Light"))},{id:"dark",icon:F.createElement(_y,{color:"black",size:24}),tooltip:F.createElement(st,{size:"xsmall",variant:"body"},vt.t("Dark"))},{id:"auto",icon:F.createElement(Py,{color:"black",size:24}),tooltip:F.createElement(st,{size:"xsmall",variant:"body"},vt.t("Auto"))}],OA=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return F.createElement(Py,{...e});case"dark":return F.createElement(_y,{...e});default:return F.createElement(Dy,{...e})}},"getThemeIcon");function $y(){let t=DA(),{theme:e}=k().config,{setTheme:o,theme:n}=k(),{activeLanguage:r,languages:a}=ko(),s=a.find(L=>L.local===r)?.label,c=k().fetchStatus,l=k().swappers(),p=k().getDisabledLiquiditySources(),{config:{features:u}}=k(),d=k().customTokens(),f=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),m=nt("customTokens",u),C=k().infiniteApprove,y=k().toggleInfiniteApprove,S=pi(l,p),T=S.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),w=T.length,v=T.filter(L=>L.selected).length,N=S.filter(L=>L.type==="DEX"),B=N.length,b=N.filter(L=>L.selected).length,E=i((L,Y)=>{switch(c){case"loading":return F.createElement(BA,{variant:"text",size:"medium",width:50});case"failed":return F.createElement(st,{variant:"body",size:"medium",color:"$error500"},vt.t("Loading failed"));default:return F.createElement(st,{variant:"body",size:"medium"},`${L} / ${Y}`)}},"handleSwapperEndItem"),x={id:"widget-setting-bridge-item-btn",title:F.createElement(st,{variant:"title",size:"xmedium"},vt.t("Bridges")),end:F.createElement(F.Fragment,null,E(v,w),F.createElement($r,{direction:"horizontal",size:8}),F.createElement(Ba,{color:"black"})),onClick:()=>t(O.bridges),start:F.createElement(wA,{color:"gray",size:16})},M={id:"widget-setting-exchange-item-btn",title:F.createElement(st,{variant:"title",size:"xmedium"},vt.t("Exchanges")),end:F.createElement(F.Fragment,null,E(b,B),F.createElement($r,{direction:"horizontal",size:8}),F.createElement(Ba,{color:"black"})),start:F.createElement(vA,{color:"gray",size:16}),onClick:()=>t(O.exchanges)},I={id:"widget-setting-custom-tokens-item-btn",title:F.createElement(st,{variant:"title",size:"xmedium"},vt.t("Custom Tokens")),end:F.createElement(F.Fragment,null,F.createElement(st,{variant:"body",size:"medium"},`${d.length}`),F.createElement($r,{direction:"horizontal",size:8}),F.createElement(Ba,{color:"black"})),start:F.createElement(PA,{color:"gray",size:16}),onClick:()=>t(O.customTokens)},_={id:"widget-setting-language-item-btn",title:F.createElement(st,{variant:"title",size:"xmedium"},vt.t("Language")),start:F.createElement(EA,{color:"gray",size:16}),end:F.createElement(F.Fragment,null,F.createElement(st,{variant:"body",size:"medium"},s),F.createElement($r,{direction:"horizontal",size:8}),F.createElement(Ba,{color:"black"})),onClick:()=>t(O.languages)},U={id:"widget-setting-infinite-approval-item-btn",title:F.createElement(F.Fragment,null,F.createElement(st,{variant:"title",size:"xmedium"},vt.t("Infinite approval")),F.createElement($r,{direction:"horizontal",size:4}),F.createElement(_A,{side:"top",sideOffset:4,container:W(),content:F.createElement(Na,null,F.createElement(st,{variant:"label",size:"medium",color:"neutral700"},F.createElement("b",null,vt.t("Warning")),":\xA0",vt.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},F.createElement(xA,{color:"gray"}))),start:F.createElement(bA,{color:"gray",size:16}),end:F.createElement(MA,{checked:C}),onClick:y},q={id:"widget-setting-theme-item-btn",type:F.createElement(AA,null),title:F.createElement(st,{variant:"title",size:"xmedium"},vt.t("Theme")),end:F.createElement($A,null,F.createElement(LA,{container:W(),items:FA,value:n,className:"widget-setting-theme-item-tabs-container",onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:OA(n)},j=h?[]:[x,M];return m||j.push(I),g||j.push(_),j.push(U),!e?.singleTheme&&!f&&j.push(q),F.createElement(IA,{type:F.createElement(NA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:j})}i($y,"SettingsLists");var GA=QA("div",{paddingLeft:"$8"});function Fy(){let{isInCampaignMode:t,updateCampaignMode:e}=k(),o=t(),[,n]=qA(),r=HA(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Go.createElement(ie,{header:{title:ip.t("Settings")}},Go.createElement(se,null,o&&Go.createElement(UA,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:ip.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:Go.createElement(GA,null,Go.createElement(zA,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},ip.t("Reset")))}),Go.createElement(rp,null),Go.createElement($y,null)))}i(Fy,"SettingsPage");import{i18n as e0}from"@lingui/core";import{cancelSwap as t0}from"@rango-dev/queue-manager-rango-preset";import{useManager as o0}from"@rango-dev/queue-manager-react";import{Alert as n0}from"@rango-dev/ui";import Tp from"react";import{useParams as r0}from"react-router-dom";import{i18n as zt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as UN,getCurrentStep as zN,getRelatedWalletOrNull as QN}from"@rango-dev/queue-manager-rango-preset";import{Button as WS,Divider as HN,QuoteCost as qN,StepDetails as GN,Typography as gp}from"@rango-dev/ui";import{useWallets as VN}from"@rango-dev/wallets-react";import MS from"bignumber.js";import{PendingSwapNetworkStatus as Mn}from"rango-types";import Se,{useEffect as hp,useRef as yp,useState as Oa}from"react";import{useNavigate as KN}from"react-router-dom";import{i18n as wo}from"@lingui/core";var VA=[wo.t("Sunday"),wo.t("Monday"),wo.t("Tuesday"),wo.t("Wednesday"),wo.t("Thursday"),wo.t("Friday"),wo.t("Saturday")];function Oy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?wo.t("Today"):`${VA[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Oy,"timeSince");function Uy(t){return t.finishTime?Oy(parseInt(t.finishTime)):Oy(parseInt(t.creationTime))}i(Uy,"getSwapDate");import Or from"react";import{i18n as Wa}from"@lingui/core";import{Button as zy,Divider as ap,MessageBox as KA}from"@rango-dev/ui";import vo from"react";var Qy=i(({onCancel:t,onClose:e})=>vo.createElement(vo.Fragment,null,vo.createElement(ap,{size:20}),vo.createElement(KA,{type:"error",title:Wa.t("Cancel Swap"),description:Wa.t("Are you sure you want to cancel this swap?")}),vo.createElement(ap,{size:32}),vo.createElement(zy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Wa.t("Yes, Cancel it")),vo.createElement(ap,{size:12}),vo.createElement(zy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Wa.t("No, Continue"))),"CancelContent");import{i18n as Ma}from"@lingui/core";import{Button as Hy,Divider as sp,MessageBox as jA,Typography as XA}from"@rango-dev/ui";import ro from"react";var qy=i(({onDelete:t,onClose:e})=>ro.createElement(ro.Fragment,null,ro.createElement(sp,{size:20}),ro.createElement(jA,{type:"error",title:Ma.t("Delete Transaction"),description:Ma.t("Are you sure you want to delete this swap?")}),ro.createElement(sp,{size:32}),ro.createElement(Hy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Ma.t("Yes, Delete it")),ro.createElement(sp,{size:12}),ro.createElement(Hy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},ro.createElement(XA,{variant:"title",size:"medium",color:"primary"},Ma.t("No, Cancel")))),"DeleteContent");import{i18n as YA}from"@lingui/core";import{Button as ZA,Divider as JA,MessageBox as RA}from"@rango-dev/ui";import Vo from"react";var Gy=i(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return Vo.createElement(Vo.Fragment,null,Vo.createElement(RA,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&Vo.createElement(Vo.Fragment,null,Vo.createElement(JA,{size:"30"}),Vo.createElement(ZA,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},YA.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as hN,getCurrentStep as yN,getRelatedWalletOrNull as SN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as CN}from"@rango-dev/ui";import{useWallets as kN}from"@rango-dev/wallets-react";import Zy from"react";import{i18n as Bn}from"@lingui/core";import{Alert as Ky,Button as tN,Checkbox as oN,Divider as _a,Image as nN,MessageBox as rN,Spinner as iN,WarningIcon as aN}from"@rango-dev/ui";import{useWallets as sN}from"@rango-dev/wallets-react";import ge,{useState as lN}from"react";import{darkTheme as eN,styled as Fr}from"@rango-dev/ui";var dX=Fr("div",{display:"flex",justifyContent:"center"}),mX=Fr("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),Vy=Fr("img",{width:"100%"}),La=Fr("div",{position:"relative"}),Pa=Fr("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${eN} &`]:{$$color:"$warning600"}});var jy=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=lN(null),{list:s}=bt(),c=oe.use.isActiveTab(),{state:l,connect:p}=sN(),u=s.find(v=>v.type===e.walletType),d=u?.needsNamespace?.data.find(v=>v.value===o?.namespace);if(!u)return null;let f=l(e.walletType),h=u.isHub&&o?.namespace?f.namespaces?.get(o.namespace):null,g=f.connecting||h?.connecting,m=u.isHub?h?.connected:f.connected,C=i(()=>m?Bn.t("Done"):r?Bn.t("Try again"):Bn.t("Connect"),"getButtonTitle"),y=i(()=>g?ge.createElement(iN,{color:"info"}):r||m?null:ge.createElement(oN,{checked:!0,disabled:!0}),"getNamespaceSuffix"),S=i(async()=>{try{a(null),await p(u.type,o?.namespace?[{namespace:o?.namespace,network:void 0,derivationPath:e.derivationPath}]:void 0)}catch(v){a(v)}},"handleConnect"),T=i(async()=>{if(m){n();return}S()},"handleClickButton"),w=i(()=>{if(!m)return null;let v=u?.isHub?h?.accounts?.[0]?.split(":"):f?.accounts?.[0]?.split(":"),N=v?.[v?.length-1];return N?ao(N):null},"getAddress");return ge.createElement(ge.Fragment,null,ge.createElement(rN,{type:"warning",title:Bn.t("Connect {wallet}",{wallet:u.title}),description:Bn.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:ge.createElement(La,null,ge.createElement(nN,{src:u.image,size:45}),ge.createElement(Pa,null,ge.createElement(aN,{color:"warning",size:10})))}),m&&!d&&ge.createElement(ge.Fragment,null,ge.createElement(_a,{size:10}),ge.createElement(Ky,{type:"success",variant:"alarm",title:Bn.t("Wallet connected successfully.")})),r&&!d&&ge.createElement(ge.Fragment,null,ge.createElement(_a,{size:10}),ge.createElement(Ky,{type:"error",title:r?.message,variant:"alarm"})),d&&ge.createElement(ge.Fragment,null,ge.createElement(_a,{size:30}),ge.createElement(Mo,{namespace:d,suffix:y(),error:r?.message,connected:m,address:w()})),ge.createElement(_a,{size:"40"}),ge.createElement(tN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:T,disabled:!c},C()))},"ConnectWalletContent");import{i18n as Xy}from"@lingui/core";import{Button as cN,Divider as pN,Image as uN,MessageBox as dN,WarningIcon as mN}from"@rango-dev/ui";import{useWallets as fN}from"@rango-dev/wallets-react";import{detectInstallLink as gN}from"@rango-dev/wallets-shared";import io from"react";var Yy=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=fN(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(gN(n.installLink),"_blank"),"handleButtonClick");return io.createElement(io.Fragment,null,io.createElement(dN,{type:"warning",title:Xy.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:io.createElement(La,null,io.createElement(uN,{src:n.img,size:45}),io.createElement(Pa,null,io.createElement(mN,{color:"warning",size:10})))}),io.createElement(pN,{size:"40"}),io.createElement(cN,{type:"primary",id:"widget-install-wallet-btn",onClick:r},Xy.t("Install")))},"InstallWalletContent");var Jy=i(t=>{let{swap:e,onClose:o}=t,{state:n}=kN(),r=yN(e),a=r?SN(e,r):null,s=a?.walletType,c=s?Un(n(s)):null,l=r?hN(e,r):null;return s?c===CN.NOT_INSTALLED?Zy.createElement(Yy,{walletType:s}):Zy.createElement(jy,{wallet:a,namespace:l,onClose:o}):null},"WalletStateContent");function lp(t){let{isOpen:e,state:o,switchNetworkModalState:n,onClose:r,onDelete:a,onCancel:s,swap:c,message:l,handleSwitchNetwork:p}=t;return Or.createElement(R,{open:e,onClose:r,container:W()},o==="connectWallet"&&Or.createElement(Jy,{swap:c,message:l,onClose:r}),o==="switchNetwork"&&n&&Or.createElement(Gy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Or.createElement(qy,{onClose:r,onDelete:()=>{r(),a()}}),o==="cancel"&&Or.createElement(Qy,{onClose:r,onCancel:()=>{r(),s()}}))}i(lp,"SwapDetailsModal");import{i18n as Ur}from"@lingui/core";import{Button as cp,Divider as zr,MessageBox as tS,TokenAmount as TN,Typography as oS}from"@rango-dev/ui";import ye from"react";import{Link as wN,useNavigate as vN}from"react-router-dom";var Ry="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",eS="/profile";function pp(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:c,token:l,chain:p,percentageChange:u,description:d,diagnosisUrl:f}=t,h=vN(),{showProfileBanner:g}=oe();return ye.createElement(R,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(ot.SWAP_BOX_ID)||document.body},n==="success"?ye.createElement(tS,{type:"success",title:Ur.t("Swap Successful")},ye.createElement(TN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),ye.createElement(zr,{size:12}),ye.createElement(oS,{variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ye.createElement(tS,{type:"error",title:Ur.t("Transaction Failed"),description:d}),ye.createElement(zr,{size:30}),n==="success"&&ye.createElement(ye.Fragment,null,g&&ye.createElement(ye.Fragment,null,ye.createElement(wN,{to:eS},ye.createElement(Vy,{src:Ry,alt:"Profile Banner"})),ye.createElement(zr,{size:30})),ye.createElement(cp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Ur.t("Done"))),ye.createElement(zr,{size:12}),f&&ye.createElement(ye.Fragment,null,ye.createElement(cp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(f,"_blank")},Ur.t("Diagnosis")),ye.createElement(zr,{size:12})),ye.createElement(cp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ye.createElement(oS,{variant:"title",size:"medium",color:"primary"},Ur.t("See Details"))))}i(pp,"SwapDetailsCompleteModal");import{i18n as Fa}from"@lingui/core";import{CopyIcon as _N,DoneIcon as DN,IconButton as $N,RangoExplorerIcon as FN,Tooltip as xS,Typography as ES,useCopyToClipboard as ON}from"@rango-dev/ui";import Bt from"react";import PN from"react";import{i18n as BN}from"@lingui/core";import{Alert as TS,IconButton as WN,LinkIcon as MN}from"@rango-dev/ui";import bo,{Fragment as LN}from"react";import{Alert as xN,ChevronDownIcon as EN,IconButton as IN}from"@rango-dev/ui";import Wn,{useState as AN}from"react";import{css as Qr,darkTheme as nS,styled as Ut,Typography as bN}from"@rango-dev/ui";var rS=Ut(se,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${nS} &`]:{color:"$secondary500"}}}}}),iS=Ut("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),aS=Ut("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),sS=Ut("div",{padding:"$0 $20 $20 $20"}),hY=Ut("div",{display:"flex",flexDirection:"column",gap:"$10"}),lS=Ut("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),yY=Ut("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),Ko=Qr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${nS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),cS=Qr({padding:"$5 0"}),Da=Qr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),pS=Qr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),uS=Qr({width:"100%",padding:"0 $20 $10"}),dS=Ut("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),mS=Ut("div",{display:"flex",flexDirection:"column",gap:"$5"}),$a=Ut(bN,{wordBreak:"break-word"});import{styled as up}from"@rango-dev/ui";var fS=up("div",{display:"flex",flexDirection:"column",gap:"$10"}),gS=up("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),hS=up("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function yS(t){let{message:e}=t,[o,n]=AN(!1);return Wn.createElement(xN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&Wn.createElement(IN,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},Wn.createElement(gS,{rotated:o},Wn.createElement(EN,{size:12,color:"gray"}))),footer:Wn.createElement(hS,{open:o},Wn.createElement($a,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(yS,"FailedAlert");import{i18n as SS}from"@lingui/core";import{Alert as dp,Button as CS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as NN}from"rango-types";import Hr from"react";function kS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:r,showNetworkModal:a}=t;return e?Hr.createElement(dp,{type:"warning",id:"widget-swap-details-change-network-alert",title:r.shortMessage,action:Hr.createElement(CS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},SS.t("Change"))}):a===NN.WaitingForConnectingWallet?Hr.createElement(dp,{type:"warning",title:r.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Hr.createElement(CS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},SS.t("Connect"))}):Hr.createElement(dp,{id:"widget-swap-details-short-alert",type:"warning",title:r.shortMessage})}i(kS,"WarningAlert");function mp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=or(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,d=u&&!c||p&&!s.explorerUrl?.length;return bo.createElement(fS,null,s.explorerUrl?.map((f,h,g)=>{let m=h+f.url,C=h===g.length-1,y=(C&&u||p)&&!d,S=C&&s.status==="failed";return bo.createElement(LN,{key:m},bo.createElement(TS,{id:"widget-swap-details-tx-alert",type:C&&(y&&"loading"||S&&"error")||"success",title:f.description?`${f.description} Tx`:BN.t("View transaction"),action:f.url&&bo.createElement(WN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},bo.createElement(MN,{size:12}))}))}),d&&bo.createElement(TS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&bo.createElement(kS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a}),s.status==="failed"&&bo.createElement(yS,{message:a}))}i(mp,"SwapDetailsAlerts");var wS=2e3;var vS=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let c=s===0?t.inputAmount:t.steps[s-1]?.outputAmount||t.steps[s-1]?.expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:ht(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:D(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:ht(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:D(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Dn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:ht(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:ht(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:Dn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:PN.createElement(mp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function bS(t){if(or(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(bS,"getStepState");function IS(t){let{requestId:e}=t,[o,n]=ON(wS);return Bt.createElement(aS,{className:Ko()},Bt.createElement(ES,{variant:"label",size:"large",color:"neutral700"},Fa.t("Request ID")),Bt.createElement("div",{className:Da()},Bt.createElement(ES,{variant:"label",size:"small",color:"neutral700"},e),Bt.createElement(xS,{container:W(),content:o?Fa.t("Copied To Clipboard"):Fa.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Bt.createElement($N,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Bt.createElement(DN,{size:16,color:"secondary"}):Bt.createElement(_N,{size:16,color:"gray"}))),Bt.createElement(dS,{target:"_blank",href:`${Yp}/swap/${e}`},Bt.createElement(xS,{container:W(),content:Fa.t("View on Rango Explorer"),side:"bottom"},Bt.createElement(FN,{size:20})))))}i(IS,"RequestIdRow");import{i18n as AS}from"@lingui/core";import{Typography as NS}from"@rango-dev/ui";import fp from"react";function BS(t){let{date:e,isFinished:o}=t;return fp.createElement("div",{className:Ko()},fp.createElement(NS,{variant:"label",size:"large",color:"neutral700"},o?AS.t("Finished at"):AS.t("Created at")),fp.createElement(NS,{variant:"label",size:"small",color:"neutral700"},e))}i(BS,"SwapDateRow");var jN=3e3;function Sp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=VN(),l=k().blockchains(),p=k().swappers(),{findToken:u}=k(),d=z().use.retry(),f=KN(),h=yp(null),[g,m]=Oa(!1),[C,y]=Oa(null),[S,T]=Oa(null),[w,v]=Oa(null),N=yp(C),B=yp(S),b=Be.use.getNotifications(),E=Be.use.removeNotification(),x=b(),M=zN(e),I=M?.networkStatus,_=i(Pe=>{m(!0),y(Pe)},"handleChangeModalState"),U=i(()=>{m(!1)},"handleCloseModal"),q=i(()=>{T({type:"loading",title:zt.t("Change Network"),description:`We\u2019re switching the connected network to ${ee?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),j=i(()=>{T({type:"success",title:zt.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),L=i(Pe=>{T({type:"error",title:zt.t("Network Switch Failed"),description:Pe?.message||ae.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Y=Kd(e),ee=M?UN(e,M):null,Z=M?QN(e,M):null,le=Uy(e),ue=jd(e),we=i(Pe=>!!c(Pe)?.mobileWallet,"checkIsMobileWallet"),ve=!!I&&[Mn.WaitingForNetworkChange,Mn.NetworkChangeFailed].includes(I),qe=!!Z?.walletType&&we(Z.walletType),Ae=!!Z&&!!ee&&a(Z.walletType,ee.network,ee),$=!!ee&&ve&&(qe||Ae),A=i(()=>{$&&(q(),s(Z.walletType,[{namespace:ee.namespace,network:ee.network}]).then(()=>{j()}).catch(Pe=>{L(Pe)}))},"handleSwitchNetwork"),G=i(()=>{_("switchNetwork"),A()},"handleSwitchNetworkClick"),ae=Vd(e,M,c),K=vS({swap:e,switchNetworkIsAvailable:$,handleSwitchNetworkClick:G,showNetworkModal:I,setNetworkModal:_,message:ae,blockchains:l,swappers:p}),X=K.length,[Ge,Ve]=[e.steps[0],e.steps[X-1]],be=Ve?.outputAmount||Ve?.expectedOutputAmountHumanReadable,Mt=e.steps.reduce((Pe,Lt)=>Pe+parseFloat(Lt.feeInUsd||""),0),Ya=e.steps.find(Pe=>Pe.diagnosisUrl)?.diagnosisUrl,Za=D(parseFloat(be||"0")*(Ve?.toUsdPrice||0),4,4),Wp=D(parseFloat(e.inputAmount)*(Ge?.fromUsdPrice||0),4,4),Mp=be?new MS(be).multipliedBy(Ve.toUsdPrice||0).toString():"",uC=new MS(e.inputAmount).multipliedBy(Ge?.fromUsdPrice||0).toString(),Ja=Kt(Wp,Za),Ra=ae.detailedMessage.content||ae.shortMessage,dC=e.status==="success"?zt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:D(be,6,6),token:K[X-1]?.to.token.displayName,conciseAddress:ao(e.wallets[K[X-1]?.to.chain.displayName||""]?.address||""),chain:K[X-1]?.to.chain.displayName}}):Se.createElement(mS,null,Se.createElement(gp,{variant:"body",size:"medium",color:"neutral700",align:"center"},Ra?"":zt.t("Transaction was not sent."),Y?`${zt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Y.outputAmount,symbol:Y.symbol,blockchain:Y.blockchain}})}`:""),Ra&&Se.createElement($a,{align:"center",variant:"body",size:"medium",color:"neutral700"},Se.createElement("b",null,"Reason:")," ",Ra));return hp(()=>{x.find(Lt=>Lt.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),E(e.requestId),U()):w&&v(null))},[e.status,e.requestId]),hp(()=>{if($){if(_("switchNetwork"),I===Mn.WaitingForNetworkChange){q();return}if(I===Mn.NetworkChangeFailed){L();return}return}if(I===Mn.WaitingForConnectingWallet){_("connectWallet");return}if(I===Mn.NetworkChanged){_("switchNetwork"),j();return}C&&["connectWallet","switchNetwork"].includes(C)&&U()},[I]),hp(()=>{if(N.current=C,B.current=S,C==="switchNetwork"&&S?.type==="success"){let Pe=setTimeout(()=>{N.current==="switchNetwork"&&B.current?.type==="success"&&U()},jN);return()=>clearTimeout(Pe)}},[C,S]),Se.createElement(ie,{header:{title:zt.t("Swap Details"),onCancel:e.status==="running"?()=>_("cancel"):void 0,suffix:e.status!=="running"&&Se.createElement(uo,null,Se.createElement(WS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>_("delete")},Se.createElement(gp,{size:"medium",variant:"label",color:"error"},zt.t("Delete"))))},footer:ue&&!w&&Se.createElement(WS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let Pe=xi(e,l,u);d(Pe),setTimeout(()=>{f("../../")},0)}},zt.t("Try again"))},Se.createElement(rS,{compact:!0,ref:h},Se.createElement(IS,{requestId:o}),Se.createElement(BS,{date:le,isFinished:!!e.finishTime}),Se.createElement("div",{className:pS()},Se.createElement(qN,{fee:D(String(Mt),2,2),time:Fn(ti(e.steps)),steps:X}),Se.createElement(fr,{from:{price:{value:D(e.inputAmount,6,6),usdValue:Wp,realUsdValue:uC,realValue:e.inputAmount},token:{displayName:K[0]?.from.token.displayName||"",image:K[0]?.from.token.image},chain:{image:K[0]?.from.chain.image,displayName:K[0]?.from.chain.displayName||""}},to:{price:{value:D(be,6,6),usdValue:Za,realUsdValue:Mp,realValue:be||""},token:{displayName:K[X-1]?.to.token.displayName||"",image:K[X-1]?.to.token.image},chain:{image:K[X-1]?.to.chain.image,displayName:K[X-1]?.to.chain.displayName||""}},percentageChange:D(Ja,2,2),warningLevel:jt(Ja??0)})),Se.createElement("div",{className:uS()},Se.createElement(gp,{variant:"title",size:"small"},zt.t("Swaps steps"))),Se.createElement(HN,{size:8}),Se.createElement(sS,null,K.map((Pe,Lt)=>{let Lp=Lt,_n=e.steps[Lt]&&bS(e.steps[Lt]),mC=_n==="error"||_n==="in-progress"||_n==="warning"||_n==="completed"&&Lt===K.length-1;return Se.createElement(GN,{className:"widget-swap-details-step-item-container",key:Lp,step:Pe,type:"swap-progress",ref:h,state:_n,hasSeparator:Lt!==0,tabIndex:Lp,isFocused:mC,tooltipContainer:W()})}))),Se.createElement(lp,{isOpen:g,state:C,switchNetworkModalState:S,onClose:U,onCancel:r,onDelete:n,message:ae.detailedMessage.content,swap:e,handleSwitchNetwork:G}),Se.createElement(pp,{open:!!w,diagnosisUrl:Ya,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:D(be,6,6),usdValue:Za,realUsdValue:Mp,realValue:be||"",percentageChange:D(Ja,2,2),token:{displayName:K[X-1]?.to.token.displayName||"",image:K[X-1]?.to.token.image},chain:{image:K[X-1]?.to.chain.image},description:dC}))}i(Sp,"SwapDetails");import{i18n as za}from"@lingui/core";import{Divider as _S,NotFound as RN,Skeleton as Gr,Typography as Qa}from"@rango-dev/ui";import Ie from"react";import{i18n as XN}from"@lingui/core";import{Divider as YN,Skeleton as ZN,Typography as JN}from"@rango-dev/ui";import Ee from"react";import{css as Wt,styled as Cp}from"@rango-dev/ui";var LS=Cp("div",{width:"100%",height:"100%",padding:"$10 $20"}),qr=Cp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Ua=Cp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),q7=Wt({display:"flex",justifyContent:"space-between",alignItems:"center"}),G7=Wt({display:"flex",justifyContent:"space-between",alignItems:"center"}),V7=Wt({paddingTop:"$15",display:"flex"}),K7=Wt({padding:"$15 $0"}),j7=Wt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),X7=Wt({paddingBottom:"$10"}),Y7=Wt({display:"flex",justifyContent:"start",alignItems:"center"}),Z7=Wt({paddingTop:"$5",display:"flex",alignItems:"center"}),J7=Wt({display:"flex",alignItems:"center"}),R7=Wt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),PS=Wt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function kp(){return Ee.createElement(LS,null,Ee.createElement(hr,{type:"swap-preview"}),Ee.createElement("div",{className:"swaps-steps"},Ee.createElement(JN,{variant:"title",size:"small"},XN.t("Swaps steps"))),Ee.createElement(Ee.Fragment,null,Ee.createElement(qr,null,Ee.createElement(Ft,{separator:!1}),Ee.createElement("div",{className:PS()},Ee.createElement(YN,{direction:"horizontal",size:20}),Ee.createElement(ZN,{height:22,variant:"rectangular"}))),Ee.createElement(Ua,null),Ee.createElement(qr,null,Ee.createElement(Ft,{separator:!1})),Ee.createElement(Ua,null),Ee.createElement(qr,null,Ee.createElement(Ft,{separator:!1})),Ee.createElement(Ua,null),Ee.createElement(qr,null,Ee.createElement(Ft,{separator:!1}))))}i(kp,"LoadingSwapDetails");function DS(t){let{requestId:e,showSkeleton:o}=t;return Ie.createElement(ie,{header:{title:za.t("Swap Details"),suffix:Ie.createElement(uo,null)}},o&&Ie.createElement(iS,null,Ie.createElement("div",{className:Ko()},Ie.createElement(Qa,{variant:"label",size:"large",color:"neutral700"},`${za.t("Request ID")}`),Ie.createElement("div",{className:Da()},Ie.createElement(Qa,{variant:"label",size:"small",color:"neutral700"},Ie.createElement(Gr,{width:60,height:10,variant:"rounded"})),Ie.createElement(_S,{direction:"horizontal",size:4}),Ie.createElement(Gr,{width:16,height:16,variant:"rectangular"}),Ie.createElement(_S,{direction:"horizontal",size:4}),Ie.createElement(Gr,{width:16,height:16,variant:"rectangular"}))),Ie.createElement("div",{className:Ko()},Ie.createElement(Qa,{className:cS(),variant:"label",size:"large",color:"neutral700"},Ie.createElement(Gr,{width:60,height:10,variant:"rounded"})),Ie.createElement(Qa,{variant:"label",size:"small",color:"neutral700"},Ie.createElement(Gr,{width:60,height:10,variant:"rounded"}))),Ie.createElement(kp,null)),!o&&Ie.createElement(lS,null,Ie.createElement(RN,{title:za.t("Not found"),description:za.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(DS,"SwapDetailsPlaceholder");function $S(){let{manager:t,state:e}=o0(),o=!e.loadedFromPersistor,n=wt(t),{requestId:r}=r0(),a=Xe(),{fetchStatus:s}=k();if(!r)return Tp.createElement(n0,{containerStyles:{margin:"20px"},type:"error",title:e0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=r?n.find(({swap:f})=>f.requestId===r):void 0,p=i(()=>{if(l?.id){let f=t?.get(l.id);f&&t0(f)}},"onCancel"),u=i(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(f){console.log(f)}},"onDelete"),d=l?.swap;return!d||c?Tp.createElement(DS,{requestId:r,showSkeleton:c}):Tp.createElement(Sp,{swap:d,requestId:r,onCancel:p,onDelete:u})}i($S,"SwapDetailsPage");import{i18n as FS}from"@lingui/core";import{Divider as i0,getCategoriesCount as a0,SelectableCategoryList as s0,styled as US,Typography as l0,Wallet as c0,WalletState as p0}from"@rango-dev/ui";import{useWallets as u0}from"@rango-dev/wallets-react";import Qt,{useState as OS}from"react";var d0=US("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),m0=US(se,{textAlign:"center"});function zS(){let{fetchStatus:t}=k(),[e,o]=OS("ALL"),n=k().blockchains(),{config:r}=k(),{state:a}=u0(),{checkHasDeepLink:s,getWalletLink:c}=sn(),[l,p]=OS(),u=oe.use.isActiveTab(),{list:d}=bt(),f=xu(d,n),g=a0(f)!==1,m=Eu(d,e),C=i(y=>{au(d,r.multiWallets)||p(y)},"handleWalletItemClick");return Qt.createElement(ie,{header:{title:FS.t("Connect Wallets")}},Qt.createElement(m0,null,g&&Qt.createElement(Qt.Fragment,null,Qt.createElement(s0,{setCategory:o,category:e,blockchains:f,isLoading:t==="loading"}),Qt.createElement(i0,{size:24})),Qt.createElement(l0,{variant:"title",size:"xmedium",align:"center"},FS.t("Choose a wallet to connect.")),Qt.createElement(d0,null,m.map((y,S)=>{let w=a(y.type).namespaces,v=`wallet-${S}-${y.type}`,N=cs(y,w);return Qt.createElement(c0,{key:v,...y,state:N?p0.PARTIALLY_CONNECTED:y.state,hasDeepLink:s(y.type),link:c(y.type),container:W(),onClick:()=>C(y),isLoading:t==="loading",disabled:!u})}),Qt.createElement(Rn,{id:"widget-state-full-connect-modal",wallet:l,onClose:()=>{p(void 0)}}))))}i(zS,"WalletsPage");function QS(){return im(),Xs(),f0([{path:O.home,element:He.createElement(iy,null)},{path:O.routes,element:He.createElement(py,null)},{path:O.fromSwap,children:[{index:!0,element:He.createElement(Aa,{type:"source"})},{path:O.blockchains,element:He.createElement(ba,{type:"source"})}]},{path:O.toSwap,children:[{index:!0,element:He.createElement(Aa,{type:"destination"})},{path:O.blockchains,element:He.createElement(ba,{type:"destination"})}]},{path:O.settings,children:[{index:!0,element:He.createElement(Fy,null)},{path:O.languages,element:He.createElement(sy,null)},{path:O.exchanges,element:He.createElement(Vc,{sourceType:"Exchanges"})},{path:O.bridges,element:He.createElement(Vc,{sourceType:"Bridges"})},{path:O.customTokens,children:[{index:!0,element:He.createElement(ah,null)},{path:O.addCustomTokens,children:[{index:!0,element:He.createElement(Rm,null)},{path:O.blockchains,element:He.createElement(ba,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:O.swaps,children:[{index:!0,element:He.createElement(Eh,null)},{path:O.swapDetails,element:He.createElement($S,null)}]},{path:O.wallets,element:He.createElement(zS,null)},{path:O.confirmSwap,element:He.createElement(qg,null)}])}i(QS,"AppRoutes");import{useQueueManager as W0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as M0}from"rango-sdk";import{useContext as L0,useEffect as xp,useState as eC}from"react";import{Provider as C0}from"@rango-dev/wallets-react";import Ha,{createContext as k0,useEffect as KS,useMemo as T0,useRef as jS}from"react";import{useEffect as g0}from"react";function HS(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(HS,"hashProviders");function wp(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=k(),a=n();return g0(()=>{o(),r()},[HS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(wp,"useWalletProviders");import{legacyFormatAddressWithNetwork as h0,legacyReadAccountAddress as qS}from"@rango-dev/wallets-core/legacy";import{Events as Ln}from"@rango-dev/wallets-react";import{isEvmBlockchain as y0}from"rango-sdk";function GS(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=k(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(y0).map(m=>m.name),u=i((m,C)=>{let[y,,S,T,w]=m,v={walletType:y,network:T.network??void 0,accounts:S};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let N=ls(y,S,p,C.supportedChainNames,w.isContractWallet);N.length&&e(N,w.namespace,T.derivationPath)},"onAccountsEvent"),d=i((m,C,y,S,T)=>{if(C===Ln.ACCOUNTS){let w=zn(T.supportedBlockchains);y&&u([m,C,y,S,T],{supportedChainNames:w})}C===Ln.PROVIDER_DISCONNECTED&&(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),C===Ln.NAMESPACE_DISCONNECTED&&n(m,y)},"handleUpdatesForHub"),f=i((m,C,y,S,T)=>{if(C===Ln.ACCOUNTS){let w=zn(T.supportedBlockchains),v=[],N=[];if(y?.forEach(b=>{let{network:E}=qS(b);p.includes(E)?v.push(b):N.push(b)}),r.filter(b=>b.walletType===m).map(b=>h0(b.address,b.chain)).length>0){if(v.length>0){let b=ls(m,v,p,w,T.isContractWallet);a(m,{chains:b.map(E=>E.chain)})}N.length>0&&a(m,{chains:N.map(b=>{let{network:E}=qS(b);return E})})}y?u([m,C,y,S,T],{supportedChainNames:w}):(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),h=i((m,C,y,S,T)=>{if(C===Ln.CONNECTED&&y){let w={walletType:m,network:S.network??void 0,accounts:S.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(C===Ln.NETWORK&&y){let w={walletType:m,network:y,accounts:S.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((m,C,y,S,T)=>{T.isHub?d(m,C,y,S,T):f(m,C,y,S,T),h(m,C,y,S,T)},"handler")}}i(GS,"useUpdates");import{LegacyEvents as S0}from"@rango-dev/wallets-core/legacy";function VS(t,e){let[o,n,r,a,s]=e;n!==S0.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(VS,"propagateEvents");var qa=k0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function w0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=k(),a=k().blockchains(),s=k().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=wp(s.wallets,c),p=jS(),u=jS(),{handler:d}=GS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});KS(()=>{n().catch(console.log)},[]),KS(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let f=oe.use.isActiveTab(),h=T0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Ha.createElement(qa.Provider,{value:h},Ha.createElement(C0,{allBlockChains:a,providers:l,onUpdateState:(g,m,C,y,S)=>{let T=[g,m,C,y,S];d(...T),t.onUpdateState&&VS(t.onUpdateState,T)},autoConnect:!!f,configs:{wallets:s.wallets}},t.children))}i(w0,"Main");function Ga(t){let{config:e,...o}=t;return Ha.createElement(Gu,{config:e},Ha.createElement(w0,{...o,config:e}))}i(Ga,"WidgetWallets");import{globalCss as v0}from"@rango-dev/ui";var XS=i(()=>v0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");import{useWallets as b0}from"@rango-dev/wallets-react";import{useEffect as x0,useRef as E0}from"react";function YS(){let{connect:t,state:e}=b0(),o=E0({}),{fetchStatus:n}=k(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);x0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(YS,"useForceAutoConnect");import{isApprovalTX as I0,RouteEventType as ZS,StepEventType as JS,StepExecutionEventStatus as A0,WidgetEvents as Va}from"@rango-dev/queue-manager-rango-preset";import{useEffect as RS}from"react";function vp(){let t=Be.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=k();RS(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===JS.TX_EXECUTION&&s.status===A0.TX_SENT&&!I0(c)||s.type===JS.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let f=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);f&&u.push(f)}if(c?.fromBlockchain!==c?.toBlockchain){let f=l.wallets[c?.toBlockchain];if(f){let h=e.find(g=>g.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&g.walletType===f.walletType&&g.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let f=n(),g=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(m=>f.some(C=>C.blockchain===m.blockchain&&C.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&C.symbol?.toLocaleLowerCase()===m.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return Ce.on(Va.StepEvent,r),()=>Ce.off(Va.StepEvent,r)},[Ce,e]),RS(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===ZS.FAILED||s.type===ZS.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return Ce.on(Va.RouteEvent,r),()=>Ce.off(Va.RouteEvent,r)},[Ce])}i(vp,"useSubscribeToWidgetEvents");import{useManager as N0}from"@rango-dev/queue-manager-react";import{useEffect as B0}from"react";function bp(){let{isSynced:t,syncNotifications:e}=Be(),{manager:o,state:n}=N0();B0(()=>{Be.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(wt(o))},[Be.persist.hasHydrated(),n.loadedFromPersistor,t])}i(bp,"useSyncNotifications");function Ep(){YS(),XS(),vp(),bp();let t=k().blockchains(),{canSwitchNetworkTo:e}=Ki(),[o,n]=eC(null),[r,a]=eC(),s=L0(qa),c=t.filter(M0);xp(()=>()=>nm(),[]),xp(()=>()=>rm(),[]),W0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),xp(()=>(Wo.init(),Be.persist.hasHydrated()||Be.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),Wo.destroy),[])}i(Ep,"useBootstrap");import{styled as P0}from"@rango-dev/ui";var tC=P0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function jo(){Ep();let{config:t}=k(),{activeTheme:e}=po(t?.theme||{}),{activeLanguage:o}=ko();return Ip.createElement(_0,{language:o},Ip.createElement(tC,{id:"swap-container",className:e()},Ip.createElement(QS,null)))}i(jo,"Main");import{setSolanaSignerConfig as tB}from"@rango-dev/signer-solana";import Np,{useEffect as Bp,useMemo as oB}from"react";function oC(){let{setWatermark:t,setShowProfileBanner:e}=oe();return{fetchApiConfig:i(async()=>{let n=await fetch(`${qt("BASE_URL")}/meta/dapp/config?apiKey=${qt("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(oC,"useFetchApiConfig");import{useState as D0}from"react";var $0=i(()=>{let[t,e]=D0(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=iu(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),nC=$0;import{checkWaitingForNetworkChange as F0,makeQueueDefinition as O0}from"@rango-dev/queue-manager-rango-preset";import{Provider as U0}from"@rango-dev/queue-manager-react";import{useWallets as z0}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as Q0}from"@rango-dev/wallets-shared";import{isEvmBlockchain as H0}from"rango-types";import q0,{useMemo as G0}from"react";function V0(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=z0(),c=G0(()=>O0({API_KEY:t.apiKey||qt("API_KEY"),BASE_URL:qt("BASE_URL"),emitter:{emit:Ce.emit}}),[t.apiKey]),{blockchains:l,connectedWallets:p}=k(),u=l(),d={blockchains:p.map(w=>({accounts:[w],name:w.chain}))},f=i(async(w,v)=>a(w,v.network,v)?await r(w,[v]):void 0,"switchNetwork"),h=i(w=>!!s(w).mobileWallet,"isMobileWallet"),g=u.filter(w=>w.enabled).reduce((w,v)=>(w[v.name]=v,w),{}),m=u.filter(H0),C=i(w=>{let{supportedChains:v}=s(w);return zn(v)},"getSupportedChainNames"),y=e(),S={meta:{blockchains:g,evmBasedChains:m,evmNetworkChainInfo:Q0(m),getSupportedChainNames:C},getSigners:o,wallets:d,providers:y,switchNetwork:f,canSwitchNetworkTo:a,state:n,isMobileWallet:h},T=oe.use.isActiveTab();return q0.createElement(U0,{queuesDefs:[c],context:S,onPersistedDataLoaded:w=>{F0(w)},isPaused:!T},t.children)}i(V0,"QueueManager");var rC=V0;import{useManager as Z0}from"@rango-dev/queue-manager-react";import J0,{createContext as R0,useContext as eB}from"react";function iC(){let{findToken:t}=k(),e=k().blockchains(),o=k().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:c}=z()();return i(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:f,toToken:h,requestAmount:g}=p,m={blockchains:e,tokens:o};if(u!==void 0){let C=e.find(y=>y.name===u)??null;n(C)}if(d!==void 0){let C=d?t(d)??null:null;r({meta:m,token:C})}if(f!==void 0){let C=e.find(y=>y.name===f)??null;a(C)}if(h!==void 0){let C=h?t(h)??null:null;s({meta:m,token:C})}g!==void 0&&c(g)},"updateQuoteInputs")}i(iC,"useUpdateQuoteInputs");import{cancelSwap as K0,getCurrentNamespaceOfOrNull as j0,getCurrentStep as X0,getRelatedWalletOrNull as Y0}from"@rango-dev/queue-manager-rango-preset";var Ka=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return wt(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=xi(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&K0(o)}getCurrentStepInfo(e){let o=X0(e);return{step:o,wallet:o?Y0(e,o):null,network:o?j0(e,o)?.network:null}}};var aC=R0(void 0);function Ap(t){let{manager:e}=Z0(),o=oe.use.isActiveTab(),n=z().use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=k(),l=new Ka(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=k(),u=Cu(a()),d=k().blockchains(),f=k().tokens(),h=k().swappers(),g=k().fetchStatus,m=ko().resetLanguage,C=Be().getNotifications(),y=Be().clearNotifications,S=iC(),{fromBlockchain:T,toBlockchain:w,fromToken:v,toToken:N,inputAmount:B}=z()(),b={isActiveTab:o,setCurrentTabAsActive:Wo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async E=>c(E)},meta:{blockchains:d,tokens:f,swappers:h,loadingStatus:g,findToken:r},resetLanguage:m,notifications:{list:C,clearAll:y},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:w?.name??null,toToken:N?{symbol:N.symbol,blockchain:N.blockchain,address:N.address}:null,requestAmount:B},updateQuoteInputs:S}};return J0.createElement(aC.Provider,{value:b},t.children)}i(Ap,"WidgetInfo");function sC(){let t=eB(aC);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(sC,"useWidget");function Pn(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{fetchApiConfig:r}=oC(),{handleLoadCustomFont:a}=nC();return Bp(()=>{r().catch(console.log)},[]),Bp(()=>{n&&a(n)},[n]),oB(()=>{Iu({API_KEY:o?.apiKey||Yr,BASE_URL:o?.apiUrl||Xp})},[o.apiKey,o.apiUrl]),Bp(()=>{t.config?.signers?.customSolanaRPC&&tB("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Np.createElement(Ga,{config:o,onUpdateState:e},Np.createElement(rC,{apiKey:o.apiKey},Np.createElement(Ap,null,t.children)))}i(Pn,"WidgetProvider");function lC(t){let e=t.config?.externalWallets;return ja.createElement(vi,null,e?ja.createElement(jo,null):ja.createElement(Pn,{config:t.config??Jo},ja.createElement(jo,null)))}i(lC,"Refuel");import Xa from"react";function cC(t){let e=t.config?.externalWallets;return Xa.createElement(vi,null,e?Xa.createElement(jo,null):Xa.createElement(Pn,{config:t.config??Jo},Xa.createElement(jo,null)))}i(cC,"Widget");function pC(){let{on:t,off:e}=Ce;return{on:t,off:e}}i(pC,"useWidgetEvents");var jee={DerivationPath:Yn,Namespaces:jn,Detached:Xn,isOnDerivationPath:Jn,isOnNamespace:Zn,isOnDetached:xo};export{See as EventSeverity,on as MainEvents,Aee as Networks,Wee as PendingSwapNetworkStatus,fs as QuoteEventTypes,lC as Refuel,Cee as RouteEventType,ns as SUPPORTED_FONTS,jee as StatefulConnect,kee as StepEventType,Tee as StepExecutionBlockedEventStatus,wee as StepExecutionEventStatus,Cd as SwapModeContext,ot as UI_ID,hs as UiEventTypes,gs as WalletEventTypes,Eee as WalletEvents,Nee as WalletTypes,cC as Widget,on as WidgetEvents,Pn as WidgetProvider,Ga as WidgetWallets,pl as customizedThemeTokens,bee as readAccountAddress,Xo as useStatefulConnect,bt as useWalletList,Ki as useWallets,sC as useWidget,pC as useWidgetEvents,hk as widgetEventEmitter};
3
3
  //# sourceMappingURL=index.js.map