@rango-dev/widget-embedded 0.41.2-next.15 → 0.41.2-next.17
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/BlockchainsSection/BlockchainsSection.d.ts.map +1 -1
- package/dist/components/CustomTokenModal/CustomTokenModal.d.ts.map +1 -1
- package/dist/components/CustomTokenModal/CustomTokenModal.styles.d.ts +440 -0
- package/dist/components/CustomTokenModal/CustomTokenModal.styles.d.ts.map +1 -1
- package/dist/components/Layout/Layout.constants.d.ts +4 -0
- package/dist/components/Layout/Layout.constants.d.ts.map +1 -0
- package/dist/components/Layout/Layout.d.ts.map +1 -1
- package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
- package/dist/components/SwapDetails/SwapDetails.styles.d.ts +167 -4
- package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
- package/dist/components/WalletStatefulConnect/DerivationPath.d.ts.map +1 -1
- package/dist/components/WalletStatefulConnect/DerivationPath.styles.d.ts +440 -0
- package/dist/components/WalletStatefulConnect/DerivationPath.styles.d.ts.map +1 -1
- package/dist/components/WalletStatefulConnect/Namespaces.styles.d.ts +440 -0
- package/dist/components/WalletStatefulConnect/Namespaces.styles.d.ts.map +1 -1
- package/dist/constants/configs.d.ts +1 -0
- package/dist/constants/configs.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +4 -4
- package/dist/store/ui.d.ts +4 -0
- package/dist/store/ui.d.ts.map +1 -1
- package/dist/widget-embedded.build.json +1 -1
- package/package.json +6 -6
- package/src/components/BlockchainsSection/BlockchainsSection.tsx +26 -10
- package/src/components/CustomTokenModal/CustomTokenModal.styles.ts +5 -1
- package/src/components/CustomTokenModal/CustomTokenModal.tsx +6 -12
- package/src/components/Layout/Layout.constants.ts +3 -0
- package/src/components/Layout/Layout.styles.ts +7 -3
- package/src/components/Layout/Layout.tsx +39 -2
- package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +25 -28
- package/src/components/SwapDetails/SwapDetails.styles.ts +18 -10
- package/src/components/SwapDetails/SwapDetails.tsx +54 -55
- package/src/components/WalletStatefulConnect/DerivationPath.styles.ts +5 -1
- package/src/components/WalletStatefulConnect/DerivationPath.tsx +4 -10
- package/src/components/WalletStatefulConnect/Namespaces.styles.ts +5 -1
- package/src/components/WalletStatefulConnect/Namespaces.tsx +3 -3
- package/src/constants/configs.ts +1 -0
- package/src/store/ui.ts +6 -0
package/dist/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Ay=Object.defineProperty;var i=(t,e)=>Ay(t,"name",{value:e,configurable:!0});import{EventSeverity as xY,RouteEventType as EY,StepEventType as IY,StepExecutionBlockedEventStatus as AY,StepExecutionEventStatus as NY}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as WY}from"@rango-dev/wallets-core/legacy";import{useWallets as ci,Events as MY}from"@rango-dev/wallets-react";import{Networks as _Y,WalletTypes as DY}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as FY}from"rango-types";import{Divider as bC}from"@rango-dev/ui";import So,{useEffect as xC,useRef as EC,useState as ru}from"react";import{WalletState as Ny}from"@rango-dev/ui";import{useWallets as By}from"@rango-dev/wallets-react";import{useReducer as Wy}from"react";function Nc(t){return!!t.derivationPath}i(Nc,"isStateOnDerivationPathStep");function Bc(t){return!!t.namespace}i(Bc,"isStateOnNamespace");var fr={status:"init",namespace:null,derivationPath:null};function Wc(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"reset":return fr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:fr;default:throw new Error("Action hasn't been defined.")}}i(Wc,"reducer");function Xt(){let{state:t,disconnect:e,connect:o}=By(),[n,r]=Wy(Wc,fr),a=i(async(p,m,h)=>{r({type:"reset"});try{let d=m?.map(f=>({...f,network:void 0}));return await o(p,d),{status:"connected"}}catch(d){let f=d?.message?`Error: ${d.message}`:"An unknown error happened during connecting wallet.";throw new Error(f,{cause:d})}},"runConnect"),s=i(async(p,m)=>{if(p.state===Ny.DISCONNECTED){let d=!!p.isHub,f=p.properties?.find(g=>g.name==="detached")?.value;if(d&&!f?.length||!d&&!p.needsNamespace)return await a(p.type,void 0,m);if(d&&f?.length&&f.length>1||!d&&p.needsNamespace?.data.length&&p.needsNamespace.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:p,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(d&&f?.length===1||!d&&p.needsNamespace?.data.length===1){if(p.needsNamespace&&p.needsDerivationPath){let g=p.needsNamespace.data[0];return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:g.value}}),{status:"derivation-path"}}return await a(p.type,p.needsNamespace?.data.map(g=>({namespace:g.value})),m)}}return m?.disconnectIfConnected?(await u(p.type),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),l=i(async(p,m)=>{let h=p.needsNamespace?.selection==="single",d=p.needsDerivationPath,f=m[0];if(!f)throw new Error("To confirm a namespace, you should select at least one namespace.");if(h&&d)return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:f}}),{status:"derivation-path"};if(!Bc(n))throw new Error("Something went wrong on handling namespace. Please retry.");let g=n.namespace.targetWallet.type,C=m.map(k=>({namespace:k}));return await a(g,C)},"handleNamespace"),c=i(async p=>{if(!p)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Nc(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=n.derivationPath.providerType,d=[{namespace:n.derivationPath.namespace,derivationPath:p}];return await a(m,d)},"handleDerivationPath"),u=i(async p=>{let m=t(p);return m.connected||m.connecting?(await e(p),{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:l,handleDerivationPath:c,getState:()=>n,resetState:p=>{r(p==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Xt,"useStatefulConnect");import{WalletState as Ma}from"@rango-dev/ui";import{useWallets as zS}from"@rango-dev/wallets-react";import{detectMobileScreens as QS,KEPLR_COMPATIBLE_WALLETS as HS,WalletTypes as Tn}from"@rango-dev/wallets-shared";import{useCallback as qS,useEffect as GS}from"react";import DS,{createContext as $S,useContext as FS,useEffect as OS,useRef as US}from"react";import{create as PS}from"zustand";import{persist as _S}from"zustand/middleware";import{allProviders as Ly}from"@rango-dev/provider-all";var ua=class{static{i(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},Do=new ua;import{defineVersions as Mc,pickVersion as Pc,Provider as ma}from"@rango-dev/wallets-core";function _c({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Dc(a);return s instanceof ma?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 ma?o.push(Mc().version("1.0.0",n).build()):o.push(Mc().version("0.0.0",n).build())}),o}return t}i(_c,"matchAndGenerateProviders");function Dc(t){try{return Pc(t,"1.0.0")[1]}catch{return Pc(t,"0.0.0")[1]}}i(Dc,"pickProviderVersionWithFallbackToLegacy");function $c(t){return t.map(o=>Dc(o)).map(o=>o instanceof ma?o.id:o.config.type)}i($c,"configWalletsToWalletName");function gr(t,e){return e.find(o=>o.name===t)?.displayName}i(gr,"getBlockchainDisplayNameFor");function pt(t,e){return e.find(o=>o.name===t)?.shortName}i(pt,"getBlockchainShortNameFor");function Fc(t,e){return e.find(o=>o.name===t)?.logo}i(Fc,"getBlockchainImage");function mn(t,e){return e.find(o=>o.id===t)?.title}i(mn,"getSwapperDisplayName");function uo(t,e){return e.find(o=>o.name===t)??null}i(uo,"findBlockchain");function da(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(da,"isTokenNative");function ut(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(ut,"createTokenHash");function $o(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i($o,"isValidTokenAddress");function dn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(c=>{typeof c!="string"&&(c=ut(c));let u=o.tokensMapByTokenHash.get(c);u&&(n[c]=u)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(c=>{l.has(c)||a(o.tokensMapByBlockchainName[c])})}return s.forEach(l=>{let c=r[l];if(!c&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}c&&(c.isExcluded?(a(o.tokensMapByBlockchainName[l]),c.tokens.forEach(u=>{let p=ut(u);delete n[p]})):a(c.tokens))}),Object.values(n)}i(dn,"matchTokensFromConfigWithMeta");function hr(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(hr,"getSupportedBlockchainsFromConfig");function Uc(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(Uc,"makeProvidersOptionsFromConfig");var yr={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/manifests/tonconnect-manifest.json"}},My={clientUrl:void 0},Py={liquiditySources:void 0};function Oc(t){let e=Uc(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return Ly(o).map(a=>a())}i(Oc,"generateProviders");var zc=i((t,e,o)=>{let n=Oc({...yr,...t});return{config:{...yr,...t},iframe:My,campaignMode:Py,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l}=o(),c=dn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}}),u=dn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}});Do.set("supportedSourceTokens",c),Do.set("supportedDestinationTokens",u),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=Oc(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=Uc(a);return _c({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Qc}from"rango-types";var Hc=[Qc.EVM,Qc.SOLANA],Sr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as Xy}from"rango-sdk";import{UI_ID as _y}from"@rango-dev/ui";var Cr="c6381a79-2817-4602-83bf-6a641a409e32",qc="https://api.rango.exchange",Gc="https://explorer.rango.exchange",Fe={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",..._y};import{BlockchainCategories as Qy,WalletState as Et}from"@rango-dev/ui";import{legacyReadAccountAddress as Hy}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as qy,getCosmosExperimentalChainInfo as Gy,isEvmAddress as Vy,KEPLR_COMPATIBLE_WALLETS as d0,Networks as rp}from"@rango-dev/wallets-shared";import Oo from"bignumber.js";import{isCosmosBlockchain as Ky}from"rango-types";import Dy from"bignumber.js";var le=new Dy(0);import{WalletTypes as $y}from"@rango-dev/wallets-shared";var mo="~",Vc=[$y.LEAP];import{BlockchainCategories as ga,WalletState as zy}from"@rango-dev/ui";import{TransactionType as kr}from"rango-sdk";var Kc="Roboto",fa=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function Fo(t){return Array.from(new Set(t))}i(Fo,"removeDuplicateFrom");function Tr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(Tr,"debounce");function tt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(tt,"containsText");function Yc(t,e){return t.toLowerCase()===e.toLowerCase()}i(Yc,"exactText");function Zc(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(Zc,"startWithText");var A=i(()=>document.getElementById(Fe.SWAP_BOX_ID),"getContainer"),fo=i(()=>document.getElementById(Fe.EXPANDED_BOX_ID),"getExpanded");function Jc(t,e,o){let n=!!e&&Yc(e,t),r=!!o&&Yc(o,t);return n!==r?n?-1:1:0}i(Jc,"compareExactMatchText");function ha(t,e,o){let n=!!e&&tt(e,t),r=!!o&&tt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ha,"compareContainsText");function ya(t,e,o){let n=!!e&&Zc(e,t),r=!!o&&Zc(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ya,"compareStartWithText");function Rc(t,e,o){if(!o)return 0;let n=Jc(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=Jc(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ya(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ha(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ya(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=ha(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ya(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=ha(o,t.address,e.address);if(r!==0)return r}return 0}i(Rc,"compareWithSearchFor");var vr=i((t,e)=>{switch(e){case ga.ALL:return!0;case ga.UTXO:return t===kr.TRANSFER;case ga.OTHER:return t!==kr.TRANSFER&&t!==kr.COSMOS&&t!==kr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),ep=i(t=>fa.find(o=>o.value===t)?.url,"getFontUrlByName");function tp(t,e){let o=!!t.find(n=>n.state===zy.CONNECTED);return e===!1&&o}i(tp,"isSingleWalletActive");function op(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(op,"memoizedResult");import{BigNumber as np}from"bignumber.js";var fn=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),P=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new np(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new np(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 wr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var xt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),gn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function hn(t){return t.connected?Et.CONNECTED:t.connecting?Et.CONNECTING:t.installed?Et.DISCONNECTED:Et.NOT_INSTALLED}i(hn,"mapStatusToWalletState");function ip(t,e,o,n){return o.filter(r=>!Vc.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:c}=t(r);return s&&(!l||!!n&&c!==n)?!1:n?!!a.find(p=>p.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:c,needsNamespace:u,supportedChains:p,needsDerivationPath:m,properties:h,isHub:d}=e(r),f=Fo(p.map(C=>C.type)),g=hn(t(r));return{title:a,image:s,link:qy(l),state:g,type:r,showOnMobile:c,needsNamespace:u,blockchainTypes:f,needsDerivationPath:m,properties:h,isHub:d}})}i(ip,"mapWalletTypesToWalletInfo");function yn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(yn,"walletAndSupportedChainsNames");function Ca(t,e,o,n,r){let a=[];function s(c,u,p){if(!!!a.find(h=>h.chain===c)){let h={address:u,chain:c,walletType:t,isContractWallet:p??!1};a.push(h)}}i(s,"addAccount");let l=n||[];return e.forEach(c=>{let{address:u,network:p}=Hy(c),m=l.length>0,h=l.includes(p),d=p===rp.Unknown;if(m&&!h&&!d)return;let g=p===rp.Unknown&&Vy(u);if(d&&!g)return;o.includes(p)||g?r?s(p,u.toLowerCase(),r):l.filter(y=>o.includes(y)).forEach(y=>{s(y,u.toLowerCase())}):s(p,u)}),a}i(Ca,"prepareAccountsForWalletStore");function go(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:c}=r;c.forEach((u,p)=>{let m=u.from.blockchain,h=u.to.blockchain,d=a===o.swaps.length-1,f=p===c.length-1;(!d&&!f||d&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(h)})}e==="all"&&n.add(l)}),Array.from(n)}i(go,"getQuoteChains");function Sn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(Sn,"isAccountAndWalletMatched");var ap=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?Sa(n.usdValue,n.decimals):le.toFixed();return o.plus(r)},new Oo(le));return jy(e.toString())},"calculateWalletUsdValue");function jy(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(jy,"numberWithThousandSeparator");var Er=i((t,e)=>{let o=Gy(Object.entries(t).map(([,n])=>n).filter(Ky));return o&&o[e]?.experimental},"isExperimentalChain");function Sa(t,e){return new Oo(t).shiftedBy(-e).toFixed()}i(Sa,"representAmountInNumber");function Ir(t){if(!t)return null;let e=Sa(t.amount,t.decimals),o=t.usdValue?Sa(t.usdValue,t.decimals):null,n=P(e,8,8),r=o?P(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Ir,"formatBalance");function sp(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new Oo(t.usdValue).shiftedBy(-t.decimals):le,n=e&&e.usdValue?new Oo(e.usdValue).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new Oo(t.amount).shiftedBy(-t.decimals):le,n=e&&e.amount?new Oo(e.amount).shiftedBy(-e.decimals):le;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(sp,"compareTokenBalance");function Mt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Mt,"areTokensEqual");function lp(t){return t.sort((e,o)=>+(o.state===Et.CONNECTED)-+(e.state===Et.CONNECTED)||+(o.state===Et.DISCONNECTED||o.state===Et.CONNECTING)-+(e.state===Et.DISCONNECTED||e.state===Et.CONNECTING))}i(lp,"sortWalletsBasedOnConnectionState");function Ar(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(Ar,"getConciseAddress");function cp({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(cp,"getAddress");var pp=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function up(t){return t.map(e=>e.state).join("-")}i(up,"hashWalletsState");function mp(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(mp,"filterBlockchainsByWalletTypes");function dp(t,e){return e===Qy.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(vr(n,e))return!0;return!1})}i(dp,"filterWalletsByCategory");var ka={API_KEY:Cr};function Pt(t){return ka[t]||""}i(Pt,"getConfig");function fp(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ka=e,ka}i(fp,"initConfig");var gp=20,hp=25,Ta="theme-widget",va=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Mt(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Mt(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),wa=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),yp=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Nr,ot=i(()=>Nr||(Nr=new Xy(Pt("API_KEY"),Pt("BASE_URL")),Nr),"httpService");import{i18n as Tp}from"@lingui/core";var Sp=[.5,1,3],Cp=1,Br=5,Cn=30,kp=0;function Wr(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Fo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(c=>c===s.swapperGroup)),l&&s.types.map(c=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:c,selected:!e.includes(s.swapperGroup)})})}}),n}i(Wr,"getUniqueSwappersGroups");function vp(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(vp,"sortLiquiditySourcesByGroupTitle");function Ye(t,e){return e?.[t]==="hidden"}i(Ye,"isFeatureHidden");function Uo(t,e){return e?.[t]==="enabled"}i(Uo,"isRoutingEnabled");var wp=i((t,e,o)=>Ye("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function bp(t){return t==kp?{type:"error",message:Tp.t("Slippage must be greater than or equal to 0.01")}:t>Br&&t<=Cn?{type:"warning",message:Tp.t("Your transaction is at risk of being frontrun due to high slippage tolerance.")}:null}i(bp,"getSlippageValidation");var xp=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let c=hr({config:a}),u=r;return c.length>0&&(u=u.filter(p=>c.includes(p.name))),u.filter(p=>Hc.includes(p.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(c=>!(s.length>0&&!s.includes(c.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),l=Array.from(n.values()),c=e()._blockchainsMapByName;if(!o||!o.type)return l;let u=o.type==="source"?"from":"to",p=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=Do.get(p);m?.length||(m=dn({type:o.type,config:{blockchains:a[u]?.blockchains,tokens:a[u]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Do.set(p,m)),m=wp(m,s,a.features);let h=e().blockchains({type:o.type});return m.filter(f=>o.blockchain&&f.blockchain!==o.blockchain||!h.some(g=>g.name===f.blockchain)?!1:o.searchFor?!!(tt(f.symbol,o.searchFor)||tt(f.address||"",o.searchFor)||tt(f.name||"",o.searchFor)):!0).sort((f,g)=>{let C=e().isTokenPinned(f,o.type),k=e().isTokenPinned(g,o.type);if(C!==k)return C?-1:1;if(o.getBalanceFor){let B=o.getBalanceFor(f),N=o.getBalanceFor(g),x=sp(B,N);if(x!==0)return x}let y=c.get(f.blockchain),T=c.get(g.blockchain),v=da(f,y),E=da(g,T);if(v!==E)return v?-1:1;if(f.isPopular!==g.isPopular)return f.isPopular?-1:1;if(o.searchFor){let B=Rc(f,g,o.searchFor);if(B)return B}return f.isSecondaryCoin!==g.isSecondaryCoin?f.isSecondaryCoin?1:-1:y&&T?y.sort-T.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=ut(o),s=n.get(a);return s||(s=r.find(l=>ut(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Mt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(u=>{let p=a?.includes(u.swapperGroup);return s||!a||a.length===0?!p:p}).sort(vp)},fetch:async()=>{try{let{routing:o}=e().config,n=Uo("enableCentralizedSwappers",o),r=await ot().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,l={},c=[],u=r.popularTokens,p=r.swappers.filter(d=>d.enabled),m=new Set;r.tokens.forEach(d=>{m.add(d.blockchain),c.push(d)}),r.blockchains.sort((d,f)=>d.sort-f.sort).forEach(d=>{d.enabled&&m.has(d.name)&&a.set(d.name,d)}),c.forEach(d=>{let f=ut(d);l[d.blockchain]||(l[d.blockchain]=[]),s.set(f,d),l[d.blockchain].push(f)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l,_popularTokens:u,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as Yy,Catalonia as Zy,Chinese as Ep,Denmark as Jy,English as Ry,Finland as eS,French as tS,German as oS,Greece as nS,Hungary as rS,India as iS,Indonesian as aS,Italian as sS,Japanese as lS,Korea as cS,Lithuania as pS,Malay as uS,Netherlands as mS,Pakistan as dS,Philippines as fS,Poland as gS,Portuguese as hS,Russian as yS,SaudiArabia as SS,Serbia as CS,Slovakia as kS,SouthAfrica as TS,Spanish as vS,Swahili as wS,Swedish as bS,Thai as xS,Turkish as ES,Ukrainian as IS,Vietnamese as AS}from"@rango-dev/ui";var Ip=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:TS},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:SS},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:Yy},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:Zy},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Ep},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Ep},{title:"Danish",label:"Dansk",local:"da",SVGFlag:Jy},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:mS},{title:"English",label:"English",local:"en",SVGFlag:Ry},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:fS},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:eS},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:tS},{title:"German",label:"Deutsch",local:"de",SVGFlag:oS},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:nS},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:iS},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:rS},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:aS},{title:"Italian",label:"Italiana",local:"it",SVGFlag:sS},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:lS},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:cS},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:pS},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:uS},{title:"Polish",label:"Polski",local:"pl",SVGFlag:gS},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:hS},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:yS},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:CS},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:kS},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:vS},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:wS},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:bS},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:xS},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:ES},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:IS},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:dS},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:AS}],zo="en";var Ap=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:Cp,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let c=s===o,u=l<=9;return c&&u}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let a=Fo(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=Ye("theme",n),s=Ye("language",n),l=Ye("liquiditySource",n),c=r?.singleTheme,u=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...c&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||zo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...u&&{language:o.language||zo}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(r=>r.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,r=hr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import La from"bignumber.js";import NS from"mitt";var ye=NS(),BS={on:ye.on,off:ye.off};import{WidgetEvents as Np}from"@rango-dev/queue-manager-rango-preset";var xa=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(xa||{}),Ea=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(Ea||{}),Ia=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(Ia||{}),Qo=(a=>(a[a.RouteEvent=Np.RouteEvent]="RouteEvent",a[a.StepEvent=Np.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Qo||{});var Bp=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...l]=a;e(c=>({...typeof s=="function"?s(c):s,lastUpdatedAt:+new Date}),...l)},"modifedSet"),o,n),"keepLastUpdated");import Wp from"bignumber.js";function _t(t){return`${t.blockchain}${mo}${t.address}${mo}${t.symbol}`}i(_t,"createAssetKey");function Lp(t,e){return`${_t(e)}${mo}${t}`}i(Lp,"createBalanceKey");function kn(t){let[e,o,n]=t.split(mo);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(kn,"extractAssetFromBalanceKey");function Aa(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[_t(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new Wp(r??le).multipliedBy(o[s].amount).toString():""})})}),o}i(Aa,"computeNextBalancesWithNewPrices");function Na(t,e){let o={};return t.balances?.forEach(n=>{let r=Lp(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,l=n.price??e().findToken(n.asset)?.usdPrice,c=l?new Wp(l??le).multipliedBy(a).toString():"",u={amount:a,decimals:s,usdValue:c};o[r]=u}),o}i(Na,"createBalanceStateForNewAccount");function Ba(t,e){for(let o in e){let n=kn(o),r=_t(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(Ba,"updateAggregatedBalanceStateForNewAccount");function WS(t,e){let o=kn(e),n=_t(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(WS,"removeBalanceFromAggregatedBalance");function Wa(t,e,o){let n=t.connectedWallets.filter(c=>c.walletType===e);t.connectedWallets.forEach(c=>{c.walletType!==e&&(n=n.filter(u=>!(u.chain===c.chain&&u.address===c.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(c=>o.chains?.includes(c.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(c=>c.namespace?o.namespaces?.includes(c.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(c=>{let u=kn(c);!!n.find(m=>Lp(m.address,{address:u.address,blockchain:m.chain,symbol:u.symbol})===c)?a=WS(a,c):r[c]=s[c]}),{_balances:r,_aggregatedBalances:a}}i(Wa,"computeNextStateAfterWalletBalanceRemoval");function LS(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(LS,"matchWalletDetailsWithConnectedWallet");var MS=op(),Mp=Bp((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>Sn(s,a))?{...a,loading:!1,error:!1,explorerUrl:LS(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>Sn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n)=>{let r=e().connectedWallets,a=o.filter(s=>!r.some(l=>Sn(s,l)));if(a.length>0){let s=a.map(l=>{let c=!r.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:c,namespace:n,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!s.some(p=>p.walletType===u.walletType&&p.chain===u.chain)),...s]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((c,u)=>((c[u.blockchain]||=[]).push(u),c),{}),s=new Set,l=r.reduce((c,u)=>{let p=`${u.address}-${u.chain}`;return s.has(p)||(s.add(p),a[u.chain]&&(c[u.address]||(c[u.address]=[]),c[u.address].push(...a[u.chain]))),c},{});Object.entries(l).forEach(async([c,u])=>{try{let{balances:p}=await ot().getMultipleTokenBalance({assets:u.map(({symbol:m,address:h,blockchain:d})=>({symbol:m,address:h,blockchain:d})),walletAddress:c});if(p){let m=e()._balances,h=e()._aggregatedBalances;p.forEach(d=>{if(parseFloat(d.amount.amount)===0)return;let f={blockChain:d.asset.blockchain,balances:[d],address:c},g={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};Aa(g,f,m);let C=Na(f,e);h=Ba(h,C),m={...m,...C}}),t(d=>({_balances:{...d._balances,...m},_aggregatedBalances:h}))}}catch(p){console.error(p)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n)=>{ye.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}}),e().addConnectedWallet(o,n),e().fetchBalances(o)},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Wa(r,o,n);t({_balances:a,_aggregatedBalances:s})},disconnectNamespaces:(o,n)=>{if(e().connectedWallets.find(a=>a.walletType===o)){e().removeBalancesForWallet(o,{namespaces:n}),e()._changeSelectedWalletIfNeededOnRemove(o,{namespaces:n});let a=e().connectedWallets.filter(s=>s.namespace?!(s.walletType===o&&n.includes(s.namespace)):!0);t({connectedWallets:a})}},disconnectWallet:o=>{let n=e().connectedWallets.find(r=>r.walletType===o);if(ye.emit("walletEvent",{type:"disconnect",payload:{walletType:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(l=>a.includes(l.chain)?(a=a.filter(c=>c!==l.chain),{...l,selected:!0}):l);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0)return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(c=>({address:c.address,blockchain:c.chain})),s;try{s=await ot().getWalletsDetails(a)}catch(c){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${c}`);return}let l=s.wallets;if(l){let c=e()._balances,u=e()._aggregatedBalances;l.forEach(m=>{if(m.failed)return;let h={_balances:c,_aggregatedBalances:u,connectedWallets:e().connectedWallets,findToken:e().findToken};Aa(h,m,c);let{_balances:d,_aggregatedBalances:f}=Wa(h,r,{chains:[m.blockChain]});if(u=f,c=d,!e().connectedWallets.find(C=>C.walletType===r&&C.address===m.address&&C.chain===m.blockChain))return;let g=Na(m,e);u=Ba(u,g),c={...c,...g}}),t(m=>({_balances:{...m._balances,...c},_aggregatedBalances:u})),e().setConnectedWalletRetrievedData(o,l);let{retryOnFailedBalances:p=!0}=n||{};if(p){let m=l.filter(h=>h.failed).map(h=>({chain:h.blockChain,walletType:r,address:h.address}));m.length>0&&await e().fetchMainTokensBalances(m,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),r=_t(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let c=a[0];return n[c]}let l=n[a[0]];return a.forEach(c=>{let u=n[c],p=new La(u.amount),m=new La(l.amount);p.isGreaterThan(m)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,l)=>{let c=n[l],[,,,u]=l.split(mo);return u===o&&(s[l]=c),s},{})},getConnectedWalletsDetails:()=>MS(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,l)=>{let c=r[l],u=kn(l);if(u.blockchain===n.chain){let p=e().findToken(u),m=c.amount?new La(c.amount).shiftedBy(-c.decimals):le;s.push({chain:n.chain,symbol:u.symbol,ticker:u.symbol,address:u.address,rawAmount:c.amount,decimal:c.decimals,amount:m.toString(),logo:p?.image||null,usdPrice:p?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Pp(t){return PS()(_S((...e)=>({...Mp(...e),...xp(...e),...Ap(...e),...zc(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Pp,"createAppStore");var _p=$S(null);function S(){let t=FS(_p);if(OS(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(S,"useAppStore");function Dp(t){let e=US();return e.current||(e.current=Pp(t.config)),DS.createElement(_p.Provider,{value:e.current},t.children)}i(Dp,"AppStoreProvider");function yt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=S(),{state:r,getWalletInfo:a}=zS(),s=S().blockchains(),{handleDisconnect:l}=Xt(),c=$c(n()),u=ip(r,a,c,e);u=QS()?u.filter(g=>g.showOnMobile!==!1&&r(g.type).installed):u;let p=lp(u),m=i(g=>!o.find(C=>C.walletType===g&&C.chain===e),"isExperimentalChainNotAdded"),h=qS(()=>{let g=u?.filter(C=>C.state===Ma.CONNECTING)||[];for(let C of g)l(C.type)},[up(u)]);GS(()=>()=>{h()},[]);let d=i(g=>{let C=g.find(y=>y.type===Tn.DEFAULT);return!C||C.state===Ma.NOT_INSTALLED?!1:g.filter(y=>y.state!=Ma.NOT_INSTALLED&&![Tn.DEFAULT,Tn.WALLET_CONNECT_2,Tn.LEDGER].includes(y.type)&&a(y.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),f=i((g,C,k)=>Er(k,C)&&m(g)&&!HS.includes(g)||g==Tn.DEFAULT&&!d(u),"shouldExcludeWallet");return{list:p.filter(g=>!f(g.type,e??"",s)),terminateConnectingWallets:h}}i(yt,"useWalletList");import{Modal as XS}from"@rango-dev/ui";import YS from"react";import{create as jS}from"zustand";var $p="rango-widget";var vn=class{constructor(e){this.state="not-initiated";this.events={};this.init=()=>{this.initEvents(),this.tryClaim()};this.forceClaim=()=>{if(!this.isClaimed()){let e={name:"force-claim",candidateId:this.tabId};this.channel.postMessage(e),setTimeout(()=>{this.isClaimed()||this.claim()},300)}};this.isClaimed=()=>this.state==="claimed";this.destroy=()=>{this.channel.removeEventListener("message",this.handleMessageEvent),document.removeEventListener("visibilitychange",this.handleVisibilityChange),document.removeEventListener("resume",this.handleResume)};this.handleMessageEvent=e=>{let o=e.data.name;switch(o){case"ping":this.claimedByCurrentTab(e.data.pingAt);break;case"pong":this.alreadyClaimedByAnotherTab();break;case"force-claim":this.forceRelease(e.data.candidateId);break;case"force-release":this.tabId===e.data.candidateId&&this.claim();break;default:throw new Error(`${o} is not supported.`)}};this.handleVisibilityChange=async()=>{document.visibilityState==="visible"&&await this.tryClaim()};this.handleResume=async()=>{this.isClaimed()&&(await this.tryClaim(),this.isClaimed()||this.events.onRelease?.())};this.channel=new BroadcastChannel($p),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 KS=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Ho=KS;var ne=Ho(jS()((t,e)=>({isActiveTab:!1,tabManagerInitiated:!1,showActivateTabModal:!1,watermark:"NONE",showProfileBanner:!1,fetchingApiConfig:!1,activateCurrentTab:(o,n)=>{let{showActivateTabModal:r}=e();!r&&n?t({showActivateTabModal:!0}):(r||!n)&&o()},setShowActivateTabModal:o=>{t({showActivateTabModal:o})},setWatermark:o=>{t({watermark:o})},setShowProfileBanner:o=>{t({showProfileBanner:o})}}))),ho=new vn({onInit:()=>ne.setState({tabManagerInitiated:!0}),onClaim:()=>ne.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>ne.setState({isActiveTab:!1})});function J(t){let{watermark:e}=ne();return YS.createElement(XS,{hasWatermark:e==="FULL",...t},t.children)}i(J,"WatermarkedModal");import{i18n as qo}from"@lingui/core";import{Alert as oC,Button as Kp,Divider as Mr,Image as nC,MessageBox as rC,RadioRoot as iC}from"@rango-dev/ui";import pe,{useEffect as aC,useMemo as sC,useState as lC}from"react";import{i18n as RS}from"@lingui/core";import{Checkbox as eC,Radio as tC,Typography as Oa}from"@rango-dev/ui";import mt from"react";function Pa(t,e){return t.find(o=>o.name===e)?.logo}i(Pa,"getBlockchainLogo");import{Image as ZS,styled as wn}from"@rango-dev/ui";var Op=wn("ul",{padding:0,paddingTop:"$10",paddingBottom:"$20",margin:0}),_a=wn("li",{backgroundColor:"$neutral200",padding:"$16",display:"flex",gap:"$8",cursor:"pointer",borderRadius:"$sm",alignItems:"center",variants:{unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),Up=wn("div",{flex:"1",display:"flex",flexDirection:"column",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),zp=wn("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Da=wn(ZS,{variants:{disabled:{true:{opacity:"0.5"}}}});import{Image as Hp,Tooltip as qp,Typography as JS}from"@rango-dev/ui";import It from"react";import{styled as Qp}from"@rango-dev/ui";var $a=Qp("div",{display:"flex",alignItems:"center",padding:0,margin:0}),Lr=Qp("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 Fa=3;function Gp(t){let{chains:e}=t;return It.createElement($a,null,e.slice(0,Fa).map((o,n)=>It.createElement(qp,{key:o.name,container:A(),side:"bottom",align:"start",content:o.name,sideOffset:4},It.createElement(Lr,{firstItem:n===0},It.createElement(Hp,{src:o.logo,size:15})))),e.length>Fa&&It.createElement(qp,{container:A(),side:"bottom",align:"start",sideOffset:4,content:It.createElement($a,null,e.map((o,n)=>It.createElement(Lr,{key:o.name,firstItem:n===0},It.createElement(Hp,{src:o.logo,size:15}))))},It.createElement(Lr,null,It.createElement(JS,{variant:"body",size:"xsmall"},"+",e.length-Fa))))}i(Gp,"SupportedChainsList");function Vp(t){let{onClick:e,type:o,namespace:n}=t,r=S().blockchains();if(n.unsupported)return mt.createElement(_a,{unsupported:!0},mt.createElement(Da,{src:Pa(r,n.id),size:40,disabled:!0}),mt.createElement(zp,null,mt.createElement(Oa,{variant:"label",size:"large"},n.label),mt.createElement(Oa,{variant:"body",size:"xsmall"},RS.t("(Currently not supported)"))));let a=n.chains.length>1;return mt.createElement(_a,{onClick:e},mt.createElement(Da,{src:Pa(r,n.id),size:40}),mt.createElement(Up,{showSupportedChains:a},mt.createElement(Oa,{variant:"label",size:"large"},n.label),a&&mt.createElement(Gp,{chains:n.chains})),o==="radio"?mt.createElement(tC,{value:n.value}):mt.createElement(eC,{checked:t.value}))}i(Vp,"NamespaceListItem");function bn(t){let{targetWallet:e}=t.value,o=e.needsNamespace?.selection==="single",n=e.image,[r,a]=lC([]),s=sC(()=>e.needsNamespace?.data.filter(m=>!m.unsupported),[e?.type]),l=i(m=>{a(o?[m]:h=>h.includes(m)?h.filter(d=>d!==m):h.concat(m))},"onSelect"),c=s?.length===r.length,u=i(()=>{if(o)throw new Error("onSelectAll should not be called on single selection mode.");c?a([]):s&&a(s.map(m=>m.value))},"onSelectAll"),p=i(m=>o?pe.createElement(iC,{value:r?.[0]},m):pe.createElement(pe.Fragment,null,m),"wrapRadioRoot");return aC(()=>{if(!o&&s)if(t.value.defaultSelectedChains?.length){let m=s.filter(h=>h.chains.some(d=>t.value.defaultSelectedChains?.includes(d.name)));a(m.map(h=>h.value))}else a(s.map(m=>m.value))},[]),pe.createElement(pe.Fragment,null,pe.createElement(rC,{type:"info",title:qo.t("Connect {wallet}",{wallet:e.title}),description:qo.t("This wallet supports multiple chains. Choose which chains you'd like to connect to."),icon:pe.createElement(nC,{src:n,size:45})}),o?pe.createElement(pe.Fragment,null,pe.createElement(Mr,{size:20}),pe.createElement(oC,{variant:"alarm",type:"info",title:qo.t("This wallet can only connect to one chain at a time. ")})):pe.createElement(pe.Fragment,null,pe.createElement(Mr,{size:30}),pe.createElement(Kp,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:u},c?qo.t("Deselect all"):qo.t("Select all"))),pe.createElement(Op,null,p(pe.createElement(pe.Fragment,null,e.needsNamespace?.data.map((m,h,d)=>pe.createElement(pe.Fragment,{key:m.id},pe.createElement(Vp,{value:r.includes(m.value),namespace:m,type:o?"radio":"checkbox",onClick:()=>l(m.value)}),h!==d.length-1&&pe.createElement(Mr,{size:10})))))),pe.createElement(Mr,{size:20}),pe.createElement(Kp,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!r.length,onClick:()=>t.onConfirm(r)},qo.t("Connect")))}i(bn,"Namespaces");import{i18n as Go}from"@lingui/core";import{Button as uC,Divider as Yp,Image as mC,MessageBox as dC,Select as fC,TextField as gC}from"@rango-dev/ui";import dt,{useEffect as hC,useState as Zp}from"react";import{namespaces as cC}from"@rango-dev/wallets-shared";var Pr={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Ua(t){let e=t?cC[t].derivationPaths:null;return e?[...e,Pr]:[]}i(Ua,"getDerivationPaths");import{styled as jp,Typography as pC}from"@rango-dev/ui";var Xp=jp("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),za=jp(pC,{paddingLeft:"$10"}),Qa={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"};var Jp="0";function xn(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=Zp(null),[l,c]=Zp(Jp),u=a===Pr.id,p=Ua(o),m=i(({value:d})=>{let f=p?.find(g=>g.id===d);f&&(a===Pr.id&&Number.isNaN(Number(l))&&c(Jp),s(f.id))},"handleDerivationPathItemClick"),h=i(()=>{let d=p.find(f=>f.id===a);if(d)e(d.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return hC(()=>{s(Ua(o)[0]?.id||null)},[o]),dt.createElement(dt.Fragment,null,dt.createElement(Yp,{size:20}),dt.createElement(dC,{type:"info",title:Go.t("Select Derivation Path"),description:Go.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:dt.createElement(mC,{src:n,size:45})}),dt.createElement(Xp,null,dt.createElement(za,{variant:"body",size:"xsmall",color:"$neutral600"},Go.t("Choose Derivation Path Template")),dt.createElement(fC,{value:a||"",options:p.map(d=>({value:d.id,label:d.label})),variant:"filled",handleItemClick:m,styles:{trigger:Qa}}),dt.createElement(Yp,{size:20}),dt.createElement(za,{variant:"body",size:"xsmall",color:"$neutral600"},u?Go.t("Enter Path"):Go.t("Enter Index")),dt.createElement(gC,{type:u?"text":"number",variant:"contained",value:l,onChange:d=>c(d.target.value),style:Qa})),dt.createElement(uC,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!p||!a||!l},Go.t("Confirm")))}i(xn,"DerivationPath");import{i18n as Vo}from"@lingui/core";import{Image as CC,MessageBox as Ha,WalletState as kC}from"@rango-dev/ui";import{useWallets as TC}from"@rango-dev/wallets-react";import yo from"react";import{keyframes as yC,styled as _r}from"@rango-dev/ui";var lW=_r("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),Rp=_r("div",{position:"relative"}),SC=yC({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),eu=_r("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${SC} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),tu=_r("div",{"& img":{borderRadius:"50%"}});function qa(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=TC();return hn(a(n))===kC.CONNECTED?yo.createElement(Ha,{type:"success",title:Vo.t("Wallet Connected"),description:Vo.t("Your wallet is connected, you can use it to swap.")}):o?yo.createElement(Ha,{type:"error",title:Vo.t("Failed to Connect"),description:o||Vo.t("Your wallet is not connected. Please try again.")}):yo.createElement(Ha,{type:"loading",title:Vo.t("Connecting to your wallet"),description:Vo.t("Click connect in your wallet popup."),icon:yo.createElement(Rp,null,yo.createElement(tu,null,yo.createElement(CC,{src:r,size:45})),yo.createElement(eu,null))})}i(qa,"ConnectStatus");import{i18n as Ga}from"@lingui/core";import{Button as vC,Divider as ou,MessageBox as wC}from"@rango-dev/ui";import Dr from"react";function Va(t){let{displayName:e,onConfirm:o}=t;return Dr.createElement(wC,{title:Ga.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:Ga.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},Dr.createElement(ou,{size:18}),Dr.createElement(ou,{size:32}),Dr.createElement(vC,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Ga.t("Confirm")))}i(Va,"ExperimentalChain");function nu(t,e){return t().status==="init"&&!!e}i(nu,"isOnStatus");function En(t){return t().status==="namespace"}i(En,"isOnNamespace");function In(t){return t().status==="derivationPath"}i(In,"isOnDerivationPath");var IC=3e3,AC=300;function Co(t){let e=EC(),[o,n]=ru(!1),[r,a]=ru(),s=i(y=>{a(y.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=yt(),{handleConnect:c,handleDerivationPath:u,handleNamespace:p,getState:m,resetState:h}=Xt(),d=i(y=>{p(t.wallet,y).then(k).catch(s)},"handleConfirmNamespaces"),f=i(y=>{if(!y)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");u(y).then(k).catch(s)},"handleDerivationPathConfirm"),g=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((y,T)=>{let v=y.status==="connected",E=["disconnected","disconnected-unhandled"].includes(y.status);v?(t.onConnect?.(),T||(e.current=setTimeout(g,IC))):E&&g()},"afterConnected");return xC(()=>{if(t.wallet){C();let y=!1,T=!0;i(()=>{setTimeout(()=>{T=!1,y||n(!0)},AC)},"beforeConnecting")(),c(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(E=>{["namespace","derivation-path"].includes(E.status)||(y=!0),k(E,T)}).catch(s)}},[t.wallet]),So.createElement(J,{open:o,onClose:g,onExit:()=>{C(),l(),t.onClose&&t.onClose()},container:A()},nu(m,t.wallet)&&So.createElement(So.Fragment,null,So.createElement(qa,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),So.createElement(bC,{direction:"vertical",size:32})),En(m)&&So.createElement(bn,{onConfirm:d,value:m().namespace}),In(m)&&So.createElement(xn,{onConfirm:f,value:m().derivationPath}))}i(Co,"StatefulConnectModal");import{Provider as MC}from"@rango-dev/wallets-react";import $r,{createContext as PC,useEffect as cu,useMemo as _C,useRef as pu}from"react";import{useEffect as NC}from"react";function iu(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(iu,"hashProviders");function Ka(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=S(),a=n();return NC(()=>{o(),r()},[iu(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(Ka,"useWalletProviders");import{legacyFormatAddressWithNetwork as BC,legacyReadAccountAddress as au}from"@rango-dev/wallets-core/legacy";import{Events as ko}from"@rango-dev/wallets-react";import{isEvmBlockchain as WC}from"rango-sdk";function su(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=S(),{onConnectWalletHandler:l,onDisconnectWalletHandler:c}=t,u=s().filter(WC).map(g=>g.name),p=i((g,C)=>{let[k,,y,,T]=g,v=Ca(k,y,u,C.supportedChainNames,T.isContractWallet);v.length&&e(v,T.namespace)},"onAccountsEvent"),m=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains);k&&p([g,C,k,y,T],{supportedChainNames:v})}if(C===ko.CONNECTED){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}C===ko.PROVIDER_DISCONNECTED&&(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),C===ko.NAMESPACE_DISCONNECTED&&n(g,k)},"handleUpdatesForHub"),h=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=yn(T.supportedBlockchains),E=[],B=[];if(k?.forEach(x=>{let{network:w}=au(x);u.includes(w)?E.push(x):B.push(x)}),r.filter(x=>x.walletType===g).map(x=>BC(x.address,x.chain)).length>0){if(E.length>0){let x=Ca(g,E,u,v,T.isContractWallet);a(g,{chains:x.map(w=>w.chain)})}B.length>0&&a(g,{chains:B.map(x=>{let{network:w}=au(x);return w})})}k?p([g,C,k,y,T],{supportedChainNames:v}):(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}if(C===ko.ACCOUNTS&&y.connected){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForLegacy"),d=i((g,C,k,y,T)=>{if(C===ko.NETWORK&&y.network){let v=`${g}-${y.network}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((g,C,k,y,T)=>{T.isHub?m(g,C,k,y,T):h(g,C,k,y,T),d(g,C,k,y,T)},"handler")}}i(su,"useUpdates");import{LegacyEvents as LC}from"@rango-dev/wallets-core/legacy";function lu(t,e){let[o,n,r,a,s]=e;n!==LC.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(lu,"propagateEvents");var Fr=PC({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function DC(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=S(),a=S().blockchains(),s=S().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:c}=Ka(s.wallets,l),u=pu(),p=pu(),{handler:m}=su({onConnectWalletHandler:u,onDisconnectWalletHandler:p});cu(()=>{n().catch(console.log)},[]),cu(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let h=ne.use.isActiveTab(),d=_C(()=>({onConnectWallet:f=>{u.current=f},onDisconnectWallet:f=>{p.current=f}}),[]);return $r.createElement(Fr.Provider,{value:d},$r.createElement(MC,{allBlockChains:a,providers:c,onUpdateState:(f,g,C,k,y)=>{let T=[f,g,C,k,y];m(...T),t.onUpdateState&&lu(t.onUpdateState,T)},autoConnect:!!h,configs:{wallets:s.wallets}},t.children))}i(DC,"Main");function Or(t){let{config:e,...o}=t;return $r.createElement(Dp,{config:e},$r.createElement(DC,{...o,config:e}))}i(Or,"WidgetWallets");import pa from"react";import $C,{Fragment as FC}from"react";import{MemoryRouter as OC,useInRouterContext as UC}from"react-router";function uu({children:t}){let o=UC()?FC:OC;return $C.createElement(o,null,t)}i(uu,"AppRouter");import{I18nManager as UI}from"@rango-dev/ui";import Ec from"react";import _e from"react";import{useRoutes as EI}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as jo,useRef as jr}from"react";import Ze from"bignumber.js";import{create as qC}from"zustand";import{subscribeWithSelector as GC}from"zustand/middleware";import{i18n as St}from"@lingui/core";import{getRelatedWalletOrNull as HC,RouteEventType as YL}from"@rango-dev/queue-manager-rango-preset";import Qe from"bignumber.js";import{PendingSwapNetworkStatus as Vr}from"rango-types";import{i18n as Oe}from"@lingui/core";var ee=i(()=>({genericServerError:Oe.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Oe.t("Please reset your liquidity sources."),description:Oe.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Oe.t("No Routes Found."),description:Oe.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:Oe.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Oe.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Oe.t("High Price Impact"),title:Oe.t("Price impact is too high!"),description:Oe.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Oe.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Oe.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Oe.t("USD Price Unknown"),title:Oe.t("USD Price Unknown, Cannot calculate Price Impact."),description:Oe.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Oe.t("Confirm USD Price Unknown")}}),"errorMessages");function mu(t){switch(t.type){case 0:return t.diagnosisMessage??ee().noResultError.title;case 1:return ee().genericServerError;default:return""}}i(mu,"getQuoteErrorMessage");import{i18n as Ur}from"@lingui/core";var To=i(()=>({connectWallet:Ur.t("Connect Wallet"),swap:Ur.t("Swap"),swapAnyway:Ur.t("Swap anyway"),ethWarning:Ur.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function ja(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(ja,"getFeeLabel");var Xa=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],du=100,fu=30,gu=15,hu=60;var yu=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],Su=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as QC}from"@rango-dev/queue-manager-rango-preset";import DL from"bignumber.js";function ku(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(ku,"getRequiredBalanceOfWallet");function $t(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i($t,"getPriceImpactLevel");function Qr(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=QC(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=uo(a?a.toBlockchain:n.fromBlockchain,e),c=uo(r.toBlockchain,e),u=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),p=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:u,toBlockchain:c,toToken:p,inputAmount:m}}i(Qr,"createRetryQuote");function Ko(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=An(o),s=ft(o);if(o&&a&&s){let u=Dt(a.toString(),s.toString());if(!!u&&xu(a,u)){let m=qr(o?.swaps,n),h=$t(u);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:u,totalFee:m,warningLevel:h}}}if(e&&Au(e,o))return{type:4,usdValueChange:P(ft(o)?.minus(ft(e)??0).toString()??"0",null,2),percentageChange:P(Dt(ft(e)??"1",ft(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let l=Gr(o.swaps),c=r>Br;if(Iu(t.userSlippage.toString(),l)){if(c&&parseFloat(l??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:Eu(o,r),minRequiredSlippage:l};return null}i(Ko,"generateQuoteWarnings");function Tu(t){return![4].includes(t.type)}i(Tu,"isQuoteWarningConfirmationRequired");function Dt(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Ya(t.toString(),e.toString());return n&&n<0?n:null}i(Dt,"getPriceImpact");var vu=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"),Hr=i((t,e)=>e.sort((o,n)=>{let r=i(u=>u.scores?.find(p=>p.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),c=n.requestId.toLowerCase();return l.localeCompare(c)}),"sortQuotesBy"),wu=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),bu=i(t=>{let e=i((o,n)=>{let r=Xa.indexOf(o.value),a=Xa.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function xu(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return yu.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new Qe(r)))}i(xu,"hasHighValueLoss");function Nu(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new Qe(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Qe(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(Nu,"hasLimitError");function Bu(t){let e=(t||[]).filter(l=>{let c=l.fromAmountMinValue?new Qe(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new Qe(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?c?.gte(l.fromAmount)||u?.lte(l.fromAmount):c?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new Qe(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new Qe(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=St.t({id:"Required: >= {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=St.t({id:"Required: > {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=St.t({id:"Required: <= {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=St.t({id:"Required: < {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=ee().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Bu,"getLimitErrorMessage");function Wu(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:c}=t;return e!=="success"?{title:To().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:To().swap,action:"confirm-swap",disabled:!0}:s?{title:To().swapAnyway,action:"confirm-warning",disabled:!1}:c?{title:To().ethWarning,action:"confirm-warning",disabled:!1}:{title:To().swap,action:"confirm-swap",disabled:!1}:{title:To().connectWallet,action:"connect-wallet",disabled:!1}}i(Wu,"getSwapButtonState");function Za(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(le))&&e&&e!=="0"&&n!==0)}i(Za,"canComputePriceImpact");function Ja(t,e){let o=le;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new Qe(r.amount).multipliedBy(a||0))}return o}i(Ja,"getUsdFeeOfStep");function qr(t,e){return t.reduce((o,n)=>o.plus(Ja(n,e)),le)}i(qr,"getTotalFeeInUsd");function Ra(t){let e=le;return e=e.plus(new Qe(t.amount).multipliedBy(t.price||0)),e}i(Ra,"getUsdFee");function Lu(t){return t.reduce((e,o)=>e.plus(Ra(o)),le)}i(Lu,"getTotalFeesInUsd");function Mu(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(Mu,"getFeesGroup");function Pu(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(Pu,"checkSlippageErrors");function Eu(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(Eu,"checkSlippageWarnings");function Gr(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(Gr,"getMinRequiredSlippage");function Iu(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Iu,"hasProperSlippage");function _u(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:c,slippage:u,affiliateRef:p,affiliatePercent:m,affiliateWallets:h,destination:d,contractCall:f}=t,g=a?.reduce((y,T)=>(y[T.chain]=T.address,y),{}),C=[];return r?.forEach(y=>{C.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:m??void 0,affiliateWallets:h??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:C,selectedWallets:g??{},slippage:u.toString(),contractCall:f,...d&&{destination:d},...c&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!c&&{swapperGroups:l?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i(_u,"createQuoteRequestBody");function Du(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Du,"getWalletsForNewSwap");function An(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new Qe(e).multipliedBy(o)}i(An,"getUsdInputFrom");function ft(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new Qe(e).multipliedBy(o)}i(ft,"getUsdOutputFrom");function Ya(t,e){return new Qe(e).div(new Qe(t)).minus(1).multipliedBy(du).toNumber()}i(Ya,"getPercentageChange");function Au(t,e){let o=An(t),n=ft(t),r=ft(e);if(!o||!n||!r)return!1;let a=Ya(n.toString(),r.toString());return Su.some(({threshold:s,minInput:l})=>a<=s&&o.isGreaterThanOrEqualTo(l))}i(Au,"isOutputAmountChangedExcessively");function $u(t,e,o){let n=t.validationStatus,r=go({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>ku(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,c=P(new Qe(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),u=P(new Qe(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),p="";return s.reason==="FEE"&&(p=St.t(" for network fee")),s.reason==="INPUT_ASSET"&&(p=St.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(p=St.t(" for input and network fee")),St.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:u,symbol:l,reason:p,currentAmount:c,blockchain:pt(s.asset.blockchain,o)}})})}i($u,"generateBalanceWarnings");function Nn(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Vr.NetworkChanged}i(Nn,"isNetworkStatusInWarningState");function Fu(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,"")),Nn(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?HC(t,e):null)?.walletType,p=u?o?.(u)?.name:null;switch(e?.networkStatus){case Vr.WaitingForConnectingWallet:r=p?St.t("Connect {wallet}",{wallet:p}):r;break;case Vr.WaitingForQueue:r=r||St.t("Waiting for other running tasks to be finished");break;case Vr.WaitingForNetworkChange:r=r||St.t("Waiting for changing wallet network");break;default:r=r||"";break}}a=a||"",r=r||"";let l=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:l}}}i(Fu,"getSwapMessages");function Ou(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(Ou,"getLastConvertedTokenInFailedSwap");function Uu(t){return t.status==="failed"}i(Uu,"shouldRetrySwap");function zu(t,e,o,n,r,a){if(!n||t)return!0;let s=go({filter:"all",quote:n}),l=go({filter:"required",quote:n}),c=s.every(m=>r.some(h=>h.chain===m)),u=l.every(m=>r.some(h=>h.chain===m)),p=o&&a?$o(a,o):!1;return!e&&!c||e&&!o||e&&!!o&&(!p||!u)}i(zu,"isConfirmSwapDisabled");function Qu(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(Qu,"isTokensIdentical");var Kr=i((t,e)=>t?.usdPrice?new Ze(e||le).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),O=Ho(qC()(GC(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Ze(0),outputUsdValue:new Ze(0),toBlockchain:null,toToken:null,refetchQuote:!0,sortStrategy:"SMART",selectedQuote:null,quotes:null,error:null,warning:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null,quoteWarningsConfirmed:!1,updateQuotePartialState:(e,o)=>t(n=>({...n,[e]:o})),setSelectedQuote:e=>t(o=>{let n=null,r=le,a=o.inputUsdValue;return gn(o.inputAmount)?(e&&(n=e?.outputAmount?new Ze(e?.outputAmount):null,a=An(e)??le,r=ft(e)??le),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new Ze(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new Ze(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new Ze(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:Kr(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 Ze(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:null,outputUsdValue:new Ze(0),selectedQuote:null},...!!o.fromToken&&{inputUsdValue:Kr(o.fromToken,e)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Kr(n??null,s),outputUsdValue:new Ze(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?Kr(e.toToken,e.outputAmount?.toString()||""):new Ze(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new Ze(0),inputUsdValue:new Ze(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new Ze(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})})))),Hu=O.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&ye.emit("quoteEvent",{type:"quoteInputUpdate",payload:{fromBlockchain:t.fromBlockchain?.name,toBlockchain:t.toBlockchain?.name,fromToken:t.fromToken?{symbol:t.fromToken.symbol,name:t.fromToken.name,address:t.fromToken.address}:void 0,toToken:t.toToken?{symbol:t.toToken.symbol,name:t.toToken.name,address:t.toToken.address}:void 0,requestAmount:t.inputAmount}}),t.selectedQuote?.requestId!==e.selectedQuote?.requestId&&ye.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function qu(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:c,toBlockchain:u}=O(),p=S().config,m=S().fetchStatus,h=S().blockchains(),{findToken:d}=S(),{setAffiliateRef:f,setAffiliatePercent:g,setAffiliateWallets:C}=S(),k=p?.from?.tokens,y=p?.from?.blockchains,T=p?.to?.tokens,v=p?.to?.blockchains,E=jr(void 0),B=jr(void 0),N=jr(void 0),x=jr(void 0);jo(()=>{typeof p.amount<"u"&&t(p.amount.toString())},[p?.amount]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.from?.blockchain),b=p?.from?.token,I=b&&d(b);(w||!w&&N.current)&&n(w??null),I?a({token:I,meta:{blockchains:h}}):!I&&E.current&&a({token:null}),N.current=p?.from?.blockchain,E.current=p?.from?.token}},[p?.from?.token?.symbol,p?.from?.token?.address,p?.from?.token?.blockchain,p?.from?.blockchain,m]),jo(()=>{va(s,k)&&a({token:null}),wa(c,y)&&n(null)},[k,y]),jo(()=>{va(l,T)&&a({token:null}),wa(u,v)&&o(null)},[T,v]),jo(()=>{if(m==="success"){r();let w=h.find(_=>_.name===p?.to?.blockchain),b=p?.to?.token,I=b&&d(b);(w||!w&&x.current)&&o(w??null),I?e({token:I,meta:{blockchains:h}}):!I&&B.current&&e({token:null}),x.current=p?.to?.blockchain,B.current=p?.to?.token}},[p?.to?.token?.symbol,p?.to?.token?.address,p?.to?.token?.blockchain,p?.to?.blockchain,m]),jo(()=>{f(p?.affiliate?.ref??null),g(p?.affiliate?.percent??null),C(p?.affiliate?.wallets??null)},[p?.affiliate?.ref,p?.affiliate?.percent,p?.affiliate?.wallets])}i(qu,"useSyncStoresWithConfig");import{useEffect as os,useRef as VC}from"react";import{useInRouterContext as KC,useLocation as jC,useSearchParams as XC}from"react-router-dom";function es(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(es,"convertTokenSearchParamToAsset");function ts(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(ts,"tokenToSearchParam");function rs(){let t=jC(),[e,o]=XC(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:c,setToBlockchain:u,setFromToken:p,setToToken:m,setInputAmount:h}=O(),d=S().fetchStatus,f=S().blockchains(),g=KC(),{updateIframe:C,updateCampaignMode:k}=S(),y=S().isInCampaignMode(),T=VC(),{findToken:v}=S(),E=i(()=>{let N={};for(let[L,K]of e.entries())L.startsWith("utm_")&&(N[L]=K);let x=e.get("fromAmount"),w=e.get("fromBlockchain"),b=e.get("fromToken"),I=e.get("toBlockchain"),_=e.get("toToken"),M=e.get("autoConnect"),q=e.get("clientUrl"),R=e.get("liquiditySources"),X=e.get("blockchain");return{fromAmount:x,fromBlockchain:w,fromToken:b,toBlockchain:I,toToken:_,autoConnect:M,clientUrl:q,liquiditySources:R,utmQueryParams:N,blockchain:X}},"getUrlSearchParams"),B=i(N=>{for(let x in N)N[x]||delete N[x];o(N,{replace:!0})},"updateUrlSearchParams");os(()=>{let{autoConnect:N,clientUrl:x,utmQueryParams:w,blockchain:b}=E();g&&d==="success"&&B({fromBlockchain:n?.name,fromToken:ts(a),toBlockchain:r?.name,toToken:ts(s),fromAmount:l,autoConnect:N??void 0,clientUrl:x??void 0,blockchain:b??void 0,liquiditySources:y?T.current:void 0,...w})},[t.pathname,l,n,a,r,s,y]),os(()=>{if(!g)return;let N=E();if(!T.current&&N.liquiditySources&&(T.current=N.liquiditySources),N.fromAmount&&h(N.fromAmount),d==="success"){let x=f.find(_=>_.name===N.fromBlockchain),w=N.fromToken&&x?v(es(N.fromToken,x)):void 0,b=f.find(_=>_.name===N.toBlockchain),I=N.toToken&&b?v(es(N.toToken,b)):void 0;x&&(c(x),w&&p({token:w,meta:{blockchains:f}})),b&&(u(b),I&&m({token:I,meta:{blockchains:f}}))}},[d]),os(()=>{let{clientUrl:N,liquiditySources:x}=E();C("clientUrl",N||void 0),k("liquiditySources",x?.split(",")??void 0)},[])}i(rs,"useSyncUrlAndStore");import{i18n as Ro}from"@lingui/core";import{Alert as uT,Button as mT,darkTheme as dT,Divider as Ls,DoneIcon as fT,styled as gT,TextField as hT,Typography as yT}from"@rango-dev/ui";import ze,{useState as ST}from"react";import{useNavigate as CT,useSearchParams as kT}from"react-router-dom";import{ChevronRightIcon as YC,Divider as Xu,Image as ZC,Typography as Yu}from"@rango-dev/ui";import Ct from"react";import{darkTheme as Gu,styled as is}from"@rango-dev/ui";var Vu=is("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Gu} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Gu} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),Ku=is("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),ju=is("div",{display:"flex"});function as(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return Ct.createElement(Ku,null,Ct.createElement(Yu,{size:"large",variant:"label"},n),Ct.createElement(Xu,{size:10}),Ct.createElement(Vu,{onClick:s?void 0:e,disabled:s},Ct.createElement(ju,null,r&&Ct.createElement(Ct.Fragment,null,Ct.createElement(ZC,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),Ct.createElement(Xu,{size:4,direction:"horizontal"})),Ct.createElement(Yu,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),Ct.createElement(YC,{size:12,color:"black"})))}i(as,"BlockchainSelectorButton");import{i18n as cs}from"@lingui/core";import{Button as ek,Divider as om,MessageBox as tk}from"@rango-dev/ui";import Zt,{useEffect as nm,useState as ps}from"react";import{i18n as Xr}from"@lingui/core";import{Button as tm,Divider as vo,ExternalLinkIcon as JC,Image as RC,Typography as Yo}from"@rango-dev/ui";import Se from"react";var Zu="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function Ju(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(Ju,"generateExplorerLink");import{darkTheme as Xo,styled as Ru}from"@rango-dev/ui";var ss=Ru("a",{textDecoration:"none",color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${Xo} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${Xo} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),em=Ru("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${Xo} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${Xo} &`]:{color:"$colors$neutral900"}}});function ls(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,l=Ju(n.address,s),c=i(()=>window.open(Zu,"_blank"),"onClickLearnMore");return Se.createElement(J,{open:e,dismissible:!0,onClose:o,onExit:r,container:A()},Se.createElement(em,null,Se.createElement(RC,{src:n.image===""?Sr:n.image,size:45,type:"circular"}),Se.createElement(vo,{size:4}),Se.createElement(Yo,{variant:"title",size:"medium"},n.symbol),Se.createElement(Yo,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),Se.createElement(vo,{size:4}),Se.createElement(Yo,{variant:"body",size:"medium"},l?Se.createElement(ss,{hasHover:!0,href:l,target:"_blank",rel:"nofollow noreferrer"},n.address,Se.createElement(JC,{size:12,color:"gray"})):Se.createElement(ss,null,n.address)),Se.createElement(vo,{size:4}),n.coinSource&&Se.createElement(Yo,{className:"_coin-source",variant:"body",size:"xsmall"},Xr.t("via")," ",Se.createElement(Yo,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),Se.createElement(vo,{size:"32"}),Se.createElement(Yo,{size:"medium",variant:"body",className:"_custom-token-description"},Xr.t("This token is not part of our verified token list. please verify its source and make sure to understand all associated risks before proceeding."))),Se.createElement(vo,{size:40}),Se.createElement(vo,{size:10}),Se.createElement(tm,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Xr.t("Import Anyway")),Se.createElement(vo,{size:10}),Se.createElement(tm,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:c},Xr.t("Learn More")))}i(ls,"CustomTokenModal");function Bn(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:l,onExitErrorModal:c,onExitImportModal:u}=t,{setCustomToken:p}=S(),[m,h]=ps(!1),[d,f]=ps(!1),[g,C]=ps(!1),k=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),T=i(()=>{C(!0),y()},"handleErrorModalButtonClick"),v=i(()=>{g&&n?.type==="network-error"&&(C(!1),k()),c()},"handleExit"),E=i(()=>{e&&(p(e),l())},"handleSubmit");return nm(()=>{n&&h(!0)},[n]),nm(()=>{o&&e&&f(!0)},[o,e]),Zt.createElement(Zt.Fragment,null,Zt.createElement(J,{open:m,dismissible:!0,onClose:y,onExit:v,container:A()},Zt.createElement(tk,{title:n?.title??"",type:"error",description:n?.message||cs.t("Failed Network, Please retry.")},Zt.createElement(om,{size:40}),Zt.createElement(om,{size:10}),Zt.createElement(ek,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:T},n?.type==="network-error"?cs.t("Retry"):cs.t("Add another custom token")))),o&&e&&Zt.createElement(ls,{blockchain:o,token:e,onSubmitClick:E,onClose:()=>f(!1),open:d,onExit:u}))}i(Bn,"ImportCustomToken");import{useManager as aT}from"@rango-dev/queue-manager-react";import{BottomLogo as sT,Divider as Wm,Header as lT}from"@rango-dev/ui";import be,{useEffect as ni,useRef as Lm,useState as Mm}from"react";import{useRef as ok}from"react";function Yr(){return window.self!==window.top}i(Yr,"isAppLoadedIntoIframe");function us(){let t=ok(null),{iframe:e}=S(),o=Yr()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let c of l)n({type:"widget_height",data:{height:c.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(us,"useIframe");import{useNavigate as nk}from"react-router-dom";function Ue(){let t=nk();return()=>t(-1)}i(Ue,"useNavigateBack");import{createTheme as Ss,darkTheme as yk,lightTheme as Sk}from"@rango-dev/ui";import{useEffect as Ck,useState as kk}from"react";import{theme as gk,darkColors as hk}from"@rango-dev/ui";import hs from"react";function rk(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(rk,"expandShortHexColor");function ik(t){return/[0-9]+$/.test(t)}i(ik,"isOverridingColor");function ak(t,e){return t.padStart(e,"0")}i(ak,"pad");function ms(t){let e=Math.min(Math.max(Math.round(t),0),255);return ak(e.toString(16),2)}i(ms,"intToHex");function sk(t){return`#${ms(t.red)}${ms(t.green)}${ms(t.blue)}`}i(sk,"rgbToHex");function lk(t){let e=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);return{red:e,green:o,blue:n}}i(lk,"hexToRGB");function ck(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(ck,"generateShade");function pk(t,e){let o=.11*e;return{red:t.red+(255-t.red)*o,green:t.green+(255-t.green)*o,blue:t.blue+(255-t.blue)*o}}i(pk,"generateTint");function uk(t){return rm(t,ck)}i(uk,"calculateShades");function mk(t){return rm(t,pk)}i(mk,"calculateTints");function rm(t,e){let o=lk(t),n=[];for(let r=1;r<9;r++)n.push(sk(e(o,r)));return n}i(rm,"calculateColors");function ds(t,e,o){let a=mk(t).reverse().concat(t),s=uk(t),l=a.concat(s),c={},u=l.length;for(let p=0;p<u;p++){let m=100+(o?u-1-p:p)*50;c[`${e}${m}`]=l[p]}return c}i(ds,"createTintsAndShades");function fs(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)&&!ik(r)){let c=rk(a);Object.assign(n,ds(c,r,s))}}return{...n,...e}}i(fs,"expandToGenerateThemeColors");var im=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),dk=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=im(o%52)+e;return im(o%52)+e},"toAlphabeticName"),fk=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),gs=i(t=>dk(fk(5381,JSON.stringify(t))>>>0),"toHash");function ys(t){let e=gk.colors,o={...e,...hk},n,r;if(t?.light){let s={colors:fs(e,t.light)};n={id:`${Ta}-light-${gs(s)}`,tokens:s}}if(t?.dark){let s={colors:fs(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Ta}-dark-${gs(s)}`,tokens:s}}return{light:n,dark:r}}i(ys,"customizedThemeTokens");function am(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>hs.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(hs.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(hs.cloneElement(e,{key:l}))}}),o}i(am,"joinList");function sm(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(sm,"doesWindowPreferDarkColorScheme");function Zo(t){let{colors:e,fontFamily:o=Kc,borderRadius:n=gp,secondaryBorderRadius:r=hp}=t,[a,s]=kk(sm()?"dark":"light"),{theme:l}=S(),{dark:c,light:u}=ys(e),p=Ss({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[p.className,Sk.className],h=[p.className,yk.className];if(u){let f=Ss(u.id,u.tokens);m.push(f.className)}if(c){let f=Ss(c.id,c.tokens);h.push(f.className)}return Ck(()=>{let f=i(g=>{g.matches?s("dark"):s("light")},"switchThemeListener");return sm()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",f),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",f)}},[]),{activeTheme:i(()=>{let f=m.join(" "),g=h.join(" ");return l==="auto"?a==="dark"?g:f:l==="dark"?g:f},"getActiveTheme"),mode:l==="auto"?a:l}}i(Zo,"useTheme");var gt=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as lm}from"@lingui/core";import{Alert as Tk,Button as vk}from"@rango-dev/ui";import cm from"react";function Cs(t){return cm.createElement(Tk,{action:cm.createElement(vk,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},lm.t("Activate this tab")),type:"warning",variant:"alarm",title:lm.t("Another tab is open and handles transactions.")})}i(Cs,"ActivateTabAlert");import{i18n as ks}from"@lingui/core";import{Button as wk,Divider as bk,MessageBox as xk}from"@rango-dev/ui";import Zr from"react";function Ts(t){let{open:e,onClose:o,onConfirm:n}=t;return Zr.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Zr.createElement(xk,{title:ks.t("Activate current tab"),type:"warning",description:ks.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.")},Zr.createElement(bk,{size:20}),Zr.createElement(wk,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},ks.t("Confirm"))))}i(Ts,"ActivateTabModal");import{ChevronLeftIcon as Ak}from"@rango-dev/ui";import ym from"react";import{css as Ek,darkTheme as pm,IconButton as Ik,styled as wo}from"@rango-dev/ui";var At=wo(Ik,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${pm} &`]:{backgroundColor:"$neutral"}}}),um=wo("div",{position:"absolute",background:"$secondary500",[`.${pm} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Jt=wo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),mm=wo("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),dm=wo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),fm=wo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),gm=Ek({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),hm=wo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function vs(t){return ym.createElement(At,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},ym.createElement(Ak,{color:"black",size:16}))}i(vs,"BackButton");import{i18n as Nk}from"@lingui/core";import{Button as Bk,Typography as Wk}from"@rango-dev/ui";import ws from"react";function bs(t){return ws.createElement(Jt,null,ws.createElement(Bk,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},ws.createElement(Wk,{variant:"label",size:"medium",color:"error500"},Nk.t("Cancel"))))}i(bs,"CancelButton");import{i18n as Lk}from"@lingui/core";import{Image as Mk,Tooltip as Pk,WalletIcon as _k}from"@rango-dev/ui";import bo from"react";function xs(t){let{list:e}=yt(),o=e.filter(r=>r.state==="connected"),n=o.length?bo.createElement("div",{className:gm()},o.map(r=>bo.createElement(hm,{key:r.title},bo.createElement(Mk,{src:r.image,size:14})))):Lk.t("Connect Wallet");return bo.createElement(Pk,{container:t.container,side:"bottom",content:n},bo.createElement(At,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&bo.createElement(um,null),bo.createElement(_k,{size:18,color:"black"})))}i(xs,"WalletButton");import{i18n as Rr}from"@lingui/core";import{NotificationsIcon as Zk,Popover as Jk,SettingsIcon as Rk,Tooltip as ei,TransactionIcon as eT}from"@rango-dev/ui";import Be from"react";import{Notifications as Ok}from"@rango-dev/ui";import Uk from"react";import{useNavigate as zk}from"react-router-dom";import{create as Dk}from"zustand";import{persist as $k,subscribeWithSelector as Fk}from"zustand/middleware";var we=Ho(Dk()($k(Fk((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(c=>c.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(c=>c.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function Es(){let t=zk(),{getNotifications:e,clearNotifications:o}=we(),n=e(),r=S().blockchains(),{findToken:a}=S();return Uk.createElement(Ok,{list:n,getBlockchainImage:l=>Fc(l,r),getTokenImage:l=>a(l)?.image,onClickItem:i(l=>{t(`${F.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(Es,"NotificationContent");import{useManager as Qk}from"@rango-dev/queue-manager-react";import{InProgressIcon as Hk}from"@rango-dev/ui";import Sm from"react";var qk=i(()=>{let{manager:t}=Qk();return gt(t).map(({swap:o})=>o).find(o=>o.status==="running")?Sm.createElement(fm,null,Sm.createElement(Hk,{color:"info",size:6})):null},"InProgressTransactionBadge"),Cm=qk;import{EventSeverity as Gk}from"@rango-dev/queue-manager-rango-preset";import{Typography as Vk}from"@rango-dev/ui";import km from"react";function Tm(){let{getNotifications:t}=we(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===Gk.WARNING);return o?km.createElement(mm,{isSever:n},km.createElement(Vk,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(Tm,"NotificationsBadge");import{RefreshProgressButton as Kk}from"@rango-dev/ui";import Is,{useEffect as jk,useState as vm}from"react";var Xk=1e3,wm=60,Yk=100;function Jr({onClick:t}){let[e,o]=vm(0),[n,r]=vm(!1),a=i(c=>{document.hidden&&c&&s(c)},"handleVisibilityChange");jk(()=>{let c;return t?c=window.setInterval(()=>{o(u=>u+1),e===wm&&l()},Xk):s(c),document.addEventListener("visibilitychange",()=>a(c)),()=>{document.removeEventListener("visibilitychange",()=>a(c)),c&&clearInterval(c)}},[e,t]);let s=i(c=>{c&&clearInterval(c),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return Is.createElement(At,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},Is.createElement(dm,{onTransitionEnd:()=>r(!1),isRefetched:n},Is.createElement(Kk,{size:22,color:t?"black":"gray",progress:e/wm*Yk})))}i(Jr,"RefreshButton");function xo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=S(),l=Ye("notification",s)||r.includes("notifications");return Be.createElement(Be.Fragment,null,!r.includes("refresh")&&Be.createElement(ei,{container:a||A(),side:"top",content:Rr.t("Refresh")},Be.createElement(Jr,{onClick:e})),!l&&Be.createElement(Jk,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:A(),content:Be.createElement(Es,null)},Be.createElement("div",null,Be.createElement(ei,{container:A(),side:"top",content:Rr.t("Notifications")},Be.createElement(At,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},Be.createElement(Zk,{size:18,color:"black"}),Be.createElement(Tm,null))))),!r.includes("settings")&&Be.createElement(ei,{container:A(),side:"top",content:Rr.t("Settings")},Be.createElement(At,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},Be.createElement(Rk,{size:18,color:"black"}))),!r.includes("history")&&Be.createElement(ei,{container:A(),side:"top",content:Rr.t("History")},Be.createElement(At,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},Be.createElement(eT,{size:18,color:"black"}),Be.createElement(Cm,null))))}i(xo,"HeaderButtons");import{i18n as As}from"@lingui/core";import{Divider as xm,MessageBox as nT,RefreshIcon as rT}from"@rango-dev/ui";import Jo from"react";import{Button as tT,styled as oT}from"@rango-dev/ui";var bm=oT(tT,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Ns(t){let{open:e,onClose:o}=t;return Jo.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Jo.createElement(nT,{title:As.t("Something went wrong"),type:"error",description:As.t("Something went wrong. Please refresh the app.")},Jo.createElement(xm,{size:30}),Jo.createElement(bm,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},Jo.createElement(rT,{size:20,color:"primary"}),Jo.createElement(xm,{size:4,direction:"horizontal"}),As.t("Refresh"))))}i(Ns,"RefreshModal");function Bs(t){let e=t.target;if(e){let o=e.scrollTop,n=A();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(Bs,"onScrollContentAttachStatusToContainer");import{css as iT,styled as ti}from"@rango-dev/ui";var Em="700px",oi=iT({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Im=ti("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:Em},fixed:{height:Em}},showBanner:{true:{overflow:"visible"}}}}),Am=ti("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Nm=ti("div",{padding:"0 $20 $10","& .footer__alert":{paddingTop:"$10"},"& .footer__logo":{opacity:0,transition:"opacity 1s ease-in-out","&.logo__show":{opacity:1},"&.logo__hidden":{visibility:"hidden"}}}),Bm=ti("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function oe(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=us(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l,connectedWallets:c,config:{__UNSTABLE_OR_INTERNAL__:u}}=S(),[p,m]=Mm(!1),{config:{features:h,theme:d}}=S(),{watermark:f}=ne(),g=f==="FULL",{activeTheme:C}=Zo(d||{}),[k,y]=Mm(!1),T=Ye("connectWalletButton",h),{isActiveTab:v,tabManagerInitiated:E,showActivateTabModal:B,setShowActivateTabModal:N,activateCurrentTab:x}=ne(),w=Ue(),{manager:b}=aT(),_=gt(b).map(({swap:K})=>K).some(K=>K.status==="running"),M=i(()=>x(ho.forceClaim,_),"onActivateTab"),q=i(()=>{r.onWallet?.()},"onConnectWallet"),R=typeof r.hasBackButton>"u"||r.hasBackButton,X=Lm(null),L=Lm(null);return ni(()=>{let K=(u?.swapBoxBanner?.routes?.length??0)===0,ae=!!u?.swapBoxBanner?.routes?.some(Q=>location.pathname.endsWith(Q));y(!!u?.swapBoxBanner&&(K||ae))},[u?.swapBoxBanner?.routes?.toString(),location.pathname]),ni(()=>(Yr()&&L.current&&e(L.current),()=>{o()}),[]),ni(()=>(X.current?.addEventListener("scroll",Bs),()=>{X.current?.removeEventListener("scroll",Bs)}),[]),ni(()=>{m(l==="failed")},[l]),be.createElement(Im,{height:s,id:Fe.SWAP_BOX_ID,className:`${C()} ${oi()}`,ref:L,showBanner:k},be.createElement(lT,{prefix:R?be.createElement(vs,{onClick:()=>{w(),r.onBack?.()}}):null,title:r.title,suffix:be.createElement(be.Fragment,null,r.suffix,r.onWallet&&!T&&be.createElement(xs,{container:A(),onClick:q,isConnected:!!c?.length}),r.onCancel&&be.createElement(bs,{onClick:r.onCancel}))}),be.createElement(Am,{ref:X},n),be.createElement(Ts,{open:B,onClose:()=>N(!1),onConfirm:M}),be.createElement(Nm,null,be.createElement("div",{className:"footer__content"},E&&!v&&be.createElement("div",{className:"footer__alert"},be.createElement(Cs,{onActivateTab:M}),be.createElement(Wm,{size:10})),a),be.createElement(Wm,{size:12}),be.createElement("div",{className:`footer__logo ${g?"logo__show":"logo__hidden"}`},be.createElement(sT,null))),k&&be.createElement(Bm,null,u?.swapBoxBanner?.element),be.createElement(Ns,{open:p,onClose:()=>m(!1)}))}i(oe,"Layout");import{styled as cT}from"@rango-dev/ui";var Pm="$20 $20 $10 $20",Wn=cT("div",{padding:Pm,overflowY:"auto",flexGrow:1});import{styled as pT}from"@rango-dev/ui";var re=pT("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as Rt}from"@lingui/core";import{useState as Ws}from"react";function _m(){let[t,e]=Ws(!1),[o,n]=Ws(null),[r,a]=Ws(null),{findToken:s}=S(),l=S().customTokens(),c=i(()=>{a(null),e(!1),n(null)},"resetState");function u(m,h){switch(m){case"duplicated":return{type:m,title:Rt.t("Duplicate Token"),message:Rt.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:m,title:Rt.t("Token Already Exists"),message:Rt.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:m,title:Rt.t("Token Not Found"),message:Rt.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:h}})};case"network-error":return{type:m,title:Rt.t("Network error"),message:Rt.t("An error occurred while retrieving token data.")}}}return i(u,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:m,tokenAddress:h})=>{e(!0);try{if(l.some(k=>k.address?.toLowerCase()===h.toLowerCase())){let k=u("duplicated");n(k);return}let f=await ot().getCustomToken({blockchain:m,address:h});if(!f||!f.token||f.error){let k=u("not-found",m);n(k);return}let g=f.token;if(s({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let k=u("token-exist");n(k);return}return a({...g,warning:!0})}catch(d){if(d.code==="ERR_BAD_REQUEST"){let f=u("not-found",m);n(f);return}n(u("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:c}}i(_m,"useFetchCustomToken");var TT=gT("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${dT} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Dm(){let t=CT(),[e]=kT(),o=Ue(),n=S().blockchains(),r=e.get("blockchain")||"",a=uo(r,n),[s,l]=ST(""),{fetchCustomToken:c,token:u,loading:p,error:m,resetState:h}=_m(),d=!!a&&$o(a,s),f=!a||!s||!d,g=i(()=>{a&&c({blockchain:r,tokenAddress:s})},"getCustomToken");return ze.createElement(oe,{header:{title:Ro.t("Add Custom Token")}},ze.createElement(re,null,ze.createElement(TT,null,ze.createElement("div",null,ze.createElement(as,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:Ro.t("Select chain"),placeholder:Ro.t("Select chain")}),ze.createElement(Ls,{size:"24"}),ze.createElement(yT,{size:"large",variant:"label"},Ro.t("Enter Address")),ze.createElement(Ls,{size:10}),ze.createElement(hT,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:Ro.t("Enter token address"),size:"large",value:s,suffix:!!s&&d&&ze.createElement(fT,{color:"success",size:12}),onChange:C=>l(C.target.value)}),!d&&!!s&&ze.createElement(ze.Fragment,null,ze.createElement(Ls,{size:4}),ze.createElement(uT,{type:"error",variant:"alarm",title:"Invalid Address"}))),ze.createElement(mT,{id:"widget-add-custom-token-import-btn",disabled:f,type:"primary",variant:"contained",loading:p,size:"large",onClick:g},Ro.t("Import"))),ze.createElement(Bn,{token:u,blockchain:a??void 0,address:s,error:m??void 0,fetchCustomToken:c,onCloseErrorModal:()=>{m?.type!=="network-error"&&l("")},onImport:o,onExitErrorModal:h,onExitImportModal:h})))}i(Dm,"AddCustomTokenPage");import{i18n as ll}from"@lingui/core";import{useManager as rw}from"@rango-dev/queue-manager-react";import{Alert as iw,Button as aw,css as pl,Divider as cl,IconButton as Wf,styled as sw,Typography as lw,WalletIcon as cw}from"@rango-dev/ui";import Le,{useEffect as Wi,useLayoutEffect as pw,useRef as uw,useState as qn}from"react";import{useNavigate as mw}from"react-router-dom";import{i18n as Eo}from"@lingui/core";import{Alert as VT,BalanceErrors as KT,Button as pd,ChevronLeftIcon as jT,Divider as Us,MessageBox as XT,Typography as zs}from"@rango-dev/ui";import te,{useCallback as YT,useEffect as ud,useMemo as ZT,useState as on}from"react";import{useNavigate as JT}from"react-router-dom";import{i18n as Ds}from"@lingui/core";import{Alert as ET,ChevronDownIcon as IT,CloseIcon as AT,Divider as Hm,IconButton as qm,PasteIcon as NT,Typography as BT,WalletIcon as WT}from"@rango-dev/ui";import We,{useEffect as LT,useRef as MT}from"react";import si,{useRef as bT}from"react";import*as en from"@radix-ui/react-collapsible";import{keyframes as $m,styled as ri}from"@rango-dev/ui";var Ms=300,vT=$m({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),wT=$m({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),Fm=ri(en.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Ps=ri(en.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),ii=ri(en.Content,{overflow:"hidden",variants:{open:{true:{animation:`${vT} ${Ms}ms ease-out`},false:{animation:`${wT} ${Ms}ms ease-out`}}}}),ai=ri("div",{transition:`all ${Ms}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function li(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,c=bT(null);return si.createElement(Fm,{ref:c,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&si.createElement(Ps,{className:"collapsible_trigger",onClick:a},s),si.createElement(ii,{className:"collapsible_content",open:e},r),l==="bottom"&&si.createElement(Ps,{className:"collapsible_trigger",onClick:a},s))}i(li,"CustomCollapsible");import{darkTheme as Om,styled as _s,TextField as xT}from"@rango-dev/ui";var Um=_s("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),zm=_s(xT,{backgroundColor:"$neutral100",padding:"$15"}),Qm=_s("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Om} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${Om} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function Gm(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=O(),{config:s}=S(),l=S().blockchains(),c=gr(e.name,l),u=MT(null),p=s?.defaultCustomDestinations?.[e.name],m=navigator?.userAgent.includes("Firefox"),d=n&&!!r&&e&&!$o(e,r),f=i(()=>{a("")},"handleClear"),g=i(async k=>{if(k.preventDefault(),navigator.clipboard!==void 0){let y=await navigator.clipboard.readText();a(y),u?.current?.focus()}},"handlePaste"),C=i(()=>r?We.createElement(qm,{id:"widget-custom-destination-close-icon-btn",onClick:f,variant:"ghost"},We.createElement(AT,{size:12,color:"gray"})):m?null:We.createElement(qm,{id:"widget-custom-destination-paste-icon-btn",onClick:g,variant:"ghost"},We.createElement(NT,{size:16})),"renderSuffix");return LT(()=>{!!p&&r===null&&(a(p),o(!0))},[p]),We.createElement(Um,null,We.createElement(li,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:We.createElement(Qm,null,We.createElement("div",{className:"button__content"},We.createElement(WT,{size:18,color:"info"}),We.createElement(Hm,{size:4,direction:"horizontal"}),We.createElement(BT,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Ds.t("Send to a different address"))),We.createElement(ai,{orientation:n?"up":"down"},We.createElement(IT,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},We.createElement(zm,{ref:u,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Ds.t("Enter {blockchainName} address",{blockchainName:c}),value:r||"",suffix:C(),onChange:k=>{let y=k.target.value;a(y)}})),d&&We.createElement(We.Fragment,null,We.createElement(Hm,{size:4}),We.createElement(ET,{variant:"alarm",type:"error",title:Ds.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(Gm,"CustomDestination");import{css as PT,darkTheme as $s,IconButton as _T,styled as Ft}from"@rango-dev/ui";var Vm=Ft("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Km=Ft("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),DT=Ft("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${$s} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$secondary100",[`.${$s} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$secondary100",[`.${$s} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),jm=Ft(DT,{alignSelf:"stretch",minHeight:"93px"}),Xm=Ft("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Ym=Ft(_T,{position:"absolute",left:"$20"}),Zm=Ft("div",{paddingTop:"$20"}),Jm=PT({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),Rm=Ft("div",{display:"flex"}),ed=Ft("div",{overflow:"visible",width:"100%"});import{i18n as ad}from"@lingui/core";import{warn as zT}from"@rango-dev/logging-core";import{Divider as QT,SelectableWallet as HT,Typography as sd,WalletState as ld}from"@rango-dev/ui";import Je,{useEffect as cd,useState as Mn}from"react";import{Image as OT,MessageBox as UT}from"@rango-dev/ui";import Ln from"react";import{keyframes as $T,styled as Fs}from"@rango-dev/ui";var td=Fs("div",{position:"relative"}),FT=$T({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),od=Fs("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${FT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),nd=Fs("div",{"& img":{borderRadius:"50%"}});import{i18n as tn}from"@lingui/core";function rd(t,e){switch(t){case"in-progress":return{type:"loading",title:tn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:tn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:tn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:tn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:tn.t("Request Rejected"),description:tn.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:e}})};default:throw new Error(`Showing information about an experimentation chain status needs to be defined first. status: ${t}`)}}i(rd,"generateMessageByStatus");function id(t){let{status:e,displayName:o,image:n}=t,r=rd(e,o),a=e=="in-progress";return Ln.createElement(UT,{type:r.type,title:r.title,description:r.description,icon:a?Ln.createElement(td,null,Ln.createElement(nd,null,Ln.createElement(OT,{src:n,size:45})),Ln.createElement(od,null)):void 0})}i(id,"ExperimentalChainStatus");var qT=7,GT=3e3;function Os(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,l=ne.use.isActiveTab(),{blockchains:c,connectedWallets:u}=S(),[p,m]=Mn(),[h,d]=Mn(null),[f,g]=Mn(!1),[C,k]=Mn(null),{suggestAndConnect:y}=ci(),{handleDisconnect:T}=Xt(),{list:v}=yt({chain:e}),[E,B]=Mn(v),N=v.length,x=a&&N-a>0,w=i(async I=>{g(!1),k("in-progress");try{await y(I.walletType,I.chain),k("completed")}catch{k("rejected")}},"addExperimentalChain");cd(()=>{B(I=>{let _=v.findIndex(M=>n(M.type,e));return x&&_>1?[v[_]].concat(v.filter((M,q)=>q!==_)):I.map(M=>v.find(q=>q.type===M.type)??M)})},[JSON.stringify(v)]);let b=document.getElementById(Fe.SWAP_BOX_ID);return cd(()=>{let I=null;return(C==="completed"||C==="rejected")&&(I=setTimeout(()=>k(null),GT)),()=>{I&&clearTimeout(I)}},[C]),Je.createElement(Je.Fragment,null,E.slice(0,a).map(I=>{let _=cp({connectedWallets:u,walletType:I.type,chain:e}),M=_?Ar(_,qT):"",q=Er(c(),e),R=!u.find(Q=>Q.walletType===I.type&&Q.chain===e),X=q&&R&&I.state===ld.CONNECTED,L=X?ad.t({id:"Add {chain} chain",values:{chain:e}}):M,K=i(async()=>{let Q=I.state===ld.DISCONNECTED,de=(I.isHub||!!I.needsNamespace)&&!M;Q?m(I):de?(await T(I.type),m(I)):X?(d({walletType:I.type,chain:e,address:_??""}),g(!0)):r({walletType:I.type,chain:e,address:_??""})},"onSelectableWalletClick"),ae=h?.chain?gr(h.chain,c()):void 0;return Je.createElement(Je.Fragment,{key:`${I.title}_${ae}`},!!h&&Je.createElement(J,{open:!!h&&f,container:b,onClose:()=>{d(null)}},Je.createElement(Va,{displayName:ae,onConfirm:()=>{w(h)}})),C&&Je.createElement(J,{open:!!C,onClose:k.bind(null,null),container:b},Je.createElement(id,{status:C,displayName:ae,image:I.image}),Je.createElement(QT,{direction:"vertical",size:32})),Je.createElement(HT,{key:I.type,description:L,onClick:K,selected:n(I.type,e),disabled:!l,...I}))}),Je.createElement(Co,{wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{m(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):zT(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),x&&Je.createElement(jm,{selected:!1,onClick:s},Je.createElement(sd,{variant:"label",size:"medium"},ad.t("Show more wallets"),Je.createElement(sd,{variant:"label",size:"medium",color:"$primary"},"\xA0+",N-(a??0)))))}i(Os,"WalletList");var RT=2;function md(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=JT(),l=S().blockchains(),{selectedQuote:c,setSelectedWallets:u,quoteWalletsConfirmed:p,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:d}=O(),{config:f,connectedWallets:g,setWalletsAsSelected:C}=S(),[k,y]=on(""),[T,v]=on([]),[E,B]=on(""),[N,x]=on(!!h),w=ZT(()=>go({filter:"all",quote:c}),[c]),b=go({filter:"required",quote:c}),I=l.find(D=>D.name===c?.swaps[c?.swaps.length-1].to.blockchain),_=i(D=>b.includes(D),"isWalletRequiredFor"),M=YT(()=>g.filter(D=>D.selected&&w.includes(D.chain)),[g,w]),[q,R]=on(M()),[X,L]=on([]),K=i((D,G)=>L(j=>j.concat({blockchain:D,walletType:G})),"addNextSelectedWallets"),ae=T.length>0,Q=i((D,G)=>!!q.find(j=>j.walletType===D&&j.chain===G&&j.selected&&(_(G)||!_(G)&&!h)),"isSelected"),de=i((D,G,j)=>{let he=!1;return D.map(ce=>{if(ce.chain===G){let De=ce.selected;return!he&&j?(he=!0,De=!0):j||(De=!1),{...ce,selected:De}}return ce})},"updateSelectableWallets"),Ie=i(D=>{x(D),D?_(I?.name??"")||R(G=>de(G,I?.name||"",!1)):(d(""),R(G=>de(G,I?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),je=i(D=>{if(k&&y(""),Q(D.walletType,D.chain))return;let j=g.find(he=>he.walletType===D.walletType&&he.chain===D.chain);j&&(n(),D.chain===I?.name&&N&&!_(I.name)&&(x(!1),d(null)),R(he=>he.filter(ce=>ce.chain!==D.chain).concat({...j,selected:!0})))},"onChange"),se=i(()=>{let D=q.filter(G=>G.selected);C(D),u(D),m(!0),o()},"onConfirmBalance"),ct=i(async()=>{v([]),B("");let D=await r?.({selectedWallets:q.filter(j=>j.selected),customDestination:h}),G=D.warnings;G?.balance?.messages&&v(G.balance.messages),D.error&&B(mu(D.error)),!D.error&&!G?.balance?.messages.length?se():v(G?.balance?.messages??[])},"onConfirmWallets");ud(()=>{R(D=>{let G=[];return D.forEach(j=>{!g.some(ce=>ce.chain===j.chain&&ce.walletType===j.walletType&&ce.address===j.address)||G.push(j)}),G=G.concat(g.filter(j=>!!!G.find(ce=>ce.chain===j.chain)&&j.selected&&w.includes(j.chain))),G})},[g,w]),ud(()=>{let D=[];X.length>0&&(X.forEach(G=>{let j=g.find(he=>he.chain===G.blockchain&&he.walletType===G.walletType);j?je(j):D.push(G)}),L(D))},[g,X]);let V=document.getElementById(Fe.SWAP_BOX_ID);return te.createElement(J,{open:e,onClose:()=>{p||s("../",{replace:!0}),o()},dismissible:!k,container:V,...!k&&{styles:{container:{height:"100%"}},footer:te.createElement(Rm,null,te.createElement(pd,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:zu(a,N,h,c,q,I),onClick:ct,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Eo.t("Confirm")))},...k&&{styles:{container:{height:"100%",padding:"$0"}},header:te.createElement(Xm,null,te.createElement(Ym,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},te.createElement(jT,{size:16})),te.createElement(zs,{variant:"headline",size:"small"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:pt(k,l)}})))},anchor:"center"},te.createElement(J,{open:ae,onClose:v.bind(null,[]),container:V},te.createElement(XT,{title:Eo.t("Insufficient account balance"),type:"error",description:te.createElement(KT,{messages:T??[]})},te.createElement(pd,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:se},Eo.t("Proceed anyway")))),k&&te.createElement(Zm,null,te.createElement("div",{className:Jm()},te.createElement(Os,{chain:k,quoteChains:w,isSelected:Q,selectWallet:je,onShowMore:()=>y(k),onConnect:D=>{K(k,D)}}))),!k&&te.createElement(te.Fragment,null,E&&te.createElement(te.Fragment,null,te.createElement(VT,{variant:"alarm",type:"error",title:Eo.t(E)}),te.createElement(Us,{size:12})),te.createElement(ed,null,w.map((D,G)=>{let j=l.find(Xe=>Xe.name===D),he=`wallet-${G}`,ce=G===w.length-1,De=ce&&I&&f?.customDestination!==!1;return te.createElement("div",{key:he},te.createElement(Vm,null,te.createElement(zs,{variant:"title",size:"xmedium"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:j?.shortName}})),te.createElement(zs,{variant:"label",color:"$neutral700",size:"medium"},Eo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:j?.shortName}}))),te.createElement(Us,{size:24}),te.createElement(Km,null,te.createElement(Os,{chain:D,quoteChains:w,isSelected:Q,selectWallet:je,limit:RT,onShowMore:()=>y(j?.name??""),onConnect:Xe=>{K(D,Xe)}})),!ce&&te.createElement(Us,{size:32}),De&&te.createElement(Gm,{blockchain:I,open:N,handleOpenChange:Ie}))}))))}i(md,"ConfirmWalletsModal");import{i18n as Sv}from"@lingui/core";import{Alert as Cv,Button as kv,InfoIcon as Tv}from"@rango-dev/ui";import rt from"react";import{Alert as ov,Button as nv,Divider as qs,NoRouteIcon as rv,RefreshIcon as iv,Typography as Cd}from"@rango-dev/ui";import nt from"react";import{i18n as dd}from"@lingui/core";var ev=24,tv=60;function fd(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:ee().genericServerError,action:{onClick:n,title:dd.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:ee().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:dd.t("Reset")}},description:ee().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:ee().noResultError.description}}i(fd,"makeInfo");var Qs=(o=>(o[o.small=ev]="small",o[o.large=tv]="large",o))(Qs||{}),Hs=(o=>(o.small="small",o.large="medium",o))(Hs||{});import{styled as pi}from"@rango-dev/ui";var gd=pi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),hd=pi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),yd=pi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Sd=pi("div",{padding:"$6 $0"});function Pn(t){let{fetch:e,error:o,size:n="small"}=t,r=S().getDisabledLiquiditySources(),a=S().toggleAllLiquiditySources,s=S().swappers(),l=fd(o,r,()=>a(s,!0),e);return nt.createElement(gd,null,nt.createElement(rv,{size:Qs[n],color:"gray"}),nt.createElement(qs,{size:4}),nt.createElement(Cd,{variant:"title",size:Hs[n]},ee().noResultError.title),n==="large"&&nt.createElement(qs,{size:4}),!!l.description&&nt.createElement(hd,{size:n},nt.createElement(Cd,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),nt.createElement(qs,{size:n==="large"?"24":"4"}),!!l.alert&&nt.createElement(yd,{size:n},nt.createElement(ov,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&nt.createElement(nv,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:nt.createElement(Sd,null,nt.createElement(iv,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i(Pn,"NoResult");import{i18n as _n}from"@lingui/core";import{Button as sv,Divider as lv,MessageBox as cv,Typography as pv,WarningIcon as uv}from"@rango-dev/ui";import Ot from"react";import{Typography as wd}from"@rango-dev/ui";import Vs from"react";import{darkTheme as av,styled as ui}from"@rango-dev/ui";var kd=ui("div",{width:"100%"}),Gs=ui("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),Td=ui("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${av} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),vd=ui("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function bd(t){let{title:e,value:o,valueColor:n}=t;return Vs.createElement(Td,null,Vs.createElement(wd,{size:"medium",variant:"label",className:"_title"},e),Vs.createElement(wd,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(bd,"QuoteErrorsModalItem");function xd(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:_n.t("Swapping"),value:P(r.inputUsdValue,4,4)},{title:_n.t("Gas cost"),value:P(r.totalFee,2,2)},{title:_n.t("Receiving"),value:P(r.outputUsdValue,4,4)},{title:_n.t("Price impact"),value:P(r.priceImpact,2,2),valueColor:`${s}500`}];return Ot.createElement(J,{footer:Ot.createElement(sv,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ot.createElement(uv,null),fullWidth:!0,disabled:a,onClick:n},ee().highValueLossError.confirmMessage),open:e,onClose:o,container:A()},Ot.createElement(cv,{type:s,title:ee().highValueLossError.impactTitle,description:ee().highValueLossError.description}),Ot.createElement(Gs,null,Ot.createElement(lv,{size:"4"}),Ot.createElement(pv,{size:"small",variant:"title"},_n.t("Details")),Ot.createElement(Gs,null,l.map((c,u)=>Ot.createElement(bd,{key:u,...c})))))}i(xd,"HighValueLossWarningModal");import{i18n as mi}from"@lingui/core";function Ed(t,e){let o={alertType:"warning",title:"",action:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=mi.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o;if(t){switch(t.type){case 0:{$t(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=ee().highValueLossError.title;break}case 4:{o.title=mi.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=ee().unknownPriceError.title;break}case 2:{o.title=mi.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-settings";break}case 3:{o.title=mi.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Ed,"makeAlerts");import{i18n as nn}from"@lingui/core";import{Button as Id,Divider as Ad,MessageBox as mv,Typography as dv}from"@rango-dev/ui";import Io from"react";import{useNavigate as fv}from"react-router-dom";function Nd(t){let{customSlippage:e,slippage:o}=S(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,c=fv(),u=e??o;return Io.createElement(J,{anchor:"bottom",open:n,prefix:Io.createElement(Id,{size:"small",id:"widget-slippage-warning-modal-change-settings-btn",variant:"ghost",onClick:()=>c("../"+F.settings)},Io.createElement(dv,{variant:"label",size:"medium",color:"$neutral900"},nn.t("Change settings"))),container:A(),onClose:r},Io.createElement(mv,{type:"warning",title:s.type===3?nn.t("High slippage"):nn.t("Low slippage"),description:s.type===3?nn.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:u}}):nn.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:s.minRequiredSlippage}})},Io.createElement(Ad,{size:18}),Io.createElement(Ad,{size:32}),Io.createElement(Id,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:l,onClick:a},nn.t("Confirm anyway"))))}i(Nd,"SlippageWarningModal");import{Button as gv,MessageBox as hv,WarningIcon as yv}from"@rango-dev/ui";import di from"react";function Bd(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return di.createElement(J,{footer:di.createElement(gv,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:di.createElement(yv,null),fullWidth:!0,disabled:r,onClick:n},ee().unknownPriceError.confirmMessage),open:e,onClose:o,container:A()},di.createElement(hv,{type:"warning",title:ee().unknownPriceError.impactTitle,description:ee().unknownPriceError.description}))}i(Bd,"UnknownPriceWarningModal");function Dn(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,refetchQuote:s,onOpenWarningModal:l,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:p}=t,m={confirmationDisabled:a,open:r,onClose:c,onConfirm:u},h=o?.type===0||o?.type===1,d=Ed(e,o?.type===3||o?.type===4?o:null);return d&&!n&&(d.action=null),rt.createElement(rt.Fragment,null,h&&rt.createElement(Pn,{error:o,fetch:s}),!!d&&rt.createElement(kd,null,rt.createElement(Cv,{title:d.title,type:d.alertType,variant:"alarm",...d.action==="show-info"&&{action:rt.createElement(vd,{onClick:l},rt.createElement(Tv,{size:12,color:"gray"}))},...d.action==="change-settings"&&{action:rt.createElement(kv,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:d.alertType,onClick:p},Sv.t("Change"))}})),e&&rt.createElement(rt.Fragment,null,e.type===0&&rt.createElement(xd,{...m,warning:e}),(e.type===3||e.type===2)&&rt.createElement(Nd,{...m,warning:e}),e.type===1&&rt.createElement(Bd,{...m,warning:e})))}i(Dn,"QuoteWarningsAndErrors");import Jv from"bignumber.js";import Ii from"react";import{i18n as Ao}from"@lingui/core";import{Alert as Ov,Divider as an,FullExpandedQuote as Uv,InfoIcon as zv,NumericTooltip as cf,QuoteTag as Qv,StepDetails as Hv,TokenAmount as qv,Typography as sn}from"@rango-dev/ui";import tl from"bignumber.js";import U,{useRef as Gv,useState as Vv}from"react";import{styled as Ks}from"@rango-dev/ui";var js=Ks("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Wd=Ks("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),Ld=Ks("div",{width:"100%",display:"flex"});import*as fi from"@radix-ui/react-collapsible";import{Button as vv,css as $n,darkTheme as xe,Image as Md,styled as He,Typography as wv}from"@rango-dev/ui";var bv=300,Pd=He(fi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${xe} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),_d=$n({padding:"$10 $15"}),Dd=He(vv,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${xe} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${xe} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${xe} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),$d=He("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${xe} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${xe} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${xe} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${xe} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${xe} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${xe} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${xe} &`]:{backgroundColor:"$neutral400"}}}}]}),Fd=$n({width:"100%",padding:"$15 $15 $10 $15"}),Od=$n({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),rn=$n({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),Ud=$n({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${xe} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),zd=He(fi.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:{[`& ${Md}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Md}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${xe} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${xe} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Qd=He("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"}}}}),Hd=He(ii,{width:"100%",background:"inherit"}),Xs=He("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${bv}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),PO=He("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),qd=He("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${xe} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),Gd=He("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),Ys=He(wv,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Vd=He("div",{display:"flex",flexWrap:"wrap"}),Zs=He("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"}}}}),Kd=He("div",{display:"flex"}),gi=He("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${xe} &`]:{borderTopColor:"$neutral800"}});import{i18n as Nt}from"@lingui/core";import{ChevronDownIcon as Ev,CloseIcon as Iv,Divider as Si,IconButton as Av,NumericTooltip as Nv,QuoteCost as Bv,Typography as kt}from"@rango-dev/ui";import Z,{useState as Zd}from"react";import{css as xv,styled as hi}from"@rango-dev/ui";var yi=hi("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),Js=hi("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),jd=hi("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Xd=hi("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Yd=xv({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Wv=i(t=>t.fee.isZero()?null:Z.createElement(yi,null,Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},t.label),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(t.fee,4,4))),"NonPayableFee");function Rs(t){let[e,o]=Zd(!1),[n,r]=Zd(!1),{steps:a,quote:s,fee:l,time:c,feeWarning:u,timeWarning:p,showModalFee:m,fullExpandedMode:h=!1}=t,d=s?.swaps??[],f=h?fo():A(),g=Mu(d);return Z.createElement(Z.Fragment,null,Z.createElement(Bv,{onClickFee:m?C=>{C.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:u,timeWarning:p,time:c,steps:a,tooltipGas:m?Nt.t("View more info"):void 0,tooltipContainer:f}),Z.createElement(J,{container:f,open:e,anchor:h?"center":"bottom",styles:{container:{maxWidth:h?"484px":"unset"}},header:Z.createElement(Xd,{style:{textAlign:h?"left":"center"}},Z.createElement(kt,{variant:"title",size:"medium"},Nt.t("Gas & Fee Explanation")),Z.createElement(Av,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},Z.createElement(Iv,{color:"gray",size:14}))),onClose:()=>{o(!1)}},Z.createElement(jd,null,Z.createElement(kt,{variant:"title",size:"small"},Nt.t("Details")),Z.createElement(Si,{size:10}),Object.entries(g.payable).flatMap(([C,k])=>k.map((y,T)=>{let v=`payable-fee-${T}`,E=Ra(y);return Z.createElement(yi,{key:v},Z.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},ja(C,Nt.t)),Z.createElement(Nv,{content:y.amount,container:f},Z.createElement(kt,{variant:"label",size:"medium"},P(y.amount,2,2)," ",y.asset.symbol," ($",P(E,4,4),")")))})),Z.createElement(yi,{className:"total_payable_fee"},Z.createElement(kt,{variant:"label",size:"medium"},Nt.t("Total Payable Fee")),Z.createElement(kt,{variant:"label",size:"medium"},"$",P(l,4,4))),Z.createElement(Js,null),Object.keys(g.nonePayable).length&&Z.createElement(li,{triggerAnchor:"bottom",onClickTrigger:()=>r(C=>!C),trigger:Z.createElement("div",{className:Yd()},Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},n?Nt.t("Hide non-payable fees"):Nt.t("Show non-payable fees")),Z.createElement(Si,{size:4,direction:"horizontal"}),Z.createElement(ai,{orientation:n?"up":"down"},Z.createElement(Ev,{size:12,color:"gray"}))),open:n},Z.createElement(kt,{size:"small",variant:"title"},Nt.t("Description")),Z.createElement(Si,{size:4}),Z.createElement(kt,{size:"small",variant:"body",color:"neutral700"},Nt.t(`The following fees are considered in the transaction output and
|
|
2
|
-
you won\u2019t need to pay extra gas for them.`)),Z.createElement(Si,{size:10}),Object.entries(g.nonePayable).map(([C,k],y)=>{let T=Lu(k),v=ja(C,Nt.t),E=`non-payable-fee-${y}`;return Z.createElement(Wv,{key:E,fee:T,label:v})}),Z.createElement(Js,null)))))}i(Rs,"QuoteCostDetails");import{i18n as ef}from"@lingui/core";import{TokenAmount as tf}from"@rango-dev/ui";import Ci from"react";import{css as Lv,styled as Mv}from"@rango-dev/ui";var Jd=Mv("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),Rd=Lv({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function Fn(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Ci.createElement(Jd,null,Ci.createElement(tf,{direction:"horizontal",label:ef.t("Swap input"),type:"input",tooltipContainer:A(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),Ci.createElement("div",{className:Rd()}),Ci.createElement(tf,{direction:"horizontal",tooltipContainer:A(),label:ef.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(Fn,"QuoteSummary");import{i18n as sf}from"@lingui/core";import{ChevronDownIcon as Dv,ChevronRightIcon as $v,Divider as el,Image as Fv,Tooltip as bi,Typography as Ti}from"@rango-dev/ui";import z from"react";import{useLayoutEffect as Pv,useState as On}from"react";var of=480,nf=768,rf=1024,af=1200,_v=i(()=>{let[t,e]=On(!1),[o,n]=On(!1),[r,a]=On(!1),[s,l]=On(!1),[c,u]=On(!1),p=i(()=>{e(window.innerWidth<=of),n(window.innerWidth>of&&window.innerWidth<=nf),a(window.innerWidth>nf&&window.innerWidth<=rf),l(window.innerWidth>rf&&window.innerWidth<=af),u(window.innerWidth>af)},"handleResize");return Pv(()=>(p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:c}},"useScreenDetect"),ki=_v;var vi=4,wi=6,Un=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||A();return z.createElement(bi,{container:l,side:"bottom",sideOffset:4,open:r,content:e},z.createElement(Qd,{className:n,state:a},z.createElement(Fv,{src:o,size:16})))},"ImageComponent");function lf(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,c=l||A(),u=r.length,p=vu(r),{isTablet:m,isMobile:h}=ki();return z.createElement(zd,{listItem:s==="list-item",ref:d=>e.current=d,selected:o,onClick:d=>{d.stopPropagation(),n(f=>!f)}},z.createElement("div",{className:rn()},z.createElement(Ti,{variant:"body",size:"xsmall"},sf.t("Via:")),z.createElement(el,{direction:"horizontal",size:4}),r.map((d,f)=>{let g=`item-${f}`,C=z.createElement(Xs,null,z.createElement($v,{size:12,color:"black"}));return h||m?z.createElement(z.Fragment,{key:g},z.createElement(Un,{content:d.swapper.displayName,src:d.swapper.image??"",state:d.state,container:l}),f!==u-1&&z.createElement(z.Fragment,null,C)):z.createElement(z.Fragment,{key:g},u<=vi||u>vi&&f<vi-1?z.createElement(z.Fragment,null,z.createElement(Un,{content:d.swapper.displayName,src:d.swapper.image??"",state:d.state,container:l}),f!==u-1&&z.createElement(z.Fragment,null,C)):f===vi-1&&z.createElement(bi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},C,r.map((k,y)=>{let T=`image-${y}`;return y>=f&&z.createElement(z.Fragment,{key:T},z.createElement(Un,{content:k.swapper.displayName,src:k.swapper.image??"",state:k.state,open:!1}),y!==u-1&&z.createElement(z.Fragment,null,C))}))},z.createElement(Zs,{state:r.find((k,y)=>y>=f&&(k.state==="error"||k.state==="warning"))?.state},z.createElement(Ti,{size:"xsmall",variant:"body"},"+",u-f))))})),z.createElement("div",{className:rn()},z.createElement("div",{className:"blockchains_section"},z.createElement("div",{className:rn()},z.createElement(Ti,{variant:"body",size:"xsmall"},sf.t("Chains:")),z.createElement(el,{direction:"horizontal",size:4}),p.map((d,f)=>z.createElement(z.Fragment,{key:d.displayName},p.length<=wi||p.length>wi&&f<wi-1?z.createElement(bi,{container:c,side:"bottom",content:d.displayName,sideOffset:4},z.createElement(Un,{content:"",src:d.image??"",open:!1,className:f!==0?"blockchainImage":""})):f===wi-1&&z.createElement(bi,{container:c,side:"bottom",align:"end",sideOffset:4,content:z.createElement("div",{className:rn()},p.map((g,C)=>C>=f&&z.createElement(Un,{key:g.displayName,content:"",src:g.image??"",open:!1,className:C>f?"blockchainImage":"",container:l})))},z.createElement(Zs,{className:"blockchainImage"},z.createElement(Ti,{size:"xsmall",variant:"body"},"+",p.length-f))))),z.createElement(el,{direction:"horizontal",size:32}))),z.createElement(Xs,{orientation:a?"up":"down"},z.createElement(Dv,{size:12,color:"black"}))))}i(lf,"QuoteTrigger");function ol(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:c=!0,showModalFee:u=!0,onClickAllRoutes:p,fullExpandedMode:m=!1,container:h}=t,d=S().blockchains(),{findToken:f}=S(),g=S().swappers(),{customSlippage:C,slippage:k}=S(),y=C||k,[T,v]=Vv(t.expanded),E=Gv(null),B=P(o.value,6,6),N=P(n.value,6,6),x=n.usdValue?P(n.usdValue,4,4):"",w=Dt(o.usdValue,n.usdValue??null),b=P(w,2,2),I=$t(w??0),_=i((se,ct)=>se.map((V,D)=>{let G,j=r?.type===3&&r.swap.swapperId===V.swapperId,he=r?.type===4&&r.recommendedSlippages?.has(D),ce=a?.type===2&&a.recommendedSlippages?.has(D),De=j||he,Xe=ce;De?G="error":Xe&&(G="warning");let Te=De?Ao.t("Slippage Error"):Ao.t("Slippage Warning");return j&&(Te=Ao.t("Bridge Limit Error")),{swapper:{displayName:mn(V.swapperId,g)??"",image:V.swapperLogo},from:{token:{displayName:V.from.symbol,image:V.from.logo},chain:{displayName:pt(V.from.blockchain,d)??"",image:V.from.blockchainLogo},price:{value:D===0&&!ct?P(o.value,6,6):P(V.fromAmount,6,6),usdValue:P((V.from.usdPrice??0)*parseFloat(V.fromAmount),4,4),realValue:D===0?o.value:V.fromAmount,realUsdValue:new tl(V.from.usdPrice??0).multipliedBy(V.fromAmount).toString()}},to:{token:{displayName:V.to.symbol,image:V.to.logo},chain:{displayName:pt(V.to.blockchain,d)||"",image:V.to.blockchainLogo},price:{value:P(V.toAmount,6,6),usdValue:P((V.to.usdPrice??0)*parseFloat(V.toAmount),4,4),realValue:V.toAmount,realUsdValue:new tl(V.to.usdPrice??0).multipliedBy(V.toAmount).toString()}},state:G,alerts:De||Xe?U.createElement(Wd,{dense:m},U.createElement(Ov,{variant:"alarm",type:De?"error":"warning",title:Te,footer:U.createElement(Ld,null,j&&U.createElement("div",null,U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),U.createElement(an,{direction:"vertical",size:2}),U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {amount} {symbol}",values:{amount:P(V.fromAmount,6,6),symbol:V?.from.symbol}}))),(he||ce)&&!j&&U.createElement("div",null,U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Minimum required slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(D)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(D)}}})),U.createElement(an,{direction:"vertical",size:2}),U.createElement(sn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:fn(V.estimatedTimeInSeconds),fee:P(Ja(V,f),2,2),internalSwaps:V.internalSwaps?_(V.internalSwaps):void 0}}),"getQuoteSteps"),M=_(e?.swaps??[]),q=M.length,R=h||A(),X=bu(t.quote.tags||[]),L=!!p,K=wr(e?.swaps),ae=fn(K),Q=qr(e?.swaps??[],f),de=P(Q,2,2),Ie=Q.gte(new tl(fu)),je=K/hu>=gu;return m?U.createElement(Uv,{selected:l,fee:de,time:ae,tooltipContainer:fo(),steps:M,tags:X,quoteCost:U.createElement(Rs,{quote:e,fullExpandedMode:!0,time:ae,fee:de,feeWarning:Ie,timeWarning:je,showModalFee:u,steps:q}),percentageChange:b,warningLevel:I,outputPrice:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue}}):U.createElement($d,{selected:l,listItem:s==="list-item",basic:s==="basic"},U.createElement("div",{className:Fd()},!c&&X.length?U.createElement(U.Fragment,null,U.createElement(Kd,null,X.map((se,ct)=>{let V=`${se.value}_${ct}`;return U.createElement(U.Fragment,{key:V},U.createElement(Qv,{label:se.label,value:se.value}),U.createElement(an,{size:4,direction:"horizontal"}))})),U.createElement(gi,null),!L&&U.createElement(an,{size:4})):null,U.createElement("div",{id:"portal-root",className:Od()},U.createElement(Rs,{quote:e,time:ae,fee:de,feeWarning:Ie,timeWarning:je,showModalFee:u,steps:q}),L&&U.createElement(Dd,{onClick:se=>{se.stopPropagation(),p()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},U.createElement(sn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Ao.t("See All Routes")))),s==="basic"&&U.createElement("div",{className:Ud()},U.createElement(Gd,null,U.createElement(zv,{size:12,color:"gray"})),U.createElement(Vd,null,U.createElement(Ys,{size:"small",variant:"body"},`${B} ${M[0].from.token.displayName} = `),U.createElement(cf,{content:n.value,container:R,open:n.value?void 0:!1},U.createElement(Ys,{size:"small",variant:"body"},"\xA0",`${N} ${M[M.length-1].to.token.displayName}`))),U.createElement(cf,{content:n.usdValue,container:R},U.createElement(an,{size:2,direction:"horizontal"}),U.createElement(sn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${x})`))),s==="list-item"&&U.createElement(qv,{tooltipContainer:R,type:"output",direction:"vertical",price:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:M[q-1].to.token.displayName,image:M[q-1].to.token.image},chain:{image:M[q-1].to.chain.image},percentageChange:b,warningLevel:I}),s==="swap-preview"&&U.createElement(U.Fragment,null,U.createElement(Fn,{from:M[0].from,to:M[q-1].to,percentageChange:b,warningLevel:I}),U.createElement(an,{size:4}))),U.createElement(Pd,{selected:l,listItem:s==="list-item",open:T,className:"quote_container",onOpenChange:v},U.createElement(lf,{type:s,quoteRef:E,selected:l,setExpanded:v,container:R,expanded:T,steps:M}),U.createElement(Hd,{open:T},U.createElement(qd,null),U.createElement("div",{className:_d()},M.map((se,ct)=>{let V=`item-${ct}`;return U.createElement(Hv,{type:"quote-details",key:V,tooltipContainer:R,step:se,hasSeparator:ct!==M.length-1,state:se.state})})))))}i(ol,"Quote");import{Divider as Yv,Skeleton as Zv}from"@rango-dev/ui";import zt from"react";import{darkTheme as Kv,styled as xi}from"@rango-dev/ui";var pf=xi("div",{$$color:"$colors$neutral100",[`.${Kv} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),uf=xi("div",{paddingTop:"$2"}),mf=xi("div",{paddingLeft:"$8"}),df=xi("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as wf,Divider as Tt,Skeleton as it}from"@rango-dev/ui";import H from"react";import{css as jv,styled as Ut}from"@rango-dev/ui";var nl=Ut("div",{display:"flex"}),ff=Ut("div",{padding:"$10 $0 $20"}),gf=Ut("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),hf=Ut("div",{display:"flex",justifyContent:"start",alignItems:"center"}),yf=Ut("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),Sf=Ut("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Cf=Ut("div",{width:"65%",display:"flex",justifyContent:"start"}),kf=Ut("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),Tf=Ut("div",{padding:"$15 $0 $15 $0"}),vf=jv({display:"flex",justifyContent:"space-between",alignItems:"center"});function zn(t){let{type:e,tagHidden:o=!0}=t,n=H.createElement(yf,null,H.createElement(Cf,null,H.createElement(wf,{loading:!0,size:"medium"}),H.createElement(Tt,{size:8,direction:"horizontal"}),H.createElement(kf,null,H.createElement(it,{height:10,width:60,variant:"rounded"}),H.createElement(Tt,{size:4}),H.createElement(it,{height:15,variant:"rounded"}))),H.createElement(it,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return H.createElement("div",null,!o&&H.createElement(H.Fragment,null,H.createElement(nl,null,H.createElement(it,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:65,height:20,variant:"rounded"})),H.createElement(gi,null),!r&&H.createElement(Tt,{size:4})),H.createElement("div",{className:vf()},H.createElement(nl,null,H.createElement(it,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:60,height:10,variant:"rounded"})),r&&H.createElement(it,{width:85,height:24,variant:"rounded"})),e==="basic"&&H.createElement(ff,null,H.createElement(it,{height:15,width:148,variant:"rounded"})),e==="list-item"&&H.createElement(gf,null,H.createElement(hf,null,H.createElement(wf,{loading:!0,size:"medium"}),H.createElement(Tt,{direction:"horizontal",size:4}),H.createElement(it,{height:15,width:150,variant:"rounded"})),H.createElement(Tt,{size:10}),H.createElement(it,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&H.createElement(H.Fragment,null,H.createElement(Tt,{size:4}),H.createElement(Tf,null,n,H.createElement(Sf,null),n),H.createElement(Tt,{size:12})))}i(zn,"QuoteSummarySkeleton");import{ChainToken as Af,Divider as il,NextIcon as Xv,Skeleton as Ei}from"@rango-dev/ui";import Ee from"react";import{styled as Qn}from"@rango-dev/ui";var bf=Qn("div",{display:"flex",alignItems:"start"}),xf=Qn("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),rl=Qn("div",{display:"flex",alignItems:"center",flexGrow:1}),Ef=Qn("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),If=Qn("div",{display:"flex",alignItems:"center"});function Bt(t){let{separator:e=!0}=t;return Ee.createElement(Ee.Fragment,null,Ee.createElement(If,null,Ee.createElement(Ei,{height:22,width:22,variant:"circular"}),Ee.createElement(il,{direction:"horizontal",size:8}),Ee.createElement(Ei,{height:15,width:148,variant:"rounded"})),Ee.createElement(bf,null,Ee.createElement(df,{hideSeparator:!e}),Ee.createElement(xf,{extraSpace:e},Ee.createElement(rl,null,Ee.createElement(Af,{size:"small",loading:!0}),Ee.createElement(il,{direction:"horizontal",size:8}),Ee.createElement(Ei,{height:12,variant:"rounded"})),Ee.createElement(Ef,null,Ee.createElement(Xv,{color:"gray",size:16})),Ee.createElement(rl,null,Ee.createElement(Af,{size:"small",loading:!0}),Ee.createElement(il,{direction:"horizontal",size:8}),Ee.createElement(Ei,{height:12,variant:"rounded"})))))}i(Bt,"StepSkeleton");function Hn(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return zt.createElement(pf,{expanded:o,rounded:e!=="basic"},zt.createElement(zn,{type:e,tagHidden:n}),zt.createElement(uf,null,zt.createElement(Zv,{height:15,variant:"rounded"})),o&&zt.createElement(mf,null,zt.createElement(Yv,{size:24}),zt.createElement(Bt,null),zt.createElement(Bt,null),zt.createElement(Bt,{separator:!1})))}i(Hn,"QuoteSkeleton");function No(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:c,showModalFee:u,selected:p,onClickAllRoutes:m,fullExpandedMode:h=!1,container:d}=t,{inputAmount:f,inputUsdValue:g}=O(),C=e?.outputAmount?new Jv(e?.outputAmount):null,k=e?ft(e):null,T=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?Ii.createElement(js,null,Ii.createElement(Hn,{tagHidden:l,type:o,expanded:s})):T?Ii.createElement(js,{onClick:()=>c?.(e)},Ii.createElement(ol,{quote:e,error:r,container:d,showModalFee:u,warning:a,tagHidden:l,selected:p,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:f,usdValue:g?.toString()??""},output:{value:C?.toString()??"",usdValue:k?.toString()??""}})):null}i(No,"QuoteInfo");import{calculatePendingSwap as ow}from"@rango-dev/queue-manager-rango-preset";import{useEffect as nw}from"react";import{useRef as Rv,useState as ew}from"react";var tw=2e3;function Ai({request:t}){let[e,o]=ew(!1),n=Rv(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(c=>setTimeout(c,tw)),await s(l,!1)),"retryFetch"),s=i(async(l,c=!1)=>{r(),n.current=new AbortController,o(!0);try{let u=await t(l,{signal:n.current.signal});return n.current=null,u}catch(u){if(c)return await a(l);throw u}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(Ai,"useFetch");function Nf(){let{fetch:t,loading:e,cancelFetch:o}=Ai({request:async(n,r)=>await ot().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Nf,"useFetchConfirmQuote");function Ni(t){if(!t.swaps)throw new Error(ee().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=al(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(Ni,"throwErrorIfResponseIsNotValid");function al(t){if(Nu(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Bu(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=Pu(t);if(o){let n=Gr(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(al,"getQuoteError");function Bf(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,l={quote:null,balance:null},c=Ko({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});c&&(l.quote=c);let u=$u(e,r,n.blockchains);return u.length===0||(l.balance={messages:u}),l}i(Bf,"generateWarnings");function Bi(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:t?.code==="ERR_BAD_REQUEST"?{swap:null,error:{type:0,diagnosisMessage:t.response.data.error},warnings:null}:{swap:null,error:{type:1},warnings:null}}i(Bi,"handleQuoteErrors");function sl(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:l}=O(),{slippage:c,customSlippage:u}=S(),p=S().getDisabledLiquiditySources(),m=S().blockchains(),h=S().tokens(),{findToken:d}=S(),f=u||c,{fetch:g,cancelFetch:C,loading:k}=Nf();return nw(()=>C,[]),{loading:k,fetch:i(async T=>{let v=T.selectedWallets,E=T?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let B=v.reduce((x,w)=>(x[w.chain]=w.address,x),{}),N={requestId:a?.requestId||"",selectedWallets:B,destination:E||void 0};try{return await g(N,!0).then(x=>{let{result:w}=x;if(!w)throw new Error("Error fetching updated route");Ni({diagnosisMessages:w.diagnosisMessages,requestId:w.requestId,swaps:w.result?.swaps});let b={outputAmount:w.result?.outputAmount,requestId:w.requestId,resultType:w.result?.resultType,swaps:w.result?.swaps||[],validationStatus:w.validationStatus,requestAmount:w.requestAmount};r(b);let I={slippage:f.toString(),disabledSwappersGroups:p},_=Bf({previousQuote:a??void 0,currentQuote:b,meta:{blockchains:m},selectedWallets:v,userSlippage:f,inputUsdValue:n,findToken:d});l();let M=!!_.balance,q=ow(o.toString(),w,Du(v),I,!M,{blockchains:m,tokens:h});return{quote:b,swap:q,error:null,warnings:_}})}catch(x){return Bi(x)}},"fetch"),cancelFetch:C}}i(sl,"useConfirmSwap");var dw=sw("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Wf}`]:{width:"$48",height:"$48"}}),fw=pl({flexGrow:1,paddingRight:"$10"}),gw=pl({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),hw=pl({display:"flex",justifyContent:"space-between",alignItems:"center"});function Lf(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=O(),s=mw(),[l,c]=qn(""),u=!n,[p,m]=qn(!1),[h,d]=qn(!1),{isActiveTab:f}=ne(),g=S().getDisabledLiquiditySources(),C=uw(g),{manager:k}=rw(),{fetch:y,loading:T,cancelFetch:v}=sl(),[E,B]=qn({swap:null,error:null,warnings:null}),[N,x]=qn(!1),w=i(async({selectedWallets:L,customDestination:K})=>{let ae=await y?.({selectedWallets:L,customDestination:K});return B(ae),ae},"onConfirmSwap"),b=i(async()=>{if(E.swap&&n)try{await k?.create("swap",{swapDetails:E.swap},{id:E.swap.requestId});let L=`../${F.swaps}/${E.swap.requestId}`;s(L,{replace:!0}),setTimeout(()=>{e("")},0)}catch(L){c("Error: "+L?.message)}},"addNewSwap"),I=i(async()=>{d(!0),await b(),d(!1)},"onConfirm"),_=i(async()=>{E.warnings?.quote&&Tu(E.warnings.quote)&&!a?x(!0):await I()},"onStartConfirmSwap"),M=i(async()=>{B({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(L=>{B(L)}).catch(L=>console.error(L))},"onRefresh");Wi(()=>{!!C.current.length&&!g.length&&M(),C.current=g},[g.length]),Wi(()=>{u&&v()},[u]),Wi(()=>{u&&m(u)},[u]),Wi(()=>{u||y({selectedWallets:o,customDestination:r}).then(L=>B(L)).catch(L=>console.error(L))},[]),pw(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=E.warnings?.quote??null,R=E.error,X=[];if(l&&X.push(Le.createElement(iw,{type:"error",variant:"alarm",title:l})),q||R){let L=`../${F.settings}`;X.push(Le.createElement(Dn,{warning:q,error:R,couldChangeSettings:!1,refetchQuote:M,showWarningModal:N,confirmationDisabled:!f,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:async()=>{x(!1),await b()},onChangeSettings:()=>s(L)}))}return Le.createElement(oe,{header:{title:ll.t("Confirm Swap"),onWallet:()=>{let L=`../${F.wallets}`;s(L)}},footer:Le.createElement(dw,null,Le.createElement("div",{className:fw()},Le.createElement(aw,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:T||h,disabled:!!E.error||!f,onClick:_},ll.t("Start Swap"))),Le.createElement(Wf,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:T||h,disabled:!f,onClick:m.bind(null,!0)},Le.createElement(cw,{size:24})))},p&&Le.createElement(md,{open:p,onClose:()=>m(!1),onCancel:v,loading:T,onCheckBalance:w}),Le.createElement(re,null,Le.createElement("div",{className:hw()},Le.createElement(lw,{variant:"title",size:"small"},ll.t("You get")),Le.createElement("div",{className:gw()},Le.createElement(Jr,{onClick:!T&&!p&&!N?M:void 0}))),Le.createElement(cl,{size:"12"}),am(X.map((L,K)=>({element:L,key:`alert-${K}`})),Le.createElement(cl,{size:10})),X.length>0?Le.createElement(cl,{size:10}):null,Le.createElement(No,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:E.error,loading:T,warning:E.warnings?.quote??null})))}i(Lf,"ConfirmSwapPage");import{i18n as Ht}from"@lingui/core";import{Button as vl,CustomTokensZeroStateDarkIcon as $w,CustomTokensZeroStateIcon as Fw,DeleteIcon as Ow,Divider as Yn,IconButton as Uw,MessageBox as zw,NotFound as Qw,styled as bl}from"@rango-dev/ui";import fe,{useState as wl}from"react";import{useNavigate as Hw}from"react-router-dom";import{CloseIcon as Sw,IconButton as Cw,SearchIcon as kw,TextField as Tw}from"@rango-dev/ui";import Gn from"react";import{styled as yw}from"@rango-dev/ui";var Mf=yw("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function vt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:c,suffix:u,...p}=t,m=s.length?Gn.createElement(Cw,{variant:"ghost",onClick:()=>c?.(""),size:"small"},Gn.createElement(Sw,{color:"gray",size:10})):null;return u&&(m=u),Gn.createElement(Tw,{prefix:Gn.createElement(Mf,null,Gn.createElement(kw,{color:"black"})),suffix:m,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...l},size:r,value:s,onChange:a,...p})}i(vt,"SearchInput");import{i18n as Tl}from"@lingui/core";import{Button as xw,CustomTokenWarning as Ew,darkTheme as Gf,Divider as Qt,ExternalLinkIcon as Iw,Image as Aw,ListItem as Nw,NotFound as Bw,PinIcon as Ww,Skeleton as Bo,Typography as jn,VirtualizedList as Lw}from"@rango-dev/ui";import W,{useState as Mw}from"react";import{useTranslation as Pw}from"react-i18next";import{Divider as Hf,ListItem as bw,Skeleton as Kn}from"@rango-dev/ui";import wt from"react";import{css as ln,darkTheme as ul,ImageContainer as vw,ListItemButton as ww,styled as Re,Typography as Pf}from"@rango-dev/ui";var ml=ln({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),dl=ln({position:"relative",height:12,width:"30%",maxWidth:"150px"}),fl=ln({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),gl=ln({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${ul} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),hl=ln({}),yl=ln(),_f=Re("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),Sl=Re("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Li=Re("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${dl}`]:{[`& .${gl}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${hl}`]:{bottom:"-15px"},[`& .${ml}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${fl}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),Df=Re(ww,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),Cl=Re("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),kl=Re(Pf,{}),$f=Re("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${yl}`]:{$$color:"$colors$neutral600",[`.${ul} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Vn=Re("div",{display:"flex",alignItems:"end",flexDirection:"column"}),AQ=Re("div",{display:"flex",alignItems:"center"}),Ff=Re("div",{position:"relative",[`& ${vw}`]:{borderRadius:"$xm",overflow:"hidden"}}),Of=Re("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),Uf=Re(Pf,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),zf=Re("a",{"& svg:hover":{color:"$colors$info"}}),Qf=Re("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":{[`.${ul} &`]:{color:"$foreground"}}}});function qf(t){return wt.createElement(Li,null,Array.from(Array(t.size),e=>wt.createElement(bw,{key:e,hasDivider:!0,start:wt.createElement(Kn,{variant:"circular",width:35,height:35}),end:wt.createElement(Vn,null,wt.createElement(Kn,{variant:"text",size:"large",width:70}),wt.createElement(Hf,{size:4}),wt.createElement(Kn,{variant:"text",size:"medium",width:50})),title:wt.createElement("div",null,wt.createElement(Kn,{variant:"text",size:"large",width:90}),wt.createElement(Hf,{size:4}),wt.createElement(Kn,{variant:"text",size:"medium",width:90}))})))}i(qf,"LoadingTokenList");var _w=20,Dw=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return W.createElement("div",{className:dl()},o?W.createElement("div",{className:ml()},o):W.createElement(Sl,{className:fl()},W.createElement(jn,{variant:"title",size:"xmedium"},r.symbol),W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(Cl,{css:a},W.createElement(kl,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&W.createElement("div",{className:`${gl()} ${!o&&hl()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",W.createElement(Qt,{size:4,direction:"horizontal"}),W.createElement(zf,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:c=>c.stopPropagation()},W.createElement(Iw,{size:12}))))},"renderDesc");function Xn(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:l,showWarning:c=!0}=t,u=S().fetchStatus,p=S().blockchains(),{getBalanceFor:m,fetchingWallets:h}=S(),{isTokenPinned:d}=S(),{setFromToken:f,setToToken:g}=O(),{t:C}=Pw(),k=Ue(),[y,T]=Mw(null),v=i(()=>{l==="source"?f({token:y,meta:{blockchains:p}}):g({token:y,meta:{blockchains:p}})},"updateToken"),E=i(()=>{v(),k()},"handleImportToken"),B=i(w=>{if(w.customToken){let{customToken:I,..._}=w;return W.createElement(xw,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),T({..._,warning:!0})},"handleClick")},W.createElement(jn,{variant:"body",size:"xsmall",color:"background"},C("import")))}let b=Ir(m(w));return s?s(w):h?W.createElement(Vn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})):b&&W.createElement($f,null,W.createElement(Uf,{variant:"title",size:"small"},b.amount),W.createElement("div",null),b.usdValue&&W.createElement(jn,{variant:"body",className:yl(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),N=i(()=>W.createElement(Lw,{itemContent:w=>{let b=e[w];if(b==="skeleton")return W.createElement(Nw,{hasDivider:!0,start:W.createElement(Bo,{variant:"circular",width:35,height:35}),end:W.createElement(Vn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})),title:W.createElement("div",null,W.createElement(Bo,{variant:"text",size:"large",width:90}),W.createElement(Qt,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:90}))});let I=b.address||"",_=p.find(L=>L.name===b.blockchain);if(!_)return null;let M=ds(_.color,"main"),q={$$color:M.main150,[`.${Gf} &`]:{$$color:M.main750},backgroundColor:"$$color"},R={$$color:M.main750,[`.${Gf} &`]:{$$color:M.main150},color:"$$color"},X=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick");return W.createElement(Qf,null,W.createElement(Df,{"tab-index":w,key:`${b.symbol}${b.address}`,id:`${b.symbol}${b.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b.customToken,onClick:X,start:W.createElement(Ff,null,W.createElement(Aw,{src:b.image===""?Sr:b.image,size:30}),t.type!=="custom-token"&&d(b,t.type)&&W.createElement(Of,null,W.createElement(Ww,{size:12,color:"gray"}))),title:_?.type==="COSMOS"||b.name||!b.name&&!I?W.createElement(Sl,null,W.createElement(jn,{variant:"title",size:"xmedium"},b.symbol),W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(Cl,{css:q},W.createElement(kl,{variant:"body",size:"xsmall",css:R},b.blockchain)),c&&b.warning&&W.createElement(W.Fragment,null,W.createElement(Qt,{direction:"horizontal",size:4}),W.createElement(Ew,{container:A()}))):void 0,description:typeof b!="string"&&_?.info&&I&&_.type!=="COSMOS"?Dw({address:I,token:b,customCssForTag:q,customCssForTagTitle:R,name:b.name,url:_.info.addressUrl.split("{wallet}").join(I)}):b.name||void 0,end:B(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),x=y?uo(y?.blockchain,p):null;return W.createElement(W.Fragment,null,a&&W.createElement(W.Fragment,null,W.createElement(jn,{variant:"label",size:"large"},Tl.t("Select Token")),W.createElement(Qt,{size:4})),W.createElement(_f,null,W.createElement(Qt,{size:4}),u==="loading"&&W.createElement(qf,{size:_w}),u==="success"&&(e.length?W.createElement(W.Fragment,null,W.createElement(Bn,{token:y,address:y?.address??"",blockchain:x??void 0,onImport:E,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),W.createElement(Li,{as:"ul"},N())):!!o&&W.createElement(Bw,{title:Tl.t("No results found"),description:Tl.t("Try using different keywords")}))))}i(Xn,"TokenList");var qw=bl("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Gw=bl("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),Vw=bl(Uw,{"&:hover":{"& svg":{color:"$secondary550"}}});function Vf(){let[t,e]=wl(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=O(),{mode:c}=Zo({}),u=Hw(),[p,m]=wl(!1),[h,d]=wl(),f=i(y=>{let T=y.target.value;e(T)},"handleSearch"),g=c==="dark",C=n.filter(y=>tt(y.symbol,t)||tt(y.address||"",t)||tt(y.name||"",t)),k=i(()=>{if(h){let y=a?ut(a):null,T=r?ut(r):null,v=ut(h);y===v?l({token:null}):T===v&&s({token:null}),o(h)}m(!1)},"handleDeleteCustomToken");return fe.createElement(oe,{header:{title:Ht.t("Custom Tokens")}},fe.createElement(re,null,fe.createElement(qw,null,n.length?fe.createElement(fe.Fragment,null,fe.createElement(vt,{value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:Ht.t("Search Token"),onChange:f}),fe.createElement(Yn,{size:16}),fe.createElement(Xn,{list:C,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>fe.createElement(Vw,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),d(y)}},fe.createElement(Ow,{size:12,color:"gray"}))})):fe.createElement(Gw,null,fe.createElement(Qw,{icon:g?fe.createElement($w,{size:200}):fe.createElement(Fw,{size:200}),title:Ht.t("No custom tokens"),description:Ht.t("press the button to add your custom token")})),fe.createElement(Yn,{size:20}),fe.createElement(vl,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>u(F.addCustomTokens)},Ht.t("Add Custom Token"))),fe.createElement(J,{open:p,dismissible:!0,onClose:()=>m(!1),container:A()},fe.createElement(zw,{title:Ht.t("Delete Custom Token"),type:"error",description:Ht.t("Are you sure you want to Delete this Token?")},fe.createElement(Yn,{size:40}),fe.createElement(Yn,{size:10}),fe.createElement(vl,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},Ht.t("Yes, Delete it")),fe.createElement(Yn,{size:12}),fe.createElement(vl,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},Ht.t("No, Continue"))))))}i(Vf,"CustomTokensPage");import{i18n as Ge}from"@lingui/core";import{useManager as mb}from"@rango-dev/queue-manager-react";import{Button as Wl,darkTheme as db,Divider as Lo,MessageBox as fb,NotFound as gb,styled as Ll,Typography as _i}from"@rango-dev/ui";import{TransactionStatus as Rn}from"rango-types";import ie,{useMemo as ug,useState as Di}from"react";import{useNavigate as hb}from"react-router-dom";import{FilterIcon as Rw,Popover as eb}from"@rango-dev/ui";import Wo from"react";import{css as Kw,darkTheme as Mi,IconButton as jw,styled as Zn}from"@rango-dev/ui";var xl=Zn("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${Mi} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),Kf=Zn(jw,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Mi} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Mi} &`]:{backgroundColor:"$neutral"},[`& ${xl}::before`]:{backgroundColor:"$secondary100",[`.${Mi} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),jf=Zn("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),Xf=Zn("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Yf=Kw({display:"flex",justifyContent:"space-between",alignItems:"center"}),Zf=Zn("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Jf}from"@lingui/core";import{Button as Xw,Divider as Rf,ListItemButton as Yw,Radio as Zw,RadioRoot as Jw,Typography as eg}from"@rango-dev/ui";import at from"react";function tg(t){let{filterBy:e,onClickItem:o}=t;return at.createElement(Xf,null,at.createElement("div",{className:Yf()},at.createElement(eg,{size:"small",variant:"body"},Jf.t("Status")),at.createElement(Xw,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Jf.t("Reset"))),at.createElement(Rf,{size:10}),at.createElement(Jw,{value:e},at.createElement(Zf,null,t.list.map((n,r)=>at.createElement(Yw,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:at.createElement(at.Fragment,null,at.createElement(Rf,{direction:"horizontal",size:4}),at.createElement(eg,{size:"medium",variant:"body"},n.title)),start:at.createElement(Zw,{value:n.id}),onClick:o})))))}i(tg,"FilterSelectorContent");function El(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Wo.createElement("div",null,Wo.createElement(eb,{open:a,align:"end",onOpenChange:o,container:A(),content:Wo.createElement(tg,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Wo.createElement(Kf,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Wo.createElement(xl,{isSelect:!!n},Wo.createElement(Rw,{size:16,color:"black"}),!!n&&Wo.createElement(jf,null)))))}i(El,"FilterSelector");import{i18n as nb}from"@lingui/core";import{getCurrentStep as rb}from"@rango-dev/queue-manager-rango-preset";import{Divider as ag,GroupedVirtualizedList as ib,Skeleton as ab,SwapListItem as sg,Typography as sb}from"@rango-dev/ui";import qe,{useCallback as lg,useEffect as lb,useRef as cb,useState as pb}from"react";function og(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(og,"calculateGroupsSoFar");import{css as tb,darkTheme as ob,styled as Jn}from"@rango-dev/ui";var Il=tb(),ng=Jn("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),Al=Jn("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${Il}`]:{$$color:"$colors$neutral600",[`.${ob} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Nl=Jn("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),rg=Jn("div",{gap:"$10",display:"flex",flexDirection:"column"}),ig=Jn("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var ub=10;function Bl(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=pb([]),l=cb(0),{swaps:c,groupCounts:u,groups:p}=n(e),m=lg(og,[]),h=lg(()=>{let d=e.length-l.current;d&&(l.current+=Math.min(d,ub),s(m(u,l.current)))},[e.length]);if(lb(()=>{r||h()},[r,h]),r){let d=[1,2];return qe.createElement(qe.Fragment,null,[d,d].map((g,C)=>qe.createElement(Al,{key:C},qe.createElement(Nl,null,qe.createElement(ab,{variant:"text",width:60,size:"small"}),qe.createElement(ag,{size:16})),qe.createElement(ag,{size:4}),qe.createElement(rg,null,g.map((y,T)=>qe.createElement(sg,{isLoading:!0,key:T}))))))}return qe.createElement(ib,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:d=>qe.createElement(Al,null,qe.createElement(Nl,null,qe.createElement(sb,{variant:"label",size:"medium",className:Il()},p[d]))),itemContent:(d,f)=>{let g=c[d],C=rb(g);if(!g)return null;let k=g.steps[0],y=g.steps[g.steps.length-1];return qe.createElement(ng,{key:g.requestId},qe.createElement(sg,{requestId:g.requestId,creationTime:g.creationTime,status:g.status,onClick:o,currentStep:C,tooltipContainer:A(),onlyShowTime:p[f]===nb.t("Today"),swapTokenData:{from:{token:{image:k.fromLogo,displayName:k.fromSymbol},blockchain:{image:k.fromBlockchainLogo||""},amount:P(g.inputAmount,6,6),realAmount:g.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:P(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(Bl,"HistoryGroupedList");import{i18n as Pi}from"@lingui/core";import cg from"dayjs";var pg=i(t=>{let e=new Map([["today",{title:Pi.t("Today"),swaps:[]}],["week",{title:Pi.t("This week"),swaps:[]}],["month",{title:Pi.t("This month"),swaps:[]}],["year",{title:Pi.t("This year"),swaps:[]}]]);function o(c,u){e.has(c)||e.set(c,{title:c,swaps:[]}),e.get(c)?.swaps.push(u)}i(o,"addYearsToOutput");let n=cg();t.forEach(c=>{let u=Number(c.creationTime),p=cg(u);if(n.isSame(p,"day"))e.get("today")?.swaps.push(c);else if(n.isSame(p,"week"))e.get("week")?.swaps.push(c);else if(n.isSame(p,"month"))e.get("month")?.swaps.push(c);else if(n.isSame(p,"year"))e.get("year")?.swaps.push(c);else{let m=new Date(u).getFullYear().toString();o(m,c)}});let r=Array.from(e.values()).filter(c=>c.swaps.length>0),a=r.flatMap(c=>c.swaps),s=r.map(c=>c.swaps.length),l=r.map(c=>c.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var yb=Ll("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),Sb=Ll("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Cb=Ll("div",{"._typography":{color:"$neutral700",[`.${db}&`]:{color:"$neutral900"}}}),kb=[{id:Rn.SUCCESS,title:Ge.t("Complete")},{id:Rn.RUNNING,title:Ge.t("Running")},{id:Rn.FAILED,title:Ge.t("Failed")}],Tb=i((t,e)=>t?.length?t.filter(o=>xt(o.fromBlockchain,e)||xt(o.toBlockchain,e)||xt(o.toSymbol,e)||xt(o.fromSymbol,e)).length:!1,"isStepContainsText");function mg(){let t=hb(),{manager:e,state:o}=mb(),n=gt(e).map(({swap:T})=>T),[r,a]=Di(""),[s,l]=Di(!1),c=!o.loadedFromPersistor,[u,p]=Di(""),[m,h]=Di(!1),d=i(T=>{let v=T.target.value;a(v)},"handleSearch"),f=ug(()=>!r&&!u?n:n.filter(T=>{let{inputAmount:v,status:E,steps:B,requestId:N}=T;return(!r||xt(v,r)||xt(E,r)||Tb(B,r)||xt(N,r))&&(!u||u===E)}),[n,r,u]),g=!f?.length&&!c,C=i(()=>h(!1),"onCloseModal"),k=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(T){console.log(T)}},"onClear"),y=ug(()=>!n.some(T=>T.status===Rn.SUCCESS||T.status===Rn.FAILED),[n]);return ie.createElement(oe,{header:{title:Ge.t("History"),suffix:ie.createElement(Jt,null,ie.createElement(Wl,{id:"widget-history-clear-btn",disabled:y,variant:"ghost",size:"xsmall",onClick:()=>h(!0)},ie.createElement(_i,{size:"medium",variant:"label",color:"error"},Ge.t("Clear"))))}},ie.createElement(re,null,ie.createElement(Sb,null,ie.createElement(vt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Ge.t("Search Transaction"),autoFocus:!0,onChange:d,style:{height:36},value:r}),ie.createElement(Lo,{size:10,direction:"horizontal"}),ie.createElement(El,{filterBy:u,open:s,onOpenChange:T=>l(T),onClickItem:T=>p(T),list:kb})),ie.createElement(Lo,{size:"16"}),ie.createElement(yb,null,g&&ie.createElement(ig,null,ie.createElement(Lo,{size:32}),ie.createElement(gb,{title:r?Ge.t("No results found"):Ge.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Ge.t("Try using different keywords"):Ge.t("Your transaction history is stored locally and will appear here after you start a swap")})),!g&&ie.createElement(Bl,{list:f,onSwapClick:t,groupBy:pg,isLoading:c}))),ie.createElement(J,{open:m,onClose:C,container:A()},ie.createElement(Lo,{size:20}),ie.createElement(fb,{type:"warning",title:Ge.t("Clear Transaction History"),description:ie.createElement(Cb,null,ie.createElement(_i,{variant:"body",size:"medium"},Ge.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),ie.createElement(Lo,{size:"24"}),ie.createElement(_i,{variant:"body",size:"small"},Ge.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),ie.createElement(Lo,{size:30}),ie.createElement(Wl,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},Ge.t("Yes, Clear the history")),ie.createElement(Lo,{size:10}),ie.createElement(Wl,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:C},ie.createElement(_i,{variant:"title",size:"medium",color:"primary"},Ge.t("No, Cancel")))))}i(mg,"HistoryPage");import{i18n as Gb}from"@lingui/core";import{Button as Vb,Divider as Mg,styled as Kb,WarningIcon as jb}from"@rango-dev/ui";import Xb from"bignumber.js";import Ve,{useEffect as Pg,useState as _g}from"react";import{useNavigate as Yb}from"react-router-dom";import{i18n as fg}from"@lingui/core";import{Alert as wb,Divider as Ml,NoRouteIcon as bb,Typography as xb}from"@rango-dev/ui";import Mo from"react";import{styled as vb}from"@rango-dev/ui";var dg=vb("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Pl(){let{fromToken:t,toToken:e}=O();return!!t&&!!e&&Mt(t,e)?Mo.createElement(dg,null,Mo.createElement(Ml,{size:10}),Mo.createElement(bb,{size:24,color:"gray"}),Mo.createElement(Ml,{size:4}),Mo.createElement(xb,{variant:"title",size:"small"},fg.t("No Routes Found")),Mo.createElement(Ml,{size:4}),Mo.createElement(wb,{title:fg.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Pl,"SameTokensWarning");import{i18n as Wb}from"@lingui/core";import{Header as Lb}from"@rango-dev/ui";import ro,{useEffect as Mb,useState as Pb}from"react";import{i18n as Ib}from"@lingui/core";import{Divider as Dl,FullExpandedQuote as Ab,Typography as Nb}from"@rango-dev/ui";import Ce from"react";import{styled as _l}from"@rango-dev/ui";var gg=_l("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),hg=_l("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),yg=_l("div",{width:"146px"});import{i18n as er}from"@lingui/core";import{Select as Eb}from"@rango-dev/ui";import Sg from"react";function $i(t){let{updateQuotePartialState:e,sortStrategy:o}=O(),n=[{value:"SMART",label:er.t("Smart Routing")},{value:"FEE",label:er.t("Lowest Fee")},{value:"SPEED",label:er.t("Fastest Transfer")},{value:"NET_OUTPUT",label:er.t("Maximum Return")},{value:"PRICE",label:er.t("Maximum Output")}];return Sg.createElement(yg,null,Sg.createElement(Eb,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i($i,"SelectStrategy");var Cg=3;function tr(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:c,quotes:u,updateQuotePartialState:p,fromToken:m,toToken:h,sortStrategy:d,error:f}=O(),{slippage:g,customSlippage:C}=S(),{findToken:k}=S(),y=l||A(),T=!!u&&u.results.length,v=C??g,E=i(x=>{if(!m||!h||!u)return null;let w={requestAmount:u.requestAmount,validationStatus:null,...x};return Ko({currentQuote:w,userSlippage:v,findToken:k})},"getQuoteWarning"),B=f?.type===0||f?.type===1,N=u?.results?Hr(d,u?.results):[];return Ce.createElement(Ce.Fragment,null,a&&Ce.createElement(Ce.Fragment,null,Ce.createElement(hg,null,Ce.createElement(Nb,{size:"xmedium",variant:"title"},Ib.t("Sort by")),Ce.createElement($i,{container:y})),Ce.createElement(Dl,{size:"10"})),e&&Array.from({length:Cg},(x,w)=>Ce.createElement(Ce.Fragment,{key:w},s?Ce.createElement(Ab,{loading:!0}):Ce.createElement(Hn,{tagHidden:!1,type:"list-item",expanded:!1}),w!==Cg-1&&Ce.createElement(Dl,{size:16}))),!e&&Ce.createElement(Ce.Fragment,null,T?N.map((x,w)=>{let b=E(x),I=al(x.swaps),_=N.length-1===w;return Ce.createElement(Ce.Fragment,{key:x.requestId},Ce.createElement(No,{showModalFee:r,container:y,selected:c?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:u.requestAmount,validationStatus:null},loading:e,error:I?.options||null,warning:b,fullExpandedMode:s,onClick:M=>{I||p("warning",b),p("error",I?.options||null),o(M)},type:"list-item"}),!_&&Ce.createElement(Dl,{size:16}))}):B&&Ce.createElement(gg,null,Ce.createElement(Pn,{size:s?"large":"small",error:f,fetch:n}))))}i(tr,"Quotes");import{darkTheme as Bb,styled as kg}from"@rango-dev/ui";var Tg=kg("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${Bb} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),vg=kg("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var _b=100;function $l(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=Pb(!1),c=s?"":"is-hidden",{config:u}=S(),p=u?.variant==="full-expanded",m=fo();return Mb(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},_b):(l(!1),h&&clearTimeout(h)),()=>{h&&clearTimeout(h)}},[a]),ro.createElement(Tg,{expandMode:u?.variant==="full-expanded"?"full":"default",className:`${c} ${oi()}`,id:Fe.EXPANDED_BOX_ID},ro.createElement(Lb,{title:Wb.t("Routes"),suffix:ro.createElement(ro.Fragment,null,ro.createElement($i,{container:m}),ro.createElement(xo,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),ro.createElement(vg,null,ro.createElement(tr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:fo(),onClickOnQuote:n,fullExpandedMode:p})))}i($l,"ExpandedQuotes");import{i18n as Ng}from"@lingui/core";import{SwapInput as Bg}from"@rango-dev/ui";import Ob from"bignumber.js";import or from"react";import{ReverseIcon as Fb}from"@rango-dev/ui";import Ol from"react";import{keyframes as Db,styled as wg}from"@rango-dev/ui";var Fl=450,$b=Db({"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)"}}),bg=wg("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),xg=wg("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${$b} ${Fl}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 Ul(){let t=O.use.switchFromAndTo();return Ol.createElement(bg,null,Ol.createElement(xg,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Fl),t()}},Ol.createElement(Fb,{size:12})))}i(Ul,"SwitchFromAndToButton");import{styled as Eg}from"@rango-dev/ui";var Ig=Eg("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),Ag=Eg("div",{position:"relative"});function zl(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:c,setInputAmount:u,inputAmount:p,inputUsdValue:m,outputAmount:h,outputUsdValue:d,selectedQuote:f}=O(),{connectedWallets:g,getBalanceFor:C}=S(),k=a?C(a):null,y=Ir(k)?.amount??"0",T=k?new Ob(k.amount).shiftedBy(-k.decimals):le,v=!!s&&pp(g,s.name),E=!Za(f,p,m),B=!Za(f,p,d),N=!m||!d||!d.gt(0)?null:Dt(m.toString(),d.toString());return or.createElement(Ig,null,or.createElement(Ag,null,or.createElement(Bg,{label:Ng.t("From"),mode:"From",onInputChange:u,balance:y,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:p,usdValue:E?void 0:P(m,4,4),realUsdValue:E?void 0:m?.toString(),error:E?ee().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:v,tooltipContainer:A(),onSelectMaxBalance:()=>{let x=P(T,k?.decimals),w=k?.amount?x.split(",").join(""):"";u(w)},anyWalletConnected:g.length>0}),or.createElement(Ul,null)),or.createElement(Bg,{sharpBottomStyle:!r&&(!!f||e),label:Ng.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:c?.displayName||"",image:c?.logo},token:{displayName:l?.symbol||"",image:l?.image,securityWarning:!!l?.warning},percentageChange:P(Dt(m,d),2,2),warningLevel:$t(N??0),price:{value:P(h,6,6),usdValue:B?void 0:P(d,4,4),realValue:h?.toString(),realUsdValue:B?void 0:d?.toString(),error:B?ee().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:A()}))}i(zl,"Inputs");import{useCallback as Ub,useEffect as zb,useRef as Qb,useState as Hb}from"react";function Wg(){let{fetch:t,loading:e,cancelFetch:o}=Ai({request:async(n,r)=>await ot().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Wg,"useFetchAllQuotes");var qb=600;function Fi({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Wg(),{excludeLiquiditySources:n,routing:r}=S().config,{connectedWallets:a}=S(),l=a.some(Ie=>Ie.isContractWallet),{fromToken:c,toToken:u,inputAmount:p,inputUsdValue:m,selectedQuote:h,sortStrategy:d,resetQuote:f,error:g,warning:C,setSelectedQuote:k,updateQuotePartialState:y}=O(),{slippage:T,customSlippage:v,affiliatePercent:E,affiliateRef:B,affiliateWallets:N,fetchStatus:x}=S(),w=S().getLiquiditySources(),b=S().getDisabledLiquiditySources(),I=S().excludeLiquiditySources(),{findToken:_}=S(),[M,q]=Hb(!0),R=Qb(p),X=v??T,K=!c||!u||Mt(c,u)||!gn(p),ae=i(Ie=>{q(Ie)},"resetState"),Q=i(Ie=>{let{fromToken:je,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:De}=Ie;if(M||ae(!0),!K&&je&&se){f();let Xe=_u({fromToken:je,toToken:se,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,wallets:a,slippage:j,affiliateRef:he,affiliatePercent:ce,affiliateWallets:De,contractCall:l});Uo("experimental",r)&&(Xe.experimental=!0),Uo("avoidNativeFee",r)&&(Xe.avoidNativeFee=!0),Uo("enableCentralizedSwappers",r)&&(Xe.enableCentralizedSwappers=!0),r?.maxLength&&(Xe.maxLength=r.maxLength),e(Xe).then(Te=>{let $e=Hr(d,Te.results),jt=wu(h,$e,Te.requestAmount);q(!1),y("quotes",Te),k(jt),Ni({diagnosisMessages:Te.diagnosisMessages,requestId:jt?.requestId||"",swaps:jt?.swaps});let po=jt&&Ko({currentQuote:jt,userSlippage:X,findToken:_});y("warning",po)}).catch(Te=>{let{error:$e}=Bi(Te);($e?.type===0||$e?.type===1)&&f(),$e?.type!==2&&(y("error",$e),q(!1))})}},"fetch"),de=Ub(Tr(Ie=>{Q(Ie)},qb),[K]);return zb(()=>{if(!t){q(!1);return}if(x!=="success")return;if(K){q(!1),(h||g||C)&&f();return}if(!gn(p)||m?.eq(0)){ae(!1),o();return}f(),ae(!0);let Ie=Q;return R.current&&R.current!=p&&(Ie=de),R.current=p,Ie({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:I,disabledLiquiditySources:b,slippage:X,affiliateRef:B,affiliatePercent:E,affiliateWallets:N,contractCall:l}),o},[x,p,c?.symbol,c?.address,c?.blockchain,u?.symbol,u?.address,u?.blockchain,K,w?.length,n,b.length,X,B,E,l,JSON.stringify(N)]),{fetch:()=>Q({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:I,disabledLiquiditySources:b,slippage:X,affiliateRef:B,affiliatePercent:E,affiliateWallets:N,contractCall:l}),loading:M}}i(Fi,"useSwapInput");function Lg(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};ye.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Lg,"emitPreventableEvent");var Zb=Kb("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),Jb=300;function Dg(){let t=Yb(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:c,setSelectedQuote:u,resetQuoteWallets:p,setQuoteWarningsConfirmed:m,updateQuotePartialState:h}=O(),[d,f]=_g(!1),{isLargeScreen:g,isExtraLargeScreen:C}=ki(),{fetch:k,loading:y}=Fi({refetchQuote:a}),{config:T,fetchStatus:v,connectedWallets:E}=S(),{isActiveTab:B}=ne(),[N,x]=_g(!1),b=Wu({fetchMetaStatus:v,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:E.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),I=yp(g,C,T?.variant),_=!!n&&!!e&&!!o&&new Xb(n).gt(0)&&!Qu(e,o),M=_&&v==="success"&&y,X=(!I||I&&c?.results.length)&&(l||s);Pg(()=>{p(),h("refetchQuote",!0)},[]),Pg(()=>{f(_)},[_]);let L=(r||s)&&!N?k:void 0,K=i(Q=>{I&&d?(f(!1),setTimeout(()=>{t(Q)},Jb)):t(Q)},"onHandleNavigation"),ae=i(Q=>{r?.requestId!==Q.requestId&&(x(!1),u(Q))},"onClickOnQuote");return Ve.createElement(Zb,null,Ve.createElement(oe,{height:"auto",footer:Ve.createElement(Vb,{id:`widget-swap-${b.action}-btn`,type:"primary",size:"large",disabled:b.disabled||!B,prefix:b.action==="confirm-warning"&&Ve.createElement(jb,null),fullWidth:!0,onClick:()=>{b.action==="connect-wallet"?Lg({type:"clickConnectWallet"},()=>K(F.wallets)):b.action==="confirm-warning"?x(!0):K(F.confirmSwap)}},b.title),header:{onWallet:()=>{K(F.wallets)},hasBackButton:!1,title:T.title||Gb.t("Swap"),suffix:Ve.createElement(xo,{hidden:I?["refresh"]:void 0,onClickRefresh:L,onClickHistory:()=>K(F.swaps),onClickSettings:()=>{K(F.settings)}})}},Ve.createElement(re,null,Ve.createElement(zl,{fetchingQuote:M,fetchMetaStatus:v,isExpandable:I,onClickToken:Q=>{K(Q==="from"?F.fromSwap:F.toSwap)}}),Ve.createElement(Mg,{size:"2"}),I?null:Ve.createElement(No,{quote:r,loading:M,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:c&&c.results.length>1?()=>{h("refetchQuote",!1),K(F.routes)}:void 0}),X?Ve.createElement(Ve.Fragment,null,Ve.createElement(Mg,{size:"10"}),Ve.createElement(Dn,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:k,showWarningModal:N,confirmationDisabled:!B,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:()=>{x(!1),m(!0),K(F.confirmSwap)},onChangeSettings:()=>K(F.settings)})):null,Ve.createElement(Pl,null))),I?Ve.createElement($l,{loading:M,onClickOnQuote:ae,fetch:k,onClickRefresh:L,isVisible:d}):null)}i(Dg,"Home");import{i18n as $g}from"@lingui/core";import{Alert as Rb,Divider as ex,List as tx,ListItemButton as ox,Radio as nx,RadioRoot as rx,Typography as ix}from"@rango-dev/ui";import Wt from"react";function io(){let{setLanguage:t,language:e,config:o}=S(),n=Ip,r=o?.language||zo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||zo),resetLanguage:()=>t(null)}}i(io,"useLanguage");function Fg(){let{activeLanguage:t,changeLanguage:e,languages:o}=io(),n=Ue(),r=o.map(a=>{let{local:s,label:l,SVGFlag:c}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Wt.createElement(ix,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:Wt.createElement(nx,{value:s}),start:Wt.createElement(c,null)}});return Wt.createElement(oe,{header:{title:$g.t("Language")}},Wt.createElement(re,null,Wt.createElement(Rb,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Wt.createElement(ex,{size:"8"}),Wt.createElement(rx,{value:t},Wt.createElement(tx,{type:Wt.createElement(ox,{title:$g.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i(Fg,"LanguagePage");import{i18n as qt}from"@lingui/core";import{Button as px,Checkbox as ux,Image as mx,ListItemButton as dx,NotFound as fx,Typography as gx}from"@rango-dev/ui";import Ke,{useState as hx}from"react";import{Checkbox as lx,Skeleton as Ug}from"@rango-dev/ui";import rr from"react";import{styled as Ql}from"@rango-dev/ui";var nr=Ql("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Hl=Ql("div",{width:80,display:"flex",justifyContent:"flex-end"}),ql=Ql("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as ax,styled as sx}from"@rango-dev/ui";var Og=sx(ax,{height:61});var cx=30;function Gl(){return rr.createElement(nr,null,Array.from(Array(cx),(t,e)=>rr.createElement(Og,{hasDivider:!0,key:e,start:rr.createElement(Ug,{variant:"circular",width:35,height:35}),title:rr.createElement(Ug,{variant:"text",size:"large",width:90}),end:rr.createElement(lx,{checked:!1})})))}i(Gl,"LoadingLiquiditySourceList");function Vl({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[r,a]=hx(""),s=S().toggleLiquiditySource,l=S().isInCampaignMode(),c=Wr(o,n),u={Exchanges:qt.t("Exchanges"),Bridges:qt.t("Bridges")},p=[];t==="Exchanges"&&p.push("DEX"),t==="Bridges"&&p.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=c.filter(k=>p.includes(k.type)),h=m.length===m.filter(k=>k.selected).length,d=i(()=>{m.forEach(k=>{h?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),f=m.map(k=>{let{selected:y,groupTitle:T,logo:v,id:E,...B}=k;return{id:`widget-setting-liquidity-source-${E.toLowerCase().replace(/\s+/g,"-")}-item-btn`,start:Ke.createElement(mx,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(T)},end:Ke.createElement(ux,{checked:y,disabled:l}),title:Ke.createElement(gx,{variant:"title",size:"xmedium"},qt.t(T)),selected:y,groupTitle:T,logo:v,...B}}),g=i(k=>{let y=k.target.value;a(y)},"handleSearch"),C=f;return r&&(C=f.filter(k=>xt(k.groupTitle,r))),Ke.createElement(oe,{header:{title:qt.t(t),suffix:Ke.createElement(Hl,null,Ke.createElement(px,{id:`widget-liquidity-source-${h?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:d},h?qt.t("Deselect all"):qt.t("Select all")))}},Ke.createElement(re,{view:!0},Ke.createElement(vt,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:qt.t("Search {sourceType}",{sourceType:u[t]}),onChange:g}),e==="loading"&&Ke.createElement(Gl,null),!C.length&&r?Ke.createElement(ql,null,Ke.createElement(fx,{title:qt.t("No results found"),description:qt.t("Try using different keywords")})):e==="success"&&Ke.createElement(nr,{disabled:l},C.map(k=>{let{groupTitle:y,...T}=k;return Ke.createElement(Ke.Fragment,{key:k.id},Ke.createElement(dx,{style:{height:"61px"},...T,selected:!1,hasDivider:!0}))}))))}i(Vl,"LiquiditySourcePage");import{i18n as yx}from"@lingui/core";import Oi from"react";import{useNavigate as Sx}from"react-router-dom";function zg(){let t=Sx(),e=Ue(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=O(),{fetch:l,loading:c}=Fi({refetchQuote:n}),u=i(h=>{r(h),a("refetchQuote",!1),e()},"onClickOnQuote"),p=`../${F.settings}`,m=`../${F.wallets}`;return Oi.createElement(oe,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:yx.t("Routes"),suffix:Oi.createElement(xo,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(p),a("refetchQuote",!0)}})}},Oi.createElement(re,null,Oi.createElement(tr,{fetch:l,loading:c,onClickOnQuote:u})))}i(zg,"RoutesPage");import{i18n as jg}from"@lingui/core";import{Divider as Xg,getCategoriesCount as Ax,SelectableCategoryList as Nx}from"@rango-dev/ui";import Gt,{useState as Yg}from"react";import{useNavigate as Bx}from"react-router-dom";import{i18n as Kl}from"@lingui/core";import{Divider as vx,Image as wx,ListItemButton as bx,NotFound as xx,Typography as Kg}from"@rango-dev/ui";import st,{useEffect as Ex,useState as Ix}from"react";var Qg=i((t,e,o)=>t.filter(n=>vr(n.type,o)).filter(n=>tt(n.name,e)||tt(n.displayName,e)),"filterBlockchains");import{ImageContainer as Cx,styled as Hg}from"@rango-dev/ui";var qg=Hg("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),Ui=Hg(Wn,{padding:0,margin:0,listStyle:"none",[`& ${Cx}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as kx,Skeleton as Gg}from"@rango-dev/ui";import zi from"react";var Tx=20;function Vg(){return zi.createElement(Ui,null,Array.from(Array(Tx),t=>zi.createElement(kx,{key:t,hasDivider:!0,start:zi.createElement(Gg,{variant:"circular",width:35,height:35}),title:zi.createElement(Gg,{variant:"text",size:"large",width:90})})))}i(Vg,"LoadingBlockchainList");function jl(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,l]=Ix(e),{fetchStatus:c}=S();Ex(()=>{l([...Qg(e,o,r)])},[e,o,r]);let u=i(()=>!s.length&&o?st.createElement(xx,{title:Kl.t("No results found"),description:Kl.t("Try using different keywords")}):st.createElement(Ui,{as:"ul",key:`${r}-${o}`},s.map(p=>st.createElement(bx,{key:`${p.name}-${p.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(p),start:st.createElement(wx,{src:p.logo,size:30}),title:st.createElement(Kg,{variant:"title",size:"medium"},p.displayName),id:p.name}))),"renderList");return st.createElement(st.Fragment,null,a&&st.createElement(st.Fragment,null,st.createElement(Kg,{variant:"label",size:"large"},Kl.t("Select Chain")),st.createElement(vx,{size:4})),st.createElement(qg,null,c==="loading"&&st.createElement(Vg,null),c==="success"&&u()))}i(jl,"BlockchainList");function Qi(t){let{type:e}=t,o=Ue(),[n,r]=Yg(""),[a,s]=Yg("ALL"),l=O.use.setToBlockchain(),c=O.use.setFromBlockchain(),{fetchStatus:u}=S(),p=Bx(),m=S().blockchains({type:e}),h=Ax(m),d=!t.hideCategory&&h!==1;return Gt.createElement(oe,{header:{title:jg.t("Select Chain")}},Gt.createElement(re,{view:!0},d&&Gt.createElement(Gt.Fragment,null,Gt.createElement(Nx,{setCategory:s,category:a,blockchains:m,isLoading:u==="loading"}),Gt.createElement(Xg,{size:24})),Gt.createElement(vt,{value:n,autoFocus:!0,placeholder:jg.t("Search Chain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:f=>r(f.target.value)}),Gt.createElement(Xg,{size:16}),Gt.createElement(jl,{list:m,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:f=>{e==="custom-token"?p(`..?blockchain=${f.name}`,{replace:!0}):(e==="source"?c(f):l(f),o())}})))}i(Qi,"SelectBlockchainPage");import{i18n as Gi}from"@lingui/core";import{Divider as nh,Spinner as Hx}from"@rango-dev/ui";import ao,{useEffect as qx,useState as Gx}from"react";import{useNavigate as Vx}from"react-router-dom";import{i18n as Zl}from"@lingui/core";import{BlockchainsChip as Hi,Divider as eh,Image as th,Skeleton as _x,Tooltip as Dx,Typography as Jl}from"@rango-dev/ui";import Me from"react";import{useEffect as Mx}from"react";var Zg=["ETH","COSMOS","OSMOSIS"];function Xl(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Wx),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let c=0;c<=l;c++){let u=n[c];s=s.filter(p=>u.name!==p)}}n.sort(Lx(s)),r=n.splice(a)}return{list:n,more:r}}i(Xl,"prepare");function Wx(t,e){let o=Zg,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(Wx,"sortByMostUsedBlockchains");function Lx(t){return i(function(o,n){let r=t.findIndex(c=>c===o.name),a=t.findIndex(c=>c===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(Lx,"generateSortByPreferredBlockchainsFor");function Jg(t,e){return!!e.list.find(o=>o.name===t)}i(Jg,"isInVisibleList");function Yl(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();Mx(()=>{if(e?.selected){let a=Xl(t,o,e);Jg(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Xl(t,o,e);return{list:r.list,more:r.more,history:[]}}i(Yl,"usePrepareBlockchainList");import{styled as Px}from"@rango-dev/ui";var Rg=Px("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var $x=12;function Rl(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,s=Yl(e,{limit:10,selected:n?.name}),{fetchStatus:l}=S(),c=O.use.resetToBlockchain(),u=O.use.resetFromBlockchain(),p=s.more.length>0,m=s.more.length===1,h=!m&&p;return Me.createElement(Me.Fragment,null,Me.createElement(eh,{size:12}),Me.createElement(Jl,{variant:"label",size:"large"},Zl.t("Select Chain")),Me.createElement(eh,{size:12}),Me.createElement(Rg,null,l==="loading"&&Array.from(Array($x),d=>Me.createElement(_x,{key:d,variant:"rounded",height:50})),l==="success"&&Me.createElement(Me.Fragment,null,Me.createElement(Hi,{selected:!n,onClick:()=>{o==="from"?u():c()}},Me.createElement(Jl,{variant:"body",size:"xsmall",color:"secondary500"},Zl.t("All"))),s.list.map(d=>Me.createElement(Dx,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:A()},Me.createElement(Hi,{key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},Me.createElement(th,{src:d.logo,size:30})))),m?Me.createElement(Hi,{key:s.more[0].name,selected:!!n&&n.name===s.more[0].name,onClick:()=>r(s.more[0])},Me.createElement(th,{src:s.more[0].logo,size:30})):null,h?Me.createElement(Hi,{onClick:a,key:"more-blockchains"},Me.createElement(Jl,{variant:"body",size:"xsmall",color:"secondary500"},Zl._("More +{count}",{count:s.more.length}))):null)))}i(Rl,"BlockchainsSection");import{useCallback as Ox,useRef as Ux,useState as ec}from"react";function tc(){let t=S().blockchains(),e=Ux(null),{customTokens:o}=S(),[n,r]=ec(!1),[a,s]=ec([]),[l,c]=ec(null),u=i(async(h,d)=>{c(null),r(!0),s([]);try{let f=await ot().searchCustomTokens({query:h,blockchain:d},{signal:e.current?.signal}),g=new Set(o().map(y=>_t(y))),C=new Set(t.map(y=>y.name)),k=f.tokens.filter(y=>C.has(y.blockchain)&&!g.has(_t(y)));s(k),r(!1)}catch(f){c(f instanceof Error?f.message:"something went wrong"),s([]),f?.name!=="CanceledError"&&r(!1)}},"fetch"),p=Ox(Tr((h,d)=>{e.current?.signal.aborted||u(h,d)},600),[t.length]);return{fetch:(h,d)=>{e.current=new AbortController,s([]),r(!0),p(h,d)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:l}}i(tc,"useSearchCustomTokens");function qi(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(qi,"shouldSearchForCustomTokens");function oh(t,e,o,n,r){let a=[...t];return qi(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(oh,"prepareTokensList");function Vi(t){let{type:e}=t,o=Vx(),n=Ue(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:c,setToBlockchain:u}=O(),{getBalanceFor:p}=S(),{fetch:m,loading:h,tokens:d,cancel:f}=tc(),[g,C]=Gx(""),k=e==="source"?r:a,y=k?.name??"",T=S().blockchains({type:e}),v=S().tokens({type:e,blockchain:y,searchFor:g,getBalanceFor:p}),E=oh(v,d,g,h,k?.name),B=i(w=>{e==="source"?c(w):u(w)},"updateBlockchain"),N=i(w=>{e==="source"?s({token:w,meta:{blockchains:T}}):l({token:w,meta:{blockchains:T}})},"updateToken"),x={source:Gi.t("Source"),destination:Gi.t("Destination")};return qx(()=>(qi(v,g,k?.name)&&m(g,k?.name??void 0),()=>{f()}),[v.length,g,k?.name]),ao.createElement(oe,{header:{title:Gi.t("Swap {type}",{type:x[e]})}},ao.createElement(re,null,ao.createElement(Rl,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:w=>{B(w)}}),ao.createElement(nh,{size:24}),ao.createElement(vt,{value:g,autoFocus:!0,placeholder:Gi.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>C(""),onChange:w=>C(w.target.value),suffix:qi(v,g,k?.name)&&h?ao.createElement(Hx,{size:12,color:"secondary"}):void 0}),ao.createElement(nh,{size:16}),ao.createElement(Xn,{list:E,selectedBlockchain:y,searchedFor:g,type:e,onChange:w=>{N(w);let b=T.find(I=>w.blockchain===I.name);b&&B(b),n()}})))}i(Vi,"SelectSwapItemsPage");import{i18n as ic}from"@lingui/core";import{Alert as CE,Button as kE,styled as TE}from"@rango-dev/ui";import Po from"react";import{useInRouterContext as vE,useSearchParams as wE}from"react-router-dom";import{i18n as ch}from"@lingui/core";import{Alert as Yx,Divider as nc,InfoIcon as Zx,SlippageIcon as Jx,TextField as Rx,Tooltip as eE,Typography as ph}from"@rango-dev/ui";import Pe from"react";import{Chip as Kx,styled as ir,TextField as jx}from"@rango-dev/ui";var rh=ir("div",{paddingTop:"$5",padding:"$10 $5"}),ih=ir("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${jx}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),ah=ir("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),Ki=ir("div",{maxWidth:"280px",padding:"$10"}),sh=ir(Kx,{width:"61px",flexShrink:0});import{i18n as oc}from"@lingui/core";import{Typography as Xx}from"@rango-dev/ui";import ar from"react";function lh(){return ar.createElement(Ki,null,ar.createElement(Xx,{variant:"label",size:"medium",color:"neutral700"},oc.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),ar.createElement("br",null),ar.createElement("br",null),ar.createElement("b",null,oc.t("Warning")),":\xA0",oc.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(lh,"SlippageTooltipContent");function rc(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),r=o!==null?bp(o):null,a=i(c=>{let u=c.target.value,p=parseFloat(u);if(isNaN(p))return n(null);let m=p;p>Cn&&(m=Cn),n(m)},"onSlippageValueChange"),s=i(c=>{o!==null&&n(null),e(c)},"onClickSlippageChip"),l=i(c=>{let u=c.target,p=/^(0|[1-9]\d*)(\.\d{1,2})?$/,m=u.value;p.test(m)||(u.value=m.slice(0,-1))},"onInput");return Pe.createElement(rh,null,Pe.createElement(ah,null,Pe.createElement(Jx,{size:16,color:"gray"}),Pe.createElement(nc,{direction:"horizontal",size:4}),Pe.createElement(ph,{variant:"title",size:"xmedium"},ch.t("Slippage tolerance per swap")),Pe.createElement(nc,{direction:"horizontal",size:4}),Pe.createElement(eE,{container:A(),side:"top",sideOffset:4,content:Pe.createElement(lh,null)},Pe.createElement(Zx,{color:"gray"}))),Pe.createElement(ih,null,Sp.map((c,u)=>{let p=`slippage-${u}`;return Pe.createElement(sh,{key:p,onClick:()=>s(c),selected:o===null&&c===t,label:`${c.toString()}%`})}),Pe.createElement(Rx,{type:"number",min:"0.01",max:"30",step:"0.01",onInput:l,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:a,suffix:o&&Pe.createElement(ph,{variant:"body",size:"small"},"%"),placeholder:ch.t("Custom")})),r&&Pe.createElement(Pe.Fragment,null,Pe.createElement(nc,{size:10}),Pe.createElement(Yx,{variant:"alarm",type:r.type,title:r.message})))}i(rc,"Slippage");import{i18n as ht}from"@lingui/core";import{AutoThemeIcon as uh,BridgesIcon as tE,ChevronRightIcon as ji,DarkModeIcon as mh,Divider as sr,ExchangeIcon as oE,InfinityIcon as nE,InfoIcon as rE,LanguageIcon as iE,LightModeIcon as dh,List as aE,ListItem as sE,ListItemButton as lE,Skeleton as cE,styled as pE,Switch as uE,Tabs as mE,TargetIcon as dE,Tooltip as fE,Typography as et}from"@rango-dev/ui";import $ from"react";import{useNavigate as gE}from"react-router-dom";var hE=pE("div",{width:"202px",height:"$40"}),yE=[{id:"light",icon:$.createElement(dh,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Light"))},{id:"dark",icon:$.createElement(mh,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Dark"))},{id:"auto",icon:$.createElement(uh,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Auto"))}],SE=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return $.createElement(uh,{...e});case"dark":return $.createElement(mh,{...e});default:return $.createElement(dh,{...e})}},"getThemeIcon");function fh(){let t=gE(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:r,languages:a}=io(),s=a.find(L=>L.local===r)?.label,l=S().fetchStatus,c=S().swappers(),u=S().getDisabledLiquiditySources(),{config:{features:p}}=S(),m=S().customTokens(),h=Ye("theme",p),d=Ye("liquiditySource",p),f=Ye("language",p),g=Ye("customTokens",p),C=S().infiniteApprove,k=S().toggleInfiniteApprove,y=Wr(c,u),T=y.filter(L=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(L.type)),v=T.length,E=T.filter(L=>L.selected).length,B=y.filter(L=>L.type==="DEX"),N=B.length,x=B.filter(L=>L.selected).length,w=i((L,K)=>{switch(l){case"loading":return $.createElement(cE,{variant:"text",size:"medium",width:50});case"failed":return $.createElement(et,{variant:"body",size:"medium",color:"$error500"},ht.t("Loading failed"));default:return $.createElement(et,{variant:"body",size:"medium"},`${L} / ${K}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Bridges")),end:$.createElement($.Fragment,null,w(E,v),$.createElement(sr,{direction:"horizontal",size:8}),$.createElement(ji,{color:"black"})),onClick:()=>t(F.bridges),start:$.createElement(tE,{color:"gray",size:16})},I={id:"widget-setting-exchange-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Exchanges")),end:$.createElement($.Fragment,null,w(x,N),$.createElement(sr,{direction:"horizontal",size:8}),$.createElement(ji,{color:"black"})),start:$.createElement(oE,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},_={id:"widget-setting-custom-tokens-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Custom Tokens")),end:$.createElement($.Fragment,null,$.createElement(et,{variant:"body",size:"medium"},`${m.length}`),$.createElement(sr,{direction:"horizontal",size:8}),$.createElement(ji,{color:"black"})),start:$.createElement(dE,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},M={id:"widget-setting-language-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Language")),start:$.createElement(iE,{color:"gray",size:16}),end:$.createElement($.Fragment,null,$.createElement(et,{variant:"body",size:"medium"},s),$.createElement(sr,{direction:"horizontal",size:8}),$.createElement(ji,{color:"black"})),onClick:()=>t(F.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:$.createElement($.Fragment,null,$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Infinite approval")),$.createElement(sr,{direction:"horizontal",size:4}),$.createElement(fE,{side:"top",sideOffset:4,container:A(),content:$.createElement(Ki,null,$.createElement(et,{variant:"label",size:"medium",color:"neutral700"},$.createElement("b",null,ht.t("Warning")),":\xA0",ht.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},$.createElement(rE,{color:"gray"}))),start:$.createElement(nE,{color:"gray",size:16}),end:$.createElement(uE,{checked:C}),onClick:k},R={id:"widget-setting-theme-item-btn",type:$.createElement(sE,null),title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Theme")),end:$.createElement(hE,null,$.createElement(mE,{container:A(),items:yE,value:n,onChange:L=>o(L.id),type:"primary",borderRadius:"small"})),start:SE(n)},X=d?[]:[b,I];return g||X.push(_),f||X.push(M),X.push(q),!e?.singleTheme&&!h&&X.push(R),$.createElement(aE,{type:$.createElement(lE,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:X})}i(fh,"SettingsLists");var bE=TE("div",{paddingLeft:"$8"});function gh(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=wE(),r=vE(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Po.createElement(oe,{header:{title:ic.t("Settings")}},Po.createElement(re,null,o&&Po.createElement(CE,{type:"info",variant:"alarm",title:ic.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:Po.createElement(bE,null,Po.createElement(kE,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},ic.t("Reset")))}),Po.createElement(rc,null),Po.createElement(fh,null)))}i(gh,"SettingsPage");import{i18n as fI}from"@lingui/core";import{cancelSwap as gI}from"@rango-dev/queue-manager-rango-preset";import{useManager as hI}from"@rango-dev/queue-manager-react";import{Alert as yI}from"@rango-dev/ui";import vc from"react";import{useParams as SI}from"react-router-dom";import{i18n as lt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as XE,getCurrentStep as YE,getRelatedWalletOrNull as ZE}from"@rango-dev/queue-manager-rango-preset";import{Button as Xh,CopyIcon as JE,Divider as RE,DoneIcon as eI,IconButton as tI,QuoteCost as oI,RangoExplorerIcon as nI,StepDetails as rI,Tooltip as Yh,Typography as _o,useCopyToClipboard as iI}from"@rango-dev/ui";import{useWallets as aI}from"@rango-dev/wallets-react";import Zh from"bignumber.js";import{PendingSwapNetworkStatus as oa}from"rango-types";import Y,{useEffect as Jh,useRef as sI,useState as Rh}from"react";import{useNavigate as lI}from"react-router-dom";import{i18n as so}from"@lingui/core";var xE=[so.t("Sunday"),so.t("Monday"),so.t("Tuesday"),so.t("Wednesday"),so.t("Thursday"),so.t("Friday"),so.t("Saturday")];function hh(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?so.t("Today"):`${xE[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(hh,"timeSince");function yh(t){return t.finishTime?hh(parseInt(t.finishTime)):hh(parseInt(t.creationTime))}i(yh,"getSwapDate");import{PendingSwapNetworkStatus as Zi}from"rango-types";import Ji from"react";import{i18n as Xi}from"@lingui/core";import{Button as Sh,Divider as ac,MessageBox as EE}from"@rango-dev/ui";import lo from"react";var Ch=i(({onCancel:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(ac,{size:20}),lo.createElement(EE,{type:"error",title:Xi.t("Cancel Swap"),description:Xi.t("Are you sure you want to cancel this swap?")}),lo.createElement(ac,{size:32}),lo.createElement(Sh,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Xi.t("Yes, Cancel it")),lo.createElement(ac,{size:12}),lo.createElement(Sh,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Xi.t("No, Continue"))),"CancelContent");import{i18n as Yi}from"@lingui/core";import{Button as kh,Divider as sc,MessageBox as IE,Typography as AE}from"@rango-dev/ui";import Vt from"react";var Th=i(({onDelete:t,onClose:e})=>Vt.createElement(Vt.Fragment,null,Vt.createElement(sc,{size:20}),Vt.createElement(IE,{type:"error",title:Yi.t("Delete Transaction"),description:Yi.t("Are you sure you want to delete this swap?")}),Vt.createElement(sc,{size:32}),Vt.createElement(kh,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Yi.t("Yes, Delete it")),Vt.createElement(sc,{size:12}),Vt.createElement(kh,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Vt.createElement(AE,{variant:"title",size:"medium",color:"primary"},Yi.t("No, Cancel")))),"DeleteContent");import{i18n as lc}from"@lingui/core";import{PendingSwapNetworkStatus as cc}from"rango-types";var pc={[cc.WaitingForNetworkChange]:{type:"loading",title:lc.t("Change Network")},[cc.WaitingForConnectingWallet]:{type:"warning",title:lc.t("Connect Wallet")},[cc.NetworkChanged]:{type:"success",title:lc.t("Network Changed")}};import{warn as NE}from"@rango-dev/logging-core";import{getCurrentStep as BE,getRelatedWalletOrNull as WE}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as LE,Wallet as ME}from"@rango-dev/ui";import{useWallets as PE}from"@rango-dev/wallets-react";import cn,{useState as _E}from"react";import{styled as uc}from"@rango-dev/ui";var vh=uc("div",{display:"flex",justifyContent:"center"}),DK=uc("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),wh=uc("img",{width:"100%"});var bh=i(t=>{let{type:e,title:o,swap:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,[l,c]=_E(),{getWalletInfo:u,state:p}=PE(),m=BE(n),h=m?WE(n,m):null,d=m?.fromBlockchain,f=h?.walletType,g=f?hn(p(f)):null,C=f?u(f):null,k=a&&!!f&&!!g&&!!C,{list:y}=yt(),T=i(()=>{if(f){let v=y.find(E=>E.type===f);v?c(v):NE(new Error(`It seems requested wallet to be connected is not available in the list. requested wallet: ${v}`))}},"handleWalletItemClick");return cn.createElement(cn.Fragment,null,cn.createElement(LE,{type:e,title:o,description:r}),k&&cn.createElement(vh,null,cn.createElement(ME,{container:A(),title:C.name,image:C.img,type:f,state:g,link:C.installLink,disabled:s,onClick:T})),cn.createElement(Co,{wallet:l,onClose:()=>{c(void 0)},options:{defaultSelectedChains:d?[d]:void 0}}))},"WalletStateContent");function mc(t){let{state:e,onClose:o,onDelete:n,onCancel:r,swap:a,message:s,walletButtonDisabled:l}=t,c=e===Zi.WaitingForNetworkChange||e===Zi.WaitingForConnectingWallet||e===Zi.NetworkChanged;return Ji.createElement(J,{open:!!e,onClose:o,container:document.getElementById(Fe.SWAP_BOX_ID)||document.body},c&&Ji.createElement(bh,{type:pc[e].type,title:pc[e].title,swap:a,message:s,walletButtonDisabled:l,showWalletButton:e!==Zi.WaitingForNetworkChange}),e==="delete"&&Ji.createElement(Th,{onClose:o,onDelete:n}),e==="cancel"&&Ji.createElement(Ch,{onClose:o,onCancel:r}))}i(mc,"SwapDetailsModal");import{i18n as lr}from"@lingui/core";import{Button as dc,Divider as cr,MessageBox as Ih,TokenAmount as DE,Typography as Ah}from"@rango-dev/ui";import ge from"react";import{Link as $E,useNavigate as FE}from"react-router-dom";var xh="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",Eh="/profile";function fc(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:c,chain:u,percentageChange:p,description:m,diagnosisUrl:h}=t,d=FE(),{showProfileBanner:f}=ne();return ge.createElement(J,{open:e,onClose:o,container:document.getElementById(Fe.SWAP_BOX_ID)||document.body},n==="success"?ge.createElement(Ih,{type:"success",title:lr.t("Swap Successful")},ge.createElement(DE,{direction:"vertical",tooltipContainer:A(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:c,chain:u,percentageChange:p}),ge.createElement(cr,{size:12}),ge.createElement(Ah,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):ge.createElement(Ih,{type:"error",title:lr.t("Transaction Failed"),description:m}),ge.createElement(cr,{size:30}),n==="success"&&ge.createElement(ge.Fragment,null,f&&ge.createElement(ge.Fragment,null,ge.createElement($E,{to:Eh},ge.createElement(wh,{src:xh,alt:"Profile Banner"})),ge.createElement(cr,{size:30})),ge.createElement(dc,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{d("../../")}},lr.t("Done"))),ge.createElement(cr,{size:12}),h&&ge.createElement(ge.Fragment,null,ge.createElement(dc,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(h,"_blank")},lr.t("Diagnosis")),ge.createElement(cr,{size:12})),ge.createElement(dc,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},ge.createElement(Ah,{variant:"title",size:"medium",color:"primary"},lr.t("See Details"))))}i(fc,"SwapDetailsCompleteModal");import jE from"react";import{i18n as qE}from"@lingui/core";import{Alert as Gh,IconButton as GE,LinkIcon as VE}from"@rango-dev/ui";import co,{Fragment as KE}from"react";import{Alert as UE,ChevronDownIcon as zE,IconButton as QE}from"@rango-dev/ui";import un,{useState as HE}from"react";import{css as pr,darkTheme as Nh,styled as Kt,Typography as OE}from"@rango-dev/ui";var Bh=Kt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Ri=Kt("div",{width:"100%","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${Nh} &`]:{color:"$secondary500"}}}}}),Wh=Kt(Wn,{padding:"$0 $20 $20 $20"}),b8=Kt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Lh=Kt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),x8=Kt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),pn=pr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${Nh} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Mh=pr({padding:"$5 0"}),ea=pr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),Ph=pr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),_h=pr({width:"100%",padding:"0 $20 $10"}),Dh=Kt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),$h=Kt("div",{display:"flex",flexDirection:"column",gap:"$5"}),ta=Kt(OE,{wordBreak:"break-word"});import{styled as gc}from"@rango-dev/ui";var Fh=gc("div",{display:"flex",flexDirection:"column",gap:"$10"}),Oh=gc("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),Uh=gc("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function zh(t){let{message:e}=t,[o,n]=HE(!1);return un.createElement(UE,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&un.createElement(QE,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},un.createElement(Oh,{rotated:o},un.createElement(zE,{size:12,color:"gray"}))),footer:un.createElement(Uh,{open:o},un.createElement(ta,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(zh,"FailedAlert");import{i18n as Qh}from"@lingui/core";import{Alert as hc,Button as Hh}from"@rango-dev/ui";import{PendingSwapNetworkStatus as yc}from"rango-types";import ur from"react";function qh(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?ur.createElement(hc,{type:"warning",title:n.shortMessage,action:ur.createElement(Hh,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(yc.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Qh.t("Change"))}):r===yc.WaitingForConnectingWallet?ur.createElement(hc,{type:"warning",title:n.shortMessage,action:ur.createElement(Hh,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(yc.WaitingForConnectingWallet)}},Qh.t("Connect"))}):ur.createElement(hc,{type:"warning",title:n.shortMessage})}i(qh,"WarningAlert");function Sc(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=Nn(a),c=a.status==="waitingForApproval"&&!l,u=a.status==="running"&&!l,p=u&&!s||c&&!a.explorerUrl?.length;return co.createElement(Fh,null,a.explorerUrl?.map((m,h,d)=>{let f=h+m.url,g=h===d.length-1,C=(g&&u||c)&&!p,k=g&&a.status==="failed";return co.createElement(KE,{key:f},co.createElement(Gh,{type:g&&(C&&"loading"||k&&"error")||"success",title:m.description?`${m.description} Tx`:qE.t("View transaction"),action:m.url&&co.createElement(GE,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},co.createElement(VE,{size:12}))}))}),p&&co.createElement(Gh,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&co.createElement(qh,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&co.createElement(zh,{message:r}))}i(Sc,"SwapDetailsAlerts");var Vh=2e3;var Kh=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:pt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:P(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:pt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:P(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:mn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(c=>({from:{chain:{displayName:pt(c.fromBlockchain,e)??"",image:c.fromBlockchainLogo??""}},to:{chain:{displayName:pt(c.toBlockchain,e)??"",image:c.toBlockchainLogo??""}},swapper:{displayName:mn(c.swapperId,o)??"",image:c.swapperLogo??"",type:c.swapperType}})):[],alerts:jE.createElement(Sc,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function jh(t){if(Nn(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(jh,"getStepState");function Cc(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=aI(),c=S().blockchains(),u=S().swappers(),{findToken:p}=S(),m=O.use.retry(),h=ne.use.isActiveTab(),d=lI(),[f,g]=iI(Vh),C=sI(null),[k,y]=Rh(null),[T,v]=Rh(null),E=i(()=>{r(),y(null)},"onCancel"),B=we.use.getNotifications(),N=we.use.removeNotification(),x=B(),w=YE(e),b=w?.networkStatus;Jh(()=>{x.find($e=>$e.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),N(e.requestId)):T&&v(null))},[e.status,e.requestId]),Jh(()=>{L?y(oa.WaitingForNetworkChange):b===oa.WaitingForConnectingWallet||b===oa.NetworkChanged?y(b):y(null)},[b]);let I=Ou(e),_=w?XE(e,w):null,M=w?ZE(e,w):null,q=yh(e),R=Uu(e),X=i(Te=>!!l(Te)?.mobileWallet,"isMobileWallet"),L=b===oa.WaitingForNetworkChange&&!!_&&!!M?.walletType&&(X(M.walletType)||a(M.walletType,_.network)),K=L?s.bind(null,M.walletType,[{namespace:_.namespace,network:_.network}]):void 0,ae=Fu(e,w,l),Q=Kh({swap:e,switchNetwork:K,showNetworkModal:b,setNetworkModal:y,message:ae,blockchains:c,swappers:u}),de=Q.length,[Ie,je]=[e.steps[0],e.steps[de-1]],se=je.outputAmount||je.expectedOutputAmountHumanReadable,ct=e.steps.reduce((Te,$e)=>Te+parseFloat($e.feeInUsd||""),0),V=e.steps.find(Te=>Te.diagnosisUrl)?.diagnosisUrl,D=P(parseFloat(se||"0")*(je.toUsdPrice||0),4,4),G=P(parseFloat(e.inputAmount)*(Ie.fromUsdPrice||0),4,4),j=se?new Zh(se).multipliedBy(je.toUsdPrice||0).toString():"",he=new Zh(e.inputAmount).multipliedBy(Ie.fromUsdPrice||0).toString(),ce=Dt(G,D),De=ae.detailedMessage.content||ae.shortMessage,Xe=e.status==="success"?lt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:P(se,6,6),token:Q[de-1].to.token.displayName,conciseAddress:Ar(e.wallets[Q[de-1].to.chain.displayName]?.address||""),chain:Q[de-1].to.chain.displayName}}):Y.createElement($h,null,Y.createElement(_o,{variant:"body",size:"medium",color:"neutral700",align:"center"},De?"":lt.t("Transaction was not sent."),I?`${lt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:I.outputAmount,symbol:I.symbol,blockchain:I.blockchain}})}`:""),De&&Y.createElement(ta,{align:"center",variant:"body",size:"medium",color:"neutral700"},Y.createElement("b",null,"Reason:")," ",De));return Y.createElement(oe,{header:{title:lt.t("Swap Details"),onCancel:e.status==="running"?()=>y("cancel"):void 0,suffix:e.status!=="running"&&Y.createElement(Jt,null,Y.createElement(Xh,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>y("delete")},Y.createElement(_o,{size:"medium",variant:"label",color:"error"},lt.t("Delete"))))},footer:R&&!T&&Y.createElement(Xh,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let Te=Qr(e,c,p);m(Te),setTimeout(()=>{d("../../")},0)}},lt.t("Try again"))},Y.createElement(re,{compact:!0,view:!0},Y.createElement(Ri,null,Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},`${lt.t("Request ID")}`),Y.createElement("div",{className:ea()},Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},o),Y.createElement(Yh,{container:A(),content:f?lt.t("Copied To Clipboard"):lt.t("Copy Request ID"),open:f||void 0,side:"bottom",alignOffset:-16,align:"end"},Y.createElement(tI,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:g.bind(null,o||"")},f?Y.createElement(eI,{size:16,color:"secondary"}):Y.createElement(JE,{size:16,color:"gray"}))),Y.createElement(Dh,{target:"_blank",href:`${Gc}/swap/${o}`},Y.createElement(Yh,{container:A(),content:lt.t("View on Rango Explorer"),side:"bottom"},Y.createElement(nI,{size:20}))))),Y.createElement("div",{className:pn()},Y.createElement(_o,{variant:"label",size:"large",color:"neutral700"},e.finishTime?lt.t("Finished at"):lt.t("Created at")),Y.createElement(_o,{variant:"label",size:"small",color:"neutral700"},q))),Y.createElement("div",{className:Ph()},Y.createElement(oI,{fee:P(String(ct),2,2),time:fn(wr(e.steps)),steps:de}),Y.createElement(Fn,{from:{price:{value:P(e.inputAmount,6,6),usdValue:G,realUsdValue:he,realValue:e.inputAmount},token:{displayName:Q[0].from.token.displayName,image:Q[0].from.token.image},chain:{image:Q[0].from.chain.image,displayName:Q[0].from.chain.displayName}},to:{price:{value:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||""},token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image,displayName:Q[de-1].to.chain.displayName}},percentageChange:P(ce,2,2),warningLevel:$t(ce??0)})),Y.createElement("div",{className:_h()},Y.createElement(_o,{variant:"title",size:"small"},lt.t("Swaps steps"))),Y.createElement(RE,{size:8}),Y.createElement(Wh,{ref:C},Q.map((Te,$e)=>{let jt=$e,po=jh(e.steps[$e]),Iy=po==="error"||po==="in-progress"||po==="warning"||po==="completed"&&$e===Q.length-1;return Y.createElement(rI,{key:jt,step:Te,type:"swap-progress",ref:C,state:po,hasSeparator:$e!==0,tabIndex:jt,isFocused:Iy,tooltipContainer:A()})}))),Y.createElement(mc,{state:k,onClose:()=>y(null),onCancel:E,onDelete:n,message:ae.detailedMessage.content,swap:e,walletButtonDisabled:!h}),Y.createElement(fc,{open:!!T,diagnosisUrl:V,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:P(se,6,6),usdValue:D,realUsdValue:j,realValue:se||"",percentageChange:P(ce,2,2),token:{displayName:Q[de-1].to.token.displayName,image:Q[de-1].to.token.image},chain:{image:Q[de-1].to.chain.image},description:Xe}))}i(Cc,"SwapDetails");import{i18n as ra}from"@lingui/core";import{Divider as oy,NotFound as dI,Skeleton as dr,Typography as ia}from"@rango-dev/ui";import ke from"react";import{i18n as cI}from"@lingui/core";import{Divider as pI,Skeleton as uI,Typography as mI}from"@rango-dev/ui";import ve from"react";import{css as bt,styled as kc}from"@rango-dev/ui";var ey=kc("div",{width:"100%",height:"100%",padding:"$10 $20"}),mr=kc("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),na=kc("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),$6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),F6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),O6=bt({paddingTop:"$15",display:"flex"}),U6=bt({padding:"$15 $0"}),z6=bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),Q6=bt({paddingBottom:"$10"}),H6=bt({display:"flex",justifyContent:"start",alignItems:"center"}),q6=bt({paddingTop:"$5",display:"flex",alignItems:"center"}),G6=bt({display:"flex",alignItems:"center"}),V6=bt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),ty=bt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function Tc(){return ve.createElement(ey,null,ve.createElement(zn,{type:"swap-preview"}),ve.createElement("div",{className:"swaps-steps"},ve.createElement(mI,{variant:"title",size:"small"},cI.t("Swaps steps"))),ve.createElement(ve.Fragment,null,ve.createElement(mr,null,ve.createElement(Bt,{separator:!1}),ve.createElement("div",{className:ty()},ve.createElement(pI,{direction:"horizontal",size:20}),ve.createElement(uI,{height:22,variant:"rectangular"}))),ve.createElement(na,null),ve.createElement(mr,null,ve.createElement(Bt,{separator:!1})),ve.createElement(na,null),ve.createElement(mr,null,ve.createElement(Bt,{separator:!1})),ve.createElement(na,null),ve.createElement(mr,null,ve.createElement(Bt,{separator:!1}))))}i(Tc,"LoadingSwapDetails");function ny(t){let{requestId:e,showSkeleton:o}=t;return ke.createElement(oe,{header:{title:ra.t("Swap Details"),suffix:ke.createElement(Jt,null)}},o&&ke.createElement(Bh,null,ke.createElement(Ri,null,ke.createElement("div",{className:pn()},ke.createElement(ia,{variant:"label",size:"large",color:"neutral700"},`${ra.t("Request ID")}`),ke.createElement("div",{className:ea()},ke.createElement(ia,{variant:"label",size:"small",color:"neutral700"},ke.createElement(dr,{width:60,height:10,variant:"rounded"})),ke.createElement(oy,{direction:"horizontal",size:4}),ke.createElement(dr,{width:16,height:16,variant:"rectangular"}),ke.createElement(oy,{direction:"horizontal",size:4}),ke.createElement(dr,{width:16,height:16,variant:"rectangular"}))),ke.createElement("div",{className:pn()},ke.createElement(ia,{className:Mh(),variant:"label",size:"large",color:"neutral700"},ke.createElement(dr,{width:60,height:10,variant:"rounded"})),ke.createElement(ia,{variant:"label",size:"small",color:"neutral700"},ke.createElement(dr,{width:60,height:10,variant:"rounded"})))),ke.createElement(Tc,null)),!o&&ke.createElement(Lh,null,ke.createElement(dI,{title:ra.t("Not found"),description:ra.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(ny,"SwapDetailsPlaceholder");function ry(){let{manager:t,state:e}=hI(),o=!e.loadedFromPersistor,n=gt(t),{requestId:r}=SI(),a=Ue(),{fetchStatus:s}=S();if(!r)return vc.createElement(yI,{containerStyles:{margin:"20px"},type:"error",title:fI.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",c=r?n.find(({swap:h})=>h.requestId===r):void 0,u=i(()=>{if(c?.id){let h=t?.get(c.id);h&&gI(h)}},"onCancel"),p=i(async()=>{if(c?.id)try{t?.deleteQueue(c.id),a()}catch(h){console.log(h)}},"onDelete"),m=c?.swap;return!m||l?vc.createElement(ny,{requestId:r,showSkeleton:l}):vc.createElement(Cc,{swap:m,requestId:r,onCancel:u,onDelete:p})}i(ry,"SwapDetailsPage");import{i18n as iy}from"@lingui/core";import{Divider as CI,getCategoriesCount as kI,SelectableCategoryList as TI,styled as sy,Typography as vI,Wallet as wI}from"@rango-dev/ui";import Lt,{useState as ay}from"react";var bI=sy("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),xI=sy(re,{textAlign:"center"});function ly(){let{fetchStatus:t}=S(),[e,o]=ay("ALL"),n=S().blockchains(),{config:r}=S(),[a,s]=ay(),l=ne.use.isActiveTab(),{list:c}=yt(),u=mp(c,n),m=kI(u)!==1,h=dp(c,e),d=i(f=>{tp(c,r.multiWallets)||s(f)},"handleWalletItemClick");return Lt.createElement(oe,{header:{title:iy.t("Connect Wallets")}},Lt.createElement(xI,null,m&&Lt.createElement(Lt.Fragment,null,Lt.createElement(TI,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Lt.createElement(CI,{size:24})),Lt.createElement(vI,{variant:"title",size:"xmedium",align:"center"},iy.t("Choose a wallet to connect.")),Lt.createElement(bI,null,h.map((f,g)=>{let C=`wallet-${g}-${f.type}`;return Lt.createElement(wI,{key:C,...f,container:A(),onClick:()=>d(f),isLoading:t==="loading",disabled:!l})}),Lt.createElement(Co,{wallet:a,onClose:()=>{s(void 0)}}))))}i(ly,"WalletsPage");function cy(){return qu(),rs(),EI([{path:F.home,element:_e.createElement(Dg,null)},{path:F.routes,element:_e.createElement(zg,null)},{path:F.fromSwap,children:[{index:!0,element:_e.createElement(Vi,{type:"source"})},{path:F.blockchains,element:_e.createElement(Qi,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:_e.createElement(Vi,{type:"destination"})},{path:F.blockchains,element:_e.createElement(Qi,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:_e.createElement(gh,null)},{path:F.languages,element:_e.createElement(Fg,null)},{path:F.exchanges,element:_e.createElement(Vl,{sourceType:"Exchanges"})},{path:F.bridges,element:_e.createElement(Vl,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:_e.createElement(Vf,null)},{path:F.addCustomTokens,children:[{index:!0,element:_e.createElement(Dm,null)},{path:F.blockchains,element:_e.createElement(Qi,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:_e.createElement(mg,null)},{path:F.swapDetails,element:_e.createElement(ry,null)}]},{path:F.wallets,element:_e.createElement(ly,null)},{path:F.confirmSwap,element:_e.createElement(Lf,null)}])}i(cy,"AppRoutes");import{useQueueManager as _I}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as DI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as $I}from"rango-sdk";import{useContext as FI,useEffect as hy,useState as yy}from"react";import{globalCss as II}from"@rango-dev/ui";var py=i(()=>II({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function uy(){let{setWatermark:t,setShowProfileBanner:e}=ne();return{fetchApiConfig:i(async()=>{let n=await fetch(`${Pt("BASE_URL")}/meta/dapp/config?apiKey=${Pt("API_KEY")}`);if(!n.ok)throw new Error(`Request failed with status: ${n.status} `);let r=await n.json();t(r.config.watermark),e(r.config.banners.profile)},"fetchApiConfig")}}i(uy,"useFetchApiConfig");import{useWallets as AI}from"@rango-dev/wallets-react";import{useEffect as NI,useRef as BI}from"react";function my(){let{connect:t,state:e}=AI(),o=BI({}),{fetchStatus:n}=S(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);NI(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(my,"useForceAutoConnect");import{isApprovalTX as WI,RouteEventType as dy,StepEventType as fy,StepExecutionEventStatus as LI,WidgetEvents as aa}from"@rango-dev/queue-manager-rango-preset";import{useEffect as gy}from"react";function wc(){let t=we.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();gy(()=>{let r=i(a=>{let{event:s,step:l,route:c}=a;if(s.type===fy.TX_EXECUTION&&s.status===LI.TX_SENT&&!WI(l)||s.type===fy.SUCCEEDED){let p=[],m=c.wallets[l?.fromBlockchain];if(m){let h=e.find(d=>d.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&d.walletType===m.walletType&&d.chain===l?.fromBlockchain);h&&p.push(h)}if(l?.fromBlockchain!==l?.toBlockchain){let h=c.wallets[l?.toBlockchain];if(h){let d=e.find(f=>f.address?.toLocaleLowerCase()===h.address?.toLocaleLowerCase()&&f.walletType===h.walletType&&f.chain===l?.toBlockchain);d&&p.push(d)}}if(p.length>0){let h=n(),f=[{blockchain:l.fromBlockchain,address:l.fromSymbolAddress,symbol:l.fromSymbol},{blockchain:l.toBlockchain,address:l.toSymbolAddress,symbol:l.toSymbol}].filter(g=>h.some(C=>C.blockchain===g.blockchain&&C.address?.toLocaleLowerCase()===g.address?.toLocaleLowerCase()&&C.symbol?.toLocaleLowerCase()===g.symbol?.toLocaleLowerCase()));o(p,{selectedCustomTokens:f,shouldFetchCustomTokens:f.length>0})}}t(s,c)},"handleStepEvent");return ye.on(aa.StepEvent,r),()=>ye.off(aa.StepEvent,r)},[ye,e]),gy(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===dy.FAILED||s.type===dy.SUCCEEDED)&&t(s,l)},"handleRouteEvent");return ye.on(aa.RouteEvent,r),()=>ye.off(aa.RouteEvent,r)},[ye])}i(wc,"useSubscribeToWidgetEvents");import{useManager as MI}from"@rango-dev/queue-manager-react";import{useEffect as PI}from"react";function bc(){let{isSynced:t,syncNotifications:e}=we(),{manager:o,state:n}=MI();PI(()=>{we.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(gt(o))},[we.persist.hasHydrated(),n.loadedFromPersistor,t])}i(bc,"useSyncNotifications");function xc(){my(),py(),wc(),bc();let t=S().blockchains(),{canSwitchNetworkTo:e}=ci(),[o,n]=yy(""),[r,a]=yy(),s=FI(Fr),l=t.filter($I),{fetchApiConfig:c}=uy();hy(()=>()=>Hu(),[]),_I({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),hy(()=>(ho.init(),we.persist.hasHydrated()||we.persist.rehydrate(),s.onConnectWallet(n),s.onDisconnectWallet(u=>{a(u),u===DI(o)?.[0]&&n("")}),c().catch(console.log),ho.destroy),[])}i(xc,"useBootstrap");import{styled as OI}from"@rango-dev/ui";var Sy=OI("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function sa(){xc();let{config:t}=S(),{activeTheme:e}=Zo(t?.theme||{}),{activeLanguage:o}=io();return Ec.createElement(UI,{language:o},Ec.createElement(Sy,{id:"swap-container",className:e()},Ec.createElement(cy,null)))}i(sa,"Main");import{setSolanaSignerConfig as aA}from"@rango-dev/signer-solana";import Ac,{useEffect as by,useMemo as sA}from"react";import{useState as zI}from"react";var QI=i(()=>{let[t,e]=zI(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=ep(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),Cy=QI;import{checkWaitingForNetworkChange as HI,makeQueueDefinition as qI}from"@rango-dev/queue-manager-rango-preset";import{Provider as GI}from"@rango-dev/queue-manager-react";import{useWallets as VI}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as KI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as jI}from"rango-types";import XI,{useMemo as YI}from"react";function ZI(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=VI(),l=YI(()=>qI({API_KEY:t.apiKey||Pt("API_KEY"),BASE_URL:Pt("BASE_URL"),emitter:{emit:ye.emit}}),[t.apiKey]),{blockchains:c,connectedWallets:u}=S(),p=c(),m={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,E)=>a(v,E.network)?await r(v,[E]):void 0,"switchNetwork"),d=i(v=>!!s(v).mobileWallet,"isMobileWallet"),f=p.filter(v=>v.enabled).reduce((v,E)=>(v[E.name]=E,v),{}),g=p.filter(jI),C=i(v=>{let{supportedChains:E}=s(v);return yn(E)},"getSupportedChainNames"),k=e(),y={meta:{blockchains:f,evmBasedChains:g,evmNetworkChainInfo:KI(g),getSupportedChainNames:C},getSigners:o,wallets:m,providers:k,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:d},T=ne.use.isActiveTab();return XI.createElement(GI,{queuesDefs:[l],context:y,onPersistedDataLoaded:v=>{HI(v)},isPaused:!T},t.children)}i(ZI,"QueueManager");var ky=ZI;import{useManager as oA}from"@rango-dev/queue-manager-react";import nA,{createContext as rA,useContext as iA}from"react";function Ty(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=O();return i(u=>{let{fromBlockchain:p,fromToken:m,toBlockchain:h,toToken:d,requestAmount:f}=u,g={blockchains:e,tokens:o};if(p!==void 0){let C=e.find(k=>k.name===p)??null;n(C)}if(m!==void 0){let C=m?t(m)??null:null;r({meta:g,token:C})}if(h!==void 0){let C=e.find(k=>k.name===h)??null;a(C)}if(d!==void 0){let C=d?t(d)??null:null;s({meta:g,token:C})}f!==void 0&&l(f)},"updateQuoteInputs")}i(Ty,"useUpdateQuoteInputs");import{cancelSwap as JI,getCurrentNamespaceOfOrNull as RI,getCurrentStep as eA,getRelatedWalletOrNull as tA}from"@rango-dev/queue-manager-rango-preset";var la=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return gt(this.manager)}getCurrentStep(e){return this.getCurrentStepInfo(e).step}getCurrentStepWallet(e){return this.getCurrentStepInfo(e).wallet}getCurrentStepNetwork(e){return this.getCurrentStepInfo(e).network}retry(e,o){let n=Qr(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&JI(o)}getCurrentStepInfo(e){let o=eA(e);return{step:o,wallet:o?tA(e,o):null,network:o?RI(e,o)?.network:null}}};var vy=rA(void 0);function Ic(t){let{manager:e}=oA(),o=ne.use.isActiveTab(),n=O.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=S(),c=new la(e,{retrySwap:n,findToken:r}),{fetchingWallets:u}=S(),p=ap(a()),m=S().blockchains(),h=S().tokens(),d=S().swappers(),f=S().fetchStatus,g=io().resetLanguage,C=we().getNotifications(),k=we().clearNotifications,y=Ty(),{fromBlockchain:T,toBlockchain:v,fromToken:E,toToken:B,inputAmount:N}=O(),x={isActiveTab:o,setCurrentTabAsActive:ho.forceClaim,history:c,wallets:{isLoading:u,details:s(),totalBalance:p,refetch:async w=>l(w)},meta:{blockchains:m,tokens:h,swappers:d,loadingStatus:f,findToken:r},resetLanguage:g,notifications:{list:C,clearAll:k},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:E?{symbol:E.symbol,blockchain:E.blockchain,address:E.address}:null,toBlockchain:v?.name??null,toToken:B?{symbol:B.symbol,blockchain:B.blockchain,address:B.address}:null,requestAmount:N},updateQuoteInputs:y}};return nA.createElement(vy.Provider,{value:x},t.children)}i(Ic,"WidgetInfo");function wy(){let t=iA(vy);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(wy,"useWidget");function ca(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=Cy();return by(()=>{n&&r(n)},[n]),sA(()=>{fp({API_KEY:o?.apiKey||Cr,BASE_URL:o?.apiUrl||qc})},[o.apiKey,o.apiUrl]),by(()=>{t.config?.signers?.customSolanaRPC&&aA("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Ac.createElement(Or,{config:o,onUpdateState:e},Ac.createElement(ky,{apiKey:o.apiKey},Ac.createElement(Ic,null,t.children)))}i(ca,"WidgetProvider");function xy(t){let e=t.config?.externalWallets;return pa.createElement(uu,null,e?pa.createElement(sa,null):pa.createElement(ca,{config:t.config??yr},pa.createElement(sa,null)))}i(xy,"Widget");function Ey(){let{on:t,off:e}=ye;return{on:t,off:e}}i(Ey,"useWidgetEvents");var RY={DerivationPath:xn,Namespaces:bn,isOnDerivationPath:In,isOnNamespace:En};export{xY as EventSeverity,Qo as MainEvents,_Y as Networks,FY as PendingSwapNetworkStatus,xa as QuoteEventTypes,EY as RouteEventType,fa as SUPPORTED_FONTS,RY as StatefulConnect,IY as StepEventType,AY as StepExecutionBlockedEventStatus,NY as StepExecutionEventStatus,Fe as UI_ID,Ia as UiEventTypes,Ea as WalletEventTypes,MY as WalletEvents,DY as WalletTypes,xy as Widget,Qo as WidgetEvents,ca as WidgetProvider,Or as WidgetWallets,ys as customizedThemeTokens,WY as readAccountAddress,Xt as useStatefulConnect,yt as useWalletList,ci as useWallets,wy as useWidget,Ey as useWidgetEvents,BS as widgetEventEmitter};
|
|
1
|
+
var Ny=Object.defineProperty;var i=(t,e)=>Ny(t,"name",{value:e,configurable:!0});import{EventSeverity as zY,RouteEventType as QY,StepEventType as HY,StepExecutionBlockedEventStatus as qY,StepExecutionEventStatus as GY}from"@rango-dev/queue-manager-rango-preset";import{legacyReadAccountAddress as KY}from"@rango-dev/wallets-core/legacy";import{useWallets as ui,Events as XY}from"@rango-dev/wallets-react";import{Networks as ZY,WalletTypes as JY}from"@rango-dev/wallets-shared";import{PendingSwapNetworkStatus as e7}from"rango-types";import{Divider as IC}from"@rango-dev/ui";import So,{useEffect as AC,useRef as NC,useState as au}from"react";import{WalletState as By}from"@rango-dev/ui";import{useWallets as Wy}from"@rango-dev/wallets-react";import{useReducer as Ly}from"react";function Mc(t){return!!t.derivationPath}i(Mc,"isStateOnDerivationPathStep");function Pc(t){return!!t.namespace}i(Pc,"isStateOnNamespace");var hr={status:"init",namespace:null,derivationPath:null};function _c(t,e){switch(e.type){case"needsNamespace":return{...t,status:"namespace",namespace:e.payload,derivationPath:null};case"needsDerivationPath":return{...t,status:"derivationPath",derivationPath:e.payload};case"reset":return hr;case"resetDerivation":return t.namespace?{...t,derivationPath:null,status:"namespace"}:hr;default:throw new Error("Action hasn't been defined.")}}i(_c,"reducer");function Xt(){let{state:t,disconnect:e,connect:o}=Wy(),[n,r]=Ly(_c,hr),a=i(async(p,m,h)=>{r({type:"reset"});try{let f=m?.map(d=>({...d,network:void 0}));return await o(p,f),{status:"connected"}}catch(f){let d=f?.message?`Error: ${f.message}`:"An unknown error happened during connecting wallet.";throw new Error(d,{cause:f})}},"runConnect"),s=i(async(p,m)=>{if(p.state===By.DISCONNECTED){let f=!!p.isHub,d=p.properties?.find(g=>g.name==="detached")?.value;if(f&&!d?.length||!f&&!p.needsNamespace)return await a(p.type,void 0,m);if(f&&d?.length&&d.length>1||!f&&p.needsNamespace?.data.length&&p.needsNamespace.data.length>1)return r({type:"needsNamespace",payload:{targetWallet:p,defaultSelectedChains:m?.defaultSelectedChains}}),{status:"namespace"};if(f&&d?.length===1||!f&&p.needsNamespace?.data.length===1){if(p.needsNamespace&&p.needsDerivationPath){let g=p.needsNamespace.data[0];return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:g.value}}),{status:"derivation-path"}}return await a(p.type,p.needsNamespace?.data.map(g=>({namespace:g.value})),m)}}return m?.disconnectIfConnected?(await u(p.type),{status:"disconnected"}):{status:"disconnected-unhandled"}},"handleConnect"),l=i(async(p,m)=>{let h=p.needsNamespace?.selection==="single",f=p.needsDerivationPath,d=m[0];if(!d)throw new Error("To confirm a namespace, you should select at least one namespace.");if(h&&f)return r({type:"needsDerivationPath",payload:{providerType:p.type,providerImage:p.image,namespace:d}}),{status:"derivation-path"};if(!Pc(n))throw new Error("Something went wrong on handling namespace. Please retry.");let g=n.namespace.targetWallet.type,C=m.map(k=>({namespace:k}));return await a(g,C)},"handleNamespace"),c=i(async p=>{if(!p)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");if(!Mc(n))throw new Error("It seems you are filling derivation path without setting namespace before doing that. Please retry to connect.");let m=n.derivationPath.providerType,f=[{namespace:n.derivationPath.namespace,derivationPath:p}];return await a(m,f)},"handleDerivationPath"),u=i(async p=>{let m=t(p);return m.connected||m.connecting?(await e(p),{status:"disconnected"}):{status:"noop"}},"handleDisconnect");return{handleConnect:s,handleDisconnect:u,handleNamespace:l,handleDerivationPath:c,getState:()=>n,resetState:p=>{r(p==="derivation"?{type:"resetDerivation"}:{type:"reset"})}}}i(Xt,"useStatefulConnect");import{WalletState as Ma}from"@rango-dev/ui";import{useWallets as QS}from"@rango-dev/wallets-react";import{detectMobileScreens as HS,KEPLR_COMPATIBLE_WALLETS as qS,WalletTypes as wn}from"@rango-dev/wallets-shared";import{useCallback as GS,useEffect as VS}from"react";import $S,{createContext as FS,useContext as OS,useEffect as US,useRef as zS}from"react";import{create as _S}from"zustand";import{persist as DS}from"zustand/middleware";import{allProviders as My}from"@rango-dev/provider-all";var ua=class{static{i(this,"CacheService")}#e=new Map;get(e){return this.#e.get(e)}set(e,o){this.#e.set(e,o)}remove(e){this.#e.delete(e)}clear(){this.#e.clear()}},Do=new ua;import{defineVersions as $c,pickVersion as Fc,Provider as ma}from"@rango-dev/wallets-core";function Oc({allProviders:t,configWallets:e}){if(e){let o=[];return e.forEach(n=>{if(typeof n=="string"){let r=t.find(a=>{let s=Uc(a);return s instanceof ma?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 ma?o.push($c().version("1.0.0",n).build()):o.push($c().version("0.0.0",n).build())}),o}return t}i(Oc,"matchAndGenerateProviders");function Uc(t){try{return Fc(t,"1.0.0")[1]}catch{return Fc(t,"0.0.0")[1]}}i(Uc,"pickProviderVersionWithFallbackToLegacy");function zc(t){return t.map(o=>Uc(o)).map(o=>o instanceof ma?o.id:o.config.type)}i(zc,"configWalletsToWalletName");function yr(t,e){return e.find(o=>o.name===t)?.displayName}i(yr,"getBlockchainDisplayNameFor");function pt(t,e){return e.find(o=>o.name===t)?.shortName}i(pt,"getBlockchainShortNameFor");function Qc(t,e){return e.find(o=>o.name===t)?.logo}i(Qc,"getBlockchainImage");function fn(t,e){return e.find(o=>o.id===t)?.title}i(fn,"getSwapperDisplayName");function uo(t,e){return e.find(o=>o.name===t)??null}i(uo,"findBlockchain");function da(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(da,"isTokenNative");function ut(t){return`${t.blockchain.toLowerCase()}-${t.symbol.toLowerCase()}-${(t.address??"").toLowerCase()}`}i(ut,"createTokenHash");function $o(t,e){return t.addressPatterns.filter(r=>new RegExp(r).test(e)).length>0}i($o,"isValidTokenAddress");function gn(t){let{config:e,meta:o}=t,n={},r=e.tokens,a=i(l=>{l.forEach(c=>{typeof c!="string"&&(c=ut(c));let u=o.tokensMapByTokenHash.get(c);u&&(n[c]=u)})},"addTokens");if(Array.isArray(r))return r.length>0?(a(r),Object.values(n)):Array.from(o.tokensMapByTokenHash.values());if(!r)return Array.from(o.tokensMapByTokenHash.values());let s;if(e.blockchains?.length)s=e.blockchains;else{s=Object.keys(r);let l=new Set(s);Object.keys(o.tokensMapByBlockchainName).forEach(c=>{l.has(c)||a(o.tokensMapByBlockchainName[c])})}return s.forEach(l=>{let c=r[l];if(!c&&o.tokensMapByBlockchainName?.[l]){a(o.tokensMapByBlockchainName[l]);return}c&&(c.isExcluded?(a(o.tokensMapByBlockchainName[l]),c.tokens.forEach(u=>{let p=ut(u);delete n[p]})):a(c.tokens))}),Object.values(n)}i(gn,"matchTokensFromConfigWithMeta");function Sr(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(Sr,"getSupportedBlockchainsFromConfig");function qc(t){return{walletConnectProjectId:t?.walletConnectProjectId,trezorManifest:t?.trezorManifest,tonConnect:t?.tonConnect,walletConnectListedDesktopWalletLink:t.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink}}i(qc,"makeProvidersOptionsFromConfig");var Cr={apiKey:"",title:void 0,multiWallets:!0,excludeLiquiditySources:!0,customDestination:!0,variant:"default",trezorManifest:{appUrl:"https://widget.rango.exchange/",email:"hi+trezorwidget@rango.exchange"},tonConnect:{manifestUrl:"https://raw.githubusercontent.com/rango-exchange/rango-types/main/assets/manifests/tonconnect-manifest.json"}},Py={clientUrl:void 0},_y={liquiditySources:void 0};function Hc(t){let e=qc(t),o={walletconnect2:{WC_PROJECT_ID:e?.walletConnectProjectId||"",DISABLE_MODAL_AND_OPEN_LINK:e?.walletConnectListedDesktopWalletLink},selectedProviders:t.wallets,trezor:e?.trezorManifest?{manifest:e.trezorManifest}:void 0,tonConnect:e?.tonConnect?.manifestUrl?{manifestUrl:e?.tonConnect.manifestUrl}:void 0};return My(o).map(a=>a())}i(Hc,"generateProviders");var Gc=i((t,e,o)=>{let n=Hc({...Cr,...t});return{config:{...Cr,...t},iframe:Py,campaignMode:_y,allProviders:n,getLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?a.liquiditySources:r.liquiditySources??[]},getDisabledLiquiditySources:()=>{let{disabledLiquiditySources:r,campaignMode:a}=o();return a.liquiditySources?.length?[]:r},excludeLiquiditySources:()=>{let{config:r,campaignMode:a}=o();return a.liquiditySources?.length?!1:!!r.excludeLiquiditySources},isInCampaignMode:()=>{let{campaignMode:r}=o();return!!r.liquiditySources?.length},updateConfig:r=>{let a=o().config,{_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l}=o(),c=gn({type:"source",config:{blockchains:r.from?.blockchains,tokens:r.from?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}}),u=gn({type:"destination",config:{blockchains:r.to?.blockchains,tokens:r.to?.tokens},meta:{tokensMapByBlockchainName:l,tokensMapByTokenHash:s}});Do.set("supportedSourceTokens",c),Do.set("supportedDestinationTokens",u),e({config:{...a,...r}})},updateCampaignMode:(r,a)=>{let s=o().campaignMode;e({campaignMode:{...s,[r]:a}})},updateIframe:(r,a)=>{let s=o().iframe;e({iframe:{...s,[r]:a}})},buildAndSetProviders:()=>{let{config:r}=o(),a=Hc(r);e({allProviders:a})},getAvailableProviders:()=>{let{allProviders:r,config:a}=o(),s=qc(a);return Oc({allProviders:r,configWallets:a.wallets,options:s})}}},"createConfigSlice");import{TransactionType as Vc}from"rango-types";var Kc=[Vc.EVM,Vc.SOLANA],kr="https://raw.githubusercontent.com/rango-exchange/assets/refs/heads/main/common/unknown-image.png";import{RangoClient as Yy}from"rango-sdk";import{UI_ID as Dy}from"@rango-dev/ui";var Tr="c6381a79-2817-4602-83bf-6a641a409e32",jc="https://api.rango.exchange",Xc="https://explorer.rango.exchange",Oe={SWAP_BOX_ID:"rango-swap-box",EXPANDED_BOX_ID:"rango-expanded-box",...Dy};import{BlockchainCategories as Hy,WalletState as Et}from"@rango-dev/ui";import{legacyReadAccountAddress as qy}from"@rango-dev/wallets-core/legacy";import{detectInstallLink as Gy,getCosmosExperimentalChainInfo as Vy,isEvmAddress as Ky,KEPLR_COMPATIBLE_WALLETS as v0,Networks as lp}from"@rango-dev/wallets-shared";import Oo from"bignumber.js";import{isCosmosBlockchain as jy}from"rango-types";import $y from"bignumber.js";var ce=new $y(0);import{WalletTypes as Fy}from"@rango-dev/wallets-shared";var mo="~",Yc=[Fy.LEAP];import{BlockchainCategories as ga,WalletState as Qy}from"@rango-dev/ui";import{TransactionType as vr}from"rango-sdk";var Zc="Roboto",fa=[{name:"Roboto",value:"Roboto",url:""},{name:"Times New Roman",value:"Times New Roman",url:"https://fonts.cdnfonts.com/css/times-new-roman"},{name:"Arial",value:"Arial",url:""},{name:"Open Sans",value:"Open Sans",url:"https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap"},{name:"Noto Sans",value:"Noto Sans",url:"https://fonts.googleapis.com/css2?family=Noto+Sans:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Montserrat",value:"Montserrat",url:"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Poppins",value:"Poppins",url:"https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"},{name:"Roboto Condensed",value:"Roboto Condensed",url:"https://fonts.googleapis.com/css2?family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Roboto Mono",value:"Roboto Mono",url:"https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,100..700;1,100..700&display=swap"},{name:"Oswald",value:"Oswald",url:"https://fonts.googleapis.com/css2?family=Oswald:wght@200..700&display=swap"},{name:"Raleway",value:"Raleway",url:"https://fonts.googleapis.com/css2?family=Raleway:ital,wght@0,100..900;1,100..900&display=swap"},{name:"Sedan",value:"Sedan",url:"https://fonts.googleapis.com/css2?family=Sedan:ital@0;1&display=swap"},{name:"Inter",value:"Inter",url:"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap"},{name:"Rubik",value:"Rubik",url:"https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap"},{name:"Lora",value:"Lora",url:"https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400..700;1,400..700&display=swap"},{name:"Barlow Condensed",value:"Barlow Condensed",url:"https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap"}];function Fo(t){return Array.from(new Set(t))}i(Fo,"removeDuplicateFrom");function wr(t,e){let o;return n;function n(...r){o&&clearTimeout(o),o=setTimeout(()=>{o=null,t(...r)},e)}}i(wr,"debounce");function tt(t,e){return t.toLowerCase().indexOf(e.toLowerCase())>-1}i(tt,"containsText");function ep(t,e){return t.toLowerCase()===e.toLowerCase()}i(ep,"exactText");function tp(t,e){return t.toLowerCase().startsWith(e.toLowerCase())}i(tp,"startWithText");var A=i(()=>document.getElementById(Oe.SWAP_BOX_ID),"getContainer"),fo=i(()=>document.getElementById(Oe.EXPANDED_BOX_ID),"getExpanded");function op(t,e,o){let n=!!e&&ep(e,t),r=!!o&&ep(o,t);return n!==r?n?-1:1:0}i(op,"compareExactMatchText");function ha(t,e,o){let n=!!e&&tt(e,t),r=!!o&&tt(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ha,"compareContainsText");function ya(t,e,o){let n=!!e&&tp(e,t),r=!!o&&tp(o,t);return n!==r?n?-1:1:n&&r&&e?.length!==o?.length?e?.length-o?.length:0}i(ya,"compareStartWithText");function np(t,e,o){if(!o)return 0;let n=op(o,t.symbol,e.symbol);if(n)return n;if(o.length>=3){let r=op(o,t.name,e.name);if(r)return r}if(o.length>=2){let r=ya(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ha(o,t.symbol,e.symbol);if(r)return r}if(o.length>=3){let r=ya(o,t.name,e.name);if(r)return r}if(o.length>=3){let r=ha(o,t.name,e.name);if(r!==0)return r}if(o.length>=4){let r=ya(o,t.address,e.address);if(r)return r}if(o.length>=4){let r=ha(o,t.address,e.address);if(r!==0)return r}return 0}i(np,"compareWithSearchFor");var br=i((t,e)=>{switch(e){case ga.ALL:return!0;case ga.UTXO:return t===vr.TRANSFER;case ga.OTHER:return t!==vr.TRANSFER&&t!==vr.COSMOS&&t!==vr.EVM;default:return t===e}},"isBlockchainTypeInCategory"),rp=i(t=>fa.find(o=>o.value===t)?.url,"getFontUrlByName");function ip(t,e){let o=!!t.find(n=>n.state===Qy.CONNECTED);return e===!1&&o}i(ip,"isSingleWalletActive");function ap(){let t,e;return(o,n)=>((!e||!t||t!==n)&&(t=n,e=o()),e)}i(ap,"memoizedResult");import{BigNumber as sp}from"bignumber.js";var hn=i(t=>{let e=Math.floor(t%60/15)*15,o=parseInt((t/60).toString());return o>=60?`${Math.floor(o/5)*5}:00`:`${o.toString().padStart(2,"0")}:${e.toString().padStart(2,"0")}`},"roundedSecondsToString"),P=i((t,e=null,o=null)=>{if(t==null||t==="")return"";let n=new sp(t),r=1,a=1e3;for(let s=0;s<60;s++)if(new sp(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 xr=i(t=>t?.reduce((e,o)=>e+(o.estimatedTimeInSeconds??0),0)||0,"totalArrivalTime");var xt=i((t,e)=>t.toLowerCase().indexOf(e.toLowerCase())>-1,"containsText"),yn=i(t=>!!t&&parseFloat(t)>0,"isPositiveNumber");function Sn(t){return t.connected?Et.CONNECTED:t.connecting?Et.CONNECTING:t.installed?Et.DISCONNECTED:Et.NOT_INSTALLED}i(Sn,"mapStatusToWalletState");function cp(t,e,o,n){return o.filter(r=>!Yc.includes(r)).filter(r=>{let{supportedChains:a,isContractWallet:s}=e(r),{installed:l,network:c}=t(r);return s&&(!l||!!n&&c!==n)?!1:n?!!a.find(p=>p.name===n):!0}).map(r=>{let{name:a,img:s,installLink:l,showOnMobile:c,needsNamespace:u,supportedChains:p,needsDerivationPath:m,properties:h,isHub:f}=e(r),d=Fo(p.map(C=>C.type)),g=Sn(t(r));return{title:a,image:s,link:Gy(l),state:g,type:r,showOnMobile:c,needsNamespace:u,blockchainTypes:d,needsDerivationPath:m,properties:h,isHub:f}})}i(cp,"mapWalletTypesToWalletInfo");function Cn(t){if(!t)return null;let e=[];return e=t.map(o=>o.name),e}i(Cn,"walletAndSupportedChainsNames");function Ca(t,e,o,n,r){let a=[];function s(c,u,p){if(!!!a.find(h=>h.chain===c)){let h={address:u,chain:c,walletType:t,isContractWallet:p??!1};a.push(h)}}i(s,"addAccount");let l=n||[];return e.forEach(c=>{let{address:u,network:p}=qy(c),m=l.length>0,h=l.includes(p),f=p===lp.Unknown;if(m&&!h&&!f)return;let g=p===lp.Unknown&&Ky(u);if(f&&!g)return;o.includes(p)||g?r?s(p,u.toLowerCase(),r):l.filter(y=>o.includes(y)).forEach(y=>{s(y,u.toLowerCase())}):s(p,u)}),a}i(Ca,"prepareAccountsForWalletStore");function go(t){let{filter:e,quote:o}=t,n=new Set;return o?.swaps.forEach((r,a)=>{let s=r.from.blockchain,l=r.to.blockchain;if(n.add(s),r.internalSwaps){let{internalSwaps:c}=r;c.forEach((u,p)=>{let m=u.from.blockchain,h=u.to.blockchain,f=a===o.swaps.length-1,d=p===c.length-1;(!f&&!d||f&&l!==m||e==="all")&&n.add(m),e==="all"&&n.add(h)})}e==="all"&&n.add(l)}),Array.from(n)}i(go,"getQuoteChains");function kn(t,e){return t.address===e.address&&t.chain===e.chain&&t.walletType===e.walletType}i(kn,"isAccountAndWalletMatched");var pp=i(t=>{let e=Object.values(t).reduce((o,n)=>{let r=n.usdValue?Sa(n.usdValue,n.decimals):ce.toFixed();return o.plus(r)},new Oo(ce));return Xy(e.toString())},"calculateWalletUsdValue");function Xy(t){let e=t.toString().split(".");return e[0]=e[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),e.join(".")}i(Xy,"numberWithThousandSeparator");var Ar=i((t,e)=>{let o=Vy(Object.entries(t).map(([,n])=>n).filter(jy));return o&&o[e]?.experimental},"isExperimentalChain");function Sa(t,e){return new Oo(t).shiftedBy(-e).toFixed()}i(Sa,"representAmountInNumber");function Nr(t){if(!t)return null;let e=Sa(t.amount,t.decimals),o=t.usdValue?Sa(t.usdValue,t.decimals):null,n=P(e,8,8),r=o?P(o,4,4):null;return t?{...t,amount:n,usdValue:r}:null}i(Nr,"formatBalance");function up(t,e){if(t?.usdValue||e?.usdValue){let o=t&&t.usdValue?new Oo(t.usdValue).shiftedBy(-t.decimals):ce,n=e&&e.usdValue?new Oo(e.usdValue).shiftedBy(-e.decimals):ce;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}if(t?.amount||e?.amount){let o=t&&t.amount?new Oo(t.amount).shiftedBy(-t.decimals):ce,n=e&&e.amount?new Oo(e.amount).shiftedBy(-e.decimals):ce;return o.isEqualTo(n)?0:o.isGreaterThan(n)?-1:1}return 0}i(up,"compareTokenBalance");function Pt(t,e){return t?.blockchain===e?.blockchain&&t?.symbol.toLowerCase()===e?.symbol.toLowerCase()&&t?.address?.toLowerCase()===e?.address?.toLowerCase()}i(Pt,"areTokensEqual");function mp(t){return t.sort((e,o)=>+(o.state===Et.CONNECTED)-+(e.state===Et.CONNECTED)||+(o.state===Et.DISCONNECTED||o.state===Et.CONNECTING)-+(e.state===Et.DISCONNECTED||e.state===Et.CONNECTING))}i(mp,"sortWalletsBasedOnConnectionState");function Br(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(Br,"getConciseAddress");function dp({chain:t,connectedWallets:e,walletType:o}){return e.find(n=>n.walletType===o&&n.chain===t)?.address}i(dp,"getAddress");var fp=i((t,e)=>!!t.find(o=>o.chain===e&&o.loading),"isFetchingBalance");function gp(t){return t.map(e=>e.state).join("-")}i(gp,"hashWalletsState");function hp(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(hp,"filterBlockchainsByWalletTypes");function yp(t,e){return e===Hy.ALL?t:t.filter(o=>{for(let n of o.blockchainTypes)if(br(n,e))return!0;return!1})}i(yp,"filterWalletsByCategory");var ka={API_KEY:Tr};function _t(t){return ka[t]||""}i(_t,"getConfig");function Sp(t){let e;return typeof structuredClone=="function"?e=structuredClone(t):e=JSON.parse(JSON.stringify(t)),ka=e,ka}i(Sp,"initConfig");var Cp=20,kp=25,Ta="theme-widget",va=i((t,e)=>{let o=!1;if(e&&t){if(Array.isArray(e))o=!e.some(n=>Pt(n,t));else if(!Array.isArray(e)&&e[t.blockchain]){o=e[t.blockchain].tokens.some(r=>Pt(r,t));let n=e[t.blockchain].isExcluded;return!n&&!o||n&&o}}return o},"isTokenExcludedInConfig"),wa=i((t,e)=>t&&e&&!e.includes(t.name),"isBlockchainExcludedInConfig"),Tp=i((t,e,o)=>o==="expanded"&&(t||e)||o==="full-expanded"&&e,"isVariantExpandable");var Wr,ot=i(()=>Wr||(Wr=new Yy(_t("API_KEY"),_t("BASE_URL")),Wr),"httpService");import{i18n as xp}from"@lingui/core";var vp=[.5,1,3],wp=1,Lr=5,Tn=30,bp=0;function Mr(t,e){let o=t.map(a=>a.swapperGroup),n=[];return Fo(t.map(a=>a.swapperGroup)).map(a=>{let s=t.find(l=>l.swapperGroup===a);if(s){let l=!0;o&&(l=o.some(c=>c===s.swapperGroup)),l&&s.types.map(c=>{n.push({id:s.swapperGroup,groupTitle:s.swapperGroup,logo:s.logo,type:c,selected:!e.includes(s.swapperGroup)})})}}),n}i(Mr,"getUniqueSwappersGroups");function Ep(t,e){return t.swapperGroup<e.swapperGroup?-1:t.swapperGroup>e.swapperGroup?1:0}i(Ep,"sortLiquiditySourcesByGroupTitle");function Ye(t,e){return e?.[t]==="hidden"}i(Ye,"isFeatureHidden");function Uo(t,e){return e?.[t]==="enabled"}i(Uo,"isRoutingEnabled");var Ip=i((t,e,o)=>Ye("customTokens",o)?t:t.concat(e),"addCustomTokensToSupportedTokens");function Ap(t){return t==bp?{type:"error",message:xp.t("Slippage must be greater than or equal to 0.01")}:t>Lr&&t<=Tn?{type:"warning",message:xp.t("Your transaction is at risk of being frontrun due to high slippage tolerance.")}:null}i(Ap,"getSlippageValidation");var Np=i((t,e)=>({_blockchainsMapByName:new Map,_tokensMapByTokenHash:new Map,_tokensMapByBlockchainName:{},_popularTokens:[],_swappers:[],fetchStatus:"loading",blockchains:o=>{let n=e()._blockchainsMapByName,r=Array.from(n?.values()||[]);if(!o||!o?.type)return r;let a=e().config;if(o.type==="custom-token"){let c=Sr({config:a}),u=r;return c.length>0&&(u=u.filter(p=>c.includes(p.name))),u.filter(p=>Kc.includes(p.type))}let s=(o.type==="source"?a.from?.blockchains:a.to?.blockchains)??[];return r.filter(c=>!(s.length>0&&!s.includes(c.name)))},tokens:o=>{let{_tokensMapByTokenHash:n,_tokensMapByBlockchainName:r,config:a,_customTokens:s}=e(),l=Array.from(n.values()),c=e()._blockchainsMapByName;if(!o||!o.type)return l;let u=o.type==="source"?"from":"to",p=o.type==="source"?"supportedSourceTokens":"supportedDestinationTokens",m=Do.get(p);m?.length||(m=gn({type:o.type,config:{blockchains:a[u]?.blockchains,tokens:a[u]?.tokens},meta:{tokensMapByTokenHash:n,tokensMapByBlockchainName:r}}),Do.set(p,m)),m=Ip(m,s,a.features);let h=e().blockchains({type:o.type});return m.filter(d=>o.blockchain&&d.blockchain!==o.blockchain||!h.some(g=>g.name===d.blockchain)?!1:o.searchFor?!!(tt(d.symbol,o.searchFor)||tt(d.address||"",o.searchFor)||tt(d.name||"",o.searchFor)):!0).sort((d,g)=>{let C=e().isTokenPinned(d,o.type),k=e().isTokenPinned(g,o.type);if(C!==k)return C?-1:1;if(o.getBalanceFor){let B=o.getBalanceFor(d),N=o.getBalanceFor(g),x=up(B,N);if(x!==0)return x}let y=c.get(d.blockchain),T=c.get(g.blockchain),v=da(d,y),I=da(g,T);if(v!==I)return v?-1:1;if(d.isPopular!==g.isPopular)return d.isPopular?-1:1;if(o.searchFor){let B=np(d,g,o.searchFor);if(B)return B}return d.isSecondaryCoin!==g.isSecondaryCoin?d.isSecondaryCoin?1:-1:y&&T?y.sort-T.sort:0})},findToken:o=>{let n=e()._tokensMapByTokenHash,r=e().customTokens(),a=ut(o),s=n.get(a);return s||(s=r.find(l=>ut(l)===a)),s},isTokenPinned:(o,n)=>!!(n==="source"?e().config.from?.pinnedTokens:e().config.to?.pinnedTokens)?.some(s=>Pt(s,o)),swappers:()=>{let{config:o,campaignMode:n}=e(),r=n.liquiditySources?.length?n.liquiditySources:null,a=r??o.liquiditySources,s=r?!1:o.excludeLiquiditySources;return e()._swappers.filter(u=>{let p=a?.includes(u.swapperGroup);return s||!a||a.length===0?!p:p}).sort(Ep)},fetch:async()=>{try{let{routing:o}=e().config,n=Uo("enableCentralizedSwappers",o),r=await ot().getAllMetadata({enableCentralizedSwappers:n});t({fetchStatus:"success"});let a=new Map,s=new Map,l={},c=[],u=r.popularTokens,p=r.swappers.filter(f=>f.enabled),m=new Set;r.tokens.forEach(f=>{m.add(f.blockchain),c.push(f)}),r.blockchains.sort((f,d)=>f.sort-d.sort).forEach(f=>{f.enabled&&m.has(f.name)&&a.set(f.name,f)}),c.forEach(f=>{let d=ut(f);l[f.blockchain]||(l[f.blockchain]=[]),s.set(d,f),l[f.blockchain].push(d)}),t({_blockchainsMapByName:a,_tokensMapByTokenHash:s,_tokensMapByBlockchainName:l,_popularTokens:u,_swappers:p})}catch(o){throw t({fetchStatus:"failed"}),o}}}),"createDataSlice");import{Bengali as Zy,Catalonia as Jy,Chinese as Bp,Denmark as Ry,English as eS,Finland as tS,French as oS,German as nS,Greece as rS,Hungary as iS,India as aS,Indonesian as sS,Italian as lS,Japanese as cS,Korea as pS,Lithuania as uS,Malay as mS,Netherlands as dS,Pakistan as fS,Philippines as gS,Poland as hS,Portuguese as yS,Russian as SS,SaudiArabia as CS,Serbia as kS,Slovakia as TS,SouthAfrica as vS,Spanish as wS,Swahili as bS,Swedish as xS,Thai as ES,Turkish as IS,Ukrainian as AS,Vietnamese as NS}from"@rango-dev/ui";var Wp=[{title:"Afrikaans",label:"Afrikaans",local:"af",SVGFlag:vS},{title:"Arabic",label:"\u0639\u0631\u0628\u064A",local:"ar",SVGFlag:CS},{title:"Bengali",label:"\u09AC\u09BE\u0982\u09B2\u09BE",local:"bn",SVGFlag:Zy},{title:"Catalan",label:"Catal\xE0",local:"ca",SVGFlag:Jy},{title:"Chinese (Simplified)",label:"\u7B80\u4F53\u4E2D\u6587",local:"zh-CN",SVGFlag:Bp},{title:"Chinese (Traditional)",label:"\u4E2D\u6587\uFF08\u7E41\u9AD4)",local:"zh-TW",SVGFlag:Bp},{title:"Danish",label:"Dansk",local:"da",SVGFlag:Ry},{title:"Dutch",label:"Nederlands",local:"nl",SVGFlag:dS},{title:"English",label:"English",local:"en",SVGFlag:eS},{title:"Filipino",label:"Filipino",local:"fil",SVGFlag:gS},{title:"Finnish",label:"Suomalainen",local:"fi",SVGFlag:tS},{title:"French",label:"Fran\xE7ais",local:"fr",SVGFlag:oS},{title:"German",label:"Deutsch",local:"de",SVGFlag:nS},{title:"Greek",label:"\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",local:"el",SVGFlag:rS},{title:"Hindi",label:"\u0939\u093F\u0902\u0926\u0940",local:"hi",SVGFlag:aS},{title:"Hungarian",label:"Magyar",local:"hu",SVGFlag:iS},{title:"Indonesian",label:"Indonesia",local:"id",SVGFlag:sS},{title:"Italian",label:"Italiana",local:"it",SVGFlag:lS},{title:"Japanese",label:"\u65E5\u672C\u8A9E",local:"ja",SVGFlag:cS},{title:"Korean",label:"\uD55C\uAD6D\uC778",local:"ko",SVGFlag:pS},{title:"Lithuanian",label:"Lietuvi\u0173",local:"lt",SVGFlag:uS},{title:"Malay",label:"Melayu",local:"ms",SVGFlag:mS},{title:"Polish",label:"Polski",local:"pl",SVGFlag:hS},{title:"Portuguese",label:"Portugu\xEAs",local:"pt",SVGFlag:yS},{title:"Russian",label:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439",local:"ru",SVGFlag:SS},{title:"Serbian",label:"C\u0440\u043F\u0441\u043A\u0438",local:"sr",SVGFlag:kS},{title:"Slovak",label:"Slovensk\xFD",local:"sk",SVGFlag:TS},{title:"Spanish",label:"Espa\xF1ol",local:"es",SVGFlag:wS},{title:"Swahili",label:"Kiswahili",local:"sw",SVGFlag:bS},{title:"Swedish",label:"Svenska",local:"sv",SVGFlag:xS},{title:"Thai",label:"\u0E41\u0E1A\u0E1A\u0E44\u0E17\u0E22",local:"th",SVGFlag:ES},{title:"Turkish",label:"T\xFCrk\xE7e",local:"tr",SVGFlag:IS},{title:"Ukrainian",label:"Y\u043A\u0440\u0430\u0457\u043D\u0456",local:"uk",SVGFlag:AS},{title:"Urdu",label:"\u0627\u0631\u062F\u0648",local:"ur",SVGFlag:fS},{title:"Vietnamese",label:"Ti\u1EBFng Vi\u1EC7t",local:"vi",SVGFlag:NS}],zo="en";var Lp=i((t,e)=>({disabledLiquiditySources:[],theme:"auto",language:null,preferredBlockchains:[],slippage:wp,customSlippage:null,infiniteApprove:!1,affiliateRef:null,affiliatePercent:null,affiliateWallets:null,_customTokens:[],addPreferredBlockchain:o=>{let n=e().preferredBlockchains;if(n.find((s,l)=>{let c=s===o,u=l<=9;return c&&u}))return;let a=n.filter(s=>!(s===o));t(()=>({preferredBlockchains:[o,...a]}))},setSlippage:o=>t(()=>({slippage:o})),setCustomSlippage:o=>t(()=>({customSlippage:o})),setAffiliateRef:o=>t(()=>({affiliateRef:o})),setAffiliatePercent:o=>t(()=>({affiliatePercent:o})),setAffiliateWallets:o=>t(()=>({affiliateWallets:o})),toggleAllLiquiditySources:(o,n)=>t(r=>{if(n)return{disabledLiquiditySources:[]};let a=Fo(o.map(s=>s.swapperGroup));return a.length===r.disabledLiquiditySources.length?{disabledLiquiditySources:[]}:{disabledLiquiditySources:a}}),toggleInfiniteApprove:()=>t(o=>({infiniteApprove:!o.infiniteApprove})),toggleLiquiditySource:o=>t(n=>n.disabledLiquiditySources.includes(o)?{disabledLiquiditySources:n.disabledLiquiditySources.filter(r=>r!=o)}:{disabledLiquiditySources:n.disabledLiquiditySources.concat(o)}),setTheme:o=>t(()=>({theme:o})),setLanguage:o=>t(()=>({language:o})),updateSettings:o=>{let{features:n,theme:r}=o,a=Ye("theme",n),s=Ye("language",n),l=Ye("liquiditySource",n),c=r?.singleTheme,u=o?.__UNSTABLE_OR_INTERNAL__?.autoUpdateSettings;t({...a&&{theme:o.theme?.mode||"auto"},...c&&{theme:o.theme?.mode||"light"},...s&&{language:o.language||zo},...l&&{disabledLiquiditySources:o.liquiditySources||[]},...u&&{language:o.language||zo}})},setCustomToken:o=>{e().fetchCustomTokensBalances({tokens:[o],connectedWallets:e().connectedWallets}),t(n=>({_customTokens:[o,...n._customTokens]}))},deleteCustomToken:o=>t(n=>({_customTokens:n._customTokens.filter(r=>r.address!==o.address)})),customTokens:()=>{let o=e().config,n=e()._customTokens,r=Sr({config:o});return r.length?n.filter(a=>r.includes(a.blockchain)):n}}),"createSettingsSlice");import La from"bignumber.js";import BS from"mitt";var Se=BS(),WS={on:Se.on,off:Se.off};import{WidgetEvents as Mp}from"@rango-dev/queue-manager-rango-preset";var xa=(o=>(o.QUOTE_INPUT_UPDATE="quoteInputUpdate",o.QUOTE_OUTPUT_UPDATE="quoteOutputUpdate",o))(xa||{}),Ea=(o=>(o.CONNECT="connect",o.DISCONNECT="disconnect",o))(Ea||{}),Ia=(e=>(e.CLICK_CONNECT_WALLET="clickConnectWallet",e))(Ia||{}),Qo=(a=>(a[a.RouteEvent=Mp.RouteEvent]="RouteEvent",a[a.StepEvent=Mp.StepEvent]="StepEvent",a.QuoteEvent="quoteEvent",a.WalletEvent="walletEvent",a.UiEvent="uiEvent",a))(Qo||{});var Pp=i(t=>(e,o,n)=>t(i((...a)=>{let[s,...l]=a;e(c=>({...typeof s=="function"?s(c):s,lastUpdatedAt:+new Date}),...l)},"modifedSet"),o,n),"keepLastUpdated");import _p from"bignumber.js";function Dt(t){return`${t.blockchain}${mo}${t.address}${mo}${t.symbol}`}i(Dt,"createAssetKey");function Dp(t,e){return`${Dt(e)}${mo}${t}`}i(Dp,"createBalanceKey");function vn(t){let[e,o,n]=t.split(mo);return{address:o==="null"?null:o,blockchain:e,symbol:n}}i(vn,"extractAssetFromBalanceKey");function Aa(t,e,o){return e.balances?.forEach(n=>{let r=n.price??t.findToken(n.asset)?.usdPrice;t._aggregatedBalances[Dt(n.asset)]?.forEach(s=>{o[s]&&(o[s]={...o[s],usdValue:r?new _p(r??ce).multipliedBy(o[s].amount).toString():""})})}),o}i(Aa,"computeNextBalancesWithNewPrices");function Na(t,e){let o={};return t.balances?.forEach(n=>{let r=Dp(t.address,n.asset),a=n.amount.amount,s=n.amount.decimals,l=n.price??e().findToken(n.asset)?.usdPrice,c=l?new _p(l??ce).multipliedBy(a).toString():"",u={amount:a,decimals:s,usdValue:c};o[r]=u}),o}i(Na,"createBalanceStateForNewAccount");function Ba(t,e){for(let o in e){let n=vn(o),r=Dt(n);t[r]||(t[r]=[]),t[r].includes(o)||(t[r]=[...t[r],o])}return t}i(Ba,"updateAggregatedBalanceStateForNewAccount");function LS(t,e){let o=vn(e),n=Dt(o);return t[n]&&(t[n]=t[n].filter(r=>r!==e)),t}i(LS,"removeBalanceFromAggregatedBalance");function Wa(t,e,o){let n=t.connectedWallets.filter(c=>c.walletType===e);t.connectedWallets.forEach(c=>{c.walletType!==e&&(n=n.filter(u=>!(u.chain===c.chain&&u.address===c.address)))}),o?.chains&&o.chains.length>0&&(n=n.filter(c=>o.chains?.includes(c.chain))),o?.namespaces&&o.namespaces.length>0&&(n=n.filter(c=>c.namespace?o.namespaces?.includes(c.namespace):!1));let r={},a=t._aggregatedBalances,s=t._balances;return Object.keys(s).forEach(c=>{let u=vn(c);!!n.find(m=>Dp(m.address,{address:u.address,blockchain:m.chain,symbol:u.symbol})===c)?a=LS(a,c):r[c]=s[c]}),{_balances:r,_aggregatedBalances:a}}i(Wa,"computeNextStateAfterWalletBalanceRemoval");function MS(t,e){return e.find(o=>t.address===o.address&&t.chain===o.blockChain)}i(MS,"matchWalletDetailsWithConnectedWallet");var PS=ap(),$p=Pp((t,e)=>({_balances:{},_aggregatedBalances:{},connectedWallets:[],fetchingWallets:!1,lastUpdatedAt:+new Date,setConnectedWalletAsRefetching:o=>{t(n=>({fetchingWallets:!0,connectedWallets:n.connectedWallets.map(r=>o.find(a=>kn(a,r))?{...r,loading:!0,error:!1}:r)}))},setConnectedWalletRetrievedData:(o,n)=>{t(r=>({fetchingWallets:!1,connectedWallets:r.connectedWallets.map(a=>o.find(s=>kn(s,a))?{...a,loading:!1,error:!1,explorerUrl:MS(a,n)?.explorerUrl||a.explorerUrl}:a)}))},setConnectedWalletHasError:o=>{t(n=>({fetchingWallets:!1,connectedWallets:n.connectedWallets.map(r=>o.find(a=>kn(a,r))?{...r,loading:!1,error:!0}:r)}))},addConnectedWallet:(o,n)=>{let r=e().connectedWallets,a=o.filter(s=>!r.some(l=>kn(s,l)));if(a.length>0){let s=a.map(l=>{let c=!r.some(u=>u.chain===l.chain&&u.selected&&u.walletType!==l.walletType);return{address:l.address,chain:l.chain,isContractWallet:l.isContractWallet,explorerUrl:null,walletType:l.walletType,selected:c,namespace:n,loading:!1,error:!1}});t(l=>({connectedWallets:[...l.connectedWallets.filter(u=>!s.some(p=>p.walletType===u.walletType&&p.chain===u.chain)),...s]}))}},fetchCustomTokensBalances:async o=>{let{tokens:n,connectedWallets:r}=o,a=n.reduce((c,u)=>((c[u.blockchain]||=[]).push(u),c),{}),s=new Set,l=r.reduce((c,u)=>{let p=`${u.address}-${u.chain}`;return s.has(p)||(s.add(p),a[u.chain]&&(c[u.address]||(c[u.address]=[]),c[u.address].push(...a[u.chain]))),c},{});Object.entries(l).forEach(async([c,u])=>{try{let{balances:p}=await ot().getMultipleTokenBalance({assets:u.map(({symbol:m,address:h,blockchain:f})=>({symbol:m,address:h,blockchain:f})),walletAddress:c});if(p){let m=e()._balances,h=e()._aggregatedBalances;p.forEach(f=>{if(parseFloat(f.amount.amount)===0)return;let d={blockChain:f.asset.blockchain,balances:[f],address:c},g={_aggregatedBalances:e()._aggregatedBalances,findToken:e().findToken};Aa(g,d,m);let C=Na(d,e);h=Ba(h,C),m={...m,...C}}),t(f=>({_balances:{...f._balances,...m},_aggregatedBalances:h}))}}catch(p){console.error(p)}})},setWalletsAsSelected:o=>{let n=e().connectedWallets.map(r=>{let a=!!o.find(l=>l.chain===r.chain&&l.walletType!==r.walletType&&r.selected),s=!!o.find(l=>l.chain===r.chain&&l.walletType===r.walletType&&!r.selected);return a?{...r,selected:!1}:s?{...r,selected:!0}:r});t({connectedWallets:n})},newWalletConnected:async(o,n)=>{Se.emit("walletEvent",{type:"connect",payload:{walletType:o[0].walletType,accounts:o}}),e().addConnectedWallet(o,n),e().fetchBalances(o)},removeBalancesForWallet:(o,n)=>{let r={_balances:e()._balances,_aggregatedBalances:e()._aggregatedBalances,connectedWallets:e().connectedWallets},{_balances:a,_aggregatedBalances:s}=Wa(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(Se.emit("walletEvent",{type:"disconnect",payload:{walletType:o}}),n){e().removeBalancesForWallet(o),e()._changeSelectedWalletIfNeededOnRemove(o);let r=e().connectedWallets.filter(a=>a.walletType!==o);t({connectedWallets:r})}},_changeSelectedWalletIfNeededOnRemove:(o,n)=>{let r=e().connectedWallets;n?.namespaces&&n.namespaces.length>0&&(r=r.filter(s=>!!s.namespace&&n.namespaces?.includes(s.namespace)));let a=r.filter(s=>s.selected&&s.walletType===o).map(s=>s.chain);if(a.length>0){let s=e().connectedWallets.map(l=>a.includes(l.chain)?(a=a.filter(c=>c!==l.chain),{...l,selected:!0}):l);t({connectedWallets:s})}},clearConnectedWallet:()=>t({connectedWallets:[]}),fetchBalances:async(o,n)=>{let{shouldFetchCustomTokens:r=!0,selectedCustomTokens:a}=n||{};await e().fetchMainTokensBalances(o),r&&e().fetchCustomTokensBalances({tokens:a??e().customTokens(),connectedWallets:o})},fetchMainTokensBalances:async(o,n)=>{if(o.length===0)return;let r=o[0].walletType;e().setConnectedWalletAsRefetching(o);let a=o.map(c=>({address:c.address,blockchain:c.chain})),s;try{s=await ot().getWalletsDetails(a)}catch(c){e().setConnectedWalletHasError(o),console.error(`Request for fetching balances failed. cause: ${c}`);return}let l=s.wallets;if(l){let c=e()._balances,u=e()._aggregatedBalances;l.forEach(m=>{if(m.failed)return;let h={_balances:c,_aggregatedBalances:u,connectedWallets:e().connectedWallets,findToken:e().findToken};Aa(h,m,c);let{_balances:f,_aggregatedBalances:d}=Wa(h,r,{chains:[m.blockChain]});if(u=d,c=f,!e().connectedWallets.find(C=>C.walletType===r&&C.address===m.address&&C.chain===m.blockChain))return;let g=Na(m,e);u=Ba(u,g),c={...c,...g}}),t(m=>({_balances:{...m._balances,...c},_aggregatedBalances:u})),e().setConnectedWalletRetrievedData(o,l);let{retryOnFailedBalances:p=!0}=n||{};if(p){let m=l.filter(h=>h.failed).map(h=>({chain:h.blockChain,walletType:r,address:h.address}));m.length>0&&await e().fetchMainTokensBalances(m,{retryOnFailedBalances:!1})}}else e().setConnectedWalletHasError(o),console.error("We couldn't fetch your account balances. Seem there is no information on blockchain for them yet.")},getBalances:()=>e()._balances,getBalanceFor:o=>{let n=e().getBalances(),r=Dt(o),a=e()._aggregatedBalances[r]||[];if(a.length===0)return null;if(a.length===1){let c=a[0];return n[c]}let l=n[a[0]];return a.forEach(c=>{let u=n[c],p=new La(u.amount),m=new La(l.amount);p.isGreaterThan(m)&&(l=u)}),l},getBalancesForWalletAddress:o=>{let n=e().getBalances();return Object.keys(n).reduce((s,l)=>{let c=n[l],[,,,u]=l.split(mo);return u===o&&(s[l]=c),s},{})},getConnectedWalletsDetails:()=>PS(()=>e().connectedWallets.map(n=>{let r=e().getBalancesForWalletAddress(n.address),a=Object.keys(r);return{...n,balances:a.reduce((s,l)=>{let c=r[l],u=vn(l);if(u.blockchain===n.chain){let p=e().findToken(u),m=c.amount?new La(c.amount).shiftedBy(-c.decimals):ce;s.push({chain:n.chain,symbol:u.symbol,ticker:u.symbol,address:u.address,rawAmount:c.amount,decimal:c.decimals,amount:m.toString(),logo:p?.image||null,usdPrice:p?.usdPrice||null})}return s},[])}}),e().lastUpdatedAt)}));function Fp(t){return _S()(DS((...e)=>({...$p(...e),...Np(...e),...Lp(...e),...Gc(t,...e)}),{name:"user-settings",skipHydration:!0,partialize:e=>({_customTokens:e._customTokens,theme:e.theme,language:e.language,affiliatePercent:e.affiliatePercent,affiliateRef:e.affiliateRef,affiliateWallets:e.affiliateWallets,slippage:e.slippage,customSlippage:e.customSlippage,infiniteApprove:e.infiniteApprove,preferredBlockchains:e.preferredBlockchains,disabledLiquiditySources:e.disabledLiquiditySources}),version:1,migrate:(e,o)=>{let n=e;return o===0&&(n._customTokens=n._customTokens.map(r=>({...r,warning:!0}))),n}}))}i(Fp,"createAppStore");var Op=FS(null);function S(){let t=OS(Op);if(US(()=>{t&&!t.persist.hasHydrated()&&t.persist.rehydrate()},[]),!t)throw new Error("Missing AppStoreContext.Provider in the tree");return t()}i(S,"useAppStore");function Up(t){let e=zS();return e.current||(e.current=Fp(t.config)),$S.createElement(Op.Provider,{value:e.current},t.children)}i(Up,"AppStoreProvider");function yt(t){let{chain:e}=t||{},{connectedWallets:o,getAvailableProviders:n}=S(),{state:r,getWalletInfo:a}=QS(),s=S().blockchains(),{handleDisconnect:l}=Xt(),c=zc(n()),u=cp(r,a,c,e);u=HS()?u.filter(g=>g.showOnMobile!==!1&&r(g.type).installed):u;let p=mp(u),m=i(g=>!o.find(C=>C.walletType===g&&C.chain===e),"isExperimentalChainNotAdded"),h=GS(()=>{let g=u?.filter(C=>C.state===Ma.CONNECTING)||[];for(let C of g)l(C.type)},[gp(u)]);VS(()=>()=>{h()},[]);let f=i(g=>{let C=g.find(y=>y.type===wn.DEFAULT);return!C||C.state===Ma.NOT_INSTALLED?!1:g.filter(y=>y.state!=Ma.NOT_INSTALLED&&![wn.DEFAULT,wn.WALLET_CONNECT_2,wn.LEDGER].includes(y.type)&&a(y.type).supportedChains.filter(T=>T.type=="EVM").length>0).length==0},"shouldShowDefaultInjectedWallet"),d=i((g,C,k)=>Ar(k,C)&&m(g)&&!qS.includes(g)||g==wn.DEFAULT&&!f(u),"shouldExcludeWallet");return{list:p.filter(g=>!d(g.type,e??"",s)),terminateConnectingWallets:h}}i(yt,"useWalletList");import{Modal as YS}from"@rango-dev/ui";import ZS from"react";import{create as XS}from"zustand";var zp="rango-widget";var bn=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(zp),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 jS=i(t=>{let e=t;e.use={};for(let o of Object.keys(e.getState()))e.use[o]=()=>e(n=>n[o]);return e},"createSelectors"),Ho=jS;var te=Ho(XS()((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})}}))),ho=new bn({onInit:()=>te.setState({tabManagerInitiated:!0}),onClaim:()=>te.setState({isActiveTab:!0,showActivateTabModal:!1}),onRelease:()=>te.setState({isActiveTab:!1})});function J(t){let{watermark:e}=te();return ZS.createElement(YS,{hasWatermark:e==="FULL",...t},t.children)}i(J,"WatermarkedModal");import{i18n as Go}from"@lingui/core";import{Alert as rC,Button as iC,Divider as Dr,Image as aC,MessageBox as sC,RadioRoot as lC}from"@rango-dev/ui";import ue,{useEffect as cC,useMemo as pC,useState as uC}from"react";import{i18n as tC}from"@lingui/core";import{Checkbox as oC,Radio as nC,Typography as Oa}from"@rango-dev/ui";import mt from"react";function Pa(t,e){return t.find(o=>o.name===e)?.logo}i(Pa,"getBlockchainLogo");import{Button as JS,Image as RS,styled as qo}from"@rango-dev/ui";var Hp=qo("ul",{padding:0,paddingTop:"$10",paddingBottom:"$20",margin:0}),_a=qo("li",{backgroundColor:"$neutral200",padding:"$16",display:"flex",gap:"$8",cursor:"pointer",borderRadius:"$sm",alignItems:"center",variants:{unsupported:{true:{cursor:"not-allowed",paddingTop:"$8",paddingBottom:"$8"}}}}),qp=qo("div",{flex:"1",display:"flex",flexDirection:"column",height:"$40",variants:{showSupportedChains:{true:{justifyContent:"space-between"},false:{justifyContent:"center"}}}}),Gp=qo("div",{flex:"1",display:"flex",alignItems:"center",gap:"$4",opacity:"0.5"}),Da=qo(RS,{variants:{disabled:{true:{opacity:"0.5"}}}}),Pr=qo(JS,{minHeight:"$40"});import{Image as Kp,Tooltip as jp,Typography as eC}from"@rango-dev/ui";import It from"react";import{styled as Vp}from"@rango-dev/ui";var $a=Vp("div",{display:"flex",alignItems:"center",padding:0,margin:0}),_r=Vp("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 Fa=3;function Xp(t){let{chains:e}=t;return It.createElement($a,null,e.slice(0,Fa).map((o,n)=>It.createElement(jp,{key:o.name,container:A(),side:"bottom",align:"start",content:o.name,sideOffset:4},It.createElement(_r,{firstItem:n===0},It.createElement(Kp,{src:o.logo,size:15})))),e.length>Fa&&It.createElement(jp,{container:A(),side:"bottom",align:"start",sideOffset:4,content:It.createElement($a,null,e.map((o,n)=>It.createElement(_r,{key:o.name,firstItem:n===0},It.createElement(Kp,{src:o.logo,size:15}))))},It.createElement(_r,null,It.createElement(eC,{variant:"body",size:"xsmall"},"+",e.length-Fa))))}i(Xp,"SupportedChainsList");function Yp(t){let{onClick:e,type:o,namespace:n}=t,r=S().blockchains();if(n.unsupported)return mt.createElement(_a,{unsupported:!0},mt.createElement(Da,{src:Pa(r,n.id),size:40,disabled:!0}),mt.createElement(Gp,null,mt.createElement(Oa,{variant:"label",size:"large"},n.label),mt.createElement(Oa,{variant:"body",size:"xsmall"},tC.t("(Currently not supported)"))));let a=n.chains.length>1;return mt.createElement(_a,{onClick:e},mt.createElement(Da,{src:Pa(r,n.id),size:40}),mt.createElement(qp,{showSupportedChains:a},mt.createElement(Oa,{variant:"label",size:"large"},n.label),a&&mt.createElement(Xp,{chains:n.chains})),o==="radio"?mt.createElement(nC,{value:n.value}):mt.createElement(oC,{checked:t.value}))}i(Yp,"NamespaceListItem");function xn(t){let{targetWallet:e}=t.value,o=e.needsNamespace?.selection==="single",n=e.image,[r,a]=uC([]),s=pC(()=>e.needsNamespace?.data.filter(m=>!m.unsupported),[e?.type]),l=i(m=>{a(o?[m]:h=>h.includes(m)?h.filter(f=>f!==m):h.concat(m))},"onSelect"),c=s?.length===r.length,u=i(()=>{if(o)throw new Error("onSelectAll should not be called on single selection mode.");c?a([]):s&&a(s.map(m=>m.value))},"onSelectAll"),p=i(m=>o?ue.createElement(lC,{value:r?.[0]},m):ue.createElement(ue.Fragment,null,m),"wrapRadioRoot");return cC(()=>{if(!o&&s)if(t.value.defaultSelectedChains?.length){let m=s.filter(h=>h.chains.some(f=>t.value.defaultSelectedChains?.includes(f.name)));a(m.map(h=>h.value))}else a(s.map(m=>m.value))},[]),ue.createElement(ue.Fragment,null,ue.createElement(sC,{type:"info",title:Go.t("Connect {wallet}",{wallet:e.title}),description:Go.t("This wallet supports multiple chains. Choose which chains you'd like to connect to."),icon:ue.createElement(aC,{src:n,size:45})}),o?ue.createElement(ue.Fragment,null,ue.createElement(Dr,{size:20}),ue.createElement(rC,{variant:"alarm",type:"info",title:Go.t("This wallet can only connect to one chain at a time. ")})):ue.createElement(ue.Fragment,null,ue.createElement(Dr,{size:30}),ue.createElement(iC,{style:{marginLeft:"auto"},id:"widget-name-space-select-all-btn",size:"xsmall",variant:"ghost",type:"primary",onClick:u},c?Go.t("Deselect all"):Go.t("Select all"))),ue.createElement(Hp,null,p(ue.createElement(ue.Fragment,null,e.needsNamespace?.data.map((m,h,f)=>ue.createElement(ue.Fragment,{key:m.id},ue.createElement(Yp,{value:r.includes(m.value),namespace:m,type:o?"radio":"checkbox",onClick:()=>l(m.value)}),h!==f.length-1&&ue.createElement(Dr,{size:10})))))),ue.createElement(Dr,{size:20}),ue.createElement(Pr,{id:"widget-name-space-confirm-btn",type:"primary",disabled:!r.length,onClick:()=>t.onConfirm(r)},Go.t("Connect")))}i(xn,"Namespaces");import{i18n as Vo}from"@lingui/core";import{Divider as Jp,Image as gC,MessageBox as hC,Select as yC,TextField as SC}from"@rango-dev/ui";import dt,{useEffect as CC,useState as Rp}from"react";import{namespaces as mC}from"@rango-dev/wallets-shared";var $r={id:"custom",label:"Custom",generateDerivationPath:t=>t};function Ua(t){let e=t?mC[t].derivationPaths:null;return e?[...e,$r]:[]}i(Ua,"getDerivationPaths");import{Button as dC,styled as za,Typography as fC}from"@rango-dev/ui";var Zp=za("div",{paddingTop:"$30",paddingBottom:"$30",zIndex:10}),Qa=za(fC,{paddingLeft:"$10"}),Ha={height:"$40",backgroundColor:"$neutral200",borderRadius:"$sm"},lW=za(dC,{minHeight:"$40"});var eu="0";function En(t){let{onConfirm:e}=t,{namespace:o,providerImage:n,providerType:r}=t.value,[a,s]=Rp(null),[l,c]=Rp(eu),u=a===$r.id,p=Ua(o),m=i(({value:f})=>{let d=p?.find(g=>g.id===f);d&&(a===$r.id&&Number.isNaN(Number(l))&&c(eu),s(d.id))},"handleDerivationPathItemClick"),h=i(()=>{let f=p.find(d=>d.id===a);if(f)e(f.generateDerivationPath(l));else throw new Error("selectedDerivationPath can not be undefined")},"handleConfirm");return CC(()=>{s(Ua(o)[0]?.id||null)},[o]),dt.createElement(dt.Fragment,null,dt.createElement(Jp,{size:20}),dt.createElement(hC,{type:"info",title:Vo.t("Select Derivation Path"),description:Vo.t({id:"In order to connect to {type}, you must first select a Derivation Path",values:{type:r}}),icon:dt.createElement(gC,{src:n,size:45})}),dt.createElement(Zp,null,dt.createElement(Qa,{variant:"body",size:"xsmall",color:"$neutral600"},Vo.t("Choose Derivation Path Template")),dt.createElement(yC,{value:a||"",options:p.map(f=>({value:f.id,label:f.label})),variant:"filled",handleItemClick:m,styles:{trigger:Ha}}),dt.createElement(Jp,{size:20}),dt.createElement(Qa,{variant:"body",size:"xsmall",color:"$neutral600"},u?Vo.t("Enter Path"):Vo.t("Enter Index")),dt.createElement(SC,{type:u?"text":"number",variant:"contained",value:l,onChange:f=>c(f.target.value),style:Ha})),dt.createElement(Pr,{id:"widget-derivation-path-confirm-btn",type:"primary",onClick:h,disabled:!p||!a||!l},Vo.t("Confirm")))}i(En,"DerivationPath");import{i18n as Ko}from"@lingui/core";import{Image as vC,MessageBox as qa,WalletState as wC}from"@rango-dev/ui";import{useWallets as bC}from"@rango-dev/wallets-react";import yo from"react";import{keyframes as kC,styled as Fr}from"@rango-dev/ui";var CW=Fr("div",{borderRadius:"$lg",width:"$45",height:"$45",backgroundColor:"$success300",display:"flex",justifyContent:"center",alignItems:"center"}),tu=Fr("div",{position:"relative"}),TC=kC({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),ou=Fr("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${TC} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),nu=Fr("div",{"& img":{borderRadius:"50%"}});function Ga(t){let{wallet:e,error:o}=t,{type:n,image:r}=e,{state:a}=bC();return Sn(a(n))===wC.CONNECTED?yo.createElement(qa,{type:"success",title:Ko.t("Wallet Connected"),description:Ko.t("Your wallet is connected, you can use it to swap.")}):o?yo.createElement(qa,{type:"error",title:Ko.t("Failed to Connect"),description:o||Ko.t("Your wallet is not connected. Please try again.")}):yo.createElement(qa,{type:"loading",title:Ko.t("Connecting to your wallet"),description:Ko.t("Click connect in your wallet popup."),icon:yo.createElement(tu,null,yo.createElement(nu,null,yo.createElement(vC,{src:r,size:45})),yo.createElement(ou,null))})}i(Ga,"ConnectStatus");import{i18n as Va}from"@lingui/core";import{Button as xC,Divider as ru,MessageBox as EC}from"@rango-dev/ui";import Or from"react";function Ka(t){let{displayName:e,onConfirm:o}=t;return Or.createElement(EC,{title:Va.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),type:"warning",description:Va.t({id:"Would you like to add the {blockchainDisplayName} experimental chain to your wallet?",values:{blockchainDisplayName:e}})},Or.createElement(ru,{size:18}),Or.createElement(ru,{size:32}),Or.createElement(xC,{id:"widget-experimental-chain-confirm-btn",onClick:o,variant:"outlined",type:"primary",fullWidth:!0,size:"large"},Va.t("Confirm")))}i(Ka,"ExperimentalChain");function iu(t,e){return t().status==="init"&&!!e}i(iu,"isOnStatus");function In(t){return t().status==="namespace"}i(In,"isOnNamespace");function An(t){return t().status==="derivationPath"}i(An,"isOnDerivationPath");var BC=3e3,WC=300;function Co(t){let e=NC(),[o,n]=au(!1),[r,a]=au(),s=i(y=>{a(y.message)},"catchErrorOnHandle"),{terminateConnectingWallets:l}=yt(),{handleConnect:c,handleDerivationPath:u,handleNamespace:p,getState:m,resetState:h}=Xt(),f=i(y=>{p(t.wallet,y).then(k).catch(s)},"handleConfirmNamespaces"),d=i(y=>{if(!y)throw new Error("Derivation path is empty. Please make sure you've filled the field correctly.");u(y).then(k).catch(s)},"handleDerivationPathConfirm"),g=i(()=>{n(!1)},"handleClosingModal"),C=i(()=>{a(void 0),h(),n(!1),e.current&&clearTimeout(e.current)},"resetModalState"),k=i((y,T)=>{let v=y.status==="connected",I=["disconnected","disconnected-unhandled"].includes(y.status);v?(t.onConnect?.(),T||(e.current=setTimeout(g,BC))):I&&g()},"afterConnected");return AC(()=>{if(t.wallet){C();let y=!1,T=!0;i(()=>{setTimeout(()=>{T=!1,y||n(!0)},WC)},"beforeConnecting")(),c(t.wallet,{disconnectIfConnected:!0,defaultSelectedChains:t.options?.defaultSelectedChains}).then(I=>{["namespace","derivation-path"].includes(I.status)||(y=!0),k(I,T)}).catch(s)}},[t.wallet]),So.createElement(J,{open:o,onClose:g,onExit:()=>{C(),l(),t.onClose&&t.onClose()},container:A()},iu(m,t.wallet)&&So.createElement(So.Fragment,null,So.createElement(Ga,{wallet:{type:t.wallet.type,image:t.wallet.image},error:r}),So.createElement(IC,{direction:"vertical",size:32})),In(m)&&So.createElement(xn,{onConfirm:f,value:m().namespace}),An(m)&&So.createElement(En,{onConfirm:d,value:m().derivationPath}))}i(Co,"StatefulConnectModal");import{Provider as DC}from"@rango-dev/wallets-react";import Ur,{createContext as $C,useEffect as uu,useMemo as FC,useRef as mu}from"react";import{useEffect as LC}from"react";function su(t){return t.map(e=>typeof e=="string"?e:e.config.type).join("-")}i(su,"hashProviders");function ja(t,e){let{clearConnectedWallet:o,getAvailableProviders:n,buildAndSetProviders:r}=S(),a=n();return LC(()=>{o(),r()},[su(t??[]),e?.walletConnectProjectId,e?.walletConnectListedDesktopWalletLink]),{providers:a}}i(ja,"useWalletProviders");import{legacyFormatAddressWithNetwork as MC,legacyReadAccountAddress as lu}from"@rango-dev/wallets-core/legacy";import{Events as ko}from"@rango-dev/wallets-react";import{isEvmBlockchain as PC}from"rango-sdk";function cu(t){let{newWalletConnected:e,disconnectWallet:o,disconnectNamespaces:n,connectedWallets:r,removeBalancesForWallet:a,blockchains:s}=S(),{onConnectWalletHandler:l,onDisconnectWalletHandler:c}=t,u=s().filter(PC).map(g=>g.name),p=i((g,C)=>{let[k,,y,,T]=g,v=Ca(k,y,u,C.supportedChainNames,T.isContractWallet);v.length&&e(v,T.namespace)},"onAccountsEvent"),m=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=Cn(T.supportedBlockchains);k&&p([g,C,k,y,T],{supportedChainNames:v})}if(C===ko.CONNECTED){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}C===ko.PROVIDER_DISCONNECTED&&(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?")),C===ko.NAMESPACE_DISCONNECTED&&n(g,k)},"handleUpdatesForHub"),h=i((g,C,k,y,T)=>{if(C===ko.ACCOUNTS){let v=Cn(T.supportedBlockchains),I=[],B=[];if(k?.forEach(x=>{let{network:w}=lu(x);u.includes(w)?I.push(x):B.push(x)}),r.filter(x=>x.walletType===g).map(x=>MC(x.address,x.chain)).length>0){if(I.length>0){let x=Ca(g,I,u,v,T.isContractWallet);a(g,{chains:x.map(w=>w.chain)})}B.length>0&&a(g,{chains:B.map(x=>{let{network:w}=lu(x);return w})})}k?p([g,C,k,y,T],{supportedChainNames:v}):(o(g),c.current?c.current(g):console.warn("onDisconnectWallet handler hasn't been set. Are you sure?"))}if(C===ko.ACCOUNTS&&y.connected){let v=`${g}-${y.network}-${k}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForLegacy"),f=i((g,C,k,y,T)=>{if(C===ko.NETWORK&&y.network){let v=`${g}-${y.network}`;l.current?l.current(v):console.warn("onConnectWallet handler hasn't been set. Are you sure?")}},"handleUpdatesForBoth");return{handler:i((g,C,k,y,T)=>{T.isHub?m(g,C,k,y,T):h(g,C,k,y,T),f(g,C,k,y,T)},"handler")}}i(cu,"useUpdates");import{LegacyEvents as _C}from"@rango-dev/wallets-core/legacy";function pu(t,e){let[o,n,r,a,s]=e;n!==_C.PROVIDER_DISCONNECTED&&t(o,n,r,a,s)}i(pu,"propagateEvents");var zr=$C({onConnectWallet:()=>{},onDisconnectWallet:()=>{}});function OC(t){let{updateConfig:e,updateSettings:o,fetch:n,fetchStatus:r}=S(),a=S().blockchains(),s=S().config,l={walletConnectProjectId:s?.walletConnectProjectId,trezorManifest:s?.trezorManifest,tonConnect:s.tonConnect,walletConnectListedDesktopWalletLink:t.config.__UNSTABLE_OR_INTERNAL__?.walletConnectListedDesktopWalletLink},{providers:c}=ja(s.wallets,l),u=mu(),p=mu(),{handler:m}=cu({onConnectWalletHandler:u,onDisconnectWalletHandler:p});uu(()=>{n().catch(console.log)},[]),uu(()=>{t.config&&(e(t.config),o(t.config),window.__rango={config:s,dappConfig:t.config})},[t.config,r]);let h=te.use.isActiveTab(),f=FC(()=>({onConnectWallet:d=>{u.current=d},onDisconnectWallet:d=>{p.current=d}}),[]);return Ur.createElement(zr.Provider,{value:f},Ur.createElement(DC,{allBlockChains:a,providers:c,onUpdateState:(d,g,C,k,y)=>{let T=[d,g,C,k,y];m(...T),t.onUpdateState&&pu(t.onUpdateState,T)},autoConnect:!!h,configs:{wallets:s.wallets}},t.children))}i(OC,"Main");function Qr(t){let{config:e,...o}=t;return Ur.createElement(Up,{config:e},Ur.createElement(OC,{...o,config:e}))}i(Qr,"WidgetWallets");import pa from"react";import UC,{Fragment as zC}from"react";import{MemoryRouter as QC,useInRouterContext as HC}from"react-router";function du({children:t}){let o=HC()?zC:QC;return UC.createElement(o,null,t)}i(du,"AppRouter");import{I18nManager as XI}from"@rango-dev/ui";import Bc from"react";import De from"react";import{useRoutes as _I}from"react-router-dom";var F={home:"/",fromSwap:"from-swap",toSwap:"to-swap",blockchains:"blockchains",settings:"settings",customTokens:"custom-tokens",addCustomTokens:"add-custom-tokens",liquiditySources:"liquidity-sources",bridges:"bridges",exchanges:"exchanges",languages:"languages",swaps:"swaps",wallets:"wallets",confirmSwap:"confirm-swap",swapDetails:":requestId",routes:"routes"};import{useEffect as Xo,useRef as Zr}from"react";import Ze from"bignumber.js";import{create as KC}from"zustand";import{subscribeWithSelector as jC}from"zustand/middleware";import{i18n as St}from"@lingui/core";import{getRelatedWalletOrNull as VC,RouteEventType as sM}from"@rango-dev/queue-manager-rango-preset";import He from"bignumber.js";import{PendingSwapNetworkStatus as Xr}from"rango-types";import{i18n as Ue}from"@lingui/core";var oe=i(()=>({genericServerError:Ue.t("Failed Network, Please retry your swap."),liquiditySourcesError:{title:Ue.t("Please reset your liquidity sources."),description:Ue.t("You have limited the liquidity sources and this might result in Rango finding no routes. Please consider resetting your liquidity sources.")},noResultError:{title:Ue.t("No Routes Found."),description:Ue.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:Ue.t("Bridge Limit Error: Please increase your amount."),decreaseAmount:Ue.t("Bridge Limit Error: Please decrease your amount.")},highValueLossError:{impactTitle:Ue.t("High Price Impact"),title:Ue.t("Price impact is too high!"),description:Ue.t("The price impact is significantly higher than the allowed amount."),confirmMessage:Ue.t("Confirm high price impact")},quoteUpdatedWithHighValueLoss:{title:Ue.t("Route updated and price impact is too high, try again later!")},unknownPriceError:{impactTitle:Ue.t("USD Price Unknown"),title:Ue.t("USD Price Unknown, Cannot calculate Price Impact."),description:Ue.t("USD Price Unknown, Cannot calculate Price Impact. The price impact may be higher than usual. Are you sure to continue the Swap?"),confirmMessage:Ue.t("Confirm USD Price Unknown")}}),"errorMessages");function fu(t){switch(t.type){case 0:return t.diagnosisMessage??oe().noResultError.title;case 1:return oe().genericServerError;default:return""}}i(fu,"getQuoteErrorMessage");import{i18n as Hr}from"@lingui/core";var To=i(()=>({connectWallet:Hr.t("Connect Wallet"),swap:Hr.t("Swap"),swapAnyway:Hr.t("Swap anyway"),ethWarning:Hr.t("The route goes through Ethereum. Continue?")}),"swapButtonTitles");function Xa(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(Xa,"getFeeLabel");var Ya=["RECOMMENDED","CENTRALIZED","LOWEST_FEE","FASTEST","HIGH_IMPACT"],gu=100,hu=30,yu=15,Su=60;var Cu=[{threshold:-10,minInput:400},{threshold:-5,minInput:1e3}],ku=[{threshold:-1,minInput:1e3},{threshold:-2,minInput:500}];import{getLastSuccessfulStep as GC}from"@rango-dev/queue-manager-rango-preset";import KL from"bignumber.js";function vu(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(vu,"getRequiredBalanceOfWallet");function Ft(t){let e;return t<=-3&&t>-10?e="low":t<=-10&&(e="high"),e}i(Ft,"getPriceImpactLevel");function Gr(t,e,o){let n=t.steps[0],r=t.steps[t.steps.length-1],a=GC(t.steps),s={blockchain:r.toBlockchain,symbol:r.toSymbol,address:r.toSymbolAddress},l=uo(a?a.toBlockchain:n.fromBlockchain,e),c=uo(r.toBlockchain,e),u=o(a?{blockchain:l?.name??"",symbol:a.toSymbol,address:a.toSymbolAddress}:{blockchain:l?.name??"",symbol:n.fromSymbol,address:n.fromSymbolAddress}),p=o(s),m=a?a.outputAmount??"":t.inputAmount;return{fromBlockchain:l,fromToken:u,toBlockchain:c,toToken:p,inputAmount:m}}i(Gr,"createRetryQuote");function jo(t){let{previousQuote:e,currentQuote:o,findToken:n,userSlippage:r}=t,a=Nn(o),s=ft(o);if(o&&a&&s){let u=$t(a.toString(),s.toString());if(!!u&&Iu(a,u)){let m=Kr(o?.swaps,n),h=Ft(u);return{type:0,inputUsdValue:a,outputUsdValue:s,priceImpact:u,totalFee:m,warningLevel:h}}}if(e&&Bu(e,o))return{type:4,usdValueChange:P(ft(o)?.minus(ft(e)??0).toString()??"0",null,2),percentageChange:P($t(ft(e)??"1",ft(o)??"1"),null,2)};if(o&&(!a||!s))return{type:1};let l=jr(o.swaps),c=r>Lr;if(Nu(t.userSlippage.toString(),l)){if(c&&parseFloat(l??"0")<r)return{type:3,slippage:r.toString()}}else return{type:2,recommendedSlippages:Au(o,r),minRequiredSlippage:l};return null}i(jo,"generateQuoteWarnings");function wu(t){return![4].includes(t.type)}i(wu,"isQuoteWarningConfirmationRequired");function $t(t,e){let o=typeof e=="string"?parseFloat(e)<=0:!e?.gt(0),n=!t||!e||o?null:Za(t.toString(),e.toString());return n&&n<0?n:null}i($t,"getPriceImpact");var bu=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"),Vr=i((t,e)=>e.sort((o,n)=>{let r=i(u=>u.scores?.find(p=>p.preferenceType===t)?.score??0,"getScore"),a=r(o),s=r(n);if(a!==s)return s-a;let l=o.requestId.toLowerCase(),c=n.requestId.toLowerCase();return l.localeCompare(c)}),"sortQuotesBy"),xu=i((t,e,o)=>{if(!e.length)return null;if(!t)return{requestAmount:o,validationStatus:null,...e[0]};let n=new Set(t.swaps.map(a=>a.swapperId)),r=e.find(a=>{let s=new Set(a.swaps.map(l=>l.swapperId));return Array.from(n).every(l=>s.has(l))});return{requestAmount:o,validationStatus:null,...r||e[0]}},"getDefaultQuote"),Eu=i(t=>{let e=i((o,n)=>{let r=Ya.indexOf(o.value),a=Ya.indexOf(n.value);return r!==-1&&a!==-1?r-a:r!==-1?-1:a!==-1?1:0},"customSort");return t.sort(e)},"sortTags");function Iu(t,e){if(!t)return!1;let o=parseInt(e.toFixed(2)||"0");return Cu.some(({threshold:n,minInput:r})=>o<=n&&t.gte(new He(r)))}i(Iu,"hasHighValueLoss");function Wu(t){return(t||[]).filter(e=>{let o=e.fromAmountMinValue?new He(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new He(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(Wu,"hasLimitError");function Lu(t){let e=(t||[]).filter(l=>{let c=l.fromAmountMinValue?new He(l.fromAmountMinValue):null,u=l.fromAmountMaxValue?new He(l.fromAmountMaxValue):null;return l.fromAmountRestrictionType==="EXCLUSIVE"?c?.gte(l.fromAmount)||u?.lte(l.fromAmount):c?.gt(l.fromAmount)||u?.lt(l.fromAmount)})[0],o=e.fromAmountMinValue?new He(e.fromAmountMinValue):null,n=e.fromAmountMaxValue?new He(e.fromAmountMaxValue):null,r=e.fromAmountRestrictionType==="EXCLUSIVE",a="",s="";return!r&&o&&o.gt(e.fromAmount)?(a=St.t({id:"Required: >= {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.increaseAmount):r&&o&&o.gte(e.fromAmount)&&(a=St.t({id:"Required: > {min} {symbol}",values:{min:P(o,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.increaseAmount),!r&&n&&n.lt(e.fromAmount)?(a=St.t({id:"Required: <= {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.decreaseAmount):r&&n&&n.lte(e.fromAmount)&&(a=St.t({id:"Required: < {max} {symbol}",values:{max:P(n,6,6),symbol:e.from.symbol}}),s=oe().bridgeLimitErrors.decreaseAmount),{swap:e,fromAmountRangeError:a,recommendation:s}}i(Lu,"getLimitErrorMessage");function Mu(t){let{fetchMetaStatus:e,anyWalletConnected:o,fetchingQuote:n,inputAmount:r,quote:a,warning:s,error:l,needsToWarnEthOnPath:c}=t;return e!=="success"?{title:To().connectWallet,action:"connect-wallet",disabled:!0}:o?n||!a||l||!r||r==="0"?{title:To().swap,action:"confirm-swap",disabled:!0}:s?{title:To().swapAnyway,action:"confirm-warning",disabled:!1}:c?{title:To().ethWarning,action:"confirm-warning",disabled:!1}:{title:To().swap,action:"confirm-swap",disabled:!1}:{title:To().connectWallet,action:"connect-wallet",disabled:!1}}i(Mu,"getSwapButtonState");function Ja(t,e,o){let n=parseFloat(e||"0");return!(t&&(!o||o.lte(ce))&&e&&e!=="0"&&n!==0)}i(Ja,"canComputePriceImpact");function Ra(t,e){let o=ce;for(let n=0;n<t.fee.length;n++){let r=t.fee[n];if(r.expenseType==="DECREASE_FROM_OUTPUT")continue;let a=e(r.asset)?.usdPrice||null;o=o.plus(new He(r.amount).multipliedBy(a||0))}return o}i(Ra,"getUsdFeeOfStep");function Kr(t,e){return t.reduce((o,n)=>o.plus(Ra(n,e)),ce)}i(Kr,"getTotalFeeInUsd");function es(t){let e=ce;return e=e.plus(new He(t.amount).multipliedBy(t.price||0)),e}i(es,"getUsdFee");function Pu(t){return t.reduce((e,o)=>e.plus(es(o)),ce)}i(Pu,"getTotalFeesInUsd");function _u(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(_u,"getFeesGroup");function Du(t){let e=new Map;return t.forEach((o,n)=>{o.recommendedSlippage?.error&&e.set(n,o.recommendedSlippage.slippage)}),e.size>0?e:null}i(Du,"checkSlippageErrors");function Au(t,e){let o=new Map;return t?.swaps.forEach((n,r)=>{n.recommendedSlippage?.slippage&&parseFloat(n.recommendedSlippage.slippage)>e&&o.set(r,n.recommendedSlippage.slippage)}),o.size>0?o:null}i(Au,"checkSlippageWarnings");function jr(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(jr,"getMinRequiredSlippage");function Nu(t,e){return e?parseFloat(t)>=parseFloat(e):!0}i(Nu,"hasProperSlippage");function $u(t){let{fromToken:e,toToken:o,inputAmount:n,wallets:r,selectedWallets:a,disabledLiquiditySources:s,liquiditySources:l,excludeLiquiditySources:c,slippage:u,affiliateRef:p,affiliatePercent:m,affiliateWallets:h,destination:f,contractCall:d}=t,g=a?.reduce((y,T)=>(y[T.chain]=T.address,y),{}),C=[];return r?.forEach(y=>{C.push({blockchain:y.chain,addresses:[y.address]})}),{amount:n.toString(),affiliateRef:p??void 0,affiliatePercent:m??void 0,affiliateWallets:h??void 0,from:{address:e.address,blockchain:e.blockchain,symbol:e.symbol},to:{address:o.address,blockchain:o.blockchain,symbol:o.symbol},connectedWallets:C,selectedWallets:g??{},slippage:u.toString(),contractCall:d,...f&&{destination:f},...c&&{swapperGroups:s.concat(l??[]),swappersGroupsExclude:!0},...!c&&{swapperGroups:l?.filter(y=>!s.includes(y)),swappersGroupsExclude:!1}}}i($u,"createQuoteRequestBody");function Fu(t){return t.reduce((o,n)=>(o[n.chain]={address:n.address,walletType:n.walletType},o),{})}i(Fu,"getWalletsForNewSwap");function Nn(t){let e=t.requestAmount,o=t.swaps[0].from.usdPrice;if(!(!e||!o))return new He(e).multipliedBy(o)}i(Nn,"getUsdInputFrom");function ft(t){let e=t?.outputAmount||null,o=t.swaps[t.swaps.length-1].to.usdPrice;if(!(!e||!o))return new He(e).multipliedBy(o)}i(ft,"getUsdOutputFrom");function Za(t,e){return new He(e).div(new He(t)).minus(1).multipliedBy(gu).toNumber()}i(Za,"getPercentageChange");function Bu(t,e){let o=Nn(t),n=ft(t),r=ft(e);if(!o||!n||!r)return!1;let a=Za(n.toString(),r.toString());return ku.some(({threshold:s,minInput:l})=>a<=s&&o.isGreaterThanOrEqualTo(l))}i(Bu,"isOutputAmountChangedExcessively");function Ou(t,e,o){let n=t.validationStatus,r=go({filter:"required",quote:t});return e.sort((s,l)=>r.indexOf(s.chain)-r.indexOf(l.chain)).flatMap(s=>vu(s,n)||[]).filter(s=>!s.ok).map(s=>{let l=s.asset.symbol,c=P(new He(s.currentAmount.amount).shiftedBy(-s.currentAmount.decimals),8,8),u=P(new He(s.requiredAmount.amount).shiftedBy(-s.requiredAmount.decimals),8,8),p="";return s.reason==="FEE"&&(p=St.t(" for network fee")),s.reason==="INPUT_ASSET"&&(p=St.t(" for swap")),s.reason==="FEE_AND_INPUT_ASSET"&&(p=St.t(" for input and network fee")),St.t({id:"Needs \u2248 {requiredAmount} {symbol}{reason}, but you have {currentAmount} {symbol} in your {blockchain} wallet.",values:{requiredAmount:u,symbol:l,reason:p,currentAmount:c,blockchain:pt(s.asset.blockchain,o)}})})}i(Ou,"generateBalanceWarnings");function Bn(t){return!!t&&t.networkStatus!==null&&t.networkStatus!==Xr.NetworkChanged}i(Bn,"isNetworkStatusInWarningState");function Uu(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,"")),Bn(e)){r=t.networkStatusExtraMessage||"",a=t.networkStatusExtraMessageDetail||"";let u=(e?VC(t,e):null)?.walletType,p=u?o?.(u)?.name:null;switch(e?.networkStatus){case Xr.WaitingForConnectingWallet:r=p?St.t("Connect {wallet}",{wallet:p}):r;break;case Xr.WaitingForQueue:r=r||St.t("Waiting for other running tasks to be finished");break;case Xr.WaitingForNetworkChange:r=r||St.t("Waiting for changing wallet network");break;default:r=r||"";break}}a=a||"",r=r||"";let l=r?.indexOf("code")!==-1&&r?.indexOf("reason")!==-1;return{shortMessage:r,detailedMessage:{content:a,long:l}}}i(Uu,"getSwapMessages");function zu(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(zu,"getLastConvertedTokenInFailedSwap");function Qu(t){return t.status==="failed"}i(Qu,"shouldRetrySwap");function Hu(t,e,o,n,r,a){if(!n||t)return!0;let s=go({filter:"all",quote:n}),l=go({filter:"required",quote:n}),c=s.every(m=>r.some(h=>h.chain===m)),u=l.every(m=>r.some(h=>h.chain===m)),p=o&&a?$o(a,o):!1;return!e&&!c||e&&!o||e&&!!o&&(!p||!u)}i(Hu,"isConfirmSwapDisabled");function qu(t,e){return t.blockchain===e.blockchain&&t.symbol===e.symbol&&t.address===e.address}i(qu,"isTokensIdentical");var Yr=i((t,e)=>t?.usdPrice?new Ze(e||ce).multipliedBy(t?.usdPrice||0):null,"getUsdValue"),U=Ho(KC()(jC(t=>({fromBlockchain:null,fromToken:null,inputAmount:"",outputAmount:null,inputUsdValue:new Ze(0),outputUsdValue:new Ze(0),toBlockchain:null,toToken:null,refetchQuote:!0,sortStrategy:"SMART",selectedQuote:null,quotes:null,error:null,warning:null,quoteWalletsConfirmed:!1,selectedWallets:[],customDestination:null,quoteWarningsConfirmed:!1,updateQuotePartialState:(e,o)=>t(n=>({...n,[e]:o})),setSelectedQuote:e=>t(o=>{let n=null,r=ce,a=o.inputUsdValue;return yn(o.inputAmount)?(e&&(n=e?.outputAmount?new Ze(e?.outputAmount):null,a=Nn(e)??ce,r=ft(e)??ce),{selectedQuote:e,...!!e&&{outputAmount:n,outputUsdValue:r,inputUsdValue:a}}):{}}),resetAlerts:()=>t(()=>({error:null,warning:null})),resetQuote:()=>t(()=>({selectedQuote:null,outputAmount:null,outputUsdValue:new Ze(0),quotes:null,refetchQuote:!0,error:null,warning:null})),setFromBlockchain:e=>{t(o=>o.fromBlockchain?.name===e?.name?{}:{fromBlockchain:e,inputUsdValue:new Ze(0),...o.fromToken&&{selectedQuote:null,fromToken:null,outputAmount:null,outputUsdValue:new Ze(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:Yr(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 Ze(0)}})},setToToken:e=>t(()=>({toToken:e.token,...e.token&&{toBlockchain:e.meta.blockchains.find(o=>o.name===e.token.blockchain)??null}})),setInputAmount:e=>{t(o=>({inputAmount:e,...!e&&{outputAmount:null,outputUsdValue:new Ze(0),selectedQuote:null},...!!o.fromToken&&{inputUsdValue:Yr(o.fromToken,e)}}))},retry:e=>{let{fromBlockchain:o,fromToken:n,toBlockchain:r,toToken:a,inputAmount:s}=e;t({fromBlockchain:o,fromToken:n,inputAmount:s,outputAmount:null,inputUsdValue:Yr(n??null,s),outputUsdValue:new Ze(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?Yr(e.toToken,e.outputAmount?.toString()||""):new Ze(0)})),resetFromBlockchain:()=>t(()=>({fromToken:null,fromBlockchain:null,outputUsdValue:new Ze(0),inputUsdValue:new Ze(0),inputAmount:"",outputAmount:null,selectedQuote:null})),resetToBlockchain:()=>t(()=>({toToken:null,toBlockchain:null,outputAmount:null,outputUsdValue:new Ze(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})})))),Gu=U.subscribe((t,e)=>{(t.fromBlockchain!==e.fromBlockchain||t.fromToken!==e.fromToken||t.toBlockchain!==e.toBlockchain||t.toToken!==e.toToken||t.inputAmount!==e.inputAmount)&&Se.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&&Se.emit("quoteEvent",{type:"quoteOutputUpdate",payload:t.selectedQuote?{requestAmount:t.selectedQuote.requestAmount,swaps:t.selectedQuote.swaps,outputAmount:t.selectedQuote.outputAmount,resultType:t.selectedQuote.resultType,tags:t.selectedQuote.tags}:null})});function Vu(){let{setInputAmount:t,setToToken:e,setToBlockchain:o,setFromBlockchain:n,resetQuote:r,setFromToken:a,fromToken:s,toToken:l,fromBlockchain:c,toBlockchain:u}=U(),p=S().config,m=S().fetchStatus,h=S().blockchains(),{findToken:f}=S(),{setAffiliateRef:d,setAffiliatePercent:g,setAffiliateWallets:C}=S(),k=p?.from?.tokens,y=p?.from?.blockchains,T=p?.to?.tokens,v=p?.to?.blockchains,I=Zr(void 0),B=Zr(void 0),N=Zr(void 0),x=Zr(void 0);Xo(()=>{typeof p.amount<"u"&&t(p.amount.toString())},[p?.amount]),Xo(()=>{if(m==="success"){r();let w=h.find(L=>L.name===p?.from?.blockchain),b=p?.from?.token,E=b&&f(b);(w||!w&&N.current)&&n(w??null),E?a({token:E,meta:{blockchains:h}}):!E&&I.current&&a({token:null}),N.current=p?.from?.blockchain,I.current=p?.from?.token}},[p?.from?.token?.symbol,p?.from?.token?.address,p?.from?.token?.blockchain,p?.from?.blockchain,m]),Xo(()=>{va(s,k)&&a({token:null}),wa(c,y)&&n(null)},[k,y]),Xo(()=>{va(l,T)&&a({token:null}),wa(u,v)&&o(null)},[T,v]),Xo(()=>{if(m==="success"){r();let w=h.find(L=>L.name===p?.to?.blockchain),b=p?.to?.token,E=b&&f(b);(w||!w&&x.current)&&o(w??null),E?e({token:E,meta:{blockchains:h}}):!E&&B.current&&e({token:null}),x.current=p?.to?.blockchain,B.current=p?.to?.token}},[p?.to?.token?.symbol,p?.to?.token?.address,p?.to?.token?.blockchain,p?.to?.blockchain,m]),Xo(()=>{d(p?.affiliate?.ref??null),g(p?.affiliate?.percent??null),C(p?.affiliate?.wallets??null)},[p?.affiliate?.ref,p?.affiliate?.percent,p?.affiliate?.wallets])}i(Vu,"useSyncStoresWithConfig");import{useEffect as ns,useRef as XC}from"react";import{useInRouterContext as YC,useLocation as ZC,useSearchParams as JC}from"react-router-dom";function ts(t,e){let o=t.split("--");return{blockchain:e.name,address:o?.[1]||null,symbol:o[0]}}i(ts,"convertTokenSearchParamToAsset");function os(t){if(t)return`${t.symbol}${t.address?`--${t.address}`:""}`}i(os,"tokenToSearchParam");function is(){let t=ZC(),[e,o]=JC(),{fromBlockchain:n,toBlockchain:r,fromToken:a,toToken:s,inputAmount:l,setFromBlockchain:c,setToBlockchain:u,setFromToken:p,setToToken:m,setInputAmount:h}=U(),f=S().fetchStatus,d=S().blockchains(),g=YC(),{updateIframe:C,updateCampaignMode:k}=S(),y=S().isInCampaignMode(),T=XC(),{findToken:v}=S(),I=i(()=>{let N={};for(let[_,X]of e.entries())_.startsWith("utm_")&&(N[_]=X);let x=e.get("fromAmount"),w=e.get("fromBlockchain"),b=e.get("fromToken"),E=e.get("toBlockchain"),L=e.get("toToken"),M=e.get("autoConnect"),q=e.get("clientUrl"),ee=e.get("liquiditySources"),j=e.get("blockchain");return{fromAmount:x,fromBlockchain:w,fromToken:b,toBlockchain:E,toToken:L,autoConnect:M,clientUrl:q,liquiditySources:ee,utmQueryParams:N,blockchain:j}},"getUrlSearchParams"),B=i(N=>{for(let x in N)N[x]||delete N[x];o(N,{replace:!0})},"updateUrlSearchParams");ns(()=>{let{autoConnect:N,clientUrl:x,utmQueryParams:w,blockchain:b}=I();g&&f==="success"&&B({fromBlockchain:n?.name,fromToken:os(a),toBlockchain:r?.name,toToken:os(s),fromAmount:l,autoConnect:N??void 0,clientUrl:x??void 0,blockchain:b??void 0,liquiditySources:y?T.current:void 0,...w})},[t.pathname,l,n,a,r,s,y]),ns(()=>{if(!g)return;let N=I();if(!T.current&&N.liquiditySources&&(T.current=N.liquiditySources),N.fromAmount&&h(N.fromAmount),f==="success"){let x=d.find(L=>L.name===N.fromBlockchain),w=N.fromToken&&x?v(ts(N.fromToken,x)):void 0,b=d.find(L=>L.name===N.toBlockchain),E=N.toToken&&b?v(ts(N.toToken,b)):void 0;x&&(c(x),w&&p({token:w,meta:{blockchains:d}})),b&&(u(b),E&&m({token:E,meta:{blockchains:d}}))}},[f]),ns(()=>{let{clientUrl:N,liquiditySources:x}=I();C("clientUrl",N||void 0),k("liquiditySources",x?.split(",")??void 0)},[])}i(is,"useSyncUrlAndStore");import{i18n as tn}from"@lingui/core";import{Alert as kT,Button as TT,darkTheme as vT,Divider as Ds,DoneIcon as wT,styled as bT,TextField as xT,Typography as ET}from"@rango-dev/ui";import Qe,{useState as IT}from"react";import{useNavigate as AT,useSearchParams as NT}from"react-router-dom";import{ChevronRightIcon as RC,Divider as Zu,Image as ek,Typography as Ju}from"@rango-dev/ui";import Ct from"react";import{darkTheme as Ku,styled as as}from"@rango-dev/ui";var ju=as("div",{display:"flex",justifyContent:"space-between",width:"100%",height:"$40",padding:"$4 $10",borderRadius:"$sm",cursor:"pointer",alignItems:"center",backgroundColor:"$neutral300",[`.${Ku} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Ku} &`]:{backgroundColor:"$neutral500"}},variants:{disabled:{true:{cursor:"default","&:hover":{borderColor:"$neutral300","& svg":{color:"$neutral700"}}}}}}),Xu=as("div",{display:"flex",flexDirection:"column",width:"100%",".title_typography":{textTransform:"capitalize"}}),Yu=as("div",{display:"flex"});function ss(t){let{onClick:e,value:o,title:n,hasLogo:r,placeholder:a,disabled:s}=t;return Ct.createElement(Xu,null,Ct.createElement(Ju,{size:"large",variant:"label"},n),Ct.createElement(Zu,{size:10}),Ct.createElement(ju,{onClick:s?void 0:e,disabled:s},Ct.createElement(Yu,null,r&&Ct.createElement(Ct.Fragment,null,Ct.createElement(ek,{src:o?.logo,size:16,useAsPlaceholder:!o?.logo,type:"circular"}),Ct.createElement(Zu,{size:4,direction:"horizontal"})),Ct.createElement(Ju,{className:"title_typography",size:"medium",variant:"label"},o?.name||a)),Ct.createElement(RC,{size:12,color:"black"})))}i(ss,"BlockchainSelectorButton");import{i18n as ms}from"@lingui/core";import{Button as rk,Divider as om,MessageBox as ik}from"@rango-dev/ui";import Zt,{useEffect as nm,useState as ds}from"react";import{i18n as Jr}from"@lingui/core";import{Divider as vo,ExternalLinkIcon as ok,Image as nk,Typography as Zo}from"@rango-dev/ui";import Ce from"react";var Ru="https://blog.rango.exchange/understanding-the-risks-of-using-custom-token-contract-addresses-96022308eca4";function em(t,e){if(e.type==="COSMOS")return"";let o=e.info?.addressUrl;return!o||!t?"":o.replace("{wallet}",t)}i(em,"generateExplorerLink");import{Button as tk,darkTheme as Yo,styled as ls}from"@rango-dev/ui";var cs=ls("a",{textDecoration:"none",color:"$colors$neutral700",[`.${Yo} &`]:{color:"$colors$neutral900"},"& svg":{marginLeft:"$4",color:"$colors$neutral700",[`.${Yo} &`]:{color:"$colors$neutral900"}},variants:{hasHover:{true:{"&:hover":{color:"$colors$secondary550",[`.${Yo} &`]:{color:"$colors$secondary500"},"& svg":{color:"$colors$secondary550",[`.${Yo} &`]:{color:"$colors$secondary500"}}}},false:{}}}}),tm=ls("div",{display:"flex",justifyContent:"center",flexDirection:"column",alignItems:"center",textAlign:"center","& ._blockchain-name, & ._coin-source":{color:"$colors$neutral600",[`.${Yo} &`]:{color:"$colors$neutral800"}},"& ._coin-source-name, & ._custom-token-description":{color:"$colors$neutral700",[`.${Yo} &`]:{color:"$colors$neutral900"}}}),ps=ls(tk,{minHeight:"$40"});function us(t){let{open:e,onClose:o,token:n,onExit:r,onSubmitClick:a,blockchain:s}=t,l=em(n.address,s),c=i(()=>window.open(Ru,"_blank"),"onClickLearnMore");return Ce.createElement(J,{open:e,dismissible:!0,onClose:o,onExit:r,container:A()},Ce.createElement(tm,null,Ce.createElement(nk,{src:n.image===""?kr:n.image,size:45,type:"circular"}),Ce.createElement(vo,{size:4}),Ce.createElement(Zo,{variant:"title",size:"medium"},n.symbol),Ce.createElement(Zo,{variant:"body",size:"small",className:"_blockchain-name"},s.displayName),Ce.createElement(vo,{size:4}),Ce.createElement(Zo,{variant:"body",size:"medium"},l?Ce.createElement(cs,{hasHover:!0,href:l,target:"_blank",rel:"nofollow noreferrer"},n.address,Ce.createElement(ok,{size:12,color:"gray"})):Ce.createElement(cs,null,n.address)),Ce.createElement(vo,{size:4}),n.coinSource&&Ce.createElement(Zo,{className:"_coin-source",variant:"body",size:"xsmall"},Jr.t("via")," ",Ce.createElement(Zo,{className:"_coin-source-name",variant:"body",size:"xsmall"},n.coinSource)),Ce.createElement(vo,{size:"32"}),Ce.createElement(Zo,{size:"medium",variant:"body",className:"_custom-token-description"},Jr.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."))),Ce.createElement(vo,{size:40}),Ce.createElement(vo,{size:10}),Ce.createElement(ps,{id:"widget-custom-token-modal-import-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:a},Jr.t("Import Anyway")),Ce.createElement(vo,{size:10}),Ce.createElement(ps,{id:"widget-custom-token-modal-learn-more-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:c},Jr.t("Learn More")))}i(us,"CustomTokenModal");function Wn(t){let{token:e,blockchain:o,error:n,address:r,fetchCustomToken:a,onCloseErrorModal:s,onImport:l,onExitErrorModal:c,onExitImportModal:u}=t,{setCustomToken:p}=S(),[m,h]=ds(!1),[f,d]=ds(!1),[g,C]=ds(!1),k=i(()=>{o&&a?.({blockchain:o.name,tokenAddress:r})},"getCustomToken"),y=i(()=>{n?.type!=="network-error"&&s?.(),h(!1)},"closeErrorModal"),T=i(()=>{C(!0),y()},"handleErrorModalButtonClick"),v=i(()=>{g&&n?.type==="network-error"&&(C(!1),k()),c()},"handleExit"),I=i(()=>{e&&(p(e),l())},"handleSubmit");return nm(()=>{n&&h(!0)},[n]),nm(()=>{o&&e&&d(!0)},[o,e]),Zt.createElement(Zt.Fragment,null,Zt.createElement(J,{open:m,dismissible:!0,onClose:y,onExit:v,container:A()},Zt.createElement(ik,{title:n?.title??"",type:"error",description:n?.message||ms.t("Failed Network, Please retry.")},Zt.createElement(om,{size:40}),Zt.createElement(om,{size:10}),Zt.createElement(rk,{id:`widget-add-custom-token-${n?.type==="network-error"?"retry":"add-another"}-btn`,variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:T},n?.type==="network-error"?ms.t("Retry"):ms.t("Add another custom token")))),o&&e&&Zt.createElement(us,{blockchain:o,token:e,onSubmitClick:I,onClose:()=>d(!1),open:f,onExit:u}))}i(Wn,"ImportCustomToken");import{useManager as fT}from"@rango-dev/queue-manager-react";import{BottomLogo as gT,Divider as Pm,Header as hT}from"@rango-dev/ui";import Ie,{useEffect as ii,useLayoutEffect as yT,useRef as _m,useState as Dm}from"react";import{useRef as ak}from"react";function Ln(){return window.self!==window.top}i(Ln,"isAppLoadedIntoIframe");function fs(){let t=ak(null),{iframe:e}=S(),o=Ln()&&e.clientUrl,n=i(s=>{o&&window.top?.postMessage(s,e.clientUrl)},"send");return{send:n,connectHeightObserver:i(s=>{t.current=new ResizeObserver(l=>{for(let c of l)n({type:"widget_height",data:{height:c.contentRect.height}})}),t.current.observe(s)},"connectHeightObserver"),disconnectHeightObserver:i(()=>{t.current&&(t.current.disconnect(),t.current=null)},"disconnectHeightObserver")}}i(fs,"useIframe");import{useNavigate as sk}from"react-router-dom";function ze(){let t=sk();return()=>t(-1)}i(ze,"useNavigateBack");import{useLayoutEffect as lk,useState as Mn}from"react";var rm=480,im=768,am=1024,sm=1200,ck=i(()=>{let[t,e]=Mn(!1),[o,n]=Mn(!1),[r,a]=Mn(!1),[s,l]=Mn(!1),[c,u]=Mn(!1),p=i(()=>{e(window.innerWidth<=rm),n(window.innerWidth>rm&&window.innerWidth<=im),a(window.innerWidth>im&&window.innerWidth<=am),l(window.innerWidth>am&&window.innerWidth<=sm),u(window.innerWidth>sm)},"handleResize");return lk(()=>(p(),window.addEventListener("resize",p),()=>window.removeEventListener("resize",p)),[]),{isMobile:t,isTablet:o,isNotebook:r,isLargeScreen:s,isExtraLargeScreen:c}},"useScreenDetect"),Jo=ck;import{createTheme as Ts,darkTheme as wk,lightTheme as bk}from"@rango-dev/ui";import{useEffect as xk,useState as Ek}from"react";import{theme as Tk,darkColors as vk}from"@rango-dev/ui";import Cs from"react";function pk(t){return t.startsWith("#")&&(t=t.slice(1)),t.length===3?`#${t.split("").reduce(function(n,r){return n+r+r},"")}`:`#${t}`}i(pk,"expandShortHexColor");function uk(t){return/[0-9]+$/.test(t)}i(uk,"isOverridingColor");function mk(t,e){return t.padStart(e,"0")}i(mk,"pad");function gs(t){let e=Math.min(Math.max(Math.round(t),0),255);return mk(e.toString(16),2)}i(gs,"intToHex");function dk(t){return`#${gs(t.red)}${gs(t.green)}${gs(t.blue)}`}i(dk,"rgbToHex");function fk(t){let e=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),n=parseInt(t.slice(5,7),16);return{red:e,green:o,blue:n}}i(fk,"hexToRGB");function gk(t,e){let o=1-.11*e;return{red:t.red*o,green:t.green*o,blue:t.blue*o}}i(gk,"generateShade");function hk(t,e){let o=.11*e;return{red:t.red+(255-t.red)*o,green:t.green+(255-t.green)*o,blue:t.blue+(255-t.blue)*o}}i(hk,"generateTint");function yk(t){return lm(t,gk)}i(yk,"calculateShades");function Sk(t){return lm(t,hk)}i(Sk,"calculateTints");function lm(t,e){let o=fk(t),n=[];for(let r=1;r<9;r++)n.push(dk(e(o,r)));return n}i(lm,"calculateColors");function hs(t,e,o){let a=Sk(t).reverse().concat(t),s=yk(t),l=a.concat(s),c={},u=l.length;for(let p=0;p<u;p++){let m=100+(o?u-1-p:p)*50;c[`${e}${m}`]=l[p]}return c}i(hs,"createTintsAndShades");function ys(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)&&!uk(r)){let c=pk(a);Object.assign(n,hs(c,r,s))}}return{...n,...e}}i(ys,"expandToGenerateThemeColors");var cm=i(t=>String.fromCharCode(t+(t>25?39:97)),"toAlphabeticChar"),Ck=i(t=>{let e="",o;for(o=Math.abs(t);o>52;o=o/52|0)e=cm(o%52)+e;return cm(o%52)+e},"toAlphabeticName"),kk=i((t,e)=>{let o=e.length;for(;o;)t=t*33^e.charCodeAt(--o);return t},"toPhash"),Ss=i(t=>Ck(kk(5381,JSON.stringify(t))>>>0),"toHash");function ks(t){let e=Tk.colors,o={...e,...vk},n,r;if(t?.light){let s={colors:ys(e,t.light)};n={id:`${Ta}-light-${Ss(s)}`,tokens:s}}if(t?.dark){let s={colors:ys(o,t.dark,{reverseNeutralRange:!0})};r={id:`${Ta}-dark-${Ss(s)}`,tokens:s}}return{light:n,dark:r}}i(ks,"customizedThemeTokens");function pm(t,e){if(t.length<=1)return t.map(({element:n,key:r})=>Cs.cloneElement(n,{key:r}));let o=[];return t.forEach((n,r)=>{let{element:a,key:s}=n;if(o.push(Cs.cloneElement(a,{key:s})),r<t.length-1){let l=`divider-${r}`;o.push(Cs.cloneElement(e,{key:l}))}}),o}i(pm,"joinList");function um(){return window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches}i(um,"doesWindowPreferDarkColorScheme");function Ro(t){let{colors:e,fontFamily:o=Zc,borderRadius:n=Cp,secondaryBorderRadius:r=kp}=t,[a,s]=Ek(um()?"dark":"light"),{theme:l}=S(),{dark:c,light:u}=ks(e),p=Ts({shadows:t.shadows||{},radii:{primary:`${n}px`,secondary:`${r}px`},fonts:{widget:o}}),m=[p.className,bk.className],h=[p.className,wk.className];if(u){let d=Ts(u.id,u.tokens);m.push(d.className)}if(c){let d=Ts(c.id,c.tokens);h.push(d.className)}return xk(()=>{let d=i(g=>{g.matches?s("dark"):s("light")},"switchThemeListener");return um()&&s("dark"),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",d),()=>{window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change",d)}},[]),{activeTheme:i(()=>{let d=m.join(" "),g=h.join(" ");return l==="auto"?a==="dark"?g:d:l==="dark"?g:d},"getActiveTheme"),mode:l==="auto"?a:l}}i(Ro,"useTheme");var gt=i(t=>{let e=[];return t?.getAll().forEach((o,n)=>{let r=o.list.getStorage();r?.swapDetails&&e.push({id:n,swap:r?.swapDetails})}),e.sort((o,n)=>Number(n.swap.creationTime)-Number(o.swap.creationTime))},"getPendingSwaps");import{i18n as mm}from"@lingui/core";import{Alert as Ik,Button as Ak}from"@rango-dev/ui";import dm from"react";function vs(t){return dm.createElement(Ik,{action:dm.createElement(Ak,{id:"widget-active-tab-btn",onClick:t.onActivateTab,variant:"contained",size:"xxsmall",type:"warning"},mm.t("Activate this tab")),type:"warning",variant:"alarm",title:mm.t("Another tab is open and handles transactions.")})}i(vs,"ActivateTabAlert");import{i18n as ws}from"@lingui/core";import{Button as Nk,Divider as Bk,MessageBox as Wk}from"@rango-dev/ui";import Rr from"react";function bs(t){let{open:e,onClose:o,onConfirm:n}=t;return Rr.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},Rr.createElement(Wk,{title:ws.t("Activate current tab"),type:"warning",description:ws.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.")},Rr.createElement(Bk,{size:20}),Rr.createElement(Nk,{id:"widget-modal-confirm-activate-tab-btn",variant:"contained",size:"large",type:"primary",fullWidth:!0,onClick:n},ws.t("Confirm"))))}i(bs,"ActivateTabModal");import{ChevronLeftIcon as Pk}from"@rango-dev/ui";import Tm from"react";import{css as Lk,darkTheme as fm,IconButton as Mk,styled as wo}from"@rango-dev/ui";var At=wo(Mk,{width:"$24",position:"relative",padding:"0",overflow:"unset","&:hover":{backgroundColor:"$secondary100",[`.${fm} &`]:{backgroundColor:"$neutral"}}}),gm=wo("div",{position:"absolute",background:"$secondary500",[`.${fm} &`]:{$$color:"$colors$secondary250"},width:"$6",height:"$6",borderRadius:"$lg",right:"$4",border:"1px solid $surface100"}),Jt=wo("div",{display:"flex",justifyContent:"flex-end",minWidth:"$40",button:{padding:0}}),hm=wo("div",{position:"absolute",width:"14px",height:"14px",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"7px",top:"$0",right:"$0",variants:{isSever:{true:{backgroundColor:"$error500"},false:{backgroundColor:"$secondary500"}}}}),ym=wo("div",{padding:"$2",variants:{isRefetched:{true:{transform:"rotate(360deg)",transition:"transform 1s ease-in-out"}}}}),Sm=wo("div",{position:"absolute",right:"$4",top:"$4",backgroundColor:"$background",borderRadius:"100%"}),Cm=Lk({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center"}),km=wo("div",{borderRadius:"100%",border:"1.5px transparent solid","&:not(:first-child)":{marginLeft:"-$6"},img:{borderRadius:"100%"}});function xs(t){return Tm.createElement(At,{id:"widget-header-back-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},Tm.createElement(Pk,{color:"black",size:16}))}i(xs,"BackButton");import{i18n as _k}from"@lingui/core";import{Button as Dk,Typography as $k}from"@rango-dev/ui";import Es from"react";function Is(t){return Es.createElement(Jt,null,Es.createElement(Dk,{id:"widget-header-cancel-btn",variant:"ghost",onClick:t.onClick,size:"xsmall"},Es.createElement($k,{variant:"label",size:"medium",color:"error500"},_k.t("Cancel"))))}i(Is,"CancelButton");import{i18n as Fk}from"@lingui/core";import{Image as Ok,Tooltip as Uk,WalletIcon as zk}from"@rango-dev/ui";import bo from"react";function As(t){let{list:e}=yt(),o=e.filter(r=>r.state==="connected"),n=o.length?bo.createElement("div",{className:Cm()},o.map(r=>bo.createElement(km,{key:r.title},bo.createElement(Ok,{src:r.image,size:14})))):Fk.t("Connect Wallet");return bo.createElement(Uk,{container:t.container,side:"bottom",content:n},bo.createElement(At,{id:"widget-header-wallet-icon-btn",variant:"ghost",size:"small",onClick:t.onClick},t.isConnected&&bo.createElement(gm,null),bo.createElement(zk,{size:18,color:"black"})))}i(As,"WalletButton");import{i18n as ti}from"@lingui/core";import{NotificationsIcon as nT,Popover as rT,SettingsIcon as iT,Tooltip as oi,TransactionIcon as aT}from"@rango-dev/ui";import Le from"react";import{Notifications as Gk}from"@rango-dev/ui";import Vk from"react";import{useNavigate as Kk}from"react-router-dom";import{create as Qk}from"zustand";import{persist as Hk,subscribeWithSelector as qk}from"zustand/middleware";var Ee=Ho(Qk()(Hk(qk((t,e)=>({isSynced:!1,notifications:[],setNotification:(o,n)=>{let r=n.steps[0],a=n.steps[n.steps.length-1],s={event:o,creationTime:Date.now(),requestId:n.requestId,route:{creationTime:parseInt(n.creationTime),from:{blockchain:r.fromBlockchain,address:r.fromSymbolAddress,symbol:r.fromSymbol},to:{blockchain:a.toBlockchain,address:a.toSymbolAddress,symbol:a.toSymbol}}},l=e().notifications.filter(c=>c.requestId!==n.requestId);t(()=>({notifications:[...l,s]}))},removeNotification:o=>{t(n=>({notifications:n.notifications.filter(r=>r.requestId!==o)}))},getNotifications:()=>{let{isSynced:o,notifications:n}=e();return o?n.sort((r,a)=>r.route.creationTime&&!a.route.creationTime?-1:!r.route.creationTime&&a.route.creationTime?1:!r.route.creationTime&&!a.route.creationTime?a.creationTime-r.creationTime:a.route.creationTime-r.route.creationTime):[]},syncNotifications:o=>{let{isSynced:n,notifications:r}=e();if(!n){let a=[];r.forEach(s=>{o.some(c=>c.swap.requestId===s.requestId)&&a.push(s)}),t({isSynced:!0,notifications:a})}},clearNotifications:()=>t({notifications:[]})})),{name:"notification",skipHydration:!0,partialize:({isSynced:t,...e})=>e,version:1,migrate:(t,e)=>{if(e===0){let o=t.notifications;t.notifications=o.filter(n=>!n.read).map(({read:n,...r})=>r)}return t}})));function Ns(){let t=Kk(),{getNotifications:e,clearNotifications:o}=Ee(),n=e(),r=S().blockchains(),{findToken:a}=S();return Vk.createElement(Gk,{list:n,getBlockchainImage:l=>Qc(l,r),getTokenImage:l=>a(l)?.image,onClickItem:i(l=>{t(`${F.swaps}/${l}`)},"onClickItem"),onClearAll:o})}i(Ns,"NotificationContent");import{useManager as jk}from"@rango-dev/queue-manager-react";import{InProgressIcon as Xk}from"@rango-dev/ui";import vm from"react";var Yk=i(()=>{let{manager:t}=jk();return gt(t).map(({swap:o})=>o).find(o=>o.status==="running")?vm.createElement(Sm,null,vm.createElement(Xk,{color:"info",size:6})):null},"InProgressTransactionBadge"),wm=Yk;import{EventSeverity as Zk}from"@rango-dev/queue-manager-rango-preset";import{Typography as Jk}from"@rango-dev/ui";import bm from"react";function xm(){let{getNotifications:t}=Ee(),e=t(),o=e.length,n=!!e.find(r=>r.event.messageSeverity===Zk.WARNING);return o?bm.createElement(hm,{isSever:n},bm.createElement(Jk,{variant:"body",size:"xsmall",color:"$background"},o)):null}i(xm,"NotificationsBadge");import{RefreshProgressButton as Rk}from"@rango-dev/ui";import Bs,{useEffect as eT,useState as Em}from"react";var tT=1e3,Im=60,oT=100;function ei({onClick:t}){let[e,o]=Em(0),[n,r]=Em(!1),a=i(c=>{document.hidden&&c&&s(c)},"handleVisibilityChange");eT(()=>{let c;return t?c=window.setInterval(()=>{o(u=>u+1),e===Im&&l()},tT):s(c),document.addEventListener("visibilitychange",()=>a(c)),()=>{document.removeEventListener("visibilitychange",()=>a(c)),c&&clearInterval(c)}},[e,t]);let s=i(c=>{c&&clearInterval(c),o(0)},"clearTimeout"),l=i(()=>{t?.(),o(0),r(!0)},"handleRefreshClick");return Bs.createElement(At,{id:"widget-header-refresh-icon-btn",variant:"ghost",size:"small",style:{paddingTop:0,paddingBottom:0},onClick:l,disabled:!t},Bs.createElement(ym,{onTransitionEnd:()=>r(!1),isRefetched:n},Bs.createElement(Rk,{size:22,color:t?"black":"gray",progress:e/Im*oT})))}i(ei,"RefreshButton");function xo(t){let{onClickRefresh:e,onClickHistory:o,onClickSettings:n,hidden:r=[],container:a}=t,{config:{features:s}}=S(),l=Ye("notification",s)||r.includes("notifications");return Le.createElement(Le.Fragment,null,!r.includes("refresh")&&Le.createElement(oi,{container:a||A(),side:"top",content:ti.t("Refresh")},Le.createElement(ei,{onClick:e})),!l&&Le.createElement(rT,{align:"end",alignOffset:-88,sideOffset:15,collisionPadding:{right:20,left:20},container:A(),content:Le.createElement(Ns,null)},Le.createElement("div",null,Le.createElement(oi,{container:A(),side:"top",content:ti.t("Notifications")},Le.createElement(At,{id:"widget-header-notification-icon-btn",size:"small",variant:"ghost"},Le.createElement(nT,{size:18,color:"black"}),Le.createElement(xm,null))))),!r.includes("settings")&&Le.createElement(oi,{container:A(),side:"top",content:ti.t("Settings")},Le.createElement(At,{id:"widget-header-setting-icon-btn",size:"small",variant:"ghost",onClick:n},Le.createElement(iT,{size:18,color:"black"}))),!r.includes("history")&&Le.createElement(oi,{container:A(),side:"top",content:ti.t("History")},Le.createElement(At,{id:"widget-header-history-icon-btn",size:"small",variant:"ghost",onClick:o},Le.createElement(aT,{size:18,color:"black"}),Le.createElement(wm,null))))}i(xo,"HeaderButtons");import{i18n as Ws}from"@lingui/core";import{Divider as Nm,MessageBox as cT,RefreshIcon as pT}from"@rango-dev/ui";import en from"react";import{Button as sT,styled as lT}from"@rango-dev/ui";var Am=lT(sT,{"& span":{display:"flex",justifyContent:"center",alignItems:"center"}});function Ls(t){let{open:e,onClose:o}=t;return en.createElement(J,{open:e,dismissible:!0,onClose:o,container:A()},en.createElement(cT,{title:Ws.t("Something went wrong"),type:"error",description:Ws.t("Something went wrong. Please refresh the app.")},en.createElement(Nm,{size:30}),en.createElement(Am,{variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:()=>location.reload()},en.createElement(pT,{size:20,color:"primary"}),en.createElement(Nm,{size:4,direction:"horizontal"}),Ws.t("Refresh"))))}i(Ls,"RefreshModal");function Ms(t){let e=t.target;if(e){let o=e.scrollTop,n=A();o>1?n.classList.add("rng-scrolled"):n.classList.remove("rng-scrolled")}}i(Ms,"onScrollContentAttachStatusToContainer");import{css as mT,styled as ni}from"@rango-dev/ui";var ri=mT({borderRadius:"$primary",display:"flex",flexDirection:"column",overflow:"hidden",boxShadow:"$mainContainer"}),Bm=ni("div",{position:"relative",width:"100vw",minWidth:"300px",maxWidth:"390px",backgroundColor:"$background",variants:{height:{auto:{height:"auto",maxHeight:700},fixed:{minHeight:425,maxHeight:700,"@sm":{height:700}}},showBanner:{true:{overflow:"visible"}}}}),Wm=ni("div",{position:"relative",overflow:"hidden",flexGrow:1,display:"flex",flexDirection:"column",padding:0,overflowY:"auto"}),Lm=ni("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"}}}),Mm=ni("div",{width:"100%",position:"absolute",bottom:"-$10",transform:"translateY(100%)",overflow:"hidden"});function re(t){let{connectHeightObserver:e,disconnectHeightObserver:o}=fs(),{children:n,header:r,footer:a,height:s="fixed"}=t,{fetchStatus:l,connectedWallets:c,config:{__UNSTABLE_OR_INTERNAL__:u}}=S(),[p,m]=Dm(!1),{config:{features:h,theme:f}}=S(),{watermark:d,setShowCompactTokenSelector:g}=te(),C=d==="FULL",{activeTheme:k}=Ro(f||{}),[y,T]=Dm(!1),v=Ye("connectWalletButton",h),{isActiveTab:I,tabManagerInitiated:B,showActivateTabModal:N,setShowActivateTabModal:x,activateCurrentTab:w}=te(),b=ze(),{manager:E}=fT(),{isTablet:L,isMobile:M}=Jo(),ee=gt(E).map(({swap:R})=>R).some(R=>R.status==="running"),j=i(()=>w(ho.forceClaim,ee),"onActivateTab"),_=i(()=>{r.onWallet?.()},"onConnectWallet"),X=typeof r.hasBackButton>"u"||r.hasBackButton,ie=_m(null),O=_m(null);return ii(()=>{let R=(u?.swapBoxBanner?.routes?.length??0)===0,ge=!!u?.swapBoxBanner?.routes?.some(Te=>location.pathname.endsWith(Te));T(!!u?.swapBoxBanner&&(R||ge))},[u?.swapBoxBanner?.routes?.toString(),location.pathname]),ii(()=>(Ln()&&O.current&&e(O.current),()=>{o()}),[]),ii(()=>(ie.current?.addEventListener("scroll",Ms),()=>{ie.current?.removeEventListener("scroll",Ms)}),[]),ii(()=>{m(l==="failed")},[l]),yT(()=>{let R=s==="auto"||!O.current||Ln(),ge=M||L,Te=i(()=>{R||(ge?O.current.style.height=`${window.innerHeight-O.current.offsetTop}px`:O.current.style.height=`${700}px`,g(parseFloat(O.current.style.height)<640))},"handler");return Te(),window.addEventListener("resize",Te),()=>window.removeEventListener("resize",Te)},[s,M,L]),Ie.createElement(Bm,{height:s,id:Oe.SWAP_BOX_ID,className:`${k()} ${ri()}`,ref:O,showBanner:y},Ie.createElement(hT,{prefix:X?Ie.createElement(xs,{onClick:()=>{b(),r.onBack?.()}}):null,title:r.title,suffix:Ie.createElement(Ie.Fragment,null,r.suffix,r.onWallet&&!v&&Ie.createElement(As,{container:A(),onClick:_,isConnected:!!c?.length}),r.onCancel&&Ie.createElement(Is,{onClick:r.onCancel}))}),Ie.createElement(Wm,{ref:ie},n),Ie.createElement(bs,{open:N,onClose:()=>x(!1),onConfirm:j}),Ie.createElement(Lm,null,Ie.createElement("div",{className:"footer__content"},B&&!I&&Ie.createElement("div",{className:"footer__alert"},Ie.createElement(vs,{onActivateTab:j}),Ie.createElement(Pm,{size:10})),a),Ie.createElement(Pm,{size:12}),Ie.createElement("div",{className:`footer__logo ${C?"logo__show":"logo__hidden"}`},Ie.createElement(gT,null))),y&&Ie.createElement(Mm,null,u?.swapBoxBanner?.element),Ie.createElement(Ls,{open:p,onClose:()=>m(!1)}))}i(re,"Layout");import{styled as ST}from"@rango-dev/ui";var $m="$20 $20 $10 $20",Ps=ST("div",{padding:$m,overflowY:"auto",flexGrow:1});import{styled as CT}from"@rango-dev/ui";var ae=CT("div",{display:"flex",flexDirection:"column",padding:"20px 20px 10px",flexGrow:1,variants:{view:{true:{flexGrow:1,overflow:"hidden"}},compact:{true:{padding:0}}}});import{i18n as Rt}from"@lingui/core";import{useState as _s}from"react";function Fm(){let[t,e]=_s(!1),[o,n]=_s(null),[r,a]=_s(null),{findToken:s}=S(),l=S().customTokens(),c=i(()=>{a(null),e(!1),n(null)},"resetState");function u(m,h){switch(m){case"duplicated":return{type:m,title:Rt.t("Duplicate Token"),message:Rt.t("The address you entered is duplicate, please enter a new address.")};case"token-exist":return{type:m,title:Rt.t("Token Already Exists"),message:Rt.t("There's no need to add this token again because it already exists and is supported by us.")};case"not-found":return{type:m,title:Rt.t("Token Not Found"),message:Rt.t({id:"Sorry, no token was found on {blockchain} chain with the provided address. please make sure you have entered the right token address.",values:{blockchain:h}})};case"network-error":return{type:m,title:Rt.t("Network error"),message:Rt.t("An error occurred while retrieving token data.")}}}return i(u,"produceErrorMessage"),{fetchCustomToken:i(async({blockchain:m,tokenAddress:h})=>{e(!0);try{if(l.some(k=>k.address?.toLowerCase()===h.toLowerCase())){let k=u("duplicated");n(k);return}let d=await ot().getCustomToken({blockchain:m,address:h});if(!d||!d.token||d.error){let k=u("not-found",m);n(k);return}let g=d.token;if(s({blockchain:g.blockchain,address:g.address,symbol:g.symbol})){let k=u("token-exist");n(k);return}return a({...g,warning:!0})}catch(f){if(f.code==="ERR_BAD_REQUEST"){let d=u("not-found",m);n(d);return}n(u("network-error"));return}finally{e(!1)}},"fetchCustomToken"),token:r,loading:t,error:o,resetState:c}}i(Fm,"useFetchCustomToken");var BT=bT("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1,"& ._text-field":{padding:"$4 $10",backgroundColor:"$neutral300",[`.${vT} &`]:{backgroundColor:"$neutral400"},borderRadius:"$sm",height:"$40"}});function Om(){let t=AT(),[e]=NT(),o=ze(),n=S().blockchains(),r=e.get("blockchain")||"",a=uo(r,n),[s,l]=IT(""),{fetchCustomToken:c,token:u,loading:p,error:m,resetState:h}=Fm(),f=!!a&&$o(a,s),d=!a||!s||!f,g=i(()=>{a&&c({blockchain:r,tokenAddress:s})},"getCustomToken");return Qe.createElement(re,{header:{title:tn.t("Add Custom Token")}},Qe.createElement(ae,null,Qe.createElement(BT,null,Qe.createElement("div",null,Qe.createElement(ss,{onClick:()=>t(F.blockchains,{replace:!0}),hasLogo:!!a?.logo,value:a?{name:a.displayName,logo:a.logo}:void 0,title:tn.t("Select chain"),placeholder:tn.t("Select chain")}),Qe.createElement(Ds,{size:"24"}),Qe.createElement(ET,{size:"large",variant:"label"},tn.t("Enter Address")),Qe.createElement(Ds,{size:10}),Qe.createElement(xT,{fullWidth:!0,disabled:!a,variant:"contained",placeholder:tn.t("Enter token address"),size:"large",value:s,suffix:!!s&&f&&Qe.createElement(wT,{color:"success",size:12}),onChange:C=>l(C.target.value)}),!f&&!!s&&Qe.createElement(Qe.Fragment,null,Qe.createElement(Ds,{size:4}),Qe.createElement(kT,{type:"error",variant:"alarm",title:"Invalid Address"}))),Qe.createElement(TT,{id:"widget-add-custom-token-import-btn",disabled:d,type:"primary",variant:"contained",loading:p,size:"large",onClick:g},tn.t("Import"))),Qe.createElement(Wn,{token:u,blockchain:a??void 0,address:s,error:m??void 0,fetchCustomToken:c,onCloseErrorModal:()=>{m?.type!=="network-error"&&l("")},onImport:o,onExitErrorModal:h,onExitImportModal:h})))}i(Om,"AddCustomTokenPage");import{i18n as ml}from"@lingui/core";import{useManager as uw}from"@rango-dev/queue-manager-react";import{Alert as mw,Button as dw,css as fl,Divider as dl,IconButton as Bf,styled as fw,Typography as gw,WalletIcon as hw}from"@rango-dev/ui";import Pe,{useEffect as Li,useLayoutEffect as yw,useRef as Sw,useState as Vn}from"react";import{useNavigate as Cw}from"react-router-dom";import{i18n as Eo}from"@lingui/core";import{Alert as tv,BalanceErrors as ov,Button as dd,ChevronLeftIcon as nv,Divider as qs,MessageBox as rv,Typography as Gs}from"@rango-dev/ui";import ne,{useCallback as iv,useEffect as fd,useMemo as av,useState as rn}from"react";import{useNavigate as sv}from"react-router-dom";import{i18n as Us}from"@lingui/core";import{Alert as _T,ChevronDownIcon as DT,CloseIcon as $T,Divider as Vm,IconButton as Km,PasteIcon as FT,Typography as OT,WalletIcon as UT}from"@rango-dev/ui";import Me,{useEffect as zT,useRef as QT}from"react";import ci,{useRef as MT}from"react";import*as on from"@radix-ui/react-collapsible";import{keyframes as Um,styled as ai}from"@rango-dev/ui";var $s=300,WT=Um({from:{height:0},to:{height:"var(--radix-collapsible-content-height)"}}),LT=Um({from:{height:"var(--radix-collapsible-content-height)"},to:{height:0}}),zm=ai(on.Root,{borderRadius:"$sm",overflow:"hidden",variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary500",outlineStyle:"solid"}}}}),Fs=ai(on.Trigger,{padding:"$0",border:"none",outline:"none",width:"100%",backgroundColor:"transparent",fontFamily:"inherit",cursor:"pointer"}),si=ai(on.Content,{overflow:"hidden",variants:{open:{true:{animation:`${WT} ${$s}ms ease-out`},false:{animation:`${LT} ${$s}ms ease-out`}}}}),li=ai("div",{transition:`all ${$s}ms ease`,display:"flex",alignItems:"center",variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}});function pi(t){let{open:e,hasSelected:o,onOpenChange:n,children:r,onClickTrigger:a,trigger:s,triggerAnchor:l}=t,c=MT(null);return ci.createElement(zm,{ref:c,className:"collapsible_root",selected:o&&e,open:e,onOpenChange:n},l==="top"&&ci.createElement(Fs,{className:"collapsible_trigger",onClick:a},s),ci.createElement(si,{className:"collapsible_content",open:e},r),l==="bottom"&&ci.createElement(Fs,{className:"collapsible_trigger",onClick:a},s))}i(pi,"CustomCollapsible");import{darkTheme as Qm,styled as Os,TextField as PT}from"@rango-dev/ui";var Hm=Os("div",{padding:"$10 $0","& .button__content":{display:"flex",alignItems:"center"},"& .alarms":{paddingTop:"$5"},"& .collapsible_content":{backgroundColor:"$neutral100"},"& .collapsible_root":{backgroundColor:"$neutral100"}}),qm=Os(PT,{backgroundColor:"$neutral100",padding:"$15"}),Gm=Os("div",{width:"100%",borderRadius:"$sm",display:"flex",padding:"$15",justifyContent:"space-between",alignItems:"center",$$color:"$colors$neutral100",[`.${Qm} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomRightRadius:"0",borderBottomLeftRadius:"0","&:focus-visible":{$$background:"$colors$secondary100",[`.${Qm} &`]:{$$background:"$colors$info700"},backgroundColor:"$$background",outline:0}});function jm(t){let{blockchain:e,handleOpenChange:o,open:n}=t,{customDestination:r,setCustomDestination:a}=U(),{config:s}=S(),l=S().blockchains(),c=yr(e.name,l),u=QT(null),p=s?.defaultCustomDestinations?.[e.name],m=navigator?.userAgent.includes("Firefox"),f=n&&!!r&&e&&!$o(e,r),d=i(()=>{a("")},"handleClear"),g=i(async k=>{if(k.preventDefault(),navigator.clipboard!==void 0){let y=await navigator.clipboard.readText();a(y),u?.current?.focus()}},"handlePaste"),C=i(()=>r?Me.createElement(Km,{id:"widget-custom-destination-close-icon-btn",onClick:d,variant:"ghost"},Me.createElement($T,{size:12,color:"gray"})):m?null:Me.createElement(Km,{id:"widget-custom-destination-paste-icon-btn",onClick:g,variant:"ghost"},Me.createElement(FT,{size:16})),"renderSuffix");return zT(()=>{!!p&&r===null&&(a(p),o(!0))},[p]),Me.createElement(Hm,null,Me.createElement(pi,{onOpenChange:o,hasSelected:!0,open:n,triggerAnchor:"top",trigger:Me.createElement(Gm,null,Me.createElement("div",{className:"button__content"},Me.createElement(UT,{size:18,color:"info"}),Me.createElement(Vm,{size:4,direction:"horizontal"}),Me.createElement(OT,{variant:"label",size:"medium",color:n?"$neutral600":void 0},Us.t("Send to a different address"))),Me.createElement(li,{orientation:n?"up":"down"},Me.createElement(DT,{size:10,color:"secondary"}))),onClickTrigger:()=>o(!n)},Me.createElement(qm,{ref:u,style:{padding:0,paddingRight:r?"8px":"5px"},autoFocus:!r,placeholder:Us.t("Enter {blockchainName} address",{blockchainName:c}),value:r||"",suffix:C(),onChange:k=>{let y=k.target.value;a(y)}})),f&&Me.createElement(Me.Fragment,null,Me.createElement(Vm,{size:4}),Me.createElement(_T,{variant:"alarm",type:"error",title:Us.t({values:{destination:r},id:"Address {destination} doesn't match the blockchain address pattern."})})))}i(jm,"CustomDestination");import{css as HT,darkTheme as zs,IconButton as qT,styled as Ot}from"@rango-dev/ui";var Xm=Ot("div",{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center"}),Ym=Ot("div",{display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),GT=Ot("button",{borderRadius:"$xm",padding:"$10",border:"0",display:"flex",justifyContent:"center",$$color:"$colors$neutral100",[`.${zs} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",alignItems:"center",cursor:"pointer",width:110,position:"relative","&:hover":{$$color:"$colors$secondary100",[`.${zs} &`]:{$$color:"$colors$neutral100"},backgroundColor:"$$color"},"&:focus-visible":{$$color:"$colors$secondary100",[`.${zs} &`]:{$$color:"$colors$info700"},backgroundColor:"$$color",outline:0},variants:{selected:{true:{outlineWidth:1,outlineColor:"$secondary",outlineStyle:"solid"}}}}),Zm=Ot(GT,{alignSelf:"stretch",minHeight:"93px"}),Jm=Ot("div",{padding:"$20 $20 $15 $20",display:"flex",justifyContent:"center",alignItems:"center",backgroundColor:"$neutral200",position:"relative",width:"100%"}),Rm=Ot(qT,{position:"absolute",left:"$20"}),ed=Ot("div",{paddingTop:"$20"}),td=HT({display:"flex",justifyContent:"space-evenly",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5",height:"100%"}),od=Ot("div",{display:"flex"}),nd=Ot("div",{overflow:"visible",width:"100%"});import{i18n as cd}from"@lingui/core";import{warn as YT}from"@rango-dev/logging-core";import{Divider as ZT,SelectableWallet as JT,Typography as pd,WalletState as ud}from"@rango-dev/ui";import Je,{useEffect as md,useState as Dn}from"react";import{Image as jT,MessageBox as XT}from"@rango-dev/ui";import _n from"react";import{keyframes as VT,styled as Qs}from"@rango-dev/ui";var rd=Qs("div",{position:"relative"}),KT=VT({"0%":{transform:"rotate(0deg)"},"100%":{transform:"rotate(360deg)"}}),id=Qs("div",{position:"absolute",border:"2px solid rgba(0, 0, 0, 0.1)",borderTop:"2px solid $info500",borderRadius:"$lg",width:"$45",height:"$45",animation:`${KT} 1s linear infinite`,top:0,bottom:0,right:0,left:0}),ad=Qs("div",{"& img":{borderRadius:"50%"}});import{i18n as nn}from"@lingui/core";function sd(t,e){switch(t){case"in-progress":return{type:"loading",title:nn.t({id:"Add {blockchainDisplayName} Chain",values:{blockchainDisplayName:e}}),description:nn.t({id:"Please approve the experimental chain pop-up in your wallet.",values:{blockchainDisplayName:e}})};case"completed":return{type:"success",title:nn.t({id:"{blockchainDisplayName} Chain Added",values:{blockchainDisplayName:e}}),description:nn.t({id:"The {blockchainDisplayName} chain has been successfully added to your wallet.",values:{blockchainDisplayName:e}})};case"rejected":return{type:"error",title:nn.t("Request Rejected"),description:nn.t({id:"You've rejected adding {blockchainDisplayName} chain to your wallet.",values:{blockchainDisplayName:e}})};default:throw new Error(`Showing information about an experimentation chain status needs to be defined first. status: ${t}`)}}i(sd,"generateMessageByStatus");function ld(t){let{status:e,displayName:o,image:n}=t,r=sd(e,o),a=e=="in-progress";return _n.createElement(XT,{type:r.type,title:r.title,description:r.description,icon:a?_n.createElement(rd,null,_n.createElement(ad,null,_n.createElement(jT,{src:n,size:45})),_n.createElement(id,null)):void 0})}i(ld,"ExperimentalChainStatus");var RT=7,ev=3e3;function Hs(t){let{chain:e,quoteChains:o,isSelected:n,selectWallet:r,limit:a,onShowMore:s}=t,l=te.use.isActiveTab(),{blockchains:c,connectedWallets:u}=S(),[p,m]=Dn(),[h,f]=Dn(null),[d,g]=Dn(!1),[C,k]=Dn(null),{suggestAndConnect:y}=ui(),{handleDisconnect:T}=Xt(),{list:v}=yt({chain:e}),[I,B]=Dn(v),N=v.length,x=a&&N-a>0,w=i(async E=>{g(!1),k("in-progress");try{await y(E.walletType,E.chain),k("completed")}catch{k("rejected")}},"addExperimentalChain");md(()=>{B(E=>{let L=v.findIndex(M=>n(M.type,e));return x&&L>1?[v[L]].concat(v.filter((M,q)=>q!==L)):E.map(M=>v.find(q=>q.type===M.type)??M)})},[JSON.stringify(v)]);let b=document.getElementById(Oe.SWAP_BOX_ID);return md(()=>{let E=null;return(C==="completed"||C==="rejected")&&(E=setTimeout(()=>k(null),ev)),()=>{E&&clearTimeout(E)}},[C]),Je.createElement(Je.Fragment,null,I.slice(0,a).map(E=>{let L=dp({connectedWallets:u,walletType:E.type,chain:e}),M=L?Br(L,RT):"",q=Ar(c(),e),ee=!u.find(O=>O.walletType===E.type&&O.chain===e),j=q&&ee&&E.state===ud.CONNECTED,_=j?cd.t({id:"Add {chain} chain",values:{chain:e}}):M,X=i(async()=>{let O=E.state===ud.DISCONNECTED,R=(E.isHub||!!E.needsNamespace)&&!M;O?m(E):R?(await T(E.type),m(E)):j?(f({walletType:E.type,chain:e,address:L??""}),g(!0)):r({walletType:E.type,chain:e,address:L??""})},"onSelectableWalletClick"),ie=h?.chain?yr(h.chain,c()):void 0;return Je.createElement(Je.Fragment,{key:`${E.title}_${ie}`},!!h&&Je.createElement(J,{open:!!h&&d,container:b,onClose:()=>{f(null)}},Je.createElement(Ka,{displayName:ie,onConfirm:()=>{w(h)}})),C&&Je.createElement(J,{open:!!C,onClose:k.bind(null,null),container:b},Je.createElement(ld,{status:C,displayName:ie,image:E.image}),Je.createElement(ZT,{direction:"vertical",size:32})),Je.createElement(JT,{key:E.type,description:_,onClick:X,selected:n(E.type,e),disabled:!l,...E}))}),Je.createElement(Co,{wallet:p,options:{defaultSelectedChains:o||[e]},onClose:()=>{m(void 0)},onConnect:()=>{t.onConnect&&(p?.type?t.onConnect(p.type):YT(new Error("The selected wallet hasn't been detected after the connection process finished. It usually shouldn't happen.")))}}),x&&Je.createElement(Zm,{selected:!1,onClick:s},Je.createElement(pd,{variant:"label",size:"medium"},cd.t("Show more wallets"),Je.createElement(pd,{variant:"label",size:"medium",color:"$primary"},"\xA0+",N-(a??0)))))}i(Hs,"WalletList");var lv=2;function gd(t){let{open:e,onClose:o,onCancel:n,onCheckBalance:r,loading:a}=t,s=sv(),l=S().blockchains(),{selectedQuote:c,setSelectedWallets:u,quoteWalletsConfirmed:p,setQuoteWalletConfirmed:m,customDestination:h,setCustomDestination:f}=U(),{config:d,connectedWallets:g,setWalletsAsSelected:C}=S(),[k,y]=rn(""),[T,v]=rn([]),[I,B]=rn(""),[N,x]=rn(!!h),w=av(()=>go({filter:"all",quote:c}),[c]),b=go({filter:"required",quote:c}),E=l.find(D=>D.name===c?.swaps[c?.swaps.length-1].to.blockchain),L=i(D=>b.includes(D),"isWalletRequiredFor"),M=iv(()=>g.filter(D=>D.selected&&w.includes(D.chain)),[g,w]),[q,ee]=rn(M()),[j,_]=rn([]),X=i((D,G)=>_(K=>K.concat({blockchain:D,walletType:G})),"addNextSelectedWallets"),ie=T.length>0,O=i((D,G)=>!!q.find(K=>K.walletType===D&&K.chain===G&&K.selected&&(L(G)||!L(G)&&!h)),"isSelected"),R=i((D,G,K)=>{let ye=!1;return D.map(pe=>{if(pe.chain===G){let $e=pe.selected;return!ye&&K?(ye=!0,$e=!0):K||($e=!1),{...pe,selected:$e}}return pe})},"updateSelectableWallets"),ge=i(D=>{x(D),D?L(E?.name??"")||ee(G=>R(G,E?.name||"",!1)):(f(""),ee(G=>R(G,E?.name||"",!0)))},"handleCustomDestinationCollapsibleOpenChange"),Te=i(D=>{if(k&&y(""),O(D.walletType,D.chain))return;let K=g.find(ye=>ye.walletType===D.walletType&&ye.chain===D.chain);K&&(n(),D.chain===E?.name&&N&&!L(E.name)&&(x(!1),f(null)),ee(ye=>ye.filter(pe=>pe.chain!==D.chain).concat({...K,selected:!0})))},"onChange"),le=i(()=>{let D=q.filter(G=>G.selected);C(D),u(D),m(!0),o()},"onConfirmBalance"),ct=i(async()=>{v([]),B("");let D=await r?.({selectedWallets:q.filter(K=>K.selected),customDestination:h}),G=D.warnings;G?.balance?.messages&&v(G.balance.messages),D.error&&B(fu(D.error)),!D.error&&!G?.balance?.messages.length?le():v(G?.balance?.messages??[])},"onConfirmWallets");fd(()=>{ee(D=>{let G=[];return D.forEach(K=>{!g.some(pe=>pe.chain===K.chain&&pe.walletType===K.walletType&&pe.address===K.address)||G.push(K)}),G=G.concat(g.filter(K=>!!!G.find(pe=>pe.chain===K.chain)&&K.selected&&w.includes(K.chain))),G})},[g,w]),fd(()=>{let D=[];j.length>0&&(j.forEach(G=>{let K=g.find(ye=>ye.chain===G.blockchain&&ye.walletType===G.walletType);K?Te(K):D.push(G)}),_(D))},[g,j]);let V=document.getElementById(Oe.SWAP_BOX_ID);return ne.createElement(J,{open:e,onClose:()=>{p||s("../",{replace:!0}),o()},dismissible:!k,container:V,...!k&&{styles:{container:{height:"100%"}},footer:ne.createElement(od,null,ne.createElement(dd,{id:"widget-confirm-wallet-modal-confirm-btn",loading:a,disabled:Hu(a,N,h,c,q,E),onClick:ct,variant:"contained",type:"primary",fullWidth:!0,size:"large"},Eo.t("Confirm")))},...k&&{styles:{container:{height:"100%",padding:"$0"}},header:ne.createElement(Jm,null,ne.createElement(Rm,{id:"widget-confirm-wallet-modal-navigate-back-icon-btn",variant:"ghost",onClick:y.bind(null,"")},ne.createElement(nv,{size:16})),ne.createElement(Gs,{variant:"headline",size:"small"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:pt(k,l)}})))},anchor:"center"},ne.createElement(J,{open:ie,onClose:v.bind(null,[]),container:V},ne.createElement(rv,{title:Eo.t("Insufficient account balance"),type:"error",description:ne.createElement(ov,{messages:T??[]})},ne.createElement(dd,{id:"widget-confirm-wallet-modal-proceed-anyway-btn",variant:"outlined",size:"large",type:"primary",fullWidth:!0,onClick:le},Eo.t("Proceed anyway")))),k&&ne.createElement(ed,null,ne.createElement("div",{className:td()},ne.createElement(Hs,{chain:k,quoteChains:w,isSelected:O,selectWallet:Te,onShowMore:()=>y(k),onConnect:D=>{X(k,D)}}))),!k&&ne.createElement(ne.Fragment,null,I&&ne.createElement(ne.Fragment,null,ne.createElement(tv,{variant:"alarm",type:"error",title:Eo.t(I)}),ne.createElement(qs,{size:12})),ne.createElement(nd,null,w.map((D,G)=>{let K=l.find(Xe=>Xe.name===D),ye=`wallet-${G}`,pe=G===w.length-1,$e=pe&&E&&d?.customDestination!==!1;return ne.createElement("div",{key:ye},ne.createElement(Xm,null,ne.createElement(Gs,{variant:"title",size:"xmedium"},Eo.t({id:"Your {blockchainName} wallets",values:{blockchainName:K?.shortName}})),ne.createElement(Gs,{variant:"label",color:"$neutral700",size:"medium"},Eo.t({id:"You need to connect a {blockchainName} wallet.",values:{blockchainName:K?.shortName}}))),ne.createElement(qs,{size:24}),ne.createElement(Ym,null,ne.createElement(Hs,{chain:D,quoteChains:w,isSelected:O,selectWallet:Te,limit:lv,onShowMore:()=>y(K?.name??""),onConnect:Xe=>{X(D,Xe)}})),!pe&&ne.createElement(qs,{size:32}),$e&&ne.createElement(jm,{blockchain:E,open:N,handleOpenChange:ge}))}))))}i(gd,"ConfirmWalletsModal");import{i18n as Iv}from"@lingui/core";import{Alert as Av,Button as Nv,InfoIcon as Bv}from"@rango-dev/ui";import rt from"react";import{Alert as uv,Button as mv,Divider as js,NoRouteIcon as dv,RefreshIcon as fv,Typography as vd}from"@rango-dev/ui";import nt from"react";import{i18n as hd}from"@lingui/core";var cv=24,pv=60;function yd(t,e,o,n){return t?.type===1?{alert:{type:"warning",text:oe().genericServerError,action:{onClick:n,title:hd.t("Retry")}},description:""}:e.length?{alert:{type:"warning",text:oe().liquiditySourcesError.title,action:{onClick:()=>o(!0),title:hd.t("Reset")}},description:oe().liquiditySourcesError.description}:t?.type===0&&t.diagnosisMessage?{alert:{type:"error",text:t.diagnosisMessage,action:null},description:""}:{alert:null,description:oe().noResultError.description}}i(yd,"makeInfo");var Vs=(o=>(o[o.small=cv]="small",o[o.large=pv]="large",o))(Vs||{}),Ks=(o=>(o.small="small",o.large="medium",o))(Ks||{});import{styled as mi}from"@rango-dev/ui";var Sd=mi("div",{display:"flex",flexDirection:"column",alignItems:"center"}),Cd=mi("div",{variants:{size:{small:{},large:{maxWidth:"316px"}}}}),kd=mi("div",{variants:{size:{small:{width:"100%"},large:{}}}}),Td=mi("div",{padding:"$6 $0"});function $n(t){let{fetch:e,error:o,size:n="small"}=t,r=S().getDisabledLiquiditySources(),a=S().toggleAllLiquiditySources,s=S().swappers(),l=yd(o,r,()=>a(s,!0),e);return nt.createElement(Sd,null,nt.createElement(dv,{size:Vs[n],color:"gray"}),nt.createElement(js,{size:4}),nt.createElement(vd,{variant:"title",size:Ks[n]},oe().noResultError.title),n==="large"&&nt.createElement(js,{size:4}),!!l.description&&nt.createElement(Cd,{size:n},nt.createElement(vd,{variant:"body",size:"small",align:"center",color:"neutral700"},l.description)),nt.createElement(js,{size:n==="large"?"24":"4"}),!!l.alert&&nt.createElement(kd,{size:n},nt.createElement(uv,{type:l.alert.type,title:l.alert.text,titleAlign:"left",action:l.alert.action&&nt.createElement(mv,{size:"xsmall",id:"widget-no-result-alert-btn",type:l.alert.type,prefix:nt.createElement(Td,null,nt.createElement(fv,{size:8})),onClick:l.alert.action.onClick},l.alert.action.title),variant:"alarm"})))}i($n,"NoResult");import{i18n as Fn}from"@lingui/core";import{Button as hv,Divider as yv,MessageBox as Sv,Typography as Cv,WarningIcon as kv}from"@rango-dev/ui";import Ut from"react";import{Typography as Ed}from"@rango-dev/ui";import Ys from"react";import{darkTheme as gv,styled as di}from"@rango-dev/ui";var wd=di("div",{width:"100%"}),Xs=di("div",{display:"flex",flexDirection:"column",alignItems:"flex-start",gap:"$5",width:"100%"}),bd=di("div",{display:"flex",padding:"$5 0",justifyContent:"space-between",alignItems:"center",width:"100%","._title":{$$color:"$colors$neutral600",[`.${gv} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),xd=di("div",{padding:"$2",alignSelf:"flex-start",cursor:"pointer"});function Id(t){let{title:e,value:o,valueColor:n}=t;return Ys.createElement(bd,null,Ys.createElement(Ed,{size:"medium",variant:"label",className:"_title"},e),Ys.createElement(Ed,{size:"large",variant:"label",color:n||"foreground"},`${n?"%":"$"}${o}`))}i(Id,"QuoteErrorsModalItem");function Ad(t){let{open:e,onClose:o,onConfirm:n,warning:r,confirmationDisabled:a}=t,s=r.warningLevel==="high"?"error":"warning",l=[{title:Fn.t("Swapping"),value:P(r.inputUsdValue,4,4)},{title:Fn.t("Gas cost"),value:P(r.totalFee,2,2)},{title:Fn.t("Receiving"),value:P(r.outputUsdValue,4,4)},{title:Fn.t("Price impact"),value:P(r.priceImpact,2,2),valueColor:`${s}500`}];return Ut.createElement(J,{footer:Ut.createElement(hv,{id:"widget-high-value-loss-warning-modal-confirm-btn",type:"primary",size:"large",prefix:Ut.createElement(kv,null),fullWidth:!0,disabled:a,onClick:n},oe().highValueLossError.confirmMessage),open:e,onClose:o,container:A()},Ut.createElement(Sv,{type:s,title:oe().highValueLossError.impactTitle,description:oe().highValueLossError.description}),Ut.createElement(Xs,null,Ut.createElement(yv,{size:"4"}),Ut.createElement(Cv,{size:"small",variant:"title"},Fn.t("Details")),Ut.createElement(Xs,null,l.map((c,u)=>Ut.createElement(Id,{key:u,...c})))))}i(Ad,"HighValueLossWarningModal");import{i18n as fi}from"@lingui/core";function Nd(t,e){let o={alertType:"warning",title:"",action:null};if(e)return o.alertType="error",e.type===3&&(o.title=e.recommendation),e.type===4&&(o.title=fi.t({id:"You need to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:e.minRequiredSlippage}}),o.action="change-settings"),o;if(t){switch(t.type){case 0:{Ft(t.priceImpact)==="high"&&(o.alertType="error"),o.action="show-info",o.title=oe().highValueLossError.title;break}case 4:{o.title=fi.t({id:"Output amount changed by {percentageChange}% (${usdValueChange}).",values:{percentageChange:t.percentageChange,usdValueChange:t.usdValueChange}});break}case 1:{o.title=oe().unknownPriceError.title;break}case 2:{o.title=fi.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:t.minRequiredSlippage}}),o.action="change-settings";break}case 3:{o.title=fi.t("Caution, your slippage is high."),o.action="change-settings";break}default:break}return o}return null}i(Nd,"makeAlerts");import{i18n as an}from"@lingui/core";import{Button as Bd,Divider as Wd,MessageBox as Tv,Typography as vv}from"@rango-dev/ui";import Io from"react";import{useNavigate as wv}from"react-router-dom";function Ld(t){let{customSlippage:e,slippage:o}=S(),{open:n,onClose:r,onConfirm:a,warning:s,confirmationDisabled:l}=t,c=wv(),u=e??o;return Io.createElement(J,{anchor:"bottom",open:n,prefix:Io.createElement(Bd,{size:"small",id:"widget-slippage-warning-modal-change-settings-btn",variant:"ghost",onClick:()=>c("../"+F.settings)},Io.createElement(vv,{variant:"label",size:"medium",color:"$neutral900"},an.t("Change settings"))),container:A(),onClose:r},Io.createElement(Tv,{type:"warning",title:s.type===3?an.t("High slippage"):an.t("Low slippage"),description:s.type===3?an.t({id:" Caution, your slippage is high (={userSlippage}). Your trade may be front run.",values:{userSlippage:u}}):an.t({id:"We recommend you to increase slippage to at least {minRequiredSlippage} for this route.",values:{minRequiredSlippage:s.minRequiredSlippage}})},Io.createElement(Wd,{size:18}),Io.createElement(Wd,{size:32}),Io.createElement(Bd,{id:"widget-slippage-warning-modal-confirm-anyway-btn",size:"large",type:"primary",variant:"contained",fullWidth:!0,disabled:l,onClick:a},an.t("Confirm anyway"))))}i(Ld,"SlippageWarningModal");import{Button as bv,MessageBox as xv,WarningIcon as Ev}from"@rango-dev/ui";import gi from"react";function Md(t){let{open:e,onClose:o,onConfirm:n,confirmationDisabled:r}=t;return gi.createElement(J,{footer:gi.createElement(bv,{id:"widget-unknown-price-warning-modal-confirm-btn",type:"primary",size:"large",prefix:gi.createElement(Ev,null),fullWidth:!0,disabled:r,onClick:n},oe().unknownPriceError.confirmMessage),open:e,onClose:o,container:A()},gi.createElement(xv,{type:"warning",title:oe().unknownPriceError.impactTitle,description:oe().unknownPriceError.description}))}i(Md,"UnknownPriceWarningModal");function On(t){let{warning:e,error:o,couldChangeSettings:n,showWarningModal:r,confirmationDisabled:a,refetchQuote:s,onOpenWarningModal:l,onCloseWarningModal:c,onConfirmWarningModal:u,onChangeSettings:p}=t,m={confirmationDisabled:a,open:r,onClose:c,onConfirm:u},h=o?.type===0||o?.type===1,f=Nd(e,o?.type===3||o?.type===4?o:null);return f&&!n&&(f.action=null),rt.createElement(rt.Fragment,null,h&&rt.createElement($n,{error:o,fetch:s}),!!f&&rt.createElement(wd,null,rt.createElement(Av,{title:f.title,type:f.alertType,variant:"alarm",...f.action==="show-info"&&{action:rt.createElement(xd,{onClick:l},rt.createElement(Bv,{size:12,color:"gray"}))},...f.action==="change-settings"&&{action:rt.createElement(Nv,{id:"widget-quote-warning-error-change-settings-btn",size:"xxsmall",type:f.alertType,onClick:p},Iv.t("Change"))}})),e&&rt.createElement(rt.Fragment,null,e.type===0&&rt.createElement(Ad,{...m,warning:e}),(e.type===3||e.type===2)&&rt.createElement(Ld,{...m,warning:e}),e.type===1&&rt.createElement(Md,{...m,warning:e})))}i(On,"QuoteWarningsAndErrors");import iw from"bignumber.js";import Ai from"react";import{i18n as Ao}from"@lingui/core";import{Alert as Vv,Divider as ln,FullExpandedQuote as Kv,InfoIcon as jv,NumericTooltip as lf,QuoteTag as Xv,StepDetails as Yv,TokenAmount as Zv,Typography as cn}from"@rango-dev/ui";import il from"bignumber.js";import z,{useRef as Jv,useState as Rv}from"react";import{styled as Zs}from"@rango-dev/ui";var Js=Zs("div",{width:"100%","& .position-top__skeleton":{paddingTop:"$10"}}),Pd=Zs("div",{paddingBottom:"$15",variants:{dense:{true:{paddingBottom:0}}}}),_d=Zs("div",{width:"100%",display:"flex"});import*as hi from"@radix-ui/react-collapsible";import{Button as Wv,css as Un,darkTheme as Ae,Image as Dd,styled as qe,Typography as Lv}from"@rango-dev/ui";var Mv=300,$d=qe(hi.Root,{display:"flex",flexDirection:"column",alignItems:"start",overflowX:"auto",overflowY:"hidden",width:"100%",borderRadius:"$xm",variants:{selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Ae} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Ae} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Ae} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}]}),Fd=Un({padding:"$10 $15"}),Od=qe(Wv,{backgroundColor:"transparent",border:"1px solid $secondary550",[`.${Ae} &`]:{border:"1px solid $secondary"},transition:"background-color 0.3s ease","&:hover":{backgroundColor:"$secondary550",[`.${Ae} &`]:{backgroundColor:"$secondary"},".allRoutesLabel":{$$color:"$colors$background",[`.${Ae} &`]:{$$color:"$colors$foreground"},color:"$$color",transition:"color 0.3s ease"}}}),Ud=qe("div",{borderRadius:"$xm",display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"space-between",color:"$foreground",boxSizing:"border-box",position:"relative",variants:{selected:{true:{},false:{$$color:"$colors$neutral200",[`.${Ae} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color"}},basic:{true:{borderTopRightRadius:"0",borderTopLeftRadius:"0"}},listItem:{true:{$$color:"$colors$neutral200",[`.${Ae} &`]:{$$color:"$colors$neutral500"},backgroundColor:"$$color","&:hover":{"& .quote_container":{"& button":{backgroundColor:"$neutral500",[`.${Ae} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral500",[`.${Ae} &`]:{backgroundColor:"$neutral200"}},backgroundColor:"$neutral300",[`.${Ae} &`]:{backgroundColor:"$neutral400"}},cursor:"pointer"},false:{}}},compoundVariants:[{listItem:!0,selected:!0,css:{outline:"1px solid $secondary"}},{listItem:!1,selected:!0,css:{$$color:"$colors$secondary100",[`.${Ae} &`]:{$$color:"$colors$secondary550"},backgroundColor:"$$color","&:hover":{backgroundColor:"$$color"}}},{listItem:!0,selected:!1,css:{cursor:"pointer","&:hover":{backgroundColor:"$neutral300",[`.${Ae} &`]:{backgroundColor:"$neutral400"}}}}]}),zd=Un({width:"100%",padding:"$15 $15 $10 $15"}),Qd=Un({display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingBottom:"$10",position:"relative"}),sn=Un({display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",".blockchainImage":{marginLeft:"-$8"}}),Hd=Un({display:"flex",alignItems:"center",".usd-value":{$$color:"$colors$neutral600",[`.${Ae} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),qd=qe(hi.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:{[`& ${Dd}`]:{border:"1px $warning500 solid",borderRadius:"100%"}},false:{[`& ${Dd}`]:{border:"1px transparent solid",borderRadius:"100%"}}},selected:{true:{},false:{$$color:"$colors$neutral400",[`.${Ae} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"}},listItem:{true:{$$color:"$colors$neutral400",[`.${Ae} &`]:{$$color:"$colors$neutral200"},backgroundColor:"$$color"},false:{}}},compoundVariants:[{listItem:!1,selected:!0,css:{$$color:"$colors$secondary200",[`.${Ae} &`]:{$$color:"$colors$secondary800"},backgroundColor:"$$color"}}],".blockchains_section":{display:"none"},"@xs":{".blockchains_section":{display:"block"}}}),Gd=qe("div",{width:"18px",height:"18px",borderRadius:"100%",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",img:{borderRadius:"100%"},variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),Vd=qe(si,{width:"100%",background:"inherit"}),Rs=qe("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$2",transition:`all ${Mv}ms ease`,variants:{orientation:{down:{transform:"rotate(0)"},up:{transform:"rotate(180deg)"}}}}),JO=qe("div",{height:"$12",marginLeft:"$10",marginRight:"$10",borderLeft:"1px solid $foreground"}),Kd=qe("div",{display:"flex",justifyContent:"center",margin:"0 $15",borderTop:"1px solid",$$color:"$colors$neutral300",[`.${Ae} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color"}),jd=qe("div",{width:"$16",height:"$16",justifyContent:"center",alignItems:"center",display:"flex"}),el=qe(Lv,{overflow:"hidden",textOverflow:"ellipsis",letterSpacing:.4}),Xd=qe("div",{display:"flex",flexWrap:"wrap"}),tl=qe("div",{width:"18px",height:"18px",borderRadius:"100%",backgroundColor:"$background",cursor:"default",display:"flex",justifyContent:"center",alignItems:"center",border:"1.5px transparent solid",variants:{state:{error:{borderColor:"$error500"},warning:{borderColor:"$warning500"}}}}),Yd=qe("div",{display:"flex"}),yi=qe("div",{width:"100%",borderTopWidth:"1px",borderTopStyle:"solid",borderTopColor:"$neutral",margin:"$5 0",[`.${Ae} &`]:{borderTopColor:"$neutral800"}});import{i18n as Nt}from"@lingui/core";import{ChevronDownIcon as _v,CloseIcon as Dv,Divider as ki,IconButton as $v,NumericTooltip as Fv,QuoteCost as Ov,Typography as kt}from"@rango-dev/ui";import Y,{useState as ef}from"react";import{css as Pv,styled as Si}from"@rango-dev/ui";var Ci=Si("div",{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"$5 0","&.total_payable_fee":{padding:"$12 0"}}),ol=Si("div",{width:"100%",borderTop:"1px solid $neutral300",margin:"$10 0"}),Zd=Si("div",{padding:"$20 0",display:"flex",flexDirection:"column","& .collapsible_trigger":{display:"flex",alignItems:"center"}}),Jd=Si("div",{padding:"$20 $20 $10",position:"relative","._icon-button":{position:"absolute",zIndex:10,top:"$16",right:"$16"}}),Rd=Pv({display:"flex",flexDirection:"row",alignItems:"center",padding:"$5","&:hover":{"& ._typography, & svg":{color:"$secondary"}}});var Uv=i(t=>t.fee.isZero()?null:Y.createElement(Ci,null,Y.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},t.label),Y.createElement(kt,{variant:"label",size:"medium"},"$",P(t.fee,4,4))),"NonPayableFee");function nl(t){let[e,o]=ef(!1),[n,r]=ef(!1),{steps:a,quote:s,fee:l,time:c,feeWarning:u,timeWarning:p,showModalFee:m,fullExpandedMode:h=!1}=t,f=s?.swaps??[],d=h?fo():A(),g=_u(f);return Y.createElement(Y.Fragment,null,Y.createElement(Ov,{onClickFee:m?C=>{C.stopPropagation(),o(!e)}:void 0,fee:l,feeWarning:u,timeWarning:p,time:c,steps:a,tooltipGas:m?Nt.t("View more info"):void 0,tooltipContainer:d}),Y.createElement(J,{container:d,open:e,anchor:h?"center":"bottom",styles:{container:{maxWidth:h?"484px":"unset"}},header:Y.createElement(Jd,{style:{textAlign:h?"left":"center"}},Y.createElement(kt,{variant:"title",size:"medium"},Nt.t("Gas & Fee Explanation")),Y.createElement($v,{id:"widget-quote-cost-details-modal-close-icon-btn",onClick:()=>o(!1),variant:"ghost"},Y.createElement(Dv,{color:"gray",size:14}))),onClose:()=>{o(!1)}},Y.createElement(Zd,null,Y.createElement(kt,{variant:"title",size:"small"},Nt.t("Details")),Y.createElement(ki,{size:10}),Object.entries(g.payable).flatMap(([C,k])=>k.map((y,T)=>{let v=`payable-fee-${T}`,I=es(y);return Y.createElement(Ci,{key:v},Y.createElement(kt,{variant:"label",size:"medium",color:"neutral600"},Xa(C,Nt.t)),Y.createElement(Fv,{content:y.amount,container:d},Y.createElement(kt,{variant:"label",size:"medium"},P(y.amount,2,2)," ",y.asset.symbol," ($",P(I,4,4),")")))})),Y.createElement(Ci,{className:"total_payable_fee"},Y.createElement(kt,{variant:"label",size:"medium"},Nt.t("Total Payable Fee")),Y.createElement(kt,{variant:"label",size:"medium"},"$",P(l,4,4))),Y.createElement(ol,null),Object.keys(g.nonePayable).length&&Y.createElement(pi,{triggerAnchor:"bottom",onClickTrigger:()=>r(C=>!C),trigger:Y.createElement("div",{className:Rd()},Y.createElement(kt,{size:"small",variant:"body",color:"neutral700"},n?Nt.t("Hide non-payable fees"):Nt.t("Show non-payable fees")),Y.createElement(ki,{size:4,direction:"horizontal"}),Y.createElement(li,{orientation:n?"up":"down"},Y.createElement(_v,{size:12,color:"gray"}))),open:n},Y.createElement(kt,{size:"small",variant:"title"},Nt.t("Description")),Y.createElement(ki,{size:4}),Y.createElement(kt,{size:"small",variant:"body",color:"neutral700"},Nt.t(`The following fees are considered in the transaction output and
|
|
2
|
+
you won\u2019t need to pay extra gas for them.`)),Y.createElement(ki,{size:10}),Object.entries(g.nonePayable).map(([C,k],y)=>{let T=Pu(k),v=Xa(C,Nt.t),I=`non-payable-fee-${y}`;return Y.createElement(Uv,{key:I,fee:T,label:v})}),Y.createElement(ol,null)))))}i(nl,"QuoteCostDetails");import{i18n as nf}from"@lingui/core";import{TokenAmount as rf}from"@rango-dev/ui";import Ti from"react";import{css as zv,styled as Qv}from"@rango-dev/ui";var tf=Qv("div",{position:"relative",display:"flex",flexDirection:"column",width:"100%"}),of=zv({height:"14px",marginLeft:"14px",position:"absolute",borderLeft:"1px solid $foreground",top:"42%"});function zn(t){let{from:e,to:o,percentageChange:n,warningLevel:r}=t;return Ti.createElement(tf,null,Ti.createElement(rf,{direction:"horizontal",label:nf.t("Swap input"),type:"input",tooltipContainer:A(),price:{value:e.price.value,usdValue:e.price.usdValue,realValue:e.price.realValue,realUsdValue:e.price.realUsdValue},token:{displayName:e.token.displayName,image:e.token.image},chain:{image:e.chain.image}}),Ti.createElement("div",{className:of()}),Ti.createElement(rf,{direction:"horizontal",tooltipContainer:A(),label:nf.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(zn,"QuoteSummary");import{i18n as af}from"@lingui/core";import{ChevronDownIcon as Hv,ChevronRightIcon as qv,Divider as rl,Image as Gv,Tooltip as xi,Typography as vi}from"@rango-dev/ui";import Q from"react";var wi=4,bi=6,Qn=i(t=>{let{content:e,src:o,className:n,open:r,state:a,container:s}=t,l=s||A();return Q.createElement(xi,{container:l,side:"bottom",sideOffset:4,open:r,content:e},Q.createElement(Gd,{className:n,state:a},Q.createElement(Gv,{src:o,size:16})))},"ImageComponent");function sf(t){let{quoteRef:e,selected:o,setExpanded:n,steps:r,expanded:a,type:s,container:l}=t,c=l||A(),u=r.length,p=bu(r),{isTablet:m,isMobile:h}=Jo();return Q.createElement(qd,{listItem:s==="list-item",ref:f=>e.current=f,selected:o,onClick:f=>{f.stopPropagation(),n(d=>!d)}},Q.createElement("div",{className:sn()},Q.createElement(vi,{variant:"body",size:"xsmall"},af.t("Via:")),Q.createElement(rl,{direction:"horizontal",size:4}),r.map((f,d)=>{let g=`item-${d}`,C=Q.createElement(Rs,null,Q.createElement(qv,{size:12,color:"black"}));return h||m?Q.createElement(Q.Fragment,{key:g},Q.createElement(Qn,{content:f.swapper.displayName,src:f.swapper.image??"",state:f.state,container:l}),d!==u-1&&Q.createElement(Q.Fragment,null,C)):Q.createElement(Q.Fragment,{key:g},u<=wi||u>wi&&d<wi-1?Q.createElement(Q.Fragment,null,Q.createElement(Qn,{content:f.swapper.displayName,src:f.swapper.image??"",state:f.state,container:l}),d!==u-1&&Q.createElement(Q.Fragment,null,C)):d===wi-1&&Q.createElement(xi,{container:c,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:sn()},C,r.map((k,y)=>{let T=`image-${y}`;return y>=d&&Q.createElement(Q.Fragment,{key:T},Q.createElement(Qn,{content:k.swapper.displayName,src:k.swapper.image??"",state:k.state,open:!1}),y!==u-1&&Q.createElement(Q.Fragment,null,C))}))},Q.createElement(tl,{state:r.find((k,y)=>y>=d&&(k.state==="error"||k.state==="warning"))?.state},Q.createElement(vi,{size:"xsmall",variant:"body"},"+",u-d))))})),Q.createElement("div",{className:sn()},Q.createElement("div",{className:"blockchains_section"},Q.createElement("div",{className:sn()},Q.createElement(vi,{variant:"body",size:"xsmall"},af.t("Chains:")),Q.createElement(rl,{direction:"horizontal",size:4}),p.map((f,d)=>Q.createElement(Q.Fragment,{key:f.displayName},p.length<=bi||p.length>bi&&d<bi-1?Q.createElement(xi,{container:c,side:"bottom",content:f.displayName,sideOffset:4},Q.createElement(Qn,{content:"",src:f.image??"",open:!1,className:d!==0?"blockchainImage":""})):d===bi-1&&Q.createElement(xi,{container:c,side:"bottom",align:"end",sideOffset:4,content:Q.createElement("div",{className:sn()},p.map((g,C)=>C>=d&&Q.createElement(Qn,{key:g.displayName,content:"",src:g.image??"",open:!1,className:C>d?"blockchainImage":"",container:l})))},Q.createElement(tl,{className:"blockchainImage"},Q.createElement(vi,{size:"xsmall",variant:"body"},"+",p.length-d))))),Q.createElement(rl,{direction:"horizontal",size:32}))),Q.createElement(Rs,{orientation:a?"up":"down"},Q.createElement(Hv,{size:12,color:"black"}))))}i(sf,"QuoteTrigger");function al(t){let{quote:e,input:o,output:n,error:r,warning:a,type:s,selected:l=!1,tagHidden:c=!0,showModalFee:u=!0,onClickAllRoutes:p,fullExpandedMode:m=!1,container:h}=t,f=S().blockchains(),{findToken:d}=S(),g=S().swappers(),{customSlippage:C,slippage:k}=S(),y=C||k,[T,v]=Rv(t.expanded),I=Jv(null),B=P(o.value,6,6),N=P(n.value,6,6),x=n.usdValue?P(n.usdValue,4,4):"",w=$t(o.usdValue,n.usdValue??null),b=P(w,2,2),E=Ft(w??0),L=i((le,ct)=>le.map((V,D)=>{let G,K=r?.type===3&&r.swap.swapperId===V.swapperId,ye=r?.type===4&&r.recommendedSlippages?.has(D),pe=a?.type===2&&a.recommendedSlippages?.has(D),$e=K||ye,Xe=pe;$e?G="error":Xe&&(G="warning");let ve=$e?Ao.t("Slippage Error"):Ao.t("Slippage Warning");return K&&(ve=Ao.t("Bridge Limit Error")),{swapper:{displayName:fn(V.swapperId,g)??"",image:V.swapperLogo},from:{token:{displayName:V.from.symbol,image:V.from.logo},chain:{displayName:pt(V.from.blockchain,f)??"",image:V.from.blockchainLogo},price:{value:D===0&&!ct?P(o.value,6,6):P(V.fromAmount,6,6),usdValue:P((V.from.usdPrice??0)*parseFloat(V.fromAmount),4,4),realValue:D===0?o.value:V.fromAmount,realUsdValue:new il(V.from.usdPrice??0).multipliedBy(V.fromAmount).toString()}},to:{token:{displayName:V.to.symbol,image:V.to.logo},chain:{displayName:pt(V.to.blockchain,f)||"",image:V.to.blockchainLogo},price:{value:P(V.toAmount,6,6),usdValue:P((V.to.usdPrice??0)*parseFloat(V.toAmount),4,4),realValue:V.toAmount,realUsdValue:new il(V.to.usdPrice??0).multipliedBy(V.toAmount).toString()}},state:G,alerts:$e||Xe?z.createElement(Pd,{dense:m},z.createElement(Vv,{variant:"alarm",type:$e?"error":"warning",title:ve,footer:z.createElement(_d,null,K&&z.createElement("div",null,z.createElement(cn,{size:"xsmall",variant:"body",color:"neutral900"},r.fromAmountRangeError),z.createElement(ln,{direction:"vertical",size:2}),z.createElement(cn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {amount} {symbol}",values:{amount:P(V.fromAmount,6,6),symbol:V?.from.symbol}}))),(ye||pe)&&!K&&z.createElement("div",null,z.createElement(cn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Minimum required slippage: {minRequiredSlippage}",values:{...r?.type===4&&{minRequiredSlippage:r.recommendedSlippages?.get(D)},...a?.type===2&&{minRequiredSlippage:a.recommendedSlippages?.get(D)}}})),z.createElement(ln,{direction:"vertical",size:2}),z.createElement(cn,{size:"xsmall",variant:"body",color:"neutral900"},Ao.t({id:"Yours: {userSlippage}",values:{userSlippage:y}}))))})):void 0,time:hn(V.estimatedTimeInSeconds),fee:P(Ra(V,d),2,2),internalSwaps:V.internalSwaps?L(V.internalSwaps):void 0}}),"getQuoteSteps"),M=L(e?.swaps??[]),q=M.length,ee=h||A(),j=Eu(t.quote.tags||[]),_=!!p,X=xr(e?.swaps),ie=hn(X),O=Kr(e?.swaps??[],d),R=P(O,2,2),ge=O.gte(new il(hu)),Te=X/Su>=yu;return m?z.createElement(Kv,{selected:l,fee:R,time:ie,tooltipContainer:fo(),steps:M,tags:j,quoteCost:z.createElement(nl,{quote:e,fullExpandedMode:!0,time:ie,fee:R,feeWarning:ge,timeWarning:Te,showModalFee:u,steps:q}),percentageChange:b,warningLevel:E,outputPrice:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue}}):z.createElement(Ud,{selected:l,listItem:s==="list-item",basic:s==="basic"},z.createElement("div",{className:zd()},!c&&j.length?z.createElement(z.Fragment,null,z.createElement(Yd,null,j.map((le,ct)=>{let V=`${le.value}_${ct}`;return z.createElement(z.Fragment,{key:V},z.createElement(Xv,{label:le.label,value:le.value}),z.createElement(ln,{size:4,direction:"horizontal"}))})),z.createElement(yi,null),!_&&z.createElement(ln,{size:4})):null,z.createElement("div",{id:"portal-root",className:Qd()},z.createElement(nl,{quote:e,time:ie,fee:R,feeWarning:ge,timeWarning:Te,showModalFee:u,steps:q}),_&&z.createElement(Od,{onClick:le=>{le.stopPropagation(),p()},size:"xxsmall",type:"secondary",variant:"default",css:{paddingLeft:"$10",paddingRight:"$10",paddingTop:"$5",paddingBottom:"$5"}},z.createElement(cn,{color:"secondary",variant:"body",size:"xsmall",className:"allRoutesLabel"},Ao.t("See All Routes")))),s==="basic"&&z.createElement("div",{className:Hd()},z.createElement(jd,null,z.createElement(jv,{size:12,color:"gray"})),z.createElement(Xd,null,z.createElement(el,{size:"small",variant:"body"},`${B} ${M[0].from.token.displayName} = `),z.createElement(lf,{content:n.value,container:ee,open:n.value?void 0:!1},z.createElement(el,{size:"small",variant:"body"},"\xA0",`${N} ${M[M.length-1].to.token.displayName}`))),z.createElement(lf,{content:n.usdValue,container:ee},z.createElement(ln,{size:2,direction:"horizontal"}),z.createElement(cn,{color:"$neutral600",size:"xsmall",variant:"body"},`($${x})`))),s==="list-item"&&z.createElement(Zv,{tooltipContainer:ee,type:"output",direction:"vertical",price:{value:N,usdValue:x,realValue:n.value,realUsdValue:n.usdValue},token:{displayName:M[q-1].to.token.displayName,image:M[q-1].to.token.image},chain:{image:M[q-1].to.chain.image},percentageChange:b,warningLevel:E}),s==="swap-preview"&&z.createElement(z.Fragment,null,z.createElement(zn,{from:M[0].from,to:M[q-1].to,percentageChange:b,warningLevel:E}),z.createElement(ln,{size:4}))),z.createElement($d,{selected:l,listItem:s==="list-item",open:T,className:"quote_container",onOpenChange:v},z.createElement(sf,{type:s,quoteRef:I,selected:l,setExpanded:v,container:ee,expanded:T,steps:M}),z.createElement(Vd,{open:T},z.createElement(Kd,null),z.createElement("div",{className:Fd()},M.map((le,ct)=>{let V=`item-${ct}`;return z.createElement(Yv,{type:"quote-details",key:V,tooltipContainer:ee,step:le,hasSeparator:ct!==M.length-1,state:le.state})})))))}i(al,"Quote");import{Divider as nw,Skeleton as rw}from"@rango-dev/ui";import Qt from"react";import{darkTheme as ew,styled as Ei}from"@rango-dev/ui";var cf=Ei("div",{$$color:"$colors$neutral100",[`.${ew} &`]:{$$color:"$colors$neutral300"},backgroundColor:"$$color",borderBottomLeftRadius:"$xm",borderBottomRightRadius:"$xm",padding:"$15",variants:{rounded:{true:{borderRadius:"$xm"}},expanded:{true:{paddingBottom:"3px"},false:{paddingBottom:"$12"}}}}),pf=Ei("div",{paddingTop:"$2"}),uf=Ei("div",{paddingLeft:"$8"}),mf=Ei("div",{borderLeft:"1px dashed $foreground",minHeight:" 0",margin:"0px 11.5px",alignSelf:"stretch",variants:{hideSeparator:{true:{minHeight:"unset",height:"0"}}}});import{ChainToken as vf,Divider as Tt,Skeleton as it}from"@rango-dev/ui";import H from"react";import{css as tw,styled as zt}from"@rango-dev/ui";var sl=zt("div",{display:"flex"}),df=zt("div",{padding:"$10 $0 $20"}),ff=zt("div",{padding:"14px $0 $20 $0",display:"flex",flexDirection:"column"}),gf=zt("div",{display:"flex",justifyContent:"start",alignItems:"center"}),hf=zt("div",{display:"flex",justifyContent:"space-between",alignItems:"end"}),yf=zt("div",{height:"$24",marginLeft:"13px",borderLeft:"1px solid $neutral700"}),Sf=zt("div",{width:"65%",display:"flex",justifyContent:"start"}),Cf=zt("div",{display:"flex",flexDirection:"column",alignItems:"start",flexGrow:1,maxWidth:"148px"}),kf=zt("div",{padding:"$15 $0 $15 $0"}),Tf=tw({display:"flex",justifyContent:"space-between",alignItems:"center"});function Hn(t){let{type:e,tagHidden:o=!0}=t,n=H.createElement(hf,null,H.createElement(Sf,null,H.createElement(vf,{loading:!0,size:"medium"}),H.createElement(Tt,{size:8,direction:"horizontal"}),H.createElement(Cf,null,H.createElement(it,{height:10,width:60,variant:"rounded"}),H.createElement(Tt,{size:4}),H.createElement(it,{height:15,variant:"rounded"}))),H.createElement(it,{height:12,width:64,variant:"rounded"})),r=e==="basic"&&!o;return H.createElement("div",null,!o&&H.createElement(H.Fragment,null,H.createElement(sl,null,H.createElement(it,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:65,height:20,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:65,height:20,variant:"rounded"})),H.createElement(yi,null),!r&&H.createElement(Tt,{size:4})),H.createElement("div",{className:Tf()},H.createElement(sl,null,H.createElement(it,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:60,height:10,variant:"rounded"}),H.createElement(Tt,{size:4,direction:"horizontal"}),H.createElement(it,{width:60,height:10,variant:"rounded"})),r&&H.createElement(it,{width:85,height:24,variant:"rounded"})),e==="basic"&&H.createElement(df,null,H.createElement(it,{height:15,width:148,variant:"rounded"})),e==="list-item"&&H.createElement(ff,null,H.createElement(gf,null,H.createElement(vf,{loading:!0,size:"medium"}),H.createElement(Tt,{direction:"horizontal",size:4}),H.createElement(it,{height:15,width:150,variant:"rounded"})),H.createElement(Tt,{size:10}),H.createElement(it,{height:10,width:184,variant:"rounded"})),e==="swap-preview"&&H.createElement(H.Fragment,null,H.createElement(Tt,{size:4}),H.createElement(kf,null,n,H.createElement(yf,null),n),H.createElement(Tt,{size:12})))}i(Hn,"QuoteSummarySkeleton");import{ChainToken as If,Divider as cl,NextIcon as ow,Skeleton as Ii}from"@rango-dev/ui";import Ne from"react";import{styled as qn}from"@rango-dev/ui";var wf=qn("div",{display:"flex",alignItems:"start"}),bf=qn("div",{flexGrow:1,paddingTop:"$5",paddingBottom:"$10",display:"flex",alignItems:"center",variants:{extraSpace:{true:{paddingBottom:"$40"}}}}),ll=qn("div",{display:"flex",alignItems:"center",flexGrow:1}),xf=qn("div",{margin:"$0 $2",padding:"$4",display:"flex",justifyContent:"center",alignItems:"center"}),Ef=qn("div",{display:"flex",alignItems:"center"});function Bt(t){let{separator:e=!0}=t;return Ne.createElement(Ne.Fragment,null,Ne.createElement(Ef,null,Ne.createElement(Ii,{height:22,width:22,variant:"circular"}),Ne.createElement(cl,{direction:"horizontal",size:8}),Ne.createElement(Ii,{height:15,width:148,variant:"rounded"})),Ne.createElement(wf,null,Ne.createElement(mf,{hideSeparator:!e}),Ne.createElement(bf,{extraSpace:e},Ne.createElement(ll,null,Ne.createElement(If,{size:"small",loading:!0}),Ne.createElement(cl,{direction:"horizontal",size:8}),Ne.createElement(Ii,{height:12,variant:"rounded"})),Ne.createElement(xf,null,Ne.createElement(ow,{color:"gray",size:16})),Ne.createElement(ll,null,Ne.createElement(If,{size:"small",loading:!0}),Ne.createElement(cl,{direction:"horizontal",size:8}),Ne.createElement(Ii,{height:12,variant:"rounded"})))))}i(Bt,"StepSkeleton");function Gn(t){let{type:e,expanded:o,tagHidden:n=!1}=t;return Qt.createElement(cf,{expanded:o,rounded:e!=="basic"},Qt.createElement(Hn,{type:e,tagHidden:n}),Qt.createElement(pf,null,Qt.createElement(rw,{height:15,variant:"rounded"})),o&&Qt.createElement(uf,null,Qt.createElement(nw,{size:24}),Qt.createElement(Bt,null),Qt.createElement(Bt,null),Qt.createElement(Bt,{separator:!1})))}i(Gn,"QuoteSkeleton");function No(t){let{quote:e,type:o,loading:n,error:r,warning:a,expanded:s=!1,tagHidden:l,onClick:c,showModalFee:u,selected:p,onClickAllRoutes:m,fullExpandedMode:h=!1,container:f}=t,{inputAmount:d,inputUsdValue:g}=U(),C=e?.outputAmount?new iw(e?.outputAmount):null,k=e?ft(e):null,T=!(r&&(r.type===0||r.type===1))&&e&&!n;return n?Ai.createElement(Js,null,Ai.createElement(Gn,{tagHidden:l,type:o,expanded:s})):T?Ai.createElement(Js,{onClick:()=>c?.(e)},Ai.createElement(al,{quote:e,error:r,container:f,showModalFee:u,warning:a,tagHidden:l,selected:p,type:o,expanded:s,onClickAllRoutes:m,fullExpandedMode:h,input:{value:d,usdValue:g?.toString()??""},output:{value:C?.toString()??"",usdValue:k?.toString()??""}})):null}i(No,"QuoteInfo");import{calculatePendingSwap as cw}from"@rango-dev/queue-manager-rango-preset";import{useEffect as pw}from"react";import{useRef as aw,useState as sw}from"react";var lw=2e3;function Ni({request:t}){let[e,o]=sw(!1),n=aw(null),r=i(()=>n.current?.abort(),"cancelFetch"),a=i(async l=>(await new Promise(c=>setTimeout(c,lw)),await s(l,!1)),"retryFetch"),s=i(async(l,c=!1)=>{r(),n.current=new AbortController,o(!0);try{let u=await t(l,{signal:n.current.signal});return n.current=null,u}catch(u){if(c)return await a(l);throw u}finally{o(!1)}},"fetch");return{fetch:s,loading:e,cancelFetch:r}}i(Ni,"useFetch");function Af(){let{fetch:t,loading:e,cancelFetch:o}=Ni({request:async(n,r)=>await ot().confirmRoute(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Af,"useFetchConfirmQuote");function Bi(t){if(!t.swaps)throw new Error(oe().noResultError.title,{cause:{type:0,diagnosisMessage:t.diagnosisMessages?.[0]}});let e=pl(t.swaps);if(e)throw new Error(e.message,{cause:e.options})}i(Bi,"throwErrorIfResponseIsNotValid");function pl(t){if(Wu(t)){let{swap:n,recommendation:r,fromAmountRangeError:a}=Lu(t);return{message:"bridge limit error",options:{type:3,swap:n,recommendation:r,fromAmountRangeError:a}}}let o=Du(t);if(o){let n=jr(t);return{message:"",options:{type:4,recommendedSlippages:o,minRequiredSlippage:n}}}return null}i(pl,"getQuoteError");function Nf(t){let{currentQuote:e,previousQuote:o,meta:n,selectedWallets:r,userSlippage:a,findToken:s}=t,l={quote:null,balance:null},c=jo({previousQuote:o,currentQuote:e,findToken:s,userSlippage:a});c&&(l.quote=c);let u=Ou(e,r,n.blockchains);return u.length===0||(l.balance={messages:u}),l}i(Nf,"generateWarnings");function Wi(t){return t?.code==="ERR_CANCELED"?{swap:null,error:{type:2},warnings:null}:t.cause?{swap:null,error:t.cause,warnings:null}:t?.code==="ERR_BAD_REQUEST"?{swap:null,error:{type:0,diagnosisMessage:t.response.data.error},warnings:null}:{swap:null,error:{type:1},warnings:null}}i(Wi,"handleQuoteErrors");function ul(){let{fromToken:t,toToken:e,inputAmount:o,inputUsdValue:n,setSelectedQuote:r,selectedQuote:a,customDestination:s,resetAlerts:l}=U(),{slippage:c,customSlippage:u}=S(),p=S().getDisabledLiquiditySources(),m=S().blockchains(),h=S().tokens(),{findToken:f}=S(),d=u||c,{fetch:g,cancelFetch:C,loading:k}=Af();return pw(()=>C,[]),{loading:k,fetch:i(async T=>{let v=T.selectedWallets,I=T?.customDestination??s;if(!t||!e||!o)return{quote:null,swap:null,error:null,warnings:null};let B=v.reduce((x,w)=>(x[w.chain]=w.address,x),{}),N={requestId:a?.requestId||"",selectedWallets:B,destination:I||void 0};try{return await g(N,!0).then(x=>{let{result:w}=x;if(!w)throw new Error("Error fetching updated route");Bi({diagnosisMessages:w.diagnosisMessages,requestId:w.requestId,swaps:w.result?.swaps});let b={outputAmount:w.result?.outputAmount,requestId:w.requestId,resultType:w.result?.resultType,swaps:w.result?.swaps||[],validationStatus:w.validationStatus,requestAmount:w.requestAmount};r(b);let E={slippage:d.toString(),disabledSwappersGroups:p},L=Nf({previousQuote:a??void 0,currentQuote:b,meta:{blockchains:m},selectedWallets:v,userSlippage:d,inputUsdValue:n,findToken:f});l();let M=!!L.balance,q=cw(o.toString(),w,Fu(v),E,!M,{blockchains:m,tokens:h});return{quote:b,swap:q,error:null,warnings:L}})}catch(x){return Wi(x)}},"fetch"),cancelFetch:C}}i(ul,"useConfirmSwap");var kw=fw("div",{width:"100%",display:"flex",justifyContent:"space-between",[`& ${Bf}`]:{width:"$48",height:"$48"}}),Tw=fl({flexGrow:1,paddingRight:"$10"}),vw=fl({width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center"}),ww=fl({display:"flex",justifyContent:"space-between",alignItems:"center"});function Wf(){let{selectedQuote:t,setInputAmount:e,selectedWallets:o,quoteWalletsConfirmed:n,customDestination:r,quoteWarningsConfirmed:a}=U(),s=Cw(),[l,c]=Vn(""),u=!n,[p,m]=Vn(!1),[h,f]=Vn(!1),{isActiveTab:d}=te(),g=S().getDisabledLiquiditySources(),C=Sw(g),{manager:k}=uw(),{fetch:y,loading:T,cancelFetch:v}=ul(),[I,B]=Vn({swap:null,error:null,warnings:null}),[N,x]=Vn(!1),w=i(async({selectedWallets:_,customDestination:X})=>{let ie=await y?.({selectedWallets:_,customDestination:X});return B(ie),ie},"onConfirmSwap"),b=i(async()=>{if(I.swap&&n)try{await k?.create("swap",{swapDetails:I.swap},{id:I.swap.requestId});let _=`../${F.swaps}/${I.swap.requestId}`;s(_,{replace:!0}),setTimeout(()=>{e("")},0)}catch(_){c("Error: "+_?.message)}},"addNewSwap"),E=i(async()=>{f(!0),await b(),f(!1)},"onConfirm"),L=i(async()=>{I.warnings?.quote&&wu(I.warnings.quote)&&!a?x(!0):await E()},"onStartConfirmSwap"),M=i(async()=>{B({error:null,swap:null,warnings:null}),y({selectedWallets:o,customDestination:r}).then(_=>{B(_)}).catch(_=>console.error(_))},"onRefresh");Li(()=>{!!C.current.length&&!g.length&&M(),C.current=g},[g.length]),Li(()=>{u&&v()},[u]),Li(()=>{u&&m(u)},[u]),Li(()=>{u||y({selectedWallets:o,customDestination:r}).then(_=>B(_)).catch(_=>console.error(_))},[]),yw(()=>{t?.requestId||s(`../${location.search}`)},[t?.requestId]);let q=I.warnings?.quote??null,ee=I.error,j=[];if(l&&j.push(Pe.createElement(mw,{type:"error",variant:"alarm",title:l})),q||ee){let _=`../${F.settings}`;j.push(Pe.createElement(On,{warning:q,error:ee,couldChangeSettings:!1,refetchQuote:M,showWarningModal:N,confirmationDisabled:!d,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:async()=>{x(!1),await b()},onChangeSettings:()=>s(_)}))}return Pe.createElement(re,{header:{title:ml.t("Confirm Swap"),onWallet:()=>{let _=`../${F.wallets}`;s(_)}},footer:Pe.createElement(kw,null,Pe.createElement("div",{className:Tw()},Pe.createElement(dw,{id:"widget-confirm-swap-start-btn",variant:"contained",type:"primary",size:"large",fullWidth:!0,loading:T||h,disabled:!!I.error||!d,onClick:L},ml.t("Start Swap"))),Pe.createElement(Bf,{id:"widget-confirm-swap-wallet-icon-btn",variant:"contained",type:"primary",size:"large",loading:T||h,disabled:!d,onClick:m.bind(null,!0)},Pe.createElement(hw,{size:24})))},p&&Pe.createElement(gd,{open:p,onClose:()=>m(!1),onCancel:v,loading:T,onCheckBalance:w}),Pe.createElement(ae,null,Pe.createElement("div",{className:ww()},Pe.createElement(gw,{variant:"title",size:"small"},ml.t("You get")),Pe.createElement("div",{className:vw()},Pe.createElement(ei,{onClick:!T&&!p&&!N?M:void 0}))),Pe.createElement(dl,{size:"12"}),pm(j.map((_,X)=>({element:_,key:`alert-${X}`})),Pe.createElement(dl,{size:10})),j.length>0?Pe.createElement(dl,{size:10}):null,Pe.createElement(No,{quote:t,type:"swap-preview",expanded:!0,tagHidden:!0,error:I.error,loading:T,warning:I.warnings?.quote??null})))}i(Wf,"ConfirmSwapPage");import{i18n as qt}from"@lingui/core";import{Button as El,CustomTokensZeroStateDarkIcon as qw,CustomTokensZeroStateIcon as Gw,DeleteIcon as Vw,Divider as Jn,IconButton as Kw,MessageBox as jw,NotFound as Xw,styled as Al}from"@rango-dev/ui";import fe,{useState as Il}from"react";import{useNavigate as Yw}from"react-router-dom";import{CloseIcon as xw,IconButton as Ew,SearchIcon as Iw,TextField as Aw}from"@rango-dev/ui";import Kn from"react";import{styled as bw}from"@rango-dev/ui";var Lf=bw("div",{width:"$24",height:"$24",display:"flex",alignItems:"center",justifyContent:"center"});function vt(t){let{variant:e,fullWidth:o,color:n,size:r,onChange:a,value:s,style:l,setValue:c,suffix:u,...p}=t,m=s.length?Kn.createElement(Ew,{variant:"ghost",onClick:()=>c?.(""),size:"small"},Kn.createElement(xw,{color:"gray",size:10})):null;return u&&(m=u),Kn.createElement(Aw,{prefix:Kn.createElement(Lf,null,Kn.createElement(Iw,{color:"black"})),suffix:m,fullWidth:o,color:n,variant:e,style:{padding:10,borderRadius:25,alignItems:"center",...l},size:r,value:s,onChange:a,...p})}i(vt,"SearchInput");import{i18n as xl}from"@lingui/core";import{Button as Lw,CustomTokenWarning as Mw,darkTheme as qf,Divider as Ht,ExternalLinkIcon as Pw,Image as _w,ListItem as Dw,NotFound as $w,PinIcon as Fw,Skeleton as Bo,Typography as Yn,VirtualizedList as Ow}from"@rango-dev/ui";import W,{useState as Uw}from"react";import{useTranslation as zw}from"react-i18next";import{Divider as Qf,ListItem as Ww,Skeleton as Xn}from"@rango-dev/ui";import wt from"react";import{css as pn,darkTheme as gl,ImageContainer as Nw,ListItemButton as Bw,styled as Re,Typography as Mf}from"@rango-dev/ui";var hl=pn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}),yl=pn({position:"relative",height:12,width:"30%",maxWidth:"150px"}),Sl=pn({position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",bottom:"-8px"}),Cl=pn({transform:"translateY(12px)",visibility:"hidden",display:"flex","& a":{display:"flex",justifyContent:"center",alignItems:"center",fontSize:"$12",lineHeight:"$16",$$color:"$colors$neutral600",[`.${gl} &`]:{$$color:"$colors$neutral700"},color:"$$color",textDecoration:"none"}}),kl=pn({}),Tl=pn(),Pf=Re("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden",justifyContent:"center"}),vl=Re("div",{display:"flex",alignItems:"center","._typography":{textOverflow:"ellipsis",whiteSpace:"nowrap",maxWidth:100,overflow:"hidden"}}),Mi=Re("ul",{flexGrow:1,padding:0,margin:0,listStyle:"none","& li":{alignItems:"none","&:hover":{[`& .${yl}`]:{[`& .${Cl}`]:{position:"absolute",transform:"none",transition:"transform 225ms cubic-bezier(0, 0, 0.2, 1) 0ms",visibility:"visible"},[`& .${kl}`]:{bottom:"-15px"},[`& .${hl}`]:{position:"absolute",transform:"translateY(-12px)",visibility:"hidden"},[`& .${Sl}`]:{position:"absolute",transform:"translateY(-12px)",bottom:"-10px"}}}}}),_f=Re(Bw,{variants:{customToken:{true:{"&:hover":{cursor:"unset"}}}}}),wl=Re("div",{paddingLeft:"$5",paddingRight:"$5",borderRadius:"$md",display:"flex",alignItems:"center"}),bl=Re(Mf,{}),Df=Re("div",{textAlign:"right",width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",[`& .${Tl}`]:{$$color:"$colors$neutral600",[`.${gl} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),jn=Re("div",{display:"flex",alignItems:"end",flexDirection:"column"}),HQ=Re("div",{display:"flex",alignItems:"center"}),$f=Re("div",{position:"relative",[`& ${Nw}`]:{borderRadius:"$xm",overflow:"hidden"}}),Ff=Re("div",{position:"absolute",backgroundColor:"$neutral100",padding:"$4",borderRadius:"50%",bottom:-6,right:-6}),Of=Re(Mf,{width:"100%",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}),Uf=Re("a",{"& svg:hover":{color:"$colors$info"}}),zf=Re("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":{[`.${gl} &`]:{color:"$foreground"}}}});function Hf(t){return wt.createElement(Mi,null,Array.from(Array(t.size),e=>wt.createElement(Ww,{key:e,hasDivider:!0,start:wt.createElement(Xn,{variant:"circular",width:35,height:35}),end:wt.createElement(jn,null,wt.createElement(Xn,{variant:"text",size:"large",width:70}),wt.createElement(Qf,{size:4}),wt.createElement(Xn,{variant:"text",size:"medium",width:50})),title:wt.createElement("div",null,wt.createElement(Xn,{variant:"text",size:"large",width:90}),wt.createElement(Qf,{size:4}),wt.createElement(Xn,{variant:"text",size:"medium",width:90}))})))}i(Hf,"LoadingTokenList");var Qw=20,Hw=i(t=>{let{address:e,name:o,url:n,token:r,customCssForTag:a,customCssForTagTitle:s}=t,l=e.length;return W.createElement("div",{className:yl()},o?W.createElement("div",{className:hl()},o):W.createElement(vl,{className:Sl()},W.createElement(Yn,{variant:"title",size:"xmedium"},r.symbol),W.createElement(Ht,{direction:"horizontal",size:4}),W.createElement(wl,{css:a},W.createElement(bl,{variant:"body",size:"xsmall",css:s},r.blockchain))),!!e&&W.createElement("div",{className:`${Cl()} ${!o&&kl()}`},l>10?`${e.slice(0,5)}...${e.slice(l-6,l)}`:e," ",W.createElement(Ht,{size:4,direction:"horizontal"}),W.createElement(Uf,{href:n,target:"_blank",rel:"nofollow noreferrer",onClick:c=>c.stopPropagation()},W.createElement(Pw,{size:12}))))},"renderDesc");function Zn(t){let{list:e,searchedFor:o="",onChange:n,selectedBlockchain:r,showTitle:a=!0,action:s,type:l,showWarning:c=!0}=t,u=S().fetchStatus,p=S().blockchains(),{getBalanceFor:m,fetchingWallets:h}=S(),{isTokenPinned:f}=S(),{setFromToken:d,setToToken:g}=U(),{t:C}=zw(),k=ze(),[y,T]=Uw(null),v=i(()=>{l==="source"?d({token:y,meta:{blockchains:p}}):g({token:y,meta:{blockchains:p}})},"updateToken"),I=i(()=>{v(),k()},"handleImportToken"),B=i(w=>{if(w.customToken){let{customToken:E,...L}=w;return W.createElement(Lw,{variant:"contained",type:"primary",size:"small",className:"widget-token-list-item-import-btn",onClick:i(q=>{q.stopPropagation(),T({...L,warning:!0})},"handleClick")},W.createElement(Yn,{variant:"body",size:"xsmall",color:"background"},C("import")))}let b=Nr(m(w));return s?s(w):h?W.createElement(jn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Ht,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})):b&&W.createElement(Df,null,W.createElement(Of,{variant:"title",size:"small"},b.amount),W.createElement("div",null),b.usdValue&&W.createElement(Yn,{variant:"body",className:Tl(),size:"xsmall"},`$${b.usdValue}`))},"endRenderer"),N=i(()=>W.createElement(Ow,{itemContent:w=>{let b=e[w];if(b==="skeleton")return W.createElement(Dw,{hasDivider:!0,start:W.createElement(Bo,{variant:"circular",width:35,height:35}),end:W.createElement(jn,null,W.createElement(Bo,{variant:"text",size:"large",width:70}),W.createElement(Ht,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:50})),title:W.createElement("div",null,W.createElement(Bo,{variant:"text",size:"large",width:90}),W.createElement(Ht,{size:4}),W.createElement(Bo,{variant:"text",size:"medium",width:90}))});let E=b.address||"",L=p.find(_=>_.name===b.blockchain);if(!L)return null;let M=hs(L.color,"main"),q={$$color:M.main150,[`.${qf} &`]:{$$color:M.main750},backgroundColor:"$$color"},ee={$$color:M.main750,[`.${qf} &`]:{$$color:M.main150},color:"$$color"},j=i(()=>{typeof b!="string"&&!b.customToken&&n?.(b)},"handleClick");return W.createElement(zf,null,W.createElement(_f,{"tab-index":w,key:`${b.symbol}${b.address}`,id:`${b.symbol}${b.address}`,className:"widget-token-list-item-btn",hasDivider:!0,customToken:b.customToken,onClick:j,start:W.createElement($f,null,W.createElement(_w,{src:b.image===""?kr:b.image,size:30}),t.type!=="custom-token"&&f(b,t.type)&&W.createElement(Ff,null,W.createElement(Fw,{size:12,color:"gray"}))),title:L?.type==="COSMOS"||b.name||!b.name&&!E?W.createElement(vl,null,W.createElement(Yn,{variant:"title",size:"xmedium"},b.symbol),W.createElement(Ht,{direction:"horizontal",size:4}),W.createElement(wl,{css:q},W.createElement(bl,{variant:"body",size:"xsmall",css:ee},b.blockchain)),c&&b.warning&&W.createElement(W.Fragment,null,W.createElement(Ht,{direction:"horizontal",size:4}),W.createElement(Mw,{container:A()}))):void 0,description:typeof b!="string"&&L?.info&&E&&L.type!=="COSMOS"?Hw({address:E,token:b,customCssForTag:q,customCssForTagTitle:ee,name:b.name,url:L.info.addressUrl.split("{wallet}").join(E)}):b.name||void 0,end:B(b)}))},totalCount:e.length,key:`${r}-${o}`}),"renderList"),x=y?uo(y?.blockchain,p):null;return W.createElement(W.Fragment,null,a&&W.createElement(W.Fragment,null,W.createElement(Yn,{variant:"label",size:"large"},xl.t("Select Token")),W.createElement(Ht,{size:4})),W.createElement(Pf,null,W.createElement(Ht,{size:4}),u==="loading"&&W.createElement(Hf,{size:Qw}),u==="success"&&(e.length?W.createElement(W.Fragment,null,W.createElement(Wn,{token:y,address:y?.address??"",blockchain:x??void 0,onImport:I,onExitErrorModal:()=>T(null),onExitImportModal:()=>T(null)}),W.createElement(Mi,{as:"ul"},N())):!!o&&W.createElement($w,{title:xl.t("No results found"),description:xl.t("Try using different keywords")}))))}i(Zn,"TokenList");var Zw=Al("div",{display:"flex",justifyContent:"space-between",flexDirection:"column",flex:1}),Jw=Al("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",flex:"0.75"}),Rw=Al(Kw,{"&:hover":{"& svg":{color:"$secondary550"}}});function Gf(){let[t,e]=Il(""),{deleteCustomToken:o}=S(),n=S().customTokens(),{fromToken:r,toToken:a,setFromToken:s,setToToken:l}=U(),{mode:c}=Ro({}),u=Yw(),[p,m]=Il(!1),[h,f]=Il(),d=i(y=>{let T=y.target.value;e(T)},"handleSearch"),g=c==="dark",C=n.filter(y=>tt(y.symbol,t)||tt(y.address||"",t)||tt(y.name||"",t)),k=i(()=>{if(h){let y=a?ut(a):null,T=r?ut(r):null,v=ut(h);y===v?l({token:null}):T===v&&s({token:null}),o(h)}m(!1)},"handleDeleteCustomToken");return fe.createElement(re,{header:{title:qt.t("Custom Tokens")}},fe.createElement(ae,null,fe.createElement(Zw,null,n.length?fe.createElement(fe.Fragment,null,fe.createElement(vt,{value:t,setValue:e,fullWidth:!0,color:"light",variant:"contained",placeholder:qt.t("Search Token"),onChange:d}),fe.createElement(Jn,{size:16}),fe.createElement(Zn,{list:C,type:"custom-token",searchedFor:t,showTitle:!1,showWarning:!1,action:y=>fe.createElement(Rw,{id:"widget-custom-token-delete-icon-btn",variant:"ghost",onClick:()=>{m(!0),f(y)}},fe.createElement(Vw,{size:12,color:"gray"}))})):fe.createElement(Jw,null,fe.createElement(Xw,{icon:g?fe.createElement(qw,{size:200}):fe.createElement(Gw,{size:200}),title:qt.t("No custom tokens"),description:qt.t("press the button to add your custom token")})),fe.createElement(Jn,{size:20}),fe.createElement(El,{id:"widget-custom-token-add-btn",type:"primary",variant:"contained",size:"large",onClick:()=>u(F.addCustomTokens)},qt.t("Add Custom Token"))),fe.createElement(J,{open:p,dismissible:!0,onClose:()=>m(!1),container:A()},fe.createElement(jw,{title:qt.t("Delete Custom Token"),type:"error",description:qt.t("Are you sure you want to Delete this Token?")},fe.createElement(Jn,{size:40}),fe.createElement(Jn,{size:10}),fe.createElement(El,{fullWidth:!0,id:"widget-custom-token-delete-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},qt.t("Yes, Delete it")),fe.createElement(Jn,{size:12}),fe.createElement(El,{id:"widget-custom-token-delete-modal-no-btn",fullWidth:!0,variant:"outlined",type:"primary",size:"large",onClick:()=>m(!1)},qt.t("No, Continue"))))))}i(Gf,"CustomTokensPage");import{i18n as Ve}from"@lingui/core";import{useManager as Cb}from"@rango-dev/queue-manager-react";import{Button as _l,darkTheme as kb,Divider as Lo,MessageBox as Tb,NotFound as vb,styled as Dl,Typography as Di}from"@rango-dev/ui";import{TransactionStatus as tr}from"rango-types";import se,{useMemo as pg,useState as $i}from"react";import{useNavigate as wb}from"react-router-dom";import{FilterIcon as ab,Popover as sb}from"@rango-dev/ui";import Wo from"react";import{css as eb,darkTheme as Pi,IconButton as tb,styled as Rn}from"@rango-dev/ui";var Nl=Rn("div",{position:"relative","&::before":{position:"absolute",right:"1px",top:"-1px",width:"$8",height:"$8",borderRadius:"100%",backgroundColor:"$neutral300",[`.${Pi} &`]:{backgroundColor:"$neutral400"},padding:"$2"},variants:{isSelect:{true:{"&::before":{content:""}}}}}),Vf=Rn(tb,{width:"$36",height:"$36",position:"relative",padding:"0",overflow:"unset",backgroundColor:"$neutral300",[`.${Pi} &`]:{backgroundColor:"$neutral400"},"&:hover":{backgroundColor:"$secondary100",[`.${Pi} &`]:{backgroundColor:"$neutral"},[`& ${Nl}::before`]:{backgroundColor:"$secondary100",[`.${Pi} &`]:{backgroundColor:"$neutral"}}},variants:{isSelect:{true:{border:"1px solid $secondary"}}}}),Kf=Rn("div",{position:"absolute",width:"$6",height:"$6",display:"flex",justifyContent:"center",alignItems:"center",borderRadius:"3px",top:"$0",right:"1px",backgroundColor:"$secondary500"}),jf=Rn("div",{padding:"$15",borderRadius:"$sm",width:"248px",backgroundColor:"$background",zIndex:10}),Xf=eb({display:"flex",justifyContent:"space-between",alignItems:"center"}),Yf=Rn("ul",{margin:0,listStyle:"none",height:"100%",padding:0,".item-start-container":{paddingRight:"0 !important"}});import{i18n as Zf}from"@lingui/core";import{Button as ob,Divider as Jf,ListItemButton as nb,Radio as rb,RadioRoot as ib,Typography as Rf}from"@rango-dev/ui";import at from"react";function eg(t){let{filterBy:e,onClickItem:o}=t;return at.createElement(jf,null,at.createElement("div",{className:Xf()},at.createElement(Rf,{size:"small",variant:"body"},Zf.t("Status")),at.createElement(ob,{id:"widget-filter-selector-reset-btn",variant:"ghost",size:"xxsmall",onClick:()=>o("")},Zf.t("Reset"))),at.createElement(Jf,{size:10}),at.createElement(ib,{value:e},at.createElement(Yf,null,t.list.map((n,r)=>at.createElement(nb,{key:n.id,style:{height:"40px",width:"100%"},selected:!1,hasDivider:t.list.length-1!=r,id:n.id,title:at.createElement(at.Fragment,null,at.createElement(Jf,{direction:"horizontal",size:4}),at.createElement(Rf,{size:"medium",variant:"body"},n.title)),start:at.createElement(rb,{value:n.id}),onClick:o})))))}i(eg,"FilterSelectorContent");function Bl(t){let{onClickItem:e,onOpenChange:o,filterBy:n,list:r,open:a}=t;return Wo.createElement("div",null,Wo.createElement(sb,{open:a,align:"end",onOpenChange:o,container:A(),content:Wo.createElement(eg,{list:r,filterBy:n,onClickItem:s=>{e(s),o(!1)}})},Wo.createElement(Vf,{id:"widget-filter-selector-filter-icon-btn",variant:"default",isSelect:!!n,onClick:()=>o(!t.open)},Wo.createElement(Nl,{isSelect:!!n},Wo.createElement(ab,{size:16,color:"black"}),!!n&&Wo.createElement(Kf,null)))))}i(Bl,"FilterSelector");import{i18n as pb}from"@lingui/core";import{getCurrentStep as ub}from"@rango-dev/queue-manager-rango-preset";import{Divider as ig,GroupedVirtualizedList as mb,Skeleton as db,SwapListItem as ag,Typography as fb}from"@rango-dev/ui";import Ge,{useCallback as sg,useEffect as gb,useRef as hb,useState as yb}from"react";function tg(t,e){let o=[],n=0;do{let r=t[n];o.push(Math.min(r,e)),e-=r,n++}while(e>0&&n<=t.length);return o}i(tg,"calculateGroupsSoFar");import{css as lb,darkTheme as cb,styled as er}from"@rango-dev/ui";var Wl=lb(),og=er("div",{display:"flex",justifyContent:"center",alignItems:"center",padding:"$5"}),Ll=er("div",{width:"100%",display:"flex",flexDirection:"column",backgroundColor:"$background",padding:"$10 $5 0 $5",[`& .${Wl}`]:{$$color:"$colors$neutral600",[`.${cb} &`]:{$$color:"$colors$neutral700"},color:"$$color"}}),Ml=er("div",{display:"flex",justifyContent:"flex-start",padding:"$2"}),ng=er("div",{gap:"$10",display:"flex",flexDirection:"column"}),rg=er("div",{height:"100%",display:"flex",justifyContent:"center",alignItems:"center"});var Sb=10;function Pl(t){let{list:e,onSwapClick:o,groupBy:n,isLoading:r}=t,[a,s]=yb([]),l=hb(0),{swaps:c,groupCounts:u,groups:p}=n(e),m=sg(tg,[]),h=sg(()=>{let f=e.length-l.current;f&&(l.current+=Math.min(f,Sb),s(m(u,l.current)))},[e.length]);if(gb(()=>{r||h()},[r,h]),r){let f=[1,2];return Ge.createElement(Ge.Fragment,null,[f,f].map((g,C)=>Ge.createElement(Ll,{key:C},Ge.createElement(Ml,null,Ge.createElement(db,{variant:"text",width:60,size:"small"}),Ge.createElement(ig,{size:16})),Ge.createElement(ig,{size:4}),Ge.createElement(ng,null,g.map((y,T)=>Ge.createElement(ag,{isLoading:!0,key:T}))))))}return Ge.createElement(mb,{endReached:()=>{l.current<e.length&&h()},groupCounts:a,groupContent:f=>Ge.createElement(Ll,null,Ge.createElement(Ml,null,Ge.createElement(fb,{variant:"label",size:"medium",className:Wl()},p[f]))),itemContent:(f,d)=>{let g=c[f],C=ub(g);if(!g)return null;let k=g.steps[0],y=g.steps[g.steps.length-1];return Ge.createElement(og,{key:g.requestId},Ge.createElement(ag,{requestId:g.requestId,creationTime:g.creationTime,status:g.status,onClick:o,currentStep:C,tooltipContainer:A(),onlyShowTime:p[d]===pb.t("Today"),swapTokenData:{from:{token:{image:k.fromLogo,displayName:k.fromSymbol},blockchain:{image:k.fromBlockchainLogo||""},amount:P(g.inputAmount,6,6),realAmount:g.inputAmount},to:{token:{image:y.toLogo,displayName:y.toSymbol},blockchain:{image:y.toBlockchainLogo||""},amount:P(y.outputAmount||y.expectedOutputAmountHumanReadable||"",6,6),realAmount:y.outputAmount||y.expectedOutputAmountHumanReadable||""}}}))}})}i(Pl,"HistoryGroupedList");import{i18n as _i}from"@lingui/core";import lg from"dayjs";var cg=i(t=>{let e=new Map([["today",{title:_i.t("Today"),swaps:[]}],["week",{title:_i.t("This week"),swaps:[]}],["month",{title:_i.t("This month"),swaps:[]}],["year",{title:_i.t("This year"),swaps:[]}]]);function o(c,u){e.has(c)||e.set(c,{title:c,swaps:[]}),e.get(c)?.swaps.push(u)}i(o,"addYearsToOutput");let n=lg();t.forEach(c=>{let u=Number(c.creationTime),p=lg(u);if(n.isSame(p,"day"))e.get("today")?.swaps.push(c);else if(n.isSame(p,"week"))e.get("week")?.swaps.push(c);else if(n.isSame(p,"month"))e.get("month")?.swaps.push(c);else if(n.isSame(p,"year"))e.get("year")?.swaps.push(c);else{let m=new Date(u).getFullYear().toString();o(m,c)}});let r=Array.from(e.values()).filter(c=>c.swaps.length>0),a=r.flatMap(c=>c.swaps),s=r.map(c=>c.swaps.length),l=r.map(c=>c.title);return{swaps:a,groupCounts:s,groups:l}},"groupSwapsByDate");var bb=Dl("div",{overflowY:"visible",width:"100%",display:"flex",flexDirection:"column",gap:15,height:"100%"}),xb=Dl("div",{display:"flex",justifyContent:"center",alignItems:"center"}),Eb=Dl("div",{"._typography":{color:"$neutral700",[`.${kb}&`]:{color:"$neutral900"}}}),Ib=[{id:tr.SUCCESS,title:Ve.t("Complete")},{id:tr.RUNNING,title:Ve.t("Running")},{id:tr.FAILED,title:Ve.t("Failed")}],Ab=i((t,e)=>t?.length?t.filter(o=>xt(o.fromBlockchain,e)||xt(o.toBlockchain,e)||xt(o.toSymbol,e)||xt(o.fromSymbol,e)).length:!1,"isStepContainsText");function ug(){let t=wb(),{manager:e,state:o}=Cb(),n=gt(e).map(({swap:T})=>T),[r,a]=$i(""),[s,l]=$i(!1),c=!o.loadedFromPersistor,[u,p]=$i(""),[m,h]=$i(!1),f=i(T=>{let v=T.target.value;a(v)},"handleSearch"),d=pg(()=>!r&&!u?n:n.filter(T=>{let{inputAmount:v,status:I,steps:B,requestId:N}=T;return(!r||xt(v,r)||xt(I,r)||Ab(B,r)||xt(N,r))&&(!u||u===I)}),[n,r,u]),g=!d?.length&&!c,C=i(()=>h(!1),"onCloseModal"),k=i(async()=>{try{await e?.clearQueue(),h(!1)}catch(T){console.log(T)}},"onClear"),y=pg(()=>!n.some(T=>T.status===tr.SUCCESS||T.status===tr.FAILED),[n]);return se.createElement(re,{header:{title:Ve.t("History"),suffix:se.createElement(Jt,null,se.createElement(_l,{id:"widget-history-clear-btn",disabled:y,variant:"ghost",size:"xsmall",onClick:()=>h(!0)},se.createElement(Di,{size:"medium",variant:"label",color:"error"},Ve.t("Clear"))))}},se.createElement(ae,null,se.createElement(xb,null,se.createElement(vt,{setValue:a,fullWidth:!0,variant:"contained",placeholder:Ve.t("Search Transaction"),autoFocus:!0,onChange:f,style:{height:36},value:r}),se.createElement(Lo,{size:10,direction:"horizontal"}),se.createElement(Bl,{filterBy:u,open:s,onOpenChange:T=>l(T),onClickItem:T=>p(T),list:Ib})),se.createElement(Lo,{size:"16"}),se.createElement(bb,null,g&&se.createElement(rg,null,se.createElement(Lo,{size:32}),se.createElement(vb,{title:r?Ve.t("No results found"):Ve.t("No transactions"),titleColor:r?void 0:"$info",hasIcon:!!r,description:r?Ve.t("Try using different keywords"):Ve.t("Your transaction history is stored locally and will appear here after you start a swap")})),!g&&se.createElement(Pl,{list:d,onSwapClick:t,groupBy:cg,isLoading:c}))),se.createElement(J,{open:m,onClose:C,container:A()},se.createElement(Lo,{size:20}),se.createElement(Tb,{type:"warning",title:Ve.t("Clear Transaction History"),description:se.createElement(Eb,null,se.createElement(Di,{variant:"body",size:"medium"},Ve.t("Proceeding will remove all successful and failed transactions from the widget. Do you want to continue?")),se.createElement(Lo,{size:"24"}),se.createElement(Di,{variant:"body",size:"small"},Ve.t("Note: This does not erase your transaction history on the chain; it only removes them here.")))}),se.createElement(Lo,{size:30}),se.createElement(_l,{id:"widget-history-clear-modal-yes-btn",variant:"contained",type:"primary",size:"large",onClick:k},Ve.t("Yes, Clear the history")),se.createElement(Lo,{size:10}),se.createElement(_l,{id:"widget-history-clear-modal-no-btn",variant:"outlined",type:"primary",size:"large",onClick:C},se.createElement(Di,{variant:"title",size:"medium",color:"primary"},Ve.t("No, Cancel")))))}i(ug,"HistoryPage");import{i18n as Jb}from"@lingui/core";import{Button as Rb,Divider as Lg,styled as ex,WarningIcon as tx}from"@rango-dev/ui";import ox from"bignumber.js";import Ke,{useEffect as Mg,useState as Pg}from"react";import{useNavigate as nx}from"react-router-dom";import{i18n as dg}from"@lingui/core";import{Alert as Bb,Divider as $l,NoRouteIcon as Wb,Typography as Lb}from"@rango-dev/ui";import Mo from"react";import{styled as Nb}from"@rango-dev/ui";var mg=Nb("div",{display:"flex",flexDirection:"column",alignItems:"center"});function Fl(){let{fromToken:t,toToken:e}=U();return!!t&&!!e&&Pt(t,e)?Mo.createElement(mg,null,Mo.createElement($l,{size:10}),Mo.createElement(Wb,{size:24,color:"gray"}),Mo.createElement($l,{size:4}),Mo.createElement(Lb,{variant:"title",size:"small"},dg.t("No Routes Found")),Mo.createElement($l,{size:4}),Mo.createElement(Bb,{title:dg.t("You cannot use the same token for From and To."),type:"warning",variant:"alarm"})):null}i(Fl,"SameTokensWarning");import{i18n as Fb}from"@lingui/core";import{Header as Ob}from"@rango-dev/ui";import ro,{useEffect as Ub,useState as zb}from"react";import{i18n as Pb}from"@lingui/core";import{Divider as Ul,FullExpandedQuote as _b,Typography as Db}from"@rango-dev/ui";import ke from"react";import{styled as Ol}from"@rango-dev/ui";var fg=Ol("div",{display:"flex",justifyContent:"center",flexDirection:"column",height:"100%"}),gg=Ol("div",{display:"flex",justifyContent:"space-between",alignItems:"center"}),hg=Ol("div",{width:"146px"});import{i18n as or}from"@lingui/core";import{Select as Mb}from"@rango-dev/ui";import yg from"react";function Fi(t){let{updateQuotePartialState:e,sortStrategy:o}=U(),n=[{value:"SMART",label:or.t("Smart Routing")},{value:"FEE",label:or.t("Lowest Fee")},{value:"SPEED",label:or.t("Fastest Transfer")},{value:"NET_OUTPUT",label:or.t("Maximum Return")},{value:"PRICE",label:or.t("Maximum Output")}];return yg.createElement(hg,null,yg.createElement(Mb,{container:t.container,options:n,value:o,handleItemClick:r=>{e("sortStrategy",r.value)},variant:"filled"}))}i(Fi,"SelectStrategy");var Sg=3;function nr(t){let{loading:e,onClickOnQuote:o,fetch:n,showModalFee:r,hasSort:a=!0,fullExpandedMode:s=!1,container:l}=t,{selectedQuote:c,quotes:u,updateQuotePartialState:p,fromToken:m,toToken:h,sortStrategy:f,error:d}=U(),{slippage:g,customSlippage:C}=S(),{findToken:k}=S(),y=l||A(),T=!!u&&u.results.length,v=C??g,I=i(x=>{if(!m||!h||!u)return null;let w={requestAmount:u.requestAmount,validationStatus:null,...x};return jo({currentQuote:w,userSlippage:v,findToken:k})},"getQuoteWarning"),B=d?.type===0||d?.type===1,N=u?.results?Vr(f,u?.results):[];return ke.createElement(ke.Fragment,null,a&&ke.createElement(ke.Fragment,null,ke.createElement(gg,null,ke.createElement(Db,{size:"xmedium",variant:"title"},Pb.t("Sort by")),ke.createElement(Fi,{container:y})),ke.createElement(Ul,{size:"10"})),e&&Array.from({length:Sg},(x,w)=>ke.createElement(ke.Fragment,{key:w},s?ke.createElement(_b,{loading:!0}):ke.createElement(Gn,{tagHidden:!1,type:"list-item",expanded:!1}),w!==Sg-1&&ke.createElement(Ul,{size:16}))),!e&&ke.createElement(ke.Fragment,null,T?N.map((x,w)=>{let b=I(x),E=pl(x.swaps),L=N.length-1===w;return ke.createElement(ke.Fragment,{key:x.requestId},ke.createElement(No,{showModalFee:r,container:y,selected:c?.requestId===x.requestId,tagHidden:!1,quote:{...x,requestAmount:u.requestAmount,validationStatus:null},loading:e,error:E?.options||null,warning:b,fullExpandedMode:s,onClick:M=>{E||p("warning",b),p("error",E?.options||null),o(M)},type:"list-item"}),!L&&ke.createElement(Ul,{size:16}))}):B&&ke.createElement(fg,null,ke.createElement($n,{size:s?"large":"small",error:d,fetch:n}))))}i(nr,"Quotes");import{darkTheme as $b,styled as Cg}from"@rango-dev/ui";var kg=Cg("div",{transition:"width 0.2s, opacity 0.2s, margin-left 0.2s",height:"700px",width:"390px",position:"relative",opacity:1,marginLeft:"$16",backgroundColor:"$neutral100",[`.${$b} &`]:{backgroundColor:"$neutral300"},variants:{expandMode:{default:{width:"390px"},full:{width:"719px"}}},"&.is-hidden":{width:0,height:0,opacity:0,marginLeft:0}}),Tg=Cg("div",{position:"relative",overflow:"hidden",padding:"$20",flexGrow:1,display:"flex",flexDirection:"column",overflowY:"auto",borderRadius:"$primary",backgroundColor:"$background"});var Qb=100;function zl(t){let{fetch:e,loading:o,onClickOnQuote:n,onClickRefresh:r,isVisible:a}=t,[s,l]=zb(!1),c=s?"":"is-hidden",{config:u}=S(),p=u?.variant==="full-expanded",m=fo();return Ub(()=>{let h=null;return a?h=setTimeout(()=>{l(!0)},Qb):(l(!1),h&&clearTimeout(h)),()=>{h&&clearTimeout(h)}},[a]),ro.createElement(kg,{expandMode:u?.variant==="full-expanded"?"full":"default",className:`${c} ${ri()}`,id:Oe.EXPANDED_BOX_ID},ro.createElement(Ob,{title:Fb.t("Routes"),suffix:ro.createElement(ro.Fragment,null,ro.createElement(Fi,{container:m}),ro.createElement(xo,{container:m,onClickRefresh:r,hidden:["history","notifications","settings"]}))}),ro.createElement(Tg,null,ro.createElement(nr,{showModalFee:!0,fetch:e,hasSort:!1,loading:o,container:fo(),onClickOnQuote:n,fullExpandedMode:p})))}i(zl,"ExpandedQuotes");import{i18n as Ag}from"@lingui/core";import{SwapInput as Ng}from"@rango-dev/ui";import Vb from"bignumber.js";import rr from"react";import{ReverseIcon as Gb}from"@rango-dev/ui";import Hl from"react";import{keyframes as Hb,styled as vg}from"@rango-dev/ui";var Ql=450,qb=Hb({"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)"}}),wg=vg("div",{position:"absolute",bottom:"-12px",left:"50%",transform:"translate(-50%, 10%)",cursor:"pointer"}),bg=vg("div",{borderRadius:"$md",border:"3px solid $background",background:"$neutral100",width:"$24",height:"$24",display:"flex",justifyContent:"center",alignItems:"center",color:"$foreground","&.rotate":{"& svg":{animation:`${qb} ${Ql}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 ql(){let t=U.use.switchFromAndTo();return Hl.createElement(wg,null,Hl.createElement(bg,{onClick:e=>{let o=e.currentTarget;o.classList.add("rotate"),setTimeout(()=>{o.classList.remove("rotate")},Ql),t()}},Hl.createElement(Gb,{size:12})))}i(ql,"SwitchFromAndToButton");import{styled as xg}from"@rango-dev/ui";var Eg=xg("div",{display:"flex",flexDirection:"column",gap:"$5",alignSelf:"stretch"}),Ig=xg("div",{position:"relative"});function Gl(t){let{fetchingQuote:e,fetchMetaStatus:o,onClickToken:n,isExpandable:r}=t,{fromToken:a,fromBlockchain:s,toToken:l,toBlockchain:c,setInputAmount:u,inputAmount:p,inputUsdValue:m,outputAmount:h,outputUsdValue:f,selectedQuote:d}=U(),{connectedWallets:g,getBalanceFor:C}=S(),k=a?C(a):null,y=Nr(k)?.amount??"0",T=k?new Vb(k.amount).shiftedBy(-k.decimals):ce,v=!!s&&fp(g,s.name),I=!Ja(d,p,m),B=!Ja(d,p,f),N=!m||!f||!f.gt(0)?null:$t(m.toString(),f.toString());return rr.createElement(Eg,null,rr.createElement(Ig,null,rr.createElement(Ng,{label:Ag.t("From"),mode:"From",onInputChange:u,balance:y,chain:{displayName:s?.displayName||"",image:s?.logo},token:{displayName:a?.symbol||"",image:a?.image,securityWarning:!!a?.warning},onClickToken:()=>n("from"),price:{value:p,usdValue:I?void 0:P(m,4,4),realUsdValue:I?void 0:m?.toString(),error:I?oe().unknownPriceError.impactTitle:void 0},disabled:o==="failed",loading:o==="loading",loadingBalance:v,tooltipContainer:A(),onSelectMaxBalance:()=>{let x=P(T,k?.decimals),w=k?.amount?x.split(",").join(""):"";u(w)},anyWalletConnected:g.length>0}),rr.createElement(ql,null)),rr.createElement(Ng,{sharpBottomStyle:!r&&(!!d||e),label:Ag.t("To"),mode:"To",fetchingQuote:e,chain:{displayName:c?.displayName||"",image:c?.logo},token:{displayName:l?.symbol||"",image:l?.image,securityWarning:!!l?.warning},percentageChange:P($t(m,f),2,2),warningLevel:Ft(N??0),price:{value:P(h,6,6),usdValue:B?void 0:P(f,4,4),realValue:h?.toString(),realUsdValue:B?void 0:f?.toString(),error:B?oe().unknownPriceError.impactTitle:void 0},onClickToken:()=>n("to"),disabled:o==="failed",loading:o==="loading",tooltipContainer:A()}))}i(Gl,"Inputs");import{useCallback as Kb,useEffect as jb,useRef as Xb,useState as Yb}from"react";function Bg(){let{fetch:t,loading:e,cancelFetch:o}=Ni({request:async(n,r)=>await ot().getAllRoutes(n,r)});return{fetch:t,loading:e,cancelFetch:o}}i(Bg,"useFetchAllQuotes");var Zb=600;function Oi({refetchQuote:t}){let{fetch:e,cancelFetch:o}=Bg(),{excludeLiquiditySources:n,routing:r}=S().config,{connectedWallets:a}=S(),l=a.some(ge=>ge.isContractWallet),{fromToken:c,toToken:u,inputAmount:p,inputUsdValue:m,selectedQuote:h,sortStrategy:f,resetQuote:d,error:g,warning:C,setSelectedQuote:k,updateQuotePartialState:y}=U(),{slippage:T,customSlippage:v,affiliatePercent:I,affiliateRef:B,affiliateWallets:N,fetchStatus:x}=S(),w=S().getLiquiditySources(),b=S().getDisabledLiquiditySources(),E=S().excludeLiquiditySources(),{findToken:L}=S(),[M,q]=Yb(!0),ee=Xb(p),j=v??T,X=!c||!u||Pt(c,u)||!yn(p),ie=i(ge=>{q(ge)},"resetState"),O=i(ge=>{let{fromToken:Te,toToken:le,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,slippage:K,affiliateRef:ye,affiliatePercent:pe,affiliateWallets:$e}=ge;if(M||ie(!0),!X&&Te&&le){d();let Xe=$u({fromToken:Te,toToken:le,inputAmount:ct,liquiditySources:V,excludeLiquiditySources:D,disabledLiquiditySources:G,wallets:a,slippage:K,affiliateRef:ye,affiliatePercent:pe,affiliateWallets:$e,contractCall:l});Uo("experimental",r)&&(Xe.experimental=!0),Uo("avoidNativeFee",r)&&(Xe.avoidNativeFee=!0),Uo("enableCentralizedSwappers",r)&&(Xe.enableCentralizedSwappers=!0),r?.maxLength&&(Xe.maxLength=r.maxLength),e(Xe).then(ve=>{let Fe=Vr(f,ve.results),jt=xu(h,Fe,ve.requestAmount);q(!1),y("quotes",ve),k(jt),Bi({diagnosisMessages:ve.diagnosisMessages,requestId:jt?.requestId||"",swaps:jt?.swaps});let po=jt&&jo({currentQuote:jt,userSlippage:j,findToken:L});y("warning",po)}).catch(ve=>{let{error:Fe}=Wi(ve);(Fe?.type===0||Fe?.type===1)&&d(),Fe?.type!==2&&(y("error",Fe),q(!1))})}},"fetch"),R=Kb(wr(ge=>{O(ge)},Zb),[X]);return jb(()=>{if(!t){q(!1);return}if(x!=="success")return;if(X){q(!1),(h||g||C)&&d();return}if(!yn(p)||m?.eq(0)){ie(!1),o();return}d(),ie(!0);let ge=O;return ee.current&&ee.current!=p&&(ge=R),ee.current=p,ge({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:E,disabledLiquiditySources:b,slippage:j,affiliateRef:B,affiliatePercent:I,affiliateWallets:N,contractCall:l}),o},[x,p,c?.symbol,c?.address,c?.blockchain,u?.symbol,u?.address,u?.blockchain,X,w?.length,n,b.length,j,B,I,l,JSON.stringify(N)]),{fetch:()=>O({inputAmount:p,fromToken:c,toToken:u,liquiditySources:w,excludeLiquiditySources:E,disabledLiquiditySources:b,slippage:j,affiliateRef:B,affiliatePercent:I,affiliateWallets:N,contractCall:l}),loading:M}}i(Oi,"useSwapInput");function Wg(t,e){let o=!1,n={preventDefault(){o=!0},...t.payload===void 0&&{payload:t.payload}};Se.emit("uiEvent",{type:t.type,payload:n}),o||e()}i(Wg,"emitPreventableEvent");var rx=ex("div",{display:"flex",alignItems:"flex-start",maxHeight:700,"& .footer__alert":{paddingTop:"0 !important"}}),ix=300;function _g(){let t=nx(),{fromToken:e,toToken:o,inputAmount:n,selectedQuote:r,refetchQuote:a,error:s,warning:l,quotes:c,setSelectedQuote:u,resetQuoteWallets:p,setQuoteWarningsConfirmed:m,updateQuotePartialState:h}=U(),[f,d]=Pg(!1),{isLargeScreen:g,isExtraLargeScreen:C}=Jo(),{fetch:k,loading:y}=Oi({refetchQuote:a}),{config:T,fetchStatus:v,connectedWallets:I}=S(),{isActiveTab:B}=te(),[N,x]=Pg(!1),b=Mu({fetchMetaStatus:v,fetchingQuote:y,inputAmount:n,quote:r,anyWalletConnected:I.length>0,error:s,warning:l,needsToWarnEthOnPath:!1}),E=Tp(g,C,T?.variant),L=!!n&&!!e&&!!o&&new ox(n).gt(0)&&!qu(e,o),M=L&&v==="success"&&y,j=(!E||E&&c?.results.length)&&(l||s);Mg(()=>{p(),h("refetchQuote",!0)},[]),Mg(()=>{d(L)},[L]);let _=(r||s)&&!N?k:void 0,X=i(O=>{E&&f?(d(!1),setTimeout(()=>{t(O)},ix)):t(O)},"onHandleNavigation"),ie=i(O=>{r?.requestId!==O.requestId&&(x(!1),u(O))},"onClickOnQuote");return Ke.createElement(rx,null,Ke.createElement(re,{height:"auto",footer:Ke.createElement(Rb,{id:`widget-swap-${b.action}-btn`,type:"primary",size:"large",disabled:b.disabled||!B,prefix:b.action==="confirm-warning"&&Ke.createElement(tx,null),fullWidth:!0,onClick:()=>{b.action==="connect-wallet"?Wg({type:"clickConnectWallet"},()=>X(F.wallets)):b.action==="confirm-warning"?x(!0):X(F.confirmSwap)}},b.title),header:{onWallet:()=>{X(F.wallets)},hasBackButton:!1,title:T.title||Jb.t("Swap"),suffix:Ke.createElement(xo,{hidden:E?["refresh"]:void 0,onClickRefresh:_,onClickHistory:()=>X(F.swaps),onClickSettings:()=>{X(F.settings)}})}},Ke.createElement(ae,null,Ke.createElement(Gl,{fetchingQuote:M,fetchMetaStatus:v,isExpandable:E,onClickToken:O=>{X(O==="from"?F.fromSwap:F.toSwap)}}),Ke.createElement(Lg,{size:"2"}),E?null:Ke.createElement(No,{quote:r,loading:M,error:s,tagHidden:!1,warning:l,type:"basic",onClickAllRoutes:c&&c.results.length>1?()=>{h("refetchQuote",!1),X(F.routes)}:void 0}),j?Ke.createElement(Ke.Fragment,null,Ke.createElement(Lg,{size:"10"}),Ke.createElement(On,{warning:l,error:s,couldChangeSettings:!0,refetchQuote:k,showWarningModal:N,confirmationDisabled:!B,onOpenWarningModal:()=>x(!0),onCloseWarningModal:()=>x(!1),onConfirmWarningModal:()=>{x(!1),m(!0),X(F.confirmSwap)},onChangeSettings:()=>X(F.settings)})):null,Ke.createElement(Fl,null))),E?Ke.createElement(zl,{loading:M,onClickOnQuote:ie,fetch:k,onClickRefresh:_,isVisible:f}):null)}i(_g,"Home");import{i18n as Dg}from"@lingui/core";import{Alert as ax,Divider as sx,List as lx,ListItemButton as cx,Radio as px,RadioRoot as ux,Typography as mx}from"@rango-dev/ui";import Wt from"react";function io(){let{setLanguage:t,language:e,config:o}=S(),n=Wp,r=o?.language||zo;return{activeLanguage:e||r,languages:n,defaultLanguage:r,changeLanguage:a=>t(a||zo),resetLanguage:()=>t(null)}}i(io,"useLanguage");function $g(){let{activeLanguage:t,changeLanguage:e,languages:o}=io(),n=ze(),r=o.map(a=>{let{local:s,label:l,SVGFlag:c}=a;return{id:`widget-setting-languages-${s}-item-btn`,value:s,title:Wt.createElement(mx,{variant:"title",size:"xmedium"},l),onClick:()=>{e(a.local),n()},end:Wt.createElement(px,{value:s}),start:Wt.createElement(c,null)}});return Wt.createElement(re,{header:{title:Dg.t("Language")}},Wt.createElement(ae,null,Wt.createElement(ax,{type:"warning",variant:"alarm",title:"Warning: We are using machine translation, so the translations may be inaccurate."}),Wt.createElement(sx,{size:"8"}),Wt.createElement(ux,{value:t},Wt.createElement(lx,{type:Wt.createElement(cx,{title:Dg.t("language"),id:"_",onClick:()=>console.log()}),items:r}))))}i($g,"LanguagePage");import{i18n as Gt}from"@lingui/core";import{Button as yx,Checkbox as Sx,Image as Cx,ListItemButton as kx,NotFound as Tx,Typography as vx}from"@rango-dev/ui";import je,{useState as wx}from"react";import{Checkbox as gx,Skeleton as Og}from"@rango-dev/ui";import ar from"react";import{styled as Vl}from"@rango-dev/ui";var ir=Vl("ul",{padding:"$15 $5 0",margin:0,listStyle:"none",height:"100%",overflowY:"auto",variants:{disabled:{true:{pointerEvents:"none"}}}}),Kl=Vl("div",{width:80,display:"flex",justifyContent:"flex-end"}),jl=Vl("div",{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%"});import{ListItem as dx,styled as fx}from"@rango-dev/ui";var Fg=fx(dx,{height:61});var hx=30;function Xl(){return ar.createElement(ir,null,Array.from(Array(hx),(t,e)=>ar.createElement(Fg,{hasDivider:!0,key:e,start:ar.createElement(Og,{variant:"circular",width:35,height:35}),title:ar.createElement(Og,{variant:"text",size:"large",width:90}),end:ar.createElement(gx,{checked:!1})})))}i(Xl,"LoadingLiquiditySourceList");function Yl({sourceType:t}){let e=S().fetchStatus,o=S().swappers(),n=S().getDisabledLiquiditySources(),[r,a]=wx(""),s=S().toggleLiquiditySource,l=S().isInCampaignMode(),c=Mr(o,n),u={Exchanges:Gt.t("Exchanges"),Bridges:Gt.t("Bridges")},p=[];t==="Exchanges"&&p.push("DEX"),t==="Bridges"&&p.push("BRIDGE","AGGREGATOR","OFF_CHAIN");let m=c.filter(k=>p.includes(k.type)),h=m.length===m.filter(k=>k.selected).length,f=i(()=>{m.forEach(k=>{h?s(k.groupTitle):k.selected||s(k.groupTitle)})},"toggleAllSources"),d=m.map(k=>{let{selected:y,groupTitle:T,logo:v,id:I,...B}=k;return{id:`widget-setting-liquidity-source-${I.toLowerCase().replace(/\s+/g,"-")}-item-btn`,start:je.createElement(Cx,{src:v,size:22,type:"circular"}),onClick:()=>{l||s(T)},end:je.createElement(Sx,{checked:y,disabled:l}),title:je.createElement(vx,{variant:"title",size:"xmedium"},Gt.t(T)),selected:y,groupTitle:T,logo:v,...B}}),g=i(k=>{let y=k.target.value;a(y)},"handleSearch"),C=d;return r&&(C=d.filter(k=>xt(k.groupTitle,r))),je.createElement(re,{header:{title:Gt.t(t),suffix:je.createElement(Kl,null,je.createElement(yx,{id:`widget-liquidity-source-${h?"deselect-all":"select-all"}-btn`,variant:"ghost",size:"xsmall",onClick:f},h?Gt.t("Deselect all"):Gt.t("Select all")))}},je.createElement(ae,{view:!0},je.createElement(vt,{value:r,setValue:a,fullWidth:!0,color:"light",variant:"contained",placeholder:Gt.t("Search {sourceType}",{sourceType:u[t]}),onChange:g}),e==="loading"&&je.createElement(Xl,null),!C.length&&r?je.createElement(jl,null,je.createElement(Tx,{title:Gt.t("No results found"),description:Gt.t("Try using different keywords")})):e==="success"&&je.createElement(ir,{disabled:l},C.map(k=>{let{groupTitle:y,...T}=k;return je.createElement(je.Fragment,{key:k.id},je.createElement(kx,{style:{height:"61px"},...T,selected:!1,hasDivider:!0}))}))))}i(Yl,"LiquiditySourcePage");import{i18n as bx}from"@lingui/core";import Ui from"react";import{useNavigate as xx}from"react-router-dom";function Ug(){let t=xx(),e=ze(),{selectedQuote:o,refetchQuote:n,setSelectedQuote:r,updateQuotePartialState:a,error:s}=U(),{fetch:l,loading:c}=Oi({refetchQuote:n}),u=i(h=>{r(h),a("refetchQuote",!1),e()},"onClickOnQuote"),p=`../${F.settings}`,m=`../${F.wallets}`;return Ui.createElement(re,{header:{onWallet:()=>{t(m),a("refetchQuote",!0)},onBack:()=>{a("refetchQuote",!1)},title:bx.t("Routes"),suffix:Ui.createElement(xo,{onClickRefresh:o||s?l:void 0,hidden:["notifications","history"],onClickSettings:()=>{t(p),a("refetchQuote",!0)}})}},Ui.createElement(ae,null,Ui.createElement(nr,{fetch:l,loading:c,onClickOnQuote:u})))}i(Ug,"RoutesPage");import{i18n as Kg}from"@lingui/core";import{Divider as jg,getCategoriesCount as _x,SelectableCategoryList as Dx}from"@rango-dev/ui";import Vt,{useState as Xg}from"react";import{useNavigate as $x}from"react-router-dom";import{i18n as Zl}from"@lingui/core";import{Divider as Nx,Image as Bx,ListItemButton as Wx,NotFound as Lx,Typography as Vg}from"@rango-dev/ui";import st,{useEffect as Mx,useState as Px}from"react";var zg=i((t,e,o)=>t.filter(n=>br(n.type,o)).filter(n=>tt(n.name,e)||tt(n.displayName,e)),"filterBlockchains");import{ImageContainer as Ex,styled as Qg}from"@rango-dev/ui";var Hg=Qg("div",{display:"flex",flexDirection:"column",overflow:"hidden",height:"100%",justifyContent:"center"}),zi=Qg(Ps,{padding:0,margin:0,listStyle:"none",[`& ${Ex}`]:{borderRadius:"$xm",overflow:"hidden"}});import{ListItem as Ix,Skeleton as qg}from"@rango-dev/ui";import Qi from"react";var Ax=20;function Gg(){return Qi.createElement(zi,null,Array.from(Array(Ax),t=>Qi.createElement(Ix,{key:t,hasDivider:!0,start:Qi.createElement(qg,{variant:"circular",width:35,height:35}),title:Qi.createElement(qg,{variant:"text",size:"large",width:90})})))}i(Gg,"LoadingBlockchainList");function Jl(t){let{list:e,searchedFor:o,onChange:n,blockchainCategory:r,showTitle:a=!0}=t,[s,l]=Px(e),{fetchStatus:c}=S();Mx(()=>{l([...zg(e,o,r)])},[e,o,r]);let u=i(()=>!s.length&&o?st.createElement(Lx,{title:Zl.t("No results found"),description:Zl.t("Try using different keywords")}):st.createElement(zi,{as:"ul",key:`${r}-${o}`},s.map(p=>st.createElement(Wx,{key:`${p.name}-${p.chainId}`,className:"widget-blockchain-list-item-btn",hasDivider:!0,onClick:()=>n(p),start:st.createElement(Bx,{src:p.logo,size:30}),title:st.createElement(Vg,{variant:"title",size:"medium"},p.displayName),id:p.name}))),"renderList");return st.createElement(st.Fragment,null,a&&st.createElement(st.Fragment,null,st.createElement(Vg,{variant:"label",size:"large"},Zl.t("Select Chain")),st.createElement(Nx,{size:4})),st.createElement(Hg,null,c==="loading"&&st.createElement(Gg,null),c==="success"&&u()))}i(Jl,"BlockchainList");function Hi(t){let{type:e}=t,o=ze(),[n,r]=Xg(""),[a,s]=Xg("ALL"),l=U.use.setToBlockchain(),c=U.use.setFromBlockchain(),{fetchStatus:u}=S(),p=$x(),m=S().blockchains({type:e}),h=_x(m),f=!t.hideCategory&&h!==1;return Vt.createElement(re,{header:{title:Kg.t("Select Chain")}},Vt.createElement(ae,{view:!0},f&&Vt.createElement(Vt.Fragment,null,Vt.createElement(Dx,{setCategory:s,category:a,blockchains:m,isLoading:u==="loading"}),Vt.createElement(jg,{size:24})),Vt.createElement(vt,{value:n,autoFocus:!0,placeholder:Kg.t("Search Chain"),color:"light",variant:"contained",size:"large",setValue:()=>r(""),onChange:d=>r(d.target.value)}),Vt.createElement(jg,{size:16}),Vt.createElement(Jl,{list:m,showTitle:e!=="custom-token",searchedFor:n,blockchainCategory:a,onChange:d=>{e==="custom-token"?p(`..?blockchain=${d.name}`,{replace:!0}):(e==="source"?c(d):l(d),o())}})))}i(Hi,"SelectBlockchainPage");import{i18n as Vi}from"@lingui/core";import{Divider as oh,Spinner as Jx}from"@rango-dev/ui";import ao,{useEffect as Rx,useState as eE}from"react";import{useNavigate as tE}from"react-router-dom";import{i18n as tc}from"@lingui/core";import{BlockchainsChip as qi,Divider as Rg,Image as eh,Skeleton as Hx,Tooltip as qx,Typography as oc}from"@rango-dev/ui";import we from"react";import{useEffect as Ux}from"react";var Yg=["ETH","COSMOS","OSMOSIS"];function Rl(t,e,o){let n=JSON.parse(JSON.stringify(t)),r=[];if(n.sort(Fx),o?.limit&&t.length>o.limit){let a=o.limit,s=e;if(e.length<=o.limit){let l=o.limit-e.length;for(let c=0;c<=l;c++){let u=n[c];s=s.filter(p=>u.name!==p)}}n.sort(Ox(s)),r=n.splice(a)}return{list:n,more:r}}i(Rl,"prepare");function Fx(t,e){let o=Yg,n=o.findIndex(l=>l===t.name),r=o.findIndex(l=>l===e.name),a=n>-1,s=r>-1;return a&&s?n>r?1:-1:a?-1:s?1:0}i(Fx,"sortByMostUsedBlockchains");function Ox(t){return i(function(o,n){let r=t.findIndex(c=>c===o.name),a=t.findIndex(c=>c===n.name),s=r>-1,l=a>-1;return s&&l?r>a?1:-1:t.includes(o.name)?-1:t.includes(n.name)?1:0},"sortByPreferred")}i(Ox,"generateSortByPreferredBlockchainsFor");function Zg(t,e){return!!e.list.find(o=>o.name===t)}i(Zg,"isInVisibleList");function ec(t,e){let{preferredBlockchains:o,addPreferredBlockchain:n}=S();Ux(()=>{if(e?.selected){let a=Rl(t,o,e);Zg(e.selected,a)||n(e?.selected)}},[e?.selected]);let r=Rl(t,o,e);return{list:r.list,more:r.more,history:[]}}i(ec,"usePrepareBlockchainList");import{styled as zx}from"@rango-dev/ui";var Jg=zx("div",{display:"grid",gap:"$10",gridTemplateColumns:"repeat(6, minmax(0, 1fr))"});var Gx=6,Vx=12;function nc(t){let{blockchains:e,type:o,blockchain:n,onChange:r,onMoreClick:a}=t,{showCompactTokenSelector:s}=te(),l=ec(e,{limit:s?4:10,selected:n?.name}),{fetchStatus:c}=S(),u=U.use.resetToBlockchain(),p=U.use.resetFromBlockchain(),m=l.more.length>0,h=l.more.length===1,f=!h&&m;return we.createElement(we.Fragment,null,!s&&we.createElement(we.Fragment,null,we.createElement(Rg,{size:12}),we.createElement(oc,{variant:"label",size:"large"},tc.t("Select Chain"))),we.createElement(Rg,{size:12}),we.createElement(Jg,null,c==="loading"&&Array.from(Array(s?Gx:Vx),(d,g)=>we.createElement(Hx,{key:g,variant:"rounded",height:50})),c==="success"&&we.createElement(we.Fragment,null,we.createElement(qi,{selected:!n,onClick:()=>{o==="from"?p():u()}},we.createElement(oc,{variant:"body",size:"xsmall",color:"secondary500"},tc.t("All"))),l.list.map(d=>we.createElement(qx,{key:d.name,content:d.shortName,side:"bottom",sideOffset:2,container:A()},we.createElement(qi,{key:d.name,selected:!!n&&n.name===d.name,onClick:()=>r(d)},we.createElement(eh,{src:d.logo,size:30})))),h?we.createElement(qi,{key:l.more[0].name,selected:!!n&&n.name===l.more[0].name,onClick:()=>r(l.more[0])},we.createElement(eh,{src:l.more[0].logo,size:30})):null,f?we.createElement(qi,{onClick:a,key:"more-blockchains"},we.createElement(oc,{variant:"body",size:"xsmall",color:"secondary500"},tc._("More +{count}",{count:l.more.length}))):null)))}i(nc,"BlockchainsSection");import{useCallback as jx,useRef as Xx,useState as rc}from"react";function ic(){let t=S().blockchains(),e=Xx(null),{customTokens:o}=S(),[n,r]=rc(!1),[a,s]=rc([]),[l,c]=rc(null),u=i(async(h,f)=>{c(null),r(!0),s([]);try{let d=await ot().searchCustomTokens({query:h,blockchain:f},{signal:e.current?.signal}),g=new Set(o().map(y=>Dt(y))),C=new Set(t.map(y=>y.name)),k=d.tokens.filter(y=>C.has(y.blockchain)&&!g.has(Dt(y)));s(k),r(!1)}catch(d){c(d instanceof Error?d.message:"something went wrong"),s([]),d?.name!=="CanceledError"&&r(!1)}},"fetch"),p=jx(wr((h,f)=>{e.current?.signal.aborted||u(h,f)},600),[t.length]);return{fetch:(h,f)=>{e.current=new AbortController,s([]),r(!0),p(h,f)},cancel:i(()=>{e.current?.abort()},"cancel"),loading:n,tokens:a,error:l}}i(ic,"useSearchCustomTokens");function Gi(t,e,o){return o&&t.length===1&&t[0].address===e?!1:t.length<20&&e.trim().length>=3}i(Gi,"shouldSearchForCustomTokens");function th(t,e,o,n,r){let a=[...t];return Gi(t,o,r)&&(a=n?[...a,"skeleton","skeleton","skeleton"]:[...a,...e.map(s=>({...s,customToken:!0,warning:!0}))]),a}i(th,"prepareTokensList");function Ki(t){let{type:e}=t,o=tE(),n=ze(),{fromBlockchain:r,toBlockchain:a,setFromToken:s,setToToken:l,setFromBlockchain:c,setToBlockchain:u}=U(),{getBalanceFor:p}=S(),{fetch:m,loading:h,tokens:f,cancel:d}=ic(),[g,C]=eE(""),k=e==="source"?r:a,y=k?.name??"",T=S().blockchains({type:e}),v=S().tokens({type:e,blockchain:y,searchFor:g,getBalanceFor:p}),I=th(v,f,g,h,k?.name),B=i(w=>{e==="source"?c(w):u(w)},"updateBlockchain"),N=i(w=>{e==="source"?s({token:w,meta:{blockchains:T}}):l({token:w,meta:{blockchains:T}})},"updateToken"),x={source:Vi.t("Source"),destination:Vi.t("Destination")};return Rx(()=>(Gi(v,g,k?.name)&&m(g,k?.name??void 0),()=>{d()}),[v.length,g,k?.name]),ao.createElement(re,{header:{title:Vi.t("Swap {type}",{type:x[e]})}},ao.createElement(ae,null,ao.createElement(nc,{blockchains:T,type:e=="source"?"from":"to",blockchain:e==="source"?r:a,onMoreClick:()=>o(F.blockchains),onChange:w=>{B(w)}}),ao.createElement(oh,{size:24}),ao.createElement(vt,{value:g,autoFocus:!0,placeholder:Vi.t("Search Token"),color:"light",variant:"contained",size:"large",setValue:()=>C(""),onChange:w=>C(w.target.value),suffix:Gi(v,g,k?.name)&&h?ao.createElement(Jx,{size:12,color:"secondary"}):void 0}),ao.createElement(oh,{size:16}),ao.createElement(Zn,{list:I,selectedBlockchain:y,searchedFor:g,type:e,onChange:w=>{N(w);let b=T.find(E=>w.blockchain===E.name);b&&B(b),n()}})))}i(Ki,"SelectSwapItemsPage");import{i18n as cc}from"@lingui/core";import{Alert as AE,Button as NE,styled as BE}from"@rango-dev/ui";import Po from"react";import{useInRouterContext as WE,useSearchParams as LE}from"react-router-dom";import{i18n as lh}from"@lingui/core";import{Alert as iE,Divider as sc,InfoIcon as aE,SlippageIcon as sE,TextField as lE,Tooltip as cE,Typography as ch}from"@rango-dev/ui";import _e from"react";import{Chip as oE,styled as sr,TextField as nE}from"@rango-dev/ui";var nh=sr("div",{paddingTop:"$5",padding:"$10 $5"}),rh=sr("div",{display:"flex",flexWrap:"wrap",gap:"$10",[`& ${nE}`]:{flex:"1 1 0",maxWidth:"127px",minWidth:"85px"}}),ih=sr("div",{display:"flex",justifyContent:"start",alignItems:"center",paddingBottom:"$10"}),ji=sr("div",{maxWidth:"280px",padding:"$10"}),ah=sr(oE,{width:"61px",flexShrink:0});import{i18n as ac}from"@lingui/core";import{Typography as rE}from"@rango-dev/ui";import lr from"react";function sh(){return lr.createElement(ji,null,lr.createElement(rE,{variant:"label",size:"medium",color:"neutral700"},ac.t("Your transaction will be reverted if the price changes unfavorably by more than this percentage."),lr.createElement("br",null),lr.createElement("br",null),lr.createElement("b",null,ac.t("Warning")),":\xA0",ac.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(sh,"SlippageTooltipContent");function lc(){let{slippage:t,setSlippage:e,customSlippage:o,setCustomSlippage:n}=S(),r=o!==null?Ap(o):null,a=i(c=>{let u=c.target.value,p=parseFloat(u);if(isNaN(p))return n(null);let m=p;p>Tn&&(m=Tn),n(m)},"onSlippageValueChange"),s=i(c=>{o!==null&&n(null),e(c)},"onClickSlippageChip"),l=i(c=>{let u=c.target,p=/^(0|[1-9]\d*)(\.\d{1,2})?$/,m=u.value;p.test(m)||(u.value=m.slice(0,-1))},"onInput");return _e.createElement(nh,null,_e.createElement(ih,null,_e.createElement(sE,{size:16,color:"gray"}),_e.createElement(sc,{direction:"horizontal",size:4}),_e.createElement(ch,{variant:"title",size:"xmedium"},lh.t("Slippage tolerance per swap")),_e.createElement(sc,{direction:"horizontal",size:4}),_e.createElement(cE,{container:A(),side:"top",sideOffset:4,content:_e.createElement(sh,null)},_e.createElement(aE,{color:"gray"}))),_e.createElement(rh,null,vp.map((c,u)=>{let p=`slippage-${u}`;return _e.createElement(ah,{key:p,onClick:()=>s(c),selected:o===null&&c===t,label:`${c.toString()}%`})}),_e.createElement(lE,{type:"number",min:"0.01",max:"30",step:"0.01",onInput:l,fullWidth:!0,variant:"contained",value:o===null?"":o,color:"dark",onChange:a,suffix:o&&_e.createElement(ch,{variant:"body",size:"small"},"%"),placeholder:lh.t("Custom")})),r&&_e.createElement(_e.Fragment,null,_e.createElement(sc,{size:10}),_e.createElement(iE,{variant:"alarm",type:r.type,title:r.message})))}i(lc,"Slippage");import{i18n as ht}from"@lingui/core";import{AutoThemeIcon as ph,BridgesIcon as pE,ChevronRightIcon as Xi,DarkModeIcon as uh,Divider as cr,ExchangeIcon as uE,InfinityIcon as mE,InfoIcon as dE,LanguageIcon as fE,LightModeIcon as mh,List as gE,ListItem as hE,ListItemButton as yE,Skeleton as SE,styled as CE,Switch as kE,Tabs as TE,TargetIcon as vE,Tooltip as wE,Typography as et}from"@rango-dev/ui";import $ from"react";import{useNavigate as bE}from"react-router-dom";var xE=CE("div",{width:"202px",height:"$40"}),EE=[{id:"light",icon:$.createElement(mh,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Light"))},{id:"dark",icon:$.createElement(uh,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Dark"))},{id:"auto",icon:$.createElement(ph,{color:"black",size:24}),tooltip:$.createElement(et,{size:"xsmall",variant:"body"},ht.t("Auto"))}],IE=i(t=>{let e={color:"gray",size:16};switch(t){case"auto":return $.createElement(ph,{...e});case"dark":return $.createElement(uh,{...e});default:return $.createElement(mh,{...e})}},"getThemeIcon");function dh(){let t=bE(),{theme:e}=S().config,{setTheme:o,theme:n}=S(),{activeLanguage:r,languages:a}=io(),s=a.find(_=>_.local===r)?.label,l=S().fetchStatus,c=S().swappers(),u=S().getDisabledLiquiditySources(),{config:{features:p}}=S(),m=S().customTokens(),h=Ye("theme",p),f=Ye("liquiditySource",p),d=Ye("language",p),g=Ye("customTokens",p),C=S().infiniteApprove,k=S().toggleInfiniteApprove,y=Mr(c,u),T=y.filter(_=>["BRIDGE","AGGREGATOR","OFF_CHAIN"].includes(_.type)),v=T.length,I=T.filter(_=>_.selected).length,B=y.filter(_=>_.type==="DEX"),N=B.length,x=B.filter(_=>_.selected).length,w=i((_,X)=>{switch(l){case"loading":return $.createElement(SE,{variant:"text",size:"medium",width:50});case"failed":return $.createElement(et,{variant:"body",size:"medium",color:"$error500"},ht.t("Loading failed"));default:return $.createElement(et,{variant:"body",size:"medium"},`${_} / ${X}`)}},"handleSwapperEndItem"),b={id:"widget-setting-bridge-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Bridges")),end:$.createElement($.Fragment,null,w(I,v),$.createElement(cr,{direction:"horizontal",size:8}),$.createElement(Xi,{color:"black"})),onClick:()=>t(F.bridges),start:$.createElement(pE,{color:"gray",size:16})},E={id:"widget-setting-exchange-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Exchanges")),end:$.createElement($.Fragment,null,w(x,N),$.createElement(cr,{direction:"horizontal",size:8}),$.createElement(Xi,{color:"black"})),start:$.createElement(uE,{color:"gray",size:16}),onClick:()=>t(F.exchanges)},L={id:"widget-setting-custom-tokens-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Custom Tokens")),end:$.createElement($.Fragment,null,$.createElement(et,{variant:"body",size:"medium"},`${m.length}`),$.createElement(cr,{direction:"horizontal",size:8}),$.createElement(Xi,{color:"black"})),start:$.createElement(vE,{color:"gray",size:16}),onClick:()=>t(F.customTokens)},M={id:"widget-setting-language-item-btn",title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Language")),start:$.createElement(fE,{color:"gray",size:16}),end:$.createElement($.Fragment,null,$.createElement(et,{variant:"body",size:"medium"},s),$.createElement(cr,{direction:"horizontal",size:8}),$.createElement(Xi,{color:"black"})),onClick:()=>t(F.languages)},q={id:"widget-setting-infinite-approval-item-btn",title:$.createElement($.Fragment,null,$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Infinite approval")),$.createElement(cr,{direction:"horizontal",size:4}),$.createElement(wE,{side:"top",sideOffset:4,container:A(),content:$.createElement(ji,null,$.createElement(et,{variant:"label",size:"medium",color:"neutral700"},$.createElement("b",null,ht.t("Warning")),":\xA0",ht.t("Enabling the 'Infinite approval' mode grants unrestricted access to underlying smart contracts, allowing them to utilize the approved token amount without limitations.")))},$.createElement(dE,{color:"gray"}))),start:$.createElement(mE,{color:"gray",size:16}),end:$.createElement(kE,{checked:C}),onClick:k},ee={id:"widget-setting-theme-item-btn",type:$.createElement(hE,null),title:$.createElement(et,{variant:"title",size:"xmedium"},ht.t("Theme")),end:$.createElement(xE,null,$.createElement(TE,{container:A(),items:EE,value:n,onChange:_=>o(_.id),type:"primary",borderRadius:"small"})),start:IE(n)},j=f?[]:[b,E];return g||j.push(L),d||j.push(M),j.push(q),!e?.singleTheme&&!h&&j.push(ee),$.createElement(gE,{type:$.createElement(yE,{hasDivider:!0,id:"_",onClick:()=>console.log()}),items:j})}i(dh,"SettingsLists");var ME=BE("div",{paddingLeft:"$8"});function fh(){let{isInCampaignMode:t,updateCampaignMode:e}=S(),o=t(),[,n]=LE(),r=WE(),a=i(()=>{r&&o&&(n(s=>(s.delete("liquiditySources"),s),{replace:!0}),e("liquiditySources",void 0))},"onClick");return Po.createElement(re,{header:{title:cc.t("Settings")}},Po.createElement(ae,null,o&&Po.createElement(AE,{type:"info",variant:"alarm",title:cc.t("Currently, you're in campaign mode with restrictions on liquidity sources. Would you like to switch out of this mode and make use of all available liquidity sources?"),action:Po.createElement(ME,null,Po.createElement(NE,{id:"widget-setting-exit-campaign-mode-btn",type:"secondary",size:"small",onClick:a},cc.t("Reset")))}),Po.createElement(lc,null),Po.createElement(dh,null)))}i(fh,"SettingsPage");import{i18n as wI}from"@lingui/core";import{cancelSwap as bI}from"@rango-dev/queue-manager-rango-preset";import{useManager as xI}from"@rango-dev/queue-manager-react";import{Alert as EI}from"@rango-dev/ui";import Ec from"react";import{useParams as II}from"react-router-dom";import{i18n as lt}from"@lingui/core";import{getCurrentNamespaceOfOrNull as rI,getCurrentStep as iI,getRelatedWalletOrNull as aI}from"@rango-dev/queue-manager-rango-preset";import{Button as Yh,CopyIcon as sI,Divider as lI,DoneIcon as cI,IconButton as pI,QuoteCost as uI,RangoExplorerIcon as mI,StepDetails as dI,Tooltip as Zh,Typography as _o,useCopyToClipboard as fI}from"@rango-dev/ui";import{useWallets as gI}from"@rango-dev/wallets-react";import Jh from"bignumber.js";import{PendingSwapNetworkStatus as oa}from"rango-types";import Z,{useEffect as Rh,useRef as hI,useState as ey}from"react";import{useNavigate as yI}from"react-router-dom";import{i18n as so}from"@lingui/core";var PE=[so.t("Sunday"),so.t("Monday"),so.t("Tuesday"),so.t("Wednesday"),so.t("Thursday"),so.t("Friday"),so.t("Saturday")];function gh(t){let e=new Date(t),o=e.getDate(),n=e.toLocaleString("default",{month:"long"}),r=e.getFullYear();return`${e.getDay()===new Date().getDay()?so.t("Today"):`${PE[e.getDay()]} ${o} ${n} ${r}`}, ${new Date(t).toLocaleTimeString()}`}i(gh,"timeSince");function hh(t){return t.finishTime?gh(parseInt(t.finishTime)):gh(parseInt(t.creationTime))}i(hh,"getSwapDate");import{PendingSwapNetworkStatus as Ji}from"rango-types";import Ri from"react";import{i18n as Yi}from"@lingui/core";import{Button as yh,Divider as pc,MessageBox as _E}from"@rango-dev/ui";import lo from"react";var Sh=i(({onCancel:t,onClose:e})=>lo.createElement(lo.Fragment,null,lo.createElement(pc,{size:20}),lo.createElement(_E,{type:"error",title:Yi.t("Cancel Swap"),description:Yi.t("Are you sure you want to cancel this swap?")}),lo.createElement(pc,{size:32}),lo.createElement(yh,{variant:"contained",id:"widget-swap-details-modal-cancel-swap-yes-btn",type:"primary",size:"large",onClick:t},Yi.t("Yes, Cancel it")),lo.createElement(pc,{size:12}),lo.createElement(yh,{id:"widget-swap-details-modal-cancel-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Yi.t("No, Continue"))),"CancelContent");import{i18n as Zi}from"@lingui/core";import{Button as Ch,Divider as uc,MessageBox as DE,Typography as $E}from"@rango-dev/ui";import Kt from"react";var kh=i(({onDelete:t,onClose:e})=>Kt.createElement(Kt.Fragment,null,Kt.createElement(uc,{size:20}),Kt.createElement(DE,{type:"error",title:Zi.t("Delete Transaction"),description:Zi.t("Are you sure you want to delete this swap?")}),Kt.createElement(uc,{size:32}),Kt.createElement(Ch,{id:"widget-swap-details-modal-delete-swap-yes-btn",variant:"contained",type:"primary",size:"large",onClick:t},Zi.t("Yes, Delete it")),Kt.createElement(uc,{size:12}),Kt.createElement(Ch,{id:"widget-swap-details-modal-delete-swap-no-btn",variant:"outlined",type:"primary",size:"large",onClick:e},Kt.createElement($E,{variant:"title",size:"medium",color:"primary"},Zi.t("No, Cancel")))),"DeleteContent");import{i18n as mc}from"@lingui/core";import{PendingSwapNetworkStatus as dc}from"rango-types";var fc={[dc.WaitingForNetworkChange]:{type:"loading",title:mc.t("Change Network")},[dc.WaitingForConnectingWallet]:{type:"warning",title:mc.t("Connect Wallet")},[dc.NetworkChanged]:{type:"success",title:mc.t("Network Changed")}};import{warn as FE}from"@rango-dev/logging-core";import{getCurrentStep as OE,getRelatedWalletOrNull as UE}from"@rango-dev/queue-manager-rango-preset";import{MessageBox as zE,Wallet as QE}from"@rango-dev/ui";import{useWallets as HE}from"@rango-dev/wallets-react";import un,{useState as qE}from"react";import{styled as gc}from"@rango-dev/ui";var Th=gc("div",{display:"flex",justifyContent:"center"}),JK=gc("div",{maxWidth:280,"& ._typography":{wordWrap:"break-word",display:"block"}}),vh=gc("img",{width:"100%"});var wh=i(t=>{let{type:e,title:o,swap:n,message:r,showWalletButton:a,walletButtonDisabled:s}=t,[l,c]=qE(),{getWalletInfo:u,state:p}=HE(),m=OE(n),h=m?UE(n,m):null,f=m?.fromBlockchain,d=h?.walletType,g=d?Sn(p(d)):null,C=d?u(d):null,k=a&&!!d&&!!g&&!!C,{list:y}=yt(),T=i(()=>{if(d){let v=y.find(I=>I.type===d);v?c(v):FE(new Error(`It seems requested wallet to be connected is not available in the list. requested wallet: ${v}`))}},"handleWalletItemClick");return un.createElement(un.Fragment,null,un.createElement(zE,{type:e,title:o,description:r}),k&&un.createElement(Th,null,un.createElement(QE,{container:A(),title:C.name,image:C.img,type:d,state:g,link:C.installLink,disabled:s,onClick:T})),un.createElement(Co,{wallet:l,onClose:()=>{c(void 0)},options:{defaultSelectedChains:f?[f]:void 0}}))},"WalletStateContent");function hc(t){let{state:e,onClose:o,onDelete:n,onCancel:r,swap:a,message:s,walletButtonDisabled:l}=t,c=e===Ji.WaitingForNetworkChange||e===Ji.WaitingForConnectingWallet||e===Ji.NetworkChanged;return Ri.createElement(J,{open:!!e,onClose:o,container:document.getElementById(Oe.SWAP_BOX_ID)||document.body},c&&Ri.createElement(wh,{type:fc[e].type,title:fc[e].title,swap:a,message:s,walletButtonDisabled:l,showWalletButton:e!==Ji.WaitingForNetworkChange}),e==="delete"&&Ri.createElement(kh,{onClose:o,onDelete:n}),e==="cancel"&&Ri.createElement(Sh,{onClose:o,onCancel:r}))}i(hc,"SwapDetailsModal");import{i18n as pr}from"@lingui/core";import{Button as yc,Divider as ur,MessageBox as Eh,TokenAmount as GE,Typography as Ih}from"@rango-dev/ui";import he from"react";import{Link as VE,useNavigate as KE}from"react-router-dom";var bh="https://raw.githubusercontent.com/rango-exchange/assets/main/banners/widget/profile.jpg",xh="/profile";function Sc(t){let{open:e,onClose:o,status:n,priceValue:r,usdValue:a,realUsdValue:s,realValue:l,token:c,chain:u,percentageChange:p,description:m,diagnosisUrl:h}=t,f=KE(),{showProfileBanner:d}=te();return he.createElement(J,{open:e,onClose:o,container:document.getElementById(Oe.SWAP_BOX_ID)||document.body},n==="success"?he.createElement(Eh,{type:"success",title:pr.t("Swap Successful")},he.createElement(GE,{direction:"vertical",tooltipContainer:A(),type:"output",centerAlign:!0,price:{value:r,usdValue:a,realUsdValue:s,realValue:l},token:c,chain:u,percentageChange:p}),he.createElement(ur,{size:12}),he.createElement(Ih,{variant:"body",size:"medium",color:"neutral700",align:"center"},m)):he.createElement(Eh,{type:"error",title:pr.t("Transaction Failed"),description:m}),he.createElement(ur,{size:30}),n==="success"&&he.createElement(he.Fragment,null,d&&he.createElement(he.Fragment,null,he.createElement(VE,{to:xh},he.createElement(vh,{src:bh,alt:"Profile Banner"})),he.createElement(ur,{size:30})),he.createElement(yc,{id:"widget-swap-details-modal-done-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{f("../../")}},pr.t("Done"))),he.createElement(ur,{size:12}),h&&he.createElement(he.Fragment,null,he.createElement(yc,{variant:"contained",id:"widget-swap-detail-modal-diagnosis-btn",type:"primary",size:"large",onClick:()=>window.open(h,"_blank")},pr.t("Diagnosis")),he.createElement(ur,{size:12})),he.createElement(yc,{id:"widget-swap-details-modal-see-details-btn",variant:"outlined",type:"primary",size:"large",onClick:o},he.createElement(Ih,{variant:"title",size:"medium",color:"primary"},pr.t("See Details"))))}i(Sc,"SwapDetailsCompleteModal");import nI from"react";import{i18n as RE}from"@lingui/core";import{Alert as Vh,IconButton as eI,LinkIcon as tI}from"@rango-dev/ui";import co,{Fragment as oI}from"react";import{Alert as XE,ChevronDownIcon as YE,IconButton as ZE}from"@rango-dev/ui";import dn,{useState as JE}from"react";import{css as mr,darkTheme as Ah,styled as Lt,Typography as jE}from"@rango-dev/ui";var Nh=Lt(ae,{overflowY:"auto","& ._icon-button":{"&:hover":{"& svg":{color:"$secondary550",[`.${Ah} &`]:{color:"$secondary500"}}}}}),Bh=Lt("div",{display:"flex",flexDirection:"column",flexGrow:1,overflow:"hidden"}),Wh=Lt("div",{position:"sticky",top:0,zIndex:10,backgroundColor:"$background"}),Lh=Lt("div",{padding:"$0 $20 $20 $20"}),U8=Lt("div",{display:"flex",flexDirection:"column",gap:"$10"}),Mh=Lt("div",{height:"450px",display:"flex",alignItems:"center",justifyContent:"center"}),z8=Lt("div",{display:"flex",justifyContent:"center",width:"100%",paddingTop:"33%",flex:1}),mn=mr({display:"flex",width:"100%",justifyContent:"space-between",alignItems:"center",padding:"$10 $20",borderBottom:"1px solid",$$color:"$colors$neutral300",[`.${Ah} &`]:{$$color:"$colors$neutral400"},borderColor:"$$color",color:"$neutral500"}),Ph=mr({padding:"$5 0"}),ea=mr({display:"flex",justifyContent:"center",alignItems:"center",height:"$24"}),_h=mr({display:"flex",width:"100%",padding:"$15 $20 $20",flexDirection:"column",alignItems:"start"}),Dh=mr({width:"100%",padding:"0 $20 $10"}),$h=Lt("a",{fontSize:"$16",fontWeight:"$400",color:"$neutral700",display:"flex",alignItems:"center",justifyContent:"center"}),Fh=Lt("div",{display:"flex",flexDirection:"column",gap:"$5"}),ta=Lt(jE,{wordBreak:"break-word"});import{styled as Cc}from"@rango-dev/ui";var Oh=Cc("div",{display:"flex",flexDirection:"column",gap:"$10"}),Uh=Cc("div",{transition:"transform 0.3s ease-in-out",variants:{rotated:{true:{transform:"rotate(180deg)"}}}}),zh=Cc("div",{transition:"max-height 0.3s ease-in-out",maxHeight:"0px",overflow:"hidden",variants:{open:{true:{maxHeight:"200px"}}}});function Qh(t){let{message:e}=t,[o,n]=JE(!1);return dn.createElement(XE,{type:"error",title:e.shortMessage,containerStyles:{"& .footer":{paddingTop:"$0"}},action:e.detailedMessage.content&&dn.createElement(ZE,{onClick:()=>n(r=>!r),variant:"ghost",size:"xsmall"},dn.createElement(Uh,{rotated:o},dn.createElement(YE,{size:12,color:"gray"}))),footer:dn.createElement(zh,{open:o},dn.createElement(ta,{variant:"body",size:"xsmall",color:"neutral700"},e.detailedMessage.content))})}i(Qh,"FailedAlert");import{i18n as Hh}from"@lingui/core";import{Alert as kc,Button as qh}from"@rango-dev/ui";import{PendingSwapNetworkStatus as Tc}from"rango-types";import dr from"react";function Gh(t){let{switchNetwork:e,setNetworkModal:o,message:n,showNetworkModal:r}=t;return e?dr.createElement(kc,{type:"warning",title:n.shortMessage,action:dr.createElement(qh,{id:"widget-swap-details-warning-alert-change-network-btn",size:"xxsmall",type:"warning",onClick:()=>{o(Tc.WaitingForNetworkChange),e().catch(a=>{console.log(a)})}},Hh.t("Change"))}):r===Tc.WaitingForConnectingWallet?dr.createElement(kc,{type:"warning",title:n.shortMessage,action:dr.createElement(qh,{id:"widget-swap-details-warning-alert-connect-wallet-btn",size:"xxsmall",type:"warning",onClick:()=>{o(Tc.WaitingForConnectingWallet)}},Hh.t("Connect"))}):dr.createElement(kc,{type:"warning",title:n.shortMessage})}i(Gh,"WarningAlert");function vc(t){let{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r,step:a,hasAlreadyProceededToSign:s}=t,l=Bn(a),c=a.status==="waitingForApproval"&&!l,u=a.status==="running"&&!l,p=u&&!s||c&&!a.explorerUrl?.length;return co.createElement(Oh,null,a.explorerUrl?.map((m,h,f)=>{let d=h+m.url,g=h===f.length-1,C=(g&&u||c)&&!p,k=g&&a.status==="failed";return co.createElement(oI,{key:d},co.createElement(Vh,{type:g&&(C&&"loading"||k&&"error")||"success",title:m.description?`${m.description} Tx`:RE.t("View transaction"),action:m.url&&co.createElement(eI,{id:"widget-swap-details-tx-link-icon-btn",variant:"ghost",size:"xsmall",onClick:()=>window.open(m.url,"_blank")},co.createElement(tI,{size:12}))}))}),p&&co.createElement(Vh,{type:"loading",title:r.shortMessage}),a.status!=="failed"&&l&&co.createElement(Gh,{switchNetwork:e,showNetworkModal:o,setNetworkModal:n,message:r}),a.status==="failed"&&co.createElement(Qh,{message:r}))}i(vc,"SwapDetailsAlerts");var Kh=2e3;var jh=i(({swap:t,blockchains:e,swappers:o,...n})=>{let r=t.hasAlreadyProceededToSign!==!1;return t.steps.map((a,s)=>{let l=s===0?t.inputAmount:t.steps[s-1].outputAmount||t.steps[s-1].expectedOutputAmountHumanReadable;return{from:{token:{displayName:a.fromSymbol,image:a.fromLogo??""},chain:{displayName:pt(a.fromBlockchain,e)??"",image:a.fromBlockchainLogo??""},price:{value:P(l,6,6),realValue:l??""}},to:{token:{displayName:a.toSymbol,image:a.toLogo},chain:{displayName:pt(a.toBlockchain,e)??"",image:a.toBlockchainLogo??""},price:{value:P(a.outputAmount||a.expectedOutputAmountHumanReadable,6,6),realValue:a.outputAmount||a.expectedOutputAmountHumanReadable||""}},swapper:{displayName:fn(a.swapperId,o)??"",image:a.swapperLogo??"",type:a.swapperType},internalSwaps:a.internalSwaps?a.internalSwaps.map(c=>({from:{chain:{displayName:pt(c.fromBlockchain,e)??"",image:c.fromBlockchainLogo??""}},to:{chain:{displayName:pt(c.toBlockchain,e)??"",image:c.toBlockchainLogo??""}},swapper:{displayName:fn(c.swapperId,o)??"",image:c.swapperLogo??"",type:c.swapperType}})):[],alerts:nI.createElement(vc,{step:a,hasAlreadyProceededToSign:r,...n})}})},"getSteps");function Xh(t){if(Bn(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(Xh,"getStepState");function wc(t){let{swap:e,requestId:o,onDelete:n,onCancel:r}=t,{canSwitchNetworkTo:a,connect:s,getWalletInfo:l}=gI(),c=S().blockchains(),u=S().swappers(),{findToken:p}=S(),m=U.use.retry(),h=te.use.isActiveTab(),f=yI(),[d,g]=fI(Kh),C=hI(null),[k,y]=ey(null),[T,v]=ey(null),I=i(()=>{r(),y(null)},"onCancel"),B=Ee.use.getNotifications(),N=Ee.use.removeNotification(),x=B(),w=iI(e),b=w?.networkStatus;Rh(()=>{x.find(Fe=>Fe.requestId===e.requestId)&&(e.status==="success"||e.status==="failed"?(v(e.status),N(e.requestId)):T&&v(null))},[e.status,e.requestId]),Rh(()=>{_?y(oa.WaitingForNetworkChange):b===oa.WaitingForConnectingWallet||b===oa.NetworkChanged?y(b):y(null)},[b]);let E=zu(e),L=w?rI(e,w):null,M=w?aI(e,w):null,q=hh(e),ee=Qu(e),j=i(ve=>!!l(ve)?.mobileWallet,"isMobileWallet"),_=b===oa.WaitingForNetworkChange&&!!L&&!!M?.walletType&&(j(M.walletType)||a(M.walletType,L.network)),X=_?s.bind(null,M.walletType,[{namespace:L.namespace,network:L.network}]):void 0,ie=Uu(e,w,l),O=jh({swap:e,switchNetwork:X,showNetworkModal:b,setNetworkModal:y,message:ie,blockchains:c,swappers:u}),R=O.length,[ge,Te]=[e.steps[0],e.steps[R-1]],le=Te.outputAmount||Te.expectedOutputAmountHumanReadable,ct=e.steps.reduce((ve,Fe)=>ve+parseFloat(Fe.feeInUsd||""),0),V=e.steps.find(ve=>ve.diagnosisUrl)?.diagnosisUrl,D=P(parseFloat(le||"0")*(Te.toUsdPrice||0),4,4),G=P(parseFloat(e.inputAmount)*(ge.fromUsdPrice||0),4,4),K=le?new Jh(le).multipliedBy(Te.toUsdPrice||0).toString():"",ye=new Jh(e.inputAmount).multipliedBy(ge.fromUsdPrice||0).toString(),pe=$t(G,D),$e=ie.detailedMessage.content||ie.shortMessage,Xe=e.status==="success"?lt.t({id:"You have received {amount} {token} in {conciseAddress} wallet on {chain} chain.",values:{amount:P(le,6,6),token:O[R-1].to.token.displayName,conciseAddress:Br(e.wallets[O[R-1].to.chain.displayName]?.address||""),chain:O[R-1].to.chain.displayName}}):Z.createElement(Fh,null,Z.createElement(_o,{variant:"body",size:"medium",color:"neutral700",align:"center"},$e?"":lt.t("Transaction was not sent."),E?`${lt.t({id:"{amount} {symbol} on {blockchain} remains in your wallet.",values:{amount:E.outputAmount,symbol:E.symbol,blockchain:E.blockchain}})}`:""),$e&&Z.createElement(ta,{align:"center",variant:"body",size:"medium",color:"neutral700"},Z.createElement("b",null,"Reason:")," ",$e));return Z.createElement(re,{header:{title:lt.t("Swap Details"),onCancel:e.status==="running"?()=>y("cancel"):void 0,suffix:e.status!=="running"&&Z.createElement(Jt,null,Z.createElement(Yh,{id:"widget-swap-details-delete-btn",variant:"ghost",type:"error",size:"xsmall",onClick:()=>y("delete")},Z.createElement(_o,{size:"medium",variant:"label",color:"error"},lt.t("Delete"))))},footer:ee&&!T&&Z.createElement(Yh,{fullWidth:!0,id:"widget-swap-details-try-again-btn",variant:"contained",type:"primary",size:"large",onClick:()=>{let ve=Gr(e,c,p);m(ve),setTimeout(()=>{f("../../")},0)}},lt.t("Try again"))},Z.createElement(Nh,{compact:!0,ref:C},Z.createElement(Wh,{className:mn()},Z.createElement(_o,{variant:"label",size:"large",color:"neutral700"},`${lt.t("Request ID")}`),Z.createElement("div",{className:ea()},Z.createElement(_o,{variant:"label",size:"small",color:"neutral700"},o),Z.createElement(Zh,{container:A(),content:d?lt.t("Copied To Clipboard"):lt.t("Copy Request ID"),open:d||void 0,side:"bottom",alignOffset:-16,align:"end"},Z.createElement(pI,{id:"widget-swap-details-done-copy-icon-btn",variant:"ghost",onClick:g.bind(null,o||"")},d?Z.createElement(cI,{size:16,color:"secondary"}):Z.createElement(sI,{size:16,color:"gray"}))),Z.createElement($h,{target:"_blank",href:`${Xc}/swap/${o}`},Z.createElement(Zh,{container:A(),content:lt.t("View on Rango Explorer"),side:"bottom"},Z.createElement(mI,{size:20}))))),Z.createElement("div",{className:mn()},Z.createElement(_o,{variant:"label",size:"large",color:"neutral700"},e.finishTime?lt.t("Finished at"):lt.t("Created at")),Z.createElement(_o,{variant:"label",size:"small",color:"neutral700"},q)),Z.createElement("div",{className:_h()},Z.createElement(uI,{fee:P(String(ct),2,2),time:hn(xr(e.steps)),steps:R}),Z.createElement(zn,{from:{price:{value:P(e.inputAmount,6,6),usdValue:G,realUsdValue:ye,realValue:e.inputAmount},token:{displayName:O[0].from.token.displayName,image:O[0].from.token.image},chain:{image:O[0].from.chain.image,displayName:O[0].from.chain.displayName}},to:{price:{value:P(le,6,6),usdValue:D,realUsdValue:K,realValue:le||""},token:{displayName:O[R-1].to.token.displayName,image:O[R-1].to.token.image},chain:{image:O[R-1].to.chain.image,displayName:O[R-1].to.chain.displayName}},percentageChange:P(pe,2,2),warningLevel:Ft(pe??0)})),Z.createElement("div",{className:Dh()},Z.createElement(_o,{variant:"title",size:"small"},lt.t("Swaps steps"))),Z.createElement(lI,{size:8}),Z.createElement(Lh,null,O.map((ve,Fe)=>{let jt=Fe,po=Xh(e.steps[Fe]),Ay=po==="error"||po==="in-progress"||po==="warning"||po==="completed"&&Fe===O.length-1;return Z.createElement(dI,{key:jt,step:ve,type:"swap-progress",ref:C,state:po,hasSeparator:Fe!==0,tabIndex:jt,isFocused:Ay,tooltipContainer:A()})}))),Z.createElement(hc,{state:k,onClose:()=>y(null),onCancel:I,onDelete:n,message:ie.detailedMessage.content,swap:e,walletButtonDisabled:!h}),Z.createElement(Sc,{open:!!T,diagnosisUrl:V,onClose:()=>v(null),status:e.status==="success"?"success":"failed",priceValue:P(le,6,6),usdValue:D,realUsdValue:K,realValue:le||"",percentageChange:P(pe,2,2),token:{displayName:O[R-1].to.token.displayName,image:O[R-1].to.token.image},chain:{image:O[R-1].to.chain.image},description:Xe}))}i(wc,"SwapDetails");import{i18n as ra}from"@lingui/core";import{Divider as ny,NotFound as vI,Skeleton as gr,Typography as ia}from"@rango-dev/ui";import xe from"react";import{i18n as SI}from"@lingui/core";import{Divider as CI,Skeleton as kI,Typography as TI}from"@rango-dev/ui";import be from"react";import{css as bt,styled as bc}from"@rango-dev/ui";var ty=bc("div",{width:"100%",height:"100%",padding:"$10 $20"}),fr=bc("div",{backgroundColor:"$neutral100",borderRadius:"$xm",padding:"$10 $15"}),na=bc("div",{width:"0px",height:"$20",borderLeft:"1px dashed $neutral700",marginLeft:"25px"}),R6=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),ej=bt({display:"flex",justifyContent:"space-between",alignItems:"center"}),tj=bt({paddingTop:"$15",display:"flex"}),oj=bt({padding:"$15 $0"}),nj=bt({width:"0px",height:"$16",borderLeft:"1px solid $neutral400",marginLeft:"13px"}),rj=bt({paddingBottom:"$10"}),ij=bt({display:"flex",justifyContent:"start",alignItems:"center"}),aj=bt({paddingTop:"$5",display:"flex",alignItems:"center"}),sj=bt({display:"flex",alignItems:"center"}),lj=bt({padding:"$4 $6",display:"flex",justifyContent:"center",alignItems:"center"}),oy=bt({display:"flex",paddingTop:"$10",paddingBottom:"$5"});function xc(){return be.createElement(ty,null,be.createElement(Hn,{type:"swap-preview"}),be.createElement("div",{className:"swaps-steps"},be.createElement(TI,{variant:"title",size:"small"},SI.t("Swaps steps"))),be.createElement(be.Fragment,null,be.createElement(fr,null,be.createElement(Bt,{separator:!1}),be.createElement("div",{className:oy()},be.createElement(CI,{direction:"horizontal",size:20}),be.createElement(kI,{height:22,variant:"rectangular"}))),be.createElement(na,null),be.createElement(fr,null,be.createElement(Bt,{separator:!1})),be.createElement(na,null),be.createElement(fr,null,be.createElement(Bt,{separator:!1})),be.createElement(na,null),be.createElement(fr,null,be.createElement(Bt,{separator:!1}))))}i(xc,"LoadingSwapDetails");function ry(t){let{requestId:e,showSkeleton:o}=t;return xe.createElement(re,{header:{title:ra.t("Swap Details"),suffix:xe.createElement(Jt,null)}},o&&xe.createElement(Bh,null,xe.createElement("div",{className:mn()},xe.createElement(ia,{variant:"label",size:"large",color:"neutral700"},`${ra.t("Request ID")}`),xe.createElement("div",{className:ea()},xe.createElement(ia,{variant:"label",size:"small",color:"neutral700"},xe.createElement(gr,{width:60,height:10,variant:"rounded"})),xe.createElement(ny,{direction:"horizontal",size:4}),xe.createElement(gr,{width:16,height:16,variant:"rectangular"}),xe.createElement(ny,{direction:"horizontal",size:4}),xe.createElement(gr,{width:16,height:16,variant:"rectangular"}))),xe.createElement("div",{className:mn()},xe.createElement(ia,{className:Ph(),variant:"label",size:"large",color:"neutral700"},xe.createElement(gr,{width:60,height:10,variant:"rounded"})),xe.createElement(ia,{variant:"label",size:"small",color:"neutral700"},xe.createElement(gr,{width:60,height:10,variant:"rounded"}))),xe.createElement(xc,null)),!o&&xe.createElement(Mh,null,xe.createElement(vI,{title:ra.t("Not found"),description:ra.t({id:"Swap with request ID = {requestId} not found.",values:{requestId:e}})})))}i(ry,"SwapDetailsPlaceholder");function iy(){let{manager:t,state:e}=xI(),o=!e.loadedFromPersistor,n=gt(t),{requestId:r}=II(),a=ze(),{fetchStatus:s}=S();if(!r)return Ec.createElement(EI,{containerStyles:{margin:"20px"},type:"error",title:wI.t("The request ID is necessary to display the swap details.")});let l=o||s==="loading",c=r?n.find(({swap:h})=>h.requestId===r):void 0,u=i(()=>{if(c?.id){let h=t?.get(c.id);h&&bI(h)}},"onCancel"),p=i(async()=>{if(c?.id)try{t?.deleteQueue(c.id),a()}catch(h){console.log(h)}},"onDelete"),m=c?.swap;return!m||l?Ec.createElement(ry,{requestId:r,showSkeleton:l}):Ec.createElement(wc,{swap:m,requestId:r,onCancel:u,onDelete:p})}i(iy,"SwapDetailsPage");import{i18n as ay}from"@lingui/core";import{Divider as AI,getCategoriesCount as NI,SelectableCategoryList as BI,styled as ly,Typography as WI,Wallet as LI}from"@rango-dev/ui";import Mt,{useState as sy}from"react";var MI=ly("div",{display:"flex",justifyContent:"center",alignItems:"center",gap:"$10",flexWrap:"wrap",paddingTop:"$5"}),PI=ly(ae,{textAlign:"center"});function cy(){let{fetchStatus:t}=S(),[e,o]=sy("ALL"),n=S().blockchains(),{config:r}=S(),[a,s]=sy(),l=te.use.isActiveTab(),{list:c}=yt(),u=hp(c,n),m=NI(u)!==1,h=yp(c,e),f=i(d=>{ip(c,r.multiWallets)||s(d)},"handleWalletItemClick");return Mt.createElement(re,{header:{title:ay.t("Connect Wallets")}},Mt.createElement(PI,null,m&&Mt.createElement(Mt.Fragment,null,Mt.createElement(BI,{setCategory:o,category:e,blockchains:u,isLoading:t==="loading"}),Mt.createElement(AI,{size:24})),Mt.createElement(WI,{variant:"title",size:"xmedium",align:"center"},ay.t("Choose a wallet to connect.")),Mt.createElement(MI,null,h.map((d,g)=>{let C=`wallet-${g}-${d.type}`;return Mt.createElement(LI,{key:C,...d,container:A(),onClick:()=>f(d),isLoading:t==="loading",disabled:!l})}),Mt.createElement(Co,{wallet:a,onClose:()=>{s(void 0)}}))))}i(cy,"WalletsPage");function py(){return Vu(),is(),_I([{path:F.home,element:De.createElement(_g,null)},{path:F.routes,element:De.createElement(Ug,null)},{path:F.fromSwap,children:[{index:!0,element:De.createElement(Ki,{type:"source"})},{path:F.blockchains,element:De.createElement(Hi,{type:"source"})}]},{path:F.toSwap,children:[{index:!0,element:De.createElement(Ki,{type:"destination"})},{path:F.blockchains,element:De.createElement(Hi,{type:"destination"})}]},{path:F.settings,children:[{index:!0,element:De.createElement(fh,null)},{path:F.languages,element:De.createElement($g,null)},{path:F.exchanges,element:De.createElement(Yl,{sourceType:"Exchanges"})},{path:F.bridges,element:De.createElement(Yl,{sourceType:"Bridges"})},{path:F.customTokens,children:[{index:!0,element:De.createElement(Gf,null)},{path:F.addCustomTokens,children:[{index:!0,element:De.createElement(Om,null)},{path:F.blockchains,element:De.createElement(Hi,{hideCategory:!0,type:"custom-token"})}]}]}]},{path:F.swaps,children:[{index:!0,element:De.createElement(ug,null)},{path:F.swapDetails,element:De.createElement(iy,null)}]},{path:F.wallets,element:De.createElement(cy,null)},{path:F.confirmSwap,element:De.createElement(Wf,null)}])}i(py,"AppRoutes");import{useQueueManager as qI}from"@rango-dev/queue-manager-rango-preset";import{splitWalletNetwork as GI}from"@rango-dev/wallets-shared";import{isEvmBlockchain as VI}from"rango-sdk";import{useContext as KI,useEffect as yy,useState as Sy}from"react";import{globalCss as DI}from"@rango-dev/ui";var uy=i(()=>DI({"@import":"url('https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap')"})(),"globalFont");function my(){let{setWatermark:t,setShowProfileBanner:e}=te();return{fetchApiConfig:i(async()=>{let n=await fetch(`${_t("BASE_URL")}/meta/dapp/config?apiKey=${_t("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(my,"useFetchApiConfig");import{useWallets as $I}from"@rango-dev/wallets-react";import{useEffect as FI,useRef as OI}from"react";function dy(){let{connect:t,state:e}=$I(),o=OI({}),{fetchStatus:n}=S(),r=new URLSearchParams(location.search).get("autoConnect")||"",a=e(r);FI(()=>{n==="success"&&r&&a.installed&&!a.connecting&&!a.connected&&!o.current[r]&&(o.current[r]=!0,t(r))},[a,n])}i(dy,"useForceAutoConnect");import{isApprovalTX as UI,RouteEventType as fy,StepEventType as gy,StepExecutionEventStatus as zI,WidgetEvents as aa}from"@rango-dev/queue-manager-rango-preset";import{useEffect as hy}from"react";function Ic(){let t=Ee.use.setNotification(),{connectedWallets:e,fetchBalances:o,customTokens:n}=S();hy(()=>{let r=i(a=>{let{event:s,step:l,route:c}=a;if(s.type===gy.TX_EXECUTION&&s.status===zI.TX_SENT&&!UI(l)||s.type===gy.SUCCEEDED){let p=[],m=c.wallets[l?.fromBlockchain];if(m){let h=e.find(f=>f.address?.toLocaleLowerCase()===m.address?.toLocaleLowerCase()&&f.walletType===m.walletType&&f.chain===l?.fromBlockchain);h&&p.push(h)}if(l?.fromBlockchain!==l?.toBlockchain){let h=c.wallets[l?.toBlockchain];if(h){let f=e.find(d=>d.address?.toLocaleLowerCase()===h.address?.toLocaleLowerCase()&&d.walletType===h.walletType&&d.chain===l?.toBlockchain);f&&p.push(f)}}if(p.length>0){let h=n(),d=[{blockchain:l.fromBlockchain,address:l.fromSymbolAddress,symbol:l.fromSymbol},{blockchain:l.toBlockchain,address:l.toSymbolAddress,symbol:l.toSymbol}].filter(g=>h.some(C=>C.blockchain===g.blockchain&&C.address?.toLocaleLowerCase()===g.address?.toLocaleLowerCase()&&C.symbol?.toLocaleLowerCase()===g.symbol?.toLocaleLowerCase()));o(p,{selectedCustomTokens:d,shouldFetchCustomTokens:d.length>0})}}t(s,c)},"handleStepEvent");return Se.on(aa.StepEvent,r),()=>Se.off(aa.StepEvent,r)},[Se,e]),hy(()=>{let r=i(a=>{let{event:s,route:l}=a;(s.type===fy.FAILED||s.type===fy.SUCCEEDED)&&t(s,l)},"handleRouteEvent");return Se.on(aa.RouteEvent,r),()=>Se.off(aa.RouteEvent,r)},[Se])}i(Ic,"useSubscribeToWidgetEvents");import{useManager as QI}from"@rango-dev/queue-manager-react";import{useEffect as HI}from"react";function Ac(){let{isSynced:t,syncNotifications:e}=Ee(),{manager:o,state:n}=QI();HI(()=>{Ee.persist.hasHydrated()&&n.loadedFromPersistor&&!t&&e(gt(o))},[Ee.persist.hasHydrated(),n.loadedFromPersistor,t])}i(Ac,"useSyncNotifications");function Nc(){dy(),uy(),Ic(),Ac();let t=S().blockchains(),{canSwitchNetworkTo:e}=ui(),[o,n]=Sy(""),[r,a]=Sy(),s=KI(zr),l=t.filter(VI),{fetchApiConfig:c}=my();yy(()=>()=>Gu(),[]),qI({lastConnectedWallet:o,clearDisconnectedWallet:()=>{a(void 0)},disconnectedWallet:r,evmChains:l,canSwitchNetworkTo:e}),yy(()=>(ho.init(),Ee.persist.hasHydrated()||Ee.persist.rehydrate(),s.onConnectWallet(n),s.onDisconnectWallet(u=>{a(u),u===GI(o)?.[0]&&n("")}),c().catch(console.log),ho.destroy),[])}i(Nc,"useBootstrap");import{styled as jI}from"@rango-dev/ui";var Cy=jI("div",{fontFamily:"$widget",boxSizing:"border-box",textAlign:"left","& *, *::before, *::after":{boxSizing:"inherit"},"& *:focus-visible":{outlineColor:"$info500",transition:"none"},"& ul, ol, li":{listStyleType:"none"}});function sa(){Nc();let{config:t}=S(),{activeTheme:e}=Ro(t?.theme||{}),{activeLanguage:o}=io();return Bc.createElement(XI,{language:o},Bc.createElement(Cy,{id:"swap-container",className:e()},Bc.createElement(py,null)))}i(sa,"Main");import{setSolanaSignerConfig as gA}from"@rango-dev/signer-solana";import Lc,{useEffect as xy,useMemo as hA}from"react";import{useState as YI}from"react";var ZI=i(()=>{let[t,e]=YI(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=rp(a);if(s){let l=o(s);e(l)}},"handleLoadCustomFont")}},"useFontLoader"),ky=ZI;import{checkWaitingForNetworkChange as JI,makeQueueDefinition as RI}from"@rango-dev/queue-manager-rango-preset";import{Provider as eA}from"@rango-dev/queue-manager-react";import{useWallets as tA}from"@rango-dev/wallets-react";import{convertEvmBlockchainMetaToEvmChainInfo as oA}from"@rango-dev/wallets-shared";import{isEvmBlockchain as nA}from"rango-types";import rA,{useMemo as iA}from"react";function aA(t){let{providers:e,getSigners:o,state:n,connect:r,canSwitchNetworkTo:a,getWalletInfo:s}=tA(),l=iA(()=>RI({API_KEY:t.apiKey||_t("API_KEY"),BASE_URL:_t("BASE_URL"),emitter:{emit:Se.emit}}),[t.apiKey]),{blockchains:c,connectedWallets:u}=S(),p=c(),m={blockchains:u.map(v=>({accounts:[v],name:v.chain}))},h=i(async(v,I)=>a(v,I.network)?await r(v,[I]):void 0,"switchNetwork"),f=i(v=>!!s(v).mobileWallet,"isMobileWallet"),d=p.filter(v=>v.enabled).reduce((v,I)=>(v[I.name]=I,v),{}),g=p.filter(nA),C=i(v=>{let{supportedChains:I}=s(v);return Cn(I)},"getSupportedChainNames"),k=e(),y={meta:{blockchains:d,evmBasedChains:g,evmNetworkChainInfo:oA(g),getSupportedChainNames:C},getSigners:o,wallets:m,providers:k,switchNetwork:h,canSwitchNetworkTo:a,state:n,isMobileWallet:f},T=te.use.isActiveTab();return rA.createElement(eA,{queuesDefs:[l],context:y,onPersistedDataLoaded:v=>{JI(v)},isPaused:!T},t.children)}i(aA,"QueueManager");var Ty=aA;import{useManager as uA}from"@rango-dev/queue-manager-react";import mA,{createContext as dA,useContext as fA}from"react";function vy(){let{findToken:t}=S(),e=S().blockchains(),o=S().tokens(),{setFromBlockchain:n,setFromToken:r,setToBlockchain:a,setToToken:s,setInputAmount:l}=U();return i(u=>{let{fromBlockchain:p,fromToken:m,toBlockchain:h,toToken:f,requestAmount:d}=u,g={blockchains:e,tokens:o};if(p!==void 0){let C=e.find(k=>k.name===p)??null;n(C)}if(m!==void 0){let C=m?t(m)??null:null;r({meta:g,token:C})}if(h!==void 0){let C=e.find(k=>k.name===h)??null;a(C)}if(f!==void 0){let C=f?t(f)??null:null;s({meta:g,token:C})}d!==void 0&&l(d)},"updateQuoteInputs")}i(vy,"useUpdateQuoteInputs");import{cancelSwap as sA,getCurrentNamespaceOfOrNull as lA,getCurrentStep as cA,getRelatedWalletOrNull as pA}from"@rango-dev/queue-manager-rango-preset";var la=class{static{i(this,"WidgetHistory")}constructor(e,o){this.manager=e,this.actions=o}getAllSwaps(){return gt(this.manager)}getCurrentStep(e){return this.getCurrentStepInfo(e).step}getCurrentStepWallet(e){return this.getCurrentStepInfo(e).wallet}getCurrentStepNetwork(e){return this.getCurrentStepInfo(e).network}retry(e,o){let n=Gr(e,o.blockchains,this.actions.findToken);return this.actions.retrySwap(n)}cancel(e){let o=this.manager?.get(e);o&&sA(o)}getCurrentStepInfo(e){let o=cA(e);return{step:o,wallet:o?pA(e,o):null,network:o?lA(e,o)?.network:null}}};var wy=dA(void 0);function Wc(t){let{manager:e}=uA(),o=te.use.isActiveTab(),n=U.use.retry(),{findToken:r,getBalances:a,getConnectedWalletsDetails:s,fetchBalances:l}=S(),c=new la(e,{retrySwap:n,findToken:r}),{fetchingWallets:u}=S(),p=pp(a()),m=S().blockchains(),h=S().tokens(),f=S().swappers(),d=S().fetchStatus,g=io().resetLanguage,C=Ee().getNotifications(),k=Ee().clearNotifications,y=vy(),{fromBlockchain:T,toBlockchain:v,fromToken:I,toToken:B,inputAmount:N}=U(),x={isActiveTab:o,setCurrentTabAsActive:ho.forceClaim,history:c,wallets:{isLoading:u,details:s(),totalBalance:p,refetch:async w=>l(w)},meta:{blockchains:m,tokens:h,swappers:f,loadingStatus:d,findToken:r},resetLanguage:g,notifications:{list:C,clearAll:k},quote:{quoteInputs:{fromBlockchain:T?.name??null,fromToken:I?{symbol:I.symbol,blockchain:I.blockchain,address:I.address}:null,toBlockchain:v?.name??null,toToken:B?{symbol:B.symbol,blockchain:B.blockchain,address:B.address}:null,requestAmount:N},updateQuoteInputs:y}};return mA.createElement(wy.Provider,{value:x},t.children)}i(Wc,"WidgetInfo");function by(){let t=fA(wy);if(!t)throw new Error("useWidget can only be used within the WidgetProvider component");return t}i(by,"useWidget");function ca(t){let{onUpdateState:e,config:o}=t,n=t.config?.theme?.fontFamily,{handleLoadCustomFont:r}=ky();return xy(()=>{n&&r(n)},[n]),hA(()=>{Sp({API_KEY:o?.apiKey||Tr,BASE_URL:o?.apiUrl||jc})},[o.apiKey,o.apiUrl]),xy(()=>{t.config?.signers?.customSolanaRPC&&gA("customRPC",t.config.signers.customSolanaRPC)},[t.config?.signers?.customSolanaRPC]),Lc.createElement(Qr,{config:o,onUpdateState:e},Lc.createElement(Ty,{apiKey:o.apiKey},Lc.createElement(Wc,null,t.children)))}i(ca,"WidgetProvider");function Ey(t){let e=t.config?.externalWallets;return pa.createElement(du,null,e?pa.createElement(sa,null):pa.createElement(ca,{config:t.config??Cr},pa.createElement(sa,null)))}i(Ey,"Widget");function Iy(){let{on:t,off:e}=Se;return{on:t,off:e}}i(Iy,"useWidgetEvents");var g7={DerivationPath:En,Namespaces:xn,isOnDerivationPath:An,isOnNamespace:In};export{zY as EventSeverity,Qo as MainEvents,ZY as Networks,e7 as PendingSwapNetworkStatus,xa as QuoteEventTypes,QY as RouteEventType,fa as SUPPORTED_FONTS,g7 as StatefulConnect,HY as StepEventType,qY as StepExecutionBlockedEventStatus,GY as StepExecutionEventStatus,Oe as UI_ID,Ia as UiEventTypes,Ea as WalletEventTypes,XY as WalletEvents,JY as WalletTypes,Ey as Widget,Qo as WidgetEvents,ca as WidgetProvider,Qr as WidgetWallets,ks as customizedThemeTokens,KY as readAccountAddress,Xt as useStatefulConnect,yt as useWalletList,ui as useWallets,by as useWidget,Iy as useWidgetEvents,WS as widgetEventEmitter};
|
|
3
3
|
//# sourceMappingURL=index.js.map
|