@rango-dev/widget-embedded 0.46.2-next.0 → 0.46.2-next.2

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
1
  var HS=Object.defineProperty;var i=(t,e)=>HS(t,"name",{value:e,configurable:!0});import{EventSeverity as hR,RouteEventType as yR,StepEventType as SR,StepExecutionBlockedEventStatus as CR,StepExecutionEventStatus as TR}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as vR}from"@rango-dev/wallets-core/legacy";import{useWallets as qi,Events as bR}from"@rango-dev/wallets-react";import{Networks as ER,WalletTypes as IR}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as NR}from"rango-types";import{Divider as ak}from"@rango-dev/ui";import no,{useEffect as sk,useRef as lk,useState as od}from"react";import{WalletState as GS}from"@rango-dev/ui";import{useWallets as VS}from"@rango-dev/wallets-react";import{useReducer as KS}from"react";function Sp(t){return!!t.derivationPath}i(Sp,"isStateOnDerivationPathStep");function Cp(t){return!!t.namespace}i(Cp,"isStateOnNamespace");var $r={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function Tp(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 $r;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:$r;default:throw new Error("Action hasn't been defined.")}}i(Tp,"reducer");function Qo(){let{state:t,disconnect:e,connect:o}=VS(),[n,r]=KS(Tp,$r),a=i(async(d,g,h)=>{r({type:"reset"});try{let f=g?.map(m=>({...m,network:void 0}));return await o(d,f),{status:"connected"}}catch(f){let m=f?.message?`Error: ${f.message}`:"An unknown error happened during connecting wallet.";throw new Error(m,{cause:f})}},"runConnect"),s=i(async(d,g)=>{if(d.state===GS.DISCONNECTED){let f=!!d.isHub,m=f?d.properties?.find(y=>y.name==="namespaces")?.value:d.needsNamespace,T=f?d.properties?.find(y=>y.name==="derivationPath")?.value:d.needsDerivationPath;if(!m?.data?.length)return await a(d.type,void 0,g);if(m?.data.length&&m.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:d,defaultSelectedChains:g?.defaultSelectedChains}}),{status:"namespace"};if(m?.data.length===1){if(T){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})),g)}}if(d.isHub){let f=d.properties?.find(m=>m.name==="namespaces")?.value;if(f?.data.length&&f.data.length>1)return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:null}}),{status:"Detached"}}return g?.disconnectIfConnected?(await u(d),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=i(async(d,g)=>{let h=!!d.isHub,f=h?d.properties?.find(k=>k.name==="namespaces")?.value:d.needsNamespace,m=h?d.properties?.find(k=>k.name==="derivationPath")?.value:d.needsDerivationPath,T=f?.selection==="single",y=g[0];if(!y)throw new Error("To confirm a namespace, you should select at least one namespace.");if(T&&m)return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:y}}),{status:"derivation-path"};if(!Cp(n))throw new Error("Something went wrong on handling namespace. Please retry.");let C=g.map(k=>({namespace:k}));return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:C?.map(k=>k.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(!Sp(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let g=n.derivationPath.providerType,f=[{namespace:n.derivationPath.namespace,derivationPath:d}];return await a(g,f)},"handleDerivationPath"),p=i(()=>n,"getState"),u=i(async d=>{let g=t(d.type);return g.connected||g.connecting?(await e(d.type),Co(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(Qo,"useStatefulConnect");import{WalletState as ds}from"@rango-dev/ui";import{useWallets as nT}from"@rango-dev/wallets-react";import{detectMobileScreens as rT,KEPLR_COMPATIBLE_WALLETS as iT,WalletTypes as Dn}from"@rango-dev/wallets-shared";import{useCallback as aT,useEffect as sT}from"react";import JC,{createContext as RC,useContext as eT,useEffect as tT,useRef as oT}from"react";import{create as YC}from"zustand";import{persist as ZC}from"zustand/middleware";import{allProviders as jS}from"@rango-dev/provider-all";var Qa=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()}},Ho=new Qa;import{defineVersions as vp,pickVersion as wp,Provider as Ha}from"@rango-dev/wallets-core";function bp({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=xp(a);return s instanceof Ha?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 Ha?o.push(vp().version("1.0.0",n).build()):o.push(vp().version("0.0.0",n).build())}),o}return t}i(bp,"matchAndGenerateProviders");function xp(t){try{return wp(t,"1.0.0")[1]}catch{return wp(t,"0.0.0")[1]}}i(xp,"pickProviderVersionWithFallbackToLegacy");function Ep(t){return t.map(o=>xp(o)).map(o=>o instanceof Ha?o.id:o.config.type)}i(Ep,"configWalletsToWalletName");function Fr(t,e){return e.find(o=>o.name===t)?.displayName}i(Fr,"getBlockchainDisplayNameFor");function gt(t,e){return e.find(o=>o.name===t)?.shortName}i(gt,"getBlockchainShortNameFor");function Ip(t,e){return e.find(o=>o.name===t)?.logo}i(Ip,"getBlockchainImage");function In(t,e){return e.find(o=>o.id===t)?.title}i(In,"getSwapperDisplayName");function To(t,e){return e.find(o=>o.name===t)??null}i(To,"findBlockchain");function Ga(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(Ga,"isTokenNative");function ht(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(ht,"createTokenHash");function Go(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Go,"isValidTokenAddress");function An(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(c=>{c.forEach(l=>{typeof l!="string"&&(l=ht(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=>{c.has(l)||a(o.tokensMapByBlockchainName[l])})}return s.forEach(c=>{let l=r[c];if(!l&&o.tokensMapByBlockchainName?.[c]){a(o.tokensMapByBlockchainName[c]);return}l&&(l.isExcluded?(a(o.tokensMapByBlockchainName[c]),l.tokens.forEach(p=>{let u=ht(p);delete n[u]})):a(l.tokens))}),Object.values(n)}i(An,"matchTokensFromConfigWithMeta");function Or(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(Or,"getSupportedBlockchainsFromConfig");function Np(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Np,"makeProvidersOptionsFromConfig");var Ur={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"}},XS={clientUrl:void 0},YS={liquiditySources:void 0};function Ap(t){let e=Np(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 jS(o).map(a=>a())}i(Ap,"generateProviders");var Bp=i((t,e,o)=>{let n=Ap({...Ur,...t});return{config:{...Ur,...t},iframe:XS,campaignMode:YS,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=An({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}}),p=An({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}});Ho.set("supportedSourceTokens",l),Ho.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=Ap(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Np(a);return bp({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Wp}from"rango-types";var Lp=[Wp.EVM,Wp.SOLANA],zr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as uC}from"rango-sdk";import{UI_ID as ZS}from"@rango-dev/ui";var qr="c6381a79-2817-4602-83bf-6a641a409e32",Pp="https://api.rango.exchange",Mp="https://explorer.rango.exchange",tt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...ZS};import{BlockchainCategories as rC,WalletState as lt}from"@rango-dev/ui";import{legacyReadAccountAddress as iC}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as aC,getCosmosExperimentalChainInfo as sC,isEvmAddress as lC,KEPLR_COMPATIBLE_WALLETS as OB,Networks as tu}from"@rango-dev/wallets-shared";import Ko from"bignumber.js";import{isCosmosBlockchain as cC}from"rango-types";import JS from"bignumber.js";var ce=new JS(0);import{WalletTypes as RS}from"@rango-dev/wallets-shared";var ko="~",_p=[RS.LEAP];import{BlockchainCategories as Ka,WalletState as nC}from"@rango-dev/ui";import{TransactionType as Qr}from"rango-sdk";var Dp="Roboto",Va=[{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 Vo(t){return Array.from(new Set(t))}i(Vo,"removeDuplicateFrom");function Hr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Hr,"debounce");function st(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(st,"containsText");function Op(t,e){return t.toLowerCase()===e.toLowerCase()}i(Op,"exactText");function Up(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(Up,"startWithText");var N=i(()=>document.getElementById(tt.SWAP_BOX_ID),"getContainer"),vo=i(()=>document.getElementById(tt.EXPANDED_BOX_ID),"getExpanded");function zp(t,e,o){let n=!!e&&Op(e,t),r=!!o&&Op(o,t);return n!==r?n?-1:1:0}i(zp,"compareExactMatchText");function ja(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(ja,"compareContainsText");function Xa(t,e,o){let n=!!e&&Up(e,t),r=!!o&&Up(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(Xa,"compareStartWithText");function qp(t,e,o){if(!o)return 0;let n=zp(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=zp(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=Xa(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ja(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=Xa(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=ja(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=Xa(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=ja(o,t.address,e.address);if(r!==0)return r}return 0}i(qp,"compareWithSearchFor");var Gr=i((t,e)=>{switch(e){case Ka.ALL:return!0;case Ka.UTXO:return t===Qr.TRANSFER;case Ka.OTHER:return t!==Qr.TRANSFER&&t!==Qr.COSMOS&&t!==Qr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),Qp=i(t=>Va.find(o=>o.value===t)?.url,"getFontUrlByName");function Hp(t,e){let o=!!t.find(n=>n.state===nC.CONNECTED);return e===!1&&o}i(Hp,"isSingleWalletActive");function Gp(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(Gp,"memoizedResult");import{BigNumber as Rp}from"bignumber.js";function Vp(t){return t.replace(/^0+(?=\d)/g,"")}i(Vp,"removeLeadingZeros");function Kp(t){return t.replace(/^\.(\d+)/,"0.$1")}i(Kp,"ensureLeadingZeroForDecimal");function jp(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(jp,"formatThousandsWithCommas");function Xp(t){return t.replace(/\s+/g,"-")}i(Xp,"replaceSpacesWithDash");function Yp(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(Yp,"stripTrailingZeros");function Vr(t){return/^0+(?:\.0+)?$/.test(t)}i(Vr,"isZeroValue");function Zp(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(Zp,"isValidCurrencyFormat");function Jp(t){return/\d+$/.test(t)}i(Jp,"isColorKeyOverridden");var Nn=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 Rp(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new Rp(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 Kr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var Wt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Bn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function eu(t){return Vr(t)?"0":Yp(t)}i(eu,"sanitizeInputAmount");function Wn(t){return t.connected?lt.CONNECTED:t.connecting?lt.CONNECTING:t.installed?lt.DISCONNECTED:lt.NOT_INSTALLED}i(Wn,"mapStatusToWalletState");function ou(t,e,o,n){return o.filter(r=>!_p.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:g,isHub:h}=e(r),f=Vo(u.map(T=>T.type)),m=Wn(t(r));return{title:a,image:s,link:aC(c),state:m,type:r,showOnMobile:l,needsNamespace:p,blockchainTypes:f,needsDerivationPath:d,properties:g,isHub:h}})}i(ou,"mapWalletTypesToWalletInfo");function Ln(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Ln,"walletAndSupportedChainsNames");function Za(t,e,o,n,r){let a=[];function s(l,p,u){if(!!!a.find(g=>g.chain===l)){let g={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(g)}}i(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=iC(l),d=c.length>0,g=c.includes(u),h=u===tu.Unknown;if(d&&!g&&!h)return;let m=u===tu.Unknown&&lC(p);if(h&&!m)return;o.includes(u)||m?r?s(u,p.toLowerCase(),r):c.filter(C=>o.includes(C)).forEach(C=>{s(C,p.toLowerCase())}):s(u,p)}),a}i(Za,"prepareAccountsForWalletStore");function wo(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,g=p.to.blockchain,h=a===o.swaps.length-1,f=u===l.length-1;(!h&&!f||h&&c!==d||e==="all")&&n.add(d),e==="all"&&n.add(g)})}e==="all"&&n.add(c)}),Array.from(n)}i(wo,"getQuoteChains");function Pn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Pn,"isAccountAndWalletMatched");var nu=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?Ya(n.usdValue,n.decimals):ce.toFixed();return o.plus(r)},new Ko(ce));return pC(e.toString())},"calculateWalletUsdValue");function pC(t){let e=t.toString().split(".");return e[0]=jp(e[0]),e.join(".")}i(pC,"numberWithThousandSeparator");var Yr=i((t,e)=>{let o=sC(Object.entries(t).map(([,n])=>n).filter(cC));return o&&o[e]?.experimental},"isExperimentalChain");function Ya(t,e){return new Ko(t).shiftedBy(-e).toFixed()}i(Ya,"representAmountInNumber");function Zr(t){if(!t)return null;let e=Ya(t.amount,t.decimals),o=t.usdValue?Ya(t.usdValue,t.decimals):null,n=_(e,8,8),r=o?_(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Zr,"formatBalance");function ru(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new Ko(t.usdValue).shiftedBy(-t.decimals):ce,n=e&&e.usdValue?new Ko(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 Ko(t.amount).shiftedBy(-t.decimals):ce,n=e&&e.amount?new Ko(e.amount).shiftedBy(-e.decimals):ce;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(ru,"compareTokenBalance");function Ot(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Ot,"areTokensEqual");function iu(t,e){return t.map(o=>({isPartiallyConnected:Ja(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(iu,"sortWalletsBasedOnConnectionState");function oo(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(oo,"getConciseAddress");function au({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(au,"getAddress");var su=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function lu(t){return t.map(e=>e.state).join("-")}i(lu,"hashWalletsState");function cu(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(cu,"filterBlockchainsByWalletTypes");function pu(t,e){return e===rC.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(Gr(n,e))return!0;return!1})}i(pu,"filterWalletsByCategory");function Ja(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(Ja,"checkIsWalletPartiallyConnected");var Ra={API_KEY:qr};function Ut(t){return Ra[t]||""}i(Ut,"getConfig");function uu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),Ra=e,Ra}i(uu,"initConfig");var du=20,mu=25,es="theme-widget",ts=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Ot(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Ot(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),os=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),fu=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Jr,ct=i(()=>Jr||(Jr=new uC(Ut("API_KEY"),Ut("BASE_URL")),Jr),"httpService");import{i18n as hu}from"@lingui/core";var Rr=[.5,1,3],ei=1,jo=5,Mn=30,ti=0;var Xe=(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))(Xe||{});import{WidgetEvents as gu}from"@rango-dev/queue-manager-rango-preset";var ns=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(ns||{}),rs=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(rs||{}),is=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(is||{}),Xo=(a=>(a[a.RouteEvent=gu.RouteEvent]="RouteEvent",a[a.StepEvent=gu.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Xo||{});function oi(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Vo(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(oi,"getUniqueSwappersGroups");function yu(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(yu,"sortLiquiditySourcesByGroupTitle");function ot(t,e){return e?.[t]==="hidden"}i(ot,"isFeatureHidden");function Yo(t,e){return e?.[t]==="enabled"}i(Yo,"isRoutingEnabled");var Su=i((t,e,o)=>ot("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function Zo(t){return t==ti?{type:"error",message:hu.t("Slippage must be greater than or equal to 0.01")}:t>jo&&t<=Mn?{type:"warning",message:hu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(Zo,"getSlippageValidation");var Cu=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=Or({config:a}),p=r;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>Lp.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=Ho.get(u);d?.length||(d=An({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Ho.set(u,d)),d=Su(d,s,a.features);let g=e().blockchains({type:o.type});return d.filter(f=>o.blockchain&&f.blockchain!==o.blockchain||!g.some(m=>m.name===f.blockchain)?!1:o.searchFor?!!(st(f.symbol,o.searchFor)||st(f.address||"",o.searchFor)||st(f.name||"",o.searchFor)):!0).sort((f,m)=>{let T=e().isTokenPinned(f,o.type),y=e().isTokenPinned(m,o.type);if(T!==y)return T?-1:1;if(o.getBalanceFor){let A=o.getBalanceFor(f),I=o.getBalanceFor(m),E=ru(A,I);if(E!==0)return E}let C=l.get(f.blockchain),k=l.get(m.blockchain),v=Ga(f,C),x=Ga(m,k);if(v!==x)return v?-1:1;if(f.isPopular!==m.isPopular)return f.isPopular?-1:1;if(o.searchFor){let A=qp(f,m,o.searchFor);if(A)return A}return f.isSecondaryCoin!==m.isSecondaryCoin?f.isSecondaryCoin?1:-1:C&&k?C.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=ht(o),s=n.get(a);return s||(s=r.find(c=>ht(c)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Ot(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(yu)},fetch:async()=>{try{let{routing:o}=e().config,n=Yo("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),d=new Set;r.tokens.forEach(h=>{d.add(h.blockchain),l.push(h)}),r.blockchains.sort((h,f)=>h.sort-f.sort).forEach(h=>{h.enabled&&d.has(h.name)&&a.set(h.name,h)}),l.forEach(h=>{let f=ht(h);c[h.blockchain]||(c[h.blockchain]=[]),s.set(f,h),c[h.blockchain].push(f)}),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 mC,Chinese as Tu,Denmark as fC,English as gC,Finland as hC,French as yC,German as SC,Greece as CC,Hungary as TC,India as kC,Indonesian as vC,Italian as wC,Japanese as bC,Korea as xC,Lithuania as EC,Malay as IC,Netherlands as AC,Pakistan as NC,Philippines as BC,Poland as WC,Portuguese as LC,Russian as PC,SaudiArabia as MC,Serbia as _C,Slovakia as DC,SouthAfrica as $C,Spanish as FC,Swahili as OC,Swedish as UC,Thai as zC,Turkish as qC,Ukrainian as QC,Vietnamese as HC}from"@rango-dev/ui";var ku=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:$C},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:MC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:dC},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:mC},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Tu},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Tu},{title:"Danish",label:"Dansk",local:"da",SVGFlag:fC},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:AC},{title:"English",label:"English",local:"en",SVGFlag:gC},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:BC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:hC},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:yC},{title:"German",label:"Deutsch",local:"de",SVGFlag:SC},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:CC},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:kC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:TC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:vC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:wC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:bC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:xC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:EC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:IC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:WC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:LC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:PC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:_C},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:DC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:FC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:OC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:UC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:zC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:qC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:QC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:NC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:HC}],Jo="en";var vu=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:ei,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=Vo(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||Jo},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||Jo}})},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=Or({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import us from"bignumber.js";import GC from"mitt";var we=GC(),VC={on:we.on,off:we.off};var wu=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 bu from"bignumber.js";function zt(t){return`${t.blockchain}${ko}${t.address}${ko}${t.symbol}`}i(zt,"createAssetKey");function xu(t,e){return`${zt(e)}${ko}${t}`}i(xu,"createBalanceKey");function _n(t){let[e,o,n]=t.split(ko);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(_n,"extractAssetFromBalanceKey");function ss(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[zt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new bu(r??ce).multipliedBy(o[s].amount).toString():""})})}),o}i(ss,"computeNextBalancesWithNewPrices");function ls(t,e){let o={};return t.balances?.forEach(n=>{let r=xu(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new bu(c??ce).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[r]=p}),o}i(ls,"createBalanceStateForNewAccount");function cs(t,e){for(let o in e){let n=_n(o),r=zt(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(cs,"updateAggregatedBalanceStateForNewAccount");function KC(t,e){let o=_n(e),n=zt(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(KC,"removeBalanceFromAggregatedBalance");function ps(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=_n(l);!!n.find(d=>xu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=KC(a,l):r[l]=s[l]}),{_balances:r,_aggregatedBalances:a}}i(ps,"computeNextStateAfterWalletBalanceRemoval");function jC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(jC,"matchWalletDetailsWithConnectedWallet");var XC=Gp(),Eu=wu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Pn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Pn(s,a))?{...a,loading:!1,error:!1,explorerUrl:jC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Pn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n,r)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Pn(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 ct().getMultipleTokenBalance({assets:p.map(({symbol:d,address:g,blockchain:h})=>({symbol:d,address:g,blockchain:h})),walletAddress:l});if(u){let d=e()._balances,g=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let f={blockChain:h.asset.blockchain,balances:[h],address:l},m={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};ss(m,f,d);let T=ls(f,e);g=cs(g,T),d={...d,...T}}),t(h=>({_balances:{...h._balances,...d},_aggregatedBalances:g}))}}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)=>{we.emit("walletEvent",{type:"connect",payload:{walletType:o[0].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}=ps(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(we.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)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(d=>{if(d.failed)return;let g={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};ss(g,d,l);let{_balances:h,_aggregatedBalances:f}=ps(g,r,{chains:[d.blockChain]});if(p=f,l=h,!e().connectedWallets.find(T=>T.walletType===r&&T.address===d.address&&T.chain===d.blockChain))return;let m=ls(d,e);p=cs(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(g=>g.failed).map(g=>({chain:g.blockChain,walletType:r,address:g.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=zt(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let l=a[0];return n[l]}let c=n[a[0]];return a.forEach(l=>{let p=n[l],u=new us(p.amount),d=new us(c.amount);u.isGreaterThan(d)&&(c=p)}),c},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(ko);return p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>XC(()=>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=_n(c);if(p.blockchain===n.chain){let u=e().findToken(p),d=l.amount?new us(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 Iu(t){return YC()(ZC((...e)=>({...Eu(...e),...Cu(...e),...vu(...e),...Bp(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(Iu,"createAppStore");var Au=RC(null);function S(){let t=eT(Au);if(tT(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(S,"useAppStore");function Nu(t){let e=oT();return e.current||(e.current=Iu(t.config)),JC.createElement(Au.Provider,{value:e.current},t.children)}i(Nu,"AppStoreProvider");function vt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=S(),{state:r,getWalletInfo:a}=nT(),s=S().blockchains(),{handleDisconnect:c}=Qo(),l=Ep(n()),p=ou(r,a,l,e);p=rT()?p.filter(m=>m.showOnMobile!==!1&&r(m.type).installed):p;let u=iu(p,r),d=i(m=>!o.find(T=>T.walletType===m&&T.chain===e),"isExperimentalChainNotAdded"),g=aT(()=>{let m=p?.filter(T=>T.state===ds.CONNECTING)||[];for(let T of m)c(T)},[lu(p)]);sT(()=>()=>{g()},[]);let h=i(m=>{let T=m.find(C=>C.type===Dn.DEFAULT);return!T||T.state===ds.NOT_INSTALLED?!1:m.filter(C=>C.state!=ds.NOT_INSTALLED&&![Dn.DEFAULT,Dn.WALLET_CONNECT_2,Dn.LEDGER].includes(C.type)&&a(C.type).supportedChains.filter(k=>k.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),f=i((m,T,y)=>Yr(y,T)&&d(m)&&!iT.includes(m)||m==Dn.DEFAULT&&!h(p),"shouldExcludeWallet");return{list:u.filter(m=>!f(m.type,e??"",s)),terminateConnectingWallets:g}}i(vt,"useWalletList");import{Modal as uT}from"@rango-dev/ui";import dT from"react";import{create as pT}from"zustand";var Bu="rango-widget";var $n=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(Bu),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 cT=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"),Ro=cT;var oe=Ro(pT()((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})}}))),xo=new $n({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 dT.createElement(uT,{hasWatermark:e==="FULL",...t},t.children)}i(R,"WatermarkedModal");import{i18n as on}from"@lingui/core";import{Alert as ET,Button as IT,Divider as pi,Image as AT,MessageBox as NT,RadioRoot as BT}from"@rango-dev/ui";import pe,{useEffect as WT,useMemo as LT,useState as PT}from"react";import{i18n as hT}from"@lingui/core";import{Typography as Fu}from"@rango-dev/ui";import en from"react";function ni(t,e){return t.find(o=>o.name===e)?.logo}i(ni,"getBlockchainLogo");import{darkTheme as mT,Image as fT,styled as qt,Typography as gT}from"@rango-dev/ui";var ri=qt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${mT} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),ii=qt("div",{display:"flex",gap:"$8",alignItems:"center"}),Lu=qt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),Pu=qt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Mu=qt("div",{display:"flex",gap:"$6",alignItems:"center"}),_u=qt("div",{paddingLeft:"48px"}),Du=qt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),$u=qt(gT,{maxWidth:"100px"}),ai=qt(fT,{variants:{disabled:{true:{opacity:"0.5"}}}});function si(t){let{namespace:e}=t,o=S().blockchains();return en.createElement(ri,{unsupported:!0},en.createElement(ii,null,en.createElement(ai,{src:ni(o,e.id),size:40,disabled:!0}),en.createElement(Pu,null,en.createElement(Fu,{variant:"label",size:"large"},e.label),en.createElement(Fu,{variant:"body",size:"xsmall"},hT.t("(Currently not supported)")))))}i(si,"NamespaceUnsupportedItem");import{Checkbox as wT,Radio as bT}from"@rango-dev/ui";import hs from"react";import{i18n as gs}from"@lingui/core";import{ChevronDownIcon as ST,ChevronUpIcon as CT,Divider as TT,Typography as Fn}from"@rango-dev/ui";import Ne,{useEffect as kT,useState as vT}from"react";import{Image as Uu,Tooltip as zu,Typography as yT}from"@rango-dev/ui";import Lt from"react";import{styled as Ou}from"@rango-dev/ui";var ms=Ou("div",{display:"flex",alignItems:"center",padding:0,margin:0}),li=Ou("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 fs=3;function qu(t){let{chains:e}=t;return Lt.createElement(ms,{id:"widget-supported-chains-container"},e.slice(0,fs).map((o,n)=>Lt.createElement(zu,{key:o.name,container:N(),side:"bottom",align:"start",content:o.name,sideOffset:4},Lt.createElement(li,{firstItem:n===0},Lt.createElement(Uu,{src:o.logo,size:15})))),e.length>fs&&Lt.createElement(zu,{container:N(),side:"bottom",align:"start",sideOffset:4,content:Lt.createElement(ms,null,e.map((o,n)=>Lt.createElement(li,{key:o.name,firstItem:n===0},Lt.createElement(Uu,{src:o.logo,size:15}))))},Lt.createElement(li,null,Lt.createElement(yT,{variant:"body",size:"xsmall"},"+",e.length-fs))))}i(qu,"SupportedChainsList");function Eo(t){let{namespace:e,error:o,suffix:n,connected:r,address:a,onClick:s}=t,[c,l]=vT(!1),p=S().blockchains();kT(()=>l(!1),[o]);let u=e.getSupportedChains(p),d=!o&&!r&&u.length>1;return Ne.createElement(ri,{hasError:!!o,clickable:!!s,onClick:s},Ne.createElement(ii,null,Ne.createElement(ai,{src:ni(p,e.id),size:40}),Ne.createElement(Lu,{showSupportedChains:d||r||!!o},Ne.createElement(Mu,null,Ne.createElement(Fn,{variant:"label",size:"large"},e.label),r&&Ne.createElement(Fn,{variant:"body",size:"small",color:"success500"},gs.t("Connected")),!!o&&Ne.createElement(Fn,{variant:"body",size:"small",color:"error500"},gs.t("Connection failed"))),d&&Ne.createElement(qu,{chains:u}),r&&Ne.createElement($u,{variant:"body",size:"small",color:"neutral700"},a),o&&Ne.createElement(Du,{onClick:()=>l(g=>!g)},Ne.createElement(Fn,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},gs.t("See why")),c?Ne.createElement(CT,{size:12,color:"gray"}):Ne.createElement(ST,{size:12,color:"gray"}))),n),!!o&&c&&Ne.createElement(Ne.Fragment,null,Ne.createElement(TT,{size:4}),Ne.createElement(_u,null,Ne.createElement(Fn,{variant:"body",size:"small",color:"neutral700"},o))))}i(Eo,"NamespaceItem");function Qu(t){let{onClick:e,type:o,namespace:n}=t;return hs.createElement(Eo,{namespace:n,onClick:e,suffix:o==="radio"?hs.createElement(bT,{value:n.value}):hs.createElement(wT,{checked:t.value})})}i(Qu,"NamespaceListItem");import{Button as xT,styled as Hu}from"@rango-dev/ui";var ci=Hu("ul",{padding:0,paddingTop:"$16",paddingBottom:"$20",margin:0}),tn=Hu(xT,{minHeight:"$40"});function On(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=S().blockchains(),[l,p]=PT([]),u=LT(()=>a?.data.filter(m=>!m.unsupported),[e?.type]),d=i(m=>{p(r?[m]:T=>T.includes(m)?T.filter(y=>y!==m):T.concat(m))},"onSelect"),g=u?.length===l.length,h=i(()=>{if(r)throw new Error("onSelectAll should not be called on single selection mode.");g?p([]):u&&p(u.map(m=>m.value))},"onSelectAll"),f=i(m=>r?pe.createElement(BT,{value:l?.[0]},m):pe.createElement(pe.Fragment,null,m),"wrapRadioRoot");return WT(()=>{if(!r&&u)if(t.value.defaultSelectedChains?.length){let m=u.filter(T=>T.getSupportedChains(c).some(y=>t.value.defaultSelectedChains?.includes(y.name)));p(m.map(T=>T.value))}else p(u.map(m=>m.value))},[]),pe.createElement(pe.Fragment,null,pe.createElement(NT,{type:"info",title:on.t("Connect {wallet}",{wallet:e.title}),description:on.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:pe.createElement(AT,{src:s,size:45})}),r?pe.createElement(pe.Fragment,null,pe.createElement(pi,{size:20}),pe.createElement(ET,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:on.t("This wallet can only connect to one chain at a time. ")})):pe.createElement(pe.Fragment,null,pe.createElement(pi,{size:30}),pe.createElement(IT,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:h},g?on.t("Deselect all"):on.t("Select all"))),pe.createElement(ci,null,f(pe.createElement(pe.Fragment,null,a?.data.map((m,T,y)=>pe.createElement(pe.Fragment,{key:m.id},m.unsupported?pe.createElement(si,{namespace:m}):pe.createElement(Qu,{value:l.includes(m.value),namespace:m,type:r?"radio":"checkbox",onClick:()=>d(m.value)}),T!==y.length-1&&pe.createElement(pi,{size:10})))))),pe.createElement(pi,{size:20}),pe.createElement(tn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!l.length,onClick:()=>t.onConfirm(l)},on.t("Connect")))}i(On,"Namespaces");import{i18n as ui}from"@lingui/core";import{Button as zT,Divider as Cs,Image as qT,MessageBox as QT}from"@rango-dev/ui";import{useWallets as HT}from"@rango-dev/wallets-react";import Ye from"react";import{styled as MT}from"@rango-dev/ui";var Gu=MT("div",{display:"flex",justifyContent:"end"});import{i18n as ys}from"@lingui/core";import{Button as _T,Spinner as DT}from"@rango-dev/ui";import{useWallets as $T}from"@rango-dev/wallets-react";import Ss,{useLayoutEffect as FT,useRef as OT,useState as UT}from"react";var Vu=i(function(e){let{walletType:o,namespace:n,initialConnect:r}=e,{connect:a,disconnect:s,state:c}=$T(),[l,p]=UT(null),d=c(o).namespaces?.get(n.value),g=d.accounts?.[0]?.split(":"),h=OT(!1);FT(()=>{r&&!h.current&&f(o,n.value)},[]);let f=i(async(y,C)=>{try{h.current=!0,await a(y,[{namespace:C,network:""}])}catch(k){p(k)}finally{h.current=!1}},"handleConnectNamespace"),m=i(async y=>{p(null),y.connected?await s(o,[n.value]):f(o,n.value)},"handleButtonClick"),T=i(()=>d.connected?ys.t("Disconnect"):l?ys.t("Try again"):ys.t("Connect"),"getButtonText");return Ss.createElement(Eo,{namespace:n,connected:d.connected,error:l?.message,address:d.connected?oo(g?.[g?.length-1]):"",suffix:d.connecting?Ss.createElement(DT,{color:"info"}):Ss.createElement(_T,{id:"widget-name-space-connect-btn",variant:"ghost",type:d.connected?"error":"primary",size:"xsmall",onClick:async()=>m(d)},T())})},"NamespaceDetachedItem");function Un(t){let{selectedNamespaces:e,value:o,onDisconnectWallet:n}=t,{targetWallet:r}=o,{state:a}=HT(),s=a(r.type);return Ye.createElement(Ye.Fragment,null,Ye.createElement(QT,{type:"info",title:ui.t("Connect {wallet}",{wallet:r.type}),description:ui.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:Ye.createElement(qT,{src:r.image,size:45})}),Ye.createElement(Cs,{size:30}),Ye.createElement(Gu,null,Ye.createElement(zT,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:s.connecting||!s.connected,onClick:n},ui.t("Disconnect wallet"))),Ye.createElement(ci,{id:"widget-detached-namespace-list",as:"ul"},r.needsNamespace?.data.map((c,l,p)=>Ye.createElement(Ye.Fragment,{key:c.id},c.unsupported?Ye.createElement(si,{namespace:c}):Ye.createElement(Vu,{walletType:r.type,namespace:c,initialConnect:e?.includes(c.value)}),l!==p.length-1&&Ye.createElement(Cs,{size:10})))),Ye.createElement(Cs,{size:20}),Ye.createElement(tn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:t.onConfirm},ui.t("Done")))}i(Un,"Detached");import{i18n as nn}from"@lingui/core";import{Divider as ju,Image as jT,MessageBox as XT,Select as YT,TextField as ZT}from"@rango-dev/ui";import yt,{useEffect as JT,useState as Xu}from"react";import{namespaces as GT}from"@rango-dev/wallets-shared";var di={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Ts(t){let e=t?GT[t].derivationPaths:null;return e?[...e,di]:[]}i(Ts,"getDerivationPaths");import{Button as VT,styled as ks,Typography as KT}from"@rango-dev/ui";var Ku=ks("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),vs=ks(KT,{paddingLeft:"$10"}),ws={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},dM=ks(VT,{minHeight:"$40"});var Yu="0";function zn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=Xu(null),[c,l]=Xu(Yu),p=a===di.id,u=Ts(o),d=i(({value:h})=>{let f=u?.find(m=>m.id===h);f&&(a===di.id&&Number.isNaN(Number(c))&&l(Yu),s(f.id))},"handleDerivationPathItemClick"),g=i(()=>{let h=u.find(f=>f.id===a);if(h)e(h.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return JT(()=>{s(Ts(o)[0]?.id||null)},[o]),yt.createElement(yt.Fragment,null,yt.createElement(ju,{size:20}),yt.createElement(XT,{type:"info",title:nn.t("Select Derivation Path"),description:nn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:yt.createElement(jT,{src:n,size:45})}),yt.createElement(Ku,null,yt.createElement(vs,{variant:"body",size:"xsmall",color:"$neutral600"},nn.t("Choose Derivation Path Template")),yt.createElement(YT,{id:"widget-derivation-path-template-select",value:a||"",options:u.map(h=>({value:h.id,label:h.label})),variant:"filled",handleItemClick:d,styles:{trigger:ws}}),yt.createElement(ju,{size:20}),yt.createElement(vs,{variant:"body",size:"xsmall",color:"$neutral600"},p?nn.t("Enter Path"):nn.t("Enter Index")),yt.createElement(ZT,{id:"widget-derivation-path-template-input",type:p?"text":"number",variant:"contained",value:c,onChange:h=>l(h.target.value),style:ws})),yt.createElement(tn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:g,disabled:!u||!a||!c},nn.t("Confirm")))}i(zn,"DerivationPath");import{i18n as rn}from"@lingui/core";import{Image as tk,MessageBox as bs,WalletState as ok}from"@rango-dev/ui";import{useWallets as nk}from"@rango-dev/wallets-react";import Io from"react";import{keyframes as RT,styled as mi}from"@rango-dev/ui";var wM=mi("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Zu=mi("div",{position:"relative"}),ek=RT({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Ju=mi("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${ek} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),Ru=mi("div",{"& img":{borderRadius:"50%"}});function xs(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=nk();return Wn(a(n))===ok.CONNECTED?Io.createElement(bs,{type:"success",title:rn.t("Wallet Connected"),description:rn.t("Your wallet is connected, you can use it to swap.")}):o?Io.createElement(bs,{type:"error",title:rn.t("Failed to Connect"),description:o||rn.t("Your wallet is not connected. Please try again.")}):Io.createElement(bs,{type:"loading",title:rn.t("Connecting to your wallet"),description:rn.t("Click connect in your wallet popup."),icon:Io.createElement(Zu,null,Io.createElement(Ru,null,Io.createElement(tk,{src:r,size:45})),Io.createElement(Ju,null))})}i(xs,"ConnectStatus");import{i18n as Es}from"@lingui/core";import{Button as rk,Divider as ed,MessageBox as ik}from"@rango-dev/ui";import fi from"react";function Is(t){let{displayName:e,onConfirm:o,id:n}=t;return fi.createElement(ik,{id:n,title:Es.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:Es.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},fi.createElement(ed,{size:18}),fi.createElement(ed,{size:32}),fi.createElement(rk,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Es.t("Confirm")))}i(Is,"ExperimentalChain");function td(t,e){return t().status==="init"&&!!e}i(td,"isOnStatus");function qn(t){return t().status==="namespace"}i(qn,"isOnNamespace");function Qn(t){return t().status==="derivationPath"}i(Qn,"isOnDerivationPath");function Co(t){return t().status==="detached"}i(Co,"isOnDetached");var ck=3e3,pk=300;function Hn(t){let e=lk(),[o,n]=od(!1),[r,a]=od(),s=i(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=vt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:g,handleDisconnect:h}=Qo(),f=i(v=>{u(t.wallet,v).then(k).catch(s)},"handleConfirmNamespaces"),m=i(()=>{y()},"handleDetachedConfirm"),T=i(v=>{if(!v)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(v).then(k).catch(s)},"handleDerivationPathConfirm"),y=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),g(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((v,x)=>{let A=v.status==="connected",I=["disconnected","disconnected-unhandled"].includes(v.status);A?(t.onConnect?.(),x||(e.current=setTimeout(y,ck))):I&&y()},"afterConnected");return sk(()=>{if(t.wallet){C();let v=!1,x=!0;i(()=>{setTimeout(()=>{x=!1,v||n(!0)},pk)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(I=>{["namespace","Detached","derivation-path"].includes(I.status)||(v=!0),k(I,x)}).catch(s)}},[t.wallet]),no.createElement(R,{id:t.id,open:o,onClose:y,onExit:()=>{C(),c(),t.onClose&&t.onClose()},container:N()},td(d,t.wallet)&&no.createElement(no.Fragment,null,no.createElement(xs,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),no.createElement(ak,{direction:"vertical",size:32})),qn(d)&&no.createElement(On,{onConfirm:f,value:d().namespace}),Qn(d)&&no.createElement(zn,{onConfirm:T,value:d().derivationPath}),Co(d)&&no.createElement(Un,{onConfirm:m,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces}))}i(Hn,"StatefulConnectModal");import{Provider as gk}from"@rango-dev/wallets-react";import gi,{createContext as hk,useEffect as sd,useMemo as yk,useRef as ld}from"react";import{useEffect as uk}from"react";function nd(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(nd,"hashProviders");function As(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=S(),a=n();return uk(()=>{o(),r()},[nd(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(As,"useWalletProviders");import{legacyFormatAddressWithNetwork as dk,legacyReadAccountAddress as rd}from"@rango-dev/wallets-core/legacy";import{Events as an}from"@rango-dev/wallets-react";import{isEvmBlockchain as mk}from"rango-sdk";function id(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=S(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(mk).map(m=>m.name),u=i((m,T)=>{let[y,,C,k,v]=m,x={walletType:y,network:k.network??void 0,accounts:C};c.current?c.current(x):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let A=Za(y,C,p,T.supportedChainNames,v.isContractWallet);A.length&&e(A,v.namespace,k.derivationPath)},"onAccountsEvent"),d=i((m,T,y,C,k)=>{if(T===an.ACCOUNTS){let v=Ln(k.supportedBlockchains);y&&u([m,T,y,C,k],{supportedChainNames:v})}T===an.PROVIDER_DISCONNECTED&&(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),T===an.NAMESPACE_DISCONNECTED&&n(m,y)},"handleUpdatesForHub"),g=i((m,T,y,C,k)=>{if(T===an.ACCOUNTS){let v=Ln(k.supportedBlockchains),x=[],A=[];if(y?.forEach(E=>{let{network:b}=rd(E);p.includes(b)?x.push(E):A.push(E)}),r.filter(E=>E.walletType===m).map(E=>dk(E.address,E.chain)).length>0){if(x.length>0){let E=Za(m,x,p,v,k.isContractWallet);a(m,{chains:E.map(b=>b.chain)})}A.length>0&&a(m,{chains:A.map(E=>{let{network:b}=rd(E);return b})})}y?u([m,T,y,C,k],{supportedChainNames:v}):(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),h=i((m,T,y,C,k)=>{if(T===an.CONNECTED&&y){let v={walletType:m,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(T===an.NETWORK&&y){let v={walletType:m,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((m,T,y,C,k)=>{k.isHub?d(m,T,y,C,k):g(m,T,y,C,k),h(m,T,y,C,k)},"handler")}}i(id,"useUpdates");import{LegacyEvents as fk}from"@rango-dev/wallets-core/legacy";function ad(t,e){let[o,n,r,a,s]=e;n!==fk.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(ad,"propagateEvents");var hi=hk({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function Sk(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=S(),a=S().blockchains(),s=S().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=As(s.wallets,c),p=ld(),u=ld(),{handler:d}=id({onConnectWalletHandler:p,onDisconnectWalletHandler:u});sd(()=>{n().catch(console.log)},[]),sd(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let g=oe.use.isActiveTab(),h=yk(()=>({onConnectWallet:f=>{p.current=f},onDisconnectWallet:f=>{u.current=f}}),[]);return gi.createElement(hi.Provider,{value:h},gi.createElement(gk,{allBlockChains:a,providers:l,onUpdateState:(f,m,T,y,C)=>{let k=[f,m,T,y,C];d(...k),t.onUpdateState&&ad(t.onUpdateState,k)},autoConnect:!!g,configs:{wallets:s.wallets}},t.children))}i(Sk,"Main");function yi(t){let{config:e,...o}=t;return gi.createElement(Nu,{config:e},gi.createElement(Sk,{...o,config:e}))}i(yi,"WidgetWallets");import qa from"react";import Ck,{Fragment as Tk}from"react";import{MemoryRouter as kk,useInRouterContext as vk}from"react-router";function cd({children:t}){let o=vk()?Tk:kk;return Ck.createElement(o,null,t)}i(cd,"AppRouter");import{I18nManager as iN}from"@rango-dev/ui";import gp from"react";import qe from"react";import{useRoutes as V0}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as ln,useRef as xi}from"react";import nt from"bignumber.js";import{create as Ek}from"zustand";import{subscribeWithSelector as Ik}from"zustand/middleware";import{i18n as wt}from"@lingui/core";import{getRelatedWalletOrNull as xk,RouteEventType as mD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as wi}from"rango-types";import{i18n as He}from"@lingui/core";var ne=i(()=>({genericServerError:He.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:He.t("Please reset your liquidity sources."),description:He.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:He.t("No Routes Found."),description:He.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:He.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:He.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:He.t("High Price Impact"),title:He.t("Price impact is too high!"),description:He.t("The price impact is significantly higher than the allowed amount."),confirmMessage:He.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:He.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:He.t("USD Price Unknown"),title:He.t("USD Price Unknown, Cannot calculate Price Impact."),description:He.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:He.t("Confirm USD Price Unknown")}}),"errorMessages");function pd(t){return t.type===0?t.diagnosisMessage??ne().noResultError.title:t.type===1?t.diagnosisMessage??ne().genericServerError:""}i(pd,"getQuoteErrorMessage");import{i18n as Si}from"@lingui/core";var Ao=i(()=>({connectWallet:Si.t("Connect Wallet"),swap:Si.t("Swap"),swapAnyway:Si.t("Swap anyway"),ethWarning:Si.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Ns(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(Ns,"getFeeLabel");var Bs=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],ud=100,dd=30,md=15,fd=60;var gd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],hd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as bk}from"@rango-dev/queue-manager-rango-preset";import R_ from"bignumber.js";function Sd(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(Sd,"getRequiredBalanceOfWallet");function Ht(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Ht,"getPriceImpactLevel");function Ci(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=bk(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},c=To(a?a.toBlockchain:n.fromBlockchain,e),l=To(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(Ci,"createRetryQuote");function sn(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=Gn(o),s=St(o);if(o&&a&&s){let p=Qt(a.toString(),s.toString());if(!!p&&wd(a,p)){let d=ki(o?.swaps,n),g=Ht(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:g}}}if(e&&Ed(e,o))return{type:4,usdValueChange:_(St(o)?.minus(St(e)??0).toString()??"0",null,2),percentageChange:_(Qt(St(e)??"1",St(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=vi(o.swaps),l=r>jo;if(xd(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:bd(o,r),minRequiredSlippage:c};return null}i(sn,"generateQuoteWarnings");function Cd(t){return![4].includes(t.type)}i(Cd,"isQuoteWarningConfirmationRequired");function Qt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Ws(t.toString(),e.toString());return n&&n<0?n:null}i(Qt,"getPriceImpact");var Td=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"),Ti=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"),kd=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(c=>c.swapperId));return Array.from(n).every(c=>s.has(c))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),vd=i(t=>{let e=i((o,n)=>{let r=Bs.indexOf(o.value),a=Bs.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function wd(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return gd.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Ge(r)))}i(wd,"hasHighValueLoss");function Id(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Ge(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ge(e.fromAmountMaxValue):null;return e.fromAmountRestrictionType==="EXCLUSIVE"?o?.gte(e.fromAmount)||n?.lte(e.fromAmount):o?.gt(e.fromAmount)||n?.lt(e.fromAmount)}).length>0}i(Id,"hasLimitError");function Ad(t){let e=(t||[]).filter(c=>{let l=c.fromAmountMinValue?new Ge(c.fromAmountMinValue):null,p=c.fromAmountMaxValue?new Ge(c.fromAmountMaxValue):null;return c.fromAmountRestrictionType==="EXCLUSIVE"?l?.gte(c.fromAmount)||p?.lte(c.fromAmount):l?.gt(c.fromAmount)||p?.lt(c.fromAmount)})[0],o=e.fromAmountMinValue?new Ge(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Ge(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=wt.t({id:"Required: >= {min} {symbol}",values:{min:_(o,6,6),symbol:e.from.symbol}}),s=ne().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=wt.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=wt.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=wt.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(Ad,"getLimitErrorMessage");function Nd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:Ao().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!r||r==="0"?{title:Ao().swap,action:"confirm-swap",disabled:!0}:s?{title:Ao().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:Ao().ethWarning,action:"confirm-warning",disabled:!1}:{title:Ao().swap,action:"confirm-swap",disabled:!1}:{title:Ao().connectWallet,action:"connect-wallet",disabled:!1}}i(Nd,"getSwapButtonState");function Ls(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(ce))&&e&&e!=="0"&&n!==0)}i(Ls,"canComputePriceImpact");function Ps(t,e){let o=ce;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Ge(r.amount).multipliedBy(a||0))}return o}i(Ps,"getUsdFeeOfStep");function ki(t,e){return t.reduce((o,n)=>o.plus(Ps(n,e)),ce)}i(ki,"getTotalFeeInUsd");function Ms(t){let e=ce,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}i(Ms,"getUsdFee");function Bd(t){return t.reduce((e,o)=>e.plus(Ms(o)),ce)}i(Bd,"getTotalFeesInUsd");function Wd(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(Wd,"getFeesGroup");function Ld(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(Ld,"checkSlippageErrors");function bd(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(bd,"checkSlippageWarnings");function vi(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(vi,"getMinRequiredSlippage");function xd(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(xd,"hasProperSlippage");function Pd(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:g,destination:h,contractCall:f}=t,m=a?.reduce((C,k)=>(C[k.chain]=k.address,C),{}),T=[];return r?.forEach(C=>{T.push({blockchain:C.chain,addresses:[C.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:d??void 0,affiliateWallets:g??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:T,selectedWallets:m??{},slippage:p.toString(),contractCall:f,...h&&{destination:h},...l&&{swapperGroups:s.concat(c??[]),swappersGroupsExclude:!0},...!l&&{swapperGroups:c?.filter(C=>!s.includes(C)),swappersGroupsExclude:!1}}}i(Pd,"createQuoteRequestBody");function Md(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}i(Md,"getWalletsForNewSwap");function Gn(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}i(Gn,"getUsdInputFrom");function St(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}i(St,"getUsdOutputFrom");function Ws(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(ud).toNumber()}i(Ws,"getPercentageChange");function Ed(t,e){let o=Gn(t),n=St(t),r=St(e);if(!o||!n||!r)return!1;let a=Ws(n.toString(),r.toString());return hd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}i(Ed,"isOutputAmountChangedExcessively");function _d(t,e,o){let n=t.validationStatus,r=wo({filter:"required",quote:t});return e.sort((s,c)=>r.indexOf(s.chain)-r.indexOf(c.chain)).flatMap(s=>Sd(s,n)||[]).filter(s=>!s.ok).map(s=>{let c=s.asset.symbol,l=_(new Ge(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=_(new Ge(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),u="";return s.reason==="FEE"&&(u=wt.t(" for network fee")),s.reason==="INPUT_ASSET"&&(u=wt.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(u=wt.t(" for input and network fee")),wt.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:p,symbol:c,reason:u,currentAmount:l,blockchain:gt(s.asset.blockchain,o)}})})}i(_d,"generateBalanceWarnings");function Vn(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==wi.NetworkChanged}i(Vn,"isNetworkStatusInWarningState");function Dd(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,"")),Vn(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let p=(e?xk(t,e):null)?.walletType,u=p?o?.(p)?.name:null;switch(e?.networkStatus){case wi.WaitingForConnectingWallet:r=u?wt.t("Connect {wallet}",{wallet:u}):r;break;case wi.WaitingForQueue:r=r||wt.t("Waiting for other running tasks to be finished");break;case wi.WaitingForNetworkChange:r=r||wt.t("Waiting for changing wallet network");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(Dd,"getSwapMessages");function $d(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($d,"getLastConvertedTokenInFailedSwap");function Fd(t){return t.status==="failed"}i(Fd,"shouldRetrySwap");function Od(t,e,o,n,r,a){if(!n||t)return!0;let s=wo({filter:"all",quote:n}),c=wo({filter:"required",quote:n}),l=s.every(d=>r.some(g=>g.chain===d)),p=c.every(d=>r.some(g=>g.chain===d)),u=o&&a?Go(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}i(Od,"isConfirmSwapDisabled");function Ud(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Ud,"isTokensIdentical");var bi=i((t,e)=>t?.usdPrice?new nt(e||ce).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),O=Ro(Ek()(Ik(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 Bn(o.inputAmount)?(e&&(n=e?.outputAmount?new nt(e?.outputAmount):null,a=Gn(e)??ce,r=St(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:bi(e.token,o.inputAmount)}})),setToBlockchain:e=>{t(o=>o.toBlockchain?.name===e?.name?{}:{toBlockchain:e,...o.toToken&&{selectedQuote:null,toToken:null,outputAmount:null,outputUsdValue:new 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=eu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=e;Vr(e)||(o=Vp(o),o=Kp(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new nt(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:bi(n.fromToken,o)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:bi(n??null,s),outputUsdValue:new 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?bi(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})})))),zd=O.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&we.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&&we.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function qd(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=O(),u=S().config,d=S().fetchStatus,g=S().blockchains(),{findToken:h}=S(),{setAffiliateRef:f,setAffiliatePercent:m,setAffiliateWallets:T}=S(),y=u?.from?.tokens,C=u?.from?.blockchains,k=u?.to?.tokens,v=u?.to?.blockchains,x=xi(void 0),A=xi(void 0),I=xi(void 0),E=xi(void 0);ln(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),ln(()=>{if(d==="success"){r();let b=g.find(M=>M.name===u?.from?.blockchain),w=u?.from?.token,B=w&&h(w);(b||!b&&I.current)&&n(b??null),B?a({token:B,meta:{blockchains:g}}):!B&&x.current&&a({token:null}),I.current=u?.from?.blockchain,x.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,d]),ln(()=>{ts(s,y)&&a({token:null}),os(l,C)&&n(null)},[y,C]),ln(()=>{ts(c,k)&&a({token:null}),os(p,v)&&o(null)},[k,v]),ln(()=>{if(d==="success"){r();let b=g.find(M=>M.name===u?.to?.blockchain),w=u?.to?.token,B=w&&h(w);(b||!b&&E.current)&&o(b??null),B?e({token:B,meta:{blockchains:g}}):!B&&A.current&&e({token:null}),E.current=u?.to?.blockchain,A.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),ln(()=>{f(u?.affiliate?.ref??null),m(u?.affiliate?.percent??null),T(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(qd,"useSyncStoresWithConfig");import{useEffect as $s,useRef as Ak}from"react";import{useInRouterContext as Nk,useLocation as Bk,useSearchParams as Wk}from"react-router-dom";function _s(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(_s,"convertTokenSearchParamToAsset");function Ds(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Ds,"tokenToSearchParam");function Os(){let t=Bk(),[e,o]=Wk(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:g}=O(),h=S().fetchStatus,f=S().blockchains(),m=Nk(),{updateIframe:T,updateCampaignMode:y}=S(),C=S().isInCampaignMode(),k=Ak(),{findToken:v}=S(),x=i(()=>{let I={};for(let[L,te]of e.entries())L.startsWith("utm_")&&(I[L]=te);let E=e.get("fromAmount"),b=e.get("fromBlockchain"),w=e.get("fromToken"),B=e.get("toBlockchain"),M=e.get("toToken"),$=e.get("autoConnect"),q=e.get("clientUrl"),ee=e.get("liquiditySources"),V=e.get("blockchain");return{fromAmount:E,fromBlockchain:b,fromToken:w,toBlockchain:B,toToken:M,autoConnect:$,clientUrl:q,liquiditySources:ee,utmQueryParams:I,blockchain:V}},"getUrlSearchParams"),A=i(I=>{for(let E in I)I[E]||delete I[E];o(I,{replace:!0})},"updateUrlSearchParams");$s(()=>{let{autoConnect:I,clientUrl:E,utmQueryParams:b,blockchain:w}=x();m&&h==="success"&&A({fromBlockchain:n?.name,fromToken:Ds(a),toBlockchain:r?.name,toToken:Ds(s),fromAmount:c,autoConnect:I??void 0,clientUrl:E??void 0,blockchain:w??void 0,liquiditySources:C?k.current:void 0,...b})},[t.pathname,c,n,a,r,s,C,h]),$s(()=>{if(!m)return;let I=x();if(!k.current&&I.liquiditySources&&(k.current=I.liquiditySources),I.fromAmount&&g(I.fromAmount),h==="success"){let E=f.find(M=>M.name===I.fromBlockchain),b=I.fromToken&&E?v(_s(I.fromToken,E)):void 0,w=f.find(M=>M.name===I.toBlockchain),B=I.toToken&&w?v(_s(I.toToken,w)):void 0;E&&(l(E),b&&u({token:b,meta:{blockchains:f}})),w&&(p(w),B&&d({token:B,meta:{blockchains:f}}))}},[h]),$s(()=>{let{clientUrl:I,liquiditySources:E}=x();T("clientUrl",I||void 0),y("liquiditySources",E?.split(",")??void 0)},[])}i(Os,"useSyncUrlAndStore");import{i18n as mn}from"@lingui/core";import{Alert as Jv,Button as Rv,darkTheme as ew,Divider as hl,DoneIcon as tw,styled as ow,TextField as nw,Typography as rw}from"@rango-dev/ui";import Ke,{useState as iw}from"react";import{useNavigate as aw,useSearchParams as sw}from"react-router-dom";import{ChevronRightIcon as Lk,Divider as Kd,Image as Pk,Typography as jd}from"@rango-dev/ui";import bt from"react";import{darkTheme as Qd,styled as Us}from"@rango-dev/ui";var Hd=Us("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Qd} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Qd} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),Gd=Us("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),Vd=Us("div",{display:"flex"});function zs(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return bt.createElement(Gd,null,bt.createElement(jd,{size:"large",variant:"label"},n),bt.createElement(Kd,{size:10}),bt.createElement(Hd,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},bt.createElement(Vd,null,r&&bt.createElement(bt.Fragment,null,bt.createElement(Pk,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),bt.createElement(Kd,{size:4,direction:"horizontal"})),bt.createElement(jd,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),bt.createElement(Lk,{size:12,color:"black"})))}i(zs,"BlockchainSelectorButton");import{i18n as Vs}from"@lingui/core";import{Button as $k,Divider as Jd,MessageBox as Fk}from"@rango-dev/ui";import ro,{useEffect as Rd,useState as Ks}from"react";import{i18n as Ei}from"@lingui/core";import{Divider as No,ExternalLinkIcon as _k,Image as Dk,Typography as pn}from"@rango-dev/ui";import be from"react";var Xd="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function Yd(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(Yd,"generateExplorerLink");import{Button as Mk,darkTheme as cn,styled as qs}from"@rango-dev/ui";var Qs=qs("a",{textDecoration:"none",color:"$colors$neutral700",[`.${cn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${cn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${cn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${cn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),Zd=qs("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${cn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${cn} &`]:{color:"$colors$neutral900"}}}),Hs=qs(Mk,{minHeight:"$40"});function Gs(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,c=Yd(n.address,s),l=i(()=>window.open(Xd,"_blank"),"onClickLearnMore");return be.createElement(R,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:r,container:N()},be.createElement(Zd,null,be.createElement(Dk,{src:n.image===""?zr:n.image,size:45,type:"circular"}),be.createElement(No,{size:4}),be.createElement(pn,{variant:"title",size:"medium"},n.symbol),be.createElement(pn,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),be.createElement(No,{size:4}),be.createElement(pn,{variant:"body",size:"medium"},c?be.createElement(Qs,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,be.createElement(_k,{size:12,color:"gray"})):be.createElement(Qs,null,n.address)),be.createElement(No,{size:4}),n.coinSource&&be.createElement(pn,{className:"_coin-source",variant:"body",size:"xsmall"},Ei.t("via")," ",be.createElement(pn,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),be.createElement(No,{size:"32"}),be.createElement(pn,{size:"medium",variant:"body",className:"_custom-token-description"},Ei.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."))),be.createElement(No,{size:40}),be.createElement(No,{size:10}),be.createElement(Hs,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Ei.t("Import Anyway")),be.createElement(No,{size:10}),be.createElement(Hs,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},Ei.t("Learn More")))}i(Gs,"CustomTokenModal");function Kn(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=S(),[d,g]=Ks(!1),[h,f]=Ks(!1),[m,T]=Ks(!1),y=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),C=i(()=>{n?.type!=="network-error"&&s?.(),g(!1)},"closeErrorModal"),k=i(()=>{T(!0),C()},"handleErrorModalButtonClick"),v=i(()=>{m&&n?.type==="network-error"&&(T(!1),y()),l()},"handleExit"),x=i(()=>{e&&(u(e),c())},"handleSubmit");return Rd(()=>{n&&g(!0)},[n]),Rd(()=>{o&&e&&f(!0)},[o,e]),ro.createElement(ro.Fragment,null,ro.createElement(R,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:C,onExit:v,container:N()},ro.createElement(Fk,{title:n?.title??"",type:"error",description:n?.message||Vs.t("Failed Network, Please retry.")},ro.createElement(Jd,{size:40}),ro.createElement(Jd,{size:10}),ro.createElement($k,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:k},n?.type==="network-error"?Vs.t("Retry"):Vs.t("Add another custom token")))),o&&e&&ro.createElement(Gs,{blockchain:o,token:e,onSubmitClick:x,onClose:()=>f(!1),open:h,onExit:p}))}i(Kn,"ImportCustomToken");import{useManager as Vv}from"@rango-dev/queue-manager-react";import{BottomLogo as Kv,Divider as Wm,Header as jv}from"@rango-dev/ui";import We,{useEffect as _i,useLayoutEffect as Xv,useRef as Lm,useState as Pm}from"react";import{useRef as Ok}from"react";function jn(){return window.self!==window.top}i(jn,"isAppLoadedIntoIframe");function js(){let t=Ok(null),{iframe:e}=S(),o=jn()&&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(js,"useIframe");import{useNavigate as Uk}from"react-router-dom";function Ve(){let t=Uk();return()=>t(-1)}i(Ve,"useNavigateBack");import{useLayoutEffect as zk,useState as Xn}from"react";var em=480,tm=768,om=1024,nm=1200,qk=i(()=>{let[t,e]=Xn(!1),[o,n]=Xn(!1),[r,a]=Xn(!1),[s,c]=Xn(!1),[l,p]=Xn(!1),u=i(()=>{e(window.innerWidth<=em),n(window.innerWidth>em&&window.innerWidth<=tm),a(window.innerWidth>tm&&window.innerWidth<=om),c(window.innerWidth>om&&window.innerWidth<=nm),p(window.innerWidth>nm)},"handleResize");return zk(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),un=qk;import{createTheme as tl,darkTheme as tv,lightTheme as ov}from"@rango-dev/ui";import{useEffect as nv,useState as rv}from"react";import{theme as Rk,darkColors as ev}from"@rango-dev/ui";import Rs from"react";var Ii=16,Ai=255,rm=.11;function Qk(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(Qk,"expandShortHexColor");function Hk(t,e){return t.padStart(e,"0")}i(Hk,"pad");function Xs(t){let e=Math.min(Math.max(Math.round(t),0),Ai);return Hk(e.toString(Ii),2)}i(Xs,"intToHex");function Gk(t){return`#${Xs(t.red)}${Xs(t.green)}${Xs(t.blue)}`}i(Gk,"rgbToHex");function Vk(t){let e=parseInt(t.slice(1,3),Ii),o=parseInt(t.slice(3,5),Ii),n=parseInt(t.slice(5,7),Ii);return{red:e,green:o,blue:n}}i(Vk,"hexToRGB");function Kk(t,e){let o=1-rm*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(Kk,"generateShade");function jk(t,e){let o=rm*e;return{red:t.red+(Ai-t.red)*o,green:t.green+(Ai-t.green)*o,blue:t.blue+(Ai-t.blue)*o}}i(jk,"generateTint");function Xk(t){return im(t,Kk)}i(Xk,"calculateShades");function Yk(t){return im(t,jk)}i(Yk,"calculateTints");function im(t,e){let o=Vk(t),n=[];for(let r=1;r<9;r++)n.push(Gk(e(o,r)));return n}i(im,"calculateColors");function Ys(t,e,o){let a=Yk(t).reverse().concat(t),s=Xk(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;l[`${e}${d}`]=c[u]}return l}i(Ys,"createTintsAndShades");function Zs(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)&&!Jp(r)){let l=Qk(a);Object.assign(n,Ys(l,r,s))}}return{...n,...e}}i(Zs,"expandToGenerateThemeColors");var am=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Zk=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=am(o%52)+e;return am(o%52)+e},"toAlphabeticName"),Jk=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),Js=i(t=>Zk(Jk(5381,JSON.stringify(t))>>>0),"toHash");function el(t){let e=Rk.colors,o={...e,...ev},n,r;if(t?.light){let s={colors:Zs(e,t.light)};n={id:`${es}-light-${Js(s)}`,tokens:s}}if(t?.dark){let s={colors:Zs(o,t.dark,{reverseNeutralRange:!0})};r={id:`${es}-dark-${Js(s)}`,tokens:s}}return{light:n,dark:r}}i(el,"customizedThemeTokens");function sm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>Rs.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(Rs.cloneElement(a,{key:s})),r<t.length-1){let c=`divider-${r}`;o.push(Rs.cloneElement(e,{key:c}))}}),o}i(sm,"joinList");function lm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(lm,"doesWindowPreferDarkColorScheme");function io(t){let{colors:e,fontFamily:o=Dp,borderRadius:n=du,secondaryBorderRadius:r=mu}=t,[a,s]=rv(lm()?"dark":"light"),{theme:c}=S(),{dark:l,light:p}=el(e),u=tl({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),d=[u.className,ov.className],g=[u.className,tv.className];if(p){let f=tl(p.id,p.tokens);d.push(f.className)}if(l){let f=tl(l.id,l.tokens);g.push(f.className)}return nv(()=>{let f=i(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return lm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",f),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",f)}},[]),{activeTheme:i(()=>{let f=d.join(" "),m=g.join(" ");return c==="auto"?a==="dark"?m:f:c==="dark"?m:f},"getActiveTheme"),mode:c==="auto"?a:c}}i(io,"useTheme");var Ct=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 cm}from"@lingui/core";import{Alert as iv,Button as av}from"@rango-dev/ui";import pm from"react";function ol(t){return pm.createElement(iv,{action:pm.createElement(av,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},cm.t("Activate this tab")),type:"warning",variant:"alarm",title:cm.t("Another tab is open and handles transactions.")})}i(ol,"ActivateTabAlert");import{i18n as nl}from"@lingui/core";import{Button as sv,Divider as lv,MessageBox as cv}from"@rango-dev/ui";import Ni from"react";function rl(t){let{open:e,onClose:o,onConfirm:n}=t;return Ni.createElement(R,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:N()},Ni.createElement(cv,{title:nl.t("Activate current tab"),type:"warning",description:nl.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.")},Ni.createElement(lv,{size:20}),Ni.createElement(sv,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},nl.t("Confirm"))))}i(rl,"ActivateTabModal");import{ChevronLeftIcon as dv}from"@rango-dev/ui";import Sm from"react";import{css as pv,darkTheme as um,IconButton as uv,styled as Bo}from"@rango-dev/ui";var Pt=Bo(uv,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${um} &`]:{backgroundColor:"$neutral"}}}),dm=Bo("div",{position:"absolute",background:"$secondary500",[`.${um} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),ao=Bo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),mm=Bo("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"}}}}),fm=Bo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),gm=Bo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),hm=pv({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),ym=Bo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function il(t){return Sm.createElement(Pt,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Sm.createElement(dv,{color:"black",size:16}))}i(il,"BackButton");import{i18n as mv}from"@lingui/core";import{Button as fv,Typography as gv}from"@rango-dev/ui";import al from"react";function sl(t){return al.createElement(ao,null,al.createElement(fv,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},al.createElement(gv,{variant:"label",size:"medium",color:"error500"},mv.t("Cancel"))))}i(sl,"CancelButton");import{i18n as hv}from"@lingui/core";import{Image as yv,Tooltip as Sv,WalletIcon as Cv}from"@rango-dev/ui";import Wo from"react";function ll(t){let{list:e}=vt(),o=e.filter(r=>r.state==="connected"),n=o.length?Wo.createElement("div",{className:hm()},o.map(r=>Wo.createElement(ym,{key:r.title},Wo.createElement(yv,{src:r.image,size:14})))):hv.t("Connect Wallet");return Wo.createElement(Sv,{container:t.container,side:"bottom",content:n},Wo.createElement(Pt,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&Wo.createElement(dm,null),Wo.createElement(Cv,{size:18,color:"black"})))}i(ll,"WalletButton");import{i18n as Wi}from"@lingui/core";import{NotificationsIcon as _v,Popover as Dv,SettingsIcon as $v,Tooltip as Li,TransactionIcon as Fv}from"@rango-dev/ui";import De from"react";import{Notifications as wv}from"@rango-dev/ui";import bv from"react";import{useNavigate as xv}from"react-router-dom";import{create as Tv}from"zustand";import{persist as kv,subscribeWithSelector as vv}from"zustand/middleware";var Be=Ro(Tv()(kv(vv((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},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=xv(),{getNotifications:e,clearNotifications:o}=Be(),n=e(),r=S().blockchains(),{findToken:a}=S();return bv.createElement(wv,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Ip(c,r),getTokenImage:c=>a(c)?.image,onClickItem:i(c=>{t(`${F.swaps}/${c}`)},"onClickItem"),onClearAll:o})}i(cl,"NotificationContent");import{useManager as Ev}from"@rango-dev/queue-manager-react";import{InProgressIcon as Iv}from"@rango-dev/ui";import Cm from"react";var Av=i(()=>{let{manager:t}=Ev();return Ct(t).map(({swap:o})=>o).find(o=>o.status==="running")?Cm.createElement(gm,{id:"widget-header-history-badge-container"},Cm.createElement(Iv,{color:"info",size:6})):null},"InProgressTransactionBadge"),Tm=Av;import{EventSeverity as Nv}from"@rango-dev/queue-manager-rango-preset";import{Typography as Bv}from"@rango-dev/ui";import km from"react";function vm(){let{getNotifications:t}=Be(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===Nv.WARNING);return o?km.createElement(mm,{isSever:n},km.createElement(Bv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}i(vm,"NotificationsBadge");import{RefreshProgressButton as Wv}from"@rango-dev/ui";import pl,{useEffect as Lv,useState as wm}from"react";var Pv=1e3,bm=60,Mv=100;function Bi({onClick:t}){let[e,o]=wm(0),[n,r]=wm(!1),a=i(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");Lv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===bm&&c()},Pv):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 pl.createElement(Pt,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},pl.createElement(fm,{onTransitionEnd:()=>r(!1),isRefetched:n},pl.createElement(Wv,{size:22,color:t?"black":"gray",progress:e/bm*Mv})))}i(Bi,"RefreshButton");function Lo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=S(),c=ot("notification",s)||r.includes("notifications");return De.createElement(De.Fragment,null,!r.includes("refresh")&&De.createElement(Li,{container:a||N(),side:"top",content:Wi.t("Refresh")},De.createElement(Bi,{onClick:e})),!c&&De.createElement(Dv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:N(),content:De.createElement(cl,null)},De.createElement("div",null,De.createElement(Li,{container:N(),side:"top",content:Wi.t("Notifications")},De.createElement(Pt,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},De.createElement(_v,{size:18,color:"black"}),De.createElement(vm,null))))),!r.includes("settings")&&De.createElement(Li,{container:N(),side:"top",content:Wi.t("Settings")},De.createElement(Pt,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},De.createElement($v,{size:18,color:"black"}))),!r.includes("history")&&De.createElement(Li,{container:N(),side:"top",content:Wi.t("History")},De.createElement(Pt,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},De.createElement(Fv,{size:18,color:"black"}),De.createElement(Tm,null))))}i(Lo,"HeaderButtons");import{i18n as ul}from"@lingui/core";import{Divider as Em,MessageBox as zv,RefreshIcon as qv}from"@rango-dev/ui";import dn from"react";import{Button as Ov,styled as Uv}from"@rango-dev/ui";var xm=Uv(Ov,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function dl(t){let{open:e,onClose:o}=t;return dn.createElement(R,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:N()},dn.createElement(zv,{title:ul.t("Something went wrong"),type:"error",description:ul.t("Something went wrong. Please refresh the app.")},dn.createElement(Em,{size:30}),dn.createElement(xm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},dn.createElement(qv,{size:20,color:"primary"}),dn.createElement(Em,{size:4,direction:"horizontal"}),ul.t("Refresh"))))}i(dl,"RefreshModal");function ml(t){let e=t.target;if(e){let o=e.scrollTop,n=N();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(ml,"onScrollContentAttachStatusToContainer");import{css as Hv,styled as Pi}from"@rango-dev/ui";var Mi=Hv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Im=Pi("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"}}}}),Am=Pi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Nm=Pi("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}}),Bm=Pi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function ie(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=js(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=S(),[u,d]=Pm(!1),{config:{features:g,theme:h}}=S(),{watermark:f,setShowCompactTokenSelector:m}=oe(),T=f==="FULL",{activeTheme:y}=io(h||{}),[C,k]=Pm(!1),v=ot("connectWalletButton",g),{isActiveTab:x,tabManagerInitiated:A,showActivateTabModal:I,setShowActivateTabModal:E,activateCurrentTab:b}=oe(),w=Ve(),{manager:B}=Vv(),{isTablet:M,isMobile:$}=un(),ee=Ct(B).map(({swap:X})=>X).some(X=>X.status==="running"),V=i(()=>b(xo.forceClaim,ee),"onActivateTab"),L=i(()=>{r.onWallet?.()},"onConnectWallet"),te=typeof r.hasBackButton>"u"||r.hasBackButton,le=Lm(null),J=Lm(null);return _i(()=>{let X=(p?.swapBoxBanner?.routes?.length??0)===0,j=!!p?.swapBoxBanner?.routes?.some(ue=>location.pathname.endsWith(ue));k(!!p?.swapBoxBanner&&(X||j))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),_i(()=>(jn()&&J.current&&e(J.current),()=>{o()}),[]),_i(()=>(le.current?.addEventListener("scroll",ml),()=>{le.current?.removeEventListener("scroll",ml)}),[]),_i(()=>{d(c==="failed")},[c]),Xv(()=>{let X=s==="auto"||!J.current||jn(),j=$||M,ue=i(()=>{X||(j?J.current.style.height=`${window.innerHeight-J.current.offsetTop}px`:J.current.style.height=`${700}px`,m(parseFloat(J.current.style.height)<640))},"handler");return ue(),window.addEventListener("resize",ue),()=>window.removeEventListener("resize",ue)},[s,$,M]),We.createElement(Im,{height:s,id:tt.SWAP_BOX_ID,className:`${y()} ${Mi()}`,ref:J,showBanner:C},We.createElement(jv,{prefix:te?We.createElement(il,{onClick:()=>{w(),r.onBack?.()}}):null,title:r.title,suffix:We.createElement(We.Fragment,null,r.suffix,r.onWallet&&!v&&We.createElement(ll,{container:N(),onClick:L,isConnected:!!l?.length}),r.onCancel&&We.createElement(sl,{onClick:r.onCancel}))}),We.createElement(Am,{ref:le},n),We.createElement(rl,{open:I,onClose:()=>E(!1),onConfirm:V}),We.createElement(Nm,null,We.createElement("div",{className:"footer__content"},A&&!x&&We.createElement("div",{className:"footer__alert"},We.createElement(ol,{onActivateTab:V}),We.createElement(Wm,{size:10})),a),We.createElement(Wm,{size:12}),We.createElement("div",{className:`footer__logo ${T?"logo__show":"logo__hidden"}`},We.createElement(Kv,null))),C&&We.createElement(Bm,null,p?.swapBoxBanner?.element),We.createElement(dl,{open:u,onClose:()=>d(!1)}))}i(ie,"Layout");import{styled as Yv}from"@rango-dev/ui";var Mm="$20 $20 $10 $20",fl=Yv("div",{padding:Mm,overflowY:"auto",flexGrow:1});import{styled as Zv}from"@rango-dev/ui";var ae=Zv("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as so}from"@lingui/core";import{useState as gl}from"react";function _m(){let[t,e]=gl(!1),[o,n]=gl(null),[r,a]=gl(null),{findToken:s}=S(),c=S().customTokens(),l=i(()=>{a(null),e(!1),n(null)},"resetState");function p(d,g){switch(d){case"duplicated":return{type:d,title:so.t("Duplicate Token"),message:so.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:so.t("Token Already Exists"),message:so.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:d,title:so.t("Token Not Found"),message:so.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:g}})};case"network-error":return{type:d,title:so.t("Network error"),message:so.t("An error occurred while retrieving token data.")}}}return i(p,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:d,tokenAddress:g})=>{e(!0);try{if(c.some(y=>y.address?.toLowerCase()===g.toLowerCase())){let y=p("duplicated");n(y);return}let f=await ct().getCustomToken({blockchain:d,address:g});if(!f||!f.token||f.error){let y=p("not-found",d);n(y);return}let m=f.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 f=p("not-found",d);n(f);return}n(p("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:l}}i(_m,"useFetchCustomToken");var lw=ow("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${ew} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Dm(){let t=aw(),[e]=sw(),o=Ve(),n=S().blockchains(),r=e.get("blockchain")||"",a=To(r,n),[s,c]=iw(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:g}=_m(),h=!!a&&Go(a,s),f=!a||!s||!h,m=i(()=>{a&&l({blockchain:r,tokenAddress:s})},"getCustomToken");return Ke.createElement(ie,{header:{title:mn.t("Add Custom Token")}},Ke.createElement(ae,null,Ke.createElement(lw,null,Ke.createElement("div",null,Ke.createElement(zs,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:mn.t("Select chain"),placeholder:mn.t("Select chain")}),Ke.createElement(hl,{size:"24"}),Ke.createElement(rw,{size:"large",variant:"label"},mn.t("Enter Address")),Ke.createElement(hl,{size:10}),Ke.createElement(nw,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:mn.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement(tw,{color:"success",size:12}),onChange:T=>c(T.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(hl,{size:4}),Ke.createElement(Jv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement(Rv,{id:"widget-add-custom-token-import-btn",disabled:f,type:"primary",variant:"contained",loading:u,size:"large",onClick:m},mn.t("Import"))),Ke.createElement(Kn,{token:p,blockchain:a??void 0,address:s,error:d??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{d?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:g,onExitImportModal:g})))}i(Dm,"AddCustomTokenPage");import{i18n as Kl}from"@lingui/core";import{useManager as Kb}from"@rango-dev/queue-manager-react";import{Alert as jb,Button as Xb,css as Xl,Divider as jl,IconButton as Eg,styled as Yb,Typography as Zb,WalletIcon as Jb}from"@rango-dev/ui";import Fe,{useEffect as sa,useLayoutEffect as Rb,useRef as ex,useState as cr}from"react";import{useNavigate as tx}from"react-router-dom";import{i18n as Po}from"@lingui/core";import{Alert as Mw,BalanceErrors as _w,Button as cf,ChevronLeftIcon as Dw,Divider as bl,MessageBox as $w,Typography as xl}from"@rango-dev/ui";import re,{useCallback as Fw,useEffect as pf,useMemo as Ow,useState as hn}from"react";import{useNavigate as Uw}from"react-router-dom";import{i18n as Tl}from"@lingui/core";import{Alert as mw,ChevronDownIcon as fw,CloseIcon as gw,Divider as Qm,IconButton as Hm,PasteIcon as hw,Typography as yw,WalletIcon as Sw}from"@rango-dev/ui";import $e,{useEffect as Cw,useRef as Tw}from"react";import Oi,{useRef as uw}from"react";import*as fn from"@radix-ui/react-collapsible";import{keyframes as $m,styled as Di}from"@rango-dev/ui";var yl=300,cw=$m({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),pw=$m({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),Fm=Di(fn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Sl=Di(fn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),$i=Di(fn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${cw} ${yl}ms ease-out`},false:{animation:`${pw} ${yl}ms ease-out`}}}}),Fi=Di("div",{transition:`all ${yl}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Ui(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=uw(null);return Oi.createElement(Fm,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&Oi.createElement(Sl,{className:"collapsible_trigger",onClick:a},s),Oi.createElement($i,{className:"collapsible_content",open:e},r),c==="bottom"&&Oi.createElement(Sl,{className:"collapsible_trigger",onClick:a},s))}i(Ui,"CustomCollapsible");import{darkTheme as Om,styled as Cl,TextField as dw}from"@rango-dev/ui";var Um=Cl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),zm=Cl(dw,{backgroundColor:"$neutral100",padding:"$15"}),qm=Cl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Om} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${Om} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Gm(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=O(),{config:s}=S(),c=S().blockchains(),l=Fr(e.name,c),p=Tw(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!r&&e&&!Go(e,r),f=i(()=>{a("")},"handleClear"),m=i(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let C=await navigator.clipboard.readText();a(C),p?.current?.focus()}},"handlePaste"),T=i(()=>r?$e.createElement(Hm,{id:"widget-custom-destination-close-icon-btn",onClick:f,variant:"ghost"},$e.createElement(gw,{size:12,color:"gray"})):d?null:$e.createElement(Hm,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},$e.createElement(hw,{size:16})),"renderSuffix");return Cw(()=>{!!u&&r===null&&(a(u),o(!0))},[u]),$e.createElement(Um,null,$e.createElement(Ui,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:$e.createElement(qm,{id:"widget-custom-destination-collapsible-btn"},$e.createElement("div",{className:"button__content"},$e.createElement(Sw,{size:18,color:"info"}),$e.createElement(Qm,{size:4,direction:"horizontal"}),$e.createElement(yw,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Tl.t("Send to a different address"))),$e.createElement(Fi,{orientation:n?"up":"down"},$e.createElement(fw,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},$e.createElement(zm,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Tl.t("Enter {blockchainName} address",{blockchainName:l}),value:r||"",suffix:T(),onChange:y=>{let C=y.target.value;a(C)}})),h&&$e.createElement($e.Fragment,null,$e.createElement(Qm,{size:4}),$e.createElement(mw,{variant:"alarm",type:"error",title:Tl.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(Gm,"CustomDestination");import{css as kw,IconButton as vw,SelectableWalletButton as ww,styled as lo}from"@rango-dev/ui";var Vm=lo("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Km=lo("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),jm=lo(ww,{justifyContent:"center"}),Xm=lo("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ym=lo(vw,{position:"absolute",left:"$20"}),Zm=lo("div",{paddingTop:"$20"}),Jm=kw({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Rm=lo("div",{display:"flex"}),ef=lo("div",{overflow:"visible",width:"100%"});import{i18n as vl}from"@lingui/core";import{warn as Aw}from"@rango-dev/logging-core";import{Divider as Nw,makeInfo as Bw,SelectableWallet as Ww,Typography as sf,WalletState as zi}from"@rango-dev/ui";import rt,{useEffect as lf,useState as Jn}from"react";import{Image as Ew,MessageBox as Iw}from"@rango-dev/ui";import Zn from"react";import{keyframes as bw,styled as kl}from"@rango-dev/ui";var tf=kl("div",{position:"relative"}),xw=bw({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),of=kl("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${xw} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),nf=kl("div",{"& img":{borderRadius:"50%"}});import{i18n as gn}from"@lingui/core";function rf(t,e){switch(t){case"in-progress":return{type:"loading",title:gn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:gn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:gn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:gn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:gn.t("Request Rejected"),description:gn.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(rf,"generateMessageByStatus");function af(t){let{status:e,displayName:o,image:n}=t,r=rf(e,o),a=e=="in-progress";return Zn.createElement(Iw,{type:r.type,title:r.title,description:r.description,icon:a?Zn.createElement(tf,null,Zn.createElement(nf,null,Zn.createElement(Ew,{src:n,size:45})),Zn.createElement(of,null)):void 0})}i(af,"ExperimentalChainStatus");var Lw=7,Pw=3e3;function wl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,c=oe.use.isActiveTab(),{blockchains:l,connectedWallets:p}=S(),[u,d]=Jn(),[g,h]=Jn(null),[f,m]=Jn(!1),[T,y]=Jn(null),{suggestAndConnect:C}=qi(),{list:k}=vt({chain:e}),[v,x]=Jn(k),A=k.length,I=a&&A-a>0,E=i(async w=>{m(!1),y("in-progress");try{await C(w.walletType,w.chain),y("completed")}catch{y("rejected")}},"addExperimentalChain");lf(()=>{x(w=>{let B=k.findIndex(M=>n(M.type,e));return I&&B>1?[k[B]].concat(k.filter((M,$)=>$!==B)):w.map(M=>k.find($=>$.type===M.type)??M)})},[JSON.stringify(k)]);let b=document.getElementById(tt.SWAP_BOX_ID);return lf(()=>{let w=null;return(T==="completed"||T==="rejected")&&(w=setTimeout(()=>y(null),Pw)),()=>{w&&clearTimeout(w)}},[T]),rt.createElement(rt.Fragment,null,v.slice(0,a).map(w=>{let B=au({connectedWallets:p,walletType:w.type,chain:e}),M=w.state===zi.CONNECTED,$=B?oo(B,Lw):"",q=M&&!!w.needsNamespace&&!$,ee=Yr(l(),e),V=!p.find(ue=>ue.walletType===w.type&&ue.chain===e),L=ee&&V&&w.state===zi.CONNECTED,te=i(async()=>{w.state===zi.DISCONNECTED||q?d(w):L?(h({walletType:w.type,chain:e,address:B??""}),m(!0)):r({walletType:w.type,chain:e,address:B??""})},"onSelectableWalletClick"),le=Bw(w.state),J=i(()=>L?vl.t({id:"Add {chain} chain",values:{chain:e}}):q?vl.t("Chain not connected"):$||le.description,"getWalletDescription"),X=i(()=>w.state===zi.CONNECTED?q?"neutral600":"neutral700":le.color,"getWalletDescriptionColor"),j=g?.chain?Fr(g.chain,l()):void 0;return rt.createElement(rt.Fragment,{key:`${w.title}_${j}`},!!g&&rt.createElement(R,{id:"widget-wallets-list-watermarked-modal",open:!!g&&f,container:b,onClose:()=>{h(null)}},rt.createElement(Is,{id:"widget-wallets-list-experimental-chain-container",displayName:j,onConfirm:()=>{E(g)}})),T&&rt.createElement(R,{id:"widget-wallets-list-experimental-chain-watermarked-modal",open:!!T,onClose:y.bind(null,null),container:b},rt.createElement(af,{status:T,displayName:j,image:w.image}),rt.createElement(Nw,{direction:"vertical",size:32})),rt.createElement(Ww,{key:w.type,id:"widget-wallets-list-selectable-wallet-btn",description:J(),descriptionColor:X(),onClick:te,selected:n(w.type,e),disabled:!c,...w}))}),rt.createElement(Hn,{id:"widget-wallets-list-stateful-connect-modal",wallet:u,options:{defaultSelectedChains:o||[e]},onClose:()=>{d(void 0)},onConnect:()=>{t.onConnect&&(u?.type?t.onConnect(u.type):Aw(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),I&&rt.createElement(jm,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},rt.createElement(sf,{variant:"label",size:"medium"},vl.t("Show more wallets"),rt.createElement(sf,{variant:"label",size:"medium",color:"$primary"},"\xA0+",A-(a??0)))))}i(wl,"WalletList");var zw=2;function uf(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=Uw(),c=S().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:g,setCustomDestination:h}=O(),{config:f,connectedWallets:m,setWalletsAsSelected:T}=S(),[y,C]=hn(""),[k,v]=hn([]),[x,A]=hn(""),[I,E]=hn(!!g),b=Ow(()=>wo({filter:"all",quote:l}),[l]),w=wo({filter:"required",quote:l}),B=c.find(W=>W.name===l?.swaps[l?.swaps.length-1].to.blockchain),M=i(W=>w.includes(W),"isWalletRequiredFor"),$=Fw(()=>m.filter(W=>W.selected&&b.includes(W.chain)),[m,b]),[q,ee]=hn($()),[V,L]=hn([]),te=i((W,Q)=>L(K=>K.concat({blockchain:W,walletType:Q})),"addNextSelectedWallets"),le=k.length>0,J=i((W,Q)=>!!q.find(K=>K.walletType===W&&K.chain===Q&&K.selected&&(M(Q)||!M(Q)&&!g)),"isSelected"),X=i((W,Q,K)=>{let Y=!1;return W.map(ye=>{if(ye.chain===Q){let Qe=ye.selected;return!Y&&K?(Y=!0,Qe=!0):K||(Qe=!1),{...ye,selected:Qe}}return ye})},"updateSelectableWallets"),j=i(W=>{E(W),W?M(B?.name??"")||ee(Q=>X(Q,B?.name||"",!1)):(h(""),ee(Q=>X(Q,B?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),ue=i(W=>{if(y&&C(""),J(W.walletType,W.chain))return;let K=m.find(Y=>Y.walletType===W.walletType&&Y.chain===W.chain);K&&(n(),W.chain===B?.name&&I&&!M(B.name)&&(E(!1),h(null)),ee(Y=>Y.filter(ye=>ye.chain!==W.chain).concat({...K,selected:!0})))},"onChange"),de=i(()=>{let W=q.filter(Q=>Q.selected);T(W),p(W),d(!0),o()},"onConfirmBalance"),ke=i(async()=>{v([]),A("");let W=await r?.({selectedWallets:q.filter(K=>K.selected),customDestination:g}),Q=W.warnings;Q?.balance?.messages&&v(Q.balance.messages),W.error&&A(pd(W.error)),!W.error&&!Q?.balance?.messages.length?de():v(Q?.balance?.messages??[])},"onConfirmWallets");pf(()=>{ee(W=>{let Q=[];return W.forEach(K=>{!m.some(ye=>ye.chain===K.chain&&ye.walletType===K.walletType&&ye.address===K.address)||Q.push(K)}),Q=Q.concat(m.filter(K=>!!!Q.find(ye=>ye.chain===K.chain)&&K.selected&&b.includes(K.chain))),Q})},[m,b]),pf(()=>{let W=[];V.length>0&&(V.forEach(Q=>{let K=m.find(Y=>Y.chain===Q.blockchain&&Y.walletType===Q.walletType);K?ue(K):W.push(Q)}),L(W))},[m,V]);let H=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:H,...!y&&{styles:{container:{height:"100%"}},footer:re.createElement(Rm,null,re.createElement(cf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Od(a,I,g,l,q,B),onClick:ke,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Po.t("Confirm")))},...y&&{styles:{container:{height:"100%",padding:"$0"}},header:re.createElement(Xm,null,re.createElement(Ym,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:C.bind(null,"")},re.createElement(Dw,{size:16})),re.createElement(xl,{variant:"headline",size:"small"},Po.t({id:"Your {blockchainName} wallets",values:{blockchainName:gt(y,c)}})))},anchor:"center"},re.createElement(R,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:le,onClose:v.bind(null,[]),container:H},re.createElement($w,{title:Po.t("Insufficient account balance"),type:"error",description:re.createElement(_w,{messages:k??[]})},re.createElement(cf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:de},Po.t("Proceed anyway")))),y&&re.createElement(Zm,null,re.createElement("div",{className:Jm()},re.createElement(wl,{chain:y,quoteChains:b,isSelected:J,selectWallet:ue,onShowMore:()=>C(y),onConnect:W=>{te(y,W)}}))),!y&&re.createElement(re.Fragment,null,x&&re.createElement(re.Fragment,null,re.createElement(Mw,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:Po.t(x)}),re.createElement(bl,{size:12})),re.createElement(ef,null,b.map((W,Q)=>{let K=c.find(Oe=>Oe.name===W),Y=`wallet-${Q}`,ye=Q===b.length-1,Qe=ye&&B&&f?.customDestination!==!1;return re.createElement("div",{key:Y},re.createElement(Vm,null,re.createElement(xl,{variant:"title",size:"xmedium"},Po.t({id:"Your {blockchainName} wallets",values:{blockchainName:K?.shortName}})),re.createElement(xl,{variant:"label",color:"$neutral700",size:"medium"},Po.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:K?.shortName}}))),re.createElement(bl,{size:24}),re.createElement(Km,null,re.createElement(wl,{chain:W,quoteChains:b,isSelected:J,selectWallet:ue,limit:zw,onShowMore:()=>C(K?.name??""),onConnect:Oe=>{te(W,Oe)}})),!ye&&re.createElement(bl,{size:32}),Qe&&re.createElement(Gm,{blockchain:B,open:I,handleOpenChange:j}))}))))}i(uf,"ConfirmWalletsModal");import{i18n as lb}from"@lingui/core";import{Alert as cb,Button as pb,Divider as Bf,InfoIcon as ub}from"@rango-dev/ui";import Ue from"react";import{Alert as Hw,Button as Gw,Divider as Al,NoRouteIcon as Vw,RefreshIcon as Kw,Typography as Sf}from"@rango-dev/ui";import pt from"react";import{i18n as df}from"@lingui/core";var qw=24,Qw=60;function mf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ne().genericServerError,action:{onClick:n,title:df.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ne().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:df.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(mf,"makeInfo");var El=(o=>(o[o.small=qw]="small",o[o.large=Qw]="large",o))(El||{}),Il=(o=>(o.small="small",o.large="medium",o))(Il||{});import{styled as Qi}from"@rango-dev/ui";var ff=Qi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),gf=Qi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),hf=Qi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),yf=Qi("div",{padding:"$6 $0"});function Rn(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=S().getDisabledLiquiditySources(),s=S().toggleAllLiquiditySources,c=S().swappers(),l=mf(o,a,()=>s(c,!0),e);return r&&(l.alert=null),pt.createElement(ff,{id:"widget-no-result-container"},pt.createElement(Vw,{size:El[n],color:"gray"}),pt.createElement(Al,{size:4}),pt.createElement(Sf,{variant:"title",size:Il[n]},ne().noResultError.title),n==="large"&&pt.createElement(Al,{size:4}),!!l.description&&pt.createElement(gf,{size:n},pt.createElement(Sf,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),pt.createElement(Al,{size:n==="large"?"24":"4"}),!!l.alert&&pt.createElement(hf,{size:n},pt.createElement(Hw,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&pt.createElement(Gw,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:pt.createElement(yf,null,pt.createElement(Kw,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Rn,"NoResult");import{i18n as tr}from"@lingui/core";import{Button as Yw,Divider as Zw,MessageBox as Jw,Typography as Rw,WarningIcon as eb}from"@rango-dev/ui";import Gt from"react";import{Typography as wf}from"@rango-dev/ui";import Bl from"react";import{Button as jw,darkTheme as Xw,styled as er}from"@rango-dev/ui";var Cf=er("div",{width:"100%"}),Nl=er("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Tf=er("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${Xw} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),kf=er("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),vf=er(jw,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});function bf(t){let{title:e,value:o,valueColor:n}=t;return Bl.createElement(Tf,null,Bl.createElement(wf,{size:"medium",variant:"label",className:"_title"},e),Bl.createElement(wf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(bf,"QuoteErrorsModalItem");function xf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",c=[{title:tr.t("Swapping"),value:_(r.inputUsdValue,4,4)},{title:tr.t("Gas cost"),value:_(r.totalFee,2,2)},{title:tr.t("Receiving"),value:_(r.outputUsdValue,4,4)},{title:tr.t("Price impact"),value:_(r.priceImpact,2,2),valueColor:`${s}500`}];return Gt.createElement(R,{id:"widget-high-value-loss-warning-modal",footer:Gt.createElement(Yw,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Gt.createElement(eb,null),fullWidth:!0,disabled:a,onClick:n},ne().highValueLossError.confirmMessage),open:e,onClose:o,container:N()},Gt.createElement(Jw,{type:s,title:ne().highValueLossError.impactTitle,description:ne().highValueLossError.description}),Gt.createElement(Nl,null,Gt.createElement(Zw,{size:"4"}),Gt.createElement(Rw,{size:"small",variant:"title"},tr.t("Details")),Gt.createElement(Nl,null,c.map((l,p)=>Gt.createElement(bf,{key:p,...l})))))}i(xf,"HighValueLossWarningModal");import{i18n as yn}from"@lingui/core";function Ef(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=yn.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=yn.t("Increase")),o;if(t){switch(t.type){case 0:{Ht(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ne().highValueLossError.title;break}case 4:{o.title=yn.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=yn.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=yn.t("Increase");break}case 3:{o.title=yn.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Ef,"makeAlerts");function If(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(If,"getRequiredSlippage");import{i18n as Sn}from"@lingui/core";import{Button as tb,Divider as Wl,MessageBox as ob,WarningIcon as nb}from"@rango-dev/ui";import uo from"react";import{useNavigate as rb}from"react-router-dom";function Af(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=rb();return uo.createElement(R,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:N(),onClose:o},uo.createElement(ob,{type:"warning",title:r.type===3?Sn.t("High slippage"):Sn.t("Low slippage"),description:r.type===3?Sn.t("Caution, your slippage is high. Your trade may be front run."):Sn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},uo.createElement(Wl,{size:18}),uo.createElement(Wl,{size:32}),uo.createElement(vf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},uo.createElement(nb,{color:"white",size:16}),Sn.t("Swap anyway")),uo.createElement(Wl,{size:10}),uo.createElement(tb,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+F.settings)},Sn.t("Change Slippage"))))}i(Af,"SlippageWarningModal");import{Button as ib,MessageBox as ab,WarningIcon as sb}from"@rango-dev/ui";import Hi from"react";function Nf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Hi.createElement(R,{id:"widget-unknown-price-warning-modal",footer:Hi.createElement(ib,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Hi.createElement(sb,null),fullWidth:!0,disabled:r,onClick:n},ne().unknownPriceError.confirmMessage),open:e,onClose:o,container:N()},Hi.createElement(ab,{type:"warning",title:ne().unknownPriceError.impactTitle,description:ne().unknownPriceError.description}))}i(Nf,"UnknownPriceWarningModal");function or(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:g}=t,h={confirmationDisabled:a,open:r,onClose:p,onConfirm:u},f=o?.type===0||o?.type===1,m=Ef(e,o?.type===3||o?.type===4?o:null);m&&!n&&(m.action=null);let T=!!m&&!s,y=i(C=>{if(C==="change-slippage"){let k=o?.type===3||o?.type===4?o:null,v=If(e,k);g?.(v)}else C==="change-settings"&&d()},"onclickActionButton");return Ue.createElement(Ue.Fragment,null,f&&Ue.createElement(Ue.Fragment,null,Ue.createElement(Bf,{size:10}),Ue.createElement(Rn,{skipAlerts:s,error:o,fetch:c})),T&&Ue.createElement(Cf,null,Ue.createElement(Bf,{size:10}),Ue.createElement(cb,{id:"widget-quote-warning-and-errors-alert",title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Ue.createElement(kf,{onClick:l},Ue.createElement(ub,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:Ue.createElement(pb,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>y(m.action)},m.actionButtonTitle||lb.t("Change"))}})),e&&Ue.createElement(Ue.Fragment,null,e.type===0&&Ue.createElement(xf,{...h,warning:e}),(e.type===3||e.type===2)&&Ue.createElement(Af,{...h,warning:e}),e.type===1&&Ue.createElement(Nf,{...h,warning:e})))}i(or,"QuoteWarningsAndErrors");import Ub from"bignumber.js";import na from"react";import{i18n as Mo}from"@lingui/core";import{Alert as Ib,Divider as Tn,FullExpandedQuote as Ab,InfoIcon as Nb,NumericTooltip as rg,QuoteTag as Bb,StepDetails as Wb,TokenAmount as Lb,Typography as kn}from"@rango-dev/ui";import Ul from"bignumber.js";import U,{useRef as Pb,useState as Mb}from"react";import{styled as Ll}from"@rango-dev/ui";var Pl=Ll("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Wf=Ll("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Lf=Ll("div",{width:"100%",display:"flex"});import*as Gi from"@radix-ui/react-collapsible";import{Button as db,css as nr,darkTheme as Le,Image as Pf,styled as Ze,Typography as mb}from"@rango-dev/ui";var fb=300,Mf=Ze(Gi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Le} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Le} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Le} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),_f=nr({padding:"$10 $15"}),Df=Ze(db,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${Le} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${Le} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${Le} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),$f=Ze("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",[`.${Le} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${Le} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${Le} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${Le} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${Le} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${Le} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${Le} &`]:{backgroundColor:"$neutral400"}}}}]}),Ff=nr({width:"100%",padding:"$15 $15 $10 $15"}),Of=nr({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),Cn=nr({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),Uf=nr({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${Le} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),zf=Ze(Gi.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:{[`& ${Pf}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Pf}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Le} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Le} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Le} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),qf=Ze("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"}}}}),Qf=Ze($i,{width:"100%",background:"inherit"}),Ml=Ze("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${fb}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),aQ=Ze("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),Hf=Ze("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${Le} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Gf=Ze("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),_l=Ze(mb,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Vf=Ze("div",{display:"flex",flexWrap:"wrap"}),Dl=Ze("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"}}}}),Kf=Ze("div",{display:"flex"}),Vi=Ze("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${Le} &`]:{borderTopColor:"$neutral800"}});import{i18n as Mt}from"@lingui/core";import{ChevronDownIcon as hb,CloseIcon as yb,Divider as Xi,IconButton as Sb,NumericTooltip as Cb,QuoteCost as Tb,Typography as xt}from"@rango-dev/ui";import Z,{useState as Zf}from"react";import{css as gb,styled as Ki}from"@rango-dev/ui";var ji=Ki("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),$l=Ki("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),jf=Ki("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Xf=Ki("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Yf=gb({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var kb=i(t=>t.fee.isZero()?null:Z.createElement(ji,null,Z.createElement(xt,{variant:"label",size:"medium",color:"neutral600"},t.label),Z.createElement(xt,{variant:"label",size:"medium"},"$",_(t.fee,4,4))),"NonPayableFee");function Fl(t){let[e,o]=Zf(!1),[n,r]=Zf(!1),{steps:a,quote:s,fee:c,time:l,feeWarning:p,timeWarning:u,showModalFee:d,fullExpandedMode:g=!1}=t,h=s?.swaps??[],f=g?vo():N(),m=Wd(h),T=_(c,2,2);return Z.createElement(Z.Fragment,null,Z.createElement(Tb,{onClickFee:d?y=>{y.stopPropagation(),o(!e)}:void 0,fee:T,feeWarning:p,timeWarning:u,time:l,steps:a,tooltipGas:d?Mt.t("View more info"):void 0,tooltipContainer:f}),Z.createElement(R,{id:"widget-quote-cost-explanation-modal",container:f,open:e,anchor:g?"center":"bottom",styles:{container:{maxWidth:g?"484px":"unset"}},header:Z.createElement(Xf,{style:{textAlign:g?"left":"center"}},Z.createElement(xt,{variant:"title",size:"medium"},Mt.t("Gas & Fee Explanation")),Z.createElement(Sb,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},Z.createElement(yb,{color:"gray",size:14}))),onClose:()=>{o(!1)}},Z.createElement(jf,null,Z.createElement(xt,{variant:"title",size:"small"},Mt.t("Details")),Z.createElement(Xi,{size:10}),Object.entries(m.payable).flatMap(([y,C])=>C.map((k,v)=>{let x=`payable-fee-${v}`,A=Ms(k);return Z.createElement(ji,{key:x},Z.createElement(xt,{variant:"label",size:"medium",color:"neutral600"},Ns(y,Mt.t)),Z.createElement(Cb,{content:k.amount,container:f},Z.createElement(xt,{variant:"label",size:"medium"},_(k.amount,2,2),k.asset.symbol," ($",_(A,4,4),")")))})),Z.createElement(ji,{className:"total_payable_fee"},Z.createElement(xt,{variant:"label",size:"medium"},Mt.t("Total Payable Fee")),Z.createElement(xt,{variant:"label",size:"medium"},"$",_(c,4,4))),Z.createElement($l,null),!!Object.keys(m.nonePayable).length&&Z.createElement(Ui,{triggerAnchor:"bottom",onClickTrigger:()=>r(y=>!y),trigger:Z.createElement("div",{className:Yf()},Z.createElement(xt,{size:"small",variant:"body",color:"neutral700"},n?Mt.t("Hide non-payable fees"):Mt.t("Show non-payable fees")),Z.createElement(Xi,{size:4,direction:"horizontal"}),Z.createElement(Fi,{orientation:n?"up":"down"},Z.createElement(hb,{size:12,color:"gray"}))),open:n},Z.createElement(xt,{size:"small",variant:"title"},Mt.t("Description")),Z.createElement(Xi,{size:4}),Z.createElement(xt,{size:"small",variant:"body",color:"neutral700"},Mt.t(`The following fees are considered in the transaction output and
2
- you won\u2019t need to pay extra gas for them.`)),Z.createElement(Xi,{size:10}),Object.entries(m.nonePayable).map(([y,C],k)=>{let v=Bd(C),x=Ns(y,Mt.t),A=`non-payable-fee-${k}`;return Z.createElement(kb,{key:A,fee:v,label:x})}),Z.createElement($l,null)))))}i(Fl,"QuoteCostDetails");import{i18n as eg}from"@lingui/core";import{TokenAmount as tg}from"@rango-dev/ui";import Yi from"react";import{css as vb,styled as wb}from"@rango-dev/ui";var Jf=wb("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Rf=vb({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function rr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Yi.createElement(Jf,null,Yi.createElement(tg,{direction:"horizontal",label:eg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:N(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),Yi.createElement("div",{className:Rf()}),Yi.createElement(tg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:N(),label:eg.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(rr,"QuoteSummary");import{i18n as og}from"@lingui/core";import{ChevronDownIcon as bb,ChevronRightIcon as xb,Divider as Ol,Image as Eb,Tooltip as ea,Typography as Zi}from"@rango-dev/ui";import z from"react";var Ji=4,Ri=6,ir=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,c=s||N();return z.createElement(ea,{container:c,side:"bottom",sideOffset:4,open:r,content:e},z.createElement(qf,{className:n,state:a},z.createElement(Eb,{src:o,size:16})))},"ImageComponent");function ng(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:c}=t,l=c||N(),p=r.length,u=Td(r),{isTablet:d,isMobile:g}=un();return z.createElement(zf,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(f=>!f)}},z.createElement("div",{className:Cn()},z.createElement(Zi,{variant:"body",size:"xsmall"},og.t("Via:")),z.createElement(Ol,{direction:"horizontal",size:4}),r.map((h,f)=>{let m=`item-${f}`,T=z.createElement(Ml,null,z.createElement(xb,{size:12,color:"black"}));return g||d?z.createElement(z.Fragment,{key:m},z.createElement(ir,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),f!==p-1&&z.createElement(z.Fragment,null,T)):z.createElement(z.Fragment,{key:m},p<=Ji||p>Ji&&f<Ji-1?z.createElement(z.Fragment,null,z.createElement(ir,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),f!==p-1&&z.createElement(z.Fragment,null,T)):f===Ji-1&&z.createElement(ea,{container:l,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:Cn()},T,r.map((y,C)=>{let k=`image-${C}`;return C>=f&&z.createElement(z.Fragment,{key:k},z.createElement(ir,{content:y.swapper.displayName,src:y.swapper.image??"",state:y.state,open:!1}),C!==p-1&&z.createElement(z.Fragment,null,T))}))},z.createElement(Dl,{state:r.find((y,C)=>C>=f&&(y.state==="error"||y.state==="warning"))?.state},z.createElement(Zi,{size:"xsmall",variant:"body"},"+",p-f))))})),z.createElement("div",{className:Cn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:Cn()},z.createElement(Zi,{variant:"body",size:"xsmall"},og.t("Chains:")),z.createElement(Ol,{direction:"horizontal",size:4}),u.map((h,f)=>z.createElement(z.Fragment,{key:h.displayName},u.length<=Ri||u.length>Ri&&f<Ri-1?z.createElement(ea,{container:l,side:"bottom",content:h.displayName,sideOffset:4},z.createElement(ir,{content:"",src:h.image??"",open:!1,className:f!==0?"blockchainImage":""})):f===Ri-1&&z.createElement(ea,{container:l,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:Cn()},u.map((m,T)=>T>=f&&z.createElement(ir,{key:m.displayName,content:"",src:m.image??"",open:!1,className:T>f?"blockchainImage":"",container:c})))},z.createElement(Dl,{className:"blockchainImage"},z.createElement(Zi,{size:"xsmall",variant:"body"},"+",u.length-f))))),z.createElement(Ol,{direction:"horizontal",size:32}))),z.createElement(Ml,{orientation:a?"up":"down"},z.createElement(bb,{size:12,color:"black"}))))}i(ng,"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:g}=t,h=S().blockchains(),{findToken:f}=S(),m=S().swappers(),{customSlippage:T,slippage:y}=S(),C=T||y,[k,v]=Mb(t.expanded),x=Pb(null),A=_(o.value,6,6),I=_(n.value,6,6),E=n.usdValue?_(n.usdValue,4,4):"",b=Qt(o.usdValue,n.usdValue??null),w=_(b,2,2),B=Ht(b??0),M=i((de,ke)=>de.map((H,W)=>{let Q,K=r?.type===3&&r.swap.swapperId===H.swapperId,Y=r?.type===4&&!!r.recommendedSlippages?.[W],ye=a?.type===2&&!!a.recommendedSlippages?.[W],Qe=K||Y,Oe=ye;Qe?Q="error":Oe&&(Q="warning");let kt=Qe?Mo.t("Slippage Error"):Mo.t("Slippage Warning");return K&&(kt=Mo.t("Bridge Limit Error")),{swapper:{displayName:In(H.swapperId,m)??"",image:H.swapperLogo},from:{token:{displayName:H.from.symbol,image:H.from.logo},chain:{displayName:gt(H.from.blockchain,h)??"",image:H.from.blockchainLogo},price:{value:W===0&&!ke?_(o.value,6,6):_(H.fromAmount,6,6),usdValue:_((H.from.usdPrice??0)*parseFloat(H.fromAmount),4,4),realValue:W===0?o.value:H.fromAmount,realUsdValue:new Ul(H.from.usdPrice??0).multipliedBy(H.fromAmount).toString()}},to:{token:{displayName:H.to.symbol,image:H.to.logo},chain:{displayName:gt(H.to.blockchain,h)||"",image:H.to.blockchainLogo},price:{value:_(H.toAmount,6,6),usdValue:_((H.to.usdPrice??0)*parseFloat(H.toAmount),4,4),realValue:H.toAmount,realUsdValue:new Ul(H.to.usdPrice??0).multipliedBy(H.toAmount).toString()}},state:Q,alerts:Qe||Oe?U.createElement(Wf,{dense:d},U.createElement(Ib,{variant:"alarm",type:Qe?"error":"warning",title:kt,id:"widget-quote-footer-step-alarm-alert",footer:U.createElement(Lf,null,K&&U.createElement("div",null,U.createElement(kn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(Tn,{direction:"vertical",size:2}),U.createElement(kn,{size:"xsmall",variant:"body",color:"neutral900"},Mo.t({id:"Yours: {amount} {symbol}",values:{amount:_(H.fromAmount,6,6),symbol:H?.from.symbol}}))),(Y||ye)&&!K&&U.createElement("div",null,U.createElement(kn,{size:"xsmall",variant:"body",color:"neutral900"},Mo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.[W]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[W]}}})),U.createElement(Tn,{direction:"vertical",size:2}),U.createElement(kn,{size:"xsmall",variant:"body",color:"neutral900"},Mo.t({id:"Yours: {userSlippage}",values:{userSlippage:C}}))))})):void 0,time:Nn(H.estimatedTimeInSeconds),fee:_(Ps(H,f),2,2),internalSwaps:H.internalSwaps?M(H.internalSwaps):void 0}}),"getQuoteSteps"),$=M(e?.swaps??[]),q=$.length,ee=g||N(),V=vd(t.quote.tags||[]),L=!!u,te=Kr(e?.swaps),le=Nn(te),J=ki(e?.swaps??[],f),X=_(J,2,2),j=J.gte(new Ul(dd)),ue=te/fd>=md;return d?U.createElement(Ab,{selected:c,fee:X,time:le,tooltipContainer:vo(),steps:$,tags:V,id:"widget-quote-full-expanded-quote-container",quoteCost:U.createElement(Fl,{quote:e,fullExpandedMode:!0,time:le,fee:J,feeWarning:j,timeWarning:ue,showModalFee:p,steps:q}),percentageChange:w,warningLevel:B,outputPrice:{value:I,usdValue:E,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement($f,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:Ff()},!l&&V.length?U.createElement(U.Fragment,null,U.createElement(Kf,null,V.map((de,ke)=>{let H=`${de.value}_${ke}`;return U.createElement(U.Fragment,{key:H},U.createElement(Bb,{label:de.label,value:de.value}),U.createElement(Tn,{size:4,direction:"horizontal"}))})),U.createElement(Vi,null),!L&&U.createElement(Tn,{size:4})):null,U.createElement("div",{id:"portal-root",className:Of()},U.createElement(Fl,{quote:e,time:le,fee:J,feeWarning:j,timeWarning:ue,showModalFee:p,steps:q}),L&&U.createElement(Df,{onClick:de=>{de.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(kn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Mo.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:Uf()},U.createElement(Gf,null,U.createElement(Nb,{size:12,color:"gray"})),U.createElement(Vf,null,U.createElement(_l,{size:"small",variant:"body"},`${A} ${$[0].from.token.displayName} = `),U.createElement(rg,{content:n.value,container:ee,open:n.value?void 0:!1},U.createElement(_l,{size:"small",variant:"body"},"\xA0",`${I} ${$[$.length-1].to.token.displayName}`))),U.createElement(rg,{content:n.usdValue,container:ee},U.createElement(Tn,{size:2,direction:"horizontal"}),U.createElement(kn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${E})`))),s==="list-item"&&U.createElement(Lb,{id:"widget-quote-token-amount-container",tooltipContainer:ee,type:"output",direction:"vertical",price:{value:I,usdValue:E,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:$[q-1].to.token.displayName,image:$[q-1].to.token.image},chain:{image:$[q-1].to.chain.image},percentageChange:w,warningLevel:B}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement(rr,{from:$[0].from,to:$[q-1].to,percentageChange:w,warningLevel:B}),U.createElement(Tn,{size:4}))),U.createElement(Mf,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:v},U.createElement(ng,{type:s,quoteRef:x,selected:c,setExpanded:v,container:ee,expanded:k,steps:$}),U.createElement(Qf,{open:k},U.createElement(Hf,null),U.createElement("div",{className:_f()},$.map((de,ke)=>{let H=`item-${ke}`;return U.createElement(Wb,{type:"quote-details",className:"widget-quote-step-details-container",key:H,tooltipContainer:ee,step:de,hasSeparator:ke!==$.length-1,state:de.state})})))))}i(zl,"Quote");import{Divider as Fb,Skeleton as Ob}from"@rango-dev/ui";import Xt from"react";import{darkTheme as _b,styled as ta}from"@rango-dev/ui";var ig=ta("div",{$$color:"$colors$neutral100",[`.${_b} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),ag=ta("div",{paddingTop:"$2"}),sg=ta("div",{paddingLeft:"$8"}),lg=ta("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as Sg,Divider as Et,Skeleton as ut}from"@rango-dev/ui";import G from"react";import{css as Db,styled as jt}from"@rango-dev/ui";var ql=jt("div",{display:"flex"}),cg=jt("div",{padding:"$10 $0 $20"}),pg=jt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),ug=jt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),dg=jt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),mg=jt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),fg=jt("div",{width:"65%",display:"flex",justifyContent:"start"}),gg=jt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),hg=jt("div",{padding:"$15 $0 $15 $0"}),yg=Db({display:"flex",justifyContent:"space-between",alignItems:"center"});function ar(t){let{type:e,tagHidden:o=!0}=t,n=G.createElement(dg,null,G.createElement(fg,null,G.createElement(Sg,{loading:!0,size:"medium"}),G.createElement(Et,{size:8,direction:"horizontal"}),G.createElement(gg,null,G.createElement(ut,{height:10,width:60,variant:"rounded"}),G.createElement(Et,{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(ql,null,G.createElement(ut,{width:65,height:20,variant:"rounded"}),G.createElement(Et,{size:4,direction:"horizontal"}),G.createElement(ut,{width:65,height:20,variant:"rounded"}),G.createElement(Et,{size:4,direction:"horizontal"}),G.createElement(ut,{width:65,height:20,variant:"rounded"})),G.createElement(Vi,null),!r&&G.createElement(Et,{size:4})),G.createElement("div",{className:yg()},G.createElement(ql,null,G.createElement(ut,{width:60,height:10,variant:"rounded"}),G.createElement(Et,{size:4,direction:"horizontal"}),G.createElement(ut,{width:60,height:10,variant:"rounded"}),G.createElement(Et,{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(cg,null,G.createElement(ut,{height:15,width:148,variant:"rounded"})),e==="list-item"&&G.createElement(pg,null,G.createElement(ug,null,G.createElement(Sg,{loading:!0,size:"medium"}),G.createElement(Et,{direction:"horizontal",size:4}),G.createElement(ut,{height:15,width:150,variant:"rounded"})),G.createElement(Et,{size:10}),G.createElement(ut,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&G.createElement(G.Fragment,null,G.createElement(Et,{size:4}),G.createElement(hg,null,n,G.createElement(mg,null),n),G.createElement(Et,{size:12})))}i(ar,"QuoteSummarySkeleton");import{ChainToken as wg,Divider as Hl,NextIcon as $b,Skeleton as oa}from"@rango-dev/ui";import Pe from"react";import{styled as sr}from"@rango-dev/ui";var Cg=sr("div",{display:"flex",alignItems:"start"}),Tg=sr("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Ql=sr("div",{display:"flex",alignItems:"center",flexGrow:1}),kg=sr("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),vg=sr("div",{display:"flex",alignItems:"center"});function _t(t){let{separator:e=!0}=t;return Pe.createElement(Pe.Fragment,null,Pe.createElement(vg,null,Pe.createElement(oa,{height:22,width:22,variant:"circular"}),Pe.createElement(Hl,{direction:"horizontal",size:8}),Pe.createElement(oa,{height:15,width:148,variant:"rounded"})),Pe.createElement(Cg,null,Pe.createElement(lg,{hideSeparator:!e}),Pe.createElement(Tg,{extraSpace:e},Pe.createElement(Ql,null,Pe.createElement(wg,{size:"small",loading:!0}),Pe.createElement(Hl,{direction:"horizontal",size:8}),Pe.createElement(oa,{height:12,variant:"rounded"})),Pe.createElement(kg,null,Pe.createElement($b,{color:"gray",size:16})),Pe.createElement(Ql,null,Pe.createElement(wg,{size:"small",loading:!0}),Pe.createElement(Hl,{direction:"horizontal",size:8}),Pe.createElement(oa,{height:12,variant:"rounded"})))))}i(_t,"StepSkeleton");function lr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Xt.createElement(ig,{expanded:o,rounded:e!=="basic"},Xt.createElement(ar,{type:e,tagHidden:n}),Xt.createElement(ag,null,Xt.createElement(Ob,{height:15,variant:"rounded"})),o&&Xt.createElement(sg,null,Xt.createElement(Fb,{size:24}),Xt.createElement(_t,null),Xt.createElement(_t,null),Xt.createElement(_t,{separator:!1})))}i(lr,"QuoteSkeleton");function _o(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:g,fullExpandedMode:h=!1,container:f}=t,{inputAmount:m,inputUsdValue:T}=O(),y=e?.outputAmount?new Ub(e?.outputAmount):null,C=e?St(e):null,v=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?na.createElement(Pl,null,na.createElement(lr,{tagHidden:c,type:o,expanded:s})):v?na.createElement(Pl,{onClick:()=>l?.(e),id:d},na.createElement(zl,{quote:e,error:r,container:f,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:g,fullExpandedMode:h,input:{value:m,usdValue:T?.toString()??""},output:{value:y?.toString()??"",usdValue:C?.toString()??""}})):null}i(_o,"QuoteInfo");import{warn as Hb}from"@rango-dev/logging-core";import{calculatePendingSwap as Gb}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Vb}from"react";import{useRef as zb,useState as qb}from"react";var Qb=2e3;function ra({request:t}){let[e,o]=qb(!1),n=zb(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,Qb)),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(ra,"useFetch");function bg(){let{fetch:t,loading:e,cancelFetch:o}=ra({request:async(n,r)=>await ct().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(bg,"useFetchConfirmQuote");function ia(t){if(!t.swaps)throw new Error(ne().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=Gl(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(ia,"throwErrorIfResponseIsNotValid");function Gl(t){if(Id(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Ad(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=Ld(t);if(o){let n=vi(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(Gl,"getQuoteError");function xg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=sn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=_d(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(xg,"generateWarnings");function aa(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(aa,"handleQuoteErrors");function Vl(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:c}=O(),{slippage:l,customSlippage:p}=S(),u=S().getDisabledLiquiditySources(),d=S().blockchains(),g=S().tokens(),{findToken:h}=S(),f=p||l,{fetch:m,cancelFetch:T,loading:y}=bg();return Vb(()=>T,[]),{loading:y,fetch:i(async k=>{let v=k.selectedWallets,x=k?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((E,b)=>(E[b.chain]=b.address,E),{}),I={requestId:a?.requestId||"",selectedWallets:A,destination:x||void 0};try{return await m(I,!0).then(E=>{let{result:b}=E;if(!b)throw new Error(E.error??"Error fetching updated quote");ia({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let w={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};r(w);let B={slippage:f.toString(),disabledSwappersGroups:u},M=xg({previousQuote:a??void 0,currentQuote:w,meta:{blockchains:d},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:h});c();let $=!!M.balance,q=Gb(o.toString(),b,Md(v),B,!$,{blockchains:d,tokens:g});return{quote:w,swap:q,error:null,warnings:M}})}catch(E){let b=aa(E);return b.type!==2&&Hb(new Error("confirm swap error"),{tags:{...b,type:Xe[b.type],initialQuote:a,requestBody:I}}),{swap:null,error:b,warnings:null}}},"fetch"),cancelFetch:T}}i(Vl,"useConfirmSwap");var ox=Yb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Eg}`]:{width:"$48",height:"$48"}}),nx=Xl({flexGrow:1,paddingRight:"$10"}),rx=Xl({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),ix=Xl({display:"flex",justifyContent:"space-between",alignItems:"center"});function Ig(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=O(),s=tx(),[c,l]=cr(""),p=!n,[u,d]=cr(!1),[g,h]=cr(!1),{isActiveTab:f}=oe(),m=S().getDisabledLiquiditySources(),T=ex(m),{manager:y}=Kb(),{fetch:C,loading:k,cancelFetch:v}=Vl(),[x,A]=cr({swap:null,error:null,warnings:null}),[I,E]=cr(!1),b=i(async({selectedWallets:L,customDestination:te})=>{let le=await C?.({selectedWallets:L,customDestination:te});return A(le),le},"onConfirmSwap"),w=i(async()=>{if(x.swap&&n)try{await y?.create("swap",{swapDetails:x.swap},{id:x.swap.requestId});let L=`../${F.swaps}/${x.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()=>{x.warnings?.quote&&Cd(x.warnings.quote)&&!a?E(!0):await B()},"onStartConfirmSwap"),$=i(async()=>{A({error:null,swap:null,warnings:null}),C({selectedWallets:o,customDestination:r}).then(L=>{A(L)}).catch(L=>console.error(L))},"onRefresh");sa(()=>{!!T.current.length&&!m.length&&$(),T.current=m},[m.length]),sa(()=>{p&&v()},[p]),sa(()=>{p&&d(p)},[p]),sa(()=>{p||C({selectedWallets:o,customDestination:r}).then(L=>A(L)).catch(L=>console.error(L))},[]),Rb(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=x.warnings?.quote??null,ee=x.error,V=[];if(c&&V.push(Fe.createElement(jb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||ee){let L=`../${F.settings}`;V.push(Fe.createElement(or,{warning:q,error:ee,couldChangeSettings:!1,refetchQuote:$,skipAlerts:ee?.type===4||q?.type===2,showWarningModal:I,confirmationDisabled:!f,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await w()},onChangeSettings:()=>s(L)}))}return Fe.createElement(ie,{header:{title:Kl.t("Confirm Swap"),onWallet:()=>{let L=`../${F.wallets}`;s(L)}},footer:Fe.createElement(ox,null,Fe.createElement("div",{className:nx()},Fe.createElement(Xb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||g,disabled:!!x.error||!f,onClick:M},Kl.t("Start Swap"))),Fe.createElement(Eg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||g,disabled:!f,onClick:d.bind(null,!0)},Fe.createElement(Jb,{size:24})))},u&&Fe.createElement(uf,{open:u,onClose:()=>d(!1),onCancel:v,loading:k,onCheckBalance:b}),Fe.createElement(ae,null,Fe.createElement("div",{className:ix()},Fe.createElement(Zb,{variant:"title",size:"small"},Kl.t("You get")),Fe.createElement("div",{className:rx()},Fe.createElement(Bi,{onClick:!k&&!u&&!I?$:void 0}))),Fe.createElement(jl,{size:"12"}),sm(V.map((L,te)=>({element:L,key:`alert-${te}`})),Fe.createElement(jl,{size:10})),V.length>0?Fe.createElement(jl,{size:10}):null,Fe.createElement(_o,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:x.error,loading:k,warning:x.warnings?.quote??null})))}i(Ig,"ConfirmSwapPage");import{i18n as Zt}from"@lingui/core";import{Button as sc,CustomTokensZeroStateDarkIcon as Ex,CustomTokensZeroStateIcon as Ix,DeleteIcon as Ax,Divider as gr,IconButton as Nx,MessageBox as Bx,NotFound as Wx,styled as cc}from"@rango-dev/ui";import ge,{useState as lc}from"react";import{useNavigate as Lx}from"react-router-dom";import{CloseIcon as sx,IconButton as lx,SearchIcon as cx,TextField as px}from"@rango-dev/ui";import pr from"react";import{styled as ax}from"@rango-dev/ui";var Ag=ax("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function It(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,g=s.length?pr.createElement(lx,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},pr.createElement(sx,{color:"gray",size:10})):null;return p&&(g=p),pr.createElement(px,{prefix:pr.createElement(Ag,null,pr.createElement(cx,{color:"black"})),id:u,suffix:g,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...c},size:r,value:s,onChange:a,...d})}i(It,"SearchInput");import{i18n as ac}from"@lingui/core";import{Button as fx,CustomTokenWarning as gx,darkTheme as Ug,Divider as Yt,ExternalLinkIcon as hx,Image as yx,ListItem as Sx,NotFound as Cx,PinIcon as Tx,Skeleton as Do,Typography as mr,VirtualizedList as kx}from"@rango-dev/ui";import P,{useState as vx}from"react";import{useTranslation as wx}from"react-i18next";import{Divider as Fg,ListItem as mx,Skeleton as dr}from"@rango-dev/ui";import At from"react";import{css as vn,darkTheme as Yl,ImageContainer as ux,ListItemButton as dx,styled as it,Typography as Ng}from"@rango-dev/ui";var Zl=vn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),Jl=vn({position:"relative",height:12,width:"30%",maxWidth:"150px"}),Rl=vn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),ec=vn({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${Yl} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),tc=vn({}),oc=vn(),Bg=it("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),nc=it("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),la=it("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${Jl}`]:{[`& .${ec}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${tc}`]:{bottom:"-15px"},[`& .${Zl}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${Rl}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Wg=it(dx,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),rc=it("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),ic=it(Ng,{}),Lg=it("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${oc}`]:{$$color:"$colors$neutral600",[`.${Yl} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),ur=it("div",{display:"flex",alignItems:"end",flexDirection:"column"}),eV=it("div",{display:"flex",alignItems:"center"}),Pg=it("div",{position:"relative",[`& ${ux}`]:{borderRadius:"$xm",overflow:"hidden"}}),Mg=it("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),_g=it(Ng,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),Dg=it("a",{"& svg:hover":{color:"$colors$info"}}),$g=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":{[`.${Yl} &`]:{color:"$foreground"}}}});function Og(t){return At.createElement(la,null,Array.from(Array(t.size),e=>At.createElement(mx,{key:e,hasDivider:!0,start:At.createElement(dr,{variant:"circular",width:35,height:35}),end:At.createElement(ur,null,At.createElement(dr,{variant:"text",size:"large",width:70}),At.createElement(Fg,{size:4}),At.createElement(dr,{variant:"text",size:"medium",width:50})),title:At.createElement("div",null,At.createElement(dr,{variant:"text",size:"large",width:90}),At.createElement(Fg,{size:4}),At.createElement(dr,{variant:"text",size:"medium",width:90}))})))}i(Og,"LoadingTokenList");var bx=20,xx=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return P.createElement("div",{className:Jl()},o?P.createElement("div",{className:Zl()},o):P.createElement(nc,{className:Rl()},P.createElement(mr,{variant:"title",size:"xmedium"},r.symbol),P.createElement(Yt,{direction:"horizontal",size:4}),P.createElement(rc,{css:a},P.createElement(ic,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&P.createElement("div",{className:`${ec()} ${!o&&tc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",P.createElement(Yt,{size:4,direction:"horizontal"}),P.createElement(Dg,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},P.createElement(hx,{size:12}))))},"renderDesc");function fr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=S().fetchStatus,u=S().blockchains(),{getBalanceFor:d,fetchingWallets:g}=S(),{isTokenPinned:h}=S(),{setFromToken:f,setToToken:m}=O(),{t:T}=wx(),y=Ve(),[C,k]=vx(null),v=i(()=>{c==="source"?f({token:C,meta:{blockchains:u}}):m({token:C,meta:{blockchains:u}})},"updateToken"),x=i(()=>{v(),y()},"handleImportToken"),A=i(b=>{if(b.customToken){let{customToken:B,...M}=b;return P.createElement(fx,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),k({...M,warning:!0})},"handleClick")},P.createElement(mr,{variant:"body",size:"xsmall",color:"background"},T("import")))}let w=Zr(d(b));return s?s(b):g?P.createElement(ur,null,P.createElement(Do,{variant:"text",size:"large",width:70}),P.createElement(Yt,{size:4}),P.createElement(Do,{variant:"text",size:"medium",width:50})):w&&P.createElement(Lg,null,P.createElement(_g,{variant:"title",size:"small"},w.amount),P.createElement("div",null),w.usdValue&&P.createElement(mr,{variant:"body",className:oc(),size:"xsmall"},`$${w.usdValue}`))},"endRenderer"),I=i(()=>P.createElement(kx,{itemContent:b=>{let w=e[b];if(w==="skeleton")return P.createElement(Sx,{hasDivider:!0,start:P.createElement(Do,{variant:"circular",width:35,height:35}),end:P.createElement(ur,null,P.createElement(Do,{variant:"text",size:"large",width:70}),P.createElement(Yt,{size:4}),P.createElement(Do,{variant:"text",size:"medium",width:50})),title:P.createElement("div",null,P.createElement(Do,{variant:"text",size:"large",width:90}),P.createElement(Yt,{size:4}),P.createElement(Do,{variant:"text",size:"medium",width:90}))});let B=w.address||"",M=u.find(L=>L.name===w.blockchain);if(!M)return null;let $=Ys(M.color,"main"),q={$$color:$.main150,[`.${Ug} &`]:{$$color:$.main750},backgroundColor:"$$color"},ee={$$color:$.main750,[`.${Ug} &`]:{$$color:$.main150},color:"$$color"},V=i(()=>{typeof w!="string"&&!w.customToken&&n?.(w)},"handleClick");return P.createElement($g,null,P.createElement(Wg,{"tab-index":b,key:`${w.symbol}${w.address}`,id:`${w.symbol}${w.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:w.customToken,onClick:V,start:P.createElement(Pg,null,P.createElement(yx,{src:w.image===""?zr:w.image,size:30}),t.type!=="custom-token"&&h(w,t.type)&&P.createElement(Mg,null,P.createElement(Tx,{size:12,color:"gray"}))),title:M?.type==="COSMOS"||w.name||!w.name&&!B?P.createElement(nc,null,P.createElement(mr,{variant:"title",size:"xmedium"},w.symbol),P.createElement(Yt,{direction:"horizontal",size:4}),P.createElement(rc,{css:q},P.createElement(ic,{variant:"body",size:"xsmall",css:ee},w.blockchain)),l&&w.warning&&P.createElement(P.Fragment,null,P.createElement(Yt,{direction:"horizontal",size:4}),P.createElement(gx,{container:N()}))):void 0,description:typeof w!="string"&&M?.info&&B&&M.type!=="COSMOS"?xx({address:B,token:w,customCssForTag:q,customCssForTagTitle:ee,name:w.name,url:M.info.addressUrl.split("{wallet}").join(B)}):w.name||void 0,end:A(w)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=C?To(C?.blockchain,u):null;return P.createElement(P.Fragment,null,a&&P.createElement(P.Fragment,null,P.createElement(mr,{variant:"label",size:"large"},ac.t("Select Token")),P.createElement(Yt,{size:4})),P.createElement(Bg,null,P.createElement(Yt,{size:4}),p==="loading"&&P.createElement(Og,{size:bx}),p==="success"&&(e.length?P.createElement(P.Fragment,null,P.createElement(Kn,{token:C,address:C?.address??"",blockchain:E??void 0,onImport:x,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),P.createElement(la,{as:"ul"},I())):!!o&&P.createElement(Cx,{title:ac.t("No results found"),description:ac.t("Try using different keywords")}))))}i(fr,"TokenList");var Px=cc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Mx=cc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),_x=cc(Nx,{"&:hover":{"& svg":{color:"$secondary550"}}});function zg(){let[t,e]=lc(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=O(),{mode:l}=io({}),p=Lx(),[u,d]=lc(!1),[g,h]=lc(),f=i(C=>{let k=C.target.value;e(k)},"handleSearch"),m=l==="dark",T=n.filter(C=>st(C.symbol,t)||st(C.address||"",t)||st(C.name||"",t)),y=i(()=>{if(g){let C=a?ht(a):null,k=r?ht(r):null,v=ht(g);C===v?c({token:null}):k===v&&s({token:null}),o(g)}d(!1)},"handleDeleteCustomToken");return ge.createElement(ie,{header:{title:Zt.t("Custom Tokens")}},ge.createElement(ae,null,ge.createElement(Px,null,n.length?ge.createElement(ge.Fragment,null,ge.createElement(It,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Zt.t("Search Token"),onChange:f}),ge.createElement(gr,{size:16}),ge.createElement(fr,{list:T,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:C=>ge.createElement(_x,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(C)}},ge.createElement(Ax,{size:12,color:"gray"}))})):ge.createElement(Mx,null,ge.createElement(Wx,{icon:m?ge.createElement(Ex,{size:200}):ge.createElement(Ix,{size:200}),title:Zt.t("No custom tokens"),description:Zt.t("press the button to add your custom token")})),ge.createElement(gr,{size:20}),ge.createElement(sc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p(F.addCustomTokens)},Zt.t("Add Custom Token"))),ge.createElement(R,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:N()},ge.createElement(Bx,{title:Zt.t("Delete Custom Token"),type:"error",description:Zt.t("Are you sure you want to Delete this Token?")},ge.createElement(gr,{size:40}),ge.createElement(gr,{size:10}),ge.createElement(sc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:y},Zt.t("Yes, Delete it")),ge.createElement(gr,{size:12}),ge.createElement(sc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},Zt.t("No, Continue"))))))}i(zg,"CustomTokensPage");import{i18n as Re}from"@lingui/core";import{useManager as tE}from"@rango-dev/queue-manager-react";import{Button as hc,darkTheme as oE,Divider as Fo,MessageBox as nE,NotFound as rE,styled as yc,Typography as ua}from"@rango-dev/ui";import{TransactionStatus as Sr}from"rango-types";import se,{useMemo as ah,useState as da}from"react";import{useNavigate as iE}from"react-router-dom";import{FilterIcon as qx,Popover as Qx}from"@rango-dev/ui";import $o from"react";import{css as Dx,darkTheme as ca,IconButton as $x,styled as hr}from"@rango-dev/ui";var pc=hr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${ca} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),qg=hr($x,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ca} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ca} &`]:{backgroundColor:"$neutral"},[`& ${pc}::before`]:{backgroundColor:"$secondary100",[`.${ca} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Qg=hr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Hg=hr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Gg=Dx({display:"flex",justifyContent:"space-between",alignItems:"center"}),Vg=hr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Kg}from"@lingui/core";import{Button as Fx,Divider as jg,ListItemButton as Ox,Radio as Ux,RadioRoot as zx,Typography as Xg}from"@rango-dev/ui";import dt from"react";function Yg(t){let{filterBy:e,onClickItem:o}=t;return dt.createElement(Hg,null,dt.createElement("div",{className:Gg()},dt.createElement(Xg,{size:"small",variant:"body"},Kg.t("Status")),dt.createElement(Fx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Kg.t("Reset"))),dt.createElement(jg,{size:10}),dt.createElement(zx,{value:e},dt.createElement(Vg,null,t.list.map((n,r)=>dt.createElement(Ox,{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(jg,{direction:"horizontal",size:4}),dt.createElement(Xg,{size:"medium",variant:"body"},n.title)),start:dt.createElement(Ux,{value:n.id}),onClick:o})))))}i(Yg,"FilterSelectorContent");function uc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return $o.createElement("div",null,$o.createElement(Qx,{open:a,align:"end",onOpenChange:o,container:N(),content:$o.createElement(Yg,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},$o.createElement(qg,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},$o.createElement(pc,{isSelect:!!n},$o.createElement(qx,{size:16,color:"black"}),!!n&&$o.createElement(Qg,null)))))}i(uc,"FilterSelector");import{i18n as Vx}from"@lingui/core";import{getCurrentStep as Kx}from"@rango-dev/queue-manager-rango-preset";import{Divider as th,GroupedVirtualizedList as jx,Skeleton as Xx,SwapListItem as oh,Typography as Yx}from"@rango-dev/ui";import Je,{useCallback as nh,useEffect as Zx,useRef as Jx,useState as Rx}from"react";function Zg(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(Zg,"calculateGroupsSoFar");import{css as Hx,darkTheme as Gx,styled as yr}from"@rango-dev/ui";var dc=Hx(),Jg=yr("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),mc=yr("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${dc}`]:{$$color:"$colors$neutral600",[`.${Gx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),fc=yr("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Rg=yr("div",{gap:"$10",display:"flex",flexDirection:"column"}),eh=yr("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var eE=10;function gc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=Rx([]),c=Jx(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=nh(Zg,[]),g=nh(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,eE),s(d(p,c.current)))},[e.length]);if(Zx(()=>{r||g()},[r,g]),r){let h=[1,2];return Je.createElement(Je.Fragment,null,[h,h].map((m,T)=>Je.createElement(mc,{key:T},Je.createElement(fc,null,Je.createElement(Xx,{variant:"text",width:60,size:"small"}),Je.createElement(th,{size:16})),Je.createElement(th,{size:4}),Je.createElement(Rg,null,m.map((C,k)=>Je.createElement(oh,{isLoading:!0,key:k}))))))}return Je.createElement(jx,{endReached:()=>{c.current<e.length&&g()},groupCounts:a,groupContent:h=>Je.createElement(mc,null,Je.createElement(fc,null,Je.createElement(Yx,{variant:"label",size:"medium",className:dc()},u[h]))),itemContent:(h,f)=>{let m=l[h];if(!m)return null;let T=Kx(m),y=m.steps[0],C=m.steps[m.steps.length-1];return Je.createElement(Jg,{key:m.requestId},Je.createElement(oh,{className:"widget-history-group-list-swap-item-btn",requestId:m.requestId,creationTime:m.creationTime,status:m.status,onClick:o,currentStep:T,tooltipContainer:N(),onlyShowTime:u[f]===Vx.t("Today"),swapTokenData:{from:{token:{image:y.fromLogo,displayName:y.fromSymbol},blockchain:{image:y.fromBlockchainLogo||""},amount:_(m.inputAmount,6,6),realAmount:m.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(gc,"HistoryGroupedList");import{i18n as pa}from"@lingui/core";import rh from"dayjs";var ih=i(t=>{let e=new Map([["today",{title:pa.t("Today"),swaps:[]}],["week",{title:pa.t("This week"),swaps:[]}],["month",{title:pa.t("This month"),swaps:[]}],["year",{title:pa.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=rh();t.forEach(l=>{let p=Number(l.creationTime),u=rh(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 aE=yc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),sE=yc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),lE=yc("div",{"._typography":{color:"$neutral700",[`.${oE}&`]:{color:"$neutral900"}}}),cE=[{id:Sr.SUCCESS,title:Re.t("Complete")},{id:Sr.RUNNING,title:Re.t("Running")},{id:Sr.FAILED,title:Re.t("Failed")}],pE=i((t,e)=>t?.length?t.filter(o=>Wt(o.fromBlockchain,e)||Wt(o.toBlockchain,e)||Wt(o.toSymbol,e)||Wt(o.fromSymbol,e)).length:!1,"isStepContainsText");function sh(){let t=iE(),{manager:e,state:o}=tE(),n=Ct(e).map(({swap:k})=>k),[r,a]=da(""),[s,c]=da(!1),l=!o.loadedFromPersistor,[p,u]=da(""),[d,g]=da(!1),h=i(k=>{let v=k.target.value;a(v)},"handleSearch"),f=ah(()=>!r&&!p?n:n.filter(k=>{let{inputAmount:v,status:x,steps:A,requestId:I}=k;return(!r||Wt(v,r)||Wt(x,r)||pE(A,r)||Wt(I,r))&&(!p||p===x)}),[n,r,p]),m=!f?.length&&!l,T=i(()=>g(!1),"onCloseModal"),y=i(async()=>{try{await e?.clearQueue(),g(!1)}catch(k){console.log(k)}},"onClear"),C=ah(()=>!n.some(k=>k.status===Sr.SUCCESS||k.status===Sr.FAILED),[n]);return se.createElement(ie,{header:{title:Re.t("History"),suffix:se.createElement(ao,null,se.createElement(hc,{id:"widget-history-clear-btn",disabled:C,variant:"ghost",size:"xsmall",onClick:()=>g(!0)},se.createElement(ua,{size:"medium",variant:"label",color:"error"},Re.t("Clear"))))}},se.createElement(ae,null,se.createElement(sE,null,se.createElement(It,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Re.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:h,style:{height:36},value:r}),se.createElement(Fo,{size:10,direction:"horizontal"}),se.createElement(uc,{filterBy:p,open:s,onOpenChange:k=>c(k),onClickItem:k=>u(k),list:cE})),se.createElement(Fo,{size:"16"}),se.createElement(aE,null,m&&se.createElement(eh,null,se.createElement(Fo,{size:32}),se.createElement(rE,{title:r?Re.t("No results found"):Re.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Re.t("Try using different keywords"):Re.t("Your transaction history is stored locally and will appear here after you start a swap")})),!m&&se.createElement(gc,{list:f,onSwapClick:t,groupBy:ih,isLoading:l}))),se.createElement(R,{open:d,onClose:T,id:"widget-history-clear-modal",container:N()},se.createElement(Fo,{size:20}),se.createElement(nE,{type:"warning",title:Re.t("Clear Transaction History"),description:se.createElement(lE,null,se.createElement(ua,{variant:"body",size:"medium"},Re.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),se.createElement(Fo,{size:"24"}),se.createElement(ua,{variant:"body",size:"small"},Re.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),se.createElement(Fo,{size:30}),se.createElement(hc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:y},Re.t("Yes, Clear the history")),se.createElement(Fo,{size:10}),se.createElement(hc,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:T},se.createElement(ua,{variant:"title",size:"medium",color:"primary"},Re.t("No, Cancel")))))}i(sh,"HistoryPage");import{i18n as VE}from"@lingui/core";import{Button as KE,Divider as Wc,styled as jE,WarningIcon as XE}from"@rango-dev/ui";import YE from"bignumber.js";import Se,{useEffect as $h,useState as Fh}from"react";import{useNavigate as ZE}from"react-router-dom";import{i18n as ch}from"@lingui/core";import{Alert as dE,Divider as Sc,NoRouteIcon as mE,Typography as fE}from"@rango-dev/ui";import Oo from"react";import{styled as uE}from"@rango-dev/ui";var lh=uE("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Cc(){let{fromToken:t,toToken:e}=O();return!!t&&!!e&&Ot(t,e)?Oo.createElement(lh,null,Oo.createElement(Sc,{size:10}),Oo.createElement(mE,{size:24,color:"gray"}),Oo.createElement(Sc,{size:4}),Oo.createElement(fE,{variant:"title",size:"small"},ch.t("No Routes Found")),Oo.createElement(Sc,{size:4}),Oo.createElement(dE,{title:ch.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Cc,"SameTokensWarning");import{Alert as gE,Button as hE}from"@rango-dev/ui";import uh from"react";import{i18n as ma}from"@lingui/core";function ph(t){let e=null;return t===ti?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:ma.t("Reset"),title:ma.t("Slippage cannot be set lower than 0.01%.")},e):t>jo?(e={alertType:"warning",action:"change-settings",actionButtonTitle:ma.t("Change"),title:ma.t("Caution, your slippage is high!")},e):null}i(ph,"makeAlerts");function dh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=S(),{onChangeSettings:a}=t,c=ph(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(ei),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?uh.createElement(gE,{title:c.title,type:c.alertType,variant:"alarm",action:uh.createElement(hE,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(dh,"SlippageWarningsAndErrors");import{i18n as kE}from"@lingui/core";import{IconButton as vE,ReverseIcon as wE,Skeleton as bE,Tooltip as xE,Typography as Cr}from"@rango-dev/ui";import mt from"react";import fa from"bignumber.js";function fh(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(fh,"getSlippageColor");function gh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new fa(e),r=new fa(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(gh,"getUsdExchangeRate");function hh(t,e){let o=new fa(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,fa.ROUND_DOWN).toFormat(2)}`}i(hh,"formatTokenValueInUsd");import{darkTheme as CE,styled as kc,Typography as TE}from"@rango-dev/ui";var yh=kc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),Sh=kc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${CE} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),vc=kc(TE,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function wc(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=S(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:g}=io({}),h=Zo(d),f=g==="dark",m=n==="default",T={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,k=p?.swaps[p?.swaps.length-1].to||l,v=m?C:k,x=m?k:C,A=Number(m?p?.outputAmount:p?.requestAmount),I=Number(m?p?.requestAmount:p?.outputAmount),E=A||v.usdPrice,b=I||x.usdPrice,{rawValue:w,displayValue:B}=gh({toTokenUsdPrice:b,fromTokenUsdPrice:E});return mt.createElement(yh,null,mt.createElement(Cr,{variant:T||y?"label":"body",size:T||y?"medium":"small",color:fh({error:T,warning:y,isDarkTheme:f})},kE.t("Slippage:")," ",d,"%"),u?mt.createElement(bE,{height:16,width:104,variant:"rounded"}):E&&b&&mt.createElement(Sh,null,mt.createElement(Cr,{className:"rate-text",variant:"body",size:"small"},"1"),mt.createElement(vc,{className:"rate-text",variant:"body",size:"small"},x.symbol),mt.createElement(vE,{id:"widget-home-page-change-rate-button",onClick:r},mt.createElement(wE,{size:14,color:"secondary"})),mt.createElement(xE,{container:N(),side:"top",sideOffset:4,content:mt.createElement(Cr,{className:"rate-text",variant:"body",size:"small"},w)},mt.createElement(Cr,{className:"rate-text",variant:"body",size:"small"},B)),mt.createElement(vc,{className:"rate-text",variant:"body",size:"small"},v.symbol),v.usdPrice&&mt.createElement(Cr,{color:"neutral600",variant:"body",size:"small"},"~",hh(Number(w),v.usdPrice))))}i(wc,"SwapMetrics");import{i18n as WE}from"@lingui/core";import{Header as LE}from"@rango-dev/ui";import mo,{useEffect as PE,useState as ME}from"react";import{i18n as IE}from"@lingui/core";import{Divider as xc,FullExpandedQuote as AE,Typography as NE}from"@rango-dev/ui";import xe from"react";import{styled as bc}from"@rango-dev/ui";var Ch=bc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Th=bc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),kh=bc("div",{width:"146px"});import{i18n as Tr}from"@lingui/core";import{Select as EE}from"@rango-dev/ui";import vh from"react";function ga(t){let{updateQuotePartialState:e,sortStrategy:o}=O(),n=[{value:"SMART",label:Tr.t("Smart Routing")},{value:"FEE",label:Tr.t("Lowest Fee")},{value:"SPEED",label:Tr.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Tr.t("Maximum Return")},{value:"PRICE",label:Tr.t("Maximum Output")}];return vh.createElement(kh,null,vh.createElement(EE,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(ga,"SelectStrategy");var wh=3;function kr(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:g,sortStrategy:h,error:f}=O(),{slippage:m,customSlippage:T}=S(),{findToken:y}=S(),C=c||N(),k=!!p&&p.results.length,v=T??m,x=i(E=>{if(!d||!g||!p)return null;let b={requestAmount:p.requestAmount,validationStatus:null,...E};return sn({currentQuote:b,userSlippage:v,findToken:y})},"getQuoteWarning"),A=f?.type===0||f?.type===1,I=p?.results?Ti(h,p?.results):[];return xe.createElement(xe.Fragment,null,a&&xe.createElement(xe.Fragment,null,xe.createElement(Th,null,xe.createElement(NE,{size:"xmedium",variant:"title"},IE.t("Sort by")),xe.createElement(ga,{container:C})),xe.createElement(xc,{size:"10"})),e&&Array.from({length:wh},(E,b)=>xe.createElement(xe.Fragment,{key:b},s?xe.createElement(AE,{loading:!0}):xe.createElement(lr,{tagHidden:!1,type:"list-item",expanded:!1}),b!==wh-1&&xe.createElement(xc,{size:16}))),!e&&xe.createElement(xe.Fragment,null,k?I.map((E,b)=>{let w=x(E),B=Gl(E.swaps),M=I.length-1===b;return xe.createElement(xe.Fragment,{key:E.requestId},xe.createElement(_o,{id:"widget-quotes-quote-info-container",showModalFee:r,container:C,selected:l?.requestId===E.requestId,tagHidden:!1,quote:{...E,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&&xe.createElement(xc,{size:16}))}):A&&xe.createElement(Ch,null,xe.createElement(Rn,{size:s?"large":"small",error:f,fetch:n}))))}i(kr,"Quotes");import{darkTheme as BE,styled as bh}from"@rango-dev/ui";var xh=bh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${BE} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Eh=bh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var _E=100;function Ec(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=ME(!1),l=s?"":"is-hidden",{config:p}=S(),u=p?.variant==="full-expanded",d=vo();return PE(()=>{let g=null;return a?g=setTimeout(()=>{c(!0)},_E):(c(!1),g&&clearTimeout(g)),()=>{g&&clearTimeout(g)}},[a]),mo.createElement(xh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Mi()} widget-expanded-quotes-container`,id:tt.EXPANDED_BOX_ID},mo.createElement(LE,{title:WE.t("Routes"),suffix:mo.createElement(mo.Fragment,null,mo.createElement(ga,{container:d}),mo.createElement(Lo,{container:d,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),mo.createElement(Eh,null,mo.createElement(kr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:vo(),onClickOnQuote:n,fullExpandedMode:u})))}i(Ec,"ExpandedQuotes");import{i18n as Ph}from"@lingui/core";import{SwapInput as Mh}from"@rango-dev/ui";import OE from"bignumber.js";import vr from"react";import{ReverseIcon as FE}from"@rango-dev/ui";import Ac from"react";import{keyframes as DE,styled as Ih}from"@rango-dev/ui";var Ic=450,$E=DE({"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)"}}),Ah=Ih("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Nh=Ih("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${$E} ${Ic}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 Nc(){let t=O.use.switchFromAndTo();return Ac.createElement(Ah,null,Ac.createElement(Nh,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Ic),t()}},Ac.createElement(FE,{size:12})))}i(Nc,"SwitchFromAndToButton");import{styled as Bh}from"@rango-dev/ui";var Wh=Bh("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),Lh=Bh("div",{position:"relative"});function Bc(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:g,outputAmount:h,outputUsdValue:f,selectedQuote:m}=O(),{connectedWallets:T,getBalanceFor:y}=S(),C=a?y(a):null,k=Zr(C)?.amount??"0",v=C?new OE(C.amount).shiftedBy(-C.decimals):ce,x=!!s&&su(T,s.name),A=!Ls(m,d,g),I=!Ls(m,d,f),E=!g||!f||!f.gt(0)?null:Qt(g.toString(),f.toString());return vr.createElement(Wh,null,vr.createElement(Lh,null,vr.createElement(Mh,{label:Ph.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:k,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:d,usdValue:A?void 0:_(g,4,4),realUsdValue:A?void 0:g?.toString(),error:A?ne().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:x,tooltipContainer:N(),onSelectMaxBalance:()=>{let b=_(v,C?.decimals),w=C?.amount?b.split(",").join(""):"";p(w)},anyWalletConnected:T.length>0}),vr.createElement(Nc,null)),vr.createElement(Mh,{sharpBottomStyle:!r&&(!!m||e),label:Ph.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:_(Qt(g,f),2,2),warningLevel:Ht(E??0),price:{value:_(h,6,6),usdValue:I?void 0:_(f,4,4),realValue:h?.toString(),realUsdValue:I?void 0:f?.toString(),error:I?ne().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:N()}))}i(Bc,"Inputs");import{warn as UE}from"@rango-dev/logging-core";import{useCallback as zE,useEffect as qE,useRef as QE,useState as HE}from"react";function _h(){let{fetch:t,loading:e,cancelFetch:o}=ra({request:async(n,r)=>await ct().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(_h,"useFetchAllQuotes");var GE=600;function ha({refetchQuote:t}){let{fetch:e,cancelFetch:o}=_h(),{excludeLiquiditySources:n,routing:r}=S().config,{connectedWallets:a}=S(),c=a.some(j=>j.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:g,sortStrategy:h,resetQuote:f,error:m,warning:T,setSelectedQuote:y,updateQuotePartialState:C}=O(),{slippage:k,customSlippage:v,affiliatePercent:x,affiliateRef:A,affiliateWallets:I,fetchStatus:E}=S(),b=S().getLiquiditySources(),w=S().getDisabledLiquiditySources(),B=S().excludeLiquiditySources(),{findToken:M}=S(),[$,q]=HE(!0),ee=QE(u),V=v??k,te=!l||!p||Ot(l,p)||!Bn(u),le=i(j=>{q(j)},"resetState"),J=i(j=>{let{fromToken:ue,toToken:de,inputAmount:ke,liquiditySources:H,excludeLiquiditySources:W,disabledLiquiditySources:Q,slippage:K,affiliateRef:Y,affiliatePercent:ye,affiliateWallets:Qe}=j;if($||le(!0),!te&&ue&&de){f();let Oe=Pd({fromToken:ue,toToken:de,inputAmount:ke,liquiditySources:H,excludeLiquiditySources:W,disabledLiquiditySources:Q,wallets:a,slippage:K,affiliateRef:Y,affiliatePercent:ye,affiliateWallets:Qe,contractCall:c});Yo("experimental",r)&&(Oe.experimental=!0),Yo("avoidNativeFee",r)&&(Oe.avoidNativeFee=!0),Yo("enableCentralizedSwappers",r)&&(Oe.enableCentralizedSwappers=!0),r?.maxLength&&(Oe.maxLength=r.maxLength),e(Oe).then(kt=>{let ve=Ti(h,kt.results),je=kd(g,ve,kt.requestAmount);q(!1),C("quotes",kt),y(je),ia({diagnosisMessages:kt.diagnosisMessages,requestId:je?.requestId||"",swaps:je?.swaps});let Dr=je&&sn({currentQuote:je,userSlippage:V,findToken:M});C("warning",Dr)}).catch(kt=>{let ve=aa(kt);(ve.type===0||ve.type===1)&&f(),ve.type!==2&&(C("error",ve),q(!1),UE(new Error("quote error"),{tags:{...ve,type:Xe[ve.type],requestBody:Oe}}))})}},"fetch"),X=zE(Hr(j=>{J(j)},GE),[te]);return qE(()=>{if(!t){q(!1);return}if(E!=="success")return;if(te){q(!1),(g||m||T)&&f();return}if(!Bn(u)&&d?.eq(0)){le(!1),o();return}f(),le(!0);let j=J;return ee.current&&ee.current!=u&&(j=X),ee.current=u,j({inputAmount:u,fromToken:l,toToken:p,liquiditySources:b,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:V,affiliateRef:A,affiliatePercent:x,affiliateWallets:I,contractCall:c}),o},[E,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,te,b?.length,n,w.length,V,A,x,c,JSON.stringify(I)]),{fetch:()=>J({inputAmount:u,fromToken:l,toToken:p,liquiditySources:b,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:V,affiliateRef:A,affiliatePercent:x,affiliateWallets:I,contractCall:c}),loading:$}}i(ha,"useSwapInput");function Dh(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};we.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Dh,"emitPreventableEvent");var JE=jE("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),RE=300;function Oh(){let t=ZE(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:g}=O(),[h,f]=Fh(!1),{isLargeScreen:m,isExtraLargeScreen:T}=un(),{fetch:y,loading:C}=ha({refetchQuote:a}),{config:k,fetchStatus:v,connectedWallets:x,customSlippage:A,slippage:I,setSlippage:E,setCustomSlippage:b}=S(),{isActiveTab:w}=oe(),[B,M]=Fh(!1),q=Zo(A!==null?A:I),V=Nd({fetchMetaStatus:v,fetchingQuote:C,inputAmount:n,quote:r,anyWalletConnected:x.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),L=fu(m,T,k?.variant),te=!!n&&!!e&&!!o&&new YE(n).gt(0)&&!Ud(e,o),le=te&&v==="success"&&C,J=q?.quoteValidation||c,ue=(!L||L&&l?.results.length)&&(J||s),de=!!e&&!!o,ke=de&&!!q,H=(r||s)&&!B?y:void 0,W=i(Y=>{L&&h?(f(!1),setTimeout(()=>{t(Y)},RE)):t(Y)},"onHandleNavigation"),Q=i(Y=>{r?.requestId!==Y.requestId&&(M(!1),p(Y))},"onClickOnQuote"),K=i(Y=>{if(Y){if(Rr.includes(Y)){E(Y),b(null);return}b(Y)}},"onChangeSlippage");return $h(()=>{u(),g("refetchQuote",!0)},[]),$h(()=>{f(te)},[te]),Se.createElement(JE,null,Se.createElement(ie,{height:"auto",footer:Se.createElement(KE,{id:`widget-swap-${V.action}-btn`,type:"primary",size:"large",disabled:V.disabled||!w,prefix:V.action==="confirm-warning"&&Se.createElement(XE,null),fullWidth:!0,onClick:()=>{V.action==="connect-wallet"?Dh({type:"clickConnectWallet"},()=>W(F.wallets)):V.action==="confirm-warning"?M(!0):W(F.confirmSwap)}},V.title),header:{onWallet:()=>{W(F.wallets)},hasBackButton:!1,title:k.title||VE.t("Swap"),suffix:Se.createElement(Lo,{hidden:L?["refresh"]:void 0,onClickRefresh:H,onClickHistory:()=>W(F.swaps),onClickSettings:()=>{W(F.settings)}})}},Se.createElement(ae,null,Se.createElement(Bc,{fetchingQuote:le,fetchMetaStatus:v,isExpandable:L,onClickToken:Y=>{W(Y==="from"?F.fromSwap:F.toSwap)}}),Se.createElement(Wc,{size:"2"}),L?null:Se.createElement(_o,{quote:r,loading:le,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:J,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{g("refetchQuote",!1),W(F.routes)}:void 0}),de&&Se.createElement(Se.Fragment,null,Se.createElement(Wc,{size:8}),Se.createElement(wc,{quoteError:s,quoteWarning:J,fromToken:e,toToken:o,quote:r,loading:le})),ue?Se.createElement(Se.Fragment,null,Se.createElement(or,{warning:J,error:s,skipAlerts:!!q,couldChangeSettings:!0,refetchQuote:y,showWarningModal:B,confirmationDisabled:!w,onOpenWarningModal:()=>M(!0),onCloseWarningModal:()=>M(!1),onChangeSlippage:K,onConfirmWarningModal:()=>{M(!1),d(!0),W(F.confirmSwap)},onChangeSettings:()=>W(F.settings)})):null,ke&&Se.createElement(Se.Fragment,null,Se.createElement(Wc,{size:"10"}),Se.createElement(dh,{onChangeSettings:()=>W(F.settings)})),Se.createElement(Cc,null))),L?Se.createElement(Ec,{loading:le,onClickOnQuote:Q,fetch:y,onClickRefresh:H,isVisible:h}):null)}i(Oh,"Home");import{i18n as Uh}from"@lingui/core";import{Alert as eI,Divider as tI,List as oI,ListItemButton as nI,Radio as rI,RadioRoot as iI,Typography as aI}from"@rango-dev/ui";import Dt from"react";function fo(){let{setLanguage:t,language:e,config:o}=S(),n=ku,r=o?.language||Jo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||Jo),resetLanguage:()=>t(null)}}i(fo,"useLanguage");function zh(){let{activeLanguage:t,changeLanguage:e,languages:o}=fo(),n=Ve(),r=o.map(a=>{let{local:s,label:c,SVGFlag:l}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Dt.createElement(aI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Dt.createElement(rI,{value:s}),start:Dt.createElement(l,null)}});return Dt.createElement(ie,{header:{title:Uh.t("Language")}},Dt.createElement(ae,null,Dt.createElement(eI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Dt.createElement(tI,{size:"8"}),Dt.createElement(iI,{value:t},Dt.createElement(oI,{type:Dt.createElement(nI,{title:Uh.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(zh,"LanguagePage");import{i18n as Jt}from"@lingui/core";import{Button as uI,Checkbox as dI,Image as mI,ListItemButton as fI,NotFound as gI,Typography as hI}from"@rango-dev/ui";import et,{useState as yI}from"react";import{Checkbox as cI,Skeleton as Qh}from"@rango-dev/ui";import br from"react";import{styled as Lc}from"@rango-dev/ui";var wr=Lc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Pc=Lc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Mc=Lc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as sI,styled as lI}from"@rango-dev/ui";var qh=lI(sI,{height:61});var pI=30;function _c(){return br.createElement(wr,null,Array.from(Array(pI),(t,e)=>br.createElement(qh,{hasDivider:!0,key:e,start:br.createElement(Qh,{variant:"circular",width:35,height:35}),title:br.createElement(Qh,{variant:"text",size:"large",width:90}),end:br.createElement(cI,{checked:!1})})))}i(_c,"LoadingLiquiditySourceList");function Dc({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[r,a]=yI(""),s=S().toggleLiquiditySource,c=S().isInCampaignMode(),l=oi(o,n),p={Exchanges:Jt.t("Exchanges"),Bridges:Jt.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)),g=d.length===d.filter(y=>y.selected).length,h=i(()=>{d.forEach(y=>{g?s(y.groupTitle):y.selected||s(y.groupTitle)})},"toggleAllSources"),f=d.map(y=>{let{selected:C,groupTitle:k,logo:v,id:x,...A}=y;return{id:`widget-setting-liquidity-source-${Xp(x.toLowerCase())}-item-btn`,start:et.createElement(mI,{src:v,size:22,type:"circular"}),onClick:()=>{c||s(k)},end:et.createElement(dI,{checked:C,disabled:c}),title:et.createElement(hI,{variant:"title",size:"xmedium"},Jt.t(k)),selected:C,groupTitle:k,logo:v,...A}}),m=i(y=>{let C=y.target.value;a(C)},"handleSearch"),T=f;return r&&(T=f.filter(y=>Wt(y.groupTitle,r))),et.createElement(ie,{header:{title:Jt.t(t),suffix:et.createElement(Pc,null,et.createElement(uI,{id:`widget-liquidity-source-${g?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:h},g?Jt.t("Deselect all"):Jt.t("Select all")))}},et.createElement(ae,{view:!0},et.createElement(It,{value:r,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:Jt.t("Search {sourceType}",{sourceType:p[t]}),onChange:m}),e==="loading"&&et.createElement(_c,null),!T.length&&r?et.createElement(Mc,null,et.createElement(gI,{title:Jt.t("No results found"),description:Jt.t("Try using different keywords")})):e==="success"&&et.createElement(wr,{disabled:c,className:"widget-liquidity-source-list"},T.map(y=>{let{groupTitle:C,...k}=y;return et.createElement(et.Fragment,{key:y.id},et.createElement(fI,{style:{height:"61px"},...k,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(Dc,"LiquiditySourcePage");import{i18n as SI}from"@lingui/core";import ya from"react";import{useNavigate as CI}from"react-router-dom";function Hh(){let t=CI(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=O(),{fetch:c,loading:l}=ha({refetchQuote:n}),p=i(g=>{r(g),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${F.settings}`,d=`../${F.wallets}`;return ya.createElement(ie,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:SI.t("Routes"),suffix:ya.createElement(Lo,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},ya.createElement(ae,null,ya.createElement(kr,{fetch:c,loading:l,onClickOnQuote:p})))}i(Hh,"RoutesPage");import{i18n as Zh}from"@lingui/core";import{Divider as Jh,getCategoriesCount as NI,SelectableCategoryList as BI}from"@rango-dev/ui";import Rt,{useState as Rh}from"react";import{useNavigate as WI}from"react-router-dom";import{i18n as $c}from"@lingui/core";import{Divider as wI,Image as bI,ListItemButton as xI,NotFound as EI,Typography as Yh}from"@rango-dev/ui";import ft,{useEffect as II,useState as AI}from"react";var Gh=i((t,e,o)=>t.filter(n=>Gr(n.type,o)).filter(n=>st(n.name,e)||st(n.displayName,e)),"filterBlockchains");import{ImageContainer as TI,styled as Vh}from"@rango-dev/ui";var Kh=Vh("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Sa=Vh(fl,{padding:0,margin:0,listStyle:"none",[`& ${TI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as kI,Skeleton as jh}from"@rango-dev/ui";import Ca from"react";var vI=20;function Xh(){return Ca.createElement(Sa,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(vI),t=>Ca.createElement(kI,{key:t,hasDivider:!0,start:Ca.createElement(jh,{variant:"circular",width:35,height:35}),title:Ca.createElement(jh,{variant:"text",size:"large",width:90})})))}i(Xh,"LoadingBlockchainList");function Fc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=AI(e),{fetchStatus:l}=S();II(()=>{c([...Gh(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?ft.createElement(EI,{title:$c.t("No results found"),description:$c.t("Try using different keywords")}):ft.createElement(Sa,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>ft.createElement(xI,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:ft.createElement(bI,{src:u.logo,size:30}),title:ft.createElement(Yh,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return ft.createElement(ft.Fragment,null,a&&ft.createElement(ft.Fragment,null,ft.createElement(Yh,{variant:"label",size:"large"},$c.t("Select Chain")),ft.createElement(wI,{size:4})),ft.createElement(Kh,null,l==="loading"&&ft.createElement(Xh,null),l==="success"&&p()))}i(Fc,"BlockchainList");function Ta(t){let{type:e}=t,o=Ve(),[n,r]=Rh(""),[a,s]=Rh("ALL"),c=O.use.setToBlockchain(),l=O.use.setFromBlockchain(),{fetchStatus:p}=S(),u=WI(),d=S().blockchains({type:e}),g=NI(d),h=!t.hideCategory&&g!==1;return Rt.createElement(ie,{header:{title:Zh.t("Select Chain")}},Rt.createElement(ae,{view:!0},h&&Rt.createElement(Rt.Fragment,null,Rt.createElement(BI,{setCategory:s,category:a,blockchains:d,isLoading:p==="loading"}),Rt.createElement(Jh,{size:24})),Rt.createElement(It,{value:n,autoFocus:!0,placeholder:Zh.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),Rt.createElement(Jh,{size:16}),Rt.createElement(Fc,{list:d,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:f=>{e==="custom-token"?u(`..?blockchain=${f.name}`,{replace:!0}):(e==="source"?l(f):c(f),o())}})))}i(Ta,"SelectBlockchainPage");import{i18n as wa}from"@lingui/core";import{Divider as ay,Spinner as VI}from"@rango-dev/ui";import go,{useEffect as KI,useState as jI}from"react";import{useNavigate as XI}from"react-router-dom";import{i18n as zc}from"@lingui/core";import{BlockchainsChip as ka,Divider as ny,Image as ry,Skeleton as $I,Tooltip as FI,Typography as qc}from"@rango-dev/ui";import Ee from"react";import{useEffect as MI}from"react";var ey=["ETH","COSMOS","OSMOSIS"];function Oc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(LI),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(PI(s)),r=n.splice(a)}return{list:n,more:r}}i(Oc,"prepare");function LI(t,e){let o=ey,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(LI,"sortByMostUsedBlockchains");function PI(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(PI,"generateSortByPreferredBlockchainsFor");function ty(t,e){return!!e.list.find(o=>o.name===t)}i(ty,"isInVisibleList");function Uc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();MI(()=>{if(e?.selected){let a=Oc(t,o,e);ty(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Oc(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Uc,"usePrepareBlockchainList");import{styled as _I}from"@rango-dev/ui";var oy=_I("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var OI=6,UI=12;function Qc(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=oe(),c=Uc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=S(),p=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),d=c.more.length>0,g=c.more.length===1,h=!g&&d;return Ee.createElement(Ee.Fragment,null,!s&&Ee.createElement(Ee.Fragment,null,Ee.createElement(ny,{size:12}),Ee.createElement(qc,{variant:"label",size:"large"},zc.t("Select Chain"))),Ee.createElement(ny,{size:12}),Ee.createElement(oy,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?OI:UI),(f,m)=>Ee.createElement($I,{key:m,variant:"rounded",height:50})),l==="success"&&Ee.createElement(Ee.Fragment,null,Ee.createElement(ka,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},Ee.createElement(qc,{variant:"body",size:"xsmall",color:"secondary500"},zc.t("All"))),c.list.map(f=>Ee.createElement(FI,{key:f.name,content:f.shortName,side:"bottom",sideOffset:2,container:N()},Ee.createElement(ka,{className:"widget-blockchains-section-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},Ee.createElement(ry,{src:f.logo,size:30})))),g?Ee.createElement(ka,{className:"widget-blockchains-section-only-item-btn",key:c.more[0].name,selected:!!n&&n.name===c.more[0].name,onClick:()=>r(c.more[0])},Ee.createElement(ry,{src:c.more[0].logo,size:30})):null,h?Ee.createElement(ka,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},Ee.createElement(qc,{variant:"body",size:"xsmall",color:"secondary500"},zc._("More +{count}",{count:c.more.length}))):null)))}i(Qc,"BlockchainsSection");import{useCallback as qI,useRef as QI,useState as Hc}from"react";function Gc(){let t=S().blockchains(),e=QI(null),{customTokens:o}=S(),[n,r]=Hc(!1),[a,s]=Hc([]),[c,l]=Hc(null),p=i(async(g,h)=>{l(null),r(!0),s([]);try{let f=await ct().searchCustomTokens({query:g,blockchain:h},{signal:e.current?.signal}),m=new Set(o().map(C=>zt(C))),T=new Set(t.map(C=>C.name)),y=f.tokens.filter(C=>T.has(C.blockchain)&&!m.has(zt(C)));s(y),r(!1)}catch(f){l(f instanceof Error?f.message:"something went wrong"),s([]),f?.name!=="CanceledError"&&r(!1)}},"fetch"),u=qI(Hr((g,h)=>{e.current?.signal.aborted||p(g,h)},600),[t.length]);return{fetch:(g,h)=>{e.current=new AbortController,s([]),r(!0),u(g,h)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}i(Gc,"useSearchCustomTokens");function va(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(va,"shouldSearchForCustomTokens");function iy(t,e,o,n,r){let a=[...t];return va(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(iy,"prepareTokensList");function ba(t){let{type:e}=t,o=XI(),n=Ve(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=O(),{getBalanceFor:u}=S(),{fetch:d,loading:g,tokens:h,cancel:f}=Gc(),[m,T]=jI(""),y=e==="source"?r:a,C=y?.name??"",k=S().blockchains({type:e}),v=S().tokens({type:e,blockchain:C,searchFor:m,getBalanceFor:u}),x=iy(v,h,m,g,y?.name),A=i(b=>{e==="source"?l(b):p(b)},"updateBlockchain"),I=i(b=>{e==="source"?s({token:b,meta:{blockchains:k}}):c({token:b,meta:{blockchains:k}})},"updateToken"),E={source:wa.t("Source"),destination:wa.t("Destination")};return KI(()=>(va(v,m,y?.name)&&d(m,y?.name??void 0),()=>{f()}),[v.length,m,y?.name]),go.createElement(ie,{header:{title:wa.t("Swap {type}",{type:E[e]})}},go.createElement(ae,null,go.createElement(Qc,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:b=>{A(b)}}),go.createElement(ay,{size:24}),go.createElement(It,{value:m,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:wa.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>T(""),onChange:b=>T(b.target.value),suffix:va(v,m,y?.name)&&g?go.createElement(VI,{size:12,color:"secondary"}):void 0}),go.createElement(ay,{size:16}),go.createElement(fr,{list:x,selectedBlockchain:C,searchedFor:m,type:e,onChange:b=>{I(b);let w=k.find(B=>b.blockchain===B.name);w&&A(w),n()}})))}i(ba,"SelectSwapItemsPage");import{i18n as Xc}from"@lingui/core";import{Alert as vA,Button as wA,styled as bA}from"@rango-dev/ui";import Uo from"react";import{useInRouterContext as xA,useSearchParams as EA}from"react-router-dom";import{i18n as dy}from"@lingui/core";import{Alert as RI,Divider as Kc,InfoIcon as eA,SlippageIcon as tA,TextField as oA,Tooltip as nA,Typography as my}from"@rango-dev/ui";import ze from"react";import{Chip as YI,styled as xr,TextField as ZI}from"@rango-dev/ui";var sy=xr("div",{paddingTop:"$5",padding:"$10 $5"}),ly=xr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${ZI}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),cy=xr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),xa=xr("div",{maxWidth:"280px",padding:"$10"}),py=xr(YI,{width:"61px",flexShrink:0});import{i18n as Vc}from"@lingui/core";import{Typography as JI}from"@rango-dev/ui";import Er from"react";function uy(){return Er.createElement(xa,null,Er.createElement(JI,{variant:"label",size:"medium",color:"neutral700"},Vc.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Er.createElement("br",null),Er.createElement("br",null),Er.createElement("b",null,Vc.t("Warning")),":\xA0",Vc.t("This setting is applied to each step (e.g. 1Inch, Thorchain, etc.), meaning only that specific step will be reverted, not the entire route.")))}i(uy,"SlippageTooltipContent");function jc(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),r=o!==null?Zo(o):null,a=i(l=>{let p=l.target.value,u=parseFloat(p);if(isNaN(u))return n(null);let d=u;u>Mn&&(d=Mn),n(d)},"onSlippageValueChange"),s=i(l=>{o!==null&&n(null),e(l)},"onClickSlippageChip"),c=i(l=>{let p=l.target,u=p.value;Zp(u)||(p.value=u.slice(0,-1))},"onInput");return ze.createElement(sy,null,ze.createElement(cy,null,ze.createElement(tA,{size:16,color:"gray"}),ze.createElement(Kc,{direction:"horizontal",size:4}),ze.createElement(my,{variant:"title",size:"xmedium"},dy.t("Slippage tolerance per swap")),ze.createElement(Kc,{direction:"horizontal",size:4}),ze.createElement(nA,{container:N(),side:"top",sideOffset:4,content:ze.createElement(uy,null)},ze.createElement(eA,{color:"gray"}))),ze.createElement(ly,null,Rr.map((l,p)=>{let u=`slippage-${p}`;return ze.createElement(py,{id:`widget-slippage-chip-${l.toString()}%-btn`,key:u,onClick:()=>s(l),selected:o===null&&l===t,label:`${l.toString()}%`})}),ze.createElement(oA,{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:dy.t("Custom")})),r&&ze.createElement(ze.Fragment,null,ze.createElement(Kc,{size:10}),ze.createElement(RI,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(jc,"Slippage");import{i18n as Tt}from"@lingui/core";import{AutoThemeIcon as fy,BridgesIcon as rA,ChevronRightIcon as Ea,DarkModeIcon as gy,Divider as Ir,ExchangeIcon as iA,InfinityIcon as aA,InfoIcon as sA,LanguageIcon as lA,LightModeIcon as hy,List as cA,ListItem as pA,ListItemButton as uA,Skeleton as dA,styled as mA,Switch as fA,Tabs as gA,TargetIcon as hA,Tooltip as yA,Typography as at}from"@rango-dev/ui";import D from"react";import{useNavigate as SA}from"react-router-dom";var CA=mA("div",{width:"202px",height:"$40"}),TA=[{id:"light",icon:D.createElement(hy,{color:"black",size:24}),tooltip:D.createElement(at,{size:"xsmall",variant:"body"},Tt.t("Light"))},{id:"dark",icon:D.createElement(gy,{color:"black",size:24}),tooltip:D.createElement(at,{size:"xsmall",variant:"body"},Tt.t("Dark"))},{id:"auto",icon:D.createElement(fy,{color:"black",size:24}),tooltip:D.createElement(at,{size:"xsmall",variant:"body"},Tt.t("Auto"))}],kA=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(fy,{...e});case"dark":return D.createElement(gy,{...e});default:return D.createElement(hy,{...e})}},"getThemeIcon");function yy(){let t=SA(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:r,languages:a}=fo(),s=a.find(L=>L.local===r)?.label,c=S().fetchStatus,l=S().swappers(),p=S().getDisabledLiquiditySources(),{config:{features:u}}=S(),d=S().customTokens(),g=ot("theme",u),h=ot("liquiditySource",u),f=ot("language",u),m=ot("customTokens",u),T=S().infiniteApprove,y=S().toggleInfiniteApprove,C=oi(l,p),k=C.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=k.length,x=k.filter(L=>L.selected).length,A=C.filter(L=>L.type==="DEX"),I=A.length,E=A.filter(L=>L.selected).length,b=i((L,te)=>{switch(c){case"loading":return D.createElement(dA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(at,{variant:"body",size:"medium",color:"$error500"},Tt.t("Loading failed"));default:return D.createElement(at,{variant:"body",size:"medium"},`${L} / ${te}`)}},"handleSwapperEndItem"),w={id:"widget-setting-bridge-item-btn",title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Bridges")),end:D.createElement(D.Fragment,null,b(x,v),D.createElement(Ir,{direction:"horizontal",size:8}),D.createElement(Ea,{color:"black"})),onClick:()=>t(F.bridges),start:D.createElement(rA,{color:"gray",size:16})},B={id:"widget-setting-exchange-item-btn",title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Exchanges")),end:D.createElement(D.Fragment,null,b(E,I),D.createElement(Ir,{direction:"horizontal",size:8}),D.createElement(Ea,{color:"black"})),start:D.createElement(iA,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},M={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(at,{variant:"body",size:"medium"},`${d.length}`),D.createElement(Ir,{direction:"horizontal",size:8}),D.createElement(Ea,{color:"black"})),start:D.createElement(hA,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},$={id:"widget-setting-language-item-btn",title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Language")),start:D.createElement(lA,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(at,{variant:"body",size:"medium"},s),D.createElement(Ir,{direction:"horizontal",size:8}),D.createElement(Ea,{color:"black"})),onClick:()=>t(F.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Infinite approval")),D.createElement(Ir,{direction:"horizontal",size:4}),D.createElement(yA,{side:"top",sideOffset:4,container:N(),content:D.createElement(xa,null,D.createElement(at,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,Tt.t("Warning")),":\xA0",Tt.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},D.createElement(sA,{color:"gray"}))),start:D.createElement(aA,{color:"gray",size:16}),end:D.createElement(fA,{checked:T}),onClick:y},ee={id:"widget-setting-theme-item-btn",type:D.createElement(pA,null),title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Theme")),end:D.createElement(CA,null,D.createElement(gA,{container:N(),items:TA,value:n,className:"widget-setting-theme-item-tabs-container",onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:kA(n)},V=h?[]:[w,B];return m||V.push(M),f||V.push($),V.push(q),!e?.singleTheme&&!g&&V.push(ee),D.createElement(cA,{type:D.createElement(uA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:V})}i(yy,"SettingsLists");var IA=bA("div",{paddingLeft:"$8"});function Sy(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=EA(),r=xA(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Uo.createElement(ie,{header:{title:Xc.t("Settings")}},Uo.createElement(ae,null,o&&Uo.createElement(vA,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:Xc.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:Uo.createElement(IA,null,Uo.createElement(wA,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},Xc.t("Reset")))}),Uo.createElement(jc,null),Uo.createElement(yy,null)))}i(Sy,"SettingsPage");import{i18n as L0}from"@lingui/core";import{cancelSwap as P0}from"@rango-dev/queue-manager-rango-preset";import{useManager as M0}from"@rango-dev/queue-manager-react";import{Alert as _0}from"@rango-dev/ui";import up from"react";import{useParams as D0}from"react-router-dom";import{i18n as qo}from"@lingui/core";import{getCurrentNamespaceOfOrNull as C0,getCurrentStep as T0,getRelatedWalletOrNull as k0}from"@rango-dev/queue-manager-rango-preset";import{Button as dS,Divider as v0,QuoteCost as w0,StepDetails as b0,Typography as ap}from"@rango-dev/ui";import{useWallets as x0}from"@rango-dev/wallets-react";import mS from"bignumber.js";import{PendingSwapNetworkStatus as xn}from"rango-types";import Te,{useEffect as fS,useRef as gS,useState as sp}from"react";import{useNavigate as E0}from"react-router-dom";import{i18n as ho}from"@lingui/core";var AA=[ho.t("Sunday"),ho.t("Monday"),ho.t("Tuesday"),ho.t("Wednesday"),ho.t("Thursday"),ho.t("Friday"),ho.t("Saturday")];function Cy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?ho.t("Today"):`${AA[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Cy,"timeSince");function Ty(t){return t.finishTime?Cy(parseInt(t.finishTime)):Cy(parseInt(t.creationTime))}i(Ty,"getSwapDate");import Nr from"react";import{i18n as Ia}from"@lingui/core";import{Button as ky,Divider as Yc,MessageBox as NA}from"@rango-dev/ui";import yo from"react";var vy=i(({onCancel:t,onClose:e})=>yo.createElement(yo.Fragment,null,yo.createElement(Yc,{size:20}),yo.createElement(NA,{type:"error",title:Ia.t("Cancel Swap"),description:Ia.t("Are you sure you want to cancel this swap?")}),yo.createElement(Yc,{size:32}),yo.createElement(ky,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Ia.t("Yes, Cancel it")),yo.createElement(Yc,{size:12}),yo.createElement(ky,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Ia.t("No, Continue"))),"CancelContent");import{i18n as Aa}from"@lingui/core";import{Button as wy,Divider as Zc,MessageBox as BA,Typography as WA}from"@rango-dev/ui";import eo from"react";var by=i(({onDelete:t,onClose:e})=>eo.createElement(eo.Fragment,null,eo.createElement(Zc,{size:20}),eo.createElement(BA,{type:"error",title:Aa.t("Delete Transaction"),description:Aa.t("Are you sure you want to delete this swap?")}),eo.createElement(Zc,{size:32}),eo.createElement(wy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Aa.t("Yes, Delete it")),eo.createElement(Zc,{size:12}),eo.createElement(wy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},eo.createElement(WA,{variant:"title",size:"medium",color:"primary"},Aa.t("No, Cancel")))),"DeleteContent");import{i18n as xy}from"@lingui/core";import{MessageBox as LA}from"@rango-dev/ui";import PA from"react";var Ey=i(t=>{let{status:e,message:o}=t,n=e==="waitingForNetworkChange"?"loading":"success",r=e==="waitingForNetworkChange"?xy.t("Change Network"):xy.t("Network Changed");return PA.createElement(LA,{type:n,title:r,description:o})},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as YA,getCurrentStep as ZA,getRelatedWalletOrNull as JA}from"@rango-dev/queue-manager-rango-preset";import{WalletState as RA}from"@rango-dev/ui";import{useWallets as e0}from"@rango-dev/wallets-react";import Ly from"react";import{i18n as wn}from"@lingui/core";import{Alert as Ay,Button as _A,Checkbox as DA,Divider as Wa,Image as $A,MessageBox as FA,Spinner as OA,WarningIcon as UA}from"@rango-dev/ui";import{useWallets as zA}from"@rango-dev/wallets-react";import he,{useState as qA}from"react";import{darkTheme as MA,styled as Ar}from"@rango-dev/ui";var Y3=Ar("div",{display:"flex",justifyContent:"center"}),Z3=Ar("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),Iy=Ar("img",{width:"100%"}),Na=Ar("div",{position:"relative"}),Ba=Ar("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${MA} &`]:{$$color:"$warning600"}});var Ny=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=qA(null),{list:s}=vt(),c=oe.use.isActiveTab(),{state:l,connect:p}=zA(),u=s.find(x=>x.type===e.walletType),d=u?.needsNamespace?.data.find(x=>x.value===o?.namespace);if(!u)return null;let g=l(e.walletType),h=u.isHub&&o?.namespace?g.namespaces?.get(o.namespace):null,f=g.connecting||h?.connecting,m=u.isHub?h?.connected:g.connected,T=i(()=>m?wn.t("Done"):r?wn.t("Try again"):wn.t("Connect"),"getButtonTitle"),y=i(()=>f?he.createElement(OA,{color:"info"}):r||m?null:he.createElement(DA,{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(x){a(x)}},"handleConnect"),k=i(async()=>{if(m){n();return}C()},"handleClickButton"),v=i(()=>{if(!m)return null;let x=u?.isHub?h?.accounts?.[0]?.split(":"):g?.accounts?.[0]?.split(":"),A=x?.[x?.length-1];return A?oo(A):null},"getAddress");return he.createElement(he.Fragment,null,he.createElement(FA,{type:"warning",title:wn.t("Connect {wallet}",{wallet:u.title}),description:wn.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:he.createElement(Na,null,he.createElement($A,{src:u.image,size:45}),he.createElement(Ba,null,he.createElement(UA,{color:"warning",size:10})))}),m&&!d&&he.createElement(he.Fragment,null,he.createElement(Wa,{size:10}),he.createElement(Ay,{type:"success",variant:"alarm",title:wn.t("Wallet connected successfully.")})),r&&!d&&he.createElement(he.Fragment,null,he.createElement(Wa,{size:10}),he.createElement(Ay,{type:"error",title:r?.message,variant:"alarm"})),d&&he.createElement(he.Fragment,null,he.createElement(Wa,{size:30}),he.createElement(Eo,{namespace:d,suffix:y(),error:r?.message,connected:m,address:v()})),he.createElement(Wa,{size:"40"}),he.createElement(_A,{loading:f,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},T()))},"ConnectWalletContent");import{i18n as By}from"@lingui/core";import{Button as QA,Divider as HA,Image as GA,MessageBox as VA,WarningIcon as KA}from"@rango-dev/ui";import{useWallets as jA}from"@rango-dev/wallets-react";import{detectInstallLink as XA}from"@rango-dev/wallets-shared";import to from"react";var Wy=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=jA(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(XA(n.installLink),"_blank"),"handleButtonClick");return to.createElement(to.Fragment,null,to.createElement(VA,{type:"warning",title:By.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:to.createElement(Na,null,to.createElement(GA,{src:n.img,size:45}),to.createElement(Ba,null,to.createElement(KA,{color:"warning",size:10})))}),to.createElement(HA,{size:"40"}),to.createElement(QA,{type:"primary",id:"widget-install-wallet-btn",onClick:r},By.t("Install")))},"InstallWalletContent");var Py=i(t=>{let{swap:e,onClose:o}=t,{state:n}=e0(),r=ZA(e),a=r?JA(e,r):null,s=a?.walletType,c=s?Wn(n(s)):null,l=r?YA(e,r):null;return s?c===RA.NOT_INSTALLED?Ly.createElement(Wy,{walletType:s}):Ly.createElement(Ny,{wallet:a,namespace:l,onClose:o}):null},"WalletStateContent");function Jc(t){let{isOpen:e,state:o,onClose:n,onDelete:r,onCancel:a,swap:s,message:c}=t;return Nr.createElement(R,{open:e,onClose:n,container:N()},o==="waitingForConnectingWallet"&&Nr.createElement(Py,{swap:s,message:c,onClose:n}),(o==="waitingForNetworkChange"||o==="networkChanged")&&Nr.createElement(Ey,{message:c,status:o}),o==="delete"&&Nr.createElement(by,{onClose:n,onDelete:()=>{n(),r()}}),o==="cancel"&&Nr.createElement(vy,{onClose:n,onCancel:()=>{n(),a()}}))}i(Jc,"SwapDetailsModal");import{i18n as Br}from"@lingui/core";import{Button as Rc,Divider as Wr,MessageBox as Dy,TokenAmount as t0,Typography as $y}from"@rango-dev/ui";import Ce from"react";import{Link as o0,useNavigate as n0}from"react-router-dom";var My="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",_y="/profile";function ep(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:g}=t,h=n0(),{showProfileBanner:f}=oe();return Ce.createElement(R,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(tt.SWAP_BOX_ID)||document.body},n==="success"?Ce.createElement(Dy,{type:"success",title:Br.t("Swap Successful")},Ce.createElement(t0,{direction:"vertical",tooltipContainer:N(),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}),Ce.createElement(Wr,{size:12}),Ce.createElement($y,{variant:"body",size:"medium",color:"neutral700",align:"center"},d)):Ce.createElement(Dy,{type:"error",title:Br.t("Transaction Failed"),description:d}),Ce.createElement(Wr,{size:30}),n==="success"&&Ce.createElement(Ce.Fragment,null,f&&Ce.createElement(Ce.Fragment,null,Ce.createElement(o0,{to:_y},Ce.createElement(Iy,{src:My,alt:"Profile Banner"})),Ce.createElement(Wr,{size:30})),Ce.createElement(Rc,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Br.t("Done"))),Ce.createElement(Wr,{size:12}),g&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Rc,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(g,"_blank")},Br.t("Diagnosis")),Ce.createElement(Wr,{size:12})),Ce.createElement(Rc,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},Ce.createElement($y,{variant:"title",size:"medium",color:"primary"},Br.t("See Details"))))}i(ep,"SwapDetailsCompleteModal");import{i18n as Ma}from"@lingui/core";import{CopyIcon as f0,DoneIcon as g0,IconButton as h0,RangoExplorerIcon as y0,Tooltip as aS,Typography as sS,useCopyToClipboard as S0}from"@rango-dev/ui";import Nt from"react";import m0 from"react";import{i18n as c0}from"@lingui/core";import{Alert as oS,IconButton as p0,LinkIcon as u0}from"@rango-dev/ui";import So,{Fragment as d0}from"react";import{Alert as i0,ChevronDownIcon as a0,IconButton as s0}from"@rango-dev/ui";import bn,{useState as l0}from"react";import{css as Lr,darkTheme as Fy,styled as $t,Typography as r0}from"@rango-dev/ui";var Oy=$t(ae,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${Fy} &`]:{color:"$secondary500"}}}}}),Uy=$t("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),zy=$t("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),qy=$t("div",{padding:"$0 $20 $20 $20"}),eY=$t("div",{display:"flex",flexDirection:"column",gap:"$10"}),Qy=$t("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),tY=$t("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),zo=Lr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${Fy} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Hy=Lr({padding:"$5 0"}),La=Lr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),Gy=Lr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),Vy=Lr({width:"100%",padding:"0 $20 $10"}),Ky=$t("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),jy=$t("div",{display:"flex",flexDirection:"column",gap:"$5"}),Pa=$t(r0,{wordBreak:"break-word"});import{styled as tp}from"@rango-dev/ui";var Xy=tp("div",{display:"flex",flexDirection:"column",gap:"$10"}),Yy=tp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Zy=tp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function Jy(t){let{message:e}=t,[o,n]=l0(!1);return bn.createElement(i0,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&bn.createElement(s0,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},bn.createElement(Yy,{rotated:o},bn.createElement(a0,{size:12,color:"gray"}))),footer:bn.createElement(Zy,{open:o},bn.createElement(Pa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Jy,"FailedAlert");import{i18n as Ry}from"@lingui/core";import{Alert as op,Button as eS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as np}from"rango-types";import Pr from"react";function tS(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?Pr.createElement(op,{type:"warning",id:"widget-swap-details-change-network-alert",title:n.shortMessage,action:Pr.createElement(eS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(np.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Ry.t("Change"))}):r===np.WaitingForConnectingWallet?Pr.createElement(op,{type:"warning",title:n.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Pr.createElement(eS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(np.WaitingForConnectingWallet)}},Ry.t("Connect"))}):Pr.createElement(op,{id:"widget-swap-details-short-alert",type:"warning",title:n.shortMessage})}i(tS,"WarningAlert");function rp(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,c=Vn(a),l=a.status==="waitingForApproval"&&!c,p=a.status==="running"&&!c,u=p&&!s||l&&!a.explorerUrl?.length;return So.createElement(Xy,null,a.explorerUrl?.map((d,g,h)=>{let f=g+d.url,m=g===h.length-1,T=(m&&p||l)&&!u,y=m&&a.status==="failed";return So.createElement(d0,{key:f},So.createElement(oS,{id:"widget-swap-details-tx-alert",type:m&&(T&&"loading"||y&&"error")||"success",title:d.description?`${d.description} Tx`:c0.t("View transaction"),action:d.url&&So.createElement(p0,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(d.url,"_blank")},So.createElement(u0,{size:12}))}))}),u&&So.createElement(oS,{id:"widget-swap-details-loading-alert",type:"loading",title:r.shortMessage}),a.status!=="failed"&&c&&So.createElement(tS,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&So.createElement(Jy,{message:r}))}i(rp,"SwapDetailsAlerts");var nS=2e3;var rS=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:gt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:_(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:gt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:_(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:In(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:gt(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:gt(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:In(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:m0.createElement(rp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function iS(t){if(Vn(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(iS,"getStepState");function lS(t){let{requestId:e}=t,[o,n]=S0(nS);return Nt.createElement(zy,{className:zo()},Nt.createElement(sS,{variant:"label",size:"large",color:"neutral700"},Ma.t("Request ID")),Nt.createElement("div",{className:La()},Nt.createElement(sS,{variant:"label",size:"small",color:"neutral700"},e),Nt.createElement(aS,{container:N(),content:o?Ma.t("Copied To Clipboard"):Ma.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Nt.createElement(h0,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Nt.createElement(g0,{size:16,color:"secondary"}):Nt.createElement(f0,{size:16,color:"gray"}))),Nt.createElement(Ky,{target:"_blank",href:`${Mp}/swap/${e}`},Nt.createElement(aS,{container:N(),content:Ma.t("View on Rango Explorer"),side:"bottom"},Nt.createElement(y0,{size:20})))))}i(lS,"RequestIdRow");import{i18n as cS}from"@lingui/core";import{Typography as pS}from"@rango-dev/ui";import ip from"react";function uS(t){let{date:e,isFinished:o}=t;return ip.createElement("div",{className:zo()},ip.createElement(pS,{variant:"label",size:"large",color:"neutral700"},o?cS.t("Finished at"):cS.t("Created at")),ip.createElement(pS,{variant:"label",size:"small",color:"neutral700"},e))}i(uS,"SwapDateRow");function lp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=x0(),l=S().blockchains(),p=S().swappers(),{findToken:u}=S(),d=O.use.retry(),g=E0(),h=gS(null),[f,m]=sp(!1),[T,y]=sp(null),[C,k]=sp(null),v=gS(!1),x=Be.use.getNotifications(),A=Be.use.removeNotification(),I=x(),E=T0(e),b=E?.networkStatus,w=i(ve=>{m(!0),y(ve)},"handleChangeModalState"),B=i(()=>{m(!1)},"handleCloseModal");fS(()=>{I.find(je=>je.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(k(e.status),A(e.requestId),B()):C&&k(null))},[e.status,e.requestId]),fS(()=>{te?w(xn.WaitingForNetworkChange):b===xn.WaitingForConnectingWallet?w(xn.WaitingForConnectingWallet):b===xn.NetworkChanged&&w(xn.NetworkChanged),!te&&v.current&&B(),v.current=te},[b]);let M=$d(e),$=E?C0(e,E):null,q=E?k0(e,E):null,ee=Ty(e),V=Fd(e),L=i(ve=>!!c(ve)?.mobileWallet,"isMobileWallet"),te=b===xn.WaitingForNetworkChange&&!!$&&!!q?.walletType&&(L(q.walletType)||a(q.walletType,$.network)),le=te?s.bind(null,q.walletType,[{namespace:$.namespace,network:$.network}]):void 0,J=Dd(e,E,c),X=rS({swap:e,switchNetwork:le,showNetworkModal:b,setNetworkModal:w,message:J,blockchains:l,swappers:p}),j=X.length,[ue,de]=[e.steps[0],e.steps[j-1]],ke=de.outputAmount||de.expectedOutputAmountHumanReadable,H=e.steps.reduce((ve,je)=>ve+parseFloat(je.feeInUsd||""),0),W=e.steps.find(ve=>ve.diagnosisUrl)?.diagnosisUrl,Q=_(parseFloat(ke||"0")*(de.toUsdPrice||0),4,4),K=_(parseFloat(e.inputAmount)*(ue.fromUsdPrice||0),4,4),Y=ke?new mS(ke).multipliedBy(de.toUsdPrice||0).toString():"",ye=new mS(e.inputAmount).multipliedBy(ue.fromUsdPrice||0).toString(),Qe=Qt(K,Q),Oe=J.detailedMessage.content||J.shortMessage,kt=e.status==="success"?qo.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:_(ke,6,6),token:X[j-1].to.token.displayName,conciseAddress:oo(e.wallets[X[j-1].to.chain.displayName]?.address||""),chain:X[j-1].to.chain.displayName}}):Te.createElement(jy,null,Te.createElement(ap,{variant:"body",size:"medium",color:"neutral700",align:"center"},Oe?"":qo.t("Transaction was not sent."),M?`${qo.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:M.outputAmount,symbol:M.symbol,blockchain:M.blockchain}})}`:""),Oe&&Te.createElement(Pa,{align:"center",variant:"body",size:"medium",color:"neutral700"},Te.createElement("b",null,"Reason:")," ",Oe));return Te.createElement(ie,{header:{title:qo.t("Swap Details"),onCancel:e.status==="running"?()=>w("cancel"):void 0,suffix:e.status!=="running"&&Te.createElement(ao,null,Te.createElement(dS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>w("delete")},Te.createElement(ap,{size:"medium",variant:"label",color:"error"},qo.t("Delete"))))},footer:V&&!C&&Te.createElement(dS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let ve=Ci(e,l,u);d(ve),setTimeout(()=>{g("../../")},0)}},qo.t("Try again"))},Te.createElement(Oy,{compact:!0,ref:h},Te.createElement(lS,{requestId:o}),Te.createElement(uS,{date:ee,isFinished:!!e.finishTime}),Te.createElement("div",{className:Gy()},Te.createElement(w0,{fee:_(String(H),2,2),time:Nn(Kr(e.steps)),steps:j}),Te.createElement(rr,{from:{price:{value:_(e.inputAmount,6,6),usdValue:K,realUsdValue:ye,realValue:e.inputAmount},token:{displayName:X[0].from.token.displayName,image:X[0].from.token.image},chain:{image:X[0].from.chain.image,displayName:X[0].from.chain.displayName}},to:{price:{value:_(ke,6,6),usdValue:Q,realUsdValue:Y,realValue:ke||""},token:{displayName:X[j-1].to.token.displayName,image:X[j-1].to.token.image},chain:{image:X[j-1].to.chain.image,displayName:X[j-1].to.chain.displayName}},percentageChange:_(Qe,2,2),warningLevel:Ht(Qe??0)})),Te.createElement("div",{className:Vy()},Te.createElement(ap,{variant:"title",size:"small"},qo.t("Swaps steps"))),Te.createElement(v0,{size:8}),Te.createElement(qy,null,X.map((ve,je)=>{let Dr=je,En=iS(e.steps[je]),QS=En==="error"||En==="in-progress"||En==="warning"||En==="completed"&&je===X.length-1;return Te.createElement(b0,{className:"widget-swap-details-step-item-container",key:Dr,step:ve,type:"swap-progress",ref:h,state:En,hasSeparator:je!==0,tabIndex:Dr,isFocused:QS,tooltipContainer:N()})}))),Te.createElement(Jc,{isOpen:f,state:T,onClose:B,onCancel:r,onDelete:n,message:J.detailedMessage.content,swap:e}),Te.createElement(ep,{open:!!C,diagnosisUrl:W,onClose:()=>k(null),status:e.status==="success"?"success":"failed",priceValue:_(ke,6,6),usdValue:Q,realUsdValue:Y,realValue:ke||"",percentageChange:_(Qe,2,2),token:{displayName:X[j-1].to.token.displayName,image:X[j-1].to.token.image},chain:{image:X[j-1].to.chain.image},description:kt}))}i(lp,"SwapDetails");import{i18n as Da}from"@lingui/core";import{Divider as SS,NotFound as W0,Skeleton as _r,Typography as $a}from"@rango-dev/ui";import Ae from"react";import{i18n as I0}from"@lingui/core";import{Divider as A0,Skeleton as N0,Typography as B0}from"@rango-dev/ui";import Ie from"react";import{css as Bt,styled as cp}from"@rango-dev/ui";var hS=cp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Mr=cp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),_a=cp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),A7=Bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),N7=Bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),B7=Bt({paddingTop:"$15",display:"flex"}),W7=Bt({padding:"$15 $0"}),L7=Bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),P7=Bt({paddingBottom:"$10"}),M7=Bt({display:"flex",justifyContent:"start",alignItems:"center"}),_7=Bt({paddingTop:"$5",display:"flex",alignItems:"center"}),D7=Bt({display:"flex",alignItems:"center"}),$7=Bt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),yS=Bt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function pp(){return Ie.createElement(hS,null,Ie.createElement(ar,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(B0,{variant:"title",size:"small"},I0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Mr,null,Ie.createElement(_t,{separator:!1}),Ie.createElement("div",{className:yS()},Ie.createElement(A0,{direction:"horizontal",size:20}),Ie.createElement(N0,{height:22,variant:"rectangular"}))),Ie.createElement(_a,null),Ie.createElement(Mr,null,Ie.createElement(_t,{separator:!1})),Ie.createElement(_a,null),Ie.createElement(Mr,null,Ie.createElement(_t,{separator:!1})),Ie.createElement(_a,null),Ie.createElement(Mr,null,Ie.createElement(_t,{separator:!1}))))}i(pp,"LoadingSwapDetails");function CS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(ie,{header:{title:Da.t("Swap Details"),suffix:Ae.createElement(ao,null)}},o&&Ae.createElement(Uy,null,Ae.createElement("div",{className:zo()},Ae.createElement($a,{variant:"label",size:"large",color:"neutral700"},`${Da.t("Request ID")}`),Ae.createElement("div",{className:La()},Ae.createElement($a,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(_r,{width:60,height:10,variant:"rounded"})),Ae.createElement(SS,{direction:"horizontal",size:4}),Ae.createElement(_r,{width:16,height:16,variant:"rectangular"}),Ae.createElement(SS,{direction:"horizontal",size:4}),Ae.createElement(_r,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:zo()},Ae.createElement($a,{className:Hy(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(_r,{width:60,height:10,variant:"rounded"})),Ae.createElement($a,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(_r,{width:60,height:10,variant:"rounded"}))),Ae.createElement(pp,null)),!o&&Ae.createElement(Qy,null,Ae.createElement(W0,{title:Da.t("Not found"),description:Da.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(CS,"SwapDetailsPlaceholder");function TS(){let{manager:t,state:e}=M0(),o=!e.loadedFromPersistor,n=Ct(t),{requestId:r}=D0(),a=Ve(),{fetchStatus:s}=S();if(!r)return up.createElement(_0,{containerStyles:{margin:"20px"},type:"error",title:L0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=r?n.find(({swap:g})=>g.requestId===r):void 0,p=i(()=>{if(l?.id){let g=t?.get(l.id);g&&P0(g)}},"onCancel"),u=i(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(g){console.log(g)}},"onDelete"),d=l?.swap;return!d||c?up.createElement(CS,{requestId:r,showSkeleton:c}):up.createElement(lp,{swap:d,requestId:r,onCancel:p,onDelete:u})}i(TS,"SwapDetailsPage");import{i18n as kS}from"@lingui/core";import{Divider as $0,getCategoriesCount as F0,SelectableCategoryList as O0,styled as wS,Typography as U0,Wallet as z0,WalletState as q0}from"@rango-dev/ui";import{useWallets as Q0}from"@rango-dev/wallets-react";import Ft,{useState as vS}from"react";var H0=wS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),G0=wS(ae,{textAlign:"center"});function bS(){let{fetchStatus:t}=S(),[e,o]=vS("ALL"),n=S().blockchains(),{config:r}=S(),{state:a}=Q0(),[s,c]=vS(),l=oe.use.isActiveTab(),{list:p}=vt(),u=cu(p,n),g=F0(u)!==1,h=pu(p,e),f=i(m=>{Hp(p,r.multiWallets)||c(m)},"handleWalletItemClick");return Ft.createElement(ie,{header:{title:kS.t("Connect Wallets")}},Ft.createElement(G0,null,g&&Ft.createElement(Ft.Fragment,null,Ft.createElement(O0,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Ft.createElement($0,{size:24})),Ft.createElement(U0,{variant:"title",size:"xmedium",align:"center"},kS.t("Choose a wallet to connect.")),Ft.createElement(H0,null,h.map((m,T)=>{let C=a(m.type).namespaces,k=`wallet-${T}-${m.type}`,v=Ja(m,C);return Ft.createElement(z0,{key:k,...m,state:v?q0.PARTIALLY_CONNECTED:m.state,container:N(),onClick:()=>f(m),isLoading:t==="loading",disabled:!l})}),Ft.createElement(Hn,{id:"widget-state-full-connect-modal",wallet:s,onClose:()=>{c(void 0)}}))))}i(bS,"WalletsPage");function xS(){return qd(),Os(),V0([{path:F.home,element:qe.createElement(Oh,null)},{path:F.routes,element:qe.createElement(Hh,null)},{path:F.fromSwap,children:[{index:!0,element:qe.createElement(ba,{type:"source"})},{path:F.blockchains,element:qe.createElement(Ta,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:qe.createElement(ba,{type:"destination"})},{path:F.blockchains,element:qe.createElement(Ta,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:qe.createElement(Sy,null)},{path:F.languages,element:qe.createElement(zh,null)},{path:F.exchanges,element:qe.createElement(Dc,{sourceType:"Exchanges"})},{path:F.bridges,element:qe.createElement(Dc,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:qe.createElement(zg,null)},{path:F.addCustomTokens,children:[{index:!0,element:qe.createElement(Dm,null)},{path:F.blockchains,element:qe.createElement(Ta,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:qe.createElement(sh,null)},{path:F.swapDetails,element:qe.createElement(TS,null)}]},{path:F.wallets,element:qe.createElement(bS,null)},{path:F.confirmSwap,element:qe.createElement(Ig,null)}])}i(xS,"AppRoutes");import{useQueueManager as tN}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as oN}from"rango-sdk";import{useContext as nN,useEffect as LS,useState as PS}from"react";import{globalCss as K0}from"@rango-dev/ui";var ES=i(()=>K0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function IS(){let{setWatermark:t,setShowProfileBanner:e}=oe();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Ut("BASE_URL")}/meta/dapp/config?apiKey=${Ut("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(IS,"useFetchApiConfig");import{useWallets as j0}from"@rango-dev/wallets-react";import{useEffect as X0,useRef as Y0}from"react";function AS(){let{connect:t,state:e}=j0(),o=Y0({}),{fetchStatus:n}=S(),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(AS,"useForceAutoConnect");import{isApprovalTX as Z0,RouteEventType as NS,StepEventType as BS,StepExecutionEventStatus as J0,WidgetEvents as Fa}from"@rango-dev/queue-manager-rango-preset";import{useEffect as WS}from"react";function dp(){let t=Be.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();WS(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===BS.TX_EXECUTION&&s.status===J0.TX_SENT&&!Z0(c)||s.type===BS.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let g=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);g&&u.push(g)}if(c?.fromBlockchain!==c?.toBlockchain){let g=l.wallets[c?.toBlockchain];if(g){let h=e.find(f=>f.address?.toLocaleLowerCase()===g.address?.toLocaleLowerCase()&&f.walletType===g.walletType&&f.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let g=n(),f=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(m=>g.some(T=>T.blockchain===m.blockchain&&T.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&T.symbol?.toLocaleLowerCase()===m.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:f,shouldFetchCustomTokens:f.length>0})}}t(s,l)},"handleStepEvent");return we.on(Fa.StepEvent,r),()=>we.off(Fa.StepEvent,r)},[we,e]),WS(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===NS.FAILED||s.type===NS.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return we.on(Fa.RouteEvent,r),()=>we.off(Fa.RouteEvent,r)},[we])}i(dp,"useSubscribeToWidgetEvents");import{useManager as R0}from"@rango-dev/queue-manager-react";import{useEffect as eN}from"react";function mp(){let{isSynced:t,syncNotifications:e}=Be(),{manager:o,state:n}=R0();eN(()=>{Be.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(Ct(o))},[Be.persist.hasHydrated(),n.loadedFromPersistor,t])}i(mp,"useSyncNotifications");function fp(){AS(),ES(),dp(),mp();let t=S().blockchains(),{canSwitchNetworkTo:e}=qi(),[o,n]=PS(null),[r,a]=PS(),s=nN(hi),c=t.filter(oN),{fetchApiConfig:l}=IS();LS(()=>()=>zd(),[]),tN({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),LS(()=>(xo.init(),Be.persist.hasHydrated()||Be.persist.rehydrate(),s.onConnectWallet(p=>{n(u=>{if(!u||u.walletType!==p.walletType)return p;let d={...u};return p.network&&(d.network=p.network),p.accounts&&(d.accounts=p.accounts),d})}),s.onDisconnectWallet(p=>{a(p),n(u=>p===u?.walletType?null:u)}),l().catch(console.log),xo.destroy),[])}i(fp,"useBootstrap");import{styled as rN}from"@rango-dev/ui";var MS=rN("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function Oa(){fp();let{config:t}=S(),{activeTheme:e}=io(t?.theme||{}),{activeLanguage:o}=fo();return gp.createElement(iN,{language:o},gp.createElement(MS,{id:"swap-container",className:e()},gp.createElement(xS,null)))}i(Oa,"Main");import{setSolanaSignerConfig as xN}from"@rango-dev/signer-solana";import yp,{useEffect as US,useMemo as EN}from"react";import{useState as aN}from"react";var sN=i(()=>{let[t,e]=aN(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=Qp(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),_S=sN;import{checkWaitingForNetworkChange as lN,makeQueueDefinition as cN}from"@rango-dev/queue-manager-rango-preset";import{Provider as pN}from"@rango-dev/queue-manager-react";import{useWallets as uN}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as dN}from"@rango-dev/wallets-shared";import{isEvmBlockchain as mN}from"rango-types";import fN,{useMemo as gN}from"react";function hN(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=uN(),c=gN(()=>cN({API_KEY:t.apiKey||Ut("API_KEY"),BASE_URL:Ut("BASE_URL"),emitter:{emit:we.emit}}),[t.apiKey]),{blockchains:l,connectedWallets:p}=S(),u=l(),d={blockchains:p.map(v=>({accounts:[v],name:v.chain}))},g=i(async(v,x)=>a(v,x.network)?await r(v,[x]):void 0,"switchNetwork"),h=i(v=>!!s(v).mobileWallet,"isMobileWallet"),f=u.filter(v=>v.enabled).reduce((v,x)=>(v[x.name]=x,v),{}),m=u.filter(mN),T=i(v=>{let{supportedChains:x}=s(v);return Ln(x)},"getSupportedChainNames"),y=e(),C={meta:{blockchains:f,evmBasedChains:m,evmNetworkChainInfo:dN(m),getSupportedChainNames:T},getSigners:o,wallets:d,providers:y,switchNetwork:g,canSwitchNetworkTo:a,state:n,isMobileWallet:h},k=oe.use.isActiveTab();return fN.createElement(pN,{queuesDefs:[c],context:C,onPersistedDataLoaded:v=>{lN(v)},isPaused:!k},t.children)}i(hN,"QueueManager");var DS=hN;import{useManager as kN}from"@rango-dev/queue-manager-react";import vN,{createContext as wN,useContext as bN}from"react";function $S(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:c}=O();return i(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:g,toToken:h,requestAmount:f}=p,m={blockchains:e,tokens:o};if(u!==void 0){let T=e.find(y=>y.name===u)??null;n(T)}if(d!==void 0){let T=d?t(d)??null:null;r({meta:m,token:T})}if(g!==void 0){let T=e.find(y=>y.name===g)??null;a(T)}if(h!==void 0){let T=h?t(h)??null:null;s({meta:m,token:T})}f!==void 0&&c(f)},"updateQuoteInputs")}i($S,"useUpdateQuoteInputs");import{cancelSwap as yN,getCurrentNamespaceOfOrNull as SN,getCurrentStep as CN,getRelatedWalletOrNull as TN}from"@rango-dev/queue-manager-rango-preset";var Ua=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return Ct(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=Ci(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&yN(o)}getCurrentStepInfo(e){let o=CN(e);return{step:o,wallet:o?TN(e,o):null,network:o?SN(e,o)?.network:null}}};var FS=wN(void 0);function hp(t){let{manager:e}=kN(),o=oe.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=S(),l=new Ua(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=S(),u=nu(a()),d=S().blockchains(),g=S().tokens(),h=S().swappers(),f=S().fetchStatus,m=fo().resetLanguage,T=Be().getNotifications(),y=Be().clearNotifications,C=$S(),{fromBlockchain:k,toBlockchain:v,fromToken:x,toToken:A,inputAmount:I}=O(),E={isActiveTab:o,setCurrentTabAsActive:xo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async b=>c(b)},meta:{blockchains:d,tokens:g,swappers:h,loadingStatus:f,findToken:r},resetLanguage:m,notifications:{list:T,clearAll:y},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:x?{symbol:x.symbol,blockchain:x.blockchain,address:x.address}:null,toBlockchain:v?.name??null,toToken:A?{symbol:A.symbol,blockchain:A.blockchain,address:A.address}:null,requestAmount:I},updateQuoteInputs:C}};return vN.createElement(FS.Provider,{value:E},t.children)}i(hp,"WidgetInfo");function OS(){let t=bN(FS);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(OS,"useWidget");function za(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=_S();return US(()=>{n&&r(n)},[n]),EN(()=>{uu({API_KEY:o?.apiKey||qr,BASE_URL:o?.apiUrl||Pp})},[o.apiKey,o.apiUrl]),US(()=>{t.config?.signers?.customSolanaRPC&&xN("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),yp.createElement(yi,{config:o,onUpdateState:e},yp.createElement(DS,{apiKey:o.apiKey},yp.createElement(hp,null,t.children)))}i(za,"WidgetProvider");function zS(t){let e=t.config?.externalWallets;return qa.createElement(cd,null,e?qa.createElement(Oa,null):qa.createElement(za,{config:t.config??Ur},qa.createElement(Oa,null)))}i(zS,"Widget");function qS(){let{on:t,off:e}=we;return{on:t,off:e}}i(qS,"useWidgetEvents");var HR={DerivationPath:zn,Namespaces:On,Detached:Un,isOnDerivationPath:Qn,isOnNamespace:qn,isOnDetached:Co};export{hR as EventSeverity,Xo as MainEvents,ER as Networks,NR as PendingSwapNetworkStatus,ns as QuoteEventTypes,yR as RouteEventType,Va as SUPPORTED_FONTS,HR as StatefulConnect,SR as StepEventType,CR as StepExecutionBlockedEventStatus,TR as StepExecutionEventStatus,tt as UI_ID,is as UiEventTypes,rs as WalletEventTypes,bR as WalletEvents,IR as WalletTypes,zS as Widget,Xo as WidgetEvents,za as WidgetProvider,yi as WidgetWallets,el as customizedThemeTokens,vR as readAccountAddress,Qo as useStatefulConnect,vt as useWalletList,qi as useWallets,OS as useWidget,qS as useWidgetEvents,VC as widgetEventEmitter};
2
+ you won\u2019t need to pay extra gas for them.`)),Z.createElement(Xi,{size:10}),Object.entries(m.nonePayable).map(([y,C],k)=>{let v=Bd(C),x=Ns(y,Mt.t),A=`non-payable-fee-${k}`;return Z.createElement(kb,{key:A,fee:v,label:x})}),Z.createElement($l,null)))))}i(Fl,"QuoteCostDetails");import{i18n as eg}from"@lingui/core";import{TokenAmount as tg}from"@rango-dev/ui";import Yi from"react";import{css as vb,styled as wb}from"@rango-dev/ui";var Jf=wb("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Rf=vb({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function rr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Yi.createElement(Jf,null,Yi.createElement(tg,{direction:"horizontal",label:eg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:N(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),Yi.createElement("div",{className:Rf()}),Yi.createElement(tg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:N(),label:eg.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(rr,"QuoteSummary");import{i18n as og}from"@lingui/core";import{ChevronDownIcon as bb,ChevronRightIcon as xb,Divider as Ol,Image as Eb,Tooltip as ea,Typography as Zi}from"@rango-dev/ui";import z from"react";var Ji=4,Ri=6,ir=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,c=s||N();return z.createElement(ea,{container:c,side:"bottom",sideOffset:4,open:r,content:e},z.createElement(qf,{className:n,state:a},z.createElement(Eb,{src:o,size:16})))},"ImageComponent");function ng(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:c}=t,l=c||N(),p=r.length,u=Td(r),{isTablet:d,isMobile:g}=un();return z.createElement(zf,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(f=>!f)}},z.createElement("div",{className:Cn()},z.createElement(Zi,{variant:"body",size:"xsmall"},og.t("Via:")),z.createElement(Ol,{direction:"horizontal",size:4}),r.map((h,f)=>{let m=`item-${f}`,T=z.createElement(Ml,null,z.createElement(xb,{size:12,color:"black"}));return g||d?z.createElement(z.Fragment,{key:m},z.createElement(ir,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),f!==p-1&&z.createElement(z.Fragment,null,T)):z.createElement(z.Fragment,{key:m},p<=Ji||p>Ji&&f<Ji-1?z.createElement(z.Fragment,null,z.createElement(ir,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),f!==p-1&&z.createElement(z.Fragment,null,T)):f===Ji-1&&z.createElement(ea,{container:l,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:Cn()},T,r.map((y,C)=>{let k=`image-${C}`;return C>=f&&z.createElement(z.Fragment,{key:k},z.createElement(ir,{content:y.swapper.displayName,src:y.swapper.image??"",state:y.state,open:!1}),C!==p-1&&z.createElement(z.Fragment,null,T))}))},z.createElement(Dl,{state:r.find((y,C)=>C>=f&&(y.state==="error"||y.state==="warning"))?.state},z.createElement(Zi,{size:"xsmall",variant:"body"},"+",p-f))))})),z.createElement("div",{className:Cn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:Cn()},z.createElement(Zi,{variant:"body",size:"xsmall"},og.t("Chains:")),z.createElement(Ol,{direction:"horizontal",size:4}),u.map((h,f)=>z.createElement(z.Fragment,{key:h.displayName},u.length<=Ri||u.length>Ri&&f<Ri-1?z.createElement(ea,{container:l,side:"bottom",content:h.displayName,sideOffset:4},z.createElement(ir,{content:"",src:h.image??"",open:!1,className:f!==0?"blockchainImage":""})):f===Ri-1&&z.createElement(ea,{container:l,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:Cn()},u.map((m,T)=>T>=f&&z.createElement(ir,{key:m.displayName,content:"",src:m.image??"",open:!1,className:T>f?"blockchainImage":"",container:c})))},z.createElement(Dl,{className:"blockchainImage"},z.createElement(Zi,{size:"xsmall",variant:"body"},"+",u.length-f))))),z.createElement(Ol,{direction:"horizontal",size:32}))),z.createElement(Ml,{orientation:a?"up":"down"},z.createElement(bb,{size:12,color:"black"}))))}i(ng,"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:g}=t,h=S().blockchains(),{findToken:f}=S(),m=S().swappers(),{customSlippage:T,slippage:y}=S(),C=T||y,[k,v]=Mb(t.expanded),x=Pb(null),A=_(o.value,6,6),I=_(n.value,6,6),E=n.usdValue?_(n.usdValue,4,4):"",b=Qt(o.usdValue,n.usdValue??null),w=_(b,2,2),B=Ht(b??0),M=i((de,ke)=>de.map((H,W)=>{let Q,K=r?.type===3&&r.swap.swapperId===H.swapperId,Y=r?.type===4&&!!r.recommendedSlippages?.[W],ye=a?.type===2&&!!a.recommendedSlippages?.[W],Qe=K||Y,Oe=ye;Qe?Q="error":Oe&&(Q="warning");let kt=Qe?Mo.t("Slippage Error"):Mo.t("Slippage Warning");return K&&(kt=Mo.t("Bridge Limit Error")),{swapper:{displayName:In(H.swapperId,m)??"",image:H.swapperLogo},from:{token:{displayName:H.from.symbol,image:H.from.logo},chain:{displayName:gt(H.from.blockchain,h)??"",image:H.from.blockchainLogo},price:{value:W===0&&!ke?_(o.value,6,6):_(H.fromAmount,6,6),usdValue:_((H.from.usdPrice??0)*parseFloat(H.fromAmount),4,4),realValue:W===0?o.value:H.fromAmount,realUsdValue:new Ul(H.from.usdPrice??0).multipliedBy(H.fromAmount).toString()}},to:{token:{displayName:H.to.symbol,image:H.to.logo},chain:{displayName:gt(H.to.blockchain,h)||"",image:H.to.blockchainLogo},price:{value:_(H.toAmount,6,6),usdValue:_((H.to.usdPrice??0)*parseFloat(H.toAmount),4,4),realValue:H.toAmount,realUsdValue:new Ul(H.to.usdPrice??0).multipliedBy(H.toAmount).toString()}},state:Q,alerts:Qe||Oe?U.createElement(Wf,{dense:d},U.createElement(Ib,{variant:"alarm",type:Qe?"error":"warning",title:kt,id:"widget-quote-footer-step-alarm-alert",footer:U.createElement(Lf,null,K&&U.createElement("div",null,U.createElement(kn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(Tn,{direction:"vertical",size:2}),U.createElement(kn,{size:"xsmall",variant:"body",color:"neutral900"},Mo.t({id:"Yours: {amount} {symbol}",values:{amount:_(H.fromAmount,6,6),symbol:H?.from.symbol}}))),(Y||ye)&&!K&&U.createElement("div",null,U.createElement(kn,{size:"xsmall",variant:"body",color:"neutral900"},Mo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.[W]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[W]}}})),U.createElement(Tn,{direction:"vertical",size:2}),U.createElement(kn,{size:"xsmall",variant:"body",color:"neutral900"},Mo.t({id:"Yours: {userSlippage}",values:{userSlippage:C}}))))})):void 0,time:Nn(H.estimatedTimeInSeconds),fee:_(Ps(H,f),2,2),internalSwaps:H.internalSwaps?M(H.internalSwaps):void 0}}),"getQuoteSteps"),$=M(e?.swaps??[]),q=$.length,ee=g||N(),V=vd(t.quote.tags||[]),L=!!u,te=Kr(e?.swaps),le=Nn(te),J=ki(e?.swaps??[],f),X=_(J,2,2),j=J.gte(new Ul(dd)),ue=te/fd>=md;return d?U.createElement(Ab,{selected:c,fee:X,time:le,tooltipContainer:vo(),steps:$,tags:V,id:"widget-quote-full-expanded-quote-container",quoteCost:U.createElement(Fl,{quote:e,fullExpandedMode:!0,time:le,fee:J,feeWarning:j,timeWarning:ue,showModalFee:p,steps:q}),percentageChange:w,warningLevel:B,outputPrice:{value:I,usdValue:E,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement($f,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:Ff()},!l&&V.length?U.createElement(U.Fragment,null,U.createElement(Kf,null,V.map((de,ke)=>{let H=`${de.value}_${ke}`;return U.createElement(U.Fragment,{key:H},U.createElement(Bb,{label:de.label,value:de.value}),U.createElement(Tn,{size:4,direction:"horizontal"}))})),U.createElement(Vi,null),!L&&U.createElement(Tn,{size:4})):null,U.createElement("div",{id:"portal-root",className:Of()},U.createElement(Fl,{quote:e,time:le,fee:J,feeWarning:j,timeWarning:ue,showModalFee:p,steps:q}),L&&U.createElement(Df,{onClick:de=>{de.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(kn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Mo.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:Uf()},U.createElement(Gf,null,U.createElement(Nb,{size:12,color:"gray"})),U.createElement(Vf,null,U.createElement(_l,{size:"small",variant:"body"},`${A} ${$[0].from.token.displayName} = `),U.createElement(rg,{content:n.value,container:ee,open:n.value?void 0:!1},U.createElement(_l,{size:"small",variant:"body"},"\xA0",`${I} ${$[$.length-1].to.token.displayName}`))),U.createElement(rg,{content:n.usdValue,container:ee},U.createElement(Tn,{size:2,direction:"horizontal"}),U.createElement(kn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${E})`))),s==="list-item"&&U.createElement(Lb,{id:"widget-quote-token-amount-container",tooltipContainer:ee,type:"output",direction:"vertical",price:{value:I,usdValue:E,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:$[q-1].to.token.displayName,image:$[q-1].to.token.image},chain:{image:$[q-1].to.chain.image},percentageChange:w,warningLevel:B}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement(rr,{from:$[0].from,to:$[q-1].to,percentageChange:w,warningLevel:B}),U.createElement(Tn,{size:4}))),U.createElement(Mf,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:v},U.createElement(ng,{type:s,quoteRef:x,selected:c,setExpanded:v,container:ee,expanded:k,steps:$}),U.createElement(Qf,{open:k},U.createElement(Hf,null),U.createElement("div",{className:_f()},$.map((de,ke)=>{let H=`item-${ke}`;return U.createElement(Wb,{type:"quote-details",className:"widget-quote-step-details-container",key:H,tooltipContainer:ee,step:de,hasSeparator:ke!==$.length-1,state:de.state})})))))}i(zl,"Quote");import{Divider as Fb,Skeleton as Ob}from"@rango-dev/ui";import Xt from"react";import{darkTheme as _b,styled as ta}from"@rango-dev/ui";var ig=ta("div",{$$color:"$colors$neutral100",[`.${_b} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),ag=ta("div",{paddingTop:"$2"}),sg=ta("div",{paddingLeft:"$8"}),lg=ta("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as Sg,Divider as Et,Skeleton as ut}from"@rango-dev/ui";import G from"react";import{css as Db,styled as jt}from"@rango-dev/ui";var ql=jt("div",{display:"flex"}),cg=jt("div",{padding:"$10 $0 $20"}),pg=jt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),ug=jt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),dg=jt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),mg=jt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),fg=jt("div",{width:"65%",display:"flex",justifyContent:"start"}),gg=jt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),hg=jt("div",{padding:"$15 $0 $15 $0"}),yg=Db({display:"flex",justifyContent:"space-between",alignItems:"center"});function ar(t){let{type:e,tagHidden:o=!0}=t,n=G.createElement(dg,null,G.createElement(fg,null,G.createElement(Sg,{loading:!0,size:"medium"}),G.createElement(Et,{size:8,direction:"horizontal"}),G.createElement(gg,null,G.createElement(ut,{height:10,width:60,variant:"rounded"}),G.createElement(Et,{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(ql,null,G.createElement(ut,{width:65,height:20,variant:"rounded"}),G.createElement(Et,{size:4,direction:"horizontal"}),G.createElement(ut,{width:65,height:20,variant:"rounded"}),G.createElement(Et,{size:4,direction:"horizontal"}),G.createElement(ut,{width:65,height:20,variant:"rounded"})),G.createElement(Vi,null),!r&&G.createElement(Et,{size:4})),G.createElement("div",{className:yg()},G.createElement(ql,null,G.createElement(ut,{width:60,height:10,variant:"rounded"}),G.createElement(Et,{size:4,direction:"horizontal"}),G.createElement(ut,{width:60,height:10,variant:"rounded"}),G.createElement(Et,{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(cg,null,G.createElement(ut,{height:15,width:148,variant:"rounded"})),e==="list-item"&&G.createElement(pg,null,G.createElement(ug,null,G.createElement(Sg,{loading:!0,size:"medium"}),G.createElement(Et,{direction:"horizontal",size:4}),G.createElement(ut,{height:15,width:150,variant:"rounded"})),G.createElement(Et,{size:10}),G.createElement(ut,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&G.createElement(G.Fragment,null,G.createElement(Et,{size:4}),G.createElement(hg,null,n,G.createElement(mg,null),n),G.createElement(Et,{size:12})))}i(ar,"QuoteSummarySkeleton");import{ChainToken as wg,Divider as Hl,NextIcon as $b,Skeleton as oa}from"@rango-dev/ui";import Pe from"react";import{styled as sr}from"@rango-dev/ui";var Cg=sr("div",{display:"flex",alignItems:"start"}),Tg=sr("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),Ql=sr("div",{display:"flex",alignItems:"center",flexGrow:1}),kg=sr("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),vg=sr("div",{display:"flex",alignItems:"center"});function _t(t){let{separator:e=!0}=t;return Pe.createElement(Pe.Fragment,null,Pe.createElement(vg,null,Pe.createElement(oa,{height:22,width:22,variant:"circular"}),Pe.createElement(Hl,{direction:"horizontal",size:8}),Pe.createElement(oa,{height:15,width:148,variant:"rounded"})),Pe.createElement(Cg,null,Pe.createElement(lg,{hideSeparator:!e}),Pe.createElement(Tg,{extraSpace:e},Pe.createElement(Ql,null,Pe.createElement(wg,{size:"small",loading:!0}),Pe.createElement(Hl,{direction:"horizontal",size:8}),Pe.createElement(oa,{height:12,variant:"rounded"})),Pe.createElement(kg,null,Pe.createElement($b,{color:"gray",size:16})),Pe.createElement(Ql,null,Pe.createElement(wg,{size:"small",loading:!0}),Pe.createElement(Hl,{direction:"horizontal",size:8}),Pe.createElement(oa,{height:12,variant:"rounded"})))))}i(_t,"StepSkeleton");function lr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Xt.createElement(ig,{expanded:o,rounded:e!=="basic"},Xt.createElement(ar,{type:e,tagHidden:n}),Xt.createElement(ag,null,Xt.createElement(Ob,{height:15,variant:"rounded"})),o&&Xt.createElement(sg,null,Xt.createElement(Fb,{size:24}),Xt.createElement(_t,null),Xt.createElement(_t,null),Xt.createElement(_t,{separator:!1})))}i(lr,"QuoteSkeleton");function _o(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:g,fullExpandedMode:h=!1,container:f}=t,{inputAmount:m,inputUsdValue:T}=O(),y=e?.outputAmount?new Ub(e?.outputAmount):null,C=e?St(e):null,v=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?na.createElement(Pl,null,na.createElement(lr,{tagHidden:c,type:o,expanded:s})):v?na.createElement(Pl,{onClick:()=>l?.(e),id:d},na.createElement(zl,{quote:e,error:r,container:f,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:g,fullExpandedMode:h,input:{value:m,usdValue:T?.toString()??""},output:{value:y?.toString()??"",usdValue:C?.toString()??""}})):null}i(_o,"QuoteInfo");import{warn as Hb}from"@rango-dev/logging-core";import{calculatePendingSwap as Gb}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Vb}from"react";import{useRef as zb,useState as qb}from"react";var Qb=2e3;function ra({request:t}){let[e,o]=qb(!1),n=zb(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,Qb)),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(ra,"useFetch");function bg(){let{fetch:t,loading:e,cancelFetch:o}=ra({request:async(n,r)=>await ct().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(bg,"useFetchConfirmQuote");function ia(t){if(!t.swaps)throw new Error(ne().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=Gl(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(ia,"throwErrorIfResponseIsNotValid");function Gl(t){if(Id(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Ad(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=Ld(t);if(o){let n=vi(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(Gl,"getQuoteError");function xg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=sn({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=_d(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(xg,"generateWarnings");function aa(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(aa,"handleQuoteErrors");function Vl(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:c}=O(),{slippage:l,customSlippage:p}=S(),u=S().getDisabledLiquiditySources(),d=S().blockchains(),g=S().tokens(),{findToken:h}=S(),f=p||l,{fetch:m,cancelFetch:T,loading:y}=bg();return Vb(()=>T,[]),{loading:y,fetch:i(async k=>{let v=k.selectedWallets,x=k?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((E,b)=>(E[b.chain]=b.address,E),{}),I={requestId:a?.requestId||"",selectedWallets:A,destination:x||void 0};try{return await m(I,!0).then(E=>{let{result:b}=E;if(!b)throw new Error(E.error??"Error fetching updated quote");ia({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let w={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};r(w);let B={slippage:f.toString(),disabledSwappersGroups:u},M=xg({previousQuote:a??void 0,currentQuote:w,meta:{blockchains:d},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:h});c();let $=!!M.balance,q=Gb(o.toString(),b,Md(v),B,!$,{blockchains:d,tokens:g});return{quote:w,swap:q,error:null,warnings:M}})}catch(E){let b=aa(E);return b.type!==2&&Hb(new Error("confirm swap error"),{tags:{...b,type:Xe[b.type],initialQuote:a,requestBody:I}}),{swap:null,error:b,warnings:null}}},"fetch"),cancelFetch:T}}i(Vl,"useConfirmSwap");var ox=Yb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Eg}`]:{width:"$48",height:"$48"}}),nx=Xl({flexGrow:1,paddingRight:"$10"}),rx=Xl({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),ix=Xl({display:"flex",justifyContent:"space-between",alignItems:"center"});function Ig(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=O(),s=tx(),[c,l]=cr(""),p=!n,[u,d]=cr(!1),[g,h]=cr(!1),{isActiveTab:f}=oe(),m=S().getDisabledLiquiditySources(),T=ex(m),{manager:y}=Kb(),{fetch:C,loading:k,cancelFetch:v}=Vl(),[x,A]=cr({swap:null,error:null,warnings:null}),[I,E]=cr(!1),b=i(async({selectedWallets:L,customDestination:te})=>{let le=await C?.({selectedWallets:L,customDestination:te});return A(le),le},"onConfirmSwap"),w=i(async()=>{if(x.swap&&n)try{await y?.create("swap",{swapDetails:x.swap},{id:x.swap.requestId});let L=`../${F.swaps}/${x.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()=>{x.warnings?.quote&&Cd(x.warnings.quote)&&!a?E(!0):await B()},"onStartConfirmSwap"),$=i(async()=>{A({error:null,swap:null,warnings:null}),C({selectedWallets:o,customDestination:r}).then(L=>{A(L)}).catch(L=>console.error(L))},"onRefresh");sa(()=>{!!T.current.length&&!m.length&&$(),T.current=m},[m.length]),sa(()=>{p&&v()},[p]),sa(()=>{p&&d(p)},[p]),sa(()=>{p||C({selectedWallets:o,customDestination:r}).then(L=>A(L)).catch(L=>console.error(L))},[]),Rb(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=x.warnings?.quote??null,ee=x.error,V=[];if(c&&V.push(Fe.createElement(jb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||ee){let L=`../${F.settings}`;V.push(Fe.createElement(or,{warning:q,error:ee,couldChangeSettings:!1,refetchQuote:$,skipAlerts:ee?.type===4||q?.type===2,showWarningModal:I,confirmationDisabled:!f,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await w()},onChangeSettings:()=>s(L)}))}return Fe.createElement(ie,{header:{title:Kl.t("Confirm Swap"),onWallet:()=>{let L=`../${F.wallets}`;s(L)}},footer:Fe.createElement(ox,null,Fe.createElement("div",{className:nx()},Fe.createElement(Xb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||g,disabled:!!x.error||!f,onClick:M},Kl.t("Start Swap"))),Fe.createElement(Eg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||g,disabled:!f,onClick:d.bind(null,!0)},Fe.createElement(Jb,{size:24})))},u&&Fe.createElement(uf,{open:u,onClose:()=>d(!1),onCancel:v,loading:k,onCheckBalance:b}),Fe.createElement(ae,null,Fe.createElement("div",{className:ix()},Fe.createElement(Zb,{variant:"title",size:"small"},Kl.t("You get")),Fe.createElement("div",{className:rx()},Fe.createElement(Bi,{onClick:!k&&!u&&!I?$:void 0}))),Fe.createElement(jl,{size:"12"}),sm(V.map((L,te)=>({element:L,key:`alert-${te}`})),Fe.createElement(jl,{size:10})),V.length>0?Fe.createElement(jl,{size:10}):null,Fe.createElement(_o,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:x.error,loading:k,warning:x.warnings?.quote??null})))}i(Ig,"ConfirmSwapPage");import{i18n as Zt}from"@lingui/core";import{Button as sc,CustomTokensZeroStateDarkIcon as Ex,CustomTokensZeroStateIcon as Ix,DeleteIcon as Ax,Divider as gr,IconButton as Nx,MessageBox as Bx,NotFound as Wx,styled as cc}from"@rango-dev/ui";import ge,{useState as lc}from"react";import{useNavigate as Lx}from"react-router-dom";import{CloseIcon as sx,IconButton as lx,SearchIcon as cx,TextField as px}from"@rango-dev/ui";import pr from"react";import{styled as ax}from"@rango-dev/ui";var Ag=ax("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function It(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,g=s.length?pr.createElement(lx,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},pr.createElement(sx,{color:"gray",size:10})):null;return p&&(g=p),pr.createElement(px,{prefix:pr.createElement(Ag,null,pr.createElement(cx,{color:"black"})),id:u,suffix:g,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...c},size:r,value:s,onChange:a,...d})}i(It,"SearchInput");import{i18n as ac}from"@lingui/core";import{Button as fx,CustomTokenWarning as gx,darkTheme as Ug,Divider as Yt,ExternalLinkIcon as hx,Image as yx,ListItem as Sx,NotFound as Cx,PinIcon as Tx,Skeleton as Do,Typography as mr,VirtualizedList as kx}from"@rango-dev/ui";import P,{useState as vx}from"react";import{useTranslation as wx}from"react-i18next";import{Divider as Fg,ListItem as mx,Skeleton as dr}from"@rango-dev/ui";import At from"react";import{css as vn,darkTheme as Yl,ImageContainer as ux,ListItemButton as dx,styled as it,Typography as Ng}from"@rango-dev/ui";var Zl=vn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),Jl=vn({position:"relative",height:12,width:"30%",maxWidth:"150px"}),Rl=vn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),ec=vn({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${Yl} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),tc=vn({}),oc=vn(),Bg=it("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),nc=it("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),la=it("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${Jl}`]:{[`& .${ec}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${tc}`]:{bottom:"-15px"},[`& .${Zl}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${Rl}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Wg=it(dx,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),rc=it("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),ic=it(Ng,{}),Lg=it("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${oc}`]:{$$color:"$colors$neutral600",[`.${Yl} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),ur=it("div",{display:"flex",alignItems:"end",flexDirection:"column"}),eV=it("div",{display:"flex",alignItems:"center"}),Pg=it("div",{position:"relative",[`& ${ux}`]:{borderRadius:"$xm",overflow:"hidden"}}),Mg=it("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),_g=it(Ng,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),Dg=it("a",{"& svg:hover":{color:"$colors$info"}}),$g=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":{[`.${Yl} &`]:{color:"$foreground"}}}});function Og(t){return At.createElement(la,null,Array.from(Array(t.size),e=>At.createElement(mx,{key:e,hasDivider:!0,start:At.createElement(dr,{variant:"circular",width:35,height:35}),end:At.createElement(ur,null,At.createElement(dr,{variant:"text",size:"large",width:70}),At.createElement(Fg,{size:4}),At.createElement(dr,{variant:"text",size:"medium",width:50})),title:At.createElement("div",null,At.createElement(dr,{variant:"text",size:"large",width:90}),At.createElement(Fg,{size:4}),At.createElement(dr,{variant:"text",size:"medium",width:90}))})))}i(Og,"LoadingTokenList");var bx=20,xx=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return P.createElement("div",{className:Jl()},o?P.createElement("div",{className:Zl()},o):P.createElement(nc,{className:Rl()},P.createElement(mr,{variant:"title",size:"xmedium"},r.symbol),P.createElement(Yt,{direction:"horizontal",size:4}),P.createElement(rc,{css:a},P.createElement(ic,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&P.createElement("div",{className:`${ec()} ${!o&&tc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",P.createElement(Yt,{size:4,direction:"horizontal"}),P.createElement(Dg,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},P.createElement(hx,{size:12}))))},"renderDesc");function fr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=S().fetchStatus,u=S().blockchains(),{getBalanceFor:d,fetchingWallets:g}=S(),{isTokenPinned:h}=S(),{setFromToken:f,setToToken:m}=O(),{t:T}=wx(),y=Ve(),[C,k]=vx(null),v=i(()=>{c==="source"?f({token:C,meta:{blockchains:u}}):m({token:C,meta:{blockchains:u}})},"updateToken"),x=i(()=>{v(),y()},"handleImportToken"),A=i(b=>{if(b.customToken){let{customToken:B,...M}=b;return P.createElement(fx,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),k({...M,warning:!0})},"handleClick")},P.createElement(mr,{variant:"body",size:"xsmall",color:"background"},T("import")))}let w=Zr(d(b));return s?s(b):g?P.createElement(ur,null,P.createElement(Do,{variant:"text",size:"large",width:70}),P.createElement(Yt,{size:4}),P.createElement(Do,{variant:"text",size:"medium",width:50})):w&&P.createElement(Lg,null,P.createElement(_g,{variant:"title",size:"small"},w.amount),P.createElement("div",null),w.usdValue&&P.createElement(mr,{variant:"body",className:oc(),size:"xsmall"},`$${w.usdValue}`))},"endRenderer"),I=i(()=>P.createElement(kx,{itemContent:b=>{let w=e[b];if(w==="skeleton")return P.createElement(Sx,{hasDivider:!0,start:P.createElement(Do,{variant:"circular",width:35,height:35}),end:P.createElement(ur,null,P.createElement(Do,{variant:"text",size:"large",width:70}),P.createElement(Yt,{size:4}),P.createElement(Do,{variant:"text",size:"medium",width:50})),title:P.createElement("div",null,P.createElement(Do,{variant:"text",size:"large",width:90}),P.createElement(Yt,{size:4}),P.createElement(Do,{variant:"text",size:"medium",width:90}))});let B=w.address||"",M=u.find(L=>L.name===w.blockchain);if(!M)return null;let $=Ys(M.color,"main"),q={$$color:$.main150,[`.${Ug} &`]:{$$color:$.main750},backgroundColor:"$$color"},ee={$$color:$.main750,[`.${Ug} &`]:{$$color:$.main150},color:"$$color"},V=i(()=>{typeof w!="string"&&!w.customToken&&n?.(w)},"handleClick");return P.createElement($g,null,P.createElement(Wg,{"tab-index":b,key:`${w.symbol}${w.address}`,id:`${w.symbol}${w.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:w.customToken,onClick:V,start:P.createElement(Pg,null,P.createElement(yx,{src:w.image===""?zr:w.image,size:30}),t.type!=="custom-token"&&h(w,t.type)&&P.createElement(Mg,null,P.createElement(Tx,{size:12,color:"gray"}))),title:M?.type==="COSMOS"||w.name||!w.name&&!B?P.createElement(nc,null,P.createElement(mr,{variant:"title",size:"xmedium"},w.symbol),P.createElement(Yt,{direction:"horizontal",size:4}),P.createElement(rc,{css:q},P.createElement(ic,{variant:"body",size:"xsmall",css:ee},w.blockchain)),l&&w.warning&&P.createElement(P.Fragment,null,P.createElement(Yt,{direction:"horizontal",size:4}),P.createElement(gx,{container:N()}))):void 0,description:typeof w!="string"&&M?.info&&B&&M.type!=="COSMOS"?xx({address:B,token:w,customCssForTag:q,customCssForTagTitle:ee,name:w.name,url:M.info.addressUrl.split("{wallet}").join(B)}):w.name||void 0,end:A(w)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=C?To(C?.blockchain,u):null;return P.createElement(P.Fragment,null,a&&P.createElement(P.Fragment,null,P.createElement(mr,{variant:"label",size:"large"},ac.t("Select Token")),P.createElement(Yt,{size:4})),P.createElement(Bg,null,P.createElement(Yt,{size:4}),p==="loading"&&P.createElement(Og,{size:bx}),p==="success"&&(e.length?P.createElement(P.Fragment,null,P.createElement(Kn,{token:C,address:C?.address??"",blockchain:E??void 0,onImport:x,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),P.createElement(la,{as:"ul"},I())):!!o&&P.createElement(Cx,{title:ac.t("No results found"),description:ac.t("Try using different keywords")}))))}i(fr,"TokenList");var Px=cc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Mx=cc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),_x=cc(Nx,{"&:hover":{"& svg":{color:"$secondary550"}}});function zg(){let[t,e]=lc(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=O(),{mode:l}=io({}),p=Lx(),[u,d]=lc(!1),[g,h]=lc(),f=i(C=>{let k=C.target.value;e(k)},"handleSearch"),m=l==="dark",T=n.filter(C=>st(C.symbol,t)||st(C.address||"",t)||st(C.name||"",t)),y=i(()=>{if(g){let C=a?ht(a):null,k=r?ht(r):null,v=ht(g);C===v?c({token:null}):k===v&&s({token:null}),o(g)}d(!1)},"handleDeleteCustomToken");return ge.createElement(ie,{header:{title:Zt.t("Custom Tokens")}},ge.createElement(ae,null,ge.createElement(Px,null,n.length?ge.createElement(ge.Fragment,null,ge.createElement(It,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Zt.t("Search Token"),onChange:f}),ge.createElement(gr,{size:16}),ge.createElement(fr,{list:T,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:C=>ge.createElement(_x,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(C)}},ge.createElement(Ax,{size:12,color:"gray"}))})):ge.createElement(Mx,null,ge.createElement(Wx,{icon:m?ge.createElement(Ex,{size:200}):ge.createElement(Ix,{size:200}),title:Zt.t("No custom tokens"),description:Zt.t("press the button to add your custom token")})),ge.createElement(gr,{size:20}),ge.createElement(sc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p(F.addCustomTokens)},Zt.t("Add Custom Token"))),ge.createElement(R,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:N()},ge.createElement(Bx,{title:Zt.t("Delete Custom Token"),type:"error",description:Zt.t("Are you sure you want to Delete this Token?")},ge.createElement(gr,{size:40}),ge.createElement(gr,{size:10}),ge.createElement(sc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:y},Zt.t("Yes, Delete it")),ge.createElement(gr,{size:12}),ge.createElement(sc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},Zt.t("No, Continue"))))))}i(zg,"CustomTokensPage");import{i18n as Re}from"@lingui/core";import{useManager as tE}from"@rango-dev/queue-manager-react";import{Button as hc,darkTheme as oE,Divider as Fo,MessageBox as nE,NotFound as rE,styled as yc,Typography as ua}from"@rango-dev/ui";import{TransactionStatus as Sr}from"rango-types";import se,{useMemo as ah,useState as da}from"react";import{useNavigate as iE}from"react-router-dom";import{FilterIcon as qx,Popover as Qx}from"@rango-dev/ui";import $o from"react";import{css as Dx,darkTheme as ca,IconButton as $x,styled as hr}from"@rango-dev/ui";var pc=hr("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${ca} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),qg=hr($x,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${ca} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${ca} &`]:{backgroundColor:"$neutral"},[`& ${pc}::before`]:{backgroundColor:"$secondary100",[`.${ca} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Qg=hr("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Hg=hr("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Gg=Dx({display:"flex",justifyContent:"space-between",alignItems:"center"}),Vg=hr("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Kg}from"@lingui/core";import{Button as Fx,Divider as jg,ListItemButton as Ox,Radio as Ux,RadioRoot as zx,Typography as Xg}from"@rango-dev/ui";import dt from"react";function Yg(t){let{filterBy:e,onClickItem:o}=t;return dt.createElement(Hg,null,dt.createElement("div",{className:Gg()},dt.createElement(Xg,{size:"small",variant:"body"},Kg.t("Status")),dt.createElement(Fx,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Kg.t("Reset"))),dt.createElement(jg,{size:10}),dt.createElement(zx,{value:e},dt.createElement(Vg,null,t.list.map((n,r)=>dt.createElement(Ox,{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(jg,{direction:"horizontal",size:4}),dt.createElement(Xg,{size:"medium",variant:"body"},n.title)),start:dt.createElement(Ux,{value:n.id}),onClick:o})))))}i(Yg,"FilterSelectorContent");function uc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return $o.createElement("div",null,$o.createElement(Qx,{open:a,align:"end",onOpenChange:o,container:N(),content:$o.createElement(Yg,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},$o.createElement(qg,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},$o.createElement(pc,{isSelect:!!n},$o.createElement(qx,{size:16,color:"black"}),!!n&&$o.createElement(Qg,null)))))}i(uc,"FilterSelector");import{i18n as Vx}from"@lingui/core";import{getCurrentStep as Kx}from"@rango-dev/queue-manager-rango-preset";import{Divider as th,GroupedVirtualizedList as jx,Skeleton as Xx,SwapListItem as oh,Typography as Yx}from"@rango-dev/ui";import Je,{useCallback as nh,useEffect as Zx,useRef as Jx,useState as Rx}from"react";function Zg(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(Zg,"calculateGroupsSoFar");import{css as Hx,darkTheme as Gx,styled as yr}from"@rango-dev/ui";var dc=Hx(),Jg=yr("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),mc=yr("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${dc}`]:{$$color:"$colors$neutral600",[`.${Gx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),fc=yr("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),Rg=yr("div",{gap:"$10",display:"flex",flexDirection:"column"}),eh=yr("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var eE=10;function gc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=Rx([]),c=Jx(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=nh(Zg,[]),g=nh(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,eE),s(d(p,c.current)))},[e.length]);if(Zx(()=>{r||g()},[r,g]),r){let h=[1,2];return Je.createElement(Je.Fragment,null,[h,h].map((m,T)=>Je.createElement(mc,{key:T},Je.createElement(fc,null,Je.createElement(Xx,{variant:"text",width:60,size:"small"}),Je.createElement(th,{size:16})),Je.createElement(th,{size:4}),Je.createElement(Rg,null,m.map((C,k)=>Je.createElement(oh,{isLoading:!0,key:k}))))))}return Je.createElement(jx,{endReached:()=>{c.current<e.length&&g()},groupCounts:a,groupContent:h=>Je.createElement(mc,null,Je.createElement(fc,null,Je.createElement(Yx,{variant:"label",size:"medium",className:dc()},u[h]))),itemContent:(h,f)=>{let m=l[h];if(!m)return null;let T=Kx(m),y=m.steps[0],C=m.steps[m.steps.length-1];return Je.createElement(Jg,{key:m.requestId},Je.createElement(oh,{className:"widget-history-group-list-swap-item-btn",requestId:m.requestId,creationTime:m.creationTime,status:m.status,onClick:o,currentStep:T,tooltipContainer:N(),onlyShowTime:u[f]===Vx.t("Today"),swapTokenData:{from:{token:{image:y.fromLogo,displayName:y.fromSymbol},blockchain:{image:y.fromBlockchainLogo||""},amount:_(m.inputAmount,6,6),realAmount:m.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(gc,"HistoryGroupedList");import{i18n as pa}from"@lingui/core";import rh from"dayjs";var ih=i(t=>{let e=new Map([["today",{title:pa.t("Today"),swaps:[]}],["week",{title:pa.t("This week"),swaps:[]}],["month",{title:pa.t("This month"),swaps:[]}],["year",{title:pa.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=rh();t.forEach(l=>{let p=Number(l.creationTime),u=rh(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 aE=yc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),sE=yc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),lE=yc("div",{"._typography":{color:"$neutral700",[`.${oE}&`]:{color:"$neutral900"}}}),cE=[{id:Sr.SUCCESS,title:Re.t("Complete")},{id:Sr.RUNNING,title:Re.t("Running")},{id:Sr.FAILED,title:Re.t("Failed")}],pE=i((t,e)=>t?.length?t.filter(o=>Wt(o.fromBlockchain,e)||Wt(o.toBlockchain,e)||Wt(o.toSymbol,e)||Wt(o.fromSymbol,e)).length:!1,"isStepContainsText");function sh(){let t=iE(),{manager:e,state:o}=tE(),n=Ct(e).map(({swap:k})=>k),[r,a]=da(""),[s,c]=da(!1),l=!o.loadedFromPersistor,[p,u]=da(""),[d,g]=da(!1),h=i(k=>{let v=k.target.value;a(v)},"handleSearch"),f=ah(()=>!r&&!p?n:n.filter(k=>{let{inputAmount:v,status:x,steps:A,requestId:I}=k;return(!r||Wt(v,r)||Wt(x,r)||pE(A,r)||Wt(I,r))&&(!p||p===x)}),[n,r,p]),m=!f?.length&&!l,T=i(()=>g(!1),"onCloseModal"),y=i(async()=>{try{await e?.clearQueue(),g(!1)}catch(k){console.log(k)}},"onClear"),C=ah(()=>!n.some(k=>k.status===Sr.SUCCESS||k.status===Sr.FAILED),[n]);return se.createElement(ie,{header:{title:Re.t("History"),suffix:se.createElement(ao,null,se.createElement(hc,{id:"widget-history-clear-btn",disabled:C,variant:"ghost",size:"xsmall",onClick:()=>g(!0)},se.createElement(ua,{size:"medium",variant:"label",color:"error"},Re.t("Clear"))))}},se.createElement(ae,null,se.createElement(sE,null,se.createElement(It,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Re.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:h,style:{height:36},value:r}),se.createElement(Fo,{size:10,direction:"horizontal"}),se.createElement(uc,{filterBy:p,open:s,onOpenChange:k=>c(k),onClickItem:k=>u(k),list:cE})),se.createElement(Fo,{size:"16"}),se.createElement(aE,null,m&&se.createElement(eh,null,se.createElement(Fo,{size:32}),se.createElement(rE,{title:r?Re.t("No results found"):Re.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Re.t("Try using different keywords"):Re.t("Your transaction history is stored locally and will appear here after you start a swap")})),!m&&se.createElement(gc,{list:f,onSwapClick:t,groupBy:ih,isLoading:l}))),se.createElement(R,{open:d,onClose:T,id:"widget-history-clear-modal",container:N()},se.createElement(Fo,{size:20}),se.createElement(nE,{type:"warning",title:Re.t("Clear Transaction History"),description:se.createElement(lE,null,se.createElement(ua,{variant:"body",size:"medium"},Re.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),se.createElement(Fo,{size:"24"}),se.createElement(ua,{variant:"body",size:"small"},Re.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),se.createElement(Fo,{size:30}),se.createElement(hc,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:y},Re.t("Yes, Clear the history")),se.createElement(Fo,{size:10}),se.createElement(hc,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:T},se.createElement(ua,{variant:"title",size:"medium",color:"primary"},Re.t("No, Cancel")))))}i(sh,"HistoryPage");import{i18n as VE}from"@lingui/core";import{Button as KE,Divider as Wc,styled as jE,WarningIcon as XE}from"@rango-dev/ui";import YE from"bignumber.js";import Se,{useEffect as $h,useState as Fh}from"react";import{useNavigate as ZE}from"react-router-dom";import{i18n as ch}from"@lingui/core";import{Alert as dE,Divider as Sc,NoRouteIcon as mE,Typography as fE}from"@rango-dev/ui";import Oo from"react";import{styled as uE}from"@rango-dev/ui";var lh=uE("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Cc(){let{fromToken:t,toToken:e}=O();return!!t&&!!e&&Ot(t,e)?Oo.createElement(lh,null,Oo.createElement(Sc,{size:10}),Oo.createElement(mE,{size:24,color:"gray"}),Oo.createElement(Sc,{size:4}),Oo.createElement(fE,{variant:"title",size:"small"},ch.t("No Routes Found")),Oo.createElement(Sc,{size:4}),Oo.createElement(dE,{title:ch.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Cc,"SameTokensWarning");import{Alert as gE,Button as hE}from"@rango-dev/ui";import uh from"react";import{i18n as ma}from"@lingui/core";function ph(t){let e=null;return t===ti?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:ma.t("Reset"),title:ma.t("Slippage cannot be set lower than 0.01%.")},e):t>jo?(e={alertType:"warning",action:"change-settings",actionButtonTitle:ma.t("Change"),title:ma.t("Caution, your slippage is high!")},e):null}i(ph,"makeAlerts");function dh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=S(),{onChangeSettings:a}=t,c=ph(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(ei),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?uh.createElement(gE,{title:c.title,type:c.alertType,variant:"alarm",action:uh.createElement(hE,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(dh,"SlippageWarningsAndErrors");import{i18n as kE}from"@lingui/core";import{IconButton as vE,ReverseIcon as wE,Skeleton as bE,Tooltip as xE,Typography as Cr}from"@rango-dev/ui";import mt from"react";import fa from"bignumber.js";function fh(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(fh,"getSlippageColor");function gh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new fa(e),r=new fa(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(gh,"getUsdExchangeRate");function hh(t,e){let o=new fa(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,fa.ROUND_DOWN).toFormat(2)}`}i(hh,"formatTokenValueInUsd");import{darkTheme as CE,styled as kc,Typography as TE}from"@rango-dev/ui";var yh=kc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),Sh=kc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${CE} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),vc=kc(TE,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function wc(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=S(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:g}=io({}),h=Zo(d),f=g==="dark",m=n==="default",T={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,k=p?.swaps[p?.swaps.length-1].to||l,v=m?C:k,x=m?k:C,A=Number(m?p?.outputAmount:p?.requestAmount),I=Number(m?p?.requestAmount:p?.outputAmount),E=A||v.usdPrice,b=I||x.usdPrice,{rawValue:w,displayValue:B}=gh({toTokenUsdPrice:b,fromTokenUsdPrice:E});return mt.createElement(yh,null,mt.createElement(Cr,{variant:T||y?"label":"body",size:T||y?"medium":"small",color:fh({error:T,warning:y,isDarkTheme:f})},kE.t("Slippage:")," ",d,"%"),u?mt.createElement(bE,{height:16,width:104,variant:"rounded"}):E&&b&&mt.createElement(Sh,null,mt.createElement(Cr,{className:"rate-text",variant:"body",size:"small"},"1"),mt.createElement(vc,{className:"rate-text",variant:"body",size:"small"},x.symbol),mt.createElement(vE,{id:"widget-home-page-change-rate-button",onClick:r},mt.createElement(wE,{size:14,color:"secondary"})),mt.createElement(xE,{container:N(),side:"top",sideOffset:4,content:mt.createElement(Cr,{className:"rate-text",variant:"body",size:"small"},w)},mt.createElement(Cr,{className:"rate-text",variant:"body",size:"small"},B)),mt.createElement(vc,{className:"rate-text",variant:"body",size:"small"},v.symbol),v.usdPrice&&mt.createElement(Cr,{color:"neutral600",variant:"body",size:"small"},"~",hh(Number(w),v.usdPrice))))}i(wc,"SwapMetrics");import{i18n as WE}from"@lingui/core";import{Header as LE}from"@rango-dev/ui";import mo,{useEffect as PE,useState as ME}from"react";import{i18n as IE}from"@lingui/core";import{Divider as xc,FullExpandedQuote as AE,Typography as NE}from"@rango-dev/ui";import xe from"react";import{styled as bc}from"@rango-dev/ui";var Ch=bc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Th=bc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),kh=bc("div",{width:"146px"});import{i18n as Tr}from"@lingui/core";import{Select as EE}from"@rango-dev/ui";import vh from"react";function ga(t){let{updateQuotePartialState:e,sortStrategy:o}=O(),n=[{value:"SMART",label:Tr.t("Smart Routing")},{value:"FEE",label:Tr.t("Lowest Fee")},{value:"SPEED",label:Tr.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Tr.t("Maximum Return")},{value:"PRICE",label:Tr.t("Maximum Output")}];return vh.createElement(kh,null,vh.createElement(EE,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(ga,"SelectStrategy");var wh=3;function kr(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:g,sortStrategy:h,error:f}=O(),{slippage:m,customSlippage:T}=S(),{findToken:y}=S(),C=c||N(),k=!!p&&p.results.length,v=T??m,x=i(E=>{if(!d||!g||!p)return null;let b={requestAmount:p.requestAmount,validationStatus:null,...E};return sn({currentQuote:b,userSlippage:v,findToken:y})},"getQuoteWarning"),A=f?.type===0||f?.type===1,I=p?.results?Ti(h,p?.results):[];return xe.createElement(xe.Fragment,null,a&&xe.createElement(xe.Fragment,null,xe.createElement(Th,null,xe.createElement(NE,{size:"xmedium",variant:"title"},IE.t("Sort by")),xe.createElement(ga,{container:C})),xe.createElement(xc,{size:"10"})),e&&Array.from({length:wh},(E,b)=>xe.createElement(xe.Fragment,{key:b},s?xe.createElement(AE,{loading:!0}):xe.createElement(lr,{tagHidden:!1,type:"list-item",expanded:!1}),b!==wh-1&&xe.createElement(xc,{size:16}))),!e&&xe.createElement(xe.Fragment,null,k?I.map((E,b)=>{let w=x(E),B=Gl(E.swaps),M=I.length-1===b;return xe.createElement(xe.Fragment,{key:E.requestId},xe.createElement(_o,{id:"widget-quotes-quote-info-container",showModalFee:r,container:C,selected:l?.requestId===E.requestId,tagHidden:!1,quote:{...E,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&&xe.createElement(xc,{size:16}))}):A&&xe.createElement(Ch,null,xe.createElement(Rn,{size:s?"large":"small",error:f,fetch:n}))))}i(kr,"Quotes");import{darkTheme as BE,styled as bh}from"@rango-dev/ui";var xh=bh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${BE} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Eh=bh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var _E=100;function Ec(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=ME(!1),l=s?"":"is-hidden",{config:p}=S(),u=p?.variant==="full-expanded",d=vo();return PE(()=>{let g=null;return a?g=setTimeout(()=>{c(!0)},_E):(c(!1),g&&clearTimeout(g)),()=>{g&&clearTimeout(g)}},[a]),mo.createElement(xh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Mi()} widget-expanded-quotes-container`,id:tt.EXPANDED_BOX_ID},mo.createElement(LE,{title:WE.t("Routes"),suffix:mo.createElement(mo.Fragment,null,mo.createElement(ga,{container:d}),mo.createElement(Lo,{container:d,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),mo.createElement(Eh,null,mo.createElement(kr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:vo(),onClickOnQuote:n,fullExpandedMode:u})))}i(Ec,"ExpandedQuotes");import{i18n as Ph}from"@lingui/core";import{SwapInput as Mh}from"@rango-dev/ui";import OE from"bignumber.js";import vr from"react";import{ReverseIcon as FE}from"@rango-dev/ui";import Ac from"react";import{keyframes as DE,styled as Ih}from"@rango-dev/ui";var Ic=450,$E=DE({"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)"}}),Ah=Ih("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),Nh=Ih("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${$E} ${Ic}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 Nc(){let t=O.use.switchFromAndTo();return Ac.createElement(Ah,null,Ac.createElement(Nh,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Ic),t()}},Ac.createElement(FE,{size:12})))}i(Nc,"SwitchFromAndToButton");import{styled as Bh}from"@rango-dev/ui";var Wh=Bh("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),Lh=Bh("div",{position:"relative"});function Bc(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:g,outputAmount:h,outputUsdValue:f,selectedQuote:m}=O(),{connectedWallets:T,getBalanceFor:y}=S(),C=a?y(a):null,k=Zr(C)?.amount??"0",v=C?new OE(C.amount).shiftedBy(-C.decimals):ce,x=!!s&&su(T,s.name),A=!Ls(m,d,g),I=!Ls(m,d,f),E=!g||!f||!f.gt(0)?null:Qt(g.toString(),f.toString());return vr.createElement(Wh,null,vr.createElement(Lh,null,vr.createElement(Mh,{label:Ph.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:k,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:d,usdValue:A?void 0:_(g,4,4),realUsdValue:A?void 0:g?.toString(),error:A?ne().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:x,tooltipContainer:N(),onSelectMaxBalance:()=>{let b=_(v,C?.decimals),w=C?.amount?b.split(",").join(""):"";p(w)},anyWalletConnected:T.length>0}),vr.createElement(Nc,null)),vr.createElement(Mh,{sharpBottomStyle:!r&&(!!m||e),label:Ph.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:_(Qt(g,f),2,2),warningLevel:Ht(E??0),price:{value:_(h,6,6),usdValue:I?void 0:_(f,4,4),realValue:h?.toString(),realUsdValue:I?void 0:f?.toString(),error:I?ne().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:N()}))}i(Bc,"Inputs");import{warn as UE}from"@rango-dev/logging-core";import{useCallback as zE,useEffect as qE,useRef as QE,useState as HE}from"react";function _h(){let{fetch:t,loading:e,cancelFetch:o}=ra({request:async(n,r)=>await ct().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(_h,"useFetchAllQuotes");var GE=600;function ha({refetchQuote:t}){let{fetch:e,cancelFetch:o}=_h(),{excludeLiquiditySources:n,routing:r}=S().config,{connectedWallets:a}=S(),c=a.some(j=>j.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:g,sortStrategy:h,resetQuote:f,error:m,warning:T,setSelectedQuote:y,updateQuotePartialState:C}=O(),{slippage:k,customSlippage:v,affiliatePercent:x,affiliateRef:A,affiliateWallets:I,fetchStatus:E}=S(),b=S().getLiquiditySources(),w=S().getDisabledLiquiditySources(),B=S().excludeLiquiditySources(),{findToken:M}=S(),[$,q]=HE(!0),ee=QE(u),V=v??k,te=!l||!p||Ot(l,p)||!Bn(u),le=i(j=>{q(j)},"resetState"),J=i(j=>{let{fromToken:ue,toToken:de,inputAmount:ke,liquiditySources:H,excludeLiquiditySources:W,disabledLiquiditySources:Q,slippage:K,affiliateRef:Y,affiliatePercent:ye,affiliateWallets:Qe}=j;if($||le(!0),!te&&ue&&de){f();let Oe=Pd({fromToken:ue,toToken:de,inputAmount:ke,liquiditySources:H,excludeLiquiditySources:W,disabledLiquiditySources:Q,wallets:a,slippage:K,affiliateRef:Y,affiliatePercent:ye,affiliateWallets:Qe,contractCall:c});Yo("experimental",r)&&(Oe.experimental=!0),Yo("avoidNativeFee",r)&&(Oe.avoidNativeFee=!0),Yo("enableCentralizedSwappers",r)&&(Oe.enableCentralizedSwappers=!0),r?.maxLength&&(Oe.maxLength=r.maxLength),e(Oe).then(kt=>{let ve=Ti(h,kt.results),je=kd(g,ve,kt.requestAmount);q(!1),C("quotes",kt),y(je),ia({diagnosisMessages:kt.diagnosisMessages,requestId:je?.requestId||"",swaps:je?.swaps});let Dr=je&&sn({currentQuote:je,userSlippage:V,findToken:M});C("warning",Dr)}).catch(kt=>{let ve=aa(kt);(ve.type===0||ve.type===1)&&f(),ve.type!==2&&(C("error",ve),q(!1),UE(new Error("quote error"),{tags:{...ve,type:Xe[ve.type],requestBody:Oe}}))})}},"fetch"),X=zE(Hr(j=>{J(j)},GE),[te]);return qE(()=>{if(!t){q(!1);return}if(E!=="success")return;if(te){q(!1),(g||m||T)&&f();return}if(!Bn(u)&&d?.eq(0)){le(!1),o();return}f(),le(!0);let j=J;return ee.current&&ee.current!=u&&(j=X),ee.current=u,j({inputAmount:u,fromToken:l,toToken:p,liquiditySources:b,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:V,affiliateRef:A,affiliatePercent:x,affiliateWallets:I,contractCall:c}),o},[E,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,te,b?.length,n,w.length,V,A,x,c,JSON.stringify(I)]),{fetch:()=>J({inputAmount:u,fromToken:l,toToken:p,liquiditySources:b,excludeLiquiditySources:B,disabledLiquiditySources:w,slippage:V,affiliateRef:A,affiliatePercent:x,affiliateWallets:I,contractCall:c}),loading:$}}i(ha,"useSwapInput");function Dh(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};we.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Dh,"emitPreventableEvent");var JE=jE("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),RE=300;function Oh(){let t=ZE(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:g}=O(),[h,f]=Fh(!1),{isLargeScreen:m,isExtraLargeScreen:T}=un(),{fetch:y,loading:C}=ha({refetchQuote:a}),{config:k,fetchStatus:v,connectedWallets:x,customSlippage:A,slippage:I,setSlippage:E,setCustomSlippage:b}=S(),{isActiveTab:w}=oe(),[B,M]=Fh(!1),q=Zo(A!==null?A:I),V=Nd({fetchMetaStatus:v,fetchingQuote:C,inputAmount:n,quote:r,anyWalletConnected:x.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),L=fu(m,T,k?.variant),te=!!n&&!!e&&!!o&&new YE(n).gt(0)&&!Ud(e,o),le=te&&v==="success"&&C,J=q?.quoteValidation||c,ue=(!L||L&&l?.results.length)&&(J||s),de=!!e&&!!o,ke=de&&!!q,H=(r||s)&&!B?y:void 0,W=i(Y=>{L&&h?(f(!1),setTimeout(()=>{t(Y)},RE)):t(Y)},"onHandleNavigation"),Q=i(Y=>{r?.requestId!==Y.requestId&&(M(!1),p(Y))},"onClickOnQuote"),K=i(Y=>{if(Y){if(Rr.includes(Y)){E(Y),b(null);return}b(Y)}},"onChangeSlippage");return $h(()=>{u(),g("refetchQuote",!0)},[]),$h(()=>{f(te)},[te]),Se.createElement(JE,null,Se.createElement(ie,{height:"auto",footer:Se.createElement(KE,{id:`widget-swap-${V.action}-btn`,type:"primary",size:"large",disabled:V.disabled||!w,prefix:V.action==="confirm-warning"&&Se.createElement(XE,null),fullWidth:!0,onClick:()=>{V.action==="connect-wallet"?Dh({type:"clickConnectWallet"},()=>W(F.wallets)):V.action==="confirm-warning"?M(!0):W(F.confirmSwap)}},V.title),header:{onWallet:()=>{W(F.wallets)},hasBackButton:!1,title:k.title||VE.t("Swap"),suffix:Se.createElement(Lo,{hidden:L?["refresh"]:void 0,onClickRefresh:H,onClickHistory:()=>W(F.swaps),onClickSettings:()=>{W(F.settings)}})}},Se.createElement(ae,null,Se.createElement(Bc,{fetchingQuote:le,fetchMetaStatus:v,isExpandable:L,onClickToken:Y=>{W(Y==="from"?F.fromSwap:F.toSwap)}}),Se.createElement(Wc,{size:"2"}),L?null:Se.createElement(_o,{quote:r,loading:le,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:J,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{g("refetchQuote",!1),W(F.routes)}:void 0}),de&&Se.createElement(Se.Fragment,null,Se.createElement(Wc,{size:8}),Se.createElement(wc,{quoteError:s,quoteWarning:J,fromToken:e,toToken:o,quote:r,loading:le})),ue?Se.createElement(Se.Fragment,null,Se.createElement(or,{warning:J,error:s,skipAlerts:!!q,couldChangeSettings:!0,refetchQuote:y,showWarningModal:B,confirmationDisabled:!w,onOpenWarningModal:()=>M(!0),onCloseWarningModal:()=>M(!1),onChangeSlippage:K,onConfirmWarningModal:()=>{M(!1),d(!0),W(F.confirmSwap)},onChangeSettings:()=>W(F.settings)})):null,ke&&Se.createElement(Se.Fragment,null,Se.createElement(Wc,{size:"10"}),Se.createElement(dh,{onChangeSettings:()=>W(F.settings)})),Se.createElement(Cc,null))),L?Se.createElement(Ec,{loading:le,onClickOnQuote:Q,fetch:y,onClickRefresh:H,isVisible:h}):null)}i(Oh,"Home");import{i18n as Uh}from"@lingui/core";import{Alert as eI,Divider as tI,List as oI,ListItemButton as nI,Radio as rI,RadioRoot as iI,Typography as aI}from"@rango-dev/ui";import Dt from"react";function fo(){let{setLanguage:t,language:e,config:o}=S(),n=ku,r=o?.language||Jo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||Jo),resetLanguage:()=>t(null)}}i(fo,"useLanguage");function zh(){let{activeLanguage:t,changeLanguage:e,languages:o}=fo(),n=Ve(),r=o.map(a=>{let{local:s,label:c,SVGFlag:l}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Dt.createElement(aI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Dt.createElement(rI,{value:s}),start:Dt.createElement(l,null)}});return Dt.createElement(ie,{header:{title:Uh.t("Language")}},Dt.createElement(ae,null,Dt.createElement(eI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Dt.createElement(tI,{size:"8"}),Dt.createElement(iI,{value:t},Dt.createElement(oI,{type:Dt.createElement(nI,{title:Uh.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(zh,"LanguagePage");import{i18n as Jt}from"@lingui/core";import{Button as uI,Checkbox as dI,Image as mI,ListItemButton as fI,NotFound as gI,Typography as hI}from"@rango-dev/ui";import et,{useState as yI}from"react";import{Checkbox as cI,Skeleton as Qh}from"@rango-dev/ui";import br from"react";import{styled as Lc}from"@rango-dev/ui";var wr=Lc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Pc=Lc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Mc=Lc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as sI,styled as lI}from"@rango-dev/ui";var qh=lI(sI,{height:61});var pI=30;function _c(){return br.createElement(wr,null,Array.from(Array(pI),(t,e)=>br.createElement(qh,{hasDivider:!0,key:e,start:br.createElement(Qh,{variant:"circular",width:35,height:35}),title:br.createElement(Qh,{variant:"text",size:"large",width:90}),end:br.createElement(cI,{checked:!1})})))}i(_c,"LoadingLiquiditySourceList");function Dc({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[r,a]=yI(""),s=S().toggleLiquiditySource,c=S().isInCampaignMode(),l=oi(o,n),p={Exchanges:Jt.t("Exchanges"),Bridges:Jt.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)),g=d.length===d.filter(y=>y.selected).length,h=i(()=>{d.forEach(y=>{g?s(y.groupTitle):y.selected||s(y.groupTitle)})},"toggleAllSources"),f=d.map(y=>{let{selected:C,groupTitle:k,logo:v,id:x,...A}=y;return{id:`widget-setting-liquidity-source-${Xp(x.toLowerCase())}-item-btn`,start:et.createElement(mI,{src:v,size:22,type:"circular"}),onClick:()=>{c||s(k)},end:et.createElement(dI,{checked:C,disabled:c}),title:et.createElement(hI,{variant:"title",size:"xmedium"},Jt.t(k)),selected:C,groupTitle:k,logo:v,...A}}),m=i(y=>{let C=y.target.value;a(C)},"handleSearch"),T=f;return r&&(T=f.filter(y=>Wt(y.groupTitle,r))),et.createElement(ie,{header:{title:Jt.t(t),suffix:et.createElement(Pc,null,et.createElement(uI,{id:`widget-liquidity-source-${g?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:h},g?Jt.t("Deselect all"):Jt.t("Select all")))}},et.createElement(ae,{view:!0},et.createElement(It,{value:r,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:Jt.t("Search {sourceType}",{sourceType:p[t]}),onChange:m}),e==="loading"&&et.createElement(_c,null),!T.length&&r?et.createElement(Mc,null,et.createElement(gI,{title:Jt.t("No results found"),description:Jt.t("Try using different keywords")})):e==="success"&&et.createElement(wr,{disabled:c,className:"widget-liquidity-source-list"},T.map(y=>{let{groupTitle:C,...k}=y;return et.createElement(et.Fragment,{key:y.id},et.createElement(fI,{style:{height:"61px"},...k,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(Dc,"LiquiditySourcePage");import{i18n as SI}from"@lingui/core";import ya from"react";import{useNavigate as CI}from"react-router-dom";function Hh(){let t=CI(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=O(),{fetch:c,loading:l}=ha({refetchQuote:n}),p=i(g=>{r(g),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${F.settings}`,d=`../${F.wallets}`;return ya.createElement(ie,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:SI.t("Routes"),suffix:ya.createElement(Lo,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},ya.createElement(ae,null,ya.createElement(kr,{fetch:c,loading:l,onClickOnQuote:p})))}i(Hh,"RoutesPage");import{i18n as Zh}from"@lingui/core";import{Divider as Jh,getCategoriesCount as NI,SelectableCategoryList as BI}from"@rango-dev/ui";import Rt,{useState as Rh}from"react";import{useNavigate as WI}from"react-router-dom";import{i18n as $c}from"@lingui/core";import{Divider as wI,Image as bI,ListItemButton as xI,NotFound as EI,Typography as Yh}from"@rango-dev/ui";import ft,{useEffect as II,useState as AI}from"react";var Gh=i((t,e,o)=>t.filter(n=>Gr(n.type,o)).filter(n=>st(n.name,e)||st(n.displayName,e)),"filterBlockchains");import{ImageContainer as TI,styled as Vh}from"@rango-dev/ui";var Kh=Vh("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Sa=Vh(fl,{padding:0,margin:0,listStyle:"none",[`& ${TI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as kI,Skeleton as jh}from"@rango-dev/ui";import Ca from"react";var vI=20;function Xh(){return Ca.createElement(Sa,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(vI),t=>Ca.createElement(kI,{key:t,hasDivider:!0,start:Ca.createElement(jh,{variant:"circular",width:35,height:35}),title:Ca.createElement(jh,{variant:"text",size:"large",width:90})})))}i(Xh,"LoadingBlockchainList");function Fc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=AI(e),{fetchStatus:l}=S();II(()=>{c([...Gh(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?ft.createElement(EI,{title:$c.t("No results found"),description:$c.t("Try using different keywords")}):ft.createElement(Sa,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>ft.createElement(xI,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:ft.createElement(bI,{src:u.logo,size:30}),title:ft.createElement(Yh,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return ft.createElement(ft.Fragment,null,a&&ft.createElement(ft.Fragment,null,ft.createElement(Yh,{variant:"label",size:"large"},$c.t("Select Chain")),ft.createElement(wI,{size:4})),ft.createElement(Kh,null,l==="loading"&&ft.createElement(Xh,null),l==="success"&&p()))}i(Fc,"BlockchainList");function Ta(t){let{type:e}=t,o=Ve(),[n,r]=Rh(""),[a,s]=Rh("ALL"),c=O.use.setToBlockchain(),l=O.use.setFromBlockchain(),{fetchStatus:p}=S(),u=WI(),d=S().blockchains({type:e}),g=NI(d),h=!t.hideCategory&&g!==1;return Rt.createElement(ie,{header:{title:Zh.t("Select Chain")}},Rt.createElement(ae,{view:!0},h&&Rt.createElement(Rt.Fragment,null,Rt.createElement(BI,{setCategory:s,category:a,blockchains:d,isLoading:p==="loading"}),Rt.createElement(Jh,{size:24})),Rt.createElement(It,{value:n,autoFocus:!0,placeholder:Zh.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),Rt.createElement(Jh,{size:16}),Rt.createElement(Fc,{list:d,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:f=>{e==="custom-token"?u(`..?blockchain=${f.name}`,{replace:!0}):(e==="source"?l(f):c(f),o())}})))}i(Ta,"SelectBlockchainPage");import{i18n as wa}from"@lingui/core";import{Divider as ay,Spinner as VI}from"@rango-dev/ui";import go,{useEffect as KI,useState as jI}from"react";import{useNavigate as XI}from"react-router-dom";import{i18n as zc}from"@lingui/core";import{BlockchainsChip as ka,Divider as ny,Image as ry,Skeleton as $I,Tooltip as FI,Typography as qc}from"@rango-dev/ui";import Ee from"react";import{useEffect as MI}from"react";var ey=["ETH","COSMOS","OSMOSIS"];function Oc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(LI),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(PI(s)),r=n.splice(a)}return{list:n,more:r}}i(Oc,"prepare");function LI(t,e){let o=ey,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(LI,"sortByMostUsedBlockchains");function PI(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(PI,"generateSortByPreferredBlockchainsFor");function ty(t,e){return!!e.list.find(o=>o.name===t)}i(ty,"isInVisibleList");function Uc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();MI(()=>{if(e?.selected){let a=Oc(t,o,e);ty(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Oc(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Uc,"usePrepareBlockchainList");import{styled as _I}from"@rango-dev/ui";var oy=_I("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var OI=6,UI=12;function Qc(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=oe(),c=Uc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=S(),p=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),d=c.more.length>0,g=c.more.length===1,h=!g&&d;return Ee.createElement(Ee.Fragment,null,!s&&Ee.createElement(Ee.Fragment,null,Ee.createElement(ny,{size:12}),Ee.createElement(qc,{variant:"label",size:"large"},zc.t("Select Chain"))),Ee.createElement(ny,{size:12}),Ee.createElement(oy,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?OI:UI),(f,m)=>Ee.createElement($I,{key:m,variant:"rounded",height:50})),l==="success"&&Ee.createElement(Ee.Fragment,null,Ee.createElement(ka,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},Ee.createElement(qc,{variant:"body",size:"xsmall",color:"secondary500"},zc.t("All"))),c.list.map(f=>Ee.createElement(FI,{key:f.name,content:f.shortName,side:"bottom",sideOffset:2,container:N()},Ee.createElement(ka,{className:"widget-blockchains-section-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},Ee.createElement(ry,{src:f.logo,size:30})))),g?Ee.createElement(ka,{className:"widget-blockchains-section-only-item-btn",key:c.more[0].name,selected:!!n&&n.name===c.more[0].name,onClick:()=>r(c.more[0])},Ee.createElement(ry,{src:c.more[0].logo,size:30})):null,h?Ee.createElement(ka,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},Ee.createElement(qc,{variant:"body",size:"xsmall",color:"secondary500"},zc._("More +{count}",{count:c.more.length}))):null)))}i(Qc,"BlockchainsSection");import{useCallback as qI,useRef as QI,useState as Hc}from"react";function Gc(){let t=S().blockchains(),e=QI(null),{customTokens:o}=S(),[n,r]=Hc(!1),[a,s]=Hc([]),[c,l]=Hc(null),p=i(async(g,h)=>{l(null),r(!0),s([]);try{let f=await ct().searchCustomTokens({query:g,blockchain:h},{signal:e.current?.signal}),m=new Set(o().map(C=>zt(C))),T=new Set(t.map(C=>C.name)),y=f.tokens.filter(C=>T.has(C.blockchain)&&!m.has(zt(C)));s(y),r(!1)}catch(f){l(f instanceof Error?f.message:"something went wrong"),s([]),f?.name!=="CanceledError"&&r(!1)}},"fetch"),u=qI(Hr((g,h)=>{e.current?.signal.aborted||p(g,h)},600),[t.length]);return{fetch:(g,h)=>{e.current=new AbortController,s([]),r(!0),u(g,h)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}i(Gc,"useSearchCustomTokens");function va(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(va,"shouldSearchForCustomTokens");function iy(t,e,o,n,r){let a=[...t];return va(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(iy,"prepareTokensList");function ba(t){let{type:e}=t,o=XI(),n=Ve(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=O(),{getBalanceFor:u}=S(),{fetch:d,loading:g,tokens:h,cancel:f}=Gc(),[m,T]=jI(""),y=e==="source"?r:a,C=y?.name??"",k=S().blockchains({type:e}),v=S().tokens({type:e,blockchain:C,searchFor:m,getBalanceFor:u}),x=iy(v,h,m,g,y?.name),A=i(b=>{e==="source"?l(b):p(b)},"updateBlockchain"),I=i(b=>{e==="source"?s({token:b,meta:{blockchains:k}}):c({token:b,meta:{blockchains:k}})},"updateToken"),E={source:wa.t("Source"),destination:wa.t("Destination")};return KI(()=>(va(v,m,y?.name)&&d(m,y?.name??void 0),()=>{f()}),[v.length,m,y?.name]),go.createElement(ie,{header:{title:wa.t("Swap {type}",{type:E[e]})}},go.createElement(ae,null,go.createElement(Qc,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:b=>{A(b)}}),go.createElement(ay,{size:24}),go.createElement(It,{value:m,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:wa.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>T(""),onChange:b=>T(b.target.value),suffix:va(v,m,y?.name)&&g?go.createElement(VI,{size:12,color:"secondary"}):void 0}),go.createElement(ay,{size:16}),go.createElement(fr,{list:x,selectedBlockchain:C,searchedFor:m,type:e,onChange:b=>{I(b);let w=k.find(B=>b.blockchain===B.name);w&&A(w),n()}})))}i(ba,"SelectSwapItemsPage");import{i18n as Xc}from"@lingui/core";import{Alert as vA,Button as wA,styled as bA}from"@rango-dev/ui";import Uo from"react";import{useInRouterContext as xA,useSearchParams as EA}from"react-router-dom";import{i18n as dy}from"@lingui/core";import{Alert as RI,Divider as Kc,InfoIcon as eA,SlippageIcon as tA,TextField as oA,Tooltip as nA,Typography as my}from"@rango-dev/ui";import ze from"react";import{Chip as YI,styled as xr,TextField as ZI}from"@rango-dev/ui";var sy=xr("div",{paddingTop:"$5",padding:"$10 $5"}),ly=xr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${ZI}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),cy=xr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),xa=xr("div",{maxWidth:"280px",padding:"$10"}),py=xr(YI,{width:"61px",flexShrink:0});import{i18n as Vc}from"@lingui/core";import{Typography as JI}from"@rango-dev/ui";import Er from"react";function uy(){return Er.createElement(xa,null,Er.createElement(JI,{variant:"label",size:"medium",color:"neutral700"},Vc.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),Er.createElement("br",null),Er.createElement("br",null),Er.createElement("b",null,Vc.t("Warning")),":\xA0",Vc.t("This setting is applied to each step (e.g. 1Inch, Thorchain, etc.), meaning only that specific step will be reverted, not the entire route.")))}i(uy,"SlippageTooltipContent");function jc(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),r=o!==null?Zo(o):null,a=i(l=>{let p=l.target.value,u=parseFloat(p);if(isNaN(u))return n(null);let d=u;u>Mn&&(d=Mn),n(d)},"onSlippageValueChange"),s=i(l=>{o!==null&&n(null),e(l)},"onClickSlippageChip"),c=i(l=>{let p=l.target,u=p.value;Zp(u)||(p.value=u.slice(0,-1))},"onInput");return ze.createElement(sy,null,ze.createElement(cy,null,ze.createElement(tA,{size:16,color:"gray"}),ze.createElement(Kc,{direction:"horizontal",size:4}),ze.createElement(my,{variant:"title",size:"xmedium"},dy.t("Slippage tolerance per swap")),ze.createElement(Kc,{direction:"horizontal",size:4}),ze.createElement(nA,{container:N(),side:"top",sideOffset:4,content:ze.createElement(uy,null)},ze.createElement(eA,{color:"gray"}))),ze.createElement(ly,null,Rr.map((l,p)=>{let u=`slippage-${p}`;return ze.createElement(py,{id:`widget-slippage-chip-${l.toString()}%-btn`,key:u,onClick:()=>s(l),selected:o===null&&l===t,label:`${l.toString()}%`})}),ze.createElement(oA,{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:dy.t("Custom")})),r&&ze.createElement(ze.Fragment,null,ze.createElement(Kc,{size:10}),ze.createElement(RI,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(jc,"Slippage");import{i18n as Tt}from"@lingui/core";import{AutoThemeIcon as fy,BridgesIcon as rA,ChevronRightIcon as Ea,DarkModeIcon as gy,Divider as Ir,ExchangeIcon as iA,InfinityIcon as aA,InfoIcon as sA,LanguageIcon as lA,LightModeIcon as hy,List as cA,ListItem as pA,ListItemButton as uA,Skeleton as dA,styled as mA,Switch as fA,Tabs as gA,TargetIcon as hA,Tooltip as yA,Typography as at}from"@rango-dev/ui";import D from"react";import{useNavigate as SA}from"react-router-dom";var CA=mA("div",{width:"202px",height:"$40"}),TA=[{id:"light",icon:D.createElement(hy,{color:"black",size:24}),tooltip:D.createElement(at,{size:"xsmall",variant:"body"},Tt.t("Light"))},{id:"dark",icon:D.createElement(gy,{color:"black",size:24}),tooltip:D.createElement(at,{size:"xsmall",variant:"body"},Tt.t("Dark"))},{id:"auto",icon:D.createElement(fy,{color:"black",size:24}),tooltip:D.createElement(at,{size:"xsmall",variant:"body"},Tt.t("Auto"))}],kA=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(fy,{...e});case"dark":return D.createElement(gy,{...e});default:return D.createElement(hy,{...e})}},"getThemeIcon");function yy(){let t=SA(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:r,languages:a}=fo(),s=a.find(L=>L.local===r)?.label,c=S().fetchStatus,l=S().swappers(),p=S().getDisabledLiquiditySources(),{config:{features:u}}=S(),d=S().customTokens(),g=ot("theme",u),h=ot("liquiditySource",u),f=ot("language",u),m=ot("customTokens",u),T=S().infiniteApprove,y=S().toggleInfiniteApprove,C=oi(l,p),k=C.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=k.length,x=k.filter(L=>L.selected).length,A=C.filter(L=>L.type==="DEX"),I=A.length,E=A.filter(L=>L.selected).length,b=i((L,te)=>{switch(c){case"loading":return D.createElement(dA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(at,{variant:"body",size:"medium",color:"$error500"},Tt.t("Loading failed"));default:return D.createElement(at,{variant:"body",size:"medium"},`${L} / ${te}`)}},"handleSwapperEndItem"),w={id:"widget-setting-bridge-item-btn",title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Bridges")),end:D.createElement(D.Fragment,null,b(x,v),D.createElement(Ir,{direction:"horizontal",size:8}),D.createElement(Ea,{color:"black"})),onClick:()=>t(F.bridges),start:D.createElement(rA,{color:"gray",size:16})},B={id:"widget-setting-exchange-item-btn",title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Exchanges")),end:D.createElement(D.Fragment,null,b(E,I),D.createElement(Ir,{direction:"horizontal",size:8}),D.createElement(Ea,{color:"black"})),start:D.createElement(iA,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},M={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(at,{variant:"body",size:"medium"},`${d.length}`),D.createElement(Ir,{direction:"horizontal",size:8}),D.createElement(Ea,{color:"black"})),start:D.createElement(hA,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},$={id:"widget-setting-language-item-btn",title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Language")),start:D.createElement(lA,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(at,{variant:"body",size:"medium"},s),D.createElement(Ir,{direction:"horizontal",size:8}),D.createElement(Ea,{color:"black"})),onClick:()=>t(F.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Infinite approval")),D.createElement(Ir,{direction:"horizontal",size:4}),D.createElement(yA,{side:"top",sideOffset:4,container:N(),content:D.createElement(xa,null,D.createElement(at,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,Tt.t("Warning")),":\xA0",Tt.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},D.createElement(sA,{color:"gray"}))),start:D.createElement(aA,{color:"gray",size:16}),end:D.createElement(fA,{checked:T}),onClick:y},ee={id:"widget-setting-theme-item-btn",type:D.createElement(pA,null),title:D.createElement(at,{variant:"title",size:"xmedium"},Tt.t("Theme")),end:D.createElement(CA,null,D.createElement(gA,{container:N(),items:TA,value:n,className:"widget-setting-theme-item-tabs-container",onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:kA(n)},V=h?[]:[w,B];return m||V.push(M),f||V.push($),V.push(q),!e?.singleTheme&&!g&&V.push(ee),D.createElement(cA,{type:D.createElement(uA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:V})}i(yy,"SettingsLists");var IA=bA("div",{paddingLeft:"$8"});function Sy(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=EA(),r=xA(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Uo.createElement(ie,{header:{title:Xc.t("Settings")}},Uo.createElement(ae,null,o&&Uo.createElement(vA,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:Xc.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:Uo.createElement(IA,null,Uo.createElement(wA,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},Xc.t("Reset")))}),Uo.createElement(jc,null),Uo.createElement(yy,null)))}i(Sy,"SettingsPage");import{i18n as L0}from"@lingui/core";import{cancelSwap as P0}from"@rango-dev/queue-manager-rango-preset";import{useManager as M0}from"@rango-dev/queue-manager-react";import{Alert as _0}from"@rango-dev/ui";import up from"react";import{useParams as D0}from"react-router-dom";import{i18n as qo}from"@lingui/core";import{getCurrentNamespaceOfOrNull as C0,getCurrentStep as T0,getRelatedWalletOrNull as k0}from"@rango-dev/queue-manager-rango-preset";import{Button as dS,Divider as v0,QuoteCost as w0,StepDetails as b0,Typography as ap}from"@rango-dev/ui";import{useWallets as x0}from"@rango-dev/wallets-react";import mS from"bignumber.js";import{PendingSwapNetworkStatus as xn}from"rango-types";import Te,{useEffect as fS,useRef as gS,useState as sp}from"react";import{useNavigate as E0}from"react-router-dom";import{i18n as ho}from"@lingui/core";var AA=[ho.t("Sunday"),ho.t("Monday"),ho.t("Tuesday"),ho.t("Wednesday"),ho.t("Thursday"),ho.t("Friday"),ho.t("Saturday")];function Cy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?ho.t("Today"):`${AA[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Cy,"timeSince");function Ty(t){return t.finishTime?Cy(parseInt(t.finishTime)):Cy(parseInt(t.creationTime))}i(Ty,"getSwapDate");import Nr from"react";import{i18n as Ia}from"@lingui/core";import{Button as ky,Divider as Yc,MessageBox as NA}from"@rango-dev/ui";import yo from"react";var vy=i(({onCancel:t,onClose:e})=>yo.createElement(yo.Fragment,null,yo.createElement(Yc,{size:20}),yo.createElement(NA,{type:"error",title:Ia.t("Cancel Swap"),description:Ia.t("Are you sure you want to cancel this swap?")}),yo.createElement(Yc,{size:32}),yo.createElement(ky,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Ia.t("Yes, Cancel it")),yo.createElement(Yc,{size:12}),yo.createElement(ky,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Ia.t("No, Continue"))),"CancelContent");import{i18n as Aa}from"@lingui/core";import{Button as wy,Divider as Zc,MessageBox as BA,Typography as WA}from"@rango-dev/ui";import eo from"react";var by=i(({onDelete:t,onClose:e})=>eo.createElement(eo.Fragment,null,eo.createElement(Zc,{size:20}),eo.createElement(BA,{type:"error",title:Aa.t("Delete Transaction"),description:Aa.t("Are you sure you want to delete this swap?")}),eo.createElement(Zc,{size:32}),eo.createElement(wy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Aa.t("Yes, Delete it")),eo.createElement(Zc,{size:12}),eo.createElement(wy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},eo.createElement(WA,{variant:"title",size:"medium",color:"primary"},Aa.t("No, Cancel")))),"DeleteContent");import{i18n as xy}from"@lingui/core";import{MessageBox as LA}from"@rango-dev/ui";import PA from"react";var Ey=i(t=>{let{status:e,message:o}=t,n=e==="waitingForNetworkChange"?"loading":"success",r=e==="waitingForNetworkChange"?xy.t("Change Network"):xy.t("Network Changed");return PA.createElement(LA,{type:n,title:r,description:o})},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as YA,getCurrentStep as ZA,getRelatedWalletOrNull as JA}from"@rango-dev/queue-manager-rango-preset";import{WalletState as RA}from"@rango-dev/ui";import{useWallets as e0}from"@rango-dev/wallets-react";import Ly from"react";import{i18n as wn}from"@lingui/core";import{Alert as Ay,Button as _A,Checkbox as DA,Divider as Wa,Image as $A,MessageBox as FA,Spinner as OA,WarningIcon as UA}from"@rango-dev/ui";import{useWallets as zA}from"@rango-dev/wallets-react";import he,{useState as qA}from"react";import{darkTheme as MA,styled as Ar}from"@rango-dev/ui";var Y3=Ar("div",{display:"flex",justifyContent:"center"}),Z3=Ar("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),Iy=Ar("img",{width:"100%"}),Na=Ar("div",{position:"relative"}),Ba=Ar("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${MA} &`]:{$$color:"$warning600"}});var Ny=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=qA(null),{list:s}=vt(),c=oe.use.isActiveTab(),{state:l,connect:p}=zA(),u=s.find(x=>x.type===e.walletType),d=u?.needsNamespace?.data.find(x=>x.value===o?.namespace);if(!u)return null;let g=l(e.walletType),h=u.isHub&&o?.namespace?g.namespaces?.get(o.namespace):null,f=g.connecting||h?.connecting,m=u.isHub?h?.connected:g.connected,T=i(()=>m?wn.t("Done"):r?wn.t("Try again"):wn.t("Connect"),"getButtonTitle"),y=i(()=>f?he.createElement(OA,{color:"info"}):r||m?null:he.createElement(DA,{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(x){a(x)}},"handleConnect"),k=i(async()=>{if(m){n();return}C()},"handleClickButton"),v=i(()=>{if(!m)return null;let x=u?.isHub?h?.accounts?.[0]?.split(":"):g?.accounts?.[0]?.split(":"),A=x?.[x?.length-1];return A?oo(A):null},"getAddress");return he.createElement(he.Fragment,null,he.createElement(FA,{type:"warning",title:wn.t("Connect {wallet}",{wallet:u.title}),description:wn.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:he.createElement(Na,null,he.createElement($A,{src:u.image,size:45}),he.createElement(Ba,null,he.createElement(UA,{color:"warning",size:10})))}),m&&!d&&he.createElement(he.Fragment,null,he.createElement(Wa,{size:10}),he.createElement(Ay,{type:"success",variant:"alarm",title:wn.t("Wallet connected successfully.")})),r&&!d&&he.createElement(he.Fragment,null,he.createElement(Wa,{size:10}),he.createElement(Ay,{type:"error",title:r?.message,variant:"alarm"})),d&&he.createElement(he.Fragment,null,he.createElement(Wa,{size:30}),he.createElement(Eo,{namespace:d,suffix:y(),error:r?.message,connected:m,address:v()})),he.createElement(Wa,{size:"40"}),he.createElement(_A,{loading:f,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},T()))},"ConnectWalletContent");import{i18n as By}from"@lingui/core";import{Button as QA,Divider as HA,Image as GA,MessageBox as VA,WarningIcon as KA}from"@rango-dev/ui";import{useWallets as jA}from"@rango-dev/wallets-react";import{detectInstallLink as XA}from"@rango-dev/wallets-shared";import to from"react";var Wy=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=jA(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(XA(n.installLink),"_blank"),"handleButtonClick");return to.createElement(to.Fragment,null,to.createElement(VA,{type:"warning",title:By.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:to.createElement(Na,null,to.createElement(GA,{src:n.img,size:45}),to.createElement(Ba,null,to.createElement(KA,{color:"warning",size:10})))}),to.createElement(HA,{size:"40"}),to.createElement(QA,{type:"primary",id:"widget-install-wallet-btn",onClick:r},By.t("Install")))},"InstallWalletContent");var Py=i(t=>{let{swap:e,onClose:o}=t,{state:n}=e0(),r=ZA(e),a=r?JA(e,r):null,s=a?.walletType,c=s?Wn(n(s)):null,l=r?YA(e,r):null;return s?c===RA.NOT_INSTALLED?Ly.createElement(Wy,{walletType:s}):Ly.createElement(Ny,{wallet:a,namespace:l,onClose:o}):null},"WalletStateContent");function Jc(t){let{isOpen:e,state:o,onClose:n,onDelete:r,onCancel:a,swap:s,message:c}=t;return Nr.createElement(R,{open:e,onClose:n,container:N()},o==="waitingForConnectingWallet"&&Nr.createElement(Py,{swap:s,message:c,onClose:n}),(o==="waitingForNetworkChange"||o==="networkChanged")&&Nr.createElement(Ey,{message:c,status:o}),o==="delete"&&Nr.createElement(by,{onClose:n,onDelete:()=>{n(),r()}}),o==="cancel"&&Nr.createElement(vy,{onClose:n,onCancel:()=>{n(),a()}}))}i(Jc,"SwapDetailsModal");import{i18n as Br}from"@lingui/core";import{Button as Rc,Divider as Wr,MessageBox as Dy,TokenAmount as t0,Typography as $y}from"@rango-dev/ui";import Ce from"react";import{Link as o0,useNavigate as n0}from"react-router-dom";var My="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",_y="/profile";function ep(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:g}=t,h=n0(),{showProfileBanner:f}=oe();return Ce.createElement(R,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(tt.SWAP_BOX_ID)||document.body},n==="success"?Ce.createElement(Dy,{type:"success",title:Br.t("Swap Successful")},Ce.createElement(t0,{direction:"vertical",tooltipContainer:N(),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}),Ce.createElement(Wr,{size:12}),Ce.createElement($y,{variant:"body",size:"medium",color:"neutral700",align:"center"},d)):Ce.createElement(Dy,{type:"error",title:Br.t("Transaction Failed"),description:d}),Ce.createElement(Wr,{size:30}),n==="success"&&Ce.createElement(Ce.Fragment,null,f&&Ce.createElement(Ce.Fragment,null,Ce.createElement(o0,{to:_y},Ce.createElement(Iy,{src:My,alt:"Profile Banner"})),Ce.createElement(Wr,{size:30})),Ce.createElement(Rc,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Br.t("Done"))),Ce.createElement(Wr,{size:12}),g&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Rc,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(g,"_blank")},Br.t("Diagnosis")),Ce.createElement(Wr,{size:12})),Ce.createElement(Rc,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},Ce.createElement($y,{variant:"title",size:"medium",color:"primary"},Br.t("See Details"))))}i(ep,"SwapDetailsCompleteModal");import{i18n as Ma}from"@lingui/core";import{CopyIcon as f0,DoneIcon as g0,IconButton as h0,RangoExplorerIcon as y0,Tooltip as aS,Typography as sS,useCopyToClipboard as S0}from"@rango-dev/ui";import Nt from"react";import m0 from"react";import{i18n as c0}from"@lingui/core";import{Alert as oS,IconButton as p0,LinkIcon as u0}from"@rango-dev/ui";import So,{Fragment as d0}from"react";import{Alert as i0,ChevronDownIcon as a0,IconButton as s0}from"@rango-dev/ui";import bn,{useState as l0}from"react";import{css as Lr,darkTheme as Fy,styled as $t,Typography as r0}from"@rango-dev/ui";var Oy=$t(ae,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${Fy} &`]:{color:"$secondary500"}}}}}),Uy=$t("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),zy=$t("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),qy=$t("div",{padding:"$0 $20 $20 $20"}),eY=$t("div",{display:"flex",flexDirection:"column",gap:"$10"}),Qy=$t("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),tY=$t("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),zo=Lr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${Fy} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Hy=Lr({padding:"$5 0"}),La=Lr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),Gy=Lr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),Vy=Lr({width:"100%",padding:"0 $20 $10"}),Ky=$t("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),jy=$t("div",{display:"flex",flexDirection:"column",gap:"$5"}),Pa=$t(r0,{wordBreak:"break-word"});import{styled as tp}from"@rango-dev/ui";var Xy=tp("div",{display:"flex",flexDirection:"column",gap:"$10"}),Yy=tp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Zy=tp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function Jy(t){let{message:e}=t,[o,n]=l0(!1);return bn.createElement(i0,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&bn.createElement(s0,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},bn.createElement(Yy,{rotated:o},bn.createElement(a0,{size:12,color:"gray"}))),footer:bn.createElement(Zy,{open:o},bn.createElement(Pa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Jy,"FailedAlert");import{i18n as Ry}from"@lingui/core";import{Alert as op,Button as eS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as np}from"rango-types";import Pr from"react";function tS(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?Pr.createElement(op,{type:"warning",id:"widget-swap-details-change-network-alert",title:n.shortMessage,action:Pr.createElement(eS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(np.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Ry.t("Change"))}):r===np.WaitingForConnectingWallet?Pr.createElement(op,{type:"warning",title:n.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Pr.createElement(eS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(np.WaitingForConnectingWallet)}},Ry.t("Connect"))}):Pr.createElement(op,{id:"widget-swap-details-short-alert",type:"warning",title:n.shortMessage})}i(tS,"WarningAlert");function rp(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,c=Vn(a),l=a.status==="waitingForApproval"&&!c,p=a.status==="running"&&!c,u=p&&!s||l&&!a.explorerUrl?.length;return So.createElement(Xy,null,a.explorerUrl?.map((d,g,h)=>{let f=g+d.url,m=g===h.length-1,T=(m&&p||l)&&!u,y=m&&a.status==="failed";return So.createElement(d0,{key:f},So.createElement(oS,{id:"widget-swap-details-tx-alert",type:m&&(T&&"loading"||y&&"error")||"success",title:d.description?`${d.description} Tx`:c0.t("View transaction"),action:d.url&&So.createElement(p0,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(d.url,"_blank")},So.createElement(u0,{size:12}))}))}),u&&So.createElement(oS,{id:"widget-swap-details-loading-alert",type:"loading",title:r.shortMessage}),a.status!=="failed"&&c&&So.createElement(tS,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&So.createElement(Jy,{message:r}))}i(rp,"SwapDetailsAlerts");var nS=2e3;var rS=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:gt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:_(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:gt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:_(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:In(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:gt(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:gt(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:In(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:m0.createElement(rp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function iS(t){if(Vn(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(iS,"getStepState");function lS(t){let{requestId:e}=t,[o,n]=S0(nS);return Nt.createElement(zy,{className:zo()},Nt.createElement(sS,{variant:"label",size:"large",color:"neutral700"},Ma.t("Request ID")),Nt.createElement("div",{className:La()},Nt.createElement(sS,{variant:"label",size:"small",color:"neutral700"},e),Nt.createElement(aS,{container:N(),content:o?Ma.t("Copied To Clipboard"):Ma.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Nt.createElement(h0,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Nt.createElement(g0,{size:16,color:"secondary"}):Nt.createElement(f0,{size:16,color:"gray"}))),Nt.createElement(Ky,{target:"_blank",href:`${Mp}/swap/${e}`},Nt.createElement(aS,{container:N(),content:Ma.t("View on Rango Explorer"),side:"bottom"},Nt.createElement(y0,{size:20})))))}i(lS,"RequestIdRow");import{i18n as cS}from"@lingui/core";import{Typography as pS}from"@rango-dev/ui";import ip from"react";function uS(t){let{date:e,isFinished:o}=t;return ip.createElement("div",{className:zo()},ip.createElement(pS,{variant:"label",size:"large",color:"neutral700"},o?cS.t("Finished at"):cS.t("Created at")),ip.createElement(pS,{variant:"label",size:"small",color:"neutral700"},e))}i(uS,"SwapDateRow");function lp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=x0(),l=S().blockchains(),p=S().swappers(),{findToken:u}=S(),d=O.use.retry(),g=E0(),h=gS(null),[f,m]=sp(!1),[T,y]=sp(null),[C,k]=sp(null),v=gS(!1),x=Be.use.getNotifications(),A=Be.use.removeNotification(),I=x(),E=T0(e),b=E?.networkStatus,w=i(ve=>{m(!0),y(ve)},"handleChangeModalState"),B=i(()=>{m(!1)},"handleCloseModal");fS(()=>{I.find(je=>je.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(k(e.status),A(e.requestId),B()):C&&k(null))},[e.status,e.requestId]),fS(()=>{te?w(xn.WaitingForNetworkChange):b===xn.WaitingForConnectingWallet?w(xn.WaitingForConnectingWallet):b===xn.NetworkChanged&&w(xn.NetworkChanged),!te&&v.current&&B(),v.current=te},[b]);let M=$d(e),$=E?C0(e,E):null,q=E?k0(e,E):null,ee=Ty(e),V=Fd(e),L=i(ve=>!!c(ve)?.mobileWallet,"isMobileWallet"),te=b===xn.WaitingForNetworkChange&&!!$&&!!q?.walletType&&(L(q.walletType)||a(q.walletType,$.network,$)),le=te?s.bind(null,q.walletType,[{namespace:$.namespace,network:$.network}]):void 0,J=Dd(e,E,c),X=rS({swap:e,switchNetwork:le,showNetworkModal:b,setNetworkModal:w,message:J,blockchains:l,swappers:p}),j=X.length,[ue,de]=[e.steps[0],e.steps[j-1]],ke=de.outputAmount||de.expectedOutputAmountHumanReadable,H=e.steps.reduce((ve,je)=>ve+parseFloat(je.feeInUsd||""),0),W=e.steps.find(ve=>ve.diagnosisUrl)?.diagnosisUrl,Q=_(parseFloat(ke||"0")*(de.toUsdPrice||0),4,4),K=_(parseFloat(e.inputAmount)*(ue.fromUsdPrice||0),4,4),Y=ke?new mS(ke).multipliedBy(de.toUsdPrice||0).toString():"",ye=new mS(e.inputAmount).multipliedBy(ue.fromUsdPrice||0).toString(),Qe=Qt(K,Q),Oe=J.detailedMessage.content||J.shortMessage,kt=e.status==="success"?qo.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:_(ke,6,6),token:X[j-1].to.token.displayName,conciseAddress:oo(e.wallets[X[j-1].to.chain.displayName]?.address||""),chain:X[j-1].to.chain.displayName}}):Te.createElement(jy,null,Te.createElement(ap,{variant:"body",size:"medium",color:"neutral700",align:"center"},Oe?"":qo.t("Transaction was not sent."),M?`${qo.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:M.outputAmount,symbol:M.symbol,blockchain:M.blockchain}})}`:""),Oe&&Te.createElement(Pa,{align:"center",variant:"body",size:"medium",color:"neutral700"},Te.createElement("b",null,"Reason:")," ",Oe));return Te.createElement(ie,{header:{title:qo.t("Swap Details"),onCancel:e.status==="running"?()=>w("cancel"):void 0,suffix:e.status!=="running"&&Te.createElement(ao,null,Te.createElement(dS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>w("delete")},Te.createElement(ap,{size:"medium",variant:"label",color:"error"},qo.t("Delete"))))},footer:V&&!C&&Te.createElement(dS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let ve=Ci(e,l,u);d(ve),setTimeout(()=>{g("../../")},0)}},qo.t("Try again"))},Te.createElement(Oy,{compact:!0,ref:h},Te.createElement(lS,{requestId:o}),Te.createElement(uS,{date:ee,isFinished:!!e.finishTime}),Te.createElement("div",{className:Gy()},Te.createElement(w0,{fee:_(String(H),2,2),time:Nn(Kr(e.steps)),steps:j}),Te.createElement(rr,{from:{price:{value:_(e.inputAmount,6,6),usdValue:K,realUsdValue:ye,realValue:e.inputAmount},token:{displayName:X[0].from.token.displayName,image:X[0].from.token.image},chain:{image:X[0].from.chain.image,displayName:X[0].from.chain.displayName}},to:{price:{value:_(ke,6,6),usdValue:Q,realUsdValue:Y,realValue:ke||""},token:{displayName:X[j-1].to.token.displayName,image:X[j-1].to.token.image},chain:{image:X[j-1].to.chain.image,displayName:X[j-1].to.chain.displayName}},percentageChange:_(Qe,2,2),warningLevel:Ht(Qe??0)})),Te.createElement("div",{className:Vy()},Te.createElement(ap,{variant:"title",size:"small"},qo.t("Swaps steps"))),Te.createElement(v0,{size:8}),Te.createElement(qy,null,X.map((ve,je)=>{let Dr=je,En=iS(e.steps[je]),QS=En==="error"||En==="in-progress"||En==="warning"||En==="completed"&&je===X.length-1;return Te.createElement(b0,{className:"widget-swap-details-step-item-container",key:Dr,step:ve,type:"swap-progress",ref:h,state:En,hasSeparator:je!==0,tabIndex:Dr,isFocused:QS,tooltipContainer:N()})}))),Te.createElement(Jc,{isOpen:f,state:T,onClose:B,onCancel:r,onDelete:n,message:J.detailedMessage.content,swap:e}),Te.createElement(ep,{open:!!C,diagnosisUrl:W,onClose:()=>k(null),status:e.status==="success"?"success":"failed",priceValue:_(ke,6,6),usdValue:Q,realUsdValue:Y,realValue:ke||"",percentageChange:_(Qe,2,2),token:{displayName:X[j-1].to.token.displayName,image:X[j-1].to.token.image},chain:{image:X[j-1].to.chain.image},description:kt}))}i(lp,"SwapDetails");import{i18n as Da}from"@lingui/core";import{Divider as SS,NotFound as W0,Skeleton as _r,Typography as $a}from"@rango-dev/ui";import Ae from"react";import{i18n as I0}from"@lingui/core";import{Divider as A0,Skeleton as N0,Typography as B0}from"@rango-dev/ui";import Ie from"react";import{css as Bt,styled as cp}from"@rango-dev/ui";var hS=cp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Mr=cp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),_a=cp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),A7=Bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),N7=Bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),B7=Bt({paddingTop:"$15",display:"flex"}),W7=Bt({padding:"$15 $0"}),L7=Bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),P7=Bt({paddingBottom:"$10"}),M7=Bt({display:"flex",justifyContent:"start",alignItems:"center"}),_7=Bt({paddingTop:"$5",display:"flex",alignItems:"center"}),D7=Bt({display:"flex",alignItems:"center"}),$7=Bt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),yS=Bt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function pp(){return Ie.createElement(hS,null,Ie.createElement(ar,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(B0,{variant:"title",size:"small"},I0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Mr,null,Ie.createElement(_t,{separator:!1}),Ie.createElement("div",{className:yS()},Ie.createElement(A0,{direction:"horizontal",size:20}),Ie.createElement(N0,{height:22,variant:"rectangular"}))),Ie.createElement(_a,null),Ie.createElement(Mr,null,Ie.createElement(_t,{separator:!1})),Ie.createElement(_a,null),Ie.createElement(Mr,null,Ie.createElement(_t,{separator:!1})),Ie.createElement(_a,null),Ie.createElement(Mr,null,Ie.createElement(_t,{separator:!1}))))}i(pp,"LoadingSwapDetails");function CS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(ie,{header:{title:Da.t("Swap Details"),suffix:Ae.createElement(ao,null)}},o&&Ae.createElement(Uy,null,Ae.createElement("div",{className:zo()},Ae.createElement($a,{variant:"label",size:"large",color:"neutral700"},`${Da.t("Request ID")}`),Ae.createElement("div",{className:La()},Ae.createElement($a,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(_r,{width:60,height:10,variant:"rounded"})),Ae.createElement(SS,{direction:"horizontal",size:4}),Ae.createElement(_r,{width:16,height:16,variant:"rectangular"}),Ae.createElement(SS,{direction:"horizontal",size:4}),Ae.createElement(_r,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:zo()},Ae.createElement($a,{className:Hy(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(_r,{width:60,height:10,variant:"rounded"})),Ae.createElement($a,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(_r,{width:60,height:10,variant:"rounded"}))),Ae.createElement(pp,null)),!o&&Ae.createElement(Qy,null,Ae.createElement(W0,{title:Da.t("Not found"),description:Da.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(CS,"SwapDetailsPlaceholder");function TS(){let{manager:t,state:e}=M0(),o=!e.loadedFromPersistor,n=Ct(t),{requestId:r}=D0(),a=Ve(),{fetchStatus:s}=S();if(!r)return up.createElement(_0,{containerStyles:{margin:"20px"},type:"error",title:L0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=r?n.find(({swap:g})=>g.requestId===r):void 0,p=i(()=>{if(l?.id){let g=t?.get(l.id);g&&P0(g)}},"onCancel"),u=i(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(g){console.log(g)}},"onDelete"),d=l?.swap;return!d||c?up.createElement(CS,{requestId:r,showSkeleton:c}):up.createElement(lp,{swap:d,requestId:r,onCancel:p,onDelete:u})}i(TS,"SwapDetailsPage");import{i18n as kS}from"@lingui/core";import{Divider as $0,getCategoriesCount as F0,SelectableCategoryList as O0,styled as wS,Typography as U0,Wallet as z0,WalletState as q0}from"@rango-dev/ui";import{useWallets as Q0}from"@rango-dev/wallets-react";import Ft,{useState as vS}from"react";var H0=wS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),G0=wS(ae,{textAlign:"center"});function bS(){let{fetchStatus:t}=S(),[e,o]=vS("ALL"),n=S().blockchains(),{config:r}=S(),{state:a}=Q0(),[s,c]=vS(),l=oe.use.isActiveTab(),{list:p}=vt(),u=cu(p,n),g=F0(u)!==1,h=pu(p,e),f=i(m=>{Hp(p,r.multiWallets)||c(m)},"handleWalletItemClick");return Ft.createElement(ie,{header:{title:kS.t("Connect Wallets")}},Ft.createElement(G0,null,g&&Ft.createElement(Ft.Fragment,null,Ft.createElement(O0,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Ft.createElement($0,{size:24})),Ft.createElement(U0,{variant:"title",size:"xmedium",align:"center"},kS.t("Choose a wallet to connect.")),Ft.createElement(H0,null,h.map((m,T)=>{let C=a(m.type).namespaces,k=`wallet-${T}-${m.type}`,v=Ja(m,C);return Ft.createElement(z0,{key:k,...m,state:v?q0.PARTIALLY_CONNECTED:m.state,container:N(),onClick:()=>f(m),isLoading:t==="loading",disabled:!l})}),Ft.createElement(Hn,{id:"widget-state-full-connect-modal",wallet:s,onClose:()=>{c(void 0)}}))))}i(bS,"WalletsPage");function xS(){return qd(),Os(),V0([{path:F.home,element:qe.createElement(Oh,null)},{path:F.routes,element:qe.createElement(Hh,null)},{path:F.fromSwap,children:[{index:!0,element:qe.createElement(ba,{type:"source"})},{path:F.blockchains,element:qe.createElement(Ta,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:qe.createElement(ba,{type:"destination"})},{path:F.blockchains,element:qe.createElement(Ta,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:qe.createElement(Sy,null)},{path:F.languages,element:qe.createElement(zh,null)},{path:F.exchanges,element:qe.createElement(Dc,{sourceType:"Exchanges"})},{path:F.bridges,element:qe.createElement(Dc,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:qe.createElement(zg,null)},{path:F.addCustomTokens,children:[{index:!0,element:qe.createElement(Dm,null)},{path:F.blockchains,element:qe.createElement(Ta,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:qe.createElement(sh,null)},{path:F.swapDetails,element:qe.createElement(TS,null)}]},{path:F.wallets,element:qe.createElement(bS,null)},{path:F.confirmSwap,element:qe.createElement(Ig,null)}])}i(xS,"AppRoutes");import{useQueueManager as tN}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as oN}from"rango-sdk";import{useContext as nN,useEffect as LS,useState as PS}from"react";import{globalCss as K0}from"@rango-dev/ui";var ES=i(()=>K0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function IS(){let{setWatermark:t,setShowProfileBanner:e}=oe();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Ut("BASE_URL")}/meta/dapp/config?apiKey=${Ut("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(IS,"useFetchApiConfig");import{useWallets as j0}from"@rango-dev/wallets-react";import{useEffect as X0,useRef as Y0}from"react";function AS(){let{connect:t,state:e}=j0(),o=Y0({}),{fetchStatus:n}=S(),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(AS,"useForceAutoConnect");import{isApprovalTX as Z0,RouteEventType as NS,StepEventType as BS,StepExecutionEventStatus as J0,WidgetEvents as Fa}from"@rango-dev/queue-manager-rango-preset";import{useEffect as WS}from"react";function dp(){let t=Be.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();WS(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===BS.TX_EXECUTION&&s.status===J0.TX_SENT&&!Z0(c)||s.type===BS.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let g=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);g&&u.push(g)}if(c?.fromBlockchain!==c?.toBlockchain){let g=l.wallets[c?.toBlockchain];if(g){let h=e.find(f=>f.address?.toLocaleLowerCase()===g.address?.toLocaleLowerCase()&&f.walletType===g.walletType&&f.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let g=n(),f=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(m=>g.some(T=>T.blockchain===m.blockchain&&T.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&T.symbol?.toLocaleLowerCase()===m.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:f,shouldFetchCustomTokens:f.length>0})}}t(s,l)},"handleStepEvent");return we.on(Fa.StepEvent,r),()=>we.off(Fa.StepEvent,r)},[we,e]),WS(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===NS.FAILED||s.type===NS.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return we.on(Fa.RouteEvent,r),()=>we.off(Fa.RouteEvent,r)},[we])}i(dp,"useSubscribeToWidgetEvents");import{useManager as R0}from"@rango-dev/queue-manager-react";import{useEffect as eN}from"react";function mp(){let{isSynced:t,syncNotifications:e}=Be(),{manager:o,state:n}=R0();eN(()=>{Be.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(Ct(o))},[Be.persist.hasHydrated(),n.loadedFromPersistor,t])}i(mp,"useSyncNotifications");function fp(){AS(),ES(),dp(),mp();let t=S().blockchains(),{canSwitchNetworkTo:e}=qi(),[o,n]=PS(null),[r,a]=PS(),s=nN(hi),c=t.filter(oN),{fetchApiConfig:l}=IS();LS(()=>()=>zd(),[]),tN({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),LS(()=>(xo.init(),Be.persist.hasHydrated()||Be.persist.rehydrate(),s.onConnectWallet(p=>{n(u=>{if(!u||u.walletType!==p.walletType)return p;let d={...u};return p.network&&(d.network=p.network),p.accounts&&(d.accounts=p.accounts),d})}),s.onDisconnectWallet(p=>{a(p),n(u=>p===u?.walletType?null:u)}),l().catch(console.log),xo.destroy),[])}i(fp,"useBootstrap");import{styled as rN}from"@rango-dev/ui";var MS=rN("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function Oa(){fp();let{config:t}=S(),{activeTheme:e}=io(t?.theme||{}),{activeLanguage:o}=fo();return gp.createElement(iN,{language:o},gp.createElement(MS,{id:"swap-container",className:e()},gp.createElement(xS,null)))}i(Oa,"Main");import{setSolanaSignerConfig as xN}from"@rango-dev/signer-solana";import yp,{useEffect as US,useMemo as EN}from"react";import{useState as aN}from"react";var sN=i(()=>{let[t,e]=aN(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=Qp(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),_S=sN;import{checkWaitingForNetworkChange as lN,makeQueueDefinition as cN}from"@rango-dev/queue-manager-rango-preset";import{Provider as pN}from"@rango-dev/queue-manager-react";import{useWallets as uN}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as dN}from"@rango-dev/wallets-shared";import{isEvmBlockchain as mN}from"rango-types";import fN,{useMemo as gN}from"react";function hN(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=uN(),c=gN(()=>cN({API_KEY:t.apiKey||Ut("API_KEY"),BASE_URL:Ut("BASE_URL"),emitter:{emit:we.emit}}),[t.apiKey]),{blockchains:l,connectedWallets:p}=S(),u=l(),d={blockchains:p.map(v=>({accounts:[v],name:v.chain}))},g=i(async(v,x)=>a(v,x.network,x)?await r(v,[x]):void 0,"switchNetwork"),h=i(v=>!!s(v).mobileWallet,"isMobileWallet"),f=u.filter(v=>v.enabled).reduce((v,x)=>(v[x.name]=x,v),{}),m=u.filter(mN),T=i(v=>{let{supportedChains:x}=s(v);return Ln(x)},"getSupportedChainNames"),y=e(),C={meta:{blockchains:f,evmBasedChains:m,evmNetworkChainInfo:dN(m),getSupportedChainNames:T},getSigners:o,wallets:d,providers:y,switchNetwork:g,canSwitchNetworkTo:a,state:n,isMobileWallet:h},k=oe.use.isActiveTab();return fN.createElement(pN,{queuesDefs:[c],context:C,onPersistedDataLoaded:v=>{lN(v)},isPaused:!k},t.children)}i(hN,"QueueManager");var DS=hN;import{useManager as kN}from"@rango-dev/queue-manager-react";import vN,{createContext as wN,useContext as bN}from"react";function $S(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:c}=O();return i(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:g,toToken:h,requestAmount:f}=p,m={blockchains:e,tokens:o};if(u!==void 0){let T=e.find(y=>y.name===u)??null;n(T)}if(d!==void 0){let T=d?t(d)??null:null;r({meta:m,token:T})}if(g!==void 0){let T=e.find(y=>y.name===g)??null;a(T)}if(h!==void 0){let T=h?t(h)??null:null;s({meta:m,token:T})}f!==void 0&&c(f)},"updateQuoteInputs")}i($S,"useUpdateQuoteInputs");import{cancelSwap as yN,getCurrentNamespaceOfOrNull as SN,getCurrentStep as CN,getRelatedWalletOrNull as TN}from"@rango-dev/queue-manager-rango-preset";var Ua=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return Ct(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=Ci(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&yN(o)}getCurrentStepInfo(e){let o=CN(e);return{step:o,wallet:o?TN(e,o):null,network:o?SN(e,o)?.network:null}}};var FS=wN(void 0);function hp(t){let{manager:e}=kN(),o=oe.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=S(),l=new Ua(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=S(),u=nu(a()),d=S().blockchains(),g=S().tokens(),h=S().swappers(),f=S().fetchStatus,m=fo().resetLanguage,T=Be().getNotifications(),y=Be().clearNotifications,C=$S(),{fromBlockchain:k,toBlockchain:v,fromToken:x,toToken:A,inputAmount:I}=O(),E={isActiveTab:o,setCurrentTabAsActive:xo.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async b=>c(b)},meta:{blockchains:d,tokens:g,swappers:h,loadingStatus:f,findToken:r},resetLanguage:m,notifications:{list:T,clearAll:y},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:x?{symbol:x.symbol,blockchain:x.blockchain,address:x.address}:null,toBlockchain:v?.name??null,toToken:A?{symbol:A.symbol,blockchain:A.blockchain,address:A.address}:null,requestAmount:I},updateQuoteInputs:C}};return vN.createElement(FS.Provider,{value:E},t.children)}i(hp,"WidgetInfo");function OS(){let t=bN(FS);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(OS,"useWidget");function za(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=_S();return US(()=>{n&&r(n)},[n]),EN(()=>{uu({API_KEY:o?.apiKey||qr,BASE_URL:o?.apiUrl||Pp})},[o.apiKey,o.apiUrl]),US(()=>{t.config?.signers?.customSolanaRPC&&xN("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),yp.createElement(yi,{config:o,onUpdateState:e},yp.createElement(DS,{apiKey:o.apiKey},yp.createElement(hp,null,t.children)))}i(za,"WidgetProvider");function zS(t){let e=t.config?.externalWallets;return qa.createElement(cd,null,e?qa.createElement(Oa,null):qa.createElement(za,{config:t.config??Ur},qa.createElement(Oa,null)))}i(zS,"Widget");function qS(){let{on:t,off:e}=we;return{on:t,off:e}}i(qS,"useWidgetEvents");var HR={DerivationPath:zn,Namespaces:On,Detached:Un,isOnDerivationPath:Qn,isOnNamespace:qn,isOnDetached:Co};export{hR as EventSeverity,Xo as MainEvents,ER as Networks,NR as PendingSwapNetworkStatus,ns as QuoteEventTypes,yR as RouteEventType,Va as SUPPORTED_FONTS,HR as StatefulConnect,SR as StepEventType,CR as StepExecutionBlockedEventStatus,TR as StepExecutionEventStatus,tt as UI_ID,is as UiEventTypes,rs as WalletEventTypes,bR as WalletEvents,IR as WalletTypes,zS as Widget,Xo as WidgetEvents,za as WidgetProvider,yi as WidgetWallets,el as customizedThemeTokens,vR as readAccountAddress,Qo as useStatefulConnect,vt as useWalletList,qi as useWallets,OS as useWidget,qS as useWidgetEvents,VC as widgetEventEmitter};
3
3
  //# sourceMappingURL=index.js.map