@nexus-cross/connect-kit-react 1.3.3-beta.9 → 2.3.4-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,144 @@
1
+ var st="1.3.4";var pt="__nexusCrossAppLauncherRuntime";function Xn(){if(typeof window>"u")return null;let e=window;return e[pt]??(e[pt]={mode:"dapp-ui"}),e[pt]}function Yn(e){if(e.scheduled)return;e.scheduled=!0;let t=()=>{if(e.scheduled=!1,e.loggedMode!==e.mode){if(e.mode==="connect-kit-react"){let r=e.connectKitVersion??st;console.info(`[CROSSx App Launcher] connect-kit-react v${r} \uCD08\uAE30\uD654 \uC644\uB8CC (dapp-ui v${st}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${st} \uCD08\uAE30\uD654 \uC644\uB8CC (\uC0AC\uC6A9 \uBAA8\uB4DC: dapp-ui only)`);e.loggedMode=e.mode}};typeof queueMicrotask=="function"?queueMicrotask(t):Promise.resolve().then(t)}function qt(){let e=Xn();e&&(e.mode="connect-kit-react",e.connectKitVersion=st,Yn(e))}import{useCallback as ve,useEffect as ae,useMemo as _e,useRef as De,useState as We}from"react";import{WagmiProvider as or,useAccount as sr,useChainId as ir,useConnect as ar,useDisconnect as cr,useSwitchChain as dr}from"wagmi";import{QueryClient as lr,QueryClientProvider as ur}from"@tanstack/react-query";import{clearWalletSessionStorage as jt,onOpenOtherWallets as mr,pickInitialState as pr,resolveCurrentWallet as fr}from"@nexus-cross/connect-kit-wagmi";import{resolveThemeMode as gr}from"@nexus-cross/connect-kit-core";import{buildDesignSystemCss as br}from"@nexus-cross/crossx-design-system";import{OnRampProvider as yr}from"@nexus-cross/onramp/react";import{KycProvider as wr}from"@nexus-cross/kyc/react";import{createContext as Zn,useContext as Jn}from"react";var xt=Zn(null);function Be(){let e=Jn(xt);if(!e)throw new Error("useCrossConnectKit must be used within <CrossConnectKitProvider>");return e}import{createContext as er,useContext as Vt}from"react";var ft=er(null);function tr(){let e=Vt(ft);if(!e)throw new Error("useCrossConnectKitTheme must be used within <CrossConnectKitProvider>");return e}function it(){return Vt(ft)}import{useCallback as nr,useMemo as Ht}from"react";import{WalletConnectModal as zt}from"@nexus-cross/dapp-ui";import{jsx as Qt}from"react/jsx-runtime";var rr=new Set(["cross_wallet","cross_extension","metamask","binance"]);function Tt({open:e,onOpenChange:t}){let{connect:r,availableWallets:s,oauth:n,extraWallets:a,walletAllowlist:f,kitConfig:p}=Be(),m=it()?.mode??"dark",w=Ht(()=>{let u=f?new Set(f):null,T={};for(let A of s){if(!rr.has(A.walletId)||u&&!u.has(A.walletId))continue;let h=A.walletId;T[h]=()=>{r(A.walletId)}}for(let[A,h]of Object.entries(a))h&&(u&&!u.has(A)||(T[A]=h));return T},[s,r,a,f]),I=Ht(()=>{if(n)return{apple:()=>{n.signIn("apple")},google:()=>{n.signIn("google")}}},[n]),S=nr(u=>t(u),[t]);return Qt(zt,{wallets:w,socialProviders:I,termsUrl:p.legal?.termsUrl,privacyUrl:p.legal?.privacyUrl,theme:m,open:e,onOpenChange:S,children:Qt(zt.Content,{})})}import{jsx as Qe,jsxs as Zt}from"react/jsx-runtime";var hr=new lr,It="crossx-kit:last-wallet-intent",Cr=15e3;function Xt(e,t){return Promise.race([e.then(()=>{},()=>{}),new Promise(r=>setTimeout(r,t))])}function kr(e){let t=[],r=e,s=0;for(;r&&s<5;){let n=r;typeof n.message=="string"&&t.push(n.message),r=n.cause,s+=1}return t.some(n=>/external wallet connection/i.test(n))}function xr(){if(typeof window>"u")return null;try{return window.localStorage.getItem(It)??null}catch{return null}}function Yt(e){if(!(typeof window>"u"))try{e?window.localStorage.setItem(It,e):window.localStorage.removeItem(It)}catch{}}function Tr(e,t){if(typeof window>"u")return t;try{let r=window.localStorage.getItem(e);return r==="cross"||r==="reown"?r:t}catch{return t}}function Ir(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,t)}catch{}}function Sr({children:e,config:t,activeProvider:r,onRequestProviderSwap:s,pendingConnectWalletId:n,clearPending:a,themeMode:f,themeTokens:p,extraWallets:g,walletAllowlist:m}){let[w,I]=We(!1),[S,u]=We(()=>xr()),[T,A]=We(null),{address:h,isConnected:C,isConnecting:E,isReconnecting:D,connector:$}=sr(),{connectors:te,connectAsync:X}=ar(),{disconnectAsync:V}=cr(),{kitConfig:N,connectorRegistry:U,crossProvider:ye,reownProvider:F}=t,R=r==="cross"?ye:F,L=_e(()=>!C||!$?null:fr(U,$.id,S),[C,$,U,S]),we=_e(()=>U.entries.filter(l=>l.type!=="embedded"),[U]),Ke=De(h);Ke.current=h;let Z=N.embeddedProjectId?.trim()||N.crossProjectId?.trim(),z=!!N.onRampEnabled&&!!Z,ue=_e(()=>!z||!Z?null:{projectId:Z,walletState:{getAddress:()=>Ke.current}},[z,Z]),xe=De($);xe.current=$;let Te=N.embeddedProjectId?.trim()||N.crossProjectId?.trim(),Ne=!!N.kycEnabled&&!!Te,$e=_e(()=>!Ne||!Te?null:{projectId:Te,getAccessToken:async()=>{let l=xe.current;if(!(!l||typeof l.getProvider!="function"))try{return(await(await l.getProvider())?.sdk?.getUserInfo?.())?.data?.accessToken||void 0}catch{return}}},[Ne,Te]);ae(()=>mr(()=>I(!0)),[]),ae(()=>{if(!w||typeof document>"u")return;let l=setTimeout(()=>{document.querySelectorAll("#__crossx-confirm-overlay").forEach(b=>b.remove())},50);return()=>clearTimeout(l)},[w]);let Ie=De(C),ge=De(C);Ie.current=C;let Ze=De(!1);ae(()=>{console.debug("[crossx-kit] state",{activeProvider:r,isConnected:C,isConnecting:E,isReconnecting:D,activeConnectorId:$?.id,currentWallet:L,lastIntent:S})},[r,C,E,D,$?.id,L,S]),ae(()=>{C&&!ge.current&&R?.closeModal?.({kitConfig:N}),ge.current=C},[C,R,N]),ae(()=>{C&&A(null)},[C]);let qe=ir(),{switchChainAsync:Ve}=dr(),Se=De(null);ae(()=>{if(!N.enforceDefaultNetworkOnConnect)return;let l=N.defaultNetwork?.id;if(!l)return;if(!C||!h||!$){Se.current=null;return}let b=`${$.id}:${h}`;Se.current!==b&&(Se.current=b,qe!==l&&Ve({chainId:l}).catch(()=>{}))},[N.enforceDefaultNetworkOnConnect,N.defaultNetwork,C,h,$,qe,Ve]);let o=ve(l=>te.find(b=>b.id===l),[te]);ae(()=>{let l=U.getEntry("cross_embedded");if(!l)return;let b=o(l.connectorId);if(!b)return;let v=!1;return(async()=>{try{let y=await b.getProvider();if(v)return;y?.sdk?.applyTheme?.(f,p??void 0)}catch(y){console.debug("[crossx-kit] applyTheme skipped:",y)}})(),()=>{v=!0}},[U,o,f,p]);let i=ve(l=>{u(l),Yt(l)},[]),c=ve(()=>{u(null),Yt(null),A(null)},[]);ae(()=>{if(!R?.subscribeModalState)return;let l=!1;return R.subscribeModalState({kitConfig:N},b=>{if(Ze.current=b,b){l=!0;return}l&&(l=!1,setTimeout(()=>{Ie.current||(async()=>{try{await V()}catch{}c()})()},250))})},[R,N,V,c]),ae(()=>{if(!T||C||typeof window>"u"||T==="cross_embedded")return;let l=typeof document<"u"&&!document.hasFocus(),b=null,v=()=>{l=!0},y=()=>{l&&(b&&clearTimeout(b),b=setTimeout(()=>{Ie.current||Ze.current||(async()=>{try{await V()}catch{}c()})()},1e3))};return window.addEventListener("blur",v),window.addEventListener("focus",y),()=>{window.removeEventListener("blur",v),window.removeEventListener("focus",y),b&&clearTimeout(b)}},[T,C,V,c]);let d=ve(async l=>{console.debug("[crossx-kit] runConnect enter",{walletId:l,activeProvider:r,isConnected:C,activeConnectorId:$?.id});let b=U.getEntry(l);if(!b){if((l==="metamask"||l==="binance")&&!F){console.error(`[crossx-kit] "${l}" requires the Reown adapter, but it is not configured. Pass \`reownProjectId\` (and ensure \`reown\` is not set to \`false\`) when calling createConnectKitConfig() or createCrossxConfig() to enable WalletConnect-based wallets.`);return}console.error(`[crossx-kit] Unknown walletId: "${l}"`);return}if(A(l),b.providerKind!==r){console.debug("[crossx-kit] provider swap needed",{from:r,to:b.providerKind,walletId:l}),i(l);try{await V()}catch{}await new Promise(y=>setTimeout(y,0)),s(b.providerKind,l);return}if(i(l),R?.beforeConnect)try{let y=await R.beforeConnect({kitConfig:N,themeMode:f},l);if(console.debug("[crossx-kit] beforeConnect result",{walletId:l,result:y}),y==="handled")return}catch(y){console.warn('[crossx-kit] adapter.beforeConnect threw for "%s":',l,y)}let v=o(b.connectorId);if(console.debug("[crossx-kit] findConnector",{lookupId:b.connectorId,found:v?.id,availableIds:te.map(y=>y.id)}),!v){console.error(`[crossx-kit] Connector "${b.connectorId}" not found on provider "${b.providerKind}". Available: ${te.map(y=>y.id).join(", ")}`),c();return}try{console.debug("[crossx-kit] connectAsync start",{connectorId:v.id});let y=await X({connector:v});console.debug("[crossx-kit] connectAsync resolved",{accountsLen:y.accounts.length,chainId:y.chainId});return}catch(y){if(!kr(y)){console.error('[crossx-kit] connectAsync error for "%s":',l,y);try{await V()}catch{}}if(!b.fallbackConnectorId){c();return}}if(b.fallbackConnectorId){let y=o(b.fallbackConnectorId);if(y)try{await X({connector:y})}catch(K){console.error('[crossx-kit] Fallback connect failed for "%s":',l,K);try{await V()}catch{}c()}else c()}},[U,te,o,X,V,i,c,R,r,N,s,f]);ae(()=>{if(!n)return;let l=n;a(),d(l)},[n,r]);let k=ve(async()=>{I(!0)},[]),P=ve(async()=>{try{await V()}catch(l){console.error("[crossx-kit] wagmi disconnect error:",l)}if(R?.teardown)try{await R.teardown({kitConfig:N})}catch(l){console.error("[crossx-kit] adapter teardown error:",l)}jt(),c()},[V,R,N,c]),B=ve(async()=>{await Xt(V(),3e3);try{let l=U.getEntry("cross_embedded"),b=l&&o(l.connectorId);if(b?.getProvider){let v=await Promise.race([b.getProvider(),new Promise(K=>setTimeout(K,3e3))]),y=v?.sdk?.signOut;typeof y=="function"&&await Xt(y.call(v.sdk),3e3)}}catch{}jt()},[U,o,V]),_=ve(async()=>{let l=U.getEntry("cross_embedded");if(!l)return null;let b=o(l.connectorId);if(!b)return null;try{let v=await b.getProvider(),y=v?.sdk;if(!y?.selectWallet)return null;let K=await y.selectWallet(y.currentAddress??void 0);return K?.address&&v.notifyAccountsChanged&&v.notifyAccountsChanged([K.address]),K}catch{return null}},[U,o]),W=_e(()=>{let l=t.oauth;return l?{signIn:async b=>{A("cross_embedded");try{await l.signIn(b)}catch(v){throw A(null),v}}}:null},[t.oauth]),Q=De(!1);ae(()=>{if(r!=="cross"||C||E||D||T!=null||Q.current)return;let l=U.getEntry("cross_embedded");if(!l)return;let b=o(l.connectorId);if(!b)return;Q.current=!0;let v=!1;return(async()=>{try{let y=await b.isAuthorized?.();if(v||!y)return;await X({connector:b})}catch{}})(),()=>{v=!0}},[r,C,E,D,T,U,o,X]),ae(()=>{if(T!=="cross_embedded"||C||typeof window>"u")return;let l=!document.hasFocus(),b=()=>{l=!0};window.addEventListener("blur",b);let v=setTimeout(()=>{Ie.current||l||(console.warn("[crossx-kit] embedded sign-in stalled before the OAuth popup opened \u2014 clearing the stale session so a retry starts clean"),c(),B())},Cr);return()=>{window.removeEventListener("blur",b),clearTimeout(v)}},[T,C,c,B]);let x=T!=null&&!C,O=_e(()=>({kitConfig:N,connectorRegistry:U,availableWallets:we,connect:d,connectWallet:k,disconnect:P,selectWallet:_,currentWallet:L,lastIntent:S,isConnecting:x,connectingWalletId:T,openOtherWallets:()=>I(!0),closeOtherWallets:()=>I(!1),otherWalletsOpen:w,oauth:W,extraWallets:g,walletAllowlist:m,onRampEnabled:z}),[N,U,we,d,k,P,_,L,S,x,T,w,W,g,m,z]),G=Zt(xt.Provider,{value:O,children:[e,Qe(Tt,{open:w,onOpenChange:I})]});return $e&&(G=Qe(wr,{config:$e,children:G})),ue&&(G=Qe(yr,{config:ue,children:G})),G}var vr=[/Connection interrupted while trying to subscribe/i,/No matching key\. subscription:/i,/Proposal expired/i];function Pr(e){let t=e?.message;return typeof t!="string"?!1:vr.some(r=>r.test(t))}var Ar={};function Rr(e){return e&&{...e,connections:new Map,current:null}}function Br({children:e,config:t,initialState:r,extraWallets:s=Ar,walletAllowlist:n}){let[a,f]=We(()=>Tr(t.activeProviderStorageKey,t.defaultProvider)),[p,g]=We(null),m=De(!1),{kitConfig:w}=t,[I,S]=We(null),[u,T]=We(null),[A,h]=We(0),C=_e(()=>gr(w.theme,w.autoDetectTheme),[w.theme,w.autoDetectTheme,A]),E=I??C,D=u??w.themeTokens;ae(()=>{if(!w.autoDetectTheme||I||typeof window>"u"||!window.matchMedia)return;let F=window.matchMedia("(prefers-color-scheme: dark)"),R=()=>h(L=>L+1);try{return F.addEventListener("change",R),()=>F.removeEventListener("change",R)}catch{return F.addListener(R),()=>F.removeListener(R)}},[w.autoDetectTheme,I]),ae(()=>{if(typeof document>"u")return;let F=document.documentElement,R=F.getAttribute("data-ds-theme"),L=F.getAttribute("data-theme");return F.setAttribute("data-ds-theme",E),L||F.setAttribute("data-theme",E),()=>{R==null?F.removeAttribute("data-ds-theme"):F.setAttribute("data-ds-theme",R),L==null&&F.removeAttribute("data-theme")}},[E]);let $=_e(()=>br(t.designSystem),[t.designSystem]),te=_e(()=>({mode:E,tokens:D,setThemeMode:F=>S(F),setThemeTokens:F=>T(F)}),[E,D]);ae(()=>{if(typeof window>"u")return;let F=R=>{Pr(R.reason)&&R.preventDefault()};return window.addEventListener("unhandledrejection",F),()=>window.removeEventListener("unhandledrejection",F)},[]);let X=ve((F,R)=>{m.current||(m.current=!0,g(R),f(F),Ir(t.activeProviderStorageKey,F),queueMicrotask(()=>{m.current=!1}))},[t.activeProviderStorageKey]),V=ve(()=>g(null),[]),N=a==="cross"?t.crossWagmiConfig:t.reownWagmiConfig,U=Rr(pr(r,a));if(!N){if(!(a==="cross"?t.reownWagmiConfig:t.crossWagmiConfig))throw new Error("[crossx-kit] createCrossxConfig returned no wagmi Config for either side");let R=a==="cross"?"reown":"cross";queueMicrotask(()=>f(R))}let ye=N??(a==="cross"?t.reownWagmiConfig:t.crossWagmiConfig);return Zt(ft.Provider,{value:te,children:[Qe("style",{"data-crossx-design-system":"",children:$}),Qe(or,{config:ye,initialState:U,children:Qe(ur,{client:hr,children:Qe(Sr,{config:t,activeProvider:a,onRequestProviderSwap:X,pendingConnectWalletId:p,clearPending:V,themeMode:E,themeTokens:D,extraWallets:s,walletAllowlist:n??t.kitConfig.wallets??null,children:e})})},a)]})}import{useCallback as Ge,useEffect as Bo,useMemo as lt}from"react";import{useQueryClient as _o}from"@tanstack/react-query";import{useAccount as Eo,useChainId as Oo,useConfig as No,useSendTransaction as Fo,useSwitchChain as Do}from"wagmi";import{getPublicClient as Et,readContracts as Tn}from"wagmi/actions";import{WalletInfo as Ot,ConnectorId as Ue,resolveEnvironment as Wo}from"@nexus-cross/dapp-ui";import{useOptionalOnRamp as Lo,useOptionalOnRampEligibility as Mo}from"@nexus-cross/onramp/react";import{APPLE_ICON as Wt,BINANCE_ICON as vn,CROSSX_ICON as Dt,EXTENSION_ICON as Go,GOOGLE_ICON as Pn,METAMASK_ICON as An}from"@nexus-cross/connect-kit-wagmi";import{useCallback as oe,useMemo as Pe,useRef as _r}from"react";import{useQueries as Jt,useQuery as nt}from"@tanstack/react-query";import{encodeFunctionData as at,formatUnits as wt,parseSignature as Er,parseUnits as Or}from"viem";import{getChainId as Nr,getPublicClient as pn,readContract as ke,signTypedData as Fr,switchChain as Dr,waitForTransactionReceipt as Wr,writeContract as en}from"wagmi/actions";import{useConfig as Lr}from"wagmi";function Mr(e){return e!=="bridge"}var fn="0x0000000000000000000000000000000000000000",be=100,ot=18,Gr=180000n,Ur=250000n,gn=new Set([56,97]),Kr=130n,$r=100n,qr={dev:{bridgeApi:"https://stg-bridge-api.crosstoken.io/bridge",walletApi:"https://stg-wallet-server.crosstoken.io/api",chainIds:{cross:612044,bsc:97},contracts:{BSC_CROSS:"0x26ca2a92ea9659e073621bb85b9117dc5944cff1",W_CROSS:"0xda37a3B60E6b97E8CB44b460130d40331efc566b",NATIVE_CROSS:"0x0000000000000000000000000000000000000001",USDTX:"0x9f85c7b5d7637e18f946cc8af9c131318c6833d9",CROSSD:"0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb",USDTB:"0xbb188503c32fa7f61e019c3b3ae61ae6b0b3b492",SWAP_BRIDGE_ROUTER:"0x337071C06416f13b568eE644c1D714edd65509eB"},hiddenPairs:[{fromKey:"97-0xbb188503c32fa7f61e019c3b3ae61ae6b0b3b492",toKey:"612044-0x9f85c7b5d7637e18f946cc8af9c131318c6833d9"},{fromKey:"612044-0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb",toKey:"612044-0x9f85c7b5d7637e18f946cc8af9c131318c6833d9"},{fromKey:"97-0x26ca2a92ea9659e073621bb85b9117dc5944cff1",toKey:"612044-0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb"}]},stage:{bridgeApi:"https://stg-bridge-api.crosstoken.io/bridge",walletApi:"https://stg-wallet-server.crosstoken.io/api",chainIds:{cross:612044,bsc:97},contracts:{BSC_CROSS:"0x26ca2a92ea9659e073621bb85b9117dc5944cff1",W_CROSS:"0xda37a3B60E6b97E8CB44b460130d40331efc566b",NATIVE_CROSS:"0x0000000000000000000000000000000000000001",USDTX:"0x9f85c7b5d7637e18f946cc8af9c131318c6833d9",CROSSD:"0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb",USDTB:"0xbb188503c32fa7f61e019c3b3ae61ae6b0b3b492",SWAP_BRIDGE_ROUTER:"0x337071C06416f13b568eE644c1D714edd65509eB"},hiddenPairs:[{fromKey:"97-0xbb188503c32fa7f61e019c3b3ae61ae6b0b3b492",toKey:"612044-0x9f85c7b5d7637e18f946cc8af9c131318c6833d9"},{fromKey:"612044-0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb",toKey:"612044-0x9f85c7b5d7637e18f946cc8af9c131318c6833d9"},{fromKey:"97-0x26ca2a92ea9659e073621bb85b9117dc5944cff1",toKey:"612044-0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb"}]},production:{bridgeApi:"https://bridge-api.crosstoken.io/bridge",walletApi:"https://wallet-server.crosstoken.io/api",chainIds:{cross:612055,bsc:56},contracts:{BSC_CROSS:"0x6bf62ca91e397b5a7d1d6bce97d9092065d7a510",W_CROSS:"0x731a104a4461ae45bfef520468b43c262d35e682",NATIVE_CROSS:"0x0000000000000000000000000000000000000001",USDTX:"0x1c37d4f44ed3ec86d96868001cfa89e97112a85c",CROSSD:"0xff42c13d927a6b9265236619161accb227b6d452",USDTB:"0x55d398326f99059ff775485246999027b3197955",SWAP_BRIDGE_ROUTER:"0xB298C340816fee45cfB39B1e6EE4DB4D5739e357"},hiddenPairs:[{fromKey:"56-0x55d398326f99059ff775485246999027b3197955",toKey:"612055-0x1c37d4f44ed3ec86d96868001cfa89e97112a85c"},{fromKey:"612055-0xff42c13d927a6b9265236619161accb227b6d452",toKey:"612055-0x1c37d4f44ed3ec86d96868001cfa89e97112a85c"},{fromKey:"56-0x6bf62ca91e397b5a7d1d6bce97d9092065d7a510",toKey:"612055-0xff42c13d927a6b9265236619161accb227b6d452"}]}},je=[{type:"function",name:"quoter",stateMutability:"view",inputs:[],outputs:[{name:"",type:"address"}]},{type:"function",name:"swapRouter",stateMutability:"view",inputs:[],outputs:[{name:"",type:"address"}]},{type:"function",name:"getAmountSwapBridgeOut",stateMutability:"view",inputs:[{name:"toChainID",type:"uint256"},{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"amountIn",type:"uint256"}],outputs:[{name:"ok",type:"bool"},{name:"swapAmountOut",type:"uint256"},{name:"bridgeValue",type:"uint256"},{name:"networkFee",type:"uint256"},{name:"exFee",type:"uint256"}]},{type:"function",name:"getAmountSwapBridgeIn",stateMutability:"view",inputs:[{name:"toChainID",type:"uint256"},{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"bridgeValue",type:"uint256"}],outputs:[{name:"ok",type:"bool"},{name:"amountIn",type:"uint256"},{name:"swapAmountOut",type:"uint256"},{name:"networkFee",type:"uint256"},{name:"exFee",type:"uint256"}]},{type:"function",name:"swapBridgeExactInputSingle",stateMutability:"nonpayable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"amountIn",type:"uint256"},{name:"amountOutMinimum",type:"uint256"},{name:"sqrtPriceLimitX96",type:"uint160"},{name:"bridgeParams",type:"tuple",components:[{name:"toChainID",type:"uint256"},{name:"recipient",type:"address"},{name:"extraData",type:"bytes"}]}]},{name:"deadline",type:"uint256"}],outputs:[{name:"amountOut",type:"uint256"}]},{type:"function",name:"swapBridgeExactOutputSingle",stateMutability:"nonpayable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"amountOut",type:"uint256"},{name:"amountInMaximum",type:"uint256"},{name:"sqrtPriceLimitX96",type:"uint160"},{name:"bridgeParams",type:"tuple",components:[{name:"toChainID",type:"uint256"},{name:"recipient",type:"address"},{name:"extraData",type:"bytes"}]}]},{name:"deadline",type:"uint256"}],outputs:[{name:"amountIn",type:"uint256"}]}],St=[{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]}],tn=[{type:"function",name:"name",stateMutability:"view",inputs:[],outputs:[{name:"",type:"string"}]},{type:"function",name:"nonces",stateMutability:"view",inputs:[{name:"owner",type:"address"}],outputs:[{name:"",type:"uint256"}]}],nn=[{type:"function",name:"quoteExactInputSingle",stateMutability:"nonpayable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"amountIn",type:"uint256"},{name:"fee",type:"uint24"},{name:"sqrtPriceLimitX96",type:"uint160"}]}],outputs:[{name:"amountOut",type:"uint256"},{name:"sqrtPriceX96After",type:"uint160"},{name:"initializedTicksCrossed",type:"uint32"},{name:"gasEstimate",type:"uint256"}]},{type:"function",name:"quoteExactOutputSingle",stateMutability:"nonpayable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"amount",type:"uint256"},{name:"fee",type:"uint24"},{name:"sqrtPriceLimitX96",type:"uint160"}]}],outputs:[{name:"amountIn",type:"uint256"},{name:"sqrtPriceX96After",type:"uint160"},{name:"initializedTicksCrossed",type:"uint32"},{name:"gasEstimate",type:"uint256"}]}],Vr=[{type:"function",name:"slot0",stateMutability:"view",inputs:[],outputs:[{name:"sqrtPriceX96",type:"uint160"},{name:"tick",type:"int24"},{name:"observationIndex",type:"uint16"},{name:"observationCardinality",type:"uint16"},{name:"observationCardinalityNext",type:"uint16"},{name:"feeProtocol",type:"uint8"},{name:"unlocked",type:"bool"}]}],Ee=[{type:"function",name:"exactInputSingle",stateMutability:"payable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"recipient",type:"address"},{name:"deadline",type:"uint256"},{name:"amountIn",type:"uint256"},{name:"amountOutMinimum",type:"uint256"},{name:"sqrtPriceLimitX96",type:"uint160"}]}],outputs:[{name:"amountOut",type:"uint256"}]},{type:"function",name:"multicall",stateMutability:"payable",inputs:[{name:"data",type:"bytes[]"}],outputs:[{name:"results",type:"bytes[]"}]},{type:"function",name:"unwrapWETH9",stateMutability:"payable",inputs:[{name:"amountMinimum",type:"uint256"},{name:"recipient",type:"address"}],outputs:[]},{type:"function",name:"refundETH",stateMutability:"payable",inputs:[],outputs:[]}],Hr=[{type:"function",name:"bridgeToken",stateMutability:"payable",inputs:[{name:"toChainID",type:"uint256"},{name:"fromToken",type:"address"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"gasFee",type:"uint256"},{name:"exFee",type:"uint256"},{name:"extraData",type:"bytes"}],outputs:[{name:"",type:"bool"}]}];async function bn(e){let t="";try{t=await e.text()}catch{}if(t){try{let r=JSON.parse(t),s=typeof r.data=="string"&&r.data||typeof r.message=="string"&&r.message||"";if(s)return`${s} (status ${e.status})`}catch{}return`${t.slice(0,300)} (status ${e.status})`}return`status ${e.status}`}async function Le(e,t){let r=await fetch(e,{cache:"no-store",signal:t});if(!r.ok)throw new Error(`CrossD bridge adapter request failed: ${await bn(r)}`);let s=await r.json();if(s&&typeof s=="object"&&"code"in s&&typeof s.code=="number"&&s.code!==200)throw new Error(s.message||`CrossD bridge adapter API error: ${s.code}`);return s&&typeof s=="object"&&"data"in s?s.data:s}async function rn(e,t,r){let s=await fetch(e,{method:"POST",cache:"no-store",signal:r,headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!s.ok)throw new Error(`CrossD bridge adapter request failed: ${await bn(s)}`);let n=await s.json();if(n&&typeof n=="object"&&"code"in n&&typeof n.code=="number"&&n.code!==200)throw new Error(n.message||`CrossD bridge adapter API error: ${n.code}`);return n&&typeof n=="object"&&"data"in n?n.data:n}function zr(e){return new Promise(t=>setTimeout(t,e))}async function Qr(e,t,{attempts:r=60,intervalMs:s=2e3}={}){for(let n=0;n<r;n+=1){try{let a=await Le(`${e}/permit-hash/${t}`);if(Rt(a))return a}catch{}await zr(s)}return null}function ee(e,t){return`${e}-${t.toLowerCase()}`}function ce(e){return ee(e.chainId,e.address)}function Ae(e){return e==="swap"||e==="deposit-swap"||e==="swap-withdraw"}function jr(e){let t=e instanceof Error?e.message:typeof e=="string"?e:"",r=t.toLowerCase();return r.includes("quoteexactinputsingle")||r.includes("quoteexactoutputsingle")||r.includes("getamountswapbridgeout")||r.includes("getamountswapbridgein")||r.includes("execution reverted")?"Amount is too large for this route.":t.split(`
2
+ `)[0]?.trim()||"Failed to quote bridge."}function on(e){return e===56||e===97?"BSC":e===612044||e===612055?"CROSS":`Chain ${e}`}function J(e,t){return t?t.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()?e.contracts.W_CROSS:t:fn}function Xe(e){let t=wt(e,ot);return t.includes(".")?t.replace(/\.?0+$/,""):t}function dt(e){return Or(e||"0",ot)}function le(e){try{return dt(e||"0")}catch{return 0n}}function Me(e){if(typeof e=="bigint")return e;if(typeof e=="number")return BigInt(Math.trunc(e));if(!e)return 0n;try{return BigInt(e)}catch{return 0n}}function vt(e){let t=wt(e,9);return(t.includes(".")?t.replace(/\.?0+$/,""):t)||"0"}function gt(e){return e==="bridge"?Gr:Ur}function sn(e,t){if(!e||!t)return"0";let r=e*e;if(r===0n)return"0";let s=t*t,n=s>r?s-r:r-s;if(n===0n)return"0";let a=(n*100000000n+r/2n)/r;if(a>=100000000n)return"100";let f=a/1000000n,p=(a%1000000n).toString().padStart(6,"0").replace(/0+$/,"");return p?`${f}.${p}`:`${f}`}function Xr(e){if(!e||Number(e)===0)return"0%";let[t,r=""]=e.split("."),s=r.length>4?r.slice(0,4):r;return s?`${t}.${s}%`:`${t}%`}async function an(e,t,r,s,n,a=!1){let f=pn(e,{chainId:t}),p=r;try{let m=await f?.estimateContractGas?.({account:n.account,address:n.address,abi:n.abi,functionName:n.functionName,args:n.args,value:n.value});typeof m=="bigint"&&m>0n&&(p=s?m*Kr/$r:m)}catch{}let g={gas:p};if(gn.has(t))try{let m=await f?.getGasPrice?.();typeof m=="bigint"&&m>0n&&(g.gasPrice=m)}catch{}else if(a)try{let m=await f?.estimateFeesPerGas?.();typeof m?.maxFeePerGas=="bigint"&&(g.maxFeePerGas=m.maxFeePerGas),typeof m?.maxPriorityFeePerGas=="bigint"&&(g.maxPriorityFeePerGas=m.maxPriorityFeePerGas)}catch{}return g}function yn(e){let t=e==="auto"?1:Number(e||"1");return!Number.isFinite(t)||t<0?100n:BigInt(Math.min(1e4,Math.floor(t*100)))}function Pt(e,t){let r=yn(t);return r>=10000n?0n:e*(10000n-r)/10000n}function Yr(e,t){let r=yn(t);return(e*(10000n+r)+9999n)/10000n}function ct(){return BigInt(Math.floor(Date.now()/1e3)+1800)}var Zr={100:"0.01%",500:"0.05%",3e3:"0.3%",1e4:"1%"};function Jr(e){return Zr[e]??`${e/1e4}%`}function eo(e,t){let r=Number(e||"0");return!Number.isFinite(r)||r<=0?"0":(r*t/1e6).toFixed(8).replace(/\.?0+$/,"")}function cn(e){return Xe(e)}function dn(e,t){let r=Number(t??"0");return!Number.isFinite(r)||r<=0?0n:e*BigInt(Math.floor(r))/1000n}function bt(e,t){if(!e)return!1;let r=e.toLowerCase();return t.some(s=>s.toLowerCase()===r)}function to(e,t,r){return[{from:[e.contracts.USDTX],to:[e.contracts.CROSSD]},{from:[e.contracts.BSC_CROSS],to:[e.contracts.NATIVE_CROSS,e.contracts.W_CROSS]},{from:[e.contracts.NATIVE_CROSS,e.contracts.W_CROSS],to:[e.contracts.CROSSD]}].some(n=>bt(t,n.from)&&bt(r,n.to)||bt(t,n.to)&&bt(r,n.from))}function no(e){if(Ae(e.type))return null;if(e.type==="swap-bridge"){let t=e.steps.find(r=>r.type==="bridge");return t?{from:t.fromChain,to:t.toChain,token:t.fromToken}:null}if(e.type==="bridge-swap"){let t=e.steps.find(r=>r.type==="bridge");return t?{from:t.fromChain,to:t.toChain,token:t.fromToken}:null}return{from:e.from.chainId,to:e.to.chainId,token:e.from.address}}function ro({input:e,path:t,config:r}){if(!r||Ae(t.type))return"";let s=Me(r.minimumValue),n=Me(r.gasFee??r.gas_fee),a=t.type==="swap-bridge"?s+n*12n/10n:s;return a<=0n?"":e.fromAmount&&le(e.fromAmount)<a&&t.type!=="swap"?`Minimum ${cn(a)}`:t.type==="swap-bridge"&&e.toAmount&&le(e.toAmount)<a?`Available ${cn(a)} or more.`:""}function oo({input:e,path:t,config:r}){if(!r||t.type!=="bridge"&&t.type!=="bridge-swap")return"";let s=Me(r.gasFee??r.gas_fee);if(s<=0n||!e.fromAmount)return"";let n=le(e.fromToken.balance||"0"),a=le(e.fromAmount);return n-s<a?`Insufficient network fee(${e.fromToken.symbol})`:""}function so(e,t){let r=new Set;return e?.list?.forEach(s=>{let n=s.localChain??s.local_chain;n&&Object.entries(s.pairs||{}).forEach(([a,f])=>{f.forEach(p=>{p.localToken&&r.add(ee(n,p.localToken)),p.remoteToken&&r.add(ee(Number(a),p.remoteToken))})})}),Object.entries(t?.swapPools||t?.swap_pools||{}).forEach(([s,n])=>{n.forEach(a=>{a.token0&&r.add(ee(Number(s),a.token0)),a.token1&&r.add(ee(Number(s),a.token1))})}),r}function io(e,t){return!e||!t?null:ee(e,t)}function ao({envConfig:e,bridgePairList:t,swapPools:r,tokenInfo:s,tokenStats:n}){let a=so(t,r),f=new Map;n?.forEach(g=>{let m=io(Number(g.chainId??g.chain_id),g.address);m&&f.set(m,g)});let p={};return a.forEach(g=>{let[m,w]=g.split("-"),I=Number(m),S=s?.find(T=>Number(T.chainId??T.chain_id)===I&&T.address?.toLowerCase()===w);if(!S?.symbol||!S.name)return;let u=f.get(g);p[g]={key:g,chainId:I,address:w,symbol:S.symbol,name:S.name,decimals:S.decimals||ot,image:S.image||S.icon_url,price:u?.price?Number(u.price):void 0,isNativeToken:w.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()}}),p}function wn(e,t){return t?.list?.find(r=>(r.localChain??r.local_chain)===e)?.bridge||""}function hn(e,t,r){let[s,n]=e.split("-"),[a,f]=t.split("-"),p=Number(s),g=Number(a);for(let m of r?.list||[]){if((m.localChain??m.local_chain)!==p)continue;let w=m.pairs?.[a];if(w){for(let I of w)if(I.localToken?.toLowerCase()===n&&I.remoteToken?.toLowerCase()===f)return{type:"bridge",fromChain:p,fromToken:n,toChain:g,toToken:f,bridgeAddress:wn(p,r)}}}return null}function Cn(e,t,r,s){let[n,a]=e.split("-"),[f,p]=t.split("-");if(n!==f)return null;let g=Number(n),m=(r?.swapPools||r?.swap_pools)?.[n];if(!m)return null;let w=s.contracts.W_CROSS.toLowerCase(),I=s.contracts.NATIVE_CROSS.toLowerCase(),S=u=>u?.toLowerCase()===w?I:u?.toLowerCase();for(let u of m){let T=S(u.token0),A=S(u.token1);if(T===a&&A===p||A===a&&T===p){let h="swap";return g===s.chainIds.cross&&(a===I&&(h="deposit-swap"),p===I&&(h="swap-withdraw")),{pathType:h,step:{type:"swap",chain:g,fromToken:a,toToken:p,fee:u.fee||be,poolAddress:u.poolAddress||u.pool_address||""}}}}return null}function co(e,t,r,s){let[n,a]=e.split("-"),[f]=t.split("-");if(n===f)return null;for(let p of(r?.swapPools||r?.swap_pools)?.[n]||[]){let g=p.token0?.toLowerCase(),m=p.token1?.toLowerCase(),w=g===a?m:m===a?g:null;if(!w)continue;let I=hn(ee(Number(n),w),t,s);if(I)return[{type:"swap",chain:Number(n),fromToken:a,toToken:w,fee:p.fee||be,poolAddress:p.poolAddress||p.pool_address||""},I]}return null}function lo(e,t,r,s,n){let[a,f]=e.split("-"),[p]=t.split("-");if(a===p)return null;for(let g of r?.list||[])if((g.localChain??g.local_chain)===Number(a))for(let m of g.pairs?.[p]||[]){if(m.localToken?.toLowerCase()!==f)continue;let w=m.remoteToken?.toLowerCase();if(!w)continue;let I=Cn(ee(Number(p),w),t,s,n);if(I)return[{type:"bridge",fromChain:Number(a),fromToken:f,toChain:Number(p),toToken:w,bridgeAddress:wn(Number(a),r)},I.step]}return null}function uo({envConfig:e,bridgePairList:t,swapPools:r,enrichedTokens:s}){return(n,a)=>{let f=s[n],p=s[a];if(!f||!p||n===a)return null;let g=hn(n,a,t);if(g)return{type:"bridge",steps:[g],from:f,to:p};let m=Cn(n,a,r,e);if(m)return{type:m.pathType,steps:[m.step],from:f,to:p};let w=co(n,a,r,t);if(w)return{type:"swap-bridge",steps:w,from:f,to:p};let I=lo(n,a,t,r,e);return I?{type:"bridge-swap",steps:I,from:f,to:p}:null}}function ln(e,t){return{name:e.name,symbol:e.symbol,chainId:e.chainId,address:e.address,decimals:e.decimals,balance:t.get(e.key)||"0",iconUrl:e.image,priceUsd:e.price}}function mo(e){return e.length<=10?e:`${e.slice(0,6)}...${e.slice(-4)}`}function po(e){return e.includes(".")?e.replace(/\.?0+$/,"")||"0":e}function fo(e,t){let r=e.startsWith("-"),s=r?e.slice(1):e,[n,a=""]=s.split("."),f=a.slice(0,t).replace(/0+$/,""),p=f?`${n}.${f}`:n;return r?`-${p}`:p}function go(e){let t=e.startsWith("-"),r=t?e.slice(1):e,[s,n]=r.split("."),a=s.replace(/\B(?=(\d{3})+(?!\d))/g,","),f=n?`${a}.${n}`:a;return t?`-${f}`:f}function At(e){if(e==null||e==="")return"0";let t=String(e),r=Number(t);return!Number.isFinite(r)||r===0?"0":go(fo(t,4))}function un(e,t){if(e==null||e==="")return"0";try{return po(wt(BigInt(String(e)),t.decimals))}catch{return"0"}}function Rt(e){return!!(e&&/^0x[0-9a-fA-F]+$/.test(e))}function bo(e){return e?new Date(e*1e3).toISOString():new Date().toISOString()}function yo(e,t){return t.toLowerCase()===e.contracts.W_CROSS.toLowerCase()?e.contracts.NATIVE_CROSS:t}function wo(e,t){let r=mo(t);return{name:r,symbol:r,chainId:e,address:t,decimals:ot,balance:"0"}}function mn({envConfig:e,tokenByBridgeKey:t,chainId:r,address:s}){if(!s)return null;let n=yo(e,s);return t.get(ee(r,n))||t.get(ee(r,s))||wo(r,n)}function yt(e){return e?.toLowerCase()||""}function ho(e){if(e.source==="swap")return"swap";let t=yt(e.fromToken??e.from_token),r=yt(e.toToken??e.to_token),s=yt(e.swapTokenIn??e.swap_token_in),n=yt(e.swapTokenOut??e.swap_token_out);return r&&s&&r===s?"bridge-swap":t&&n&&t===n?"swap-bridge":"bridge"}function Co(e,t){let r=e.status??0,s=e.extracallSuccess??e.extracall_success??!1;return t==="bridge-swap"&&r===1&&!s?"failed":r===1?"success":"pending"}function ko({envConfig:e,item:t,tokenByBridgeKey:r}){let s=Number(t.fromChainID??t.from_chain_id??0),n=Number(t.toChainID??t.to_chain_id??0);if(!s||!n)return null;let a=ho(t),f=t.swapTokenIn??t.swap_token_in,p=t.swapTokenOut??t.swap_token_out,g=t.swapAmountIn??t.swap_amount_in,m=t.swapAmountOut??t.swap_amount_out,w=t.fromToken??t.from_token,I=t.toToken??t.to_token,S=t.value,u=t.value;a==="swap"?(w=f,I=p,S=g,u=m):a==="swap-bridge"?(w=f,S=g,u=t.value):a==="bridge-swap"&&(I=p,S=g,u=m);let T=mn({envConfig:e,tokenByBridgeKey:r,chainId:s,address:w}),A=mn({envConfig:e,tokenByBridgeKey:r,chainId:n,address:I}),h=t.initiatedTxHash??t.initiated_tx_hash;return!T||!A||!Rt(h)?null:{id:`${h}-${t.index??""}`,timestamp:bo(t.initiatedTime??t.initiated_time),txHash:h,fromToken:T,toToken:A,fromAmount:un(S,T),toAmount:un(u,A),summary:{pathType:a},status:Co(t,a)}}function xo(e){let t=new Map;return e.flat().forEach(r=>{let s=Number(r.chainId??r.chain_id),n=r.address?.toLowerCase();if(!s||!n)return;let a=r.quantity?.numeric??r.balance??"0",f=r.quantity?.decimals??r.decimals??ot;try{t.set(ee(s,n),wt(BigInt(a||"0"),f))}catch{t.set(ee(s,n),"0")}}),t}function Oe(e,t="first"){let r=e.steps.filter(s=>s.type==="swap");return t==="last"?r[r.length-1]:r[0]}function To(e,t){let r=(e?.swapPools||e?.swap_pools)?.[String(t.chainIds.cross)];if(!r?.length)return"";let s=t.contracts.CROSSD.toLowerCase(),n=t.contracts.USDTX.toLowerCase(),a=r.find(f=>{let p=f.token0?.toLowerCase(),g=f.token1?.toLowerCase();return p===s&&g===n||p===n&&g===s});return a?.poolAddress||a?.pool_address||""}function Io(e,t){return e.from.chainId===t.chainIds.cross&&e.from.address.toLowerCase()===t.contracts.CROSSD.toLowerCase()&&e.to.chainId===t.chainIds.bsc&&e.to.address.toLowerCase()===t.contracts.USDTB.toLowerCase()}function So(e){if(e===void 0)return;let t=10n**BigInt(ot),r=e>=50000n*t?"normal":e>10000n*t?"low":"rebalancing",s=Number(e>0n?e*100n/(100000n*t):0n);return{label:"Available Liquidity",status:r,percentage:Math.min(s,100)}}function rt(e,t,r,s){let n=[e.from,e.to].find(a=>a.chainId===t&&a.address.toLowerCase()===r.toLowerCase())??s?.[ee(t,r)];return{symbol:n?.symbol||r.slice(0,6),iconUrl:n?.image}}function vo(e,t){let r=[];for(let n of e.steps)n.type==="swap"?(r.push({chain:n.chain,address:n.fromToken}),r.push({chain:n.chain,address:n.toToken})):(r.push({chain:n.fromChain,address:n.fromToken}),r.push({chain:n.toChain,address:n.toToken}));let s=r.filter((n,a)=>a===0||!(n.chain===r[a-1].chain&&n.address.toLowerCase()===r[a-1].address.toLowerCase()));return s.length===0?[{symbol:e.from.symbol,iconUrl:e.from.image},{symbol:e.to.symbol,iconUrl:e.to.image}]:s.map(n=>rt(e,n.chain,n.address,t))}function Po({input:e,path:t,amountData:r,gasInfo:s,liquidity:n,enrichedTokens:a,priceImpact:f}){let p=e.fromAmount||"0",g=e.toAmount||"0",m=Oe(t),w=t.steps.find(D=>D.type==="bridge"),I=t.type!=="bridge",S=!Ae(t.type),u=m?eo(p,m.fee):"0",T=Number(p)>0||Number(g)>0,A=m?rt(t,m.chain,m.fromToken,a):{symbol:e.fromToken.symbol,iconUrl:e.fromToken.iconUrl},h=m?rt(t,m.chain,m.toToken,a):{symbol:e.toToken.symbol,iconUrl:e.toToken.iconUrl},C=w?rt(t,w.fromChain,w.fromToken,a):void 0,E=(D,$,te)=>T?$&&$>0n?{label:D,value:Xe($),tone:"default",valueToken:te}:{label:D,value:"Free",tone:"accent"}:{label:D,value:"0"};return{pathType:t.type,priceImpact:f,liquidity:n,bridgeInfo:S&&w?[{label:"Route",value:`${on(w.fromChain)} \u2192 ${on(w.toChain)}`},E("Validator Fee",r?.exFee,C),E("Network Fee",r?.networkFee,C)]:void 0,swapInfo:I&&m?[{label:"Route",value:"",routeTokens:[rt(t,m.chain,m.fromToken,a),rt(t,m.chain,m.toToken,a)]},{label:"Price Impact",value:Xr(f)},{label:"In Amount",value:At(p),valueToken:A},{label:m&&Ae(t.type)?`Swap Fee (${Jr(m.fee||be)})`:"Swap Fee",value:At(u),valueToken:A},{label:"Out Amount",value:At(g),valueToken:h}]:void 0,txFee:[...s?.gasPrice?[{label:"Gas Price",value:`${s.gasPrice} Gwei`}]:[{label:"Priority Fee Per Gas",value:`${s?.priorityFeePerGas||"0"} Gwei`},{label:"Max Fee Per Gas",value:`${s?.maxFeePerGas||"0"} Gwei`}],{label:"Gas Limit",value:s?.gasLimit||"0"}],txFeeInfo:s?{estTxFee:s.estTxFee,isDelegateFee:s.isDelegateFee,tokenIconUrl:s.gasCurrencyIconUrl,tokenSymbol:s.gasCurrencySymbol}:{estTxFee:"0",isDelegateFee:!1}}}function Bt({env:e,walletAddress:t,enabled:r=!0}){let s=Lr(),n=qr[e],a=r,f=_r(new Map),p=nt({queryKey:["crossd-bridge-adapter",e,"pairs"],queryFn:({signal:o})=>Le(`${n.bridgeApi}/pairs`,o),enabled:a,staleTime:3e4}),g=nt({queryKey:["crossd-bridge-adapter",e,"swap-pools"],queryFn:({signal:o})=>Le(`${n.bridgeApi}/swap-pools`,o),enabled:a,staleTime:3e4}),m=Pe(()=>To(g.data,n),[n,g.data]),w=nt({queryKey:["crossd-bridge-adapter",e,"available-liquidity",m],queryFn:async()=>await ke(s,{address:n.contracts.USDTX,abi:St,functionName:"balanceOf",args:[m],chainId:n.chainIds.cross}),enabled:a&&!!m,staleTime:3e4}),I=nt({queryKey:["crossd-bridge-adapter",e,"token-info"],queryFn:({signal:o})=>Le(`${n.walletApi}/v1/public/token/info`,o),enabled:a,staleTime:3e4}),S=nt({queryKey:["crossd-bridge-adapter",e,"token-stats"],queryFn:({signal:o})=>Le(`${n.walletApi}/v1/public/token/stats`,o),enabled:a,staleTime:3e4}),u=Jt({queries:[n.chainIds.cross,n.chainIds.bsc].map(o=>({queryKey:["crossd-bridge-adapter",e,"balance",t,o],queryFn:({signal:i})=>{let c=new URLSearchParams({networkId:`eip155:${o}`,account:t||""});return Le(`${n.walletApi}/v1/public/token/balance?${c}`,i)},enabled:a&&!!t,staleTime:0,refetchInterval:a&&t?5e3:!1}))}),T=Jt({queries:[n.chainIds.cross,n.chainIds.bsc].map(o=>({queryKey:["crossd-bridge-adapter",e,"gas-suggestion",o],queryFn:async({signal:i})=>{try{let k=await pn(s,{chainId:o})?.estimateFeesPerGas?.();if(k?.maxFeePerGas||k?.gasPrice)return{fast:{maxFee:k.maxFeePerGas?.toString()||k.gasPrice?.toString(),maxPriorityFee:k.maxPriorityFeePerGas?.toString()||"0"}}}catch{}let c=new URLSearchParams({chain_id:String(o),without_gas_limit:"false"});return Le(`${n.walletApi}/v1/public/transaction/gas-suggestion/dynamic?${c}`,i)},enabled:a,staleTime:1e4,retry:1}))}),A=n.hiddenPairs,h=Pe(()=>ao({envConfig:n,bridgePairList:p.data,swapPools:g.data,tokenInfo:I.data,tokenStats:S.data}),[p.data,n,g.data,I.data,S.data]),C=Pe(()=>uo({envConfig:n,bridgePairList:p.data,swapPools:g.data,enrichedTokens:h}),[p.data,h,n,g.data]),E=Pe(()=>xo(u.map(o=>o.data).filter(o=>Array.isArray(o))),[u]),D=Pe(()=>{let o=new Map;return Object.values(h).forEach(i=>{let c=ln(i,E);o.set(i.key,c)}),o},[E,h]),$=Pe(()=>{let o=new Map,i=D.get(ee(n.chainIds.cross,n.contracts.NATIVE_CROSS));i&&o.set(n.chainIds.cross,{symbol:i.symbol,iconUrl:i.iconUrl});let c=I.data?.find(d=>Number(d.chainId??d.chain_id)===n.chainIds.bsc&&(d.symbol??"").toUpperCase()==="BNB");return c&&o.set(n.chainIds.bsc,{symbol:c.symbol??"BNB",iconUrl:c.image??c.icon_url}),o},[n,D,I.data]),te=nt({queryKey:["crossd-bridge-adapter",e,"history",t],queryFn:({signal:o})=>rn(`${n.bridgeApi}/history`,{owner:t,page:1,size:20,sort:"desc",status:"all"},o),enabled:a&&!!t,staleTime:0,refetchInterval:a&&t?5e3:!1}),X=Pe(()=>(te.data?.histories||[]).map(o=>ko({envConfig:n,item:o,tokenByBridgeKey:D})).filter(o=>!!o),[te.data?.histories,n,D]),V=Pe(()=>So(w.data),[w.data]),N=T[0]?.data,U=T[1]?.data,ye=Pe(()=>{let o=new Map;return N&&o.set(n.chainIds.cross,N),U&&o.set(n.chainIds.bsc,U),o},[U,N,n.chainIds.bsc,n.chainIds.cross]),F=oe((o,i,c)=>{let d=ye.get(o.from.chainId)?.fast,k=i?c?.gasLimit??gt(o.type):0n,P=c?.gasPrice&&c.gasPrice>0n?c.gasPrice:0n,B=c?.maxFeePerGas&&c.maxFeePerGas>0n?c.maxFeePerGas:0n,_=c?.maxPriorityFeePerGas&&c.maxPriorityFeePerGas>0n?c.maxPriorityFeePerGas:0n,W=Me(d?.maxFee??d?.max_fee),Q=Me(d?.maxPriorityFee??d?.max_priority_fee),x=B>0n?B:W>0n?W:P,O=_>0n?_:Q>0n?Q:x,H=P>0n?P:x,G=gn.has(o.from.chainId)&&H>0n,b=k*(G?H:x),v=D.get(ee(o.from.chainId,n.contracts.NATIVE_CROSS)),y=o.type!=="swap-bridge",K=$.get(o.from.chainId);return{estTxFee:i?Xe(b):"0",priorityFeePerGas:i&&!G?vt(O):"0",maxFeePerGas:i&&!G?vt(x):"0",gasLimit:i?k.toString():"0",gasPrice:i&&G?vt(H):void 0,isDelegateFee:o.type==="swap-bridge"?!1:to(n,o.from.address,o.to.address),tokenIconUrl:y?v?.iconUrl:void 0,tokenSymbol:y?v?.symbol:void 0,gasCurrencyIconUrl:K?.iconUrl,gasCurrencySymbol:K?.symbol}},[n,ye,$,D]),R=oe(async o=>{let i=no(o);if(!i)return null;let c=`${e}:${i.from}:${i.to}:${i.token.toLowerCase()}`,d=f.current.get(c);if(d)return d;let k=(async()=>{let P=new URLSearchParams({from:String(i.from),to:String(i.to),token:i.token});try{return(await Le(`${n.bridgeApi}/token-config?${P}`)).config??null}catch{return null}})();return f.current.set(c,k),k},[e,n.bridgeApi]),L=Pe(()=>{let o=Object.values(h).map(c=>ln(c,E)),i=ee(n.chainIds.cross,n.contracts.CROSSD);return o.sort((c,d)=>{let k=ce(c).toLowerCase()===i.toLowerCase(),P=ce(d).toLowerCase()===i.toLowerCase();return k!==P?k?-1:1:ce(c).localeCompare(ce(d))})},[E,h,n]),we=oe(o=>{let i=ce(o),c=i.toLowerCase(),d=[];Object.keys(h).forEach(B=>{let _=B.toLowerCase();if(c===_||A.some(x=>x.fromKey===c&&x.toKey===_))return;let W=C(i,B);if(!W)return;let Q=D.get(B);Q&&d.push({token:Q,path:W})});let k=ee(n.chainIds.cross,n.contracts.CROSSD),P=ee(n.chainIds.cross,n.contracts.NATIVE_CROSS);return d.sort((B,_)=>{if(c===k.toLowerCase()){let H=ce(B.token).toLowerCase()===P.toLowerCase(),G=ce(_.token).toLowerCase()===P.toLowerCase();if(H!==G)return H?-1:1}let W=Ae(B.path.type),Q=Ae(_.path.type);if(W!==Q)return W?-1:1;let x=B.token.chainId===o.chainId,O=_.token.chainId===o.chainId;return x!==O?x?-1:1:ce(B.token).localeCompare(ce(_.token))}),d.map(B=>B.token)},[h,n,C,A,D]),Ke=oe(async o=>await ke(s,{address:n.contracts.SWAP_BRIDGE_ROUTER,abi:je,functionName:"quoter",chainId:o}),[n.contracts.SWAP_BRIDGE_ROUTER,s]),Z=oe(async o=>{Nr(s)!==o&&await Dr(s,{chainId:o})},[s]),z=oe(async o=>await ke(s,{address:n.contracts.SWAP_BRIDGE_ROUTER,abi:je,functionName:"swapRouter",chainId:o}),[n.contracts.SWAP_BRIDGE_ROUTER,s]),ue=oe(async({path:o,step:i,amount:c,source:d})=>{let k=await Ke(i.chain),P=i.poolAddress?ke(s,{address:i.poolAddress,abi:Vr,functionName:"slot0",chainId:i.chain}).then(W=>W?.[0]).catch(()=>{}):Promise.resolve(void 0);if(d==="from"){let W=await ke(s,{address:k,abi:nn,functionName:"quoteExactInputSingle",args:[{tokenIn:J(n,i.fromToken),tokenOut:J(n,i.toToken),amountIn:dt(c),fee:i.fee||be,sqrtPriceLimitX96:0n}],chainId:i.chain}),Q=sn(await P,W[1]);return{amount:Xe(W[0]),path:o,priceImpact:Q}}let B=await ke(s,{address:k,abi:nn,functionName:"quoteExactOutputSingle",args:[{tokenIn:J(n,i.fromToken),tokenOut:J(n,i.toToken),amount:dt(c),fee:i.fee||be,sqrtPriceLimitX96:0n}],chainId:i.chain}),_=sn(await P,B[1]);return{amount:Xe(B[0]),path:o,priceImpact:_}},[n,Ke,s]),xe=oe(async(o,i)=>{if(!t)throw new Error("Wallet is not connected.");let c=gt(i.type);if(Ae(i.type)){let x=Oe(i,"first");if(!x)throw new Error("Swap route is not available.");let O=le(o.fromAmount),H=le(o.toAmount);if(O<=0n)throw new Error("Bridge amount is empty.");if(H<=0n)throw new Error("Bridge quote is not ready.");let G=await z(x.chain),l=Pt(H,o.slippage),b=i.type==="swap-withdraw"?fn:t,v={tokenIn:J(n,x.fromToken),tokenOut:J(n,x.toToken),fee:x.fee||be,recipient:b,deadline:ct(),amountIn:O,amountOutMinimum:l,sqrtPriceLimitX96:0n};if(i.type==="swap-withdraw"){let y=at({abi:Ee,functionName:"exactInputSingle",args:[v]}),K=at({abi:Ee,functionName:"unwrapWETH9",args:[l,t]});return{address:G,abi:Ee,functionName:"multicall",args:[[y,K]],chainId:x.chain,fallbackGasLimit:c}}if(i.type==="deposit-swap"){let y=at({abi:Ee,functionName:"exactInputSingle",args:[v]}),K=at({abi:Ee,functionName:"refundETH",args:[]});return{address:G,abi:Ee,functionName:"multicall",args:[[y,K]],value:O,chainId:x.chain,fallbackGasLimit:c}}return{address:G,abi:Ee,functionName:"exactInputSingle",args:[v],chainId:x.chain,fallbackGasLimit:c}}if(i.type==="swap-bridge"){let x=Oe(i,"first");if(!x)throw new Error("Swap bridge route is not available.");let O=le(o.fromAmount),H=le(o.toAmount);if(O<=0n)throw new Error("Bridge amount is empty.");if(H<=0n)throw new Error("Bridge quote is not ready.");let G=n.contracts.SWAP_BRIDGE_ROUTER,l=ct(),b={toChainID:BigInt(i.to.chainId),recipient:t,extraData:"0x"},v={tokenIn:J(n,i.from.address),tokenOut:J(n,x.toToken),fee:x.fee||be,sqrtPriceLimitX96:0n,bridgeParams:b};if(o.lastChangedBy==="to"){let K={...v,amountOut:H,amountInMaximum:Yr(O,o.slippage)};return{address:G,abi:je,functionName:"swapBridgeExactOutputSingle",args:[K,l],value:i.from.isNativeToken?K.amountInMaximum:void 0,chainId:i.from.chainId,fallbackGasLimit:c}}let y={...v,amountIn:O,amountOutMinimum:Pt(O,o.slippage)};return{address:G,abi:je,functionName:"swapBridgeExactInputSingle",args:[y,l],value:i.from.isNativeToken?O:void 0,chainId:i.from.chainId,fallbackGasLimit:c}}let d=i.steps.find(x=>x.type==="bridge");if(!d?.bridgeAddress)throw new Error("Bridge route is not available.");let k=le(o.fromAmount);if(k<=0n)throw new Error("Bridge amount is empty.");let P=await R(i),B=Me(P?.gasFee??P?.gas_fee),_=dn(k,P?.exFeeRate??P?.ex_fee_rate),W="0x";if(i.type==="bridge-swap"){let x=Oe(i,"last");if(!x)throw new Error("Bridge swap route is not available.");let O=le(o.toAmount);if(O<=0n)throw new Error("Bridge quote is not ready.");let H=await z(i.to.chainId),G=Pt(O,o.slippage),l=at({abi:Ee,functionName:"exactInputSingle",args:[{tokenIn:J(n,x.fromToken),tokenOut:J(n,x.toToken),fee:x.fee||be,recipient:t,deadline:ct(),amountIn:k,amountOutMinimum:G,sqrtPriceLimitX96:0n}]});W=`${H}${l.slice(2)}`}let Q=[BigInt(i.to.chainId),i.from.address,t,k,B,_,W];return{address:d.bridgeAddress,abi:Hr,functionName:"bridgeToken",args:Q,value:i.from.isNativeToken?k+_+B:void 0,chainId:i.from.chainId,fallbackGasLimit:c}},[n,R,z,t]),Te=oe(async(o,i)=>{if(i.type==="bridge"||i.type==="bridge-swap")return xe(o,i);if(!t)throw new Error("Wallet is not connected.");let c=le(o.fromAmount);if(c<=0n)throw new Error("Bridge amount is empty.");if(i.type==="swap-bridge"){let B=Oe(i,"first");if(!B)throw new Error("Swap bridge route is not available.");let _=n.contracts.SWAP_BRIDGE_ROUTER,W={tokenIn:J(n,i.from.address),tokenOut:J(n,B.toToken),fee:B.fee||be,sqrtPriceLimitX96:0n,bridgeParams:{toChainID:BigInt(i.to.chainId),recipient:t,extraData:"0x"},amountIn:c,amountOutMinimum:0n};return{address:_,abi:je,functionName:"swapBridgeExactInputSingle",args:[W,ct()],value:i.from.isNativeToken?c:void 0,chainId:i.from.chainId,fallbackGasLimit:gt(i.type)}}let d=Oe(i,"first");if(!d)throw new Error("Swap route is not available.");let k=await z(d.chain),P={tokenIn:J(n,d.fromToken),tokenOut:J(n,d.toToken),fee:d.fee||be,recipient:t,deadline:ct(),amountIn:c,amountOutMinimum:0n,sqrtPriceLimitX96:0n};return{address:k,abi:Ee,functionName:"exactInputSingle",args:[P],value:i.from.isNativeToken?c:void 0,chainId:d.chain,fallbackGasLimit:gt(i.type)}},[xe,n,z,t]),Ne=oe(async(o,i)=>{if(!t)return null;try{let c=await Te(o,i),d=Ae(i.type)||i.type==="swap-bridge",k=await an(s,c.chainId,c.fallbackGasLimit,d,{account:t,address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value},!0);return{gasLimit:k.gas,gasPrice:k.gasPrice,maxFeePerGas:k.maxFeePerGas,maxPriorityFeePerGas:k.maxPriorityFeePerGas}}catch{return null}},[Te,s,t]),$e=oe(async o=>{let i=ce(o.fromToken),c=ce(o.toToken),d=C(i,c);if(!d)return{error:"Route is not available."};let k=o.lastChangedBy==="to"?o.toAmount:o.fromAmount,P=!!k&&Number(k)>0,B=Io(d,n)?V:void 0,_=async(l,b,v)=>{let y=P?await Ne(l,d):null,K=F(d,P,y);return Po({input:l,path:d,gasInfo:K,amountData:b,liquidity:B,enrichedTokens:h,priceImpact:v})};if(!k||Number(k)<=0)return{fromAmount:o.fromAmount,toAmount:o.toAmount,summary:await _(o)};let W=await R(d),Q=Me(W?.gasFee??W?.gas_fee),x=d.type==="bridge"||d.type==="bridge-swap"?{networkFee:Q}:void 0,O=d.type==="bridge"?o.lastChangedBy==="to"?{...o,fromAmount:o.toAmount}:{...o,toAmount:o.fromAmount}:o,H=ro({input:O,path:d,config:W});if(H)return{fromAmount:O.fromAmount,toAmount:O.toAmount,summary:await _(O,x),error:H};let G=oo({input:O,path:d,config:W});if(G)return{fromAmount:O.fromAmount,toAmount:O.toAmount,summary:await _(O,x),error:G};if(d.type==="bridge")return{fromAmount:O.fromAmount,toAmount:O.toAmount,summary:await _(O,x)};try{if(d.type==="swap-bridge"){let y=Oe(d,"first"),K=n.contracts.SWAP_BRIDGE_ROUTER;if(!y)return{error:"Swap bridge route is not ready."};let Je=me=>ue({path:d,step:y,amount:me,source:"from"}).then(Fe=>Fe.priceImpact).catch(()=>{});if(o.lastChangedBy==="from"){let me=await ke(s,{address:K,abi:je,functionName:"getAmountSwapBridgeOut",args:[BigInt(d.to.chainId),J(n,d.from.address),J(n,y.toToken),y.fee||be,dt(o.fromAmount)],chainId:d.from.chainId}),Fe=Xe(me[1]),ut={...o,toAmount:Fe};return{toAmount:Fe,summary:await _(ut,{networkFee:me[3],exFee:me[4]},await Je(o.fromAmount))}}let He=await ke(s,{address:K,abi:je,functionName:"getAmountSwapBridgeIn",args:[BigInt(d.to.chainId),J(n,d.from.address),J(n,y.toToken),y.fee||be,dt(o.toAmount)],chainId:d.from.chainId}),ie=Xe(He[1]),et={...o,fromAmount:ie};return{fromAmount:ie,summary:await _(et,{networkFee:He[3],exFee:He[4]},await Je(ie))}}let l=d.type==="bridge-swap"?Oe(d,"last"):Oe(d,"first");if(!l)return{error:"Swap route is not available."};let b=await ue({path:d,step:l,amount:k,source:o.lastChangedBy});if(o.lastChangedBy==="from"){let y={...o,toAmount:b.amount};return{toAmount:b.amount,summary:await _(y,x,b.priceImpact)}}let v={...o,fromAmount:b.amount};return{fromAmount:b.amount,summary:await _(v,x,b.priceImpact)}}catch(l){return{fromAmount:o.fromAmount,toAmount:o.toAmount,summary:await _(o,x),error:jr(l)}}},[V,F,h,n,Ne,C,R,ue,s]),Ie=oe(async o=>{if(o.from.isNativeToken)return null;if(o.type==="swap"||o.type==="deposit-swap"||o.type==="swap-withdraw")return z(o.from.chainId);if(o.type==="swap-bridge")return n.contracts.SWAP_BRIDGE_ROUTER;let i=o.steps.find(c=>c.type==="bridge");return i?.bridgeAddress?i.bridgeAddress:null},[n.contracts.SWAP_BRIDGE_ROUTER,z]),ge=oe(async o=>{if(!t)throw new Error("Wallet is not connected.");let i=ce(o.fromToken),c=ce(o.toToken),d=C(i,c);if(!d)throw new Error("Route is not available.");if(!Ae(d.type)&&d.type!=="swap-bridge"||d.from.isNativeToken)return null;let k=le(o.fromAmount);if(k<=0n)return null;let P=await Ie(d);return!P||await ke(s,{address:d.from.address,abi:St,functionName:"allowance",args:[t,P],chainId:d.from.chainId})>=k?null:{token:o.fromToken,tokenAddress:d.from.address,spenderAddress:P,amount:o.fromAmount}},[C,Ie,s,t]),Ze=oe(async(o,i)=>{let c=le(i.amount||o.fromAmount);if(c<=0n)throw new Error("Approval amount is empty.");await Z(i.token.chainId);let d=await en(s,{address:i.tokenAddress,abi:St,functionName:"approve",args:[i.spenderAddress,c],chainId:i.token.chainId});await Wr(s,{hash:d,chainId:i.token.chainId})},[Z,s]),qe=oe(async(o,i)=>{let c=await xe(o,i);await Z(c.chainId);let d=await an(s,c.chainId,c.fallbackGasLimit,Mr(i.type),{account:t,address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value});return{txHash:await en(s,{address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value,chainId:c.chainId,...d}),fromToken:o.fromToken,toToken:o.toToken,fromAmount:o.fromAmount,toAmount:o.toAmount}},[xe,Z,s,t]),Ve=oe(async(o,i)=>{let c=t;if(!c)throw new Error("Wallet is not connected.");let d=i.steps.find(Fe=>Fe.type==="bridge");if(!d?.bridgeAddress)throw new Error("Bridge route is not available.");let k=i.from.address,P=i.from.chainId,B=le(o.fromAmount);if(B<=0n)throw new Error("Bridge amount is empty.");let _=await R(i),W=Me(_?.gasFee??_?.gas_fee),Q=dn(B,_?.exFeeRate??_?.ex_fee_rate),x=B+Q+W,[O,H]=await Promise.all([ke(s,{address:k,abi:tn,functionName:"name",chainId:P}),ke(s,{address:k,abi:tn,functionName:"nonces",args:[c],chainId:P})]),G=BigInt(Math.floor(Date.now()/1e3)+300),l=await Fr(s,{domain:{name:O,version:"1",chainId:P,verifyingContract:k},types:{Permit:[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},primaryType:"Permit",message:{owner:c,spender:d.bridgeAddress,value:x,nonce:H,deadline:G}}),{r:b,s:v,v:y,yParity:K}=Er(l),Je=y!==void 0?Number(y):K+27,He={exFee:Q.toString(),from:P,fromToken:k,nonce:Number(H),gasFee:W.toString(),permitArgs:{account:c,deadline:G.toString(),r:b,s:v,token:k,v:Je,value:x.toString()},to:c,toChainID:String(i.to.chainId),value:x.toString()},ie=await rn(`${n.bridgeApi}/permit`,He),et=ie?.requestId??ie?.request_id;if(!et)throw new Error("Bridge permit request failed.");let me=await Qr(n.bridgeApi,et);if(!Rt(me))throw new Error("Bridge submitted, but confirmation timed out. Check History shortly.");return{txHash:me,fromToken:o.fromToken,toToken:o.toToken,fromAmount:o.fromAmount,toAmount:o.toAmount}},[n,R,s,t]),Se=oe(async o=>{let i=ce(o.fromToken),c=ce(o.toToken),d=C(i,c);if(!d)throw new Error("Route is not available.");if(!(Ae(d.type)||d.type==="swap-bridge"||d.type==="bridge-swap"||d.type==="bridge"))throw new Error("This bridge route is not supported yet.");return{...d.type==="bridge"&&d.from.chainId===n.chainIds.bsc&&d.from.address.toLowerCase()===n.contracts.BSC_CROSS.toLowerCase()?await Ve(o,d):await qe(o,d),pathType:d.type,routeTokens:vo(d,h)}},[h,n,C,Ve,qe]);return{bridgeTokens:L,bridgeHistory:X,getBridgeApproval:ge,approveBridge:Ze,getBridgeQuote:$e,getBridgeToTokens:we,submitBridge:Se,isLoading:p.isLoading||g.isLoading||I.isLoading||S.isLoading||u.some(o=>o.isLoading)}}import{useEffect as kn,useRef as Ao,useState as xn}from"react";import{useAccount as Ro}from"wagmi";function _t(e){let{address:t,connector:r}=Ro(),{currentWallet:s}=Be(),n=e?.walletId!==void 0?e.walletId:s,a=e?.connector!==void 0?e.connector:r,f=e?.address!==void 0?e.address:t,[p,g]=xn({loginType:null,accountName:null,accounts:[],isResolved:!1}),m=Ao(new Map),[w,I]=xn(0);return kn(()=>{let S=!1;if(n!=="cross_embedded")return g({loginType:null,accountName:null,accounts:[],isResolved:!0}),()=>{S=!0};if(!a)return g({loginType:null,accountName:null,accounts:[],isResolved:!1}),()=>{S=!0};g(h=>({...h,isResolved:!1}));let u=20,T=300,A=async()=>{if(typeof a.getProvider!="function")return"retry";let h;try{h=await a.getProvider()}catch{return"retry"}let C=h?.sdk;if(!C)return"giveup";try{let L=C.getRNBridgeActiveWallet?.(),we=L?.walletName?.trim();L&&we&&m.current.set(L.address.toLowerCase(),we)}catch{}let[E,D]=await Promise.all([C.getUserInfo?.().catch(()=>null)??null,C.getAddresses?.().catch(()=>null)??null]);if(S)return"done";let $=E?.loginType,te=$==="google"||$==="apple"?$:null;if(!te)return"retry";let X=f?.toLowerCase(),V=X&&Array.isArray(D)?D.find(L=>L.address.toLowerCase()===X):null,N=Array.isArray(D)?D.filter(L=>/^0x[a-fA-F0-9]{40}$/.test(L.address)).map(L=>({address:L.address.toLowerCase(),...Number.isFinite(L.index)?{index:L.index}:{},...L.name?.trim()?{name:L.name.trim()}:{}})):[],U=X?m.current.get(X)?.trim():void 0,ye=!V&&X&&/^0x[a-fA-F0-9]{40}$/.test(X)?[...N,{address:X,index:N.length,...U?{name:U}:{}}]:N,R=U||V?.name?.trim()||(typeof V?.index=="number"?`Account ${V.index+1}`:f?`${f.slice(0,6)}\u2026${f.slice(-4)}`:null);return g({loginType:te,accountName:R,accounts:ye,isResolved:!0}),"done"};return(async()=>{for(let h=0;h<u;h++){if(S)return;let C=await A();if(C==="done")return;if(C==="giveup"){S||g({loginType:null,accountName:null,accounts:[],isResolved:!0});return}await new Promise(E=>setTimeout(E,T))}S||g({loginType:null,accountName:null,accounts:[],isResolved:!0})})(),()=>{S=!0}},[n,a,f,w]),kn(()=>{if(n!=="cross_embedded"||!a||typeof a.getProvider!="function")return;let S=!1,u;return(async()=>{let T;try{T=await a.getProvider()}catch{return}if(S)return;let A=T?.sdk;A?.on&&(u=A.on("addressChanged",({address:h,walletName:C})=>{let E=C?.trim();E&&(m.current.set(h.toLowerCase(),E),I(D=>D+1))}))})(),()=>{S=!0,u?.()}},[n,a]),p}import{Fragment as Sn,jsx as de,jsxs as Ye}from"react/jsx-runtime";var Uo=[{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"totalSupply",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint8"}]}],Ko=[{type:"function",name:"earned",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"posaActive",stateMutability:"view",inputs:[],outputs:[{name:"",type:"bool"}]},{type:"function",name:"lastRewardBlock",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"totalStaked",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint256"}]}],$o={dev:{poolAddress:"0x0000000c5BB5C7B081237B5efaFC753D61201b94",crossChainId:612044,networkStatsUrl:"https://stg-posa-api.crosstoken.io/api/v1/network/stats"},stage:{poolAddress:"0x0000000c5BB5C7B081237B5efaFC753D61201b94",crossChainId:612044,networkStatsUrl:"https://stg-posa-api.crosstoken.io/api/v1/network/stats"},production:{poolAddress:"0x000000068122d9bB43B4BCF5497A10EdfA9F5E93",crossChainId:612055,networkStatsUrl:"https://posa-api.crosstoken.io/api/v1/network/stats"}},Nt=10n**18n,qo={google:{name:"Google",iconUrl:Pn,connectorId:Ue.CROSSx},apple:{name:"Apple",iconUrl:Wt,connectorId:Ue.CROSSx},cross:{name:"CROSSx",iconUrl:Dt,connectorId:Ue.CROSSx},metamask:{name:"MetaMask",iconUrl:An,connectorId:Ue.MetaMask},binance:{name:"Binance Wallet",iconUrl:vn,connectorId:Ue.Binance}};function Vo(e){switch(e){case"cross_embedded":return Ue.CROSSx;case"metamask":return Ue.MetaMask;case"binance":return Ue.Binance;default:return}}function Ho(e,t){switch(e){case"cross_embedded":return t==="google"?{name:"Google",iconUrl:Pn}:t==="apple"?{name:"Apple",iconUrl:Wt}:{name:"CROSSx",iconUrl:Dt};case"cross_wallet":return{name:"CROSSx Wallet",iconUrl:Dt};case"cross_extension":return{name:"CROSSx Extension",iconUrl:Go};case"metamask":return{name:"MetaMask",iconUrl:An};case"binance":return{name:"Binance Wallet",iconUrl:vn};default:return null}}var zo="Bridge is available only with the CROSSx 2.0 wallet.",Qo="Send is available only with the CROSSx 2.0 wallet.";function jo({label:e="Connect Wallet",className:t,style:r,walletInfoStyle:s,user:n,enablePortfolio:a,portfolio:f,theme:p,accountName:g,connectorId:m,showPortfolio:w,sendAccounts:I,getTransactionReceipt:S,sendTransaction:u,estimateGas:T,onDisconnect:A,onSelectWallet:h,onBuy:C,onRampRedirectUrl:E,bridgeTokens:D,bridgeHistory:$,getBridgeQuote:te,getBridgeToTokens:X,getBridgeApproval:V,approveBridge:N,submitBridge:U,showBalance:ye=!0,env:F,...R}){let{address:L,isConnected:we,connector:Ke,chain:Z}=Eo(),z=No(),ue=Oo(),{switchChainAsync:xe}=Do(),{sendTransactionAsync:Te}=Fo(),{connectWallet:Ne,disconnect:$e,selectWallet:Ie,currentWallet:ge,isConnecting:Ze}=Be(),qe=it(),Ve=p??qe?.mode??"dark",Se=lt(()=>Wo(F),[F]),o=n?.address??L,i=n?qo[n.provider]:null,{loginType:c,accountName:d,accounts:k}=_t({walletId:ge,connector:Ke,address:o}),P=lt(()=>i?{name:i.name,iconUrl:i.iconUrl}:Ho(ge,c),[i,ge,c]),B=g??n?.name??d??void 0,_=i?i.connectorId:Vo(ge),W=m??_,Q=f??w??!!a,x=Bt({env:Se,walletAddress:o,enabled:we&&!!o&&ye}),O=D??x.bridgeTokens,H=$??x.bridgeHistory,G=te??x.getBridgeQuote,l=X??x.getBridgeToTokens,b=V??x.getBridgeApproval,v=N??x.approveBridge,y=U??x.submitBridge,K=Ge(()=>{Ne().catch(M=>{console.error("[crossx-kit] connectWallet error:",M)})},[Ne]),Je=Ge(()=>{$e()},[$e]),He=A??Je,ie=Lo(),{eligibility:et}=Mo({network:Z?String(Z.id):void 0}),me=et?.allowed===!0,Fe=lt(()=>{if(C)return C;if(!(!ie||!Z||!me))return()=>ie.open({crypto:Z.nativeCurrency?.symbol??"USDT",network:String(Z.id),...E?{redirectUrl:E}:{}}).then(()=>{}).catch(M=>{throw console.warn("[crossx-kit] onramp open failed:",M),M})},[C,ie,Z,me,E]),ut=_o();Bo(()=>{if(ie?.onStatus)return ie.onStatus(()=>{ut.invalidateQueries()})},[ie,ut]);let On=lt(()=>{if(!C&&!(!ie||!Z)&&!me)return"On-ramp is not available in your region."},[C,ie,Z,me]),Lt=lt(()=>n?n.provider==="google"||n.provider==="apple":ge==="cross_embedded",[n,ge]),Nn=R.onBridgeDisabledMessage??(Lt?void 0:zo),Fn=R.onSendDisabledMessage??(Lt?void 0:Qo),Dn=n?n.provider==="google"||n.provider==="apple":ge==="cross_embedded",Wn=Ge(()=>{Ie().catch(M=>{console.error("[crossx-kit] selectWallet error:",M)})},[Ie]),Mt=h??(Dn?Wn:void 0),Ln=Ge(async({hash:M,chainId:ne})=>{let re=Et(z,ne?{chainId:ne}:void 0);if(!re)return null;try{return await re.getTransactionReceipt({hash:M})}catch{return null}},[z]),Mn=Ge(async M=>{M.chainId!==void 0&&M.chainId!==ue&&await xe({chainId:M.chainId});let re=M.chainId===56||M.chainId===97?{...M,type:"legacy"}:M;return(u??Te)(re)},[u,Te,ue,xe]),Gn=Q?Mn:u,Un=Ge(async M=>{let ne=M.chainId??ue,re=Et(z,ne?{chainId:ne}:void 0);if(!re)throw new Error(`publicClient for chainId ${ne??"unknown"} is not available \u2014 register the chain in createCrossxConfig({ networks }).`);let pe=ne===56||ne===97,[fe,he]=await Promise.all([re.estimateGas({account:M.from,to:M.to,value:M.value,data:M.data}),(async()=>{if(pe)return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await re.getGasPrice()};try{let Y=await re.estimateFeesPerGas();return{maxFeePerGas:Y.maxFeePerGas,maxPriorityFeePerGas:Y.maxPriorityFeePerGas,gasPrice:void 0}}catch{return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await re.getGasPrice()}}})()]);return{gasLimit:fe,maxFeePerGas:he.maxFeePerGas,maxPriorityFeePerGas:he.maxPriorityFeePerGas,gasPrice:he.gasPrice}},[z,ue]),Kn=T??Un,$n=Ge(async M=>{let ne={};if(!L||M.length===0)return ne;let re=M.flatMap(fe=>{let Y={address:fe,abi:Uo,chainId:ue};return[{...Y,functionName:"balanceOf",args:[L]},{...Y,functionName:"totalSupply"},{...Y,functionName:"decimals"}]}),pe;try{pe=await Tn(z,{contracts:re,allowFailure:!0})}catch{return ne}return M.forEach((fe,he)=>{let Y=he*3,Ce=pe[Y],mt=pe[Y+1],tt=pe[Y+2];!Ce||Ce.status!=="success"||(ne[fe.toLowerCase()]={balance:Ce.result,totalSupply:mt&&mt.status==="success"?mt.result:void 0,decimals:tt&&tt.status==="success"?Number(tt.result):void 0})}),ne},[z,L,ue]),qn=Ge(async M=>{let ne={earnedWei:0n,stakedWei:0n};if(!M)return ne;let re=$o[Se],pe={address:re.poolAddress,abi:Ko,chainId:re.crossChainId},fe;try{fe=await Tn(z,{allowFailure:!0,contracts:[{...pe,functionName:"earned",args:[M]},{...pe,functionName:"balanceOf",args:[M]},{...pe,functionName:"posaActive"},{...pe,functionName:"lastRewardBlock"},{...pe,functionName:"totalStaked"}]})}catch{return ne}let he=ze=>fe[ze]&&fe[ze].status==="success"?fe[ze].result:0n,Y=he(0),Ce=he(1);if(fe[2]&&fe[2].status==="success"?fe[2].result:!1)return{earnedWei:Y,stakedWei:Ce};let tt=he(3),Kt=he(4);if(Kt===0n)return{earnedWei:Y,stakedWei:Ce};let ht=0n;try{ht=await Et(z,{chainId:re.crossChainId})?.getBlockNumber?.()??0n}catch{return{earnedWei:Y,stakedWei:Ce}}if(ht<=tt)return{earnedWei:Y,stakedWei:Ce};let Ct=0n;try{let ze=await fetch(re.networkStatsUrl).then(kt=>kt.json()),$t=ze?.data?.block_reward??ze?.block_reward;if($t){let[kt,Qn=""]=String($t).split("."),jn=(Qn+"0".repeat(18)).slice(0,18);Ct=BigInt(kt||"0")*Nt+BigInt(jn||"0")}}catch{}if(Ct===0n)return{earnedWei:Y,stakedWei:Ce};let Hn=(ht-tt)*Ct*Nt/Kt,zn=Ce*Hn/Nt;return{earnedWei:Y+zn,stakedWei:Ce}},[z,Se]),Gt=!Mt,Ut=t?`cb-button ${t}`:"cb-button",Vn=t?`cb-pill ${t}`:"cb-pill";return Ze&&!we?Ye(Sn,{children:[de("style",{children:Ft}),Ye("button",{type:"button",disabled:!0,className:Ut,style:r,"aria-busy":"true",children:[de("span",{className:"cb-spinner","aria-hidden":"true"}),de("span",{className:"cb-button-label",children:"Connecting..."})]})]}):we&&o?Ye("span",{"data-crossx-wallet-info":Gt?"external":"embedded",children:[de("style",{children:Ft}),Gt&&de("style",{children:Yo}),Ye(Ot,{...R,env:Se,theme:Ve,showBalance:ye,walletAddress:o,accountName:B,sendAccounts:I??k,connectorId:W,showPortfolio:Q,onDisconnect:He,onSelectWallet:Mt,onBuy:Fe,onBuyDisabledMessage:On,onBridgeDisabledMessage:Nn,onSendDisabledMessage:Fn,sendTransaction:Gn,getTransactionReceipt:S??Ln,estimateGas:Kn,lpBalanceReader:$n,stakingRewardsReader:qn,bridgeTokens:O,bridgeHistory:H,getBridgeQuote:G,getBridgeToTokens:l,getBridgeApproval:b,approveBridge:v,submitBridge:y,style:s,children:[de(Ot.Trigger,{asChild:!0,children:Ye("button",{type:"button",className:Vn,style:r,"aria-label":`Connected with ${P?.name??"wallet"}: ${In(o)}`,children:[P?.iconUrl?de("img",{src:P.iconUrl,alt:"",width:20,height:20,className:"cb-pill-icon","data-provider":P.iconUrl===Wt?"apple":void 0}):de("span",{className:"cb-pill-icon-placeholder","aria-hidden":"true"}),de("span",{className:"cb-pill-address",children:In(o)})]})}),de(Ot.Content,{align:"end",sideOffset:8})]})]}):Ye(Sn,{children:[de("style",{children:Ft}),Ye("button",{type:"button",onClick:K,className:Ut,style:r,"aria-label":typeof e=="string"?e:"Connect Wallet",children:[de(Xo,{}),de("span",{className:"cb-button-label",children:e})]})]})}function Xo(){return de("svg",{className:"cb-button-icon",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:de("path",{d:"M11.4368 10.5007C11.4368 9.9538 11.6544 9.42855 12.041 9.04175C12.4278 8.65492 12.9529 8.4375 13.5 8.4375H15.1875V6.00073L15.1732 5.92822C15.1639 5.90585 15.15 5.88528 15.1326 5.8678C15.0973 5.83263 15.0494 5.81287 14.9996 5.81287H3.74963C3.4787 5.81287 3.21001 5.75949 2.95972 5.65576C2.90937 5.63488 2.86089 5.61017 2.8125 5.58545V14.2504C2.8125 14.4989 2.91141 14.7371 3.08716 14.9128C3.2629 15.0886 3.50109 15.1875 3.74963 15.1875H15.0007C15.0252 15.1875 15.0495 15.1826 15.0721 15.1732C15.0948 15.1638 15.1152 15.1499 15.1326 15.1326C15.1499 15.1152 15.1638 15.0948 15.1732 15.0721C15.1826 15.0495 15.1875 15.0252 15.1875 15.0007V12.5629H13.5C12.9529 12.5629 12.4278 12.3454 12.041 11.9586C11.6545 11.5719 11.4369 11.0475 11.4368 10.5007ZM12.5618 10.5007C12.5619 10.7491 12.6609 10.9875 12.8364 11.1632C13.0123 11.3391 13.2513 11.4379 13.5 11.4379H15.75C15.7998 11.4379 15.8477 11.4182 15.8829 11.3829C15.9182 11.3477 15.9379 11.2998 15.9379 11.25V9.75037C15.9379 9.70054 15.9182 9.65266 15.8829 9.61743C15.8477 9.5822 15.7998 9.5625 15.75 9.5625H13.5C13.2513 9.5625 13.0123 9.66131 12.8364 9.83716C12.6607 10.013 12.5618 10.2522 12.5618 10.5007ZM13.6879 3.00037C13.6879 2.95054 13.6682 2.90266 13.6329 2.86743C13.5977 2.8322 13.5498 2.8125 13.5 2.8125H3.74963C3.50109 2.8125 3.2629 2.91141 3.08716 3.08716C2.91141 3.2629 2.8125 3.50109 2.8125 3.74963L2.81689 3.84192C2.82585 3.93354 2.8486 4.02351 2.88391 4.10889C2.93096 4.22263 3.00015 4.32614 3.08716 4.41321C3.17403 4.50009 3.2769 4.56936 3.39038 4.61646C3.50412 4.66359 3.62651 4.68787 3.74963 4.68787H13.6879V3.00037ZM14.8129 4.68787H14.9996C15.3473 4.68787 15.6808 4.82576 15.9269 5.07129C16.173 5.31702 16.3119 5.65077 16.3125 5.99854V8.56494C16.4469 8.62873 16.5711 8.7148 16.6783 8.82202C16.9246 9.06823 17.0629 9.40217 17.0629 9.75037V11.25C17.0629 11.5982 16.9246 11.9321 16.6783 12.1783C16.5712 12.2855 16.4468 12.3706 16.3125 12.4343V14.9985L16.3059 15.1282C16.2934 15.2564 16.2619 15.3822 16.2125 15.5017C16.1466 15.6612 16.05 15.806 15.928 15.928C15.806 16.05 15.6612 16.1466 15.5017 16.2125C15.3425 16.2783 15.1719 16.3126 14.9996 16.3125H3.74963C3.20272 16.3125 2.67847 16.095 2.29175 15.7083C1.90502 15.3215 1.6875 14.7973 1.6875 14.2504V3.74963C1.6875 3.20272 1.90502 2.67847 2.29175 2.29175C2.67847 1.90502 3.20272 1.6875 3.74963 1.6875H13.5C13.8482 1.6875 14.1821 1.82581 14.4283 2.07202C14.6746 2.31823 14.8129 2.65217 14.8129 3.00037V4.68787Z",fill:"currentColor"})})}var Yo=`
3
+ [data-crossx-wallet-info="external"] .wi-select-wallet-btn {
4
+ display: none !important;
5
+ }
6
+ `;function In(e){return`${e.slice(0,6)}...${e.slice(-4)}`}var Ft=`
7
+ .cb-button {
8
+ -webkit-font-smoothing: antialiased;
9
+ --cb-bg: var(--ds-accent-primary-default, #00D5AA);
10
+ --cb-bg-hover: var(--ds-accent-primary-high, #00a0a2);
11
+ --cb-color: var(--ds-accent-primary-on, #000);
12
+ --cb-border: none;
13
+ --cb-radius: 8px;
14
+ --cb-height: 36px;
15
+ --cb-padding: 0 16px;
16
+ --cb-font-family: Inter, system-ui, -apple-system, sans-serif;
17
+ --cb-font-size: 14px;
18
+ --cb-font-weight: 500;
19
+ --cb-gap: 8px;
20
+ --cb-transition: background-color 0.15s ease, transform 0.1s ease;
21
+ --cb-loading-opacity: 0.7;
22
+ --cb-press-scale: 0.95;
23
+ --cb-spinner-size: 14px;
24
+ --cb-spinner-thumb: currentColor;
25
+ --cb-spinner-track: color-mix(in srgb, currentColor 20%, transparent);
26
+ --cb-icon-size: 18px;
27
+
28
+ display: inline-flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ box-sizing: border-box;
32
+ height: var(--cb-height);
33
+ gap: var(--cb-gap);
34
+ padding: var(--cb-padding);
35
+ border-radius: var(--cb-radius);
36
+ border: var(--cb-border);
37
+ background: var(--cb-bg);
38
+ color: var(--cb-color);
39
+ font-family: var(--cb-font-family);
40
+ font-size: var(--cb-font-size);
41
+ font-weight: var(--cb-font-weight);
42
+ cursor: pointer;
43
+ transition: var(--cb-transition);
44
+ }
45
+ .cb-button:hover:not(:disabled) { background: var(--cb-bg-hover); }
46
+ .cb-button:active:not(:disabled) { transform: scale(var(--cb-press-scale)); }
47
+ .cb-button:disabled, .cb-button[aria-busy="true"] {
48
+ cursor: default;
49
+ opacity: var(--cb-loading-opacity);
50
+ }
51
+ .cb-spinner {
52
+ display: inline-block;
53
+ width: var(--cb-spinner-size);
54
+ height: var(--cb-spinner-size);
55
+ border: 2px solid var(--cb-spinner-track);
56
+ border-top-color: var(--cb-spinner-thumb);
57
+ border-radius: 50%;
58
+ animation: cck-cb-spin 0.6s linear infinite;
59
+ flex-shrink: 0;
60
+ }
61
+ .cb-button-icon {
62
+ width: var(--cb-icon-size);
63
+ height: var(--cb-icon-size);
64
+ flex-shrink: 0;
65
+ }
66
+ .cb-button-label { white-space: nowrap; }
67
+ .cb-pill {
68
+ --cb-pill-bg: var(--ds-surface-default, #1e232e);
69
+ --cb-pill-bg-hover: var(--ds-surface-medium, #252b39);
70
+ --cb-pill-color: var(--ds-content-high, #ffffffd9);
71
+ --cb-pill-border: 1px solid var(--ds-border-default, #ffffff12);
72
+ --cb-pill-border-hover: 1px solid var(--ds-border-medium, #ffffff2e);
73
+ --cb-pill-radius: 8px;
74
+ --cb-pill-height: 36px;
75
+ --cb-pill-padding: 0 12px;
76
+ --cb-pill-press-scale: 0.95;
77
+ --cb-pill-font-family: Inter, system-ui, -apple-system, sans-serif;
78
+ --cb-pill-font-size: 14px;
79
+ --cb-pill-font-weight: 500;
80
+ --cb-pill-gap: 8px;
81
+ --cb-pill-icon-size: 20px;
82
+ --cb-pill-icon-placeholder-bg: var(--ds-surface-high, #2a2d3a);
83
+ --cb-pill-address-font: Inter, system-ui, -apple-system, sans-serif;
84
+ --cb-pill-address-font-size: 14px;
85
+ --cb-pill-address-letter-spacing: -0.01em;
86
+
87
+ display: inline-flex;
88
+ align-items: center;
89
+ box-sizing: border-box;
90
+ height: var(--cb-pill-height);
91
+ gap: var(--cb-pill-gap);
92
+ padding: var(--cb-pill-padding);
93
+ border-radius: var(--cb-pill-radius);
94
+ border: var(--cb-pill-border);
95
+ background: var(--cb-pill-bg);
96
+ color: var(--cb-pill-color);
97
+ font-family: var(--cb-pill-font-family);
98
+ font-size: var(--cb-pill-font-size);
99
+ font-weight: var(--cb-pill-font-weight);
100
+ cursor: pointer;
101
+ }
102
+ .cb-pill:hover,
103
+ .cb-pill[data-state="open"] { background: var(--cb-pill-bg-hover); border: var(--cb-pill-border-hover, 1px solid var(--ds-border-medium, #ffffff2e)); }
104
+ .cb-pill:active:not(:disabled) { transform: scale(var(--cb-pill-press-scale)); }
105
+ .cb-pill-icon {
106
+ width: var(--cb-pill-icon-size);
107
+ height: var(--cb-pill-icon-size);
108
+ border-radius: 50%;
109
+ object-fit: contain;
110
+ flex-shrink: 0;
111
+ background: transparent;
112
+ }
113
+ /* Apple is a monochrome black logomark in an <img> data URI (can't follow
114
+ theme via currentColor). Flip it to white in dark mode so it stays
115
+ visible on the dark pill; multicolor marks (Google/MetaMask/Binance/
116
+ CROSSx) are untouched. */
117
+ [data-theme="dark"] .cb-pill-icon[data-provider="apple"] {
118
+ filter: invert(1);
119
+ }
120
+ .cb-pill-icon-placeholder {
121
+ display: inline-block;
122
+ width: var(--cb-pill-icon-size);
123
+ height: var(--cb-pill-icon-size);
124
+ border-radius: 50%;
125
+ background: var(--cb-pill-icon-placeholder-bg);
126
+ flex-shrink: 0;
127
+ }
128
+ .cb-pill-address {
129
+ font-family: var(--cb-pill-address-font);
130
+ font-size: var(--cb-pill-address-font-size);
131
+ letter-spacing: var(--cb-pill-address-letter-spacing);
132
+ }
133
+ @media (max-width: 767.98px) {
134
+ .cb-button, .cb-pill {
135
+ width: 36px;
136
+ min-width: 36px;
137
+ padding: 0;
138
+ }
139
+ .cb-button-label, .cb-pill-address { display: none; }
140
+ }
141
+ @keyframes cck-cb-spin {
142
+ to { transform: rotate(360deg); }
143
+ }
144
+ `;import{useCallback as Rn,useEffect as Zo,useMemo as Bn,useState as Jo}from"react";import{detectWallets as _n,DEFAULT_WALLET_REGISTRY as En}from"@nexus-cross/connect-kit-wagmi";import{jsx as se,jsxs as Re}from"react/jsx-runtime";var es=["Ensure your wallet extension is installed and unlocked","Try refreshing the page","Some wallets may require you to first open the extension","You can try clicking the wallet anyway"],ts="Connect with one of our available wallet providers to continue.";function ns({open:e,onClose:t,onSelect:r,title:s="Connect Wallet",description:n=ts,troubleshootingTips:a=es}){let{availableWallets:f}=Be(),[p,g]=Jo({});Zo(()=>{if(!e)return;let u=_n(En),T={};for(let h of u)h.installed!==void 0&&(T[h.id]=h.installed);g(T);let A=setTimeout(()=>{let h=_n(En),C={};for(let E of h)E.installed!==void 0&&(C[E.id]=E.installed);g(C)},1e3);return()=>clearTimeout(A)},[e]);let m=Bn(()=>typeof navigator>"u"?!1:/Mobi|Android/i.test(navigator.userAgent),[]),w=Bn(()=>m?f.filter(u=>u.type!=="extension"):f,[f,m]),I=Rn(u=>{if(!p[u.walletId]&&u.installUrl&&u.type==="extension"){window.open(u.installUrl,"_blank");return}t(),r(u.walletId)},[t,r,p]),S=Rn((u,T)=>{u.stopPropagation(),t(),window.open(T,"_blank")},[t]);return e?se("div",{style:q.overlay,onClick:t,children:Re("div",{style:q.modal,onClick:u=>u.stopPropagation(),children:[Re("div",{style:q.header,children:[se("h2",{style:q.title,children:s}),se("button",{type:"button",onClick:t,style:q.closeBtn,"aria-label":"Close",children:Re("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",children:[se("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),se("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),se("p",{style:q.desc,children:n}),se("div",{style:q.walletList,children:w.map(u=>{let T=p[u.walletId],A=T===!1&&u.type==="extension"&&!!u.installUrl;return Re("div",{style:q.walletGroup,children:[Re("button",{type:"button",onClick:()=>I(u),style:{...q.walletItem,...u.walletId==="cross_wallet"?q.walletItemAccent:{}},"aria-label":`Connect with ${u.name}`,children:[u.iconUrl?se("img",{src:u.iconUrl,alt:"",style:q.walletIcon}):se("div",{style:q.walletIconPlaceholder}),Re("div",{style:q.walletInfo,children:[Re("div",{style:q.walletNameRow,children:[se("span",{style:q.walletName,children:u.name}),T!==void 0&&se("span",{style:{...q.badge,...T?q.badgeInstalled:q.badgeNotInstalled},children:T?"Installed":"Not Installed"})]}),se("span",{style:q.walletDesc,children:A?"Extension not detected \u2014 click to install":u.type==="extension"?"Browser extension approval is required":u.walletId==="cross_wallet"?"App approval is required":u.walletId==="binance"?"Mobile app only \u2014 Add CROSS network first":T?"Connect with browser extension":"Scan QR code with app"})]})]}),u.guideUrl&&Re("button",{type:"button",onClick:h=>S(h,u.guideUrl),style:q.guideBtn,children:[se("span",{"aria-hidden":"true",children:"\u26A0\uFE0F"}),u.guideLabel??"Required Settings"]})]},u.walletId)})}),Re("div",{style:q.troubleshoot,children:[se("h3",{style:q.troubleshootTitle,children:"Wallet not detected?"}),se("ul",{style:q.troubleshootList,children:a.map(u=>Re("li",{style:q.troubleshootItem,children:[se("span",{style:q.troubleshootDot,"aria-hidden":"true"}),se("span",{children:u})]},u))})]})]})}):null}var j={surfaceBg:"var(--wi-surface-bg, #121212)",surfaceDefault:"var(--wi-surface-default, rgba(255,255,255,0.05))",surfaceSubtle:"var(--wi-surface-subtle, rgba(255,255,255,0.1))",borderDefault:"var(--wi-border-default, rgba(255,255,255,0.05))",textPrimary:"var(--wi-texticon-primary, #ffffff)",textSecondary:"var(--wi-texticon-secondary, rgba(255,255,255,0.7))",textTertiary:"var(--wi-texticon-tertiary, rgba(255,255,255,0.5))",primary:"var(--wi-primary, #019d92)",primarySoft:"var(--crossx-kit-primary-soft, rgba(1,157,146,0.15))",accentGradient:"var(--crossx-kit-accent-gradient, linear-gradient(113deg, rgba(255,255,255,0.05) 0%, rgba(1,157,146,0.12) 70%, rgba(255,255,255,0.05) 70%, rgba(1,157,146,0.12) 80%, rgba(255,255,255,0.05) 80%))",warningBg:"var(--crossx-kit-warning-bg, rgba(245,158,11,0.1))",warningBorder:"var(--crossx-kit-warning-border, rgba(245,158,11,0.25))",warningText:"var(--crossx-kit-warning-text, #fbbf24)"},q={overlay:{position:"fixed",inset:0,zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.6)",backdropFilter:"blur(4px)"},modal:{width:"100%",maxWidth:"420px",margin:"16px",background:j.surfaceBg,border:`1px solid ${j.borderDefault}`,borderRadius:"20px",overflow:"hidden"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px 0"},title:{fontSize:"18px",fontWeight:700,color:j.textPrimary,margin:0},closeBtn:{background:"none",border:"none",color:j.textTertiary,cursor:"pointer",padding:"4px",borderRadius:"8px",display:"flex",alignItems:"center",justifyContent:"center"},desc:{padding:"8px 24px 16px",fontSize:"13px",color:j.textTertiary,margin:0,lineHeight:1.5},walletList:{display:"flex",flexDirection:"column",gap:"6px",padding:"0 12px 12px"},walletGroup:{display:"flex",flexDirection:"column",borderRadius:"12px",overflow:"hidden",background:j.surfaceDefault},walletItem:{display:"flex",alignItems:"center",gap:"14px",width:"100%",padding:"14px",background:"transparent",border:"none",color:j.textPrimary,cursor:"pointer",textAlign:"left"},walletItemAccent:{background:j.accentGradient},walletIcon:{width:"40px",height:"40px",borderRadius:"10px",flexShrink:0},walletIconPlaceholder:{width:"40px",height:"40px",borderRadius:"10px",background:j.surfaceSubtle,flexShrink:0},walletInfo:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:"3px"},walletNameRow:{display:"flex",alignItems:"center",gap:"8px"},walletName:{fontSize:"15px",fontWeight:700,lineHeight:1.3,color:j.textPrimary},badge:{fontSize:"10px",fontWeight:600,padding:"2px 7px",borderRadius:"99px",lineHeight:1},badgeInstalled:{background:j.primarySoft,color:j.primary},badgeNotInstalled:{background:"rgba(255,255,255,0.05)",color:j.textTertiary},walletDesc:{fontSize:"11px",color:j.textSecondary,lineHeight:1.3},guideBtn:{display:"flex",alignItems:"center",justifyContent:"center",gap:"6px",margin:"0 14px 14px",padding:"10px 12px",borderRadius:"10px",border:`1px solid ${j.warningBorder}`,background:j.warningBg,color:j.warningText,fontWeight:600,fontSize:"13px",cursor:"pointer"},troubleshoot:{margin:"0 12px 16px",background:j.surfaceDefault,borderRadius:"12px",padding:"14px 16px"},troubleshootTitle:{fontSize:"12px",fontWeight:700,color:j.textPrimary,margin:"0 0 8px"},troubleshootList:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"8px"},troubleshootItem:{display:"flex",alignItems:"flex-start",gap:"8px",fontSize:"11px",color:j.textSecondary,lineHeight:1.5},troubleshootDot:{flexShrink:0,width:"4px",height:"4px",marginTop:"6px",borderRadius:"50%",background:j.textSecondary}};import{useOnRamp as gi,useOnRampEligibility as bi,OnRampProvider as yi}from"@nexus-cross/onramp/react";import{useKyc as hi,useOptionalKyc as Ci,KycProvider as ki,KycError as xi,launchKycVerification as Ti}from"@nexus-cross/kyc/react";import{WalletInfo as Si,ConnectorId as vi}from"@nexus-cross/dapp-ui";import{AppLauncher as Ai,AppLauncherTrigger as Ri,AppLauncherContent as Bi,useGlobalMenu as _i}from"@nexus-cross/dapp-ui";import{SkillsButton as Oi}from"@nexus-cross/dapp-ui";import{OnRampError as Fi}from"@nexus-cross/connect-kit-core";import{ConnectionStatus as Wi,formatBalance as Li,formatWei as Mi}from"@nexus-cross/connect-kit-core";qt();export{Be as a,tr as b,it as c,Tt as d,Br as e,Bt as f,_t as g,jo as h,ns as i,gi as j,bi as k,yi as l,hi as m,Ci as n,ki as o,xi as p,Ti as q,Si as r,vi as s,Ai as t,Ri as u,Bi as v,_i as w,Oi as x,Fi as y,Wi as z,Li as A,Mi as B};
package/dist/client.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export { ConnectButton, ConnectButtonProps, CrossConnectKitContextValue, CrossConnectKitProvider, CrossConnectKitProviderProps, CrossConnectKitThemeContextValue, CrossConnectModal, CrossConnectModalProps, CrossxEmbeddedInfo, OtherWalletsModal, OtherWalletsModalProps, WalletProvider, WalletUser, useCrossConnectKit, useCrossConnectKitTheme, useCrossdBridgeAdapter, useCrossxEmbeddedInfo, useOptionalCrossConnectKitTheme } from './index.js';
2
2
  export { OnRampProvider, OnRampProviderProps, UseOnRampEligibilityOptions, UseOnRampEligibilityResult, UseOnRampOptions, UseOnRampResult, useOnRamp, useOnRampEligibility } from '@nexus-cross/onramp/react';
3
+ export { KycError, KycErrorCode, KycIdentity, KycLaunchTarget, KycLoginType, KycProvider, KycProviderProps, KycRejectType, KycStatus, KycVerificationHandle, KycVerificationMode, LaunchKycVerificationOptions, UseKycOptions, UseKycResult, launchKycVerification, useKyc, useOptionalKyc } from '@nexus-cross/kyc/react';
3
4
  export { AppLauncher, AppLauncherContent, AppLauncherContentProps, AppLauncherProps, AppLauncherTrigger, AppLauncherTriggerProps, AppLauncherTriggerStyle, ConnectButtonStyle, ConnectorId, GlobalMenu, GlobalMenuItem, GlobalMenuItemUrl, SendTransactionArgs, SendTransactionFn, SkillsButton, SkillsButtonProps, SkillsButtonStyle, WalletInfo, WalletInfoContentProps, WalletInfoProps, WalletInfoStyle, WalletInfoTriggerProps, useGlobalMenu } from '@nexus-cross/dapp-ui';
4
5
  import { AppMetadata, NetworkConfig, WalletId } from '@nexus-cross/connect-kit-core';
5
6
  export { Account, ChainBalance, ColorOverrides, ConnectionStatus, ConnectorType, CrossConnectKitConfig, ModalView, OnRampDisallowReason, OnRampEligibility, OnRampError, OnRampErrorCode, OnRampOpenParams, OnRampProviderId, OnRampSession, OnRampStatus, OnRampStatusEvent, Theme, ThemeMode, ThemeTokens, WalletDescriptor, WalletId, WalletState, formatBalance, formatWei } from '@nexus-cross/connect-kit-core';
package/dist/client.js CHANGED
@@ -1 +1 @@
1
- import{a as S,b as _,c as V,d as X,e as W,f as h,g as j,h as F,i as L,j as B,k as U,l as q,m as z,n as D,o as G,p as H,q as J,r as Q,s as Y,t as Z,u as $,v as ee,w as ne}from"./chunk-I27LLZUV.js";import{bscMainnetNetwork as v,bscTestnetNetwork as x,createCrossxConfig as E,crossMainnetNetwork as O,crossTestnetNetwork as k}from"@nexus-cross/connect-kit-wagmi";import{toNexusAdapter as M}from"@nexus-cross/connect-kit-wagmi/to-nexus";import{reownAdapter as P}from"@nexus-cross/connect-kit-wagmi/reown";import{embeddedConnectorFactory as A}from"@nexus-cross/connect-kit-wagmi/embedded";function d(e){try{return import.meta.env?.[e]}catch{return}}function p(e){if(!(typeof process>"u"))return process.env?.[e]}function I(){return d("VITE_CROSSX_ENVIRONMENT")??d("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??p("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??p("CROSSX_ENVIRONMENT")}function K(e){switch(e?.toLowerCase()){case"dev":case"development":return"development";case"stage":case"staging":case"stg":return"staging";default:return"production"}}function R(e){return e==="production"?[O,v]:[k,x]}function T(){return{name:"CROSSx DApp",url:typeof window<"u"&&window.location?.origin?window.location.origin:"https://example.com"}}function b(e){let{app:c,appMetadata:l,networks:u,defaultNetwork:f,wallets:n,embedded:C=!0,environment:w,toNexus:t,reown:o,...r}=e,g=K(w??I()),i=u??R(g),a=Array.isArray(n)?null:n??"all",s=a!=="external-only"&&t!==!1,m=a!=="cross-only"&&o!==!1&&!!r.reownProjectId,y=t===!1?void 0:t,N=o===!1?void 0:o;if(a==="external-only"&&!r.reownProjectId)throw new Error('[crossx-kit] createConnectKitConfig({ wallets: "external-only" }) requires `reownProjectId`.');return E({...r,appMetadata:l??c??T(),networks:i,defaultNetwork:f??i[0],...Array.isArray(n)?{wallets:n}:{},...s?{crossProvider:M(y)}:{},...m?{reownProvider:P(N)}:{},...s&&C?{embeddedConnectorFactory:A}:{}})}export{G as AppLauncher,J as AppLauncherContent,H as AppLauncherTrigger,F as ConnectButton,$ as ConnectionStatus,D as ConnectorId,W as CrossConnectKitProvider,X as CrossConnectModal,Z as OnRampError,q as OnRampProvider,L as OtherWalletsModal,Y as SkillsButton,z as WalletInfo,b as createConnectKitConfig,ee as formatBalance,ne as formatWei,S as useCrossConnectKit,_ as useCrossConnectKitTheme,h as useCrossdBridgeAdapter,j as useCrossxEmbeddedInfo,Q as useGlobalMenu,B as useOnRamp,U as useOnRampEligibility,V as useOptionalCrossConnectKitTheme};
1
+ import{A as ae,B as ie,a as S,b as _,c as V,d as X,e as W,f as h,g as j,h as F,i as L,j as B,k as U,l as q,m as z,n as D,o as G,p as H,q as J,r as Q,s as Y,t as Z,u as $,v as ee,w as ne,x as te,y as oe,z as re}from"./chunk-KY6Y4KXG.js";import{bscMainnetNetwork as v,bscTestnetNetwork as x,createCrossxConfig as E,crossMainnetNetwork as O,crossTestnetNetwork as k}from"@nexus-cross/connect-kit-wagmi";import{toNexusAdapter as M}from"@nexus-cross/connect-kit-wagmi/to-nexus";import{reownAdapter as P}from"@nexus-cross/connect-kit-wagmi/reown";import{embeddedConnectorFactory as A}from"@nexus-cross/connect-kit-wagmi/embedded";function d(e){try{return import.meta.env?.[e]}catch{return}}function p(e){if(!(typeof process>"u"))return process.env?.[e]}function I(){return d("VITE_CROSSX_ENVIRONMENT")??d("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??p("NEXT_PUBLIC_CROSSX_ENVIRONMENT")??p("CROSSX_ENVIRONMENT")}function K(e){switch(e?.toLowerCase()){case"dev":case"development":return"development";case"stage":case"staging":case"stg":return"staging";default:return"production"}}function R(e){return e==="production"?[O,v]:[k,x]}function T(){return{name:"CROSSx DApp",url:typeof window<"u"&&window.location?.origin?window.location.origin:"https://example.com"}}function b(e){let{app:c,appMetadata:l,networks:u,defaultNetwork:f,wallets:n,embedded:C=!0,environment:w,toNexus:t,reown:o,...r}=e,g=K(w??I()),i=u??R(g),a=Array.isArray(n)?null:n??"all",s=a!=="external-only"&&t!==!1,m=a!=="cross-only"&&o!==!1&&!!r.reownProjectId,y=t===!1?void 0:t,N=o===!1?void 0:o;if(a==="external-only"&&!r.reownProjectId)throw new Error('[crossx-kit] createConnectKitConfig({ wallets: "external-only" }) requires `reownProjectId`.');return E({...r,appMetadata:l??c??T(),networks:i,defaultNetwork:f??i[0],...Array.isArray(n)?{wallets:n}:{},...s?{crossProvider:M(y)}:{},...m?{reownProvider:P(N)}:{},...s&&C?{embeddedConnectorFactory:A}:{}})}export{Z as AppLauncher,ee as AppLauncherContent,$ as AppLauncherTrigger,F as ConnectButton,re as ConnectionStatus,Y as ConnectorId,W as CrossConnectKitProvider,X as CrossConnectModal,H as KycError,G as KycProvider,oe as OnRampError,q as OnRampProvider,L as OtherWalletsModal,te as SkillsButton,Q as WalletInfo,b as createConnectKitConfig,ae as formatBalance,ie as formatWei,J as launchKycVerification,S as useCrossConnectKit,_ as useCrossConnectKitTheme,h as useCrossdBridgeAdapter,j as useCrossxEmbeddedInfo,ne as useGlobalMenu,z as useKyc,B as useOnRamp,U as useOnRampEligibility,V as useOptionalCrossConnectKitTheme,D as useOptionalKyc};
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ import { WalletInfoProps, ConnectButtonStyle, WalletInfoStyle, Environment, Brid
8
8
  export { AppLauncher, AppLauncherContent, AppLauncherContentProps, AppLauncherProps, AppLauncherTrigger, AppLauncherTriggerProps, AppLauncherTriggerStyle, ConnectButtonStyle, ConnectorId, GlobalMenu, GlobalMenuItem, GlobalMenuItemUrl, SendTransactionArgs, SendTransactionFn, SkillsButton, SkillsButtonProps, SkillsButtonStyle, WalletInfo, WalletInfoContentProps, WalletInfoProps, WalletInfoStyle, WalletInfoTriggerProps, useGlobalMenu } from '@nexus-cross/dapp-ui';
9
9
  import { Connector } from 'wagmi';
10
10
  export { OnRampProvider, OnRampProviderProps, UseOnRampEligibilityOptions, UseOnRampEligibilityResult, UseOnRampOptions, UseOnRampResult, useOnRamp, useOnRampEligibility } from '@nexus-cross/onramp/react';
11
+ export { KycError, KycErrorCode, KycIdentity, KycLaunchTarget, KycLoginType, KycProvider, KycProviderProps, KycRejectType, KycStatus, KycVerificationHandle, KycVerificationMode, LaunchKycVerificationOptions, UseKycOptions, UseKycResult, launchKycVerification, useKyc, useOptionalKyc } from '@nexus-cross/kyc/react';
11
12
 
12
13
  interface CrossConnectKitProviderProps {
13
14
  children: ReactNode;
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"./chunk-I27LLZUV.js";export{o as AppLauncher,q as AppLauncherContent,p as AppLauncherTrigger,h as ConnectButton,u as ConnectionStatus,n as ConnectorId,e as CrossConnectKitProvider,d as CrossConnectModal,t as OnRampError,l as OnRampProvider,i as OtherWalletsModal,s as SkillsButton,m as WalletInfo,v as formatBalance,w as formatWei,a as useCrossConnectKit,b as useCrossConnectKitTheme,f as useCrossdBridgeAdapter,g as useCrossxEmbeddedInfo,r as useGlobalMenu,j as useOnRamp,k as useOnRampEligibility,c as useOptionalCrossConnectKitTheme};
1
+ import{A,B,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-KY6Y4KXG.js";export{t as AppLauncher,v as AppLauncherContent,u as AppLauncherTrigger,h as ConnectButton,z as ConnectionStatus,s as ConnectorId,e as CrossConnectKitProvider,d as CrossConnectModal,p as KycError,o as KycProvider,y as OnRampError,l as OnRampProvider,i as OtherWalletsModal,x as SkillsButton,r as WalletInfo,A as formatBalance,B as formatWei,q as launchKycVerification,a as useCrossConnectKit,b as useCrossConnectKitTheme,f as useCrossdBridgeAdapter,g as useCrossxEmbeddedInfo,w as useGlobalMenu,m as useKyc,j as useOnRamp,k as useOnRampEligibility,c as useOptionalCrossConnectKitTheme,n as useOptionalKyc};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexus-cross/connect-kit-react",
3
- "version": "1.3.3-beta.9",
3
+ "version": "2.3.4-beta.1",
4
4
  "description": "React components and hooks for @nexus-cross/connect-kit wallet connection",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -24,11 +24,12 @@
24
24
  "access": "public"
25
25
  },
26
26
  "dependencies": {
27
- "@nexus-cross/connect-kit-core": "1.3.3-beta.9",
28
- "@nexus-cross/crossx-design-system": "1.3.3-beta.9",
29
- "@nexus-cross/connect-kit-wagmi": "1.3.3-beta.9",
30
- "@nexus-cross/dapp-ui": "1.3.3-beta.9",
31
- "@nexus-cross/onramp": "1.3.3-beta.9"
27
+ "@nexus-cross/connect-kit-core": "2.3.4-beta.1",
28
+ "@nexus-cross/connect-kit-wagmi": "2.3.4-beta.1",
29
+ "@nexus-cross/crossx-design-system": "2.3.4-beta.1",
30
+ "@nexus-cross/dapp-ui": "2.3.4-beta.1",
31
+ "@nexus-cross/kyc": "1.3.4",
32
+ "@nexus-cross/onramp": "2.3.4-beta.1"
32
33
  },
33
34
  "devDependencies": {
34
35
  "@tanstack/react-query": "^5.60.0",
@@ -1,143 +0,0 @@
1
- var st="1.3.3";var mt="__nexusCrossAppLauncherRuntime";function Qn(){if(typeof window>"u")return null;let e=window;return e[mt]??(e[mt]={mode:"dapp-ui"}),e[mt]}function jn(e){if(e.scheduled)return;e.scheduled=!0;let t=()=>{if(e.scheduled=!1,e.loggedMode!==e.mode){if(e.mode==="connect-kit-react"){let o=e.connectKitVersion??st;console.info(`[CROSSx App Launcher] connect-kit-react v${o} \uCD08\uAE30\uD654 \uC644\uB8CC (dapp-ui v${st}, \uC0AC\uC6A9 \uBAA8\uB4DC: connect-kit)`)}else console.info(`[CROSSx App Launcher] dapp-ui v${st} \uCD08\uAE30\uD654 \uC644\uB8CC (\uC0AC\uC6A9 \uBAA8\uB4DC: dapp-ui only)`);e.loggedMode=e.mode}};typeof queueMicrotask=="function"?queueMicrotask(t):Promise.resolve().then(t)}function qt(){let e=Qn();e&&(e.mode="connect-kit-react",e.connectKitVersion=st,jn(e))}import{useCallback as Oe,useEffect as fe,useMemo as Le,useRef as Je,useState as Me}from"react";import{WagmiProvider as no,useAccount as oo,useConnect as ro,useDisconnect as so}from"wagmi";import{QueryClient as io,QueryClientProvider as ao}from"@tanstack/react-query";import{clearWalletSessionStorage as co,onOpenOtherWallets as lo,pickInitialState as uo,resolveCurrentWallet as mo}from"@nexus-cross/connect-kit-wagmi";import{resolveThemeMode as po}from"@nexus-cross/connect-kit-core";import{buildDesignSystemCss as fo}from"@nexus-cross/crossx-design-system";import{OnRampProvider as go}from"@nexus-cross/onramp/react";import{createContext as Xn,useContext as Yn}from"react";var kt=Xn(null);function Ee(){let e=Yn(kt);if(!e)throw new Error("useCrossConnectKit must be used within <CrossConnectKitProvider>");return e}import{createContext as Zn,useContext as Vt}from"react";var pt=Zn(null);function Jn(){let e=Vt(pt);if(!e)throw new Error("useCrossConnectKitTheme must be used within <CrossConnectKitProvider>");return e}function it(){return Vt(pt)}import{useCallback as eo,useMemo as Ht}from"react";import{WalletConnectModal as zt}from"@nexus-cross/dapp-ui";import{jsx as Qt}from"react/jsx-runtime";var to=new Set(["cross_wallet","cross_extension","metamask","binance"]);function xt({open:e,onOpenChange:t}){let{connect:o,availableWallets:s,oauth:n,extraWallets:a,walletAllowlist:f,kitConfig:p}=Ee(),m=it()?.mode??"dark",w=Ht(()=>{let u=f?new Set(f):null,T={};for(let P of s){if(!to.has(P.walletId)||u&&!u.has(P.walletId))continue;let k=P.walletId;T[k]=()=>{o(P.walletId)}}for(let[P,k]of Object.entries(a))k&&(u&&!u.has(P)||(T[P]=k));return T},[s,o,a,f]),I=Ht(()=>{if(n)return{apple:()=>{n.signIn("apple")},google:()=>{n.signIn("google")}}},[n]),v=eo(u=>t(u),[t]);return Qt(zt,{wallets:w,socialProviders:I,termsUrl:p.legal?.termsUrl,privacyUrl:p.legal?.privacyUrl,theme:m,open:e,onOpenChange:v,children:Qt(zt.Content,{})})}import{jsx as et,jsxs as Xt}from"react/jsx-runtime";var bo=new io,Tt="crossx-kit:last-wallet-intent";function yo(e){let t=[],o=e,s=0;for(;o&&s<5;){let n=o;typeof n.message=="string"&&t.push(n.message),o=n.cause,s+=1}return t.some(n=>/external wallet connection/i.test(n))}function wo(){if(typeof window>"u")return null;try{return window.localStorage.getItem(Tt)??null}catch{return null}}function jt(e){if(!(typeof window>"u"))try{e?window.localStorage.setItem(Tt,e):window.localStorage.removeItem(Tt)}catch{}}function ho(e,t){if(typeof window>"u")return t;try{let o=window.localStorage.getItem(e);return o==="cross"||o==="reown"?o:t}catch{return t}}function Co(e,t){if(!(typeof window>"u"))try{window.localStorage.setItem(e,t)}catch{}}function ko({children:e,config:t,activeProvider:o,onRequestProviderSwap:s,pendingConnectWalletId:n,clearPending:a,themeMode:f,themeTokens:p,extraWallets:b,walletAllowlist:m}){let[w,I]=Me(!1),[v,u]=Me(()=>wo()),[T,P]=Me(null),{address:k,isConnected:x,isConnecting:R,isReconnecting:_,connector:q}=oo(),{connectors:te,connectAsync:z}=ro(),{disconnectAsync:U}=so(),{kitConfig:F,connectorRegistry:W,crossProvider:ye,reownProvider:B}=t,A=o==="cross"?ye:B,E=Le(()=>!x||!q?null:mo(W,q.id,v),[x,q,W,v]),we=Le(()=>W.entries.filter(l=>l.type!=="embedded"),[W]),qe=Je(k);qe.current=k;let X=F.embeddedProjectId?.trim()||F.crossProjectId?.trim(),K=!!F.onRampEnabled&&!!X,le=Le(()=>!K||!X?null:{projectId:X,walletState:{getAddress:()=>qe.current}},[K,X]);fe(()=>lo(()=>I(!0)),[]),fe(()=>{if(!w||typeof document>"u")return;let l=setTimeout(()=>{document.querySelectorAll("#__crossx-confirm-overlay").forEach(g=>g.remove())},50);return()=>clearTimeout(l)},[w]);let he=Je(x),We=Je(x);he.current=x;let De=Je(!1);fe(()=>{console.debug("[crossx-kit] state",{activeProvider:o,isConnected:x,isConnecting:R,isReconnecting:_,activeConnectorId:q?.id,currentWallet:E,lastIntent:v})},[o,x,R,_,q?.id,E,v]),fe(()=>{x&&!We.current&&A?.closeModal?.({kitConfig:F}),We.current=x},[x,A,F]),fe(()=>{x&&P(null)},[x]);let ce=Oe(l=>te.find(g=>g.id===l),[te]);fe(()=>{let l=W.getEntry("cross_embedded");if(!l)return;let g=ce(l.connectorId);if(!g)return;let C=!1;return(async()=>{try{let y=await g.getProvider();if(C)return;y?.sdk?.applyTheme?.(f,p??void 0)}catch(y){console.debug("[crossx-kit] applyTheme skipped:",y)}})(),()=>{C=!0}},[W,ce,f,p]);let Ae=Oe(l=>{u(l),jt(l)},[]),V=Oe(()=>{u(null),jt(null),P(null)},[]);fe(()=>{if(!A?.subscribeModalState)return;let l=!1;return A.subscribeModalState({kitConfig:F},g=>{if(De.current=g,g){l=!0;return}l&&(l=!1,setTimeout(()=>{he.current||(async()=>{try{await U()}catch{}V()})()},250))})},[A,F,U,V]),fe(()=>{if(!T||x||typeof window>"u"||T==="cross_embedded")return;let l=typeof document<"u"&&!document.hasFocus(),g=null,C=()=>{l=!0},y=()=>{l&&(g&&clearTimeout(g),g=setTimeout(()=>{he.current||De.current||(async()=>{try{await U()}catch{}V()})()},1e3))};return window.addEventListener("blur",C),window.addEventListener("focus",y),()=>{window.removeEventListener("blur",C),window.removeEventListener("focus",y),g&&clearTimeout(g)}},[T,x,U,V]);let Ve=Oe(async l=>{console.debug("[crossx-kit] runConnect enter",{walletId:l,activeProvider:o,isConnected:x,activeConnectorId:q?.id});let g=W.getEntry(l);if(!g){if((l==="metamask"||l==="binance")&&!B){console.error(`[crossx-kit] "${l}" requires the Reown adapter, but it is not configured. Pass \`reownProjectId\` (and ensure \`reown\` is not set to \`false\`) when calling createConnectKitConfig() or createCrossxConfig() to enable WalletConnect-based wallets.`);return}console.error(`[crossx-kit] Unknown walletId: "${l}"`);return}if(P(l),g.providerKind!==o){console.debug("[crossx-kit] provider swap needed",{from:o,to:g.providerKind,walletId:l}),Ae(l);try{await U()}catch{}await new Promise(y=>setTimeout(y,0)),s(g.providerKind,l);return}if(Ae(l),A?.beforeConnect)try{let y=await A.beforeConnect({kitConfig:F,themeMode:f},l);if(console.debug("[crossx-kit] beforeConnect result",{walletId:l,result:y}),y==="handled")return}catch(y){console.warn('[crossx-kit] adapter.beforeConnect threw for "%s":',l,y)}let C=ce(g.connectorId);if(console.debug("[crossx-kit] findConnector",{lookupId:g.connectorId,found:C?.id,availableIds:te.map(y=>y.id)}),!C){console.error(`[crossx-kit] Connector "${g.connectorId}" not found on provider "${g.providerKind}". Available: ${te.map(y=>y.id).join(", ")}`),V();return}try{console.debug("[crossx-kit] connectAsync start",{connectorId:C.id});let y=await z({connector:C});console.debug("[crossx-kit] connectAsync resolved",{accountsLen:y.accounts.length,chainId:y.chainId});return}catch(y){if(!yo(y)){console.error('[crossx-kit] connectAsync error for "%s":',l,y);try{await U()}catch{}}if(!g.fallbackConnectorId){V();return}}if(g.fallbackConnectorId){let y=ce(g.fallbackConnectorId);if(y)try{await z({connector:y})}catch(D){console.error('[crossx-kit] Fallback connect failed for "%s":',l,D);try{await U()}catch{}V()}else V()}},[W,te,ce,z,U,Ae,V,A,o,F,s,f]);fe(()=>{if(!n)return;let l=n;a(),Ve(l)},[n,o]);let He=Oe(async()=>{I(!0)},[]),ze=Oe(async()=>{try{await U()}catch(l){console.error("[crossx-kit] wagmi disconnect error:",l)}if(A?.teardown)try{await A.teardown({kitConfig:F})}catch(l){console.error("[crossx-kit] adapter teardown error:",l)}co(),V()},[U,A,F,V]),Re=Oe(async()=>{let l=W.getEntry("cross_embedded");if(!l)return null;let g=ce(l.connectorId);if(!g)return null;try{let C=await g.getProvider(),y=C?.sdk;if(!y?.selectWallet)return null;let D=await y.selectWallet(y.currentAddress??void 0);return D?.address&&C.notifyAccountsChanged&&C.notifyAccountsChanged([D.address]),D}catch{return null}},[W,ce]),r=Le(()=>{let l=t.oauth;return l?{signIn:async g=>{P("cross_embedded");try{await l.signIn(g)}catch(C){throw P(null),C}}}:null},[t.oauth]),i=Je(!1);fe(()=>{if(o!=="cross"||x||R||_||T!=null||i.current)return;let l=W.getEntry("cross_embedded");if(!l)return;let g=ce(l.connectorId);if(!g)return;i.current=!0;let C=!1;return(async()=>{try{let y=await g.isAuthorized?.();if(C||!y)return;await z({connector:g})}catch{}})(),()=>{C=!0}},[o,x,R,_,T,W,ce,z]);let c=T!=null&&!x,d=Le(()=>({kitConfig:F,connectorRegistry:W,availableWallets:we,connect:Ve,connectWallet:He,disconnect:ze,selectWallet:Re,currentWallet:E,lastIntent:v,isConnecting:c,connectingWalletId:T,openOtherWallets:()=>I(!0),closeOtherWallets:()=>I(!1),otherWalletsOpen:w,oauth:r,extraWallets:b,walletAllowlist:m,onRampEnabled:K}),[F,W,we,Ve,He,ze,Re,E,v,c,T,w,r,b,m,K]),h=Xt(kt.Provider,{value:d,children:[e,et(xt,{open:w,onOpenChange:I})]});return le?et(go,{config:le,children:h}):h}var xo=[/Connection interrupted while trying to subscribe/i,/No matching key\. subscription:/i,/Proposal expired/i];function To(e){let t=e?.message;return typeof t!="string"?!1:xo.some(o=>o.test(t))}var Io={};function So(e){return e&&{...e,connections:new Map,current:null}}function vo({children:e,config:t,initialState:o,extraWallets:s=Io,walletAllowlist:n}){let[a,f]=Me(()=>ho(t.activeProviderStorageKey,t.defaultProvider)),[p,b]=Me(null),m=Je(!1),{kitConfig:w}=t,[I,v]=Me(null),[u,T]=Me(null),[P,k]=Me(0),x=Le(()=>po(w.theme,w.autoDetectTheme),[w.theme,w.autoDetectTheme,P]),R=I??x,_=u??w.themeTokens;fe(()=>{if(!w.autoDetectTheme||I||typeof window>"u"||!window.matchMedia)return;let B=window.matchMedia("(prefers-color-scheme: dark)"),A=()=>k(E=>E+1);try{return B.addEventListener("change",A),()=>B.removeEventListener("change",A)}catch{return B.addListener(A),()=>B.removeListener(A)}},[w.autoDetectTheme,I]),fe(()=>{if(typeof document>"u")return;let B=document.documentElement,A=B.getAttribute("data-ds-theme"),E=B.getAttribute("data-theme");return B.setAttribute("data-ds-theme",R),E||B.setAttribute("data-theme",R),()=>{A==null?B.removeAttribute("data-ds-theme"):B.setAttribute("data-ds-theme",A),E==null&&B.removeAttribute("data-theme")}},[R]);let q=Le(()=>fo(t.designSystem),[t.designSystem]),te=Le(()=>({mode:R,tokens:_,setThemeMode:B=>v(B),setThemeTokens:B=>T(B)}),[R,_]);fe(()=>{if(typeof window>"u")return;let B=A=>{To(A.reason)&&A.preventDefault()};return window.addEventListener("unhandledrejection",B),()=>window.removeEventListener("unhandledrejection",B)},[]);let z=Oe((B,A)=>{m.current||(m.current=!0,b(A),f(B),Co(t.activeProviderStorageKey,B),queueMicrotask(()=>{m.current=!1}))},[t.activeProviderStorageKey]),U=Oe(()=>b(null),[]),F=a==="cross"?t.crossWagmiConfig:t.reownWagmiConfig,W=So(uo(o,a));if(!F){if(!(a==="cross"?t.reownWagmiConfig:t.crossWagmiConfig))throw new Error("[crossx-kit] createCrossxConfig returned no wagmi Config for either side");let A=a==="cross"?"reown":"cross";queueMicrotask(()=>f(A))}let ye=F??(a==="cross"?t.reownWagmiConfig:t.crossWagmiConfig);return Xt(pt.Provider,{value:te,children:[et("style",{"data-crossx-design-system":"",children:q}),et(no,{config:ye,initialState:W,children:et(ao,{client:bo,children:et(ko,{config:t,activeProvider:a,onRequestProviderSwap:z,pendingConnectWalletId:p,clearPending:U,themeMode:R,themeTokens:_,extraWallets:s,walletAllowlist:n??t.kitConfig.wallets??null,children:e})})},a)]})}import{useCallback as Ke,useEffect as Ir,useMemo as lt}from"react";import{useQueryClient as Sr}from"@tanstack/react-query";import{useAccount as vr,useChainId as Pr,useConfig as Ar,useSendTransaction as Rr,useSwitchChain as Br}from"wagmi";import{getPublicClient as _t,readContracts as kn}from"wagmi/actions";import{WalletInfo as Et,ConnectorId as $e,resolveEnvironment as _r}from"@nexus-cross/dapp-ui";import{useOptionalOnRamp as Er,useOptionalOnRampEligibility as Or}from"@nexus-cross/onramp/react";import{APPLE_ICON as Wt,BINANCE_ICON as In,CROSSX_ICON as Ft,EXTENSION_ICON as Nr,GOOGLE_ICON as Sn,METAMASK_ICON as vn}from"@nexus-cross/connect-kit-wagmi";import{useCallback as re,useMemo as Se,useRef as Po}from"react";import{useQueries as Yt,useQuery as tt}from"@tanstack/react-query";import{encodeFunctionData as at,formatUnits as yt,parseSignature as Ao,parseUnits as Ro}from"viem";import{getChainId as Bo,getPublicClient as un,readContract as Te,signTypedData as _o,switchChain as Eo,waitForTransactionReceipt as Oo,writeContract as Zt}from"wagmi/actions";import{useConfig as No}from"wagmi";function Fo(e){return e!=="bridge"}var mn="0x0000000000000000000000000000000000000000",be=100,ot=18,Wo=180000n,Do=250000n,pn=new Set([56,97]),Lo=130n,Mo=100n,Go={dev:{bridgeApi:"https://stg-bridge-api.crosstoken.io/bridge",walletApi:"https://stg-wallet-server.crosstoken.io/api",chainIds:{cross:612044,bsc:97},contracts:{BSC_CROSS:"0x26ca2a92ea9659e073621bb85b9117dc5944cff1",W_CROSS:"0xda37a3B60E6b97E8CB44b460130d40331efc566b",NATIVE_CROSS:"0x0000000000000000000000000000000000000001",USDTX:"0x9f85c7b5d7637e18f946cc8af9c131318c6833d9",CROSSD:"0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb",USDTB:"0xbb188503c32fa7f61e019c3b3ae61ae6b0b3b492",SWAP_BRIDGE_ROUTER:"0x337071C06416f13b568eE644c1D714edd65509eB"},hiddenPairs:[{fromKey:"97-0xbb188503c32fa7f61e019c3b3ae61ae6b0b3b492",toKey:"612044-0x9f85c7b5d7637e18f946cc8af9c131318c6833d9"},{fromKey:"612044-0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb",toKey:"612044-0x9f85c7b5d7637e18f946cc8af9c131318c6833d9"},{fromKey:"97-0x26ca2a92ea9659e073621bb85b9117dc5944cff1",toKey:"612044-0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb"}]},stage:{bridgeApi:"https://stg-bridge-api.crosstoken.io/bridge",walletApi:"https://stg-wallet-server.crosstoken.io/api",chainIds:{cross:612044,bsc:97},contracts:{BSC_CROSS:"0x26ca2a92ea9659e073621bb85b9117dc5944cff1",W_CROSS:"0xda37a3B60E6b97E8CB44b460130d40331efc566b",NATIVE_CROSS:"0x0000000000000000000000000000000000000001",USDTX:"0x9f85c7b5d7637e18f946cc8af9c131318c6833d9",CROSSD:"0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb",USDTB:"0xbb188503c32fa7f61e019c3b3ae61ae6b0b3b492",SWAP_BRIDGE_ROUTER:"0x337071C06416f13b568eE644c1D714edd65509eB"},hiddenPairs:[{fromKey:"97-0xbb188503c32fa7f61e019c3b3ae61ae6b0b3b492",toKey:"612044-0x9f85c7b5d7637e18f946cc8af9c131318c6833d9"},{fromKey:"612044-0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb",toKey:"612044-0x9f85c7b5d7637e18f946cc8af9c131318c6833d9"},{fromKey:"97-0x26ca2a92ea9659e073621bb85b9117dc5944cff1",toKey:"612044-0x9364ea6790f6e0ecfaa5164085f2a7de34ec55fb"}]},production:{bridgeApi:"https://bridge-api.crosstoken.io/bridge",walletApi:"https://wallet-server.crosstoken.io/api",chainIds:{cross:612055,bsc:56},contracts:{BSC_CROSS:"0x6bf62ca91e397b5a7d1d6bce97d9092065d7a510",W_CROSS:"0x731a104a4461ae45bfef520468b43c262d35e682",NATIVE_CROSS:"0x0000000000000000000000000000000000000001",USDTX:"0x1c37d4f44ed3ec86d96868001cfa89e97112a85c",CROSSD:"0xff42c13d927a6b9265236619161accb227b6d452",USDTB:"0x55d398326f99059ff775485246999027b3197955",SWAP_BRIDGE_ROUTER:"0xB298C340816fee45cfB39B1e6EE4DB4D5739e357"},hiddenPairs:[{fromKey:"56-0x55d398326f99059ff775485246999027b3197955",toKey:"612055-0x1c37d4f44ed3ec86d96868001cfa89e97112a85c"},{fromKey:"612055-0xff42c13d927a6b9265236619161accb227b6d452",toKey:"612055-0x1c37d4f44ed3ec86d96868001cfa89e97112a85c"},{fromKey:"56-0x6bf62ca91e397b5a7d1d6bce97d9092065d7a510",toKey:"612055-0xff42c13d927a6b9265236619161accb227b6d452"}]}},je=[{type:"function",name:"quoter",stateMutability:"view",inputs:[],outputs:[{name:"",type:"address"}]},{type:"function",name:"swapRouter",stateMutability:"view",inputs:[],outputs:[{name:"",type:"address"}]},{type:"function",name:"getAmountSwapBridgeOut",stateMutability:"view",inputs:[{name:"toChainID",type:"uint256"},{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"amountIn",type:"uint256"}],outputs:[{name:"ok",type:"bool"},{name:"swapAmountOut",type:"uint256"},{name:"bridgeValue",type:"uint256"},{name:"networkFee",type:"uint256"},{name:"exFee",type:"uint256"}]},{type:"function",name:"getAmountSwapBridgeIn",stateMutability:"view",inputs:[{name:"toChainID",type:"uint256"},{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"bridgeValue",type:"uint256"}],outputs:[{name:"ok",type:"bool"},{name:"amountIn",type:"uint256"},{name:"swapAmountOut",type:"uint256"},{name:"networkFee",type:"uint256"},{name:"exFee",type:"uint256"}]},{type:"function",name:"swapBridgeExactInputSingle",stateMutability:"nonpayable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"amountIn",type:"uint256"},{name:"amountOutMinimum",type:"uint256"},{name:"sqrtPriceLimitX96",type:"uint160"},{name:"bridgeParams",type:"tuple",components:[{name:"toChainID",type:"uint256"},{name:"recipient",type:"address"},{name:"extraData",type:"bytes"}]}]},{name:"deadline",type:"uint256"}],outputs:[{name:"amountOut",type:"uint256"}]},{type:"function",name:"swapBridgeExactOutputSingle",stateMutability:"nonpayable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"amountOut",type:"uint256"},{name:"amountInMaximum",type:"uint256"},{name:"sqrtPriceLimitX96",type:"uint160"},{name:"bridgeParams",type:"tuple",components:[{name:"toChainID",type:"uint256"},{name:"recipient",type:"address"},{name:"extraData",type:"bytes"}]}]},{name:"deadline",type:"uint256"}],outputs:[{name:"amountIn",type:"uint256"}]}],It=[{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"allowance",stateMutability:"view",inputs:[{name:"owner",type:"address"},{name:"spender",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"approve",stateMutability:"nonpayable",inputs:[{name:"spender",type:"address"},{name:"amount",type:"uint256"}],outputs:[{name:"",type:"bool"}]}],Jt=[{type:"function",name:"name",stateMutability:"view",inputs:[],outputs:[{name:"",type:"string"}]},{type:"function",name:"nonces",stateMutability:"view",inputs:[{name:"owner",type:"address"}],outputs:[{name:"",type:"uint256"}]}],en=[{type:"function",name:"quoteExactInputSingle",stateMutability:"nonpayable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"amountIn",type:"uint256"},{name:"fee",type:"uint24"},{name:"sqrtPriceLimitX96",type:"uint160"}]}],outputs:[{name:"amountOut",type:"uint256"},{name:"sqrtPriceX96After",type:"uint160"},{name:"initializedTicksCrossed",type:"uint32"},{name:"gasEstimate",type:"uint256"}]},{type:"function",name:"quoteExactOutputSingle",stateMutability:"nonpayable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"amount",type:"uint256"},{name:"fee",type:"uint24"},{name:"sqrtPriceLimitX96",type:"uint160"}]}],outputs:[{name:"amountIn",type:"uint256"},{name:"sqrtPriceX96After",type:"uint160"},{name:"initializedTicksCrossed",type:"uint32"},{name:"gasEstimate",type:"uint256"}]}],Uo=[{type:"function",name:"slot0",stateMutability:"view",inputs:[],outputs:[{name:"sqrtPriceX96",type:"uint160"},{name:"tick",type:"int24"},{name:"observationIndex",type:"uint16"},{name:"observationCardinality",type:"uint16"},{name:"observationCardinalityNext",type:"uint16"},{name:"feeProtocol",type:"uint8"},{name:"unlocked",type:"bool"}]}],Ne=[{type:"function",name:"exactInputSingle",stateMutability:"payable",inputs:[{name:"params",type:"tuple",components:[{name:"tokenIn",type:"address"},{name:"tokenOut",type:"address"},{name:"fee",type:"uint24"},{name:"recipient",type:"address"},{name:"deadline",type:"uint256"},{name:"amountIn",type:"uint256"},{name:"amountOutMinimum",type:"uint256"},{name:"sqrtPriceLimitX96",type:"uint160"}]}],outputs:[{name:"amountOut",type:"uint256"}]},{type:"function",name:"multicall",stateMutability:"payable",inputs:[{name:"data",type:"bytes[]"}],outputs:[{name:"results",type:"bytes[]"}]},{type:"function",name:"unwrapWETH9",stateMutability:"payable",inputs:[{name:"amountMinimum",type:"uint256"},{name:"recipient",type:"address"}],outputs:[]},{type:"function",name:"refundETH",stateMutability:"payable",inputs:[],outputs:[]}],Ko=[{type:"function",name:"bridgeToken",stateMutability:"payable",inputs:[{name:"toChainID",type:"uint256"},{name:"fromToken",type:"address"},{name:"to",type:"address"},{name:"value",type:"uint256"},{name:"gasFee",type:"uint256"},{name:"exFee",type:"uint256"},{name:"extraData",type:"bytes"}],outputs:[{name:"",type:"bool"}]}];async function fn(e){let t="";try{t=await e.text()}catch{}if(t){try{let o=JSON.parse(t),s=typeof o.data=="string"&&o.data||typeof o.message=="string"&&o.message||"";if(s)return`${s} (status ${e.status})`}catch{}return`${t.slice(0,300)} (status ${e.status})`}return`status ${e.status}`}async function Ge(e,t){let o=await fetch(e,{cache:"no-store",signal:t});if(!o.ok)throw new Error(`CrossD bridge adapter request failed: ${await fn(o)}`);let s=await o.json();if(s&&typeof s=="object"&&"code"in s&&typeof s.code=="number"&&s.code!==200)throw new Error(s.message||`CrossD bridge adapter API error: ${s.code}`);return s&&typeof s=="object"&&"data"in s?s.data:s}async function tn(e,t,o){let s=await fetch(e,{method:"POST",cache:"no-store",signal:o,headers:{"content-type":"application/json"},body:JSON.stringify(t)});if(!s.ok)throw new Error(`CrossD bridge adapter request failed: ${await fn(s)}`);let n=await s.json();if(n&&typeof n=="object"&&"code"in n&&typeof n.code=="number"&&n.code!==200)throw new Error(n.message||`CrossD bridge adapter API error: ${n.code}`);return n&&typeof n=="object"&&"data"in n?n.data:n}function $o(e){return new Promise(t=>setTimeout(t,e))}async function qo(e,t,{attempts:o=60,intervalMs:s=2e3}={}){for(let n=0;n<o;n+=1){try{let a=await Ge(`${e}/permit-hash/${t}`);if(At(a))return a}catch{}await $o(s)}return null}function ee(e,t){return`${e}-${t.toLowerCase()}`}function ie(e){return ee(e.chainId,e.address)}function ve(e){return e==="swap"||e==="deposit-swap"||e==="swap-withdraw"}function nn(e){return e===56||e===97?"BSC":e===612044||e===612055?"CROSS":`Chain ${e}`}function J(e,t){return t?t.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()?e.contracts.W_CROSS:t:mn}function Xe(e){let t=yt(e,ot);return t.includes(".")?t.replace(/\.?0+$/,""):t}function dt(e){return Ro(e||"0",ot)}function de(e){try{return dt(e||"0")}catch{return 0n}}function Ue(e){if(typeof e=="bigint")return e;if(typeof e=="number")return BigInt(Math.trunc(e));if(!e)return 0n;try{return BigInt(e)}catch{return 0n}}function St(e){let t=yt(e,9);return(t.includes(".")?t.replace(/\.?0+$/,""):t)||"0"}function ft(e){return e==="bridge"?Wo:Do}function on(e,t){if(!e||!t)return"0";let o=e*e;if(o===0n)return"0";let s=t*t,n=s>o?s-o:o-s;if(n===0n)return"0";let a=(n*100000000n+o/2n)/o;if(a>=100000000n)return"100";let f=a/1000000n,p=(a%1000000n).toString().padStart(6,"0").replace(/0+$/,"");return p?`${f}.${p}`:`${f}`}function Vo(e){if(!e||Number(e)===0)return"0%";let[t,o=""]=e.split("."),s=o.length>4?o.slice(0,4):o;return s?`${t}.${s}%`:`${t}%`}async function rn(e,t,o,s,n,a=!1){let f=un(e,{chainId:t}),p=o;try{let m=await f?.estimateContractGas?.({account:n.account,address:n.address,abi:n.abi,functionName:n.functionName,args:n.args,value:n.value});typeof m=="bigint"&&m>0n&&(p=s?m*Lo/Mo:m)}catch{}let b={gas:p};if(pn.has(t))try{let m=await f?.getGasPrice?.();typeof m=="bigint"&&m>0n&&(b.gasPrice=m)}catch{}else if(a)try{let m=await f?.estimateFeesPerGas?.();typeof m?.maxFeePerGas=="bigint"&&(b.maxFeePerGas=m.maxFeePerGas),typeof m?.maxPriorityFeePerGas=="bigint"&&(b.maxPriorityFeePerGas=m.maxPriorityFeePerGas)}catch{}return b}function gn(e){let t=e==="auto"?1:Number(e||"1");return!Number.isFinite(t)||t<0?100n:BigInt(Math.min(1e4,Math.floor(t*100)))}function vt(e,t){let o=gn(t);return o>=10000n?0n:e*(10000n-o)/10000n}function Ho(e,t){let o=gn(t);return(e*(10000n+o)+9999n)/10000n}function ct(){return BigInt(Math.floor(Date.now()/1e3)+1800)}var zo={100:"0.01%",500:"0.05%",3e3:"0.3%",1e4:"1%"};function Qo(e){return zo[e]??`${e/1e4}%`}function jo(e,t){let o=Number(e||"0");return!Number.isFinite(o)||o<=0?"0":(o*t/1e6).toFixed(8).replace(/\.?0+$/,"")}function sn(e){return Xe(e)}function an(e,t){let o=Number(t??"0");return!Number.isFinite(o)||o<=0?0n:e*BigInt(Math.floor(o))/1000n}function gt(e,t){if(!e)return!1;let o=e.toLowerCase();return t.some(s=>s.toLowerCase()===o)}function Xo(e,t,o){return[{from:[e.contracts.USDTX],to:[e.contracts.CROSSD]},{from:[e.contracts.BSC_CROSS],to:[e.contracts.NATIVE_CROSS,e.contracts.W_CROSS]},{from:[e.contracts.NATIVE_CROSS,e.contracts.W_CROSS],to:[e.contracts.CROSSD]}].some(n=>gt(t,n.from)&&gt(o,n.to)||gt(t,n.to)&&gt(o,n.from))}function Yo(e){if(ve(e.type))return null;if(e.type==="swap-bridge"){let t=e.steps.find(o=>o.type==="bridge");return t?{from:t.fromChain,to:t.toChain,token:t.fromToken}:null}if(e.type==="bridge-swap"){let t=e.steps.find(o=>o.type==="bridge");return t?{from:t.fromChain,to:t.toChain,token:t.fromToken}:null}return{from:e.from.chainId,to:e.to.chainId,token:e.from.address}}function Zo({input:e,path:t,config:o}){if(!o||ve(t.type))return"";let s=Ue(o.minimumValue),n=Ue(o.gasFee??o.gas_fee),a=t.type==="swap-bridge"?s+n*12n/10n:s;return a<=0n?"":e.fromAmount&&de(e.fromAmount)<a&&t.type!=="swap"?`Minimum ${sn(a)}`:t.type==="swap-bridge"&&e.toAmount&&de(e.toAmount)<a?`Available ${sn(a)} or more.`:""}function Jo({input:e,path:t,config:o}){if(!o||t.type!=="bridge"&&t.type!=="bridge-swap")return"";let s=Ue(o.gasFee??o.gas_fee);if(s<=0n||!e.fromAmount)return"";let n=de(e.fromToken.balance||"0"),a=de(e.fromAmount);return n-s<a?`Insufficient network fee(${e.fromToken.symbol})`:""}function er(e,t){let o=new Set;return e?.list?.forEach(s=>{let n=s.localChain??s.local_chain;n&&Object.entries(s.pairs||{}).forEach(([a,f])=>{f.forEach(p=>{p.localToken&&o.add(ee(n,p.localToken)),p.remoteToken&&o.add(ee(Number(a),p.remoteToken))})})}),Object.entries(t?.swapPools||t?.swap_pools||{}).forEach(([s,n])=>{n.forEach(a=>{a.token0&&o.add(ee(Number(s),a.token0)),a.token1&&o.add(ee(Number(s),a.token1))})}),o}function tr(e,t){return!e||!t?null:ee(e,t)}function nr({envConfig:e,bridgePairList:t,swapPools:o,tokenInfo:s,tokenStats:n}){let a=er(t,o),f=new Map;n?.forEach(b=>{let m=tr(Number(b.chainId??b.chain_id),b.address);m&&f.set(m,b)});let p={};return a.forEach(b=>{let[m,w]=b.split("-"),I=Number(m),v=s?.find(T=>Number(T.chainId??T.chain_id)===I&&T.address?.toLowerCase()===w);if(!v?.symbol||!v.name)return;let u=f.get(b);p[b]={key:b,chainId:I,address:w,symbol:v.symbol,name:v.name,decimals:v.decimals||ot,image:v.image||v.icon_url,price:u?.price?Number(u.price):void 0,isNativeToken:w.toLowerCase()===e.contracts.NATIVE_CROSS.toLowerCase()}}),p}function bn(e,t){return t?.list?.find(o=>(o.localChain??o.local_chain)===e)?.bridge||""}function yn(e,t,o){let[s,n]=e.split("-"),[a,f]=t.split("-"),p=Number(s),b=Number(a);for(let m of o?.list||[]){if((m.localChain??m.local_chain)!==p)continue;let w=m.pairs?.[a];if(w){for(let I of w)if(I.localToken?.toLowerCase()===n&&I.remoteToken?.toLowerCase()===f)return{type:"bridge",fromChain:p,fromToken:n,toChain:b,toToken:f,bridgeAddress:bn(p,o)}}}return null}function wn(e,t,o,s){let[n,a]=e.split("-"),[f,p]=t.split("-");if(n!==f)return null;let b=Number(n),m=(o?.swapPools||o?.swap_pools)?.[n];if(!m)return null;let w=s.contracts.W_CROSS.toLowerCase(),I=s.contracts.NATIVE_CROSS.toLowerCase(),v=u=>u?.toLowerCase()===w?I:u?.toLowerCase();for(let u of m){let T=v(u.token0),P=v(u.token1);if(T===a&&P===p||P===a&&T===p){let k="swap";return b===s.chainIds.cross&&(a===I&&(k="deposit-swap"),p===I&&(k="swap-withdraw")),{pathType:k,step:{type:"swap",chain:b,fromToken:a,toToken:p,fee:u.fee||be,poolAddress:u.poolAddress||u.pool_address||""}}}}return null}function or(e,t,o,s){let[n,a]=e.split("-"),[f]=t.split("-");if(n===f)return null;for(let p of(o?.swapPools||o?.swap_pools)?.[n]||[]){let b=p.token0?.toLowerCase(),m=p.token1?.toLowerCase(),w=b===a?m:m===a?b:null;if(!w)continue;let I=yn(ee(Number(n),w),t,s);if(I)return[{type:"swap",chain:Number(n),fromToken:a,toToken:w,fee:p.fee||be,poolAddress:p.poolAddress||p.pool_address||""},I]}return null}function rr(e,t,o,s,n){let[a,f]=e.split("-"),[p]=t.split("-");if(a===p)return null;for(let b of o?.list||[])if((b.localChain??b.local_chain)===Number(a))for(let m of b.pairs?.[p]||[]){if(m.localToken?.toLowerCase()!==f)continue;let w=m.remoteToken?.toLowerCase();if(!w)continue;let I=wn(ee(Number(p),w),t,s,n);if(I)return[{type:"bridge",fromChain:Number(a),fromToken:f,toChain:Number(p),toToken:w,bridgeAddress:bn(Number(a),o)},I.step]}return null}function sr({envConfig:e,bridgePairList:t,swapPools:o,enrichedTokens:s}){return(n,a)=>{let f=s[n],p=s[a];if(!f||!p||n===a)return null;let b=yn(n,a,t);if(b)return{type:"bridge",steps:[b],from:f,to:p};let m=wn(n,a,o,e);if(m)return{type:m.pathType,steps:[m.step],from:f,to:p};let w=or(n,a,o,t);if(w)return{type:"swap-bridge",steps:w,from:f,to:p};let I=rr(n,a,t,o,e);return I?{type:"bridge-swap",steps:I,from:f,to:p}:null}}function cn(e,t){return{name:e.name,symbol:e.symbol,chainId:e.chainId,address:e.address,decimals:e.decimals,balance:t.get(e.key)||"0",iconUrl:e.image,priceUsd:e.price}}function ir(e){return e.length<=10?e:`${e.slice(0,6)}...${e.slice(-4)}`}function ar(e){return e.includes(".")?e.replace(/\.?0+$/,"")||"0":e}function cr(e,t){let o=e.startsWith("-"),s=o?e.slice(1):e,[n,a=""]=s.split("."),f=a.slice(0,t).replace(/0+$/,""),p=f?`${n}.${f}`:n;return o?`-${p}`:p}function dr(e){let t=e.startsWith("-"),o=t?e.slice(1):e,[s,n]=o.split("."),a=s.replace(/\B(?=(\d{3})+(?!\d))/g,","),f=n?`${a}.${n}`:a;return t?`-${f}`:f}function Pt(e){if(e==null||e==="")return"0";let t=String(e),o=Number(t);return!Number.isFinite(o)||o===0?"0":dr(cr(t,4))}function dn(e,t){if(e==null||e==="")return"0";try{return ar(yt(BigInt(String(e)),t.decimals))}catch{return"0"}}function At(e){return!!(e&&/^0x[0-9a-fA-F]+$/.test(e))}function lr(e){return e?new Date(e*1e3).toISOString():new Date().toISOString()}function ur(e,t){return t.toLowerCase()===e.contracts.W_CROSS.toLowerCase()?e.contracts.NATIVE_CROSS:t}function mr(e,t){let o=ir(t);return{name:o,symbol:o,chainId:e,address:t,decimals:ot,balance:"0"}}function ln({envConfig:e,tokenByBridgeKey:t,chainId:o,address:s}){if(!s)return null;let n=ur(e,s);return t.get(ee(o,n))||t.get(ee(o,s))||mr(o,n)}function bt(e){return e?.toLowerCase()||""}function pr(e){if(e.source==="swap")return"swap";let t=bt(e.fromToken??e.from_token),o=bt(e.toToken??e.to_token),s=bt(e.swapTokenIn??e.swap_token_in),n=bt(e.swapTokenOut??e.swap_token_out);return o&&s&&o===s?"bridge-swap":t&&n&&t===n?"swap-bridge":"bridge"}function fr(e,t){let o=e.status??0,s=e.extracallSuccess??e.extracall_success??!1;return t==="bridge-swap"&&o===1&&!s?"failed":o===1?"success":"pending"}function gr({envConfig:e,item:t,tokenByBridgeKey:o}){let s=Number(t.fromChainID??t.from_chain_id??0),n=Number(t.toChainID??t.to_chain_id??0);if(!s||!n)return null;let a=pr(t),f=t.swapTokenIn??t.swap_token_in,p=t.swapTokenOut??t.swap_token_out,b=t.swapAmountIn??t.swap_amount_in,m=t.swapAmountOut??t.swap_amount_out,w=t.fromToken??t.from_token,I=t.toToken??t.to_token,v=t.value,u=t.value;a==="swap"?(w=f,I=p,v=b,u=m):a==="swap-bridge"?(w=f,v=b,u=t.value):a==="bridge-swap"&&(I=p,v=b,u=m);let T=ln({envConfig:e,tokenByBridgeKey:o,chainId:s,address:w}),P=ln({envConfig:e,tokenByBridgeKey:o,chainId:n,address:I}),k=t.initiatedTxHash??t.initiated_tx_hash;return!T||!P||!At(k)?null:{id:`${k}-${t.index??""}`,timestamp:lr(t.initiatedTime??t.initiated_time),txHash:k,fromToken:T,toToken:P,fromAmount:dn(v,T),toAmount:dn(u,P),summary:{pathType:a},status:fr(t,a)}}function br(e){let t=new Map;return e.flat().forEach(o=>{let s=Number(o.chainId??o.chain_id),n=o.address?.toLowerCase();if(!s||!n)return;let a=o.quantity?.numeric??o.balance??"0",f=o.quantity?.decimals??o.decimals??ot;try{t.set(ee(s,n),yt(BigInt(a||"0"),f))}catch{t.set(ee(s,n),"0")}}),t}function Fe(e,t="first"){let o=e.steps.filter(s=>s.type==="swap");return t==="last"?o[o.length-1]:o[0]}function yr(e,t){let o=(e?.swapPools||e?.swap_pools)?.[String(t.chainIds.cross)];if(!o?.length)return"";let s=t.contracts.CROSSD.toLowerCase(),n=t.contracts.USDTX.toLowerCase(),a=o.find(f=>{let p=f.token0?.toLowerCase(),b=f.token1?.toLowerCase();return p===s&&b===n||p===n&&b===s});return a?.poolAddress||a?.pool_address||""}function wr(e,t){return e.from.chainId===t.chainIds.cross&&e.from.address.toLowerCase()===t.contracts.CROSSD.toLowerCase()&&e.to.chainId===t.chainIds.bsc&&e.to.address.toLowerCase()===t.contracts.USDTB.toLowerCase()}function hr(e){if(e===void 0)return;let t=10n**BigInt(ot),o=e>=50000n*t?"normal":e>10000n*t?"low":"rebalancing",s=Number(e>0n?e*100n/(100000n*t):0n);return{label:"Available Liquidity",status:o,percentage:Math.min(s,100)}}function nt(e,t,o,s){let n=[e.from,e.to].find(a=>a.chainId===t&&a.address.toLowerCase()===o.toLowerCase())??s?.[ee(t,o)];return{symbol:n?.symbol||o.slice(0,6),iconUrl:n?.image}}function Cr(e,t){let o=[];for(let n of e.steps)n.type==="swap"?(o.push({chain:n.chain,address:n.fromToken}),o.push({chain:n.chain,address:n.toToken})):(o.push({chain:n.fromChain,address:n.fromToken}),o.push({chain:n.toChain,address:n.toToken}));let s=o.filter((n,a)=>a===0||!(n.chain===o[a-1].chain&&n.address.toLowerCase()===o[a-1].address.toLowerCase()));return s.length===0?[{symbol:e.from.symbol,iconUrl:e.from.image},{symbol:e.to.symbol,iconUrl:e.to.image}]:s.map(n=>nt(e,n.chain,n.address,t))}function kr({input:e,path:t,amountData:o,gasInfo:s,liquidity:n,enrichedTokens:a,priceImpact:f}){let p=e.fromAmount||"0",b=e.toAmount||"0",m=Fe(t),w=t.steps.find(_=>_.type==="bridge"),I=t.type!=="bridge",v=!ve(t.type),u=m?jo(p,m.fee):"0",T=Number(p)>0||Number(b)>0,P=m?nt(t,m.chain,m.fromToken,a):{symbol:e.fromToken.symbol,iconUrl:e.fromToken.iconUrl},k=m?nt(t,m.chain,m.toToken,a):{symbol:e.toToken.symbol,iconUrl:e.toToken.iconUrl},x=w?nt(t,w.fromChain,w.fromToken,a):void 0,R=(_,q,te)=>T?q&&q>0n?{label:_,value:Xe(q),tone:"default",valueToken:te}:{label:_,value:"Free",tone:"accent"}:{label:_,value:"0"};return{pathType:t.type,priceImpact:f,liquidity:n,bridgeInfo:v&&w?[{label:"Route",value:`${nn(w.fromChain)} \u2192 ${nn(w.toChain)}`},R("Validator Fee",o?.exFee,x),R("Network Fee",o?.networkFee,x)]:void 0,swapInfo:I&&m?[{label:"Route",value:"",routeTokens:[nt(t,m.chain,m.fromToken,a),nt(t,m.chain,m.toToken,a)]},{label:"Price Impact",value:Vo(f)},{label:"In Amount",value:Pt(p),valueToken:P},{label:m&&ve(t.type)?`Swap Fee (${Qo(m.fee||be)})`:"Swap Fee",value:Pt(u),valueToken:P},{label:"Out Amount",value:Pt(b),valueToken:k}]:void 0,txFee:[...s?.gasPrice?[{label:"Gas Price",value:`${s.gasPrice} Gwei`}]:[{label:"Priority Fee Per Gas",value:`${s?.priorityFeePerGas||"0"} Gwei`},{label:"Max Fee Per Gas",value:`${s?.maxFeePerGas||"0"} Gwei`}],{label:"Gas Limit",value:s?.gasLimit||"0"}],txFeeInfo:s?{estTxFee:s.estTxFee,isDelegateFee:s.isDelegateFee,tokenIconUrl:s.gasCurrencyIconUrl,tokenSymbol:s.gasCurrencySymbol}:{estTxFee:"0",isDelegateFee:!1}}}function Rt({env:e,walletAddress:t,enabled:o=!0}){let s=No(),n=Go[e],a=o,f=Po(new Map),p=tt({queryKey:["crossd-bridge-adapter",e,"pairs"],queryFn:({signal:r})=>Ge(`${n.bridgeApi}/pairs`,r),enabled:a,staleTime:3e4}),b=tt({queryKey:["crossd-bridge-adapter",e,"swap-pools"],queryFn:({signal:r})=>Ge(`${n.bridgeApi}/swap-pools`,r),enabled:a,staleTime:3e4}),m=Se(()=>yr(b.data,n),[n,b.data]),w=tt({queryKey:["crossd-bridge-adapter",e,"available-liquidity",m],queryFn:async()=>await Te(s,{address:n.contracts.USDTX,abi:It,functionName:"balanceOf",args:[m],chainId:n.chainIds.cross}),enabled:a&&!!m,staleTime:3e4}),I=tt({queryKey:["crossd-bridge-adapter",e,"token-info"],queryFn:({signal:r})=>Ge(`${n.walletApi}/v1/public/token/info`,r),enabled:a,staleTime:3e4}),v=tt({queryKey:["crossd-bridge-adapter",e,"token-stats"],queryFn:({signal:r})=>Ge(`${n.walletApi}/v1/public/token/stats`,r),enabled:a,staleTime:3e4}),u=Yt({queries:[n.chainIds.cross,n.chainIds.bsc].map(r=>({queryKey:["crossd-bridge-adapter",e,"balance",t,r],queryFn:({signal:i})=>{let c=new URLSearchParams({networkId:`eip155:${r}`,account:t||""});return Ge(`${n.walletApi}/v1/public/token/balance?${c}`,i)},enabled:a&&!!t,staleTime:0,refetchInterval:a&&t?5e3:!1}))}),T=Yt({queries:[n.chainIds.cross,n.chainIds.bsc].map(r=>({queryKey:["crossd-bridge-adapter",e,"gas-suggestion",r],queryFn:async({signal:i})=>{try{let h=await un(s,{chainId:r})?.estimateFeesPerGas?.();if(h?.maxFeePerGas||h?.gasPrice)return{fast:{maxFee:h.maxFeePerGas?.toString()||h.gasPrice?.toString(),maxPriorityFee:h.maxPriorityFeePerGas?.toString()||"0"}}}catch{}let c=new URLSearchParams({chain_id:String(r),without_gas_limit:"false"});return Ge(`${n.walletApi}/v1/public/transaction/gas-suggestion/dynamic?${c}`,i)},enabled:a,staleTime:1e4,retry:1}))}),P=n.hiddenPairs,k=Se(()=>nr({envConfig:n,bridgePairList:p.data,swapPools:b.data,tokenInfo:I.data,tokenStats:v.data}),[p.data,n,b.data,I.data,v.data]),x=Se(()=>sr({envConfig:n,bridgePairList:p.data,swapPools:b.data,enrichedTokens:k}),[p.data,k,n,b.data]),R=Se(()=>br(u.map(r=>r.data).filter(r=>Array.isArray(r))),[u]),_=Se(()=>{let r=new Map;return Object.values(k).forEach(i=>{let c=cn(i,R);r.set(i.key,c)}),r},[R,k]),q=Se(()=>{let r=new Map,i=_.get(ee(n.chainIds.cross,n.contracts.NATIVE_CROSS));i&&r.set(n.chainIds.cross,{symbol:i.symbol,iconUrl:i.iconUrl});let c=I.data?.find(d=>Number(d.chainId??d.chain_id)===n.chainIds.bsc&&(d.symbol??"").toUpperCase()==="BNB");return c&&r.set(n.chainIds.bsc,{symbol:c.symbol??"BNB",iconUrl:c.image??c.icon_url}),r},[n,_,I.data]),te=tt({queryKey:["crossd-bridge-adapter",e,"history",t],queryFn:({signal:r})=>tn(`${n.bridgeApi}/history`,{owner:t,page:1,size:20,sort:"desc",status:"all"},r),enabled:a&&!!t,staleTime:0,refetchInterval:a&&t?5e3:!1}),z=Se(()=>(te.data?.histories||[]).map(r=>gr({envConfig:n,item:r,tokenByBridgeKey:_})).filter(r=>!!r),[te.data?.histories,n,_]),U=Se(()=>hr(w.data),[w.data]),F=T[0]?.data,W=T[1]?.data,ye=Se(()=>{let r=new Map;return F&&r.set(n.chainIds.cross,F),W&&r.set(n.chainIds.bsc,W),r},[W,F,n.chainIds.bsc,n.chainIds.cross]),B=re((r,i,c)=>{let d=ye.get(r.from.chainId)?.fast,h=i?c?.gasLimit??ft(r.type):0n,l=c?.gasPrice&&c.gasPrice>0n?c.gasPrice:0n,g=c?.maxFeePerGas&&c.maxFeePerGas>0n?c.maxFeePerGas:0n,C=c?.maxPriorityFeePerGas&&c.maxPriorityFeePerGas>0n?c.maxPriorityFeePerGas:0n,y=Ue(d?.maxFee??d?.max_fee),D=Ue(d?.maxPriorityFee??d?.max_priority_fee),S=g>0n?g:y>0n?y:l,M=C>0n?C:D>0n?D:S,$=l>0n?l:S,G=pn.has(r.from.chainId)&&$>0n,Ce=h*(G?$:S),N=_.get(ee(r.from.chainId,n.contracts.NATIVE_CROSS)),Y=r.type!=="swap-bridge",Z=q.get(r.from.chainId);return{estTxFee:i?Xe(Ce):"0",priorityFeePerGas:i&&!G?St(M):"0",maxFeePerGas:i&&!G?St(S):"0",gasLimit:i?h.toString():"0",gasPrice:i&&G?St($):void 0,isDelegateFee:r.type==="swap-bridge"?!1:Xo(n,r.from.address,r.to.address),tokenIconUrl:Y?N?.iconUrl:void 0,tokenSymbol:Y?N?.symbol:void 0,gasCurrencyIconUrl:Z?.iconUrl,gasCurrencySymbol:Z?.symbol}},[n,ye,q,_]),A=re(async r=>{let i=Yo(r);if(!i)return null;let c=`${e}:${i.from}:${i.to}:${i.token.toLowerCase()}`,d=f.current.get(c);if(d)return d;let h=(async()=>{let l=new URLSearchParams({from:String(i.from),to:String(i.to),token:i.token});try{return(await Ge(`${n.bridgeApi}/token-config?${l}`)).config??null}catch{return null}})();return f.current.set(c,h),h},[e,n.bridgeApi]),E=Se(()=>{let r=Object.values(k).map(c=>cn(c,R)),i=ee(n.chainIds.cross,n.contracts.CROSSD);return r.sort((c,d)=>{let h=ie(c).toLowerCase()===i.toLowerCase(),l=ie(d).toLowerCase()===i.toLowerCase();return h!==l?h?-1:1:ie(c).localeCompare(ie(d))})},[R,k,n]),we=re(r=>{let i=ie(r),c=i.toLowerCase(),d=[];Object.keys(k).forEach(g=>{let C=g.toLowerCase();if(c===C||P.some(S=>S.fromKey===c&&S.toKey===C))return;let y=x(i,g);if(!y)return;let D=_.get(g);D&&d.push({token:D,path:y})});let h=ee(n.chainIds.cross,n.contracts.CROSSD),l=ee(n.chainIds.cross,n.contracts.NATIVE_CROSS);return d.sort((g,C)=>{if(c===h.toLowerCase()){let $=ie(g.token).toLowerCase()===l.toLowerCase(),G=ie(C.token).toLowerCase()===l.toLowerCase();if($!==G)return $?-1:1}let y=ve(g.path.type),D=ve(C.path.type);if(y!==D)return y?-1:1;let S=g.token.chainId===r.chainId,M=C.token.chainId===r.chainId;return S!==M?S?-1:1:ie(g.token).localeCompare(ie(C.token))}),d.map(g=>g.token)},[k,n,x,P,_]),qe=re(async r=>await Te(s,{address:n.contracts.SWAP_BRIDGE_ROUTER,abi:je,functionName:"quoter",chainId:r}),[n.contracts.SWAP_BRIDGE_ROUTER,s]),X=re(async r=>{Bo(s)!==r&&await Eo(s,{chainId:r})},[s]),K=re(async r=>await Te(s,{address:n.contracts.SWAP_BRIDGE_ROUTER,abi:je,functionName:"swapRouter",chainId:r}),[n.contracts.SWAP_BRIDGE_ROUTER,s]),le=re(async({path:r,step:i,amount:c,source:d})=>{let h=await qe(i.chain),l=i.poolAddress?Te(s,{address:i.poolAddress,abi:Uo,functionName:"slot0",chainId:i.chain}).then(y=>y?.[0]).catch(()=>{}):Promise.resolve(void 0);if(d==="from"){let y=await Te(s,{address:h,abi:en,functionName:"quoteExactInputSingle",args:[{tokenIn:J(n,i.fromToken),tokenOut:J(n,i.toToken),amountIn:dt(c),fee:i.fee||be,sqrtPriceLimitX96:0n}],chainId:i.chain}),D=on(await l,y[1]);return{amount:Xe(y[0]),path:r,priceImpact:D}}let g=await Te(s,{address:h,abi:en,functionName:"quoteExactOutputSingle",args:[{tokenIn:J(n,i.fromToken),tokenOut:J(n,i.toToken),amount:dt(c),fee:i.fee||be,sqrtPriceLimitX96:0n}],chainId:i.chain}),C=on(await l,g[1]);return{amount:Xe(g[0]),path:r,priceImpact:C}},[n,qe,s]),he=re(async(r,i)=>{if(!t)throw new Error("Wallet is not connected.");let c=ft(i.type);if(ve(i.type)){let S=Fe(i,"first");if(!S)throw new Error("Swap route is not available.");let M=de(r.fromAmount),$=de(r.toAmount);if(M<=0n)throw new Error("Bridge amount is empty.");if($<=0n)throw new Error("Bridge quote is not ready.");let G=await K(S.chain),Q=vt($,r.slippage),Ce=i.type==="swap-withdraw"?mn:t,N={tokenIn:J(n,S.fromToken),tokenOut:J(n,S.toToken),fee:S.fee||be,recipient:Ce,deadline:ct(),amountIn:M,amountOutMinimum:Q,sqrtPriceLimitX96:0n};if(i.type==="swap-withdraw"){let Y=at({abi:Ne,functionName:"exactInputSingle",args:[N]}),Z=at({abi:Ne,functionName:"unwrapWETH9",args:[Q,t]});return{address:G,abi:Ne,functionName:"multicall",args:[[Y,Z]],chainId:S.chain,fallbackGasLimit:c}}if(i.type==="deposit-swap"){let Y=at({abi:Ne,functionName:"exactInputSingle",args:[N]}),Z=at({abi:Ne,functionName:"refundETH",args:[]});return{address:G,abi:Ne,functionName:"multicall",args:[[Y,Z]],value:M,chainId:S.chain,fallbackGasLimit:c}}return{address:G,abi:Ne,functionName:"exactInputSingle",args:[N],chainId:S.chain,fallbackGasLimit:c}}if(i.type==="swap-bridge"){let S=Fe(i,"first");if(!S)throw new Error("Swap bridge route is not available.");let M=de(r.fromAmount),$=de(r.toAmount);if(M<=0n)throw new Error("Bridge amount is empty.");if($<=0n)throw new Error("Bridge quote is not ready.");let G=n.contracts.SWAP_BRIDGE_ROUTER,Q=ct(),Ce={toChainID:BigInt(i.to.chainId),recipient:t,extraData:"0x"},N={tokenIn:J(n,i.from.address),tokenOut:J(n,S.toToken),fee:S.fee||be,sqrtPriceLimitX96:0n,bridgeParams:Ce};if(r.lastChangedBy==="to"){let Z={...N,amountOut:$,amountInMaximum:Ho(M,r.slippage)};return{address:G,abi:je,functionName:"swapBridgeExactOutputSingle",args:[Z,Q],value:i.from.isNativeToken?Z.amountInMaximum:void 0,chainId:i.from.chainId,fallbackGasLimit:c}}let Y={...N,amountIn:M,amountOutMinimum:vt(M,r.slippage)};return{address:G,abi:je,functionName:"swapBridgeExactInputSingle",args:[Y,Q],value:i.from.isNativeToken?M:void 0,chainId:i.from.chainId,fallbackGasLimit:c}}let d=i.steps.find(S=>S.type==="bridge");if(!d?.bridgeAddress)throw new Error("Bridge route is not available.");let h=de(r.fromAmount);if(h<=0n)throw new Error("Bridge amount is empty.");let l=await A(i),g=Ue(l?.gasFee??l?.gas_fee),C=an(h,l?.exFeeRate??l?.ex_fee_rate),y="0x";if(i.type==="bridge-swap"){let S=Fe(i,"last");if(!S)throw new Error("Bridge swap route is not available.");let M=de(r.toAmount);if(M<=0n)throw new Error("Bridge quote is not ready.");let $=await K(i.to.chainId),G=vt(M,r.slippage),Q=at({abi:Ne,functionName:"exactInputSingle",args:[{tokenIn:J(n,S.fromToken),tokenOut:J(n,S.toToken),fee:S.fee||be,recipient:t,deadline:ct(),amountIn:h,amountOutMinimum:G,sqrtPriceLimitX96:0n}]});y=`${$}${Q.slice(2)}`}let D=[BigInt(i.to.chainId),i.from.address,t,h,g,C,y];return{address:d.bridgeAddress,abi:Ko,functionName:"bridgeToken",args:D,value:i.from.isNativeToken?h+C+g:void 0,chainId:i.from.chainId,fallbackGasLimit:c}},[n,A,K,t]),We=re(async(r,i)=>{if(i.type==="bridge"||i.type==="bridge-swap")return he(r,i);if(!t)throw new Error("Wallet is not connected.");let c=de(r.fromAmount);if(c<=0n)throw new Error("Bridge amount is empty.");if(i.type==="swap-bridge"){let g=Fe(i,"first");if(!g)throw new Error("Swap bridge route is not available.");let C=n.contracts.SWAP_BRIDGE_ROUTER,y={tokenIn:J(n,i.from.address),tokenOut:J(n,g.toToken),fee:g.fee||be,sqrtPriceLimitX96:0n,bridgeParams:{toChainID:BigInt(i.to.chainId),recipient:t,extraData:"0x"},amountIn:c,amountOutMinimum:0n};return{address:C,abi:je,functionName:"swapBridgeExactInputSingle",args:[y,ct()],value:i.from.isNativeToken?c:void 0,chainId:i.from.chainId,fallbackGasLimit:ft(i.type)}}let d=Fe(i,"first");if(!d)throw new Error("Swap route is not available.");let h=await K(d.chain),l={tokenIn:J(n,d.fromToken),tokenOut:J(n,d.toToken),fee:d.fee||be,recipient:t,deadline:ct(),amountIn:c,amountOutMinimum:0n,sqrtPriceLimitX96:0n};return{address:h,abi:Ne,functionName:"exactInputSingle",args:[l],value:i.from.isNativeToken?c:void 0,chainId:d.chain,fallbackGasLimit:ft(i.type)}},[he,n,K,t]),De=re(async(r,i)=>{if(!t)return null;try{let c=await We(r,i),d=ve(i.type)||i.type==="swap-bridge",h=await rn(s,c.chainId,c.fallbackGasLimit,d,{account:t,address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value},!0);return{gasLimit:h.gas,gasPrice:h.gasPrice,maxFeePerGas:h.maxFeePerGas,maxPriorityFeePerGas:h.maxPriorityFeePerGas}}catch{return null}},[We,s,t]),ce=re(async r=>{let i=ie(r.fromToken),c=ie(r.toToken),d=x(i,c);if(!d)return{error:"Route is not available."};let h=r.lastChangedBy==="to"?r.toAmount:r.fromAmount,l=!!h&&Number(h)>0,g=wr(d,n)?U:void 0,C=async(N,Y,Z)=>{let Be=l?await De(N,d):null,_e=B(d,l,Be);return kr({input:N,path:d,gasInfo:_e,amountData:Y,liquidity:g,enrichedTokens:k,priceImpact:Z})};if(!h||Number(h)<=0)return{fromAmount:r.fromAmount,toAmount:r.toAmount,summary:await C(r)};let y=await A(d),D=Ue(y?.gasFee??y?.gas_fee),S=d.type==="bridge"||d.type==="bridge-swap"?{networkFee:D}:void 0,M=Zo({input:r,path:d,config:y});if(M)return{fromAmount:r.fromAmount,toAmount:r.toAmount,summary:await C(r,S),error:M};let $=Jo({input:r,path:d,config:y});if($)return{fromAmount:r.fromAmount,toAmount:r.toAmount,summary:await C(r,S),error:$};if(d.type==="bridge"){let N=r.lastChangedBy==="to"?{...r,fromAmount:r.toAmount}:{...r,toAmount:r.fromAmount};return{fromAmount:N.fromAmount,toAmount:N.toAmount,summary:await C(N,S)}}if(d.type==="swap-bridge"){let N=Fe(d,"first"),Y=n.contracts.SWAP_BRIDGE_ROUTER;if(!N)return{error:"Swap bridge route is not ready."};let Z=Ie=>le({path:d,step:N,amount:Ie,source:"from"}).then(ge=>ge.priceImpact).catch(()=>{});if(r.lastChangedBy==="from"){let Ie=await Te(s,{address:Y,abi:je,functionName:"getAmountSwapBridgeOut",args:[BigInt(d.to.chainId),J(n,d.from.address),J(n,N.toToken),N.fee||be,dt(r.fromAmount)],chainId:d.from.chainId}),ge=Xe(Ie[1]),rt={...r,toAmount:ge};return{toAmount:ge,summary:await C(rt,{networkFee:Ie[3],exFee:Ie[4]},await Z(r.fromAmount))}}let Be=await Te(s,{address:Y,abi:je,functionName:"getAmountSwapBridgeIn",args:[BigInt(d.to.chainId),J(n,d.from.address),J(n,N.toToken),N.fee||be,dt(r.toAmount)],chainId:d.from.chainId}),_e=Xe(Be[1]),ue={...r,fromAmount:_e};return{fromAmount:_e,summary:await C(ue,{networkFee:Be[3],exFee:Be[4]},await Z(_e))}}let G=d.type==="bridge-swap"?Fe(d,"last"):Fe(d,"first");if(!G)return{error:"Swap route is not available."};let Q=await le({path:d,step:G,amount:h,source:r.lastChangedBy});if(r.lastChangedBy==="from"){let N={...r,toAmount:Q.amount};return{toAmount:Q.amount,summary:await C(N,S,Q.priceImpact)}}let Ce={...r,fromAmount:Q.amount};return{fromAmount:Q.amount,summary:await C(Ce,S,Q.priceImpact)}},[U,B,k,n,De,x,A,le,s]),Ae=re(async r=>{if(r.from.isNativeToken)return null;if(r.type==="swap"||r.type==="deposit-swap"||r.type==="swap-withdraw")return K(r.from.chainId);if(r.type==="swap-bridge")return n.contracts.SWAP_BRIDGE_ROUTER;let i=r.steps.find(c=>c.type==="bridge");return i?.bridgeAddress?i.bridgeAddress:null},[n.contracts.SWAP_BRIDGE_ROUTER,K]),V=re(async r=>{if(!t)throw new Error("Wallet is not connected.");let i=ie(r.fromToken),c=ie(r.toToken),d=x(i,c);if(!d)throw new Error("Route is not available.");if(!ve(d.type)&&d.type!=="swap-bridge"||d.from.isNativeToken)return null;let h=de(r.fromAmount);if(h<=0n)return null;let l=await Ae(d);return!l||await Te(s,{address:d.from.address,abi:It,functionName:"allowance",args:[t,l],chainId:d.from.chainId})>=h?null:{token:r.fromToken,tokenAddress:d.from.address,spenderAddress:l,amount:r.fromAmount}},[x,Ae,s,t]),Ve=re(async(r,i)=>{let c=de(i.amount||r.fromAmount);if(c<=0n)throw new Error("Approval amount is empty.");await X(i.token.chainId);let d=await Zt(s,{address:i.tokenAddress,abi:It,functionName:"approve",args:[i.spenderAddress,c],chainId:i.token.chainId});await Oo(s,{hash:d,chainId:i.token.chainId})},[X,s]),He=re(async(r,i)=>{let c=await he(r,i);await X(c.chainId);let d=await rn(s,c.chainId,c.fallbackGasLimit,Fo(i.type),{account:t,address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value});return{txHash:await Zt(s,{address:c.address,abi:c.abi,functionName:c.functionName,args:c.args,value:c.value,chainId:c.chainId,...d}),fromToken:r.fromToken,toToken:r.toToken,fromAmount:r.fromAmount,toAmount:r.toAmount}},[he,X,s,t]),ze=re(async(r,i)=>{let c=t;if(!c)throw new Error("Wallet is not connected.");let d=i.steps.find(rt=>rt.type==="bridge");if(!d?.bridgeAddress)throw new Error("Bridge route is not available.");let h=i.from.address,l=i.from.chainId,g=de(r.fromAmount);if(g<=0n)throw new Error("Bridge amount is empty.");let C=await A(i),y=Ue(C?.gasFee??C?.gas_fee),D=an(g,C?.exFeeRate??C?.ex_fee_rate),S=g+D+y,[M,$]=await Promise.all([Te(s,{address:h,abi:Jt,functionName:"name",chainId:l}),Te(s,{address:h,abi:Jt,functionName:"nonces",args:[c],chainId:l})]),G=BigInt(Math.floor(Date.now()/1e3)+300),Q=await _o(s,{domain:{name:M,version:"1",chainId:l,verifyingContract:h},types:{Permit:[{name:"owner",type:"address"},{name:"spender",type:"address"},{name:"value",type:"uint256"},{name:"nonce",type:"uint256"},{name:"deadline",type:"uint256"}]},primaryType:"Permit",message:{owner:c,spender:d.bridgeAddress,value:S,nonce:$,deadline:G}}),{r:Ce,s:N,v:Y,yParity:Z}=Ao(Q),Be=Y!==void 0?Number(Y):Z+27,_e={exFee:D.toString(),from:l,fromToken:h,nonce:Number($),gasFee:y.toString(),permitArgs:{account:c,deadline:G.toString(),r:Ce,s:N,token:h,v:Be,value:S.toString()},to:c,toChainID:String(i.to.chainId),value:S.toString()},ue=await tn(`${n.bridgeApi}/permit`,_e),Ie=ue?.requestId??ue?.request_id;if(!Ie)throw new Error("Bridge permit request failed.");let ge=await qo(n.bridgeApi,Ie);if(!At(ge))throw new Error("Bridge submitted, but confirmation timed out. Check History shortly.");return{txHash:ge,fromToken:r.fromToken,toToken:r.toToken,fromAmount:r.fromAmount,toAmount:r.toAmount}},[n,A,s,t]),Re=re(async r=>{let i=ie(r.fromToken),c=ie(r.toToken),d=x(i,c);if(!d)throw new Error("Route is not available.");if(!(ve(d.type)||d.type==="swap-bridge"||d.type==="bridge-swap"||d.type==="bridge"))throw new Error("This bridge route is not supported yet.");return{...d.type==="bridge"&&d.from.chainId===n.chainIds.bsc&&d.from.address.toLowerCase()===n.contracts.BSC_CROSS.toLowerCase()?await ze(r,d):await He(r,d),pathType:d.type,routeTokens:Cr(d,k)}},[k,n,x,ze,He]);return{bridgeTokens:E,bridgeHistory:z,getBridgeApproval:V,approveBridge:Ve,getBridgeQuote:ce,getBridgeToTokens:we,submitBridge:Re,isLoading:p.isLoading||b.isLoading||I.isLoading||v.isLoading||u.some(r=>r.isLoading)}}import{useEffect as hn,useRef as xr,useState as Cn}from"react";import{useAccount as Tr}from"wagmi";function Bt(e){let{address:t,connector:o}=Tr(),{currentWallet:s}=Ee(),n=e?.walletId!==void 0?e.walletId:s,a=e?.connector!==void 0?e.connector:o,f=e?.address!==void 0?e.address:t,[p,b]=Cn({loginType:null,accountName:null,accounts:[],isResolved:!1}),m=xr(new Map),[w,I]=Cn(0);return hn(()=>{let v=!1;if(n!=="cross_embedded")return b({loginType:null,accountName:null,accounts:[],isResolved:!0}),()=>{v=!0};if(!a)return b({loginType:null,accountName:null,accounts:[],isResolved:!1}),()=>{v=!0};b(k=>({...k,isResolved:!1}));let u=20,T=300,P=async()=>{if(typeof a.getProvider!="function")return"retry";let k;try{k=await a.getProvider()}catch{return"retry"}let x=k?.sdk;if(!x)return"giveup";try{let E=x.getRNBridgeActiveWallet?.(),we=E?.walletName?.trim();E&&we&&m.current.set(E.address.toLowerCase(),we)}catch{}let[R,_]=await Promise.all([x.getUserInfo?.().catch(()=>null)??null,x.getAddresses?.().catch(()=>null)??null]);if(v)return"done";let q=R?.loginType,te=q==="google"||q==="apple"?q:null;if(!te)return"retry";let z=f?.toLowerCase(),U=z&&Array.isArray(_)?_.find(E=>E.address.toLowerCase()===z):null,F=Array.isArray(_)?_.filter(E=>/^0x[a-fA-F0-9]{40}$/.test(E.address)).map(E=>({address:E.address.toLowerCase(),...Number.isFinite(E.index)?{index:E.index}:{},...E.name?.trim()?{name:E.name.trim()}:{}})):[],W=z?m.current.get(z)?.trim():void 0,ye=!U&&z&&/^0x[a-fA-F0-9]{40}$/.test(z)?[...F,{address:z,index:F.length,...W?{name:W}:{}}]:F,A=W||U?.name?.trim()||(typeof U?.index=="number"?`Account ${U.index+1}`:f?`${f.slice(0,6)}\u2026${f.slice(-4)}`:null);return b({loginType:te,accountName:A,accounts:ye,isResolved:!0}),"done"};return(async()=>{for(let k=0;k<u;k++){if(v)return;let x=await P();if(x==="done")return;if(x==="giveup"){v||b({loginType:null,accountName:null,accounts:[],isResolved:!0});return}await new Promise(R=>setTimeout(R,T))}v||b({loginType:null,accountName:null,accounts:[],isResolved:!0})})(),()=>{v=!0}},[n,a,f,w]),hn(()=>{if(n!=="cross_embedded"||!a||typeof a.getProvider!="function")return;let v=!1,u;return(async()=>{let T;try{T=await a.getProvider()}catch{return}if(v)return;let P=T?.sdk;P?.on&&(u=P.on("addressChanged",({address:k,walletName:x})=>{let R=x?.trim();R&&(m.current.set(k.toLowerCase(),R),I(_=>_+1))}))})(),()=>{v=!0,u?.()}},[n,a]),p}import{Fragment as Tn,jsx as ae,jsxs as Ye}from"react/jsx-runtime";var Fr=[{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"totalSupply",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint8"}]}],Wr=[{type:"function",name:"earned",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{name:"account",type:"address"}],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"posaActive",stateMutability:"view",inputs:[],outputs:[{name:"",type:"bool"}]},{type:"function",name:"lastRewardBlock",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint256"}]},{type:"function",name:"totalStaked",stateMutability:"view",inputs:[],outputs:[{name:"",type:"uint256"}]}],Dr={dev:{poolAddress:"0x0000000c5BB5C7B081237B5efaFC753D61201b94",crossChainId:612044,networkStatsUrl:"https://stg-posa-api.crosstoken.io/api/v1/network/stats"},stage:{poolAddress:"0x0000000c5BB5C7B081237B5efaFC753D61201b94",crossChainId:612044,networkStatsUrl:"https://stg-posa-api.crosstoken.io/api/v1/network/stats"},production:{poolAddress:"0x000000068122d9bB43B4BCF5497A10EdfA9F5E93",crossChainId:612055,networkStatsUrl:"https://posa-api.crosstoken.io/api/v1/network/stats"}},Ot=10n**18n,Lr={google:{name:"Google",iconUrl:Sn,connectorId:$e.CROSSx},apple:{name:"Apple",iconUrl:Wt,connectorId:$e.CROSSx},cross:{name:"CROSSx",iconUrl:Ft,connectorId:$e.CROSSx},metamask:{name:"MetaMask",iconUrl:vn,connectorId:$e.MetaMask},binance:{name:"Binance Wallet",iconUrl:In,connectorId:$e.Binance}};function Mr(e){switch(e){case"cross_embedded":return $e.CROSSx;case"metamask":return $e.MetaMask;case"binance":return $e.Binance;default:return}}function Gr(e,t){switch(e){case"cross_embedded":return t==="google"?{name:"Google",iconUrl:Sn}:t==="apple"?{name:"Apple",iconUrl:Wt}:{name:"CROSSx",iconUrl:Ft};case"cross_wallet":return{name:"CROSSx Wallet",iconUrl:Ft};case"cross_extension":return{name:"CROSSx Extension",iconUrl:Nr};case"metamask":return{name:"MetaMask",iconUrl:vn};case"binance":return{name:"Binance Wallet",iconUrl:In};default:return null}}var Ur="Bridge is available only with the CROSSx 2.0 wallet.",Kr="Send is available only with the CROSSx 2.0 wallet.";function $r({label:e="Connect Wallet",className:t,style:o,walletInfoStyle:s,user:n,enablePortfolio:a,portfolio:f,theme:p,accountName:b,connectorId:m,showPortfolio:w,sendAccounts:I,getTransactionReceipt:v,sendTransaction:u,estimateGas:T,onDisconnect:P,onSelectWallet:k,onBuy:x,onRampRedirectUrl:R,bridgeTokens:_,bridgeHistory:q,getBridgeQuote:te,getBridgeToTokens:z,getBridgeApproval:U,approveBridge:F,submitBridge:W,showBalance:ye=!0,env:B,...A}){let{address:E,isConnected:we,connector:qe,chain:X}=vr(),K=Ar(),le=Pr(),{switchChainAsync:he}=Br(),{sendTransactionAsync:We}=Rr(),{connectWallet:De,disconnect:ce,selectWallet:Ae,currentWallet:V,isConnecting:Ve}=Ee(),He=it(),ze=p??He?.mode??"dark",Re=lt(()=>_r(B),[B]),r=n?.address??E,i=n?Lr[n.provider]:null,{loginType:c,accountName:d,accounts:h}=Bt({walletId:V,connector:qe,address:r}),l=lt(()=>i?{name:i.name,iconUrl:i.iconUrl}:Gr(V,c),[i,V,c]),g=b??n?.name??d??void 0,C=i?i.connectorId:Mr(V),y=m??C,D=f??w??!!a,S=Rt({env:Re,walletAddress:r,enabled:we&&!!r&&ye}),M=_??S.bridgeTokens,$=q??S.bridgeHistory,G=te??S.getBridgeQuote,Q=z??S.getBridgeToTokens,Ce=U??S.getBridgeApproval,N=F??S.approveBridge,Y=W??S.submitBridge,Z=Ke(()=>{De().catch(O=>{console.error("[crossx-kit] connectWallet error:",O)})},[De]),Be=Ke(()=>{ce()},[ce]),_e=P??Be,ue=Er(),{eligibility:Ie}=Or({network:X?String(X.id):void 0}),ge=Ie?.allowed===!0,rt=lt(()=>{if(x)return x;if(!(!ue||!X||!ge))return()=>ue.open({crypto:X.nativeCurrency?.symbol??"USDT",network:String(X.id),...R?{redirectUrl:R}:{}}).then(()=>{}).catch(O=>{throw console.warn("[crossx-kit] onramp open failed:",O),O})},[x,ue,X,ge,R]),Dt=Sr();Ir(()=>{if(ue?.onStatus)return ue.onStatus(()=>{Dt.invalidateQueries()})},[ue,Dt]);let _n=lt(()=>{if(!x&&!(!ue||!X)&&!ge)return"On-ramp is not available in your region."},[x,ue,X,ge]),Lt=lt(()=>n?n.provider==="google"||n.provider==="apple":V==="cross_embedded",[n,V]),En=A.onBridgeDisabledMessage??(Lt?void 0:Ur),On=A.onSendDisabledMessage??(Lt?void 0:Kr),Nn=n?n.provider==="google"||n.provider==="apple":V==="cross_embedded",Fn=Ke(()=>{Ae().catch(O=>{console.error("[crossx-kit] selectWallet error:",O)})},[Ae]),Mt=k??(Nn?Fn:void 0),Wn=Ke(async({hash:O,chainId:ne})=>{let oe=_t(K,ne?{chainId:ne}:void 0);if(!oe)return null;try{return await oe.getTransactionReceipt({hash:O})}catch{return null}},[K]),Dn=Ke(async O=>{O.chainId!==void 0&&O.chainId!==le&&await he({chainId:O.chainId});let oe=O.chainId===56||O.chainId===97?{...O,type:"legacy"}:O;return(u??We)(oe)},[u,We,le,he]),Ln=D?Dn:u,Mn=Ke(async O=>{let ne=O.chainId??le,oe=_t(K,ne?{chainId:ne}:void 0);if(!oe)throw new Error(`publicClient for chainId ${ne??"unknown"} is not available \u2014 register the chain in createCrossxConfig({ networks }).`);let me=ne===56||ne===97,[pe,ke]=await Promise.all([oe.estimateGas({account:O.from,to:O.to,value:O.value,data:O.data}),(async()=>{if(me)return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await oe.getGasPrice()};try{let j=await oe.estimateFeesPerGas();return{maxFeePerGas:j.maxFeePerGas,maxPriorityFeePerGas:j.maxPriorityFeePerGas,gasPrice:void 0}}catch{return{maxFeePerGas:void 0,maxPriorityFeePerGas:void 0,gasPrice:await oe.getGasPrice()}}})()]);return{gasLimit:pe,maxFeePerGas:ke.maxFeePerGas,maxPriorityFeePerGas:ke.maxPriorityFeePerGas,gasPrice:ke.gasPrice}},[K,le]),Gn=T??Mn,Un=Ke(async O=>{let ne={};if(!E||O.length===0)return ne;let oe=O.flatMap(pe=>{let j={address:pe,abi:Fr,chainId:le};return[{...j,functionName:"balanceOf",args:[E]},{...j,functionName:"totalSupply"},{...j,functionName:"decimals"}]}),me;try{me=await kn(K,{contracts:oe,allowFailure:!0})}catch{return ne}return O.forEach((pe,ke)=>{let j=ke*3,xe=me[j],ut=me[j+1],Ze=me[j+2];!xe||xe.status!=="success"||(ne[pe.toLowerCase()]={balance:xe.result,totalSupply:ut&&ut.status==="success"?ut.result:void 0,decimals:Ze&&Ze.status==="success"?Number(Ze.result):void 0})}),ne},[K,E,le]),Kn=Ke(async O=>{let ne={earnedWei:0n,stakedWei:0n};if(!O)return ne;let oe=Dr[Re],me={address:oe.poolAddress,abi:Wr,chainId:oe.crossChainId},pe;try{pe=await kn(K,{allowFailure:!0,contracts:[{...me,functionName:"earned",args:[O]},{...me,functionName:"balanceOf",args:[O]},{...me,functionName:"posaActive"},{...me,functionName:"lastRewardBlock"},{...me,functionName:"totalStaked"}]})}catch{return ne}let ke=Qe=>pe[Qe]&&pe[Qe].status==="success"?pe[Qe].result:0n,j=ke(0),xe=ke(1);if(pe[2]&&pe[2].status==="success"?pe[2].result:!1)return{earnedWei:j,stakedWei:xe};let Ze=ke(3),Kt=ke(4);if(Kt===0n)return{earnedWei:j,stakedWei:xe};let wt=0n;try{wt=await _t(K,{chainId:oe.crossChainId})?.getBlockNumber?.()??0n}catch{return{earnedWei:j,stakedWei:xe}}if(wt<=Ze)return{earnedWei:j,stakedWei:xe};let ht=0n;try{let Qe=await fetch(oe.networkStatsUrl).then(Ct=>Ct.json()),$t=Qe?.data?.block_reward??Qe?.block_reward;if($t){let[Ct,Hn=""]=String($t).split("."),zn=(Hn+"0".repeat(18)).slice(0,18);ht=BigInt(Ct||"0")*Ot+BigInt(zn||"0")}}catch{}if(ht===0n)return{earnedWei:j,stakedWei:xe};let qn=(wt-Ze)*ht*Ot/Kt,Vn=xe*qn/Ot;return{earnedWei:j+Vn,stakedWei:xe}},[K,Re]),Gt=!Mt,Ut=t?`cb-button ${t}`:"cb-button",$n=t?`cb-pill ${t}`:"cb-pill";return Ve&&!we?Ye(Tn,{children:[ae("style",{children:Nt}),Ye("button",{type:"button",disabled:!0,className:Ut,style:o,"aria-busy":"true",children:[ae("span",{className:"cb-spinner","aria-hidden":"true"}),ae("span",{className:"cb-button-label",children:"Connecting..."})]})]}):we&&r?Ye("span",{"data-crossx-wallet-info":Gt?"external":"embedded",children:[ae("style",{children:Nt}),Gt&&ae("style",{children:Vr}),Ye(Et,{...A,env:Re,theme:ze,showBalance:ye,walletAddress:r,accountName:g,sendAccounts:I??h,connectorId:y,showPortfolio:D,onDisconnect:_e,onSelectWallet:Mt,onBuy:rt,onBuyDisabledMessage:_n,onBridgeDisabledMessage:En,onSendDisabledMessage:On,sendTransaction:Ln,getTransactionReceipt:v??Wn,estimateGas:Gn,lpBalanceReader:Un,stakingRewardsReader:Kn,bridgeTokens:M,bridgeHistory:$,getBridgeQuote:G,getBridgeToTokens:Q,getBridgeApproval:Ce,approveBridge:N,submitBridge:Y,style:s,children:[ae(Et.Trigger,{asChild:!0,children:Ye("button",{type:"button",className:$n,style:o,"aria-label":`Connected with ${l?.name??"wallet"}: ${xn(r)}`,children:[l?.iconUrl?ae("img",{src:l.iconUrl,alt:"",width:20,height:20,className:"cb-pill-icon","data-provider":l.iconUrl===Wt?"apple":void 0}):ae("span",{className:"cb-pill-icon-placeholder","aria-hidden":"true"}),ae("span",{className:"cb-pill-address",children:xn(r)})]})}),ae(Et.Content,{align:"end",sideOffset:8})]})]}):Ye(Tn,{children:[ae("style",{children:Nt}),Ye("button",{type:"button",onClick:Z,className:Ut,style:o,"aria-label":typeof e=="string"?e:"Connect Wallet",children:[ae(qr,{}),ae("span",{className:"cb-button-label",children:e})]})]})}function qr(){return ae("svg",{className:"cb-button-icon",viewBox:"0 0 18 18",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",children:ae("path",{d:"M11.4368 10.5007C11.4368 9.9538 11.6544 9.42855 12.041 9.04175C12.4278 8.65492 12.9529 8.4375 13.5 8.4375H15.1875V6.00073L15.1732 5.92822C15.1639 5.90585 15.15 5.88528 15.1326 5.8678C15.0973 5.83263 15.0494 5.81287 14.9996 5.81287H3.74963C3.4787 5.81287 3.21001 5.75949 2.95972 5.65576C2.90937 5.63488 2.86089 5.61017 2.8125 5.58545V14.2504C2.8125 14.4989 2.91141 14.7371 3.08716 14.9128C3.2629 15.0886 3.50109 15.1875 3.74963 15.1875H15.0007C15.0252 15.1875 15.0495 15.1826 15.0721 15.1732C15.0948 15.1638 15.1152 15.1499 15.1326 15.1326C15.1499 15.1152 15.1638 15.0948 15.1732 15.0721C15.1826 15.0495 15.1875 15.0252 15.1875 15.0007V12.5629H13.5C12.9529 12.5629 12.4278 12.3454 12.041 11.9586C11.6545 11.5719 11.4369 11.0475 11.4368 10.5007ZM12.5618 10.5007C12.5619 10.7491 12.6609 10.9875 12.8364 11.1632C13.0123 11.3391 13.2513 11.4379 13.5 11.4379H15.75C15.7998 11.4379 15.8477 11.4182 15.8829 11.3829C15.9182 11.3477 15.9379 11.2998 15.9379 11.25V9.75037C15.9379 9.70054 15.9182 9.65266 15.8829 9.61743C15.8477 9.5822 15.7998 9.5625 15.75 9.5625H13.5C13.2513 9.5625 13.0123 9.66131 12.8364 9.83716C12.6607 10.013 12.5618 10.2522 12.5618 10.5007ZM13.6879 3.00037C13.6879 2.95054 13.6682 2.90266 13.6329 2.86743C13.5977 2.8322 13.5498 2.8125 13.5 2.8125H3.74963C3.50109 2.8125 3.2629 2.91141 3.08716 3.08716C2.91141 3.2629 2.8125 3.50109 2.8125 3.74963L2.81689 3.84192C2.82585 3.93354 2.8486 4.02351 2.88391 4.10889C2.93096 4.22263 3.00015 4.32614 3.08716 4.41321C3.17403 4.50009 3.2769 4.56936 3.39038 4.61646C3.50412 4.66359 3.62651 4.68787 3.74963 4.68787H13.6879V3.00037ZM14.8129 4.68787H14.9996C15.3473 4.68787 15.6808 4.82576 15.9269 5.07129C16.173 5.31702 16.3119 5.65077 16.3125 5.99854V8.56494C16.4469 8.62873 16.5711 8.7148 16.6783 8.82202C16.9246 9.06823 17.0629 9.40217 17.0629 9.75037V11.25C17.0629 11.5982 16.9246 11.9321 16.6783 12.1783C16.5712 12.2855 16.4468 12.3706 16.3125 12.4343V14.9985L16.3059 15.1282C16.2934 15.2564 16.2619 15.3822 16.2125 15.5017C16.1466 15.6612 16.05 15.806 15.928 15.928C15.806 16.05 15.6612 16.1466 15.5017 16.2125C15.3425 16.2783 15.1719 16.3126 14.9996 16.3125H3.74963C3.20272 16.3125 2.67847 16.095 2.29175 15.7083C1.90502 15.3215 1.6875 14.7973 1.6875 14.2504V3.74963C1.6875 3.20272 1.90502 2.67847 2.29175 2.29175C2.67847 1.90502 3.20272 1.6875 3.74963 1.6875H13.5C13.8482 1.6875 14.1821 1.82581 14.4283 2.07202C14.6746 2.31823 14.8129 2.65217 14.8129 3.00037V4.68787Z",fill:"currentColor"})})}var Vr=`
2
- [data-crossx-wallet-info="external"] .wi-select-wallet-btn {
3
- display: none !important;
4
- }
5
- `;function xn(e){return`${e.slice(0,6)}...${e.slice(-4)}`}var Nt=`
6
- .cb-button {
7
- -webkit-font-smoothing: antialiased;
8
- --cb-bg: var(--ds-accent-primary-default, #00D5AA);
9
- --cb-bg-hover: var(--ds-accent-primary-high, #00a0a2);
10
- --cb-color: var(--ds-accent-primary-on, #000);
11
- --cb-border: none;
12
- --cb-radius: 8px;
13
- --cb-height: 36px;
14
- --cb-padding: 0 16px;
15
- --cb-font-family: Inter, system-ui, -apple-system, sans-serif;
16
- --cb-font-size: 14px;
17
- --cb-font-weight: 500;
18
- --cb-gap: 8px;
19
- --cb-transition: background-color 0.15s ease, transform 0.1s ease;
20
- --cb-loading-opacity: 0.7;
21
- --cb-press-scale: 0.95;
22
- --cb-spinner-size: 14px;
23
- --cb-spinner-thumb: currentColor;
24
- --cb-spinner-track: color-mix(in srgb, currentColor 20%, transparent);
25
- --cb-icon-size: 18px;
26
-
27
- display: inline-flex;
28
- align-items: center;
29
- justify-content: center;
30
- box-sizing: border-box;
31
- height: var(--cb-height);
32
- gap: var(--cb-gap);
33
- padding: var(--cb-padding);
34
- border-radius: var(--cb-radius);
35
- border: var(--cb-border);
36
- background: var(--cb-bg);
37
- color: var(--cb-color);
38
- font-family: var(--cb-font-family);
39
- font-size: var(--cb-font-size);
40
- font-weight: var(--cb-font-weight);
41
- cursor: pointer;
42
- transition: var(--cb-transition);
43
- }
44
- .cb-button:hover:not(:disabled) { background: var(--cb-bg-hover); }
45
- .cb-button:active:not(:disabled) { transform: scale(var(--cb-press-scale)); }
46
- .cb-button:disabled, .cb-button[aria-busy="true"] {
47
- cursor: default;
48
- opacity: var(--cb-loading-opacity);
49
- }
50
- .cb-spinner {
51
- display: inline-block;
52
- width: var(--cb-spinner-size);
53
- height: var(--cb-spinner-size);
54
- border: 2px solid var(--cb-spinner-track);
55
- border-top-color: var(--cb-spinner-thumb);
56
- border-radius: 50%;
57
- animation: cck-cb-spin 0.6s linear infinite;
58
- flex-shrink: 0;
59
- }
60
- .cb-button-icon {
61
- width: var(--cb-icon-size);
62
- height: var(--cb-icon-size);
63
- flex-shrink: 0;
64
- }
65
- .cb-button-label { white-space: nowrap; }
66
- .cb-pill {
67
- --cb-pill-bg: var(--ds-surface-default, #1e232e);
68
- --cb-pill-bg-hover: var(--ds-surface-medium, #252b39);
69
- --cb-pill-color: var(--ds-content-high, #ffffffd9);
70
- --cb-pill-border: 1px solid var(--ds-border-default, #ffffff12);
71
- --cb-pill-border-hover: 1px solid var(--ds-border-medium, #ffffff2e);
72
- --cb-pill-radius: 8px;
73
- --cb-pill-height: 36px;
74
- --cb-pill-padding: 0 12px;
75
- --cb-pill-press-scale: 0.95;
76
- --cb-pill-font-family: Inter, system-ui, -apple-system, sans-serif;
77
- --cb-pill-font-size: 14px;
78
- --cb-pill-font-weight: 500;
79
- --cb-pill-gap: 8px;
80
- --cb-pill-icon-size: 20px;
81
- --cb-pill-icon-placeholder-bg: var(--ds-surface-high, #2a2d3a);
82
- --cb-pill-address-font: Inter, system-ui, -apple-system, sans-serif;
83
- --cb-pill-address-font-size: 14px;
84
- --cb-pill-address-letter-spacing: -0.01em;
85
-
86
- display: inline-flex;
87
- align-items: center;
88
- box-sizing: border-box;
89
- height: var(--cb-pill-height);
90
- gap: var(--cb-pill-gap);
91
- padding: var(--cb-pill-padding);
92
- border-radius: var(--cb-pill-radius);
93
- border: var(--cb-pill-border);
94
- background: var(--cb-pill-bg);
95
- color: var(--cb-pill-color);
96
- font-family: var(--cb-pill-font-family);
97
- font-size: var(--cb-pill-font-size);
98
- font-weight: var(--cb-pill-font-weight);
99
- cursor: pointer;
100
- }
101
- .cb-pill:hover,
102
- .cb-pill[data-state="open"] { background: var(--cb-pill-bg-hover); border: var(--cb-pill-border-hover, 1px solid var(--ds-border-medium, #ffffff2e)); }
103
- .cb-pill:active:not(:disabled) { transform: scale(var(--cb-pill-press-scale)); }
104
- .cb-pill-icon {
105
- width: var(--cb-pill-icon-size);
106
- height: var(--cb-pill-icon-size);
107
- border-radius: 50%;
108
- object-fit: contain;
109
- flex-shrink: 0;
110
- background: transparent;
111
- }
112
- /* Apple is a monochrome black logomark in an <img> data URI (can't follow
113
- theme via currentColor). Flip it to white in dark mode so it stays
114
- visible on the dark pill; multicolor marks (Google/MetaMask/Binance/
115
- CROSSx) are untouched. */
116
- [data-theme="dark"] .cb-pill-icon[data-provider="apple"] {
117
- filter: invert(1);
118
- }
119
- .cb-pill-icon-placeholder {
120
- display: inline-block;
121
- width: var(--cb-pill-icon-size);
122
- height: var(--cb-pill-icon-size);
123
- border-radius: 50%;
124
- background: var(--cb-pill-icon-placeholder-bg);
125
- flex-shrink: 0;
126
- }
127
- .cb-pill-address {
128
- font-family: var(--cb-pill-address-font);
129
- font-size: var(--cb-pill-address-font-size);
130
- letter-spacing: var(--cb-pill-address-letter-spacing);
131
- }
132
- @media (max-width: 767.98px) {
133
- .cb-button, .cb-pill {
134
- width: 36px;
135
- min-width: 36px;
136
- padding: 0;
137
- }
138
- .cb-button-label, .cb-pill-address { display: none; }
139
- }
140
- @keyframes cck-cb-spin {
141
- to { transform: rotate(360deg); }
142
- }
143
- `;import{useCallback as Pn,useEffect as Hr,useMemo as An,useState as zr}from"react";import{detectWallets as Rn,DEFAULT_WALLET_REGISTRY as Bn}from"@nexus-cross/connect-kit-wagmi";import{jsx as se,jsxs as Pe}from"react/jsx-runtime";var Qr=["Ensure your wallet extension is installed and unlocked","Try refreshing the page","Some wallets may require you to first open the extension","You can try clicking the wallet anyway"],jr="Connect with one of our available wallet providers to continue.";function Xr({open:e,onClose:t,onSelect:o,title:s="Connect Wallet",description:n=jr,troubleshootingTips:a=Qr}){let{availableWallets:f}=Ee(),[p,b]=zr({});Hr(()=>{if(!e)return;let u=Rn(Bn),T={};for(let k of u)k.installed!==void 0&&(T[k.id]=k.installed);b(T);let P=setTimeout(()=>{let k=Rn(Bn),x={};for(let R of k)R.installed!==void 0&&(x[R.id]=R.installed);b(x)},1e3);return()=>clearTimeout(P)},[e]);let m=An(()=>typeof navigator>"u"?!1:/Mobi|Android/i.test(navigator.userAgent),[]),w=An(()=>m?f.filter(u=>u.type!=="extension"):f,[f,m]),I=Pn(u=>{if(!p[u.walletId]&&u.installUrl&&u.type==="extension"){window.open(u.installUrl,"_blank");return}t(),o(u.walletId)},[t,o,p]),v=Pn((u,T)=>{u.stopPropagation(),t(),window.open(T,"_blank")},[t]);return e?se("div",{style:L.overlay,onClick:t,children:Pe("div",{style:L.modal,onClick:u=>u.stopPropagation(),children:[Pe("div",{style:L.header,children:[se("h2",{style:L.title,children:s}),se("button",{type:"button",onClick:t,style:L.closeBtn,"aria-label":"Close",children:Pe("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",children:[se("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),se("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),se("p",{style:L.desc,children:n}),se("div",{style:L.walletList,children:w.map(u=>{let T=p[u.walletId],P=T===!1&&u.type==="extension"&&!!u.installUrl;return Pe("div",{style:L.walletGroup,children:[Pe("button",{type:"button",onClick:()=>I(u),style:{...L.walletItem,...u.walletId==="cross_wallet"?L.walletItemAccent:{}},"aria-label":`Connect with ${u.name}`,children:[u.iconUrl?se("img",{src:u.iconUrl,alt:"",style:L.walletIcon}):se("div",{style:L.walletIconPlaceholder}),Pe("div",{style:L.walletInfo,children:[Pe("div",{style:L.walletNameRow,children:[se("span",{style:L.walletName,children:u.name}),T!==void 0&&se("span",{style:{...L.badge,...T?L.badgeInstalled:L.badgeNotInstalled},children:T?"Installed":"Not Installed"})]}),se("span",{style:L.walletDesc,children:P?"Extension not detected \u2014 click to install":u.type==="extension"?"Browser extension approval is required":u.walletId==="cross_wallet"?"App approval is required":u.walletId==="binance"?"Mobile app only \u2014 Add CROSS network first":T?"Connect with browser extension":"Scan QR code with app"})]})]}),u.guideUrl&&Pe("button",{type:"button",onClick:k=>v(k,u.guideUrl),style:L.guideBtn,children:[se("span",{"aria-hidden":"true",children:"\u26A0\uFE0F"}),u.guideLabel??"Required Settings"]})]},u.walletId)})}),Pe("div",{style:L.troubleshoot,children:[se("h3",{style:L.troubleshootTitle,children:"Wallet not detected?"}),se("ul",{style:L.troubleshootList,children:a.map(u=>Pe("li",{style:L.troubleshootItem,children:[se("span",{style:L.troubleshootDot,"aria-hidden":"true"}),se("span",{children:u})]},u))})]})]})}):null}var H={surfaceBg:"var(--wi-surface-bg, #121212)",surfaceDefault:"var(--wi-surface-default, rgba(255,255,255,0.05))",surfaceSubtle:"var(--wi-surface-subtle, rgba(255,255,255,0.1))",borderDefault:"var(--wi-border-default, rgba(255,255,255,0.05))",textPrimary:"var(--wi-texticon-primary, #ffffff)",textSecondary:"var(--wi-texticon-secondary, rgba(255,255,255,0.7))",textTertiary:"var(--wi-texticon-tertiary, rgba(255,255,255,0.5))",primary:"var(--wi-primary, #019d92)",primarySoft:"var(--crossx-kit-primary-soft, rgba(1,157,146,0.15))",accentGradient:"var(--crossx-kit-accent-gradient, linear-gradient(113deg, rgba(255,255,255,0.05) 0%, rgba(1,157,146,0.12) 70%, rgba(255,255,255,0.05) 70%, rgba(1,157,146,0.12) 80%, rgba(255,255,255,0.05) 80%))",warningBg:"var(--crossx-kit-warning-bg, rgba(245,158,11,0.1))",warningBorder:"var(--crossx-kit-warning-border, rgba(245,158,11,0.25))",warningText:"var(--crossx-kit-warning-text, #fbbf24)"},L={overlay:{position:"fixed",inset:0,zIndex:1e4,display:"flex",alignItems:"center",justifyContent:"center",background:"rgba(0,0,0,0.6)",backdropFilter:"blur(4px)"},modal:{width:"100%",maxWidth:"420px",margin:"16px",background:H.surfaceBg,border:`1px solid ${H.borderDefault}`,borderRadius:"20px",overflow:"hidden"},header:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"20px 24px 0"},title:{fontSize:"18px",fontWeight:700,color:H.textPrimary,margin:0},closeBtn:{background:"none",border:"none",color:H.textTertiary,cursor:"pointer",padding:"4px",borderRadius:"8px",display:"flex",alignItems:"center",justifyContent:"center"},desc:{padding:"8px 24px 16px",fontSize:"13px",color:H.textTertiary,margin:0,lineHeight:1.5},walletList:{display:"flex",flexDirection:"column",gap:"6px",padding:"0 12px 12px"},walletGroup:{display:"flex",flexDirection:"column",borderRadius:"12px",overflow:"hidden",background:H.surfaceDefault},walletItem:{display:"flex",alignItems:"center",gap:"14px",width:"100%",padding:"14px",background:"transparent",border:"none",color:H.textPrimary,cursor:"pointer",textAlign:"left"},walletItemAccent:{background:H.accentGradient},walletIcon:{width:"40px",height:"40px",borderRadius:"10px",flexShrink:0},walletIconPlaceholder:{width:"40px",height:"40px",borderRadius:"10px",background:H.surfaceSubtle,flexShrink:0},walletInfo:{flex:1,minWidth:0,display:"flex",flexDirection:"column",gap:"3px"},walletNameRow:{display:"flex",alignItems:"center",gap:"8px"},walletName:{fontSize:"15px",fontWeight:700,lineHeight:1.3,color:H.textPrimary},badge:{fontSize:"10px",fontWeight:600,padding:"2px 7px",borderRadius:"99px",lineHeight:1},badgeInstalled:{background:H.primarySoft,color:H.primary},badgeNotInstalled:{background:"rgba(255,255,255,0.05)",color:H.textTertiary},walletDesc:{fontSize:"11px",color:H.textSecondary,lineHeight:1.3},guideBtn:{display:"flex",alignItems:"center",justifyContent:"center",gap:"6px",margin:"0 14px 14px",padding:"10px 12px",borderRadius:"10px",border:`1px solid ${H.warningBorder}`,background:H.warningBg,color:H.warningText,fontWeight:600,fontSize:"13px",cursor:"pointer"},troubleshoot:{margin:"0 12px 16px",background:H.surfaceDefault,borderRadius:"12px",padding:"14px 16px"},troubleshootTitle:{fontSize:"12px",fontWeight:700,color:H.textPrimary,margin:"0 0 8px"},troubleshootList:{listStyle:"none",padding:0,margin:0,display:"flex",flexDirection:"column",gap:"8px"},troubleshootItem:{display:"flex",alignItems:"flex-start",gap:"8px",fontSize:"11px",color:H.textSecondary,lineHeight:1.5},troubleshootDot:{flexShrink:0,width:"4px",height:"4px",marginTop:"6px",borderRadius:"50%",background:H.textSecondary}};import{useOnRamp as ci,useOnRampEligibility as di,OnRampProvider as li}from"@nexus-cross/onramp/react";import{WalletInfo as mi,ConnectorId as pi}from"@nexus-cross/dapp-ui";import{AppLauncher as gi,AppLauncherTrigger as bi,AppLauncherContent as yi,useGlobalMenu as wi}from"@nexus-cross/dapp-ui";import{SkillsButton as Ci}from"@nexus-cross/dapp-ui";import{OnRampError as xi}from"@nexus-cross/connect-kit-core";import{ConnectionStatus as Ii,formatBalance as Si,formatWei as vi}from"@nexus-cross/connect-kit-core";qt();export{Ee as a,Jn as b,it as c,xt as d,vo as e,Rt as f,Bt as g,$r as h,Xr as i,ci as j,di as k,li as l,mi as m,pi as n,gi as o,bi as p,yi as q,wi as r,Ci as s,xi as t,Ii as u,Si as v,vi as w};