@rango-dev/widget-embedded 0.62.2-next.0 → 0.62.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/components/Quote/Quote.d.ts.map +1 -1
- package/dist/components/Quote/Quote.types.d.ts +0 -2
- package/dist/components/Quote/Quote.types.d.ts.map +1 -1
- package/dist/components/Quote/QuoteCostDetails.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +3 -3
- package/package.json +13 -13
- package/src/components/Quote/Quote.tsx +0 -2
- package/src/components/Quote/Quote.types.ts +0 -2
- package/src/components/Quote/QuoteCostDetails.tsx +15 -4
- package/dist/widget-embedded.build.json +0 -1
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var vT=Object.defineProperty;var i=(t,e)=>vT(t,"name",{value:e,configurable:!0});import{EventSeverity as vee,RouteEventType as Eee,StepEventType as bee,StepExecutionBlockedEventStatus as xee,StepExecutionEventStatus as Iee}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as Nee}from"@rango-dev/wallets-core/legacy";import{useWallets as pT,Events as Pee}from"@rango-dev/wallets-react";import{Networks as Bee,WalletTypes as _ee}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as Dee}from"rango-types";import{Divider as zk}from"@rango-dev/ui";import mo,{useEffect as Hk,useRef as Qk,useState as kd}from"react";import{WalletState as ET}from"@rango-dev/ui";import{useWallets as bT}from"@rango-dev/wallets-react";import{useReducer as xT}from"react";function _p(t){return!!t.derivationPath}i(_p,"isStateOnDerivationPathStep");function Mp(t){return!!t.namespace}i(Mp,"isStateOnNamespace");var ei={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function Dp(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return ei;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:ei;default:throw new Error("Action hasn't been defined.")}}i(Dp,"reducer");function an(){let{state:t,disconnect:e,connect:o}=bT(),[n,r]=xT(Dp,ei),a=i(async(d,f,h)=>{r({type:"reset"});try{let g=f?.map(m=>({...m,network:void 0}));return await o(d.type,g),{status:"connected"}}catch(g){let m=g?.message?`Error: ${g.message}`:"An unknown error happened during connecting wallet.";if(h?.disconnectOnError)try{await u(d)}catch{console.warn("An error happened during disconnecting wallet after error on connecting.")}throw new Error(m,{cause:g})}},"runConnect"),s=i(async(d,f)=>{let h=d.state===ET.DISCONNECTED,g=f?.forceConnectToNamespaces;if(h){let m=!!d.isHub,S=m?d.properties?.find(y=>y.name==="namespaces")?.value:d.needsNamespace,T=m?d.properties?.find(y=>y.name==="derivationPath")?.value:d.needsDerivationPath;if(g){let y=g.find(k=>!S?.data?.map(w=>w.value).includes(k));if(y)throw new Error(`One of the forced namespaces is not available in the wallet. Forced namespace: ${y}`);if(g.length>1&&T)throw new Error("Derivation path is not supported when multiple namespaces are selected.");return g.length===1&&g[0]&&T?(r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:g[0]}}),{status:"derivation-path"}):await a(d,g.map(k=>({namespace:k})),{...f,disconnectOnError:!0})}if(!S?.data?.length)return await a(d,void 0,f);if(S?.data.length&&S.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:d,defaultSelectedChains:f?.defaultSelectedChains}}),{status:"namespace"};if(S?.data.length===1&&S.data[0]){if(T){let y=S.data[0];return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:y.value}}),{status:"derivation-path"}}return await a(d,S?.data?.map(y=>({namespace:y.value})),f)}}if(d.isHub&&!f?.forceConnectToNamespaces){let m=d.properties?.find(S=>S.name==="namespaces")?.value;if(m?.data.length&&m.data.length>1)return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:null}}),{status:"Detached"}}return f?.disconnectIfConnected?(await u(d),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=i(async(d,f)=>{let h=!!d.isHub,g=h?d.properties?.find(k=>k.name==="namespaces")?.value:d.needsNamespace,m=h?d.properties?.find(k=>k.name==="derivationPath")?.value:d.needsDerivationPath,S=g?.selection==="single",T=f[0];if(!T)throw new Error("To confirm a namespace, you should select at least one namespace.");if(S&&m)return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:T}}),{status:"derivation-path"};if(!Mp(n))throw new Error("Something went wrong on handling namespace. Please retry.");let y=f.map(k=>({namespace:k}));return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:y??null}}),{status:"Detached"}},"handleNamespace"),l=i(async(d,f,h)=>{if(!f)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!_p(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=[{namespace:n.derivationPath.namespace,derivationPath:f}],T=!!d.isHub?d.properties?.find(w=>w.name==="namespaces")?.value:d.needsNamespace,y=!!T?.data&&T.data.length>1,k=!!h?.forceConnectToNamespaces;return y&&!k?(r({type:"detached",payload:{targetWallet:d,selectedNamespaces:m??null,derivationPath:f}}),{status:"Detached"}):await a(d,m)},"handleDerivationPath"),p=i(()=>n,"getState"),u=i(async d=>{let f=t(d.type);return f.connected||f.connecting?(await e(d.type),Wo(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(an,"useStatefulConnect");import{WalletState as yi}from"@rango-dev/ui";import{useWallets as $C}from"@rango-dev/wallets-react";import{detectMobileScreens as FC,WalletTypes as Mt}from"@rango-dev/wallets-shared";import{useCallback as OC,useEffect as Yu}from"react";import LC,{createContext as BC,useContext as _C,useEffect as MC,useRef as DC}from"react";import{create as WC}from"zustand";import{persist as PC}from"zustand/middleware";import{allProviders as IT}from"@rango-dev/provider-all";var ns=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()}},sn=new ns;import{Provider as rs}from"@hub3js/core";import{defineVersions as Fp,pickVersion as Op}from"@hub3js/core/utils";function Up({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=is(a);return s instanceof rs?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 rs?o.push(Fp().version("1.0.0",n).build()):o.push(Fp().version("0.0.0",n).build())}),o}return t}i(Up,"matchAndGenerateProviders");function is(t){try{return Op(t,"1.0.0")[1]}catch{return Op(t,"0.0.0")[1]}}i(is,"pickProviderVersionWithFallbackToLegacy");function zp(t){return t.map(o=>is(o)).map(o=>o instanceof rs?o.id:o.config.type)}i(zp,"configWalletsToWalletName");function Hp(t,e){return e.find(o=>o.name===t)?.displayName}i(Hp,"getBlockchainDisplayNameFor");function Tt(t,e){return e.find(o=>o.name===t)?.shortName}i(Tt,"getBlockchainShortNameFor");function Qp(t,e){return e.find(o=>o.name===t)?.logo}i(Qp,"getBlockchainImage");function Kn(t,e){return e.find(o=>o.id===t)?.title}i(Kn,"getSwapperDisplayName");function Po(t,e){return e.find(o=>o.name===t)??null}i(Po,"findBlockchain");function as(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(as,"isTokenNative");function Ct(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(Ct,"createTokenHash");function Lo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Lo,"isValidTokenAddress");function ti(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}i(ti,"createTokenExplorerUrl");function jn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(c=>{c.forEach(l=>{typeof l!="string"&&(l=Ct(l));let p=o.tokensMapByTokenHash.get(l);p&&(n[l]=p)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let c=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(l=>{let p=o.tokensMapByBlockchainName[l];!c.has(l)&&p&&a(p)})}return s.forEach(c=>{let l=r[c];if(!l&&o.tokensMapByBlockchainName?.[c]){a(o.tokensMapByBlockchainName[c]);return}l&&(l.isExcluded&&o.tokensMapByBlockchainName[c]?(a(o.tokensMapByBlockchainName[c]),l.tokens.forEach(p=>{let u=Ct(p);delete n[u]})):a(l.tokens))}),Object.values(n)}i(jn,"matchTokensFromConfigWithMeta");function oi(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(oi,"getSupportedBlockchainsFromConfig");function Gp(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Gp,"makeProvidersOptionsFromConfig");var ln={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/assets/refs/heads/main/manifests/tonconnect/manifest.json"}},AT={clientUrl:void 0},NT={liquiditySources:void 0};function qp(t){let e=Gp(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return IT(o).map(a=>a())}i(qp,"generateProviders");var Vp=i((t,e,o)=>{let n=qp({...ln,...t});return{config:{...ln,...t},iframe:AT,campaignMode:NT,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=jn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}}),p=jn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}});sn.set("supportedSourceTokens",l),sn.set("supportedDestinationTokens",p),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=qp(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Gp(a);return Up({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Kp}from"rango-types";var jp=[Kp.EVM,Kp.SOLANA],ni="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as GT}from"rango-sdk";function Xp(){return process.env.REACT_APP_RANGO_API_KEY}i(Xp,"getApiKeyFromEnv");function Yp(){let t=Xp();if(t)return t;throw new Error("Ensure you have set REACT_APP_RANGO_API_KEY in your env variables.")}i(Yp,"getApiKeyFromEnvOrThrow");function Zp(){return Xp()||"NOT_SET"}i(Zp,"getApiKeyFromEnvOrNotSet");import{BlockchainCategories as DT,WalletState as ut}from"@rango-dev/ui";import{legacyReadAccountAddress as $T}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as FT,HYPERLIQUID_SIGN_NETWORK as OT,getBlockChainNameFromId as UT,isEvmAddress as zT,Networks as ds}from"@rango-dev/wallets-shared";import pn from"bignumber.js";import WT from"bignumber.js";var ue=new WT(0);var Bo="~",Jp=[];import{BlockchainCategories as ls,WalletState as MT}from"@rango-dev/ui";import{TransactionType as cs}from"rango-sdk";import{UI_ID as PT}from"@rango-dev/ui";var Rp="https://api.rango.exchange",eu="https://explorer.rango.exchange",kt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...PT};var tu="Roboto",ss=[{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 cn(t){return Array.from(new Set(t))}i(cn,"removeDuplicateFrom");function ri(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(ri,"debounce");function pt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(pt,"containsText");function ru(t,e){return t.toLowerCase()===e.toLowerCase()}i(ru,"exactText");function iu(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(iu,"startWithText");var W=i(()=>document.getElementById(kt.SWAP_BOX_ID),"getContainer"),_o=i(()=>document.getElementById(kt.EXPANDED_BOX_ID),"getExpanded");function au(t,e,o){let n=!!e&&ru(e,t),r=!!o&&ru(o,t);return n!==r?n?-1:1:0}i(au,"compareExactMatchText");function ps(t,e,o){let n=!!e&&pt(e,t),r=!!o&&pt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ps,"compareContainsText");function us(t,e,o){let n=!!e&&iu(e,t),r=!!o&&iu(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(us,"compareStartWithText");function su(t,e,o){if(!o)return 0;let n=au(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=au(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=us(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ps(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=us(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=ps(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=us(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=ps(o,t.address,e.address);if(r!==0)return r}return 0}i(su,"compareWithSearchFor");var ii=i((t,e)=>{switch(e){case ls.ALL:return!0;case ls.UTXO:return t===cs.TRANSFER;case ls.OTHER:return t!==cs.TRANSFER&&t!==cs.EVM;default:return t===e}},"isBlockchainTypeInCategory"),lu=i(t=>ss.find(o=>o.value===t)?.url,"getFontUrlByName");function cu(t,e){let o=!!t.find(n=>n.state===MT.CONNECTED);return e===!1&&o}i(cu,"isSingleWalletActive");function pu(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(pu,"memoizedResult");function uu(t,e){let o=new Set;return e.forEach(n=>{o.add(n.blockchain)}),t.filter(n=>o.has(n.name))}i(uu,"filterBlockchainsWithAtLeastOneToken");import{BigNumber as Cu}from"bignumber.js";function du(t){return t.replace(/^0+(?=\d)/g,"")}i(du,"removeLeadingZeros");function mu(t){return t.replace(/^\.(\d+)/,"0.$1")}i(mu,"ensureLeadingZeroForDecimal");function fu(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(fu,"formatThousandsWithCommas");function gu(t){return t.replace(/\s+/g,"-")}i(gu,"replaceSpacesWithDash");function hu(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(hu,"stripTrailingZeros");function yu(t){return t=t.replace(/[^\d.]/g,"").replace(/\./g,(e,o,n)=>n.indexOf(".")===o?".":""),t}i(yu,"parseNumericValue");function ai(t){return/^0+(?:\.0+)?$/.test(t)}i(ai,"isZeroValue");function Su(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(Su,"isValidCurrencyFormat");function Tu(t){return/\d+$/.test(t)}i(Tu,"isColorKeyOverridden");var Xn=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"),M=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new Cu(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new Cu(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 si=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var _t=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Yn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function ku(t){return ai(t)?"0":t.endsWith(".")?t.slice(0,-1):hu(t)}i(ku,"sanitizeInputAmount");function HT(t,e){let o=t?.get("EVM");return o?.network?UT(o.network,e)??o.network:null}i(HT,"getConnectedEvmChainName");function Zn(t,e){return qT(t,e)?ut.PARTIALLY_CONNECTED:e.connected?ut.CONNECTED:e.connecting?ut.CONNECTING:e.installed?ut.DISCONNECTED:ut.NOT_INSTALLED}i(Zn,"getWalletConnectionStatus");function wu(t,e,o,n){return o.filter(r=>!Jp.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:c,namespaces:l}=t(r);return s&&(!c||!!n&&HT(l,a)!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(r=>{let{name:a,img:s,installLink:c,showOnMobile:l,needsNamespace:p,supportedChains:u,needsDerivationPath:d,properties:f,isHub:h}=e(r),g=cn(u.map(S=>S.type)),m=Zn(e(r),t(r));return{title:a,image:s,link:FT(c),state:m,type:r,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:f,isHub:h}})}i(wu,"mapWalletTypesToWalletInfo");function Jn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Jn,"walletAndSupportedChainsNames");function fs(t,e,o,n,r){let a=[];function s(l,p,u){if(!!!a.find(f=>f.chain===l)){let f={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(f)}}i(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=$T(l),d=c.length>0,f=c.includes(u),h=u===ds.Unknown;if(d&&!f&&!h)return;let m=u===ds.Unknown&&zT(p);if(h&&!m)return;if(o.includes(u)||m)if(r)s(u,p.toLowerCase(),r);else{let T=c.filter(k=>o.includes(k));T.forEach(k=>{s(k,p.toLowerCase())}),T.includes(OT)&&s(ds.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}i(fs,"prepareAccountsForWalletStore");function Mo(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,c=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:l}=r;l.forEach((p,u)=>{let d=p.from.blockchain,f=p.to.blockchain,h=a===o.swaps.length-1,g=u===l.length-1;(!h&&!g||h&&c!==d||e==="all")&&n.add(d),e==="all"&&n.add(f)})}e==="all"&&n.add(c)}),Array.from(n)}i(Mo,"getQuoteChains");function Rn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Rn,"isAccountAndWalletMatched");var vu=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?ms(n.usdValue,n.decimals):ue.toFixed();return o.plus(r)},new pn(ue));return QT(e.toString())},"calculateWalletUsdValue");function QT(t){let e=t.toString().split(".");return e[0]&&(e[0]=fu(e[0])),e.join(".")}i(QT,"numberWithThousandSeparator");function ms(t,e){return new pn(t).shiftedBy(-e).toFixed()}i(ms,"representAmountInNumber");function pi(t){if(!t)return null;let e=ms(t.amount,t.decimals),o=t.usdValue?ms(t.usdValue,t.decimals):null,n=M(e,8,8),r=o?M(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(pi,"formatBalance");function Eu(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new pn(t.usdValue).shiftedBy(-t.decimals):ue,n=e&&e.usdValue?new pn(e.usdValue).shiftedBy(-e.decimals):ue;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new pn(t.amount).shiftedBy(-t.decimals):ue,n=e&&e.amount?new pn(e.amount).shiftedBy(-e.decimals):ue;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(Eu,"compareTokenBalance");function Vt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Vt,"areTokensEqual");function bu(t){return t.sort((e,o)=>+(o.state===ut.CONNECTED)-+(e.state===ut.CONNECTED)||+(o.state===ut.PARTIALLY_CONNECTED)-+(e.state===ut.PARTIALLY_CONNECTED)||+(o.state===ut.DISCONNECTED||o.state===ut.CONNECTING)-+(e.state===ut.DISCONNECTED||e.state===ut.CONNECTING))}i(bu,"sortWalletsBasedOnConnectionState");function po(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(po,"getConciseAddress");function xu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(xu,"getAddress");var Iu=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function gs(t){return t.map(e=>e.state).join("-")}i(gs,"hashWalletsState");function Au(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(Au,"filterBlockchainsByWalletTypes");function Nu(t,e){return e===DT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(ii(n,e))return!0;return!1})}i(Nu,"filterWalletsByCategory");function qT(t,e){if(!t.isHub||!t.needsNamespace||!e.connected)return!1;let n=t.needsNamespace.data.filter(r=>!r.unsupported);return t.needsNamespace.selection==="multiple"&&n.some(r=>!e.namespaces?.get(r.value)?.connected)}i(qT,"checkIsWalletPartiallyConnected");var hs={API_KEY:Zp()};function Kt(t){return hs[t]||""}i(Kt,"getConfig");function Wu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),hs=e,hs}i(Wu,"initConfig");var Pu=20,Lu=25,ys="theme-widget",Ss=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Vt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Vt(a,t));let r=n.isExcluded;return!r&&!o||r&&o}}}return o},"isTokenExcludedInConfig"),Ts=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),Bu=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var ui,dt=i(()=>ui||(ui=new GT(Kt("API_KEY"),Kt("BASE_URL")),ui),"httpService");import{i18n as _u}from"@lingui/core";var di=[.5,1,3],mi=1,un=5,er=30,fi=0;var Je=(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))(Je||{});var tr=(s=>(s.QUOTE_INPUT_UPDATE="quoteInputUpdate",s.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",s.ROUTE_REQUESTED="routeRequested",s.ROUTE_NOT_FOUND="routeNotFound",s.ROUTE_FETCH_FAILED="routeFetchFailed",s.ROUTE_CHANGED="routeChanged",s))(tr||{}),gi=(n=>(n.CONNECT="connect",n.DISCONNECT="disconnect",n.DETECTED="detected",n))(gi||{}),Re=(m=>(m.CLICK_CONNECT_WALLET="clickConnectWallet",m.TOKEN_SELECTED="tokenSelected",m.CHAIN_FILTER_APPLIED="chainFilterApplied",m.SETTINGS_CHANGED="settingsChanged",m.ROUTE_FEE_VIEWED="routeFeeViewed",m.DESTINATION_ADDRESS_SET="destinationAddressSet",m.GAS_WARNING_SHOWN="gasWarningShown",m.GAS_WARNING_BYPASSED="gasWarningBypassed",m.SWAP_INITIATED="swapInitiated",m.SWAP_WALLETS_MODAL_SHOWN="swapWalletsModalShown",m.SWAP_WALLETS_CONFIRMED="swapWalletsConfirmed",m.SWAP_STARTED="swapStarted",m.SWAP_RESUMED="swapResumed",m.SWAP_RETRIED="swapRetried",m.SWAP_CANCELLED="swapCancelled",m))(Re||{}),dn=(a=>(a.RouteEvent="routeEvent",a.StepEvent="stepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(dn||{});function hi(t,e){let o=t.map(a=>a.swapperGroup),n=[];return cn(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(hi,"getUniqueSwappersGroups");function Mu(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Mu,"sortLiquiditySourcesByGroupTitle");function nt(t,e){return e?.[t]==="hidden"}i(nt,"isFeatureHidden");function mn(t,e){return e?.[t]==="enabled"}i(mn,"isRoutingEnabled");var Du=i((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function fn(t){return t==fi?{type:"error",message:_u.t("Slippage must be greater than or equal to 0.01")}:t>un&&t<=er?{type:"warning",message:_u.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(fn,"getSlippageValidation");var $u=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let l=oi({config:a}),p=r;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>jp.includes(u.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(l=>!(s.length>0&&!s.includes(l.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),c=Array.from(n.values()),l=e()._blockchainsMapByName;if(!o||!o.type)return c;let p=o.type==="source"?"from":"to",u=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",d=sn.get(u);d?.length||(d=jn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),sn.set(u,d)),d=Du(d,s,a.features);let f=e().blockchains({type:o.type});return d.filter(g=>o.blockchain&&g.blockchain!==o.blockchain||!f.some(m=>m.name===g.blockchain)?!1:o.searchFor?!!(pt(g.symbol,o.searchFor)||pt(g.address||"",o.searchFor)||pt(g.name||"",o.searchFor)):!0).sort((g,m)=>{let S=e().isTokenPinned(g,o.type),T=e().isTokenPinned(m,o.type);if(S!==T)return S?-1:1;if(o.getBalanceFor){let x=o.getBalanceFor(g),A=o.getBalanceFor(m),E=Eu(x,A);if(E!==0)return E}let y=l.get(g.blockchain),k=l.get(m.blockchain),w=as(g,y),v=as(m,k);if(w!==v)return w?-1:1;if(g.isPopular!==m.isPopular)return g.isPopular?-1:1;if(o.searchFor){let x=su(g,m,o.searchFor);if(x)return x}return g.isSecondaryCoin!==m.isSecondaryCoin?g.isSecondaryCoin?1:-1:y&&k?y.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=Ct(o),s=n.get(a);return s||(s=r.find(c=>Ct(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Vt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(p=>{let u=a?.includes(p.swapperGroup);return s||!a||a.length===0?!u:u}).sort(Mu)},fetch:async()=>{try{let{routing:o}=e().config,n=mn("enableCentralizedSwappers",o),r=await dt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,c={},l=r.popularTokens,p=r.swappers.filter(d=>d.enabled);r.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&a.set(d.name,d)}),r.tokens.forEach(d=>{let f=Ct(d);c[d.blockchain]||(c[d.blockchain]=[]),s.set(f,d),c[d.blockchain]?.push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c,_popularTokens:l,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as VT,Catalonia as KT,Chinese as Fu,Denmark as jT,English as XT,Finland as YT,French as ZT,German as JT,Greece as RT,Hungary as eC,India as tC,Indonesian as oC,Italian as nC,Japanese as rC,Korea as iC,Lithuania as aC,Malay as sC,Netherlands as lC,Pakistan as cC,Philippines as pC,Poland as uC,Portuguese as dC,Russian as mC,SaudiArabia as fC,Serbia as gC,Slovakia as hC,SouthAfrica as yC,Spanish as SC,Swahili as TC,Swedish as CC,Thai as kC,Turkish as wC,Ukrainian as vC,Vietnamese as EC}from"@rango-dev/ui";var Ou=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:yC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:fC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:VT},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:KT},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Fu},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Fu},{title:"Danish",label:"Dansk",local:"da",SVGFlag:jT},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:lC},{title:"English",label:"English",local:"en",SVGFlag:XT},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:pC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:YT},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:ZT},{title:"German",label:"Deutsch",local:"de",SVGFlag:JT},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:RT},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:tC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:eC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:oC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:nC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:rC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:iC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:aC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:sC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:uC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:dC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:mC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:gC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:hC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:SC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:TC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:CC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:kC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:wC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:vC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:cC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:EC}],gn="en";var Uu=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:mi,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=cn(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=nt("theme",n),s=nt("language",n),c=nt("liquiditySource",n),l=r?.singleTheme,p=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...l&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||gn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||gn}})},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=oi({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import bs from"bignumber.js";import bC from"mitt";var ge=bC(),xC={on:ge.on,off:ge.off};var zu=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 Hu from"bignumber.js";function jt(t){return`${t.blockchain}${Bo}${t.address}${Bo}${t.symbol}`}i(jt,"createAssetKey");function Qu(t,e){return`${jt(e)}${Bo}${t}`}i(Qu,"createBalanceKey");function or(t){let[e,o,n]=t.split(Bo);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}i(or,"extractAssetFromBalanceKey");function ks(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[jt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Hu(r??ue).multipliedBy(o[s].amount).toString():""})})}),o}i(ks,"computeNextBalancesWithNewPrices");function ws(t,e){let o={};return t.balances?.forEach(n=>{let r=Qu(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Hu(c??ue).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[r]=p}),o}i(ws,"createBalanceStateForNewAccount");function vs(t,e){for(let o in e){let n=or(o);if(n){let r=jt(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}}return t}i(vs,"updateAggregatedBalanceStateForNewAccount");function IC(t,e){let o=or(e);if(!o)return t;let n=jt(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(IC,"removeBalanceFromAggregatedBalance");function Es(t,e,o){let n=t.connectedWallets.filter(l=>e.includes(l.walletType));t.connectedWallets.forEach(l=>{e.includes(l.walletType)||(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=or(l);if(!p)return;!!n.find(d=>Qu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=IC(a,l):s[l]&&(r[l]=s[l])}),{_balances:r,_aggregatedBalances:a}}i(Es,"computeNextStateAfterWalletBalanceRemoval");function AC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(AC,"matchWalletDetailsWithConnectedWallet");var NC=pu(),qu=zu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Rn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Rn(s,a))?{...a,loading:!1,error:!1,explorerUrl:AC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Rn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n,r)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Rn(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 dt().getMultipleTokenBalance({assets:p.map(({symbol:d,address:f,blockchain:h})=>({symbol:d,address:f,blockchain:h})),walletAddress:l});if(u){let d=e()._balances,f=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let g={blockChain:h.asset.blockchain,balances:[h],address:l},m={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};ks(m,g,d);let S=ws(g,e);f=vs(f,S),d={...d,...S}}),t(h=>({_balances:{...h._balances,...d},_aggregatedBalances:f}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(c=>c.chain===r.chain&&c.walletType!==r.walletType&&r.selected),s=!!o.find(c=>c.chain===r.chain&&c.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n,r,a)=>{let s=o[0];s&&(ge.emit("walletEvent",{type:"connect",payload:{walletType:s.walletType,accounts:o,chain:s.chain??null,walletName:a?.walletName??s.walletType}}),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}=Es(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(ge.emit("walletEvent",{type:"disconnect",payload:{walletType:o,walletName:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(c=>a.includes(c.chain)?(a=a.filter(l=>l!==c.chain),{...c,selected:!0}):c);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0||!o[0])return;let r=[...new Set(o.map(l=>l.walletType))];e().setConnectedWalletAsRefetching(o);let a=o.map(l=>({address:l.address,blockchain:l.chain})),s;try{s=await dt().getWalletsDetails(a)}catch(l){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${l}`);return}let c=s.wallets;if(c){let l=e()._balances,p=e()._aggregatedBalances;c.forEach(d=>{if(d.failed)return;let f={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};ks(f,d,l);let{_balances:h,_aggregatedBalances:g}=Es(f,r,{chains:[d.blockChain]});if(p=g,l=h,!e().connectedWallets.find(S=>r.includes(S.walletType)&&S.address===d.address&&S.chain===d.blockChain))return;let m=ws(d,e);p=vs(p,m),l={...l,...m}}),t(d=>({_balances:{...d._balances,...l},_aggregatedBalances:p})),e().setConnectedWalletRetrievedData(o,c);let{retryOnFailedBalances:u=!0}=n||{};if(u){let d=c.filter(f=>f.failed).map(f=>{let h=e().connectedWallets.find(g=>g.chain===f.blockChain&&g.address)?.walletType;return h?{chain:f.blockChain,walletType:h,address:f.address}:null}).filter(f=>!!f);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=jt(o),a=e()._aggregatedBalances[r]||[];if(a.length===0||!a[0])return null;let s=a[0];if(a.length===1&&n[s])return n[s];let c=n[a[0]];if(!c)return null;let l=c;return a.forEach(p=>{let u=n[p];if(!u)return;let d=new bs(u.amount),f=new bs(l.amount);d.isGreaterThan(f)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(Bo);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>NC(()=>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=or(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new bs(l.amount).shiftedBy(-l.decimals):ue;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 Gu(t){return WC()(PC((...e)=>({...qu(...e),...$u(...e),...Uu(...e),...Vp(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources,quoteTokensRate:e.quoteTokensRate}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Gu,"createAppStore");var Vu=BC(null);function C(){let t=_C(Vu);if(MC(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(C,"useAppStore");function Ku(t){let e=DC();return e.current||(e.current=Gu(t.config)),LC.createElement(Vu.Provider,{value:e.current},t.children)}i(Ku,"AppStoreProvider");function te(t){ge.emit("uiEvent",t)}i(te,"emitUiEvent");function ju(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};te({type:t.type,payload:n}),o||e()}i(ju,"emitPreventableEvent");function hn(t){ge.emit("quoteEvent",t)}i(hn,"emitQuoteEvent");function Xu(t){ge.emit("walletEvent",{type:"detected",payload:t})}i(Xu,"emitWalletDetected");var Zu=new Set,UC=new Set([Mt.LEDGER,Mt.TREZOR,Mt.WALLET_CONNECT_2,Mt.TON_CONNECT,Mt.DEFAULT]);function bt(t){let{chain:e}=t||{},{getAvailableProviders:o}=C(),{state:n,getWalletInfo:r}=$C(),{handleDisconnect:a}=an(),s=zp(o()),c=wu(n,r,s,e);c=FC()?c.filter(f=>f.showOnMobile!==!1&&n(f.type).installed):c;let l=bu(c);Yu(()=>{c.forEach(f=>{if(UC.has(f.type))return;f.state!==yi.NOT_INSTALLED&&!Zu.has(f.type)&&(Zu.add(f.type),Xu({walletName:f.title}))})},[gs(c)]);let p=OC(()=>{let f=c?.filter(h=>h.state===yi.CONNECTING)||[];for(let h of f)a(h)},[gs(c)]);Yu(()=>()=>{p()},[]);let u=i(f=>{let h=f.find(m=>m.type===Mt.DEFAULT);return!h||h.state===yi.NOT_INSTALLED?!1:f.filter(m=>m.state!=yi.NOT_INSTALLED&&![Mt.DEFAULT,Mt.WALLET_CONNECT_2,Mt.LEDGER].includes(m.type)&&r(m.type).supportedChains.filter(S=>S.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=i(f=>f==Mt.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(f=>!d(f.type)),terminateConnectingWallets:p}}i(bt,"useWalletList");import{Modal as qC}from"@rango-dev/ui";import GC from"react";import{create as QC}from"zustand";var Ju="rango-widget";var nr=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(Ju),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 HC=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"),uo=HC;var ne=uo(QC()((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})}}))),$o=new nr({onInit:()=>ne.setState({tabManagerInitiated:!0}),onClaim:()=>ne.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ne.setState({isActiveTab:!1})});function re(t){let{watermark:e}=ne();return GC.createElement(qC,{hasWatermark:e==="FULL",...t},t.children)}i(re,"WatermarkedModal");import{i18n as Tn}from"@lingui/core";import{Alert as ik,Button as ak,Divider as Cn,Image as sk,MessageBox as lk,RadioRoot as ck,WalletImageContainer as pk}from"@rango-dev/ui";import le,{useEffect as uk,useMemo as dk,useState as mk}from"react";import{i18n as XC}from"@lingui/core";import{Typography as ad}from"@rango-dev/ui";import yn from"react";function Si(t,e){return t.find(o=>o.name===e)?.logo}i(Si,"getBlockchainLogo");import{darkTheme as VC,Image as KC,styled as Xt,Typography as jC}from"@rango-dev/ui";var Ti=Xt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${VC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),Ci=Xt("div",{display:"flex",gap:"$8",alignItems:"center"}),ed=Xt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),td=Xt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),od=Xt("div",{display:"flex",gap:"$6",alignItems:"center"}),nd=Xt("div",{paddingLeft:"48px"}),rd=Xt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),id=Xt(jC,{maxWidth:"100px"}),ki=Xt(KC,{variants:{disabled:{true:{opacity:"0.5"}}}});function wi(t){let{namespace:e}=t,o=C().blockchains();return yn.createElement(Ti,{unsupported:!0},yn.createElement(Ci,null,yn.createElement(ki,{src:Si(o,e.id),size:40,disabled:!0}),yn.createElement(td,null,yn.createElement(ad,{variant:"label",size:"large"},e.label),yn.createElement(ad,{variant:"body",size:"xsmall"},XC.t("(Currently not supported)")))))}i(wi,"NamespaceUnsupportedItem");import{Checkbox as ok,Radio as nk}from"@rango-dev/ui";import Ns from"react";import{i18n as As}from"@lingui/core";import{ChevronDownIcon as ZC,ChevronUpIcon as JC,Divider as RC,Typography as rr}from"@rango-dev/ui";import Ne,{useEffect as ek,useState as tk}from"react";import{Image as ld,Tooltip as cd,Typography as YC}from"@rango-dev/ui";import Dt from"react";import{styled as sd}from"@rango-dev/ui";var xs=sd("div",{display:"flex",alignItems:"center",padding:0,margin:0}),vi=sd("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 Is=3;function pd(t){let{chains:e}=t;return Dt.createElement(xs,{id:"widget-supported-chains-container"},e.slice(0,Is).map((o,n)=>Dt.createElement(cd,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},Dt.createElement(vi,{firstItem:n===0},Dt.createElement(ld,{src:o.logo,size:15})))),e.length>Is&&Dt.createElement(cd,{container:W(),side:"bottom",align:"start",sideOffset:4,content:Dt.createElement(xs,null,e.map((o,n)=>Dt.createElement(vi,{key:o.name,firstItem:n===0},Dt.createElement(ld,{src:o.logo,size:15}))))},Dt.createElement(vi,null,Dt.createElement(YC,{variant:"body",size:"xsmall"},"+",e.length-Is))))}i(pd,"SupportedChainsList");function Fo(t){let{namespace:e,error:o,suffix:n,connected:r,address:a,onClick:s}=t,[c,l]=tk(!1),p=C().blockchains();ek(()=>l(!1),[o]);let u=e.getSupportedChains(p),d=!o&&!r&&u.length>1;return Ne.createElement(Ti,{hasError:!!o,clickable:!!s,onClick:s},Ne.createElement(Ci,null,Ne.createElement(ki,{src:Si(p,e.id),size:40}),Ne.createElement(ed,{showSupportedChains:d||r||!!o},Ne.createElement(od,null,Ne.createElement(rr,{variant:"label",size:"large"},e.label),r&&Ne.createElement(rr,{variant:"body",size:"small",color:"success500"},As.t("Connected")),!!o&&Ne.createElement(rr,{variant:"body",size:"small",color:"error500"},As.t("Connection failed"))),d&&Ne.createElement(pd,{chains:u}),r&&Ne.createElement(id,{variant:"body",size:"small",color:"neutral700"},a),o&&Ne.createElement(rd,{onClick:()=>l(f=>!f)},Ne.createElement(rr,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},As.t("See why")),c?Ne.createElement(JC,{size:12,color:"gray"}):Ne.createElement(ZC,{size:12,color:"gray"}))),n),!!o&&c&&Ne.createElement(Ne.Fragment,null,Ne.createElement(RC,{size:4}),Ne.createElement(nd,null,Ne.createElement(rr,{variant:"body",size:"small",color:"neutral700"},o))))}i(Fo,"NamespaceItem");function ud(t){let{onClick:e,type:o,namespace:n}=t;return Ns.createElement(Fo,{namespace:n,onClick:e,suffix:o==="radio"?Ns.createElement(nk,{value:n.value}):Ns.createElement(ok,{checked:t.value})})}i(ud,"NamespaceListItem");import{Button as rk,styled as dd}from"@rango-dev/ui";var Ei=dd("ul",{padding:0,paddingBottom:"$20",margin:0}),Sn=dd(rk,{minHeight:"$40"});function ir(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=C().blockchains(),[l,p]=mk([]),u=dk(()=>a?.data.filter(m=>!m.unsupported),[e?.type]),d=i(m=>{p(r?[m]:S=>S.includes(m)?S.filter(T=>T!==m):S.concat(m))},"onSelect"),f=u?.length===l.length,h=i(()=>{if(r)throw new Error("onSelectAll should not be called on single selection mode.");f?p([]):u&&p(u.map(m=>m.value))},"onSelectAll"),g=i(m=>r?le.createElement(ck,{value:l?.[0]},m):le.createElement(le.Fragment,null,m),"wrapRadioRoot");return uk(()=>{if(!r&&u)if(t.value.defaultSelectedChains?.length){let m=u.filter(S=>S.getSupportedChains(c).some(T=>t.value.defaultSelectedChains?.includes(T.name)));p(m.map(S=>S.value))}else p(u.map(m=>m.value))},[]),le.createElement(le.Fragment,null,le.createElement(lk,{type:"info",title:Tn.t("Connect {wallet}",{wallet:e.title}),description:Tn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(pk,null,le.createElement(sk,{src:s,size:45}))}),r?le.createElement(le.Fragment,null,le.createElement(Cn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(ik,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:Tn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(ak,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:h},f?Tn.t("Deselect all"):Tn.t("Select all")),le.createElement(Cn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(Ei,null,g(le.createElement(le.Fragment,null,a?.data.map((m,S,T)=>le.createElement(le.Fragment,{key:m.id},m.unsupported?le.createElement(wi,{namespace:m}):le.createElement(ud,{value:l.includes(m.value),namespace:m,type:r?"radio":"checkbox",onClick:()=>d(m.value)}),S!==T.length-1&&le.createElement(Cn,{size:10})))))),le.createElement(Cn,{size:20}),le.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!l.length,onClick:()=>t.onConfirm(l)},Tn.t("Connect")))}i(ir,"Namespaces");import{i18n as ar}from"@lingui/core";import{Alert as Ck,Button as kk,Divider as kn,Image as wk,MessageBox as vk,WalletImageContainer as Ek}from"@rango-dev/ui";import{useWallets as bk}from"@rango-dev/wallets-react";import me from"react";import{styled as fk}from"@rango-dev/ui";var md=fk("div",{display:"flex",justifyContent:"end"});import{i18n as Ws}from"@lingui/core";import{Button as gk,Spinner as hk}from"@rango-dev/ui";import Ps,{useLayoutEffect as yk,useRef as Sk,useState as Tk}from"react";function fd(t){let{namespace:e,initialConnect:o,disabled:n,state:r,handleConnect:a,handleDisconnect:s}=t,[c,l]=Tk(null),p=Sk(!1);yk(()=>{o&&!p.current&&u()},[]);let u=i(async g=>{try{p.current=!0,await a(g)}catch(m){l(m)}finally{p.current=!1}},"handleConnectNamespace"),d=i(async()=>{l(null),r.connected?await s():u({shouldAskForDerivationPath:!0})},"handleButtonClick"),f=i(()=>{let g=r.accounts?.[0]?.split(":"),m=g?.[g.length-1];return!r.connected||!m?null:po(m)},"getConnectedAddress"),h=i(()=>r.connected?Ws.t("Disconnect"):c?Ws.t("Try again"):Ws.t("Connect"),"getButtonText");return Ps.createElement(Fo,{namespace:e,connected:r.connected,error:c?.message,address:f(),suffix:r.connecting?Ps.createElement(hk,{color:"info"}):Ps.createElement(gk,{id:"widget-name-space-connect-btn",variant:"ghost",type:r.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}i(fd,"NamespaceDetachedItem");function sr(t){let{value:e,selectedNamespaces:o,onConfirm:n,confirmText:r=ar.t("Done"),onDisconnectWallet:a,navigateToDerivationPath:s}=t,{targetWallet:c}=e,{connect:l,disconnect:p,state:u}=bk(),d=c.type,f=u(d),h=c.properties?.find(w=>w.name==="namespaces"),g=c.properties?.find(w=>w.name==="derivationPath"),m=h?.value.selection==="single",S=i(async(w,v)=>{m&&await p(d),g&&v?.shouldAskForDerivationPath?s(w):await l(d,[{namespace:w,network:"",derivationPath:v?.derivationPath??void 0}])},"handleConnectNamespace"),T=i(async w=>{await p(d,[w])},"handleDisconnectNamespace"),y=i(()=>m?me.createElement(me.Fragment,null,me.createElement(kn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(Ck,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:ar.t("This wallet can only connect to one chain at a time.")}),me.createElement(kn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(kn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(md,null,me.createElement(kk,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:f.connecting||!f.connected,onClick:a},ar.t("Disconnect wallet"))),me.createElement(kn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),k=i(w=>{if(w.unsupported)return me.createElement(wi,{namespace:w});let v=o?.find(E=>E.namespace===w.value),x=f.namespaces?.get(w.value);if(!x)throw new Error(`State for ${w.value} was not found!`);let A=m&&f.connecting;return me.createElement(fd,{namespace:w,initialConnect:!!v,disabled:A,state:x,handleConnect:async E=>S(w.value,{derivationPath:v?.derivationPath,shouldAskForDerivationPath:E?.shouldAskForDerivationPath}),handleDisconnect:async()=>T(w.value)})},"renderNamespaceItem");return me.createElement(me.Fragment,null,me.createElement(vk,{type:"info",title:ar.t("Connect {wallet}",{wallet:c.title}),description:ar.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:me.createElement(Ek,null,me.createElement(wk,{src:c.image,size:45}))}),y(),me.createElement(Ei,{id:"widget-detached-namespace-list"},c.needsNamespace?.data.map((w,v,x)=>me.createElement(me.Fragment,{key:w.id},k(w),v!==x.length-1&&me.createElement(kn,{size:10})))),me.createElement(kn,{size:20}),me.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},r))}i(sr,"Detached");import{i18n as wn}from"@lingui/core";import{Divider as Nk,Image as Wk,MessageBox as Pk,Select as Lk,TextField as Bk}from"@rango-dev/ui";import xt,{useEffect as _k,useState as hd}from"react";import{namespaces as xk}from"@rango-dev/wallets-shared";var bi={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Ls(t){let e=t?xk[t]?.derivationPaths:null;return e?[...e,bi]:[]}i(Ls,"getDerivationPaths");import{Button as Ik,styled as Bs,Typography as Ak}from"@rango-dev/ui";var gd=Bs("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),_s=Bs(Ak,{paddingLeft:"$10"}),Ms={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},R_=Bs(Ik,{minHeight:"$40"});var yd="0";function lr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=hd(null),[c,l]=hd(yd),p=a===bi.id,u=Ls(o),d=i(({value:h})=>{let g=u?.find(m=>m.id===h);g&&(a===bi.id&&Number.isNaN(Number(c))&&l(yd),s(g.id))},"handleDerivationPathItemClick"),f=i(()=>{let h=u.find(g=>g.id===a);if(h)e(h.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return _k(()=>{s(Ls(o)[0]?.id||null)},[o]),xt.createElement(xt.Fragment,null,xt.createElement(Pk,{type:"info",title:wn.t("Select Derivation Path"),description:wn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:xt.createElement(Wk,{src:n,size:45})}),xt.createElement(gd,{className:"_derivation_path_inputs_container"},xt.createElement(_s,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},wn.t("Choose Derivation Path Template")),xt.createElement(Lk,{id:"widget-derivation-path-template-select",value:a||"",options:u.map(h=>({value:h.id,label:h.label})),variant:"filled",handleItemClick:d,styles:{trigger:Ms}}),xt.createElement(Nk,{size:20}),xt.createElement(_s,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},p?wn.t("Enter Path"):wn.t("Enter Index")),xt.createElement(Bk,{id:"widget-derivation-path-template-input",type:p?"text":"number",variant:"contained",value:c,onChange:h=>l(h.target.value),style:Ms})),xt.createElement(Sn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:f,disabled:!u||!a||!c},wn.t("Confirm")))}i(lr,"DerivationPath");import{i18n as vn}from"@lingui/core";import{Image as $k,MessageBox as $s,WalletImageContainer as Fk,WalletState as Ok}from"@rango-dev/ui";import{useWallets as Uk}from"@rango-dev/wallets-react";import Oo from"react";import{keyframes as Mk,styled as Ds}from"@rango-dev/ui";var pM=Ds("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Sd=Ds("div",{position:"relative"}),Dk=Mk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Td=Ds("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Dk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function Fs(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a,getWalletInfo:s}=Uk();return Zn(s(n),a(n))===Ok.CONNECTED?Oo.createElement($s,{type:"success",title:vn.t("Wallet Connected"),description:vn.t("Your wallet is connected, you can use it to swap.")}):o?Oo.createElement($s,{type:"error",title:vn.t("Failed to Connect"),description:o||vn.t("Your wallet is not connected. Please try again.")}):Oo.createElement($s,{type:"loading",title:vn.t("Connecting to your wallet"),description:vn.t("Click connect in your wallet popup."),icon:Oo.createElement(Sd,null,Oo.createElement(Fk,null,Oo.createElement($k,{src:r,size:45})),Oo.createElement(Td,null))})}i(Fs,"ConnectStatus");function Cd(t,e){return t().status==="init"&&!!e}i(Cd,"isOnStatus");function cr(t){return t().status==="namespace"}i(cr,"isOnNamespace");function pr(t){return t().status==="derivationPath"}i(pr,"isOnDerivationPath");function Wo(t){return t().status==="detached"}i(Wo,"isOnDetached");var qk=3e3,Gk=300;function ur(t){let e=Qk(),[o,n]=kd(!1),[r,a]=kd(),s=i(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=bt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:f,handleDisconnect:h}=an(),g=i(v=>{u(t.wallet,v).then(k).catch(s)},"handleConfirmNamespaces"),m=i(()=>{T()},"handleDetachedConfirm"),S=i(v=>{if(!v)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(t.wallet,v).then(k).catch(s)},"handleDerivationPathConfirm"),T=i(()=>{n(!1)},"handleClosingModal"),y=i(()=>{a(void 0),f(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((v,x)=>{let A=v.status==="connected",E=["disconnected","disconnected-unhandled"].includes(v.status);A?(t.onConnect?.(),x||(e.current=setTimeout(T,qk))):E&&T()},"afterConnected"),w=i(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return Hk(()=>{if(t.wallet){y();let v=!1,x=!0;i(()=>{setTimeout(()=>{x=!1,v||n(!0)},Gk)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","Detached","derivation-path"].includes(E.status)||(v=!0),k(E,x)}).catch(s)}},[t.wallet]),mo.createElement(re,{id:t.id,open:o,onClose:T,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},Cd(d,t.wallet)&&mo.createElement(mo.Fragment,null,mo.createElement(Fs,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),mo.createElement(zk,{direction:"vertical",size:32})),cr(d)&&mo.createElement(ir,{onConfirm:g,value:d().namespace}),pr(d)&&mo.createElement(lr,{onConfirm:S,value:d().derivationPath}),Wo(d)&&mo.createElement(sr,{onConfirm:m,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}i(ur,"StatefulConnectModal");import es from"react";import Vk,{Fragment as Kk}from"react";import{MemoryRouter as jk,useInRouterContext as Xk}from"react-router";function xi({children:t}){let o=Xk()?Kk:jk;return Vk.createElement(o,null,t)}i(xi,"AppRouter");import{I18nManager as Q0}from"@rango-dev/ui";import Np from"react";import ze from"react";import{useRoutes as k0}from"react-router-dom";var $={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 bn,useRef as Bi}from"react";import at from"bignumber.js";import{create as em}from"zustand";import{subscribeWithSelector as tm}from"zustand/middleware";import{createContext as Yk,useContext as Zk}from"react";var wd=Yk({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=Zk(wd);return{swapMode:t,isMultiMode:e}}i(rt,"useSwapMode");import{i18n as wt}from"@lingui/core";import{getRelatedWalletOrNull as ew,RouteEventType as kD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as dr}from"rango-types";import{i18n as qe}from"@lingui/core";var ie=i(()=>({genericServerError:qe.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:qe.t("Please reset your liquidity sources."),description:qe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:qe.t("No Routes Found."),description:qe.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:qe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:qe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:qe.t("High Price Impact"),title:qe.t("Price impact is too high!"),description:qe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:qe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:qe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:qe.t("USD Price Unknown"),title:qe.t("USD Price Unknown, Cannot calculate Price Impact."),description:qe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:qe.t("Confirm USD Price Unknown")}}),"errorMessages");function vd(t){return t.type===0?t.diagnosisMessage??ie().noResultError.title:t.type===1?t.diagnosisMessage??ie().genericServerError:""}i(vd,"getQuoteErrorMessage");import{i18n as Ii}from"@lingui/core";var Uo=i(()=>({connectWallet:Ii.t("Connect Wallet"),swap:Ii.t("Swap"),swapAnyway:Ii.t("Swap anyway"),ethWarning:Ii.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Os(t,e){return{"Network Fee":e("Network Fee"),"Swapper Fee":e("Protocol Fee"),"Affiliate Fee":e("Affiliate Fee"),"Outbound network fee":e("Outbound Fee"),"Rango Fee":e("Rango Fee")}[t]}i(Os,"getFeeLabel");var Us=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],Ed=100,bd=30,xd=15,Id=60;var Ad=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Nd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as Rk}from"@rango-dev/queue-manager-rango-preset";import sD from"bignumber.js";function Pd(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(Pd,"getRequiredBalanceOfWallet");function Zt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Zt,"getPriceImpactLevel");function Ai(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=Rk(t.steps);if(!r||!n)return{fromBlockchain:null,fromToken:void 0,toBlockchain:null,toToken:void 0,inputAmount:""};let s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},c=Po(a?a.toBlockchain:n.fromBlockchain,e),l=Po(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(Ai,"createRetryQuote");function En(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=zo(o),s=it(o);if(o&&a&&s){let p=Yt(a.toString(),s.toString());if(!!p&&Dd(a,p)){let d=Wi(o?.swaps,n),f=Zt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:f}}}if(e&&Od(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Yt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=Pi(o.swaps),l=r>un;if(Fd(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:$d(o,r),minRequiredSlippage:c};return null}i(En,"generateQuoteWarnings");function Ld(t){return![4].includes(t.type)}i(Ld,"isQuoteWarningConfirmationRequired");function Yt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:zs(t.toString(),e.toString());return n&&n<0?n:null}i(Yt,"getPriceImpact");var Bd=i(t=>{let e=new Set,o=[];return t.forEach(n=>{e.has(n.from.chain.displayName)||(e.add(n.from.chain.displayName),o.push(n.from.chain)),e.has(n.to.chain.displayName)||(e.add(n.to.chain.displayName),o.push(n.to.chain))}),o},"getUniqueBlockchains"),Ni=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"),_d=i((t,e,o)=>{let n=e[0];if(!e.length||!n)return null;if(!t)return{requestAmount:o,validationStatus:null,...n};let r=new Set(t.swaps.map(s=>s.swapperId)),a=e.find(s=>{let c=new Set(s.swaps.map(l=>l.swapperId));return Array.from(r).every(l=>c.has(l))});return{requestAmount:o,validationStatus:null,...a||n}},"getDefaultQuote"),Md=i(t=>{let e=i((o,n)=>{let r=Us.indexOf(o.value),a=Us.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Dd(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return Ad.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Ge(r)))}i(Dd,"hasHighValueLoss");function Ud(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(Ud,"hasLimitError");function zd(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];if(!e)return{swap:void 0,fromAmountRangeError:"",recommendation:""};let 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:M(o,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=wt.t({id:"Required: > {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=wt.t({id:"Required: <= {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=wt.t({id:"Required: < {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(zd,"getLimitErrorMessage");function Hd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:Uo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!r||r==="0"?{title:Uo().swap,action:"confirm-swap",disabled:!0}:s?{title:Uo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:Uo().ethWarning,action:"confirm-warning",disabled:!1}:{title:Uo().swap,action:"confirm-swap",disabled:!1}:{title:Uo().connectWallet,action:"connect-wallet",disabled:!1}}i(Hd,"getSwapButtonState");function Hs(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(ue))&&e&&e!=="0"&&n!==0)}i(Hs,"canComputePriceImpact");function Qs(t,e){let o=ue;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(!r||r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Ge(r.amount).multipliedBy(a||0))}return o}i(Qs,"getUsdFeeOfStep");function Wi(t,e){return t.reduce((o,n)=>o.plus(Qs(n,e)),ue)}i(Wi,"getTotalFeeInUsd");function qs(t){let e=ue,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}i(qs,"getUsdFee");function Qd(t){return t.reduce((e,o)=>e.plus(qs(o)),ue)}i(Qd,"getTotalFeesInUsd");function qd(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(qd,"getFeesGroup");function Gd(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(Gd,"checkSlippageErrors");function $d(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($d,"checkSlippageWarnings");function Pi(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(Pi,"getMinRequiredSlippage");function Fd(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Fd,"hasProperSlippage");function Vd(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:c,excludeLiquiditySources:l,slippage:p,affiliateRef:u,affiliatePercent:d,affiliateWallets:f,destination:h,contractCall:g}=t,m=a?.reduce((y,k)=>(y[k.chain]=k.address,y),{}),S=[];return r?.forEach(y=>{S.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:d??void 0,affiliateWallets:f??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:S,selectedWallets:m??{},slippage:p.toString(),contractCall:g,...h&&{destination:h},...l&&{swapperGroups:s.concat(c??[]),swappersGroupsExclude:!0},...!l&&{swapperGroups:c?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i(Vd,"createQuoteRequestBody");function Kd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}i(Kd,"getWalletsForNewSwap");function zo(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}i(zo,"getUsdInputFrom");function it(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(it,"getUsdOutputFrom");function zs(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(Ed).toNumber()}i(zs,"getPercentageChange");function Od(t,e){let o=zo(t),n=it(t),r=it(e);if(!o||!n||!r)return!1;let a=zs(n.toString(),r.toString());return Nd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}i(Od,"isOutputAmountChangedExcessively");function jd(t,e,o){let n=t.validationStatus,r=Mo({filter:"required",quote:t});return e.sort((s,c)=>r.indexOf(s.chain)-r.indexOf(c.chain)).flatMap(s=>Pd(s,n)||[]).filter(s=>!s.ok).map(s=>{let c=s.asset.symbol,l=M(new Ge(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=M(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:Tt(s.asset.blockchain,o)}})})}i(jd,"generateBalanceWarnings");function mr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==dr.NetworkChanged}i(mr,"isNetworkStatusInWarningState");function Xd(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,"")),mr(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let p=(e?ew(t,e):null)?.walletType,u=p?o?.(p)?.name:null;switch(e?.networkStatus){case dr.WaitingForConnectingWallet:r=u?wt.t("Connect {wallet}",{wallet:u}):r;break;case dr.WaitingForQueue:r=r||wt.t("Waiting for other running tasks to be finished");break;case dr.WaitingForNetworkChange:r=r||wt.t("Waiting for changing wallet network");break;case dr.NetworkChangeFailed:r=r||wt.t("The network switch could not be completed. Please try again, or switch the network manually in your wallet.");break;default:r=r||"";break}}a=a||"",r=r||"";let c=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:c}}}i(Xd,"getSwapMessages");function Yd(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(Yd,"getLastConvertedTokenInFailedSwap");function Zd(t){return t.status==="failed"}i(Zd,"shouldRetrySwap");function Jd(t,e,o,n,r,a){if(!n||t)return!0;let s=Mo({filter:"all",quote:n}),c=Mo({filter:"required",quote:n}),l=s.every(d=>r.some(f=>f.chain===d)),p=c.every(d=>r.some(f=>f.chain===d)),u=o&&a?Lo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}i(Jd,"isConfirmSwapDisabled");function Rd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Rd,"isTokensIdentical");var Li=i((t,e)=>t?.usdPrice?new at(e||ue).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),om=i(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new at(0),outputUsdValue:new at(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=ue,a=o.inputUsdValue;return Yn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=zo(e)??ue,r=it(e)??ue),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new at(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new at(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new at(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:Li(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 at(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=ku(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=yu(e);ai(e)||(o=du(o),o=mu(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new at(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Li(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:Li(n??null,s),outputUsdValue:new at(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?Li(e.toToken,e.outputAmount?.toString()||""):new at(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new at(0),inputUsdValue:new at(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new at(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})}),"initializer"),nm=em()(tm(om)),rm=em()(tm(om)),tw=uo(nm),ow=uo(rm);function z(){let{swapMode:t}=rt();return uo(t==="refuel"?rm:nm)}i(z,"useQuoteStore");var im=i((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ge.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&&ge.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})},"subscribeCallback"),am=tw.subscribe(im),sm=ow.subscribe(im);function lm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=C().config,d=C().fetchStatus,f=C().blockchains(),{findToken:h}=C(),{setAffiliateRef:g,setAffiliatePercent:m,setAffiliateWallets:S}=C(),T=u?.from?.tokens,y=u?.from?.blockchains,k=u?.to?.tokens,w=u?.to?.blockchains,v=Bi(void 0),x=Bi(void 0),A=Bi(void 0),E=Bi(void 0);bn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),bn(()=>{if(d==="success"){r();let I=f.find(N=>N.name===u?.from?.blockchain),b=u?.from?.token,L=b&&h(b);(I||!I&&A.current)&&n(I??null),L?a({token:L,meta:{blockchains:f}}):!L&&v.current&&a({token:null}),A.current=u?.from?.blockchain,v.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,d]),bn(()=>{Ss(s,T)&&a({token:null}),Ts(l,y)&&n(null)},[T,y]),bn(()=>{Ss(c,k)&&a({token:null}),Ts(p,w)&&o(null)},[k,w]),bn(()=>{if(d==="success"){r();let I=f.find(N=>N.name===u?.to?.blockchain),b=u?.to?.token,L=b&&h(b);(I||!I&&E.current)&&o(I??null),L?e({token:L,meta:{blockchains:f}}):!L&&x.current&&e({token:null}),E.current=u?.to?.blockchain,x.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),bn(()=>{g(u?.affiliate?.ref??null),m(u?.affiliate?.percent??null),S(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(lm,"useSyncStoresWithConfig");import{useEffect as Ks,useRef as nw}from"react";import{useInRouterContext as rw,useLocation as iw,useSearchParams as aw}from"react-router-dom";function Gs(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}i(Gs,"convertTokenSearchParamToAsset");function Vs(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Vs,"tokenToSearchParam");function Xs(){let t=iw(),[e,o]=aw(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:f}=z()(),h=C().fetchStatus,g=C().blockchains(),m=rw(),{updateIframe:S,updateCampaignMode:T}=C(),y=C().isInCampaignMode(),k=nw(),{findToken:w}=C(),v=i(()=>{let A={};for(let[P,Z]of e.entries())(P.startsWith("utm_")||P.startsWith("privy_"))&&(A[P]=Z);let E=e.get("fromAmount"),I=e.get("fromBlockchain"),b=e.get("fromToken"),L=e.get("toBlockchain"),N=e.get("toToken"),O=e.get("autoConnect"),q=e.get("clientUrl"),j=e.get("liquiditySources"),ee=e.get("blockchain");return{fromAmount:E,fromBlockchain:I,fromToken:b,toBlockchain:L,toToken:N,autoConnect:O,clientUrl:q,liquiditySources:j,extraQueryParams:A,blockchain:ee}},"getUrlSearchParams"),x=i(A=>{for(let E in A)A[E]||delete A[E];o(A,{replace:!0})},"updateUrlSearchParams");Ks(()=>{let{autoConnect:A,clientUrl:E,extraQueryParams:I,blockchain:b}=v();m&&h==="success"&&x({fromBlockchain:n?.name,fromToken:Vs(a),toBlockchain:r?.name,toToken:Vs(s),fromAmount:c,autoConnect:A??void 0,clientUrl:E??void 0,blockchain:b??void 0,liquiditySources:y?k.current:void 0,...I})},[t.pathname,c,n,a,r,s,y,h]),Ks(()=>{if(!m)return;let A=v();if(!k.current&&A.liquiditySources&&(k.current=A.liquiditySources),A.fromAmount&&f(A.fromAmount),h==="success"){let E=g.find(q=>q.name===A.fromBlockchain),I=A.fromToken&&E&&Gs(A.fromToken,E),b=I?w(I):void 0,L=g.find(q=>q.name===A.toBlockchain),N=A.toToken&&L&&Gs(A.toToken,L),O=N?w(N):void 0;E&&(l(E),b&&u({token:b,meta:{blockchains:g}})),L&&(p(L),O&&d({token:O,meta:{blockchains:g}}))}},[h]),Ks(()=>{let{clientUrl:A,liquiditySources:E}=v();S("clientUrl",A||void 0),T("liquiditySources",E?.split(",")??void 0)},[])}i(Xs,"useSyncUrlAndStore");import{i18n as An}from"@lingui/core";import{Alert as Iv,Button as Av,darkTheme as Nv,Divider as bl,DoneIcon as Wv,styled as Pv,TextField as Lv,Typography as Bv}from"@rango-dev/ui";import Ke,{useState as _v}from"react";import{useNavigate as Mv,useSearchParams as Dv}from"react-router-dom";import{ChevronRightIcon as sw,Divider as mm,Image as lw,Typography as fm}from"@rango-dev/ui";import It from"react";import{darkTheme as cm,styled as Ys}from"@rango-dev/ui";var pm=Ys("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${cm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${cm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),um=Ys("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),dm=Ys("div",{display:"flex"});function Zs(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return It.createElement(um,null,It.createElement(fm,{size:"large",variant:"label"},n),It.createElement(mm,{size:10}),It.createElement(pm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},It.createElement(dm,null,r&&It.createElement(It.Fragment,null,It.createElement(lw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),It.createElement(mm,{size:4,direction:"horizontal"})),It.createElement(fm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),It.createElement(sw,{size:12,color:"black"})))}i(Zs,"BlockchainSelectorButton");import{i18n as tl}from"@lingui/core";import{Button as hw,Divider as Tm,MessageBox as yw}from"@rango-dev/ui";import fo,{useEffect as Cm,useState as ol}from"react";import{i18n as _i}from"@lingui/core";import{Divider as Ho,ExternalLinkIcon as uw,Image as dw,InfoIcon as mw,Tooltip as fw,Typography as gr}from"@rango-dev/ui";import fe from"react";var gm="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as cw,darkTheme as xn,styled as fr,Typography as pw}from"@rango-dev/ui";var Js=fr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),hm=fr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${xn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}}}),Rs=fr(cw,{minHeight:"$40"}),ym=fr(pw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),Sm=fr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var gw=9;function el(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,c=n.address?ti({contractAddress:n.address,blockchainMeta:s}):void 0,l=i(()=>window.open(gm,"_blank"),"onClickLearnMore");return fe.createElement(re,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:r,container:W()},fe.createElement(hm,null,fe.createElement(dw,{src:n.image===""?ni:n.image,size:45,type:"circular"}),fe.createElement(Ho,{size:4}),fe.createElement(Sm,null,fe.createElement(ym,{variant:"title",size:"medium"},n.symbol),n.symbol.length>gw&&fe.createElement(fw,{content:n.symbol,container:W()},fe.createElement(mw,{size:12,color:"gray"}))),fe.createElement(gr,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),fe.createElement(Ho,{size:4}),fe.createElement(gr,{variant:"body",size:"medium"},c?fe.createElement(Js,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(uw,{size:12,color:"gray"})):fe.createElement(Js,null,n.address)),fe.createElement(Ho,{size:4}),n.coinSource&&fe.createElement(gr,{className:"_coin-source",variant:"body",size:"xsmall"},_i.t("via")," ",fe.createElement(gr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Ho,{size:"32"}),fe.createElement(gr,{size:"medium",variant:"body",className:"_custom-token-description"},_i.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."))),fe.createElement(Ho,{size:40}),fe.createElement(Ho,{size:10}),fe.createElement(Rs,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},_i.t("Import Anyway")),fe.createElement(Ho,{size:10}),fe.createElement(Rs,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},_i.t("Learn More")))}i(el,"CustomTokenModal");function hr(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=C(),[d,f]=ol(!1),[h,g]=ol(!1),[m,S]=ol(!1),T=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),f(!1)},"closeErrorModal"),k=i(()=>{S(!0),y()},"handleErrorModalButtonClick"),w=i(()=>{m&&n?.type==="network-error"&&(S(!1),T()),l()},"handleExit"),v=i(()=>{e&&(u(e),c())},"handleSubmit");return Cm(()=>{n&&f(!0)},[n]),Cm(()=>{o&&e&&g(!0)},[o,e]),fo.createElement(fo.Fragment,null,fo.createElement(re,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},fo.createElement(yw,{title:n?.title??"",type:"error",description:n?.message||tl.t("Failed Network, Please retry.")},fo.createElement(Tm,{size:40}),fo.createElement(Tm,{size:10}),fo.createElement(hw,{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"?tl.t("Retry"):tl.t("Add another custom token")))),o&&e&&fo.createElement(el,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}i(hr,"ImportCustomToken");import{useManager as kv}from"@rango-dev/queue-manager-react";import{BottomLogo as wv,Divider as ef,Header as vv}from"@rango-dev/ui";import Pe,{useEffect as qi,useLayoutEffect as Ev,useRef as tf,useState as of}from"react";import{useRef as Sw}from"react";function Mi(){return window.self!==window.top}i(Mi,"isAppLoadedIntoIframe");function nl(){let t=Sw(null),{iframe:e}=C(),o=Mi()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(c=>{for(let l of c)n({type:"widget_height",data:{height:l.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(nl,"useIframe");import{useNavigate as Tw}from"react-router-dom";function Ve(){let t=Tw();return()=>t(-1)}i(Ve,"useNavigateBack");import{createTheme as pl,darkTheme as Lw,lightTheme as Bw}from"@rango-dev/ui";import{useEffect as _w,useState as Mw}from"react";import{theme as Ww,darkColors as Pw}from"@rango-dev/ui";import ll from"react";var Di=16,$i=255,km=.11;function Cw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(Cw,"expandShortHexColor");function kw(t,e){return t.padStart(e,"0")}i(kw,"pad");function rl(t){let e=Math.min(Math.max(Math.round(t),0),$i);return kw(e.toString(Di),2)}i(rl,"intToHex");function ww(t){return`#${rl(t.red)}${rl(t.green)}${rl(t.blue)}`}i(ww,"rgbToHex");function vw(t){let e=parseInt(t.slice(1,3),Di),o=parseInt(t.slice(3,5),Di),n=parseInt(t.slice(5,7),Di);return{red:e,green:o,blue:n}}i(vw,"hexToRGB");function Ew(t,e){let o=1-km*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(Ew,"generateShade");function bw(t,e){let o=km*e;return{red:t.red+($i-t.red)*o,green:t.green+($i-t.green)*o,blue:t.blue+($i-t.blue)*o}}i(bw,"generateTint");function xw(t){return wm(t,Ew)}i(xw,"calculateShades");function Iw(t){return wm(t,bw)}i(Iw,"calculateTints");function wm(t,e){let o=vw(t),n=[];for(let r=1;r<9;r++)n.push(ww(e(o,r)));return n}i(wm,"calculateColors");function il(t,e,o){let a=Iw(t).reverse().concat(t),s=xw(t),c=a.concat(s),l={},p=c.length;for(let u=0;u<p;u++){let d=100+(o?p-1-u:u)*50,f=c[u];f&&(l[`${e}${d}`]=f)}return l}i(il,"createTintsAndShades");function al(t,e,o){let n={...t};for(let r in e){let a=e[r],s=r==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(r)&&!Tu(r)){let l=Cw(a);Object.assign(n,il(l,r,s))}}return{...n,...e}}i(al,"expandToGenerateThemeColors");var vm=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Aw=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=vm(o%52)+e;return vm(o%52)+e},"toAlphabeticName"),Nw=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),sl=i(t=>Aw(Nw(5381,JSON.stringify(t))>>>0),"toHash");function cl(t){let e=Ww.colors,o={...e,...Pw},n,r;if(t?.light){let s={colors:al(e,t.light)};n={id:`${ys}-light-${sl(s)}`,tokens:s}}if(t?.dark){let s={colors:al(o,t.dark,{reverseNeutralRange:!0})};r={id:`${ys}-dark-${sl(s)}`,tokens:s}}return{light:n,dark:r}}i(cl,"customizedThemeTokens");function Em(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>ll.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(ll.cloneElement(a,{key:s})),r<t.length-1){let c=`divider-${r}`;o.push(ll.cloneElement(e,{key:c}))}}),o}i(Em,"joinList");function bm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(bm,"doesWindowPreferDarkColorScheme");function go(t){let{colors:e,fontFamily:o=tu,borderRadius:n=Pu,secondaryBorderRadius:r=Lu}=t,[a,s]=Mw(bm()?"dark":"light"),{theme:c}=C(),{dark:l,light:p}=cl(e),u=pl({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),d=[u.className,Bw.className],f=[u.className,Lw.className];if(p){let g=pl(p.id,p.tokens);d.push(g.className)}if(l){let g=pl(l.id,l.tokens);f.push(g.className)}return _w(()=>{let g=i(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return bm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:i(()=>{let g=d.join(" "),m=f.join(" ");return c==="auto"?a==="dark"?m:g:c==="dark"?m:g},"getActiveTheme"),mode:c==="auto"?a:c}}i(go,"useTheme");var vt=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as xm}from"@lingui/core";import{Alert as Dw,Button as $w}from"@rango-dev/ui";import Im from"react";function ul(t){return Im.createElement(Dw,{action:Im.createElement($w,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},xm.t("Activate this tab")),type:"warning",variant:"alarm",title:xm.t("Another tab is open and handles transactions.")})}i(ul,"ActivateTabAlert");import{i18n as dl}from"@lingui/core";import{Button as Fw,Divider as Ow,MessageBox as Uw}from"@rango-dev/ui";import Fi from"react";function ml(t){let{open:e,onClose:o,onConfirm:n}=t;return Fi.createElement(re,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},Fi.createElement(Uw,{title:dl.t("Activate current tab"),type:"warning",description:dl.t("Currently, some transactions are running and being handled by other browser tab. If you activate this tab, all transactions that are already in the transaction sign step will expire.")},Fi.createElement(Ow,{size:20}),Fi.createElement(Fw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},dl.t("Confirm"))))}i(ml,"ActivateTabModal");import{ChevronLeftIcon as Qw}from"@rango-dev/ui";import Mm from"react";import{css as zw,darkTheme as Am,IconButton as Hw,styled as Qo}from"@rango-dev/ui";var $t=Qo(Hw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Am} &`]:{backgroundColor:"$neutral"}}}),Nm=Qo("div",{position:"absolute",background:"$secondary500",[`.${Am} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),ho=Qo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Wm=Qo("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),Pm=Qo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Lm=Qo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Bm=zw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),_m=Qo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function fl(t){return Mm.createElement($t,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Mm.createElement(Qw,{color:"black",size:16}))}i(fl,"BackButton");import{i18n as qw}from"@lingui/core";import{Button as Gw,Typography as Vw}from"@rango-dev/ui";import gl from"react";function hl(t){return gl.createElement(ho,null,gl.createElement(Gw,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},gl.createElement(Vw,{variant:"label",size:"medium",color:"error500"},qw.t("Cancel"))))}i(hl,"CancelButton");import{i18n as Kw}from"@lingui/core";import{Image as jw,Tooltip as Xw,WalletIcon as Yw,WalletState as Dm}from"@rango-dev/ui";import qo from"react";function yl(t){let{list:e}=bt(),o=e.filter(r=>r.state===Dm.CONNECTED||r.state===Dm.PARTIALLY_CONNECTED),n=o.length?qo.createElement("div",{className:Bm()},o.map(r=>qo.createElement(_m,{key:r.title},qo.createElement(jw,{src:r.image,size:14})))):Kw.t("Connect Wallet");return qo.createElement(Xw,{container:t.container,side:"bottom",content:n},qo.createElement($t,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&qo.createElement(Nm,null),qo.createElement(Yw,{size:18,color:"black"})))}i(yl,"WalletButton");import{i18n as Ui}from"@lingui/core";import{NotificationsIcon as dv,Popover as mv,SettingsIcon as fv,Tooltip as zi,TransactionIcon as gv}from"@rango-dev/ui";import _e from"react";import{Notifications as ev}from"@rango-dev/ui";import tv from"react";import{useNavigate as ov}from"react-router-dom";import{create as Zw}from"zustand";import{persist as Jw,subscribeWithSelector as Rw}from"zustand/middleware";var We=uo(Zw()(Jw(Rw((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1];if(!r||!a)return;let s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},c=e().notifications.filter(l=>l.requestId!==n.requestId);t(()=>({notifications:[...c,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(l=>l.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function Sl(){let t=ov(),{getNotifications:e,clearNotifications:o}=We(),n=e(),r=C().blockchains(),{findToken:a}=C();return tv.createElement(ev,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>Qp(c,r),getTokenImage:c=>a(c)?.image,onClickItem:i(c=>{t(`${$.swaps}/${c}`)},"onClickItem"),onClearAll:o})}i(Sl,"NotificationContent");import{useManager as nv}from"@rango-dev/queue-manager-react";import{InProgressIcon as rv}from"@rango-dev/ui";import $m from"react";var iv=i(()=>{let{manager:t}=nv();return vt(t).map(({swap:o})=>o).find(o=>o.status==="running")?$m.createElement(Lm,{id:"widget-header-history-badge-container"},$m.createElement(rv,{color:"info",size:6})):null},"InProgressTransactionBadge"),Fm=iv;import{EventSeverity as av}from"@rango-dev/queue-manager-rango-preset";import{Typography as sv}from"@rango-dev/ui";import Om from"react";function Um(){let{getNotifications:t}=We(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===av.WARNING);return o?Om.createElement(Wm,{isSever:n},Om.createElement(sv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}i(Um,"NotificationsBadge");import{RefreshProgressButton as lv}from"@rango-dev/ui";import Tl,{useEffect as cv,useState as zm}from"react";var pv=1e3,Hm=60,uv=100;function Oi({onClick:t}){let[e,o]=zm(0),[n,r]=zm(!1),a=i(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");cv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Hm&&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 Tl.createElement($t,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},Tl.createElement(Pm,{onTransitionEnd:()=>r(!1),isRefetched:n},Tl.createElement(lv,{size:22,color:t?"black":"gray",progress:e/Hm*uv})))}i(Oi,"RefreshButton");function Go(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=C(),c=nt("notification",s)||r.includes("notifications");return _e.createElement(_e.Fragment,null,!r.includes("refresh")&&_e.createElement(zi,{container:a||W(),side:"top",content:Ui.t("Refresh")},_e.createElement(Oi,{onClick:e})),!c&&_e.createElement(mv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(Sl,null)},_e.createElement("div",null,_e.createElement(zi,{container:W(),side:"top",content:Ui.t("Notifications")},_e.createElement($t,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(dv,{size:18,color:"black"}),_e.createElement(Um,null))))),!r.includes("settings")&&_e.createElement(zi,{container:W(),side:"top",content:Ui.t("Settings")},_e.createElement($t,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},_e.createElement(fv,{size:18,color:"black"}))),!r.includes("history")&&_e.createElement(zi,{container:W(),side:"top",content:Ui.t("History")},_e.createElement($t,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(gv,{size:18,color:"black"}),_e.createElement(Fm,null))))}i(Go,"HeaderButtons");import{i18n as Cl}from"@lingui/core";import{Divider as qm,MessageBox as Sv,RefreshIcon as Tv}from"@rango-dev/ui";import In from"react";import{Button as hv,styled as yv}from"@rango-dev/ui";var Qm=yv(hv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function kl(t){let{open:e,onClose:o}=t;return In.createElement(re,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},In.createElement(Sv,{title:Cl.t("Something went wrong"),type:"error",description:Cl.t("Something went wrong. Please refresh the app.")},In.createElement(qm,{size:30}),In.createElement(Qm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},In.createElement(Tv,{size:20,color:"primary"}),In.createElement(qm,{size:4,direction:"horizontal"}),Cl.t("Refresh"))))}i(kl,"RefreshModal");var Gm="700px",Vm="425px",Km="550px",jm="640px",Xm="800px";function wl(t){let e=t.target;if(e){let o=e.scrollTop,n=W();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(wl,"onScrollContentAttachStatusToContainer");import{css as Cv,styled as Hi}from"@rango-dev/ui";var Qi=Cv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Ym=Hi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:Gm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Vm,[`@media screen and (min-height: ${Xm})`]:{minHeight:Km}}},showBanner:{true:{overflow:"visible"}}}}),Zm=Hi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Jm=Hi("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"}}}),Rm=Hi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=nl(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=C(),[u,d]=of(!1),{config:{features:f,theme:h}}=C(),{watermark:g}=ne(),m=g==="FULL",{activeTheme:S}=go(h||{}),[T,y]=of(!1),k=nt("connectWalletButton",f),{isActiveTab:w,tabManagerInitiated:v,showActivateTabModal:x,setShowActivateTabModal:A,activateCurrentTab:E,setShowCompactTokenSelector:I}=ne(),b=Ve(),{manager:L}=kv(),O=vt(L).map(({swap:Y})=>Y).some(Y=>Y.status==="running"),q=i(()=>E($o.forceClaim,O),"onActivateTab"),j=i(()=>{r.onWallet?.()},"onConnectWallet"),ee=typeof r.hasBackButton>"u"||r.hasBackButton,P=tf(null),Z=tf(null);return qi(()=>{let Y=(p?.swapBoxBanner?.routes?.length??0)===0,ce=!!p?.swapBoxBanner?.routes?.some(Ee=>location.pathname.endsWith(Ee));y(!!p?.swapBoxBanner&&(Y||ce))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),qi(()=>(Mi()&&Z.current&&e(Z.current),()=>{o()}),[]),qi(()=>(P.current?.addEventListener("scroll",wl),()=>{P.current?.removeEventListener("scroll",wl)}),[]),qi(()=>{d(c==="failed")},[c]),Ev(()=>{if(!Z.current)return;let Y=new ResizeObserver(ce=>{for(let Ee of ce)Ee.contentRect&&I(Ee.contentRect.height<parseInt(jm))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Pe.createElement(Ym,{height:s,id:kt.SWAP_BOX_ID,className:`${S()} ${Qi()}`,ref:Z,showBanner:T},Pe.createElement(vv,{prefix:ee?Pe.createElement(fl,{onClick:()=>{b(),r.onBack?.()}}):null,title:r.title,suffix:Pe.createElement(Pe.Fragment,null,r.suffix,r.onWallet&&!k&&Pe.createElement(yl,{container:W(),onClick:j,isConnected:!!l?.length}),r.onCancel&&Pe.createElement(hl,{onClick:r.onCancel}))}),Pe.createElement(Zm,{ref:P},n),Pe.createElement(ml,{open:x,onClose:()=>A(!1),onConfirm:q}),Pe.createElement(Jm,null,Pe.createElement("div",{className:"footer__content"},v&&!w&&Pe.createElement("div",{className:"footer__alert"},Pe.createElement(ul,{onActivateTab:q}),Pe.createElement(ef,{size:10})),a),Pe.createElement(ef,{size:12}),Pe.createElement("div",{className:`footer__logo ${m?"logo__show":"logo__hidden"}`},Pe.createElement(wv,null))),T&&Pe.createElement(Rm,null,p?.swapBoxBanner?.element),Pe.createElement(kl,{open:u,onClose:()=>d(!1)}))}i(se,"Layout");import{styled as bv}from"@rango-dev/ui";var nf="$20 $20 $10 $20",vl=bv("div",{padding:nf,overflowY:"auto",flexGrow:1});import{styled as xv}from"@rango-dev/ui";var pe=xv("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 yo}from"@lingui/core";import{useState as El}from"react";function rf(){let[t,e]=El(!1),[o,n]=El(null),[r,a]=El(null),{findToken:s}=C(),c=C().customTokens(),l=i(()=>{a(null),e(!1),n(null)},"resetState");function p(d,f){switch(d){case"duplicated":return{type:d,title:yo.t("Duplicate Token"),message:yo.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:yo.t("Token Already Exists"),message:yo.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:yo.t("Token Not Found"),message:yo.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:f}})};case"network-error":return{type:d,title:yo.t("Network error"),message:yo.t("An error occurred while retrieving token data.")}}}return i(p,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:d,tokenAddress:f})=>{e(!0);try{if(c.some(T=>T.address?.toLowerCase()===f.toLowerCase())){let T=p("duplicated");n(T);return}let g=await dt().getCustomToken({blockchain:d,address:f});if(!g||!g.token||g.error){let T=p("not-found",d);n(T);return}let m=g.token;if(s({blockchain:m.blockchain,address:m.address,symbol:m.symbol})){let T=p("token-exist");n(T);return}return a({...m,warning:!0})}catch(h){if(h.code==="ERR_BAD_REQUEST"){let g=p("not-found",d);n(g);return}n(p("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:l}}i(rf,"useFetchCustomToken");var $v=Pv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${Nv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function af(){let t=Mv(),[e]=Dv(),o=Ve(),n=C().blockchains(),r=e.get("blockchain")||"",a=Po(r,n),[s,c]=_v(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:f}=rf(),h=!!a&&Lo(a,s),g=!a||!s||!h,m=i(()=>{a&&l({blockchain:r,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:An.t("Add Custom Token")}},Ke.createElement(pe,null,Ke.createElement($v,null,Ke.createElement("div",null,Ke.createElement(Zs,{onClick:()=>t($.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:An.t("Select chain"),placeholder:An.t("Select chain")}),Ke.createElement(bl,{size:"24"}),Ke.createElement(Bv,{size:"large",variant:"label"},An.t("Enter Address")),Ke.createElement(bl,{size:10}),Ke.createElement(Lv,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:An.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement(Wv,{color:"success",size:12}),onChange:S=>c(S.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(bl,{size:4}),Ke.createElement(Iv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement(Av,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:m},An.t("Import"))),Ke.createElement(hr,{token:p,blockchain:a??void 0,address:s,error:d??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{d?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:f,onExitImportModal:f})))}i(af,"AddCustomTokenPage");import{i18n as rc}from"@lingui/core";import{useManager as Cb}from"@rango-dev/queue-manager-react";import{Alert as kb,Button as wb,css as ac,Divider as ic,IconButton as Yg,styled as vb,Typography as Eb,WalletIcon as bb}from"@rango-dev/ui";import $e,{useEffect as Sa,useLayoutEffect as xb,useRef as Ib,useState as Ir}from"react";import{useNavigate as Ab}from"react-router-dom";import{i18n as Ko}from"@lingui/core";import{Alert as oE,BalanceErrors as nE,Button as Wf,ChevronLeftIcon as rE,Divider as Pl,MessageBox as iE,Typography as Ll}from"@rango-dev/ui";import ae,{useCallback as aE,useEffect as Yi,useMemo as sE,useState as Wn}from"react";import{useNavigate as lE}from"react-router-dom";import{i18n as Nl}from"@lingui/core";import{Alert as Hv,ChevronDownIcon as Qv,CloseIcon as qv,Divider as mf,IconButton as ff,PasteIcon as Gv,Typography as Vv,WalletIcon as Kv}from"@rango-dev/ui";import Me,{useEffect as gf,useRef as hf}from"react";import ji,{useRef as Uv}from"react";import*as Nn from"@radix-ui/react-collapsible";import{keyframes as sf,styled as Gi}from"@rango-dev/ui";var xl=300,Fv=sf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Ov=sf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),lf=Gi(Nn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Il=Gi(Nn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Vi=Gi(Nn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Fv} ${xl}ms ease-out`},false:{animation:`${Ov} ${xl}ms ease-out`}}}}),Ki=Gi("div",{transition:`all ${xl}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Xi(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Uv(null);return ji.createElement(lf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&ji.createElement(Il,{className:"collapsible_trigger",onClick:a},s),ji.createElement(Vi,{className:"collapsible_content",open:e},r),c==="bottom"&&ji.createElement(Il,{className:"collapsible_trigger",onClick:a},s))}i(Xi,"CustomCollapsible");import{darkTheme as cf,styled as Al,TextField as zv}from"@rango-dev/ui";var pf=Al("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),uf=Al(zv,{backgroundColor:"$neutral100"}),df=Al("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${cf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${cf} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function yf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=z()(),{config:s}=C(),c=C().blockchains(),l=Hp(e.name,c),p=hf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!r&&e&&!Lo(e,r),g=i(()=>{a("")},"handleClear"),m=i(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let k=await navigator.clipboard.readText();a(k),p?.current?.focus()}},"handlePaste"),S=i(()=>r?Me.createElement(ff,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(qv,{size:12,color:"gray"})):d?null:Me.createElement(ff,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},Me.createElement(Gv,{size:16})),"renderSuffix");gf(()=>{!!u&&r===null&&(a(u),o(!0))},[u]);let T=hf(null);return gf(()=>{if(!r){T.current=null;return}n&&Lo(e,r)&&T.current!==r&&(T.current=r,te({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[r,n,e]),Me.createElement(pf,null,Me.createElement(Xi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(df,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(Kv,{size:18,color:"info"}),Me.createElement(mf,{size:4,direction:"horizontal"}),Me.createElement(Vv,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Nl.t("Send to a different address"))),Me.createElement(Ki,{orientation:n?"up":"down"},Me.createElement(Qv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(uf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Nl.t("Enter {blockchainName} address",{blockchainName:l}),value:r||"",suffix:S(),onChange:y=>{let k=y.target.value;a(k)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(mf,{size:4}),Me.createElement(Hv,{variant:"alarm",type:"error",title:Nl.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(yf,"CustomDestination");import{css as jv,IconButton as Xv,SelectableWalletButton as Yv,styled as So}from"@rango-dev/ui";var Sf=So("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Tf=So("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Cf=So(Yv,{justifyContent:"center"}),kf=So("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),wf=So(Xv,{position:"absolute",left:"$20"}),vf=So("div",{paddingTop:"$20"}),Ef=jv({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),bf=So("div",{display:"flex"}),xf=So("div",{overflow:"visible",width:"100%"});import{i18n as If}from"@lingui/core";import{warn as Zv}from"@rango-dev/logging-core";import{makeInfo as Jv,SelectableWallet as Rv,Typography as Af,WalletState as yr}from"@rango-dev/ui";import Vo,{useEffect as eE,useState as Nf}from"react";var tE=7;function Wl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,c=ne.use.isActiveTab(),{connectedWallets:l}=C(),[p,u]=Nf(),{list:d}=bt({chain:e}),[f,h]=Nf(d),g=d.length,m=a&&g-a>0;return eE(()=>{h(S=>{let T=d.findIndex(y=>n(y.type,e));return m&&T>1?[d[T]].concat(d.filter((y,k)=>k!==T)):S.map(y=>d.find(k=>k.type===y.type)??y)})},[JSON.stringify(d)]),Vo.createElement(Vo.Fragment,null,f.slice(0,a).map(S=>{let T=xu({connectedWallets:l,walletType:S.type,chain:e}),y=S.state===yr.CONNECTED||S.state===yr.PARTIALLY_CONNECTED,k=T?po(T,tE):"",w=y&&!!S.needsNamespace&&!k,v=i(async()=>{S.state===yr.DISCONNECTED||w?u(S):r({walletType:S.type,chain:e,address:T??""})},"onSelectableWalletClick"),x=Jv(S.state),A=i(()=>w?If.t("Chain not connected"):k||x.description,"getWalletDescription"),E=i(()=>S.state===yr.CONNECTED||S.state===yr.PARTIALLY_CONNECTED?w?"neutral600":"neutral700":x.color,"getWalletDescriptionColor");return Vo.createElement(Rv,{key:S.type,id:"widget-wallets-list-selectable-wallet-btn",description:A(),descriptionColor:E(),onClick:v,selected:n(S.type,e),disabled:!c,...S})}),Vo.createElement(ur,{id:"widget-wallets-list-stateful-connect-modal",wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{u(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):Zv(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),m&&Vo.createElement(Cf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Vo.createElement(Af,{variant:"label",size:"medium"},If.t("Show more wallets"),Vo.createElement(Af,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}i(Wl,"WalletList");var cE=2;function Pf(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=lE(),c=C().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:f,setCustomDestination:h}=z()(),{config:g,connectedWallets:m,setWalletsAsSelected:S}=C(),[T,y]=Wn(""),[k,w]=Wn([]),[v,x]=Wn(""),[A,E]=Wn(!!f),I=sE(()=>Mo({filter:"all",quote:l}),[l]),b=Mo({filter:"required",quote:l}),L=c.find(B=>B.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),N=i(B=>b.includes(B),"isWalletRequiredFor"),O=aE(()=>m.filter(B=>B.selected&&I.includes(B.chain)),[m,I]),[q,j]=Wn(O()),[ee,P]=Wn([]),Z=i((B,V)=>P(H=>H.concat({blockchain:B,walletType:V})),"addNextSelectedWallets"),Y=k.length>0,ce=i((B,V)=>!!q.find(H=>H.walletType===B&&H.chain===V&&H.selected&&(N(V)||!N(V)&&!f)),"isSelected"),Ee=i((B,V,H)=>{let X=!1;return B.map(G=>{if(G.chain===V){let J=G.selected;return!X&&H?(X=!0,J=!0):H||(J=!1),{...G,selected:J}}return G})},"updateSelectableWallets"),Gt=i(B=>{E(B),B?N(L?.name??"")||j(V=>Ee(V,L?.name||"",!1)):(h(""),j(V=>Ee(V,L?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),be=i(B=>{if(T&&y(""),ce(B.walletType,B.chain))return;let H=m.find(X=>X.walletType===B.walletType&&X.chain===B.chain);H&&(n(),B.chain===L?.name&&A&&!N(L.name)&&(E(!1),h(null)),j(X=>X.filter(G=>G.chain!==B.chain).concat({...H,selected:!0})))},"onChange"),He=i(()=>{let B=q.filter(V=>V.selected);te({type:"swapWalletsConfirmed",payload:{routeId:l?.requestId??""}}),S(B),p(B),d(!0),o()},"onConfirmBalance"),Xe=i(async()=>{w([]),x("");let B=await r?.({selectedWallets:q.filter(H=>H.selected),customDestination:f}),V=B.warnings;V?.balance?.messages&&w(V.balance.messages),B.error&&x(vd(B.error)),!B.error&&!V?.balance?.messages.length?He():w(V?.balance?.messages??[])},"onConfirmWallets");Yi(()=>{j(B=>{let V=[];return B.forEach(H=>{!m.some(G=>G.chain===H.chain&&G.walletType===H.walletType&&G.address===H.address)||V.push(H)}),V=V.concat(m.filter(H=>!!!V.find(G=>G.chain===H.chain)&&H.selected&&I.includes(H.chain))),V})},[m,I]),Yi(()=>{let B=[];ee.length>0&&(ee.forEach(V=>{let H=m.find(X=>X.chain===V.blockchain&&X.walletType===V.walletType);H?be(H):B.push(V)}),P(B))},[m,ee]);let St=l?.requestId??"";Yi(()=>{if(!e)return;let B=b.filter(V=>!m.some(H=>H.chain===V));te({type:"swapWalletsModalShown",payload:{chainsRequired:b.length,chainsPending:B.length}})},[e]),Yi(()=>{Y&&te({type:"gasWarningShown",payload:{routeId:St}})},[Y,St]);let ct=document.getElementById(kt.SWAP_BOX_ID);return ae.createElement(re,{id:"widget-confirm-wallets-modal",open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!T,container:ct,...!T&&{styles:{container:{height:"100%"}},footer:ae.createElement(bf,null,ae.createElement(Wf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Jd(a,A,f,l,q,L),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Ko.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(kf,null,ae.createElement(wf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(rE,{size:16})),ae.createElement(Ll,{variant:"headline",size:"small"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:Tt(T,c)}})))},anchor:"center"},ae.createElement(re,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:Y,onClose:w.bind(null,[]),container:ct},ae.createElement(iE,{title:Ko.t("Insufficient account balance"),type:"error",description:ae.createElement(nE,{messages:k??[]})},ae.createElement(Wf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{te({type:"gasWarningBypassed",payload:{routeId:St}}),He()}},Ko.t("Proceed anyway")))),T&&ae.createElement(vf,null,ae.createElement("div",{className:Ef()},ae.createElement(Wl,{chain:T,quoteChains:I,isSelected:ce,selectWallet:be,onShowMore:()=>y(T),onConnect:B=>{Z(T,B)}}))),!T&&ae.createElement(ae.Fragment,null,v&&ae.createElement(ae.Fragment,null,ae.createElement(oE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:Ko.t(v)}),ae.createElement(Pl,{size:12})),ae.createElement(xf,null,I.map((B,V)=>{let H=c.find(U=>U.name===B),X=`wallet-${V}`,G=V===I.length-1,J=G&&L&&g?.customDestination!==!1;return ae.createElement("div",{key:X},ae.createElement(Sf,null,ae.createElement(Ll,{variant:"title",size:"xmedium"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:H?.shortName}})),ae.createElement(Ll,{variant:"label",color:"$neutral700",size:"medium"},Ko.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:H?.shortName}}))),ae.createElement(Pl,{size:24}),ae.createElement(Tf,null,ae.createElement(Wl,{chain:B,quoteChains:I,isSelected:ce,selectWallet:be,limit:cE,onShowMore:()=>y(H?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(Pl,{size:32}),J&&ae.createElement(yf,{blockchain:L,open:A,handleOpenChange:Gt}))}))))}i(Pf,"ConfirmWalletsModal");import{i18n as ME}from"@lingui/core";import{Alert as DE,Button as $E,Divider as Zf,InfoIcon as FE}from"@rango-dev/ui";import Oe from"react";import{Alert as dE,Button as mE,Divider as Ml,NoRouteIcon as fE,RefreshIcon as gE,Typography as Ff}from"@rango-dev/ui";import mt from"react";import{i18n as Lf}from"@lingui/core";var pE=24,uE=60;function Bf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ie().genericServerError,action:{onClick:n,title:Lf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ie().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Lf.t("Reset")}},description:ie().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ie().noResultError.description}}i(Bf,"makeInfo");var Bl=(o=>(o[o.small=pE]="small",o[o.large=uE]="large",o))(Bl||{}),_l=(o=>(o.small="small",o.large="medium",o))(_l||{});import{styled as Zi}from"@rango-dev/ui";var _f=Zi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Mf=Zi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Df=Zi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),$f=Zi("div",{padding:"$6 $0"});function Sr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=C().getDisabledLiquiditySources(),s=C().toggleAllLiquiditySources,c=C().swappers(),l=Bf(o,a,()=>s(c,!0),e);return r&&(l.alert=null),mt.createElement(_f,{id:"widget-no-result-container"},mt.createElement(fE,{size:Bl[n],color:"gray"}),mt.createElement(Ml,{size:4}),mt.createElement(Ff,{variant:"title",size:_l[n]},ie().noResultError.title),n==="large"&&mt.createElement(Ml,{size:4}),!!l.description&&mt.createElement(Mf,{size:n},mt.createElement(Ff,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement(Ml,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Df,{size:n},mt.createElement(dE,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&mt.createElement(mE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement($f,null,mt.createElement(gE,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Sr,"NoResult");import{i18n as Tr}from"@lingui/core";import{Button as vE,Divider as EE,MessageBox as bE,Typography as xE,WarningIcon as IE}from"@rango-dev/ui";import Jt from"react";import{InfoIcon as TE,Tooltip as CE,Typography as kE}from"@rango-dev/ui";import Pn from"react";import{Button as hE,darkTheme as yE,styled as jo,Typography as SE}from"@rango-dev/ui";var Of=jo("div",{width:"100%"}),Dl=jo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Uf=jo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${yE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),zf=jo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),Hf=jo(SE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Qf=jo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),qf=jo(hE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var wE=35;function Gf(t){let{title:e,value:o,valueColor:n}=t,r=W();return Pn.createElement(Uf,null,Pn.createElement(kE,{size:"medium",variant:"label",className:"_title"},e),Pn.createElement(zf,null,Pn.createElement(Hf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>wE&&Pn.createElement(CE,{content:o,container:r},Pn.createElement(TE,{size:12,color:"gray"}))))}i(Gf,"QuoteErrorsModalItem");function Vf(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:M(r.inputUsdValue)},{title:Tr.t("Gas cost"),value:M(r.totalFee,2,2)},{title:Tr.t("Receiving"),value:M(r.outputUsdValue)},{title:Tr.t("Price impact"),value:M(r.priceImpact,2,2),valueColor:`${s}500`}];return Jt.createElement(re,{id:"widget-high-value-loss-warning-modal",footer:Jt.createElement(vE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Jt.createElement(IE,null),fullWidth:!0,disabled:a,onClick:n},ie().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Jt.createElement(bE,{type:s,title:ie().highValueLossError.impactTitle,description:ie().highValueLossError.description}),Jt.createElement(Dl,null,Jt.createElement(EE,{size:"4"}),Jt.createElement(xE,{size:"small",variant:"title"},Tr.t("Details")),Jt.createElement(Dl,null,c.map((l,p)=>Jt.createElement(Gf,{key:p,...l})))))}i(Vf,"HighValueLossWarningModal");import{i18n as Ln}from"@lingui/core";function Kf(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=Ln.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Ln.t("Increase")),o;if(t){switch(t.type){case 0:{Zt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ie().highValueLossError.title;break}case 4:{o.title=Ln.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=ie().unknownPriceError.title;break}case 2:{o.title=Ln.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=Ln.t("Increase");break}case 3:{o.title=Ln.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Kf,"makeAlerts");function jf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(jf,"getRequiredSlippage");import{i18n as Bn}from"@lingui/core";import{Button as AE,Divider as $l,MessageBox as NE,WarningIcon as WE}from"@rango-dev/ui";import ko from"react";import{useNavigate as PE}from"react-router-dom";function Xf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=PE();return ko.createElement(re,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},ko.createElement(NE,{type:"warning",title:r.type===3?Bn.t("High slippage"):Bn.t("Low slippage"),description:r.type===3?Bn.t("Caution, your slippage is high. Your trade may be front run."):Bn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},ko.createElement($l,{size:18}),ko.createElement($l,{size:32}),ko.createElement(qf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},ko.createElement(WE,{color:"white",size:16}),Bn.t("Swap anyway")),ko.createElement($l,{size:10}),ko.createElement(AE,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Bn.t("Change Slippage"))))}i(Xf,"SlippageWarningModal");import{Button as LE,MessageBox as BE,WarningIcon as _E}from"@rango-dev/ui";import Ji from"react";function Yf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Ji.createElement(re,{id:"widget-unknown-price-warning-modal",footer:Ji.createElement(LE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ji.createElement(_E,null),fullWidth:!0,disabled:r,onClick:n},ie().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},Ji.createElement(BE,{type:"warning",title:ie().unknownPriceError.impactTitle,description:ie().unknownPriceError.description}))}i(Yf,"UnknownPriceWarningModal");function Cr(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,skipAlerts:s,refetchQuote:c,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:u,onChangeSettings:d,onChangeSlippage:f}=t,h={confirmationDisabled:a,open:r,onClose:p,onConfirm:u},g=o?.type===0||o?.type===1,m=Kf(e,o?.type===3||o?.type===4?o:null);m&&!n&&(m.action=null);let S=!!m&&!s,T=i(y=>{if(y==="change-slippage"){let k=o?.type===3||o?.type===4?o:null,w=jf(e,k);f?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Oe.createElement(Oe.Fragment,null,g&&Oe.createElement(Oe.Fragment,null,Oe.createElement(Zf,{size:10}),Oe.createElement(Sr,{skipAlerts:s,error:o,fetch:c})),S&&Oe.createElement(Of,null,Oe.createElement(Zf,{size:10}),Oe.createElement(DE,{id:"widget-quote-warning-and-errors-alert",title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Oe.createElement(Qf,{onClick:l},Oe.createElement(FE,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:Oe.createElement($E,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>T(m.action)},m.actionButtonTitle||ME.t("Change"))}})),e&&Oe.createElement(Oe.Fragment,null,e.type===0&&Oe.createElement(Vf,{...h,warning:e}),(e.type===3||e.type===2)&&Oe.createElement(Xf,{...h,warning:e}),e.type===1&&Oe.createElement(Yf,{...h,warning:e})))}i(Cr,"QuoteWarningsAndErrors");import mb from"bignumber.js";import fa from"react";import{i18n as Xo}from"@lingui/core";import{Alert as tb,CampaignQuoteTag as ob,Divider as Mn,FullExpandedQuote as nb,InfoIcon as jl,NumericTooltip as Xl,QuoteTag as rb,StepDetails as ib,TokenAmount as ab,Typography as Dn,useIsTruncated as Yl}from"@rango-dev/ui";import Zl from"bignumber.js";import F,{useRef as ua,useState as sb}from"react";import{styled as Fl}from"@rango-dev/ui";var Ol=Fl("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Jf=Fl("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),Rf=Fl("div",{width:"100%",display:"flex"});import*as Ri from"@radix-ui/react-collapsible";import{Button as OE,css as ea,darkTheme as De,Image as eg,styled as je,Typography as Ul}from"@rango-dev/ui";var UE=300,tg=je(Ri.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),og=ea({padding:"$10 $15"}),ng=je(OE,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${De} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${De} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${De} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),rg=je("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${De} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}}}}]}),ig=ea({width:"100%",padding:"$15 $15 $10 $15"}),ag=ea({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),_n=ea({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),sg=je(Ri.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:{[`& ${eg}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${eg}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),lg=je("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),cg=je(Vi,{width:"100%",background:"inherit"}),zl=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${UE}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),ZH=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),pg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),ug=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),Hl=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"$30"}),Ql=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,flex:"0 1 auto"}),ql=je("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),dg=je("div",{display:"flex"}),ta=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),mg=je(Ul,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ft}from"@lingui/core";import{ChevronDownIcon as HE,CloseIcon as QE,Divider as ra,IconButton as qE,NumericTooltip as GE,QuoteCost as VE,Typography as At}from"@rango-dev/ui";import R,{useState as yg}from"react";import{css as zE,styled as oa}from"@rango-dev/ui";var na=oa("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Gl=oa("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),fg=oa("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),gg=oa("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),hg=zE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var KE=i(t=>t.fee.isZero()?null:R.createElement(na,null,R.createElement(At,{variant:"label",size:"medium",color:"neutral600"},t.label),R.createElement(At,{variant:"label",size:"medium"},"$",M(t.fee,4,4))),"NonPayableFee");function Vl(t){let[e,o]=yg(!1),[n,r]=yg(!1),{steps:a,quote:s,fee:c,time:l,feeWarning:p,timeWarning:u,showModalFee:d,fullExpandedMode:f=!1}=t,h=s?.swaps??[],g=f?_o():W(),m=qd(h),S=M(c,2,2);return R.createElement(R.Fragment,null,R.createElement(VE,{onClickFee:d?T=>{T.stopPropagation(),!e&&s&&te({type:"routeFeeViewed",payload:{routeId:s.requestId}}),o(!e)}:void 0,fee:S,feeWarning:p,timeWarning:u,time:l,steps:a,tooltipGas:d?Ft.t("View more info"):void 0,tooltipContainer:g}),R.createElement(re,{id:"widget-quote-cost-explanation-modal",container:g,open:e,anchor:f?"center":"bottom",styles:{container:{maxWidth:f?"484px":"unset"}},header:R.createElement(gg,{style:{textAlign:f?"left":"center"}},R.createElement(At,{variant:"title",size:"medium"},Ft.t("Gas & Fee Explanation")),R.createElement(qE,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(QE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(fg,null,R.createElement(At,{variant:"title",size:"small"},Ft.t("Details")),R.createElement(ra,{size:10}),Object.entries(m.payable).flatMap(([T,y])=>y.map((k,w)=>{let v=`payable-fee-${w}`,x=qs(k);return R.createElement(na,{key:v},R.createElement(At,{variant:"label",size:"medium",color:"neutral600"},Os(T,Ft.t)),R.createElement(GE,{content:k.amount,container:g},R.createElement(At,{variant:"label",size:"medium"},M(k.amount,2,2),k.asset.symbol," ($",M(x,4,4),")")))})),R.createElement(na,{className:"total_payable_fee"},R.createElement(At,{variant:"label",size:"medium"},Ft.t("Total Payable Fee")),R.createElement(At,{variant:"label",size:"medium"},"$",M(c,4,4))),R.createElement(Gl,null),!!Object.keys(m.nonePayable).length&&R.createElement(Xi,{triggerAnchor:"bottom",onClickTrigger:()=>r(T=>!T),trigger:R.createElement("div",{className:hg()},R.createElement(At,{size:"small",variant:"body",color:"neutral700"},n?Ft.t("Hide non-payable fees"):Ft.t("Show non-payable fees")),R.createElement(ra,{size:4,direction:"horizontal"}),R.createElement(Ki,{orientation:n?"up":"down"},R.createElement(HE,{size:12,color:"gray"}))),open:n},R.createElement(At,{size:"small",variant:"title"},Ft.t("Description")),R.createElement(ra,{size:4}),R.createElement(At,{size:"small",variant:"body",color:"neutral700"},Ft.t(`The following fees are considered in the transaction output and
|
|
2
|
-
you won\u2019t need to pay extra gas for them.`)),R.createElement(ra,{size:10}),Object.entries(m.nonePayable).map(([T,y],k)=>{let w=Qd(y),v=Os(T,Ft.t),x=`non-payable-fee-${k}`;return R.createElement(KE,{key:x,fee:w,label:v})}),R.createElement(Gl,null)))))}i(Vl,"QuoteCostDetails");import{i18n as Cg}from"@lingui/core";import{TokenAmount as kg}from"@rango-dev/ui";import ia from"react";import{css as jE,styled as XE}from"@rango-dev/ui";var Sg=XE("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Tg=jE({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function kr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return ia.createElement(Sg,null,ia.createElement(kg,{direction:"horizontal",label:Cg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:W(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),ia.createElement("div",{className:Tg()}),ia.createElement(kg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:Cg.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(kr,"QuoteSummary");import{i18n as xg}from"@lingui/core";import{ChevronDownIcon as JE,ChevronRightIcon as RE,Divider as Kl,Image as eb,Tooltip as pa,Typography as sa}from"@rango-dev/ui";import Q from"react";import{useLayoutEffect as YE,useState as wr}from"react";var wg=480,vg=768,Eg=1024,bg=1200,ZE=i(()=>{let[t,e]=wr(!1),[o,n]=wr(!1),[r,a]=wr(!1),[s,c]=wr(!1),[l,p]=wr(!1),u=i(()=>{e(window.innerWidth<=wg),n(window.innerWidth>wg&&window.innerWidth<=vg),a(window.innerWidth>vg&&window.innerWidth<=Eg),c(window.innerWidth>Eg&&window.innerWidth<=bg),p(window.innerWidth>bg)},"handleResize");return YE(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),aa=ZE;var la=4,ca=6,vr=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,c=s||W();return Q.createElement(pa,{container:c,side:"bottom",sideOffset:4,open:r,content:e},Q.createElement(lg,{className:n,state:a},Q.createElement(eb,{src:o,size:16})))},"ImageComponent");function Ig(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:c}=t,l=c||W(),p=r.length,u=Bd(r),{isTablet:d,isMobile:f}=aa();return Q.createElement(sg,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},Q.createElement("div",{className:_n()},Q.createElement(sa,{variant:"body",size:"xsmall"},xg.t("Via:")),Q.createElement(Kl,{direction:"horizontal",size:4}),r.map((h,g)=>{let m=`item-${g}`,S=Q.createElement(zl,null,Q.createElement(RE,{size:12,color:"black"}));return f||d?Q.createElement(Q.Fragment,{key:m},Q.createElement(vr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):Q.createElement(Q.Fragment,{key:m},p<=la||p>la&&g<la-1?Q.createElement(Q.Fragment,null,Q.createElement(vr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):g===la-1&&Q.createElement(pa,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:_n()},S,r.map((T,y)=>{let k=`image-${y}`;return y>=g&&Q.createElement(Q.Fragment,{key:k},Q.createElement(vr,{content:T.swapper.displayName,src:T.swapper.image??"",state:T.state,open:!1}),y!==p-1&&Q.createElement(Q.Fragment,null,S))}))},Q.createElement(ql,{state:r.find((T,y)=>y>=g&&(T.state==="error"||T.state==="warning"))?.state},Q.createElement(sa,{size:"xsmall",variant:"body"},"+",p-g))))})),Q.createElement("div",{className:_n()},Q.createElement("div",{className:"blockchains_section"},Q.createElement("div",{className:_n()},Q.createElement(sa,{variant:"body",size:"xsmall"},xg.t("Chains:")),Q.createElement(Kl,{direction:"horizontal",size:4}),u.map((h,g)=>Q.createElement(Q.Fragment,{key:h.displayName},u.length<=ca||u.length>ca&&g<ca-1?Q.createElement(pa,{container:l,side:"bottom",content:h.displayName,sideOffset:4},Q.createElement(vr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===ca-1&&Q.createElement(pa,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:_n()},u.map((m,S)=>S>=g&&Q.createElement(vr,{key:m.displayName,content:"",src:m.image??"",open:!1,className:S>g?"blockchainImage":"",container:c})))},Q.createElement(ql,{className:"blockchainImage"},Q.createElement(sa,{size:"xsmall",variant:"body"},"+",u.length-g))))),Q.createElement(Kl,{direction:"horizontal",size:32}))),Q.createElement(zl,{orientation:a?"up":"down"},Q.createElement(JE,{size:12,color:"black"}))))}i(Ig,"QuoteTrigger");function Jl(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:c=!1,tagHidden:l=!0,showModalFee:p=!0,onClickAllRoutes:u,fullExpandedMode:d=!1,container:f}=t,h=C().blockchains(),{findToken:g}=C(),m=C().swappers(),{customSlippage:S,slippage:T}=C(),y=S||T,[k,w]=sb(t.expanded),v=ua(null),x=M(n.value,6,6),A=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:E}}=C(),I=Yt(o.usdValue,n.usdValue??null),b=M(I,2,2),L=Zt(I??0),N=i((G,J)=>G.map((U,de)=>{let Qe,ot=r?.type===3&&r.swap.swapperId===U.swapperId,co=r?.type===4&&!!r.recommendedSlippages?.[de],Gn=a?.type===2&&!!a.recommendedSlippages?.[de],No=ot||co,Rr=Gn;No?Qe="error":Rr&&(Qe="warning");let rn=No?Xo.t("Slippage Error"):Xo.t("Slippage Warning");return ot&&(rn=Xo.t("Bridge Limit Error")),{swapper:{displayName:Kn(U.swapperId,m)??"",image:U.swapperLogo},from:{token:{displayName:U.from.symbol,image:U.from.logo},chain:{displayName:Tt(U.from.blockchain,h)??"",image:U.from.blockchainLogo},price:{value:de===0&&!J?M(o.value,6,6):M(U.fromAmount,6,6),usdValue:M((U.from.usdPrice??0)*parseFloat(U.fromAmount),4,4),realValue:de===0?o.value:U.fromAmount,realUsdValue:new Zl(U.from.usdPrice??0).multipliedBy(U.fromAmount).toString()}},to:{token:{displayName:U.to.symbol,image:U.to.logo},chain:{displayName:Tt(U.to.blockchain,h)||"",image:U.to.blockchainLogo},price:{value:M(U.toAmount,6,6),usdValue:M((U.to.usdPrice??0)*parseFloat(U.toAmount),4,4),realValue:U.toAmount,realUsdValue:new Zl(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:Qe,alerts:No||Rr?F.createElement(Jf,{dense:d},F.createElement(tb,{variant:"alarm",type:No?"error":"warning",title:rn,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(Rf,null,ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Xo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(co||Gn)&&!ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Xn(U.estimatedTimeInSeconds),fee:M(Qs(U,g),2,2),internalSwaps:U.internalSwaps?N(U.internalSwaps):void 0}}),"getQuoteSteps"),O=N(e?.swaps??[]),q=O.length,j=f||W(),ee=Md(t.quote.tags||[]),P=!!u,Z=si(e?.swaps),Y=Xn(Z),ce=Wi(e?.swaps??[],g),Ee=M(ce,2,2),Gt=ce.gte(new Zl(bd)),be=Z/Id>=xd,He=ua(null),Xe=Yl(o.value,He),St=ua(null),ct=Yl(n.value,St),B=ua(null),V=Yl(A,B),H=O[q-1],X=O[0];return!X||!H?null:d?F.createElement(nb,{selected:c,fee:Ee,time:Y,tooltipContainer:_o(),steps:O,tags:ee,campaignTag:E?.campaignTag,id:"widget-quote-full-expanded-quote-container",quoteCost:F.createElement(Vl,{quote:e,fullExpandedMode:!0,time:Y,fee:ce,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:b,warningLevel:L,outputPrice:{value:x,usdValue:A,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(rg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:ig()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(dg,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&E?.campaignTag?F.createElement(ob,{routeTag:G,...E.campaignTag}):F.createElement(rb,{label:G.label,value:G.value}),F.createElement(Mn,{size:4,direction:"horizontal"}))})),F.createElement(ta,null),!P&&F.createElement(Mn,{size:4})):null,F.createElement("div",{id:"portal-root",className:ag()},F.createElement(Vl,{quote:e,time:Y,fee:ce,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),P&&F.createElement(ng,{onClick:G=>{G.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Dn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Xo.t("See All Routes")))),s==="basic"&&F.createElement(ug,null,F.createElement(Ql,{ref:He,size:"small",variant:"body"},o.value),Xe&&F.createElement(Xl,{content:o.value,container:j,open:o.value?void 0:!1},F.createElement(jl,{size:12,color:"gray"})),F.createElement(Hl,{size:"small",variant:"body"},O[0]?.from.token.displayName),F.createElement(Dn,{size:"small",variant:"body"},"="),F.createElement(Ql,{ref:St,size:"small",variant:"body"},n.value),ct&&F.createElement(Xl,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(jl,{size:12,color:"gray"})),F.createElement(Hl,{size:"small",variant:"body"},H?.to.token.displayName),F.createElement(Mn,{size:2,direction:"horizontal"}),F.createElement(mg,{ref:B,color:"$neutral600",size:"xsmall",variant:"body"},`($${A})`),V&&F.createElement(Xl,{content:n.usdValue,container:j},F.createElement(jl,{size:12,color:"gray"}))),s==="list-item"&&F.createElement(ab,{id:"widget-quote-token-amount-container",tooltipContainer:j,type:"output",direction:"vertical",price:{value:x,usdValue:A,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:H.to.token.displayName,image:H.to.token.image},chain:{image:H.to.chain.image},percentageChange:b,warningLevel:L}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(kr,{from:X.from,to:H.to,percentageChange:b,warningLevel:L}),F.createElement(Mn,{size:4}))),F.createElement(tg,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:w},F.createElement(Ig,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:k,steps:O}),F.createElement(cg,{open:k},F.createElement(pg,null),F.createElement("div",{className:og()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(ib,{type:"quote-details",className:"widget-quote-step-details-container",key:U,tooltipContainer:j,step:G,hasSeparator:J!==O.length-1,state:G.state})})))))}i(Jl,"Quote");import{Divider as ub,Skeleton as db}from"@rango-dev/ui";import oo from"react";import{darkTheme as lb,styled as da}from"@rango-dev/ui";var Ag=da("div",{$$color:"$colors$neutral100",[`.${lb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Ng=da("div",{paddingTop:"$2"}),Wg=da("div",{paddingLeft:"$8"}),Pg=da("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as zg,Divider as Nt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as cb,styled as to}from"@rango-dev/ui";var Rl=to("div",{display:"flex"}),Lg=to("div",{padding:"$10 $0 $20"}),Bg=to("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),_g=to("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Mg=to("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Dg=to("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),$g=to("div",{width:"65%",display:"flex",justifyContent:"start"}),Fg=to("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Og=to("div",{padding:"$15 $0 $15 $0"}),Ug=cb({display:"flex",justifyContent:"space-between",alignItems:"center"});function Er(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(Mg,null,K.createElement($g,null,K.createElement(zg,{loading:!0,size:"medium"}),K.createElement(Nt,{size:8,direction:"horizontal"}),K.createElement(Fg,null,K.createElement(ft,{height:10,width:60,variant:"rounded"}),K.createElement(Nt,{size:4}),K.createElement(ft,{height:15,variant:"rounded"}))),K.createElement(ft,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return K.createElement("div",null,!o&&K.createElement(K.Fragment,null,K.createElement(Rl,null,K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"})),K.createElement(ta,null),!r&&K.createElement(Nt,{size:4})),K.createElement("div",{className:Ug()},K.createElement(Rl,null,K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"})),r&&K.createElement(ft,{width:85,height:24,variant:"rounded"})),e==="basic"&&K.createElement(Lg,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Bg,null,K.createElement(_g,null,K.createElement(zg,{loading:!0,size:"medium"}),K.createElement(Nt,{direction:"horizontal",size:4}),K.createElement(ft,{height:15,width:150,variant:"rounded"})),K.createElement(Nt,{size:10}),K.createElement(ft,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&K.createElement(K.Fragment,null,K.createElement(Nt,{size:4}),K.createElement(Og,null,n,K.createElement(Dg,null),n),K.createElement(Nt,{size:12})))}i(Er,"QuoteSummarySkeleton");import{ChainToken as Vg,Divider as tc,NextIcon as pb,Skeleton as ma}from"@rango-dev/ui";import Le from"react";import{styled as br}from"@rango-dev/ui";var Hg=br("div",{display:"flex",alignItems:"start"}),Qg=br("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),ec=br("div",{display:"flex",alignItems:"center",flexGrow:1}),qg=br("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Gg=br("div",{display:"flex",alignItems:"center"});function Ot(t){let{separator:e=!0}=t;return Le.createElement(Le.Fragment,null,Le.createElement(Gg,null,Le.createElement(ma,{height:22,width:22,variant:"circular"}),Le.createElement(tc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:15,width:148,variant:"rounded"})),Le.createElement(Hg,null,Le.createElement(Pg,{hideSeparator:!e}),Le.createElement(Qg,{extraSpace:e},Le.createElement(ec,null,Le.createElement(Vg,{size:"small",loading:!0}),Le.createElement(tc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:12,variant:"rounded"})),Le.createElement(qg,null,Le.createElement(pb,{color:"gray",size:16})),Le.createElement(ec,null,Le.createElement(Vg,{size:"small",loading:!0}),Le.createElement(tc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:12,variant:"rounded"})))))}i(Ot,"StepSkeleton");function xr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return oo.createElement(Ag,{expanded:o,rounded:e!=="basic"},oo.createElement(Er,{type:e,tagHidden:n}),oo.createElement(Ng,null,oo.createElement(db,{height:15,variant:"rounded"})),o&&oo.createElement(Wg,null,oo.createElement(ub,{size:24}),oo.createElement(Ot,null),oo.createElement(Ot,null),oo.createElement(Ot,{separator:!1})))}i(xr,"QuoteSkeleton");function Yo(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:c,onClick:l,showModalFee:p,selected:u,id:d,onClickAllRoutes:f,fullExpandedMode:h=!1,container:g}=t,{inputAmount:m,inputUsdValue:S}=z()(),T=e?.outputAmount?new mb(e?.outputAmount):null,y=e?it(e):null,w=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?fa.createElement(Ol,null,fa.createElement(xr,{tagHidden:c,type:o,expanded:s})):w?fa.createElement(Ol,{onClick:()=>l?.(e),id:d},fa.createElement(Jl,{quote:e,error:r,container:g,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:f,fullExpandedMode:h,input:{value:m,usdValue:S?.toString()??""},output:{value:T?.toString()??"",usdValue:y?.toString()??""}})):null}i(Yo,"QuoteInfo");import{warn as yb}from"@rango-dev/logging-core";import{calculatePendingSwap as Sb}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Tb}from"react";import{useRef as fb,useState as gb}from"react";var hb=2e3;function ga({request:t}){let[e,o]=gb(!1),n=fb(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,hb)),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(ga,"useFetch");function Kg(){let{fetch:t,loading:e,cancelFetch:o}=ga({request:async(n,r)=>await dt().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Kg,"useFetchConfirmQuote");function ha(t){if(!t.swaps)throw new Error(ie().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=oc(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(ha,"throwErrorIfResponseIsNotValid");function oc(t){if(Ud(t)){let{swap:n,fromAmountRangeError:r,recommendation:a}=zd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:r}}:null}let o=Gd(t);if(o){let n=Pi(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(oc,"getQuoteError");function jg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=En({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=jd(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(jg,"generateWarnings");function ya(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(ya,"handleQuoteErrors");function nc(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:c}=z()(),{slippage:l,customSlippage:p}=C(),u=C().getDisabledLiquiditySources(),d=C().blockchains(),f=C().tokens(),{findToken:h}=C(),{swapMode:g}=rt(),m=p||l,{fetch:S,cancelFetch:T,loading:y}=Kg();return Tb(()=>T,[]),{loading:y,fetch:i(async w=>{let v=w.selectedWallets,x=w?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((I,b)=>(I[b.chain]=b.address,I),{}),E={requestId:a?.requestId||"",selectedWallets:A,destination:x||void 0};try{return await S(E,!0).then(I=>{let{result:b}=I;if(!b)throw new Error(I.error??"Error fetching updated quote");ha({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let L={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};r(L);let N={slippage:m.toString(),disabledSwappersGroups:u},O=jg({previousQuote:a??void 0,currentQuote:L,meta:{blockchains:d},selectedWallets:v,userSlippage:m,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=Sb({inputAmount:o.toString(),bestRoute:b,wallets:Kd(v),settings:N,validateBalanceOrFee:!q,meta:{blockchains:d,tokens:f},swapMode:g});return{quote:L,swap:j,error:null,warnings:O}})}catch(I){let b=ya(I);return b.type!==2&&yb(new Error("confirm swap error"),{tags:{...b,type:Je[b.type],initialQuote:a,requestBody:E}}),{swap:null,error:b,warnings:null}}},"fetch"),cancelFetch:T}}i(nc,"useConfirmSwap");function Xg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}i(Xg,"toNumberOrNull");function $n(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=zo(t),r=it(t);return{routeId:t.requestId,sourceChain:e?.from.blockchain??"",destinationChain:o?.to.blockchain??"",sourceTokenSymbol:e?.from.symbol??"",sourceTokenAddress:e?.from.address??null,destinationTokenSymbol:o?.to.symbol??"",destinationTokenAddress:o?.to.address??null,sourceTokenAmount:Xg(t.requestAmount),destinationTokenAmount:Xg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:r?r.toNumber():null}}i($n,"buildSwapEstimatePayload");var Nb=vb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Yg}`]:{width:"$48",height:"$48"}}),Wb=ac({flexGrow:1,paddingRight:"$10"}),Pb=ac({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Lb=ac({display:"flex",justifyContent:"space-between",alignItems:"center"});function Zg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=z()(),s=Ab(),[c,l]=Ir(""),p=!n,[u,d]=Ir(!1),[f,h]=Ir(!1),{isActiveTab:g}=ne(),m=C().getDisabledLiquiditySources(),S=Ib(m),{manager:T}=Cb(),{fetch:y,loading:k,cancelFetch:w}=nc(),[v,x]=Ir({swap:null,error:null,warnings:null}),[A,E]=Ir(!1),I=i(async({selectedWallets:P,customDestination:Z})=>{let Y=await y?.({selectedWallets:P,customDestination:Z});return x(Y),Y},"onConfirmSwap"),b=i(async()=>{if(v.swap&&n)try{await T?.create("swap",{swapDetails:v.swap},{id:v.swap.requestId});let P=`../${$.swaps}/${v.swap.requestId}`;s(P,{replace:!0}),setTimeout(()=>{e("")},0)}catch(P){l("Error: "+P?.message)}},"addNewSwap"),L=i(async()=>{h(!0),await b(),h(!1)},"onConfirm"),N=i(async()=>{v.warnings?.quote&&Ld(v.warnings.quote)&&!a?E(!0):(t&&te({type:"swapStarted",payload:{...$n(t),stepCount:t.swaps.length}}),await L())},"onStartConfirmSwap"),O=i(async()=>{x({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(P=>{x(P)}).catch(P=>console.error(P))},"onRefresh");Sa(()=>{!!S.current.length&&!m.length&&O(),S.current=m},[m.length]),Sa(()=>{p&&w()},[p]),Sa(()=>{p&&d(p)},[p]),Sa(()=>{p||y({selectedWallets:o,customDestination:r}).then(P=>x(P)).catch(P=>console.error(P))},[]),xb(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=v.warnings?.quote??null,j=v.error,ee=[];if(c&&ee.push($e.createElement(kb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let P=`../${$.settings}`;ee.push($e.createElement(Cr,{warning:q,error:j,couldChangeSettings:!1,refetchQuote:O,skipAlerts:j?.type===4||q?.type===2,showWarningModal:A,confirmationDisabled:!g,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await b()},onChangeSettings:()=>s(P)}))}return $e.createElement(se,{header:{title:rc.t("Confirm Swap"),onWallet:()=>{let P=`../${$.wallets}`;s(P)}},footer:$e.createElement(Nb,null,$e.createElement("div",{className:Wb()},$e.createElement(wb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||f,disabled:!!v.error||!g,onClick:N},rc.t("Start Swap"))),$e.createElement(Yg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||f,disabled:!g,onClick:d.bind(null,!0)},$e.createElement(bb,{size:24})))},u&&$e.createElement(Pf,{open:u,onClose:()=>d(!1),onCancel:w,loading:k,onCheckBalance:I}),$e.createElement(pe,null,$e.createElement("div",{className:Lb()},$e.createElement(Eb,{variant:"title",size:"small"},rc.t("You get")),$e.createElement("div",{className:Pb()},$e.createElement(Oi,{onClick:!k&&!u&&!A?O:void 0}))),$e.createElement(ic,{size:"12"}),Em(ee.map((P,Z)=>({element:P,key:`alert-${Z}`})),$e.createElement(ic,{size:10})),ee.length>0?$e.createElement(ic,{size:10}):null,$e.createElement(Yo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:v.error,loading:k,warning:v.warnings?.quote??null})))}i(Zg,"ConfirmSwapPage");import{i18n as ro}from"@lingui/core";import{Button as Sc,CustomTokensZeroStateDarkIcon as Jb,CustomTokensZeroStateIcon as Rb,DeleteIcon as ex,Divider as Lr,IconButton as tx,MessageBox as ox,NotFound as nx,styled as Cc}from"@rango-dev/ui";import Se,{useState as Tc}from"react";import{useNavigate as rx}from"react-router-dom";import{CloseIcon as Bb,IconButton as _b,SearchIcon as Mb,TextField as Db}from"@rango-dev/ui";import Fn from"react";import{styled as Jg}from"@rango-dev/ui";var Rg=Jg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),eh=Jg("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function Wt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,f=s.length?Fn.createElement(_b,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Fn.createElement(Bb,{color:"gray",size:10})):null;return p&&(f=p),Fn.createElement(eh,null,Fn.createElement(Db,{prefix:Fn.createElement(Rg,null,Fn.createElement(Mb,{color:"black"})),id:u,suffix:f,fullWidth:o,color:n,variant:e,style:{borderRadius:25,alignItems:"center",...c},size:r,value:s,onChange:a,...d}))}i(Wt,"SearchInput");import{i18n as yc}from"@lingui/core";import{Button as Ub,CustomTokenWarning as zb,darkTheme as dh,Divider as no,ExternalLinkIcon as Hb,Image as Qb,ListItem as qb,NotFound as Gb,PinIcon as Vb,Skeleton as Zo,Typography as Wr,VirtualizedList as Kb}from"@rango-dev/ui";import _,{useState as jb}from"react";import{useTranslation as Xb}from"react-i18next";import{Divider as ph,ListItem as Ob,Skeleton as Nr}from"@rango-dev/ui";import Pt from"react";import{css as On,darkTheme as sc,ImageContainer as $b,ListItemButton as Fb,styled as st,Typography as th}from"@rango-dev/ui";var lc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),cc=On({position:"relative",height:12,width:"30%",maxWidth:"150px"}),pc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),uc=On({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${sc} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),dc=On({}),mc=On(),oh=st("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),fc=st("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Ta=st("ul",{flexGrow:1,height:"100%",padding:0,margin:0,display:"flex",flexDirection:"column",listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${cc}`]:{[`& .${uc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${dc}`]:{bottom:"-15px"},[`& .${lc}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${pc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),nh=st(Fb,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),gc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),hc=st(th,{}),rh=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${mc}`]:{$$color:"$colors$neutral600",[`.${sc} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ar=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),oV=st("div",{display:"flex",alignItems:"center"}),ih=st("div",{position:"relative",[`& ${$b}`]:{borderRadius:"$xm",overflow:"hidden"}}),ah=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),sh=st(th,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),lh=st("a",{"& svg:hover":{color:"$colors$info"}}),ch=st("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":{[`.${sc} &`]:{color:"$foreground"}}}});function uh(t){return Pt.createElement(Ta,null,Array.from(Array(t.size),e=>Pt.createElement(Ob,{key:e,hasDivider:!0,start:Pt.createElement(Nr,{variant:"circular",width:35,height:35}),end:Pt.createElement(Ar,null,Pt.createElement(Nr,{variant:"text",size:"large",width:70}),Pt.createElement(ph,{size:4}),Pt.createElement(Nr,{variant:"text",size:"medium",width:50})),title:Pt.createElement("div",null,Pt.createElement(Nr,{variant:"text",size:"large",width:90}),Pt.createElement(ph,{size:4}),Pt.createElement(Nr,{variant:"text",size:"medium",width:90}))})))}i(uh,"LoadingTokenList");var Yb=20,Zb=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return _.createElement("div",{className:cc()},o?_.createElement("div",{className:lc()},o):_.createElement(fc,{className:pc()},_.createElement(Wr,{variant:"title",size:"xmedium"},r.symbol),_.createElement(no,{direction:"horizontal",size:4}),_.createElement(gc,{css:a},_.createElement(hc,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&_.createElement("div",{className:`${uc()} ${!o&&dc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",_.createElement(no,{size:4,direction:"horizontal"}),_.createElement(lh,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Hb,{size:12}))))},"renderDesc");function Pr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=C().fetchStatus,u=C().blockchains(),{getBalanceFor:d,fetchingWallets:f}=C(),{isTokenPinned:h}=C(),{setFromToken:g,setToToken:m}=z()(),{t:S}=Xb(),T=Ve(),[y,k]=jb(null),w=i(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):m({token:y,meta:{blockchains:u}})},"updateToken"),v=i(()=>{w(),T()},"handleImportToken"),x=i(I=>{if(I.customToken){let{customToken:L,...N}=I;return _.createElement(Ub,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),k({...N,warning:!0})},"handleClick")},_.createElement(Wr,{variant:"body",size:"xsmall",color:"background"},S("import")))}let b=pi(d(I));return s?s(I):f?_.createElement(Ar,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})):b&&_.createElement(rh,null,_.createElement(sh,{variant:"title",size:"small"},b.amount),_.createElement("div",null),b.usdValue&&_.createElement(Wr,{variant:"body",className:mc(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),A=i(()=>_.createElement(Kb,{style:{flexGrow:1,minHeight:0},itemContent:I=>{let b=e[I];if(b==="skeleton")return _.createElement(qb,{hasDivider:!0,start:_.createElement(Zo,{variant:"circular",width:35,height:35}),end:_.createElement(Ar,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Zo,{variant:"text",size:"large",width:90}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:90}))});let L=u.find(Z=>Z.name===b?.blockchain);if(!L||!b)return null;let N=b.address,O=il(L.color,"main"),q={$$color:O.main150,[`.${dh} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${dh} &`]:{$$color:O.main150},color:"$$color"},ee=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick"),P=N?ti({contractAddress:N,blockchainMeta:L}):void 0;return _.createElement(ch,null,_.createElement(nh,{"tab-index":I,key:`${b.symbol}${N}`,id:`${b.symbol}${N}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b?.customToken,onClick:ee,start:_.createElement(ih,null,_.createElement(Qb,{src:b.image===""?ni:b.image,size:30}),t.type!=="custom-token"&&b&&h(b,t.type)&&_.createElement(ah,null,_.createElement(Vb,{size:12,color:"gray"}))),title:b.name||!b.name&&!N?_.createElement(fc,null,_.createElement(Wr,{variant:"title",size:"xmedium"},b.symbol),_.createElement(no,{direction:"horizontal",size:4}),_.createElement(gc,{css:q},_.createElement(hc,{variant:"body",size:"xsmall",css:j},b.blockchain)),l&&b.warning&&_.createElement(_.Fragment,null,_.createElement(no,{direction:"horizontal",size:4}),_.createElement(zb,{container:W()}))):void 0,description:typeof b!="string"&&L.info&&N&&P?Zb({address:N,token:b,customCssForTag:q,customCssForTagTitle:j,name:b.name,url:P}):b.name||void 0,end:x(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=y?Po(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Wr,{variant:"label",size:"large"},yc.t("Select Token")),_.createElement(no,{size:4})),_.createElement(oh,null,_.createElement(no,{size:4}),p==="loading"&&_.createElement(uh,{size:Yb}),p==="success"&&(e.length?_.createElement(_.Fragment,null,_.createElement(hr,{token:y,address:y?.address??"",blockchain:E??void 0,onImport:v,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),_.createElement(Ta,{as:"ul"},A())):!!o&&_.createElement(Gb,{title:yc.t("No results found"),description:yc.t("Try using different keywords")}))))}i(Pr,"TokenList");var ix=Cc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),ax=Cc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),sx=Cc(tx,{"&:hover":{"& svg":{color:"$secondary550"}}});function mh(){let[t,e]=Tc(""),{deleteCustomToken:o}=C(),n=C().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=go({}),p=rx(),[u,d]=Tc(!1),[f,h]=Tc(),g=i(y=>{let k=y.target.value;e(k)},"handleSearch"),m=l==="dark",S=n.filter(y=>pt(y.symbol,t)||pt(y.address||"",t)||pt(y.name||"",t)),T=i(()=>{if(f){let y=a?Ct(a):null,k=r?Ct(r):null,w=Ct(f);y===w?c({token:null}):k===w&&s({token:null}),o(f)}d(!1)},"handleDeleteCustomToken");return Se.createElement(se,{header:{title:ro.t("Custom Tokens")}},Se.createElement(pe,null,Se.createElement(ix,null,n.length?Se.createElement(Se.Fragment,null,Se.createElement(Wt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:ro.t("Search Token"),onChange:g}),Se.createElement(Lr,{size:16}),Se.createElement(Pr,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>Se.createElement(sx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},Se.createElement(ex,{size:12,color:"gray"}))})):Se.createElement(ax,null,Se.createElement(nx,{icon:m?Se.createElement(Jb,{size:200}):Se.createElement(Rb,{size:200}),title:ro.t("No custom tokens"),description:ro.t("press the button to add your custom token")})),Se.createElement(Lr,{size:20}),Se.createElement(Sc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},ro.t("Add Custom Token"))),Se.createElement(re,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},Se.createElement(ox,{title:ro.t("Delete Custom Token"),type:"error",description:ro.t("Are you sure you want to Delete this Token?")},Se.createElement(Lr,{size:40}),Se.createElement(Lr,{size:10}),Se.createElement(Sc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},ro.t("Yes, Delete it")),Se.createElement(Lr,{size:12}),Se.createElement(Sc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},ro.t("No, Continue"))))))}i(mh,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as Ix}from"@rango-dev/queue-manager-react";import{Button as Ic,darkTheme as Ax,Divider as wo,MessageBox as Nx,NotFound as Wx,styled as Ac,Tabs as Px,Typography as wa}from"@rango-dev/ui";import{TransactionStatus as Mr}from"rango-types";import oe,{useMemo as Lh,useState as Dr}from"react";import{useNavigate as Lx}from"react-router-dom";import{FilterIcon as fx,Popover as gx}from"@rango-dev/ui";import Jo from"react";import{css as lx,darkTheme as Ca,IconButton as cx,styled as Br}from"@rango-dev/ui";var kc=Br("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:""}}}}}),fh=Br(cx,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Ca} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Ca} &`]:{backgroundColor:"$neutral"},[`& ${kc}::before`]:{backgroundColor:"$secondary100",[`.${Ca} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),gh=Br("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),hh=Br("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),yh=lx({display:"flex",justifyContent:"space-between",alignItems:"center"}),Sh=Br("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Th}from"@lingui/core";import{Button as px,Divider as Ch,ListItemButton as ux,Radio as dx,RadioRoot as mx,Typography as kh}from"@rango-dev/ui";import gt from"react";function wh(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(hh,null,gt.createElement("div",{className:yh()},gt.createElement(kh,{size:"small",variant:"body"},Th.t("Status")),gt.createElement(px,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Th.t("Reset"))),gt.createElement(Ch,{size:10}),gt.createElement(mx,{value:e},gt.createElement(Sh,null,t.list.map((n,r)=>gt.createElement(ux,{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:gt.createElement(gt.Fragment,null,gt.createElement(Ch,{direction:"horizontal",size:4}),gt.createElement(kh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(dx,{value:n.id}),onClick:o})))))}i(wh,"FilterSelectorContent");function wc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Jo.createElement("div",null,Jo.createElement(gx,{open:a,align:"end",onOpenChange:o,container:W(),content:Jo.createElement(wh,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Jo.createElement(fh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Jo.createElement(kc,{isSelect:!!n},Jo.createElement(fx,{size:16,color:"black"}),!!n&&Jo.createElement(gh,null)))))}i(wc,"FilterSelector");import{i18n as Sx}from"@lingui/core";import{getCurrentStep as Tx}from"@rango-dev/queue-manager-rango-preset";import{Divider as Ih,GroupedVirtualizedList as Cx,Skeleton as kx,SwapListItem as Ah,Typography as wx}from"@rango-dev/ui";import et,{useCallback as Nh,useEffect as vx,useRef as Ex,useState as bx}from"react";function vh(t,e){let o=[],n=0;do{let r=t[n];r&&(o.push(Math.min(r,e)),e-=r),n++}while(e>0&&n<=t.length);return o}i(vh,"calculateGroupsSoFar");import{css as hx,darkTheme as yx,styled as _r}from"@rango-dev/ui";var vc=hx(),Eh=_r("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),Ec=_r("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${vc}`]:{$$color:"$colors$neutral600",[`.${yx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),bc=_r("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),bh=_r("div",{gap:"$10",display:"flex",flexDirection:"column"}),xh=_r("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var xx=10;function xc(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=bx([]),c=Ex(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=Nh(vh,[]),f=Nh(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,xx),s(d(p,c.current)))},[e.length]);if(vx(()=>{r||f()},[r,f]),r){let h=[1,2];return et.createElement(et.Fragment,null,[h,h].map((m,S)=>et.createElement(Ec,{key:S},et.createElement(bc,null,et.createElement(kx,{variant:"text",width:60,size:"small"}),et.createElement(Ih,{size:16})),et.createElement(Ih,{size:4}),et.createElement(bh,null,m.map((y,k)=>et.createElement(Ah,{isLoading:!0,key:k}))))))}return et.createElement(Cx,{style:{flexGrow:1,minHeight:0},endReached:()=>{c.current<e.length&&f()},groupCounts:a,groupContent:h=>et.createElement(Ec,null,et.createElement(bc,null,et.createElement(wx,{variant:"label",size:"medium",className:vc()},u[h]))),itemContent:(h,g)=>{let m=l[h];if(!m)return null;let S=Tx(m),T=m.steps[0],y=m.steps[m.steps.length-1];return!T||!y?null:et.createElement(Eh,{key:m.requestId},et.createElement(Ah,{className:"widget-history-group-list-swap-item-btn",requestId:m.requestId,creationTime:m.creationTime,status:m.status,onClick:o,currentStep:S,tooltipContainer:W(),onlyShowTime:u[g]===Sx.t("Today"),swapTokenData:{from:{token:{image:T.fromLogo,displayName:T.fromSymbol},blockchain:{image:T.fromBlockchainLogo||""},amount:M(m.inputAmount,6,6),realAmount:m.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:M(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(xc,"HistoryGroupedList");import{i18n as ka}from"@lingui/core";import Wh from"dayjs";var Ph=i(t=>{let e=new Map([["today",{title:ka.t("Today"),swaps:[]}],["week",{title:ka.t("This week"),swaps:[]}],["month",{title:ka.t("This month"),swaps:[]}],["year",{title:ka.t("This year"),swaps:[]}]]);function o(l,p){e.has(l)||e.set(l,{title:l,swaps:[]}),e.get(l)?.swaps.push(p)}i(o,"addYearsToOutput");let n=Wh();t.forEach(l=>{let p=Number(l.creationTime),u=Wh(p);if(n.isSame(u,"day"))e.get("today")?.swaps.push(l);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(l);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(l);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(l);else{let 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 Bx=Ac("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),_x=Ac("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Mx=Ac("div",{"._typography":{color:"$neutral700",[`.${Ax}&`]:{color:"$neutral900"}}}),Dx=i((t,e)=>t?.length?t.filter(o=>_t(o.fromBlockchain,e)||_t(o.toBlockchain,e)||_t(o.toSymbol,e)||_t(o.fromSymbol,e)).length:!1,"isStepContainsText");function Bh(){let t=Lx(),{manager:e,state:o}=Ix(),n=vt(e).map(({swap:E})=>E),[r,a]=Dr(""),[s,c]=Dr(!1),l=!o.loadedFromPersistor,[p,u]=Dr(""),[d,f]=Dr(!1),[h,g]=Dr("all"),m=i(E=>{let I=E.target.value;a(I)},"handleSearch"),{isMultiMode:S}=rt(),T=[{id:Mr.SUCCESS,title:Fe.t("Complete")},{id:Mr.RUNNING,title:Fe.t("Running")},{id:Mr.FAILED,title:Fe.t("Failed")}],y=[{id:"all",title:Fe.t("All")},{id:"swap",title:Fe.t("Swap")},{id:"refuel",title:Fe.t("Refuel")}],k=Lh(()=>!r&&!p&&h==="all"?n:n.filter(E=>{let{inputAmount:I,status:b,steps:L,requestId:N,mode:O}=E;return(!r||_t(I,r)||_t(b,r)||Dx(L,r)||_t(N,r))&&(!p||p===b)&&(h==="all"?!0:h==="swap"?!O||O==="swap":h==="refuel"?O==="refuel":!1)}),[n,r,p,h]),w=!k?.length&&!l,v=i(()=>f(!1),"onCloseModal"),x=i(async()=>{try{await e?.clearQueue(),f(!1)}catch(E){console.log(E)}},"onClear"),A=Lh(()=>!n.some(E=>E.status===Mr.SUCCESS||E.status===Mr.FAILED),[n]);return oe.createElement(se,{header:{title:Fe.t("History"),suffix:oe.createElement(ho,null,oe.createElement(Ic,{id:"widget-history-clear-btn",disabled:A,variant:"ghost",size:"xsmall",onClick:()=>f(!0)},oe.createElement(wa,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},oe.createElement(pe,null,oe.createElement(_x,null,oe.createElement(Wt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Fe.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:m,style:{height:36},value:r}),oe.createElement(wo,{size:10,direction:"horizontal"}),oe.createElement(wc,{filterBy:p,open:s,onOpenChange:E=>c(E),onClickItem:E=>u(E),list:T})),oe.createElement(wo,{size:"16"}),S&&!l&&oe.createElement(oe.Fragment,null,oe.createElement(Px,{items:y,onChange:E=>g(E.id),value:h,type:"secondary"}),oe.createElement(wo,{size:"12"})),oe.createElement(Bx,null,w&&oe.createElement(xh,null,oe.createElement(wo,{size:32}),oe.createElement(Wx,{title:r?Fe.t("No results found"):Fe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Fe.t("Try using different keywords"):Fe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!w&&oe.createElement(xc,{list:k,onSwapClick:t,groupBy:Ph,isLoading:l}))),oe.createElement(re,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},oe.createElement(wo,{size:20}),oe.createElement(Nx,{type:"warning",title:Fe.t("Clear Transaction History"),description:oe.createElement(Mx,null,oe.createElement(wa,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),oe.createElement(wo,{size:"24"}),oe.createElement(wa,{variant:"body",size:"small"},Fe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),oe.createElement(wo,{size:30}),oe.createElement(Ic,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:x},Fe.t("Yes, Clear the history")),oe.createElement(wo,{size:10}),oe.createElement(Ic,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},oe.createElement(wa,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}i(Bh,"HistoryPage");import{i18n as ly}from"@lingui/core";import{Button as SI,Divider as Hc,styled as TI,WarningIcon as CI}from"@rango-dev/ui";import kI from"bignumber.js";import Ce,{useEffect as cy,useState as py}from"react";import{useNavigate as wI}from"react-router-dom";import{i18n as Mh}from"@lingui/core";import{Alert as Fx,Divider as Nc,NoRouteIcon as Ox,Typography as Ux}from"@rango-dev/ui";import Ro from"react";import{styled as $x}from"@rango-dev/ui";var _h=$x("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Wc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Vt(t,e)?Ro.createElement(_h,null,Ro.createElement(Nc,{size:10}),Ro.createElement(Ox,{size:24,color:"gray"}),Ro.createElement(Nc,{size:4}),Ro.createElement(Ux,{variant:"title",size:"small"},Mh.t("No Routes Found")),Ro.createElement(Nc,{size:4}),Ro.createElement(Fx,{title:Mh.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Wc,"SameTokensWarning");import{Alert as zx,Button as Hx}from"@rango-dev/ui";import $h from"react";import{i18n as va}from"@lingui/core";function Dh(t){let e=null;return t===fi?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:va.t("Reset"),title:va.t("Slippage cannot be set lower than 0.01%.")},e):t>un?(e={alertType:"warning",action:"change-settings",actionButtonTitle:va.t("Change"),title:va.t("Caution, your slippage is high!")},e):null}i(Dh,"makeAlerts");function Fh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=C(),{onChangeSettings:a}=t,c=Dh(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(mi),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?$h.createElement(zx,{title:c.title,type:c.alertType,variant:"alarm",action:$h.createElement(Hx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(Fh,"SlippageWarningsAndErrors");import{i18n as Kx}from"@lingui/core";import{IconButton as jx,ReverseIcon as Xx,Skeleton as Yx,Tooltip as Zx,Typography as $r}from"@rango-dev/ui";import ht from"react";import Ea from"bignumber.js";function Uh(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(Uh,"getSlippageColor");function zh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new Ea(e),r=new Ea(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(zh,"getUsdExchangeRate");function Hh(t,e){let o=new Ea(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,Ea.ROUND_DOWN).toFormat(2)}`}i(Hh,"formatTokenValueInUsd");import{darkTheme as Gx,styled as Lc,Typography as Vx}from"@rango-dev/ui";var Qh=Lc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),qh=Lc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${Gx} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),Bc=Lc(Vx,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function _c(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=C(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:f}=go({}),h=fn(d),g=f==="dark",m=n==="default",S={quoteError:a,slippageError:h?.type==="error"?h.message:null},T={quoteWarning:s,slippageWarning:h?.type==="warning"?h.message:null},y=p?.swaps[0]?.from||c,k=p?.swaps[p?.swaps.length-1]?.to||l,w=m?y:k,v=m?k:y,x=Number(m?p?.outputAmount:p?.requestAmount),A=Number(m?p?.requestAmount:p?.outputAmount),E=x||w.usdPrice,I=A||v.usdPrice,{rawValue:b,displayValue:L}=zh({toTokenUsdPrice:I,fromTokenUsdPrice:E});return ht.createElement(Qh,null,ht.createElement($r,{variant:S||T?"label":"body",size:S||T?"medium":"small",color:Uh({error:S,warning:T,isDarkTheme:g})},Kx.t("Slippage:")," ",d,"%"),u?ht.createElement(Yx,{height:16,width:104,variant:"rounded"}):E&&I&&ht.createElement(qh,null,ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(Bc,{className:"rate-text",variant:"body",size:"small"},v.symbol),ht.createElement(jx,{id:"widget-home-page-change-rate-button",onClick:r},ht.createElement(Xx,{size:14,color:"secondary"})),ht.createElement(Zx,{container:W(),side:"top",sideOffset:4,content:ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},b)},ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},L)),ht.createElement(Bc,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement($r,{color:"neutral600",variant:"body",size:"small"},"~",Hh(Number(b),w.usdPrice))))}i(_c,"SwapMetrics");import{i18n as nI}from"@lingui/core";import{Header as rI}from"@rango-dev/ui";import vo,{useEffect as iI,useState as aI}from"react";import{i18n as Rx}from"@lingui/core";import{Divider as Dc,FullExpandedQuote as eI,Typography as tI}from"@rango-dev/ui";import ve from"react";import{styled as Mc}from"@rango-dev/ui";var Gh=Mc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Vh=Mc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Kh=Mc("div",{width:"146px"});import{i18n as Fr}from"@lingui/core";import{Select as Jx}from"@rango-dev/ui";import jh from"react";function ba(t){let{updateQuotePartialState:e,sortStrategy:o}=z()(),n=[{value:"SMART",label:Fr.t("Smart Routing")},{value:"FEE",label:Fr.t("Lowest Fee")},{value:"SPEED",label:Fr.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Fr.t("Maximum Return")},{value:"PRICE",label:Fr.t("Maximum Output")}];return jh.createElement(Kh,null,jh.createElement(Jx,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(ba,"SelectStrategy");var Xh=3;function Or(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:c}=t,{selectedQuote:l,quotes:p,updateQuotePartialState:u,fromToken:d,toToken:f,sortStrategy:h,error:g}=z()(),{slippage:m,customSlippage:S}=C(),{findToken:T}=C(),y=c||W(),k=!!p&&p.results.length,w=S??m,{config:{__UNSTABLE_OR_INTERNAL__:v}}=C(),x=i(I=>{if(!d||!f||!p)return null;let b={requestAmount:p.requestAmount,validationStatus:null,...I};return En({currentQuote:b,userSlippage:w,findToken:T})},"getQuoteWarning"),A=g?.type===0||g?.type===1,E=p?.results?Ni(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Vh,null,ve.createElement(tI,{size:"xmedium",variant:"title"},Rx.t("Sort by")),ve.createElement(ba,{container:y})),ve.createElement(Dc,{size:"10"})),e&&Array.from({length:Xh},(I,b)=>ve.createElement(ve.Fragment,{key:b},s?ve.createElement(eI,{campaignTag:v?.campaignTag,loading:!0}):ve.createElement(xr,{tagHidden:!1,type:"list-item",expanded:!1}),b!==Xh-1&&ve.createElement(Dc,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?E.map((I,b)=>{let L=x(I),N=oc(I.swaps),O=E.length-1===b;return ve.createElement(ve.Fragment,{key:I.requestId},ve.createElement(Yo,{id:"widget-quotes-quote-info-container",showModalFee:r,container:y,selected:l?.requestId===I.requestId,tagHidden:!1,quote:{...I,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:N?.options||null,warning:L,fullExpandedMode:s,onClick:q=>{N||u("warning",L),u("error",N?.options||null),o(q)},type:"list-item"}),!O&&ve.createElement(Dc,{size:16}))}):A&&ve.createElement(Gh,null,ve.createElement(Sr,{size:s?"large":"small",error:g,fetch:n}))))}i(Or,"Quotes");import{darkTheme as oI,styled as Yh}from"@rango-dev/ui";var Zh=Yh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${oI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Jh=Yh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var sI=100;function $c(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=aI(!1),l=s?"":"is-hidden",{config:p}=C(),u=p?.variant==="full-expanded",d=_o();return iI(()=>{let f=null;return a?f=setTimeout(()=>{c(!0)},sI):(c(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),vo.createElement(Zh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Qi()} widget-expanded-quotes-container`,id:kt.EXPANDED_BOX_ID},vo.createElement(rI,{title:nI.t("Routes"),suffix:vo.createElement(vo.Fragment,null,vo.createElement(ba,{container:d}),vo.createElement(Go,{container:d,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),vo.createElement(Jh,null,vo.createElement(Or,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:_o(),onClickOnQuote:n,fullExpandedMode:u})))}i($c,"ExpandedQuotes");import{i18n as iy}from"@lingui/core";import{SwapInput as ay}from"@rango-dev/ui";import uI from"bignumber.js";import Ur from"react";import{ReverseIcon as pI}from"@rango-dev/ui";import Oc from"react";import{keyframes as lI,styled as Rh}from"@rango-dev/ui";var Fc=450,cI=lI({"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)"}}),ey=Rh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),ty=Rh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${cI} ${Fc}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 Uc(){let t=z().use.switchFromAndTo();return Oc.createElement(ey,null,Oc.createElement(ty,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Fc),t()}},Oc.createElement(pI,{size:12})))}i(Uc,"SwitchFromAndToButton");import{styled as oy}from"@rango-dev/ui";var ny=oy("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),ry=oy("div",{position:"relative"});function zc(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:c,toBlockchain:l,setInputAmount:p,sanitizeInputAmount:u,inputAmount:d,inputUsdValue:f,outputAmount:h,outputUsdValue:g,selectedQuote:m}=z()(),{swapMode:S}=rt(),{connectedWallets:T,getBalanceFor:y}=C(),k=a?y(a):null,w=pi(k)?.amount??"0",v=k?new uI(k.amount).shiftedBy(-k.decimals):ue,x=!!s&&Iu(T,s.name),A=!Hs(m,d,f),E=!Hs(m,d,g),I=!f||!g||!g.gt(0)?null:Yt(f.toString(),g.toString());return Ur.createElement(ny,null,Ur.createElement(ry,null,Ur.createElement(ay,{label:iy.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:w,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:d,usdValue:A?void 0:M(f,4,4),realUsdValue:A?void 0:f?.toString(),error:A?ie().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:x,tooltipContainer:W(),onSelectMaxBalance:()=>{let b=v.isGreaterThan(ue)?v.toFixed():"";p(b)},anyWalletConnected:T.length>0}),S==="swap"&&Ur.createElement(Uc,null)),Ur.createElement(ay,{selectionType:S==="swap"?"token":"chain",sharpBottomStyle:!r&&(!!m||e),label:iy.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:M(Yt(f,g),2,2),warningLevel:Zt(I??0),price:{value:M(h,6,6),usdValue:E?void 0:M(g,4,4),realValue:h?.toString(),realUsdValue:E?void 0:g?.toString(),error:E?ie().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}i(zc,"Inputs");import{warn as dI}from"@rango-dev/logging-core";import{useCallback as mI,useEffect as fI,useRef as gI,useState as hI}from"react";function sy(){let{fetch:t,loading:e,cancelFetch:o}=ga({request:async(n,r)=>await dt().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(sy,"useFetchAllQuotes");var yI=600;function xa({refetchQuote:t}){let{fetch:e,cancelFetch:o}=sy(),{excludeLiquiditySources:n,routing:r}=C().config,{connectedWallets:a}=C(),c=a.some(be=>be.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:f,sortStrategy:h,resetQuote:g,error:m,warning:S,setSelectedQuote:T,updateQuotePartialState:y}=z()(),{slippage:k,customSlippage:w,affiliatePercent:v,affiliateRef:x,affiliateWallets:A,fetchStatus:E}=C(),I=C().getLiquiditySources(),b=C().getDisabledLiquiditySources(),L=C().excludeLiquiditySources(),{findToken:N}=C(),{swapMode:O}=rt(),[q,j]=hI(!0),ee=gI(u),P=w??k,Y=!l||!p||Vt(l,p)||!Yn(u),ce=i(be=>{j(be)},"resetState"),Ee=i(be=>{let{fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J}=be;if(q||ce(!0),!Y&&He&&Xe){g();let U=Vd({fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});mn("experimental",r)&&(U.experimental=!0),mn("avoidNativeFee",r)&&(U.avoidNativeFee=!0),mn("enableCentralizedSwappers",r)&&(U.enableCentralizedSwappers=!0),r?.maxLength&&(U.maxLength=r.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let Qe=Ni(h,de.results),ot=_d(f,Qe,de.requestAmount);j(!1),y("quotes",de),T(ot),de.results?.length&&ot&&hn({type:"routeRequested",payload:{...$n(ot),routeCount:de.results.length}}),ha({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let co=ot&&En({currentQuote:ot,userSlippage:P,findToken:N});y("warning",co)}).catch(de=>{let Qe=ya(de);Qe.type===0?hn({type:"routeNotFound",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,sourceTokenSymbol:He.symbol,sourceTokenAddress:He.address,destinationTokenSymbol:Xe.symbol,destinationTokenAddress:Xe.address,inputAmountUsd:d?d.toNumber():null}}):Qe.type===1&&hn({type:"routeFetchFailed",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,errorCode:String(de?.response?.status??"")}}),(Qe.type===0||Qe.type===1)&&g(),Qe.type!==2&&(y("error",Qe),j(!1),dI(new Error("quote error"),{tags:{...Qe,type:Je[Qe.type],requestBody:U}}))})}},"fetch"),Gt=mI(ri(be=>{Ee(be)},yI),[Y]);return fI(()=>{if(!t){j(!1);return}if(E!=="success")return;if(Y){j(!1),(f||m||S)&&g();return}if(!Yn(u)&&d?.eq(0)){ce(!1),o();return}g(),ce(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Gt),ee.current=u,be({inputAmount:u,fromToken:l,toToken:p,liquiditySources:I,excludeLiquiditySources:L,disabledLiquiditySources:b,slippage:P,affiliateRef:x,affiliatePercent:v,affiliateWallets:A,contractCall:c}),o},[E,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,I?.length,n,b.length,P,x,v,c,JSON.stringify(A)]),{fetch:()=>Ee({inputAmount:u,fromToken:l,toToken:p,liquiditySources:I,excludeLiquiditySources:L,disabledLiquiditySources:b,slippage:P,affiliateRef:x,affiliatePercent:v,affiliateWallets:A,contractCall:c}),loading:q}}i(xa,"useSwapInput");var vI=TI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),EI=300;function uy(){let t=wI(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:f}=z()(),[h,g]=py(!1),{isLargeScreen:m,isExtraLargeScreen:S}=aa(),{fetch:T,loading:y}=xa({refetchQuote:a}),{config:k,fetchStatus:w,connectedWallets:v,customSlippage:x,slippage:A,setSlippage:E,setCustomSlippage:I}=C(),{isActiveTab:b}=ne(),[L,N]=py(!1),O=x!==null?x:A,{swapMode:q}=rt(),j=fn(O),P=Hd({fetchMetaStatus:w,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=Bu(m,S,k?.variant),Y=!!n&&!!e&&!!o&&new kI(n).gt(0)&&!Rd(e,o),ce=Y&&w==="success"&&y,Ee=j?.quoteValidation||c,He=(!Z||Z&&l?.results.length)&&(Ee||s),Xe=!!e&&!!o,St=Xe&&!!j,ct=(r||s)&&!L?T:void 0,B=i(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},EI)):t(J)},"onHandleNavigation"),V=i(J=>{r?.requestId!==J.requestId&&(r&&hn({type:"routeChanged",payload:{sourceChain:J.swaps[0]?.from.blockchain??"",destinationChain:J.swaps[J.swaps.length-1]?.to.blockchain??"",fromRouteId:r.requestId,toRouteId:J.requestId}}),N(!1),p(J))},"onClickOnQuote"),H=i(J=>{if(J){if(di.includes(J)){E(J),I(null);return}I(J)}},"onChangeSlippage"),X=i(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");cy(()=>{u(),f("refetchQuote",!0)},[]),cy(()=>{g(Y)},[Y]);let G=i(()=>{P.action==="connect-wallet"?ju({type:"clickConnectWallet"},()=>{B($.wallets)}):P.action==="confirm-warning"?N(!0):r&&(te({type:"swapInitiated",payload:{...$n(r),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(vI,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(SI,{id:`widget-swap-${P.action}-btn`,type:"primary",size:"large",disabled:P.disabled||!b,prefix:P.action==="confirm-warning"&&Ce.createElement(CI,null),fullWidth:!0,onClick:G},P.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:k.title||(q==="swap"?ly.t("Swap"):ly.t("Refuel")),suffix:Ce.createElement(Go,{hidden:Z?["refresh"]:void 0,onClickRefresh:ct,onClickHistory:()=>B($.swaps),onClickSettings:()=>{B($.settings)}})}},Ce.createElement(pe,null,Ce.createElement(zc,{fetchingQuote:ce,fetchMetaStatus:w,isExpandable:Z,onClickToken:X}),Ce.createElement(Hc,{size:"2"}),Z?null:Ce.createElement(Yo,{quote:r,loading:ce,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:Ee,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{f("refetchQuote",!1),B($.routes)}:void 0}),Xe&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Hc,{size:8}),Ce.createElement(_c,{quoteError:s,quoteWarning:Ee,fromToken:e,toToken:o,quote:r,loading:ce})),He?Ce.createElement(Ce.Fragment,null,Ce.createElement(Cr,{warning:Ee,error:s,skipAlerts:!!j,couldChangeSettings:!0,refetchQuote:T,showWarningModal:L,confirmationDisabled:!b,onOpenWarningModal:()=>N(!0),onCloseWarningModal:()=>N(!1),onChangeSlippage:H,onConfirmWarningModal:()=>{N(!1),d(!0),B($.confirmSwap)},onChangeSettings:()=>B($.settings)})):null,St&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Hc,{size:"10"}),Ce.createElement(Fh,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Wc,null))),Z?Ce.createElement($c,{loading:ce,onClickOnQuote:V,fetch:T,onClickRefresh:ct,isVisible:h}):null)}i(uy,"Home");import{i18n as dy}from"@lingui/core";import{Alert as bI,Divider as xI,List as II,ListItemButton as AI,Radio as NI,RadioRoot as WI,Typography as PI}from"@rango-dev/ui";import Ut from"react";function Eo(){let{setLanguage:t,language:e,config:o}=C(),n=Ou,r=o?.language||gn;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||gn),resetLanguage:()=>t(null)}}i(Eo,"useLanguage");function my(){let{activeLanguage:t,changeLanguage:e,languages:o}=Eo(),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:Ut.createElement(PI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Ut.createElement(NI,{value:s}),start:Ut.createElement(l,null)}});return Ut.createElement(se,{header:{title:dy.t("Language")}},Ut.createElement(pe,null,Ut.createElement(bI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Ut.createElement(xI,{size:"8"}),Ut.createElement(WI,{value:t},Ut.createElement(II,{type:Ut.createElement(AI,{title:dy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(my,"LanguagePage");import{i18n as io}from"@lingui/core";import{Button as DI,Checkbox as $I,Image as FI,ListItemButton as OI,NotFound as UI,Typography as zI}from"@rango-dev/ui";import tt,{useState as HI}from"react";import{Checkbox as _I,Skeleton as gy}from"@rango-dev/ui";import Hr from"react";import{styled as Qc}from"@rango-dev/ui";var zr=Qc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),qc=Qc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Gc=Qc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as LI,styled as BI}from"@rango-dev/ui";var fy=BI(LI,{height:61});var MI=30;function Vc(){return Hr.createElement(zr,null,Array.from(Array(MI),(t,e)=>Hr.createElement(fy,{hasDivider:!0,key:e,start:Hr.createElement(gy,{variant:"circular",width:35,height:35}),title:Hr.createElement(gy,{variant:"text",size:"large",width:90}),end:Hr.createElement(_I,{checked:!1})})))}i(Vc,"LoadingLiquiditySourceList");function Kc({sourceType:t}){let e=C().fetchStatus,o=C().swappers(),n=C().getDisabledLiquiditySources(),[r,a]=HI(""),s=C().toggleLiquiditySource,c=C().isInCampaignMode(),l=hi(o,n),p={Exchanges:io.t("Exchanges"),Bridges:io.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let d=l.filter(y=>u.includes(y.type)),f=d.length===d.filter(y=>y.selected).length,h=t==="Exchanges"?"exchanges":"bridges",g=i(()=>{let y=!f;te({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:y?"selectAll":"deselectAll",previousSelectedCount:d.filter(k=>k.selected).length,totalCount:d.length}}),d.forEach(k=>{f?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),m=d.map(y=>{let{selected:k,groupTitle:w,logo:v,id:x,...A}=y;return{id:`widget-setting-liquidity-source-${gu(x.toLowerCase())}-item-btn`,start:tt.createElement(FI,{src:v,size:22,type:"circular"}),onClick:()=>{c||(te({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:"individual",sources:[{id:w,enabled:!k}]}}),s(w))},end:tt.createElement($I,{checked:k,disabled:c}),title:tt.createElement(zI,{variant:"title",size:"xmedium"},io.t(w)),selected:k,groupTitle:w,logo:v,...A}}),S=i(y=>{let k=y.target.value;a(k)},"handleSearch"),T=m;return r&&(T=m.filter(y=>_t(y.groupTitle,r))),tt.createElement(se,{header:{title:io.t(t),suffix:tt.createElement(qc,null,tt.createElement(DI,{id:`widget-liquidity-source-${f?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},f?io.t("Deselect all"):io.t("Select all")))}},tt.createElement(pe,{view:!0},tt.createElement(Wt,{value:r,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:io.t("Search {sourceType}",{sourceType:p[t]}),onChange:S}),e==="loading"&&tt.createElement(Vc,null),!T.length&&r?tt.createElement(Gc,null,tt.createElement(UI,{title:io.t("No results found"),description:io.t("Try using different keywords")})):e==="success"&&tt.createElement(zr,{disabled:c,className:"widget-liquidity-source-list"},T.map(y=>{let{groupTitle:k,...w}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(OI,{style:{height:"61px"},...w,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(Kc,"LiquiditySourcePage");import{i18n as QI}from"@lingui/core";import Ia from"react";import{useNavigate as qI}from"react-router-dom";function hy(){let t=qI(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=xa({refetchQuote:n}),p=i(f=>{r(f),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${$.settings}`,d=`../${$.wallets}`;return Ia.createElement(se,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:QI.t("Routes"),suffix:Ia.createElement(Go,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Ia.createElement(pe,null,Ia.createElement(Or,{fetch:c,loading:l,onClickOnQuote:p})))}i(hy,"RoutesPage");import{i18n as vy}from"@lingui/core";import{Divider as Ey,getCategoriesCount as eA,SelectableCategoryList as tA}from"@rango-dev/ui";import ao,{useMemo as oA,useState as by}from"react";import{useNavigate as nA}from"react-router-dom";import{i18n as jc}from"@lingui/core";import{Divider as jI,Image as XI,ListItemButton as YI,NotFound as ZI,Typography as wy}from"@rango-dev/ui";import yt,{useEffect as JI,useState as RI}from"react";var yy=i((t,e,o)=>t.filter(n=>ii(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as GI,styled as Sy}from"@rango-dev/ui";var Ty=Sy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Aa=Sy(vl,{padding:0,margin:0,listStyle:"none",[`& ${GI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as VI,Skeleton as Cy}from"@rango-dev/ui";import Na from"react";var KI=20;function ky(){return Na.createElement(Aa,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(KI),t=>Na.createElement(VI,{key:t,hasDivider:!0,start:Na.createElement(Cy,{variant:"circular",width:35,height:35}),title:Na.createElement(Cy,{variant:"text",size:"large",width:90})})))}i(ky,"LoadingBlockchainList");function Xc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=RI(e),{fetchStatus:l}=C();JI(()=>{c([...yy(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?yt.createElement(ZI,{title:jc.t("No results found"),description:jc.t("Try using different keywords")}):yt.createElement(Aa,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(YI,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(XI,{src:u.logo,size:30}),title:yt.createElement(wy,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(wy,{variant:"label",size:"large"},jc.t("Select Chain")),yt.createElement(jI,{size:4})),yt.createElement(Ty,null,l==="loading"&&yt.createElement(ky,null),l==="success"&&p()))}i(Xc,"BlockchainList");function Wa(t){let{type:e}=t,o=Ve(),[n,r]=by(""),[a,s]=by("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=C(),f=nA(),{swapMode:h}=rt(),g=C().blockchains({type:e}),m=C().tokens(),S=oA(()=>uu(g,m),[g.length,m.length]),T=eA(S),y=!t.hideCategory&&T!==1,k=i(w=>{if(e==="custom-token")f(`..?blockchain=${w.name}`,{replace:!0});else{if(te({type:"chainFilterApplied",payload:{side:e==="source"?"from":"to",chain:w.name,filterSource:"expanded"}}),e==="source")l(w);else if(h==="swap")c(w);else{let v=d(w);v&&p({token:v,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return ao.createElement(se,{header:{title:vy.t("Select Chain")}},ao.createElement(pe,{view:!0},y&&ao.createElement(ao.Fragment,null,ao.createElement(tA,{setCategory:s,category:a,blockchains:S,isLoading:u==="loading"}),ao.createElement(Ey,{size:24})),ao.createElement(Wt,{value:n,autoFocus:!0,placeholder:vy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:w=>r(w.target.value)}),ao.createElement(Ey,{size:16}),ao.createElement(Xc,{list:S,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:k})))}i(Wa,"SelectBlockchainPage");import{i18n as Ba}from"@lingui/core";import{Divider as By,Spinner as SA}from"@rango-dev/ui";import bo,{useEffect as TA,useState as CA}from"react";import{useNavigate as kA}from"react-router-dom";import{i18n as Jc}from"@lingui/core";import{BlockchainsChip as Pa,Divider as Ny,Image as Wy,Skeleton as cA,Tooltip as pA,Typography as Rc}from"@rango-dev/ui";import xe from"react";import{useEffect as aA}from"react";var xy=["ETH"];function Yc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(rA),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(iA(s)),r=n.splice(a)}return{list:n,more:r}}i(Yc,"prepare");function rA(t,e){let o=xy,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(rA,"sortByMostUsedBlockchains");function iA(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(iA,"generateSortByPreferredBlockchainsFor");function Iy(t,e){return!!e.list.find(o=>o.name===t)}i(Iy,"isInVisibleList");function Zc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=C();aA(()=>{if(e?.selected){let a=Yc(t,o,e);Iy(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Yc(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Zc,"usePrepareBlockchainList");import{styled as sA}from"@rango-dev/ui";var Ay=sA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var uA=6,dA=12;function ep(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=ne(),c=Zc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=C(),p=z().use.resetToBlockchain(),u=z().use.resetFromBlockchain(),d=c.more.length>0,f=c.more[0],h=c.more.length===1&&f,g=!h&&d;return xe.createElement(xe.Fragment,null,!s&&xe.createElement(xe.Fragment,null,xe.createElement(Ny,{size:12}),xe.createElement(Rc,{variant:"label",size:"large"},Jc.t("Select Chain"))),xe.createElement(Ny,{size:12}),xe.createElement(Ay,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?uA:dA),(m,S)=>xe.createElement(cA,{key:S,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(Pa,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(Rc,{variant:"body",size:"xsmall",color:"secondary500"},Jc.t("All"))),c.list.map(m=>xe.createElement(pA,{key:m.name,content:m.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(Pa,{className:"widget-blockchains-section-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>r(m)},xe.createElement(Wy,{src:m.logo,size:30})))),h?xe.createElement(Pa,{className:"widget-blockchains-section-only-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},xe.createElement(Wy,{src:f.logo,size:30})):null,g?xe.createElement(Pa,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(Rc,{variant:"body",size:"xsmall",color:"secondary500"},Jc._("More +{count}",{count:c.more.length}))):null)))}i(ep,"BlockchainsSection");import{useCallback as fA,useRef as gA,useState as tp}from"react";function op(){let t=C().blockchains(),e=gA(null),{customTokens:o}=C(),[n,r]=tp(!1),[a,s]=tp([]),[c,l]=tp(null),p=i(async(f,h)=>{l(null),r(!0),s([]);try{let g=await dt().searchCustomTokens({query:f,blockchain:h},{signal:e.current?.signal}),m=new Set(o().map(y=>jt(y))),S=new Set(t.map(y=>y.name)),T=g.tokens.filter(y=>S.has(y.blockchain)&&!m.has(jt(y)));s(T),r(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&r(!1)}},"fetch"),u=fA(ri((f,h)=>{e.current?.signal.aborted||p(f,h)},600),[t.length]);return{fetch:(f,h)=>{e.current=new AbortController,s([]),r(!0),u(f,h)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}i(op,"useSearchCustomTokens");function Py(t){return t.trim()?"search":"default "}i(Py,"getTokenSelectionMethod");function La(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}i(La,"shouldSearchForCustomTokens");function Ly(t,e,o,n,r){let a=[...t];return La(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(Ly,"prepareTokensList");function _a(t){let{type:e}=t,o=kA(),n=Ve(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=C(),{fetch:d,loading:f,tokens:h,cancel:g}=op(),[m,S]=CA(""),T=e==="source"?r:a,y=T?.name??"",k=C().blockchains({type:e}),w=C().tokens({type:e,blockchain:y,searchFor:m,getBalanceFor:u}),v=Ly(w,h,m,f,T?.name),x=i(N=>{e==="source"?l(N):p(N)},"updateBlockchain"),A=i(N=>{e==="source"?s({token:N,meta:{blockchains:k}}):c({token:N,meta:{blockchains:k}})},"updateToken"),E=e==="source"?"from":"to",I=i(N=>{te({type:"chainFilterApplied",payload:{side:E,chain:N.name,filterSource:"featured"}})},"emitChainFilterApplied"),b=i(N=>{te({type:"tokenSelected",payload:{side:E,tokenName:N.name,tokenSymbol:N.symbol,tokenAddress:N.address,chain:N.blockchain,selectionMethod:Py(m),activeChainFilter:y||"all"}})},"emitTokenSelected"),L={source:Ba.t("Source"),destination:Ba.t("Destination")};return TA(()=>(La(w,m,T?.name)&&d(m,T?.name??void 0),()=>{g()}),[w.length,m,T?.name]),bo.createElement(se,{header:{title:Ba.t("Swap {type}",{type:L[e]})}},bo.createElement(pe,null,bo.createElement(ep,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o($.blockchains),onChange:N=>{I(N),x(N)}}),bo.createElement(By,{size:24}),bo.createElement(Wt,{value:m,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:Ba.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>S(""),onChange:N=>S(N.target.value),suffix:La(w,m,T?.name)&&f?bo.createElement(SA,{size:12,color:"secondary"}):void 0}),bo.createElement(By,{size:16}),bo.createElement(Pr,{list:v,selectedBlockchain:y,searchedFor:m,type:e,onChange:N=>{b(N),A(N);let O=k.find(q=>N.blockchain===q.name);O&&x(O),n()}})))}i(_a,"SelectSwapItemsPage");import{i18n as ap}from"@lingui/core";import{Alert as jA,Button as XA,styled as YA}from"@rango-dev/ui";import en from"react";import{useInRouterContext as ZA,useSearchParams as JA}from"react-router-dom";import{i18n as Oy}from"@lingui/core";import{Alert as bA,Divider as rp,InfoIcon as xA,SlippageIcon as IA,TextField as AA,Tooltip as NA,Typography as Uy}from"@rango-dev/ui";import Ue from"react";import{Chip as wA,styled as Qr,TextField as vA}from"@rango-dev/ui";var _y=Qr("div",{paddingTop:"$5",padding:"$10 $5"}),My=Qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${vA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Dy=Qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Ma=Qr("div",{maxWidth:"280px",padding:"$10"}),$y=Qr(wA,{width:"61px",flexShrink:0});import{i18n as np}from"@lingui/core";import{Typography as EA}from"@rango-dev/ui";import qr from"react";function Fy(){return qr.createElement(Ma,null,qr.createElement(EA,{variant:"label",size:"medium",color:"neutral700"},np.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),qr.createElement("br",null),qr.createElement("br",null),qr.createElement("b",null,np.t("Warning")),":\xA0",np.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(Fy,"SlippageTooltipContent");function ip(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=C(),r=o!==null?fn(o):null,a=o??t,s=i((u,d)=>{u!==d&&te({type:"settingsChanged",payload:{setting:"slippage",previousValue:u,newValue:d}})},"emitSlippageChanged"),c=i(u=>{let d=u.target.value,f=parseFloat(d);if(isNaN(f))return n(null);let h=f;f>er&&(h=er),s(a,h),n(h)},"onSlippageValueChange"),l=i(u=>{s(a,u),o!==null&&n(null),e(u)},"onClickSlippageChip"),p=i(u=>{let d=u.target,f=d.value;Su(f)||(d.value=f.slice(0,-1))},"onInput");return Ue.createElement(_y,null,Ue.createElement(Dy,null,Ue.createElement(IA,{size:16,color:"gray"}),Ue.createElement(rp,{direction:"horizontal",size:4}),Ue.createElement(Uy,{variant:"title",size:"xmedium"},Oy.t("Slippage tolerance per swap")),Ue.createElement(rp,{direction:"horizontal",size:4}),Ue.createElement(NA,{container:W(),side:"top",sideOffset:4,content:Ue.createElement(Fy,null)},Ue.createElement(xA,{color:"gray"}))),Ue.createElement(My,null,di.map((u,d)=>{let f=`slippage-${d}`;return Ue.createElement($y,{id:`widget-slippage-chip-${u.toString()}%-btn`,key:f,onClick:()=>l(u),selected:o===null&&u===t,label:`${u.toString()}%`})}),Ue.createElement(AA,{type:"number",min:"0.01",max:"30",step:"0.01",status:r?.type||(o?"success":"default"),id:"widget-slippage-chip-text-input",onInput:p,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:c,suffix:o&&Ue.createElement(Uy,{variant:"body",size:"small"},"%"),placeholder:Oy.t("Custom")})),r&&Ue.createElement(Ue.Fragment,null,Ue.createElement(rp,{size:10}),Ue.createElement(bA,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(ip,"Slippage");import{i18n as Et}from"@lingui/core";import{AutoThemeIcon as zy,BridgesIcon as WA,ChevronRightIcon as Da,DarkModeIcon as Hy,Divider as Gr,ExchangeIcon as PA,InfinityIcon as LA,InfoIcon as BA,LanguageIcon as _A,LightModeIcon as Qy,List as MA,ListItem as DA,ListItemButton as $A,Skeleton as FA,styled as OA,Switch as UA,Tabs as zA,TargetIcon as HA,Tooltip as QA,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as qA}from"react-router-dom";var GA=OA("div",{width:"202px",height:"$40"}),VA=[{id:"light",icon:D.createElement(Qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Light"))},{id:"dark",icon:D.createElement(Hy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Dark"))},{id:"auto",icon:D.createElement(zy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Auto"))}],KA=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(zy,{...e});case"dark":return D.createElement(Hy,{...e});default:return D.createElement(Qy,{...e})}},"getThemeIcon");function qy(){let t=qA(),{theme:e}=C().config,{setTheme:o,theme:n}=C(),{activeLanguage:r,languages:a}=Eo(),s=a.find(P=>P.local===r)?.label,c=C().fetchStatus,l=C().swappers(),p=C().getDisabledLiquiditySources(),{config:{features:u}}=C(),d=C().customTokens(),f=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),m=nt("customTokens",u),S=C().infiniteApprove,T=C().toggleInfiniteApprove,y=hi(l,p),k=y.filter(P=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(P.type)),w=k.length,v=k.filter(P=>P.selected).length,x=y.filter(P=>P.type==="DEX"),A=x.length,E=x.filter(P=>P.selected).length,I=i((P,Z)=>{switch(c){case"loading":return D.createElement(FA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(lt,{variant:"body",size:"medium",color:"$error500"},Et.t("Loading failed"));default:return D.createElement(lt,{variant:"body",size:"medium"},`${P} / ${Z}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Bridges")),end:D.createElement(D.Fragment,null,I(v,w),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(WA,{color:"gray",size:16})},L={id:"widget-setting-exchange-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Exchanges")),end:D.createElement(D.Fragment,null,I(E,A),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),start:D.createElement(PA,{color:"gray",size:16}),onClick:()=>t($.exchanges)},N={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},`${d.length}`),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),start:D.createElement(HA,{color:"gray",size:16}),onClick:()=>t($.customTokens)},O={id:"widget-setting-language-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Language")),start:D.createElement(_A,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},s),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),onClick:()=>t($.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Infinite approval")),D.createElement(Gr,{direction:"horizontal",size:4}),D.createElement(QA,{side:"top",sideOffset:4,container:W(),content:D.createElement(Ma,null,D.createElement(lt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,Et.t("Warning")),":\xA0",Et.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(BA,{color:"gray"}))),start:D.createElement(LA,{color:"gray",size:16}),end:D.createElement(UA,{checked:S}),onClick:()=>{te({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:S,newValue:!S}}),T()}},j={id:"widget-setting-theme-item-btn",type:D.createElement(DA,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Theme")),end:D.createElement(GA,null,D.createElement(zA,{container:W(),items:VA,value:n,className:"widget-setting-theme-item-tabs-container",onChange:P=>o(P.id),type:"primary",borderRadius:"small"})),start:KA(n)},ee=h?[]:[b,L];return m||ee.push(N),g||ee.push(O),ee.push(q),!e?.singleTheme&&!f&&ee.push(j),D.createElement(MA,{type:D.createElement($A,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}i(qy,"SettingsLists");var RA=YA("div",{paddingLeft:"$8"});function Gy(){let{isInCampaignMode:t,updateCampaignMode:e}=C(),o=t(),[,n]=JA(),r=ZA(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return en.createElement(se,{header:{title:ap.t("Settings")}},en.createElement(pe,null,o&&en.createElement(jA,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:ap.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:en.createElement(RA,null,en.createElement(XA,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},ap.t("Reset")))}),en.createElement(ip,null),en.createElement(qy,null)))}i(Gy,"SettingsPage");import{i18n as c0}from"@lingui/core";import{cancelSwap as p0}from"@rango-dev/queue-manager-rango-preset";import{useManager as u0}from"@rango-dev/queue-manager-react";import{Alert as d0}from"@rango-dev/ui";import vp from"react";import{useParams as m0}from"react-router-dom";import{i18n as Ht}from"@lingui/core";import{getCurrentNamespaceOfOrNull as XN,getCurrentStep as YN,getRelatedWalletOrNull as ZN}from"@rango-dev/queue-manager-rango-preset";import{Button as OS,Divider as JN,QuoteCost as RN,StepDetails as e0,Typography as yp}from"@rango-dev/ui";import{useWallets as t0}from"@rango-dev/wallets-react";import US from"bignumber.js";import{PendingSwapNetworkStatus as Hn}from"rango-types";import we,{useEffect as Sp,useRef as Tp,useState as Ga}from"react";import{useNavigate as o0}from"react-router-dom";import{i18n as xo}from"@lingui/core";var eN=[xo.t("Sunday"),xo.t("Monday"),xo.t("Tuesday"),xo.t("Wednesday"),xo.t("Thursday"),xo.t("Friday"),xo.t("Saturday")];function Vy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?xo.t("Today"):`${eN[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Vy,"timeSince");function Ky(t){return t.finishTime?Vy(parseInt(t.finishTime)):Vy(parseInt(t.creationTime))}i(Ky,"getSwapDate");import Vr from"react";import{i18n as $a}from"@lingui/core";import{Button as jy,Divider as sp,MessageBox as tN}from"@rango-dev/ui";import Io from"react";var Xy=i(({onCancel:t,onClose:e})=>Io.createElement(Io.Fragment,null,Io.createElement(sp,{size:20}),Io.createElement(tN,{type:"error",title:$a.t("Cancel Swap"),description:$a.t("Are you sure you want to cancel this swap?")}),Io.createElement(sp,{size:32}),Io.createElement(jy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},$a.t("Yes, Cancel it")),Io.createElement(sp,{size:12}),Io.createElement(jy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},$a.t("No, Continue"))),"CancelContent");import{i18n as Fa}from"@lingui/core";import{Button as Yy,Divider as lp,MessageBox as oN,Typography as nN}from"@rango-dev/ui";import so from"react";var Zy=i(({onDelete:t,onClose:e})=>so.createElement(so.Fragment,null,so.createElement(lp,{size:20}),so.createElement(oN,{type:"error",title:Fa.t("Delete Transaction"),description:Fa.t("Are you sure you want to delete this swap?")}),so.createElement(lp,{size:32}),so.createElement(Yy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Fa.t("Yes, Delete it")),so.createElement(lp,{size:12}),so.createElement(Yy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},so.createElement(nN,{variant:"title",size:"medium",color:"primary"},Fa.t("No, Cancel")))),"DeleteContent");import{i18n as rN}from"@lingui/core";import{Button as iN,Divider as aN,MessageBox as sN}from"@rango-dev/ui";import tn from"react";var Jy=i(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return tn.createElement(tn.Fragment,null,tn.createElement(sN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&tn.createElement(tn.Fragment,null,tn.createElement(aN,{size:"30"}),tn.createElement(iN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},rN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as bN,getCurrentStep as xN,getRelatedWalletOrNull as IN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as AN}from"@rango-dev/ui";import{useWallets as NN}from"@rango-dev/wallets-react";import iS from"react";import{i18n as Un}from"@lingui/core";import{Alert as tS,Button as pN,Checkbox as uN,Divider as za,Image as dN,MessageBox as mN,Spinner as fN,WarningIcon as gN}from"@rango-dev/ui";import{useWallets as hN}from"@rango-dev/wallets-react";import Te,{useState as yN}from"react";import{css as lN,darkTheme as cN,styled as cp}from"@rango-dev/ui";var Ry=lN({wordWrap:"break-word",display:"block"}),eS=cp("img",{width:"100%"}),Oa=cp("div",{position:"relative"}),Ua=cp("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${cN} &`]:{$$color:"$warning600"}});var oS=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=yN(null),{list:s}=bt(),c=ne.use.isActiveTab(),{state:l,connect:p}=hN(),u=s.find(v=>v.type===e.walletType),d=u?.needsNamespace?.data.find(v=>v.value===o?.namespace);if(!u)return null;let f=l(e.walletType),h=u.isHub&&o?.namespace?f.namespaces?.get(o.namespace):null,g=f.connecting||h?.connecting,m=u.isHub?h?.connected:f.connected,S=i(()=>m?Un.t("Done"):r?Un.t("Try again"):Un.t("Connect"),"getButtonTitle"),T=i(()=>g?Te.createElement(fN,{color:"info"}):r||m?null:Te.createElement(uN,{checked:!0,disabled:!0}),"getNamespaceSuffix"),y=i(async()=>{try{a(null),await p(u.type,o?.namespace?[{namespace:o?.namespace,network:void 0,derivationPath:e.derivationPath}]:void 0)}catch(v){a(v)}},"handleConnect"),k=i(async()=>{if(m){n();return}y()},"handleClickButton"),w=i(()=>{if(!m)return null;let v=u?.isHub?h?.accounts?.[0]?.split(":"):f?.accounts?.[0]?.split(":"),x=v?.[v?.length-1];return x?po(x):null},"getAddress");return Te.createElement(Te.Fragment,null,Te.createElement(mN,{type:"warning",title:Un.t("Connect {wallet}",{wallet:u.title}),description:Un.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Te.createElement(Oa,null,Te.createElement(dN,{src:u.image,size:45}),Te.createElement(Ua,null,Te.createElement(gN,{color:"warning",size:10})))}),m&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:10}),Te.createElement(tS,{type:"success",variant:"alarm",title:Un.t("Wallet connected successfully.")})),r&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:10}),Te.createElement(tS,{type:"error",title:r?.message,variant:"alarm"})),d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:30}),Te.createElement(Fo,{namespace:d,suffix:T(),error:r?.message,connected:m,address:w()})),Te.createElement(za,{size:"40"}),Te.createElement(pN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},S()))},"ConnectWalletContent");import{i18n as nS}from"@lingui/core";import{Button as SN,Divider as TN,Image as CN,MessageBox as kN,WarningIcon as wN}from"@rango-dev/ui";import{useWallets as vN}from"@rango-dev/wallets-react";import{detectInstallLink as EN}from"@rango-dev/wallets-shared";import lo from"react";var rS=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=vN(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(EN(n.installLink),"_blank"),"handleButtonClick");return lo.createElement(lo.Fragment,null,lo.createElement(kN,{type:"warning",title:nS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:lo.createElement(Oa,null,lo.createElement(CN,{src:n.img,size:45}),lo.createElement(Ua,null,lo.createElement(wN,{color:"warning",size:10})))}),lo.createElement(TN,{size:"40"}),lo.createElement(SN,{type:"primary",id:"widget-install-wallet-btn",onClick:r},nS.t("Install")))},"InstallWalletContent");var aS=i(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:r}=NN(),a=xN(e),s=a?IN(e,a):null,c=s?.walletType,l=c?Zn(r(c),n(c)):null,p=a?bN(e,a):null;return c?l===AN.NOT_INSTALLED?iS.createElement(rS,{walletType:c}):iS.createElement(oS,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function pp(t){let{isOpen:e,state:o,switchNetworkModalState:n,onClose:r,onDelete:a,onCancel:s,swap:c,message:l,handleSwitchNetwork:p}=t;return Vr.createElement(re,{open:e,onClose:r,container:W()},o==="connectWallet"&&Vr.createElement(aS,{swap:c,message:l,onClose:r}),o==="switchNetwork"&&n&&Vr.createElement(Jy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Vr.createElement(Zy,{onClose:r,onDelete:()=>{r(),a()}}),o==="cancel"&&Vr.createElement(Xy,{onClose:r,onCancel:()=>{r(),s()}}))}i(pp,"SwapDetailsModal");import{i18n as Kr}from"@lingui/core";import{Button as up,Divider as jr,MessageBox as cS,TokenAmount as WN,Typography as pS}from"@rango-dev/ui";import ke from"react";import{Link as PN,useNavigate as LN}from"react-router-dom";var sS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",lS="/profile";function dp(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:c,token:l,chain:p,percentageChange:u,description:d,diagnosisUrl:f}=t,h=LN(),{showProfileBanner:g}=ne();return ke.createElement(re,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(kt.SWAP_BOX_ID)||document.body},n==="success"?ke.createElement(cS,{type:"success",title:Kr.t("Swap Successful")},ke.createElement(WN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),ke.createElement(jr,{size:12}),ke.createElement(pS,{className:Ry(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ke.createElement(cS,{type:"error",title:Kr.t("Transaction Failed"),description:d}),ke.createElement(jr,{size:30}),n==="success"&&ke.createElement(ke.Fragment,null,g&&ke.createElement(ke.Fragment,null,ke.createElement(PN,{to:lS},ke.createElement(eS,{src:sS,alt:"Profile Banner"})),ke.createElement(jr,{size:30})),ke.createElement(up,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Kr.t("Done"))),ke.createElement(jr,{size:12}),f&&ke.createElement(ke.Fragment,null,ke.createElement(up,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(f,"_blank")},Kr.t("Diagnosis")),ke.createElement(jr,{size:12})),ke.createElement(up,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ke.createElement(pS,{variant:"title",size:"medium",color:"primary"},Kr.t("See Details"))))}i(dp,"SwapDetailsCompleteModal");import{i18n as qa}from"@lingui/core";import{CopyIcon as qN,DoneIcon as GN,IconButton as VN,RangoExplorerIcon as KN,Tooltip as BS,Typography as _S,useCopyToClipboard as jN}from"@rango-dev/ui";import Lt from"react";import QN from"react";import{i18n as ON}from"@lingui/core";import{Alert as NS,IconButton as UN,LinkIcon as zN}from"@rango-dev/ui";import Ao,{Fragment as HN}from"react";import{Alert as _N,ChevronDownIcon as MN,IconButton as DN}from"@rango-dev/ui";import zn,{useState as $N}from"react";import{css as Xr,darkTheme as uS,styled as zt,Typography as BN}from"@rango-dev/ui";var dS=zt(pe,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${uS} &`]:{color:"$secondary500"}}}}}),mS=zt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),fS=zt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),gS=zt("div",{padding:"$0 $20 $20 $20"}),gY=zt("div",{display:"flex",flexDirection:"column",gap:"$10"}),hS=zt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),hY=zt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),on=Xr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${uS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),yS=Xr({padding:"$5 0"}),Ha=Xr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),SS=Xr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),TS=Xr({width:"100%",padding:"0 $20 $10"}),CS=zt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),kS=zt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Qa=zt(BN,{wordBreak:"break-word"});import{styled as mp}from"@rango-dev/ui";var wS=mp("div",{display:"flex",flexDirection:"column",gap:"$10"}),vS=mp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),ES=mp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function bS(t){let{message:e}=t,[o,n]=$N(!1);return zn.createElement(_N,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&zn.createElement(DN,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},zn.createElement(vS,{rotated:o},zn.createElement(MN,{size:12,color:"gray"}))),footer:zn.createElement(ES,{open:o},zn.createElement(Qa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(bS,"FailedAlert");import{i18n as xS}from"@lingui/core";import{Alert as fp,Button as IS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as FN}from"rango-types";import Yr from"react";function AS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:r,showNetworkModal:a}=t;return e?Yr.createElement(fp,{type:"warning",id:"widget-swap-details-change-network-alert",title:r.shortMessage,action:Yr.createElement(IS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},xS.t("Change"))}):a===FN.WaitingForConnectingWallet?Yr.createElement(fp,{type:"warning",title:r.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Yr.createElement(IS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},xS.t("Connect"))}):Yr.createElement(fp,{id:"widget-swap-details-short-alert",type:"warning",title:r.shortMessage})}i(AS,"WarningAlert");function gp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=mr(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,d=u&&!c||p&&!s.explorerUrl?.length;return Ao.createElement(wS,null,s.explorerUrl?.map((f,h,g)=>{let m=h+f.url,S=h===g.length-1,T=(S&&u||p)&&!d,y=S&&s.status==="failed";return Ao.createElement(HN,{key:m},Ao.createElement(NS,{id:"widget-swap-details-tx-alert",type:S&&(T&&"loading"||y&&"error")||"success",title:f.description?`${f.description} Tx`:ON.t("View transaction"),action:f.url&&Ao.createElement(UN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},Ao.createElement(zN,{size:12}))}))}),d&&Ao.createElement(NS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&Ao.createElement(AS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a}),s.status==="failed"&&Ao.createElement(bS,{message:a}))}i(gp,"SwapDetailsAlerts");var WS=2e3;var PS=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:Tt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:M(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:Tt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:M(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Kn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:Tt(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:Tt(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:Kn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:QN.createElement(gp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function LS(t){if(mr(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(LS,"getStepState");function MS(t){let{requestId:e}=t,[o,n]=jN(WS);return Lt.createElement(fS,{className:on()},Lt.createElement(_S,{variant:"label",size:"large",color:"neutral700"},qa.t("Request ID")),Lt.createElement("div",{className:Ha()},Lt.createElement(_S,{variant:"label",size:"small",color:"neutral700"},e),Lt.createElement(BS,{container:W(),content:o?qa.t("Copied To Clipboard"):qa.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Lt.createElement(VN,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Lt.createElement(GN,{size:16,color:"secondary"}):Lt.createElement(qN,{size:16,color:"gray"}))),Lt.createElement(CS,{target:"_blank",href:`${eu}/swap/${e}`},Lt.createElement(BS,{container:W(),content:qa.t("View on Rango Explorer"),side:"bottom"},Lt.createElement(KN,{size:20})))))}i(MS,"RequestIdRow");import{i18n as DS}from"@lingui/core";import{Typography as $S}from"@rango-dev/ui";import hp from"react";function FS(t){let{date:e,isFinished:o}=t;return hp.createElement("div",{className:on()},hp.createElement($S,{variant:"label",size:"large",color:"neutral700"},o?DS.t("Finished at"):DS.t("Created at")),hp.createElement($S,{variant:"label",size:"small",color:"neutral700"},e))}i(FS,"SwapDateRow");var n0=3e3;function Cp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=t0(),l=C().blockchains(),p=C().swappers(),{findToken:u}=C(),d=z().use.retry(),f=o0(),h=Tp(null),[g,m]=Ga(!1),[S,T]=Ga(null),[y,k]=Ga(null),[w,v]=Ga(null),x=Tp(S),A=Tp(y),E=We.use.getNotifications(),I=We.use.removeNotification(),b=E(),L=YN(e),N=L?.networkStatus,O=i(Be=>{m(!0),T(Be)},"handleChangeModalState"),q=i(()=>{m(!1)},"handleCloseModal"),j=i(()=>{k({type:"loading",title:Ht.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=i(()=>{k({type:"success",title:Ht.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),P=i(Be=>{k({type:"error",title:Ht.t("Network Switch Failed"),description:Be?.message||H.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Yd(e),Y=L?XN(e,L):null,ce=L?ZN(e,L):null,Ee=Ky(e),Gt=Zd(e),be=i(Be=>!!c(Be)?.mobileWallet,"checkIsMobileWallet"),He=!!N&&[Hn.WaitingForNetworkChange,Hn.NetworkChangeFailed].includes(N),Xe=!!ce?.walletType&&be(ce.walletType),St=!!ce&&!!Y&&a(ce.walletType,Y.network,Y),ct=!!Y&&He&&(Xe||St),B=i(()=>{ct&&(j(),s(ce.walletType,[{namespace:Y.namespace,network:Y.network}]).then(()=>{ee()}).catch(Be=>{P(Be)}))},"handleSwitchNetwork"),V=i(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),H=Xd(e,L,c),X=PS({swap:e,switchNetworkIsAvailable:ct,handleSwitchNetworkClick:V,showNetworkModal:N,setNetworkModal:O,message:H,blockchains:l,swappers:p}),G=X.length,[J,U]=[e.steps[0],e.steps[G-1]],de=U?.outputAmount||U?.expectedOutputAmountHumanReadable,Qe=e.steps.reduce((Be,Bt)=>Be+parseFloat(Bt.feeInUsd||""),0),ot=e.steps.find(Be=>Be.diagnosisUrl)?.diagnosisUrl,co=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),Gn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),No=de?new US(de).multipliedBy(U.toUsdPrice||0).toString():"",Rr=new US(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),rn=Yt(Gn,co),os=H.detailedMessage.content||H.shortMessage,kT=e.status==="success"?Ht.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:M(de,6,6),token:X[G-1]?.to.token.displayName,conciseAddress:po(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):we.createElement(kS,null,we.createElement(yp,{variant:"body",size:"medium",color:"neutral700",align:"center"},os?"":Ht.t("Transaction was not sent."),Z?`${Ht.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Z.outputAmount,symbol:Z.symbol,blockchain:Z.blockchain}})}`:""),os&&we.createElement(Qa,{align:"center",variant:"body",size:"medium",color:"neutral700"},we.createElement("b",null,"Reason:")," ",os));return Sp(()=>{b.find(Bt=>Bt.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),I(e.requestId),q()):w&&v(null))},[e.status,e.requestId]),Sp(()=>{if(ct){if(O("switchNetwork"),N===Hn.WaitingForNetworkChange){j();return}if(N===Hn.NetworkChangeFailed){P();return}return}if(N===Hn.WaitingForConnectingWallet){O("connectWallet");return}if(N===Hn.NetworkChanged){O("switchNetwork"),ee();return}S&&["connectWallet","switchNetwork"].includes(S)&&q()},[N]),Sp(()=>{if(x.current=S,A.current=y,S==="switchNetwork"&&y?.type==="success"){let Be=setTimeout(()=>{x.current==="switchNetwork"&&A.current?.type==="success"&&q()},n0);return()=>clearTimeout(Be)}},[S,y]),we.createElement(se,{header:{title:Ht.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&we.createElement(ho,null,we.createElement(OS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},we.createElement(yp,{size:"medium",variant:"label",color:"error"},Ht.t("Delete"))))},footer:Gt&&!w&&we.createElement(OS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{te({type:"swapRetried",payload:{routeId:e.requestId}});let Be=Ai(e,l,u);d(Be),setTimeout(()=>{f("../../")},0)}},Ht.t("Try again"))},we.createElement(dS,{compact:!0,ref:h},we.createElement(MS,{requestId:o}),we.createElement(FS,{date:Ee,isFinished:!!e.finishTime}),we.createElement("div",{className:SS()},we.createElement(RN,{fee:M(String(Qe),2,2),time:Xn(si(e.steps)),steps:G}),we.createElement(kr,{from:{price:{value:M(e.inputAmount,6,6),usdValue:Gn,realUsdValue:Rr,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:M(de,6,6),usdValue:co,realUsdValue:No,realValue:de||""},token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image,displayName:X[G-1]?.to.chain.displayName||""}},percentageChange:M(rn,2,2),warningLevel:Zt(rn??0)})),we.createElement("div",{className:TS()},we.createElement(yp,{variant:"title",size:"small"},Ht.t("Swaps steps"))),we.createElement(JN,{size:8}),we.createElement(gS,null,X.map((Be,Bt)=>{let Bp=Bt,Vn=e.steps[Bt]&&LS(e.steps[Bt]),wT=Vn==="error"||Vn==="in-progress"||Vn==="warning"||Vn==="completed"&&Bt===X.length-1;return we.createElement(e0,{className:"widget-swap-details-step-item-container",key:Bp,step:Be,type:"swap-progress",ref:h,state:Vn,hasSeparator:Bt!==0,tabIndex:Bp,isFocused:wT,tooltipContainer:W()})}))),we.createElement(pp,{isOpen:g,state:S,switchNetworkModalState:y,onClose:q,onCancel:r,onDelete:n,message:H.detailedMessage.content,swap:e,handleSwitchNetwork:V}),we.createElement(dp,{open:!!w,diagnosisUrl:ot,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(de,6,6),usdValue:co,realUsdValue:No,realValue:de||"",percentageChange:M(rn,2,2),token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image},description:kT}))}i(Cp,"SwapDetails");import{i18n as Ka}from"@lingui/core";import{Divider as QS,NotFound as l0,Skeleton as Jr,Typography as ja}from"@rango-dev/ui";import Ae from"react";import{i18n as r0}from"@lingui/core";import{Divider as i0,Skeleton as a0,Typography as s0}from"@rango-dev/ui";import Ie from"react";import{css as Qt,styled as kp}from"@rango-dev/ui";var zS=kp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Zr=kp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Va=kp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),G7=Qt({display:"flex",justifyContent:"space-between",alignItems:"center"}),V7=Qt({paddingTop:"$15",display:"flex"}),K7=Qt({padding:"$15 $0"}),j7=Qt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),X7=Qt({paddingBottom:"$10"}),Y7=Qt({display:"flex",justifyContent:"start",alignItems:"center"}),Z7=Qt({paddingTop:"$5",display:"flex",alignItems:"center"}),J7=Qt({display:"flex",alignItems:"center"}),R7=Qt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),HS=Qt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function wp(){return Ie.createElement(zS,null,Ie.createElement(Er,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(s0,{variant:"title",size:"small"},r0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1}),Ie.createElement("div",{className:HS()},Ie.createElement(i0,{direction:"horizontal",size:20}),Ie.createElement(a0,{height:22,variant:"rectangular"}))),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1}))))}i(wp,"LoadingSwapDetails");function qS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:Ka.t("Swap Details"),suffix:Ae.createElement(ho,null)}},o&&Ae.createElement(mS,null,Ae.createElement("div",{className:on()},Ae.createElement(ja,{variant:"label",size:"large",color:"neutral700"},`${Ka.t("Request ID")}`),Ae.createElement("div",{className:Ha()},Ae.createElement(ja,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"})),Ae.createElement(QS,{direction:"horizontal",size:4}),Ae.createElement(Jr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(QS,{direction:"horizontal",size:4}),Ae.createElement(Jr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:on()},Ae.createElement(ja,{className:yS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"})),Ae.createElement(ja,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(wp,null)),!o&&Ae.createElement(hS,null,Ae.createElement(l0,{title:Ka.t("Not found"),description:Ka.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(qS,"SwapDetailsPlaceholder");function GS(){let{manager:t,state:e}=u0(),o=!e.loadedFromPersistor,n=vt(t),{requestId:r}=m0(),a=Ve(),{fetchStatus:s}=C();if(!r)return vp.createElement(d0,{containerStyles:{margin:"20px"},type:"error",title:c0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=r?n.find(({swap:f})=>f.requestId===r):void 0,p=i(()=>{if(l?.id){let f=t?.get(l.id);f&&(te({type:"swapCancelled",payload:{routeId:r}}),p0(f))}},"onCancel"),u=i(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(f){console.log(f)}},"onDelete"),d=l?.swap;return!d||c?vp.createElement(qS,{requestId:r,showSkeleton:c}):vp.createElement(Cp,{swap:d,requestId:r,onCancel:p,onDelete:u})}i(GS,"SwapDetailsPage");import{i18n as VS}from"@lingui/core";import{Divider as f0,getCategoriesCount as g0,SelectableCategoryList as h0,styled as jS,Typography as y0,Wallet as S0}from"@rango-dev/ui";import qt,{useState as KS}from"react";var T0=jS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),C0=jS(pe,{textAlign:"center"});function XS(){let{fetchStatus:t}=C(),[e,o]=KS("ALL"),n=C().blockchains(),{config:r}=C(),[a,s]=KS(),c=ne.use.isActiveTab(),{list:l}=bt(),p=Au(l,n),d=g0(p)!==1,f=Nu(l,e),h=i(g=>{cu(l,r.multiWallets)||s(g)},"handleWalletItemClick");return qt.createElement(se,{header:{title:VS.t("Connect Wallets")}},qt.createElement(C0,null,d&&qt.createElement(qt.Fragment,null,qt.createElement(h0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),qt.createElement(f0,{size:24})),qt.createElement(y0,{variant:"title",size:"xmedium",align:"center"},VS.t("Choose a wallet to connect.")),qt.createElement(T0,null,f.map((g,m)=>{let S=`wallet-${m}-${g.type}`;return qt.createElement(S0,{key:S,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),qt.createElement(ur,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}i(XS,"WalletsPage");function YS(){return lm(),Xs(),k0([{path:$.home,element:ze.createElement(uy,null)},{path:$.routes,element:ze.createElement(hy,null)},{path:$.fromSwap,children:[{index:!0,element:ze.createElement(_a,{type:"source"})},{path:$.blockchains,element:ze.createElement(Wa,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:ze.createElement(_a,{type:"destination"})},{path:$.blockchains,element:ze.createElement(Wa,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:ze.createElement(Gy,null)},{path:$.languages,element:ze.createElement(my,null)},{path:$.exchanges,element:ze.createElement(Kc,{sourceType:"Exchanges"})},{path:$.bridges,element:ze.createElement(Kc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:ze.createElement(mh,null)},{path:$.addCustomTokens,children:[{index:!0,element:ze.createElement(af,null)},{path:$.blockchains,element:ze.createElement(Wa,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:ze.createElement(Bh,null)},{path:$.swapDetails,element:ze.createElement(GS,null)}]},{path:$.wallets,element:ze.createElement(XS,null)},{path:$.confirmSwap,element:ze.createElement(Zg,null)}])}i(YS,"AppRoutes");import{useQueueManager as O0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as U0}from"rango-sdk";import{useContext as z0,useEffect as Ip,useState as cT}from"react";import{Provider as I0}from"@rango-dev/wallets-react";import{WalletTypes as tT}from"@rango-dev/wallets-shared";import Xa,{createContext as A0,useEffect as oT,useMemo as N0,useRef as nT}from"react";import{useEffect as v0}from"react";import{Provider as w0}from"@hub3js/core";function ZS(t){return t.map(e=>typeof e=="string"?e:e instanceof w0?e.id:e.config.type).join("-")}i(ZS,"hashProviders");function Ep(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=C(),a=n();return v0(()=>{o(),r()},[ZS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Ep,"useWalletProviders");import{legacyFormatAddressWithNetwork as E0,legacyReadAccountAddress as JS}from"@rango-dev/wallets-core/legacy";import{Events as Qn}from"@rango-dev/wallets-react";import{isEvmBlockchain as b0}from"rango-sdk";function RS(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=C(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(b0).map(m=>m.name),u=i((m,S)=>{let[T,,y,k,w]=m,v={walletType:T,network:k.network??void 0,accounts:y};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let x=fs(T,y,p,S.supportedChainNames,w.isContractWallet);x.length&&e(x,w.namespace,k.derivationPath,{walletName:T})},"onAccountsEvent"),d=i((m,S,T,y,k)=>{if(S===Qn.ACCOUNTS){let w=Jn(k.supportedBlockchains);T&&u([m,S,T,y,k],{supportedChainNames:w})}S===Qn.PROVIDER_DISCONNECTED&&(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),S===Qn.NAMESPACE_DISCONNECTED&&n(m,T)},"handleUpdatesForHub"),f=i((m,S,T,y,k)=>{if(S===Qn.ACCOUNTS){let w=Jn(k.supportedBlockchains),v=[],x=[];if(T?.forEach(E=>{let{network:I}=JS(E);p.includes(I)?v.push(E):x.push(E)}),r.filter(E=>E.walletType===m).map(E=>E0(E.address,E.chain)).length>0){if(v.length>0){let E=fs(m,v,p,w,k.isContractWallet);a(m,{chains:E.map(I=>I.chain)})}x.length>0&&a(m,{chains:x.map(E=>{let{network:I}=JS(E);return I})})}T?u([m,S,T,y,k],{supportedChainNames:w}):(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),h=i((m,S,T,y,k)=>{if(S===Qn.CONNECTED&&T){let w={walletType:m,network:y.network??void 0,accounts:y.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(S===Qn.NETWORK&&T){let w={walletType:m,network:T,accounts:y.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((m,S,T,y,k)=>{k.isHub?d(m,S,T,y,k):f(m,S,T,y,k),h(m,S,T,y,k)},"handler")}}i(RS,"useUpdates");import{LegacyEvents as x0}from"@rango-dev/wallets-core/legacy";function eT(t,e){let[o,n,r,a,s]=e;n!==x0.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(eT,"propagateEvents");var Ya=A0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function W0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=C(),a=C().blockchains(),s=C().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=Ep(s.wallets,c),p=nT(),u=nT(),{handler:d}=RS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});oT(()=>{n().catch(console.log)},[]),oT(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let f=ne.use.isActiveTab(),h=N0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Xa.createElement(Ya.Provider,{value:h},Xa.createElement(I0,{allBlockChains:a,providers:l,onUpdateState:(g,m,S,T,y)=>{let k=[g,m,S,T,y];d(...k),t.onUpdateState&&eT(t.onUpdateState,k)},autoConnect:!!f,configs:{wallets:s.wallets,walletOptions:{[tT.TON_CONNECT]:{provider:{manifestUrl:s.tonConnect?.manifestUrl}},[tT.TREZOR]:{provider:{manifest:s.trezorManifest}}}}},t.children))}i(W0,"Main");function Za(t){let{config:e,...o}=t;return Xa.createElement(Ku,{config:e},Xa.createElement(W0,{...o,config:e}))}i(Za,"WidgetWallets");import{globalCss as P0}from"@rango-dev/ui";var rT=i(()=>P0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");import{useWallets as L0}from"@rango-dev/wallets-react";import{useEffect as B0,useRef as _0}from"react";function iT(){let{connect:t,state:e}=L0(),o=_0({}),{fetchStatus:n}=C(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);B0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(iT,"useForceAutoConnect");import{isApprovalTX as M0,RouteEventType as aT,StepEventType as sT,StepExecutionEventStatus as D0,WidgetEvents as Ja}from"@rango-dev/queue-manager-rango-preset";import{useEffect as lT}from"react";function bp(){let t=We.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=C();lT(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===sT.TX_EXECUTION&&s.status===D0.TX_SENT&&!M0(c)||s.type===sT.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let f=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);f&&u.push(f)}if(c?.fromBlockchain!==c?.toBlockchain){let f=l.wallets[c?.toBlockchain];if(f){let h=e.find(g=>g.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&g.walletType===f.walletType&&g.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let f=n(),g=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(m=>f.some(S=>S.blockchain===m.blockchain&&S.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&S.symbol?.toLocaleLowerCase()===m.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return ge.on(Ja.StepEvent,r),()=>ge.off(Ja.StepEvent,r)},[ge,e]),lT(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===aT.FAILED||s.type===aT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ge.on(Ja.RouteEvent,r),()=>ge.off(Ja.RouteEvent,r)},[ge])}i(bp,"useSubscribeToWidgetEvents");import{useManager as $0}from"@rango-dev/queue-manager-react";import{useEffect as F0}from"react";function xp(){let{isSynced:t,syncNotifications:e}=We(),{manager:o,state:n}=$0();F0(()=>{if(We.persist.hasHydrated()&&n.loadedFromPersistor&&!t){let a=vt(o);e(a),a.forEach(({swap:s})=>{if(!(s.status==="running"&&s.steps.length>1))return;let l=s.steps.findIndex(p=>p.status!=="success");l!==-1&&te({type:"swapResumed",payload:{routeId:s.requestId,stepCount:s.steps.length,stepNumber:l+1}})})}},[We.persist.hasHydrated(),n.loadedFromPersistor,t])}i(xp,"useSyncNotifications");function Ap(){iT(),rT(),bp(),xp();let t=C().blockchains(),{canSwitchNetworkTo:e}=pT(),[o,n]=cT(null),[r,a]=cT(),s=z0(Ya),c=t.filter(U0);Ip(()=>()=>am(),[]),Ip(()=>()=>sm(),[]),O0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),Ip(()=>($o.init(),We.persist.hasHydrated()||We.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),$o.destroy),[])}i(Ap,"useBootstrap");import{styled as H0}from"@rango-dev/ui";var uT=H0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left",height:"100%","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function nn(){Ap();let{config:t}=C(),{activeTheme:e}=go(t?.theme||{}),{activeLanguage:o}=Eo();return Np.createElement(Q0,{language:o},Np.createElement(uT,{id:"swap-container",className:e()},Np.createElement(YS,null)))}i(nn,"Main");import{setSolanaSignerConfig as cW}from"@rango-dev/signer-solana";import Pp,{useEffect as Lp,useMemo as pW}from"react";function dT(){let{setWatermark:t,setShowProfileBanner:e}=ne();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Kt("BASE_URL")}/meta/dapp/config?apiKey=${Kt("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(dT,"useFetchApiConfig");import{useState as q0}from"react";var G0=i(()=>{let[t,e]=q0(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=lu(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),mT=G0;import{checkWaitingForNetworkChange as V0,makeQueueDefinition as K0}from"@rango-dev/queue-manager-rango-preset";import{Provider as j0}from"@rango-dev/queue-manager-react";import{useWallets as X0}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as Y0}from"@rango-dev/wallets-shared";import{isEvmBlockchain as Z0}from"rango-types";import J0,{useMemo as R0}from"react";function eW(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s,hubProvider:c}=X0(),l=R0(()=>K0({API_KEY:t.apiKey||Kt("API_KEY"),BASE_URL:Kt("BASE_URL"),emitter:{emit:ge.emit}}),[t.apiKey]),{blockchains:p,connectedWallets:u}=C(),d=p(),f={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,x)=>a(v,x.network,x)?await r(v,[x]):void 0,"switchNetwork"),g=i(v=>!!s(v).mobileWallet,"isMobileWallet"),m=d.filter(v=>v.enabled).reduce((v,x)=>(v[x.name]=x,v),{}),S=d.filter(Z0),T=i(v=>{let{supportedChains:x}=s(v);return Jn(x)},"getSupportedChainNames"),y=e(),k={meta:{blockchains:m,evmBasedChains:S,evmNetworkChainInfo:Y0(S),getSupportedChainNames:T},getSigners:o,wallets:f,providers:y,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:g,hubProvider:c},w=ne.use.isActiveTab();return J0.createElement(j0,{queuesDefs:[l],context:k,onPersistedDataLoaded:v=>{V0(v)},isPaused:!w},t.children)}i(eW,"QueueManager");var fT=eW;import{useManager as iW}from"@rango-dev/queue-manager-react";import aW,{createContext as sW,useContext as lW}from"react";function gT(){let{findToken:t}=C(),e=C().blockchains(),o=C().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:c}=z()();return i(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:f,toToken:h,requestAmount:g}=p,m={blockchains:e,tokens:o};if(u!==void 0){let S=e.find(T=>T.name===u)??null;n(S)}if(d!==void 0){let S=d?t(d)??null:null;r({meta:m,token:S})}if(f!==void 0){let S=e.find(T=>T.name===f)??null;a(S)}if(h!==void 0){let S=h?t(h)??null:null;s({meta:m,token:S})}g!==void 0&&c(g)},"updateQuoteInputs")}i(gT,"useUpdateQuoteInputs");import{cancelSwap as tW,getCurrentNamespaceOfOrNull as oW,getCurrentStep as nW,getRelatedWalletOrNull as rW}from"@rango-dev/queue-manager-rango-preset";var Ra=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return vt(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=Ai(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&tW(o)}getCurrentStepInfo(e){let o=nW(e);return{step:o,wallet:o?rW(e,o):null,network:o?oW(e,o)?.network:null}}};var hT=sW(void 0);function Wp(t){let{manager:e}=iW(),o=ne.use.isActiveTab(),n=z().use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=C(),l=new Ra(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=C(),u=vu(a()),d=C().blockchains(),f=C().tokens(),h=C().swappers(),g=C().fetchStatus,m=Eo().resetLanguage,S=We().getNotifications(),T=We().clearNotifications,y=gT(),{fromBlockchain:k,toBlockchain:w,fromToken:v,toToken:x,inputAmount:A}=z()(),E={isActiveTab:o,setCurrentTabAsActive:$o.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async I=>c(I)},meta:{blockchains:d,tokens:f,swappers:h,loadingStatus:g,findToken:r},resetLanguage:m,notifications:{list:S,clearAll:T},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:w?.name??null,toToken:x?{symbol:x.symbol,blockchain:x.blockchain,address:x.address}:null,requestAmount:A},updateQuoteInputs:y}};return aW.createElement(hT.Provider,{value:E},t.children)}i(Wp,"WidgetInfo");function yT(){let t=lW(hT);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(yT,"useWidget");function qn(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{fetchApiConfig:r}=dT(),{handleLoadCustomFont:a}=mT();return Lp(()=>{r().catch(console.log)},[]),Lp(()=>{n&&a(n)},[n]),pW(()=>{Wu({API_KEY:o?.apiKey||Yp(),BASE_URL:o?.apiUrl||Rp})},[o.apiKey,o.apiUrl]),Lp(()=>{t.config?.signers?.customSolanaRPC&&cW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Pp.createElement(Za,{config:o,onUpdateState:e},Pp.createElement(fT,{apiKey:o.apiKey},Pp.createElement(Wp,null,t.children)))}i(qn,"WidgetProvider");function ST(t){let e=t.config?.externalWallets;return es.createElement(xi,null,e?es.createElement(nn,null):es.createElement(qn,{config:t.config??ln},es.createElement(nn,null)))}i(ST,"Refuel");import ts from"react";function TT(t){let e=t.config?.externalWallets;return ts.createElement(xi,null,e?ts.createElement(nn,null):ts.createElement(qn,{config:t.config??ln},ts.createElement(nn,null)))}i(TT,"Widget");function CT(){let{on:t,off:e}=ge;return{on:t,off:e}}i(CT,"useWidgetEvents");var ete={DerivationPath:lr,Namespaces:ir,Detached:sr,isOnDerivationPath:pr,isOnNamespace:cr,isOnDetached:Wo};export{vee as EventSeverity,dn as MainEvents,Bee as Networks,Dee as PendingSwapNetworkStatus,tr as QuoteEventTypes,ST as Refuel,Eee as RouteEventType,ss as SUPPORTED_FONTS,ete as StatefulConnect,bee as StepEventType,xee as StepExecutionBlockedEventStatus,Iee as StepExecutionEventStatus,wd as SwapModeContext,kt as UI_ID,Re as UiEventTypes,gi as WalletEventTypes,Pee as WalletEvents,_ee as WalletTypes,TT as Widget,dn as WidgetEvents,qn as WidgetProvider,Za as WidgetWallets,cl as customizedThemeTokens,is as pickProviderVersionWithFallbackToLegacy,Nee as readAccountAddress,an as useStatefulConnect,bt as useWalletList,pT as useWallets,yT as useWidget,CT as useWidgetEvents,xC as widgetEventEmitter};
|
|
1
|
+
var vT=Object.defineProperty;var i=(t,e)=>vT(t,"name",{value:e,configurable:!0});import{EventSeverity as bee,RouteEventType as xee,StepEventType as Iee,StepExecutionBlockedEventStatus as Aee,StepExecutionEventStatus as Nee}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as Pee}from"@rango-dev/wallets-core/legacy";import{useWallets as pT,Events as Bee}from"@rango-dev/wallets-react";import{Networks as Mee,WalletTypes as Dee}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as Fee}from"rango-types";import{Divider as zk}from"@rango-dev/ui";import mo,{useEffect as Hk,useRef as Qk,useState as wd}from"react";import{WalletState as ET}from"@rango-dev/ui";import{useWallets as bT}from"@rango-dev/wallets-react";import{useReducer as xT}from"react";function Mp(t){return!!t.derivationPath}i(Mp,"isStateOnDerivationPathStep");function Dp(t){return!!t.namespace}i(Dp,"isStateOnNamespace");var ei={status:"init",namespace:null,derivationPath:null,selectedNamespaces:null};function $p(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"detached":return{...t,status:"detached",namespace:{targetWallet:e.payload.targetWallet},selectedNamespaces:e.payload.selectedNamespaces};case"reset":return ei;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:ei;default:throw new Error("Action hasn't been defined.")}}i($p,"reducer");function an(){let{state:t,disconnect:e,connect:o}=bT(),[n,r]=xT($p,ei),a=i(async(d,f,h)=>{r({type:"reset"});try{let g=f?.map(m=>({...m,network:void 0}));return await o(d.type,g),{status:"connected"}}catch(g){let m=g?.message?`Error: ${g.message}`:"An unknown error happened during connecting wallet.";if(h?.disconnectOnError)try{await u(d)}catch{console.warn("An error happened during disconnecting wallet after error on connecting.")}throw new Error(m,{cause:g})}},"runConnect"),s=i(async(d,f)=>{let h=d.state===ET.DISCONNECTED,g=f?.forceConnectToNamespaces;if(h){let m=!!d.isHub,S=m?d.properties?.find(y=>y.name==="namespaces")?.value:d.needsNamespace,T=m?d.properties?.find(y=>y.name==="derivationPath")?.value:d.needsDerivationPath;if(g){let y=g.find(k=>!S?.data?.map(w=>w.value).includes(k));if(y)throw new Error(`One of the forced namespaces is not available in the wallet. Forced namespace: ${y}`);if(g.length>1&&T)throw new Error("Derivation path is not supported when multiple namespaces are selected.");return g.length===1&&g[0]&&T?(r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:g[0]}}),{status:"derivation-path"}):await a(d,g.map(k=>({namespace:k})),{...f,disconnectOnError:!0})}if(!S?.data?.length)return await a(d,void 0,f);if(S?.data.length&&S.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:d,defaultSelectedChains:f?.defaultSelectedChains}}),{status:"namespace"};if(S?.data.length===1&&S.data[0]){if(T){let y=S.data[0];return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:y.value}}),{status:"derivation-path"}}return await a(d,S?.data?.map(y=>({namespace:y.value})),f)}}if(d.isHub&&!f?.forceConnectToNamespaces){let m=d.properties?.find(S=>S.name==="namespaces")?.value;if(m?.data.length&&m.data.length>1)return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:null}}),{status:"Detached"}}return f?.disconnectIfConnected?(await u(d),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),c=i(async(d,f)=>{let h=!!d.isHub,g=h?d.properties?.find(k=>k.name==="namespaces")?.value:d.needsNamespace,m=h?d.properties?.find(k=>k.name==="derivationPath")?.value:d.needsDerivationPath,S=g?.selection==="single",T=f[0];if(!T)throw new Error("To confirm a namespace, you should select at least one namespace.");if(S&&m)return r({type:"needsDerivationPath",payload:{providerType:d.type,providerImage:d.image,namespace:T}}),{status:"derivation-path"};if(!Dp(n))throw new Error("Something went wrong on handling namespace. Please retry.");let y=f.map(k=>({namespace:k}));return r({type:"detached",payload:{targetWallet:d,selectedNamespaces:y??null}}),{status:"Detached"}},"handleNamespace"),l=i(async(d,f,h)=>{if(!f)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Mp(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=[{namespace:n.derivationPath.namespace,derivationPath:f}],T=!!d.isHub?d.properties?.find(w=>w.name==="namespaces")?.value:d.needsNamespace,y=!!T?.data&&T.data.length>1,k=!!h?.forceConnectToNamespaces;return y&&!k?(r({type:"detached",payload:{targetWallet:d,selectedNamespaces:m??null,derivationPath:f}}),{status:"Detached"}):await a(d,m)},"handleDerivationPath"),p=i(()=>n,"getState"),u=i(async d=>{let f=t(d.type);return f.connected||f.connecting?(await e(d.type),Wo(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(an,"useStatefulConnect");import{WalletState as yi}from"@rango-dev/ui";import{useWallets as $C}from"@rango-dev/wallets-react";import{detectMobileScreens as FC,WalletTypes as Mt}from"@rango-dev/wallets-shared";import{useCallback as OC,useEffect as Zu}from"react";import LC,{createContext as BC,useContext as _C,useEffect as MC,useRef as DC}from"react";import{create as WC}from"zustand";import{persist as PC}from"zustand/middleware";import{allProviders as IT}from"@rango-dev/provider-all";var ns=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()}},sn=new ns;import{Provider as rs}from"@hub3js/core";import{defineVersions as Op,pickVersion as Up}from"@hub3js/core/utils";function zp({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=is(a);return s instanceof rs?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 rs?o.push(Op().version("1.0.0",n).build()):o.push(Op().version("0.0.0",n).build())}),o}return t}i(zp,"matchAndGenerateProviders");function is(t){try{return Up(t,"1.0.0")[1]}catch{return Up(t,"0.0.0")[1]}}i(is,"pickProviderVersionWithFallbackToLegacy");function Hp(t){return t.map(o=>is(o)).map(o=>o instanceof rs?o.id:o.config.type)}i(Hp,"configWalletsToWalletName");function Qp(t,e){return e.find(o=>o.name===t)?.displayName}i(Qp,"getBlockchainDisplayNameFor");function Tt(t,e){return e.find(o=>o.name===t)?.shortName}i(Tt,"getBlockchainShortNameFor");function qp(t,e){return e.find(o=>o.name===t)?.logo}i(qp,"getBlockchainImage");function Kn(t,e){return e.find(o=>o.id===t)?.title}i(Kn,"getSwapperDisplayName");function Po(t,e){return e.find(o=>o.name===t)??null}i(Po,"findBlockchain");function as(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(as,"isTokenNative");function Ct(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(Ct,"createTokenHash");function Lo(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i(Lo,"isValidTokenAddress");function ti(t){let{contractAddress:e,blockchainMeta:o}=t;return o.info?.tokenUrl?o.info.tokenUrl.replace("{address}",e):o.info?.addressUrl.replace("{wallet}",e)}i(ti,"createTokenExplorerUrl");function jn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(c=>{c.forEach(l=>{typeof l!="string"&&(l=Ct(l));let p=o.tokensMapByTokenHash.get(l);p&&(n[l]=p)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let c=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(l=>{let p=o.tokensMapByBlockchainName[l];!c.has(l)&&p&&a(p)})}return s.forEach(c=>{let l=r[c];if(!l&&o.tokensMapByBlockchainName?.[c]){a(o.tokensMapByBlockchainName[c]);return}l&&(l.isExcluded&&o.tokensMapByBlockchainName[c]?(a(o.tokensMapByBlockchainName[c]),l.tokens.forEach(p=>{let u=Ct(p);delete n[u]})):a(l.tokens))}),Object.values(n)}i(jn,"matchTokensFromConfigWithMeta");function oi(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(oi,"getSupportedBlockchainsFromConfig");function Vp(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Vp,"makeProvidersOptionsFromConfig");var ln={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/assets/refs/heads/main/manifests/tonconnect/manifest.json"}},AT={clientUrl:void 0},NT={liquiditySources:void 0};function Gp(t){let e=Vp(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return IT(o).map(a=>a())}i(Gp,"generateProviders");var Kp=i((t,e,o)=>{let n=Gp({...ln,...t});return{config:{...ln,...t},iframe:AT,campaignMode:NT,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=jn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}}),p=jn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:c,tokensMapByTokenHash:s}});sn.set("supportedSourceTokens",l),sn.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=Gp(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Vp(a);return zp({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as jp}from"rango-types";var Xp=[jp.EVM,jp.SOLANA],ni="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as GT}from"rango-sdk";function Yp(){return process.env.REACT_APP_RANGO_API_KEY}i(Yp,"getApiKeyFromEnv");function Zp(){let t=Yp();if(t)return t;throw new Error("Ensure you have set REACT_APP_RANGO_API_KEY in your env variables.")}i(Zp,"getApiKeyFromEnvOrThrow");function Jp(){return Yp()||"NOT_SET"}i(Jp,"getApiKeyFromEnvOrNotSet");import{BlockchainCategories as DT,WalletState as ut}from"@rango-dev/ui";import{legacyReadAccountAddress as $T}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as FT,HYPERLIQUID_SIGN_NETWORK as OT,getBlockChainNameFromId as UT,isEvmAddress as zT,Networks as ds}from"@rango-dev/wallets-shared";import pn from"bignumber.js";import WT from"bignumber.js";var pe=new WT(0);var Bo="~",Rp=[];import{BlockchainCategories as ls,WalletState as MT}from"@rango-dev/ui";import{TransactionType as cs}from"rango-sdk";import{UI_ID as PT}from"@rango-dev/ui";var eu="https://api.rango.exchange",tu="https://explorer.rango.exchange",kt={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...PT};var ou="Roboto",ss=[{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 cn(t){return Array.from(new Set(t))}i(cn,"removeDuplicateFrom");function ri(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(ri,"debounce");function pt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(pt,"containsText");function iu(t,e){return t.toLowerCase()===e.toLowerCase()}i(iu,"exactText");function au(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(au,"startWithText");var W=i(()=>document.getElementById(kt.SWAP_BOX_ID),"getContainer"),_o=i(()=>document.getElementById(kt.EXPANDED_BOX_ID),"getExpanded");function su(t,e,o){let n=!!e&&iu(e,t),r=!!o&&iu(o,t);return n!==r?n?-1:1:0}i(su,"compareExactMatchText");function ps(t,e,o){let n=!!e&&pt(e,t),r=!!o&&pt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ps,"compareContainsText");function us(t,e,o){let n=!!e&&au(e,t),r=!!o&&au(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(us,"compareStartWithText");function lu(t,e,o){if(!o)return 0;let n=su(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=su(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=us(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ps(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=us(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=ps(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=us(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=ps(o,t.address,e.address);if(r!==0)return r}return 0}i(lu,"compareWithSearchFor");var ii=i((t,e)=>{switch(e){case ls.ALL:return!0;case ls.UTXO:return t===cs.TRANSFER;case ls.OTHER:return t!==cs.TRANSFER&&t!==cs.EVM;default:return t===e}},"isBlockchainTypeInCategory"),cu=i(t=>ss.find(o=>o.value===t)?.url,"getFontUrlByName");function pu(t,e){let o=!!t.find(n=>n.state===MT.CONNECTED);return e===!1&&o}i(pu,"isSingleWalletActive");function uu(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(uu,"memoizedResult");function du(t,e){let o=new Set;return e.forEach(n=>{o.add(n.blockchain)}),t.filter(n=>o.has(n.name))}i(du,"filterBlockchainsWithAtLeastOneToken");import{BigNumber as ku}from"bignumber.js";function mu(t){return t.replace(/^0+(?=\d)/g,"")}i(mu,"removeLeadingZeros");function fu(t){return t.replace(/^\.(\d+)/,"0.$1")}i(fu,"ensureLeadingZeroForDecimal");function gu(t){return t.replace(/\B(?=(\d{3})+(?!\d))/g,",")}i(gu,"formatThousandsWithCommas");function hu(t){return t.replace(/\s+/g,"-")}i(hu,"replaceSpacesWithDash");function yu(t){return t.replace(/(\.\d*?[1-9])0+$/,"$1").replace(/\.0+$/,"")}i(yu,"stripTrailingZeros");function Su(t){return t=t.replace(/[^\d.]/g,"").replace(/\./g,(e,o,n)=>n.indexOf(".")===o?".":""),t}i(Su,"parseNumericValue");function ai(t){return/^0+(?:\.0+)?$/.test(t)}i(ai,"isZeroValue");function Tu(t,e=2){let o=`^(?:0|[1-9]\\d*)(?:\\.\\d{1,${e}})?$`;return new RegExp(o).test(t)}i(Tu,"isValidCurrencyFormat");function Cu(t){return/\d+$/.test(t)}i(Cu,"isColorKeyOverridden");var Xn=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"),M=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new ku(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new ku(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 si=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var _t=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),Yn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function wu(t){return ai(t)?"0":t.endsWith(".")?t.slice(0,-1):yu(t)}i(wu,"sanitizeInputAmount");function HT(t,e){let o=t?.get("EVM");return o?.network?UT(o.network,e)??o.network:null}i(HT,"getConnectedEvmChainName");function Zn(t,e){return qT(t,e)?ut.PARTIALLY_CONNECTED:e.connected?ut.CONNECTED:e.connecting?ut.CONNECTING:e.installed?ut.DISCONNECTED:ut.NOT_INSTALLED}i(Zn,"getWalletConnectionStatus");function vu(t,e,o,n){return o.filter(r=>!Rp.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:c,namespaces:l}=t(r);return s&&(!c||!!n&&HT(l,a)!==n)?!1:n?!!a.find(u=>u.name===n):!0}).map(r=>{let{name:a,img:s,installLink:c,showOnMobile:l,needsNamespace:p,supportedChains:u,needsDerivationPath:d,properties:f,isHub:h}=e(r),g=cn(u.map(S=>S.type)),m=Zn(e(r),t(r));return{title:a,image:s,link:FT(c),state:m,type:r,showOnMobile:l,needsNamespace:p,blockchainTypes:g,needsDerivationPath:d,properties:f,isHub:h}})}i(vu,"mapWalletTypesToWalletInfo");function Jn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Jn,"walletAndSupportedChainsNames");function fs(t,e,o,n,r){let a=[];function s(l,p,u){if(!!!a.find(f=>f.chain===l)){let f={address:p,chain:l,walletType:t,isContractWallet:u??!1};a.push(f)}}i(s,"addAccount");let c=n||[];return e.forEach(l=>{let{address:p,network:u}=$T(l),d=c.length>0,f=c.includes(u),h=u===ds.Unknown;if(d&&!f&&!h)return;let m=u===ds.Unknown&&zT(p);if(h&&!m)return;if(o.includes(u)||m)if(r)s(u,p.toLowerCase(),r);else{let T=c.filter(k=>o.includes(k));T.forEach(k=>{s(k,p.toLowerCase())}),T.includes(OT)&&s(ds.HYPERLIQUID,p.toLowerCase())}else s(u,p)}),a}i(fs,"prepareAccountsForWalletStore");function Mo(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,c=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:l}=r;l.forEach((p,u)=>{let d=p.from.blockchain,f=p.to.blockchain,h=a===o.swaps.length-1,g=u===l.length-1;(!h&&!g||h&&c!==d||e==="all")&&n.add(d),e==="all"&&n.add(f)})}e==="all"&&n.add(c)}),Array.from(n)}i(Mo,"getQuoteChains");function Rn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Rn,"isAccountAndWalletMatched");var Eu=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?ms(n.usdValue,n.decimals):pe.toFixed();return o.plus(r)},new pn(pe));return QT(e.toString())},"calculateWalletUsdValue");function QT(t){let e=t.toString().split(".");return e[0]&&(e[0]=gu(e[0])),e.join(".")}i(QT,"numberWithThousandSeparator");function ms(t,e){return new pn(t).shiftedBy(-e).toFixed()}i(ms,"representAmountInNumber");function pi(t){if(!t)return null;let e=ms(t.amount,t.decimals),o=t.usdValue?ms(t.usdValue,t.decimals):null,n=M(e,8,8),r=o?M(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(pi,"formatBalance");function bu(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new pn(t.usdValue).shiftedBy(-t.decimals):pe,n=e&&e.usdValue?new pn(e.usdValue).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new pn(t.amount).shiftedBy(-t.decimals):pe,n=e&&e.amount?new pn(e.amount).shiftedBy(-e.decimals):pe;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(bu,"compareTokenBalance");function Vt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Vt,"areTokensEqual");function xu(t){return t.sort((e,o)=>+(o.state===ut.CONNECTED)-+(e.state===ut.CONNECTED)||+(o.state===ut.PARTIALLY_CONNECTED)-+(e.state===ut.PARTIALLY_CONNECTED)||+(o.state===ut.DISCONNECTED||o.state===ut.CONNECTING)-+(e.state===ut.DISCONNECTED||e.state===ut.CONNECTING))}i(xu,"sortWalletsBasedOnConnectionState");function po(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(po,"getConciseAddress");function Iu({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(Iu,"getAddress");var Au=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function gs(t){return t.map(e=>e.state).join("-")}i(gs,"hashWalletsState");function Nu(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(Nu,"filterBlockchainsByWalletTypes");function Wu(t,e){return e===DT.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(ii(n,e))return!0;return!1})}i(Wu,"filterWalletsByCategory");function qT(t,e){if(!t.isHub||!t.needsNamespace||!e.connected)return!1;let n=t.needsNamespace.data.filter(r=>!r.unsupported);return t.needsNamespace.selection==="multiple"&&n.some(r=>!e.namespaces?.get(r.value)?.connected)}i(qT,"checkIsWalletPartiallyConnected");var hs={API_KEY:Jp()};function Kt(t){return hs[t]||""}i(Kt,"getConfig");function Pu(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),hs=e,hs}i(Pu,"initConfig");var Lu=20,Bu=25,ys="theme-widget",Ss=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Vt(n,t));else if(!Array.isArray(e)){let n=e[t.blockchain];if(n){o=!!n.tokens.some(a=>Vt(a,t));let r=n.isExcluded;return!r&&!o||r&&o}}}return o},"isTokenExcludedInConfig"),Ts=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),_u=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var ui,dt=i(()=>ui||(ui=new GT(Kt("API_KEY"),Kt("BASE_URL")),ui),"httpService");import{i18n as Mu}from"@lingui/core";var di=[.5,1,3],mi=1,un=5,er=30,fi=0;var Je=(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))(Je||{});var tr=(s=>(s.QUOTE_INPUT_UPDATE="quoteInputUpdate",s.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",s.ROUTE_REQUESTED="routeRequested",s.ROUTE_NOT_FOUND="routeNotFound",s.ROUTE_FETCH_FAILED="routeFetchFailed",s.ROUTE_CHANGED="routeChanged",s))(tr||{}),gi=(n=>(n.CONNECT="connect",n.DISCONNECT="disconnect",n.DETECTED="detected",n))(gi||{}),Re=(m=>(m.CLICK_CONNECT_WALLET="clickConnectWallet",m.TOKEN_SELECTED="tokenSelected",m.CHAIN_FILTER_APPLIED="chainFilterApplied",m.SETTINGS_CHANGED="settingsChanged",m.ROUTE_FEE_VIEWED="routeFeeViewed",m.DESTINATION_ADDRESS_SET="destinationAddressSet",m.GAS_WARNING_SHOWN="gasWarningShown",m.GAS_WARNING_BYPASSED="gasWarningBypassed",m.SWAP_INITIATED="swapInitiated",m.SWAP_WALLETS_MODAL_SHOWN="swapWalletsModalShown",m.SWAP_WALLETS_CONFIRMED="swapWalletsConfirmed",m.SWAP_STARTED="swapStarted",m.SWAP_RESUMED="swapResumed",m.SWAP_RETRIED="swapRetried",m.SWAP_CANCELLED="swapCancelled",m))(Re||{}),dn=(a=>(a.RouteEvent="routeEvent",a.StepEvent="stepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(dn||{});function hi(t,e){let o=t.map(a=>a.swapperGroup),n=[];return cn(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(hi,"getUniqueSwappersGroups");function Du(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Du,"sortLiquiditySourcesByGroupTitle");function nt(t,e){return e?.[t]==="hidden"}i(nt,"isFeatureHidden");function mn(t,e){return e?.[t]==="enabled"}i(mn,"isRoutingEnabled");var $u=i((t,e,o)=>nt("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function fn(t){return t==fi?{type:"error",message:Mu.t("Slippage must be greater than or equal to 0.01")}:t>un&&t<=er?{type:"warning",message:Mu.t("Your transaction is at risk of being frontrun due to high slippage tolerance."),quoteValidation:{type:3,slippage:t.toString()}}:null}i(fn,"getSlippageValidation");var Fu=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=oi({config:a}),p=r;return l.length>0&&(p=p.filter(u=>l.includes(u.name))),p.filter(u=>Xp.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=sn.get(u);d?.length||(d=jn({type:o.type,config:{blockchains:a[p]?.blockchains,tokens:a[p]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),sn.set(u,d)),d=$u(d,s,a.features);let f=e().blockchains({type:o.type});return d.filter(g=>o.blockchain&&g.blockchain!==o.blockchain||!f.some(m=>m.name===g.blockchain)?!1:o.searchFor?!!(pt(g.symbol,o.searchFor)||pt(g.address||"",o.searchFor)||pt(g.name||"",o.searchFor)):!0).sort((g,m)=>{let S=e().isTokenPinned(g,o.type),T=e().isTokenPinned(m,o.type);if(S!==T)return S?-1:1;if(o.getBalanceFor){let x=o.getBalanceFor(g),A=o.getBalanceFor(m),E=bu(x,A);if(E!==0)return E}let y=l.get(g.blockchain),k=l.get(m.blockchain),w=as(g,y),v=as(m,k);if(w!==v)return w?-1:1;if(g.isPopular!==m.isPopular)return g.isPopular?-1:1;if(o.searchFor){let x=lu(g,m,o.searchFor);if(x)return x}return g.isSecondaryCoin!==m.isSecondaryCoin?g.isSecondaryCoin?1:-1:y&&k?y.sort-k.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=Ct(o),s=n.get(a);return s||(s=r.find(c=>Ct(c)===a)),s},findNativeToken:o=>{let n=o.feeAssets[0];return e().findToken({blockchain:o.name,address:n.address,symbol:n.symbol})},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Vt(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(Du)},fetch:async()=>{try{let{routing:o}=e().config,n=mn("enableCentralizedSwappers",o),r=await dt().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,c={},l=r.popularTokens,p=r.swappers.filter(d=>d.enabled);r.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&a.set(d.name,d)}),r.tokens.forEach(d=>{let f=Ct(d);c[d.blockchain]||(c[d.blockchain]=[]),s.set(f,d),c[d.blockchain]?.push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:c,_popularTokens:l,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as VT,Catalonia as KT,Chinese as Ou,Denmark as jT,English as XT,Finland as YT,French as ZT,German as JT,Greece as RT,Hungary as eC,India as tC,Indonesian as oC,Italian as nC,Japanese as rC,Korea as iC,Lithuania as aC,Malay as sC,Netherlands as lC,Pakistan as cC,Philippines as pC,Poland as uC,Portuguese as dC,Russian as mC,SaudiArabia as fC,Serbia as gC,Slovakia as hC,SouthAfrica as yC,Spanish as SC,Swahili as TC,Swedish as CC,Thai as kC,Turkish as wC,Ukrainian as vC,Vietnamese as EC}from"@rango-dev/ui";var Uu=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:yC},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:fC},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:VT},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:KT},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Ou},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Ou},{title:"Danish",label:"Dansk",local:"da",SVGFlag:jT},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:lC},{title:"English",label:"English",local:"en",SVGFlag:XT},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:pC},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:YT},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:ZT},{title:"German",label:"Deutsch",local:"de",SVGFlag:JT},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:RT},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:tC},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:eC},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:oC},{title:"Italian",label:"Italiana",local:"it",SVGFlag:nC},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:rC},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:iC},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:aC},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:sC},{title:"Polish",label:"Polski",local:"pl",SVGFlag:uC},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:dC},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:mC},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:gC},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:hC},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:SC},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:TC},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:CC},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:kC},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:wC},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:vC},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:cC},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:EC}],gn="en";var zu=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:mi,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=cn(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=nt("theme",n),s=nt("language",n),c=nt("liquiditySource",n),l=r?.singleTheme,p=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...l&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||gn},...c&&{disabledLiquiditySources:o.liquiditySources||[]},...p&&{language:o.language||gn}})},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=oi({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import bs from"bignumber.js";import bC from"mitt";var ge=bC(),xC={on:ge.on,off:ge.off};var Hu=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 Qu from"bignumber.js";function jt(t){return`${t.blockchain}${Bo}${t.address}${Bo}${t.symbol}`}i(jt,"createAssetKey");function qu(t,e){return`${jt(e)}${Bo}${t}`}i(qu,"createBalanceKey");function or(t){let[e,o,n]=t.split(Bo);return!e||!o||!n?null:{address:o==="null"?null:o,blockchain:e,symbol:n}}i(or,"extractAssetFromBalanceKey");function ks(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[jt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Qu(r??pe).multipliedBy(o[s].amount).toString():""})})}),o}i(ks,"computeNextBalancesWithNewPrices");function ws(t,e){let o={};return t.balances?.forEach(n=>{let r=qu(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,c=n.price??e().findToken(n.asset)?.usdPrice,l=c?new Qu(c??pe).multipliedBy(a).toString():"",p={amount:a,decimals:s,usdValue:l};o[r]=p}),o}i(ws,"createBalanceStateForNewAccount");function vs(t,e){for(let o in e){let n=or(o);if(n){let r=jt(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}}return t}i(vs,"updateAggregatedBalanceStateForNewAccount");function IC(t,e){let o=or(e);if(!o)return t;let n=jt(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(IC,"removeBalanceFromAggregatedBalance");function Es(t,e,o){let n=t.connectedWallets.filter(l=>e.includes(l.walletType));t.connectedWallets.forEach(l=>{e.includes(l.walletType)||(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=or(l);if(!p)return;!!n.find(d=>qu(d.address,{address:p.address,blockchain:d.chain,symbol:p.symbol})===l)?a=IC(a,l):s[l]&&(r[l]=s[l])}),{_balances:r,_aggregatedBalances:a}}i(Es,"computeNextStateAfterWalletBalanceRemoval");function AC(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(AC,"matchWalletDetailsWithConnectedWallet");var NC=uu(),Gu=Hu((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Rn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Rn(s,a))?{...a,loading:!1,error:!1,explorerUrl:AC(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Rn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n,r)=>{let a=e().connectedWallets,s=o.filter(c=>!a.some(l=>Rn(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 dt().getMultipleTokenBalance({assets:p.map(({symbol:d,address:f,blockchain:h})=>({symbol:d,address:f,blockchain:h})),walletAddress:l});if(u){let d=e()._balances,f=e()._aggregatedBalances;u.forEach(h=>{if(parseFloat(h.amount.amount)===0)return;let g={blockChain:h.asset.blockchain,balances:[h],address:l},m={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};ks(m,g,d);let S=ws(g,e);f=vs(f,S),d={...d,...S}}),t(h=>({_balances:{...h._balances,...d},_aggregatedBalances:f}))}}catch(u){console.error(u)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(c=>c.chain===r.chain&&c.walletType!==r.walletType&&r.selected),s=!!o.find(c=>c.chain===r.chain&&c.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n,r,a)=>{let s=o[0];s&&(ge.emit("walletEvent",{type:"connect",payload:{walletType:s.walletType,accounts:o,chain:s.chain??null,walletName:a?.walletName??s.walletType}}),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}=Es(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(ge.emit("walletEvent",{type:"disconnect",payload:{walletType:o,walletName:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(c=>a.includes(c.chain)?(a=a.filter(l=>l!==c.chain),{...c,selected:!0}):c);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0||!o[0])return;let r=[...new Set(o.map(l=>l.walletType))];e().setConnectedWalletAsRefetching(o);let a=o.map(l=>({address:l.address,blockchain:l.chain})),s;try{s=await dt().getWalletsDetails(a)}catch(l){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${l}`);return}let c=s.wallets;if(c){let l=e()._balances,p=e()._aggregatedBalances;c.forEach(d=>{if(d.failed)return;let f={_balances:l,_aggregatedBalances:p,connectedWallets:e().connectedWallets,findToken:e().findToken};ks(f,d,l);let{_balances:h,_aggregatedBalances:g}=Es(f,r,{chains:[d.blockChain]});if(p=g,l=h,!e().connectedWallets.find(S=>r.includes(S.walletType)&&S.address===d.address&&S.chain===d.blockChain))return;let m=ws(d,e);p=vs(p,m),l={...l,...m}}),t(d=>({_balances:{...d._balances,...l},_aggregatedBalances:p})),e().setConnectedWalletRetrievedData(o,c);let{retryOnFailedBalances:u=!0}=n||{};if(u){let d=c.filter(f=>f.failed).map(f=>{let h=e().connectedWallets.find(g=>g.chain===f.blockChain&&g.address)?.walletType;return h?{chain:f.blockChain,walletType:h,address:f.address}:null}).filter(f=>!!f);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=jt(o),a=e()._aggregatedBalances[r]||[];if(a.length===0||!a[0])return null;let s=a[0];if(a.length===1&&n[s])return n[s];let c=n[a[0]];if(!c)return null;let l=c;return a.forEach(p=>{let u=n[p];if(!u)return;let d=new bs(u.amount),f=new bs(l.amount);d.isGreaterThan(f)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,c)=>{let l=n[c],[,,,p]=c.split(Bo);return l&&p===o&&(s[c]=l),s},{})},getConnectedWalletsDetails:()=>NC(()=>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=or(c);if(p&&p.blockchain===n.chain&&l){let u=e().findToken(p),d=l?.amount?new bs(l.amount).shiftedBy(-l.decimals):pe;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 Vu(t){return WC()(PC((...e)=>({...Gu(...e),...Fu(...e),...zu(...e),...Kp(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(Vu,"createAppStore");var Ku=BC(null);function C(){let t=_C(Ku);if(MC(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(C,"useAppStore");function ju(t){let e=DC();return e.current||(e.current=Vu(t.config)),LC.createElement(Ku.Provider,{value:e.current},t.children)}i(ju,"AppStoreProvider");function te(t){ge.emit("uiEvent",t)}i(te,"emitUiEvent");function Xu(t,e){let o=!1,n={...t.payload,preventDefault(){o=!0}};te({type:t.type,payload:n}),o||e()}i(Xu,"emitPreventableEvent");function hn(t){ge.emit("quoteEvent",t)}i(hn,"emitQuoteEvent");function Yu(t){ge.emit("walletEvent",{type:"detected",payload:t})}i(Yu,"emitWalletDetected");var Ju=new Set,UC=new Set([Mt.LEDGER,Mt.TREZOR,Mt.WALLET_CONNECT_2,Mt.TON_CONNECT,Mt.DEFAULT]);function bt(t){let{chain:e}=t||{},{getAvailableProviders:o}=C(),{state:n,getWalletInfo:r}=$C(),{handleDisconnect:a}=an(),s=Hp(o()),c=vu(n,r,s,e);c=FC()?c.filter(f=>f.showOnMobile!==!1&&n(f.type).installed):c;let l=xu(c);Zu(()=>{c.forEach(f=>{if(UC.has(f.type))return;f.state!==yi.NOT_INSTALLED&&!Ju.has(f.type)&&(Ju.add(f.type),Yu({walletName:f.title}))})},[gs(c)]);let p=OC(()=>{let f=c?.filter(h=>h.state===yi.CONNECTING)||[];for(let h of f)a(h)},[gs(c)]);Zu(()=>()=>{p()},[]);let u=i(f=>{let h=f.find(m=>m.type===Mt.DEFAULT);return!h||h.state===yi.NOT_INSTALLED?!1:f.filter(m=>m.state!=yi.NOT_INSTALLED&&![Mt.DEFAULT,Mt.WALLET_CONNECT_2,Mt.LEDGER].includes(m.type)&&r(m.type).supportedChains.filter(S=>S.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=i(f=>f==Mt.DEFAULT&&!u(c),"shouldExcludeWallet");return{list:l.filter(f=>!d(f.type)),terminateConnectingWallets:p}}i(bt,"useWalletList");import{Modal as qC}from"@rango-dev/ui";import GC from"react";import{create as QC}from"zustand";var Ru="rango-widget";var nr=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(Ru),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 HC=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"),uo=HC;var ne=uo(QC()((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})}}))),$o=new nr({onInit:()=>ne.setState({tabManagerInitiated:!0}),onClaim:()=>ne.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ne.setState({isActiveTab:!1})});function re(t){let{watermark:e}=ne();return GC.createElement(qC,{hasWatermark:e==="FULL",...t},t.children)}i(re,"WatermarkedModal");import{i18n as Tn}from"@lingui/core";import{Alert as ik,Button as ak,Divider as Cn,Image as sk,MessageBox as lk,RadioRoot as ck,WalletImageContainer as pk}from"@rango-dev/ui";import le,{useEffect as uk,useMemo as dk,useState as mk}from"react";import{i18n as XC}from"@lingui/core";import{Typography as sd}from"@rango-dev/ui";import yn from"react";function Si(t,e){return t.find(o=>o.name===e)?.logo}i(Si,"getBlockchainLogo");import{darkTheme as VC,Image as KC,styled as Xt,Typography as jC}from"@rango-dev/ui";var Ti=Xt("li",{backgroundColor:"$neutral200",padding:"$16",borderRadius:"$sm",variants:{clickable:{true:{cursor:"pointer"}},hasError:{true:{background:"$error100",[`.${VC} &`]:{backgroundColor:"$error700"}}},unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),Ci=Xt("div",{display:"flex",gap:"$8",alignItems:"center"}),td=Xt("div",{flex:"1",display:"flex",flexDirection:"column",justifyContent:"space-between",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),od=Xt("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),nd=Xt("div",{display:"flex",gap:"$6",alignItems:"center"}),rd=Xt("div",{paddingLeft:"48px"}),id=Xt("div",{display:"flex",gap:"$2",cursor:"pointer",alignItems:"center",width:"fit-content"}),ad=Xt(jC,{maxWidth:"100px"}),ki=Xt(KC,{variants:{disabled:{true:{opacity:"0.5"}}}});function wi(t){let{namespace:e}=t,o=C().blockchains();return yn.createElement(Ti,{unsupported:!0},yn.createElement(Ci,null,yn.createElement(ki,{src:Si(o,e.id),size:40,disabled:!0}),yn.createElement(od,null,yn.createElement(sd,{variant:"label",size:"large"},e.label),yn.createElement(sd,{variant:"body",size:"xsmall"},XC.t("(Currently not supported)")))))}i(wi,"NamespaceUnsupportedItem");import{Checkbox as ok,Radio as nk}from"@rango-dev/ui";import Ns from"react";import{i18n as As}from"@lingui/core";import{ChevronDownIcon as ZC,ChevronUpIcon as JC,Divider as RC,Typography as rr}from"@rango-dev/ui";import Ne,{useEffect as ek,useState as tk}from"react";import{Image as cd,Tooltip as pd,Typography as YC}from"@rango-dev/ui";import Dt from"react";import{styled as ld}from"@rango-dev/ui";var xs=ld("div",{display:"flex",alignItems:"center",padding:0,margin:0}),vi=ld("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 Is=3;function ud(t){let{chains:e}=t;return Dt.createElement(xs,{id:"widget-supported-chains-container"},e.slice(0,Is).map((o,n)=>Dt.createElement(pd,{key:o.name,container:W(),side:"bottom",align:"start",content:o.name,sideOffset:4},Dt.createElement(vi,{firstItem:n===0},Dt.createElement(cd,{src:o.logo,size:15})))),e.length>Is&&Dt.createElement(pd,{container:W(),side:"bottom",align:"start",sideOffset:4,content:Dt.createElement(xs,null,e.map((o,n)=>Dt.createElement(vi,{key:o.name,firstItem:n===0},Dt.createElement(cd,{src:o.logo,size:15}))))},Dt.createElement(vi,null,Dt.createElement(YC,{variant:"body",size:"xsmall"},"+",e.length-Is))))}i(ud,"SupportedChainsList");function Fo(t){let{namespace:e,error:o,suffix:n,connected:r,address:a,onClick:s}=t,[c,l]=tk(!1),p=C().blockchains();ek(()=>l(!1),[o]);let u=e.getSupportedChains(p),d=!o&&!r&&u.length>1;return Ne.createElement(Ti,{hasError:!!o,clickable:!!s,onClick:s},Ne.createElement(Ci,null,Ne.createElement(ki,{src:Si(p,e.id),size:40}),Ne.createElement(td,{showSupportedChains:d||r||!!o},Ne.createElement(nd,null,Ne.createElement(rr,{variant:"label",size:"large"},e.label),r&&Ne.createElement(rr,{variant:"body",size:"small",color:"success500"},As.t("Connected")),!!o&&Ne.createElement(rr,{variant:"body",size:"small",color:"error500"},As.t("Connection failed"))),d&&Ne.createElement(ud,{chains:u}),r&&Ne.createElement(ad,{variant:"body",size:"small",color:"neutral700"},a),o&&Ne.createElement(id,{onClick:()=>l(f=>!f)},Ne.createElement(rr,{variant:"body",size:"small",color:"neutral700",style:{textDecoration:"underline",userSelect:"none",textDecorationSkipInk:"none"}},As.t("See why")),c?Ne.createElement(JC,{size:12,color:"gray"}):Ne.createElement(ZC,{size:12,color:"gray"}))),n),!!o&&c&&Ne.createElement(Ne.Fragment,null,Ne.createElement(RC,{size:4}),Ne.createElement(rd,null,Ne.createElement(rr,{variant:"body",size:"small",color:"neutral700"},o))))}i(Fo,"NamespaceItem");function dd(t){let{onClick:e,type:o,namespace:n}=t;return Ns.createElement(Fo,{namespace:n,onClick:e,suffix:o==="radio"?Ns.createElement(nk,{value:n.value}):Ns.createElement(ok,{checked:t.value})})}i(dd,"NamespaceListItem");import{Button as rk,styled as md}from"@rango-dev/ui";var Ei=md("ul",{padding:0,paddingBottom:"$20",margin:0}),Sn=md(rk,{minHeight:"$40"});function ir(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=C().blockchains(),[l,p]=mk([]),u=dk(()=>a?.data.filter(m=>!m.unsupported),[e?.type]),d=i(m=>{p(r?[m]:S=>S.includes(m)?S.filter(T=>T!==m):S.concat(m))},"onSelect"),f=u?.length===l.length,h=i(()=>{if(r)throw new Error("onSelectAll should not be called on single selection mode.");f?p([]):u&&p(u.map(m=>m.value))},"onSelectAll"),g=i(m=>r?le.createElement(ck,{value:l?.[0]},m):le.createElement(le.Fragment,null,m),"wrapRadioRoot");return uk(()=>{if(!r&&u)if(t.value.defaultSelectedChains?.length){let m=u.filter(S=>S.getSupportedChains(c).some(T=>t.value.defaultSelectedChains?.includes(T.name)));p(m.map(S=>S.value))}else p(u.map(m=>m.value))},[]),le.createElement(le.Fragment,null,le.createElement(lk,{type:"info",title:Tn.t("Connect {wallet}",{wallet:e.title}),description:Tn.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect."),icon:le.createElement(pk,null,le.createElement(sk,{src:s,size:45}))}),r?le.createElement(le.Fragment,null,le.createElement(Cn,{size:20,className:"_initial_namespace_list_header_alert_top_divider"}),le.createElement(ik,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:Tn.t("This wallet can only connect to one chain at a time. ")}),le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_alert_bottom_divider"})):le.createElement(le.Fragment,null,le.createElement(Cn,{size:30,className:"_initial_namespace_list_header_button_top_divider"}),le.createElement(ak,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:h},f?Tn.t("Deselect all"):Tn.t("Select all")),le.createElement(Cn,{size:10,className:"_initial_namespace_list_header_button_bottom_divider"})),le.createElement(Ei,null,g(le.createElement(le.Fragment,null,a?.data.map((m,S,T)=>le.createElement(le.Fragment,{key:m.id},m.unsupported?le.createElement(wi,{namespace:m}):le.createElement(dd,{value:l.includes(m.value),namespace:m,type:r?"radio":"checkbox",onClick:()=>d(m.value)}),S!==T.length-1&&le.createElement(Cn,{size:10})))))),le.createElement(Cn,{size:20}),le.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!l.length,onClick:()=>t.onConfirm(l)},Tn.t("Connect")))}i(ir,"Namespaces");import{i18n as ar}from"@lingui/core";import{Alert as Ck,Button as kk,Divider as kn,Image as wk,MessageBox as vk,WalletImageContainer as Ek}from"@rango-dev/ui";import{useWallets as bk}from"@rango-dev/wallets-react";import me from"react";import{styled as fk}from"@rango-dev/ui";var fd=fk("div",{display:"flex",justifyContent:"end"});import{i18n as Ws}from"@lingui/core";import{Button as gk,Spinner as hk}from"@rango-dev/ui";import Ps,{useLayoutEffect as yk,useRef as Sk,useState as Tk}from"react";function gd(t){let{namespace:e,initialConnect:o,disabled:n,state:r,handleConnect:a,handleDisconnect:s}=t,[c,l]=Tk(null),p=Sk(!1);yk(()=>{o&&!p.current&&u()},[]);let u=i(async g=>{try{p.current=!0,await a(g)}catch(m){l(m)}finally{p.current=!1}},"handleConnectNamespace"),d=i(async()=>{l(null),r.connected?await s():u({shouldAskForDerivationPath:!0})},"handleButtonClick"),f=i(()=>{let g=r.accounts?.[0]?.split(":"),m=g?.[g.length-1];return!r.connected||!m?null:po(m)},"getConnectedAddress"),h=i(()=>r.connected?Ws.t("Disconnect"):c?Ws.t("Try again"):Ws.t("Connect"),"getButtonText");return Ps.createElement(Fo,{namespace:e,connected:r.connected,error:c?.message,address:f(),suffix:r.connecting?Ps.createElement(hk,{color:"info"}):Ps.createElement(gk,{id:"widget-name-space-connect-btn",variant:"ghost",type:r.connected?"error":"primary",size:"xsmall",onClick:async()=>d(),disabled:n},h())})}i(gd,"NamespaceDetachedItem");function sr(t){let{value:e,selectedNamespaces:o,onConfirm:n,confirmText:r=ar.t("Done"),onDisconnectWallet:a,navigateToDerivationPath:s}=t,{targetWallet:c}=e,{connect:l,disconnect:p,state:u}=bk(),d=c.type,f=u(d),h=c.properties?.find(w=>w.name==="namespaces"),g=c.properties?.find(w=>w.name==="derivationPath"),m=h?.value.selection==="single",S=i(async(w,v)=>{m&&await p(d),g&&v?.shouldAskForDerivationPath?s(w):await l(d,[{namespace:w,network:"",derivationPath:v?.derivationPath??void 0}])},"handleConnectNamespace"),T=i(async w=>{await p(d,[w])},"handleDisconnectNamespace"),y=i(()=>m?me.createElement(me.Fragment,null,me.createElement(kn,{size:20,className:"_detached_namespace_list_header_alert_top_divider"}),me.createElement(Ck,{id:"widget-wallet-stateful-connect-alert",variant:"alarm",type:"info",title:ar.t("This wallet can only connect to one chain at a time.")}),me.createElement(kn,{size:30,className:"_detached_namespace_list_header_alert_bottom_divider"})):me.createElement(me.Fragment,null,me.createElement(kn,{size:30,className:"_detached_namespace_list_header_button_top_divider"}),me.createElement(fd,null,me.createElement(kk,{id:"widget-detached-disconnect-wallet-btn",variant:"ghost",type:"error",size:"xsmall",disabled:f.connecting||!f.connected,onClick:a},ar.t("Disconnect wallet"))),me.createElement(kn,{size:16,className:"_detached_namespace_list_header_button_bottom_divider"})),"renderNamespaceListHeader"),k=i(w=>{if(w.unsupported)return me.createElement(wi,{namespace:w});let v=o?.find(E=>E.namespace===w.value),x=f.namespaces?.get(w.value);if(!x)throw new Error(`State for ${w.value} was not found!`);let A=m&&f.connecting;return me.createElement(gd,{namespace:w,initialConnect:!!v,disabled:A,state:x,handleConnect:async E=>S(w.value,{derivationPath:v?.derivationPath,shouldAskForDerivationPath:E?.shouldAskForDerivationPath}),handleDisconnect:async()=>T(w.value)})},"renderNamespaceItem");return me.createElement(me.Fragment,null,me.createElement(vk,{type:"info",title:ar.t("Connect {wallet}",{wallet:c.title}),description:ar.t("This wallet supports multiple chains. Choose which chains you\u2019d like to connect or disconnect."),icon:me.createElement(Ek,null,me.createElement(wk,{src:c.image,size:45}))}),y(),me.createElement(Ei,{id:"widget-detached-namespace-list"},c.needsNamespace?.data.map((w,v,x)=>me.createElement(me.Fragment,{key:w.id},k(w),v!==x.length-1&&me.createElement(kn,{size:10})))),me.createElement(kn,{size:20}),me.createElement(Sn,{id:"widget-name-space-confirm-btn",type:"primary",onClick:n},r))}i(sr,"Detached");import{i18n as wn}from"@lingui/core";import{Divider as Nk,Image as Wk,MessageBox as Pk,Select as Lk,TextField as Bk}from"@rango-dev/ui";import xt,{useEffect as _k,useState as yd}from"react";import{namespaces as xk}from"@rango-dev/wallets-shared";var bi={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Ls(t){let e=t?xk[t]?.derivationPaths:null;return e?[...e,bi]:[]}i(Ls,"getDerivationPaths");import{Button as Ik,styled as Bs,Typography as Ak}from"@rango-dev/ui";var hd=Bs("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),_s=Bs(Ak,{paddingLeft:"$10"}),Ms={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},eM=Bs(Ik,{minHeight:"$40"});var Sd="0";function lr(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=yd(null),[c,l]=yd(Sd),p=a===bi.id,u=Ls(o),d=i(({value:h})=>{let g=u?.find(m=>m.id===h);g&&(a===bi.id&&Number.isNaN(Number(c))&&l(Sd),s(g.id))},"handleDerivationPathItemClick"),f=i(()=>{let h=u.find(g=>g.id===a);if(h)e(h.generateDerivationPath(c));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return _k(()=>{s(Ls(o)[0]?.id||null)},[o]),xt.createElement(xt.Fragment,null,xt.createElement(Pk,{type:"info",title:wn.t("Select Derivation Path"),description:wn.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:xt.createElement(Wk,{src:n,size:45})}),xt.createElement(hd,{className:"_derivation_path_inputs_container"},xt.createElement(_s,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},wn.t("Choose Derivation Path Template")),xt.createElement(Lk,{id:"widget-derivation-path-template-select",value:a||"",options:u.map(h=>({value:h.id,label:h.label})),variant:"filled",handleItemClick:d,styles:{trigger:Ms}}),xt.createElement(Nk,{size:20}),xt.createElement(_s,{variant:"body",size:"xsmall",color:"$neutral600",className:"_derivation_path_input_label"},p?wn.t("Enter Path"):wn.t("Enter Index")),xt.createElement(Bk,{id:"widget-derivation-path-template-input",type:p?"text":"number",variant:"contained",value:c,onChange:h=>l(h.target.value),style:Ms})),xt.createElement(Sn,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:f,disabled:!u||!a||!c},wn.t("Confirm")))}i(lr,"DerivationPath");import{i18n as vn}from"@lingui/core";import{Image as $k,MessageBox as $s,WalletImageContainer as Fk,WalletState as Ok}from"@rango-dev/ui";import{useWallets as Uk}from"@rango-dev/wallets-react";import Oo from"react";import{keyframes as Mk,styled as Ds}from"@rango-dev/ui";var uM=Ds("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Td=Ds("div",{position:"relative"}),Dk=Mk({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),Cd=Ds("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${Dk} 1s linear infinite`,top:0,bottom:0,right:0,left:0});function Fs(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a,getWalletInfo:s}=Uk();return Zn(s(n),a(n))===Ok.CONNECTED?Oo.createElement($s,{type:"success",title:vn.t("Wallet Connected"),description:vn.t("Your wallet is connected, you can use it to swap.")}):o?Oo.createElement($s,{type:"error",title:vn.t("Failed to Connect"),description:o||vn.t("Your wallet is not connected. Please try again.")}):Oo.createElement($s,{type:"loading",title:vn.t("Connecting to your wallet"),description:vn.t("Click connect in your wallet popup."),icon:Oo.createElement(Td,null,Oo.createElement(Fk,null,Oo.createElement($k,{src:r,size:45})),Oo.createElement(Cd,null))})}i(Fs,"ConnectStatus");function kd(t,e){return t().status==="init"&&!!e}i(kd,"isOnStatus");function cr(t){return t().status==="namespace"}i(cr,"isOnNamespace");function pr(t){return t().status==="derivationPath"}i(pr,"isOnDerivationPath");function Wo(t){return t().status==="detached"}i(Wo,"isOnDetached");var qk=3e3,Gk=300;function ur(t){let e=Qk(),[o,n]=wd(!1),[r,a]=wd(),s=i(v=>{a(v.message)},"catchErrorOnHandle"),{terminateConnectingWallets:c}=bt(),{handleConnect:l,handleDerivationPath:p,handleNamespace:u,getState:d,resetState:f,handleDisconnect:h}=an(),g=i(v=>{u(t.wallet,v).then(k).catch(s)},"handleConfirmNamespaces"),m=i(()=>{T()},"handleDetachedConfirm"),S=i(v=>{if(!v)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");p(t.wallet,v).then(k).catch(s)},"handleDerivationPathConfirm"),T=i(()=>{n(!1)},"handleClosingModal"),y=i(()=>{a(void 0),f(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((v,x)=>{let A=v.status==="connected",E=["disconnected","disconnected-unhandled"].includes(v.status);A?(t.onConnect?.(),x||(e.current=setTimeout(T,qk))):E&&T()},"afterConnected"),w=i(v=>{t.wallet?.needsDerivationPath&&u(t.wallet,[v])},"handleNavigateToDerivationPath");return Hk(()=>{if(t.wallet){y();let v=!1,x=!0;i(()=>{setTimeout(()=>{x=!1,v||n(!0)},Gk)},"beforeConnecting")(),l(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","Detached","derivation-path"].includes(E.status)||(v=!0),k(E,x)}).catch(s)}},[t.wallet]),mo.createElement(re,{id:t.id,open:o,onClose:T,onExit:()=>{y(),c(),t.onClose&&t.onClose()},container:W()},kd(d,t.wallet)&&mo.createElement(mo.Fragment,null,mo.createElement(Fs,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),mo.createElement(zk,{direction:"vertical",size:32})),cr(d)&&mo.createElement(ir,{onConfirm:g,value:d().namespace}),pr(d)&&mo.createElement(lr,{onConfirm:S,value:d().derivationPath}),Wo(d)&&mo.createElement(sr,{onConfirm:m,onDisconnectWallet:()=>void h(d().namespace.targetWallet),value:d().namespace,selectedNamespaces:d().selectedNamespaces,navigateToDerivationPath:w}))}i(ur,"StatefulConnectModal");import es from"react";import Vk,{Fragment as Kk}from"react";import{MemoryRouter as jk,useInRouterContext as Xk}from"react-router";function xi({children:t}){let o=Xk()?Kk:jk;return Vk.createElement(o,null,t)}i(xi,"AppRouter");import{I18nManager as q0}from"@rango-dev/ui";import Wp from"react";import ze from"react";import{useRoutes as w0}from"react-router-dom";var $={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 bn,useRef as Bi}from"react";import at from"bignumber.js";import{create as em}from"zustand";import{subscribeWithSelector as tm}from"zustand/middleware";import{createContext as Yk,useContext as Zk}from"react";var vd=Yk({swapMode:"swap",isMultiMode:!1});function rt(){let{swapMode:t,isMultiMode:e}=Zk(vd);return{swapMode:t,isMultiMode:e}}i(rt,"useSwapMode");import{i18n as wt}from"@lingui/core";import{getRelatedWalletOrNull as ew,RouteEventType as wD}from"@rango-dev/queue-manager-rango-preset";import Ge from"bignumber.js";import{PendingSwapNetworkStatus as dr}from"rango-types";import{i18n as qe}from"@lingui/core";var ie=i(()=>({genericServerError:qe.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:qe.t("Please reset your liquidity sources."),description:qe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:qe.t("No Routes Found."),description:qe.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:qe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:qe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:qe.t("High Price Impact"),title:qe.t("Price impact is too high!"),description:qe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:qe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:qe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:qe.t("USD Price Unknown"),title:qe.t("USD Price Unknown, Cannot calculate Price Impact."),description:qe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:qe.t("Confirm USD Price Unknown")}}),"errorMessages");function Ed(t){return t.type===0?t.diagnosisMessage??ie().noResultError.title:t.type===1?t.diagnosisMessage??ie().genericServerError:""}i(Ed,"getQuoteErrorMessage");import{i18n as Ii}from"@lingui/core";var Uo=i(()=>({connectWallet:Ii.t("Connect Wallet"),swap:Ii.t("Swap"),swapAnyway:Ii.t("Swap anyway"),ethWarning:Ii.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Os(t,e){return{"Network Fee":e("Network Fee"),"Swapper Fee":e("Protocol Fee"),"Affiliate Fee":e("Affiliate Fee"),"Outbound network fee":e("Outbound Fee"),"Rango Fee":e("Rango Fee")}[t]}i(Os,"getFeeLabel");var Us=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],bd=100,xd=30,Id=15,Ad=60;var Nd=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Wd=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as Rk}from"@rango-dev/queue-manager-rango-preset";import lD from"bignumber.js";function Ld(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(Ld,"getRequiredBalanceOfWallet");function Zt(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Zt,"getPriceImpactLevel");function Ai(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=Rk(t.steps);if(!r||!n)return{fromBlockchain:null,fromToken:void 0,toBlockchain:null,toToken:void 0,inputAmount:""};let s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},c=Po(a?a.toBlockchain:n.fromBlockchain,e),l=Po(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(Ai,"createRetryQuote");function En(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=zo(o),s=it(o);if(o&&a&&s){let p=Yt(a.toString(),s.toString());if(!!p&&$d(a,p)){let d=Wi(o?.swaps,n),f=Zt(p);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:p,totalFee:d,warningLevel:f}}}if(e&&Ud(e,o))return{type:4,usdValueChange:M(it(o)?.minus(it(e)??0).toString()??"0",null,2),percentageChange:M(Yt(it(e)??"1",it(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let c=Pi(o.swaps),l=r>un;if(Od(t.userSlippage.toString(),c)){if(l&&parseFloat(c??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:Fd(o,r),minRequiredSlippage:c};return null}i(En,"generateQuoteWarnings");function Bd(t){return![4].includes(t.type)}i(Bd,"isQuoteWarningConfirmationRequired");function Yt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:zs(t.toString(),e.toString());return n&&n<0?n:null}i(Yt,"getPriceImpact");var _d=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"),Ni=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"),Md=i((t,e,o)=>{let n=e[0];if(!e.length||!n)return null;if(!t)return{requestAmount:o,validationStatus:null,...n};let r=new Set(t.swaps.map(s=>s.swapperId)),a=e.find(s=>{let c=new Set(s.swaps.map(l=>l.swapperId));return Array.from(r).every(l=>c.has(l))});return{requestAmount:o,validationStatus:null,...a||n}},"getDefaultQuote"),Dd=i(t=>{let e=i((o,n)=>{let r=Us.indexOf(o.value),a=Us.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function $d(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return Nd.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Ge(r)))}i($d,"hasHighValueLoss");function zd(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(zd,"hasLimitError");function Hd(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];if(!e)return{swap:void 0,fromAmountRangeError:"",recommendation:""};let 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:M(o,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=wt.t({id:"Required: > {min} {symbol}",values:{min:M(o,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=wt.t({id:"Required: <= {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=wt.t({id:"Required: < {max} {symbol}",values:{max:M(n,6,6),symbol:e.from.symbol}}),s=ie().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Hd,"getLimitErrorMessage");function Qd(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:c,needsToWarnEthOnPath:l}=t;return e!=="success"?{title:Uo().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||c||!r||r==="0"?{title:Uo().swap,action:"confirm-swap",disabled:!0}:s?{title:Uo().swapAnyway,action:"confirm-warning",disabled:!1}:l?{title:Uo().ethWarning,action:"confirm-warning",disabled:!1}:{title:Uo().swap,action:"confirm-swap",disabled:!1}:{title:Uo().connectWallet,action:"connect-wallet",disabled:!1}}i(Qd,"getSwapButtonState");function Hs(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(pe))&&e&&e!=="0"&&n!==0)}i(Hs,"canComputePriceImpact");function Qs(t,e){let o=pe;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(!r||r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Ge(r.amount).multipliedBy(a||0))}return o}i(Qs,"getUsdFeeOfStep");function Wi(t,e){return t.reduce((o,n)=>o.plus(Qs(n,e)),pe)}i(Wi,"getTotalFeeInUsd");function qs(t){let e=pe,o=new Ge(t.price||0);return e=e.plus(new Ge(t.amount).multipliedBy(o)),e}i(qs,"getUsdFee");function Gs(t){return t.reduce((e,o)=>e.plus(qs(o)),pe)}i(Gs,"getTotalFeesInUsd");function qd(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(qd,"getFeesGroup");function Gd(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(Gd,"checkSlippageErrors");function Fd(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(Fd,"checkSlippageWarnings");function Pi(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(Pi,"getMinRequiredSlippage");function Od(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Od,"hasProperSlippage");function Vd(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:c,excludeLiquiditySources:l,slippage:p,affiliateRef:u,affiliatePercent:d,affiliateWallets:f,destination:h,contractCall:g}=t,m=a?.reduce((y,k)=>(y[k.chain]=k.address,y),{}),S=[];return r?.forEach(y=>{S.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:u??void 0,affiliatePercent:d??void 0,affiliateWallets:f??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:S,selectedWallets:m??{},slippage:p.toString(),contractCall:g,...h&&{destination:h},...l&&{swapperGroups:s.concat(c??[]),swappersGroupsExclude:!0},...!l&&{swapperGroups:c?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i(Vd,"createQuoteRequestBody");function Kd(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType,derivationPath:n.derivationPath},o),{})}i(Kd,"getWalletsForNewSwap");function zo(t){let e=t.requestAmount,o=t.swaps[0]?.from.usdPrice;if(!(!e||!o))return new Ge(e).multipliedBy(o)}i(zo,"getUsdInputFrom");function it(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(it,"getUsdOutputFrom");function zs(t,e){return new Ge(e).div(new Ge(t)).minus(1).multipliedBy(bd).toNumber()}i(zs,"getPercentageChange");function Ud(t,e){let o=zo(t),n=it(t),r=it(e);if(!o||!n||!r)return!1;let a=zs(n.toString(),r.toString());return Wd.some(({threshold:s,minInput:c})=>a<=s&&o.isGreaterThanOrEqualTo(c))}i(Ud,"isOutputAmountChangedExcessively");function jd(t,e,o){let n=t.validationStatus,r=Mo({filter:"required",quote:t});return e.sort((s,c)=>r.indexOf(s.chain)-r.indexOf(c.chain)).flatMap(s=>Ld(s,n)||[]).filter(s=>!s.ok).map(s=>{let c=s.asset.symbol,l=M(new Ge(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),p=M(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:Tt(s.asset.blockchain,o)}})})}i(jd,"generateBalanceWarnings");function mr(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==dr.NetworkChanged}i(mr,"isNetworkStatusInWarningState");function Xd(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,"")),mr(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let p=(e?ew(t,e):null)?.walletType,u=p?o?.(p)?.name:null;switch(e?.networkStatus){case dr.WaitingForConnectingWallet:r=u?wt.t("Connect {wallet}",{wallet:u}):r;break;case dr.WaitingForQueue:r=r||wt.t("Waiting for other running tasks to be finished");break;case dr.WaitingForNetworkChange:r=r||wt.t("Waiting for changing wallet network");break;case dr.NetworkChangeFailed:r=r||wt.t("The network switch could not be completed. Please try again, or switch the network manually in your wallet.");break;default:r=r||"";break}}a=a||"",r=r||"";let c=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:c}}}i(Xd,"getSwapMessages");function Yd(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(Yd,"getLastConvertedTokenInFailedSwap");function Zd(t){return t.status==="failed"}i(Zd,"shouldRetrySwap");function Jd(t,e,o,n,r,a){if(!n||t)return!0;let s=Mo({filter:"all",quote:n}),c=Mo({filter:"required",quote:n}),l=s.every(d=>r.some(f=>f.chain===d)),p=c.every(d=>r.some(f=>f.chain===d)),u=o&&a?Lo(a,o):!1;return!e&&!l||e&&!o||e&&!!o&&(!u||!p)}i(Jd,"isConfirmSwapDisabled");function Rd(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Rd,"isTokensIdentical");var Li=i((t,e)=>t?.usdPrice?new at(e||pe).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),om=i(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new at(0),outputUsdValue:new at(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=pe,a=o.inputUsdValue;return Yn(o.inputAmount)?(e&&(n=e?.outputAmount?new at(e?.outputAmount):null,a=zo(e)??pe,r=it(e)??pe),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new at(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new at(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new at(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:Li(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 at(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=wu(e);t(()=>({inputAmount:o}))},setInputAmount:e=>{let o=Su(e);ai(e)||(o=mu(o),o=fu(o)),t(n=>({inputAmount:o,...!o&&{outputAmount:null,outputUsdValue:new at(0),selectedQuote:null},...!!n.fromToken&&{inputUsdValue:Li(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:Li(n??null,s),outputUsdValue:new at(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?Li(e.toToken,e.outputAmount?.toString()||""):new at(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new at(0),inputUsdValue:new at(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new at(0),selectedQuote:null})),setQuoteWalletConfirmed:e=>t({quoteWalletsConfirmed:e}),setSelectedWallets:e=>t({selectedWallets:e}),setCustomDestination:e=>t({customDestination:e}),resetQuoteWallets:()=>t({quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null}),setQuoteWarningsConfirmed:e=>t({quoteWarningsConfirmed:e})}),"initializer"),nm=em()(tm(om)),rm=em()(tm(om)),tw=uo(nm),ow=uo(rm);function z(){let{swapMode:t}=rt();return uo(t==="refuel"?rm:nm)}i(z,"useQuoteStore");var im=i((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ge.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&&ge.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})},"subscribeCallback"),am=tw.subscribe(im),sm=ow.subscribe(im);function lm(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:c,fromBlockchain:l,toBlockchain:p}=z()(),u=C().config,d=C().fetchStatus,f=C().blockchains(),{findToken:h}=C(),{setAffiliateRef:g,setAffiliatePercent:m,setAffiliateWallets:S}=C(),T=u?.from?.tokens,y=u?.from?.blockchains,k=u?.to?.tokens,w=u?.to?.blockchains,v=Bi(void 0),x=Bi(void 0),A=Bi(void 0),E=Bi(void 0);bn(()=>{typeof u.amount<"u"&&t(u.amount.toString())},[u?.amount]),bn(()=>{if(d==="success"){r();let I=f.find(N=>N.name===u?.from?.blockchain),b=u?.from?.token,L=b&&h(b);(I||!I&&A.current)&&n(I??null),L?a({token:L,meta:{blockchains:f}}):!L&&v.current&&a({token:null}),A.current=u?.from?.blockchain,v.current=u?.from?.token}},[u?.from?.token?.symbol,u?.from?.token?.address,u?.from?.token?.blockchain,u?.from?.blockchain,d]),bn(()=>{Ss(s,T)&&a({token:null}),Ts(l,y)&&n(null)},[T,y]),bn(()=>{Ss(c,k)&&a({token:null}),Ts(p,w)&&o(null)},[k,w]),bn(()=>{if(d==="success"){r();let I=f.find(N=>N.name===u?.to?.blockchain),b=u?.to?.token,L=b&&h(b);(I||!I&&E.current)&&o(I??null),L?e({token:L,meta:{blockchains:f}}):!L&&x.current&&e({token:null}),E.current=u?.to?.blockchain,x.current=u?.to?.token}},[u?.to?.token?.symbol,u?.to?.token?.address,u?.to?.token?.blockchain,u?.to?.blockchain,d]),bn(()=>{g(u?.affiliate?.ref??null),m(u?.affiliate?.percent??null),S(u?.affiliate?.wallets??null)},[u?.affiliate?.ref,u?.affiliate?.percent,u?.affiliate?.wallets])}i(lm,"useSyncStoresWithConfig");import{useEffect as js,useRef as nw}from"react";import{useInRouterContext as rw,useLocation as iw,useSearchParams as aw}from"react-router-dom";function Vs(t,e){let o=t.split("--");return o[0]?{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}:null}i(Vs,"convertTokenSearchParamToAsset");function Ks(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(Ks,"tokenToSearchParam");function Ys(){let t=iw(),[e,o]=aw(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:c,setFromBlockchain:l,setToBlockchain:p,setFromToken:u,setToToken:d,setInputAmount:f}=z()(),h=C().fetchStatus,g=C().blockchains(),m=rw(),{updateIframe:S,updateCampaignMode:T}=C(),y=C().isInCampaignMode(),k=nw(),{findToken:w}=C(),v=i(()=>{let A={};for(let[P,Z]of e.entries())(P.startsWith("utm_")||P.startsWith("privy_"))&&(A[P]=Z);let E=e.get("fromAmount"),I=e.get("fromBlockchain"),b=e.get("fromToken"),L=e.get("toBlockchain"),N=e.get("toToken"),O=e.get("autoConnect"),q=e.get("clientUrl"),j=e.get("liquiditySources"),ee=e.get("blockchain");return{fromAmount:E,fromBlockchain:I,fromToken:b,toBlockchain:L,toToken:N,autoConnect:O,clientUrl:q,liquiditySources:j,extraQueryParams:A,blockchain:ee}},"getUrlSearchParams"),x=i(A=>{for(let E in A)A[E]||delete A[E];o(A,{replace:!0})},"updateUrlSearchParams");js(()=>{let{autoConnect:A,clientUrl:E,extraQueryParams:I,blockchain:b}=v();m&&h==="success"&&x({fromBlockchain:n?.name,fromToken:Ks(a),toBlockchain:r?.name,toToken:Ks(s),fromAmount:c,autoConnect:A??void 0,clientUrl:E??void 0,blockchain:b??void 0,liquiditySources:y?k.current:void 0,...I})},[t.pathname,c,n,a,r,s,y,h]),js(()=>{if(!m)return;let A=v();if(!k.current&&A.liquiditySources&&(k.current=A.liquiditySources),A.fromAmount&&f(A.fromAmount),h==="success"){let E=g.find(q=>q.name===A.fromBlockchain),I=A.fromToken&&E&&Vs(A.fromToken,E),b=I?w(I):void 0,L=g.find(q=>q.name===A.toBlockchain),N=A.toToken&&L&&Vs(A.toToken,L),O=N?w(N):void 0;E&&(l(E),b&&u({token:b,meta:{blockchains:g}})),L&&(p(L),O&&d({token:O,meta:{blockchains:g}}))}},[h]),js(()=>{let{clientUrl:A,liquiditySources:E}=v();S("clientUrl",A||void 0),T("liquiditySources",E?.split(",")??void 0)},[])}i(Ys,"useSyncUrlAndStore");import{i18n as An}from"@lingui/core";import{Alert as Iv,Button as Av,darkTheme as Nv,Divider as xl,DoneIcon as Wv,styled as Pv,TextField as Lv,Typography as Bv}from"@rango-dev/ui";import Ke,{useState as _v}from"react";import{useNavigate as Mv,useSearchParams as Dv}from"react-router-dom";import{ChevronRightIcon as sw,Divider as mm,Image as lw,Typography as fm}from"@rango-dev/ui";import It from"react";import{darkTheme as cm,styled as Zs}from"@rango-dev/ui";var pm=Zs("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${cm} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${cm} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),um=Zs("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),dm=Zs("div",{display:"flex"});function Js(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return It.createElement(um,null,It.createElement(fm,{size:"large",variant:"label"},n),It.createElement(mm,{size:10}),It.createElement(pm,{onClick:s?void 0:e,disabled:s,id:"widget-blockchain-selector-container"},It.createElement(dm,null,r&&It.createElement(It.Fragment,null,It.createElement(lw,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),It.createElement(mm,{size:4,direction:"horizontal"})),It.createElement(fm,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),It.createElement(sw,{size:12,color:"black"})))}i(Js,"BlockchainSelectorButton");import{i18n as ol}from"@lingui/core";import{Button as hw,Divider as Tm,MessageBox as yw}from"@rango-dev/ui";import fo,{useEffect as Cm,useState as nl}from"react";import{i18n as _i}from"@lingui/core";import{Divider as Ho,ExternalLinkIcon as uw,Image as dw,InfoIcon as mw,Tooltip as fw,Typography as gr}from"@rango-dev/ui";import fe from"react";var gm="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";import{Button as cw,darkTheme as xn,styled as fr,Typography as pw}from"@rango-dev/ui";var Rs=fr("a",{textDecoration:"none",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${xn} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),hm=fr("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${xn} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${xn} &`]:{color:"$colors$neutral900"}}}),el=fr(cw,{minHeight:"$40"}),ym=fr(pw,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"96px"}),Sm=fr("div",{display:"flex",justifyContent:"center",alignItems:"center"});var gw=9;function tl(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,c=n.address?ti({contractAddress:n.address,blockchainMeta:s}):void 0,l=i(()=>window.open(gm,"_blank"),"onClickLearnMore");return fe.createElement(re,{open:e,id:"widget-custom-token-watermarked-modal",dismissible:!0,onClose:o,onExit:r,container:W()},fe.createElement(hm,null,fe.createElement(dw,{src:n.image===""?ni:n.image,size:45,type:"circular"}),fe.createElement(Ho,{size:4}),fe.createElement(Sm,null,fe.createElement(ym,{variant:"title",size:"medium"},n.symbol),n.symbol.length>gw&&fe.createElement(fw,{content:n.symbol,container:W()},fe.createElement(mw,{size:12,color:"gray"}))),fe.createElement(gr,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),fe.createElement(Ho,{size:4}),fe.createElement(gr,{variant:"body",size:"medium"},c?fe.createElement(Rs,{hasHover:!0,href:c,target:"_blank",rel:"nofollow noreferrer"},n.address,fe.createElement(uw,{size:12,color:"gray"})):fe.createElement(Rs,null,n.address)),fe.createElement(Ho,{size:4}),n.coinSource&&fe.createElement(gr,{className:"_coin-source",variant:"body",size:"xsmall"},_i.t("via")," ",fe.createElement(gr,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),fe.createElement(Ho,{size:"32"}),fe.createElement(gr,{size:"medium",variant:"body",className:"_custom-token-description"},_i.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."))),fe.createElement(Ho,{size:40}),fe.createElement(Ho,{size:10}),fe.createElement(el,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},_i.t("Import Anyway")),fe.createElement(Ho,{size:10}),fe.createElement(el,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:l},_i.t("Learn More")))}i(tl,"CustomTokenModal");function hr(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:c,onExitErrorModal:l,onExitImportModal:p}=t,{setCustomToken:u}=C(),[d,f]=nl(!1),[h,g]=nl(!1),[m,S]=nl(!1),T=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),f(!1)},"closeErrorModal"),k=i(()=>{S(!0),y()},"handleErrorModalButtonClick"),w=i(()=>{m&&n?.type==="network-error"&&(S(!1),T()),l()},"handleExit"),v=i(()=>{e&&(u(e),c())},"handleSubmit");return Cm(()=>{n&&f(!0)},[n]),Cm(()=>{o&&e&&g(!0)},[o,e]),fo.createElement(fo.Fragment,null,fo.createElement(re,{open:d,dismissible:!0,id:"widget-add-custom-token-modal",onClose:y,onExit:w,container:W()},fo.createElement(yw,{title:n?.title??"",type:"error",description:n?.message||ol.t("Failed Network, Please retry.")},fo.createElement(Tm,{size:40}),fo.createElement(Tm,{size:10}),fo.createElement(hw,{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"?ol.t("Retry"):ol.t("Add another custom token")))),o&&e&&fo.createElement(tl,{blockchain:o,token:e,onSubmitClick:v,onClose:()=>g(!1),open:h,onExit:p}))}i(hr,"ImportCustomToken");import{useManager as kv}from"@rango-dev/queue-manager-react";import{BottomLogo as wv,Divider as ef,Header as vv}from"@rango-dev/ui";import Pe,{useEffect as qi,useLayoutEffect as Ev,useRef as tf,useState as of}from"react";import{useRef as Sw}from"react";function Mi(){return window.self!==window.top}i(Mi,"isAppLoadedIntoIframe");function rl(){let t=Sw(null),{iframe:e}=C(),o=Mi()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(c=>{for(let l of c)n({type:"widget_height",data:{height:l.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(rl,"useIframe");import{useNavigate as Tw}from"react-router-dom";function Ve(){let t=Tw();return()=>t(-1)}i(Ve,"useNavigateBack");import{createTheme as ul,darkTheme as Lw,lightTheme as Bw}from"@rango-dev/ui";import{useEffect as _w,useState as Mw}from"react";import{theme as Ww,darkColors as Pw}from"@rango-dev/ui";import cl from"react";var Di=16,$i=255,km=.11;function Cw(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(Cw,"expandShortHexColor");function kw(t,e){return t.padStart(e,"0")}i(kw,"pad");function il(t){let e=Math.min(Math.max(Math.round(t),0),$i);return kw(e.toString(Di),2)}i(il,"intToHex");function ww(t){return`#${il(t.red)}${il(t.green)}${il(t.blue)}`}i(ww,"rgbToHex");function vw(t){let e=parseInt(t.slice(1,3),Di),o=parseInt(t.slice(3,5),Di),n=parseInt(t.slice(5,7),Di);return{red:e,green:o,blue:n}}i(vw,"hexToRGB");function Ew(t,e){let o=1-km*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(Ew,"generateShade");function bw(t,e){let o=km*e;return{red:t.red+($i-t.red)*o,green:t.green+($i-t.green)*o,blue:t.blue+($i-t.blue)*o}}i(bw,"generateTint");function xw(t){return wm(t,Ew)}i(xw,"calculateShades");function Iw(t){return wm(t,bw)}i(Iw,"calculateTints");function wm(t,e){let o=vw(t),n=[];for(let r=1;r<9;r++)n.push(ww(e(o,r)));return n}i(wm,"calculateColors");function al(t,e,o){let a=Iw(t).reverse().concat(t),s=xw(t),c=a.concat(s),l={},p=c.length;for(let u=0;u<p;u++){let d=100+(o?p-1-u:u)*50,f=c[u];f&&(l[`${e}${d}`]=f)}return l}i(al,"createTintsAndShades");function sl(t,e,o){let n={...t};for(let r in e){let a=e[r],s=r==="neutral"&&!!o?.reverseNeutralRange;if(!["background","foreground"].includes(r)&&!Cu(r)){let l=Cw(a);Object.assign(n,al(l,r,s))}}return{...n,...e}}i(sl,"expandToGenerateThemeColors");var vm=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Aw=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=vm(o%52)+e;return vm(o%52)+e},"toAlphabeticName"),Nw=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),ll=i(t=>Aw(Nw(5381,JSON.stringify(t))>>>0),"toHash");function pl(t){let e=Ww.colors,o={...e,...Pw},n,r;if(t?.light){let s={colors:sl(e,t.light)};n={id:`${ys}-light-${ll(s)}`,tokens:s}}if(t?.dark){let s={colors:sl(o,t.dark,{reverseNeutralRange:!0})};r={id:`${ys}-dark-${ll(s)}`,tokens:s}}return{light:n,dark:r}}i(pl,"customizedThemeTokens");function Em(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>cl.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(cl.cloneElement(a,{key:s})),r<t.length-1){let c=`divider-${r}`;o.push(cl.cloneElement(e,{key:c}))}}),o}i(Em,"joinList");function bm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(bm,"doesWindowPreferDarkColorScheme");function go(t){let{colors:e,fontFamily:o=ou,borderRadius:n=Lu,secondaryBorderRadius:r=Bu}=t,[a,s]=Mw(bm()?"dark":"light"),{theme:c}=C(),{dark:l,light:p}=pl(e),u=ul({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),d=[u.className,Bw.className],f=[u.className,Lw.className];if(p){let g=ul(p.id,p.tokens);d.push(g.className)}if(l){let g=ul(l.id,l.tokens);f.push(g.className)}return _w(()=>{let g=i(m=>{m.matches?s("dark"):s("light")},"switchThemeListener");return bm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",g),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",g)}},[]),{activeTheme:i(()=>{let g=d.join(" "),m=f.join(" ");return c==="auto"?a==="dark"?m:g:c==="dark"?m:g},"getActiveTheme"),mode:c==="auto"?a:c}}i(go,"useTheme");var vt=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as xm}from"@lingui/core";import{Alert as Dw,Button as $w}from"@rango-dev/ui";import Im from"react";function dl(t){return Im.createElement(Dw,{action:Im.createElement($w,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},xm.t("Activate this tab")),type:"warning",variant:"alarm",title:xm.t("Another tab is open and handles transactions.")})}i(dl,"ActivateTabAlert");import{i18n as ml}from"@lingui/core";import{Button as Fw,Divider as Ow,MessageBox as Uw}from"@rango-dev/ui";import Fi from"react";function fl(t){let{open:e,onClose:o,onConfirm:n}=t;return Fi.createElement(re,{open:e,dismissible:!0,onClose:o,id:"widget-active-tab-modal",container:W()},Fi.createElement(Uw,{title:ml.t("Activate current tab"),type:"warning",description:ml.t("Currently, some transactions are running and being handled by other browser tab. If you activate this tab, all transactions that are already in the transaction sign step will expire.")},Fi.createElement(Ow,{size:20}),Fi.createElement(Fw,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},ml.t("Confirm"))))}i(fl,"ActivateTabModal");import{ChevronLeftIcon as Qw}from"@rango-dev/ui";import Mm from"react";import{css as zw,darkTheme as Am,IconButton as Hw,styled as Qo}from"@rango-dev/ui";var $t=Qo(Hw,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${Am} &`]:{backgroundColor:"$neutral"}}}),Nm=Qo("div",{position:"absolute",background:"$secondary500",[`.${Am} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),ho=Qo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),Wm=Qo("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),Pm=Qo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Lm=Qo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Bm=zw({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),_m=Qo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function gl(t){return Mm.createElement($t,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Mm.createElement(Qw,{color:"black",size:16}))}i(gl,"BackButton");import{i18n as qw}from"@lingui/core";import{Button as Gw,Typography as Vw}from"@rango-dev/ui";import hl from"react";function yl(t){return hl.createElement(ho,null,hl.createElement(Gw,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},hl.createElement(Vw,{variant:"label",size:"medium",color:"error500"},qw.t("Cancel"))))}i(yl,"CancelButton");import{i18n as Kw}from"@lingui/core";import{Image as jw,Tooltip as Xw,WalletIcon as Yw,WalletState as Dm}from"@rango-dev/ui";import qo from"react";function Sl(t){let{list:e}=bt(),o=e.filter(r=>r.state===Dm.CONNECTED||r.state===Dm.PARTIALLY_CONNECTED),n=o.length?qo.createElement("div",{className:Bm()},o.map(r=>qo.createElement(_m,{key:r.title},qo.createElement(jw,{src:r.image,size:14})))):Kw.t("Connect Wallet");return qo.createElement(Xw,{container:t.container,side:"bottom",content:n},qo.createElement($t,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&qo.createElement(Nm,null),qo.createElement(Yw,{size:18,color:"black"})))}i(Sl,"WalletButton");import{i18n as Ui}from"@lingui/core";import{NotificationsIcon as dv,Popover as mv,SettingsIcon as fv,Tooltip as zi,TransactionIcon as gv}from"@rango-dev/ui";import _e from"react";import{Notifications as ev}from"@rango-dev/ui";import tv from"react";import{useNavigate as ov}from"react-router-dom";import{create as Zw}from"zustand";import{persist as Jw,subscribeWithSelector as Rw}from"zustand/middleware";var We=uo(Zw()(Jw(Rw((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1];if(!r||!a)return;let s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},c=e().notifications.filter(l=>l.requestId!==n.requestId);t(()=>({notifications:[...c,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(l=>l.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function Tl(){let t=ov(),{getNotifications:e,clearNotifications:o}=We(),n=e(),r=C().blockchains(),{findToken:a}=C();return tv.createElement(ev,{id:"widget-notifications-container",list:n,getBlockchainImage:c=>qp(c,r),getTokenImage:c=>a(c)?.image,onClickItem:i(c=>{t(`${$.swaps}/${c}`)},"onClickItem"),onClearAll:o})}i(Tl,"NotificationContent");import{useManager as nv}from"@rango-dev/queue-manager-react";import{InProgressIcon as rv}from"@rango-dev/ui";import $m from"react";var iv=i(()=>{let{manager:t}=nv();return vt(t).map(({swap:o})=>o).find(o=>o.status==="running")?$m.createElement(Lm,{id:"widget-header-history-badge-container"},$m.createElement(rv,{color:"info",size:6})):null},"InProgressTransactionBadge"),Fm=iv;import{EventSeverity as av}from"@rango-dev/queue-manager-rango-preset";import{Typography as sv}from"@rango-dev/ui";import Om from"react";function Um(){let{getNotifications:t}=We(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===av.WARNING);return o?Om.createElement(Wm,{isSever:n},Om.createElement(sv,{variant:"body",size:"xsmall",color:"$background",id:"widget-header-notifications-badge-container"},o)):null}i(Um,"NotificationsBadge");import{RefreshProgressButton as lv}from"@rango-dev/ui";import Cl,{useEffect as cv,useState as zm}from"react";var pv=1e3,Hm=60,uv=100;function Oi({onClick:t}){let[e,o]=zm(0),[n,r]=zm(!1),a=i(l=>{document.hidden&&l&&s(l)},"handleVisibilityChange");cv(()=>{let l;return t?l=window.setInterval(()=>{o(p=>p+1),e===Hm&&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 Cl.createElement($t,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:c,disabled:!t},Cl.createElement(Pm,{onTransitionEnd:()=>r(!1),isRefetched:n},Cl.createElement(lv,{size:22,color:t?"black":"gray",progress:e/Hm*uv})))}i(Oi,"RefreshButton");function Go(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=C(),c=nt("notification",s)||r.includes("notifications");return _e.createElement(_e.Fragment,null,!r.includes("refresh")&&_e.createElement(zi,{container:a||W(),side:"top",content:Ui.t("Refresh")},_e.createElement(Oi,{onClick:e})),!c&&_e.createElement(mv,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:W(),content:_e.createElement(Tl,null)},_e.createElement("div",null,_e.createElement(zi,{container:W(),side:"top",content:Ui.t("Notifications")},_e.createElement($t,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},_e.createElement(dv,{size:18,color:"black"}),_e.createElement(Um,null))))),!r.includes("settings")&&_e.createElement(zi,{container:W(),side:"top",content:Ui.t("Settings")},_e.createElement($t,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},_e.createElement(fv,{size:18,color:"black"}))),!r.includes("history")&&_e.createElement(zi,{container:W(),side:"top",content:Ui.t("History")},_e.createElement($t,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},_e.createElement(gv,{size:18,color:"black"}),_e.createElement(Fm,null))))}i(Go,"HeaderButtons");import{i18n as kl}from"@lingui/core";import{Divider as qm,MessageBox as Sv,RefreshIcon as Tv}from"@rango-dev/ui";import In from"react";import{Button as hv,styled as yv}from"@rango-dev/ui";var Qm=yv(hv,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function wl(t){let{open:e,onClose:o}=t;return In.createElement(re,{open:e,dismissible:!0,onClose:o,id:"widget-refresh-modal",container:W()},In.createElement(Sv,{title:kl.t("Something went wrong"),type:"error",description:kl.t("Something went wrong. Please refresh the app.")},In.createElement(qm,{size:30}),In.createElement(Qm,{variant:"outlined",id:"widget-refresh-modal-refresh-btn",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},In.createElement(Tv,{size:20,color:"primary"}),In.createElement(qm,{size:4,direction:"horizontal"}),kl.t("Refresh"))))}i(wl,"RefreshModal");var Gm="700px",Vm="425px",Km="550px",jm="640px",Xm="800px";function vl(t){let e=t.target;if(e){let o=e.scrollTop,n=W();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(vl,"onScrollContentAttachStatusToContainer");import{css as Cv,styled as Hi}from"@rango-dev/ui";var Qi=Cv({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Ym=Hi("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",maxHeight:Gm,variants:{height:{auto:{height:"auto"},fixed:{height:"100%",minHeight:Vm,[`@media screen and (min-height: ${Xm})`]:{minHeight:Km}}},showBanner:{true:{overflow:"visible"}}}}),Zm=Hi("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Jm=Hi("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"}}}),Rm=Hi("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function se(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=rl(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:c,connectedWallets:l,config:{__UNSTABLE_OR_INTERNAL__:p}}=C(),[u,d]=of(!1),{config:{features:f,theme:h}}=C(),{watermark:g}=ne(),m=g==="FULL",{activeTheme:S}=go(h||{}),[T,y]=of(!1),k=nt("connectWalletButton",f),{isActiveTab:w,tabManagerInitiated:v,showActivateTabModal:x,setShowActivateTabModal:A,activateCurrentTab:E,setShowCompactTokenSelector:I}=ne(),b=Ve(),{manager:L}=kv(),O=vt(L).map(({swap:Y})=>Y).some(Y=>Y.status==="running"),q=i(()=>E($o.forceClaim,O),"onActivateTab"),j=i(()=>{r.onWallet?.()},"onConnectWallet"),ee=typeof r.hasBackButton>"u"||r.hasBackButton,P=tf(null),Z=tf(null);return qi(()=>{let Y=(p?.swapBoxBanner?.routes?.length??0)===0,ue=!!p?.swapBoxBanner?.routes?.some(Ee=>location.pathname.endsWith(Ee));y(!!p?.swapBoxBanner&&(Y||ue))},[p?.swapBoxBanner?.routes?.toString(),location.pathname]),qi(()=>(Mi()&&Z.current&&e(Z.current),()=>{o()}),[]),qi(()=>(P.current?.addEventListener("scroll",vl),()=>{P.current?.removeEventListener("scroll",vl)}),[]),qi(()=>{d(c==="failed")},[c]),Ev(()=>{if(!Z.current)return;let Y=new ResizeObserver(ue=>{for(let Ee of ue)Ee.contentRect&&I(Ee.contentRect.height<parseInt(jm))});return Y.observe(Z.current),()=>Y.disconnect()},[]),Pe.createElement(Ym,{height:s,id:kt.SWAP_BOX_ID,className:`${S()} ${Qi()}`,ref:Z,showBanner:T},Pe.createElement(vv,{prefix:ee?Pe.createElement(gl,{onClick:()=>{b(),r.onBack?.()}}):null,title:r.title,suffix:Pe.createElement(Pe.Fragment,null,r.suffix,r.onWallet&&!k&&Pe.createElement(Sl,{container:W(),onClick:j,isConnected:!!l?.length}),r.onCancel&&Pe.createElement(yl,{onClick:r.onCancel}))}),Pe.createElement(Zm,{ref:P},n),Pe.createElement(fl,{open:x,onClose:()=>A(!1),onConfirm:q}),Pe.createElement(Jm,null,Pe.createElement("div",{className:"footer__content"},v&&!w&&Pe.createElement("div",{className:"footer__alert"},Pe.createElement(dl,{onActivateTab:q}),Pe.createElement(ef,{size:10})),a),Pe.createElement(ef,{size:12}),Pe.createElement("div",{className:`footer__logo ${m?"logo__show":"logo__hidden"}`},Pe.createElement(wv,null))),T&&Pe.createElement(Rm,null,p?.swapBoxBanner?.element),Pe.createElement(wl,{open:u,onClose:()=>d(!1)}))}i(se,"Layout");import{styled as bv}from"@rango-dev/ui";var nf="$20 $20 $10 $20",El=bv("div",{padding:nf,overflowY:"auto",flexGrow:1});import{styled as xv}from"@rango-dev/ui";var ce=xv("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 yo}from"@lingui/core";import{useState as bl}from"react";function rf(){let[t,e]=bl(!1),[o,n]=bl(null),[r,a]=bl(null),{findToken:s}=C(),c=C().customTokens(),l=i(()=>{a(null),e(!1),n(null)},"resetState");function p(d,f){switch(d){case"duplicated":return{type:d,title:yo.t("Duplicate Token"),message:yo.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:d,title:yo.t("Token Already Exists"),message:yo.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:yo.t("Token Not Found"),message:yo.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:f}})};case"network-error":return{type:d,title:yo.t("Network error"),message:yo.t("An error occurred while retrieving token data.")}}}return i(p,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:d,tokenAddress:f})=>{e(!0);try{if(c.some(T=>T.address?.toLowerCase()===f.toLowerCase())){let T=p("duplicated");n(T);return}let g=await dt().getCustomToken({blockchain:d,address:f});if(!g||!g.token||g.error){let T=p("not-found",d);n(T);return}let m=g.token;if(s({blockchain:m.blockchain,address:m.address,symbol:m.symbol})){let T=p("token-exist");n(T);return}return a({...m,warning:!0})}catch(h){if(h.code==="ERR_BAD_REQUEST"){let g=p("not-found",d);n(g);return}n(p("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:l}}i(rf,"useFetchCustomToken");var $v=Pv("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $12",backgroundColor:"$neutral300","& input":{padding:"0"},[`.${Nv} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function af(){let t=Mv(),[e]=Dv(),o=Ve(),n=C().blockchains(),r=e.get("blockchain")||"",a=Po(r,n),[s,c]=_v(""),{fetchCustomToken:l,token:p,loading:u,error:d,resetState:f}=rf(),h=!!a&&Lo(a,s),g=!a||!s||!h,m=i(()=>{a&&l({blockchain:r,tokenAddress:s})},"getCustomToken");return Ke.createElement(se,{header:{title:An.t("Add Custom Token")}},Ke.createElement(ce,null,Ke.createElement($v,null,Ke.createElement("div",null,Ke.createElement(Js,{onClick:()=>t($.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:An.t("Select chain"),placeholder:An.t("Select chain")}),Ke.createElement(xl,{size:"24"}),Ke.createElement(Bv,{size:"large",variant:"label"},An.t("Enter Address")),Ke.createElement(xl,{size:10}),Ke.createElement(Lv,{fullWidth:!0,id:"widget-add-custom-token-token-address-input",disabled:!a,variant:"contained",placeholder:An.t("Enter token address"),size:"large",value:s,suffix:!!s&&h&&Ke.createElement(Wv,{color:"success",size:12}),onChange:S=>c(S.target.value)}),!h&&!!s&&Ke.createElement(Ke.Fragment,null,Ke.createElement(xl,{size:4}),Ke.createElement(Iv,{id:"widget-add-custom-token-invalid-address-alert",type:"error",variant:"alarm",title:"Invalid Address"}))),Ke.createElement(Av,{id:"widget-add-custom-token-import-btn",disabled:g,type:"primary",variant:"contained",loading:u,size:"large",onClick:m},An.t("Import"))),Ke.createElement(hr,{token:p,blockchain:a??void 0,address:s,error:d??void 0,fetchCustomToken:l,onCloseErrorModal:()=>{d?.type!=="network-error"&&c("")},onImport:o,onExitErrorModal:f,onExitImportModal:f})))}i(af,"AddCustomTokenPage");import{i18n as ic}from"@lingui/core";import{useManager as kb}from"@rango-dev/queue-manager-react";import{Alert as wb,Button as vb,css as sc,Divider as ac,IconButton as Yg,styled as Eb,Typography as bb,WalletIcon as xb}from"@rango-dev/ui";import $e,{useEffect as Sa,useLayoutEffect as Ib,useRef as Ab,useState as Ir}from"react";import{useNavigate as Nb}from"react-router-dom";import{i18n as Ko}from"@lingui/core";import{Alert as oE,BalanceErrors as nE,Button as Wf,ChevronLeftIcon as rE,Divider as Ll,MessageBox as iE,Typography as Bl}from"@rango-dev/ui";import ae,{useCallback as aE,useEffect as Yi,useMemo as sE,useState as Wn}from"react";import{useNavigate as lE}from"react-router-dom";import{i18n as Wl}from"@lingui/core";import{Alert as Hv,ChevronDownIcon as Qv,CloseIcon as qv,Divider as mf,IconButton as ff,PasteIcon as Gv,Typography as Vv,WalletIcon as Kv}from"@rango-dev/ui";import Me,{useEffect as gf,useRef as hf}from"react";import ji,{useRef as Uv}from"react";import*as Nn from"@radix-ui/react-collapsible";import{keyframes as sf,styled as Gi}from"@rango-dev/ui";var Il=300,Fv=sf({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),Ov=sf({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),lf=Gi(Nn.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Al=Gi(Nn.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),Vi=Gi(Nn.Content,{overflow:"hidden",variants:{open:{true:{animation:`${Fv} ${Il}ms ease-out`},false:{animation:`${Ov} ${Il}ms ease-out`}}}}),Ki=Gi("div",{transition:`all ${Il}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function Xi(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:c}=t,l=Uv(null);return ji.createElement(lf,{ref:l,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},c==="top"&&ji.createElement(Al,{className:"collapsible_trigger",onClick:a},s),ji.createElement(Vi,{className:"collapsible_content",open:e},r),c==="bottom"&&ji.createElement(Al,{className:"collapsible_trigger",onClick:a},s))}i(Xi,"CustomCollapsible");import{darkTheme as cf,styled as Nl,TextField as zv}from"@rango-dev/ui";var pf=Nl("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"},"& input":{padding:"$15"}}),uf=Nl(zv,{backgroundColor:"$neutral100"}),df=Nl("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${cf} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${cf} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function yf(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=z()(),{config:s}=C(),c=C().blockchains(),l=Qp(e.name,c),p=hf(null),u=s?.defaultCustomDestinations?.[e.name],d=navigator?.userAgent.includes("Firefox"),h=n&&!!r&&e&&!Lo(e,r),g=i(()=>{a("")},"handleClear"),m=i(async y=>{if(y.preventDefault(),navigator.clipboard!==void 0){let k=await navigator.clipboard.readText();a(k),p?.current?.focus()}},"handlePaste"),S=i(()=>r?Me.createElement(ff,{id:"widget-custom-destination-close-icon-btn",onClick:g,variant:"ghost"},Me.createElement(qv,{size:12,color:"gray"})):d?null:Me.createElement(ff,{id:"widget-custom-destination-paste-icon-btn",onClick:m,variant:"ghost"},Me.createElement(Gv,{size:16})),"renderSuffix");gf(()=>{!!u&&r===null&&(a(u),o(!0))},[u]);let T=hf(null);return gf(()=>{if(!r){T.current=null;return}n&&Lo(e,r)&&T.current!==r&&(T.current=r,te({type:"destinationAddressSet",payload:{destinationChain:e.name}}))},[r,n,e]),Me.createElement(pf,null,Me.createElement(Xi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(df,{id:"widget-custom-destination-collapsible-btn"},Me.createElement("div",{className:"button__content"},Me.createElement(Kv,{size:18,color:"info"}),Me.createElement(mf,{size:4,direction:"horizontal"}),Me.createElement(Vv,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Wl.t("Send to a different address"))),Me.createElement(Ki,{orientation:n?"up":"down"},Me.createElement(Qv,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(uf,{id:"widget-custom-destination-blockchain-address-input",ref:p,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Wl.t("Enter {blockchainName} address",{blockchainName:l}),value:r||"",suffix:S(),onChange:y=>{let k=y.target.value;a(k)}})),h&&Me.createElement(Me.Fragment,null,Me.createElement(mf,{size:4}),Me.createElement(Hv,{variant:"alarm",type:"error",title:Wl.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(yf,"CustomDestination");import{css as jv,IconButton as Xv,SelectableWalletButton as Yv,styled as So}from"@rango-dev/ui";var Sf=So("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Tf=So("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Cf=So(Yv,{justifyContent:"center"}),kf=So("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),wf=So(Xv,{position:"absolute",left:"$20"}),vf=So("div",{paddingTop:"$20"}),Ef=jv({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),bf=So("div",{display:"flex"}),xf=So("div",{overflow:"visible",width:"100%"});import{i18n as If}from"@lingui/core";import{warn as Zv}from"@rango-dev/logging-core";import{makeInfo as Jv,SelectableWallet as Rv,Typography as Af,WalletState as yr}from"@rango-dev/ui";import Vo,{useEffect as eE,useState as Nf}from"react";var tE=7;function Pl(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,c=ne.use.isActiveTab(),{connectedWallets:l}=C(),[p,u]=Nf(),{list:d}=bt({chain:e}),[f,h]=Nf(d),g=d.length,m=a&&g-a>0;return eE(()=>{h(S=>{let T=d.findIndex(y=>n(y.type,e));return m&&T>1?[d[T]].concat(d.filter((y,k)=>k!==T)):S.map(y=>d.find(k=>k.type===y.type)??y)})},[JSON.stringify(d)]),Vo.createElement(Vo.Fragment,null,f.slice(0,a).map(S=>{let T=Iu({connectedWallets:l,walletType:S.type,chain:e}),y=S.state===yr.CONNECTED||S.state===yr.PARTIALLY_CONNECTED,k=T?po(T,tE):"",w=y&&!!S.needsNamespace&&!k,v=i(async()=>{S.state===yr.DISCONNECTED||w?u(S):r({walletType:S.type,chain:e,address:T??""})},"onSelectableWalletClick"),x=Jv(S.state),A=i(()=>w?If.t("Chain not connected"):k||x.description,"getWalletDescription"),E=i(()=>S.state===yr.CONNECTED||S.state===yr.PARTIALLY_CONNECTED?w?"neutral600":"neutral700":x.color,"getWalletDescriptionColor");return Vo.createElement(Rv,{key:S.type,id:"widget-wallets-list-selectable-wallet-btn",description:A(),descriptionColor:E(),onClick:v,selected:n(S.type,e),disabled:!c,...S})}),Vo.createElement(ur,{id:"widget-wallets-list-stateful-connect-modal",wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{u(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):Zv(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),m&&Vo.createElement(Cf,{selected:!1,onClick:s,id:"widget-wallets-list-show-more-wallets-btn"},Vo.createElement(Af,{variant:"label",size:"medium"},If.t("Show more wallets"),Vo.createElement(Af,{variant:"label",size:"medium",color:"$primary"},"\xA0+",g-(a??0)))))}i(Pl,"WalletList");var cE=2;function Pf(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=lE(),c=C().blockchains(),{selectedQuote:l,setSelectedWallets:p,quoteWalletsConfirmed:u,setQuoteWalletConfirmed:d,customDestination:f,setCustomDestination:h}=z()(),{config:g,connectedWallets:m,setWalletsAsSelected:S}=C(),[T,y]=Wn(""),[k,w]=Wn([]),[v,x]=Wn(""),[A,E]=Wn(!!f),I=sE(()=>Mo({filter:"all",quote:l}),[l]),b=Mo({filter:"required",quote:l}),L=c.find(B=>B.name===l?.swaps[l?.swaps.length-1]?.to.blockchain),N=i(B=>b.includes(B),"isWalletRequiredFor"),O=aE(()=>m.filter(B=>B.selected&&I.includes(B.chain)),[m,I]),[q,j]=Wn(O()),[ee,P]=Wn([]),Z=i((B,V)=>P(H=>H.concat({blockchain:B,walletType:V})),"addNextSelectedWallets"),Y=k.length>0,ue=i((B,V)=>!!q.find(H=>H.walletType===B&&H.chain===V&&H.selected&&(N(V)||!N(V)&&!f)),"isSelected"),Ee=i((B,V,H)=>{let X=!1;return B.map(G=>{if(G.chain===V){let J=G.selected;return!X&&H?(X=!0,J=!0):H||(J=!1),{...G,selected:J}}return G})},"updateSelectableWallets"),Gt=i(B=>{E(B),B?N(L?.name??"")||j(V=>Ee(V,L?.name||"",!1)):(h(""),j(V=>Ee(V,L?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),be=i(B=>{if(T&&y(""),ue(B.walletType,B.chain))return;let H=m.find(X=>X.walletType===B.walletType&&X.chain===B.chain);H&&(n(),B.chain===L?.name&&A&&!N(L.name)&&(E(!1),h(null)),j(X=>X.filter(G=>G.chain!==B.chain).concat({...H,selected:!0})))},"onChange"),He=i(()=>{let B=q.filter(V=>V.selected);te({type:"swapWalletsConfirmed",payload:{routeId:l?.requestId??""}}),S(B),p(B),d(!0),o()},"onConfirmBalance"),Xe=i(async()=>{w([]),x("");let B=await r?.({selectedWallets:q.filter(H=>H.selected),customDestination:f}),V=B.warnings;V?.balance?.messages&&w(V.balance.messages),B.error&&x(Ed(B.error)),!B.error&&!V?.balance?.messages.length?He():w(V?.balance?.messages??[])},"onConfirmWallets");Yi(()=>{j(B=>{let V=[];return B.forEach(H=>{!m.some(G=>G.chain===H.chain&&G.walletType===H.walletType&&G.address===H.address)||V.push(H)}),V=V.concat(m.filter(H=>!!!V.find(G=>G.chain===H.chain)&&H.selected&&I.includes(H.chain))),V})},[m,I]),Yi(()=>{let B=[];ee.length>0&&(ee.forEach(V=>{let H=m.find(X=>X.chain===V.blockchain&&X.walletType===V.walletType);H?be(H):B.push(V)}),P(B))},[m,ee]);let St=l?.requestId??"";Yi(()=>{if(!e)return;let B=b.filter(V=>!m.some(H=>H.chain===V));te({type:"swapWalletsModalShown",payload:{chainsRequired:b.length,chainsPending:B.length}})},[e]),Yi(()=>{Y&&te({type:"gasWarningShown",payload:{routeId:St}})},[Y,St]);let ct=document.getElementById(kt.SWAP_BOX_ID);return ae.createElement(re,{id:"widget-confirm-wallets-modal",open:e,onClose:()=>{u||s("../",{replace:!0}),o()},dismissible:!T,container:ct,...!T&&{styles:{container:{height:"100%"}},footer:ae.createElement(bf,null,ae.createElement(Wf,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Jd(a,A,f,l,q,L),onClick:Xe,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Ko.t("Confirm")))},...T&&{styles:{container:{height:"100%",padding:"$0"}},header:ae.createElement(kf,null,ae.createElement(wf,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ae.createElement(rE,{size:16})),ae.createElement(Bl,{variant:"headline",size:"small"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:Tt(T,c)}})))},anchor:"center"},ae.createElement(re,{id:'"widget-confirm-wallets-insufficient-account-balance-modal',open:Y,onClose:w.bind(null,[]),container:ct},ae.createElement(iE,{title:Ko.t("Insufficient account balance"),type:"error",description:ae.createElement(nE,{messages:k??[]})},ae.createElement(Wf,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>{te({type:"gasWarningBypassed",payload:{routeId:St}}),He()}},Ko.t("Proceed anyway")))),T&&ae.createElement(vf,null,ae.createElement("div",{className:Ef()},ae.createElement(Pl,{chain:T,quoteChains:I,isSelected:ue,selectWallet:be,onShowMore:()=>y(T),onConnect:B=>{Z(T,B)}}))),!T&&ae.createElement(ae.Fragment,null,v&&ae.createElement(ae.Fragment,null,ae.createElement(oE,{id:"widget-confirm-wallet-modal-error-alert",variant:"alarm",type:"error",title:Ko.t(v)}),ae.createElement(Ll,{size:12})),ae.createElement(xf,null,I.map((B,V)=>{let H=c.find(U=>U.name===B),X=`wallet-${V}`,G=V===I.length-1,J=G&&L&&g?.customDestination!==!1;return ae.createElement("div",{key:X},ae.createElement(Sf,null,ae.createElement(Bl,{variant:"title",size:"xmedium"},Ko.t({id:"Your {blockchainName} wallets",values:{blockchainName:H?.shortName}})),ae.createElement(Bl,{variant:"label",color:"$neutral700",size:"medium"},Ko.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:H?.shortName}}))),ae.createElement(Ll,{size:24}),ae.createElement(Tf,null,ae.createElement(Pl,{chain:B,quoteChains:I,isSelected:ue,selectWallet:be,limit:cE,onShowMore:()=>y(H?.name??""),onConnect:U=>{Z(B,U)}})),!G&&ae.createElement(Ll,{size:32}),J&&ae.createElement(yf,{blockchain:L,open:A,handleOpenChange:Gt}))}))))}i(Pf,"ConfirmWalletsModal");import{i18n as ME}from"@lingui/core";import{Alert as DE,Button as $E,Divider as Zf,InfoIcon as FE}from"@rango-dev/ui";import Oe from"react";import{Alert as dE,Button as mE,Divider as Dl,NoRouteIcon as fE,RefreshIcon as gE,Typography as Ff}from"@rango-dev/ui";import mt from"react";import{i18n as Lf}from"@lingui/core";var pE=24,uE=60;function Bf(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ie().genericServerError,action:{onClick:n,title:Lf.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ie().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:Lf.t("Reset")}},description:ie().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ie().noResultError.description}}i(Bf,"makeInfo");var _l=(o=>(o[o.small=pE]="small",o[o.large=uE]="large",o))(_l||{}),Ml=(o=>(o.small="small",o.large="medium",o))(Ml||{});import{styled as Zi}from"@rango-dev/ui";var _f=Zi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Mf=Zi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),Df=Zi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),$f=Zi("div",{padding:"$6 $0"});function Sr(t){let{fetch:e,error:o,size:n="small",skipAlerts:r}=t,a=C().getDisabledLiquiditySources(),s=C().toggleAllLiquiditySources,c=C().swappers(),l=Bf(o,a,()=>s(c,!0),e);return r&&(l.alert=null),mt.createElement(_f,{id:"widget-no-result-container"},mt.createElement(fE,{size:_l[n],color:"gray"}),mt.createElement(Dl,{size:4}),mt.createElement(Ff,{variant:"title",size:Ml[n]},ie().noResultError.title),n==="large"&&mt.createElement(Dl,{size:4}),!!l.description&&mt.createElement(Mf,{size:n},mt.createElement(Ff,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),mt.createElement(Dl,{size:n==="large"?"24":"4"}),!!l.alert&&mt.createElement(Df,{size:n},mt.createElement(dE,{id:"widget-no-result-alert",type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&mt.createElement(mE,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:mt.createElement($f,null,mt.createElement(gE,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Sr,"NoResult");import{i18n as Tr}from"@lingui/core";import{Button as vE,Divider as EE,MessageBox as bE,Typography as xE,WarningIcon as IE}from"@rango-dev/ui";import Jt from"react";import{InfoIcon as TE,Tooltip as CE,Typography as kE}from"@rango-dev/ui";import Pn from"react";import{Button as hE,darkTheme as yE,styled as jo,Typography as SE}from"@rango-dev/ui";var Of=jo("div",{width:"100%"}),$l=jo("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Uf=jo("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${yE} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),zf=jo("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$2"}),Hf=jo(SE,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"250px"}),Qf=jo("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"}),qf=jo(hE,{"& ._text":{gap:"$5",display:"flex",alignItems:"center",justifyContent:"center"}});var wE=35;function Gf(t){let{title:e,value:o,valueColor:n}=t,r=W();return Pn.createElement(Uf,null,Pn.createElement(kE,{size:"medium",variant:"label",className:"_title"},e),Pn.createElement(zf,null,Pn.createElement(Hf,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`),o.length>wE&&Pn.createElement(CE,{content:o,container:r},Pn.createElement(TE,{size:12,color:"gray"}))))}i(Gf,"QuoteErrorsModalItem");function Vf(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:M(r.inputUsdValue)},{title:Tr.t("Gas cost"),value:M(r.totalFee,2,2)},{title:Tr.t("Receiving"),value:M(r.outputUsdValue)},{title:Tr.t("Price impact"),value:M(r.priceImpact,2,2),valueColor:`${s}500`}];return Jt.createElement(re,{id:"widget-high-value-loss-warning-modal",footer:Jt.createElement(vE,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Jt.createElement(IE,null),fullWidth:!0,disabled:a,onClick:n},ie().highValueLossError.confirmMessage),open:e,onClose:o,container:W()},Jt.createElement(bE,{type:s,title:ie().highValueLossError.impactTitle,description:ie().highValueLossError.description}),Jt.createElement($l,null,Jt.createElement(EE,{size:"4"}),Jt.createElement(xE,{size:"small",variant:"title"},Tr.t("Details")),Jt.createElement($l,null,c.map((l,p)=>Jt.createElement(Gf,{key:p,...l})))))}i(Vf,"HighValueLossWarningModal");import{i18n as Ln}from"@lingui/core";function Kf(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=Ln.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-slippage",o.actionButtonTitle=Ln.t("Increase")),o;if(t){switch(t.type){case 0:{Zt(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ie().highValueLossError.title;break}case 4:{o.title=Ln.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=ie().unknownPriceError.title;break}case 2:{o.title=Ln.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=Ln.t("Increase");break}case 3:{o.title=Ln.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Kf,"makeAlerts");function jf(t,e){return e?.type===4?Number(e.minRequiredSlippage):t?.type===2?Number(t.minRequiredSlippage):null}i(jf,"getRequiredSlippage");import{i18n as Bn}from"@lingui/core";import{Button as AE,Divider as Fl,MessageBox as NE,WarningIcon as WE}from"@rango-dev/ui";import ko from"react";import{useNavigate as PE}from"react-router-dom";function Xf(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=PE();return ko.createElement(re,{id:"widget-slippage-warning-modal",anchor:"bottom",open:e,container:W(),onClose:o},ko.createElement(NE,{type:"warning",title:r.type===3?Bn.t("High slippage"):Bn.t("Low slippage"),description:r.type===3?Bn.t("Caution, your slippage is high. Your trade may be front run."):Bn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:r.minRequiredSlippage}})},ko.createElement(Fl,{size:18}),ko.createElement(Fl,{size:32}),ko.createElement(qf,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:a,onClick:n},ko.createElement(WE,{color:"white",size:16}),Bn.t("Swap anyway")),ko.createElement(Fl,{size:10}),ko.createElement(AE,{id:"widget-slippage-warning-modal-change-slippage-btn",size:"large",type:"primary",variant:"outlined",fullWidth:!0,disabled:a,onClick:()=>s("../"+$.settings)},Bn.t("Change Slippage"))))}i(Xf,"SlippageWarningModal");import{Button as LE,MessageBox as BE,WarningIcon as _E}from"@rango-dev/ui";import Ji from"react";function Yf(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return Ji.createElement(re,{id:"widget-unknown-price-warning-modal",footer:Ji.createElement(LE,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ji.createElement(_E,null),fullWidth:!0,disabled:r,onClick:n},ie().unknownPriceError.confirmMessage),open:e,onClose:o,container:W()},Ji.createElement(BE,{type:"warning",title:ie().unknownPriceError.impactTitle,description:ie().unknownPriceError.description}))}i(Yf,"UnknownPriceWarningModal");function Cr(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,skipAlerts:s,refetchQuote:c,onOpenWarningModal:l,onCloseWarningModal:p,onConfirmWarningModal:u,onChangeSettings:d,onChangeSlippage:f}=t,h={confirmationDisabled:a,open:r,onClose:p,onConfirm:u},g=o?.type===0||o?.type===1,m=Kf(e,o?.type===3||o?.type===4?o:null);m&&!n&&(m.action=null);let S=!!m&&!s,T=i(y=>{if(y==="change-slippage"){let k=o?.type===3||o?.type===4?o:null,w=jf(e,k);f?.(w)}else y==="change-settings"&&d()},"onclickActionButton");return Oe.createElement(Oe.Fragment,null,g&&Oe.createElement(Oe.Fragment,null,Oe.createElement(Zf,{size:10}),Oe.createElement(Sr,{skipAlerts:s,error:o,fetch:c})),S&&Oe.createElement(Of,null,Oe.createElement(Zf,{size:10}),Oe.createElement(DE,{id:"widget-quote-warning-and-errors-alert",title:m.title,type:m.alertType,variant:"alarm",...m.action==="show-info"&&{action:Oe.createElement(Qf,{onClick:l},Oe.createElement(FE,{size:12,color:"gray"}))},...(m.action==="change-settings"||m.action==="change-slippage")&&{action:Oe.createElement($E,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:m.alertType,onClick:()=>T(m.action)},m.actionButtonTitle||ME.t("Change"))}})),e&&Oe.createElement(Oe.Fragment,null,e.type===0&&Oe.createElement(Vf,{...h,warning:e}),(e.type===3||e.type===2)&&Oe.createElement(Xf,{...h,warning:e}),e.type===1&&Oe.createElement(Yf,{...h,warning:e})))}i(Cr,"QuoteWarningsAndErrors");import fb from"bignumber.js";import fa from"react";import{i18n as Xo}from"@lingui/core";import{Alert as ob,CampaignQuoteTag as nb,Divider as Mn,FullExpandedQuote as rb,InfoIcon as Xl,NumericTooltip as Yl,QuoteTag as ib,StepDetails as ab,TokenAmount as sb,Typography as Dn,useIsTruncated as Zl}from"@rango-dev/ui";import Jl from"bignumber.js";import F,{useRef as ua,useState as lb}from"react";import{styled as Ol}from"@rango-dev/ui";var Ul=Ol("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Jf=Ol("div",{paddingBottom:"$15","& .from-amount-text":{wordBreak:"break-word"},variants:{dense:{true:{paddingBottom:0}}}}),Rf=Ol("div",{width:"100%",display:"flex"});import*as Ri from"@radix-ui/react-collapsible";import{Button as OE,css as ea,darkTheme as De,Image as eg,styled as je,Typography as zl}from"@rango-dev/ui";var UE=300,tg=je(Ri.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),og=ea({padding:"$10 $15"}),ng=je(OE,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${De} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${De} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${De} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),rg=je("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${De} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${De} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${De} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${De} &`]:{backgroundColor:"$neutral400"}}}}]}),ig=ea({width:"100%",padding:"$15 $15 $10 $15"}),ag=ea({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),_n=ea({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),sg=je(Ri.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:{[`& ${eg}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${eg}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${De} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${De} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),lg=je("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),cg=je(Vi,{width:"100%",background:"inherit"}),Hl=je("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${UE}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),JH=je("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),pg=je("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${De} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),ug=je("div",{display:"flex",flexDirection:"row",alignItems:"center",gap:"$2",flex:"1 1 auto",minWidth:0}),Ql=je(zl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:"$30"}),ql=je(zl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",minWidth:0,flex:"0 1 auto"}),Gl=je("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),dg=je("div",{display:"flex"}),ta=je("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${De} &`]:{borderTopColor:"$neutral800"}}),mg=je(zl,{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",flex:"0 1 auto",minWidth:0,flexShrink:3});import{i18n as Ft}from"@lingui/core";import{ChevronDownIcon as HE,CloseIcon as QE,Divider as ra,IconButton as qE,NumericTooltip as GE,QuoteCost as VE,Typography as At}from"@rango-dev/ui";import KE from"bignumber.js";import R,{useState as yg}from"react";import{css as zE,styled as oa}from"@rango-dev/ui";var na=oa("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Vl=oa("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),fg=oa("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),gg=oa("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),hg=zE({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var jE=i(t=>t.fee.isZero()?null:R.createElement(na,null,R.createElement(At,{variant:"label",size:"medium",color:"neutral600"},t.label),R.createElement(At,{variant:"label",size:"medium"},"$",M(t.fee,4,4))),"NonPayableFee");function Kl(t){let[e,o]=yg(!1),[n,r]=yg(!1),{steps:a,quote:s,time:c,feeWarning:l,timeWarning:p,showModalFee:u,fullExpandedMode:d=!1}=t,f=s?.swaps??[],h=d?_o():W(),g=qd(f),m=Object.values(g.payable).reduce((T,y)=>T.plus(Gs(y)),new KE(0)),S=M(m,2,2);return R.createElement(R.Fragment,null,R.createElement(VE,{onClickFee:u?T=>{T.stopPropagation(),!e&&s&&te({type:"routeFeeViewed",payload:{routeId:s.requestId}}),o(!e)}:void 0,fee:S,feeWarning:l,timeWarning:p,time:c,steps:a,tooltipGas:u?Ft.t("View more info"):void 0,tooltipContainer:h}),R.createElement(re,{id:"widget-quote-cost-explanation-modal",container:h,open:e,anchor:d?"center":"bottom",styles:{container:{maxWidth:d?"484px":"unset"}},header:R.createElement(gg,{style:{textAlign:d?"left":"center"}},R.createElement(At,{variant:"title",size:"medium"},Ft.t("Gas & Fee Explanation")),R.createElement(qE,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},R.createElement(QE,{color:"gray",size:14}))),onClose:()=>{o(!1)}},R.createElement(fg,null,R.createElement(At,{variant:"title",size:"small"},Ft.t("Details")),R.createElement(ra,{size:10}),Object.entries(g.payable).flatMap(([T,y])=>y.map((k,w)=>{let v=`payable-fee-${w}`,x=qs(k);return R.createElement(na,{key:v},R.createElement(At,{variant:"label",size:"medium",color:"neutral600"},Os(T,Ft.t)),R.createElement(GE,{content:k.amount,container:h},R.createElement(At,{variant:"label",size:"medium"},M(k.amount,2,2),k.asset.symbol," ($",M(x,4,4),")")))})),R.createElement(na,{className:"total_payable_fee"},R.createElement(At,{variant:"label",size:"medium"},Ft.t("Total Payable Fee")),R.createElement(At,{variant:"label",size:"medium"},"$",M(m,4,4))),R.createElement(Vl,null),!!Object.keys(g.nonePayable).length&&R.createElement(Xi,{triggerAnchor:"bottom",onClickTrigger:()=>r(T=>!T),trigger:R.createElement("div",{className:hg()},R.createElement(At,{size:"small",variant:"body",color:"neutral700"},n?Ft.t("Hide non-payable fees"):Ft.t("Show non-payable fees")),R.createElement(ra,{size:4,direction:"horizontal"}),R.createElement(Ki,{orientation:n?"up":"down"},R.createElement(HE,{size:12,color:"gray"}))),open:n},R.createElement(At,{size:"small",variant:"title"},Ft.t("Description")),R.createElement(ra,{size:4}),R.createElement(At,{size:"small",variant:"body",color:"neutral700"},Ft.t(`The following fees are considered in the transaction output and
|
|
2
|
+
you won\u2019t need to pay extra gas for them.`)),R.createElement(ra,{size:10}),Object.entries(g.nonePayable).map(([T,y],k)=>{let w=Gs(y),v=Os(T,Ft.t),x=`non-payable-fee-${k}`;return R.createElement(jE,{key:x,fee:w,label:v})}),R.createElement(Vl,null)))))}i(Kl,"QuoteCostDetails");import{i18n as Cg}from"@lingui/core";import{TokenAmount as kg}from"@rango-dev/ui";import ia from"react";import{css as XE,styled as YE}from"@rango-dev/ui";var Sg=YE("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Tg=XE({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function kr(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return ia.createElement(Sg,null,ia.createElement(kg,{direction:"horizontal",label:Cg.t("Swap input"),id:"widget-quote-summary-swap-input",type:"input",tooltipContainer:W(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),ia.createElement("div",{className:Tg()}),ia.createElement(kg,{id:"widget-quote-summary-estimated-input",direction:"horizontal",tooltipContainer:W(),label:Cg.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(kr,"QuoteSummary");import{i18n as xg}from"@lingui/core";import{ChevronDownIcon as RE,ChevronRightIcon as eb,Divider as jl,Image as tb,Tooltip as pa,Typography as sa}from"@rango-dev/ui";import Q from"react";import{useLayoutEffect as ZE,useState as wr}from"react";var wg=480,vg=768,Eg=1024,bg=1200,JE=i(()=>{let[t,e]=wr(!1),[o,n]=wr(!1),[r,a]=wr(!1),[s,c]=wr(!1),[l,p]=wr(!1),u=i(()=>{e(window.innerWidth<=wg),n(window.innerWidth>wg&&window.innerWidth<=vg),a(window.innerWidth>vg&&window.innerWidth<=Eg),c(window.innerWidth>Eg&&window.innerWidth<=bg),p(window.innerWidth>bg)},"handleResize");return ZE(()=>(u(),window.addEventListener("resize",u),()=>window.removeEventListener("resize",u)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:l}},"useScreenDetect"),aa=JE;var la=4,ca=6,vr=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,c=s||W();return Q.createElement(pa,{container:c,side:"bottom",sideOffset:4,open:r,content:e},Q.createElement(lg,{className:n,state:a},Q.createElement(tb,{src:o,size:16})))},"ImageComponent");function Ig(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:c}=t,l=c||W(),p=r.length,u=_d(r),{isTablet:d,isMobile:f}=aa();return Q.createElement(sg,{className:"widget-quote-trigger-btn",listItem:s==="list-item",ref:h=>e.current=h,selected:o,onClick:h=>{h.stopPropagation(),n(g=>!g)}},Q.createElement("div",{className:_n()},Q.createElement(sa,{variant:"body",size:"xsmall"},xg.t("Via:")),Q.createElement(jl,{direction:"horizontal",size:4}),r.map((h,g)=>{let m=`item-${g}`,S=Q.createElement(Hl,null,Q.createElement(eb,{size:12,color:"black"}));return f||d?Q.createElement(Q.Fragment,{key:m},Q.createElement(vr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):Q.createElement(Q.Fragment,{key:m},p<=la||p>la&&g<la-1?Q.createElement(Q.Fragment,null,Q.createElement(vr,{content:h.swapper.displayName,src:h.swapper.image??"",state:h.state,container:c}),g!==p-1&&Q.createElement(Q.Fragment,null,S)):g===la-1&&Q.createElement(pa,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:_n()},S,r.map((T,y)=>{let k=`image-${y}`;return y>=g&&Q.createElement(Q.Fragment,{key:k},Q.createElement(vr,{content:T.swapper.displayName,src:T.swapper.image??"",state:T.state,open:!1}),y!==p-1&&Q.createElement(Q.Fragment,null,S))}))},Q.createElement(Gl,{state:r.find((T,y)=>y>=g&&(T.state==="error"||T.state==="warning"))?.state},Q.createElement(sa,{size:"xsmall",variant:"body"},"+",p-g))))})),Q.createElement("div",{className:_n()},Q.createElement("div",{className:"blockchains_section"},Q.createElement("div",{className:_n()},Q.createElement(sa,{variant:"body",size:"xsmall"},xg.t("Chains:")),Q.createElement(jl,{direction:"horizontal",size:4}),u.map((h,g)=>Q.createElement(Q.Fragment,{key:h.displayName},u.length<=ca||u.length>ca&&g<ca-1?Q.createElement(pa,{container:l,side:"bottom",content:h.displayName,sideOffset:4},Q.createElement(vr,{content:"",src:h.image??"",open:!1,className:g!==0?"blockchainImage":""})):g===ca-1&&Q.createElement(pa,{container:l,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:_n()},u.map((m,S)=>S>=g&&Q.createElement(vr,{key:m.displayName,content:"",src:m.image??"",open:!1,className:S>g?"blockchainImage":"",container:c})))},Q.createElement(Gl,{className:"blockchainImage"},Q.createElement(sa,{size:"xsmall",variant:"body"},"+",u.length-g))))),Q.createElement(jl,{direction:"horizontal",size:32}))),Q.createElement(Hl,{orientation:a?"up":"down"},Q.createElement(RE,{size:12,color:"black"}))))}i(Ig,"QuoteTrigger");function Rl(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:c=!1,tagHidden:l=!0,showModalFee:p=!0,onClickAllRoutes:u,fullExpandedMode:d=!1,container:f}=t,h=C().blockchains(),{findToken:g}=C(),m=C().swappers(),{customSlippage:S,slippage:T}=C(),y=S||T,[k,w]=lb(t.expanded),v=ua(null),x=M(n.value,6,6),A=n.usdValue?M(n.usdValue,4,4):"",{config:{__UNSTABLE_OR_INTERNAL__:E}}=C(),I=Yt(o.usdValue,n.usdValue??null),b=M(I,2,2),L=Zt(I??0),N=i((G,J)=>G.map((U,de)=>{let Qe,ot=r?.type===3&&r.swap.swapperId===U.swapperId,co=r?.type===4&&!!r.recommendedSlippages?.[de],Gn=a?.type===2&&!!a.recommendedSlippages?.[de],No=ot||co,Rr=Gn;No?Qe="error":Rr&&(Qe="warning");let rn=No?Xo.t("Slippage Error"):Xo.t("Slippage Warning");return ot&&(rn=Xo.t("Bridge Limit Error")),{swapper:{displayName:Kn(U.swapperId,m)??"",image:U.swapperLogo},from:{token:{displayName:U.from.symbol,image:U.from.logo},chain:{displayName:Tt(U.from.blockchain,h)??"",image:U.from.blockchainLogo},price:{value:de===0&&!J?M(o.value,6,6):M(U.fromAmount,6,6),usdValue:M((U.from.usdPrice??0)*parseFloat(U.fromAmount),4,4),realValue:de===0?o.value:U.fromAmount,realUsdValue:new Jl(U.from.usdPrice??0).multipliedBy(U.fromAmount).toString()}},to:{token:{displayName:U.to.symbol,image:U.to.logo},chain:{displayName:Tt(U.to.blockchain,h)||"",image:U.to.blockchainLogo},price:{value:M(U.toAmount,6,6),usdValue:M((U.to.usdPrice??0)*parseFloat(U.toAmount),4,4),realValue:U.toAmount,realUsdValue:new Jl(U.to.usdPrice??0).multipliedBy(U.toAmount).toString()}},state:Qe,alerts:No||Rr?F.createElement(Jf,{dense:d},F.createElement(ob,{variant:"alarm",type:No?"error":"warning",title:rn,id:"widget-quote-footer-step-alarm-alert",footer:F.createElement(Rf,null,ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",className:"from-amount-text",color:"neutral900"},Xo.t({id:"Yours: {amount} {symbol}",values:{amount:M(U.fromAmount,6,6),symbol:U?.from.symbol}}))),(co||Gn)&&!ot&&F.createElement("div",null,F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Minimum suggested slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.[de]},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.[de]}}})),F.createElement(Mn,{direction:"vertical",size:2}),F.createElement(Dn,{size:"xsmall",variant:"body",color:"neutral900"},Xo.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:Xn(U.estimatedTimeInSeconds),fee:M(Qs(U,g),2,2),internalSwaps:U.internalSwaps?N(U.internalSwaps):void 0}}),"getQuoteSteps"),O=N(e?.swaps??[]),q=O.length,j=f||W(),ee=Dd(t.quote.tags||[]),P=!!u,Z=si(e?.swaps),Y=Xn(Z),ue=Wi(e?.swaps??[],g),Ee=M(ue,2,2),Gt=ue.gte(new Jl(xd)),be=Z/Ad>=Id,He=ua(null),Xe=Zl(o.value,He),St=ua(null),ct=Zl(n.value,St),B=ua(null),V=Zl(A,B),H=O[q-1],X=O[0];return!X||!H?null:d?F.createElement(rb,{selected:c,fee:Ee,time:Y,tooltipContainer:_o(),steps:O,tags:ee,campaignTag:E?.campaignTag,id:"widget-quote-full-expanded-quote-container",quoteCost:F.createElement(Kl,{quote:e,fullExpandedMode:!0,time:Y,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),percentageChange:b,warningLevel:L,outputPrice:{value:x,usdValue:A,realValue:n.value,realUsdValue:n.usdValue}}):F.createElement(rg,{id:"widget-quote-summary-container",selected:c,listItem:s==="list-item",basic:s==="basic"},F.createElement("div",{className:ig()},!l&&ee.length?F.createElement(F.Fragment,null,F.createElement(dg,null,ee.map((G,J)=>{let U=`${G.value}_${J}`;return F.createElement(F.Fragment,{key:U},G.value=="CAMPAIGN"&&E?.campaignTag?F.createElement(nb,{routeTag:G,...E.campaignTag}):F.createElement(ib,{label:G.label,value:G.value}),F.createElement(Mn,{size:4,direction:"horizontal"}))})),F.createElement(ta,null),!P&&F.createElement(Mn,{size:4})):null,F.createElement("div",{id:"portal-root",className:ag()},F.createElement(Kl,{quote:e,time:Y,feeWarning:Gt,timeWarning:be,showModalFee:p,steps:q}),P&&F.createElement(ng,{onClick:G=>{G.stopPropagation(),u()},id:"widget-quote-all-routes-btn",size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},F.createElement(Dn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Xo.t("See All Routes")))),s==="basic"&&F.createElement(ug,null,F.createElement(ql,{ref:He,size:"small",variant:"body"},o.value),Xe&&F.createElement(Yl,{content:o.value,container:j,open:o.value?void 0:!1},F.createElement(Xl,{size:12,color:"gray"})),F.createElement(Ql,{size:"small",variant:"body"},O[0]?.from.token.displayName),F.createElement(Dn,{size:"small",variant:"body"},"="),F.createElement(ql,{ref:St,size:"small",variant:"body"},n.value),ct&&F.createElement(Yl,{content:n.value,container:j,open:n.value?void 0:!1},F.createElement(Xl,{size:12,color:"gray"})),F.createElement(Ql,{size:"small",variant:"body"},H?.to.token.displayName),F.createElement(Mn,{size:2,direction:"horizontal"}),F.createElement(mg,{ref:B,color:"$neutral600",size:"xsmall",variant:"body"},`($${A})`),V&&F.createElement(Yl,{content:n.usdValue,container:j},F.createElement(Xl,{size:12,color:"gray"}))),s==="list-item"&&F.createElement(sb,{id:"widget-quote-token-amount-container",tooltipContainer:j,type:"output",direction:"vertical",price:{value:x,usdValue:A,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:H.to.token.displayName,image:H.to.token.image},chain:{image:H.to.chain.image},percentageChange:b,warningLevel:L}),s==="swap-preview"&&F.createElement(F.Fragment,null,F.createElement(kr,{from:X.from,to:H.to,percentageChange:b,warningLevel:L}),F.createElement(Mn,{size:4}))),F.createElement(tg,{selected:c,listItem:s==="list-item",open:k,className:"quote_container",onOpenChange:w},F.createElement(Ig,{type:s,quoteRef:v,selected:c,setExpanded:w,container:j,expanded:k,steps:O}),F.createElement(cg,{open:k},F.createElement(pg,null),F.createElement("div",{className:og()},O.map((G,J)=>{let U=`item-${J}`;return F.createElement(ab,{type:"quote-details",className:"widget-quote-step-details-container",key:U,tooltipContainer:j,step:G,hasSeparator:J!==O.length-1,state:G.state})})))))}i(Rl,"Quote");import{Divider as db,Skeleton as mb}from"@rango-dev/ui";import oo from"react";import{darkTheme as cb,styled as da}from"@rango-dev/ui";var Ag=da("div",{$$color:"$colors$neutral100",[`.${cb} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),Ng=da("div",{paddingTop:"$2"}),Wg=da("div",{paddingLeft:"$8"}),Pg=da("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as zg,Divider as Nt,Skeleton as ft}from"@rango-dev/ui";import K from"react";import{css as pb,styled as to}from"@rango-dev/ui";var ec=to("div",{display:"flex"}),Lg=to("div",{padding:"$10 $0 $20"}),Bg=to("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),_g=to("div",{display:"flex",justifyContent:"start",alignItems:"center"}),Mg=to("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Dg=to("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),$g=to("div",{width:"65%",display:"flex",justifyContent:"start"}),Fg=to("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Og=to("div",{padding:"$15 $0 $15 $0"}),Ug=pb({display:"flex",justifyContent:"space-between",alignItems:"center"});function Er(t){let{type:e,tagHidden:o=!0}=t,n=K.createElement(Mg,null,K.createElement($g,null,K.createElement(zg,{loading:!0,size:"medium"}),K.createElement(Nt,{size:8,direction:"horizontal"}),K.createElement(Fg,null,K.createElement(ft,{height:10,width:60,variant:"rounded"}),K.createElement(Nt,{size:4}),K.createElement(ft,{height:15,variant:"rounded"}))),K.createElement(ft,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return K.createElement("div",null,!o&&K.createElement(K.Fragment,null,K.createElement(ec,null,K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:65,height:20,variant:"rounded"})),K.createElement(ta,null),!r&&K.createElement(Nt,{size:4})),K.createElement("div",{className:Ug()},K.createElement(ec,null,K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"}),K.createElement(Nt,{size:4,direction:"horizontal"}),K.createElement(ft,{width:60,height:10,variant:"rounded"})),r&&K.createElement(ft,{width:85,height:24,variant:"rounded"})),e==="basic"&&K.createElement(Lg,null,K.createElement(ft,{height:15,width:148,variant:"rounded"})),e==="list-item"&&K.createElement(Bg,null,K.createElement(_g,null,K.createElement(zg,{loading:!0,size:"medium"}),K.createElement(Nt,{direction:"horizontal",size:4}),K.createElement(ft,{height:15,width:150,variant:"rounded"})),K.createElement(Nt,{size:10}),K.createElement(ft,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&K.createElement(K.Fragment,null,K.createElement(Nt,{size:4}),K.createElement(Og,null,n,K.createElement(Dg,null),n),K.createElement(Nt,{size:12})))}i(Er,"QuoteSummarySkeleton");import{ChainToken as Vg,Divider as oc,NextIcon as ub,Skeleton as ma}from"@rango-dev/ui";import Le from"react";import{styled as br}from"@rango-dev/ui";var Hg=br("div",{display:"flex",alignItems:"start"}),Qg=br("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),tc=br("div",{display:"flex",alignItems:"center",flexGrow:1}),qg=br("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Gg=br("div",{display:"flex",alignItems:"center"});function Ot(t){let{separator:e=!0}=t;return Le.createElement(Le.Fragment,null,Le.createElement(Gg,null,Le.createElement(ma,{height:22,width:22,variant:"circular"}),Le.createElement(oc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:15,width:148,variant:"rounded"})),Le.createElement(Hg,null,Le.createElement(Pg,{hideSeparator:!e}),Le.createElement(Qg,{extraSpace:e},Le.createElement(tc,null,Le.createElement(Vg,{size:"small",loading:!0}),Le.createElement(oc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:12,variant:"rounded"})),Le.createElement(qg,null,Le.createElement(ub,{color:"gray",size:16})),Le.createElement(tc,null,Le.createElement(Vg,{size:"small",loading:!0}),Le.createElement(oc,{direction:"horizontal",size:8}),Le.createElement(ma,{height:12,variant:"rounded"})))))}i(Ot,"StepSkeleton");function xr(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return oo.createElement(Ag,{expanded:o,rounded:e!=="basic"},oo.createElement(Er,{type:e,tagHidden:n}),oo.createElement(Ng,null,oo.createElement(mb,{height:15,variant:"rounded"})),o&&oo.createElement(Wg,null,oo.createElement(db,{size:24}),oo.createElement(Ot,null),oo.createElement(Ot,null),oo.createElement(Ot,{separator:!1})))}i(xr,"QuoteSkeleton");function Yo(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:c,onClick:l,showModalFee:p,selected:u,id:d,onClickAllRoutes:f,fullExpandedMode:h=!1,container:g}=t,{inputAmount:m,inputUsdValue:S}=z()(),T=e?.outputAmount?new fb(e?.outputAmount):null,y=e?it(e):null,w=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?fa.createElement(Ul,null,fa.createElement(xr,{tagHidden:c,type:o,expanded:s})):w?fa.createElement(Ul,{onClick:()=>l?.(e),id:d},fa.createElement(Rl,{quote:e,error:r,container:g,showModalFee:p,warning:a,tagHidden:c,selected:u,type:o,expanded:s,onClickAllRoutes:f,fullExpandedMode:h,input:{value:m,usdValue:S?.toString()??""},output:{value:T?.toString()??"",usdValue:y?.toString()??""}})):null}i(Yo,"QuoteInfo");import{warn as Sb}from"@rango-dev/logging-core";import{calculatePendingSwap as Tb}from"@rango-dev/queue-manager-rango-preset";import{useEffect as Cb}from"react";import{useRef as gb,useState as hb}from"react";var yb=2e3;function ga({request:t}){let[e,o]=hb(!1),n=gb(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async c=>(await new Promise(l=>setTimeout(l,yb)),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(ga,"useFetch");function Kg(){let{fetch:t,loading:e,cancelFetch:o}=ga({request:async(n,r)=>await dt().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Kg,"useFetchConfirmQuote");function ha(t){if(!t.swaps)throw new Error(ie().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=nc(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(ha,"throwErrorIfResponseIsNotValid");function nc(t){if(zd(t)){let{swap:n,fromAmountRangeError:r,recommendation:a}=Hd(t);return n?{message:"bridge limit error",options:{type:3,swap:n,recommendation:a,fromAmountRangeError:r}}:null}let o=Gd(t);if(o){let n=Pi(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(nc,"getQuoteError");function jg(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,c={quote:null,balance:null},l=En({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});l&&(c.quote=l);let p=jd(e,r,n.blockchains);return p.length===0||(c.balance={messages:p}),c}i(jg,"generateWarnings");function ya(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(ya,"handleQuoteErrors");function rc(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:c}=z()(),{slippage:l,customSlippage:p}=C(),u=C().getDisabledLiquiditySources(),d=C().blockchains(),f=C().tokens(),{findToken:h}=C(),{swapMode:g}=rt(),m=p||l,{fetch:S,cancelFetch:T,loading:y}=Kg();return Cb(()=>T,[]),{loading:y,fetch:i(async w=>{let v=w.selectedWallets,x=w?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let A=v.reduce((I,b)=>(I[b.chain]=b.address,I),{}),E={requestId:a?.requestId||"",selectedWallets:A,destination:x||void 0};try{return await S(E,!0).then(I=>{let{result:b}=I;if(!b)throw new Error(I.error??"Error fetching updated quote");ha({diagnosisMessages:b.diagnosisMessages,requestId:b.requestId,swaps:b.result?.swaps});let L={outputAmount:b.result?.outputAmount,requestId:b.requestId,resultType:b.result?.resultType,swaps:b.result?.swaps||[],validationStatus:b.validationStatus,requestAmount:b.requestAmount};r(L);let N={slippage:m.toString(),disabledSwappersGroups:u},O=jg({previousQuote:a??void 0,currentQuote:L,meta:{blockchains:d},selectedWallets:v,userSlippage:m,inputUsdValue:n,findToken:h});c();let q=!!O.balance,j=Tb({inputAmount:o.toString(),bestRoute:b,wallets:Kd(v),settings:N,validateBalanceOrFee:!q,meta:{blockchains:d,tokens:f},swapMode:g});return{quote:L,swap:j,error:null,warnings:O}})}catch(I){let b=ya(I);return b.type!==2&&Sb(new Error("confirm swap error"),{tags:{...b,type:Je[b.type],initialQuote:a,requestBody:E}}),{swap:null,error:b,warnings:null}}},"fetch"),cancelFetch:T}}i(rc,"useConfirmSwap");function Xg(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}i(Xg,"toNumberOrNull");function $n(t){let e=t.swaps[0],o=t.swaps[t.swaps.length-1],n=zo(t),r=it(t);return{routeId:t.requestId,sourceChain:e?.from.blockchain??"",destinationChain:o?.to.blockchain??"",sourceTokenSymbol:e?.from.symbol??"",sourceTokenAddress:e?.from.address??null,destinationTokenSymbol:o?.to.symbol??"",destinationTokenAddress:o?.to.address??null,sourceTokenAmount:Xg(t.requestAmount),destinationTokenAmount:Xg(t.outputAmount),inputAmountUsd:n?n.toNumber():null,outputAmountUsd:r?r.toNumber():null}}i($n,"buildSwapEstimatePayload");var Wb=Eb("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Yg}`]:{width:"$48",height:"$48"}}),Pb=sc({flexGrow:1,paddingRight:"$10"}),Lb=sc({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),Bb=sc({display:"flex",justifyContent:"space-between",alignItems:"center"});function Zg(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=z()(),s=Nb(),[c,l]=Ir(""),p=!n,[u,d]=Ir(!1),[f,h]=Ir(!1),{isActiveTab:g}=ne(),m=C().getDisabledLiquiditySources(),S=Ab(m),{manager:T}=kb(),{fetch:y,loading:k,cancelFetch:w}=rc(),[v,x]=Ir({swap:null,error:null,warnings:null}),[A,E]=Ir(!1),I=i(async({selectedWallets:P,customDestination:Z})=>{let Y=await y?.({selectedWallets:P,customDestination:Z});return x(Y),Y},"onConfirmSwap"),b=i(async()=>{if(v.swap&&n)try{await T?.create("swap",{swapDetails:v.swap},{id:v.swap.requestId});let P=`../${$.swaps}/${v.swap.requestId}`;s(P,{replace:!0}),setTimeout(()=>{e("")},0)}catch(P){l("Error: "+P?.message)}},"addNewSwap"),L=i(async()=>{h(!0),await b(),h(!1)},"onConfirm"),N=i(async()=>{v.warnings?.quote&&Bd(v.warnings.quote)&&!a?E(!0):(t&&te({type:"swapStarted",payload:{...$n(t),stepCount:t.swaps.length}}),await L())},"onStartConfirmSwap"),O=i(async()=>{x({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(P=>{x(P)}).catch(P=>console.error(P))},"onRefresh");Sa(()=>{!!S.current.length&&!m.length&&O(),S.current=m},[m.length]),Sa(()=>{p&&w()},[p]),Sa(()=>{p&&d(p)},[p]),Sa(()=>{p||y({selectedWallets:o,customDestination:r}).then(P=>x(P)).catch(P=>console.error(P))},[]),Ib(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=v.warnings?.quote??null,j=v.error,ee=[];if(c&&ee.push($e.createElement(wb,{id:"widget-confirm-swap-db-error-alert",type:"error",variant:"alarm",title:c})),q||j){let P=`../${$.settings}`;ee.push($e.createElement(Cr,{warning:q,error:j,couldChangeSettings:!1,refetchQuote:O,skipAlerts:j?.type===4||q?.type===2,showWarningModal:A,confirmationDisabled:!g,onOpenWarningModal:()=>E(!0),onCloseWarningModal:()=>E(!1),onConfirmWarningModal:async()=>{E(!1),await b()},onChangeSettings:()=>s(P)}))}return $e.createElement(se,{header:{title:ic.t("Confirm Swap"),onWallet:()=>{let P=`../${$.wallets}`;s(P)}},footer:$e.createElement(Wb,null,$e.createElement("div",{className:Pb()},$e.createElement(vb,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:k||f,disabled:!!v.error||!g,onClick:N},ic.t("Start Swap"))),$e.createElement(Yg,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:k||f,disabled:!g,onClick:d.bind(null,!0)},$e.createElement(xb,{size:24})))},u&&$e.createElement(Pf,{open:u,onClose:()=>d(!1),onCancel:w,loading:k,onCheckBalance:I}),$e.createElement(ce,null,$e.createElement("div",{className:Bb()},$e.createElement(bb,{variant:"title",size:"small"},ic.t("You get")),$e.createElement("div",{className:Lb()},$e.createElement(Oi,{onClick:!k&&!u&&!A?O:void 0}))),$e.createElement(ac,{size:"12"}),Em(ee.map((P,Z)=>({element:P,key:`alert-${Z}`})),$e.createElement(ac,{size:10})),ee.length>0?$e.createElement(ac,{size:10}):null,$e.createElement(Yo,{quote:t,type:"swap-preview",id:"widget-confirm-swap-quote-container",expanded:!0,tagHidden:!0,error:v.error,loading:k,warning:v.warnings?.quote??null})))}i(Zg,"ConfirmSwapPage");import{i18n as ro}from"@lingui/core";import{Button as Tc,CustomTokensZeroStateDarkIcon as Rb,CustomTokensZeroStateIcon as ex,DeleteIcon as tx,Divider as Lr,IconButton as ox,MessageBox as nx,NotFound as rx,styled as kc}from"@rango-dev/ui";import Se,{useState as Cc}from"react";import{useNavigate as ix}from"react-router-dom";import{CloseIcon as _b,IconButton as Mb,SearchIcon as Db,TextField as $b}from"@rango-dev/ui";import Fn from"react";import{styled as Jg}from"@rango-dev/ui";var Rg=Jg("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"}),eh=Jg("div",{width:"100%","& ._text-field":{paddingLeft:"$10","& input":{paddingLeft:"$2",paddingTop:"$12",paddingBottom:"$12"}}});function Wt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:c,setValue:l,suffix:p,id:u,...d}=t,f=s.length?Fn.createElement(Mb,{id:`${u}\u06F0icon-btn`,variant:"ghost",onClick:()=>l?.(""),size:"small"},Fn.createElement(_b,{color:"gray",size:10})):null;return p&&(f=p),Fn.createElement(eh,null,Fn.createElement($b,{prefix:Fn.createElement(Rg,null,Fn.createElement(Db,{color:"black"})),id:u,suffix:f,fullWidth:o,color:n,variant:e,style:{borderRadius:25,alignItems:"center",...c},size:r,value:s,onChange:a,...d}))}i(Wt,"SearchInput");import{i18n as Sc}from"@lingui/core";import{Button as zb,CustomTokenWarning as Hb,darkTheme as dh,Divider as no,ExternalLinkIcon as Qb,Image as qb,ListItem as Gb,NotFound as Vb,PinIcon as Kb,Skeleton as Zo,Typography as Wr,VirtualizedList as jb}from"@rango-dev/ui";import _,{useState as Xb}from"react";import{useTranslation as Yb}from"react-i18next";import{Divider as ph,ListItem as Ub,Skeleton as Nr}from"@rango-dev/ui";import Pt from"react";import{css as On,darkTheme as lc,ImageContainer as Fb,ListItemButton as Ob,styled as st,Typography as th}from"@rango-dev/ui";var cc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),pc=On({position:"relative",height:12,width:"30%",maxWidth:"150px"}),uc=On({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),dc=On({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${lc} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),mc=On({}),fc=On(),oh=st("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),gc=st("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Ta=st("ul",{flexGrow:1,height:"100%",padding:0,margin:0,display:"flex",flexDirection:"column",listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${pc}`]:{[`& .${dc}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${mc}`]:{bottom:"-15px"},[`& .${cc}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${uc}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),nh=st(Ob,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),hc=st("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),yc=st(th,{}),rh=st("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${fc}`]:{$$color:"$colors$neutral600",[`.${lc} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ar=st("div",{display:"flex",alignItems:"end",flexDirection:"column"}),rV=st("div",{display:"flex",alignItems:"center"}),ih=st("div",{position:"relative",[`& ${Fb}`]:{borderRadius:"$xm",overflow:"hidden"}}),ah=st("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),sh=st(th,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),lh=st("a",{"& svg:hover":{color:"$colors$info"}}),ch=st("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":{[`.${lc} &`]:{color:"$foreground"}}}});function uh(t){return Pt.createElement(Ta,null,Array.from(Array(t.size),e=>Pt.createElement(Ub,{key:e,hasDivider:!0,start:Pt.createElement(Nr,{variant:"circular",width:35,height:35}),end:Pt.createElement(Ar,null,Pt.createElement(Nr,{variant:"text",size:"large",width:70}),Pt.createElement(ph,{size:4}),Pt.createElement(Nr,{variant:"text",size:"medium",width:50})),title:Pt.createElement("div",null,Pt.createElement(Nr,{variant:"text",size:"large",width:90}),Pt.createElement(ph,{size:4}),Pt.createElement(Nr,{variant:"text",size:"medium",width:90}))})))}i(uh,"LoadingTokenList");var Zb=20,Jb=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,c=e.length;return _.createElement("div",{className:pc()},o?_.createElement("div",{className:cc()},o):_.createElement(gc,{className:uc()},_.createElement(Wr,{variant:"title",size:"xmedium"},r.symbol),_.createElement(no,{direction:"horizontal",size:4}),_.createElement(hc,{css:a},_.createElement(yc,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&_.createElement("div",{className:`${dc()} ${!o&&mc()}`},c>10?`${e.slice(0,5)}...${e.slice(c-6,c)}`:e," ",_.createElement(no,{size:4,direction:"horizontal"}),_.createElement(lh,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:l=>l.stopPropagation()},_.createElement(Qb,{size:12}))))},"renderDesc");function Pr(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:c,showWarning:l=!0}=t,p=C().fetchStatus,u=C().blockchains(),{getBalanceFor:d,fetchingWallets:f}=C(),{isTokenPinned:h}=C(),{setFromToken:g,setToToken:m}=z()(),{t:S}=Yb(),T=Ve(),[y,k]=Xb(null),w=i(()=>{c==="source"?g({token:y,meta:{blockchains:u}}):m({token:y,meta:{blockchains:u}})},"updateToken"),v=i(()=>{w(),T()},"handleImportToken"),x=i(I=>{if(I.customToken){let{customToken:L,...N}=I;return _.createElement(zb,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),k({...N,warning:!0})},"handleClick")},_.createElement(Wr,{variant:"body",size:"xsmall",color:"background"},S("import")))}let b=pi(d(I));return s?s(I):f?_.createElement(Ar,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})):b&&_.createElement(rh,null,_.createElement(sh,{variant:"title",size:"small"},b.amount),_.createElement("div",null),b.usdValue&&_.createElement(Wr,{variant:"body",className:fc(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),A=i(()=>_.createElement(jb,{style:{flexGrow:1,minHeight:0},itemContent:I=>{let b=e[I];if(b==="skeleton")return _.createElement(Gb,{hasDivider:!0,start:_.createElement(Zo,{variant:"circular",width:35,height:35}),end:_.createElement(Ar,null,_.createElement(Zo,{variant:"text",size:"large",width:70}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:50})),title:_.createElement("div",null,_.createElement(Zo,{variant:"text",size:"large",width:90}),_.createElement(no,{size:4}),_.createElement(Zo,{variant:"text",size:"medium",width:90}))});let L=u.find(Z=>Z.name===b?.blockchain);if(!L||!b)return null;let N=b.address,O=al(L.color,"main"),q={$$color:O.main150,[`.${dh} &`]:{$$color:O.main750},backgroundColor:"$$color"},j={$$color:O.main750,[`.${dh} &`]:{$$color:O.main150},color:"$$color"},ee=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick"),P=N?ti({contractAddress:N,blockchainMeta:L}):void 0;return _.createElement(ch,null,_.createElement(nh,{"tab-index":I,key:`${b.symbol}${N}`,id:`${b.symbol}${N}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b?.customToken,onClick:ee,start:_.createElement(ih,null,_.createElement(qb,{src:b.image===""?ni:b.image,size:30}),t.type!=="custom-token"&&b&&h(b,t.type)&&_.createElement(ah,null,_.createElement(Kb,{size:12,color:"gray"}))),title:b.name||!b.name&&!N?_.createElement(gc,null,_.createElement(Wr,{variant:"title",size:"xmedium"},b.symbol),_.createElement(no,{direction:"horizontal",size:4}),_.createElement(hc,{css:q},_.createElement(yc,{variant:"body",size:"xsmall",css:j},b.blockchain)),l&&b.warning&&_.createElement(_.Fragment,null,_.createElement(no,{direction:"horizontal",size:4}),_.createElement(Hb,{container:W()}))):void 0,description:typeof b!="string"&&L.info&&N&&P?Jb({address:N,token:b,customCssForTag:q,customCssForTagTitle:j,name:b.name,url:P}):b.name||void 0,end:x(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),E=y?Po(y?.blockchain,u):null;return _.createElement(_.Fragment,null,a&&_.createElement(_.Fragment,null,_.createElement(Wr,{variant:"label",size:"large"},Sc.t("Select Token")),_.createElement(no,{size:4})),_.createElement(oh,null,_.createElement(no,{size:4}),p==="loading"&&_.createElement(uh,{size:Zb}),p==="success"&&(e.length?_.createElement(_.Fragment,null,_.createElement(hr,{token:y,address:y?.address??"",blockchain:E??void 0,onImport:v,onExitErrorModal:()=>k(null),onExitImportModal:()=>k(null)}),_.createElement(Ta,{as:"ul"},A())):!!o&&_.createElement(Vb,{title:Sc.t("No results found"),description:Sc.t("Try using different keywords")}))))}i(Pr,"TokenList");var ax=kc("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),sx=kc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),lx=kc(ox,{"&:hover":{"& svg":{color:"$secondary550"}}});function mh(){let[t,e]=Cc(""),{deleteCustomToken:o}=C(),n=C().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:c}=z()(),{mode:l}=go({}),p=ix(),[u,d]=Cc(!1),[f,h]=Cc(),g=i(y=>{let k=y.target.value;e(k)},"handleSearch"),m=l==="dark",S=n.filter(y=>pt(y.symbol,t)||pt(y.address||"",t)||pt(y.name||"",t)),T=i(()=>{if(f){let y=a?Ct(a):null,k=r?Ct(r):null,w=Ct(f);y===w?c({token:null}):k===w&&s({token:null}),o(f)}d(!1)},"handleDeleteCustomToken");return Se.createElement(se,{header:{title:ro.t("Custom Tokens")}},Se.createElement(ce,null,Se.createElement(ax,null,n.length?Se.createElement(Se.Fragment,null,Se.createElement(Wt,{id:"widget-custom-tokens-search-token-input",value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:ro.t("Search Token"),onChange:g}),Se.createElement(Lr,{size:16}),Se.createElement(Pr,{list:S,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>Se.createElement(lx,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{d(!0),h(y)}},Se.createElement(tx,{size:12,color:"gray"}))})):Se.createElement(sx,null,Se.createElement(rx,{icon:m?Se.createElement(Rb,{size:200}):Se.createElement(ex,{size:200}),title:ro.t("No custom tokens"),description:ro.t("press the button to add your custom token")})),Se.createElement(Lr,{size:20}),Se.createElement(Tc,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>p($.addCustomTokens)},ro.t("Add Custom Token"))),Se.createElement(re,{open:u,id:"widget-custom-tokens-delete-modal",dismissible:!0,onClose:()=>d(!1),container:W()},Se.createElement(nx,{title:ro.t("Delete Custom Token"),type:"error",description:ro.t("Are you sure you want to Delete this Token?")},Se.createElement(Lr,{size:40}),Se.createElement(Lr,{size:10}),Se.createElement(Tc,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:T},ro.t("Yes, Delete it")),Se.createElement(Lr,{size:12}),Se.createElement(Tc,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>d(!1)},ro.t("No, Continue"))))))}i(mh,"CustomTokensPage");import{i18n as Fe}from"@lingui/core";import{useManager as Ax}from"@rango-dev/queue-manager-react";import{Button as Ac,darkTheme as Nx,Divider as wo,MessageBox as Wx,NotFound as Px,styled as Nc,Tabs as Lx,Typography as wa}from"@rango-dev/ui";import{TransactionStatus as Mr}from"rango-types";import oe,{useMemo as Lh,useState as Dr}from"react";import{useNavigate as Bx}from"react-router-dom";import{FilterIcon as gx,Popover as hx}from"@rango-dev/ui";import Jo from"react";import{css as cx,darkTheme as Ca,IconButton as px,styled as Br}from"@rango-dev/ui";var wc=Br("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:""}}}}}),fh=Br(px,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Ca} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Ca} &`]:{backgroundColor:"$neutral"},[`& ${wc}::before`]:{backgroundColor:"$secondary100",[`.${Ca} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),gh=Br("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),hh=Br("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),yh=cx({display:"flex",justifyContent:"space-between",alignItems:"center"}),Sh=Br("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Th}from"@lingui/core";import{Button as ux,Divider as Ch,ListItemButton as dx,Radio as mx,RadioRoot as fx,Typography as kh}from"@rango-dev/ui";import gt from"react";function wh(t){let{filterBy:e,onClickItem:o}=t;return gt.createElement(hh,null,gt.createElement("div",{className:yh()},gt.createElement(kh,{size:"small",variant:"body"},Th.t("Status")),gt.createElement(ux,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Th.t("Reset"))),gt.createElement(Ch,{size:10}),gt.createElement(fx,{value:e},gt.createElement(Sh,null,t.list.map((n,r)=>gt.createElement(dx,{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:gt.createElement(gt.Fragment,null,gt.createElement(Ch,{direction:"horizontal",size:4}),gt.createElement(kh,{size:"medium",variant:"body"},n.title)),start:gt.createElement(mx,{value:n.id}),onClick:o})))))}i(wh,"FilterSelectorContent");function vc(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Jo.createElement("div",null,Jo.createElement(hx,{open:a,align:"end",onOpenChange:o,container:W(),content:Jo.createElement(wh,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Jo.createElement(fh,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Jo.createElement(wc,{isSelect:!!n},Jo.createElement(gx,{size:16,color:"black"}),!!n&&Jo.createElement(gh,null)))))}i(vc,"FilterSelector");import{i18n as Tx}from"@lingui/core";import{getCurrentStep as Cx}from"@rango-dev/queue-manager-rango-preset";import{Divider as Ih,GroupedVirtualizedList as kx,Skeleton as wx,SwapListItem as Ah,Typography as vx}from"@rango-dev/ui";import et,{useCallback as Nh,useEffect as Ex,useRef as bx,useState as xx}from"react";function vh(t,e){let o=[],n=0;do{let r=t[n];r&&(o.push(Math.min(r,e)),e-=r),n++}while(e>0&&n<=t.length);return o}i(vh,"calculateGroupsSoFar");import{css as yx,darkTheme as Sx,styled as _r}from"@rango-dev/ui";var Ec=yx(),Eh=_r("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),bc=_r("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${Ec}`]:{$$color:"$colors$neutral600",[`.${Sx} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),xc=_r("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),bh=_r("div",{gap:"$10",display:"flex",flexDirection:"column"}),xh=_r("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var Ix=10;function Ic(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=xx([]),c=bx(0),{swaps:l,groupCounts:p,groups:u}=n(e),d=Nh(vh,[]),f=Nh(()=>{let h=e.length-c.current;h&&(c.current+=Math.min(h,Ix),s(d(p,c.current)))},[e.length]);if(Ex(()=>{r||f()},[r,f]),r){let h=[1,2];return et.createElement(et.Fragment,null,[h,h].map((m,S)=>et.createElement(bc,{key:S},et.createElement(xc,null,et.createElement(wx,{variant:"text",width:60,size:"small"}),et.createElement(Ih,{size:16})),et.createElement(Ih,{size:4}),et.createElement(bh,null,m.map((y,k)=>et.createElement(Ah,{isLoading:!0,key:k}))))))}return et.createElement(kx,{style:{flexGrow:1,minHeight:0},endReached:()=>{c.current<e.length&&f()},groupCounts:a,groupContent:h=>et.createElement(bc,null,et.createElement(xc,null,et.createElement(vx,{variant:"label",size:"medium",className:Ec()},u[h]))),itemContent:(h,g)=>{let m=l[h];if(!m)return null;let S=Cx(m),T=m.steps[0],y=m.steps[m.steps.length-1];return!T||!y?null:et.createElement(Eh,{key:m.requestId},et.createElement(Ah,{className:"widget-history-group-list-swap-item-btn",requestId:m.requestId,creationTime:m.creationTime,status:m.status,onClick:o,currentStep:S,tooltipContainer:W(),onlyShowTime:u[g]===Tx.t("Today"),swapTokenData:{from:{token:{image:T.fromLogo,displayName:T.fromSymbol},blockchain:{image:T.fromBlockchainLogo||""},amount:M(m.inputAmount,6,6),realAmount:m.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:M(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(Ic,"HistoryGroupedList");import{i18n as ka}from"@lingui/core";import Wh from"dayjs";var Ph=i(t=>{let e=new Map([["today",{title:ka.t("Today"),swaps:[]}],["week",{title:ka.t("This week"),swaps:[]}],["month",{title:ka.t("This month"),swaps:[]}],["year",{title:ka.t("This year"),swaps:[]}]]);function o(l,p){e.has(l)||e.set(l,{title:l,swaps:[]}),e.get(l)?.swaps.push(p)}i(o,"addYearsToOutput");let n=Wh();t.forEach(l=>{let p=Number(l.creationTime),u=Wh(p);if(n.isSame(u,"day"))e.get("today")?.swaps.push(l);else if(n.isSame(u,"week"))e.get("week")?.swaps.push(l);else if(n.isSame(u,"month"))e.get("month")?.swaps.push(l);else if(n.isSame(u,"year"))e.get("year")?.swaps.push(l);else{let 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 _x=Nc("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%",minHeight:0,flexGrow:1}),Mx=Nc("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Dx=Nc("div",{"._typography":{color:"$neutral700",[`.${Nx}&`]:{color:"$neutral900"}}}),$x=i((t,e)=>t?.length?t.filter(o=>_t(o.fromBlockchain,e)||_t(o.toBlockchain,e)||_t(o.toSymbol,e)||_t(o.fromSymbol,e)).length:!1,"isStepContainsText");function Bh(){let t=Bx(),{manager:e,state:o}=Ax(),n=vt(e).map(({swap:E})=>E),[r,a]=Dr(""),[s,c]=Dr(!1),l=!o.loadedFromPersistor,[p,u]=Dr(""),[d,f]=Dr(!1),[h,g]=Dr("all"),m=i(E=>{let I=E.target.value;a(I)},"handleSearch"),{isMultiMode:S}=rt(),T=[{id:Mr.SUCCESS,title:Fe.t("Complete")},{id:Mr.RUNNING,title:Fe.t("Running")},{id:Mr.FAILED,title:Fe.t("Failed")}],y=[{id:"all",title:Fe.t("All")},{id:"swap",title:Fe.t("Swap")},{id:"refuel",title:Fe.t("Refuel")}],k=Lh(()=>!r&&!p&&h==="all"?n:n.filter(E=>{let{inputAmount:I,status:b,steps:L,requestId:N,mode:O}=E;return(!r||_t(I,r)||_t(b,r)||$x(L,r)||_t(N,r))&&(!p||p===b)&&(h==="all"?!0:h==="swap"?!O||O==="swap":h==="refuel"?O==="refuel":!1)}),[n,r,p,h]),w=!k?.length&&!l,v=i(()=>f(!1),"onCloseModal"),x=i(async()=>{try{await e?.clearQueue(),f(!1)}catch(E){console.log(E)}},"onClear"),A=Lh(()=>!n.some(E=>E.status===Mr.SUCCESS||E.status===Mr.FAILED),[n]);return oe.createElement(se,{header:{title:Fe.t("History"),suffix:oe.createElement(ho,null,oe.createElement(Ac,{id:"widget-history-clear-btn",disabled:A,variant:"ghost",size:"xsmall",onClick:()=>f(!0)},oe.createElement(wa,{size:"medium",variant:"label",color:"error"},Fe.t("Clear"))))}},oe.createElement(ce,null,oe.createElement(Mx,null,oe.createElement(Wt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Fe.t("Search Transaction"),id:"widget-history-search-transaction-input",autoFocus:!0,onChange:m,style:{height:36},value:r}),oe.createElement(wo,{size:10,direction:"horizontal"}),oe.createElement(vc,{filterBy:p,open:s,onOpenChange:E=>c(E),onClickItem:E=>u(E),list:T})),oe.createElement(wo,{size:"16"}),S&&!l&&oe.createElement(oe.Fragment,null,oe.createElement(Lx,{items:y,onChange:E=>g(E.id),value:h,type:"secondary"}),oe.createElement(wo,{size:"12"})),oe.createElement(_x,null,w&&oe.createElement(xh,null,oe.createElement(wo,{size:32}),oe.createElement(Px,{title:r?Fe.t("No results found"):Fe.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Fe.t("Try using different keywords"):Fe.t("Your transaction history is stored locally and will appear here after you start a swap")})),!w&&oe.createElement(Ic,{list:k,onSwapClick:t,groupBy:Ph,isLoading:l}))),oe.createElement(re,{open:d,onClose:v,id:"widget-history-clear-modal",container:W()},oe.createElement(wo,{size:20}),oe.createElement(Wx,{type:"warning",title:Fe.t("Clear Transaction History"),description:oe.createElement(Dx,null,oe.createElement(wa,{variant:"body",size:"medium"},Fe.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),oe.createElement(wo,{size:"24"}),oe.createElement(wa,{variant:"body",size:"small"},Fe.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),oe.createElement(wo,{size:30}),oe.createElement(Ac,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:x},Fe.t("Yes, Clear the history")),oe.createElement(wo,{size:10}),oe.createElement(Ac,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:v},oe.createElement(wa,{variant:"title",size:"medium",color:"primary"},Fe.t("No, Cancel")))))}i(Bh,"HistoryPage");import{i18n as ly}from"@lingui/core";import{Button as TI,Divider as Qc,styled as CI,WarningIcon as kI}from"@rango-dev/ui";import wI from"bignumber.js";import Ce,{useEffect as cy,useState as py}from"react";import{useNavigate as vI}from"react-router-dom";import{i18n as Mh}from"@lingui/core";import{Alert as Ox,Divider as Wc,NoRouteIcon as Ux,Typography as zx}from"@rango-dev/ui";import Ro from"react";import{styled as Fx}from"@rango-dev/ui";var _h=Fx("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Pc(){let{fromToken:t,toToken:e}=z()();return!!t&&!!e&&Vt(t,e)?Ro.createElement(_h,null,Ro.createElement(Wc,{size:10}),Ro.createElement(Ux,{size:24,color:"gray"}),Ro.createElement(Wc,{size:4}),Ro.createElement(zx,{variant:"title",size:"small"},Mh.t("No Routes Found")),Ro.createElement(Wc,{size:4}),Ro.createElement(Ox,{title:Mh.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Pc,"SameTokensWarning");import{Alert as Hx,Button as Qx}from"@rango-dev/ui";import $h from"react";import{i18n as va}from"@lingui/core";function Dh(t){let e=null;return t===fi?(e={alertType:"error",action:"reset-slippage",actionButtonTitle:va.t("Reset"),title:va.t("Slippage cannot be set lower than 0.01%.")},e):t>un?(e={alertType:"warning",action:"change-settings",actionButtonTitle:va.t("Change"),title:va.t("Caution, your slippage is high!")},e):null}i(Dh,"makeAlerts");function Fh(t){let{slippage:e,customSlippage:o,setSlippage:n,setCustomSlippage:r}=C(),{onChangeSettings:a}=t,c=Dh(o!==null?o:e),l=i(p=>{p==="reset-slippage"?(n(mi),r(null)):p==="change-settings"&&a()},"onClickActionButton");return c?$h.createElement(Hx,{title:c.title,type:c.alertType,variant:"alarm",action:$h.createElement(Qx,{id:"widget-slippage-warning-error-change-settings-or-reset-slippage-btn",size:"xxsmall",type:c.alertType,onClick:()=>l(c.action)},c.actionButtonTitle)}):null}i(Fh,"SlippageWarningsAndErrors");import{i18n as jx}from"@lingui/core";import{IconButton as Xx,ReverseIcon as Yx,Skeleton as Zx,Tooltip as Jx,Typography as $r}from"@rango-dev/ui";import ht from"react";import Ea from"bignumber.js";function Uh(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(Uh,"getSlippageColor");function zh(t){let{toTokenUsdPrice:e,fromTokenUsdPrice:o}=t;if(!e||!o)return{rawValue:"0",displayValue:"0"};let n=new Ea(e),r=new Ea(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(zh,"getUsdExchangeRate");function Hh(t,e){let o=new Ea(t).multipliedBy(e);return o.isLessThan(.001)?"$0":`$${o.decimalPlaces(2,Ea.ROUND_DOWN).toFormat(2)}`}i(Hh,"formatTokenValueInUsd");import{darkTheme as Vx,styled as Bc,Typography as Kx}from"@rango-dev/ui";var Qh=Bc("div",{display:"flex",padding:"$4",justifyContent:"space-between",alignItems:"center"}),qh=Bc("div",{display:"flex",alignItems:"center",gap:"$2","& .rate-text":{color:"$neutral700",[`.${Vx} &`]:{color:"$neutral700"}},"& ._icon-button":{transform:"rotate(90deg)",width:"$16",height:"$16"}}),_c=Bc(Kx,{maxWidth:"$32",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"});function Mc(t){let{slippage:e,customSlippage:o,quoteTokensRate:n,changeQuoteTokensRate:r}=C(),{quoteError:a,quoteWarning:s,fromToken:c,toToken:l,quote:p,loading:u}=t,d=o!==null?o:e,{mode:f}=go({}),h=fn(d),g=f==="dark",m=n==="default",S={quoteError:a,slippageError:h?.type==="error"?h.message:null},T={quoteWarning:s,slippageWarning:h?.type==="warning"?h.message:null},y=p?.swaps[0]?.from||c,k=p?.swaps[p?.swaps.length-1]?.to||l,w=m?y:k,v=m?k:y,x=Number(m?p?.outputAmount:p?.requestAmount),A=Number(m?p?.requestAmount:p?.outputAmount),E=x||w.usdPrice,I=A||v.usdPrice,{rawValue:b,displayValue:L}=zh({toTokenUsdPrice:I,fromTokenUsdPrice:E});return ht.createElement(Qh,null,ht.createElement($r,{variant:S||T?"label":"body",size:S||T?"medium":"small",color:Uh({error:S,warning:T,isDarkTheme:g})},jx.t("Slippage:")," ",d,"%"),u?ht.createElement(Zx,{height:16,width:104,variant:"rounded"}):E&&I&&ht.createElement(qh,null,ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},"1"),ht.createElement(_c,{className:"rate-text",variant:"body",size:"small"},v.symbol),ht.createElement(Xx,{id:"widget-home-page-change-rate-button",onClick:r},ht.createElement(Yx,{size:14,color:"secondary"})),ht.createElement(Jx,{container:W(),side:"top",sideOffset:4,content:ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},b)},ht.createElement($r,{className:"rate-text",variant:"body",size:"small"},L)),ht.createElement(_c,{className:"rate-text",variant:"body",size:"small"},w.symbol),w.usdPrice&&ht.createElement($r,{color:"neutral600",variant:"body",size:"small"},"~",Hh(Number(b),w.usdPrice))))}i(Mc,"SwapMetrics");import{i18n as rI}from"@lingui/core";import{Header as iI}from"@rango-dev/ui";import vo,{useEffect as aI,useState as sI}from"react";import{i18n as eI}from"@lingui/core";import{Divider as $c,FullExpandedQuote as tI,Typography as oI}from"@rango-dev/ui";import ve from"react";import{styled as Dc}from"@rango-dev/ui";var Gh=Dc("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),Vh=Dc("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),Kh=Dc("div",{width:"146px"});import{i18n as Fr}from"@lingui/core";import{Select as Rx}from"@rango-dev/ui";import jh from"react";function ba(t){let{updateQuotePartialState:e,sortStrategy:o}=z()(),n=[{value:"SMART",label:Fr.t("Smart Routing")},{value:"FEE",label:Fr.t("Lowest Fee")},{value:"SPEED",label:Fr.t("Fastest Transfer")},{value:"NET_OUTPUT",label:Fr.t("Maximum Return")},{value:"PRICE",label:Fr.t("Maximum Output")}];return jh.createElement(Kh,null,jh.createElement(Rx,{id:"widget-quotes-strategy-select",container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(ba,"SelectStrategy");var Xh=3;function Or(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:c}=t,{selectedQuote:l,quotes:p,updateQuotePartialState:u,fromToken:d,toToken:f,sortStrategy:h,error:g}=z()(),{slippage:m,customSlippage:S}=C(),{findToken:T}=C(),y=c||W(),k=!!p&&p.results.length,w=S??m,{config:{__UNSTABLE_OR_INTERNAL__:v}}=C(),x=i(I=>{if(!d||!f||!p)return null;let b={requestAmount:p.requestAmount,validationStatus:null,...I};return En({currentQuote:b,userSlippage:w,findToken:T})},"getQuoteWarning"),A=g?.type===0||g?.type===1,E=p?.results?Ni(h,p?.results):[];return ve.createElement(ve.Fragment,null,a&&ve.createElement(ve.Fragment,null,ve.createElement(Vh,null,ve.createElement(oI,{size:"xmedium",variant:"title"},eI.t("Sort by")),ve.createElement(ba,{container:y})),ve.createElement($c,{size:"10"})),e&&Array.from({length:Xh},(I,b)=>ve.createElement(ve.Fragment,{key:b},s?ve.createElement(tI,{campaignTag:v?.campaignTag,loading:!0}):ve.createElement(xr,{tagHidden:!1,type:"list-item",expanded:!1}),b!==Xh-1&&ve.createElement($c,{size:16}))),!e&&ve.createElement(ve.Fragment,null,k?E.map((I,b)=>{let L=x(I),N=nc(I.swaps),O=E.length-1===b;return ve.createElement(ve.Fragment,{key:I.requestId},ve.createElement(Yo,{id:"widget-quotes-quote-info-container",showModalFee:r,container:y,selected:l?.requestId===I.requestId,tagHidden:!1,quote:{...I,requestAmount:p.requestAmount,validationStatus:null},loading:e,error:N?.options||null,warning:L,fullExpandedMode:s,onClick:q=>{N||u("warning",L),u("error",N?.options||null),o(q)},type:"list-item"}),!O&&ve.createElement($c,{size:16}))}):A&&ve.createElement(Gh,null,ve.createElement(Sr,{size:s?"large":"small",error:g,fetch:n}))))}i(Or,"Quotes");import{darkTheme as nI,styled as Yh}from"@rango-dev/ui";var Zh=Yh("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${nI} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Jh=Yh("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var lI=100;function Fc(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,c]=sI(!1),l=s?"":"is-hidden",{config:p}=C(),u=p?.variant==="full-expanded",d=_o();return aI(()=>{let f=null;return a?f=setTimeout(()=>{c(!0)},lI):(c(!1),f&&clearTimeout(f)),()=>{f&&clearTimeout(f)}},[a]),vo.createElement(Zh,{expandMode:p?.variant==="full-expanded"?"full":"default",className:`${l} ${Qi()} widget-expanded-quotes-container`,id:kt.EXPANDED_BOX_ID},vo.createElement(iI,{title:rI.t("Routes"),suffix:vo.createElement(vo.Fragment,null,vo.createElement(ba,{container:d}),vo.createElement(Go,{container:d,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),vo.createElement(Jh,null,vo.createElement(Or,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:_o(),onClickOnQuote:n,fullExpandedMode:u})))}i(Fc,"ExpandedQuotes");import{i18n as iy}from"@lingui/core";import{SwapInput as ay}from"@rango-dev/ui";import dI from"bignumber.js";import Ur from"react";import{ReverseIcon as uI}from"@rango-dev/ui";import Uc from"react";import{keyframes as cI,styled as Rh}from"@rango-dev/ui";var Oc=450,pI=cI({"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)"}}),ey=Rh("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),ty=Rh("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${pI} ${Oc}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 zc(){let t=z().use.switchFromAndTo();return Uc.createElement(ey,null,Uc.createElement(ty,{id:"widget-switch-from-and-to-btn",onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Oc),t()}},Uc.createElement(uI,{size:12})))}i(zc,"SwitchFromAndToButton");import{styled as oy}from"@rango-dev/ui";var ny=oy("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),ry=oy("div",{position:"relative"});function Hc(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:c,toBlockchain:l,setInputAmount:p,sanitizeInputAmount:u,inputAmount:d,inputUsdValue:f,outputAmount:h,outputUsdValue:g,selectedQuote:m}=z()(),{swapMode:S}=rt(),{connectedWallets:T,getBalanceFor:y}=C(),k=a?y(a):null,w=pi(k)?.amount??"0",v=k?new dI(k.amount).shiftedBy(-k.decimals):pe,x=!!s&&Au(T,s.name),A=!Hs(m,d,f),E=!Hs(m,d,g),I=!f||!g||!g.gt(0)?null:Yt(f.toString(),g.toString());return Ur.createElement(ny,null,Ur.createElement(ry,null,Ur.createElement(ay,{label:iy.t("From"),id:"widget-swap-from",mode:"From",onInputChange:p,onInputBlur:u,balance:w,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:d,usdValue:A?void 0:M(f,4,4),realUsdValue:A?void 0:f?.toString(),error:A?ie().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:x,tooltipContainer:W(),onSelectMaxBalance:()=>{let b=v.isGreaterThan(pe)?v.toFixed():"";p(b)},anyWalletConnected:T.length>0}),S==="swap"&&Ur.createElement(zc,null)),Ur.createElement(ay,{selectionType:S==="swap"?"token":"chain",sharpBottomStyle:!r&&(!!m||e),label:iy.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:M(Yt(f,g),2,2),warningLevel:Zt(I??0),price:{value:M(h,6,6),usdValue:E?void 0:M(g,4,4),realValue:h?.toString(),realUsdValue:E?void 0:g?.toString(),error:E?ie().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:W()}))}i(Hc,"Inputs");import{warn as mI}from"@rango-dev/logging-core";import{useCallback as fI,useEffect as gI,useRef as hI,useState as yI}from"react";function sy(){let{fetch:t,loading:e,cancelFetch:o}=ga({request:async(n,r)=>await dt().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(sy,"useFetchAllQuotes");var SI=600;function xa({refetchQuote:t}){let{fetch:e,cancelFetch:o}=sy(),{excludeLiquiditySources:n,routing:r}=C().config,{connectedWallets:a}=C(),c=a.some(be=>be.isContractWallet),{fromToken:l,toToken:p,inputAmount:u,inputUsdValue:d,selectedQuote:f,sortStrategy:h,resetQuote:g,error:m,warning:S,setSelectedQuote:T,updateQuotePartialState:y}=z()(),{slippage:k,customSlippage:w,affiliatePercent:v,affiliateRef:x,affiliateWallets:A,fetchStatus:E}=C(),I=C().getLiquiditySources(),b=C().getDisabledLiquiditySources(),L=C().excludeLiquiditySources(),{findToken:N}=C(),{swapMode:O}=rt(),[q,j]=yI(!0),ee=hI(u),P=w??k,Y=!l||!p||Vt(l,p)||!Yn(u),ue=i(be=>{j(be)},"resetState"),Ee=i(be=>{let{fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J}=be;if(q||ue(!0),!Y&&He&&Xe){g();let U=Vd({fromToken:He,toToken:Xe,inputAmount:St,liquiditySources:ct,excludeLiquiditySources:B,disabledLiquiditySources:V,wallets:a,slippage:H,affiliateRef:X,affiliatePercent:G,affiliateWallets:J,contractCall:c});mn("experimental",r)&&(U.experimental=!0),mn("avoidNativeFee",r)&&(U.avoidNativeFee=!0),mn("enableCentralizedSwappers",r)&&(U.enableCentralizedSwappers=!0),r?.maxLength&&(U.maxLength=r.maxLength),O==="refuel"&&(U.maxLength=1),e(U).then(de=>{let Qe=Ni(h,de.results),ot=Md(f,Qe,de.requestAmount);j(!1),y("quotes",de),T(ot),de.results?.length&&ot&&hn({type:"routeRequested",payload:{...$n(ot),routeCount:de.results.length}}),ha({diagnosisMessages:de.diagnosisMessages,requestId:ot?.requestId||"",swaps:ot?.swaps});let co=ot&&En({currentQuote:ot,userSlippage:P,findToken:N});y("warning",co)}).catch(de=>{let Qe=ya(de);Qe.type===0?hn({type:"routeNotFound",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,sourceTokenSymbol:He.symbol,sourceTokenAddress:He.address,destinationTokenSymbol:Xe.symbol,destinationTokenAddress:Xe.address,inputAmountUsd:d?d.toNumber():null}}):Qe.type===1&&hn({type:"routeFetchFailed",payload:{sourceChain:He.blockchain,destinationChain:Xe.blockchain,errorCode:String(de?.response?.status??"")}}),(Qe.type===0||Qe.type===1)&&g(),Qe.type!==2&&(y("error",Qe),j(!1),mI(new Error("quote error"),{tags:{...Qe,type:Je[Qe.type],requestBody:U}}))})}},"fetch"),Gt=fI(ri(be=>{Ee(be)},SI),[Y]);return gI(()=>{if(!t){j(!1);return}if(E!=="success")return;if(Y){j(!1),(f||m||S)&&g();return}if(!Yn(u)&&d?.eq(0)){ue(!1),o();return}g(),ue(!0);let be=Ee;return ee.current&&ee.current!=u&&(be=Gt),ee.current=u,be({inputAmount:u,fromToken:l,toToken:p,liquiditySources:I,excludeLiquiditySources:L,disabledLiquiditySources:b,slippage:P,affiliateRef:x,affiliatePercent:v,affiliateWallets:A,contractCall:c}),o},[E,u,l?.symbol,l?.address,l?.blockchain,p?.symbol,p?.address,p?.blockchain,Y,I?.length,n,b.length,P,x,v,c,JSON.stringify(A)]),{fetch:()=>Ee({inputAmount:u,fromToken:l,toToken:p,liquiditySources:I,excludeLiquiditySources:L,disabledLiquiditySources:b,slippage:P,affiliateRef:x,affiliatePercent:v,affiliateWallets:A,contractCall:c}),loading:q}}i(xa,"useSwapInput");var EI=CI("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),bI=300;function uy(){let t=vI(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:c,quotes:l,setSelectedQuote:p,resetQuoteWallets:u,setQuoteWarningsConfirmed:d,updateQuotePartialState:f}=z()(),[h,g]=py(!1),{isLargeScreen:m,isExtraLargeScreen:S}=aa(),{fetch:T,loading:y}=xa({refetchQuote:a}),{config:k,fetchStatus:w,connectedWallets:v,customSlippage:x,slippage:A,setSlippage:E,setCustomSlippage:I}=C(),{isActiveTab:b}=ne(),[L,N]=py(!1),O=x!==null?x:A,{swapMode:q}=rt(),j=fn(O),P=Qd({fetchMetaStatus:w,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:v.length>0,error:s,warning:c,needsToWarnEthOnPath:!1}),Z=_u(m,S,k?.variant),Y=!!n&&!!e&&!!o&&new wI(n).gt(0)&&!Rd(e,o),ue=Y&&w==="success"&&y,Ee=j?.quoteValidation||c,He=(!Z||Z&&l?.results.length)&&(Ee||s),Xe=!!e&&!!o,St=Xe&&!!j,ct=(r||s)&&!L?T:void 0,B=i(J=>{Z&&h?(g(!1),setTimeout(()=>{t(J)},bI)):t(J)},"onHandleNavigation"),V=i(J=>{r?.requestId!==J.requestId&&(r&&hn({type:"routeChanged",payload:{sourceChain:J.swaps[0]?.from.blockchain??"",destinationChain:J.swaps[J.swaps.length-1]?.to.blockchain??"",fromRouteId:r.requestId,toRouteId:J.requestId}}),N(!1),p(J))},"onClickOnQuote"),H=i(J=>{if(J){if(di.includes(J)){E(J),I(null);return}I(J)}},"onChangeSlippage"),X=i(J=>{B(J==="from"?$.fromSwap:q==="swap"?$.toSwap:$.toSwap+"/"+$.blockchains)},"handleInputTokenClick");cy(()=>{u(),f("refetchQuote",!0)},[]),cy(()=>{g(Y)},[Y]);let G=i(()=>{P.action==="connect-wallet"?Xu({type:"clickConnectWallet"},()=>{B($.wallets)}):P.action==="confirm-warning"?N(!0):r&&(te({type:"swapInitiated",payload:{...$n(r),walletConnected:v.length>0}}),B($.confirmSwap))},"handleSwapButtonClick");return Ce.createElement(EI,null,Ce.createElement(se,{height:"auto",footer:Ce.createElement(TI,{id:`widget-swap-${P.action}-btn`,type:"primary",size:"large",disabled:P.disabled||!b,prefix:P.action==="confirm-warning"&&Ce.createElement(kI,null),fullWidth:!0,onClick:G},P.title),header:{onWallet:()=>{B($.wallets)},hasBackButton:!1,title:k.title||(q==="swap"?ly.t("Swap"):ly.t("Refuel")),suffix:Ce.createElement(Go,{hidden:Z?["refresh"]:void 0,onClickRefresh:ct,onClickHistory:()=>B($.swaps),onClickSettings:()=>{B($.settings)}})}},Ce.createElement(ce,null,Ce.createElement(Hc,{fetchingQuote:ue,fetchMetaStatus:w,isExpandable:Z,onClickToken:X}),Ce.createElement(Qc,{size:"2"}),Z?null:Ce.createElement(Yo,{quote:r,loading:ue,error:s,id:"widget-home-expandable-quote-container",tagHidden:!1,warning:Ee,type:"basic",onClickAllRoutes:l&&l.results.length>1?()=>{f("refetchQuote",!1),B($.routes)}:void 0}),Xe&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Qc,{size:8}),Ce.createElement(Mc,{quoteError:s,quoteWarning:Ee,fromToken:e,toToken:o,quote:r,loading:ue})),He?Ce.createElement(Ce.Fragment,null,Ce.createElement(Cr,{warning:Ee,error:s,skipAlerts:!!j,couldChangeSettings:!0,refetchQuote:T,showWarningModal:L,confirmationDisabled:!b,onOpenWarningModal:()=>N(!0),onCloseWarningModal:()=>N(!1),onChangeSlippage:H,onConfirmWarningModal:()=>{N(!1),d(!0),B($.confirmSwap)},onChangeSettings:()=>B($.settings)})):null,St&&Ce.createElement(Ce.Fragment,null,Ce.createElement(Qc,{size:"10"}),Ce.createElement(Fh,{onChangeSettings:()=>B($.settings)})),Ce.createElement(Pc,null))),Z?Ce.createElement(Fc,{loading:ue,onClickOnQuote:V,fetch:T,onClickRefresh:ct,isVisible:h}):null)}i(uy,"Home");import{i18n as dy}from"@lingui/core";import{Alert as xI,Divider as II,List as AI,ListItemButton as NI,Radio as WI,RadioRoot as PI,Typography as LI}from"@rango-dev/ui";import Ut from"react";function Eo(){let{setLanguage:t,language:e,config:o}=C(),n=Uu,r=o?.language||gn;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||gn),resetLanguage:()=>t(null)}}i(Eo,"useLanguage");function my(){let{activeLanguage:t,changeLanguage:e,languages:o}=Eo(),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:Ut.createElement(LI,{variant:"title",size:"xmedium"},c),onClick:()=>{e(a.local),n()},end:Ut.createElement(WI,{value:s}),start:Ut.createElement(l,null)}});return Ut.createElement(se,{header:{title:dy.t("Language")}},Ut.createElement(ce,null,Ut.createElement(xI,{type:"warning",id:"widget-language-machine-translation-alarm-alert",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Ut.createElement(II,{size:"8"}),Ut.createElement(PI,{value:t},Ut.createElement(AI,{type:Ut.createElement(NI,{title:dy.t("language"),className:"widget-language-list-item-btn",id:"_",onClick:()=>console.log()}),items:r}))))}i(my,"LanguagePage");import{i18n as io}from"@lingui/core";import{Button as $I,Checkbox as FI,Image as OI,ListItemButton as UI,NotFound as zI,Typography as HI}from"@rango-dev/ui";import tt,{useState as QI}from"react";import{Checkbox as MI,Skeleton as gy}from"@rango-dev/ui";import Hr from"react";import{styled as qc}from"@rango-dev/ui";var zr=qc("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Gc=qc("div",{width:80,display:"flex",justifyContent:"flex-end"}),Vc=qc("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as BI,styled as _I}from"@rango-dev/ui";var fy=_I(BI,{height:61});var DI=30;function Kc(){return Hr.createElement(zr,null,Array.from(Array(DI),(t,e)=>Hr.createElement(fy,{hasDivider:!0,key:e,start:Hr.createElement(gy,{variant:"circular",width:35,height:35}),title:Hr.createElement(gy,{variant:"text",size:"large",width:90}),end:Hr.createElement(MI,{checked:!1})})))}i(Kc,"LoadingLiquiditySourceList");function jc({sourceType:t}){let e=C().fetchStatus,o=C().swappers(),n=C().getDisabledLiquiditySources(),[r,a]=QI(""),s=C().toggleLiquiditySource,c=C().isInCampaignMode(),l=hi(o,n),p={Exchanges:io.t("Exchanges"),Bridges:io.t("Bridges")},u=[];t==="Exchanges"&&u.push("DEX"),t==="Bridges"&&u.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let d=l.filter(y=>u.includes(y.type)),f=d.length===d.filter(y=>y.selected).length,h=t==="Exchanges"?"exchanges":"bridges",g=i(()=>{let y=!f;te({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:y?"selectAll":"deselectAll",previousSelectedCount:d.filter(k=>k.selected).length,totalCount:d.length}}),d.forEach(k=>{f?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),m=d.map(y=>{let{selected:k,groupTitle:w,logo:v,id:x,...A}=y;return{id:`widget-setting-liquidity-source-${hu(x.toLowerCase())}-item-btn`,start:tt.createElement(OI,{src:v,size:22,type:"circular"}),onClick:()=>{c||(te({type:"settingsChanged",payload:{setting:"liquiditySource",sourceType:h,changeType:"individual",sources:[{id:w,enabled:!k}]}}),s(w))},end:tt.createElement(FI,{checked:k,disabled:c}),title:tt.createElement(HI,{variant:"title",size:"xmedium"},io.t(w)),selected:k,groupTitle:w,logo:v,...A}}),S=i(y=>{let k=y.target.value;a(k)},"handleSearch"),T=m;return r&&(T=m.filter(y=>_t(y.groupTitle,r))),tt.createElement(se,{header:{title:io.t(t),suffix:tt.createElement(Gc,null,tt.createElement($I,{id:`widget-liquidity-source-${f?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:g},f?io.t("Deselect all"):io.t("Select all")))}},tt.createElement(ce,{view:!0},tt.createElement(Wt,{value:r,setValue:a,id:"widget-liquidity-source-search-input",fullWidth:!0,color:"light",variant:"contained",placeholder:io.t("Search {sourceType}",{sourceType:p[t]}),onChange:S}),e==="loading"&&tt.createElement(Kc,null),!T.length&&r?tt.createElement(Vc,null,tt.createElement(zI,{title:io.t("No results found"),description:io.t("Try using different keywords")})):e==="success"&&tt.createElement(zr,{disabled:c,className:"widget-liquidity-source-list"},T.map(y=>{let{groupTitle:k,...w}=y;return tt.createElement(tt.Fragment,{key:y.id},tt.createElement(UI,{style:{height:"61px"},...w,selected:!1,className:"widget-liquidity-source-list-item-btn",hasDivider:!0}))}))))}i(jc,"LiquiditySourcePage");import{i18n as qI}from"@lingui/core";import Ia from"react";import{useNavigate as GI}from"react-router-dom";function hy(){let t=GI(),e=Ve(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=z()(),{fetch:c,loading:l}=xa({refetchQuote:n}),p=i(f=>{r(f),a("refetchQuote",!1),e()},"onClickOnQuote"),u=`../${$.settings}`,d=`../${$.wallets}`;return Ia.createElement(se,{header:{onWallet:()=>{t(d),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:qI.t("Routes"),suffix:Ia.createElement(Go,{onClickRefresh:o||s?c:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(u),a("refetchQuote",!0)}})}},Ia.createElement(ce,null,Ia.createElement(Or,{fetch:c,loading:l,onClickOnQuote:p})))}i(hy,"RoutesPage");import{i18n as vy}from"@lingui/core";import{Divider as Ey,getCategoriesCount as tA,SelectableCategoryList as oA}from"@rango-dev/ui";import ao,{useMemo as nA,useState as by}from"react";import{useNavigate as rA}from"react-router-dom";import{i18n as Xc}from"@lingui/core";import{Divider as XI,Image as YI,ListItemButton as ZI,NotFound as JI,Typography as wy}from"@rango-dev/ui";import yt,{useEffect as RI,useState as eA}from"react";var yy=i((t,e,o)=>t.filter(n=>ii(n.type,o)).filter(n=>pt(n.name,e)||pt(n.displayName,e)),"filterBlockchains");import{ImageContainer as VI,styled as Sy}from"@rango-dev/ui";var Ty=Sy("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Aa=Sy(El,{padding:0,margin:0,listStyle:"none",[`& ${VI}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as KI,Skeleton as Cy}from"@rango-dev/ui";import Na from"react";var jI=20;function ky(){return Na.createElement(Aa,{id:"widget-blockchain-loading-list",as:"ul"},Array.from(Array(jI),t=>Na.createElement(KI,{key:t,hasDivider:!0,start:Na.createElement(Cy,{variant:"circular",width:35,height:35}),title:Na.createElement(Cy,{variant:"text",size:"large",width:90})})))}i(ky,"LoadingBlockchainList");function Yc(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,c]=eA(e),{fetchStatus:l}=C();RI(()=>{c([...yy(e,o,r)])},[e,o,r]);let p=i(()=>!s.length&&o?yt.createElement(JI,{title:Xc.t("No results found"),description:Xc.t("Try using different keywords")}):yt.createElement(Aa,{as:"ul",key:`${r}-${o}`,id:"widget-blockchain-list"},s.map(u=>yt.createElement(ZI,{key:`${u.name}-${u.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(u),start:yt.createElement(YI,{src:u.logo,size:30}),title:yt.createElement(wy,{variant:"title",size:"medium"},u.displayName),id:u.name}))),"renderList");return yt.createElement(yt.Fragment,null,a&&yt.createElement(yt.Fragment,null,yt.createElement(wy,{variant:"label",size:"large"},Xc.t("Select Chain")),yt.createElement(XI,{size:4})),yt.createElement(Ty,null,l==="loading"&&yt.createElement(ky,null),l==="success"&&p()))}i(Yc,"BlockchainList");function Wa(t){let{type:e}=t,o=Ve(),[n,r]=by(""),[a,s]=by("ALL"),c=z().use.setToBlockchain(),l=z().use.setFromBlockchain(),p=z().use.setToToken(),{fetchStatus:u,findNativeToken:d}=C(),f=rA(),{swapMode:h}=rt(),g=C().blockchains({type:e}),m=C().tokens(),S=nA(()=>du(g,m),[g.length,m.length]),T=tA(S),y=!t.hideCategory&&T!==1,k=i(w=>{if(e==="custom-token")f(`..?blockchain=${w.name}`,{replace:!0});else{if(te({type:"chainFilterApplied",payload:{side:e==="source"?"from":"to",chain:w.name,filterSource:"expanded"}}),e==="source")l(w);else if(h==="swap")c(w);else{let v=d(w);v&&p({token:v,meta:{blockchains:g}})}o()}},"handleBlockchainChange");return ao.createElement(se,{header:{title:vy.t("Select Chain")}},ao.createElement(ce,{view:!0},y&&ao.createElement(ao.Fragment,null,ao.createElement(oA,{setCategory:s,category:a,blockchains:S,isLoading:u==="loading"}),ao.createElement(Ey,{size:24})),ao.createElement(Wt,{value:n,autoFocus:!0,placeholder:vy.t("Search Chain"),id:"widget-select-blockchain-search-input",color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:w=>r(w.target.value)}),ao.createElement(Ey,{size:16}),ao.createElement(Yc,{list:S,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:k})))}i(Wa,"SelectBlockchainPage");import{i18n as Ba}from"@lingui/core";import{Divider as By,Spinner as TA}from"@rango-dev/ui";import bo,{useEffect as CA,useState as kA}from"react";import{useNavigate as wA}from"react-router-dom";import{i18n as Rc}from"@lingui/core";import{BlockchainsChip as Pa,Divider as Ny,Image as Wy,Skeleton as pA,Tooltip as uA,Typography as ep}from"@rango-dev/ui";import xe from"react";import{useEffect as sA}from"react";var xy=["ETH"];function Zc(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(iA),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(aA(s)),r=n.splice(a)}return{list:n,more:r}}i(Zc,"prepare");function iA(t,e){let o=xy,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(iA,"sortByMostUsedBlockchains");function aA(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(aA,"generateSortByPreferredBlockchainsFor");function Iy(t,e){return!!e.list.find(o=>o.name===t)}i(Iy,"isInVisibleList");function Jc(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=C();sA(()=>{if(e?.selected){let a=Zc(t,o,e);Iy(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Zc(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Jc,"usePrepareBlockchainList");import{styled as lA}from"@rango-dev/ui";var Ay=lA("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var dA=6,mA=12;function tp(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=ne(),c=Jc(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:l}=C(),p=z().use.resetToBlockchain(),u=z().use.resetFromBlockchain(),d=c.more.length>0,f=c.more[0],h=c.more.length===1&&f,g=!h&&d;return xe.createElement(xe.Fragment,null,!s&&xe.createElement(xe.Fragment,null,xe.createElement(Ny,{size:12}),xe.createElement(ep,{variant:"label",size:"large"},Rc.t("Select Chain"))),xe.createElement(Ny,{size:12}),xe.createElement(Ay,{id:"widget-blockchains-section-container"},l==="loading"&&Array.from(Array(s?dA:mA),(m,S)=>xe.createElement(pA,{key:S,variant:"rounded",height:50})),l==="success"&&xe.createElement(xe.Fragment,null,xe.createElement(Pa,{className:"widget-blockchains-section-all-btn",selected:!n,onClick:()=>{o==="from"?u():p()}},xe.createElement(ep,{variant:"body",size:"xsmall",color:"secondary500"},Rc.t("All"))),c.list.map(m=>xe.createElement(uA,{key:m.name,content:m.shortName,side:"bottom",sideOffset:2,container:W()},xe.createElement(Pa,{className:"widget-blockchains-section-item-btn",key:m.name,selected:!!n&&n.name===m.name,onClick:()=>r(m)},xe.createElement(Wy,{src:m.logo,size:30})))),h?xe.createElement(Pa,{className:"widget-blockchains-section-only-item-btn",key:f.name,selected:!!n&&n.name===f.name,onClick:()=>r(f)},xe.createElement(Wy,{src:f.logo,size:30})):null,g?xe.createElement(Pa,{onClick:a,key:"more-blockchains",className:"widget-blockchains-section-more-items-btn"},xe.createElement(ep,{variant:"body",size:"xsmall",color:"secondary500"},Rc._("More +{count}",{count:c.more.length}))):null)))}i(tp,"BlockchainsSection");import{useCallback as gA,useRef as hA,useState as op}from"react";function np(){let t=C().blockchains(),e=hA(null),{customTokens:o}=C(),[n,r]=op(!1),[a,s]=op([]),[c,l]=op(null),p=i(async(f,h)=>{l(null),r(!0),s([]);try{let g=await dt().searchCustomTokens({query:f,blockchain:h},{signal:e.current?.signal}),m=new Set(o().map(y=>jt(y))),S=new Set(t.map(y=>y.name)),T=g.tokens.filter(y=>S.has(y.blockchain)&&!m.has(jt(y)));s(T),r(!1)}catch(g){l(g instanceof Error?g.message:"something went wrong"),s([]),g?.name!=="CanceledError"&&r(!1)}},"fetch"),u=gA(ri((f,h)=>{e.current?.signal.aborted||p(f,h)},600),[t.length]);return{fetch:(f,h)=>{e.current=new AbortController,s([]),r(!0),u(f,h)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:c}}i(np,"useSearchCustomTokens");function Py(t){return t.trim()?"search":"default "}i(Py,"getTokenSelectionMethod");function La(t,e,o){return o&&t.length===1&&t[0]?.address===e?!1:t.length<20&&e.trim().length>=3}i(La,"shouldSearchForCustomTokens");function Ly(t,e,o,n,r){let a=[...t];return La(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(Ly,"prepareTokensList");function _a(t){let{type:e}=t,o=wA(),n=Ve(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:c,setFromBlockchain:l,setToBlockchain:p}=z()(),{getBalanceFor:u}=C(),{fetch:d,loading:f,tokens:h,cancel:g}=np(),[m,S]=kA(""),T=e==="source"?r:a,y=T?.name??"",k=C().blockchains({type:e}),w=C().tokens({type:e,blockchain:y,searchFor:m,getBalanceFor:u}),v=Ly(w,h,m,f,T?.name),x=i(N=>{e==="source"?l(N):p(N)},"updateBlockchain"),A=i(N=>{e==="source"?s({token:N,meta:{blockchains:k}}):c({token:N,meta:{blockchains:k}})},"updateToken"),E=e==="source"?"from":"to",I=i(N=>{te({type:"chainFilterApplied",payload:{side:E,chain:N.name,filterSource:"featured"}})},"emitChainFilterApplied"),b=i(N=>{te({type:"tokenSelected",payload:{side:E,tokenName:N.name,tokenSymbol:N.symbol,tokenAddress:N.address,chain:N.blockchain,selectionMethod:Py(m),activeChainFilter:y||"all"}})},"emitTokenSelected"),L={source:Ba.t("Source"),destination:Ba.t("Destination")};return CA(()=>(La(w,m,T?.name)&&d(m,T?.name??void 0),()=>{g()}),[w.length,m,T?.name]),bo.createElement(se,{header:{title:Ba.t("Swap {type}",{type:L[e]})}},bo.createElement(ce,null,bo.createElement(tp,{blockchains:k,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o($.blockchains),onChange:N=>{I(N),x(N)}}),bo.createElement(By,{size:24}),bo.createElement(Wt,{value:m,id:"widget-select-swap-item-search-input",autoFocus:!0,placeholder:Ba.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>S(""),onChange:N=>S(N.target.value),suffix:La(w,m,T?.name)&&f?bo.createElement(TA,{size:12,color:"secondary"}):void 0}),bo.createElement(By,{size:16}),bo.createElement(Pr,{list:v,selectedBlockchain:y,searchedFor:m,type:e,onChange:N=>{b(N),A(N);let O=k.find(q=>N.blockchain===q.name);O&&x(O),n()}})))}i(_a,"SelectSwapItemsPage");import{i18n as sp}from"@lingui/core";import{Alert as XA,Button as YA,styled as ZA}from"@rango-dev/ui";import en from"react";import{useInRouterContext as JA,useSearchParams as RA}from"react-router-dom";import{i18n as Oy}from"@lingui/core";import{Alert as xA,Divider as ip,InfoIcon as IA,SlippageIcon as AA,TextField as NA,Tooltip as WA,Typography as Uy}from"@rango-dev/ui";import Ue from"react";import{Chip as vA,styled as Qr,TextField as EA}from"@rango-dev/ui";var _y=Qr("div",{paddingTop:"$5",padding:"$10 $5"}),My=Qr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${EA}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px",paddingLeft:"$2"}}),Dy=Qr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Ma=Qr("div",{maxWidth:"280px",padding:"$10"}),$y=Qr(vA,{width:"61px",flexShrink:0});import{i18n as rp}from"@lingui/core";import{Typography as bA}from"@rango-dev/ui";import qr from"react";function Fy(){return qr.createElement(Ma,null,qr.createElement(bA,{variant:"label",size:"medium",color:"neutral700"},rp.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),qr.createElement("br",null),qr.createElement("br",null),qr.createElement("b",null,rp.t("Warning")),":\xA0",rp.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(Fy,"SlippageTooltipContent");function ap(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=C(),r=o!==null?fn(o):null,a=o??t,s=i((u,d)=>{u!==d&&te({type:"settingsChanged",payload:{setting:"slippage",previousValue:u,newValue:d}})},"emitSlippageChanged"),c=i(u=>{let d=u.target.value,f=parseFloat(d);if(isNaN(f))return n(null);let h=f;f>er&&(h=er),s(a,h),n(h)},"onSlippageValueChange"),l=i(u=>{s(a,u),o!==null&&n(null),e(u)},"onClickSlippageChip"),p=i(u=>{let d=u.target,f=d.value;Tu(f)||(d.value=f.slice(0,-1))},"onInput");return Ue.createElement(_y,null,Ue.createElement(Dy,null,Ue.createElement(AA,{size:16,color:"gray"}),Ue.createElement(ip,{direction:"horizontal",size:4}),Ue.createElement(Uy,{variant:"title",size:"xmedium"},Oy.t("Slippage tolerance per swap")),Ue.createElement(ip,{direction:"horizontal",size:4}),Ue.createElement(WA,{container:W(),side:"top",sideOffset:4,content:Ue.createElement(Fy,null)},Ue.createElement(IA,{color:"gray"}))),Ue.createElement(My,null,di.map((u,d)=>{let f=`slippage-${d}`;return Ue.createElement($y,{id:`widget-slippage-chip-${u.toString()}%-btn`,key:f,onClick:()=>l(u),selected:o===null&&u===t,label:`${u.toString()}%`})}),Ue.createElement(NA,{type:"number",min:"0.01",max:"30",step:"0.01",status:r?.type||(o?"success":"default"),id:"widget-slippage-chip-text-input",onInput:p,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:c,suffix:o&&Ue.createElement(Uy,{variant:"body",size:"small"},"%"),placeholder:Oy.t("Custom")})),r&&Ue.createElement(Ue.Fragment,null,Ue.createElement(ip,{size:10}),Ue.createElement(xA,{id:"widget-slippage-alert",variant:"alarm",type:r.type,title:r.message})))}i(ap,"Slippage");import{i18n as Et}from"@lingui/core";import{AutoThemeIcon as zy,BridgesIcon as PA,ChevronRightIcon as Da,DarkModeIcon as Hy,Divider as Gr,ExchangeIcon as LA,InfinityIcon as BA,InfoIcon as _A,LanguageIcon as MA,LightModeIcon as Qy,List as DA,ListItem as $A,ListItemButton as FA,Skeleton as OA,styled as UA,Switch as zA,Tabs as HA,TargetIcon as QA,Tooltip as qA,Typography as lt}from"@rango-dev/ui";import D from"react";import{useNavigate as GA}from"react-router-dom";var VA=UA("div",{width:"202px",height:"$40"}),KA=[{id:"light",icon:D.createElement(Qy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Light"))},{id:"dark",icon:D.createElement(Hy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Dark"))},{id:"auto",icon:D.createElement(zy,{color:"black",size:24}),tooltip:D.createElement(lt,{size:"xsmall",variant:"body"},Et.t("Auto"))}],jA=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return D.createElement(zy,{...e});case"dark":return D.createElement(Hy,{...e});default:return D.createElement(Qy,{...e})}},"getThemeIcon");function qy(){let t=GA(),{theme:e}=C().config,{setTheme:o,theme:n}=C(),{activeLanguage:r,languages:a}=Eo(),s=a.find(P=>P.local===r)?.label,c=C().fetchStatus,l=C().swappers(),p=C().getDisabledLiquiditySources(),{config:{features:u}}=C(),d=C().customTokens(),f=nt("theme",u),h=nt("liquiditySource",u),g=nt("language",u),m=nt("customTokens",u),S=C().infiniteApprove,T=C().toggleInfiniteApprove,y=hi(l,p),k=y.filter(P=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(P.type)),w=k.length,v=k.filter(P=>P.selected).length,x=y.filter(P=>P.type==="DEX"),A=x.length,E=x.filter(P=>P.selected).length,I=i((P,Z)=>{switch(c){case"loading":return D.createElement(OA,{variant:"text",size:"medium",width:50});case"failed":return D.createElement(lt,{variant:"body",size:"medium",color:"$error500"},Et.t("Loading failed"));default:return D.createElement(lt,{variant:"body",size:"medium"},`${P} / ${Z}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Bridges")),end:D.createElement(D.Fragment,null,I(v,w),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),onClick:()=>t($.bridges),start:D.createElement(PA,{color:"gray",size:16})},L={id:"widget-setting-exchange-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Exchanges")),end:D.createElement(D.Fragment,null,I(E,A),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),start:D.createElement(LA,{color:"gray",size:16}),onClick:()=>t($.exchanges)},N={id:"widget-setting-custom-tokens-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Custom Tokens")),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},`${d.length}`),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),start:D.createElement(QA,{color:"gray",size:16}),onClick:()=>t($.customTokens)},O={id:"widget-setting-language-item-btn",title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Language")),start:D.createElement(MA,{color:"gray",size:16}),end:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"body",size:"medium"},s),D.createElement(Gr,{direction:"horizontal",size:8}),D.createElement(Da,{color:"black"})),onClick:()=>t($.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:D.createElement(D.Fragment,null,D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Infinite approval")),D.createElement(Gr,{direction:"horizontal",size:4}),D.createElement(qA,{side:"top",sideOffset:4,container:W(),content:D.createElement(Ma,null,D.createElement(lt,{variant:"label",size:"medium",color:"neutral700"},D.createElement("b",null,Et.t("Warning")),":\xA0",Et.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(_A,{color:"gray"}))),start:D.createElement(BA,{color:"gray",size:16}),end:D.createElement(zA,{checked:S}),onClick:()=>{te({type:"settingsChanged",payload:{setting:"infiniteApproval",previousValue:S,newValue:!S}}),T()}},j={id:"widget-setting-theme-item-btn",type:D.createElement($A,null),title:D.createElement(lt,{variant:"title",size:"xmedium"},Et.t("Theme")),end:D.createElement(VA,null,D.createElement(HA,{container:W(),items:KA,value:n,className:"widget-setting-theme-item-tabs-container",onChange:P=>o(P.id),type:"primary",borderRadius:"small"})),start:jA(n)},ee=h?[]:[b,L];return m||ee.push(N),g||ee.push(O),ee.push(q),!e?.singleTheme&&!f&&ee.push(j),D.createElement(DA,{type:D.createElement(FA,{className:"widget-settings-list-item-btn",hasDivider:!0,id:"_",onClick:()=>console.log()}),items:ee})}i(qy,"SettingsLists");var eN=ZA("div",{paddingLeft:"$8"});function Gy(){let{isInCampaignMode:t,updateCampaignMode:e}=C(),o=t(),[,n]=RA(),r=JA(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return en.createElement(se,{header:{title:sp.t("Settings")}},en.createElement(ce,null,o&&en.createElement(XA,{type:"info",variant:"alarm",id:"widget-settings-campaign-mode-alert",title:sp.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:en.createElement(eN,null,en.createElement(YA,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},sp.t("Reset")))}),en.createElement(ap,null),en.createElement(qy,null)))}i(Gy,"SettingsPage");import{i18n as p0}from"@lingui/core";import{cancelSwap as u0}from"@rango-dev/queue-manager-rango-preset";import{useManager as d0}from"@rango-dev/queue-manager-react";import{Alert as m0}from"@rango-dev/ui";import Ep from"react";import{useParams as f0}from"react-router-dom";import{i18n as Ht}from"@lingui/core";import{getCurrentNamespaceOfOrNull as YN,getCurrentStep as ZN,getRelatedWalletOrNull as JN}from"@rango-dev/queue-manager-rango-preset";import{Button as OS,Divider as RN,QuoteCost as e0,StepDetails as t0,Typography as Sp}from"@rango-dev/ui";import{useWallets as o0}from"@rango-dev/wallets-react";import US from"bignumber.js";import{PendingSwapNetworkStatus as Hn}from"rango-types";import we,{useEffect as Tp,useRef as Cp,useState as Ga}from"react";import{useNavigate as n0}from"react-router-dom";import{i18n as xo}from"@lingui/core";var tN=[xo.t("Sunday"),xo.t("Monday"),xo.t("Tuesday"),xo.t("Wednesday"),xo.t("Thursday"),xo.t("Friday"),xo.t("Saturday")];function Vy(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?xo.t("Today"):`${tN[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(Vy,"timeSince");function Ky(t){return t.finishTime?Vy(parseInt(t.finishTime)):Vy(parseInt(t.creationTime))}i(Ky,"getSwapDate");import Vr from"react";import{i18n as $a}from"@lingui/core";import{Button as jy,Divider as lp,MessageBox as oN}from"@rango-dev/ui";import Io from"react";var Xy=i(({onCancel:t,onClose:e})=>Io.createElement(Io.Fragment,null,Io.createElement(lp,{size:20}),Io.createElement(oN,{type:"error",title:$a.t("Cancel Swap"),description:$a.t("Are you sure you want to cancel this swap?")}),Io.createElement(lp,{size:32}),Io.createElement(jy,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},$a.t("Yes, Cancel it")),Io.createElement(lp,{size:12}),Io.createElement(jy,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},$a.t("No, Continue"))),"CancelContent");import{i18n as Fa}from"@lingui/core";import{Button as Yy,Divider as cp,MessageBox as nN,Typography as rN}from"@rango-dev/ui";import so from"react";var Zy=i(({onDelete:t,onClose:e})=>so.createElement(so.Fragment,null,so.createElement(cp,{size:20}),so.createElement(nN,{type:"error",title:Fa.t("Delete Transaction"),description:Fa.t("Are you sure you want to delete this swap?")}),so.createElement(cp,{size:32}),so.createElement(Yy,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Fa.t("Yes, Delete it")),so.createElement(cp,{size:12}),so.createElement(Yy,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},so.createElement(rN,{variant:"title",size:"medium",color:"primary"},Fa.t("No, Cancel")))),"DeleteContent");import{i18n as iN}from"@lingui/core";import{Button as aN,Divider as sN,MessageBox as lN}from"@rango-dev/ui";import tn from"react";var Jy=i(t=>{let{switchNetworkModalState:e,handleSwitchNetwork:o}=t;return tn.createElement(tn.Fragment,null,tn.createElement(lN,{type:e.type,title:e.title,description:e.description}),e.type==="error"&&tn.createElement(tn.Fragment,null,tn.createElement(sN,{size:"30"}),tn.createElement(aN,{id:"widget-switch-network-try-again",type:"primary",size:"large",onClick:o},iN.t("Try Again"))))},"NetworkStateContent");import{getCurrentNamespaceOfOrNull as xN,getCurrentStep as IN,getRelatedWalletOrNull as AN}from"@rango-dev/queue-manager-rango-preset";import{WalletState as NN}from"@rango-dev/ui";import{useWallets as WN}from"@rango-dev/wallets-react";import iS from"react";import{i18n as Un}from"@lingui/core";import{Alert as tS,Button as uN,Checkbox as dN,Divider as za,Image as mN,MessageBox as fN,Spinner as gN,WarningIcon as hN}from"@rango-dev/ui";import{useWallets as yN}from"@rango-dev/wallets-react";import Te,{useState as SN}from"react";import{css as cN,darkTheme as pN,styled as pp}from"@rango-dev/ui";var Ry=cN({wordWrap:"break-word",display:"block"}),eS=pp("img",{width:"100%"}),Oa=pp("div",{position:"relative"}),Ua=pp("span",{position:"absolute",top:0,right:0,borderRadius:"50%",width:"14px",height:"14px",display:"flex",padding:"$2",backgroundColor:"$warning300",[`.${pN} &`]:{$$color:"$warning600"}});var oS=i(t=>{let{wallet:e,namespace:o,onClose:n}=t,[r,a]=SN(null),{list:s}=bt(),c=ne.use.isActiveTab(),{state:l,connect:p}=yN(),u=s.find(v=>v.type===e.walletType),d=u?.needsNamespace?.data.find(v=>v.value===o?.namespace);if(!u)return null;let f=l(e.walletType),h=u.isHub&&o?.namespace?f.namespaces?.get(o.namespace):null,g=f.connecting||h?.connecting,m=u.isHub?h?.connected:f.connected,S=i(()=>m?Un.t("Done"):r?Un.t("Try again"):Un.t("Connect"),"getButtonTitle"),T=i(()=>g?Te.createElement(gN,{color:"info"}):r||m?null:Te.createElement(dN,{checked:!0,disabled:!0}),"getNamespaceSuffix"),y=i(async()=>{try{a(null),await p(u.type,o?.namespace?[{namespace:o?.namespace,network:void 0,derivationPath:e.derivationPath}]:void 0)}catch(v){a(v)}},"handleConnect"),k=i(async()=>{if(m){n();return}y()},"handleClickButton"),w=i(()=>{if(!m)return null;let v=u?.isHub?h?.accounts?.[0]?.split(":"):f?.accounts?.[0]?.split(":"),x=v?.[v?.length-1];return x?po(x):null},"getAddress");return Te.createElement(Te.Fragment,null,Te.createElement(fN,{type:"warning",title:Un.t("Connect {wallet}",{wallet:u.title}),description:Un.t("The connection of your wallet or some networks has been disconnected. Connect to continue the swap"),icon:Te.createElement(Oa,null,Te.createElement(mN,{src:u.image,size:45}),Te.createElement(Ua,null,Te.createElement(hN,{color:"warning",size:10})))}),m&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:10}),Te.createElement(tS,{type:"success",variant:"alarm",title:Un.t("Wallet connected successfully.")})),r&&!d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:10}),Te.createElement(tS,{type:"error",title:r?.message,variant:"alarm"})),d&&Te.createElement(Te.Fragment,null,Te.createElement(za,{size:30}),Te.createElement(Fo,{namespace:d,suffix:T(),error:r?.message,connected:m,address:w()})),Te.createElement(za,{size:"40"}),Te.createElement(uN,{loading:g,type:"primary",id:"widget-connect-wallet-btn",onClick:k,disabled:!c},S()))},"ConnectWalletContent");import{i18n as nS}from"@lingui/core";import{Button as TN,Divider as CN,Image as kN,MessageBox as wN,WarningIcon as vN}from"@rango-dev/ui";import{useWallets as EN}from"@rango-dev/wallets-react";import{detectInstallLink as bN}from"@rango-dev/wallets-shared";import lo from"react";var rS=i(t=>{let{walletType:e}=t,{getWalletInfo:o}=EN(),n=e?o(e):null;if(!n)return null;let r=i(()=>window.open(bN(n.installLink),"_blank"),"handleButtonClick");return lo.createElement(lo.Fragment,null,lo.createElement(wN,{type:"warning",title:nS.t("Install {wallet}",{wallet:n.name}),description:"Your wallet is not installed. Please install it to continue the swap. ",icon:lo.createElement(Oa,null,lo.createElement(kN,{src:n.img,size:45}),lo.createElement(Ua,null,lo.createElement(vN,{color:"warning",size:10})))}),lo.createElement(CN,{size:"40"}),lo.createElement(TN,{type:"primary",id:"widget-install-wallet-btn",onClick:r},nS.t("Install")))},"InstallWalletContent");var aS=i(t=>{let{swap:e,onClose:o}=t,{state:n,getWalletInfo:r}=WN(),a=IN(e),s=a?AN(e,a):null,c=s?.walletType,l=c?Zn(r(c),n(c)):null,p=a?xN(e,a):null;return c?l===NN.NOT_INSTALLED?iS.createElement(rS,{walletType:c}):iS.createElement(oS,{wallet:s,namespace:p,onClose:o}):null},"WalletStateContent");function up(t){let{isOpen:e,state:o,switchNetworkModalState:n,onClose:r,onDelete:a,onCancel:s,swap:c,message:l,handleSwitchNetwork:p}=t;return Vr.createElement(re,{open:e,onClose:r,container:W()},o==="connectWallet"&&Vr.createElement(aS,{swap:c,message:l,onClose:r}),o==="switchNetwork"&&n&&Vr.createElement(Jy,{message:l,switchNetworkModalState:n,handleSwitchNetwork:p}),o==="delete"&&Vr.createElement(Zy,{onClose:r,onDelete:()=>{r(),a()}}),o==="cancel"&&Vr.createElement(Xy,{onClose:r,onCancel:()=>{r(),s()}}))}i(up,"SwapDetailsModal");import{i18n as Kr}from"@lingui/core";import{Button as dp,Divider as jr,MessageBox as cS,TokenAmount as PN,Typography as pS}from"@rango-dev/ui";import ke from"react";import{Link as LN,useNavigate as BN}from"react-router-dom";var sS="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",lS="/profile";function mp(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:c,token:l,chain:p,percentageChange:u,description:d,diagnosisUrl:f}=t,h=BN(),{showProfileBanner:g}=ne();return ke.createElement(re,{open:e,onClose:o,id:"widget-swap-details-complete-modal",container:document.getElementById(kt.SWAP_BOX_ID)||document.body},n==="success"?ke.createElement(cS,{type:"success",title:Kr.t("Swap Successful")},ke.createElement(PN,{direction:"vertical",tooltipContainer:W(),id:"widget-swap-details-complete-modal-success-token-amount-container",type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:c},token:l,chain:p,percentageChange:u}),ke.createElement(jr,{size:12}),ke.createElement(pS,{className:Ry(),variant:"body",size:"medium",color:"neutral700",align:"center"},d)):ke.createElement(cS,{type:"error",title:Kr.t("Transaction Failed"),description:d}),ke.createElement(jr,{size:30}),n==="success"&&ke.createElement(ke.Fragment,null,g&&ke.createElement(ke.Fragment,null,ke.createElement(LN,{to:lS},ke.createElement(eS,{src:sS,alt:"Profile Banner"})),ke.createElement(jr,{size:30})),ke.createElement(dp,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{h("../../")}},Kr.t("Done"))),ke.createElement(jr,{size:12}),f&&ke.createElement(ke.Fragment,null,ke.createElement(dp,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(f,"_blank")},Kr.t("Diagnosis")),ke.createElement(jr,{size:12})),ke.createElement(dp,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ke.createElement(pS,{variant:"title",size:"medium",color:"primary"},Kr.t("See Details"))))}i(mp,"SwapDetailsCompleteModal");import{i18n as qa}from"@lingui/core";import{CopyIcon as GN,DoneIcon as VN,IconButton as KN,RangoExplorerIcon as jN,Tooltip as BS,Typography as _S,useCopyToClipboard as XN}from"@rango-dev/ui";import Lt from"react";import qN from"react";import{i18n as UN}from"@lingui/core";import{Alert as NS,IconButton as zN,LinkIcon as HN}from"@rango-dev/ui";import Ao,{Fragment as QN}from"react";import{Alert as MN,ChevronDownIcon as DN,IconButton as $N}from"@rango-dev/ui";import zn,{useState as FN}from"react";import{css as Xr,darkTheme as uS,styled as zt,Typography as _N}from"@rango-dev/ui";var dS=zt(ce,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${uS} &`]:{color:"$secondary500"}}}}}),mS=zt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),fS=zt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),gS=zt("div",{padding:"$0 $20 $20 $20"}),yY=zt("div",{display:"flex",flexDirection:"column",gap:"$10"}),hS=zt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),SY=zt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),on=Xr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${uS} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),yS=Xr({padding:"$5 0"}),Ha=Xr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),SS=Xr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),TS=Xr({width:"100%",padding:"0 $20 $10"}),CS=zt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),kS=zt("div",{display:"flex",flexDirection:"column",gap:"$5"}),Qa=zt(_N,{wordBreak:"break-word"});import{styled as fp}from"@rango-dev/ui";var wS=fp("div",{display:"flex",flexDirection:"column",gap:"$10"}),vS=fp("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),ES=fp("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function bS(t){let{message:e}=t,[o,n]=FN(!1);return zn.createElement(MN,{id:"widget-failed-swap-details-alert",type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&zn.createElement($N,{id:"widget-swap-details-failed-btn",onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},zn.createElement(vS,{rotated:o},zn.createElement(DN,{size:12,color:"gray"}))),footer:zn.createElement(ES,{open:o},zn.createElement(Qa,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(bS,"FailedAlert");import{i18n as xS}from"@lingui/core";import{Alert as gp,Button as IS}from"@rango-dev/ui";import{PendingSwapNetworkStatus as ON}from"rango-types";import Yr from"react";function AS(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,setNetworkModal:n,message:r,showNetworkModal:a}=t;return e?Yr.createElement(gp,{type:"warning",id:"widget-swap-details-change-network-alert",title:r.shortMessage,action:Yr.createElement(IS,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{n("switchNetwork"),o()}},xS.t("Change"))}):a===ON.WaitingForConnectingWallet?Yr.createElement(gp,{type:"warning",title:r.shortMessage,id:"widget-swap-details-warning-alert-connect-wallet-alert",action:Yr.createElement(IS,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{n("connectWallet")}},xS.t("Connect"))}):Yr.createElement(gp,{id:"widget-swap-details-short-alert",type:"warning",title:r.shortMessage})}i(AS,"WarningAlert");function hp(t){let{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a,step:s,hasAlreadyProceededToSign:c}=t,l=mr(s),p=s.status==="waitingForApproval"&&!l,u=s.status==="running"&&!l,d=u&&!c||p&&!s.explorerUrl?.length;return Ao.createElement(wS,null,s.explorerUrl?.map((f,h,g)=>{let m=h+f.url,S=h===g.length-1,T=(S&&u||p)&&!d,y=S&&s.status==="failed";return Ao.createElement(QN,{key:m},Ao.createElement(NS,{id:"widget-swap-details-tx-alert",type:S&&(T&&"loading"||y&&"error")||"success",title:f.description?`${f.description} Tx`:UN.t("View transaction"),action:f.url&&Ao.createElement(zN,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(f.url,"_blank")},Ao.createElement(HN,{size:12}))}))}),d&&Ao.createElement(NS,{id:"widget-swap-details-loading-alert",type:"loading",title:a.shortMessage}),s.status!=="failed"&&l&&Ao.createElement(AS,{switchNetworkIsAvailable:e,handleSwitchNetworkClick:o,showNetworkModal:n,setNetworkModal:r,message:a}),s.status==="failed"&&Ao.createElement(bS,{message:a}))}i(hp,"SwapDetailsAlerts");var WS=2e3;var PS=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:Tt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:M(c,6,6),realValue:c??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:Tt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:M(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:Kn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(l=>({from:{chain:{displayName:Tt(l.fromBlockchain,e)??"",image:l.fromBlockchainLogo??""}},to:{chain:{displayName:Tt(l.toBlockchain,e)??"",image:l.toBlockchainLogo??""}},swapper:{displayName:Kn(l.swapperId,o)??"",image:l.swapperLogo??"",type:l.swapperType}})):[],alerts:qN.createElement(hp,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function LS(t){if(mr(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(LS,"getStepState");function MS(t){let{requestId:e}=t,[o,n]=XN(WS);return Lt.createElement(fS,{className:on()},Lt.createElement(_S,{variant:"label",size:"large",color:"neutral700"},qa.t("Request ID")),Lt.createElement("div",{className:Ha()},Lt.createElement(_S,{variant:"label",size:"small",color:"neutral700"},e),Lt.createElement(BS,{container:W(),content:o?qa.t("Copied To Clipboard"):qa.t("Copy Request ID"),open:o||void 0,side:"bottom",alignOffset:-16,align:"end"},Lt.createElement(KN,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:n.bind(null,e||"")},o?Lt.createElement(VN,{size:16,color:"secondary"}):Lt.createElement(GN,{size:16,color:"gray"}))),Lt.createElement(CS,{target:"_blank",href:`${tu}/swap/${e}`},Lt.createElement(BS,{container:W(),content:qa.t("View on Rango Explorer"),side:"bottom"},Lt.createElement(jN,{size:20})))))}i(MS,"RequestIdRow");import{i18n as DS}from"@lingui/core";import{Typography as $S}from"@rango-dev/ui";import yp from"react";function FS(t){let{date:e,isFinished:o}=t;return yp.createElement("div",{className:on()},yp.createElement($S,{variant:"label",size:"large",color:"neutral700"},o?DS.t("Finished at"):DS.t("Created at")),yp.createElement($S,{variant:"label",size:"small",color:"neutral700"},e))}i(FS,"SwapDateRow");var r0=3e3;function kp(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:c}=o0(),l=C().blockchains(),p=C().swappers(),{findToken:u}=C(),d=z().use.retry(),f=n0(),h=Cp(null),[g,m]=Ga(!1),[S,T]=Ga(null),[y,k]=Ga(null),[w,v]=Ga(null),x=Cp(S),A=Cp(y),E=We.use.getNotifications(),I=We.use.removeNotification(),b=E(),L=ZN(e),N=L?.networkStatus,O=i(Be=>{m(!0),T(Be)},"handleChangeModalState"),q=i(()=>{m(!1)},"handleCloseModal"),j=i(()=>{k({type:"loading",title:Ht.t("Change Network"),description:`We\u2019re switching the connected network to ${Y?.network}. Please check your wallet.`})},"handleShowSwitchNetworkLoading"),ee=i(()=>{k({type:"success",title:Ht.t("Network Changed"),description:"The network has been successfully changed."})},"handleShowSwitchNetworkSucceeded"),P=i(Be=>{k({type:"error",title:Ht.t("Network Switch Failed"),description:Be?.message||H.detailedMessage.content})},"handleShowSwitchNetworkFailed"),Z=Yd(e),Y=L?YN(e,L):null,ue=L?JN(e,L):null,Ee=Ky(e),Gt=Zd(e),be=i(Be=>!!c(Be)?.mobileWallet,"checkIsMobileWallet"),He=!!N&&[Hn.WaitingForNetworkChange,Hn.NetworkChangeFailed].includes(N),Xe=!!ue?.walletType&&be(ue.walletType),St=!!ue&&!!Y&&a(ue.walletType,Y.network,Y),ct=!!Y&&He&&(Xe||St),B=i(()=>{ct&&(j(),s(ue.walletType,[{namespace:Y.namespace,network:Y.network}]).then(()=>{ee()}).catch(Be=>{P(Be)}))},"handleSwitchNetwork"),V=i(()=>{O("switchNetwork"),B()},"handleSwitchNetworkClick"),H=Xd(e,L,c),X=PS({swap:e,switchNetworkIsAvailable:ct,handleSwitchNetworkClick:V,showNetworkModal:N,setNetworkModal:O,message:H,blockchains:l,swappers:p}),G=X.length,[J,U]=[e.steps[0],e.steps[G-1]],de=U?.outputAmount||U?.expectedOutputAmountHumanReadable,Qe=e.steps.reduce((Be,Bt)=>Be+parseFloat(Bt.feeInUsd||""),0),ot=e.steps.find(Be=>Be.diagnosisUrl)?.diagnosisUrl,co=M(parseFloat(de||"0")*(U?.toUsdPrice||0),4,4),Gn=M(parseFloat(e.inputAmount)*(J?.fromUsdPrice||0),4,4),No=de?new US(de).multipliedBy(U.toUsdPrice||0).toString():"",Rr=new US(e.inputAmount).multipliedBy(J?.fromUsdPrice||0).toString(),rn=Yt(Gn,co),os=H.detailedMessage.content||H.shortMessage,kT=e.status==="success"?Ht.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:M(de,6,6),token:X[G-1]?.to.token.displayName,conciseAddress:po(e.wallets[X[G-1]?.to.chain.displayName||""]?.address||""),chain:X[G-1]?.to.chain.displayName}}):we.createElement(kS,null,we.createElement(Sp,{variant:"body",size:"medium",color:"neutral700",align:"center"},os?"":Ht.t("Transaction was not sent."),Z?`${Ht.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:Z.outputAmount,symbol:Z.symbol,blockchain:Z.blockchain}})}`:""),os&&we.createElement(Qa,{align:"center",variant:"body",size:"medium",color:"neutral700"},we.createElement("b",null,"Reason:")," ",os));return Tp(()=>{b.find(Bt=>Bt.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),I(e.requestId),q()):w&&v(null))},[e.status,e.requestId]),Tp(()=>{if(ct){if(O("switchNetwork"),N===Hn.WaitingForNetworkChange){j();return}if(N===Hn.NetworkChangeFailed){P();return}return}if(N===Hn.WaitingForConnectingWallet){O("connectWallet");return}if(N===Hn.NetworkChanged){O("switchNetwork"),ee();return}S&&["connectWallet","switchNetwork"].includes(S)&&q()},[N]),Tp(()=>{if(x.current=S,A.current=y,S==="switchNetwork"&&y?.type==="success"){let Be=setTimeout(()=>{x.current==="switchNetwork"&&A.current?.type==="success"&&q()},r0);return()=>clearTimeout(Be)}},[S,y]),we.createElement(se,{header:{title:Ht.t("Swap Details"),onCancel:e.status==="running"?()=>O("cancel"):void 0,suffix:e.status!=="running"&&we.createElement(ho,null,we.createElement(OS,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>O("delete")},we.createElement(Sp,{size:"medium",variant:"label",color:"error"},Ht.t("Delete"))))},footer:Gt&&!w&&we.createElement(OS,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{te({type:"swapRetried",payload:{routeId:e.requestId}});let Be=Ai(e,l,u);d(Be),setTimeout(()=>{f("../../")},0)}},Ht.t("Try again"))},we.createElement(dS,{compact:!0,ref:h},we.createElement(MS,{requestId:o}),we.createElement(FS,{date:Ee,isFinished:!!e.finishTime}),we.createElement("div",{className:SS()},we.createElement(e0,{fee:M(String(Qe),2,2),time:Xn(si(e.steps)),steps:G}),we.createElement(kr,{from:{price:{value:M(e.inputAmount,6,6),usdValue:Gn,realUsdValue:Rr,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:M(de,6,6),usdValue:co,realUsdValue:No,realValue:de||""},token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image,displayName:X[G-1]?.to.chain.displayName||""}},percentageChange:M(rn,2,2),warningLevel:Zt(rn??0)})),we.createElement("div",{className:TS()},we.createElement(Sp,{variant:"title",size:"small"},Ht.t("Swaps steps"))),we.createElement(RN,{size:8}),we.createElement(gS,null,X.map((Be,Bt)=>{let _p=Bt,Vn=e.steps[Bt]&&LS(e.steps[Bt]),wT=Vn==="error"||Vn==="in-progress"||Vn==="warning"||Vn==="completed"&&Bt===X.length-1;return we.createElement(t0,{className:"widget-swap-details-step-item-container",key:_p,step:Be,type:"swap-progress",ref:h,state:Vn,hasSeparator:Bt!==0,tabIndex:_p,isFocused:wT,tooltipContainer:W()})}))),we.createElement(up,{isOpen:g,state:S,switchNetworkModalState:y,onClose:q,onCancel:r,onDelete:n,message:H.detailedMessage.content,swap:e,handleSwitchNetwork:V}),we.createElement(mp,{open:!!w,diagnosisUrl:ot,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:M(de,6,6),usdValue:co,realUsdValue:No,realValue:de||"",percentageChange:M(rn,2,2),token:{displayName:X[G-1]?.to.token.displayName||"",image:X[G-1]?.to.token.image},chain:{image:X[G-1]?.to.chain.image},description:kT}))}i(kp,"SwapDetails");import{i18n as Ka}from"@lingui/core";import{Divider as QS,NotFound as c0,Skeleton as Jr,Typography as ja}from"@rango-dev/ui";import Ae from"react";import{i18n as i0}from"@lingui/core";import{Divider as a0,Skeleton as s0,Typography as l0}from"@rango-dev/ui";import Ie from"react";import{css as Qt,styled as wp}from"@rango-dev/ui";var zS=wp("div",{width:"100%",height:"100%",padding:"$10 $20"}),Zr=wp("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),Va=wp("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),K7=Qt({display:"flex",justifyContent:"space-between",alignItems:"center"}),j7=Qt({paddingTop:"$15",display:"flex"}),X7=Qt({padding:"$15 $0"}),Y7=Qt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),Z7=Qt({paddingBottom:"$10"}),J7=Qt({display:"flex",justifyContent:"start",alignItems:"center"}),R7=Qt({paddingTop:"$5",display:"flex",alignItems:"center"}),e9=Qt({display:"flex",alignItems:"center"}),t9=Qt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),HS=Qt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function vp(){return Ie.createElement(zS,null,Ie.createElement(Er,{type:"swap-preview"}),Ie.createElement("div",{className:"swaps-steps"},Ie.createElement(l0,{variant:"title",size:"small"},i0.t("Swaps steps"))),Ie.createElement(Ie.Fragment,null,Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1}),Ie.createElement("div",{className:HS()},Ie.createElement(a0,{direction:"horizontal",size:20}),Ie.createElement(s0,{height:22,variant:"rectangular"}))),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1})),Ie.createElement(Va,null),Ie.createElement(Zr,null,Ie.createElement(Ot,{separator:!1}))))}i(vp,"LoadingSwapDetails");function qS(t){let{requestId:e,showSkeleton:o}=t;return Ae.createElement(se,{header:{title:Ka.t("Swap Details"),suffix:Ae.createElement(ho,null)}},o&&Ae.createElement(mS,null,Ae.createElement("div",{className:on()},Ae.createElement(ja,{variant:"label",size:"large",color:"neutral700"},`${Ka.t("Request ID")}`),Ae.createElement("div",{className:Ha()},Ae.createElement(ja,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"})),Ae.createElement(QS,{direction:"horizontal",size:4}),Ae.createElement(Jr,{width:16,height:16,variant:"rectangular"}),Ae.createElement(QS,{direction:"horizontal",size:4}),Ae.createElement(Jr,{width:16,height:16,variant:"rectangular"}))),Ae.createElement("div",{className:on()},Ae.createElement(ja,{className:yS(),variant:"label",size:"large",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"})),Ae.createElement(ja,{variant:"label",size:"small",color:"neutral700"},Ae.createElement(Jr,{width:60,height:10,variant:"rounded"}))),Ae.createElement(vp,null)),!o&&Ae.createElement(hS,null,Ae.createElement(c0,{title:Ka.t("Not found"),description:Ka.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(qS,"SwapDetailsPlaceholder");function GS(){let{manager:t,state:e}=d0(),o=!e.loadedFromPersistor,n=vt(t),{requestId:r}=f0(),a=Ve(),{fetchStatus:s}=C();if(!r)return Ep.createElement(m0,{containerStyles:{margin:"20px"},type:"error",title:p0.t("The request ID is necessary to display the swap details.")});let c=o||s==="loading",l=r?n.find(({swap:f})=>f.requestId===r):void 0,p=i(()=>{if(l?.id){let f=t?.get(l.id);f&&(te({type:"swapCancelled",payload:{routeId:r}}),u0(f))}},"onCancel"),u=i(async()=>{if(l?.id)try{t?.deleteQueue(l.id),a()}catch(f){console.log(f)}},"onDelete"),d=l?.swap;return!d||c?Ep.createElement(qS,{requestId:r,showSkeleton:c}):Ep.createElement(kp,{swap:d,requestId:r,onCancel:p,onDelete:u})}i(GS,"SwapDetailsPage");import{i18n as VS}from"@lingui/core";import{Divider as g0,getCategoriesCount as h0,SelectableCategoryList as y0,styled as jS,Typography as S0,Wallet as T0}from"@rango-dev/ui";import qt,{useState as KS}from"react";var C0=jS("div",{display:"flex",justifyContent:"center",alignItems:"center",columnGap:"$5",rowGap:"$10",flexWrap:"wrap",paddingTop:"$5"}),k0=jS(ce,{textAlign:"center"});function XS(){let{fetchStatus:t}=C(),[e,o]=KS("ALL"),n=C().blockchains(),{config:r}=C(),[a,s]=KS(),c=ne.use.isActiveTab(),{list:l}=bt(),p=Nu(l,n),d=h0(p)!==1,f=Wu(l,e),h=i(g=>{pu(l,r.multiWallets)||s(g)},"handleWalletItemClick");return qt.createElement(se,{header:{title:VS.t("Connect Wallets")}},qt.createElement(k0,null,d&&qt.createElement(qt.Fragment,null,qt.createElement(y0,{setCategory:o,category:e,blockchains:p,isLoading:t==="loading"}),qt.createElement(g0,{size:24})),qt.createElement(S0,{variant:"title",size:"xmedium",align:"center"},VS.t("Choose a wallet to connect.")),qt.createElement(C0,null,f.map((g,m)=>{let S=`wallet-${m}-${g.type}`;return qt.createElement(T0,{key:S,...g,state:g.state,container:W(),onClick:()=>h(g),isLoading:t==="loading",disabled:!c})}),qt.createElement(ur,{id:"widget-state-full-connect-modal",wallet:a,onClose:()=>{s(void 0)}}))))}i(XS,"WalletsPage");function YS(){return lm(),Ys(),w0([{path:$.home,element:ze.createElement(uy,null)},{path:$.routes,element:ze.createElement(hy,null)},{path:$.fromSwap,children:[{index:!0,element:ze.createElement(_a,{type:"source"})},{path:$.blockchains,element:ze.createElement(Wa,{type:"source"})}]},{path:$.toSwap,children:[{index:!0,element:ze.createElement(_a,{type:"destination"})},{path:$.blockchains,element:ze.createElement(Wa,{type:"destination"})}]},{path:$.settings,children:[{index:!0,element:ze.createElement(Gy,null)},{path:$.languages,element:ze.createElement(my,null)},{path:$.exchanges,element:ze.createElement(jc,{sourceType:"Exchanges"})},{path:$.bridges,element:ze.createElement(jc,{sourceType:"Bridges"})},{path:$.customTokens,children:[{index:!0,element:ze.createElement(mh,null)},{path:$.addCustomTokens,children:[{index:!0,element:ze.createElement(af,null)},{path:$.blockchains,element:ze.createElement(Wa,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:$.swaps,children:[{index:!0,element:ze.createElement(Bh,null)},{path:$.swapDetails,element:ze.createElement(GS,null)}]},{path:$.wallets,element:ze.createElement(XS,null)},{path:$.confirmSwap,element:ze.createElement(Zg,null)}])}i(YS,"AppRoutes");import{useQueueManager as U0}from"@rango-dev/queue-manager-rango-preset";import{isEvmBlockchain as z0}from"rango-sdk";import{useContext as H0,useEffect as Ap,useState as cT}from"react";import{Provider as A0}from"@rango-dev/wallets-react";import{WalletTypes as tT}from"@rango-dev/wallets-shared";import Xa,{createContext as N0,useEffect as oT,useMemo as W0,useRef as nT}from"react";import{useEffect as E0}from"react";import{Provider as v0}from"@hub3js/core";function ZS(t){return t.map(e=>typeof e=="string"?e:e instanceof v0?e.id:e.config.type).join("-")}i(ZS,"hashProviders");function bp(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=C(),a=n();return E0(()=>{o(),r()},[ZS(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(bp,"useWalletProviders");import{legacyFormatAddressWithNetwork as b0,legacyReadAccountAddress as JS}from"@rango-dev/wallets-core/legacy";import{Events as Qn}from"@rango-dev/wallets-react";import{isEvmBlockchain as x0}from"rango-sdk";function RS(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=C(),{onConnectWalletHandler:c,onDisconnectWalletHandler:l}=t,p=s().filter(x0).map(m=>m.name),u=i((m,S)=>{let[T,,y,k,w]=m,v={walletType:T,network:k.network??void 0,accounts:y};c.current?c.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?");let x=fs(T,y,p,S.supportedChainNames,w.isContractWallet);x.length&&e(x,w.namespace,k.derivationPath,{walletName:T})},"onAccountsEvent"),d=i((m,S,T,y,k)=>{if(S===Qn.ACCOUNTS){let w=Jn(k.supportedBlockchains);T&&u([m,S,T,y,k],{supportedChainNames:w})}S===Qn.PROVIDER_DISCONNECTED&&(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),S===Qn.NAMESPACE_DISCONNECTED&&n(m,T)},"handleUpdatesForHub"),f=i((m,S,T,y,k)=>{if(S===Qn.ACCOUNTS){let w=Jn(k.supportedBlockchains),v=[],x=[];if(T?.forEach(E=>{let{network:I}=JS(E);p.includes(I)?v.push(E):x.push(E)}),r.filter(E=>E.walletType===m).map(E=>b0(E.address,E.chain)).length>0){if(v.length>0){let E=fs(m,v,p,w,k.isContractWallet);a(m,{chains:E.map(I=>I.chain)})}x.length>0&&a(m,{chains:x.map(E=>{let{network:I}=JS(E);return I})})}T?u([m,S,T,y,k],{supportedChainNames:w}):(o(m),l.current?l.current(m):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}},"handleUpdatesForLegacy"),h=i((m,S,T,y,k)=>{if(S===Qn.CONNECTED&&T){let w={walletType:m,network:y.network??void 0,accounts:y.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}if(S===Qn.NETWORK&&T){let w={walletType:m,network:T,accounts:y.accounts??void 0};c.current?c.current(w):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((m,S,T,y,k)=>{k.isHub?d(m,S,T,y,k):f(m,S,T,y,k),h(m,S,T,y,k)},"handler")}}i(RS,"useUpdates");import{LegacyEvents as I0}from"@rango-dev/wallets-core/legacy";function eT(t,e){let[o,n,r,a,s]=e;n!==I0.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(eT,"propagateEvents");var Ya=N0({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function P0(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=C(),a=C().blockchains(),s=C().config,c={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:l}=bp(s.wallets,c),p=nT(),u=nT(),{handler:d}=RS({onConnectWalletHandler:p,onDisconnectWalletHandler:u});oT(()=>{n().catch(console.log)},[]),oT(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let f=ne.use.isActiveTab(),h=W0(()=>({onConnectWallet:g=>{p.current=g},onDisconnectWallet:g=>{u.current=g}}),[]);return Xa.createElement(Ya.Provider,{value:h},Xa.createElement(A0,{allBlockChains:a,providers:l,onUpdateState:(g,m,S,T,y)=>{let k=[g,m,S,T,y];d(...k),t.onUpdateState&&eT(t.onUpdateState,k)},autoConnect:!!f,configs:{wallets:s.wallets,walletOptions:{[tT.TON_CONNECT]:{provider:{manifestUrl:s.tonConnect?.manifestUrl}},[tT.TREZOR]:{provider:{manifest:s.trezorManifest}}}}},t.children))}i(P0,"Main");function Za(t){let{config:e,...o}=t;return Xa.createElement(ju,{config:e},Xa.createElement(P0,{...o,config:e}))}i(Za,"WidgetWallets");import{globalCss as L0}from"@rango-dev/ui";var rT=i(()=>L0({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");import{useWallets as B0}from"@rango-dev/wallets-react";import{useEffect as _0,useRef as M0}from"react";function iT(){let{connect:t,state:e}=B0(),o=M0({}),{fetchStatus:n}=C(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);_0(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(iT,"useForceAutoConnect");import{isApprovalTX as D0,RouteEventType as aT,StepEventType as sT,StepExecutionEventStatus as $0,WidgetEvents as Ja}from"@rango-dev/queue-manager-rango-preset";import{useEffect as lT}from"react";function xp(){let t=We.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=C();lT(()=>{let r=i(a=>{let{event:s,step:c,route:l}=a;if(s.type===sT.TX_EXECUTION&&s.status===$0.TX_SENT&&!D0(c)||s.type===sT.SUCCEEDED){let u=[],d=l.wallets[c?.fromBlockchain];if(d){let f=e.find(h=>h.address?.toLocaleLowerCase()===d.address?.toLocaleLowerCase()&&h.walletType===d.walletType&&h.chain===c?.fromBlockchain);f&&u.push(f)}if(c?.fromBlockchain!==c?.toBlockchain){let f=l.wallets[c?.toBlockchain];if(f){let h=e.find(g=>g.address?.toLocaleLowerCase()===f.address?.toLocaleLowerCase()&&g.walletType===f.walletType&&g.chain===c?.toBlockchain);h&&u.push(h)}}if(u.length>0){let f=n(),g=[{blockchain:c.fromBlockchain,address:c.fromSymbolAddress,symbol:c.fromSymbol},{blockchain:c.toBlockchain,address:c.toSymbolAddress,symbol:c.toSymbol}].filter(m=>f.some(S=>S.blockchain===m.blockchain&&S.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&S.symbol?.toLocaleLowerCase()===m.symbol?.toLocaleLowerCase()));o(u,{selectedCustomTokens:g,shouldFetchCustomTokens:g.length>0})}}t(s,l)},"handleStepEvent");return ge.on(Ja.StepEvent,r),()=>ge.off(Ja.StepEvent,r)},[ge,e]),lT(()=>{let r=i(a=>{let{event:s,route:c}=a;(s.type===aT.FAILED||s.type===aT.SUCCEEDED)&&t(s,c)},"handleRouteEvent");return ge.on(Ja.RouteEvent,r),()=>ge.off(Ja.RouteEvent,r)},[ge])}i(xp,"useSubscribeToWidgetEvents");import{useManager as F0}from"@rango-dev/queue-manager-react";import{useEffect as O0}from"react";function Ip(){let{isSynced:t,syncNotifications:e}=We(),{manager:o,state:n}=F0();O0(()=>{if(We.persist.hasHydrated()&&n.loadedFromPersistor&&!t){let a=vt(o);e(a),a.forEach(({swap:s})=>{if(!(s.status==="running"&&s.steps.length>1))return;let l=s.steps.findIndex(p=>p.status!=="success");l!==-1&&te({type:"swapResumed",payload:{routeId:s.requestId,stepCount:s.steps.length,stepNumber:l+1}})})}},[We.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Ip,"useSyncNotifications");function Np(){iT(),rT(),xp(),Ip();let t=C().blockchains(),{canSwitchNetworkTo:e}=pT(),[o,n]=cT(null),[r,a]=cT(),s=H0(Ya),c=t.filter(z0);Ap(()=>()=>am(),[]),Ap(()=>()=>sm(),[]),U0({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:c,canSwitchNetworkTo:e}),Ap(()=>($o.init(),We.persist.hasHydrated()||We.persist.rehydrate(),s.onConnectWallet(l=>{n(p=>{if(!p||p.walletType!==l.walletType)return l;let u={...p};return l.network&&(u.network=l.network),l.accounts&&(u.accounts=l.accounts),u})}),s.onDisconnectWallet(l=>{a(l),n(p=>l===p?.walletType?null:p)}),$o.destroy),[])}i(Np,"useBootstrap");import{styled as Q0}from"@rango-dev/ui";var uT=Q0("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left",height:"100%","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function nn(){Np();let{config:t}=C(),{activeTheme:e}=go(t?.theme||{}),{activeLanguage:o}=Eo();return Wp.createElement(q0,{language:o},Wp.createElement(uT,{id:"swap-container",className:e()},Wp.createElement(YS,null)))}i(nn,"Main");import{setSolanaSignerConfig as pW}from"@rango-dev/signer-solana";import Lp,{useEffect as Bp,useMemo as uW}from"react";function dT(){let{setWatermark:t,setShowProfileBanner:e}=ne();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Kt("BASE_URL")}/meta/dapp/config?apiKey=${Kt("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(dT,"useFetchApiConfig");import{useState as G0}from"react";var V0=i(()=>{let[t,e]=G0(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=cu(a);if(s){let c=o(s);e(c)}},"handleLoadCustomFont")}},"useFontLoader"),mT=V0;import{checkWaitingForNetworkChange as K0,makeQueueDefinition as j0}from"@rango-dev/queue-manager-rango-preset";import{Provider as X0}from"@rango-dev/queue-manager-react";import{useWallets as Y0}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as Z0}from"@rango-dev/wallets-shared";import{isEvmBlockchain as J0}from"rango-types";import R0,{useMemo as eW}from"react";function tW(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s,hubProvider:c}=Y0(),l=eW(()=>j0({API_KEY:t.apiKey||Kt("API_KEY"),BASE_URL:Kt("BASE_URL"),emitter:{emit:ge.emit}}),[t.apiKey]),{blockchains:p,connectedWallets:u}=C(),d=p(),f={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,x)=>a(v,x.network,x)?await r(v,[x]):void 0,"switchNetwork"),g=i(v=>!!s(v).mobileWallet,"isMobileWallet"),m=d.filter(v=>v.enabled).reduce((v,x)=>(v[x.name]=x,v),{}),S=d.filter(J0),T=i(v=>{let{supportedChains:x}=s(v);return Jn(x)},"getSupportedChainNames"),y=e(),k={meta:{blockchains:m,evmBasedChains:S,evmNetworkChainInfo:Z0(S),getSupportedChainNames:T},getSigners:o,wallets:f,providers:y,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:g,hubProvider:c},w=ne.use.isActiveTab();return R0.createElement(X0,{queuesDefs:[l],context:k,onPersistedDataLoaded:v=>{K0(v)},isPaused:!w},t.children)}i(tW,"QueueManager");var fT=tW;import{useManager as aW}from"@rango-dev/queue-manager-react";import sW,{createContext as lW,useContext as cW}from"react";function gT(){let{findToken:t}=C(),e=C().blockchains(),o=C().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:c}=z()();return i(p=>{let{fromBlockchain:u,fromToken:d,toBlockchain:f,toToken:h,requestAmount:g}=p,m={blockchains:e,tokens:o};if(u!==void 0){let S=e.find(T=>T.name===u)??null;n(S)}if(d!==void 0){let S=d?t(d)??null:null;r({meta:m,token:S})}if(f!==void 0){let S=e.find(T=>T.name===f)??null;a(S)}if(h!==void 0){let S=h?t(h)??null:null;s({meta:m,token:S})}g!==void 0&&c(g)},"updateQuoteInputs")}i(gT,"useUpdateQuoteInputs");import{cancelSwap as oW,getCurrentNamespaceOfOrNull as nW,getCurrentStep as rW,getRelatedWalletOrNull as iW}from"@rango-dev/queue-manager-rango-preset";var Ra=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return vt(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=Ai(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&oW(o)}getCurrentStepInfo(e){let o=rW(e);return{step:o,wallet:o?iW(e,o):null,network:o?nW(e,o)?.network:null}}};var hT=lW(void 0);function Pp(t){let{manager:e}=aW(),o=ne.use.isActiveTab(),n=z().use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:c}=C(),l=new Ra(e,{retrySwap:n,findToken:r}),{fetchingWallets:p}=C(),u=Eu(a()),d=C().blockchains(),f=C().tokens(),h=C().swappers(),g=C().fetchStatus,m=Eo().resetLanguage,S=We().getNotifications(),T=We().clearNotifications,y=gT(),{fromBlockchain:k,toBlockchain:w,fromToken:v,toToken:x,inputAmount:A}=z()(),E={isActiveTab:o,setCurrentTabAsActive:$o.forceClaim,history:l,wallets:{isLoading:p,details:s(),totalBalance:u,refetch:async I=>c(I)},meta:{blockchains:d,tokens:f,swappers:h,loadingStatus:g,findToken:r},resetLanguage:m,notifications:{list:S,clearAll:T},quote:{quoteInputs:{fromBlockchain:k?.name??null,fromToken:v?{symbol:v.symbol,blockchain:v.blockchain,address:v.address}:null,toBlockchain:w?.name??null,toToken:x?{symbol:x.symbol,blockchain:x.blockchain,address:x.address}:null,requestAmount:A},updateQuoteInputs:y}};return sW.createElement(hT.Provider,{value:E},t.children)}i(Pp,"WidgetInfo");function yT(){let t=cW(hT);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(yT,"useWidget");function qn(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{fetchApiConfig:r}=dT(),{handleLoadCustomFont:a}=mT();return Bp(()=>{r().catch(console.log)},[]),Bp(()=>{n&&a(n)},[n]),uW(()=>{Pu({API_KEY:o?.apiKey||Zp(),BASE_URL:o?.apiUrl||eu})},[o.apiKey,o.apiUrl]),Bp(()=>{t.config?.signers?.customSolanaRPC&&pW("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Lp.createElement(Za,{config:o,onUpdateState:e},Lp.createElement(fT,{apiKey:o.apiKey},Lp.createElement(Pp,null,t.children)))}i(qn,"WidgetProvider");function ST(t){let e=t.config?.externalWallets;return es.createElement(xi,null,e?es.createElement(nn,null):es.createElement(qn,{config:t.config??ln},es.createElement(nn,null)))}i(ST,"Refuel");import ts from"react";function TT(t){let e=t.config?.externalWallets;return ts.createElement(xi,null,e?ts.createElement(nn,null):ts.createElement(qn,{config:t.config??ln},ts.createElement(nn,null)))}i(TT,"Widget");function CT(){let{on:t,off:e}=ge;return{on:t,off:e}}i(CT,"useWidgetEvents");var ote={DerivationPath:lr,Namespaces:ir,Detached:sr,isOnDerivationPath:pr,isOnNamespace:cr,isOnDetached:Wo};export{bee as EventSeverity,dn as MainEvents,Mee as Networks,Fee as PendingSwapNetworkStatus,tr as QuoteEventTypes,ST as Refuel,xee as RouteEventType,ss as SUPPORTED_FONTS,ote as StatefulConnect,Iee as StepEventType,Aee as StepExecutionBlockedEventStatus,Nee as StepExecutionEventStatus,vd as SwapModeContext,kt as UI_ID,Re as UiEventTypes,gi as WalletEventTypes,Bee as WalletEvents,Dee as WalletTypes,TT as Widget,dn as WidgetEvents,qn as WidgetProvider,Za as WidgetWallets,pl as customizedThemeTokens,is as pickProviderVersionWithFallbackToLegacy,Pee as readAccountAddress,an as useStatefulConnect,bt as useWalletList,pT as useWallets,yT as useWidget,CT as useWidgetEvents,xC as widgetEventEmitter};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|